| import * as vscode from 'vscode'; | |
| import * as chatUtils from '@vscode/chat-extension-utils'; | |
| export function registerChatLibChatParticipant(context: vscode.ExtensionContext) { | |
| const handler: vscode.ChatRequestHandler = async (request: vscode.ChatRequest, chatContext: vscode.ChatContext, stream: vscode.ChatResponseStream, token: vscode.CancellationToken) => { | |
| if (request.command === 'list') { | |
| stream.markdown(`Available tools: ${vscode.lm.tools.map(tool => tool.name).join(', ')}\n\n`); | |
| return; | |
| } | |
| const tools = request.command === 'all' ? | |
| vscode.lm.tools : | |
| vscode.lm.tools.filter(tool => tool.tags.includes('chat-tools-sample')); | |
| const libResult = chatUtils.sendChatParticipantRequest( | |
| request, | |
| chatContext, | |
| { | |
| prompt: 'You are a cat! Answer as a cat.', | |
| responseStreamOptions: { | |
| stream, | |
| references: true, | |
| responseText: true | |
| }, | |
| tools | |
| }, | |
| token); | |
| return await libResult.result; | |
| }; | |
| const chatLibParticipant = vscode.chat.createChatParticipant('chat-tools-sample.catTools', handler); | |
| chatLibParticipant.iconPath = vscode.Uri.joinPath(context.extensionUri, 'cat.jpeg'); | |
| context.subscriptions.push(chatLibParticipant); | |
| } |