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,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute an LLM instruction flow step
|
|
3
|
+
* @param {Object} config Flow step configuration
|
|
4
|
+
* @param {{introspect: Function, logger: Function}} context Execution context with introspect function
|
|
5
|
+
* @returns {Promise<string>} Processed result
|
|
6
|
+
*/
|
|
7
|
+
async function executeLLMInstruction(config, context) {
|
|
8
|
+
const { instruction, resultVariable } = config;
|
|
9
|
+
const { introspect, logger, aibitat } = context;
|
|
10
|
+
logger(
|
|
11
|
+
`\x1b[43m[AgentFlowToolExecutor]\x1b[0m - executing LLM Instruction block`
|
|
12
|
+
);
|
|
13
|
+
introspect(`Processing data with LLM instruction...`);
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
logger(
|
|
17
|
+
`Sending request to LLM (${aibitat.defaultProvider.provider}::${aibitat.defaultProvider.model})`
|
|
18
|
+
);
|
|
19
|
+
introspect(`Sending request to LLM...`);
|
|
20
|
+
|
|
21
|
+
// Ensure the input is a string since we are sending it to the LLM direct as a message
|
|
22
|
+
let input = instruction;
|
|
23
|
+
if (typeof input === "object") input = JSON.stringify(input);
|
|
24
|
+
if (typeof input !== "string") input = String(input);
|
|
25
|
+
|
|
26
|
+
let completion;
|
|
27
|
+
const provider = aibitat.getProviderForConfig(aibitat.defaultProvider);
|
|
28
|
+
if (provider.supportsAgentStreaming) {
|
|
29
|
+
completion = await provider.stream(
|
|
30
|
+
[{ role: "user", content: input }],
|
|
31
|
+
[],
|
|
32
|
+
null
|
|
33
|
+
);
|
|
34
|
+
} else {
|
|
35
|
+
completion = await provider.complete([{ role: "user", content: input }]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
introspect(`Successfully received LLM response`);
|
|
39
|
+
if (resultVariable) config.resultVariable = resultVariable;
|
|
40
|
+
return completion.textResponse;
|
|
41
|
+
} catch (error) {
|
|
42
|
+
logger(`LLM processing failed: ${error.message}`, error);
|
|
43
|
+
throw new Error(`LLM processing failed: ${error.message}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = executeLLMInstruction;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute a web scraping flow step
|
|
3
|
+
* @param {Object} config Flow step configuration
|
|
4
|
+
* @param {Object} context Execution context with introspect function
|
|
5
|
+
* @returns {Promise<string>} Scraped content
|
|
6
|
+
*/
|
|
7
|
+
async function executeWebScraping(config, context) {
|
|
8
|
+
const { CollectorApi } = require("../../collectorApi");
|
|
9
|
+
const { TokenManager } = require("../../helpers/tiktoken");
|
|
10
|
+
const Provider = require("../../agents/aibitat/providers/ai-provider");
|
|
11
|
+
const { summarizeContent } = require("../../agents/aibitat/utils/summarize");
|
|
12
|
+
|
|
13
|
+
const { url, captureAs = "text", enableSummarization = true } = config;
|
|
14
|
+
const { introspect, logger, aibitat } = context;
|
|
15
|
+
logger(
|
|
16
|
+
`\x1b[43m[AgentFlowToolExecutor]\x1b[0m - executing Web Scraping block`
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
if (!url) {
|
|
20
|
+
throw new Error("URL is required for web scraping");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const captureMode = captureAs === "querySelector" ? "html" : captureAs;
|
|
24
|
+
introspect(`Scraping the content of ${url} as ${captureAs}`);
|
|
25
|
+
const { success, content } = await new CollectorApi()
|
|
26
|
+
.getLinkContent(url, captureMode)
|
|
27
|
+
.then((res) => {
|
|
28
|
+
if (captureAs !== "querySelector") return res;
|
|
29
|
+
return parseHTMLwithSelector(res.content, config.querySelector, context);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
if (!success) {
|
|
33
|
+
introspect(`Could not scrape ${url}. Cannot use this page's content.`);
|
|
34
|
+
throw new Error("URL could not be scraped and no content was found.");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
introspect(`Successfully scraped content from ${url}`);
|
|
38
|
+
if (!content || content?.length === 0) {
|
|
39
|
+
introspect("There was no content to be collected or read.");
|
|
40
|
+
throw new Error("There was no content to be collected or read.");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (!enableSummarization) {
|
|
44
|
+
logger(`Returning raw content as summarization is disabled`);
|
|
45
|
+
return content;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const tokenCount = new TokenManager(
|
|
49
|
+
aibitat.defaultProvider.model
|
|
50
|
+
).countFromString(content);
|
|
51
|
+
const contextLimit = Provider.contextLimit(
|
|
52
|
+
aibitat.defaultProvider.provider,
|
|
53
|
+
aibitat.defaultProvider.model
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
if (tokenCount < contextLimit) {
|
|
57
|
+
logger(
|
|
58
|
+
`Content within token limit (${tokenCount}/${contextLimit}). Returning raw content.`
|
|
59
|
+
);
|
|
60
|
+
return content;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
introspect(
|
|
64
|
+
`This page's content is way too long (${tokenCount} tokens). I will summarize it right now.`
|
|
65
|
+
);
|
|
66
|
+
const summary = await summarizeContent({
|
|
67
|
+
provider: aibitat.defaultProvider.provider,
|
|
68
|
+
model: aibitat.defaultProvider.model,
|
|
69
|
+
content,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
introspect(`Successfully summarized content`);
|
|
73
|
+
return summary;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Parse HTML with a CSS selector
|
|
78
|
+
* @param {string} html - The HTML to parse
|
|
79
|
+
* @param {string|null} selector - The CSS selector to use (as text string)
|
|
80
|
+
* @param {{introspect: Function}} context - The context object
|
|
81
|
+
* @returns {Object} The parsed content
|
|
82
|
+
*/
|
|
83
|
+
function parseHTMLwithSelector(html, selector = null, context) {
|
|
84
|
+
if (!selector || selector.length === 0) {
|
|
85
|
+
context.introspect("No selector provided. Returning the entire HTML.");
|
|
86
|
+
return { success: true, content: html };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const Cheerio = require("cheerio");
|
|
90
|
+
const $ = Cheerio.load(html);
|
|
91
|
+
const selectedElements = $(selector);
|
|
92
|
+
|
|
93
|
+
let content;
|
|
94
|
+
if (selectedElements.length === 0) {
|
|
95
|
+
return { success: false, content: null };
|
|
96
|
+
} else if (selectedElements.length === 1) {
|
|
97
|
+
content = selectedElements.html();
|
|
98
|
+
} else {
|
|
99
|
+
context.introspect(
|
|
100
|
+
`Found ${selectedElements.length} elements matching selector: ${selector}`
|
|
101
|
+
);
|
|
102
|
+
content = selectedElements
|
|
103
|
+
.map((_, element) => $(element).html())
|
|
104
|
+
.get()
|
|
105
|
+
.join("\n");
|
|
106
|
+
}
|
|
107
|
+
return { success: true, content };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
module.exports = executeWebScraping;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const FLOW_TYPES = {
|
|
2
|
+
START: {
|
|
3
|
+
type: "start",
|
|
4
|
+
description: "Initialize flow variables",
|
|
5
|
+
parameters: {
|
|
6
|
+
variables: {
|
|
7
|
+
type: "array",
|
|
8
|
+
description: "List of variables to initialize",
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
API_CALL: {
|
|
13
|
+
type: "apiCall",
|
|
14
|
+
description: "Make an HTTP request to an API endpoint",
|
|
15
|
+
parameters: {
|
|
16
|
+
url: { type: "string", description: "The URL to make the request to" },
|
|
17
|
+
method: { type: "string", description: "HTTP method (GET, POST, etc.)" },
|
|
18
|
+
headers: {
|
|
19
|
+
type: "array",
|
|
20
|
+
description: "Request headers as key-value pairs",
|
|
21
|
+
},
|
|
22
|
+
bodyType: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Type of request body (json, form)",
|
|
25
|
+
},
|
|
26
|
+
body: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description:
|
|
29
|
+
"Request body content. If body type is json, always return a valid json object. If body type is form, always return a valid form data object.",
|
|
30
|
+
},
|
|
31
|
+
formData: { type: "array", description: "Form data as key-value pairs" },
|
|
32
|
+
responseVariable: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "Variable to store the response",
|
|
35
|
+
},
|
|
36
|
+
directOutput: {
|
|
37
|
+
type: "boolean",
|
|
38
|
+
description:
|
|
39
|
+
"Whether to return the response directly to the user without LLM processing",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
examples: [
|
|
43
|
+
{
|
|
44
|
+
url: "https://api.example.com/data",
|
|
45
|
+
method: "GET",
|
|
46
|
+
headers: [{ key: "Authorization", value: "Bearer 1234567890" }],
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
LLM_INSTRUCTION: {
|
|
51
|
+
type: "llmInstruction",
|
|
52
|
+
description: "Process data using LLM instructions",
|
|
53
|
+
parameters: {
|
|
54
|
+
instruction: {
|
|
55
|
+
type: "string",
|
|
56
|
+
description: "The instruction for the LLM to follow",
|
|
57
|
+
},
|
|
58
|
+
resultVariable: {
|
|
59
|
+
type: "string",
|
|
60
|
+
description: "Variable to store the processed result",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
WEB_SCRAPING: {
|
|
65
|
+
type: "webScraping",
|
|
66
|
+
description: "Scrape content from a webpage",
|
|
67
|
+
parameters: {
|
|
68
|
+
url: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "The URL of the webpage to scrape",
|
|
71
|
+
},
|
|
72
|
+
resultVariable: {
|
|
73
|
+
type: "string",
|
|
74
|
+
description: "Variable to store the scraped content",
|
|
75
|
+
},
|
|
76
|
+
directOutput: {
|
|
77
|
+
type: "boolean",
|
|
78
|
+
description:
|
|
79
|
+
"Whether to return the scraped content directly to the user without LLM processing",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
module.exports.FLOW_TYPES = FLOW_TYPES;
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const { v4: uuidv4 } = require("uuid");
|
|
4
|
+
const { FlowExecutor, FLOW_TYPES } = require("./executor");
|
|
5
|
+
const { normalizePath, isWithin } = require("../files");
|
|
6
|
+
const { safeJsonParse } = require("../http");
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {Object} LoadedFlow
|
|
10
|
+
* @property {string} name - The name of the flow
|
|
11
|
+
* @property {string} uuid - The UUID of the flow
|
|
12
|
+
* @property {Object} config - The flow configuration details
|
|
13
|
+
* @property {string} config.description - The description of the flow
|
|
14
|
+
* @property {Array<{type: string, config: Object, [key: string]: any}>} config.steps - The steps of the flow. Each step has at least a type and config
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class AgentFlows {
|
|
18
|
+
static flowsDir = process.env.STORAGE_DIR
|
|
19
|
+
? path.join(process.env.STORAGE_DIR, "plugins", "agent-flows")
|
|
20
|
+
: path.join(process.cwd(), "storage", "plugins", "agent-flows");
|
|
21
|
+
|
|
22
|
+
constructor() {}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Ensure flows directory exists
|
|
26
|
+
* @returns {Boolean} True if directory exists, false otherwise
|
|
27
|
+
*/
|
|
28
|
+
static createOrCheckFlowsDir() {
|
|
29
|
+
try {
|
|
30
|
+
if (fs.existsSync(AgentFlows.flowsDir)) return true;
|
|
31
|
+
fs.mkdirSync(AgentFlows.flowsDir, { recursive: true });
|
|
32
|
+
return true;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error("Failed to create flows directory:", error);
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Helper to get all flow files with their contents
|
|
41
|
+
* @returns {Object} Map of flow UUID to flow config
|
|
42
|
+
*/
|
|
43
|
+
static getAllFlows() {
|
|
44
|
+
AgentFlows.createOrCheckFlowsDir();
|
|
45
|
+
const files = fs.readdirSync(AgentFlows.flowsDir);
|
|
46
|
+
const flows = {};
|
|
47
|
+
|
|
48
|
+
for (const file of files) {
|
|
49
|
+
if (!file.endsWith(".json")) continue;
|
|
50
|
+
try {
|
|
51
|
+
const filePath = path.join(AgentFlows.flowsDir, file);
|
|
52
|
+
const content = fs.readFileSync(normalizePath(filePath), "utf8");
|
|
53
|
+
const config = JSON.parse(content);
|
|
54
|
+
const id = file.replace(".json", "");
|
|
55
|
+
flows[id] = config;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error(`Error reading flow file ${file}:`, error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return flows;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Load a flow configuration by UUID
|
|
66
|
+
* @param {string} uuid - The UUID of the flow to load
|
|
67
|
+
* @returns {LoadedFlow|null} Flow configuration or null if not found
|
|
68
|
+
*/
|
|
69
|
+
static loadFlow(uuid) {
|
|
70
|
+
try {
|
|
71
|
+
const flowJsonPath = normalizePath(
|
|
72
|
+
path.join(AgentFlows.flowsDir, `${uuid}.json`)
|
|
73
|
+
);
|
|
74
|
+
if (
|
|
75
|
+
!uuid ||
|
|
76
|
+
!fs.existsSync(flowJsonPath) ||
|
|
77
|
+
!isWithin(AgentFlows.flowsDir, flowJsonPath)
|
|
78
|
+
)
|
|
79
|
+
return null;
|
|
80
|
+
const flow = safeJsonParse(fs.readFileSync(flowJsonPath, "utf8"), null);
|
|
81
|
+
if (!flow) return null;
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
name: flow.name,
|
|
85
|
+
uuid,
|
|
86
|
+
config: flow,
|
|
87
|
+
};
|
|
88
|
+
} catch (error) {
|
|
89
|
+
console.error("Failed to load flow:", error);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Save a flow configuration
|
|
96
|
+
* @param {string} name - The name of the flow
|
|
97
|
+
* @param {Object} config - The flow configuration
|
|
98
|
+
* @param {string|null} uuid - Optional UUID for the flow
|
|
99
|
+
* @returns {Object} Result of the save operation
|
|
100
|
+
*/
|
|
101
|
+
static saveFlow(name, config, uuid = null) {
|
|
102
|
+
try {
|
|
103
|
+
AgentFlows.createOrCheckFlowsDir();
|
|
104
|
+
|
|
105
|
+
if (!uuid) uuid = uuidv4();
|
|
106
|
+
const normalizedUuid = normalizePath(`${uuid}.json`);
|
|
107
|
+
const filePath = path.join(AgentFlows.flowsDir, normalizedUuid);
|
|
108
|
+
if (!isWithin(AgentFlows.flowsDir, filePath)) return null;
|
|
109
|
+
|
|
110
|
+
// Prevent saving flows with unsupported blocks or importing
|
|
111
|
+
// flows with unsupported blocks (eg: file writing or code execution on Desktop importing to Docker)
|
|
112
|
+
const supportedFlowTypes = Object.values(FLOW_TYPES).map(
|
|
113
|
+
(definition) => definition.type
|
|
114
|
+
);
|
|
115
|
+
const supportsAllBlocks = config.steps.every((step) =>
|
|
116
|
+
supportedFlowTypes.includes(step.type)
|
|
117
|
+
);
|
|
118
|
+
if (!supportsAllBlocks)
|
|
119
|
+
throw new Error(
|
|
120
|
+
"This flow includes unsupported blocks. They may not be supported by your version of AnythingLLM or are not available on this platform."
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
fs.writeFileSync(filePath, JSON.stringify({ ...config, name }, null, 2));
|
|
124
|
+
return { success: true, uuid };
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error("Failed to save flow:", error);
|
|
127
|
+
return { success: false, error: error.message };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* List all available flows
|
|
133
|
+
* @returns {Array} Array of flow summaries
|
|
134
|
+
*/
|
|
135
|
+
static listFlows() {
|
|
136
|
+
try {
|
|
137
|
+
const flows = AgentFlows.getAllFlows();
|
|
138
|
+
return Object.entries(flows).map(([uuid, flow]) => ({
|
|
139
|
+
name: flow.name,
|
|
140
|
+
uuid,
|
|
141
|
+
description: flow.description,
|
|
142
|
+
active: flow.active !== false,
|
|
143
|
+
}));
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error("Failed to list flows:", error);
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Delete a flow by UUID
|
|
152
|
+
* @param {string} uuid - The UUID of the flow to delete
|
|
153
|
+
* @returns {Object} Result of the delete operation
|
|
154
|
+
*/
|
|
155
|
+
static deleteFlow(uuid) {
|
|
156
|
+
try {
|
|
157
|
+
const filePath = normalizePath(
|
|
158
|
+
path.join(AgentFlows.flowsDir, `${uuid}.json`)
|
|
159
|
+
);
|
|
160
|
+
if (!fs.existsSync(filePath) || !isWithin(AgentFlows.flowsDir, filePath))
|
|
161
|
+
throw new Error(`Flow ${uuid} not found`);
|
|
162
|
+
fs.rmSync(filePath);
|
|
163
|
+
return { success: true };
|
|
164
|
+
} catch (error) {
|
|
165
|
+
console.error("Failed to delete flow:", error);
|
|
166
|
+
return { success: false, error: error.message };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Execute a flow by UUID
|
|
172
|
+
* @param {string} uuid - The UUID of the flow to execute
|
|
173
|
+
* @param {Object} variables - Initial variables for the flow
|
|
174
|
+
* @param {Object} aibitat - The aibitat instance from the agent handler
|
|
175
|
+
* @returns {Promise<Object>} Result of flow execution
|
|
176
|
+
*/
|
|
177
|
+
static async executeFlow(uuid, variables = {}, aibitat = null) {
|
|
178
|
+
const flow = AgentFlows.loadFlow(uuid);
|
|
179
|
+
if (!flow) throw new Error(`Flow ${uuid} not found`);
|
|
180
|
+
const flowExecutor = new FlowExecutor();
|
|
181
|
+
return await flowExecutor.executeFlow(flow, variables, aibitat);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Get all active flows as plugins that can be loaded into the agent
|
|
186
|
+
* @returns {string[]} Array of flow names in @@flow_{uuid} format
|
|
187
|
+
*/
|
|
188
|
+
static activeFlowPlugins() {
|
|
189
|
+
const flows = AgentFlows.getAllFlows();
|
|
190
|
+
return Object.entries(flows)
|
|
191
|
+
.filter(([_, flow]) => flow.active !== false)
|
|
192
|
+
.map(([uuid]) => `@@flow_${uuid}`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Sanitize a flow name into a valid OpenAI-compatible tool name.
|
|
197
|
+
* Must match ^[a-zA-Z0-9_-]{1,64}$
|
|
198
|
+
* @param {string} flowName - The human-readable flow name
|
|
199
|
+
* @returns {string|null} Sanitized tool name, or null if empty after sanitization
|
|
200
|
+
*/
|
|
201
|
+
static sanitizeToolName(flowName) {
|
|
202
|
+
const sanitized = flowName
|
|
203
|
+
.toLowerCase()
|
|
204
|
+
.trim()
|
|
205
|
+
.replace(/\s+/g, "_")
|
|
206
|
+
.replace(/[^a-z0-9_-]/g, "")
|
|
207
|
+
.replace(/_+/g, "_")
|
|
208
|
+
.replace(/^[-_]+|[-_]+$/g, "");
|
|
209
|
+
if (!sanitized) return null;
|
|
210
|
+
return sanitized.slice(0, 64);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Load a flow plugin by its UUID
|
|
215
|
+
* @param {string} uuid - The UUID of the flow to load
|
|
216
|
+
* @returns {Object|null} Plugin configuration or null if not found
|
|
217
|
+
*/
|
|
218
|
+
static loadFlowPlugin(uuid) {
|
|
219
|
+
const flow = AgentFlows.loadFlow(uuid);
|
|
220
|
+
if (!flow) return null;
|
|
221
|
+
|
|
222
|
+
const startBlock = flow.config.steps?.find((s) => s.type === "start");
|
|
223
|
+
const variables = startBlock?.config?.variables || [];
|
|
224
|
+
const toolName = AgentFlows.sanitizeToolName(flow.name) || `flow_${uuid}`;
|
|
225
|
+
|
|
226
|
+
return {
|
|
227
|
+
name: toolName,
|
|
228
|
+
description: `Execute agent flow: ${flow.name}`,
|
|
229
|
+
plugin: (_runtimeArgs = {}) => ({
|
|
230
|
+
name: toolName,
|
|
231
|
+
description:
|
|
232
|
+
flow.config.description || `Execute agent flow: ${flow.name}`,
|
|
233
|
+
setup: (aibitat) => {
|
|
234
|
+
aibitat.function({
|
|
235
|
+
name: toolName,
|
|
236
|
+
description:
|
|
237
|
+
flow.config.description || `Execute agent flow: ${flow.name}`,
|
|
238
|
+
parameters: {
|
|
239
|
+
type: "object",
|
|
240
|
+
properties: variables.reduce((acc, v) => {
|
|
241
|
+
if (v.name) {
|
|
242
|
+
acc[v.name] = {
|
|
243
|
+
type: "string",
|
|
244
|
+
description:
|
|
245
|
+
v.description || `Value for variable ${v.name}`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return acc;
|
|
249
|
+
}, {}),
|
|
250
|
+
},
|
|
251
|
+
handler: async (args) => {
|
|
252
|
+
aibitat.introspect(`Executing flow: ${flow.name}`);
|
|
253
|
+
const result = await AgentFlows.executeFlow(uuid, args, aibitat);
|
|
254
|
+
if (!result.success) {
|
|
255
|
+
aibitat.introspect(
|
|
256
|
+
`Flow failed: ${result.results[0]?.error || "Unknown error"}`
|
|
257
|
+
);
|
|
258
|
+
return `Flow execution failed: ${result.results[0]?.error || "Unknown error"}`;
|
|
259
|
+
}
|
|
260
|
+
aibitat.introspect(`${flow.name} completed successfully`);
|
|
261
|
+
|
|
262
|
+
// If the flow result has directOutput, return it
|
|
263
|
+
// as the aibitat result so that no other processing is done
|
|
264
|
+
if (!!result.directOutput) {
|
|
265
|
+
aibitat.skipHandleExecution = true;
|
|
266
|
+
return AgentFlows.stringifyResult(result.directOutput);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return AgentFlows.stringifyResult(result);
|
|
270
|
+
},
|
|
271
|
+
});
|
|
272
|
+
},
|
|
273
|
+
}),
|
|
274
|
+
flowName: flow.name,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Stringify the result of a flow execution or return the input as is
|
|
280
|
+
* @param {Object|string} input - The result to stringify
|
|
281
|
+
* @returns {string} The stringified result
|
|
282
|
+
*/
|
|
283
|
+
static stringifyResult(input) {
|
|
284
|
+
return typeof input === "object" ? JSON.stringify(input) : String(input);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
module.exports.AgentFlows = AgentFlows;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class AIbitatError extends Error {}
|
|
2
|
+
|
|
3
|
+
class APIError extends AIbitatError {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The error when the AI provider returns an error that should be treated as something
|
|
11
|
+
* that should be retried.
|
|
12
|
+
*/
|
|
13
|
+
class RetryError extends APIError {}
|
|
14
|
+
|
|
15
|
+
module.exports = {
|
|
16
|
+
APIError,
|
|
17
|
+
RetryError,
|
|
18
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// You must execute this example from within the example folder.
|
|
2
|
+
const AIbitat = require("../index.js");
|
|
3
|
+
const { cli } = require("../plugins/cli.js");
|
|
4
|
+
const { NodeHtmlMarkdown } = require("node-html-markdown");
|
|
5
|
+
require("dotenv").config({ path: `../../../../.env.development` });
|
|
6
|
+
|
|
7
|
+
const Agent = {
|
|
8
|
+
HUMAN: "🧑",
|
|
9
|
+
AI: "🤖",
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const aibitat = new AIbitat({
|
|
13
|
+
provider: "openai",
|
|
14
|
+
model: "gpt-4o",
|
|
15
|
+
})
|
|
16
|
+
.use(cli.plugin())
|
|
17
|
+
.function({
|
|
18
|
+
name: "aibitat-documentations",
|
|
19
|
+
description: "The documentation about aibitat AI project.",
|
|
20
|
+
parameters: {
|
|
21
|
+
type: "object",
|
|
22
|
+
properties: {},
|
|
23
|
+
},
|
|
24
|
+
handler: async () => {
|
|
25
|
+
return await fetch(
|
|
26
|
+
"https://raw.githubusercontent.com/wladiston/aibitat/main/README.md"
|
|
27
|
+
)
|
|
28
|
+
.then((res) => res.text())
|
|
29
|
+
.then((html) => NodeHtmlMarkdown.translate(html))
|
|
30
|
+
.catch((e) => {
|
|
31
|
+
console.error(e.message);
|
|
32
|
+
return "FAILED TO FETCH";
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
.agent(Agent.HUMAN, {
|
|
37
|
+
interrupt: "ALWAYS",
|
|
38
|
+
role: "You are a human assistant.",
|
|
39
|
+
})
|
|
40
|
+
.agent(Agent.AI, {
|
|
41
|
+
functions: ["aibitat-documentations"],
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
async function main() {
|
|
45
|
+
if (!process.env.OPEN_AI_KEY)
|
|
46
|
+
throw new Error(
|
|
47
|
+
"This example requires a valid OPEN_AI_KEY in the env.development file"
|
|
48
|
+
);
|
|
49
|
+
await aibitat.start({
|
|
50
|
+
from: Agent.HUMAN,
|
|
51
|
+
to: Agent.AI,
|
|
52
|
+
content: `Please, talk about the documentation of AIbitat.`,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
main();
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const AIbitat = require("../index.js");
|
|
2
|
+
const {
|
|
3
|
+
cli,
|
|
4
|
+
webBrowsing,
|
|
5
|
+
fileHistory,
|
|
6
|
+
webScraping,
|
|
7
|
+
} = require("../plugins/index.js");
|
|
8
|
+
require("dotenv").config({ path: `../../../../.env.development` });
|
|
9
|
+
|
|
10
|
+
const aibitat = new AIbitat({
|
|
11
|
+
model: "gpt-4o",
|
|
12
|
+
})
|
|
13
|
+
.use(cli.plugin())
|
|
14
|
+
.use(fileHistory.plugin())
|
|
15
|
+
.use(webBrowsing.plugin()) // Does not have introspect so will fail.
|
|
16
|
+
.use(webScraping.plugin())
|
|
17
|
+
.agent("researcher", {
|
|
18
|
+
role: `You are a Researcher. Conduct thorough research to gather all necessary information about the topic
|
|
19
|
+
you are writing about. Collect data, facts, and statistics. Analyze competitor blogs for insights.
|
|
20
|
+
Provide accurate and up-to-date information that supports the blog post's content to @copywriter.`,
|
|
21
|
+
functions: ["web-browsing"],
|
|
22
|
+
})
|
|
23
|
+
.agent("copywriter", {
|
|
24
|
+
role: `You are a Copywriter. Interpret the draft as general idea and write the full blog post using markdown,
|
|
25
|
+
ensuring it is tailored to the target audience's preferences, interests, and demographics. Apply genre-specific
|
|
26
|
+
writing techniques relevant to the author's genre. Add code examples when needed. Code must be written in
|
|
27
|
+
Typescript. Always mention references. Revisit and edit the post for clarity, coherence, and
|
|
28
|
+
correctness based on the feedback provided. Ask for feedbacks to the channel when you are done`,
|
|
29
|
+
})
|
|
30
|
+
.agent("pm", {
|
|
31
|
+
role: `You are a Project Manager. Coordinate the project, ensure tasks are completed on time and within budget.
|
|
32
|
+
Communicate with team members and stakeholders.`,
|
|
33
|
+
interrupt: "ALWAYS",
|
|
34
|
+
})
|
|
35
|
+
.channel("content-team", ["researcher", "copywriter", "pm"]);
|
|
36
|
+
|
|
37
|
+
async function main() {
|
|
38
|
+
if (!process.env.OPEN_AI_KEY)
|
|
39
|
+
throw new Error(
|
|
40
|
+
"This example requires a valid OPEN_AI_KEY in the env.development file"
|
|
41
|
+
);
|
|
42
|
+
await aibitat.start({
|
|
43
|
+
from: "pm",
|
|
44
|
+
to: "content-team",
|
|
45
|
+
content: `We have got this draft of the new blog post, let us start working on it.
|
|
46
|
+
--- BEGIN DRAFT OF POST ---
|
|
47
|
+
|
|
48
|
+
Maui is a beautiful island in the state of Hawaii and is world-renowned for its whale watching season. Here are 2 additional things to do in Maui, HI:
|
|
49
|
+
|
|
50
|
+
--- END DRAFT OF POST ---
|
|
51
|
+
`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
main();
|