in server/aws-lsp-codewhisperer/src/language-server/agenticChat/tabBarController.ts [49:100]
async onListConversations(params: ListConversationsParams): Promise<ListConversationsResult> {
const searchFilter = params.filter?.['search']
if (this.#searchTimeout) {
clearTimeout(this.#searchTimeout)
}
const attachActionsToConversationList = (list: ConversationItemGroup[]) => {
return list.map(group => {
const items =
group.items?.map(item => ({
...item,
...(item.id !== EMPTY_CONVERSATION_LIST_ID
? { actions: this.getConversationActions(item.id) }
: {}),
})) || []
return {
...group,
...(items.length > 0 ? { items } : {}),
}
})
}
if (searchFilter) {
let list: ConversationItemGroup[] = await new Promise<any[]>(resolve => {
this.#searchTimeout = setTimeout(() => {
const results = this.#chatHistoryDb.searchMessages(searchFilter)
resolve(results)
}, this.#DebounceTime)
})
list = attachActionsToConversationList(list)
return { list }
}
let list = this.#chatHistoryDb.getHistory()
list = attachActionsToConversationList(list)
return {
header: { title: 'Chat history' },
filterOptions: [
{
type: 'textinput',
icon: 'search',
id: 'search',
placeholder: 'Search...',
},
],
list,
}
}