UNPKG

@codingame/monaco-vscode-extensions-service-override

Version:

VSCode public API plugged on the monaco editor - extensions service-override

42 lines (39 loc) 2 kB
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js'; import { DisposableMap } from 'vscode/vscode/vs/base/common/lifecycle'; import { revive } from 'vscode/vscode/vs/base/common/marshalling'; import { ExtHostContext, MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol'; import { IChatVariablesService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatVariables.service'; import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js'; let MainThreadChatVariables = class MainThreadChatVariables { constructor(extHostContext, _chatVariablesService) { this._chatVariablesService = _chatVariablesService; this._variables = ( new DisposableMap()); this._pendingProgress = ( new Map()); this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostChatVariables)); } dispose() { this._variables.clearAndDisposeAll(); } $registerVariable(handle, data) { const registration = this._chatVariablesService.registerVariable(data, async (messageText, _arg, model, progress, token) => { const varRequestId = `${model.sessionId}-${handle}`; this._pendingProgress.set(varRequestId, progress); const result = revive(await this._proxy.$resolveVariable(handle, varRequestId, messageText, token)); this._pendingProgress.delete(varRequestId); return result; }); this._variables.set(handle, registration); } async $handleProgressChunk(requestId, progress) { const revivedProgress = revive(progress); this._pendingProgress.get(requestId)?.(revivedProgress); } $unregisterVariable(handle) { this._variables.deleteAndDispose(handle); } }; MainThreadChatVariables = __decorate([ extHostNamedCustomer(MainContext.MainThreadChatVariables), ( __param(1, IChatVariablesService)) ], MainThreadChatVariables); export { MainThreadChatVariables };