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
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
The MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Fred Terzi
|
|
4
|
+
Copyright (c) Mintplex Labs Inc.
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
|
14
|
+
all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Totem LLM - Your Private AI
|
|
2
|
+
|
|
3
|
+
Totem LLM is a sovereign AI solution, aimed at optimizing for consumer hardware and ensuring data privacy. It is designed to run efficiently on consumer-grade hardware, such as laptops and desktops, without the need for cloud-based processing. This allows users to have full control over their data and AI interactions, without relying on third-party services.
|
|
4
|
+
|
|
5
|
+
## Quick Start (Build from Source)
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- [Node.js](https://nodejs.org/) v18 or later
|
|
10
|
+
- [Yarn](https://yarnpkg.com/) v1.x (`npm install -g yarn`)
|
|
11
|
+
- [Ollama](https://ollama.com/) (recommended local LLM provider) or an [OpenRouter](https://openrouter.ai/) API key
|
|
12
|
+
- Linux build machine - current build relies on `cp` command with `--reflink` option for efficient file copying. Building on non-Linux platforms may require additional setup (e.g. WSL on Windows).
|
|
13
|
+
|
|
14
|
+
### 1. Clone the repository
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
git clone https://github.com/fred-terzi/totem-llm.git
|
|
18
|
+
cd totem-llm
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 2. Install dependencies and initialise the database
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
yarn setup
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This installs dependencies for all three packages (`server`, `collector`, `frontend`), copies the example `.env` files, generates the Prisma client, and runs database migrations.
|
|
28
|
+
|
|
29
|
+
### 3. Configure environment variables
|
|
30
|
+
|
|
31
|
+
Open `server/.env.development` and set at minimum:
|
|
32
|
+
|
|
33
|
+
```env
|
|
34
|
+
STORAGE_DIR="/absolute/path/to/your/storage"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
All other settings (LLM provider, embedding model, etc.) can be changed later through the UI.
|
|
38
|
+
|
|
39
|
+
### 4. Start in development mode
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
yarn dev:all
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This starts the server (port `3001`), collector (port `8888`), and frontend dev server (port `5173`) concurrently. Open [http://localhost:5173](http://localhost:5173) to access the UI.
|
|
46
|
+
|
|
47
|
+
> Alternatively, run each service in its own terminal: `yarn dev:server`, `yarn dev:collector`, `yarn dev:frontend`.
|
|
48
|
+
|
|
49
|
+
### 5. Build for production
|
|
50
|
+
|
|
51
|
+
Choose a build profile and run the frontend build + deploy script:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Available profiles: npm | desktop-free | desktop-premium | source
|
|
55
|
+
TOTEM_BUILD_PROFILE=source node scripts/build-frontend.mjs
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This builds the Vite frontend and copies the output into `server/public/`. Then start the server:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
node bin/totem-llm.js start
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The app will be available at [http://localhost:3001](http://localhost:3001).
|
|
65
|
+
|
|
66
|
+
#### Build profiles
|
|
67
|
+
|
|
68
|
+
| Profile | Community Hub | Model Router | LLM Providers | Branding & Whitelabeling |
|
|
69
|
+
|---|---|---|---|---|
|
|
70
|
+
| `npm` | ✗ | ✗ | Ollama, OpenRouter only | ✗ |
|
|
71
|
+
| `desktop-free` | ✗ | ✓ | All | ✗ |
|
|
72
|
+
| `desktop-premium` | ✓ | ✓ | All | ✓ |
|
|
73
|
+
| `source` | ✓ | ✓ | All | ✓ |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Thanks
|
|
78
|
+
|
|
79
|
+
Massive thank you and appreciation to AnythingLLM. Totem LLM is a fork of AnythingLLM, and we are grateful for the foundation they have provided. We will continue to build on their work and contribute back to the community.
|
|
80
|
+
|
|
81
|
+
https://github.com/Mintplex-Labs/anything-llm
|
package/bin/totem-llm.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import { dirname, join } from "path";
|
|
4
|
+
import { setup } from "../lib/setup.js";
|
|
5
|
+
import { launch } from "../lib/launcher.js";
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = dirname(__filename);
|
|
9
|
+
const packageRoot = join(__dirname, "..");
|
|
10
|
+
|
|
11
|
+
const args = process.argv.slice(2);
|
|
12
|
+
const isHelp = args.includes("--help") || args.includes("-h");
|
|
13
|
+
const command = isHelp
|
|
14
|
+
? "help"
|
|
15
|
+
: (args.find((a) => !a.startsWith("--")) ?? "start");
|
|
16
|
+
const noCollector = args.includes("--no-collector");
|
|
17
|
+
const portArg = args.find((a) => a.startsWith("--port="));
|
|
18
|
+
const port = portArg ? portArg.split("=")[1] : undefined;
|
|
19
|
+
|
|
20
|
+
async function main() {
|
|
21
|
+
switch (command) {
|
|
22
|
+
case "start":
|
|
23
|
+
await setup({ packageRoot });
|
|
24
|
+
await launch({ packageRoot, noCollector, port });
|
|
25
|
+
break;
|
|
26
|
+
|
|
27
|
+
case "setup":
|
|
28
|
+
await setup({ packageRoot, force: args.includes("--force") });
|
|
29
|
+
console.log(
|
|
30
|
+
'\nSetup complete. Run "totem-llm start" to launch the server.'
|
|
31
|
+
);
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
case "help":
|
|
35
|
+
case "--help":
|
|
36
|
+
case "-h":
|
|
37
|
+
printHelp();
|
|
38
|
+
break;
|
|
39
|
+
|
|
40
|
+
default:
|
|
41
|
+
console.error(`Unknown command: "${command}"`);
|
|
42
|
+
printHelp();
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function printHelp() {
|
|
48
|
+
console.log(`
|
|
49
|
+
Totem LLM – Your Private AI
|
|
50
|
+
|
|
51
|
+
Usage:
|
|
52
|
+
totem-llm [command] [options]
|
|
53
|
+
|
|
54
|
+
Commands:
|
|
55
|
+
start Start Totem LLM (default)
|
|
56
|
+
setup Run first-time setup without starting
|
|
57
|
+
help Show this help message
|
|
58
|
+
|
|
59
|
+
Options:
|
|
60
|
+
--no-collector Start without the document collector (skips Puppeteer/ffmpeg)
|
|
61
|
+
--port=<port> Override the server port (default: 3001)
|
|
62
|
+
--force (setup only) Regenerate configuration even if it already exists
|
|
63
|
+
|
|
64
|
+
Environment Variables:
|
|
65
|
+
TOTEM_STORAGE_DIR Override storage directory (default: ~/.totem-llm)
|
|
66
|
+
SERVER_PORT Override server port
|
|
67
|
+
COLLECTOR_PORT Override collector port (default: 8888)
|
|
68
|
+
|
|
69
|
+
Examples:
|
|
70
|
+
totem-llm Start with defaults
|
|
71
|
+
totem-llm --no-collector Start without document ingestion
|
|
72
|
+
totem-llm --port=8080 Start server on port 8080
|
|
73
|
+
TOTEM_STORAGE_DIR=/data totem-llm start
|
|
74
|
+
`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
main().catch((err) => {
|
|
78
|
+
console.error("Fatal error:", err.message);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
});
|
package/collector/.env
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Placeholder .env file for collector runtime
|
|
2
|
+
|
|
3
|
+
# Port the collector listens on. The server must use the same COLLECTOR_PORT value when running services separately.
|
|
4
|
+
# COLLECTOR_PORT=8888
|
|
5
|
+
|
|
6
|
+
# This enables HTTP request/response logging in development. Set value to truthy string to enable, leave empty value or comment out to disable
|
|
7
|
+
# ENABLE_HTTP_LOGGER=""
|
|
8
|
+
# This enables timestamps for the HTTP Logger. Set value to true to enable, leave empty or comment out to disable
|
|
9
|
+
# ENABLE_HTTP_LOGGER_TIMESTAMPS=""
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Placeholder .env file for collector runtime
|
|
2
|
+
|
|
3
|
+
# Port the collector listens on. The server must use the same COLLECTOR_PORT value when running services separately.
|
|
4
|
+
# COLLECTOR_PORT=8888
|
|
5
|
+
|
|
6
|
+
# This enables HTTP request/response logging in development. Set value to truthy string to enable, leave empty value or comment out to disable
|
|
7
|
+
# ENABLE_HTTP_LOGGER=""
|
|
8
|
+
# This enables timestamps for the HTTP Logger. Set value to true to enable, leave empty or comment out to disable
|
|
9
|
+
# ENABLE_HTTP_LOGGER_TIMESTAMPS=""
|
package/collector/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v18.18.0
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
const { setDataSigner } = require("../middleware/setDataSigner");
|
|
2
|
+
const { verifyPayloadIntegrity } = require("../middleware/verifyIntegrity");
|
|
3
|
+
const {
|
|
4
|
+
resolveRepoLoader,
|
|
5
|
+
resolveRepoLoaderFunction,
|
|
6
|
+
} = require("../utils/extensions/RepoLoader");
|
|
7
|
+
const { reqBody } = require("../utils/http");
|
|
8
|
+
const { validURL, validateURL } = require("../utils/url");
|
|
9
|
+
const RESYNC_METHODS = require("./resync");
|
|
10
|
+
const { loadObsidianVault } = require("../utils/extensions/ObsidianVault");
|
|
11
|
+
|
|
12
|
+
function extensions(app) {
|
|
13
|
+
if (!app) return;
|
|
14
|
+
|
|
15
|
+
app.post(
|
|
16
|
+
"/ext/resync-source-document",
|
|
17
|
+
[verifyPayloadIntegrity, setDataSigner],
|
|
18
|
+
async function (request, response) {
|
|
19
|
+
try {
|
|
20
|
+
const { type, options } = reqBody(request);
|
|
21
|
+
if (!RESYNC_METHODS.hasOwnProperty(type))
|
|
22
|
+
throw new Error(`Type "${type}" is not a valid type to sync.`);
|
|
23
|
+
return await RESYNC_METHODS[type](options, response);
|
|
24
|
+
} catch (e) {
|
|
25
|
+
console.error(e);
|
|
26
|
+
response.status(200).json({
|
|
27
|
+
success: false,
|
|
28
|
+
content: null,
|
|
29
|
+
reason: e.message || "A processing error occurred.",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
app.post(
|
|
37
|
+
"/ext/:repo_platform-repo",
|
|
38
|
+
[verifyPayloadIntegrity, setDataSigner],
|
|
39
|
+
async function (request, response) {
|
|
40
|
+
try {
|
|
41
|
+
const loadRepo = resolveRepoLoaderFunction(
|
|
42
|
+
request.params.repo_platform
|
|
43
|
+
);
|
|
44
|
+
const { success, reason, data } = await loadRepo(
|
|
45
|
+
reqBody(request),
|
|
46
|
+
response
|
|
47
|
+
);
|
|
48
|
+
response.status(200).json({
|
|
49
|
+
success,
|
|
50
|
+
reason,
|
|
51
|
+
data,
|
|
52
|
+
});
|
|
53
|
+
} catch (e) {
|
|
54
|
+
console.error(e);
|
|
55
|
+
response.status(200).json({
|
|
56
|
+
success: false,
|
|
57
|
+
reason: e.message || "A processing error occurred.",
|
|
58
|
+
data: {},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
// gets all branches for a specific repo
|
|
66
|
+
app.post(
|
|
67
|
+
"/ext/:repo_platform-repo/branches",
|
|
68
|
+
[verifyPayloadIntegrity],
|
|
69
|
+
async function (request, response) {
|
|
70
|
+
try {
|
|
71
|
+
const RepoLoader = resolveRepoLoader(request.params.repo_platform);
|
|
72
|
+
const allBranches = await new RepoLoader(
|
|
73
|
+
reqBody(request)
|
|
74
|
+
).getRepoBranches();
|
|
75
|
+
response.status(200).json({
|
|
76
|
+
success: true,
|
|
77
|
+
reason: null,
|
|
78
|
+
data: {
|
|
79
|
+
branches: allBranches,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
} catch (e) {
|
|
83
|
+
console.error(e);
|
|
84
|
+
response.status(400).json({
|
|
85
|
+
success: false,
|
|
86
|
+
reason: e.message,
|
|
87
|
+
data: {
|
|
88
|
+
branches: [],
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
app.post(
|
|
97
|
+
"/ext/youtube-transcript",
|
|
98
|
+
[verifyPayloadIntegrity],
|
|
99
|
+
async function (request, response) {
|
|
100
|
+
try {
|
|
101
|
+
const {
|
|
102
|
+
loadYouTubeTranscript,
|
|
103
|
+
} = require("../utils/extensions/YoutubeTranscript");
|
|
104
|
+
const { success, reason, data } = await loadYouTubeTranscript(
|
|
105
|
+
reqBody(request)
|
|
106
|
+
);
|
|
107
|
+
response.status(200).json({ success, reason, data });
|
|
108
|
+
} catch (e) {
|
|
109
|
+
console.error(e);
|
|
110
|
+
response.status(400).json({
|
|
111
|
+
success: false,
|
|
112
|
+
reason: e.message,
|
|
113
|
+
data: {
|
|
114
|
+
title: null,
|
|
115
|
+
author: null,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
app.post(
|
|
124
|
+
"/ext/website-depth",
|
|
125
|
+
[verifyPayloadIntegrity],
|
|
126
|
+
async function (request, response) {
|
|
127
|
+
try {
|
|
128
|
+
const websiteDepth = require("../utils/extensions/WebsiteDepth");
|
|
129
|
+
const { url, depth = 1, maxLinks = 20 } = reqBody(request);
|
|
130
|
+
const validatedUrl = validateURL(url);
|
|
131
|
+
if (!validURL(validatedUrl)) throw new Error("Not a valid URL.");
|
|
132
|
+
const scrapedData = await websiteDepth(validatedUrl, depth, maxLinks);
|
|
133
|
+
response.status(200).json({ success: true, data: scrapedData });
|
|
134
|
+
} catch (e) {
|
|
135
|
+
console.error(e);
|
|
136
|
+
response.status(400).json({ success: false, reason: e.message });
|
|
137
|
+
}
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
app.post(
|
|
143
|
+
"/ext/confluence",
|
|
144
|
+
[verifyPayloadIntegrity, setDataSigner],
|
|
145
|
+
async function (request, response) {
|
|
146
|
+
try {
|
|
147
|
+
const { loadConfluence } = require("../utils/extensions/Confluence");
|
|
148
|
+
const { success, reason, data } = await loadConfluence(
|
|
149
|
+
reqBody(request),
|
|
150
|
+
response
|
|
151
|
+
);
|
|
152
|
+
response.status(200).json({ success, reason, data });
|
|
153
|
+
} catch (e) {
|
|
154
|
+
console.error(e);
|
|
155
|
+
response.status(400).json({
|
|
156
|
+
success: false,
|
|
157
|
+
reason: e.message,
|
|
158
|
+
data: {
|
|
159
|
+
title: null,
|
|
160
|
+
author: null,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
app.post(
|
|
169
|
+
"/ext/drupalwiki",
|
|
170
|
+
[verifyPayloadIntegrity, setDataSigner],
|
|
171
|
+
async function (request, response) {
|
|
172
|
+
try {
|
|
173
|
+
const {
|
|
174
|
+
loadAndStoreSpaces,
|
|
175
|
+
} = require("../utils/extensions/DrupalWiki");
|
|
176
|
+
const { success, reason, data } = await loadAndStoreSpaces(
|
|
177
|
+
reqBody(request),
|
|
178
|
+
response
|
|
179
|
+
);
|
|
180
|
+
response.status(200).json({ success, reason, data });
|
|
181
|
+
} catch (e) {
|
|
182
|
+
console.error(e);
|
|
183
|
+
response.status(400).json({
|
|
184
|
+
success: false,
|
|
185
|
+
reason: e.message,
|
|
186
|
+
data: {
|
|
187
|
+
title: null,
|
|
188
|
+
author: null,
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
app.post(
|
|
197
|
+
"/ext/obsidian/vault",
|
|
198
|
+
[verifyPayloadIntegrity, setDataSigner],
|
|
199
|
+
async function (request, response) {
|
|
200
|
+
try {
|
|
201
|
+
const { files } = reqBody(request);
|
|
202
|
+
const result = await loadObsidianVault({ files });
|
|
203
|
+
response.status(200).json(result);
|
|
204
|
+
} catch (e) {
|
|
205
|
+
console.error(e);
|
|
206
|
+
response.status(400).json({
|
|
207
|
+
success: false,
|
|
208
|
+
reason: e.message,
|
|
209
|
+
data: null,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
app.post(
|
|
217
|
+
"/ext/paperless-ngx",
|
|
218
|
+
[verifyPayloadIntegrity, setDataSigner],
|
|
219
|
+
async function (request, response) {
|
|
220
|
+
try {
|
|
221
|
+
const {
|
|
222
|
+
loadPaperlessNgx,
|
|
223
|
+
} = require("../utils/extensions/PaperlessNgx");
|
|
224
|
+
const result = await loadPaperlessNgx(reqBody(request), response);
|
|
225
|
+
response.status(200).json(result);
|
|
226
|
+
} catch (e) {
|
|
227
|
+
console.error(e);
|
|
228
|
+
response.status(400).json({
|
|
229
|
+
success: false,
|
|
230
|
+
reason: e.message,
|
|
231
|
+
data: null,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
module.exports = extensions;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
const { getLinkText } = require("../../processLink");
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fetches the content of a raw link. Returns the content as a text string of the link in question.
|
|
5
|
+
* @param {object} data - metadata from document (eg: link)
|
|
6
|
+
* @param {import("../../middleware/setDataSigner").ResponseWithSigner} response
|
|
7
|
+
*/
|
|
8
|
+
async function resyncLink({ link }, response) {
|
|
9
|
+
if (!link) throw new Error("Invalid link provided");
|
|
10
|
+
try {
|
|
11
|
+
const { success, content = null, reason } = await getLinkText(link);
|
|
12
|
+
if (!success) throw new Error(`Failed to sync link content. ${reason}`);
|
|
13
|
+
response.status(200).json({ success, content });
|
|
14
|
+
} catch (e) {
|
|
15
|
+
console.error(e);
|
|
16
|
+
response.status(200).json({
|
|
17
|
+
success: false,
|
|
18
|
+
content: null,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Fetches the content of a YouTube link. Returns the content as a text string of the video in question.
|
|
25
|
+
* We offer this as there may be some videos where a transcription could be manually edited after initial scraping
|
|
26
|
+
* but in general - transcriptions often never change.
|
|
27
|
+
* @param {object} data - metadata from document (eg: link)
|
|
28
|
+
* @param {import("../../middleware/setDataSigner").ResponseWithSigner} response
|
|
29
|
+
*/
|
|
30
|
+
async function resyncYouTube({ link }, response) {
|
|
31
|
+
if (!link) throw new Error("Invalid link provided");
|
|
32
|
+
try {
|
|
33
|
+
const {
|
|
34
|
+
fetchVideoTranscriptContent,
|
|
35
|
+
} = require("../../utils/extensions/YoutubeTranscript");
|
|
36
|
+
const { success, reason, content } = await fetchVideoTranscriptContent({
|
|
37
|
+
url: link,
|
|
38
|
+
});
|
|
39
|
+
if (!success)
|
|
40
|
+
throw new Error(`Failed to sync YouTube video transcript. ${reason}`);
|
|
41
|
+
response.status(200).json({ success, content });
|
|
42
|
+
} catch (e) {
|
|
43
|
+
console.error(e);
|
|
44
|
+
response.status(200).json({
|
|
45
|
+
success: false,
|
|
46
|
+
content: null,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Fetches the content of a specific confluence page via its chunkSource.
|
|
53
|
+
* Returns the content as a text string of the page in question and only that page.
|
|
54
|
+
* @param {object} data - metadata from document (eg: chunkSource)
|
|
55
|
+
* @param {import("../../middleware/setDataSigner").ResponseWithSigner} response
|
|
56
|
+
*/
|
|
57
|
+
async function resyncConfluence({ chunkSource }, response) {
|
|
58
|
+
if (!chunkSource) throw new Error("Invalid source property provided");
|
|
59
|
+
try {
|
|
60
|
+
// Confluence data is `payload` encrypted. So we need to expand its
|
|
61
|
+
// encrypted payload back into query params so we can reFetch the page with same access token/params.
|
|
62
|
+
const source = response.locals.encryptionWorker.expandPayload(chunkSource);
|
|
63
|
+
const {
|
|
64
|
+
fetchConfluencePage,
|
|
65
|
+
} = require("../../utils/extensions/Confluence");
|
|
66
|
+
const { success, reason, content } = await fetchConfluencePage({
|
|
67
|
+
pageUrl: `https:${source.pathname}`, // need to add back the real protocol
|
|
68
|
+
baseUrl: source.searchParams.get("baseUrl"),
|
|
69
|
+
spaceKey: source.searchParams.get("spaceKey"),
|
|
70
|
+
accessToken: source.searchParams.get("token"),
|
|
71
|
+
username: source.searchParams.get("username"),
|
|
72
|
+
cloud: source.searchParams.get("cloud") === "true",
|
|
73
|
+
bypassSSL: source.searchParams.get("bypassSSL") === "true",
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
if (!success)
|
|
77
|
+
throw new Error(`Failed to sync Confluence page content. ${reason}`);
|
|
78
|
+
response.status(200).json({ success, content });
|
|
79
|
+
} catch (e) {
|
|
80
|
+
console.error(e);
|
|
81
|
+
response.status(200).json({
|
|
82
|
+
success: false,
|
|
83
|
+
content: null,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Fetches the content of a specific confluence page via its chunkSource.
|
|
90
|
+
* Returns the content as a text string of the page in question and only that page.
|
|
91
|
+
* @param {object} data - metadata from document (eg: chunkSource)
|
|
92
|
+
* @param {import("../../middleware/setDataSigner").ResponseWithSigner} response
|
|
93
|
+
*/
|
|
94
|
+
async function resyncGithub({ chunkSource }, response) {
|
|
95
|
+
if (!chunkSource) throw new Error("Invalid source property provided");
|
|
96
|
+
try {
|
|
97
|
+
// Github file data is `payload` encrypted (might contain PAT). So we need to expand its
|
|
98
|
+
// encrypted payload back into query params so we can reFetch the page with same access token/params.
|
|
99
|
+
const source = response.locals.encryptionWorker.expandPayload(chunkSource);
|
|
100
|
+
const {
|
|
101
|
+
fetchGithubFile,
|
|
102
|
+
} = require("../../utils/extensions/RepoLoader/GithubRepo");
|
|
103
|
+
const { success, reason, content } = await fetchGithubFile({
|
|
104
|
+
repoUrl: `https:${source.pathname}`, // need to add back the real protocol
|
|
105
|
+
branch: source.searchParams.get("branch"),
|
|
106
|
+
accessToken: source.searchParams.get("pat"),
|
|
107
|
+
sourceFilePath: source.searchParams.get("path"),
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (!success)
|
|
111
|
+
throw new Error(`Failed to sync GitHub file content. ${reason}`);
|
|
112
|
+
response.status(200).json({ success, content });
|
|
113
|
+
} catch (e) {
|
|
114
|
+
console.error(e);
|
|
115
|
+
response.status(200).json({
|
|
116
|
+
success: false,
|
|
117
|
+
content: null,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Fetches the content of a specific DrupalWiki page via its chunkSource.
|
|
124
|
+
* Returns the content as a text string of the page in question and only that page.
|
|
125
|
+
* @param {object} data - metadata from document (eg: chunkSource)
|
|
126
|
+
* @param {import("../../middleware/setDataSigner").ResponseWithSigner} response
|
|
127
|
+
*/
|
|
128
|
+
async function resyncDrupalWiki({ chunkSource }, response) {
|
|
129
|
+
if (!chunkSource) throw new Error("Invalid source property provided");
|
|
130
|
+
try {
|
|
131
|
+
// DrupalWiki data is `payload` encrypted. So we need to expand its
|
|
132
|
+
// encrypted payload back into query params so we can reFetch the page with same access token/params.
|
|
133
|
+
const source = response.locals.encryptionWorker.expandPayload(chunkSource);
|
|
134
|
+
const { loadPage } = require("../../utils/extensions/DrupalWiki");
|
|
135
|
+
const { success, reason, content } = await loadPage({
|
|
136
|
+
baseUrl: source.searchParams.get("baseUrl"),
|
|
137
|
+
pageId: source.searchParams.get("pageId"),
|
|
138
|
+
accessToken: source.searchParams.get("accessToken"),
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
if (!success) {
|
|
142
|
+
console.error(`Failed to sync DrupalWiki page content. ${reason}`);
|
|
143
|
+
response.status(200).json({
|
|
144
|
+
success: false,
|
|
145
|
+
content: null,
|
|
146
|
+
});
|
|
147
|
+
} else {
|
|
148
|
+
response.status(200).json({ success, content });
|
|
149
|
+
}
|
|
150
|
+
} catch (e) {
|
|
151
|
+
console.error(e);
|
|
152
|
+
response.status(200).json({
|
|
153
|
+
success: false,
|
|
154
|
+
content: null,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Fetches the content of a specific Paperless-ngx document via its chunkSource.
|
|
161
|
+
* Returns the content as a text string of the document.
|
|
162
|
+
* @param {object} data - metadata from document (eg: chunkSource)
|
|
163
|
+
* @param {import("../../middleware/setDataSigner").ResponseWithSigner} response
|
|
164
|
+
*/
|
|
165
|
+
async function resyncPaperlessNgx({ chunkSource }, response) {
|
|
166
|
+
if (!chunkSource) throw new Error("Invalid source property provided");
|
|
167
|
+
try {
|
|
168
|
+
const source = response.locals.encryptionWorker.expandPayload(chunkSource);
|
|
169
|
+
const {
|
|
170
|
+
PaperlessNgxLoader,
|
|
171
|
+
} = require("../../utils/extensions/PaperlessNgx/PaperlessNgxLoader");
|
|
172
|
+
const loader = new PaperlessNgxLoader({
|
|
173
|
+
baseUrl: source.searchParams.get("baseUrl"),
|
|
174
|
+
apiToken: source.searchParams.get("token"),
|
|
175
|
+
});
|
|
176
|
+
const documentId = source.pathname.split("//")[1];
|
|
177
|
+
const content = await loader.fetchDocumentContent(documentId);
|
|
178
|
+
|
|
179
|
+
if (!content) throw new Error("Failed to fetch document content");
|
|
180
|
+
response.status(200).json({ success: true, content });
|
|
181
|
+
} catch (e) {
|
|
182
|
+
console.error(e);
|
|
183
|
+
response.status(200).json({
|
|
184
|
+
success: false,
|
|
185
|
+
content: null,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
module.exports = {
|
|
191
|
+
link: resyncLink,
|
|
192
|
+
youtube: resyncYouTube,
|
|
193
|
+
confluence: resyncConfluence,
|
|
194
|
+
github: resyncGithub,
|
|
195
|
+
drupalwiki: resyncDrupalWiki,
|
|
196
|
+
"paperless-ngx": resyncPaperlessNgx,
|
|
197
|
+
};
|