Skip to content

Commit 49687a7

Browse files
authored
Merge pull request aws#6851 from ashishrp-aws/feature/agentic-chat
feat(chat): fix for q agentic chat loop
2 parents 6269bce + 3c316e5 commit 49687a7

File tree

3 files changed

+42
-38
lines changed

3 files changed

+42
-38
lines changed

packages/core/src/codewhispererChat/controllers/chat/controller.ts

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ import {
7979
aditionalContentNameLimit,
8080
additionalContentInnerContextLimit,
8181
contextMaxLength,
82+
tools,
8283
} from '../../constants'
8384
import { ChatSession } from '../../clients/chat/v0/chat'
8485
import { ChatHistoryManager } from '../../storages/chatHistory'
@@ -775,13 +776,6 @@ export class ChatController {
775776
command,
776777
})
777778

778-
this.chatHistoryManager.appendUserMessage({
779-
userInputMessage: {
780-
content: prompt,
781-
userIntent: this.userIntentRecognizer.getFromContextMenuCommand(command),
782-
},
783-
})
784-
785779
return this.generateResponse(
786780
{
787781
message: prompt,
@@ -861,13 +855,6 @@ export class ChatController {
861855
context: lastTriggerEvent.context,
862856
})
863857

864-
this.chatHistoryManager.appendUserMessage({
865-
userInputMessage: {
866-
content: message.message,
867-
userIntent: message.userIntent,
868-
},
869-
})
870-
871858
return this.generateResponse(
872859
{
873860
message: message.message,
@@ -923,7 +910,7 @@ export class ChatController {
923910
// result = await executeBash.invoke(process.stdout)
924911
// break
925912
// }
926-
case 'fs_read': {
913+
case 'fsRead': {
927914
const fsRead = new FsRead(toolUse.input as unknown as FsReadParams)
928915
await fsRead.validate()
929916
result = await fsRead.invoke()
@@ -955,17 +942,9 @@ export class ChatController {
955942
toolResults.push({ content: [{ text: e.message }], toolUseId: toolUse.toolUseId, status: 'error' })
956943
}
957944

958-
this.chatHistoryManager.appendUserMessage({
959-
userInputMessage: {
960-
content: 'Tool Results',
961-
userIntent: undefined,
962-
origin: Origin.IDE,
963-
},
964-
})
965-
966945
await this.generateResponse(
967946
{
968-
message: 'Tool Results',
947+
message: '',
969948
trigger: ChatTriggerType.ChatMessage,
970949
query: undefined,
971950
codeSelection: context?.focusAreaContext?.selectionInsideExtendedCodeBlock,
@@ -979,6 +958,7 @@ export class ChatController {
979958
context: undefined,
980959
toolResults: toolResults,
981960
origin: Origin.IDE,
961+
chatHistory: this.chatHistoryManager.getHistory(),
982962
},
983963
triggerID
984964
)
@@ -1002,13 +982,6 @@ export class ChatController {
1002982
type: 'chat_message',
1003983
context,
1004984
})
1005-
this.chatHistoryManager.appendUserMessage({
1006-
userInputMessage: {
1007-
content: message.message,
1008-
userIntent: message.userIntent,
1009-
origin: Origin.IDE,
1010-
},
1011-
})
1012985
await this.generateResponse(
1013986
{
1014987
message: message.message,
@@ -1348,6 +1321,18 @@ export class ChatController {
13481321
this.telemetryHelper.recordEnterFocusConversation(triggerEvent.tabID)
13491322
this.telemetryHelper.recordStartConversation(triggerEvent, triggerPayload)
13501323

1324+
this.chatHistoryManager.appendUserMessage({
1325+
userInputMessage: {
1326+
content: triggerPayload.message,
1327+
userIntent: triggerPayload.userIntent,
1328+
...(triggerPayload.origin && { origin: triggerPayload.origin }),
1329+
userInputMessageContext: {
1330+
tools: tools,
1331+
...(triggerPayload.toolResults && { toolResults: triggerPayload.toolResults }),
1332+
},
1333+
},
1334+
})
1335+
13511336
getLogger().info(
13521337
`response to tab: ${tabID} conversationID: ${session.sessionIdentifier} requestID: ${
13531338
response.$metadata.requestId

packages/core/src/codewhispererChat/controllers/chat/messenger/messenger.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
AuthNeededException,
1010
CodeReference,
1111
ContextCommandData,
12+
CustomFormActionMessage,
1213
EditorContextCommandMessage,
1314
OpenSettingsMessage,
1415
QuickActionMessage,
@@ -232,13 +233,14 @@ export class Messenger {
232233
tabID
233234
)
234235
)
236+
237+
this.dispatcher.sendCustomFormActionMessage(
238+
new CustomFormActionMessage(tabID, {
239+
id: 'confirm-tool-use',
240+
})
241+
)
235242
// TODO: setup permission action
236243
// if (!isConfirmationRequired) {
237-
// this.dispatcher.sendCustomFormActionMessage(
238-
// new CustomFormActionMessage(tabID, {
239-
// id: 'confirm-tool-use',
240-
// })
241-
// )
242244
// }
243245
}
244246

@@ -392,7 +394,9 @@ export class Messenger {
392394
messageId: messageID,
393395
content: message,
394396
references: codeReference,
395-
toolUses: [{ ...toolUse }],
397+
...(toolUse &&
398+
toolUse.input !== undefined &&
399+
toolUse.input !== '' && { toolUses: [{ ...toolUse }] }),
396400
},
397401
})
398402

packages/core/src/codewhispererChat/storages/chatHistory.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export class ChatHistoryManager {
6969
if (!newMessage.userInputMessage?.content || newMessage.userInputMessage?.content.trim() === '') {
7070
this.logger.warn('input must not be empty when adding new messages')
7171
}
72-
this.history.push(this.lastUserMessage)
72+
this.history.push(this.formatChatHistoryMessage(this.lastUserMessage))
7373
}
7474

7575
/**
@@ -196,4 +196,19 @@ export class ChatHistoryManager {
196196
this.lastUserMessage.userInputMessage = msg
197197
}
198198
}
199+
200+
private formatChatHistoryMessage(message: ChatMessage): ChatMessage {
201+
if (message.userInputMessage !== undefined) {
202+
return {
203+
userInputMessage: {
204+
...message.userInputMessage,
205+
userInputMessageContext: {
206+
...message.userInputMessage.userInputMessageContext,
207+
tools: undefined,
208+
},
209+
},
210+
}
211+
}
212+
return message
213+
}
199214
}

0 commit comments

Comments
 (0)