Skip to content

Commit dfc7867

Browse files
committed
Updates Console Fix/Explain to use more concise prompt and format
1 parent 7d449e2 commit dfc7867

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

src/vs/workbench/contrib/positronConsole/browser/components/activityErrorMessage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export const ActivityErrorMessage = (props: ActivityErrorMessageProps) => {
9696
{props.activityItemErrorMessage.tracebackOutputLines.length > 0 &&
9797
<Traceback />
9898
}
99-
<ConsoleQuickFix />
99+
<ConsoleQuickFix outputLines={props.activityItemErrorMessage.messageOutputLines} tracebackLines={props.activityItemErrorMessage.tracebackOutputLines} />
100100
</div>
101101
</div>
102102
</div>

src/vs/workbench/contrib/positronConsole/browser/components/activityErrorQuickFix.tsx

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,54 @@
88
import './activityErrorQuickFix.css';
99

1010
// React.
11-
import React, { useRef } from 'react';
11+
import React, { useMemo, useRef } from 'react';
1212

1313
// Other dependencies.
1414
import { localize } from '../../../../../nls.js';
1515
import { PositronButton } from '../../../../../base/browser/ui/positronComponents/button/positronButton.js';
1616
import { usePositronReactServicesContext } from '../../../../../base/browser/positronReactRendererContext.js';
17+
import { ANSIOutputLine } from '../../../../../base/common/ansiOutput.js';
1718

18-
const fixPrompt = localize('positronConsoleErrorFixPrompt', "You are going to provide a quick fix for a Positron Console error. The Console session is attached. Provide the user an code snippet that can be applied to the Positron Console to fix the error, or explain why the error is occurring only if you cannot resolve it on your own.");
19-
const explainPrompt = localize('positronConsoleErrorExplainPrompt', "You are going to provide an explanation for a Positron Console error. The Console session is attached. Provide the user an explanation of why the error is occurring, and how they can resolve it. Do not provide a code snippet unless it is necessary to explain the error.");
19+
const fixPrompt = '/fix';
20+
const explainPrompt = '/explain';
2021

22+
interface ConsoleQuickFixProps {
23+
outputLines: ANSIOutputLine[];
24+
tracebackLines: ANSIOutputLine[];
25+
}
26+
27+
const formatOutput = (outputLines: ANSIOutputLine[], tracebackLines: ANSIOutputLine[]) => {
28+
return outputLines.map(line => line.outputRuns.map(run => run.text).join('')).join('\n') + '\n' + tracebackLines.map(line => line.outputRuns.map(run => run.text).join('')).join('\n');
29+
};
2130

2231
/**
2332
* Quick fix component.
2433
* @returns The rendered component.
2534
*/
26-
export const ConsoleQuickFix = () => {
35+
export const ConsoleQuickFix = (props: ConsoleQuickFixProps) => {
2736
const buttonRef = useRef<HTMLDivElement>(undefined!);
2837
const { quickChatService } = usePositronReactServicesContext();
38+
39+
const formattedOutput = useMemo(() => {
40+
return formatOutput(props.outputLines, props.tracebackLines);
41+
}, [props.outputLines, props.tracebackLines]);
2942
/**
3043
* onClick handlers.
3144
*/
3245
const pressedFixHandler = async () => {
3346
// Handle console quick fix action.
34-
quickChatService.openOne({ query: fixPrompt });
47+
quickChatService.openOne({
48+
query: props.outputLines ? `${fixPrompt}\n\`\`\`${formattedOutput}\`\`\`` : fixPrompt,
49+
renderInputOnTop: false
50+
});
3551
};
3652

3753
const pressedExplainHandler = async () => {
3854
// Handle console quick explain action.
39-
quickChatService.openOne({ query: explainPrompt });
55+
quickChatService.openOne({
56+
query: props.outputLines ? `${explainPrompt}\n\`\`\`${formattedOutput}\`\`\`` : explainPrompt,
57+
renderInputOnTop: false
58+
});
4059
};
4160

4261
// Render.

0 commit comments

Comments
 (0)