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,474 @@
|
|
|
1
|
+
const { AstraDB: AstraClient } = require("@datastax/astra-db-ts");
|
|
2
|
+
const { TextSplitter } = require("../../TextSplitter");
|
|
3
|
+
const { SystemSettings } = require("../../../models/systemSettings");
|
|
4
|
+
const { storeVectorResult, cachedVectorInformation } = require("../../files");
|
|
5
|
+
const { v4: uuidv4 } = require("uuid");
|
|
6
|
+
const { toChunks, getEmbeddingEngineSelection } = require("../../helpers");
|
|
7
|
+
const { sourceIdentifier } = require("../../chats");
|
|
8
|
+
const { VectorDatabase } = require("../base");
|
|
9
|
+
|
|
10
|
+
const sanitizeNamespace = (namespace) => {
|
|
11
|
+
// If namespace already starts with ns_, don't add it again
|
|
12
|
+
if (namespace.startsWith("ns_")) return namespace;
|
|
13
|
+
|
|
14
|
+
// Remove any invalid characters, ensure starts with letter
|
|
15
|
+
return `ns_${namespace.replace(/[^a-zA-Z0-9_]/g, "_")}`;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// Add this helper method to check if collection exists more reliably
|
|
19
|
+
const collectionExists = async function (client, namespace) {
|
|
20
|
+
try {
|
|
21
|
+
const collections = await AstraDB.allNamespaces(client);
|
|
22
|
+
if (collections) {
|
|
23
|
+
return collections.includes(namespace);
|
|
24
|
+
}
|
|
25
|
+
} catch (error) {
|
|
26
|
+
this.logger("collectionExists check error", error?.message || error);
|
|
27
|
+
return false; // Return false for any error to allow creation attempt
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
class AstraDB extends VectorDatabase {
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
get name() {
|
|
37
|
+
return "AstraDB";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async connect() {
|
|
41
|
+
if (process.env.VECTOR_DB !== "astra")
|
|
42
|
+
throw new Error("AstraDB::Invalid ENV settings");
|
|
43
|
+
|
|
44
|
+
const client = new AstraClient(
|
|
45
|
+
process?.env?.ASTRA_DB_APPLICATION_TOKEN,
|
|
46
|
+
process?.env?.ASTRA_DB_ENDPOINT
|
|
47
|
+
);
|
|
48
|
+
return { client };
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async heartbeat() {
|
|
52
|
+
return { heartbeat: Number(new Date()) };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Astra interface will return a valid collection object even if the collection
|
|
56
|
+
// does not actually exist. So we run a simple check which will always throw
|
|
57
|
+
// when the table truly does not exist. Faster than iterating all collections.
|
|
58
|
+
async isRealCollection(astraCollection = null) {
|
|
59
|
+
if (!astraCollection) return false;
|
|
60
|
+
return await astraCollection
|
|
61
|
+
.countDocuments()
|
|
62
|
+
.then(() => true)
|
|
63
|
+
.catch(() => false);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async totalVectors() {
|
|
67
|
+
const { client } = await this.connect();
|
|
68
|
+
const collectionNames = await this.allNamespaces(client);
|
|
69
|
+
var totalVectors = 0;
|
|
70
|
+
for (const name of collectionNames) {
|
|
71
|
+
const collection = await client.collection(name).catch(() => null);
|
|
72
|
+
const count = await collection.countDocuments().catch(() => 0);
|
|
73
|
+
totalVectors += count ? count : 0;
|
|
74
|
+
}
|
|
75
|
+
return totalVectors;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async namespaceCount(_namespace = null) {
|
|
79
|
+
const { client } = await this.connect();
|
|
80
|
+
const namespace = await this.namespace(client, _namespace);
|
|
81
|
+
return namespace?.vectorCount || 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async namespace(client, namespace = null) {
|
|
85
|
+
if (!namespace) throw new Error("No namespace value provided.");
|
|
86
|
+
const sanitizedNamespace = sanitizeNamespace(namespace);
|
|
87
|
+
const collection = await client
|
|
88
|
+
.collection(sanitizedNamespace)
|
|
89
|
+
.catch(() => null);
|
|
90
|
+
if (!(await this.isRealCollection(collection))) return null;
|
|
91
|
+
|
|
92
|
+
const count = await collection.countDocuments().catch((e) => {
|
|
93
|
+
this.logger("namespaceExists", e.message);
|
|
94
|
+
return null;
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
name: namespace,
|
|
99
|
+
...collection,
|
|
100
|
+
vectorCount: typeof count === "number" ? count : 0,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async hasNamespace(namespace = null) {
|
|
105
|
+
if (!namespace) return false;
|
|
106
|
+
const { client } = await this.connect();
|
|
107
|
+
return await this.namespaceExists(client, namespace);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async namespaceExists(client, namespace = null) {
|
|
111
|
+
if (!namespace) throw new Error("No namespace value provided.");
|
|
112
|
+
const sanitizedNamespace = sanitizeNamespace(namespace);
|
|
113
|
+
const collection = await client.collection(sanitizedNamespace);
|
|
114
|
+
return await this.isRealCollection(collection);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async deleteVectorsInNamespace(client, namespace = null) {
|
|
118
|
+
const sanitizedNamespace = sanitizeNamespace(namespace);
|
|
119
|
+
await client.dropCollection(sanitizedNamespace);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// AstraDB requires a dimension aspect for collection creation
|
|
124
|
+
// we pass this in from the first chunk to infer the dimensions like other
|
|
125
|
+
// providers do.
|
|
126
|
+
async getOrCreateCollection(client, namespace, dimensions = null) {
|
|
127
|
+
const sanitizedNamespace = sanitizeNamespace(namespace);
|
|
128
|
+
try {
|
|
129
|
+
const exists = await collectionExists(client, sanitizedNamespace);
|
|
130
|
+
|
|
131
|
+
if (!exists) {
|
|
132
|
+
if (!dimensions) {
|
|
133
|
+
throw new Error(
|
|
134
|
+
`AstraDB:getOrCreateCollection Unable to infer vector dimension from input. Open an issue on Github for support.`
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Create new collection
|
|
139
|
+
await client.createCollection(sanitizedNamespace, {
|
|
140
|
+
vector: {
|
|
141
|
+
dimension: dimensions,
|
|
142
|
+
metric: "cosine",
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Get the newly created collection
|
|
147
|
+
return await client.collection(sanitizedNamespace);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return await client.collection(sanitizedNamespace);
|
|
151
|
+
} catch (error) {
|
|
152
|
+
this.logger("getOrCreateCollection", error?.message || error);
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async addDocumentToNamespace(
|
|
158
|
+
namespace,
|
|
159
|
+
documentData = {},
|
|
160
|
+
fullFilePath = null,
|
|
161
|
+
skipCache = false
|
|
162
|
+
) {
|
|
163
|
+
const { DocumentVectors } = require("../../../models/vectors");
|
|
164
|
+
try {
|
|
165
|
+
let vectorDimension = null;
|
|
166
|
+
const { pageContent, docId, ...metadata } = documentData;
|
|
167
|
+
if (!pageContent || pageContent.length == 0) return false;
|
|
168
|
+
|
|
169
|
+
this.logger("Adding new vectorized document into namespace", namespace);
|
|
170
|
+
if (!skipCache) {
|
|
171
|
+
const cacheResult = await cachedVectorInformation(fullFilePath);
|
|
172
|
+
if (cacheResult.exists) {
|
|
173
|
+
const { client } = await this.connect();
|
|
174
|
+
const { chunks } = cacheResult;
|
|
175
|
+
const documentVectors = [];
|
|
176
|
+
vectorDimension = chunks[0][0].values.length || null;
|
|
177
|
+
|
|
178
|
+
const collection = await this.getOrCreateCollection(
|
|
179
|
+
client,
|
|
180
|
+
namespace,
|
|
181
|
+
vectorDimension
|
|
182
|
+
);
|
|
183
|
+
if (!(await this.isRealCollection(collection)))
|
|
184
|
+
throw new Error("Failed to create new AstraDB collection!", {
|
|
185
|
+
namespace,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
for (const chunk of chunks) {
|
|
189
|
+
// Before sending to Astra and saving the records to our db
|
|
190
|
+
// we need to assign the id of each chunk that is stored in the cached file.
|
|
191
|
+
const newChunks = chunk.map((chunk) => {
|
|
192
|
+
const _id = uuidv4();
|
|
193
|
+
documentVectors.push({ docId, vectorId: _id });
|
|
194
|
+
return {
|
|
195
|
+
_id: _id,
|
|
196
|
+
$vector: chunk.values,
|
|
197
|
+
metadata: chunk.metadata || {},
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
await collection.insertMany(newChunks);
|
|
202
|
+
}
|
|
203
|
+
await DocumentVectors.bulkInsert(documentVectors);
|
|
204
|
+
return { vectorized: true, error: null };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const EmbedderEngine = getEmbeddingEngineSelection();
|
|
209
|
+
const textSplitter = new TextSplitter({
|
|
210
|
+
chunkSize: Math.min(
|
|
211
|
+
7500,
|
|
212
|
+
TextSplitter.determineMaxChunkSize(
|
|
213
|
+
await SystemSettings.getValueOrFallback({
|
|
214
|
+
label: "text_splitter_chunk_size",
|
|
215
|
+
}),
|
|
216
|
+
EmbedderEngine?.embeddingMaxChunkLength
|
|
217
|
+
)
|
|
218
|
+
),
|
|
219
|
+
chunkOverlap: await SystemSettings.getValueOrFallback(
|
|
220
|
+
{ label: "text_splitter_chunk_overlap" },
|
|
221
|
+
20
|
|
222
|
+
),
|
|
223
|
+
chunkHeaderMeta: TextSplitter.buildHeaderMeta(metadata),
|
|
224
|
+
chunkPrefix: EmbedderEngine?.embeddingPrefix,
|
|
225
|
+
});
|
|
226
|
+
const textChunks = await textSplitter.splitText(pageContent);
|
|
227
|
+
|
|
228
|
+
this.logger("Snippets created from document:", textChunks.length);
|
|
229
|
+
const documentVectors = [];
|
|
230
|
+
const vectors = [];
|
|
231
|
+
const vectorValues = await EmbedderEngine.embedChunks(textChunks);
|
|
232
|
+
|
|
233
|
+
if (!!vectorValues && vectorValues.length > 0) {
|
|
234
|
+
for (const [i, vector] of vectorValues.entries()) {
|
|
235
|
+
if (!vectorDimension) vectorDimension = vector.length;
|
|
236
|
+
const vectorRecord = {
|
|
237
|
+
_id: uuidv4(),
|
|
238
|
+
$vector: vector,
|
|
239
|
+
metadata: { ...metadata, text: textChunks[i] },
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
vectors.push(vectorRecord);
|
|
243
|
+
documentVectors.push({ docId, vectorId: vectorRecord._id });
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
throw new Error(
|
|
247
|
+
"Could not embed document chunks! This document will not be recorded."
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
const { client } = await this.connect();
|
|
251
|
+
const collection = await this.getOrCreateCollection(
|
|
252
|
+
client,
|
|
253
|
+
namespace,
|
|
254
|
+
vectorDimension
|
|
255
|
+
);
|
|
256
|
+
if (!(await this.isRealCollection(collection)))
|
|
257
|
+
throw new Error("Failed to create new AstraDB collection!", {
|
|
258
|
+
namespace,
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
if (vectors.length > 0) {
|
|
262
|
+
const chunks = [];
|
|
263
|
+
|
|
264
|
+
this.logger("Inserting vectorized chunks into Astra DB.");
|
|
265
|
+
|
|
266
|
+
// AstraDB has maximum upsert size of 20 records per-request so we have to use a lower chunk size here
|
|
267
|
+
// in order to do the queries - this takes a lot more time than other providers but there
|
|
268
|
+
// is no way around it. This will save the vector-cache with the same layout, so we don't
|
|
269
|
+
// have to chunk again for cached files.
|
|
270
|
+
for (const chunk of toChunks(vectors, 20)) {
|
|
271
|
+
chunks.push(
|
|
272
|
+
chunk.map((c) => {
|
|
273
|
+
return { id: c._id, values: c.$vector, metadata: c.metadata };
|
|
274
|
+
})
|
|
275
|
+
);
|
|
276
|
+
await collection.insertMany(chunk);
|
|
277
|
+
}
|
|
278
|
+
await storeVectorResult(chunks, fullFilePath);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
await DocumentVectors.bulkInsert(documentVectors);
|
|
282
|
+
return { vectorized: true, error: null };
|
|
283
|
+
} catch (e) {
|
|
284
|
+
this.logger("addDocumentToNamespace", e.message);
|
|
285
|
+
return { vectorized: false, error: e.message };
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
async deleteDocumentFromNamespace(namespace, docId) {
|
|
290
|
+
const { DocumentVectors } = require("../../../models/vectors");
|
|
291
|
+
const { client } = await this.connect();
|
|
292
|
+
namespace = sanitizeNamespace(namespace);
|
|
293
|
+
if (!(await this.namespaceExists(client, namespace)))
|
|
294
|
+
throw new Error(
|
|
295
|
+
"Invalid namespace - has it been collected and populated yet?"
|
|
296
|
+
);
|
|
297
|
+
const collection = await client.collection(namespace);
|
|
298
|
+
|
|
299
|
+
const knownDocuments = await DocumentVectors.where({ docId });
|
|
300
|
+
if (knownDocuments.length === 0) return;
|
|
301
|
+
|
|
302
|
+
const vectorIds = knownDocuments.map((doc) => doc.vectorId);
|
|
303
|
+
for (const id of vectorIds) {
|
|
304
|
+
await collection.deleteMany({
|
|
305
|
+
_id: id,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
const indexes = knownDocuments.map((doc) => doc.id);
|
|
310
|
+
await DocumentVectors.deleteIds(indexes);
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
async performSimilaritySearch({
|
|
315
|
+
namespace = null,
|
|
316
|
+
input = "",
|
|
317
|
+
LLMConnector = null,
|
|
318
|
+
similarityThreshold = 0.25,
|
|
319
|
+
topN = 4,
|
|
320
|
+
filterIdentifiers = [],
|
|
321
|
+
}) {
|
|
322
|
+
if (!namespace || !input || !LLMConnector)
|
|
323
|
+
throw new Error("Invalid request to performSimilaritySearch.");
|
|
324
|
+
|
|
325
|
+
const { client } = await this.connect();
|
|
326
|
+
// Sanitize namespace before checking existence
|
|
327
|
+
const sanitizedNamespace = sanitizeNamespace(namespace);
|
|
328
|
+
|
|
329
|
+
if (!(await this.namespaceExists(client, sanitizedNamespace))) {
|
|
330
|
+
return {
|
|
331
|
+
contextTexts: [],
|
|
332
|
+
sources: [],
|
|
333
|
+
message:
|
|
334
|
+
"Invalid query - no namespace found for workspace in vector db!",
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
const queryVector = await LLMConnector.embedTextInput(input);
|
|
339
|
+
const { contextTexts, sourceDocuments } = await this.similarityResponse({
|
|
340
|
+
client,
|
|
341
|
+
namespace: sanitizedNamespace,
|
|
342
|
+
queryVector,
|
|
343
|
+
similarityThreshold,
|
|
344
|
+
topN,
|
|
345
|
+
filterIdentifiers,
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
const sources = sourceDocuments.map((metadata, i) => {
|
|
349
|
+
return { ...metadata, text: contextTexts[i] };
|
|
350
|
+
});
|
|
351
|
+
return {
|
|
352
|
+
contextTexts,
|
|
353
|
+
sources: this.curateSources(sources),
|
|
354
|
+
message: false,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
async similarityResponse({
|
|
359
|
+
client,
|
|
360
|
+
namespace,
|
|
361
|
+
queryVector,
|
|
362
|
+
similarityThreshold = 0.25,
|
|
363
|
+
topN = 4,
|
|
364
|
+
filterIdentifiers = [],
|
|
365
|
+
}) {
|
|
366
|
+
const result = {
|
|
367
|
+
contextTexts: [],
|
|
368
|
+
sourceDocuments: [],
|
|
369
|
+
scores: [],
|
|
370
|
+
};
|
|
371
|
+
// Namespace should already be sanitized, but let's be defensive
|
|
372
|
+
const sanitizedNamespace = sanitizeNamespace(namespace);
|
|
373
|
+
const collection = await client.collection(sanitizedNamespace);
|
|
374
|
+
const responses = await collection
|
|
375
|
+
.find(
|
|
376
|
+
{},
|
|
377
|
+
{
|
|
378
|
+
sort: { $vector: queryVector },
|
|
379
|
+
limit: topN,
|
|
380
|
+
includeSimilarity: true,
|
|
381
|
+
}
|
|
382
|
+
)
|
|
383
|
+
.toArray();
|
|
384
|
+
|
|
385
|
+
responses.forEach((response) => {
|
|
386
|
+
if (response.$similarity < similarityThreshold) return;
|
|
387
|
+
if (filterIdentifiers.includes(sourceIdentifier(response.metadata))) {
|
|
388
|
+
this.logger(
|
|
389
|
+
"A source was filtered from context as it's parent document is pinned."
|
|
390
|
+
);
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
result.contextTexts.push(response.metadata.text);
|
|
394
|
+
result.sourceDocuments.push({
|
|
395
|
+
...response.metadata,
|
|
396
|
+
score: response.$similarity,
|
|
397
|
+
});
|
|
398
|
+
result.scores.push(response.$similarity);
|
|
399
|
+
});
|
|
400
|
+
return result;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
async allNamespaces(client) {
|
|
404
|
+
try {
|
|
405
|
+
let header = new Headers();
|
|
406
|
+
header.append("Token", client?.httpClient?.applicationToken);
|
|
407
|
+
header.append("Content-Type", "application/json");
|
|
408
|
+
|
|
409
|
+
let raw = JSON.stringify({
|
|
410
|
+
findCollections: {},
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
let requestOptions = {
|
|
414
|
+
method: "POST",
|
|
415
|
+
headers: header,
|
|
416
|
+
body: raw,
|
|
417
|
+
redirect: "follow",
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
const call = await fetch(client?.httpClient?.baseUrl, requestOptions);
|
|
421
|
+
const resp = await call?.text();
|
|
422
|
+
const collections = resp ? JSON.parse(resp)?.status?.collections : [];
|
|
423
|
+
return collections;
|
|
424
|
+
} catch (e) {
|
|
425
|
+
this.logger("AllNamespace", e);
|
|
426
|
+
return [];
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async "namespace-stats"(reqBody = {}) {
|
|
431
|
+
const { namespace = null } = reqBody;
|
|
432
|
+
if (!namespace) throw new Error("namespace required");
|
|
433
|
+
const { client } = await this.connect();
|
|
434
|
+
if (!(await this.namespaceExists(client, namespace)))
|
|
435
|
+
throw new Error("Namespace by that name does not exist.");
|
|
436
|
+
const stats = await this.namespace(client, namespace);
|
|
437
|
+
return stats
|
|
438
|
+
? stats
|
|
439
|
+
: { message: "No stats were able to be fetched from DB for namespace" };
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
async "delete-namespace"(reqBody = {}) {
|
|
443
|
+
const { namespace = null } = reqBody;
|
|
444
|
+
const { client } = await this.connect();
|
|
445
|
+
if (!(await this.namespaceExists(client, namespace)))
|
|
446
|
+
throw new Error("Namespace by that name does not exist.");
|
|
447
|
+
|
|
448
|
+
const details = await this.namespace(client, namespace);
|
|
449
|
+
await this.deleteVectorsInNamespace(client, namespace);
|
|
450
|
+
return {
|
|
451
|
+
message: `Namespace ${namespace} was deleted along with ${
|
|
452
|
+
details?.vectorCount || "all"
|
|
453
|
+
} vectors.`,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
curateSources(sources = []) {
|
|
458
|
+
const documents = [];
|
|
459
|
+
for (const source of sources) {
|
|
460
|
+
if (Object.keys(source).length > 0) {
|
|
461
|
+
const metadata = source.hasOwnProperty("metadata")
|
|
462
|
+
? source.metadata
|
|
463
|
+
: source;
|
|
464
|
+
documents.push({
|
|
465
|
+
...metadata,
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
return documents;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
module.exports.AstraDB = AstraDB;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/* eslint-disable unused-imports/no-unused-vars */
|
|
2
|
+
|
|
3
|
+
/* Base class for all Vector Database providers.
|
|
4
|
+
* All vector database providers should extend this class and implement/override the necessary methods.
|
|
5
|
+
*/
|
|
6
|
+
class VectorDatabase {
|
|
7
|
+
get name() {
|
|
8
|
+
return "VectorDatabase";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
constructor() {
|
|
12
|
+
if (this.constructor === VectorDatabase) {
|
|
13
|
+
throw new Error("VectorDatabase cannot be instantiated directly");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Connect to vector database client
|
|
19
|
+
* @returns {Promise<{client: any}>}
|
|
20
|
+
*/
|
|
21
|
+
async connect() {
|
|
22
|
+
throw new Error("Must be implemented by provider");
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Heartbeat check for vector database client
|
|
27
|
+
* @returns {Promise<{heartbeat: number}>}
|
|
28
|
+
*/
|
|
29
|
+
async heartbeat() {
|
|
30
|
+
throw new Error("Must be implemented by provider");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get total number of vectors across all namespaces
|
|
35
|
+
* @returns {Promise<number>}
|
|
36
|
+
*/
|
|
37
|
+
async totalVectors() {
|
|
38
|
+
throw new Error("Must be implemented by provider");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Get count of vectors in a specific namespace
|
|
43
|
+
* @param {string} namespace - Namespace to count vectors in
|
|
44
|
+
* @returns {Promise<number>}
|
|
45
|
+
*/
|
|
46
|
+
async namespaceCount(namespace = null) {
|
|
47
|
+
throw new Error("Must be implemented by provider");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Get namespace details
|
|
52
|
+
* @param {any} client - Vector database client
|
|
53
|
+
* @param {string} namespace - Namespace to get
|
|
54
|
+
* @returns {Promise<any>}
|
|
55
|
+
*/
|
|
56
|
+
async namespace(client, namespace = null) {
|
|
57
|
+
throw new Error("Must be implemented by provider");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Check if a namespace exists
|
|
62
|
+
* @param {string} namespace - Namespace to check
|
|
63
|
+
* @returns {Promise<boolean>}
|
|
64
|
+
*/
|
|
65
|
+
async hasNamespace(namespace = null) {
|
|
66
|
+
throw new Error("Must be implemented by provider");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Check if a namespace exists with a client
|
|
71
|
+
* @param {any} client - Vector database client
|
|
72
|
+
* @param {string} namespace - Namespace to check
|
|
73
|
+
* @returns {Promise<boolean>}
|
|
74
|
+
*/
|
|
75
|
+
async namespaceExists(client, namespace = null) {
|
|
76
|
+
throw new Error("Must be implemented by provider");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Delete all vectors in a namespace
|
|
81
|
+
* @param {any} client - Vector database client
|
|
82
|
+
* @param {string} namespace - Namespace to delete vectors from
|
|
83
|
+
* @returns {Promise<boolean>}
|
|
84
|
+
*/
|
|
85
|
+
async deleteVectorsInNamespace(client, namespace = null) {
|
|
86
|
+
throw new Error("Must be implemented by provider");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Add a document to a namespace
|
|
91
|
+
* @param {string} namespace - Namespace to add document to
|
|
92
|
+
* @param {Object} documentData - Document data
|
|
93
|
+
* @param {string} fullFilePath - Full file path
|
|
94
|
+
* @param {boolean} skipCache - Skip cache
|
|
95
|
+
* @returns {Promise<{vectorized: boolean, error: string|null}>}
|
|
96
|
+
*/
|
|
97
|
+
async addDocumentToNamespace(
|
|
98
|
+
namespace,
|
|
99
|
+
documentData = {},
|
|
100
|
+
fullFilePath = null,
|
|
101
|
+
skipCache = false
|
|
102
|
+
) {
|
|
103
|
+
throw new Error("Must be implemented by provider");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Delete a document from namespace
|
|
108
|
+
* @param {string} namespace - Namespace to delete document from
|
|
109
|
+
* @param {string} docId - Document id
|
|
110
|
+
* @returns {Promise<boolean>}
|
|
111
|
+
*/
|
|
112
|
+
async deleteDocumentFromNamespace(namespace, docId) {
|
|
113
|
+
throw new Error("Must be implemented by provider");
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Perform a similarity search
|
|
118
|
+
* @param {Object} params - Search parameters
|
|
119
|
+
* @param {string} params.namespace - Namespace to search in
|
|
120
|
+
* @param {string} params.input - Input text to search for
|
|
121
|
+
* @param {any} params.LLMConnector - LLM connector for embeddings
|
|
122
|
+
* @param {number} params.similarityThreshold - Similarity threshold
|
|
123
|
+
* @param {number} params.topN - Number of results to return
|
|
124
|
+
* @param {string[]} params.filterIdentifiers - Identifiers to filter out
|
|
125
|
+
* @returns {Promise<{contextTexts: string[], sources: any[], message: string|boolean}>}
|
|
126
|
+
*/
|
|
127
|
+
async performSimilaritySearch({
|
|
128
|
+
namespace = null,
|
|
129
|
+
input = "",
|
|
130
|
+
LLMConnector = null,
|
|
131
|
+
similarityThreshold = 0.25,
|
|
132
|
+
topN = 4,
|
|
133
|
+
filterIdentifiers = [],
|
|
134
|
+
}) {
|
|
135
|
+
throw new Error("Must be implemented by provider");
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Perform a similarity search and return raw results
|
|
140
|
+
* @param {Object} params - Search parameters
|
|
141
|
+
* @param {any} params.client - Vector database client
|
|
142
|
+
* @param {string} params.namespace - Namespace to search in
|
|
143
|
+
* @param {number[]} params.queryVector - Query vector
|
|
144
|
+
* @param {number} params.similarityThreshold - Similarity threshold
|
|
145
|
+
* @param {number} params.topN - Number of results to return
|
|
146
|
+
* @param {string[]} params.filterIdentifiers - Identifiers to filter out
|
|
147
|
+
* @returns {Promise<{contextTexts: string[], sourceDocuments: any[], scores: number[]}>}
|
|
148
|
+
*/
|
|
149
|
+
async similarityResponse({
|
|
150
|
+
client,
|
|
151
|
+
namespace,
|
|
152
|
+
queryVector,
|
|
153
|
+
similarityThreshold = 0.25,
|
|
154
|
+
topN = 4,
|
|
155
|
+
filterIdentifiers = [],
|
|
156
|
+
}) {
|
|
157
|
+
throw new Error("Must be implemented by provider");
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Get namespace stats
|
|
162
|
+
* @param {Object} reqBody - Request body
|
|
163
|
+
* @param {string} reqBody.namespace - Namespace to get stats for
|
|
164
|
+
* @returns {Promise<any>}
|
|
165
|
+
*/
|
|
166
|
+
async "namespace-stats"(reqBody = {}) {
|
|
167
|
+
throw new Error("Must be implemented by provider");
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Delete a namespace
|
|
172
|
+
* @param {Object} reqBody - Request body
|
|
173
|
+
* @param {string} reqBody.namespace - Namespace to delete
|
|
174
|
+
* @returns {Promise<{message: string}>}
|
|
175
|
+
*/
|
|
176
|
+
async "delete-namespace"(reqBody = {}) {
|
|
177
|
+
throw new Error("Must be implemented by provider");
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Reset vector database (delete all data)
|
|
182
|
+
* @returns {Promise<{reset: boolean}>}
|
|
183
|
+
*/
|
|
184
|
+
async reset() {
|
|
185
|
+
throw new Error("Must be implemented by provider");
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Curate sources from search results
|
|
190
|
+
* @param {any[]} sources - Sources to curate
|
|
191
|
+
* @returns {any[]}
|
|
192
|
+
*/
|
|
193
|
+
curateSources(sources = []) {
|
|
194
|
+
throw new Error("Must be implemented by provider");
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
logger(message = null, ...args) {
|
|
198
|
+
console.log(`\x1b[36m[VectorDB::${this.name}]\x1b[0m ${message}`, ...args);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
module.exports = { VectorDatabase };
|