From dcca76a6bc5147d1ef21d5683b3fbfa153e94d83 Mon Sep 17 00:00:00 2001 From: Alberto Cubeddu Date: Sun, 8 Dec 2024 18:37:46 +1100 Subject: [PATCH] 0.0.25 (#46) * 0.0.25 * fix --- README.md | 239 +++--- options/LlmSettings.tsx | 713 ++++++++++-------- options/promptFactory/ProviderInstruction.tsx | 91 +-- .../components/InstructionSnippet.tsx | 77 +- package.json | 4 +- pnpm-lock.yaml | 219 +++--- 6 files changed, 721 insertions(+), 622 deletions(-) diff --git a/README.md b/README.md index 75e973a..9b9a02b 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Join an exclusive group of up to 100 early adopters and be among the first to ex [link-chrome]: https://chromewebstore.google.com/detail/bahjnakiionbepnlbogdkojcehaeefnp "Version published on Chrome Web Store" -- [][link-chrome] also compatible with [Edge][link-chrome] [Opera][link-chrome] [Brave][link-chrome] +- [][link-chrome] also compatible with [Edge][link-chrome] [Opera][link-chrome] [Brave][link-chrome] ## 📸 Screenshots @@ -53,11 +53,11 @@ Use my affiliation code when you sign-up on VAPI: https://vapi.ai/?aff=extension ## ✨ Features -- **Prompt Factory**: Effortlessly Tailor Every Prompt to Your Needs with Our Standard Installation. -- **Prompt Factory**: Choose the Functionality for Every Prompt: From Copy-Pasting to Opening a New Sidebar. -- **Seamless Integration**: Effortlessly access any LLM model directly from your favorite website. -- **Secure Storage**: Your API key is securely stored in the browser's local storage, ensuring it never leaves your device. -- **[Beta] Mixture of Agents**: Experience the innovative Mixture Of Agents feature. +- **Prompt Factory**: Effortlessly Tailor Every Prompt to Your Needs with Our Standard Installation. +- **Prompt Factory**: Choose the Functionality for Every Prompt: From Copy-Pasting to Opening a New Sidebar. +- **Seamless Integration**: Effortlessly access any LLM model directly from your favorite website. +- **Secure Storage**: Your API key is securely stored in the browser's local storage, ensuring it never leaves your device. +- **[Beta] Mixture of Agents**: Experience the innovative Mixture Of Agents feature. ## Why @@ -119,38 +119,38 @@ docker run -e OLLAMA_ORIGINS="chrome-extension://bahjnakiionbepnlbogdkojcehaeefn Move it somewhere else ASAP: -- https://github.com/rowyio/roadmap?tab=readme-ov-file#step-1-setup-backend-template -- https://canny.io -- https://sleekplan.com/ +- https://github.com/rowyio/roadmap?tab=readme-ov-file#step-1-setup-backend-template +- https://canny.io +- https://sleekplan.com/ ### Urgent & Important -- [ ] **Logging**: Determine a location to store log files. +- [ ] **Logging**: Determine a location to store log files. ### Urgent, Not Important -- [ ] **Prompt Factory**: Add the ability to create custom prompts. -- [ ] Add the ability to chat within the browser. -- [ ] Encryption of keys : They are stored locally, nonetheless being my first chrome extension i need to research more about how this can be accessed. -- [ ] Automated Testing -- [ ] Investigate if Playwright supports Chrome extension testing. -- [ ] Automated Tagging / Release -- [ ] Locale +- [ ] **Prompt Factory**: Add the ability to create custom prompts. +- [ ] Add the ability to chat within the browser. +- [ ] Encryption of keys : They are stored locally, nonetheless being my first chrome extension i need to research more about how this can be accessed. +- [ ] Automated Testing +- [ ] Investigate if Playwright supports Chrome extension testing. +- [ ] Automated Tagging / Release +- [ ] Locale ### Important, Not Urgent -- [ ] UI for the Prompt Factory is not intuitive and the "save all" button UX is cr@p. -- [ ] The sidebar API doesn't work after the storage API is called (User Interaction must be done) -- [ ] Move files to a `/src` folder to improve organization. -- [ ] Strategically organize the codebase structure. -- [ ] Decide on a package manager: npm, pnpm, or yarn. +- [ ] UI for the Prompt Factory is not intuitive and the "save all" button UX is cr@p. +- [ ] The sidebar API doesn't work after the storage API is called (User Interaction must be done) +- [ ] Move files to a `/src` folder to improve organization. +- [ ] Strategically organize the codebase structure. +- [ ] Decide on a package manager: npm, pnpm, or yarn. ### Not Urgent, Not Important -- [ ] Workflow to update the models automatically. -- [ ] **Prompt Factory**: Add the ability to build workflows. -- [ ] **Prompt Factory**: Add the option to select which LLM to use for each prompt. -- [ ] Remove all the silly comments, maybe one day.... +- [ ] Workflow to update the models automatically. +- [ ] **Prompt Factory**: Add the ability to build workflows. +- [ ] **Prompt Factory**: Add the option to select which LLM to use for each prompt. +- [ ] Remove all the silly comments, maybe one day.... # Youtube Video From the Hackathon @@ -158,181 +158,186 @@ Move it somewhere else ASAP: ## Footage -- [Olena from Pixabay](https://pixabay.com/users/olenchic-16658974/?utm_source=link-attribution&utm_medium=referral&utm_campaign=video&utm_content=218486) +- [Olena from Pixabay](https://pixabay.com/users/olenchic-16658974/?utm_source=link-attribution&utm_medium=referral&utm_campaign=video&utm_content=218486) -- [NickyPe from Pixabay](https://pixabay.com/users/nickype-10327513/?utm_source=link-attribution&utm_medium=referral&utm_campaign=video&utm_content=161402) +- [NickyPe from Pixabay](https://pixabay.com/users/nickype-10327513/?utm_source=link-attribution&utm_medium=referral&utm_campaign=video&utm_content=161402) ## Music -- https://suno.com/song/f14541af-c853-4c22-b0b7-9000194fc9c6 +- https://suno.com/song/f14541af-c853-4c22-b0b7-9000194fc9c6 ## Voices -- ElevenLabs +- ElevenLabs # Special Thanks -- Build Club -> Hackaton Organiser -- Leonardo.ai -> Icon generated with the phoenix model -- Canva -> The other images not generated with AI -- ShadCn -> All the UI? -- Plasmo -> The Framework -- Groq -> Extra credits -- Icons -> icons8 -- https://shadcnui-expansions.typeart.cc/ +- Build Club -> Hackaton Organiser +- Leonardo.ai -> Icon generated with the phoenix model +- Canva -> The other images not generated with AI +- ShadCn -> All the UI? +- Plasmo -> The Framework +- Groq -> Extra credits +- Icons -> icons8 +- https://shadcnui-expansions.typeart.cc/ # Changelog +### 0.0.25 + +- Adding new llama3.3 +- Adding instruction for install ollama on the UI + ### 0.0.24 -- Adding the ability to specify a custom URL +- Adding the ability to specify a custom URL ### 0.0.23 -- Adding the uninstall hook to understand what can we improve. +- Adding the uninstall hook to understand what can we improve. ### 0.0.22 -- Fixed the X,Y positioning in page like LinkedIn, Reddit and so on. -- The declarativeNetRequest has been removed to enhance the release lifecycle in light of Chrome Store authorization requirements. Ollama continue to be fully supported, and detailed configuration instructions can be found in the README. +- Fixed the X,Y positioning in page like LinkedIn, Reddit and so on. +- The declarativeNetRequest has been removed to enhance the release lifecycle in light of Chrome Store authorization requirements. Ollama continue to be fully supported, and detailed configuration instructions can be found in the README. ### 0.0.21 -- Chaged the introductory GIF demonstrating how to use the Extension | OS. -- PromptFactory: Implemented a notification to inform users that any selected text will be automatically appended to the end of the prompt. -- Settings: Using Switch vs CheckBoxes -- Implemented optional (disabled by default) anonymous tracking to monitor usage patterns, including the most frequently used models and vendors. +- Chaged the introductory GIF demonstrating how to use the Extension | OS. +- PromptFactory: Implemented a notification to inform users that any selected text will be automatically appended to the end of the prompt. +- Settings: Using Switch vs CheckBoxes +- Implemented optional (disabled by default) anonymous tracking to monitor usage patterns, including the most frequently used models and vendors. ### 0.0.20 -- SelectionMenu: Now accessible on Reddit as well! (Consider prefixing all Tailwind classes for consistency) -- PromptSelector: Resolved all React warnings for a smoother experience -- Verified that pre-selection functions correctly (Thanks to E2E testing) +- SelectionMenu: Now accessible on Reddit as well! (Consider prefixing all Tailwind classes for consistency) +- PromptSelector: Resolved all React warnings for a smoother experience +- Verified that pre-selection functions correctly (Thanks to E2E testing) ### 0.0.19 -- Added more instruction for ollama -- localhost: Add the ability to specify the model by input text (vs select box) -- Fixed a useEffect bug +- Added more instruction for ollama +- localhost: Add the ability to specify the model by input text (vs select box) +- Fixed a useEffect bug ### 0.0.18 -- SelectionMenu: Now you can choose to enable/disable -- SelectionMenu: When a key is pressed (e.g backspace for remove, or CTRL/CMD + C for copying) the menu automatically disappear +- SelectionMenu: Now you can choose to enable/disable +- SelectionMenu: When a key is pressed (e.g backspace for remove, or CTRL/CMD + C for copying) the menu automatically disappear ### 0.0.17 -- Development: Integrated Playwright for testing and added a suite of automated tests +- Development: Integrated Playwright for testing and added a suite of automated tests ### 0.0.16 -- SelectionMenu: Fixed a bug that caused the menu to vanish unexpectedly after the onMouseUp event, leading to confusion regarding item selection for users. -- SelectionMenu: Adjusted the visual gap to provide more space to the user. -- UI: Eliminated the conflicting success/loading state for a clearer user experience. +- SelectionMenu: Fixed a bug that caused the menu to vanish unexpectedly after the onMouseUp event, leading to confusion regarding item selection for users. +- SelectionMenu: Adjusted the visual gap to provide more space to the user. +- UI: Eliminated the conflicting success/loading state for a clearer user experience. ### 0.0.15 -- SelectionMenu: Refined the triggering mechanism for improved responsiveness. -- SelectionMenu: Reduced the size for a more compact design. -- SelectionMenu: Automatically refreshes items immediately after the user updates the prompts. +- SelectionMenu: Refined the triggering mechanism for improved responsiveness. +- SelectionMenu: Reduced the size for a more compact design. +- SelectionMenu: Automatically refreshes items immediately after the user updates the prompts. ### 0.0.14 -- Fixed grammar issues, thanks to Luca. -- Introduced a new menu, courtesy of Denis. -- The new menu currently does not support phone calls (feature coming soon). +- Fixed grammar issues, thanks to Luca. +- Introduced a new menu, courtesy of Denis. +- The new menu currently does not support phone calls (feature coming soon). ### 0.0.13 -- Enhanced UI (tooltips are now more noticeable) thanks to Juanjo (We Move Experience) and Agostina (PepperStudio) -- Prompt Factory: Utilizing AutoTextArea for improved prompt display -- Prompt Factory: Removed the ID to improve user experience (non-tech users) -- System: Split the systemPrompt from the userPrompt. -- UX: Small improvements and removed the complicated items +- Enhanced UI (tooltips are now more noticeable) thanks to Juanjo (We Move Experience) and Agostina (PepperStudio) +- Prompt Factory: Utilizing AutoTextArea for improved prompt display +- Prompt Factory: Removed the ID to improve user experience (non-tech users) +- System: Split the systemPrompt from the userPrompt. +- UX: Small improvements and removed the complicated items ### 0.0.12 (Not released to the public) -- General: Free tier exhaustion. We haven't got a sponsor (yet) to support our community users. -- Google: Added identity, identity.email to enable automatic log-in using your google credentials. +- General: Free tier exhaustion. We haven't got a sponsor (yet) to support our community users. +- Google: Added identity, identity.email to enable automatic log-in using your google credentials. ### 0.0.11 (Not released to the public) -- General: Introduced a FREE Tier for users to explore the Extension | OS without needing to understand API Keys. -- Development: Implemented the CRX Public Key to maintain a consistent extension ID across re-installations during development. -- Development: Integrated OAUTH for user authentication when accessing the FREE tier. -- Permissions: Added identity permissions to facilitate user identity retrieval. -- Showcase: Updated images for improved visual presentation. -- Prompt Factory: Set Extension | OS as the default model, enabling users to utilize the extension without prior knowledge of API Key setup. +- General: Introduced a FREE Tier for users to explore the Extension | OS without needing to understand API Keys. +- Development: Implemented the CRX Public Key to maintain a consistent extension ID across re-installations during development. +- Development: Integrated OAUTH for user authentication when accessing the FREE tier. +- Permissions: Added identity permissions to facilitate user identity retrieval. +- Showcase: Updated images for improved visual presentation. +- Prompt Factory: Set Extension | OS as the default model, enabling users to utilize the extension without prior knowledge of API Key setup. ### 0.0.10 -- Context Menu: Added a new right-click option for seamless access to configuration settings. -- Context Menu: Improved the layout and organization of the context menu for enhanced user experience. -- Prompt Factory: Introduced a comprehensive sheet that details the context and functionality of each feature. -- Prompt Factory: Implemented a clickable icon to indicate that the tooltip contains additional information when clicked. +- Context Menu: Added a new right-click option for seamless access to configuration settings. +- Context Menu: Improved the layout and organization of the context menu for enhanced user experience. +- Prompt Factory: Introduced a comprehensive sheet that details the context and functionality of each feature. +- Prompt Factory: Implemented a clickable icon to indicate that the tooltip contains additional information when clicked. ### 0.0.9 -- Bug fixes -- Clean up codebase -- UX for the functionality improved +- Bug fixes +- Clean up codebase +- UX for the functionality improved ### 0.0.8 -- Removed an unnecessary dependency to comply with Chrome Store publication guidelines. -- Introduced a new icon. -- Implemented a loading state. -- Fixed an issue where Reddit visibility was broken. +- Removed an unnecessary dependency to comply with Chrome Store publication guidelines. +- Introduced a new icon. +- Implemented a loading state. +- Fixed an issue where Reddit visibility was broken. ### 0.0.7 -- Adding missing models from together.ai -- Adding missing models from groq -- Updated About page -- **MoA**: Add the ability to use a custom prompt. +- Adding missing models from together.ai +- Adding missing models from groq +- Updated About page +- **MoA**: Add the ability to use a custom prompt. ### 0.0.6 -- Popup: UI revamped -- Popup: New Presentation image and slogan -- Options: Unified fonts -- Options: Minor UI updates -- Content: Better error handling and UX (user get redireted to the option page when the API key is missing) -- Fix for together.ai (it was using a non-chat model) +- Popup: UI revamped +- Popup: New Presentation image and slogan +- Options: Unified fonts +- Options: Minor UI updates +- Content: Better error handling and UX (user get redireted to the option page when the API key is missing) +- Fix for together.ai (it was using a non-chat model) ## 0.0.5 -- Vapi affilation link (help me maintain this extension, sign up with the link) -- Vapi Enhancements: Prompts now support selecting a specific phone number to call. -- Vapi Enhancements: Prompts can now include a custom initial message for the conversation. -- Vapi Enhancements: Now every prompt can be customised using the -- UI: Section for specific configurations +- Vapi affilation link (help me maintain this extension, sign up with the link) +- Vapi Enhancements: Prompts now support selecting a specific phone number to call. +- Vapi Enhancements: Prompts can now include a custom initial message for the conversation. +- Vapi Enhancements: Now every prompt can be customised using the +- UI: Section for specific configurations ## 0.0.4 -- Hotfix: declarativeNetRequest was intercepting every localhost request. +- Hotfix: declarativeNetRequest was intercepting every localhost request. ## 0.0.3 -- Added github branch protection. -- Changed the datastructure to achieve a clearer and more abstract way to call functions -- Function to clean the datastructure to adapt to chrome.contextMenus.CreateProperties -- use "side\_" as hack to open the sidebar. WHY: The sidebar.open doesn't work after we call the storage.get -- Allowing to change the default prompts -- chrome.runtime.openOptionsPage() opens only in production environment (onInstalled) -- Improved UI (switched to dark theme) -- Allowing to change the functionality; The "side\_" bug is annoying as it is over complicating the codebase. +- Added github branch protection. +- Changed the datastructure to achieve a clearer and more abstract way to call functions +- Function to clean the datastructure to adapt to chrome.contextMenus.CreateProperties +- use "side\_" as hack to open the sidebar. WHY: The sidebar.open doesn't work after we call the storage.get +- Allowing to change the default prompts +- chrome.runtime.openOptionsPage() opens only in production environment (onInstalled) +- Improved UI (switched to dark theme) +- Allowing to change the functionality; The "side\_" bug is annoying as it is over complicating the codebase. ## 0.0.2 -- How to install and start polishing the repository +- How to install and start polishing the repository ## 0.0.1 -- Check the demo video +- Check the demo video # Gotchas -- Ensure that the open.sidePanel is always initialized before the Plasmo Storage. -- We currently have two menus that function similarly but not identically; we need to implement a more efficient solution to consolidate them into one. -- The Plasmo handler may stop functioning unexpectedly without errors if a response is not returned; ensure to always return a response to prevent this issue. +- Ensure that the open.sidePanel is always initialized before the Plasmo Storage. +- We currently have two menus that function similarly but not identically; we need to implement a more efficient solution to consolidate them into one. +- The Plasmo handler may stop functioning unexpectedly without errors if a response is not returned; ensure to always return a response to prevent this issue. diff --git a/options/LlmSettings.tsx b/options/LlmSettings.tsx index a4235e8..086689c 100644 --- a/options/LlmSettings.tsx +++ b/options/LlmSettings.tsx @@ -1,360 +1,409 @@ -import "@/globals.css" +import "@/globals.css"; import { - Card, - CardContent, - CardFooter, - CardHeader, -} from "@/components/ui/card" -import { Input } from "@/components/ui/input" + Card, + CardContent, + CardFooter, + CardHeader, +} from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue -} from "@/components/ui/select" -import React, { useEffect, useRef } from "react" + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import React, { useEffect, useRef } from "react"; -import { useStorage } from "@plasmohq/storage/hook" -import LabelWithTooltip from "~components/blocks/LabelWithTooltip" -import CardHeaderIntro from "~components/blocks/CardHeaderIntro" -import FakeSaveButton from "~components/blocks/FakeSaveButton" -import ProviderInstruction from "./promptFactory/ProviderInstruction" -import { ArrowBigLeftDash, ArrowBigUpDash } from "lucide-react" -import { ExtensionOsLogin } from "./settings/ExtensionOsLogin" +import { useStorage } from "@plasmohq/storage/hook"; +import LabelWithTooltip from "~components/blocks/LabelWithTooltip"; +import CardHeaderIntro from "~components/blocks/CardHeaderIntro"; +import FakeSaveButton from "~components/blocks/FakeSaveButton"; +import ProviderInstruction from "./promptFactory/ProviderInstruction"; +import { ArrowBigLeftDash, ArrowBigUpDash } from "lucide-react"; +import { ExtensionOsLogin } from "./settings/ExtensionOsLogin"; // Add more combination here for the future // TODO: I may refactor it to be easier to access but whatever. export const providersData = { - providers: [ - { - name: "extension | OS", - models: [ - "llama-3.1-70b-versatile", - "llama-3.1-8b-instant", - "llama3-70b-8192", - "llama3-8b-8192", - "mixtral-8x7b-32768", - "gemma-7b-it", - "gemma2-9b-it", - ] - }, - { - name: "groq", - models: [ - "llama-3.1-70b-versatile", - "llama-3.1-8b-instant", - "llama3-70b-8192", - "llama3-8b-8192", - "mixtral-8x7b-32768", - "gemma-7b-it", - "gemma2-9b-it", - ] - }, - { - name: "openai", - models: ["gpt-4", "gpt-4o-mini", "gpt-3.5-turbo"] - }, - { - name: "together", - models: ["Austism/chronos-hermes-13b", - "Gryphe/MythoMax-L2-13b", - "HuggingFaceH4/zephyr-7b-beta", - "NousResearch/Hermes-2-Theta-Llama-3-70B", - "NousResearch/Nous-Capybara-7B-V1p9", - "NousResearch/Nous-Hermes-2-Mistral-7B-DPO", - "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", - "NousResearch/Nous-Hermes-2-Mixtral-8x7B-SFT", - "NousResearch/Nous-Hermes-2-Yi-34B", - "NousResearch/Nous-Hermes-Llama2-13b", - "NousResearch/Nous-Hermes-Llama2-70b", - "NousResearch/Nous-Hermes-llama-2-7b", - "Open-Orca/Mistral-7B-OpenOrca", - "Qwen/Qwen1.5-0.5B-Chat", - "Qwen/Qwen1.5-1.8B-Chat", - "Qwen/Qwen1.5-110B-Chat", - "Qwen/Qwen1.5-14B-Chat", - "Qwen/Qwen1.5-32B-Chat", - "Qwen/Qwen1.5-4B-Chat", - "Qwen/Qwen1.5-72B-Chat", - "Qwen/Qwen1.5-7B-Chat", - "Qwen/Qwen2-1.5B-Instruct", - "Qwen/Qwen2-72B", - "Qwen/Qwen2-72B-Instruct", - "Qwen/Qwen2-7B", - "Qwen/Qwen2-7B-Instruct", - "Snowflake/snowflake-arctic-instruct", - "Undi95/ReMM-SLERP-L2-13B", - "Undi95/Toppy-M-7B", - "WizardLM/WizardLM-13B-V1.2", - "allenai/OLMo-7B-Instruct", - "carson/ml31405bit", - "carson/ml3170bit", - "carson/ml318bit", - "carson/ml318br", - "codellama/CodeLlama-13b-Instruct-hf", - "codellama/CodeLlama-34b-Instruct-hf", - "codellama/CodeLlama-70b-Instruct-hf", - "codellama/CodeLlama-7b-Instruct-hf", - "cognitivecomputations/dolphin-2.5-mixtral-8x7b", - "databricks/dbrx-instruct", - "deepseek-ai/deepseek-coder-33b-instruct", - "deepseek-ai/deepseek-llm-67b-chat", - "garage-bAInd/Platypus2-70B-instruct", - "google/gemma-2-27b-it", - "google/gemma-2-9b-it", - "google/gemma-2b-it", - "google/gemma-7b-it", - "gradientai/Llama-3-70B-Instruct-Gradient-1048k", - "lmsys/vicuna-13b-v1.3", - "lmsys/vicuna-13b-v1.5", - "lmsys/vicuna-13b-v1.5-16k", - "lmsys/vicuna-7b-v1.3", - "lmsys/vicuna-7b-v1.5", - "meta-llama/Llama-2-13b-chat-hf", - "meta-llama/Llama-2-70b-chat-hf", - "meta-llama/Llama-2-7b-chat-hf", - "meta-llama/Llama-3-70b-chat-hf", - "meta-llama/Llama-3-8b-chat-hf", - "meta-llama/Meta-Llama-3-70B-Instruct", - "meta-llama/Meta-Llama-3-70B-Instruct-Lite", - "meta-llama/Meta-Llama-3-70B-Instruct-Turbo", - "meta-llama/Meta-Llama-3-8B-Instruct", - "meta-llama/Meta-Llama-3-8B-Instruct-Lite", - "meta-llama/Meta-Llama-3-8B-Instruct-Turbo", - "meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo", - "meta-llama/Meta-Llama-3.1-70B-Instruct-Reference", - "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo", - "meta-llama/Meta-Llama-3.1-70B-Reference", - "meta-llama/Meta-Llama-3.1-8B-Instruct-Reference", - "meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "microsoft/WizardLM-2-8x22B", - "mistralai/Mistral-7B-Instruct-v0.1", - "mistralai/Mistral-7B-Instruct-v0.2", - "mistralai/Mistral-7B-Instruct-v0.3", - "mistralai/Mixtral-8x22B-Instruct-v0.1", - "mistralai/Mixtral-8x7B-Instruct-v0.1", - "openchat/openchat-3.5-1210", - "snorkelai/Snorkel-Mistral-PairRM-DPO", - "teknium/OpenHermes-2-Mistral-7B", - "teknium/OpenHermes-2p5-Mistral-7B", - "togethercomputer/CodeLlama-13b-Instruct", - "togethercomputer/CodeLlama-34b-Instruct", - "togethercomputer/CodeLlama-7b-Instruct", - "togethercomputer/Koala-13B", - "togethercomputer/Koala-7B", - "togethercomputer/Llama-2-7B-32K-Instruct", - "togethercomputer/Llama-3-8b-chat-hf-int4", - "togethercomputer/Llama-3-8b-chat-hf-int8", - "togethercomputer/SOLAR-10.7B-Instruct-v1.0-int4", - "togethercomputer/StripedHyena-Nous-7B", - "togethercomputer/alpaca-7b", - "togethercomputer/guanaco-13b", - "togethercomputer/guanaco-33b", - "togethercomputer/guanaco-65b", - "togethercomputer/guanaco-7b", - "togethercomputer/llama-2-13b-chat", - "togethercomputer/llama-2-70b-chat", - "togethercomputer/llama-2-7b-chat", - "upstage/SOLAR-10.7B-Instruct-v1.0", - "zero-one-ai/Yi-34B-Chat",] - }, - { - name: "localhost", - models: ["llama3"] - } - ] -} - - - + providers: [ + { + name: "extension | OS", + models: [ + "llama-3.3-70b-versatile", + "llama-3.1-70b-versatile", + "llama-3.1-8b-instant", + "llama3-70b-8192", + "llama3-8b-8192", + "mixtral-8x7b-32768", + "gemma-7b-it", + "gemma2-9b-it", + ], + }, + { + name: "groq", + models: [ + "llama-3.3-70b-versatile", + "llama-3.1-70b-versatile", + "llama-3.1-8b-instant", + "llama3-70b-8192", + "llama3-8b-8192", + "mixtral-8x7b-32768", + "gemma-7b-it", + "gemma2-9b-it", + ], + }, + { + name: "openai", + models: ["gpt-4", "gpt-4o-mini", "gpt-3.5-turbo"], + }, + { + name: "together", + models: [ + "Austism/chronos-hermes-13b", + "Gryphe/MythoMax-L2-13b", + "HuggingFaceH4/zephyr-7b-beta", + "NousResearch/Hermes-2-Theta-Llama-3-70B", + "NousResearch/Nous-Capybara-7B-V1p9", + "NousResearch/Nous-Hermes-2-Mistral-7B-DPO", + "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", + "NousResearch/Nous-Hermes-2-Mixtral-8x7B-SFT", + "NousResearch/Nous-Hermes-2-Yi-34B", + "NousResearch/Nous-Hermes-Llama2-13b", + "NousResearch/Nous-Hermes-Llama2-70b", + "NousResearch/Nous-Hermes-llama-2-7b", + "Open-Orca/Mistral-7B-OpenOrca", + "Qwen/Qwen1.5-0.5B-Chat", + "Qwen/Qwen1.5-1.8B-Chat", + "Qwen/Qwen1.5-110B-Chat", + "Qwen/Qwen1.5-14B-Chat", + "Qwen/Qwen1.5-32B-Chat", + "Qwen/Qwen1.5-4B-Chat", + "Qwen/Qwen1.5-72B-Chat", + "Qwen/Qwen1.5-7B-Chat", + "Qwen/Qwen2-1.5B-Instruct", + "Qwen/Qwen2-72B", + "Qwen/Qwen2-72B-Instruct", + "Qwen/Qwen2-7B", + "Qwen/Qwen2-7B-Instruct", + "Snowflake/snowflake-arctic-instruct", + "Undi95/ReMM-SLERP-L2-13B", + "Undi95/Toppy-M-7B", + "WizardLM/WizardLM-13B-V1.2", + "allenai/OLMo-7B-Instruct", + "carson/ml31405bit", + "carson/ml3170bit", + "carson/ml318bit", + "carson/ml318br", + "codellama/CodeLlama-13b-Instruct-hf", + "codellama/CodeLlama-34b-Instruct-hf", + "codellama/CodeLlama-70b-Instruct-hf", + "codellama/CodeLlama-7b-Instruct-hf", + "cognitivecomputations/dolphin-2.5-mixtral-8x7b", + "databricks/dbrx-instruct", + "deepseek-ai/deepseek-coder-33b-instruct", + "deepseek-ai/deepseek-llm-67b-chat", + "garage-bAInd/Platypus2-70B-instruct", + "google/gemma-2-27b-it", + "google/gemma-2-9b-it", + "google/gemma-2b-it", + "google/gemma-7b-it", + "gradientai/Llama-3-70B-Instruct-Gradient-1048k", + "lmsys/vicuna-13b-v1.3", + "lmsys/vicuna-13b-v1.5", + "lmsys/vicuna-13b-v1.5-16k", + "lmsys/vicuna-7b-v1.3", + "lmsys/vicuna-7b-v1.5", + "meta-llama/Llama-2-13b-chat-hf", + "meta-llama/Llama-2-70b-chat-hf", + "meta-llama/Llama-2-7b-chat-hf", + "meta-llama/Llama-3-70b-chat-hf", + "meta-llama/Llama-3-8b-chat-hf", + "meta-llama/Meta-Llama-3-70B-Instruct", + "meta-llama/Meta-Llama-3-70B-Instruct-Lite", + "meta-llama/Meta-Llama-3-70B-Instruct-Turbo", + "meta-llama/Meta-Llama-3-8B-Instruct", + "meta-llama/Meta-Llama-3-8B-Instruct-Lite", + "meta-llama/Meta-Llama-3-8B-Instruct-Turbo", + "meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo", + "meta-llama/Meta-Llama-3.1-70B-Instruct-Reference", + "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo", + "meta-llama/Meta-Llama-3.1-70B-Reference", + "meta-llama/Meta-Llama-3.1-8B-Instruct-Reference", + "meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", + "microsoft/WizardLM-2-8x22B", + "mistralai/Mistral-7B-Instruct-v0.1", + "mistralai/Mistral-7B-Instruct-v0.2", + "mistralai/Mistral-7B-Instruct-v0.3", + "mistralai/Mixtral-8x22B-Instruct-v0.1", + "mistralai/Mixtral-8x7B-Instruct-v0.1", + "openchat/openchat-3.5-1210", + "snorkelai/Snorkel-Mistral-PairRM-DPO", + "teknium/OpenHermes-2-Mistral-7B", + "teknium/OpenHermes-2p5-Mistral-7B", + "togethercomputer/CodeLlama-13b-Instruct", + "togethercomputer/CodeLlama-34b-Instruct", + "togethercomputer/CodeLlama-7b-Instruct", + "togethercomputer/Koala-13B", + "togethercomputer/Koala-7B", + "togethercomputer/Llama-2-7B-32K-Instruct", + "togethercomputer/Llama-3-8b-chat-hf-int4", + "togethercomputer/Llama-3-8b-chat-hf-int8", + "togethercomputer/SOLAR-10.7B-Instruct-v1.0-int4", + "togethercomputer/StripedHyena-Nous-7B", + "togethercomputer/alpaca-7b", + "togethercomputer/guanaco-13b", + "togethercomputer/guanaco-33b", + "togethercomputer/guanaco-65b", + "togethercomputer/guanaco-7b", + "togethercomputer/llama-2-13b-chat", + "togethercomputer/llama-2-70b-chat", + "togethercomputer/llama-2-7b-chat", + "upstage/SOLAR-10.7B-Instruct-v1.0", + "zero-one-ai/Yi-34B-Chat", + ], + }, + { + name: "localhost", + models: ["llama3"], + }, + ], +}; export default function LlmSettings({ debugInfo }: { debugInfo: string }) { - const [llmModel, setLlmModel] = useStorage("llmModel", "llama-3.1-70b-versatile") - const [llmProvider, setLlmProvider] = useStorage("llmProvider", "extension | OS") - const [llmKeys, setLlmKeys] = useStorage("llmKeys", {}) - const [llmCustomEndpoint, setLlmCustomEndpoint] = useStorage("llmCustomEndpoint", (v) => v === undefined ? "http://localhost:11434/v1/chat/completions" : v) - - const hasRun = useRef(false); // Add this line + const [llmModel, setLlmModel] = useStorage( + "llmModel", + "llama-3.1-70b-versatile" + ); + const [llmProvider, setLlmProvider] = useStorage( + "llmProvider", + "extension | OS" + ); + const [llmKeys, setLlmKeys] = useStorage("llmKeys", {}); + const [llmCustomEndpoint, setLlmCustomEndpoint] = useStorage( + "llmCustomEndpoint", + (v) => (v === undefined ? "http://localhost:11434/v1/chat/completions" : v) + ); - //To auto-assign a model when the provider is changed. - useEffect(() => { - if (!hasRun.current) { - /* Plasmo storage is undefined here, it will read only the default value! */ - hasRun.current = true; - return; // Skip the first cycle, so plasmo loads the useStorage correctly... - } + const hasRun = useRef(false); // Add this line - if (llmProvider) { - validateAndSetModel(llmProvider); - } - }, [llmProvider]) - - const validateAndSetModel = (providerName) => { - const selectedProvider = providersData.providers.find( - (provider) => provider.name === providerName - ) - - const isModelValid = selectedProvider?.models.includes(llmModel) - - // We need to ensure the selectedProvider is valid - // E.g. We do change a name in the config -> From OpenAI to ClosedAI (pun intended..) - if (!isModelValid && selectedProvider) { - setLlmModel(selectedProvider.models[0]) - } + //To auto-assign a model when the provider is changed. + useEffect(() => { + if (!hasRun.current) { + /* Plasmo storage is undefined here, it will read only the default value! */ + hasRun.current = true; + return; // Skip the first cycle, so plasmo loads the useStorage correctly... } - const handleKeyChange = (provider, key) => { - setLlmKeys((prevKeys) => ({ ...prevKeys, [provider]: key })) + if (llmProvider) { + validateAndSetModel(llmProvider); } + }, [llmProvider]); - const getCurrentKey = () => llmKeys[llmProvider] || "" + const validateAndSetModel = (providerName) => { + const selectedProvider = providersData.providers.find( + (provider) => provider.name === providerName + ); - return ( - - - - - -
- - {!getCurrentKey() && llmProvider && llmProvider !== "extension | OS" && ( - <> - {/* UX Note: This arrow indicates where users should click to obtain their API keys. */} - - - )} -
+ const isModelValid = selectedProvider?.models.includes(llmModel); -
-
-
- -
- - - {llmProvider === "extension | OS" && } + // We need to ensure the selectedProvider is valid + // E.g. We do change a name in the config -> From OpenAI to ClosedAI (pun intended..) + if (!isModelValid && selectedProvider) { + setLlmModel(selectedProvider.models[0]); + } + }; + const handleKeyChange = (provider, key) => { + setLlmKeys((prevKeys) => ({ ...prevKeys, [provider]: key })); + }; - {!llmProvider && ( - <> - - Instructions: Choose a provider from the list on your left.
The selected provider will be set as the default. - - )} + const getCurrentKey = () => llmKeys[llmProvider] || ""; + return ( + + + + + +
+ + {!getCurrentKey() && + llmProvider && + llmProvider !== "extension | OS" && ( + <> + {/* UX Note: This arrow indicates where users should click to obtain their API keys. */} + + + )} +
+
+
+
+ +
+ + {llmProvider === "extension | OS" && } -
-
-
- {providersData.providers.map( - (provider) => - llmProvider === provider.name && ( -
-
- - {provider.models.length > 0 && provider.name !== "localhost" ? ( - <> - - - ) : ( - setLlmModel(e.target.value)} - placeholder="Enter LLM model name" - className="border border-input rounded-md p-2 w-full" - /> - )} -
-
- ) - )} - {providersData.providers.map( - (provider) => - llmProvider === provider.name && provider.name === "localhost" && ( -
-
- - { - setLlmCustomEndpoint(e.target.value)} - placeholder="Enter LLM model name" - className="border border-input rounded-md p-2 w-full" - /> - } -
-
- ) - )} - {providersData.providers.map( - (provider) => - llmProvider === provider.name && ( -
- {provider.models.length > 0 && provider.name !== "extension | OS" && provider.name !== "localhost" ? ( -
- - handleKeyChange(llmProvider, e.target.value)} - /> -
- ) : - // Extension | OS do not need API key as it's integrated - null} -
- ) + {!llmProvider && ( + <> + + Instructions: Choose a + provider from the list on your left. +
The selected provider will be set as the default. + + )} +
+
+
+ {providersData.providers.map( + (provider) => + llmProvider === provider.name && ( +
+
+ + {provider.models.length > 0 && + provider.name !== "localhost" ? ( + <> + + + ) : ( + setLlmModel(e.target.value)} + placeholder="Enter LLM model name" + className="border border-input rounded-md p-2 w-full" + /> )} +
+
+ ) + )} + {providersData.providers.map( + (provider) => + llmProvider === provider.name && + provider.name === "localhost" && ( +
+
+ + { + setLlmCustomEndpoint(e.target.value)} + placeholder="Enter LLM model name" + className="border border-input rounded-md p-2 w-full" + /> + } +
- - - - {"checked" === debugInfo && ( -
- DEBUG - Model selected: {llmModel} - Provider selected: {llmProvider} - - {" "} - Key redacted:{" "} - {getCurrentKey().slice(0, 5) + "..." + getCurrentKey().slice(-3)} - + ) + )} + {providersData.providers.map( + (provider) => + llmProvider === provider.name && ( +
+ {provider.models.length > 0 && + provider.name !== "extension | OS" && + provider.name !== "localhost" ? ( +
+ + + handleKeyChange(llmProvider, e.target.value) + } + />
- )} - - - ) + ) : // Extension | OS do not need API key as it's integrated + null} +
+ ) + )} +
+ + + + {"checked" === debugInfo && ( +
+ DEBUG + Model selected: {llmModel} + Provider selected: {llmProvider} + + {" "} + Key redacted:{" "} + {getCurrentKey().slice(0, 5) + "..." + getCurrentKey().slice(-3)} + +
+ )} +
+ + ); } diff --git a/options/promptFactory/ProviderInstruction.tsx b/options/promptFactory/ProviderInstruction.tsx index 589b773..64ef4c9 100644 --- a/options/promptFactory/ProviderInstruction.tsx +++ b/options/promptFactory/ProviderInstruction.tsx @@ -1,5 +1,5 @@ interface ProviderInstructionProps { - provider: string; + provider: string; } /* @@ -14,48 +14,53 @@ import ollama from "data-base64:~assets/AppIcons//ollama.png"; import InstructionSnippet from "./components/InstructionSnippet"; const providerData = { - "extension | OS": { - logo: extensionOsLogo, - links: [ - { label: "Official Website", url: "https://extension-os.com" }, - { label: "More Tiers Available Soon", url: "https://extension-os.com", } - ] - }, - groq: { - logo: groqLogo, - links: [ - { label: "Official Website", url: "https://groq.com" }, - { label: "Get API Key", url: "https://console.groq.com/keys", } - ] - }, - openai: { - logo: openAiLogo, - links: [ - { label: "Official Website", url: "https://openai.com" }, - { label: "Get API Key", url: "https://platform.openai.com/api-keys" } - ] - }, - together: { - logo: togetherAiLogo, - links: [ - { label: "Official Website", url: "https://www.together.ai" }, - { label: "Get API Key", url: "https://api.together.ai/settings/api-keys" } - ] - }, - localhost: { - logo: ollama, - links: [ - { label: "Official Website", url: "https://ollama.com/" }, - { label: "Running on", url: "http://localhost:11434" } - ] - } + "extension | OS": { + logo: extensionOsLogo, + links: [ + { label: "Official Website", url: "https://extension-os.com" }, + { label: "More Tiers Available Soon", url: "https://extension-os.com" }, + ], + }, + groq: { + logo: groqLogo, + links: [ + { label: "Official Website", url: "https://groq.com" }, + { label: "Get API Key", url: "https://console.groq.com/keys" }, + ], + }, + openai: { + logo: openAiLogo, + links: [ + { label: "Official Website", url: "https://openai.com" }, + { label: "Get API Key", url: "https://platform.openai.com/api-keys" }, + ], + }, + together: { + logo: togetherAiLogo, + links: [ + { label: "Official Website", url: "https://www.together.ai" }, + { + label: "Get API Key", + url: "https://api.together.ai/settings/api-keys", + }, + ], + }, + localhost: { + logo: ollama, + links: [ + { label: "Official Website", url: "https://ollama.com/" }, + { label: "Running on", url: "http://localhost:11434" }, + ], + }, }; +export default function ProviderInstruction({ + provider, +}: ProviderInstructionProps) { + const { logo, links } = providerData[provider] || { + logo: extensionOsLogo, + links: [], + }; -export default function ProviderInstruction({ provider }: ProviderInstructionProps) { - const { logo, links } = providerData[provider] || { logo: extensionOsLogo, links: [] }; - - return ( - - ); -} \ No newline at end of file + return ; +} diff --git a/options/promptFactory/components/InstructionSnippet.tsx b/options/promptFactory/components/InstructionSnippet.tsx index ca05197..cd2c00a 100644 --- a/options/promptFactory/components/InstructionSnippet.tsx +++ b/options/promptFactory/components/InstructionSnippet.tsx @@ -1,25 +1,64 @@ -import React from 'react'; +import React from "react"; interface InstructionSnippetProps { - logo: string; - provider: string; - links: { label: string; url: string; queryParams?: string }[]; + logo: string; + provider: string; + links: { label: string; url: string; queryParams?: string }[]; + paragraph?: string; } -export default function InstructionSnippet({ logo, provider, links }: InstructionSnippetProps) { - return ( -
- {`${provider} -
-

- {links.map((link, index) => ( - - {link.label}: {link.url}
-
- ))} +export default function InstructionSnippet({ + logo, + provider, + links, + paragraph, +}: InstructionSnippetProps) { + return ( + <> +

+ {`${provider} +
+

+ {links.map((link, index) => ( + + {link.label}:{" "} + + {link.url} + {" "} +
+
+ ))} + {provider === "localhost" && ( + <> +
+

+ To run ollama locally you must follow this instruction:{" "} + + Github Instruction +

-
- + + )} +

- ); -} \ No newline at end of file +
+ + ); +} diff --git a/package.json b/package.json index 8651f79..145c709 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "extension-os", "displayName": "Extension-OS: Your AI Partner", - "version": "0.0.24", + "version": "0.0.25", "description": "AI at Your Fingertips, Anytime, Anywhere.", "author": "acubeddu87@gmail.com", "scripts": { @@ -28,7 +28,7 @@ "deepmerge": "^4.3.1", "install": "^0.13.0", "lucide-react": "^0.414.0", - "plasmo": "0.88.0", + "plasmo": "0.89.4", "pnpm": "^9.6.0", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25a64ba..e80d593 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,8 +63,8 @@ importers: specifier: ^0.414.0 version: 0.414.0(react@18.2.0) plasmo: - specifier: 0.88.0 - version: 0.88.0(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: 0.89.4 + version: 0.89.4(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) pnpm: specifier: ^9.6.0 version: 9.6.0 @@ -1060,59 +1060,59 @@ packages: react: optional: true - '@plasmohq/parcel-bundler@0.5.5': - resolution: {integrity: sha512-QCMmmfic514CfdXMJ7JMWUnqDzIHKVKyYeqPpUDsXON6JvA1yTmO5mEQSls8+5u/HpocP9QmTskQOHu3RCNX9A==} + '@plasmohq/parcel-bundler@0.5.6': + resolution: {integrity: sha512-kjwj5tQUhdAK00AxXOzgqJ2jryZg4X6aleYAcjbREPzVMqKEu1NrNSNy5VGAfNRG6NCT6ZYg39ZCyuUOR2lEsQ==} engines: {node: '>= 16.0.0', parcel: '>= 2.7.0'} - '@plasmohq/parcel-compressor-utf8@0.1.0': - resolution: {integrity: sha512-UxljXY+cUVO0ZdszoQRfQjbRjyWYIhGKCjFD48yOcnbSkOZmS5MPPhKrT79x+PMGSK5T6fUXaDjzqbnMb45MZw==} + '@plasmohq/parcel-compressor-utf8@0.1.1': + resolution: {integrity: sha512-9zcF39XIBzauYLERoGNVSy7qR1MzEqjhQn16RrlCpZ1AyNMlBJ3B28SmnUpBQNgne8JOHTtcx6cUVm1IvM3J+g==} engines: {parcel: '>= 2.8.0'} - '@plasmohq/parcel-config@0.41.0': - resolution: {integrity: sha512-MHtuEyjSCqVT0J584KF4ZrnNF1KTGz3+0+wEBgYiiWEW+WW91/Hv/5pboBrPH4tu/knxSQjzE9zlY5Rq2xh9Rg==} + '@plasmohq/parcel-config@0.41.1': + resolution: {integrity: sha512-peNpm+F1tVIZmDx8Mca8b3769cxc2IWS7q0+0Y4BLT1+2kis7X4b46IAYgOXtsDRZCb9pvxQhRhrVHpwGtdVLg==} - '@plasmohq/parcel-core@0.1.8': - resolution: {integrity: sha512-kMWuazvf925ZAn2yHzzrb4Zsje1titFmvi/C5cXrI0TH58eT7n6GUiRXiOYP4JgGDHs/pEygx3WPuyWVTNF2HQ==} + '@plasmohq/parcel-core@0.1.10': + resolution: {integrity: sha512-XbJrqlgPNo+uQaukWayfRDZnAvdkYrmcydCOz0wfmuksTjDisyGkL3ZbWeX86QPN65CXFyou11/9h3+U9IsHfA==} engines: {parcel: '>= 2.7.0'} '@plasmohq/parcel-namer-manifest@0.3.12': resolution: {integrity: sha512-mNyIVK4nRbjlnXXUygBcmV7xLzgS1HZ3vedxUrMQah0Wp0Y20GFcomToDBC0w9NXIZVSSKY0bRIeh0B6/verfQ==} engines: {parcel: '>= 2.7.0'} - '@plasmohq/parcel-optimizer-encapsulate@0.0.7': - resolution: {integrity: sha512-mA9kY5dwuebQ4vLX6A5yTFo0gZZNWKUHpF6yO0lYq3oP843MyRJS8SxAtzQb4vTlVWPk3SX6Yw81DgBo4I6Xiw==} + '@plasmohq/parcel-optimizer-encapsulate@0.0.8': + resolution: {integrity: sha512-iXDXoLtYBvV4rHhFw3O6nrS3dEWYe9k2m0i/Tvzg2lz4lUHFyvK5NN9RWqkOLfI8JviaqQzaaMKteJhLsX6z1A==} engines: {parcel: '>= 2.8.0'} - '@plasmohq/parcel-optimizer-es@0.4.0': - resolution: {integrity: sha512-Iz1cTuw38wEbSQ36/dVKh5MyRA12/Ecrx90pqaIkoqA9ZSZuxuWWa7rPa3bVMFkzi28BpVHW1z9EnhVN4188kQ==} + '@plasmohq/parcel-optimizer-es@0.4.1': + resolution: {integrity: sha512-2FvBq3L5wHyD+TNHpO0IVMJKX1XQ+uBruFVcRUgo+lDkIAyop7P8wpsY4iq3dOKXJrqjwBop9nzNcq0L/zaalQ==} engines: {parcel: '>= 2.8.0'} - '@plasmohq/parcel-packager@0.6.14': - resolution: {integrity: sha512-pFab9COfafx66CtOFWgLgKf4TUPLb5EiTO4ecRz1HDINSvPl48ci+3czmtSzOI4+b1uiqZYxUB3eeaMfh9XWpA==} + '@plasmohq/parcel-packager@0.6.15': + resolution: {integrity: sha512-c6Afk5l8EqxyZ/N7p8avWEBt5teTQPQsvZZpPHWhsAY9eonX+h8bFdmXym1oevaq5TySJOpNCSUdTvqqZtlSnQ==} engines: {parcel: '>= 2.7.0'} - '@plasmohq/parcel-resolver-post@0.4.4': - resolution: {integrity: sha512-n39U5z2aGAfCDFydpvEDXx0MWtqYwh0+aX4QS49/IsmZMM1Ra+GnHs/gfeJz0jtN83EytlbwSoDcXRkORx9rIQ==} + '@plasmohq/parcel-resolver-post@0.4.5': + resolution: {integrity: sha512-Y5la9wruh3fMHlUoWtVBcbSyvg2xZE1kSRp5BAjtfyZlKS2cT/vIbFTUkqk9nPvXLExBDNajIxTKk9ag/9WzpA==} engines: {parcel: '>= 2.7.0'} - '@plasmohq/parcel-resolver@0.14.0': - resolution: {integrity: sha512-OPGFiv2SxDEJl9sNPKfjkQ3QaqKOzSDx8E85Bq9FCOKCj+EWTPfoeUOAuMkHY/ArcvDBhWAo3Zu66f2U7iPEGQ==} + '@plasmohq/parcel-resolver@0.14.1': + resolution: {integrity: sha512-1nmmMI7N5rtpni2TpUyPkI8XU1wIk/lTDGNZXLxtkzOoFiFP2sc2xZq4OGhmnRYvWphZYrnhMjRrjNJmqOFqxw==} engines: {parcel: '>= 2.7.0'} - '@plasmohq/parcel-runtime@0.25.0': - resolution: {integrity: sha512-jtb77WDCYhKDPi/jRweSNX9GEe/REQUQU50d18YkDpQDyo/enVTyWVeYqfo3Q21iGLX8x9E5nF2rXtIVtoOAmw==} + '@plasmohq/parcel-runtime@0.25.1': + resolution: {integrity: sha512-asr4DMXJSKPilye0uiyZf51NUC3WZAr0Y6mzl+mtRGIcywuv42+X52qnZl9a9xYkVZeYlVJq62Kfk4+wPthakg==} engines: {parcel: '>= 2.7.0'} - '@plasmohq/parcel-transformer-inject-env@0.2.11': - resolution: {integrity: sha512-eGwwoaDbPPwrRcEgOi/BpLVGe5ttrBhs91NBcKMpE/D5gktfbJPD1zHG8MPtQdE4Iq23aG3JUbiT5clmdwtUhQ==} + '@plasmohq/parcel-transformer-inject-env@0.2.12': + resolution: {integrity: sha512-QhM5Je0LyuAAJMAXeBEu4YvDirIPXuO2SoxHkwTMIwCMXpstPinnKiElrIoolqZjcxLmDCfsXerXZfbN6NhSlA==} engines: {parcel: '>= 2.7.0'} '@plasmohq/parcel-transformer-inline-css@0.3.11': resolution: {integrity: sha512-EUSwEowFNSgC/F1q/V4H4NXJ23wwLzlmRI6lvIr6S0mIuG/FCga+lAV3IZ+yAuXqUM2VexX6JyYYpNVidrMSxw==} engines: {parcel: '>= 2.7.0'} - '@plasmohq/parcel-transformer-manifest@0.19.0': - resolution: {integrity: sha512-cDmca0jPVFVnRQPqCWcsPPwre27/yAGxSF1+JmPVUeXZYMCrg5wdNepRDSw+/dDBO2VmNHh/Tv+Hgj1fLIM8CQ==} + '@plasmohq/parcel-transformer-manifest@0.20.1': + resolution: {integrity: sha512-fA2d+u7eAURr8Vyi1HAB8zwndBW2czi5YcLgZRVwEqHODYYIyNcmqMJHLt7TAQYTD+POG+z4WpM81AKdhcq8mg==} engines: {parcel: '>= 2.7.0'} '@plasmohq/parcel-transformer-svelte@0.6.0': @@ -1774,8 +1774,8 @@ packages: peerDependencies: '@svgr/core': '*' - '@swc/core-darwin-arm64@1.3.82': - resolution: {integrity: sha512-JfsyDW34gVKD3uE0OUpUqYvAD3yseEaicnFP6pB292THtLJb0IKBBnK50vV/RzEJtc1bR3g1kNfxo2PeurZTrA==} + '@swc/core-darwin-arm64@1.3.96': + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -1786,8 +1786,8 @@ packages: cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.3.82': - resolution: {integrity: sha512-ogQWgNMq7qTpITjcP3dnzkFNj7bh6SwMr859GvtOTrE75H7L7jDWxESfH4f8foB/LGxBKiDNmxKhitCuAsZK4A==} + '@swc/core-darwin-x64@1.3.96': + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -1798,8 +1798,8 @@ packages: cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.3.82': - resolution: {integrity: sha512-7TMXG1lXlNhD0kUiEqs+YlGV4irAdBa2quuy+XI3oJf2fBK6dQfEq4xBy65B3khrorzQS3O0oDGQ+cmdpHExHA==} + '@swc/core-linux-arm-gnueabihf@1.3.96': + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -1810,8 +1810,8 @@ packages: cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.3.82': - resolution: {integrity: sha512-26JkOujbzcItPAmIbD5vHJxQVy5ihcSu3YHTKwope1h28sApZdtE7S3e2G3gsZRTIdsCQkXUtAQeqHxGWWR3pw==} + '@swc/core-linux-arm64-gnu@1.3.96': + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -1822,8 +1822,8 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.3.82': - resolution: {integrity: sha512-8Izj9tuuMpoc3cqiPBRtwqpO1BZ/+sfZVsEhLxrbOFlcSb8LnKyMle1g3JMMUwI4EU75RGVIzZMn8A6GOKdJbA==} + '@swc/core-linux-arm64-musl@1.3.96': + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -1834,8 +1834,8 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.3.82': - resolution: {integrity: sha512-0GSrIBScQwTaPv46T2qB7XnDYxndRCpwH4HMjh6FN+I+lfPUhTSJKW8AonqrqT1TbpFIgvzQs7EnTsD7AnSCow==} + '@swc/core-linux-x64-gnu@1.3.96': + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1846,8 +1846,8 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.3.82': - resolution: {integrity: sha512-KJUnaaepDKNzrEbwz4jv0iC3/t9x0NSoe06fnkAlhh2+NFKWKKJhVCOBTrpds8n7eylBDIXUlK34XQafjVMUdg==} + '@swc/core-linux-x64-musl@1.3.96': + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1858,8 +1858,8 @@ packages: cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.3.82': - resolution: {integrity: sha512-TR3MHKhDYIyGyFcyl2d/p1ftceXcubAhX5wRSOdtOyr5+K/v3jbyCCqN7bbqO5o43wQVCwwR/drHleYyDZvg8Q==} + '@swc/core-win32-arm64-msvc@1.3.96': + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -1870,8 +1870,8 @@ packages: cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.3.82': - resolution: {integrity: sha512-ZX4HzVVt6hs84YUg70UvyBJnBOIspmQQM0iXSzBvOikk3zRoN7BnDwQH4GScvevCEBuou60+i4I6d5kHLOfh8Q==} + '@swc/core-win32-ia32-msvc@1.3.96': + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -1882,8 +1882,8 @@ packages: cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.3.82': - resolution: {integrity: sha512-4mJMnex21kbQoaHeAmHnVwQN9/XAfPszJ6n9HI7SVH+aAHnbBIR0M59/b50/CJMjTj5niUGk7EwQ3nhVNOG32g==} + '@swc/core-win32-x64-msvc@1.3.96': + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -1894,8 +1894,8 @@ packages: cpu: [x64] os: [win32] - '@swc/core@1.3.82': - resolution: {integrity: sha512-jpC1a18HMH67018Ij2jh+hT7JBFu7ZKcQVfrZ8K6JuEY+kjXmbea07P9MbQUZbAe0FB+xi3CqEVCP73MebodJQ==} + '@swc/core@1.3.96': + resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': ^0.5.0 @@ -3269,8 +3269,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - plasmo@0.88.0: - resolution: {integrity: sha512-pL0xA9Y4zZuqQTyOwt0rQ8cahFMZI9toGMCa3aosB3dtzRztSe2rm3LA8hS52UdvnAUXm2A4ecmTlweaGN69Uw==} + plasmo@0.89.4: + resolution: {integrity: sha512-vsoMe8ts0tyW27fZxwQLqWR/58NKqRepLFrZMVBH4ceSIyPDryfPpXzVxmBDH43odbiUVFdh8BGAt2ri2vQuGw==} hasBin: true playwright-core@1.46.0: @@ -4358,7 +4358,7 @@ snapshots: json5: 2.2.3 msgpackr: 1.11.0 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.6.3 '@parcel/diagnostic@2.8.3': dependencies: @@ -4444,7 +4444,7 @@ snapshots: '@parcel/fs': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' @@ -4537,7 +4537,7 @@ snapshots: '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - semver: 7.5.4 + semver: 7.6.3 '@parcel/packager-css@2.9.3(@parcel/core@2.9.3)': dependencies: @@ -4678,7 +4678,7 @@ snapshots: browserslist: 4.23.2 json5: 2.2.3 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' @@ -4711,7 +4711,7 @@ snapshots: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.5.4 + semver: 7.6.3 srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' @@ -4742,7 +4742,7 @@ snapshots: browserslist: 4.23.2 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 - semver: 7.5.4 + semver: 7.6.3 '@parcel/transformer-json@2.9.3(@parcel/core@2.9.3)': dependencies: @@ -4768,7 +4768,7 @@ snapshots: clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' @@ -4780,7 +4780,7 @@ snapshots: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' @@ -4825,7 +4825,7 @@ snapshots: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.5.4 + semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' @@ -4967,7 +4967,7 @@ snapshots: optionalDependencies: react: 18.2.0 - '@plasmohq/parcel-bundler@0.5.5': + '@plasmohq/parcel-bundler@0.5.6': dependencies: '@parcel/core': 2.9.3 '@parcel/diagnostic': 2.9.3 @@ -4977,13 +4977,13 @@ snapshots: '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - '@plasmohq/parcel-compressor-utf8@0.1.0(@parcel/core@2.9.3)': + '@plasmohq/parcel-compressor-utf8@0.1.1(@parcel/core@2.9.3)': dependencies: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) transitivePeerDependencies: - '@parcel/core' - '@plasmohq/parcel-config@0.41.0(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)': + '@plasmohq/parcel-config@0.41.1(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)': dependencies: '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) '@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(@swc/helpers@0.5.12)(postcss@8.4.40)(typescript@5.2.2) @@ -5006,18 +5006,18 @@ snapshots: '@parcel/transformer-sass': 2.9.3(@parcel/core@2.9.3) '@parcel/transformer-svg-react': 2.9.3(@parcel/core@2.9.3) '@parcel/transformer-worklet': 2.9.3(@parcel/core@2.9.3) - '@plasmohq/parcel-bundler': 0.5.5 - '@plasmohq/parcel-compressor-utf8': 0.1.0(@parcel/core@2.9.3) + '@plasmohq/parcel-bundler': 0.5.6 + '@plasmohq/parcel-compressor-utf8': 0.1.1(@parcel/core@2.9.3) '@plasmohq/parcel-namer-manifest': 0.3.12 - '@plasmohq/parcel-optimizer-encapsulate': 0.0.7 - '@plasmohq/parcel-optimizer-es': 0.4.0(@swc/helpers@0.5.12) - '@plasmohq/parcel-packager': 0.6.14 - '@plasmohq/parcel-resolver': 0.14.0 - '@plasmohq/parcel-resolver-post': 0.4.4(@swc/core@1.7.1(@swc/helpers@0.5.12))(postcss@8.4.40) - '@plasmohq/parcel-runtime': 0.25.0 - '@plasmohq/parcel-transformer-inject-env': 0.2.11 + '@plasmohq/parcel-optimizer-encapsulate': 0.0.8 + '@plasmohq/parcel-optimizer-es': 0.4.1(@swc/helpers@0.5.12) + '@plasmohq/parcel-packager': 0.6.15 + '@plasmohq/parcel-resolver': 0.14.1 + '@plasmohq/parcel-resolver-post': 0.4.5(@swc/core@1.7.1(@swc/helpers@0.5.12))(postcss@8.4.40) + '@plasmohq/parcel-runtime': 0.25.1 + '@plasmohq/parcel-transformer-inject-env': 0.2.12 '@plasmohq/parcel-transformer-inline-css': 0.3.11 - '@plasmohq/parcel-transformer-manifest': 0.19.0 + '@plasmohq/parcel-transformer-manifest': 0.20.1 '@plasmohq/parcel-transformer-svelte': 0.6.0 '@plasmohq/parcel-transformer-vue': 0.5.0(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) transitivePeerDependencies: @@ -5080,7 +5080,7 @@ snapshots: - walrus - whiskers - '@plasmohq/parcel-core@0.1.8': + '@plasmohq/parcel-core@0.1.10': dependencies: '@parcel/cache': 2.9.3(@parcel/core@2.9.3) '@parcel/core': 2.9.3 @@ -5107,25 +5107,25 @@ snapshots: '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - '@plasmohq/parcel-optimizer-encapsulate@0.0.7': + '@plasmohq/parcel-optimizer-encapsulate@0.0.8': dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@plasmohq/parcel-optimizer-es@0.4.0(@swc/helpers@0.5.12)': + '@plasmohq/parcel-optimizer-es@0.4.1(@swc/helpers@0.5.12)': dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 - '@swc/core': 1.3.82(@swc/helpers@0.5.12) + '@swc/core': 1.3.96(@swc/helpers@0.5.12) nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' - '@plasmohq/parcel-packager@0.6.14': + '@plasmohq/parcel-packager@0.6.15': dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) @@ -5133,7 +5133,7 @@ snapshots: '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - '@plasmohq/parcel-resolver-post@0.4.4(@swc/core@1.7.1(@swc/helpers@0.5.12))(postcss@8.4.40)': + '@plasmohq/parcel-resolver-post@0.4.5(@swc/core@1.7.1(@swc/helpers@0.5.12))(postcss@8.4.40)': dependencies: '@parcel/core': 2.9.3 '@parcel/hash': 2.9.3 @@ -5148,7 +5148,7 @@ snapshots: - supports-color - ts-node - '@plasmohq/parcel-resolver@0.14.0': + '@plasmohq/parcel-resolver@0.14.1': dependencies: '@parcel/core': 2.9.3 '@parcel/hash': 2.9.3 @@ -5158,14 +5158,14 @@ snapshots: fs-extra: 11.1.1 got: 13.0.0 - '@plasmohq/parcel-runtime@0.25.0': + '@plasmohq/parcel-runtime@0.25.1': dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@types/trusted-types': 2.0.7 react-refresh: 0.14.0 - '@plasmohq/parcel-transformer-inject-env@0.2.11': + '@plasmohq/parcel-transformer-inject-env@0.2.12': dependencies: '@parcel/core': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) @@ -5179,7 +5179,7 @@ snapshots: browserslist: 4.22.1 lightningcss: 1.21.8 - '@plasmohq/parcel-transformer-manifest@0.19.0': + '@plasmohq/parcel-transformer-manifest@0.20.1': dependencies: '@mischnic/json-sourcemap': 0.1.0 '@parcel/core': 2.9.3 @@ -5899,80 +5899,81 @@ snapshots: deepmerge: 4.3.1 svgo: 2.8.0 - '@swc/core-darwin-arm64@1.3.82': + '@swc/core-darwin-arm64@1.3.96': optional: true '@swc/core-darwin-arm64@1.7.1': optional: true - '@swc/core-darwin-x64@1.3.82': + '@swc/core-darwin-x64@1.3.96': optional: true '@swc/core-darwin-x64@1.7.1': optional: true - '@swc/core-linux-arm-gnueabihf@1.3.82': + '@swc/core-linux-arm-gnueabihf@1.3.96': optional: true '@swc/core-linux-arm-gnueabihf@1.7.1': optional: true - '@swc/core-linux-arm64-gnu@1.3.82': + '@swc/core-linux-arm64-gnu@1.3.96': optional: true '@swc/core-linux-arm64-gnu@1.7.1': optional: true - '@swc/core-linux-arm64-musl@1.3.82': + '@swc/core-linux-arm64-musl@1.3.96': optional: true '@swc/core-linux-arm64-musl@1.7.1': optional: true - '@swc/core-linux-x64-gnu@1.3.82': + '@swc/core-linux-x64-gnu@1.3.96': optional: true '@swc/core-linux-x64-gnu@1.7.1': optional: true - '@swc/core-linux-x64-musl@1.3.82': + '@swc/core-linux-x64-musl@1.3.96': optional: true '@swc/core-linux-x64-musl@1.7.1': optional: true - '@swc/core-win32-arm64-msvc@1.3.82': + '@swc/core-win32-arm64-msvc@1.3.96': optional: true '@swc/core-win32-arm64-msvc@1.7.1': optional: true - '@swc/core-win32-ia32-msvc@1.3.82': + '@swc/core-win32-ia32-msvc@1.3.96': optional: true '@swc/core-win32-ia32-msvc@1.7.1': optional: true - '@swc/core-win32-x64-msvc@1.3.82': + '@swc/core-win32-x64-msvc@1.3.96': optional: true '@swc/core-win32-x64-msvc@1.7.1': optional: true - '@swc/core@1.3.82(@swc/helpers@0.5.12)': + '@swc/core@1.3.96(@swc/helpers@0.5.12)': dependencies: + '@swc/counter': 0.1.3 '@swc/types': 0.1.12 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.82 - '@swc/core-darwin-x64': 1.3.82 - '@swc/core-linux-arm-gnueabihf': 1.3.82 - '@swc/core-linux-arm64-gnu': 1.3.82 - '@swc/core-linux-arm64-musl': 1.3.82 - '@swc/core-linux-x64-gnu': 1.3.82 - '@swc/core-linux-x64-musl': 1.3.82 - '@swc/core-win32-arm64-msvc': 1.3.82 - '@swc/core-win32-ia32-msvc': 1.3.82 - '@swc/core-win32-x64-msvc': 1.3.82 + '@swc/core-darwin-arm64': 1.3.96 + '@swc/core-darwin-x64': 1.3.96 + '@swc/core-linux-arm-gnueabihf': 1.3.96 + '@swc/core-linux-arm64-gnu': 1.3.96 + '@swc/core-linux-arm64-musl': 1.3.96 + '@swc/core-linux-x64-gnu': 1.3.96 + '@swc/core-linux-x64-musl': 1.3.96 + '@swc/core-win32-arm64-msvc': 1.3.96 + '@swc/core-win32-ia32-msvc': 1.3.96 + '@swc/core-win32-x64-msvc': 1.3.96 '@swc/helpers': 0.5.12 '@swc/core@1.7.1(@swc/helpers@0.5.12)': @@ -7179,7 +7180,7 @@ snapshots: node-abi@3.65.0: dependencies: - semver: 7.5.4 + semver: 7.6.3 node-addon-api@4.3.0: {} @@ -7253,7 +7254,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.5.4 + semver: 7.6.3 parent-module@1.0.1: dependencies: @@ -7298,7 +7299,7 @@ snapshots: pirates@4.0.6: {} - plasmo@0.88.0(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + plasmo@0.89.4(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@expo/spawn-async': 1.7.2 '@parcel/core': 2.9.3 @@ -7306,8 +7307,8 @@ snapshots: '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) '@parcel/watcher': 2.2.0 '@plasmohq/init': 0.7.0 - '@plasmohq/parcel-config': 0.41.0(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2) - '@plasmohq/parcel-core': 0.1.8 + '@plasmohq/parcel-config': 0.41.1(@swc/core@1.7.1(@swc/helpers@0.5.12))(@swc/helpers@0.5.12)(lodash@4.17.21)(postcss@8.4.40)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2) + '@plasmohq/parcel-core': 0.1.10 buffer: 6.0.3 chalk: 5.3.0 change-case: 5.1.2 @@ -7657,7 +7658,7 @@ snapshots: detect-libc: 2.0.3 node-addon-api: 6.1.0 prebuild-install: 7.1.2 - semver: 7.5.4 + semver: 7.6.3 simple-get: 4.0.1 tar-fs: 3.0.6 tunnel-agent: 0.6.0