in server/aws-lsp-codewhisperer/src/language-server/agenticChat/context/contextCommandsProvider.ts [111:207]
async mapContextCommandItems(items: ContextCommandItem[]): Promise<ContextCommandGroup[]> {
const folderCmds: ContextCommand[] = []
const folderCmdGroup: ContextCommand = {
command: 'Folders',
children: [
{
groupName: 'Folders',
commands: folderCmds,
},
],
description: 'Add all files in a folder to context',
icon: 'folder',
}
const fileCmds: ContextCommand[] = []
const fileCmdGroup: ContextCommand = {
command: 'Files',
children: [
{
groupName: 'Files',
commands: fileCmds,
},
],
description: 'Add a file to context',
icon: 'file',
}
const codeCmds: ContextCommand[] = []
const codeCmdGroup: ContextCommand = {
command: 'Code',
children: [
{
groupName: 'Code',
commands: codeCmds,
},
],
description: 'Add code to context',
icon: 'code-block',
}
const promptCmds: ContextCommand[] = []
const promptCmdGroup: ContextCommand = {
command: 'Prompts',
children: [
{
groupName: 'Prompts',
commands: promptCmds,
},
],
description: 'Add a saved prompt to context',
icon: 'magic',
}
const workspaceCmd = {
command: '@workspace',
description: 'Reference all code in workspace.',
}
const commands = [workspaceCmd, folderCmdGroup, fileCmdGroup, codeCmdGroup, promptCmdGroup]
const allCommands: ContextCommandGroup[] = [
{
commands: commands,
},
]
for (const item of items) {
const wsFolderName = path.basename(item.workspaceFolder)
let baseItem = {
command: path.basename(item.relativePath),
description: path.join(wsFolderName, item.relativePath),
route: [item.workspaceFolder, item.relativePath],
id: item.id,
}
if (item.type === 'file') {
fileCmds.push({
...baseItem,
label: 'file',
icon: 'file',
})
} else if (item.type === 'folder') {
folderCmds.push({
...baseItem,
label: 'folder',
icon: 'folder',
})
} else if (item.symbol) {
codeCmds.push({
...baseItem,
command: item.symbol.name,
description: `${item.symbol.kind}, ${path.join(wsFolderName, item.relativePath)}, L${item.symbol.range.start.line}-${item.symbol.range.end.line}`,
label: 'code',
icon: 'code-block',
})
}
}
const userPromptsItem = await this.getUserPromptsCommand()
promptCmds.push(...userPromptsItem)
return allCommands
}