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.
- package/LICENSE +22 -0
- package/README.md +81 -0
- package/bin/totem-llm.js +80 -0
- package/collector/.env +9 -0
- package/collector/.env.example +9 -0
- package/collector/.nvmrc +1 -0
- package/collector/extensions/index.js +239 -0
- package/collector/extensions/resync/index.js +197 -0
- package/collector/hotdir/__HOTDIR__.md +3 -0
- package/collector/index.js +202 -0
- package/collector/middleware/httpLogger.js +29 -0
- package/collector/middleware/setDataSigner.js +44 -0
- package/collector/middleware/verifyIntegrity.js +32 -0
- package/collector/package.json +67 -0
- package/collector/processLink/convert/generic.js +240 -0
- package/collector/processLink/helpers/index.js +190 -0
- package/collector/processLink/index.js +47 -0
- package/collector/processRawText/index.js +83 -0
- package/collector/processSingleFile/convert/asAudio.js +79 -0
- package/collector/processSingleFile/convert/asDocx.js +63 -0
- package/collector/processSingleFile/convert/asEPub.js +61 -0
- package/collector/processSingleFile/convert/asImage.js +56 -0
- package/collector/processSingleFile/convert/asMbox.js +83 -0
- package/collector/processSingleFile/convert/asOfficeMime.js +59 -0
- package/collector/processSingleFile/convert/asPDF/PDFLoader/index.js +97 -0
- package/collector/processSingleFile/convert/asPDF/index.js +86 -0
- package/collector/processSingleFile/convert/asTxt.js +59 -0
- package/collector/processSingleFile/convert/asXlsx.js +193 -0
- package/collector/processSingleFile/index.js +95 -0
- package/collector/utils/EncryptionWorker/index.js +77 -0
- package/collector/utils/OCRLoader/index.js +355 -0
- package/collector/utils/OCRLoader/validLangs.js +155 -0
- package/collector/utils/WhisperProviders/OpenAiWhisper.js +49 -0
- package/collector/utils/WhisperProviders/ffmpeg/index.js +114 -0
- package/collector/utils/WhisperProviders/localWhisper.js +197 -0
- package/collector/utils/comKey/index.js +54 -0
- package/collector/utils/constants.js +92 -0
- package/collector/utils/downloadURIToFile/index.js +90 -0
- package/collector/utils/extensions/Confluence/ConfluenceLoader/index.js +154 -0
- package/collector/utils/extensions/Confluence/index.js +292 -0
- package/collector/utils/extensions/DrupalWiki/DrupalWiki/index.js +338 -0
- package/collector/utils/extensions/DrupalWiki/index.js +102 -0
- package/collector/utils/extensions/ObsidianVault/index.js +95 -0
- package/collector/utils/extensions/PaperlessNgx/PaperlessNgxLoader/index.js +157 -0
- package/collector/utils/extensions/PaperlessNgx/index.js +128 -0
- package/collector/utils/extensions/RepoLoader/GithubRepo/RepoLoader/index.js +265 -0
- package/collector/utils/extensions/RepoLoader/GithubRepo/index.js +159 -0
- package/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js +447 -0
- package/collector/utils/extensions/RepoLoader/GitlabRepo/index.js +261 -0
- package/collector/utils/extensions/RepoLoader/index.js +41 -0
- package/collector/utils/extensions/WebsiteDepth/index.js +211 -0
- package/collector/utils/extensions/YoutubeTranscript/YoutubeLoader/index.js +99 -0
- package/collector/utils/extensions/YoutubeTranscript/YoutubeLoader/youtube-transcript.js +246 -0
- package/collector/utils/extensions/YoutubeTranscript/index.js +219 -0
- package/collector/utils/files/index.js +240 -0
- package/collector/utils/files/mime.js +64 -0
- package/collector/utils/http/index.js +54 -0
- package/collector/utils/logger/index.js +68 -0
- package/collector/utils/runtimeSettings/index.js +97 -0
- package/collector/utils/shell.js +25 -0
- package/collector/utils/tokenizer/index.js +66 -0
- package/collector/utils/url/index.js +137 -0
- package/collector/yarn.lock +4413 -0
- package/lib/config.js +79 -0
- package/lib/launcher.js +116 -0
- package/lib/setup.js +143 -0
- package/package.json +64 -0
- package/scripts/postinstall.mjs +117 -0
- package/server/.env +489 -0
- package/server/.env.example +496 -0
- package/server/.flowconfig +30 -0
- package/server/.nvmrc +1 -0
- package/server/endpoints/admin.js +566 -0
- package/server/endpoints/agentFileServer.js +174 -0
- package/server/endpoints/agentFlows.js +192 -0
- package/server/endpoints/agentSkillWhitelist.js +82 -0
- package/server/endpoints/agentWebsocket.js +62 -0
- package/server/endpoints/api/admin/index.js +775 -0
- package/server/endpoints/api/auth/index.js +33 -0
- package/server/endpoints/api/document/index.js +1210 -0
- package/server/endpoints/api/embed/index.js +409 -0
- package/server/endpoints/api/index.js +29 -0
- package/server/endpoints/api/openai/compatibility-test-script.cjs +79 -0
- package/server/endpoints/api/openai/helpers.js +50 -0
- package/server/endpoints/api/openai/index.js +321 -0
- package/server/endpoints/api/system/index.js +275 -0
- package/server/endpoints/api/userManagement/index.js +124 -0
- package/server/endpoints/api/workspace/index.js +1008 -0
- package/server/endpoints/api/workspaceThread/index.js +627 -0
- package/server/endpoints/browserExtension.js +221 -0
- package/server/endpoints/chat.js +193 -0
- package/server/endpoints/communityHub.js +214 -0
- package/server/endpoints/document.js +111 -0
- package/server/endpoints/embed/index.js +103 -0
- package/server/endpoints/embedManagement.js +131 -0
- package/server/endpoints/experimental/imported-agent-plugins.js +65 -0
- package/server/endpoints/experimental/index.js +12 -0
- package/server/endpoints/experimental/liveSync.js +110 -0
- package/server/endpoints/extensions/index.js +175 -0
- package/server/endpoints/invite.js +81 -0
- package/server/endpoints/mcpServers.js +127 -0
- package/server/endpoints/memory.js +196 -0
- package/server/endpoints/mobile/index.js +160 -0
- package/server/endpoints/mobile/middleware/index.js +97 -0
- package/server/endpoints/mobile/utils/index.js +195 -0
- package/server/endpoints/modelRouter.js +205 -0
- package/server/endpoints/scheduledJobs.js +374 -0
- package/server/endpoints/system.js +1490 -0
- package/server/endpoints/telegram.js +333 -0
- package/server/endpoints/utils/dockerModelRunnerUtils.js +94 -0
- package/server/endpoints/utils/googleAgentSkillEndpoints.js +70 -0
- package/server/endpoints/utils/lemonadeUtilsEndpoints.js +170 -0
- package/server/endpoints/utils/outlookAgentUtils.js +190 -0
- package/server/endpoints/utils.js +220 -0
- package/server/endpoints/webPush.js +27 -0
- package/server/endpoints/workspaceThreads.js +245 -0
- package/server/endpoints/workspaces.js +1159 -0
- package/server/endpoints/workspacesParsedFiles.js +208 -0
- package/server/index.js +178 -0
- package/server/jobs/cleanup-generated-files.js +160 -0
- package/server/jobs/cleanup-orphan-documents.js +79 -0
- package/server/jobs/embedding-worker.js +197 -0
- package/server/jobs/extract-memories.js +192 -0
- package/server/jobs/handle-telegram-chat.js +67 -0
- package/server/jobs/helpers/index.js +54 -0
- package/server/jobs/helpers/memory-extraction-utils.js +366 -0
- package/server/jobs/helpers/scheduled-job-helper.js +111 -0
- package/server/jobs/run-scheduled-job.js +157 -0
- package/server/jobs/sync-watched-documents.js +209 -0
- package/server/jsconfig.json +14 -0
- package/server/middleware/httpLogger.js +23 -0
- package/server/models/agentSkillWhitelist.js +100 -0
- package/server/models/apiKeys.js +99 -0
- package/server/models/browserExtensionApiKey.js +190 -0
- package/server/models/cacheData.js +69 -0
- package/server/models/communityHub.js +213 -0
- package/server/models/documentSyncQueue.js +252 -0
- package/server/models/documentSyncRun.js +88 -0
- package/server/models/documents.js +356 -0
- package/server/models/embedChats.js +199 -0
- package/server/models/embedConfig.js +251 -0
- package/server/models/eventLogs.js +129 -0
- package/server/models/externalCommunicationConnector.js +110 -0
- package/server/models/invite.js +144 -0
- package/server/models/memory.js +451 -0
- package/server/models/mobileDevice.js +251 -0
- package/server/models/modelRouter.js +259 -0
- package/server/models/modelRouterRule.js +336 -0
- package/server/models/passwordRecovery.js +115 -0
- package/server/models/promptHistory.js +107 -0
- package/server/models/scheduledJob.js +499 -0
- package/server/models/scheduledJobRun.js +362 -0
- package/server/models/slashCommandsPresets.js +143 -0
- package/server/models/systemPromptVariables.js +361 -0
- package/server/models/systemSettings.js +1183 -0
- package/server/models/temporaryAuthToken.js +104 -0
- package/server/models/user.js +381 -0
- package/server/models/vectors.js +79 -0
- package/server/models/workspace.js +720 -0
- package/server/models/workspaceAgentInvocation.js +97 -0
- package/server/models/workspaceChats.js +386 -0
- package/server/models/workspaceParsedFiles.js +246 -0
- package/server/models/workspaceThread.js +151 -0
- package/server/models/workspaceUsers.js +103 -0
- package/server/models/workspacesSuggestedMessages.js +83 -0
- package/server/package.json +130 -0
- package/server/prisma/migrations/20230921191814_init/migration.sql +125 -0
- package/server/prisma/migrations/20231101001441_init/migration.sql +2 -0
- package/server/prisma/migrations/20231101195421_init/migration.sql +11 -0
- package/server/prisma/migrations/20231129012019_add/migration.sql +2 -0
- package/server/prisma/migrations/20240113013409_init/migration.sql +2 -0
- package/server/prisma/migrations/20240118201333_init/migration.sql +2 -0
- package/server/prisma/migrations/20240202002020_init/migration.sql +37 -0
- package/server/prisma/migrations/20240206181106_init/migration.sql +13 -0
- package/server/prisma/migrations/20240206211916_init/migration.sql +11 -0
- package/server/prisma/migrations/20240208224848_init/migration.sql +24 -0
- package/server/prisma/migrations/20240210004405_init/migration.sql +2 -0
- package/server/prisma/migrations/20240216214639_init/migration.sql +2 -0
- package/server/prisma/migrations/20240219211018_init/migration.sql +2 -0
- package/server/prisma/migrations/20240301002308_init/migration.sql +2 -0
- package/server/prisma/migrations/20240326231053_init/migration.sql +2 -0
- package/server/prisma/migrations/20240405015034_init/migration.sql +2 -0
- package/server/prisma/migrations/20240412183346_init/migration.sql +24 -0
- package/server/prisma/migrations/20240425004220_init/migration.sql +30 -0
- package/server/prisma/migrations/20240430230707_init/migration.sql +2 -0
- package/server/prisma/migrations/20240510032311_init/migration.sql +15 -0
- package/server/prisma/migrations/20240618224346_init/migration.sql +26 -0
- package/server/prisma/migrations/20240821215625_init/migration.sql +2 -0
- package/server/prisma/migrations/20240824005054_init/migration.sql +15 -0
- package/server/prisma/migrations/20241003192954_init/migration.sql +2 -0
- package/server/prisma/migrations/20241029203722_init/migration.sql +12 -0
- package/server/prisma/migrations/20241029233509_init/migration.sql +5 -0
- package/server/prisma/migrations/20250102204948_init/migration.sql +2 -0
- package/server/prisma/migrations/20250226005538_init/migration.sql +2 -0
- package/server/prisma/migrations/20250318154720_init/migration.sql +18 -0
- package/server/prisma/migrations/20250506214129_init/migration.sql +13 -0
- package/server/prisma/migrations/20250709230835_init/migration.sql +2 -0
- package/server/prisma/migrations/20250725194841_init/migration.sql +17 -0
- package/server/prisma/migrations/20250808171557_init/migration.sql +23 -0
- package/server/prisma/migrations/20260130040204_init/migration.sql +2 -0
- package/server/prisma/migrations/20260313192859_init/migration.sql +10 -0
- package/server/prisma/migrations/20260319202916_init/migration.sql +12 -0
- package/server/prisma/migrations/20260406120000_init/migration.sql +2 -0
- package/server/prisma/migrations/20260423191158_init/migration.sql +29 -0
- package/server/prisma/migrations/20260424013043_init/migration.sql +22 -0
- package/server/prisma/migrations/20260520160208_init/migration.sql +46 -0
- package/server/prisma/migrations/migration_lock.toml +3 -0
- package/server/prisma/schema.prisma +484 -0
- package/server/prisma/seed.js +31 -0
- package/server/public/KaTeX_AMS-Regular.eot +0 -0
- package/server/public/KaTeX_AMS-Regular.ttf +0 -0
- package/server/public/KaTeX_AMS-Regular.woff +0 -0
- package/server/public/KaTeX_AMS-Regular.woff2 +0 -0
- package/server/public/KaTeX_Caligraphic-Bold.eot +0 -0
- package/server/public/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/server/public/KaTeX_Caligraphic-Bold.woff +0 -0
- package/server/public/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/server/public/KaTeX_Caligraphic-Regular.eot +0 -0
- package/server/public/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/server/public/KaTeX_Caligraphic-Regular.woff +0 -0
- package/server/public/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/server/public/KaTeX_Fraktur-Bold.eot +0 -0
- package/server/public/KaTeX_Fraktur-Bold.ttf +0 -0
- package/server/public/KaTeX_Fraktur-Bold.woff +0 -0
- package/server/public/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/server/public/KaTeX_Fraktur-Regular.eot +0 -0
- package/server/public/KaTeX_Fraktur-Regular.ttf +0 -0
- package/server/public/KaTeX_Fraktur-Regular.woff +0 -0
- package/server/public/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/server/public/KaTeX_Main-Bold.eot +0 -0
- package/server/public/KaTeX_Main-Bold.ttf +0 -0
- package/server/public/KaTeX_Main-Bold.woff +0 -0
- package/server/public/KaTeX_Main-Bold.woff2 +0 -0
- package/server/public/KaTeX_Main-Italic.eot +0 -0
- package/server/public/KaTeX_Main-Italic.ttf +0 -0
- package/server/public/KaTeX_Main-Italic.woff +0 -0
- package/server/public/KaTeX_Main-Italic.woff2 +0 -0
- package/server/public/KaTeX_Main-Regular.eot +0 -0
- package/server/public/KaTeX_Main-Regular.ttf +0 -0
- package/server/public/KaTeX_Main-Regular.woff +0 -0
- package/server/public/KaTeX_Main-Regular.woff2 +0 -0
- package/server/public/KaTeX_Math-Italic.eot +0 -0
- package/server/public/KaTeX_Math-Italic.ttf +0 -0
- package/server/public/KaTeX_Math-Italic.woff +0 -0
- package/server/public/KaTeX_Math-Italic.woff2 +0 -0
- package/server/public/KaTeX_SansSerif-Regular.eot +0 -0
- package/server/public/KaTeX_SansSerif-Regular.ttf +0 -0
- package/server/public/KaTeX_SansSerif-Regular.woff +0 -0
- package/server/public/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/server/public/KaTeX_Script-Regular.eot +0 -0
- package/server/public/KaTeX_Script-Regular.ttf +0 -0
- package/server/public/KaTeX_Script-Regular.woff +0 -0
- package/server/public/KaTeX_Script-Regular.woff2 +0 -0
- package/server/public/KaTeX_Size1-Regular.eot +0 -0
- package/server/public/KaTeX_Size1-Regular.ttf +0 -0
- package/server/public/KaTeX_Size1-Regular.woff +0 -0
- package/server/public/KaTeX_Size1-Regular.woff2 +0 -0
- package/server/public/KaTeX_Size2-Regular.eot +0 -0
- package/server/public/KaTeX_Size2-Regular.ttf +0 -0
- package/server/public/KaTeX_Size2-Regular.woff +0 -0
- package/server/public/KaTeX_Size2-Regular.woff2 +0 -0
- package/server/public/KaTeX_Size3-Regular.eot +0 -0
- package/server/public/KaTeX_Size3-Regular.ttf +0 -0
- package/server/public/KaTeX_Size3-Regular.woff +0 -0
- package/server/public/KaTeX_Size4-Regular.eot +0 -0
- package/server/public/KaTeX_Size4-Regular.ttf +0 -0
- package/server/public/KaTeX_Size4-Regular.woff +0 -0
- package/server/public/KaTeX_Size4-Regular.woff2 +0 -0
- package/server/public/KaTeX_Typewriter-Regular.eot +0 -0
- package/server/public/KaTeX_Typewriter-Regular.ttf +0 -0
- package/server/public/KaTeX_Typewriter-Regular.woff +0 -0
- package/server/public/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/server/public/PlusJakartaSans.ttf +0 -0
- package/server/public/_index.html +45 -0
- package/server/public/agent-animation.webm +0 -0
- package/server/public/agent-static.png +0 -0
- package/server/public/anthropic.png +0 -0
- package/server/public/anything-llm-dark.png +0 -0
- package/server/public/anything-llm-light.png +0 -0
- package/server/public/anything-llm.png +0 -0
- package/server/public/apipie.png +0 -0
- package/server/public/assets/404-aca8e9d6.js +1 -0
- package/server/public/assets/Brain-24e386d5.js +1 -0
- package/server/public/assets/Browser-1820fad0.js +1 -0
- package/server/public/assets/ChatText-35275002.js +1 -0
- package/server/public/assets/Check-7e83fb0d.js +1 -0
- package/server/public/assets/Copy-d323e545.js +1 -0
- package/server/public/assets/Database-f1a76329.js +1 -0
- package/server/public/assets/Eye-9f033dc0.js +1 -0
- package/server/public/assets/File-b92df2f3.js +1 -0
- package/server/public/assets/Gauge-e6762f4d.js +1 -0
- package/server/public/assets/Hammer-05b5ccc7.js +1 -0
- package/server/public/assets/Plug-7d951c7d.js +1 -0
- package/server/public/assets/PlusCircle-31c6a8d8.js +1 -0
- package/server/public/assets/RunDetailPage-edfdbd4d.js +1 -0
- package/server/public/assets/RunHistoryPage-732dae26.js +1 -0
- package/server/public/assets/Stop-4b47ae05.js +1 -0
- package/server/public/assets/Trans-36b04c7b.js +1 -0
- package/server/public/assets/WarningCircle-27467274.js +1 -0
- package/server/public/assets/XCircle-edfe554c.js +1 -0
- package/server/public/assets/admin-04b020fe.js +1 -0
- package/server/public/assets/agentFlows-e4124dd3.js +1 -0
- package/server/public/assets/anything-llm-infinity-0d7244a1.js +1 -0
- package/server/public/assets/communityHub-aba61686.js +1 -0
- package/server/public/assets/cron-2ad9194f.js +1 -0
- package/server/public/assets/files-493643b0.js +23 -0
- package/server/public/assets/github-dark-57c241de.js +1 -0
- package/server/public/assets/index-08cd0bc2.js +9 -0
- package/server/public/assets/index-0bf8ea25.js +1 -0
- package/server/public/assets/index-25b2660c.js +1 -0
- package/server/public/assets/index-2a7c0b04.js +1 -0
- package/server/public/assets/index-3643e990.js +1 -0
- package/server/public/assets/index-3761d55d.js +1 -0
- package/server/public/assets/index-4b5e1c76.js +5 -0
- package/server/public/assets/index-4fb4d421.js +2 -0
- package/server/public/assets/index-56bb11a0.js +1 -0
- package/server/public/assets/index-5c320a5d.js +1 -0
- package/server/public/assets/index-62160652.js +3 -0
- package/server/public/assets/index-62fee0f9.js +4 -0
- package/server/public/assets/index-65801ac6.js +1 -0
- package/server/public/assets/index-71027183.js +1 -0
- package/server/public/assets/index-72832304.js +18 -0
- package/server/public/assets/index-7b0ea06b.js +14 -0
- package/server/public/assets/index-8132c765.js +1 -0
- package/server/public/assets/index-837868b3.js +1 -0
- package/server/public/assets/index-86e8a6b4.js +1 -0
- package/server/public/assets/index-8ba96f42.js +1 -0
- package/server/public/assets/index-8e43159f.js +1 -0
- package/server/public/assets/index-92574f3a.js +1 -0
- package/server/public/assets/index-925792fe.js +2 -0
- package/server/public/assets/index-92d3b7bc.js +1 -0
- package/server/public/assets/index-994c849a.js +1 -0
- package/server/public/assets/index-9f71774b.js +1 -0
- package/server/public/assets/index-9f7dabd6.js +1 -0
- package/server/public/assets/index-a0e2be61.js +1 -0
- package/server/public/assets/index-a6ac5511.js +1 -0
- package/server/public/assets/index-a6c0d98a.js +1 -0
- package/server/public/assets/index-aa687cfe.js +3 -0
- package/server/public/assets/index-ab35fb74.js +1 -0
- package/server/public/assets/index-ab72b353.js +4 -0
- package/server/public/assets/index-ad8e77d2.js +5 -0
- package/server/public/assets/index-c07cc087.js +110 -0
- package/server/public/assets/index-c22f7da1.js +1 -0
- package/server/public/assets/index-c9b59c35.js +1 -0
- package/server/public/assets/index-d59c6d7f.js +1 -0
- package/server/public/assets/index-d69f2e09.js +1 -0
- package/server/public/assets/index-e5b911ea.js +1 -0
- package/server/public/assets/index-e6c540e1.js +1 -0
- package/server/public/assets/index-f86e167c.js +4 -0
- package/server/public/assets/index-f984ef26.js +1 -0
- package/server/public/assets/index-fb26b60a.js +1 -0
- package/server/public/assets/index-fd922432.js +1 -0
- package/server/public/assets/main-8ad4162f.js +1 -0
- package/server/public/assets/mcpServers-957b1f1c.js +1 -0
- package/server/public/assets/moment-3ad2e1a6.js +10 -0
- package/server/public/assets/ort.min-faca3c2b.js +1827 -0
- package/server/public/assets/piper-o91UDS6e-0c78e94e.js +4 -0
- package/server/public/assets/purify-6b86d6dc.js +26 -0
- package/server/public/assets/react-beautiful-dnd.esm-86e87aba.js +68 -0
- package/server/public/assets/truncate-352eb33b.js +1 -0
- package/server/public/assets/types-e90e1137.js +1 -0
- package/server/public/assets/usePolling-417bb099.js +1 -0
- package/server/public/assets/voices_static-D_OtJDHM-5cdb0950.js +1 -0
- package/server/public/assets/worker-8f433525.js +1 -0
- package/server/public/azure.png +0 -0
- package/server/public/baidu.png +0 -0
- package/server/public/bedrock.png +0 -0
- package/server/public/bg.png +0 -0
- package/server/public/bing.png +0 -0
- package/server/public/cerebras.png +0 -0
- package/server/public/cohere.png +0 -0
- package/server/public/cometapi.png +0 -0
- package/server/public/community-hub.png +0 -0
- package/server/public/confluence.jpeg +0 -0
- package/server/public/deepseek.png +0 -0
- package/server/public/docker-model-runner.png +0 -0
- package/server/public/dpais.png +0 -0
- package/server/public/drupalwiki.jpg +0 -0
- package/server/public/duckduckgo.png +0 -0
- package/server/public/elevenlabs.png +0 -0
- package/server/public/embed/anythingllm-chat-widget.min.css +1 -0
- package/server/public/embed/anythingllm-chat-widget.min.js +37 -0
- package/server/public/exa.png +0 -0
- package/server/public/favicon.ico +0 -0
- package/server/public/favicon.png +0 -0
- package/server/public/file-system.png +0 -0
- package/server/public/files.css +1 -0
- package/server/public/fonts/PlusJakartaSans.ttf +0 -0
- package/server/public/foundry-local.png +0 -0
- package/server/public/gemini.png +0 -0
- package/server/public/generate-charts.png +0 -0
- package/server/public/generate-save-files.png +0 -0
- package/server/public/generic-openai.png +0 -0
- package/server/public/giteeai.png +0 -0
- package/server/public/github-dark.css +10 -0
- package/server/public/github.css +19 -0
- package/server/public/github.svg +4 -0
- package/server/public/gitlab.svg +7 -0
- package/server/public/gmail.png +0 -0
- package/server/public/google-calendar.png +0 -0
- package/server/public/gplay-badge.svg +55 -0
- package/server/public/huggingface.png +0 -0
- package/server/public/index.css +1 -0
- package/server/public/index.js +1739 -0
- package/server/public/koboldcpp.png +0 -0
- package/server/public/lancedb.png +0 -0
- package/server/public/lemonade.png +0 -0
- package/server/public/link.svg +1 -0
- package/server/public/litellm.png +0 -0
- package/server/public/lmstudio.png +0 -0
- package/server/public/localai.png +0 -0
- package/server/public/login-logo-light.svg +45 -0
- package/server/public/login-logo.svg +45 -0
- package/server/public/manifest.json +13 -0
- package/server/public/mcp-logo.svg +1 -0
- package/server/public/milvus.png +0 -0
- package/server/public/minimax.png +0 -0
- package/server/public/mistral.jpeg +0 -0
- package/server/public/moonshotai.png +0 -0
- package/server/public/mssql.png +0 -0
- package/server/public/mysql.png +0 -0
- package/server/public/nvidia-nim.png +0 -0
- package/server/public/obsidian.png +0 -0
- package/server/public/ollama.png +0 -0
- package/server/public/openai.png +0 -0
- package/server/public/openrouter.jpeg +0 -0
- package/server/public/outlook.png +0 -0
- package/server/public/paperless-ngx.jpeg +0 -0
- package/server/public/perplexity.png +0 -0
- package/server/public/pgvector.png +0 -0
- package/server/public/piper.png +0 -0
- package/server/public/privatemode.png +0 -0
- package/server/public/qdrant.png +0 -0
- package/server/public/rag-memory.png +0 -0
- package/server/public/robots.txt +2 -0
- package/server/public/router-animation.webm +0 -0
- package/server/public/sambanova.png +0 -0
- package/server/public/scrape-websites.png +0 -0
- package/server/public/searchapi.png +0 -0
- package/server/public/searxng.png +0 -0
- package/server/public/serpapi.png +0 -0
- package/server/public/serper.png +0 -0
- package/server/public/serply.png +0 -0
- package/server/public/service-workers/push-notifications.js +26 -0
- package/server/public/sql-agent.png +0 -0
- package/server/public/tavily.svg +1 -0
- package/server/public/text-generation-webui.png +0 -0
- package/server/public/thinking-animation.webm +0 -0
- package/server/public/thinking-static.png +0 -0
- package/server/public/togetherai.png +0 -0
- package/server/public/view-summarize.png +0 -0
- package/server/public/voyageai.png +0 -0
- package/server/public/weaviate.png +0 -0
- package/server/public/xai.png +0 -0
- package/server/public/youtube.svg +10 -0
- package/server/public/zai.png +0 -0
- package/server/public/zilliz.png +0 -0
- package/server/utils/AiProviders/anthropic/index.js +372 -0
- package/server/utils/AiProviders/apipie/index.js +386 -0
- package/server/utils/AiProviders/azureOpenAi/index.js +232 -0
- package/server/utils/AiProviders/bedrock/index.js +787 -0
- package/server/utils/AiProviders/bedrock/utils.js +166 -0
- package/server/utils/AiProviders/cerebras/index.js +314 -0
- package/server/utils/AiProviders/cohere/index.js +251 -0
- package/server/utils/AiProviders/cometapi/constants.js +39 -0
- package/server/utils/AiProviders/cometapi/index.js +445 -0
- package/server/utils/AiProviders/deepseek/index.js +180 -0
- package/server/utils/AiProviders/dellProAiStudio/index.js +217 -0
- package/server/utils/AiProviders/dockerModelRunner/index.js +520 -0
- package/server/utils/AiProviders/fireworksAi/index.js +273 -0
- package/server/utils/AiProviders/foundry/index.js +475 -0
- package/server/utils/AiProviders/gemini/defaultModels.js +74 -0
- package/server/utils/AiProviders/gemini/index.js +457 -0
- package/server/utils/AiProviders/gemini/syncStaticLists.mjs +48 -0
- package/server/utils/AiProviders/genericOpenAi/index.js +485 -0
- package/server/utils/AiProviders/giteeai/index.js +245 -0
- package/server/utils/AiProviders/groq/index.js +257 -0
- package/server/utils/AiProviders/huggingface/index.js +165 -0
- package/server/utils/AiProviders/koboldCPP/index.js +264 -0
- package/server/utils/AiProviders/lemonade/index.js +463 -0
- package/server/utils/AiProviders/liteLLM/index.js +201 -0
- package/server/utils/AiProviders/lmStudio/index.js +383 -0
- package/server/utils/AiProviders/localAi/index.js +198 -0
- package/server/utils/AiProviders/minimax/index.js +165 -0
- package/server/utils/AiProviders/mistral/index.js +191 -0
- package/server/utils/AiProviders/modelMap/index.js +212 -0
- package/server/utils/AiProviders/modelMap/legacy.js +162 -0
- package/server/utils/AiProviders/modelRouter/index.js +170 -0
- package/server/utils/AiProviders/moonshotAi/index.js +176 -0
- package/server/utils/AiProviders/novita/index.js +460 -0
- package/server/utils/AiProviders/nvidiaNim/index.js +253 -0
- package/server/utils/AiProviders/ollama/index.js +516 -0
- package/server/utils/AiProviders/openAi/index.js +301 -0
- package/server/utils/AiProviders/openRouter/index.js +567 -0
- package/server/utils/AiProviders/perplexity/index.js +304 -0
- package/server/utils/AiProviders/perplexity/models.js +24 -0
- package/server/utils/AiProviders/perplexity/scripts/chat_models.txt +6 -0
- package/server/utils/AiProviders/perplexity/scripts/parse.mjs +49 -0
- package/server/utils/AiProviders/ppio/index.js +274 -0
- package/server/utils/AiProviders/privatemode/index.js +220 -0
- package/server/utils/AiProviders/sambanova/index.js +273 -0
- package/server/utils/AiProviders/textGenWebUI/index.js +197 -0
- package/server/utils/AiProviders/togetherAi/index.js +263 -0
- package/server/utils/AiProviders/xai/index.js +200 -0
- package/server/utils/AiProviders/zai/index.js +184 -0
- package/server/utils/BackgroundWorkers/index.js +432 -0
- package/server/utils/DocumentManager/index.js +72 -0
- package/server/utils/EmbeddingEngines/azureOpenAi/index.js +115 -0
- package/server/utils/EmbeddingEngines/cohere/index.js +91 -0
- package/server/utils/EmbeddingEngines/gemini/index.js +136 -0
- package/server/utils/EmbeddingEngines/genericOpenAi/index.js +128 -0
- package/server/utils/EmbeddingEngines/lemonade/index.js +99 -0
- package/server/utils/EmbeddingEngines/liteLLM/index.js +102 -0
- package/server/utils/EmbeddingEngines/lmstudio/index.js +122 -0
- package/server/utils/EmbeddingEngines/localAi/index.js +122 -0
- package/server/utils/EmbeddingEngines/mistral/index.js +40 -0
- package/server/utils/EmbeddingEngines/native/constants.js +63 -0
- package/server/utils/EmbeddingEngines/native/index.js +290 -0
- package/server/utils/EmbeddingEngines/ollama/index.js +136 -0
- package/server/utils/EmbeddingEngines/openAi/index.js +102 -0
- package/server/utils/EmbeddingEngines/openRouter/index.js +131 -0
- package/server/utils/EmbeddingEngines/voyageAi/index.js +71 -0
- package/server/utils/EmbeddingRerankers/native/index.js +257 -0
- package/server/utils/EmbeddingWorkerManager.js +202 -0
- package/server/utils/EncryptionManager/index.js +85 -0
- package/server/utils/MCP/hypervisor/index.js +554 -0
- package/server/utils/MCP/index.js +269 -0
- package/server/utils/PasswordRecovery/index.js +103 -0
- package/server/utils/PushNotifications/index.js +228 -0
- package/server/utils/TextSplitter/index.js +206 -0
- package/server/utils/TextToSpeech/elevenLabs/index.js +54 -0
- package/server/utils/TextToSpeech/index.js +18 -0
- package/server/utils/TextToSpeech/openAi/index.js +29 -0
- package/server/utils/TextToSpeech/openAiGeneric/index.js +58 -0
- package/server/utils/agentFlows/executor.js +233 -0
- package/server/utils/agentFlows/executors/api-call.js +60 -0
- package/server/utils/agentFlows/executors/llm-instruction.js +47 -0
- package/server/utils/agentFlows/executors/web-scraping.js +110 -0
- package/server/utils/agentFlows/flowTypes.js +85 -0
- package/server/utils/agentFlows/index.js +288 -0
- package/server/utils/agents/aibitat/error.js +18 -0
- package/server/utils/agents/aibitat/example/beginner-chat.js +56 -0
- package/server/utils/agents/aibitat/example/blog-post-coding.js +55 -0
- package/server/utils/agents/aibitat/example/websocket/index.html +67 -0
- package/server/utils/agents/aibitat/example/websocket/websock-branding-collab.js +100 -0
- package/server/utils/agents/aibitat/example/websocket/websock-multi-turn-chat.js +91 -0
- package/server/utils/agents/aibitat/index.js +1437 -0
- package/server/utils/agents/aibitat/plugins/chat-history.js +210 -0
- package/server/utils/agents/aibitat/plugins/cli.js +134 -0
- package/server/utils/agents/aibitat/plugins/create-files/assets/anything-llm-invert.png +0 -0
- package/server/utils/agents/aibitat/plugins/create-files/assets/anything-llm.png +0 -0
- package/server/utils/agents/aibitat/plugins/create-files/docx/create-docx-file.js +301 -0
- package/server/utils/agents/aibitat/plugins/create-files/docx/test-themes.js +298 -0
- package/server/utils/agents/aibitat/plugins/create-files/docx/utils.js +1095 -0
- package/server/utils/agents/aibitat/plugins/create-files/index.js +23 -0
- package/server/utils/agents/aibitat/plugins/create-files/lib.js +300 -0
- package/server/utils/agents/aibitat/plugins/create-files/pdf/create-pdf-file.js +138 -0
- package/server/utils/agents/aibitat/plugins/create-files/pdf/utils.js +70 -0
- package/server/utils/agents/aibitat/plugins/create-files/pptx/create-presentation.js +342 -0
- package/server/utils/agents/aibitat/plugins/create-files/pptx/section-agent.js +257 -0
- package/server/utils/agents/aibitat/plugins/create-files/pptx/test-themes.js +143 -0
- package/server/utils/agents/aibitat/plugins/create-files/pptx/themes.js +181 -0
- package/server/utils/agents/aibitat/plugins/create-files/pptx/utils.js +378 -0
- package/server/utils/agents/aibitat/plugins/create-files/text/create-text-file.js +158 -0
- package/server/utils/agents/aibitat/plugins/create-files/xlsx/create-excel-file.js +362 -0
- package/server/utils/agents/aibitat/plugins/create-files/xlsx/utils.js +333 -0
- package/server/utils/agents/aibitat/plugins/file-history.js +37 -0
- package/server/utils/agents/aibitat/plugins/filesystem/copy-file.js +127 -0
- package/server/utils/agents/aibitat/plugins/filesystem/create-directory.js +84 -0
- package/server/utils/agents/aibitat/plugins/filesystem/edit-file.js +133 -0
- package/server/utils/agents/aibitat/plugins/filesystem/get-file-info.js +75 -0
- package/server/utils/agents/aibitat/plugins/filesystem/index.js +33 -0
- package/server/utils/agents/aibitat/plugins/filesystem/lib.js +787 -0
- package/server/utils/agents/aibitat/plugins/filesystem/list-directory.js +175 -0
- package/server/utils/agents/aibitat/plugins/filesystem/move-file.js +95 -0
- package/server/utils/agents/aibitat/plugins/filesystem/read-multiple-files.js +157 -0
- package/server/utils/agents/aibitat/plugins/filesystem/read-text-file.js +142 -0
- package/server/utils/agents/aibitat/plugins/filesystem/search-files.js +469 -0
- package/server/utils/agents/aibitat/plugins/filesystem/write-text-file.js +90 -0
- package/server/utils/agents/aibitat/plugins/gmail/account/gmail-get-mailbox-stats.js +75 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-create-draft-reply.js +220 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-create-draft.js +217 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-delete-draft.js +87 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-get-draft.js +84 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-list-drafts.js +96 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-send-draft.js +94 -0
- package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-update-draft.js +217 -0
- package/server/utils/agents/aibitat/plugins/gmail/index.js +73 -0
- package/server/utils/agents/aibitat/plugins/gmail/lib.js +573 -0
- package/server/utils/agents/aibitat/plugins/gmail/search/gmail-get-inbox.js +104 -0
- package/server/utils/agents/aibitat/plugins/gmail/search/gmail-read-thread.js +122 -0
- package/server/utils/agents/aibitat/plugins/gmail/search/gmail-search.js +121 -0
- package/server/utils/agents/aibitat/plugins/gmail/send/gmail-reply-to-thread.js +238 -0
- package/server/utils/agents/aibitat/plugins/gmail/send/gmail-send-email.js +242 -0
- package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-mark-read.js +87 -0
- package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-mark-unread.js +87 -0
- package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-move-to-archive.js +89 -0
- package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-move-to-inbox.js +89 -0
- package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-move-to-trash.js +89 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/calendars/gcal-get-calendar.js +79 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/calendars/gcal-list-calendars.js +82 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-create-event.js +233 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-event.js +116 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-events-for-day.js +117 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-events.js +159 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-upcoming-events.js +249 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-quick-add.js +114 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-set-my-status.js +125 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-update-event.js +173 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/index.js +40 -0
- package/server/utils/agents/aibitat/plugins/google-calendar/lib.js +288 -0
- package/server/utils/agents/aibitat/plugins/http-socket.js +249 -0
- package/server/utils/agents/aibitat/plugins/index.js +47 -0
- package/server/utils/agents/aibitat/plugins/memory.js +167 -0
- package/server/utils/agents/aibitat/plugins/outlook/account/outlook-get-mailbox-stats.js +78 -0
- package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-create-draft.js +232 -0
- package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-delete-draft.js +86 -0
- package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-list-drafts.js +80 -0
- package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-send-draft.js +82 -0
- package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-update-draft.js +132 -0
- package/server/utils/agents/aibitat/plugins/outlook/index.js +45 -0
- package/server/utils/agents/aibitat/plugins/outlook/lib.js +1413 -0
- package/server/utils/agents/aibitat/plugins/outlook/search/outlook-get-inbox.js +75 -0
- package/server/utils/agents/aibitat/plugins/outlook/search/outlook-read-thread.js +131 -0
- package/server/utils/agents/aibitat/plugins/outlook/search/outlook-search.js +101 -0
- package/server/utils/agents/aibitat/plugins/outlook/send/outlook-send-email.js +222 -0
- package/server/utils/agents/aibitat/plugins/rechart.js +114 -0
- package/server/utils/agents/aibitat/plugins/request-user-input.js +265 -0
- package/server/utils/agents/aibitat/plugins/router-classifier.js +122 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/MSSQL.js +114 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/MySQL.js +83 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/Postgresql.js +75 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/index.js +80 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/utils.js +182 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/get-table-schema.js +115 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/index.js +21 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/list-database.js +49 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/list-table.js +105 -0
- package/server/utils/agents/aibitat/plugins/sql-agent/query.js +101 -0
- package/server/utils/agents/aibitat/plugins/summarize.js +189 -0
- package/server/utils/agents/aibitat/plugins/web-browsing.js +1182 -0
- package/server/utils/agents/aibitat/plugins/web-scraping.js +158 -0
- package/server/utils/agents/aibitat/plugins/websocket.js +361 -0
- package/server/utils/agents/aibitat/providers/ai-provider.js +706 -0
- package/server/utils/agents/aibitat/providers/anthropic.js +490 -0
- package/server/utils/agents/aibitat/providers/apipie.js +99 -0
- package/server/utils/agents/aibitat/providers/azure.js +122 -0
- package/server/utils/agents/aibitat/providers/bedrock.js +456 -0
- package/server/utils/agents/aibitat/providers/cerebras.js +208 -0
- package/server/utils/agents/aibitat/providers/cohere.js +269 -0
- package/server/utils/agents/aibitat/providers/cometapi.js +104 -0
- package/server/utils/agents/aibitat/providers/deepseek.js +223 -0
- package/server/utils/agents/aibitat/providers/dellProAiStudio.js +106 -0
- package/server/utils/agents/aibitat/providers/dockerModelRunner.js +189 -0
- package/server/utils/agents/aibitat/providers/fireworksai.js +101 -0
- package/server/utils/agents/aibitat/providers/foundry.js +112 -0
- package/server/utils/agents/aibitat/providers/gemini.js +450 -0
- package/server/utils/agents/aibitat/providers/genericOpenAi.js +206 -0
- package/server/utils/agents/aibitat/providers/giteeai.js +94 -0
- package/server/utils/agents/aibitat/providers/groq.js +184 -0
- package/server/utils/agents/aibitat/providers/helpers/classes.js +16 -0
- package/server/utils/agents/aibitat/providers/helpers/tooled.js +384 -0
- package/server/utils/agents/aibitat/providers/helpers/untooled.js +437 -0
- package/server/utils/agents/aibitat/providers/index.js +77 -0
- package/server/utils/agents/aibitat/providers/koboldcpp.js +103 -0
- package/server/utils/agents/aibitat/providers/lemonade.js +213 -0
- package/server/utils/agents/aibitat/providers/litellm.js +186 -0
- package/server/utils/agents/aibitat/providers/lmstudio.js +195 -0
- package/server/utils/agents/aibitat/providers/localai.js +190 -0
- package/server/utils/agents/aibitat/providers/minimax.js +194 -0
- package/server/utils/agents/aibitat/providers/mistral.js +103 -0
- package/server/utils/agents/aibitat/providers/moonshotAi.js +97 -0
- package/server/utils/agents/aibitat/providers/novita.js +188 -0
- package/server/utils/agents/aibitat/providers/nvidiaNim.js +101 -0
- package/server/utils/agents/aibitat/providers/ollama.js +606 -0
- package/server/utils/agents/aibitat/providers/openai.js +345 -0
- package/server/utils/agents/aibitat/providers/openrouter.js +195 -0
- package/server/utils/agents/aibitat/providers/perplexity.js +99 -0
- package/server/utils/agents/aibitat/providers/ppio.js +104 -0
- package/server/utils/agents/aibitat/providers/privatemode.js +107 -0
- package/server/utils/agents/aibitat/providers/sambanova.js +94 -0
- package/server/utils/agents/aibitat/providers/textgenwebui.js +99 -0
- package/server/utils/agents/aibitat/providers/togetherai.js +100 -0
- package/server/utils/agents/aibitat/providers/xai.js +99 -0
- package/server/utils/agents/aibitat/providers/zai.js +97 -0
- package/server/utils/agents/aibitat/utils/dedupe.js +152 -0
- package/server/utils/agents/aibitat/utils/summarize.js +63 -0
- package/server/utils/agents/aibitat/utils/toolReranker.js +225 -0
- package/server/utils/agents/defaults.js +196 -0
- package/server/utils/agents/ephemeral.js +790 -0
- package/server/utils/agents/imported-manifest.schema.json +158 -0
- package/server/utils/agents/imported.js +317 -0
- package/server/utils/agents/index.js +883 -0
- package/server/utils/boot/MetaGenerator.js +376 -0
- package/server/utils/boot/eagerLoadContextWindows.js +40 -0
- package/server/utils/boot/index.js +90 -0
- package/server/utils/boot/markOnboarded.js +52 -0
- package/server/utils/chats/agents.js +111 -0
- package/server/utils/chats/apiChatHandler.js +864 -0
- package/server/utils/chats/commands/reset.js +37 -0
- package/server/utils/chats/embed.js +301 -0
- package/server/utils/chats/index.js +128 -0
- package/server/utils/chats/openaiCompatible.js +537 -0
- package/server/utils/chats/stream.js +376 -0
- package/server/utils/collectorApi/index.js +319 -0
- package/server/utils/comKey/index.js +86 -0
- package/server/utils/database/index.js +83 -0
- package/server/utils/files/index.js +519 -0
- package/server/utils/files/logo.js +117 -0
- package/server/utils/files/multer.js +178 -0
- package/server/utils/files/pfp.js +63 -0
- package/server/utils/files/purgeDocument.js +91 -0
- package/server/utils/helpers/admin/index.js +56 -0
- package/server/utils/helpers/agents.js +35 -0
- package/server/utils/helpers/camelcase.js +143 -0
- package/server/utils/helpers/chat/LLMPerformanceMonitor.js +113 -0
- package/server/utils/helpers/chat/convertTo.js +256 -0
- package/server/utils/helpers/chat/index.js +448 -0
- package/server/utils/helpers/chat/responses.js +383 -0
- package/server/utils/helpers/customModels.js +1142 -0
- package/server/utils/helpers/index.js +716 -0
- package/server/utils/helpers/portAvailabilityChecker.js +46 -0
- package/server/utils/helpers/search.js +94 -0
- package/server/utils/helpers/shell.js +25 -0
- package/server/utils/helpers/tiktoken.js +107 -0
- package/server/utils/helpers/updateENV.js +1399 -0
- package/server/utils/http/index.js +141 -0
- package/server/utils/logger/index.js +66 -0
- package/server/utils/memories/index.js +139 -0
- package/server/utils/middleware/chatHistoryViewable.js +18 -0
- package/server/utils/middleware/communityHubDownloadsEnabled.js +77 -0
- package/server/utils/middleware/embedMiddleware.js +178 -0
- package/server/utils/middleware/featureFlagEnabled.js +24 -0
- package/server/utils/middleware/isSupportedRepoProviders.js +12 -0
- package/server/utils/middleware/multiUserProtected.js +107 -0
- package/server/utils/middleware/requireFeature.js +46 -0
- package/server/utils/middleware/simpleSSOEnabled.js +84 -0
- package/server/utils/middleware/validApiKey.js +29 -0
- package/server/utils/middleware/validBrowserExtensionApiKey.js +51 -0
- package/server/utils/middleware/validWorkspace.js +52 -0
- package/server/utils/middleware/validatedRequest.js +111 -0
- package/server/utils/middleware/workspaceDeletionProtection.js +18 -0
- package/server/utils/prisma/PRISMA.md +47 -0
- package/server/utils/prisma/index.js +13 -0
- package/server/utils/router/index.js +653 -0
- package/server/utils/telegramBot/chat/agent.js +425 -0
- package/server/utils/telegramBot/chat/stream.js +471 -0
- package/server/utils/telegramBot/constants.js +23 -0
- package/server/utils/telegramBot/index.js +844 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleAbort.js +15 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleHelp.js +15 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleHistory.js +80 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleNewThread.js +35 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleProof.js +202 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleReset.js +32 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleStart.js +19 -0
- package/server/utils/telegramBot/utils/commands/handlers/handleStatus.js +80 -0
- package/server/utils/telegramBot/utils/commands/handlers/showModelMenu.js +98 -0
- package/server/utils/telegramBot/utils/commands/handlers/showThreadMenu.js +120 -0
- package/server/utils/telegramBot/utils/commands/handlers/showWorkspaceMenu.js +84 -0
- package/server/utils/telegramBot/utils/commands/index.js +125 -0
- package/server/utils/telegramBot/utils/format.js +225 -0
- package/server/utils/telegramBot/utils/index.js +203 -0
- package/server/utils/telegramBot/utils/media.js +163 -0
- package/server/utils/telegramBot/utils/messageQueue.js +53 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleBackSources.js +16 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleBackWorkspaces.js +18 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleModelCancel.js +14 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleModelPagination.js +24 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleModelSelect.js +52 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleSourcePagination.js +24 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleSourceSelect.js +106 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleThreadPagination.js +26 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleThreadSelect.js +43 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleToolApproval.js +104 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleWorkspaceCreate.js +33 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleWorkspacePagination.js +26 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/handleWorkspaceSelect.js +24 -0
- package/server/utils/telegramBot/utils/navigation/callbacks/index.js +59 -0
- package/server/utils/telegramBot/utils/navigation/index.js +36 -0
- package/server/utils/telegramBot/utils/verification.js +171 -0
- package/server/utils/vectorDbProviders/astra/ASTRA_SETUP.md +22 -0
- package/server/utils/vectorDbProviders/astra/index.js +474 -0
- package/server/utils/vectorDbProviders/base.js +202 -0
- package/server/utils/vectorDbProviders/chroma/index.js +484 -0
- package/server/utils/vectorDbProviders/chromacloud/index.js +158 -0
- package/server/utils/vectorDbProviders/lance/index.js +506 -0
- package/server/utils/vectorDbProviders/milvus/MILVUS_SETUP.md +40 -0
- package/server/utils/vectorDbProviders/milvus/index.js +434 -0
- package/server/utils/vectorDbProviders/pgvector/SETUP.md +125 -0
- package/server/utils/vectorDbProviders/pgvector/index.js +850 -0
- package/server/utils/vectorDbProviders/pinecone/PINECONE_SETUP.md +24 -0
- package/server/utils/vectorDbProviders/pinecone/index.js +317 -0
- package/server/utils/vectorDbProviders/qdrant/QDRANT_SETUP.md +17 -0
- package/server/utils/vectorDbProviders/qdrant/index.js +442 -0
- package/server/utils/vectorDbProviders/weaviate/WEAVIATE_SETUP.md +17 -0
- package/server/utils/vectorDbProviders/weaviate/index.js +510 -0
- package/server/utils/vectorDbProviders/zilliz/index.js +36 -0
- package/server/utils/vectorStore/resetAllVectorStores.js +59 -0
- package/server/yarn.lock +10702 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
const {
|
|
2
|
+
DataType,
|
|
3
|
+
MetricType,
|
|
4
|
+
IndexType,
|
|
5
|
+
MilvusClient,
|
|
6
|
+
} = require("@zilliz/milvus2-sdk-node");
|
|
7
|
+
const { TextSplitter } = require("../../TextSplitter");
|
|
8
|
+
const { SystemSettings } = require("../../../models/systemSettings");
|
|
9
|
+
const { v4: uuidv4 } = require("uuid");
|
|
10
|
+
const { storeVectorResult, cachedVectorInformation } = require("../../files");
|
|
11
|
+
const { toChunks, getEmbeddingEngineSelection } = require("../../helpers");
|
|
12
|
+
const { sourceIdentifier } = require("../../chats");
|
|
13
|
+
const { VectorDatabase } = require("../base");
|
|
14
|
+
|
|
15
|
+
class Milvus extends VectorDatabase {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
get name() {
|
|
21
|
+
return "Milvus";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Milvus/Zilliz only allows letters, numbers, and underscores in collection names
|
|
25
|
+
// so we need to enforce that by re-normalizing the names when communicating with
|
|
26
|
+
// the DB.
|
|
27
|
+
// If the first char of the collection is not an underscore or letter the collection name will be invalid.
|
|
28
|
+
normalize(inputString) {
|
|
29
|
+
let normalized = inputString.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
30
|
+
if (new RegExp(/^[a-zA-Z_]/).test(normalized.slice(0, 1)))
|
|
31
|
+
normalized = `anythingllm_${normalized}`;
|
|
32
|
+
return normalized;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async connect() {
|
|
36
|
+
if (process.env.VECTOR_DB !== "milvus")
|
|
37
|
+
throw new Error(`${this.name}::Invalid ENV settings`);
|
|
38
|
+
|
|
39
|
+
const client = new MilvusClient({
|
|
40
|
+
address: process.env.MILVUS_ADDRESS,
|
|
41
|
+
username: process.env.MILVUS_USERNAME,
|
|
42
|
+
password: process.env.MILVUS_PASSWORD,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
const { isHealthy } = await client.checkHealth();
|
|
46
|
+
if (!isHealthy)
|
|
47
|
+
throw new Error(
|
|
48
|
+
`${this.name}::Invalid Heartbeat received - is the instance online?`
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
return { client };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async heartbeat() {
|
|
55
|
+
await this.connect();
|
|
56
|
+
return { heartbeat: Number(new Date()) };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async totalVectors() {
|
|
60
|
+
const { client } = await this.connect();
|
|
61
|
+
const { collection_names } = await client.listCollections();
|
|
62
|
+
const total = collection_names.reduce(async (acc, collection_name) => {
|
|
63
|
+
const statistics = await client.getCollectionStatistics({
|
|
64
|
+
collection_name: this.normalize(collection_name),
|
|
65
|
+
});
|
|
66
|
+
return Number(acc) + Number(statistics?.data?.row_count ?? 0);
|
|
67
|
+
}, 0);
|
|
68
|
+
return total;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async namespaceCount(_namespace = null) {
|
|
72
|
+
const { client } = await this.connect();
|
|
73
|
+
const statistics = await client.getCollectionStatistics({
|
|
74
|
+
collection_name: this.normalize(_namespace),
|
|
75
|
+
});
|
|
76
|
+
return Number(statistics?.data?.row_count ?? 0);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async namespace(client, namespace = null) {
|
|
80
|
+
if (!namespace) throw new Error("No namespace value provided.");
|
|
81
|
+
const collection = await client
|
|
82
|
+
.getCollectionStatistics({ collection_name: this.normalize(namespace) })
|
|
83
|
+
.catch(() => null);
|
|
84
|
+
return collection;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async hasNamespace(namespace = null) {
|
|
88
|
+
if (!namespace) return false;
|
|
89
|
+
const { client } = await this.connect();
|
|
90
|
+
return await this.namespaceExists(client, namespace);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async namespaceExists(client, namespace = null) {
|
|
94
|
+
if (!namespace) throw new Error("No namespace value provided.");
|
|
95
|
+
const { value } = await client
|
|
96
|
+
.hasCollection({ collection_name: this.normalize(namespace) })
|
|
97
|
+
.catch((e) => {
|
|
98
|
+
console.error(`${this.name}::namespaceExists`, e.message);
|
|
99
|
+
return { value: false };
|
|
100
|
+
});
|
|
101
|
+
return value;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async deleteVectorsInNamespace(client, namespace = null) {
|
|
105
|
+
await client.dropCollection({ collection_name: this.normalize(namespace) });
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Milvus requires a dimension aspect for collection creation
|
|
110
|
+
// we pass this in from the first chunk to infer the dimensions like other
|
|
111
|
+
// providers do.
|
|
112
|
+
async getOrCreateCollection(client, namespace, dimensions = null) {
|
|
113
|
+
const isExists = await this.namespaceExists(client, namespace);
|
|
114
|
+
if (!isExists) {
|
|
115
|
+
if (!dimensions)
|
|
116
|
+
throw new Error(
|
|
117
|
+
`${this.name}::getOrCreateCollection Unable to infer vector dimension from input. Open an issue on GitHub for support.`
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
await client.createCollection({
|
|
121
|
+
collection_name: this.normalize(namespace),
|
|
122
|
+
fields: [
|
|
123
|
+
{
|
|
124
|
+
name: "id",
|
|
125
|
+
description: "id",
|
|
126
|
+
data_type: DataType.VarChar,
|
|
127
|
+
max_length: 255,
|
|
128
|
+
is_primary_key: true,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: "vector",
|
|
132
|
+
description: "vector",
|
|
133
|
+
data_type: DataType.FloatVector,
|
|
134
|
+
dim: dimensions,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "metadata",
|
|
138
|
+
description: "metadata",
|
|
139
|
+
data_type: DataType.JSON,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
});
|
|
143
|
+
await client.createIndex({
|
|
144
|
+
collection_name: this.normalize(namespace),
|
|
145
|
+
field_name: "vector",
|
|
146
|
+
index_type: IndexType.AUTOINDEX,
|
|
147
|
+
metric_type: MetricType.COSINE,
|
|
148
|
+
});
|
|
149
|
+
await client.loadCollectionSync({
|
|
150
|
+
collection_name: this.normalize(namespace),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async addDocumentToNamespace(
|
|
156
|
+
namespace,
|
|
157
|
+
documentData = {},
|
|
158
|
+
fullFilePath = null,
|
|
159
|
+
skipCache = false
|
|
160
|
+
) {
|
|
161
|
+
const { DocumentVectors } = require("../../../models/vectors");
|
|
162
|
+
try {
|
|
163
|
+
let vectorDimension = null;
|
|
164
|
+
const { pageContent, docId, ...metadata } = documentData;
|
|
165
|
+
if (!pageContent || pageContent.length == 0) return false;
|
|
166
|
+
|
|
167
|
+
this.logger("Adding new vectorized document into namespace", namespace);
|
|
168
|
+
if (!skipCache) {
|
|
169
|
+
const cacheResult = await cachedVectorInformation(fullFilePath);
|
|
170
|
+
if (cacheResult.exists) {
|
|
171
|
+
const { client } = await this.connect();
|
|
172
|
+
const { chunks } = cacheResult;
|
|
173
|
+
const documentVectors = [];
|
|
174
|
+
vectorDimension = chunks[0][0].values.length || null;
|
|
175
|
+
|
|
176
|
+
await this.getOrCreateCollection(client, namespace, vectorDimension);
|
|
177
|
+
try {
|
|
178
|
+
for (const chunk of chunks) {
|
|
179
|
+
// Before sending to Milvus and saving the records to our db
|
|
180
|
+
// we need to assign the id of each chunk that is stored in the cached file.
|
|
181
|
+
const newChunks = chunk.map((chunk) => {
|
|
182
|
+
const id = uuidv4();
|
|
183
|
+
documentVectors.push({ docId, vectorId: id });
|
|
184
|
+
return { id, vector: chunk.values, metadata: chunk.metadata };
|
|
185
|
+
});
|
|
186
|
+
const insertResult = await client.insert({
|
|
187
|
+
collection_name: this.normalize(namespace),
|
|
188
|
+
data: newChunks,
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
if (insertResult?.status.error_code !== "Success") {
|
|
192
|
+
throw new Error(
|
|
193
|
+
`Error embedding into ${this.name}! Reason:${insertResult?.status.reason}`
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
await DocumentVectors.bulkInsert(documentVectors);
|
|
198
|
+
await client.flushSync({
|
|
199
|
+
collection_names: [this.normalize(namespace)],
|
|
200
|
+
});
|
|
201
|
+
return { vectorized: true, error: null };
|
|
202
|
+
} catch (insertError) {
|
|
203
|
+
console.error(
|
|
204
|
+
"Error inserting cached chunks:",
|
|
205
|
+
insertError.message
|
|
206
|
+
);
|
|
207
|
+
return { vectorized: false, error: insertError.message };
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const EmbedderEngine = getEmbeddingEngineSelection();
|
|
213
|
+
const textSplitter = new TextSplitter({
|
|
214
|
+
chunkSize: TextSplitter.determineMaxChunkSize(
|
|
215
|
+
await SystemSettings.getValueOrFallback({
|
|
216
|
+
label: "text_splitter_chunk_size",
|
|
217
|
+
}),
|
|
218
|
+
EmbedderEngine?.embeddingMaxChunkLength
|
|
219
|
+
),
|
|
220
|
+
chunkOverlap: await SystemSettings.getValueOrFallback(
|
|
221
|
+
{ label: "text_splitter_chunk_overlap" },
|
|
222
|
+
20
|
|
223
|
+
),
|
|
224
|
+
chunkHeaderMeta: TextSplitter.buildHeaderMeta(metadata),
|
|
225
|
+
chunkPrefix: EmbedderEngine?.embeddingPrefix,
|
|
226
|
+
});
|
|
227
|
+
const textChunks = await textSplitter.splitText(pageContent);
|
|
228
|
+
|
|
229
|
+
this.logger("Snippets created from document:", textChunks.length);
|
|
230
|
+
const documentVectors = [];
|
|
231
|
+
const vectors = [];
|
|
232
|
+
const vectorValues = await EmbedderEngine.embedChunks(textChunks);
|
|
233
|
+
|
|
234
|
+
if (!!vectorValues && vectorValues.length > 0) {
|
|
235
|
+
for (const [i, vector] of vectorValues.entries()) {
|
|
236
|
+
if (!vectorDimension) vectorDimension = vector.length;
|
|
237
|
+
const vectorRecord = {
|
|
238
|
+
id: uuidv4(),
|
|
239
|
+
values: vector,
|
|
240
|
+
// [DO NOT REMOVE]
|
|
241
|
+
// LangChain will be unable to find your text if you embed manually and dont include the `text` key.
|
|
242
|
+
metadata: { ...metadata, text: textChunks[i] },
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
vectors.push(vectorRecord);
|
|
246
|
+
documentVectors.push({ docId, vectorId: vectorRecord.id });
|
|
247
|
+
}
|
|
248
|
+
} else {
|
|
249
|
+
throw new Error(
|
|
250
|
+
"Could not embed document chunks! This document will not be recorded."
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (vectors.length > 0) {
|
|
255
|
+
const chunks = [];
|
|
256
|
+
const { client } = await this.connect();
|
|
257
|
+
await this.getOrCreateCollection(client, namespace, vectorDimension);
|
|
258
|
+
|
|
259
|
+
this.logger(`Inserting vectorized chunks into ${this.name}.`);
|
|
260
|
+
for (const chunk of toChunks(vectors, 100)) {
|
|
261
|
+
chunks.push(chunk);
|
|
262
|
+
const insertResult = await client.insert({
|
|
263
|
+
collection_name: this.normalize(namespace),
|
|
264
|
+
data: chunk.map((item) => ({
|
|
265
|
+
id: item.id,
|
|
266
|
+
vector: item.values,
|
|
267
|
+
metadata: item.metadata,
|
|
268
|
+
})),
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
if (insertResult?.status.error_code !== "Success") {
|
|
272
|
+
throw new Error(
|
|
273
|
+
`Error embedding into ${this.name}! Reason:${insertResult?.status.reason}`
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
await storeVectorResult(chunks, fullFilePath);
|
|
278
|
+
await client.flushSync({
|
|
279
|
+
collection_names: [this.normalize(namespace)],
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
await DocumentVectors.bulkInsert(documentVectors);
|
|
284
|
+
return { vectorized: true, error: null };
|
|
285
|
+
} catch (e) {
|
|
286
|
+
this.logger("addDocumentToNamespace", e.message);
|
|
287
|
+
return { vectorized: false, error: e.message };
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
async deleteDocumentFromNamespace(namespace, docId) {
|
|
292
|
+
const { DocumentVectors } = require("../../../models/vectors");
|
|
293
|
+
const { client } = await this.connect();
|
|
294
|
+
if (!(await this.namespaceExists(client, namespace))) return;
|
|
295
|
+
const knownDocuments = await DocumentVectors.where({ docId });
|
|
296
|
+
if (knownDocuments.length === 0) return;
|
|
297
|
+
|
|
298
|
+
const vectorIds = knownDocuments.map((doc) => doc.vectorId);
|
|
299
|
+
const queryIn = vectorIds.map((v) => `'${v}'`).join(",");
|
|
300
|
+
await client.deleteEntities({
|
|
301
|
+
collection_name: this.normalize(namespace),
|
|
302
|
+
expr: `id in [${queryIn}]`,
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
const indexes = knownDocuments.map((doc) => doc.id);
|
|
306
|
+
await DocumentVectors.deleteIds(indexes);
|
|
307
|
+
|
|
308
|
+
// Even after flushing Milvus can take some time to re-calc the count
|
|
309
|
+
// so all we can hope to do is flushSync so that the count can be correct
|
|
310
|
+
// on a later call.
|
|
311
|
+
await client.flushSync({ collection_names: [this.normalize(namespace)] });
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
async performSimilaritySearch({
|
|
316
|
+
namespace = null,
|
|
317
|
+
input = "",
|
|
318
|
+
LLMConnector = null,
|
|
319
|
+
similarityThreshold = 0.25,
|
|
320
|
+
topN = 4,
|
|
321
|
+
filterIdentifiers = [],
|
|
322
|
+
}) {
|
|
323
|
+
if (!namespace || !input || !LLMConnector)
|
|
324
|
+
throw new Error("Invalid request to performSimilaritySearch.");
|
|
325
|
+
|
|
326
|
+
const { client } = await this.connect();
|
|
327
|
+
if (!(await this.namespaceExists(client, namespace))) {
|
|
328
|
+
return {
|
|
329
|
+
contextTexts: [],
|
|
330
|
+
sources: [],
|
|
331
|
+
message: "Invalid query - no documents found for workspace!",
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
const queryVector = await LLMConnector.embedTextInput(input);
|
|
336
|
+
const { contextTexts, sourceDocuments } = await this.similarityResponse({
|
|
337
|
+
client,
|
|
338
|
+
namespace,
|
|
339
|
+
queryVector,
|
|
340
|
+
similarityThreshold,
|
|
341
|
+
topN,
|
|
342
|
+
filterIdentifiers,
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
const sources = sourceDocuments.map((doc, i) => {
|
|
346
|
+
return { metadata: doc, text: contextTexts[i] };
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
return {
|
|
350
|
+
contextTexts,
|
|
351
|
+
sources: this.curateSources(sources),
|
|
352
|
+
message: false,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
async similarityResponse({
|
|
357
|
+
client,
|
|
358
|
+
namespace,
|
|
359
|
+
queryVector,
|
|
360
|
+
similarityThreshold = 0.25,
|
|
361
|
+
topN = 4,
|
|
362
|
+
filterIdentifiers = [],
|
|
363
|
+
}) {
|
|
364
|
+
const result = {
|
|
365
|
+
contextTexts: [],
|
|
366
|
+
sourceDocuments: [],
|
|
367
|
+
scores: [],
|
|
368
|
+
};
|
|
369
|
+
const response = await client.search({
|
|
370
|
+
collection_name: this.normalize(namespace),
|
|
371
|
+
vectors: queryVector,
|
|
372
|
+
limit: topN,
|
|
373
|
+
});
|
|
374
|
+
response.results.forEach((match) => {
|
|
375
|
+
if (match.score < similarityThreshold) return;
|
|
376
|
+
if (filterIdentifiers.includes(sourceIdentifier(match.metadata))) {
|
|
377
|
+
this.logger(
|
|
378
|
+
`${this.name}: A source was filtered from context as its parent document is pinned.`
|
|
379
|
+
);
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
result.contextTexts.push(match.metadata.text);
|
|
384
|
+
result.sourceDocuments.push({
|
|
385
|
+
...match.metadata,
|
|
386
|
+
score: match.score,
|
|
387
|
+
});
|
|
388
|
+
result.scores.push(match.score);
|
|
389
|
+
});
|
|
390
|
+
return result;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
async "namespace-stats"(reqBody = {}) {
|
|
394
|
+
const { namespace = null } = reqBody;
|
|
395
|
+
if (!namespace) throw new Error("namespace required");
|
|
396
|
+
const { client } = await this.connect();
|
|
397
|
+
if (!(await this.namespaceExists(client, namespace)))
|
|
398
|
+
throw new Error("Namespace by that name does not exist.");
|
|
399
|
+
const stats = await this.namespace(client, namespace);
|
|
400
|
+
return stats
|
|
401
|
+
? stats
|
|
402
|
+
: { message: "No stats were able to be fetched from DB for namespace" };
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
async "delete-namespace"(reqBody = {}) {
|
|
406
|
+
const { namespace = null } = reqBody;
|
|
407
|
+
const { client } = await this.connect();
|
|
408
|
+
if (!(await this.namespaceExists(client, namespace)))
|
|
409
|
+
throw new Error("Namespace by that name does not exist.");
|
|
410
|
+
|
|
411
|
+
const statistics = await this.namespace(client, namespace);
|
|
412
|
+
await this.deleteVectorsInNamespace(client, namespace);
|
|
413
|
+
const vectorCount = Number(statistics?.data?.row_count ?? 0);
|
|
414
|
+
return {
|
|
415
|
+
message: `Namespace ${namespace} was deleted along with ${vectorCount} vectors.`,
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
curateSources(sources = []) {
|
|
420
|
+
const documents = [];
|
|
421
|
+
for (const source of sources) {
|
|
422
|
+
const { metadata = {} } = source;
|
|
423
|
+
if (Object.keys(metadata).length > 0) {
|
|
424
|
+
documents.push({
|
|
425
|
+
...metadata,
|
|
426
|
+
...(source.text ? { text: source.text } : {}),
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return documents;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
module.exports.Milvus = Milvus;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Setting up `PGVector` for AnythingLLM
|
|
2
|
+
|
|
3
|
+
Setting up PGVector for anythingllm to use as your vector database is quite easy. At a minimum, you will need the following:
|
|
4
|
+
|
|
5
|
+
- PostgreSQL v12+
|
|
6
|
+
- [`pgvector`](https://github.com/pgvector/pgvector) extension installed on DB
|
|
7
|
+
- User with DB table creation perms and READ access
|
|
8
|
+
|
|
9
|
+
## Setup on Mac (example)
|
|
10
|
+
|
|
11
|
+
### Install pgvector extension on PostgreSQL DB
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
brew install postgresql
|
|
15
|
+
brew services start postgresql
|
|
16
|
+
brew install pgvector
|
|
17
|
+
|
|
18
|
+
# assuming you have a database already set up + a user
|
|
19
|
+
psql <database-name>
|
|
20
|
+
CREATE EXTENSION vector;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Set PG as your vector db
|
|
24
|
+
|
|
25
|
+
_this can be done via the UI or by directly editing the `.env` file_
|
|
26
|
+
|
|
27
|
+
First, obtain a valid connection string for the user, credentials, and db you want to target.
|
|
28
|
+
eg: `postgresql://dbuser:dbuserpass@localhost:5432/yourdb`
|
|
29
|
+
|
|
30
|
+
> [!IMPORTANT]
|
|
31
|
+
> If you have an existing table that you want to use as a vector database, AnythingLLM **requires** that the table be
|
|
32
|
+
> at least minimally conform to the expected schema - this can be seen in the [index.js](./index.js) file.
|
|
33
|
+
|
|
34
|
+
_optional_ - set a table name you wish to have AnythingLLM store vectors to. By default this is `anythingllm_vectors`
|
|
35
|
+
|
|
36
|
+
## Common Questions
|
|
37
|
+
|
|
38
|
+
### I cannot connect to the DB (Running AnythingLLM in Docker)
|
|
39
|
+
|
|
40
|
+
If you are running AnythingLLM in Docker, you will need to ensure that the DB is accessible from the container.
|
|
41
|
+
If you are running your DB in another Docker container **or** on the host machine, you will need to ensure that the container can access the DB.
|
|
42
|
+
|
|
43
|
+
`localhost` will not work in this case as it will attempt to connect to the DB _inside the AnythingLLM container_ instead of the host machine or another container.
|
|
44
|
+
|
|
45
|
+
You will need to use the `host.docker.internal` (or `172.17.0.1` on Linux/Ubuntu) address.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
on Mac or Windows:
|
|
49
|
+
postgresql://dbuser:dbuserpass@localhost:5432/yourdb => postgresql://dbuser:dbuserpass@host.docker.internal:5432/yourdb
|
|
50
|
+
|
|
51
|
+
on Linux:
|
|
52
|
+
postgresql://dbuser:dbuserpass@localhost:5432/yourdb => postgresql://dbuser:dbuserpass@172.17.0.1:5432/yourdb
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Can I use an existing table as a vector database?
|
|
56
|
+
|
|
57
|
+
Yes, you can use an existing table as a vector database. However, AnythingLLM **requires** that the table be at least minimally conform to the expected schema - this can be seen in the [index.js](./index.js) file.
|
|
58
|
+
|
|
59
|
+
It is **absolutely critical** that the `embedding` column's `VECTOR(XXXX)` dimensions match the dimension of the embedder in AnythingLLM. The default embedding model is 384 dimensions. However, if you are using a custom embedder, you will need to ensure that the dimension value is set correctly.
|
|
60
|
+
|
|
61
|
+
### Validate the connection to the database
|
|
62
|
+
|
|
63
|
+
When setting the connection string in or table name via the AnythingLLM UI, the following validations will be attempted:
|
|
64
|
+
|
|
65
|
+
- Validate the connection string
|
|
66
|
+
- Validate the table name
|
|
67
|
+
- Run test connection to ensure the table exists and is accessible by the connection string used
|
|
68
|
+
- Check if the table name already exists and if so, validate that it is an embedding table with the correct schema
|
|
69
|
+
|
|
70
|
+
### My embedding table is not present in the DB
|
|
71
|
+
|
|
72
|
+
The embedding storage table is created by AnythingLLM **on the first upsert** of a vector. If you have not yet embedding any documents, the table will not be present in the DB.
|
|
73
|
+
|
|
74
|
+
### How do I reset my vector database?
|
|
75
|
+
|
|
76
|
+
_at the workspace level in Settings > Vector Database_
|
|
77
|
+
|
|
78
|
+
You can use the "Reset Vector Database" button in the AnythingLLM UI to reset your vector database. This will drop all vectors within that workspace, but the table will remain in the DB.
|
|
79
|
+
|
|
80
|
+
_reset the vector database at the db level_
|
|
81
|
+
|
|
82
|
+
For this, you will need to `DROP TABLE` from the command line or however you manage your DB. Once the table is dropped, it will be recreated by AnythingLLM on the next upsert.
|
|
83
|
+
|
|
84
|
+
## Troubleshooting
|
|
85
|
+
|
|
86
|
+
### Cannot connect to DB
|
|
87
|
+
|
|
88
|
+
- Ensure the connection string is valid
|
|
89
|
+
- Ensure the user has access to the database
|
|
90
|
+
- Ensure the pgvector extension is installed
|
|
91
|
+
|
|
92
|
+
### Cannot create table
|
|
93
|
+
|
|
94
|
+
- Ensure the user has `CREATE TABLE` permissions
|
|
95
|
+
|
|
96
|
+
### Cannot insert vector
|
|
97
|
+
|
|
98
|
+
- Ensure the user has `INSERT` permissions in the database
|
|
99
|
+
- Ensure the table has a dimension value set and this matches the dimension of the embedder in AnythingLLM
|
|
100
|
+
- Ensure the table has a vector column set
|
|
101
|
+
|
|
102
|
+
### Cannot query vector
|
|
103
|
+
|
|
104
|
+
- Ensure the user has `SELECT` permissions in the database
|
|
105
|
+
- Ensure the table has a vector column set
|
|
106
|
+
- Ensure the table has a dimension value set and this matches the dimension of the embedder in AnythingLLM
|
|
107
|
+
|
|
108
|
+
### "type 'vector' does not exist" issues with PGVector
|
|
109
|
+
|
|
110
|
+
If you are using the PGVector as your vector database, you may encounter an error similar to the following when embedding documents:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
type 'vector' does not exist
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This is due to the fact that the `vector` type is not installed on the PG database.
|
|
117
|
+
|
|
118
|
+
First, follow the instructions in the [PGVector README](https://github.com/pgvector/pgvector#installation) to install the `vector` type on your database.
|
|
119
|
+
|
|
120
|
+
Then, you will need to create the extension on the database. This can be done by running the following command:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
psql <database-name>
|
|
124
|
+
CREATE EXTENSION vector;
|
|
125
|
+
```
|