Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/chat/browser/chatElicitationRequestPart.ts
3296 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 { IAction } from '../../../../base/common/actions.js';
7
import { Emitter } from '../../../../base/common/event.js';
8
import { IMarkdownString } from '../../../../base/common/htmlContent.js';
9
import { Disposable } from '../../../../base/common/lifecycle.js';
10
import { IChatElicitationRequest } from '../common/chatService.js';
11
import { ToolDataSource } from '../common/languageModelToolsService.js';
12
13
export class ChatElicitationRequestPart extends Disposable implements IChatElicitationRequest {
14
public readonly kind = 'elicitation';
15
public state: 'pending' | 'accepted' | 'rejected' = 'pending';
16
public acceptedResult?: Record<string, unknown>;
17
18
private _onDidRequestHide = this._register(new Emitter<void>());
19
public readonly onDidRequestHide = this._onDidRequestHide.event;
20
21
constructor(
22
public readonly title: string | IMarkdownString,
23
public readonly message: string | IMarkdownString,
24
public readonly subtitle: string | IMarkdownString,
25
public readonly acceptButtonLabel: string,
26
public readonly rejectButtonLabel: string,
27
// True when the primary action is accepted, otherwise the action that was selected
28
public readonly accept: (value: IAction | true) => Promise<void>,
29
public readonly reject: () => Promise<void>,
30
public readonly source?: ToolDataSource,
31
public readonly moreActions?: IAction[],
32
) {
33
super();
34
}
35
36
hide(): void {
37
this._onDidRequestHide.fire();
38
}
39
40
public toJSON() {
41
return {
42
kind: 'elicitation',
43
title: this.title,
44
message: this.message,
45
state: this.state === 'pending' ? 'rejected' : this.state,
46
acceptedResult: this.acceptedResult,
47
} satisfies Partial<IChatElicitationRequest>;
48
}
49
}
50
51