gitextract_jmk8mdb7/ ├── .gitignore ├── Backend/ │ ├── .gitignore │ ├── ensure_dependencies.py │ ├── main.py │ ├── requirements.txt │ ├── src/ │ │ ├── authentication/ │ │ │ ├── api_key_authorization.py │ │ │ └── token.py │ │ ├── data/ │ │ │ ├── dataFetch/ │ │ │ │ ├── webcrawler.py │ │ │ │ └── youtube.py │ │ │ ├── dataIntake/ │ │ │ │ ├── csvFallbackSplitting.py │ │ │ │ ├── fileTypes/ │ │ │ │ │ └── loadX.py │ │ │ │ ├── getHtmlFiles.py │ │ │ │ ├── loadFile.py │ │ │ │ └── textSplitting.py │ │ │ └── database/ │ │ │ ├── checkAPIKey.py │ │ │ ├── db.py │ │ │ ├── getCollectionInfo.py │ │ │ └── getLLMApiKey.py │ │ ├── endpoint/ │ │ │ ├── api.py │ │ │ ├── deleteStore.py │ │ │ ├── devApiCall.py │ │ │ ├── embed.py │ │ │ ├── models.py │ │ │ ├── ragQuery.py │ │ │ ├── transcribe.py │ │ │ ├── vectorQuery.py │ │ │ └── webcrawl.py │ │ ├── llms/ │ │ │ ├── llmQuery.py │ │ │ ├── messages/ │ │ │ │ └── formMessages.py │ │ │ └── providers/ │ │ │ ├── local.py │ │ │ ├── ollama.py │ │ │ ├── ooba.py │ │ │ └── openai.py │ │ ├── models/ │ │ │ ├── __init__.py │ │ │ ├── exceptions.py │ │ │ ├── loaders/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── exllama.py │ │ │ │ ├── hqq.py │ │ │ │ ├── llamaccphf.py │ │ │ │ ├── llamacpp.py │ │ │ │ ├── tensorrt.py │ │ │ │ └── transformers.py │ │ │ ├── manager.py │ │ │ ├── streamer.py │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ ├── detect_type.py │ │ │ ├── device.py │ │ │ ├── download.py │ │ │ └── platform.py │ │ ├── vectorstorage/ │ │ │ ├── embeddings.py │ │ │ ├── helpers/ │ │ │ │ └── sanitizeCollectionName.py │ │ │ ├── init_store.py │ │ │ └── vectorstore.py │ │ └── voice/ │ │ └── voice_to_text.py │ └── tests/ │ ├── testApi.py │ └── test_voice.py ├── Frontend/ │ ├── .gitignore │ ├── build/ │ │ └── icons/ │ │ └── icon.icns │ ├── components.json │ ├── e2e/ │ │ └── app.spec.ts │ ├── electron-builder.json │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── playwright.config.ts │ ├── postcss.config.js │ ├── src/ │ │ ├── app/ │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── main.tsx │ │ │ └── vite-env.d.ts │ │ ├── components/ │ │ │ ├── AppAlert/ │ │ │ │ └── SettingsAlert.tsx │ │ │ ├── Authentication/ │ │ │ │ ├── CreateAccount.tsx │ │ │ │ └── SelectAccount.tsx │ │ │ ├── Chat/ │ │ │ │ ├── Chat.tsx │ │ │ │ └── ChatComponents/ │ │ │ │ ├── ChatHeader.tsx │ │ │ │ ├── ChatInput.tsx │ │ │ │ ├── ChatMessage.tsx │ │ │ │ ├── ChatMessagesArea.tsx │ │ │ │ ├── LoadingIndicator.tsx │ │ │ │ ├── NewConvoWelcome.tsx │ │ │ │ ├── ReasoningMessage.tsx │ │ │ │ ├── StreamingMessage.tsx │ │ │ │ ├── StreamingReasoningMessage.tsx │ │ │ │ ├── SyntaxHightlightedCode.tsx │ │ │ │ └── suggestions.tsx │ │ │ ├── CollectionModals/ │ │ │ │ ├── CollectionComponents/ │ │ │ │ │ ├── AddLibrary.tsx │ │ │ │ │ ├── DataStoreSelect.tsx │ │ │ │ │ ├── FIlesInCollection.tsx │ │ │ │ │ ├── Ingest.tsx │ │ │ │ │ ├── IngestProgress.tsx │ │ │ │ │ ├── IngestTabs/ │ │ │ │ │ │ ├── FileIngestTab.tsx │ │ │ │ │ │ └── LinkIngestTab.tsx │ │ │ │ │ └── ingestTypes.tsx │ │ │ │ └── LibraryModal.tsx │ │ │ ├── FileExplorer/ │ │ │ │ └── FileExplorer.tsx │ │ │ ├── Header/ │ │ │ │ ├── Header.tsx │ │ │ │ └── HeaderComponents/ │ │ │ │ ├── MainWindowControl.tsx │ │ │ │ ├── Search.tsx │ │ │ │ ├── SettingsDialog.tsx │ │ │ │ ├── ToolsDialog.tsx │ │ │ │ └── WinLinuxControls.tsx │ │ │ ├── History/ │ │ │ │ └── History.tsx │ │ │ ├── SettingsModal/ │ │ │ │ ├── SettingsComponents/ │ │ │ │ │ ├── ChatSettings.tsx │ │ │ │ │ ├── DevIntegration.tsx │ │ │ │ │ ├── LLMModels/ │ │ │ │ │ │ ├── AddLocalModel.tsx │ │ │ │ │ │ ├── AddOllamaModel.tsx │ │ │ │ │ │ ├── AzureOpenAI.tsx │ │ │ │ │ │ ├── CustomLLM.tsx │ │ │ │ │ │ ├── External.tsx │ │ │ │ │ │ ├── ExternalOllama.tsx │ │ │ │ │ │ ├── LocalLLM.tsx │ │ │ │ │ │ ├── Ollama.tsx │ │ │ │ │ │ └── Openrouter.tsx │ │ │ │ │ ├── LLMPanel.tsx │ │ │ │ │ └── providers/ │ │ │ │ │ ├── SvgIcon.tsx │ │ │ │ │ ├── defaultsProviderModels.tsx │ │ │ │ │ └── providerIcons.tsx │ │ │ │ └── SettingsModal.tsx │ │ │ ├── Tools/ │ │ │ │ ├── ToolComponents/ │ │ │ │ │ ├── AddTools.tsx │ │ │ │ │ └── EnableTools.tsx │ │ │ │ └── Tools.tsx │ │ │ └── ui/ │ │ │ ├── alert.tsx │ │ │ ├── avatar.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── buttonVariants.tsx │ │ │ ├── card.tsx │ │ │ ├── command.tsx │ │ │ ├── dialog.tsx │ │ │ ├── form.tsx │ │ │ ├── icons.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── menubar.tsx │ │ │ ├── popover.tsx │ │ │ ├── progress.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── scroll-area.tsx │ │ │ ├── select.tsx │ │ │ ├── separator.tsx │ │ │ ├── sheet.tsx │ │ │ ├── slider.tsx │ │ │ ├── switch.tsx │ │ │ ├── tabs.tsx │ │ │ ├── textarea.tsx │ │ │ ├── toast.tsx │ │ │ ├── toaster.tsx │ │ │ └── tooltip.tsx │ │ ├── context/ │ │ │ ├── ChatInputContext.tsx │ │ │ ├── LibraryContext.tsx │ │ │ ├── SysSettingsContext.tsx │ │ │ ├── UserClientProviders.tsx │ │ │ ├── UserContext.tsx │ │ │ ├── ViewContext.tsx │ │ │ ├── useChatInput.tsx │ │ │ ├── useLibrary.tsx │ │ │ ├── useSysSettings.tsx │ │ │ ├── useUser.tsx │ │ │ └── useView.tsx │ │ ├── data/ │ │ │ ├── models.ts │ │ │ └── sysSpecs.ts │ │ ├── electron/ │ │ │ ├── authentication/ │ │ │ │ ├── devApi.ts │ │ │ │ ├── secret.ts │ │ │ │ └── token.ts │ │ │ ├── crawl/ │ │ │ │ ├── cancelWebcrawl.ts │ │ │ │ └── webcrawl.ts │ │ │ ├── db.ts │ │ │ ├── embedding/ │ │ │ │ ├── cancelEmbed.ts │ │ │ │ └── vectorstoreQuery.ts │ │ │ ├── handlers/ │ │ │ │ ├── azureHandlers.ts │ │ │ │ ├── chatHandlers.ts │ │ │ │ ├── closeEventHandler.ts │ │ │ │ ├── collectionHandlers.ts │ │ │ │ ├── customApiHandlers.ts │ │ │ │ ├── dbHandlers.ts │ │ │ │ ├── fileHandlers.ts │ │ │ │ ├── handlers.test.ts │ │ │ │ ├── ipcHandlers.ts │ │ │ │ ├── localModelHandlers.ts │ │ │ │ ├── menuHandlers.ts │ │ │ │ ├── ollamaHandlers.ts │ │ │ │ ├── openRouterHandlers.ts │ │ │ │ └── voiceHandlers.ts │ │ │ ├── helpers/ │ │ │ │ └── spawnAsync.ts │ │ │ ├── llms/ │ │ │ │ ├── agentLayer/ │ │ │ │ │ ├── anthropicAgent.ts │ │ │ │ │ ├── geminiAgent.ts │ │ │ │ │ ├── ollamaAgent.ts │ │ │ │ │ ├── openAiAgent.ts │ │ │ │ │ └── tools/ │ │ │ │ │ └── websearch.ts │ │ │ │ ├── apiCheckProviders/ │ │ │ │ │ ├── anthropic.ts │ │ │ │ │ ├── deepseek.ts │ │ │ │ │ ├── gemini.ts │ │ │ │ │ ├── openai.ts │ │ │ │ │ ├── openrouter.ts │ │ │ │ │ └── xai.ts │ │ │ │ ├── chatCompletion.ts │ │ │ │ ├── generateTitle.ts │ │ │ │ ├── keyValidation.ts │ │ │ │ ├── llmHelpers/ │ │ │ │ │ ├── addAssistantMessage.ts │ │ │ │ │ ├── addUserMessage.ts │ │ │ │ │ ├── collectionData.ts │ │ │ │ │ ├── countMessageTokens.ts │ │ │ │ │ ├── getUserPrompt.ts │ │ │ │ │ ├── ifNewConvo.ts │ │ │ │ │ ├── prepMessages.ts │ │ │ │ │ ├── providerInit.ts │ │ │ │ │ ├── providersMap.ts │ │ │ │ │ ├── returnReasoningPrompt.ts │ │ │ │ │ ├── returnSystemPrompt.ts │ │ │ │ │ ├── sendMessageChunk.ts │ │ │ │ │ └── truncateMessages.ts │ │ │ │ ├── llms.ts │ │ │ │ ├── providers/ │ │ │ │ │ ├── anthropic.ts │ │ │ │ │ ├── azureOpenAI.ts │ │ │ │ │ ├── customEndpoint.ts │ │ │ │ │ ├── deepseek.ts │ │ │ │ │ ├── externalOllama.ts │ │ │ │ │ ├── gemini.ts │ │ │ │ │ ├── localModel.ts │ │ │ │ │ ├── ollama.ts │ │ │ │ │ ├── openai.ts │ │ │ │ │ ├── openrouter.ts │ │ │ │ │ └── xai.ts │ │ │ │ └── reasoningLayer/ │ │ │ │ └── openAiChainOfThought.ts │ │ │ ├── loadingWindow.ts │ │ │ ├── localLLMs/ │ │ │ │ ├── getDirModels.ts │ │ │ │ ├── loadModel.ts │ │ │ │ ├── modelInfo.ts │ │ │ │ └── unloadModel.ts │ │ │ ├── main.ts │ │ │ ├── mainWindow.test.ts │ │ │ ├── mainWindow.ts │ │ │ ├── menu.ts │ │ │ ├── ollama/ │ │ │ │ ├── checkOllama.ts │ │ │ │ ├── fetchLocalModels.ts │ │ │ │ ├── getRunningModels.ts │ │ │ │ ├── isOllamaRunning.ts │ │ │ │ ├── ollamaPath.ts │ │ │ │ ├── pullModel.ts │ │ │ │ ├── runOllama.ts │ │ │ │ ├── unloadAllModels.ts │ │ │ │ └── unloadModel.ts │ │ │ ├── pathResolver.ts │ │ │ ├── preload.cts │ │ │ ├── python/ │ │ │ │ ├── ensurePythonAndVenv.ts │ │ │ │ ├── extractFromAsar.ts │ │ │ │ ├── getLinuxPackageManager.ts │ │ │ │ ├── ifFedora.ts │ │ │ │ ├── installDependencies.ts │ │ │ │ ├── installLlamaCpp.ts │ │ │ │ ├── killProcessOnPort.ts │ │ │ │ ├── python.test.ts │ │ │ │ ├── runWithPrivileges.ts │ │ │ │ └── startAndStopPython.ts │ │ │ ├── resourceManager.ts │ │ │ ├── specs/ │ │ │ │ └── systemSpecs.ts │ │ │ ├── storage/ │ │ │ │ ├── deleteCollection.ts │ │ │ │ ├── getFiles.ts │ │ │ │ ├── getUserFiles.ts │ │ │ │ ├── newFile.ts │ │ │ │ ├── openCollectionFolder.ts │ │ │ │ ├── removeFileorFolder.ts │ │ │ │ ├── renameFile.ts │ │ │ │ └── websiteFetch.ts │ │ │ ├── tray.test.ts │ │ │ ├── tray.ts │ │ │ ├── tsconfig.json │ │ │ ├── util.ts │ │ │ ├── voice/ │ │ │ │ └── audioTranscription.ts │ │ │ └── youtube/ │ │ │ └── youtubeIngest.ts │ │ ├── hooks/ │ │ │ ├── use-toast.ts │ │ │ ├── useAppInitialization.tsx │ │ │ ├── useChatLogic.ts │ │ │ ├── useChatManagement.ts │ │ │ ├── useConversationManagement.ts │ │ │ ├── useModelManagement.ts │ │ │ ├── useStatistics.tsx │ │ │ └── useUIState.ts │ │ ├── lib/ │ │ │ ├── shikiHightlight.ts │ │ │ └── utils.ts │ │ ├── loading.html │ │ ├── types/ │ │ │ └── contextTypes/ │ │ │ ├── LibraryContextTypes.ts │ │ │ ├── SystemSettingsTypes.ts │ │ │ ├── UserContextType.ts │ │ │ └── UserViewTypes.ts │ │ └── utils/ │ │ ├── chatUtilts.ts │ │ └── webAudioRecorder.ts │ ├── tailwind.config.js │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── types.d.ts │ ├── vite.config.d.ts │ ├── vite.config.js │ └── vite.config.ts ├── LICENSE └── README.md