mirror of
https://github.com/microsoft/vscode.git
synced 2026-02-24 03:35:38 +00:00
update with api feedback
This commit is contained in:
@@ -6,8 +6,7 @@
|
||||
import { CancellationToken } from '../../../base/common/cancellation.js';
|
||||
import { Disposable, DisposableMap } from '../../../base/common/lifecycle.js';
|
||||
import { revive } from '../../../base/common/marshalling.js';
|
||||
import { IProgress, IProgressStep } from '../../../platform/progress/common/progress.js';
|
||||
import { CountTokensCallback, ILanguageModelToolsService, IToolData, IToolInvocation, IToolResult } from '../../contrib/chat/common/languageModelToolsService.js';
|
||||
import { CountTokensCallback, ILanguageModelToolsService, IToolData, IToolInvocation, IToolProgressStep, IToolResult, ToolProgress } from '../../contrib/chat/common/languageModelToolsService.js';
|
||||
import { IExtHostContext, extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
|
||||
import { Dto } from '../../services/extensions/common/proxyIdentifier.js';
|
||||
import { ExtHostContext, ExtHostLanguageModelToolsShape, MainContext, MainThreadLanguageModelToolsShape } from '../common/extHost.protocol.js';
|
||||
@@ -19,7 +18,7 @@ export class MainThreadLanguageModelTools extends Disposable implements MainThre
|
||||
private readonly _tools = this._register(new DisposableMap<string>());
|
||||
private readonly _runningToolCalls = new Map</* call ID */string, {
|
||||
countTokens: CountTokensCallback;
|
||||
progress: IProgress<IProgressStep>;
|
||||
progress: ToolProgress;
|
||||
}>();
|
||||
|
||||
constructor(
|
||||
@@ -49,7 +48,7 @@ export class MainThreadLanguageModelTools extends Disposable implements MainThre
|
||||
};
|
||||
}
|
||||
|
||||
$acceptToolProgress(callId: string, progress: IProgressStep): void {
|
||||
$acceptToolProgress(callId: string, progress: IToolProgressStep): void {
|
||||
this._runningToolCalls.get(callId)?.progress.report(progress);
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ import { IChatContentInlineReference, IChatFollowup, IChatNotebookEdit, IChatPro
|
||||
import { IChatRequestVariableValue } from '../../contrib/chat/common/chatVariables.js';
|
||||
import { ChatAgentLocation } from '../../contrib/chat/common/constants.js';
|
||||
import { IChatMessage, IChatResponseFragment, ILanguageModelChatMetadata, ILanguageModelChatSelector, ILanguageModelsChangeEvent } from '../../contrib/chat/common/languageModels.js';
|
||||
import { IPreparedToolInvocation, IToolData, IToolInvocation, IToolResult } from '../../contrib/chat/common/languageModelToolsService.js';
|
||||
import { IPreparedToolInvocation, IToolData, IToolInvocation, IToolProgressStep, IToolResult } from '../../contrib/chat/common/languageModelToolsService.js';
|
||||
import { DebugConfigurationProviderTriggerKind, IAdapterDescriptor, IConfig, IDebugSessionReplMode, IDebugTestRunReference, IDebugVisualization, IDebugVisualizationContext, IDebugVisualizationTreeItem, MainThreadDebugVisualization } from '../../contrib/debug/common/debug.js';
|
||||
import { McpCollectionDefinition, McpConnectionState, McpServerDefinition, McpServerLaunch } from '../../contrib/mcp/common/mcpTypes.js';
|
||||
import * as notebookCommon from '../../contrib/notebook/common/notebookCommon.js';
|
||||
@@ -1380,7 +1380,7 @@ export type IToolDataDto = Omit<IToolData, 'when'>;
|
||||
|
||||
export interface MainThreadLanguageModelToolsShape extends IDisposable {
|
||||
$getTools(): Promise<Dto<IToolDataDto>[]>;
|
||||
$acceptToolProgress(callId: string, progress: IProgressStep): void;
|
||||
$acceptToolProgress(callId: string, progress: IToolProgressStep): void;
|
||||
$invokeTool(dto: IToolInvocation, token?: CancellationToken): Promise<Dto<IToolResult>>;
|
||||
$countTokensForInvocation(callId: string, input: string, token: CancellationToken): Promise<number>;
|
||||
$registerTool(id: string): void;
|
||||
|
||||
@@ -138,12 +138,12 @@ export class ExtHostLanguageModelTools implements ExtHostLanguageModelToolsShape
|
||||
};
|
||||
}
|
||||
|
||||
let progress: vscode.Progress<{ message?: string; increment?: number }> | undefined;
|
||||
let progress: vscode.Progress<{ message?: string | vscode.MarkdownString; increment?: number }> | undefined;
|
||||
if (isProposedApiEnabled(item.extension, 'toolProgress')) {
|
||||
progress = {
|
||||
report: value => {
|
||||
this._proxy.$acceptToolProgress(dto.callId, {
|
||||
message: value.message,
|
||||
message: typeConvert.MarkdownString.fromStrict(value.message),
|
||||
increment: value.increment,
|
||||
total: 100,
|
||||
});
|
||||
@@ -151,7 +151,8 @@ export class ExtHostLanguageModelTools implements ExtHostLanguageModelToolsShape
|
||||
};
|
||||
}
|
||||
|
||||
const extensionResult = await raceCancellation(Promise.resolve(item.tool.invoke(options, token, progress!)), token);
|
||||
// todo: 'any' cast because TS can't handle the overloads
|
||||
const extensionResult = await raceCancellation(Promise.resolve((item.tool.invoke as any)(options, token, progress!)), token);
|
||||
if (!extensionResult) {
|
||||
throw new CancellationError();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import { $ } from '../../../../base/browser/dom.js';
|
||||
import { Dialog } from '../../../../base/browser/ui/dialog/dialog.js';
|
||||
import { toAction, WorkbenchActionExecutedClassification, WorkbenchActionExecutedEvent } from '../../../../base/common/actions.js';
|
||||
import { timeout } from '../../../../base/common/async.js';
|
||||
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
||||
import { Codicon } from '../../../../base/common/codicons.js';
|
||||
import { toErrorMessage } from '../../../../base/common/errorMessage.js';
|
||||
import { isCancellationError } from '../../../../base/common/errors.js';
|
||||
@@ -37,7 +38,7 @@ import { ILogService } from '../../../../platform/log/common/log.js';
|
||||
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
|
||||
import product from '../../../../platform/product/common/product.js';
|
||||
import { IProductService } from '../../../../platform/product/common/productService.js';
|
||||
import { IProgress, IProgressService, IProgressStep, ProgressLocation } from '../../../../platform/progress/common/progress.js';
|
||||
import { IProgressService, ProgressLocation } from '../../../../platform/progress/common/progress.js';
|
||||
import { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';
|
||||
import { Registry } from '../../../../platform/registry/common/platform.js';
|
||||
import { ITelemetryService, TelemetryLevel } from '../../../../platform/telemetry/common/telemetry.js';
|
||||
@@ -52,11 +53,13 @@ import { IHostService } from '../../../services/host/browser/host.js';
|
||||
import { IWorkbenchLayoutService, Parts } from '../../../services/layout/browser/layoutService.js';
|
||||
import { ILifecycleService } from '../../../services/lifecycle/common/lifecycle.js';
|
||||
import { IViewsService } from '../../../services/views/common/viewsService.js';
|
||||
import { CountTokensCallback, ILanguageModelToolsService, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult, ToolProgress } from '../../chat/common/languageModelToolsService.js';
|
||||
import { IExtensionsWorkbenchService } from '../../extensions/common/extensions.js';
|
||||
import { IChatAgentImplementation, IChatAgentRequest, IChatAgentResult, IChatAgentService } from '../common/chatAgents.js';
|
||||
import { ChatContextKeys } from '../common/chatContextKeys.js';
|
||||
import { ChatEntitlement, ChatEntitlementContext, ChatEntitlementRequests, ChatEntitlementService, IChatEntitlementService } from '../common/chatEntitlementService.js';
|
||||
import { IChatRequestModel, ChatRequestModel, ChatModel, IChatRequestVariableData, IChatRequestToolEntry } from '../common/chatModel.js';
|
||||
import { ChatModel, ChatRequestModel, IChatRequestModel, IChatRequestToolEntry, IChatRequestVariableData } from '../common/chatModel.js';
|
||||
import { ChatRequestAgentPart, ChatRequestToolPart } from '../common/chatParserTypes.js';
|
||||
import { IChatProgress, IChatService } from '../common/chatService.js';
|
||||
import { ChatAgentLocation, ChatConfiguration, ChatMode, validateChatMode } from '../common/constants.js';
|
||||
import { ILanguageModelsService } from '../common/languageModels.js';
|
||||
@@ -64,9 +67,6 @@ import { CHAT_CATEGORY, CHAT_OPEN_ACTION_ID, CHAT_SETUP_ACTION_ID } from './acti
|
||||
import { ChatViewId, IChatWidgetService, showCopilotView } from './chat.js';
|
||||
import { CHAT_SIDEBAR_PANEL_ID } from './chatViewPane.js';
|
||||
import './media/chatSetup.css';
|
||||
import { ChatRequestAgentPart, ChatRequestToolPart } from '../common/chatParserTypes.js';
|
||||
import { CountTokensCallback, ILanguageModelToolsService, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult } from '../../chat/common/languageModelToolsService.js';
|
||||
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
||||
|
||||
const defaultChat = {
|
||||
extensionId: product.defaultChatAgent?.extensionId ?? '',
|
||||
@@ -518,7 +518,7 @@ class SetupTool extends Disposable implements IToolImpl {
|
||||
super();
|
||||
}
|
||||
|
||||
invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, progress: IProgress<IProgressStep>, token: CancellationToken): Promise<IToolResult> {
|
||||
invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, progress: ToolProgress, token: CancellationToken): Promise<IToolResult> {
|
||||
const result: IToolResult = {
|
||||
content: [
|
||||
{
|
||||
|
||||
@@ -7,9 +7,8 @@ import { DeferredPromise } from '../../../../../base/common/async.js';
|
||||
import { IMarkdownString } from '../../../../../base/common/htmlContent.js';
|
||||
import { observableValue } from '../../../../../base/common/observable.js';
|
||||
import { localize } from '../../../../../nls.js';
|
||||
import { IProgressStep } from '../../../../../platform/progress/common/progress.js';
|
||||
import { IChatTerminalToolInvocationData, IChatToolInputInvocationData, IChatToolInvocation, IChatToolInvocationSerialized } from '../chatService.js';
|
||||
import { IPreparedToolInvocation, IToolConfirmationMessages, IToolData, IToolResult } from '../languageModelToolsService.js';
|
||||
import { IPreparedToolInvocation, IToolConfirmationMessages, IToolData, IToolProgressStep, IToolResult } from '../languageModelToolsService.js';
|
||||
|
||||
export class ChatToolInvocation implements IChatToolInvocation {
|
||||
public readonly kind: 'toolInvocation' = 'toolInvocation';
|
||||
@@ -47,7 +46,7 @@ export class ChatToolInvocation implements IChatToolInvocation {
|
||||
|
||||
public readonly toolSpecificData?: IChatTerminalToolInvocationData | IChatToolInputInvocationData;
|
||||
|
||||
public readonly progress = observableValue<{ message?: string; progress: number }>(this, { progress: 0 });
|
||||
public readonly progress = observableValue<{ message?: string | IMarkdownString; progress: number }>(this, { progress: 0 });
|
||||
|
||||
constructor(preparedInvocation: IPreparedToolInvocation | undefined, toolData: IToolData, public readonly toolCallId: string) {
|
||||
const defaultMessage = localize('toolInvocationMessage', "Using {0}", `"${toolData.displayName}"`);
|
||||
@@ -88,7 +87,7 @@ export class ChatToolInvocation implements IChatToolInvocation {
|
||||
return this._confirmationMessages;
|
||||
}
|
||||
|
||||
public acceptProgress(step: IProgressStep) {
|
||||
public acceptProgress(step: IToolProgressStep) {
|
||||
const prev = this.progress.get();
|
||||
this.progress.set({
|
||||
progress: step.increment ? (prev.progress + step.increment) : prev.progress,
|
||||
|
||||
@@ -235,7 +235,7 @@ export interface IChatToolInvocation {
|
||||
invocationMessage: string | IMarkdownString;
|
||||
pastTenseMessage: string | IMarkdownString | undefined;
|
||||
resultDetails: IToolResult['toolResultDetails'];
|
||||
progress: IObservable<{ message?: string; progress: number }>;
|
||||
progress: IObservable<{ message?: string | IMarkdownString; progress: number }>;
|
||||
readonly toolId: string;
|
||||
readonly toolCallId: string;
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ import { Location } from '../../../../editor/common/languages.js';
|
||||
import { ContextKeyExpression } from '../../../../platform/contextkey/common/contextkey.js';
|
||||
import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
|
||||
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { IProgress, IProgressStep } from '../../../../platform/progress/common/progress.js';
|
||||
import { IProgress } from '../../../../platform/progress/common/progress.js';
|
||||
import { IChatTerminalToolInvocationData, IChatToolInputInvocationData } from './chatService.js';
|
||||
import { PromptElementJSON, stringifyPromptElementJSON } from './tools/promptTsxTypes.js';
|
||||
|
||||
@@ -41,6 +41,14 @@ export interface IToolData {
|
||||
supportsToolPicker?: boolean;
|
||||
}
|
||||
|
||||
export interface IToolProgressStep {
|
||||
readonly message: string | IMarkdownString | undefined;
|
||||
readonly increment: number | undefined;
|
||||
readonly total: number | undefined;
|
||||
}
|
||||
|
||||
export type ToolProgress = IProgress<IToolProgressStep>;
|
||||
|
||||
export type ToolDataSource =
|
||||
| {
|
||||
type: 'extension';
|
||||
@@ -135,7 +143,7 @@ export interface IPreparedToolInvocation {
|
||||
}
|
||||
|
||||
export interface IToolImpl {
|
||||
invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, progress: IProgress<IProgressStep>, token: CancellationToken): Promise<IToolResult>;
|
||||
invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
||||
prepareToolInvocation?(parameters: any, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@ import { IDisposable } from '../../../../../base/common/lifecycle.js';
|
||||
import { autorun } from '../../../../../base/common/observable.js';
|
||||
import { URI, UriComponents } from '../../../../../base/common/uri.js';
|
||||
import { generateUuid } from '../../../../../base/common/uuid.js';
|
||||
import { IProgress, IProgressStep } from '../../../../../platform/progress/common/progress.js';
|
||||
import { SaveReason } from '../../../../common/editor.js';
|
||||
import { ITextFileService } from '../../../../services/textfile/common/textfiles.js';
|
||||
import { CellUri } from '../../../notebook/common/notebookCommon.js';
|
||||
@@ -17,7 +16,7 @@ import { INotebookService } from '../../../notebook/common/notebookService.js';
|
||||
import { ICodeMapperService } from '../../common/chatCodeMapperService.js';
|
||||
import { ChatModel } from '../../common/chatModel.js';
|
||||
import { IChatService } from '../../common/chatService.js';
|
||||
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult } from '../../common/languageModelToolsService.js';
|
||||
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult, ToolProgress } from '../../common/languageModelToolsService.js';
|
||||
|
||||
export const ExtensionEditToolId = 'vscode_editFile';
|
||||
export const InternalEditToolId = 'vscode_editFile_internal';
|
||||
@@ -43,7 +42,7 @@ export class EditTool implements IToolImpl {
|
||||
@INotebookService private readonly notebookService: INotebookService,
|
||||
) { }
|
||||
|
||||
async invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, _progress: IProgress<IProgressStep>, token: CancellationToken): Promise<IToolResult> {
|
||||
async invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult> {
|
||||
if (!invocation.context) {
|
||||
throw new Error('toolInvocationToken is required for this tool');
|
||||
}
|
||||
|
||||
@@ -3,15 +3,14 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { localize } from '../../../../../nls.js';
|
||||
import { CancellationToken } from '../../../../../base/common/cancellation.js';
|
||||
import { MarkdownString } from '../../../../../base/common/htmlContent.js';
|
||||
import { URI } from '../../../../../base/common/uri.js';
|
||||
import { localize } from '../../../../../nls.js';
|
||||
import { IWebContentExtractorService } from '../../../../../platform/webContentExtractor/common/webContentExtractor.js';
|
||||
import { ITrustedDomainService } from '../../../url/browser/trustedDomainService.js';
|
||||
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult, IToolResultTextPart } from '../../common/languageModelToolsService.js';
|
||||
import { MarkdownString } from '../../../../../base/common/htmlContent.js';
|
||||
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult, IToolResultTextPart, ToolProgress } from '../../common/languageModelToolsService.js';
|
||||
import { InternalFetchWebPageToolId } from '../../common/tools/tools.js';
|
||||
import { IProgress, IProgressStep } from '../../../../../platform/progress/common/progress.js';
|
||||
|
||||
export const FetchWebPageToolData: IToolData = {
|
||||
id: InternalFetchWebPageToolId,
|
||||
@@ -42,7 +41,7 @@ export class FetchWebPageTool implements IToolImpl {
|
||||
@ITrustedDomainService private readonly _trustedDomainService: ITrustedDomainService,
|
||||
) { }
|
||||
|
||||
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: IProgress<IProgressStep>, _token: CancellationToken): Promise<IToolResult> {
|
||||
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, _token: CancellationToken): Promise<IToolResult> {
|
||||
const parsedUriResults = this._parseUris((invocation.parameters as { urls?: string[] }).urls);
|
||||
const validUris = Array.from(parsedUriResults.values()).filter((uri): uri is URI => !!uri);
|
||||
if (!validUris.length) {
|
||||
|
||||
@@ -9,9 +9,8 @@ import { ThemeIcon } from '../../../../base/common/themables.js';
|
||||
import { localize } from '../../../../nls.js';
|
||||
import { SortBy } from '../../../../platform/extensionManagement/common/extensionManagement.js';
|
||||
import { EXTENSION_CATEGORIES } from '../../../../platform/extensions/common/extensions.js';
|
||||
import { IProgress, IProgressStep } from '../../../../platform/progress/common/progress.js';
|
||||
import { CountTokensCallback, IToolData, IToolImpl, IToolInvocation, IToolResult } from '../../chat/common/languageModelToolsService.js';
|
||||
import { ExtensionState, IExtensionsWorkbenchService, IExtension } from '../common/extensions.js';
|
||||
import { CountTokensCallback, IToolData, IToolImpl, IToolInvocation, IToolResult, ToolProgress } from '../../chat/common/languageModelToolsService.js';
|
||||
import { ExtensionState, IExtension, IExtensionsWorkbenchService } from '../common/extensions.js';
|
||||
|
||||
export const SearchExtensionsToolId = 'vscode_searchExtensions_internal';
|
||||
|
||||
@@ -73,7 +72,7 @@ export class SearchExtensionsTool implements IToolImpl {
|
||||
@IExtensionsWorkbenchService private readonly extensionWorkbenchService: IExtensionsWorkbenchService,
|
||||
) { }
|
||||
|
||||
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: IProgress<IProgressStep>, token: CancellationToken): Promise<IToolResult> {
|
||||
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult> {
|
||||
const params = invocation.parameters as InputParams;
|
||||
if (!params.keywords?.length && !params.category && !params.ids?.length) {
|
||||
return {
|
||||
|
||||
@@ -4,31 +4,31 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { raceCancellationError, Sequencer } from '../../../../base/common/async.js';
|
||||
import * as json from '../../../../base/common/json.js';
|
||||
import { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';
|
||||
import * as json from '../../../../base/common/json.js';
|
||||
import { Disposable, DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
|
||||
import { LRUCache } from '../../../../base/common/map.js';
|
||||
import { autorun, autorunWithStore, derived, disposableObservableValue, IObservable, ITransaction, observableFromEvent, ObservablePromise, observableValue, transaction } from '../../../../base/common/observable.js';
|
||||
import { basename } from '../../../../base/common/resources.js';
|
||||
import { URI } from '../../../../base/common/uri.js';
|
||||
import { generateUuid } from '../../../../base/common/uuid.js';
|
||||
import { localize } from '../../../../nls.js';
|
||||
import { ICommandService } from '../../../../platform/commands/common/commands.js';
|
||||
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { ILogger, ILoggerService } from '../../../../platform/log/common/log.js';
|
||||
import { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';
|
||||
import { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';
|
||||
import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
|
||||
import { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';
|
||||
import { IEditorService } from '../../../services/editor/common/editorService.js';
|
||||
import { IExtensionService } from '../../../services/extensions/common/extensions.js';
|
||||
import { IOutputService } from '../../../services/output/common/output.js';
|
||||
import { ToolProgress } from '../../chat/common/languageModelToolsService.js';
|
||||
import { mcpActivationEvent } from './mcpConfiguration.js';
|
||||
import { IMcpRegistry } from './mcpRegistryTypes.js';
|
||||
import { McpServerRequestHandler } from './mcpServerRequestHandler.js';
|
||||
import { extensionMcpCollectionPrefix, IMcpServer, IMcpServerConnection, IMcpTool, McpCollectionReference, McpConnectionFailedError, McpConnectionState, McpDefinitionReference, McpServerDefinition, McpServerToolsState } from './mcpTypes.js';
|
||||
import { MCP } from './modelContextProtocol.js';
|
||||
import { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';
|
||||
import { localize } from '../../../../nls.js';
|
||||
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { IEditorService } from '../../../services/editor/common/editorService.js';
|
||||
import { IProgress, IProgressStep } from '../../../../platform/progress/common/progress.js';
|
||||
import { generateUuid } from '../../../../base/common/uuid.js';
|
||||
|
||||
type ServerBootData = {
|
||||
supportsLogging: boolean;
|
||||
@@ -502,7 +502,7 @@ export class McpTool implements IMcpTool {
|
||||
return this._server.callOn(h => h.callTool({ name, arguments: params }, token), token);
|
||||
}
|
||||
|
||||
callWithProgress(params: Record<string, unknown>, progress: IProgress<IProgressStep>, token?: CancellationToken): Promise<MCP.CallToolResult> {
|
||||
callWithProgress(params: Record<string, unknown>, progress: ToolProgress, token?: CancellationToken): Promise<MCP.CallToolResult> {
|
||||
// serverToolName is always set now, but older cache entries (from 1.99-Insiders) may not have it.
|
||||
const name = this._definition.serverToolName ?? this._definition.name;
|
||||
const progressToken = generateUuid();
|
||||
|
||||
@@ -14,9 +14,8 @@ import { localize } from '../../../../nls.js';
|
||||
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { ILogService } from '../../../../platform/log/common/log.js';
|
||||
import { IProductService } from '../../../../platform/product/common/productService.js';
|
||||
import { IProgress, IProgressStep } from '../../../../platform/progress/common/progress.js';
|
||||
import { StorageScope } from '../../../../platform/storage/common/storage.js';
|
||||
import { CountTokensCallback, ILanguageModelToolsService, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult } from '../../chat/common/languageModelToolsService.js';
|
||||
import { CountTokensCallback, ILanguageModelToolsService, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult, ToolProgress } from '../../chat/common/languageModelToolsService.js';
|
||||
import { IMcpRegistry } from './mcpRegistryTypes.js';
|
||||
import { McpServer, McpServerMetadataCache } from './mcpServer.js';
|
||||
import { IMcpServer, IMcpService, IMcpTool, McpCollectionDefinition, McpServerDefinition, McpServerToolsState } from './mcpTypes.js';
|
||||
@@ -247,7 +246,7 @@ class McpToolImplementation implements IToolImpl {
|
||||
};
|
||||
}
|
||||
|
||||
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, progress: IProgress<IProgressStep>, token: CancellationToken) {
|
||||
async invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, progress: ToolProgress, token: CancellationToken) {
|
||||
|
||||
const result: IToolResult = {
|
||||
content: []
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { equals as arraysEqual } from '../../../../base/common/arrays.js';
|
||||
import { assertNever } from '../../../../base/common/assert.js';
|
||||
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
||||
import { IDisposable } from '../../../../base/common/lifecycle.js';
|
||||
import { equals as objectsEqual } from '../../../../base/common/objects.js';
|
||||
import { equals as arraysEqual } from '../../../../base/common/arrays.js';
|
||||
import { IObservable } from '../../../../base/common/observable.js';
|
||||
import { URI, UriComponents } from '../../../../base/common/uri.js';
|
||||
import { Location } from '../../../../editor/common/languages.js';
|
||||
@@ -17,9 +17,9 @@ import { ExtensionIdentifier } from '../../../../platform/extensions/common/exte
|
||||
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { StorageScope } from '../../../../platform/storage/common/storage.js';
|
||||
import { IWorkspaceFolderData } from '../../../../platform/workspace/common/workspace.js';
|
||||
import { ToolProgress } from '../../chat/common/languageModelToolsService.js';
|
||||
import { McpServerRequestHandler } from './mcpServerRequestHandler.js';
|
||||
import { MCP } from './modelContextProtocol.js';
|
||||
import { IProgress, IProgressStep } from '../../../../platform/progress/common/progress.js';
|
||||
|
||||
export const extensionMcpCollectionPrefix = 'ext.';
|
||||
|
||||
@@ -264,7 +264,7 @@ export interface IMcpTool {
|
||||
/**
|
||||
* Identical to {@link call}, but reports progress.
|
||||
*/
|
||||
callWithProgress(params: Record<string, unknown>, progress: IProgress<IProgressStep>, token?: CancellationToken): Promise<MCP.CallToolResult>;
|
||||
callWithProgress(params: Record<string, unknown>, progress: ToolProgress, token?: CancellationToken): Promise<MCP.CallToolResult>;
|
||||
}
|
||||
|
||||
export const enum McpServerTransportType {
|
||||
|
||||
@@ -12,7 +12,7 @@ declare module 'vscode' {
|
||||
/**
|
||||
* A progress message that represents a chunk of work
|
||||
*/
|
||||
message?: string;
|
||||
message?: string | MarkdownString;
|
||||
/**
|
||||
* An increment for discrete progress. Increments will be summed up until 100 (100%) is reached
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user