diff --git a/src/vs/workbench/contrib/void/common/prompt/prompts.ts b/src/vs/workbench/contrib/void/common/prompt/prompts.ts index 964ad598..fc2c554b 100644 --- a/src/vs/workbench/contrib/void/common/prompt/prompts.ts +++ b/src/vs/workbench/contrib/void/common/prompt/prompts.ts @@ -446,9 +446,9 @@ export const DIVIDER = `=======` export const FINAL = `>>>>>>> UPDATED` export const searchReplace_systemMessage = `\ -You are a coding assistant that generates SEARCH/REPLACE code blocks that will be used to edit a file. +You are a coding assistant that takes in a high-level code description of a change to make, and outputs SEARCH/REPLACE code blocks which implement the change EXACTLY as described. -A SEARCH/REPLACE block describes the code before and after a change. Here is the format: +Format your SEARCH/REPLACE blocks as follows: ${tripleTick[0]} ${ORIGINAL} // ... original code goes here @@ -457,21 +457,19 @@ ${DIVIDER} ${FINAL} ${tripleTick[1]} -You will be given the original file \`ORIGINAL_FILE\` and a diff to apply to the file, \`CHANGE\`. -Output SEARCH/REPLACE blocks to edit the file according to the desired change. You may output multiple SEARCH/REPLACE blocks. -Be sure to output a change for every single item that changed from the original file to the given change, including comments. +1. The change to make will be labeled \`CHANGE\` and the original file will be labeled \`ORIGINAL_FILE\`. -Directions: -1. Your OUTPUT should consist ONLY of SEARCH/REPLACE blocks. Do NOT output any text or explanations before or after this. -2. The "ORIGINAL" code in each SEARCH/REPLACE block must EXACTLY match lines in the original file. The original code must NOT includes any new whitespace, comments, or any other modifications from the original code. -3. The "ORIGINAL" code in each SEARCH/REPLACE block must include enough text to uniquely identify the change in the file, but please bias towards writing as little as possible. -4. The "ORIGINAL" code in each SEARCH/REPLACE block must be disjoint from all other blocks. +2. You are allowed to output multiple SEARCH/REPLACE blocks. -The SEARCH/REPLACE blocks you generate will be applied immediately, and so they **MUST** produce a file that the user can run IMMEDIATELY. -- Make sure you add all necessary imports. -- Make sure the "UPDATED" code is ready for production as-is, and fix any relevant lint errors. +3. Your SEARCH/REPLACE block(s) must implement the change EXACTLY. Do not introduce (or omit) any new comments, spaces, or whitespace. -Follow coding conventions of the user (spaces, semilcolons, comments, etc). If the user spaces or formats things a certain way, CONTINUE formatting it that way, even if you prefer otherwise. +4. Your output should consist ONLY of SEARCH/REPLACE blocks. Do NOT output any text or explanations before or after this. + +5. The ORIGINAL code in each SEARCH/REPLACE block must EXACTLY match lines in the original file. Do not add or remove any whitespace, comments, or modifications from the original code. + +6. Each ORIGINAL text must be large enough to uniquely identify the change in the file. However; bias towards writing as little as possible. + +7. Each ORIGINAL text must be DISJOINT from all other ORIGINAL text. ## EXAMPLE 1 ORIGINAL_FILE @@ -483,7 +481,6 @@ let z = 8 ${tripleTick[1]} CHANGE -Make x equal to 6.5, not 6. ${tripleTick[0]} // ... existing code let x = 6.5 @@ -502,11 +499,14 @@ ${tripleTick[1]} ` export const searchReplace_userMessage = ({ originalCode, applyStr }: { originalCode: string, applyStr: string }) => `\ -ORIGINAL_FILE -${originalCode} - CHANGE -${applyStr}` +${applyStr} + +ORIGINAL_FILE +${tripleTick[0]} +${originalCode} +${tripleTick[1]} +`