Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/externalAgents/node/modelProxyProvider.ts
13399 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import type * as vscode from 'vscode';
7
import { Disposable } from '../../../util/vs/base/common/lifecycle';
8
import { URI } from '../../../util/vs/base/common/uri';
9
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
10
import { OpenAILanguageModelServer } from './oaiLanguageModelServer';
11
12
export class LanguageModelProxyProvider implements vscode.LanguageModelProxyProvider {
13
constructor(
14
@IInstantiationService private readonly instantiationService: IInstantiationService
15
) { }
16
17
async provideModelProxy(forExtensionId: string, token: vscode.CancellationToken): Promise<vscode.LanguageModelProxy | undefined> {
18
const server = this.instantiationService.createInstance(OpenAILanguageModelServer);
19
await server.start();
20
21
return new OpenAILanguageModelProxy(server);
22
}
23
}
24
25
class OpenAILanguageModelProxy extends Disposable implements vscode.LanguageModelProxy {
26
public readonly uri: vscode.Uri;
27
public readonly key: string;
28
29
constructor(
30
runningServer: OpenAILanguageModelServer,
31
) {
32
super();
33
this._register(runningServer);
34
35
const config = runningServer.getConfig();
36
this.uri = URI.parse(`http://localhost:${config.port}`);
37
this.key = config.nonce;
38
}
39
}
40
41