mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-05 08:10:14 +00:00
154 lines
4 KiB
TypeScript
154 lines
4 KiB
TypeScript
// Support prompts
|
|
type PromptParams = Record<string, string | any[]>
|
|
|
|
const generateDiagnosticText = (diagnostics?: any[]) => {
|
|
if (!diagnostics?.length) return ""
|
|
return `\nCurrent problems detected:\n${diagnostics
|
|
.map((d) => `- [${d.source || "Error"}] ${d.message}${d.code ? ` (${d.code})` : ""}`)
|
|
.join("\n")}`
|
|
}
|
|
|
|
export const createPrompt = (template: string, params: PromptParams): string => {
|
|
return template.replace(/\${(.*?)}/g, (_, key) => {
|
|
if (key === "diagnosticText") {
|
|
return generateDiagnosticText(params["diagnostics"] as any[])
|
|
// eslint-disable-next-line no-prototype-builtins
|
|
} else if (params.hasOwnProperty(key)) {
|
|
// Ensure the value is treated as a string for replacement
|
|
const value = params[key]
|
|
if (typeof value === "string") {
|
|
return value
|
|
} else {
|
|
// Convert non-string values to string for replacement
|
|
return String(value)
|
|
}
|
|
} else {
|
|
// If the placeholder key is not in params, replace with empty string
|
|
return ""
|
|
}
|
|
})
|
|
}
|
|
|
|
interface SupportPromptConfig {
|
|
template: string
|
|
}
|
|
|
|
type SupportPromptType =
|
|
| "ENHANCE"
|
|
| "EXPLAIN"
|
|
| "FIX"
|
|
| "IMPROVE"
|
|
| "ADD_TO_CONTEXT"
|
|
| "TERMINAL_ADD_TO_CONTEXT"
|
|
| "TERMINAL_FIX"
|
|
| "TERMINAL_EXPLAIN"
|
|
| "NEW_TASK"
|
|
|
|
const supportPromptConfigs: Record<SupportPromptType, SupportPromptConfig> = {
|
|
ENHANCE: {
|
|
template: `Generate an enhanced version of this prompt (reply with only the enhanced prompt - no conversation, explanations, lead-in, bullet points, placeholders, or surrounding quotes):
|
|
|
|
\${userInput}`,
|
|
},
|
|
EXPLAIN: {
|
|
template: `Explain the following code from file path \${filePath}:\${startLine}-\${endLine}
|
|
\${userInput}
|
|
|
|
\`\`\`
|
|
\${selectedText}
|
|
\`\`\`
|
|
|
|
Please provide a clear and concise explanation of what this code does, including:
|
|
1. The purpose and functionality
|
|
2. Key components and their interactions
|
|
3. Important patterns or techniques used`,
|
|
},
|
|
FIX: {
|
|
template: `Fix any issues in the following code from file path \${filePath}:\${startLine}-\${endLine}
|
|
\${diagnosticText}
|
|
\${userInput}
|
|
|
|
\`\`\`
|
|
\${selectedText}
|
|
\`\`\`
|
|
|
|
Please:
|
|
1. Address all detected problems listed above (if any)
|
|
2. Identify any other potential bugs or issues
|
|
3. Provide corrected code
|
|
4. Explain what was fixed and why`,
|
|
},
|
|
IMPROVE: {
|
|
template: `Improve the following code from file path \${filePath}:\${startLine}-\${endLine}
|
|
\${userInput}
|
|
|
|
\`\`\`
|
|
\${selectedText}
|
|
\`\`\`
|
|
|
|
Please suggest improvements for:
|
|
1. Code readability and maintainability
|
|
2. Performance optimization
|
|
3. Best practices and patterns
|
|
4. Error handling and edge cases
|
|
|
|
Provide the improved code along with explanations for each enhancement.`,
|
|
},
|
|
ADD_TO_CONTEXT: {
|
|
template: `\${filePath}:\${startLine}-\${endLine}
|
|
\`\`\`
|
|
\${selectedText}
|
|
\`\`\``,
|
|
},
|
|
TERMINAL_ADD_TO_CONTEXT: {
|
|
template: `\${userInput}
|
|
Terminal output:
|
|
\`\`\`
|
|
\${terminalContent}
|
|
\`\`\``,
|
|
},
|
|
TERMINAL_FIX: {
|
|
template: `\${userInput}
|
|
Fix this terminal command:
|
|
\`\`\`
|
|
\${terminalContent}
|
|
\`\`\`
|
|
|
|
Please:
|
|
1. Identify any issues in the command
|
|
2. Provide the corrected command
|
|
3. Explain what was fixed and why`,
|
|
},
|
|
TERMINAL_EXPLAIN: {
|
|
template: `\${userInput}
|
|
Explain this terminal command:
|
|
\`\`\`
|
|
\${terminalContent}
|
|
\`\`\`
|
|
|
|
Please provide:
|
|
1. What the command does
|
|
2. Explanation of each part/flag
|
|
3. Expected output and behavior`,
|
|
},
|
|
NEW_TASK: {
|
|
template: `\${userInput}`,
|
|
},
|
|
} as const
|
|
|
|
export const supportPrompt = {
|
|
default: Object.fromEntries(Object.entries(supportPromptConfigs).map(([key, config]) => [key, config.template])),
|
|
get: (customSupportPrompts: Record<string, any> | undefined, type: SupportPromptType): string => {
|
|
return customSupportPrompts?.[type] ?? supportPromptConfigs[type].template
|
|
},
|
|
create: (type: SupportPromptType, params: PromptParams, customSupportPrompts?: Record<string, any>): string => {
|
|
const template = supportPrompt.get(customSupportPrompts, type)
|
|
return createPrompt(template, params)
|
|
},
|
|
} as const
|
|
|
|
export type { SupportPromptType }
|
|
|
|
export type CustomSupportPrompts = {
|
|
[key: string]: string | undefined
|
|
}
|