in server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/chatDb.ts [613:647]
private handleToolUses(messages: Message[], newUserMessage: ChatMessage): void {
if (messages.length === 0) {
if (newUserMessage.userInputMessage?.userInputMessageContext?.toolResults) {
this.#features.logging.debug('No history message found, but new user message has tool results.')
newUserMessage.userInputMessage.userInputMessageContext.toolResults = undefined
// tool results are empty, so content must not be empty
newUserMessage.userInputMessage.content = 'Conversation history was too large, so it was cleared.'
}
return
}
const lastMsg = messages[messages.length - 1]
if (lastMsg.toolUses && lastMsg.toolUses.length > 0) {
const toolResults = newUserMessage.userInputMessage?.userInputMessageContext?.toolResults
if (!toolResults || toolResults.length === 0) {
this.#features.logging.debug(
`No tools results in last user message following a tool use message from assisstant, marking as canceled`
)
if (newUserMessage.userInputMessage?.userInputMessageContext) {
newUserMessage.userInputMessage.userInputMessageContext.toolResults = lastMsg.toolUses.map(
toolUse => ({
toolUseId: toolUse.toolUseId,
content: [
{
type: 'Text',
text: 'Tool use was cancelled by the user',
},
],
status: ToolResultStatus.ERROR,
})
)
}
}
}
}