feat: copilot context menu for tool
This commit is contained in:
162
src/services/application.ts
Normal file
162
src/services/application.ts
Normal file
@@ -0,0 +1,162 @@
|
||||
import { Storage } from "@plasmohq/storage"
|
||||
const storage = new Storage()
|
||||
|
||||
const DEFAULT_SUMMARY_PROMPT = `Provide a concise summary of the following text, capturing its main ideas and key points:
|
||||
|
||||
Text:
|
||||
---------
|
||||
{text}
|
||||
---------
|
||||
|
||||
Summarize the text in no more than 3-4 sentences.
|
||||
|
||||
Response:`
|
||||
|
||||
const DEFAULT_REPHRASE_PROMPT = `Rewrite the following text in a different way, maintaining its original meaning but using alternative vocabulary and sentence structures:
|
||||
|
||||
Text:
|
||||
---------
|
||||
{text}
|
||||
---------
|
||||
|
||||
Ensure that your rephrased version conveys the same information and intent as the original.
|
||||
|
||||
Response:`
|
||||
|
||||
const DEFAULT_TRANSLATE_PROMPT = `Translate the following text from its original language into "english"0. Maintain the tone and style of the original text as much as possible:
|
||||
|
||||
Text:
|
||||
---------
|
||||
{text}
|
||||
---------
|
||||
|
||||
Response:`
|
||||
|
||||
const DEFAULT_EXPLAIN_PROMPT = `Provide a detailed explanation of the following text, breaking down its key concepts, implications, and context:
|
||||
|
||||
Text:
|
||||
---------
|
||||
{text}
|
||||
---------
|
||||
|
||||
Your explanation should:
|
||||
|
||||
Clarify any complex terms or ideas
|
||||
Provide relevant background information
|
||||
Discuss the significance or implications of the content
|
||||
Address any potential questions a reader might have
|
||||
Use examples or analogies to illustrate points when appropriate
|
||||
|
||||
Aim for a comprehensive explanation that would help someone with little prior knowledge fully understand the text.
|
||||
|
||||
Response:`
|
||||
|
||||
const DEFAULT_CUSTOM_PROMPT = `{text}`
|
||||
|
||||
export const getSummaryPrompt = async () => {
|
||||
return (await storage.get("copilotSummaryPrompt")) || DEFAULT_SUMMARY_PROMPT
|
||||
}
|
||||
|
||||
export const setSummaryPrompt = async (prompt: string) => {
|
||||
await storage.set("copilotSummaryPrompt", prompt)
|
||||
}
|
||||
|
||||
export const getRephrasePrompt = async () => {
|
||||
return (await storage.get("copilotRephrasePrompt")) || DEFAULT_REPHRASE_PROMPT
|
||||
}
|
||||
|
||||
export const setRephrasePrompt = async (prompt: string) => {
|
||||
await storage.set("copilotRephrasePrompt", prompt)
|
||||
}
|
||||
|
||||
export const getTranslatePrompt = async () => {
|
||||
return (
|
||||
(await storage.get("copilotTranslatePrompt")) || DEFAULT_TRANSLATE_PROMPT
|
||||
)
|
||||
}
|
||||
|
||||
export const setTranslatePrompt = async (prompt: string) => {
|
||||
await storage.set("copilotTranslatePrompt", prompt)
|
||||
}
|
||||
|
||||
export const getExplainPrompt = async () => {
|
||||
return (await storage.get("copilotExplainPrompt")) || DEFAULT_EXPLAIN_PROMPT
|
||||
}
|
||||
|
||||
export const setExplainPrompt = async (prompt: string) => {
|
||||
await storage.set("copilotExplainPrompt", prompt)
|
||||
}
|
||||
|
||||
export const getCustomPrompt = async () => {
|
||||
return (await storage.get("copilotCustomPrompt")) || DEFAULT_CUSTOM_PROMPT
|
||||
}
|
||||
|
||||
export const setCustomPrompt = async (prompt: string) => {
|
||||
await storage.set("copilotCustomPrompt", prompt)
|
||||
}
|
||||
|
||||
export const getAllCopilotPrompts = async () => {
|
||||
const [
|
||||
summaryPrompt,
|
||||
rephrasePrompt,
|
||||
translatePrompt,
|
||||
explainPrompt,
|
||||
customPrompt
|
||||
] = await Promise.all([
|
||||
getSummaryPrompt(),
|
||||
getRephrasePrompt(),
|
||||
getTranslatePrompt(),
|
||||
getExplainPrompt(),
|
||||
getCustomPrompt()
|
||||
])
|
||||
|
||||
return [
|
||||
{ key: "summary", prompt: summaryPrompt },
|
||||
{ key: "rephrase", prompt: rephrasePrompt },
|
||||
{ key: "translate", prompt: translatePrompt },
|
||||
{ key: "explain", prompt: explainPrompt },
|
||||
{ key: "custom", prompt: customPrompt }
|
||||
]
|
||||
}
|
||||
|
||||
export const setAllCopilotPrompts = async (
|
||||
prompts: { key: string; prompt: string }[]
|
||||
) => {
|
||||
for (const { key, prompt } of prompts) {
|
||||
switch (key) {
|
||||
case "summary":
|
||||
await setSummaryPrompt(prompt)
|
||||
break
|
||||
case "rephrase":
|
||||
await setRephrasePrompt(prompt)
|
||||
break
|
||||
case "translate":
|
||||
await setTranslatePrompt(prompt)
|
||||
break
|
||||
case "explain":
|
||||
await setExplainPrompt(prompt)
|
||||
break
|
||||
case "custom":
|
||||
await setCustomPrompt(prompt)
|
||||
break
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const getPrompt = async (key: string) => {
|
||||
switch (key) {
|
||||
case "summary":
|
||||
return await getSummaryPrompt()
|
||||
case "rephrase":
|
||||
return await getRephrasePrompt()
|
||||
case "translate":
|
||||
return await getTranslatePrompt()
|
||||
case "explain":
|
||||
return await getExplainPrompt()
|
||||
case "custom":
|
||||
return await getCustomPrompt()
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user