Files
nms/background/background.js
2025-11-12 14:45:37 -05:00

51 lines
1.7 KiB
JavaScript

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)
}
})