Skip to content

Commit 54158ba

Browse files
authored
feat(amazonq): Add inline chat to context menu and reject empty inputs (#5879)
This PR adds the "Inline chat" menu option to the right click context menu and command palette. It also rejects empty inputs to inline chat to make it clearer to users they must input text into the dialog. License: I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent 67225e2 commit 54158ba

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

packages/amazonq/package.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,10 @@
366366
{
367367
"command": "aws.amazonq.sendToPrompt",
368368
"group": "cw_chat@6"
369+
},
370+
{
371+
"command": "aws.amazonq.inline.invokeChat",
372+
"group": "cw_chat@7"
369373
}
370374
],
371375
"editor/context": [
@@ -594,6 +598,12 @@
594598
"title": "%AWS.amazonq.toggleCodeScan%",
595599
"category": "%AWS.amazonq.title%",
596600
"enablement": "aws.codewhisperer.connected"
601+
},
602+
{
603+
"command": "aws.amazonq.inline.invokeChat",
604+
"title": "%AWS.amazonq.inline.invokeChat%",
605+
"category": "%AWS.amazonq.title%",
606+
"enablement": "aws.codewhisperer.connected"
597607
}
598608
],
599609
"keybindings": [
@@ -669,7 +679,7 @@
669679
"when": "inlineSuggestionVisible && !editorReadonly && aws.codewhisperer.connected"
670680
},
671681
{
672-
"command": "aws.amazonq.inline.waitForUserInput",
682+
"command": "aws.amazonq.inline.invokeChat",
673683
"win": "ctrl+i",
674684
"mac": "cmd+i",
675685
"linux": "ctrl+i",

packages/amazonq/src/inlineChat/command/registerInlineCommands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { InlineTask } from '../controller/inlineTask'
99

1010
export function registerInlineCommands(context: vscode.ExtensionContext, inlineChatController: InlineChatController) {
1111
context.subscriptions.push(
12-
vscode.commands.registerCommand('aws.amazonq.inline.waitForUserInput', async () => {
12+
vscode.commands.registerCommand('aws.amazonq.inline.invokeChat', async () => {
1313
await inlineChatController.inlineQuickPick()
1414
}),
1515
vscode.commands.registerCommand('aws.amazonq.inline.waitForUserDecisionAcceptAll', async (task: InlineTask) => {

packages/amazonq/src/inlineChat/controller/inlineChatController.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { responseTransformer } from '../output/responseTransformer'
1111
import { adjustTextDiffForEditing, computeDiff } from '../output/computeDiff'
1212
import { computeDecorations } from '../decorations/computeDecorations'
1313
import { CodelensProvider } from '../codeLenses/codeLenseProvider'
14-
import { ReferenceLogController } from 'aws-core-vscode/codewhispererChat'
14+
import { PromptMessage, ReferenceLogController } from 'aws-core-vscode/codewhispererChat'
1515
import { CodeWhispererSettings } from 'aws-core-vscode/codewhisperer'
1616
import { codicon, getIcon, getLogger, messages, setContext, Timeout, textDocumentUtil } from 'aws-core-vscode/shared'
1717
import { InlineLineAnnotationController } from '../decorations/inlineLineAnnotationController'
@@ -176,10 +176,12 @@ export class InlineChatController {
176176
prompt: codicon`${getIcon('aws-amazonq-q-white')} Edit code`,
177177
})
178178
.then(async (query) => {
179-
this.userQuery = query
180-
if (!query) {
179+
if (!query || query.trim() === '') {
180+
void vscode.window.showWarningMessage('Amazon Q: Instructions for cannot be empty')
181181
return
182182
}
183+
184+
this.userQuery = query
183185
await textDocumentUtil.addEofNewline(editor)
184186
this.task = await this.createTask(query, editor.document, editor.selection)
185187
await this.inlineLineAnnotationController.disable(editor)
@@ -201,11 +203,10 @@ export class InlineChatController {
201203
}
202204

203205
await this.updateTaskAndLenses(this.task, TaskState.InProgress)
204-
const prompt = query
205-
getLogger().info(`prompt:\n${prompt}`)
206+
getLogger().info(`inline chat query:\n${query}`)
206207
const uuid = randomUUID()
207-
const message = {
208-
message: prompt,
208+
const message: PromptMessage = {
209+
message: query,
209210
messageId: uuid,
210211
command: undefined,
211212
userIntent: undefined,

packages/core/package.nls.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,5 +321,6 @@
321321
"AWS.amazonq.featureDev.placeholder.additionalImprovements": "Describe your task or issue in detail",
322322
"AWS.amazonq.featureDev.placeholder.feedback": "Provide feedback or comments",
323323
"AWS.amazonq.featureDev.placeholder.describe": "Describe your task or issue in detail",
324-
"AWS.amazonq.featureDev.placeholder.sessionClosed": "Open a new chat tab to continue"
324+
"AWS.amazonq.featureDev.placeholder.sessionClosed": "Open a new chat tab to continue",
325+
"AWS.amazonq.inline.invokeChat": "Inline chat"
325326
}

0 commit comments

Comments
 (0)