223
export class ModifiedFilesConfirmationTool implements IToolImpl {
224
async prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined> {
225
>
const parameters = context.parameters as IModifiedFilesConfirmationToolParams;
confirmationTool.ts
226
>
if (!parameters.title || !parameters.message) {
227
throw new Error('Missing required parameters for ModifiedFilesConfirmationTool');
228
}
230
>
if (!parameters.options?.length) {
231
throw new Error('ModifiedFilesConfirmationTool requires at least one option');
232
}
234
>
const toolSpecificData: IChatModifiedFilesConfirmationData = {
235
>
kind: 'modifiedFilesConfirmation',
236
>
options: parameters.options,
237
>
modifiedFiles: parameters.modifiedFiles.map(file => ({
238
>
uri: URI.parse(file.uri).toJSON(),
239
>
originalUri: file.originalUri ? URI.parse(file.originalUri).toJSON() : undefined,
240
>
insertions: file.insertions,
241
>
deletions: file.deletions,
242
>
title: file.title,
243
>
description: file.description,
244
>
})),
245
>
};
246
>
247
>
return {
248
>
confirmationMessages: {
249
>
title: parameters.title,
250
>
message: new MarkdownString(parameters.message),
251
>
allowAutoConfirm: false,
252
>
},
253
>
toolSpecificData,
254
>
presentation: ToolInvocationPresentation.HiddenAfterComplete
255
>
};
256
>
}
257
258
async invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, progress: ToolProgress, token: CancellationToken): Promise<IToolResult> {