private handleToolUses()

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,
                        })
                    )
                }
            }
        }
    }