import { CreateMLCEngine } from "@mlc-ai/web-llm" var engine = null var resume = "" var resourcesLoaded = false const loadProgress = (progress) => { console.dir(progress) // Trigger popup and stream progress.timeElapsed } const loadResources = async () => { let modelName = (await browser.storage.local.get("model")).model || "Llama-3.2-1B-Instruct-q4f32_1-MLC" console.log(`Loading model: ${modelName}`) engine = await CreateMLCEngine(modelName, { initProgressCallback: loadProgress }) console.log("Model loaded") resume = (await browser.storage.local.get("resume")).resume || "No resume, halt and ask for resume." resourcesLoaded = true } const runMatch = async (inputText) => { console.log("Run Match") if (!resourcesLoaded) await loadResources() const query = [ { role: "system", content: "You are a resume-job description matching assistant." }, { role: "user", content: `This is my resume: ${resume}` }, { role: "user", content: `This is the job description: ${inputText}` } ] const response = await engine.chat.completions.create({ messages: query }) console.dir(response) window.alert(response.choices[0].message.content) } // Add context menu items browser.contextMenus.create({ id: "nms-cmenu", title: "NoticeMe", contexts: ["selection"] }, () => void browser.runtime.lastError) browser.contextMenus.onClicked.addListener((info, tab) => { if (info.menuItemId === "nms-cmenu" && info.selectionText) { // Handle context menu click with selected text console.log("Context menu clicked with selection:", info.selectionText) runMatch(info.selectionText) } })