/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // version: 3 declare module 'vscode' { export interface LanguageModelChat { sendRequest(messages: Array, options?: LanguageModelChatRequestOptions, token?: CancellationToken): Thenable; countTokens(text: string | LanguageModelChatMessage | LanguageModelChatMessage2, token?: CancellationToken): Thenable; } /** * Represents a message in a chat. Can assume different roles, like user or assistant. */ export class LanguageModelChatMessage2 { /** * Utility to create a new user message. * * @param content The content of the message. * @param name The optional name of a user for the message. */ static User(content: string | Array, name?: string): LanguageModelChatMessage2; /** * Utility to create a new assistant message. * * @param content The content of the message. * @param name The optional name of a user for the message. */ static Assistant(content: string | Array, name?: string): LanguageModelChatMessage2; /** * The role of this message. */ role: LanguageModelChatMessageRole; /** * A string or heterogeneous array of things that a message can contain as content. Some parts may be message-type * specific for some models. */ content: Array; /** * The optional name of a user for this message. */ name: string | undefined; /** * Create a new user message. * * @param role The role of the message. * @param content The content of the message. * @param name The optional name of a user for the message. */ constructor(role: LanguageModelChatMessageRole, content: string | Array, name?: string); } /** * A language model response part containing arbitrary data, returned from a {@link LanguageModelChatResponse}. */ export class LanguageModelDataPart { /** * Factory function to create a `LanguageModelDataPart` for an image. * @param data Binary image data * @param mimeType The MIME type of the image */ // TODO@API just use string, no enum required static image(data: Uint8Array, mimeType: ChatImageMimeType): LanguageModelDataPart; static json(value: any, mime?: string): LanguageModelDataPart; static text(value: string, mime?: string): LanguageModelDataPart; /** * The mime type which determines how the data property is interpreted. */ mimeType: string; /** * The data of the part. */ data: Uint8Array; /** * Construct a generic data part with the given content. * @param value The data of the part. */ constructor(data: Uint8Array, mimeType: string); } /** * Enum for supported image MIME types. */ export enum ChatImageMimeType { PNG = 'image/png', JPEG = 'image/jpeg', GIF = 'image/gif', WEBP = 'image/webp', BMP = 'image/bmp', } /** * The result of a tool call. This is the counterpart of a {@link LanguageModelToolCallPart tool call} and * it can only be included in the content of a User message */ export class LanguageModelToolResultPart2 { /** * The ID of the tool call. * * *Note* that this should match the {@link LanguageModelToolCallPart.callId callId} of a tool call part. */ callId: string; /** * The value of the tool result. */ content: Array; /** * @param callId The ID of the tool call. * @param content The content of the tool result. */ constructor(callId: string, content: Array); } /** * A tool that can be invoked by a call to a {@link LanguageModelChat}. */ export interface LanguageModelTool { /** * Invoke the tool with the given input and return a result. * * The provided {@link LanguageModelToolInvocationOptions.input} has been validated against the declared schema. */ invoke(options: LanguageModelToolInvocationOptions, token: CancellationToken): ProviderResult; } /** * A result returned from a tool invocation. If using `@vscode/prompt-tsx`, this result may be rendered using a `ToolResult`. */ export class LanguageModelToolResult2 { /** * A list of tool result content parts. Includes `unknown` becauses this list may be extended with new content types in * the future. * @see {@link lm.invokeTool}. */ content: Array; /** * Create a LanguageModelToolResult * @param content A list of tool result content parts */ constructor(content: Array); } export namespace lm { export function invokeTool(name: string, options: LanguageModelToolInvocationOptions, token?: CancellationToken): Thenable; } }