diff --git a/.gitignore b/.gitignore index cf3d5c9..0ea0e49 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,4 @@ keys.json # WXT .wxt # WebStorm -.idea +.idea \ No newline at end of file diff --git a/src/components/Layouts/Header.tsx b/src/components/Layouts/Header.tsx index 4f4da36..cfc3ed4 100644 --- a/src/components/Layouts/Header.tsx +++ b/src/components/Layouts/Header.tsx @@ -120,20 +120,30 @@ export const Header: React.FC = ({ {"/"}
- { - setSelectedModel(e.value) - localStorage.setItem("selectedModel", e.value) + setSelectedModel(e) + localStorage.setItem("selectedModel", e) }} - isLoading={isModelsLoading} + filterOption={(input, option) => { + //@ts-ignore + return ( + option?.label?.props["data-title"] + ?.toLowerCase() + ?.indexOf(input.toLowerCase()) >= 0 + ) + }} + showSearch + loading={isModelsLoading} options={models?.map((model) => ({ label: ( = ({ ), value: model.model }))} - onRefresh={() => { - refetch() - }} + size="large" + // onRefresh={() => { + // refetch() + // }} />
diff --git a/src/components/Layouts/MoreOptions.tsx b/src/components/Layouts/MoreOptions.tsx index 68d8f30..a54c6f8 100644 --- a/src/components/Layouts/MoreOptions.tsx +++ b/src/components/Layouts/MoreOptions.tsx @@ -122,7 +122,6 @@ const generateChatImage = async (messages: Message[]) => { }) canvas.height = totalHeight - console.log(totalHeight) ctx.fillStyle = "#ffffff" ctx.fillRect(0, 0, canvas.width, canvas.height) diff --git a/src/components/Option/Knowledge/index.tsx b/src/components/Option/Knowledge/index.tsx index 7cca2a5..a649895 100644 --- a/src/components/Option/Knowledge/index.tsx +++ b/src/components/Option/Knowledge/index.tsx @@ -18,7 +18,7 @@ export const KnowledgeSettings = () => { const { data, status } = useQuery({ queryKey: ["fetchAllKnowledge"], queryFn: () => getAllKnowledge(), - refetchInterval: 1000 + refetchInterval: 1000, }) const { mutate: deleteKnowledgeMutation, isPending: isDeleting } = diff --git a/src/components/Option/Playground/Playground.tsx b/src/components/Option/Playground/Playground.tsx index e0eefdb..4dee398 100644 --- a/src/components/Option/Playground/Playground.tsx +++ b/src/components/Option/Playground/Playground.tsx @@ -104,7 +104,6 @@ export const Playground = () => { const lastUsedPrompt = await getLastUsedChatSystemPrompt( recentChat.history.id ) - console.log("lastUsedPrompt", lastUsedPrompt) if (lastUsedPrompt) { if (lastUsedPrompt.prompt_id) { const prompt = await getPromptById(lastUsedPrompt.prompt_id) diff --git a/src/components/Option/Settings/general-settings.tsx b/src/components/Option/Settings/general-settings.tsx index d000614..e78bdf9 100644 --- a/src/components/Option/Settings/general-settings.tsx +++ b/src/components/Option/Settings/general-settings.tsx @@ -291,7 +291,7 @@ export const GeneralSettings = () => { await browser.storage.local.clear() await browser.storage.session.clear() } catch (e) { - console.log("Error clearing storage:", e) + console.error("Error clearing storage:", e) } } }} diff --git a/src/components/Option/Settings/tts-mode.tsx b/src/components/Option/Settings/tts-mode.tsx index 2de6be3..26c7bb8 100644 --- a/src/components/Option/Settings/tts-mode.tsx +++ b/src/components/Option/Settings/tts-mode.tsx @@ -46,7 +46,7 @@ export const TTSModeSettings = ({ hideBorder }: { hideBorder?: boolean }) => { return { voices, models } } } catch (e) { - console.log(e) + console.error(e) message.error("Error fetching ElevenLabs data") } return null diff --git a/src/db/index.ts b/src/db/index.ts index 70c7733..2fa87d8 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -373,7 +373,6 @@ export const deleteChatForEdit = async (history_id: string, index: number) => { const db = new PageAssitDatabase() const chatHistory = (await db.getChatHistory(history_id)).reverse() const previousHistory = chatHistory.slice(0, index + 1) - // console.log(previousHistory) await db.db.set({ [history_id]: previousHistory.reverse() }) } diff --git a/src/db/knowledge.ts b/src/db/knowledge.ts index 4e5188f..5b73945 100644 --- a/src/db/knowledge.ts +++ b/src/db/knowledge.ts @@ -163,8 +163,8 @@ export const getAllKnowledge = async (status?: string) => { if (status) { return data - .filter((d) => d.db_type === "knowledge") - .filter((d) => d.status === status) + .filter((d) => d?.db_type === "knowledge") + .filter((d) => d?.status === status) .map((d) => { d.source.forEach((s) => { delete s.content @@ -175,9 +175,9 @@ export const getAllKnowledge = async (status?: string) => { } return data - .filter((d) => d.db_type === "knowledge") + .filter((d) => d?.db_type === "knowledge") .map((d) => { - d.source.forEach((s) => { + d?.source.forEach((s) => { delete s.content }) return d diff --git a/src/db/models.ts b/src/db/models.ts index 928beb9..58ef8c3 100644 --- a/src/db/models.ts +++ b/src/db/models.ts @@ -293,7 +293,7 @@ export const getModelInfo = async (id: string) => { export const getAllCustomModels = async () => { const db = new ModelDb() const models = (await db.getAll()).filter( - (model) => model.db_type === "openai_model" + (model) => model?.db_type === "openai_model" ) const modelsWithProvider = await Promise.all( models.map(async (model) => { @@ -324,7 +324,7 @@ export const deleteAllModelsByProviderId = async (provider_id: string) => { export const isLookupExist = async (lookup: string) => { const db = new ModelDb() const models = await db.getAll() - const model = models.find((model) => model.lookup === lookup) + const model = models.find((model) => model?.lookup === lookup) return model ? true : false } @@ -394,85 +394,90 @@ export const dynamicFetchLlamafile = async ({ export const ollamaFormatAllCustomModels = async ( modelType: "all" | "chat" | "embedding" = "all" ) => { - const [allModles, allProviders] = await Promise.all([ - getAllCustomModels(), - getAllOpenAIConfig() - ]) - - const lmstudioProviders = allProviders.filter( - (provider) => provider.provider === "lmstudio" - ) - - const llamafileProviders = allProviders.filter( - (provider) => provider.provider === "llamafile" - ) - - const ollamaProviders = allProviders.filter( - (provider) => provider.provider === "ollama2" - ) - - const lmModelsPromises = lmstudioProviders.map((provider) => - dynamicFetchLMStudio({ - baseUrl: provider.baseUrl, - providerId: provider.id - }) - ) - - const llamafileModelsPromises = llamafileProviders.map((provider) => - dynamicFetchLlamafile({ - baseUrl: provider.baseUrl, - providerId: provider.id - }) - ) - - const ollamaModelsPromises = ollamaProviders.map((provider) => - dynamicFetchOllama2({ - baseUrl: provider.baseUrl, - providerId: provider.id - })) - - const lmModelsFetch = await Promise.all(lmModelsPromises) - - const llamafileModelsFetch = await Promise.all(llamafileModelsPromises) - - const ollamaModelsFetch = await Promise.all(ollamaModelsPromises) - - const lmModels = lmModelsFetch.flat() - - const llamafileModels = llamafileModelsFetch.flat() - - const ollama2Models = ollamaModelsFetch.flat() - - // merge allModels and lmModels - const allModlesWithLMStudio = [ - ...(modelType !== "all" - ? allModles.filter((model) => model.model_type === modelType) - : allModles), - ...lmModels, - ...llamafileModels, - ...ollama2Models - ] - - const ollamaModels = allModlesWithLMStudio.map((model) => { - return { - name: model.name, - model: model.id, - modified_at: "", - provider: - allProviders.find((provider) => provider.id === model.provider_id) - ?.provider || "custom", - size: 0, - digest: "", - details: { - parent_model: "", - format: "", - family: "", - families: [], - parameter_size: "", - quantization_level: "" + try { + const [allModles, allProviders] = await Promise.all([ + getAllCustomModels(), + getAllOpenAIConfig() + ]) + + const lmstudioProviders = allProviders.filter( + (provider) => provider.provider === "lmstudio" + ) + + const llamafileProviders = allProviders.filter( + (provider) => provider.provider === "llamafile" + ) + + const ollamaProviders = allProviders.filter( + (provider) => provider.provider === "ollama2" + ) + + const lmModelsPromises = lmstudioProviders.map((provider) => + dynamicFetchLMStudio({ + baseUrl: provider.baseUrl, + providerId: provider.id + }) + ) + + const llamafileModelsPromises = llamafileProviders.map((provider) => + dynamicFetchLlamafile({ + baseUrl: provider.baseUrl, + providerId: provider.id + }) + ) + + const ollamaModelsPromises = ollamaProviders.map((provider) => + dynamicFetchOllama2({ + baseUrl: provider.baseUrl, + providerId: provider.id + })) + + const lmModelsFetch = await Promise.all(lmModelsPromises) + + const llamafileModelsFetch = await Promise.all(llamafileModelsPromises) + + const ollamaModelsFetch = await Promise.all(ollamaModelsPromises) + + const lmModels = lmModelsFetch.flat() + + const llamafileModels = llamafileModelsFetch.flat() + + const ollama2Models = ollamaModelsFetch.flat() + + // merge allModels and lmModels + const allModlesWithLMStudio = [ + ...(modelType !== "all" + ? allModles.filter((model) => model.model_type === modelType) + : allModles), + ...lmModels, + ...llamafileModels, + ...ollama2Models + ] + + const ollamaModels = allModlesWithLMStudio.map((model) => { + return { + name: model.name, + model: model.id, + modified_at: "", + provider: + allProviders.find((provider) => provider.id === model.provider_id) + ?.provider || "custom", + size: 0, + digest: "", + details: { + parent_model: "", + format: "", + family: "", + families: [], + parameter_size: "", + quantization_level: "" + } } - } - }) - - return ollamaModels + }) + + return ollamaModels + } catch(e) { + console.error(e) + return [] + } } diff --git a/src/db/openai.ts b/src/db/openai.ts index 3fba1b8..8a82a10 100644 --- a/src/db/openai.ts +++ b/src/db/openai.ts @@ -114,7 +114,7 @@ export const addOpenAICofig = async ({ name, baseUrl, apiKey, provider }: { name export const getAllOpenAIConfig = async () => { const openaiDb = new OpenAIModelDb() const configs = await openaiDb.getAll() - return configs.filter(config => config.db_type === "openai") + return configs.filter(config => config?.db_type === "openai") } export const updateOpenAIConfig = async ({ id, name, baseUrl, apiKey }: { id: string, name: string, baseUrl: string, apiKey: string }) => { diff --git a/src/entries-firefox/background.ts b/src/entries-firefox/background.ts index 9a9bcd5..8803bf2 100644 --- a/src/entries-firefox/background.ts +++ b/src/entries-firefox/background.ts @@ -41,7 +41,6 @@ export default defineBackground({ }) } else { browser.browserAction.onClicked.addListener((tab) => { - console.log("browser.browserAction.onClicked.addListener") browser.tabs.create({ url: browser.runtime.getURL("/options.html") }) }) } diff --git a/src/entries/background.ts b/src/entries/background.ts index 9a9bcd5..8803bf2 100644 --- a/src/entries/background.ts +++ b/src/entries/background.ts @@ -41,7 +41,6 @@ export default defineBackground({ }) } else { browser.browserAction.onClicked.addListener((tab) => { - console.log("browser.browserAction.onClicked.addListener") browser.tabs.create({ url: browser.runtime.getURL("/options.html") }) }) } diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index c9ec2d5..4559295 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -402,7 +402,7 @@ export const useMessage = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } @@ -618,11 +618,7 @@ export const useMessage = () => { const applicationChatHistory = [] const data = await getScreenshotFromCurrentTab() - console.log( - data?.success - ? `[PageAssist] Screenshot is taken` - : `[PageAssist] Screenshot is not taken` - ) + const visionImage = data?.screenshot || "" if (visionImage === "") { @@ -673,7 +669,7 @@ export const useMessage = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } @@ -943,7 +939,7 @@ export const useMessage = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } @@ -1272,7 +1268,7 @@ export const useMessage = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } @@ -1521,7 +1517,7 @@ export const useMessage = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } diff --git a/src/hooks/useMessageOption.tsx b/src/hooks/useMessageOption.tsx index 45411ab..8653776 100644 --- a/src/hooks/useMessageOption.tsx +++ b/src/hooks/useMessageOption.tsx @@ -321,7 +321,7 @@ export const useMessageOption = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } @@ -637,7 +637,7 @@ export const useMessageOption = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } @@ -972,7 +972,7 @@ export const useMessageOption = () => { try { generationInfo = output?.generations?.[0][0]?.generationInfo } catch (e) { - console.log("handleLLMEnd error", e) + console.error("handleLLMEnd error", e) } } } diff --git a/src/libs/PageAssistVectorStore.ts b/src/libs/PageAssistVectorStore.ts index d52425e..33a9b47 100644 --- a/src/libs/PageAssistVectorStore.ts +++ b/src/libs/PageAssistVectorStore.ts @@ -85,7 +85,6 @@ export class PageAssistVectorStore extends VectorStore { metadata: documents[idx].metadata, file_id: this.file_id })) - console.log(`vector:${this.knownledge_id}`) await insertVector(`vector:${this.knownledge_id}`, memoryVectors) } @@ -118,7 +117,6 @@ export class PageAssistVectorStore extends VectorStore { const data = await getVector(`vector:${this.knownledge_id}`) const pgVector = [...data.vectors] const filteredMemoryVectors = pgVector.filter(filterFunction) - console.log(filteredMemoryVectors) const searches = filteredMemoryVectors .map((vector, index) => ({ similarity: this.similarity(query, vector.embedding), @@ -126,7 +124,6 @@ export class PageAssistVectorStore extends VectorStore { })) .sort((a, b) => (a.similarity > b.similarity ? -1 : 0)) .slice(0, k) - console.log(searches) const result: [Document, number][] = searches.map((search) => [ new Document({ metadata: filteredMemoryVectors[search.index].metadata, diff --git a/src/libs/get-html.ts b/src/libs/get-html.ts index 29bbd9e..c1aa304 100644 --- a/src/libs/get-html.ts +++ b/src/libs/get-html.ts @@ -52,7 +52,7 @@ export const getDataFromCurrentTab = async () => { resolve(data[0].result) } } catch (e) { - console.log("error", e) + console.error("error", e) // this is a weird method but it works if (import.meta.env.BROWSER === "firefox") { // all I need is to get the pdf url but somehow diff --git a/src/libs/openai.ts b/src/libs/openai.ts index dad8d72..cf5b697 100644 --- a/src/libs/openai.ts +++ b/src/libs/openai.ts @@ -41,9 +41,9 @@ export const getAllOpenAIModels = async (baseUrl: string, apiKey?: string) => { return data.data } catch (e) { if (e instanceof DOMException && e.name === 'AbortError') { - console.log('Request timed out') + console.error('Request timed out') } else { - console.log(e) + console.error(e) } return [] } diff --git a/src/libs/reasoning.ts b/src/libs/reasoning.ts index 62ecbf3..cfe41c6 100644 --- a/src/libs/reasoning.ts +++ b/src/libs/reasoning.ts @@ -47,7 +47,7 @@ export function parseReasoning(text: string): { type: 'reasoning' | 'text', cont return result } catch (e) { - console.log(`Error parsing reasoning: ${e}`) + console.error(`Error parsing reasoning: ${e}`) return [ { type: 'text', diff --git a/src/libs/send-notification.ts b/src/libs/send-notification.ts index 86a3f9c..662afb5 100644 --- a/src/libs/send-notification.ts +++ b/src/libs/send-notification.ts @@ -7,14 +7,12 @@ export const sendNotification = async (title: string, message: string) => { "sendNotificationAfterIndexing" ) if (sendNotificationAfterIndexing) { - console.log("Sending notification") browser.notifications.create({ type: "basic", iconUrl: browser.runtime.getURL("/icon/128.png"), title, message }) - console.log("Notification sent") } } catch (error) { console.error(error) diff --git a/src/loader/html.ts b/src/loader/html.ts index 5eeb168..62a1deb 100644 --- a/src/loader/html.ts +++ b/src/loader/html.ts @@ -89,7 +89,6 @@ export class PageAssistHtmlLoader await urlRewriteRuntime(this.url, "web") let text = ""; if (isWikipedia(this.url)) { - console.log("Wikipedia URL detected") const fetchHTML = await fetch(this.url) text = parseWikipedia(await fetchHTML.text()) } else { diff --git a/src/models/ChatChromeAi.ts b/src/models/ChatChromeAi.ts index e0b48fe..34f247b 100644 --- a/src/models/ChatChromeAi.ts +++ b/src/models/ChatChromeAi.ts @@ -108,7 +108,7 @@ export class ChatChromeAI extends SimpleChatModel { */ destroy() { if (!this.session) { - return console.log("No session found. Returning.") + return console.error("No session found. Returning.") } this.session.destroy() } diff --git a/src/models/index.ts b/src/models/index.ts index 752f114..d76dd15 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -88,7 +88,6 @@ export const pageAssistModel = async ({ } }) as any } - console.log('useMlock', useMlock) return new ChatOllama({ baseUrl, keepAlive, diff --git a/src/services/ollama.ts b/src/services/ollama.ts index f5e3f71..c448d6d 100644 --- a/src/services/ollama.ts +++ b/src/services/ollama.ts @@ -184,7 +184,6 @@ export const fetchChatModels = async ({ try { const models = await getAllModels({ returnEmpty }) - const chatModels = models ?.filter((model) => { return ( diff --git a/src/services/title.ts b/src/services/title.ts index ac4b8e8..3a01054 100644 --- a/src/services/title.ts +++ b/src/services/title.ts @@ -3,6 +3,7 @@ import { Storage } from "@plasmohq/storage" import { getOllamaURL } from "./ollama" import { cleanUrl } from "@/libs/clean-url" import { HumanMessage } from "langchain/schema" +import { removeReasoning } from "@/libs/reasoning" const storage = new Storage() // this prompt is copied from the OpenWebUI codebase @@ -64,9 +65,9 @@ export const generateTitle = async (model: string, query: string, fallBackTitle: }) ]) - return title.content.toString() + return removeReasoning(title.content.toString()) } catch (error) { - console.log(`Error generating title: ${error}`) + console.error(`Error generating title: ${error}`) return fallBackTitle } } \ No newline at end of file diff --git a/src/utils/rerank.ts b/src/utils/rerank.ts index e24f7c8..58f1215 100644 --- a/src/utils/rerank.ts +++ b/src/utils/rerank.ts @@ -34,7 +34,6 @@ export const rerankDocs = async ({ } }) - console.log("similarity", similarity) const sortedDocs = similarity .sort((a, b) => b.similarity - a.similarity) .filter((sim) => sim.similarity > 0.5) diff --git a/src/utils/text-splitter.ts b/src/utils/text-splitter.ts index 67a0d7d..808fa75 100644 --- a/src/utils/text-splitter.ts +++ b/src/utils/text-splitter.ts @@ -17,7 +17,6 @@ export const getPageAssistTextSplitter = async () => { switch (splittingStrategy) { case "CharacterTextSplitter": - console.log("Using CharacterTextSplitter") const splittingSeparator = await defaultSsplttingSeparator() const processedSeparator = splittingSeparator .replace(/\\n/g, "\n") diff --git a/src/web/search-engines/brave.ts b/src/web/search-engines/brave.ts index 71b7670..0e512c0 100644 --- a/src/web/search-engines/brave.ts +++ b/src/web/search-engines/brave.ts @@ -42,7 +42,6 @@ export const localBraveSearch = async (query: string) => { return { title, link, content } }).filter((result) => result.link && result.title && result.content) - console.log(searchResults) return searchResults } diff --git a/wxt.config.ts b/wxt.config.ts index 743c833..f323b7c 100644 --- a/wxt.config.ts +++ b/wxt.config.ts @@ -91,7 +91,7 @@ export default defineConfig({ { extension_pages: "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';" - } : undefined, + } : "script-src 'self' 'wasm-unsafe-eval' blob:; object-src 'self'; worker-src 'self' blob:;", permissions: process.env.TARGET === "firefox" ? firefoxMV2Permissions