gitextract_4dq_zncw/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── .prettierrc.cjs ├── CONTRIBUTING.md ├── LICENCE ├── PRIVACY.md ├── README.md ├── bun.lockb ├── docs/ │ ├── .vitepress/ │ │ └── config.mts │ ├── browser-support.md │ ├── connection-issue.md │ ├── extensions-causing-issue-other-websites.md │ ├── features/ │ │ ├── internet-search.md │ │ ├── knowledge-base.md │ │ ├── mcp.md │ │ ├── ollama.md │ │ ├── other.md │ │ ├── page-share.md │ │ └── prompts.md │ ├── index.md │ ├── markdown-examples.md │ ├── package.json │ ├── postcss.config.js │ ├── privacy.md │ ├── prompt.md │ ├── providers/ │ │ ├── llamacpp.md │ │ ├── lmstudio.md │ │ ├── ollama.md │ │ └── openai.md │ ├── shortcuts.md │ └── sidebar/ │ ├── chat-with-website.md │ ├── copilot.md │ ├── index.md │ └── vision.md ├── package.json ├── page-share.md ├── postcss.config.js ├── src/ │ ├── assets/ │ │ ├── locale/ │ │ │ ├── ar/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── da/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── de/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── en/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── es/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── fa/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── fr/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── it/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── ja-JP/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── ko/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── ml/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── no/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── pt-BR/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── ru/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── sv/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── uk/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ ├── zh/ │ │ │ │ ├── chrome.json │ │ │ │ ├── common.json │ │ │ │ ├── knowledge.json │ │ │ │ ├── openai.json │ │ │ │ ├── option.json │ │ │ │ ├── playground.json │ │ │ │ ├── settings.json │ │ │ │ └── sidepanel.json │ │ │ └── zh-TW/ │ │ │ ├── chrome.json │ │ │ ├── common.json │ │ │ ├── knowledge.json │ │ │ ├── openai.json │ │ │ ├── option.json │ │ │ ├── playground.json │ │ │ ├── settings.json │ │ │ └── sidepanel.json │ │ └── tailwind.css │ ├── chain/ │ │ ├── chat-with-website.ts │ │ └── chat-with-x.ts │ ├── components/ │ │ ├── Common/ │ │ │ ├── Beta.tsx │ │ │ ├── CodeBlock.tsx │ │ │ ├── DocumentCard.tsx │ │ │ ├── ImageExport.tsx │ │ │ ├── Markdown.tsx │ │ │ ├── McpServerToggle.tsx │ │ │ ├── Mermaid.tsx │ │ │ ├── Message/ │ │ │ │ └── ReasoningSection.tsx │ │ │ ├── ModelSelect.tsx │ │ │ ├── PageAssistLoader.tsx │ │ │ ├── PageAssistProvider.tsx │ │ │ ├── Playground/ │ │ │ │ ├── ActionInfo.tsx │ │ │ │ ├── DocumentChip.tsx │ │ │ │ ├── DocumentFile.tsx │ │ │ │ ├── EditMessageForm.tsx │ │ │ │ ├── GenerationInfo.tsx │ │ │ │ ├── HumanMessge.tsx │ │ │ │ ├── McpInvocationBlock.tsx │ │ │ │ ├── Message.tsx │ │ │ │ ├── MessageSource.tsx │ │ │ │ ├── MessageSourcePopup.tsx │ │ │ │ ├── PlaygroundUserMessage.tsx │ │ │ │ └── message-groups.ts │ │ │ ├── PromptSelect.tsx │ │ │ ├── ProviderIcon.tsx │ │ │ ├── QueuedMessagesList.tsx │ │ │ ├── SaveButton.tsx │ │ │ ├── Settings/ │ │ │ │ ├── AdvanceOllamaSettings.tsx │ │ │ │ └── CurrentChatModelSettings.tsx │ │ │ ├── ShareModal.tsx │ │ │ └── TableBlock.tsx │ │ ├── Icons/ │ │ │ ├── AliBaBaCloud.tsx │ │ │ ├── AnthropicIcon.tsx │ │ │ ├── BigModelZhipuIcon.tsx │ │ │ ├── CSVIcon.tsx │ │ │ ├── CanopyWaveIcon.tsx │ │ │ ├── ChatSettings.tsx │ │ │ ├── ChutesIcon.tsx │ │ │ ├── DeepSeek.tsx │ │ │ ├── Fireworks.tsx │ │ │ ├── GeminiIcon.tsx │ │ │ ├── Groq.tsx │ │ │ ├── HuggingFaceIcon.tsx │ │ │ ├── InfinigenceAI.tsx │ │ │ ├── LMStudio.tsx │ │ │ ├── LlamacppLogo.tsx │ │ │ ├── Llamafile.tsx │ │ │ ├── MCPIcon.tsx │ │ │ ├── MiniMaxIcon.tsx │ │ │ ├── Mistral.tsx │ │ │ ├── Moonshot.tsx │ │ │ ├── Novita.tsx │ │ │ ├── Ollama.tsx │ │ │ ├── OpenAI.tsx │ │ │ ├── OpenRouter.tsx │ │ │ ├── PDFIcon.tsx │ │ │ ├── SiliconFlow.tsx │ │ │ ├── TXTIcon.tsx │ │ │ ├── TencentCloud.tsx │ │ │ ├── Togther.tsx │ │ │ ├── VercelIcon.tsx │ │ │ ├── VllmLogo.tsx │ │ │ ├── VolcEngine.tsx │ │ │ └── XAI.tsx │ │ ├── Layouts/ │ │ │ ├── Header.tsx │ │ │ ├── Layout.tsx │ │ │ ├── LinkComponent.tsx │ │ │ ├── MoreOptions.tsx │ │ │ ├── NewChat.tsx │ │ │ ├── SettingsOptionLayout.tsx │ │ │ └── SidePanelSettingsLayout.tsx │ │ ├── Option/ │ │ │ ├── Knowledge/ │ │ │ │ ├── AddKnowledge.tsx │ │ │ │ ├── EditKnowledgeSettings.tsx │ │ │ │ ├── KnowledgeIcon.tsx │ │ │ │ ├── KnowledgeSelect.tsx │ │ │ │ ├── SelectedKnowledge.tsx │ │ │ │ ├── UpdateKnowledge.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── utils/ │ │ │ │ └── unsupported-types.ts │ │ │ ├── Models/ │ │ │ │ ├── AddCustomModelModal.tsx │ │ │ │ ├── AddOllamaModelModal.tsx │ │ │ │ ├── AddUpdateModelSettings.tsx │ │ │ │ ├── AddUpdateOAIModelSettings.tsx │ │ │ │ ├── CancelPullingModel.tsx │ │ │ │ ├── CustomModelsTable.tsx │ │ │ │ ├── ModelNicknameModal.tsx │ │ │ │ ├── OllamaModelsTable.tsx │ │ │ │ └── index.tsx │ │ │ ├── Playground/ │ │ │ │ ├── DocumentChip.tsx │ │ │ │ ├── MentionHighlighter.tsx │ │ │ │ ├── MentionsDropdown.tsx │ │ │ │ ├── Playground.tsx │ │ │ │ ├── PlaygroundChat.tsx │ │ │ │ ├── PlaygroundEmpty.tsx │ │ │ │ ├── PlaygroundFile.tsx │ │ │ │ ├── PlaygroundForm.tsx │ │ │ │ ├── PlaygroundNewChat.tsx │ │ │ │ └── PlaygroundSettings.tsx │ │ │ ├── Prompt/ │ │ │ │ └── index.tsx │ │ │ ├── Settings/ │ │ │ │ ├── about.tsx │ │ │ │ ├── chrome.tsx │ │ │ │ ├── general-settings.tsx │ │ │ │ ├── mcp.tsx │ │ │ │ ├── memory.tsx │ │ │ │ ├── model-settings.tsx │ │ │ │ ├── ollama.tsx │ │ │ │ ├── openai-fetch-model.tsx │ │ │ │ ├── openai.tsx │ │ │ │ ├── prompt.tsx │ │ │ │ ├── rag.tsx │ │ │ │ ├── search-mode.tsx │ │ │ │ ├── sidepanel-rag.tsx │ │ │ │ ├── sst-settings.tsx │ │ │ │ ├── system-settings.tsx │ │ │ │ ├── title.tsx │ │ │ │ └── tts-mode.tsx │ │ │ ├── Share/ │ │ │ │ └── index.tsx │ │ │ └── Sidebar.tsx │ │ ├── Select/ │ │ │ ├── LoadingIndicator.tsx │ │ │ └── index.tsx │ │ ├── ShortcutConfig.tsx │ │ └── Sidepanel/ │ │ ├── Chat/ │ │ │ ├── body.tsx │ │ │ ├── empty.tsx │ │ │ ├── form.tsx │ │ │ └── header.tsx │ │ └── Settings/ │ │ ├── body.tsx │ │ └── header.tsx │ ├── context/ │ │ ├── FontSizeProvider.tsx │ │ └── index.tsx │ ├── data/ │ │ └── ocr-language.ts │ ├── db/ │ │ ├── dexie/ │ │ │ ├── branch.ts │ │ │ ├── chat.ts │ │ │ ├── firefox-sync.ts │ │ │ ├── helpers.ts │ │ │ ├── knowledge.ts │ │ │ ├── mcp.ts │ │ │ ├── memory.ts │ │ │ ├── migration.ts │ │ │ ├── modelState.ts │ │ │ ├── models.ts │ │ │ ├── nickname.ts │ │ │ ├── openai.ts │ │ │ ├── providerState.ts │ │ │ ├── schema.ts │ │ │ ├── types.ts │ │ │ └── vector.ts │ │ ├── document.ts │ │ ├── index.ts │ │ ├── knowledge.ts │ │ ├── models.ts │ │ ├── nickname.ts │ │ ├── openai.ts │ │ └── vector.ts │ ├── entries/ │ │ ├── background.ts │ │ ├── hf-pull.content.ts │ │ ├── ollama-pull.content.ts │ │ ├── options/ │ │ │ ├── App.tsx │ │ │ ├── index.html │ │ │ └── main.tsx │ │ ├── sidepanel/ │ │ │ ├── App.tsx │ │ │ ├── index.html │ │ │ └── main.tsx │ │ └── youtube-summarize.content.ts │ ├── entries-firefox/ │ │ ├── background.ts │ │ ├── hf-pull.content.ts │ │ ├── ollama-pull.content.ts │ │ ├── options/ │ │ │ ├── App.tsx │ │ │ ├── index.html │ │ │ └── main.tsx │ │ ├── sidepanel/ │ │ │ ├── App.tsx │ │ │ ├── index.html │ │ │ └── main.tsx │ │ └── youtube-summarize.content.ts │ ├── hooks/ │ │ ├── chat-helper/ │ │ │ └── index.ts │ │ ├── chat-modes/ │ │ │ ├── continueChatMode.ts │ │ │ ├── documentChatMode.ts │ │ │ ├── normalChatMode.ts │ │ │ ├── ragMode.ts │ │ │ ├── searchChatMode.ts │ │ │ └── tabChatMode.ts │ │ ├── handlers/ │ │ │ └── messageHandlers.ts │ │ ├── keyboard/ │ │ │ ├── index.ts │ │ │ ├── useKeyboardShortcuts.ts │ │ │ └── useShortcutConfig.ts │ │ ├── useBackgroundMessage.tsx │ │ ├── useDarkmode.tsx │ │ ├── useDebounce.tsx │ │ ├── useDynamicTextareaSize.tsx │ │ ├── useI18n.tsx │ │ ├── useLocal.tsx │ │ ├── useMessage.tsx │ │ ├── useMessageOption.tsx │ │ ├── useMessageQueue.ts │ │ ├── useMigration.tsx │ │ ├── useSmartScroll.tsx │ │ ├── useSmartScroll2.tsx │ │ ├── useSpeechRecognition.tsx │ │ ├── useTTS.tsx │ │ ├── useTabMentions.ts │ │ └── utils/ │ │ └── messageHelpers.ts │ ├── i18n/ │ │ ├── index.ts │ │ ├── lang/ │ │ │ ├── ar.ts │ │ │ ├── da.ts │ │ │ ├── de.ts │ │ │ ├── en.ts │ │ │ ├── es.ts │ │ │ ├── fa.ts │ │ │ ├── fr.ts │ │ │ ├── it.ts │ │ │ ├── ja.ts │ │ │ ├── ko.ts │ │ │ ├── ml.ts │ │ │ ├── no.ts │ │ │ ├── pt.ts │ │ │ ├── ru.ts │ │ │ ├── sv.ts │ │ │ ├── uk.ts │ │ │ ├── zh-TW.ts │ │ │ └── zh.ts │ │ └── support-language.ts │ ├── libs/ │ │ ├── PAMemoryVectorStore.ts │ │ ├── PageAssistVectorStore.ts │ │ ├── byte-formater.ts │ │ ├── class-name.tsx │ │ ├── clean-url.ts │ │ ├── export-import.ts │ │ ├── fetcher.ts │ │ ├── get-html.ts │ │ ├── get-screenshot.ts │ │ ├── get-tab-contents.ts │ │ ├── mcp/ │ │ │ ├── client.ts │ │ │ ├── errors.ts │ │ │ ├── http-client.ts │ │ │ ├── normal-chat.ts │ │ │ ├── oauth-flow.ts │ │ │ ├── oauth.ts │ │ │ ├── remote-tools.ts │ │ │ ├── tool-schema.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── model-utils.ts │ │ ├── openai.ts │ │ ├── pdf.ts │ │ ├── pdfjs.ts │ │ ├── process-knowledge.ts │ │ ├── process-source.ts │ │ ├── reasoning.ts │ │ ├── runtime.ts │ │ ├── send-notification.ts │ │ └── to-base64.ts │ ├── loader/ │ │ ├── csv.ts │ │ ├── docx.ts │ │ ├── html.ts │ │ ├── pdf-url.ts │ │ ├── pdf.ts │ │ └── txt.ts │ ├── models/ │ │ ├── ChatChromeAi.ts │ │ ├── ChatGoogleAI.ts │ │ ├── ChatOllama.ts │ │ ├── ChatTypes.ts │ │ ├── CustomAIMessageChunk.ts │ │ ├── CustomChatAnthropic.ts │ │ ├── CustomChatOpenAI.ts │ │ ├── OAIEmbedding.ts │ │ ├── OllamaEmbedding.ts │ │ ├── embedding.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── utils/ │ │ ├── chrome.ts │ │ ├── ollama.ts │ │ └── openai.ts │ ├── parser/ │ │ ├── amazon.ts │ │ ├── default.ts │ │ ├── google-docs.ts │ │ ├── google-sheets.ts │ │ ├── reader.ts │ │ ├── twitter.ts │ │ └── wiki.ts │ ├── public/ │ │ ├── _locales/ │ │ │ ├── da/ │ │ │ │ └── messages.json │ │ │ ├── de/ │ │ │ │ └── messages.json │ │ │ ├── en/ │ │ │ │ └── messages.json │ │ │ ├── es/ │ │ │ │ └── messages.json │ │ │ ├── fa/ │ │ │ │ └── messages.json │ │ │ ├── fr/ │ │ │ │ └── messages.json │ │ │ ├── it/ │ │ │ │ └── messages.json │ │ │ ├── ja/ │ │ │ │ └── messages.json │ │ │ ├── ml/ │ │ │ │ └── messages.json │ │ │ ├── no/ │ │ │ │ └── messages.json │ │ │ ├── ru/ │ │ │ │ └── messages.json │ │ │ ├── sv/ │ │ │ │ └── messages.json │ │ │ ├── zh_CN/ │ │ │ │ └── messages.json │ │ │ └── zh_TW/ │ │ │ └── messages.json │ │ └── ocr/ │ │ ├── tesseract-core-simd.js │ │ └── tesseract-core-simd.wasm │ ├── queue/ │ │ └── index.ts │ ├── routes/ │ │ ├── chrome-route.tsx │ │ ├── chrome.tsx │ │ ├── firefox-route.tsx │ │ ├── firefox.tsx │ │ ├── option-index.tsx │ │ ├── option-rag.tsx │ │ ├── option-settings-about.tsx │ │ ├── option-settings-chrome.tsx │ │ ├── option-settings-knowledge.tsx │ │ ├── option-settings-mcp.tsx │ │ ├── option-settings-model.tsx │ │ ├── option-settings-openai.tsx │ │ ├── option-settings-prompt.tsx │ │ ├── option-settings-share.tsx │ │ ├── option-settings.tsx │ │ ├── options-settings-ollama.tsx │ │ ├── sidepanel-chat.tsx │ │ ├── sidepanel-settings-model.tsx │ │ ├── sidepanel-settings-openai.tsx │ │ └── sidepanel-settings.tsx │ ├── services/ │ │ ├── action.ts │ │ ├── app.ts │ │ ├── application.ts │ │ ├── chrome.ts │ │ ├── elevenlabs.ts │ │ ├── kb.ts │ │ ├── model-settings.ts │ │ ├── ocr.ts │ │ ├── ollama.ts │ │ ├── openai-tts.ts │ │ ├── search.ts │ │ ├── title.ts │ │ └── tts.ts │ ├── store/ │ │ ├── index.tsx │ │ ├── model.tsx │ │ ├── option.tsx │ │ └── webui.tsx │ ├── types/ │ │ ├── index.ts │ │ └── message.ts │ ├── utils/ │ │ ├── action.ts │ │ ├── chrome-download.ts │ │ ├── chrome.ts │ │ ├── clean-headers.ts │ │ ├── clean.ts │ │ ├── clipboard.ts │ │ ├── color.ts │ │ ├── compress.ts │ │ ├── constant.ts │ │ ├── ff-error.ts │ │ ├── file-processor.ts │ │ ├── format-file-size.ts │ │ ├── generate-history.ts │ │ ├── google-domains.ts │ │ ├── human-message.tsx │ │ ├── humanize-milliseconds.ts │ │ ├── is-private-mode.ts │ │ ├── is-youtube.ts │ │ ├── key-down.tsx │ │ ├── langauge-extension.ts │ │ ├── latex.ts │ │ ├── markdown-to-ssml.ts │ │ ├── markdown-to-text.ts │ │ ├── marked/ │ │ │ └── katex.tsx │ │ ├── math-delimiter.ts │ │ ├── memory-embeddings.ts │ │ ├── model.ts │ │ ├── oai-api-providers.ts │ │ ├── ocr.ts │ │ ├── ollama-pull-inject.ts │ │ ├── pull-ollama.ts │ │ ├── rerank.ts │ │ ├── search-provider.ts │ │ ├── select-variable.ts │ │ ├── supported-languages.ts │ │ ├── system-message.ts │ │ ├── text-splitter.ts │ │ ├── to-source.ts │ │ ├── tts.ts │ │ ├── update-page-title.ts │ │ └── verify-page-share.ts │ └── web/ │ ├── search-engines/ │ │ ├── baidu.ts │ │ ├── bing.ts │ │ ├── brave-api.ts │ │ ├── brave.ts │ │ ├── duckduckgo.ts │ │ ├── exa.ts │ │ ├── firecrawl.ts │ │ ├── google.ts │ │ ├── kagi-api.ts │ │ ├── ollama.ts │ │ ├── perplexity-api.ts │ │ ├── searxng.ts │ │ ├── sogou.ts │ │ ├── startpage.ts │ │ ├── stract.ts │ │ └── tavily-api.ts │ ├── web.ts │ └── website/ │ └── index.ts ├── tailwind.config.js ├── tsconfig.json └── wxt.config.ts