Skip to content

Commit e95bd37

Browse files
committed
Add prune-context mode for context pruning functionality
1 parent bc55d43 commit e95bd37

5 files changed

Lines changed: 50 additions & 10 deletions

File tree

‎packages/browser/src/content-scripts/send-prompt-content-script/send-prompt-content-script.ts‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,12 @@ const main = async () => {
196196
client_id: number
197197
raw_instructions?: string
198198
edit_format?: string
199-
mode?: 'ask' | 'edit-context' | 'code-completions' | 'no-context'
199+
mode?:
200+
| 'ask'
201+
| 'edit-context'
202+
| 'code-completions'
203+
| 'no-context'
204+
| 'prune-context'
200205
}
201206

202207
if (!stored_data) {
@@ -231,7 +236,8 @@ const main = async () => {
231236
if (
232237
chatbot?.inject_apply_response_button &&
233238
(stored_data.mode == 'edit-context' ||
234-
stored_data.mode == 'code-completions')
239+
stored_data.mode == 'code-completions' ||
240+
stored_data.mode == 'prune-context')
235241
) {
236242
sessionStorage.setItem(
237243
session_data_key,

‎packages/vscode/src/commands/apply-chat-response-command/response-processor.ts‎

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,43 @@ export const process_chat_response = async (
139139

140140
quick_pick_items.sort((a, b) => natural_sort(a.label, b.label))
141141

142-
const selected_items = await vscode.window.showQuickPick(quick_pick_items, {
143-
canPickMany: true,
144-
placeHolder: 'Confirm context pruning'
142+
const quick_pick = vscode.window.createQuickPick()
143+
quick_pick.items = quick_pick_items
144+
quick_pick.selectedItems = quick_pick_items.filter((i) => i.picked)
145+
quick_pick.canSelectMany = true
146+
quick_pick.title = 'Context Pruning'
147+
quick_pick.placeholder = 'Confirm file selection'
148+
quick_pick.buttons = [
149+
{ iconPath: new vscode.ThemeIcon('close'), tooltip: 'Close' }
150+
]
151+
152+
const selected_items = await new Promise<
153+
readonly vscode.QuickPickItem[] | undefined
154+
>((resolve) => {
155+
let is_accepted = false
156+
const disposables: vscode.Disposable[] = []
157+
158+
disposables.push(
159+
quick_pick.onDidTriggerButton((button) => {
160+
if (button.tooltip == 'Close') {
161+
quick_pick.hide()
162+
resolve(undefined)
163+
}
164+
}),
165+
quick_pick.onDidAccept(() => {
166+
is_accepted = true
167+
resolve(quick_pick.selectedItems)
168+
quick_pick.hide()
169+
}),
170+
quick_pick.onDidHide(() => {
171+
if (!is_accepted) {
172+
resolve(undefined)
173+
}
174+
disposables.forEach((d) => d.dispose())
175+
quick_pick.dispose()
176+
})
177+
)
178+
quick_pick.show()
145179
})
146180

147181
if (selected_items && selected_items.length > 0) {
@@ -160,7 +194,7 @@ export const process_chat_response = async (
160194

161195
if (files_to_check.length > 0) {
162196
await workspace_provider.set_checked_files(files_to_check)
163-
vscode.window.showInformationMessage(`Context updated successfully.`)
197+
vscode.window.showInformationMessage(`Context pruned successfully.`)
164198
}
165199
}
166200

‎packages/vscode/src/commands/apply-chat-response-command/utils/clipboard-parser/parsers/relevant-files-parser.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const parse_relevant_files = (params: {
77
let start_index = -1
88

99
for (let i = 0; i < lines.length; i++) {
10-
if (lines[i].trim().match(/^###\s+Relevant files/i)) {
10+
if (lines[i].trim().match(/^\*\*Relevant files:\*\*/i)) {
1111
start_index = i
1212
break
1313
}

‎packages/vscode/src/commands/apply-chat-response-command/utils/clipboard-parser/test-cases/relevant-files/relevant-files.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
### Relevant files
1+
**Relevant files:**
22

33
* `src/hello.ts`
44
- `src/welcome.ts`

‎packages/vscode/src/constants/instructions.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ export const commit_message_instructions =
3131

3232
export const prune_context_instructions = `Find relevant files for the task.
3333
<system>
34-
Your response must begin with a markdown heading "### Relevant files", then list paths relevant for the task one under another. Don't send anything else. Example:
34+
Your response must begin with "**Relevant files:**", then list paths relevant for the task one under another. Don't send anything else. Example:
3535
36-
### Relevant files
36+
**Relevant files:**
3737
3838
- \`src/hello.ts\`
3939
- \`src/welcome.ts\`

0 commit comments

Comments
 (0)