From e94edf5c89cb9046f82a0656dd15bc059ff03d6c Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sun, 12 May 2024 23:54:48 +0530 Subject: [PATCH] chore: Update URL rewrite logic for runtime --- src/assets/locale/en/playground.json | 3 ++- src/assets/locale/en/settings.json | 11 +++++++++ .../Common/AdvanceOllamaSettings.tsx | 10 ++++---- .../Option/Playground/PlaygroundEmpty.tsx | 20 +++++++++++++++- src/components/Option/Settings/ollama.tsx | 23 +++++++++++++++---- src/components/Sidepanel/Chat/empty.tsx | 19 ++++++++++++++- src/libs/runtime.ts | 9 +++++--- src/loader/html.ts | 7 +----- src/services/app.ts | 3 --- src/web/search-engines/duckduckgo.ts | 2 +- src/web/search-engines/google.ts | 3 ++- src/web/search-engines/sogou.ts | 5 +++- 12 files changed, 88 insertions(+), 27 deletions(-) diff --git a/src/assets/locale/en/playground.json b/src/assets/locale/en/playground.json index 1d0794d..5df01bb 100644 --- a/src/assets/locale/en/playground.json +++ b/src/assets/locale/en/playground.json @@ -2,7 +2,8 @@ "ollamaState": { "searching": "Searching for Your Ollama 🦙", "running": "Ollama is running 🦙", - "notRunning": "Unable to connect to Ollama 🦙" + "notRunning": "Unable to connect to Ollama 🦙", + "connectionError": "It seems like you are having a connection error. Please refer to this documentation for troubleshooting." }, "formError": { "noModel": "Please select a model", diff --git a/src/assets/locale/en/settings.json b/src/assets/locale/en/settings.json index 589f557..acfcfa5 100644 --- a/src/assets/locale/en/settings.json +++ b/src/assets/locale/en/settings.json @@ -245,6 +245,17 @@ "webSearchFollowUpPromptHelp": "Do not remove `{chat_history}` and `{question}` from the prompt.", "webSearchFollowUpPromptError": "Please input your Web Search Follow Up Prompt!", "webSearchFollowUpPromptPlaceholder": "Your Web Search Follow Up Prompt" + }, + "advanced": { + "label": "Advance Ollama URL Configuration", + "urlRewriteEnabled": { + "label": "Enable or Disable Custom Origin URL" + }, + "rewriteUrl": { + "label": "Custom Origin URL", + "placeholder": "Enter Custom Origin URL" + }, + "help": "If you have connection issues with Ollama on Page Assist, you can configure a custom origin URL. To learn more about the configuration, click here." } } }, diff --git a/src/components/Common/AdvanceOllamaSettings.tsx b/src/components/Common/AdvanceOllamaSettings.tsx index 0291f16..0027fb2 100644 --- a/src/components/Common/AdvanceOllamaSettings.tsx +++ b/src/components/Common/AdvanceOllamaSettings.tsx @@ -5,7 +5,7 @@ import { useTranslation } from "react-i18next" export const AdvanceOllamaSettings = () => { const [urlRewriteEnabled, setUrlRewriteEnabled] = useStorage( "urlRewriteEnabled", - true + false ) const [rewriteUrl, setRewriteUrl] = useStorage( @@ -18,7 +18,7 @@ export const AdvanceOllamaSettings = () => {
- {t("generalSettings.settings.advanced.urlRewriteEnabled.label")} + {t("ollamaSettings.settings.advanced.urlRewriteEnabled.label")}
{
- {t("generalSettings.settings.advanced.urlRewriteEnabled.label")} + {t("ollamaSettings.settings.advanced.rewriteUrl.label")}
setRewriteUrl(e.target.value)} /> diff --git a/src/components/Option/Playground/PlaygroundEmpty.tsx b/src/components/Option/Playground/PlaygroundEmpty.tsx index 6636605..7fb94ab 100644 --- a/src/components/Option/Playground/PlaygroundEmpty.tsx +++ b/src/components/Option/Playground/PlaygroundEmpty.tsx @@ -1,7 +1,8 @@ +import { cleanUrl } from "@/libs/clean-url" import { useQuery } from "@tanstack/react-query" import { RotateCcw } from "lucide-react" import { useEffect, useState } from "react" -import { useTranslation } from "react-i18next" +import { Trans, useTranslation } from "react-i18next" import { getOllamaURL, isOllamaRunning, @@ -79,6 +80,23 @@ export const PlaygroundEmpty = () => { {t("common:retry")} + + {ollamaURL && + cleanUrl(ollamaURL) !== "http://127.0.0.1:11434" && ( +

+ + ) + }} + /> +

+ )}
) ) : null} diff --git a/src/components/Option/Settings/ollama.tsx b/src/components/Option/Settings/ollama.tsx index 534b8a0..8e24a42 100644 --- a/src/components/Option/Settings/ollama.tsx +++ b/src/components/Option/Settings/ollama.tsx @@ -12,7 +12,7 @@ import { setOllamaURL as saveOllamaURL } from "~/services/ollama" import { SettingPrompt } from "./prompt" -import { useTranslation } from "react-i18next" +import { Trans, useTranslation } from "react-i18next" import { useStorage } from "@plasmohq/storage/hook" import { AdvanceOllamaSettings } from "@/components/Common/AdvanceOllamaSettings" @@ -87,9 +87,24 @@ export const SettingsOllama = () => { { key: "1", label: ( -

- {t("ollamaSettings.settings.advanced.label")} -

+
+

+ {t("ollamaSettings.settings.advanced.label")} +

+

+ + ) + }} + /> +

+
), children: } diff --git a/src/components/Sidepanel/Chat/empty.tsx b/src/components/Sidepanel/Chat/empty.tsx index 499e320..000d4e3 100644 --- a/src/components/Sidepanel/Chat/empty.tsx +++ b/src/components/Sidepanel/Chat/empty.tsx @@ -1,8 +1,9 @@ +import { cleanUrl } from "@/libs/clean-url" import { useQuery, useQueryClient } from "@tanstack/react-query" import { Select } from "antd" import { RotateCcw } from "lucide-react" import { useEffect, useState } from "react" -import { useTranslation } from "react-i18next" +import { Trans, useTranslation } from "react-i18next" import { useMessage } from "~/hooks/useMessage" import { getAllModels, @@ -91,6 +92,22 @@ export const EmptySidePanel = () => { {t("common:retry")} + {ollamaURL && + cleanUrl(ollamaURL) !== "http://127.0.0.1:11434" && ( +

+ + ) + }} + /> +

+ )}
) ) : null} diff --git a/src/libs/runtime.ts b/src/libs/runtime.ts index cf4aa96..dc54c4a 100644 --- a/src/libs/runtime.ts +++ b/src/libs/runtime.ts @@ -1,13 +1,16 @@ import { getAdvancedOllamaSettings } from "@/services/app" -export const urlRewriteRuntime = async function (domain: string) { +export const urlRewriteRuntime = async function ( + domain: string, + type = "ollama" +) { if (browser.runtime && browser.runtime.id) { const { isEnableRewriteUrl, rewriteUrl } = await getAdvancedOllamaSettings() if (import.meta.env.BROWSER === "chrome") { const url = new URL(domain) const domains = [url.hostname] let origin = `${url.protocol}//${url.hostname}` - if (!isEnableRewriteUrl && rewriteUrl) { + if (isEnableRewriteUrl && rewriteUrl && type === "ollama") { origin = rewriteUrl } const rules = [ @@ -42,7 +45,7 @@ export const urlRewriteRuntime = async function (domain: string) { browser.webRequest.onBeforeSendHeaders.addListener( (details) => { let origin = `${url.protocol}//${url.hostname}` - if (!isEnableRewriteUrl && rewriteUrl) { + if (isEnableRewriteUrl && rewriteUrl && type === "ollama") { origin = rewriteUrl } for (let i = 0; i < details.requestHeaders.length; i++) { diff --git a/src/loader/html.ts b/src/loader/html.ts index 37a07f1..786c60e 100644 --- a/src/loader/html.ts +++ b/src/loader/html.ts @@ -102,7 +102,7 @@ export class PageAssistHtmlLoader } ] } - await urlRewriteRuntime(this.url) + await urlRewriteRuntime(this.url, "web") const fetchHTML = await fetch(this.url) let html = await fetchHTML.text() @@ -111,11 +111,6 @@ export class PageAssistHtmlLoader html = parseWikipedia(await fetchHTML.text()) } - // else if (isTwitter(this.url)) { - // console.log("Twitter URL detected") - // html = parseTweet(await fetchHTML.text(), this.url) - // } - const htmlCompiler = compile({ wordwrap: false, selectors: [ diff --git a/src/services/app.ts b/src/services/app.ts index 3b0f671..8f0cc66 100644 --- a/src/services/app.ts +++ b/src/services/app.ts @@ -5,9 +5,6 @@ const DEFAULT_URL_REWRITE_URL = "http://127.0.0.1:11434" export const isUrlRewriteEnabled = async () => { const enabled = await storage.get("urlRewriteEnabled") - if (typeof enabled === "undefined") { - return true - } return enabled } export const setUrlRewriteEnabled = async (enabled: boolean) => { diff --git a/src/web/search-engines/duckduckgo.ts b/src/web/search-engines/duckduckgo.ts index f9258f5..374ce60 100644 --- a/src/web/search-engines/duckduckgo.ts +++ b/src/web/search-engines/duckduckgo.ts @@ -18,7 +18,7 @@ import { RecursiveCharacterTextSplitter } from "langchain/text_splitter" import { MemoryVectorStore } from "langchain/vectorstores/memory" export const localDuckDuckGoSearch = async (query: string) => { - await urlRewriteRuntime(cleanUrl("https://html.duckduckgo.com/html/?q=" + query)) + await urlRewriteRuntime(cleanUrl("https://html.duckduckgo.com/html/?q=" + query), "duckduckgo") const abortController = new AbortController() setTimeout(() => abortController.abort(), 10000) diff --git a/src/web/search-engines/google.ts b/src/web/search-engines/google.ts index 7828546..8f0a16a 100644 --- a/src/web/search-engines/google.ts +++ b/src/web/search-engines/google.ts @@ -19,7 +19,8 @@ import { export const localGoogleSearch = async (query: string) => { await urlRewriteRuntime( - cleanUrl("https://www.google.com/search?hl=en&q=" + query) + cleanUrl("https://www.google.com/search?hl=en&q=" + query), + "google" ) const abortController = new AbortController() setTimeout(() => abortController.abort(), 10000) diff --git a/src/web/search-engines/sogou.ts b/src/web/search-engines/sogou.ts index 14fcf86..274d03f 100644 --- a/src/web/search-engines/sogou.ts +++ b/src/web/search-engines/sogou.ts @@ -25,7 +25,10 @@ const getCorrectTargeUrl = async (url: string) => { return matches?.[1] || "" } export const localSogouSearch = async (query: string) => { - await urlRewriteRuntime(cleanUrl("https://www.sogou.com/web?query=" + query)) + await urlRewriteRuntime( + cleanUrl("https://www.sogou.com/web?query=" + query), + "sogou" + ) const abortController = new AbortController()