Skip to content

Commit 929f67b

Browse files
authored
api: generalize ToolResultAudience->LanguageModelTextPart (microsoft#259273)
- Generalize as these parts are used in chat responses as well as tool results. - Add a new 'extension' type for internal-only use.
1 parent ee6c9a1 commit 929f67b

File tree

5 files changed

+33
-19
lines changed

5 files changed

+33
-19
lines changed

src/vs/workbench/api/common/extHost.api.impl.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1877,7 +1877,8 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
18771877
LanguageModelToolResultPart2: extHostTypes.LanguageModelToolResultPart2,
18781878
LanguageModelTextPart: extHostTypes.LanguageModelTextPart,
18791879
LanguageModelTextPart2: extHostTypes.LanguageModelTextPart,
1880-
ToolResultAudience: extHostTypes.ToolResultAudience,
1880+
LanguageModelPartAudience: extHostTypes.LanguageModelPartAudience,
1881+
ToolResultAudience: extHostTypes.LanguageModelPartAudience, // back compat
18811882
LanguageModelToolCallPart: extHostTypes.LanguageModelToolCallPart,
18821883
LanguageModelError: extHostTypes.LanguageModelError,
18831884
LanguageModelToolResult: extHostTypes.LanguageModelToolResult,

src/vs/workbench/api/common/extHostTypes.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5030,16 +5030,17 @@ export class LanguageModelToolCallPart implements vscode.LanguageModelToolCallPa
50305030
}
50315031
}
50325032

5033-
export enum ToolResultAudience {
5033+
export enum LanguageModelPartAudience {
50345034
Assistant = 0,
50355035
User = 1,
5036+
Extension = 2,
50365037
}
50375038

50385039
export class LanguageModelTextPart implements vscode.LanguageModelTextPart2 {
50395040
value: string;
5040-
audience: vscode.ToolResultAudience[] | undefined;
5041+
audience: vscode.LanguageModelPartAudience[] | undefined;
50415042

5042-
constructor(value: string, audience?: vscode.ToolResultAudience[]) {
5043+
constructor(value: string, audience?: vscode.LanguageModelPartAudience[]) {
50435044
this.value = value;
50445045
audience = audience;
50455046
}
@@ -5056,9 +5057,9 @@ export class LanguageModelTextPart implements vscode.LanguageModelTextPart2 {
50565057
export class LanguageModelDataPart implements vscode.LanguageModelDataPart2 {
50575058
mimeType: string;
50585059
data: Uint8Array<ArrayBufferLike>;
5059-
audience: vscode.ToolResultAudience[] | undefined;
5060+
audience: vscode.LanguageModelPartAudience[] | undefined;
50605061

5061-
constructor(data: Uint8Array<ArrayBufferLike>, mimeType: string, audience?: vscode.ToolResultAudience[]) {
5062+
constructor(data: Uint8Array<ArrayBufferLike>, mimeType: string, audience?: vscode.LanguageModelPartAudience[]) {
50625063
this.mimeType = mimeType;
50635064
this.data = data;
50645065
this.audience = audience;

src/vs/workbench/contrib/chat/common/languageModelToolsService.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { VSBuffer } from '../../../../base/common/buffer.js';
2222
import { derived, IObservable, IReader, ITransaction, ObservableSet } from '../../../../base/common/observable.js';
2323
import { Iterable } from '../../../../base/common/iterator.js';
2424
import { localize } from '../../../../nls.js';
25-
import { ToolResultAudience } from './languageModels.js';
25+
import { LanguageModelPartAudience } from './languageModels.js';
2626

2727
export interface IToolData {
2828
id: string;
@@ -192,7 +192,7 @@ export function stringifyPromptTsxPart(part: IToolResultPromptTsxPart): string {
192192
export interface IToolResultTextPart {
193193
kind: 'text';
194194
value: string;
195-
audience?: ToolResultAudience[];
195+
audience?: LanguageModelPartAudience[];
196196
}
197197

198198
export interface IToolResultDataPart {
@@ -201,7 +201,7 @@ export interface IToolResultDataPart {
201201
mimeType: string;
202202
data: VSBuffer;
203203
};
204-
audience?: ToolResultAudience[];
204+
audience?: LanguageModelPartAudience[];
205205
}
206206

207207
export interface IToolConfirmationMessages {

src/vs/workbench/contrib/chat/common/languageModels.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,16 @@ export const enum ChatMessageRole {
2727
Assistant,
2828
}
2929

30-
export enum ToolResultAudience {
30+
export enum LanguageModelPartAudience {
3131
Assistant = 0,
3232
User = 1,
33+
Extension = 2,
3334
}
3435

3536
export interface IChatMessageTextPart {
3637
type: 'text';
3738
value: string;
38-
audience?: ToolResultAudience[];
39+
audience?: LanguageModelPartAudience[];
3940
}
4041

4142
export interface IChatMessageImagePart {
@@ -47,7 +48,7 @@ export interface IChatMessageDataPart {
4748
type: 'data';
4849
mimeType: string;
4950
data: VSBuffer;
50-
audience?: ToolResultAudience[];
51+
audience?: LanguageModelPartAudience[];
5152
}
5253

5354
export interface IChatImageURLPart {
@@ -100,7 +101,7 @@ export interface IChatMessage {
100101
export interface IChatResponseTextPart {
101102
type: 'text';
102103
value: string;
103-
audience?: ToolResultAudience[];
104+
audience?: LanguageModelPartAudience[];
104105
}
105106

106107
export interface IChatResponsePromptTsxPart {
@@ -111,7 +112,7 @@ export interface IChatResponsePromptTsxPart {
111112
export interface IChatResponseDataPart {
112113
type: 'data';
113114
value: IChatImageURLPart;
114-
audience?: ToolResultAudience[];
115+
audience?: LanguageModelPartAudience[];
115116
}
116117

117118
export interface IChatResponseToolUsePart {

src/vscode-dts/vscode.proposed.languageModelToolResultAudience.d.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,32 @@
55

66
declare module 'vscode' {
77

8-
export enum ToolResultAudience {
8+
export enum LanguageModelPartAudience {
9+
/**
10+
* The part should be shown to the language model.
11+
*/
912
Assistant = 0,
13+
/**
14+
* The part should be shown to the user.
15+
*/
1016
User = 1,
17+
/**
18+
* The part should should be retained for internal bookkeeping within
19+
* extensions.
20+
*/
21+
Extension = 2,
1122
}
1223

1324
/**
1425
* A language model response part containing a piece of text, returned from a {@link LanguageModelChatResponse}.
1526
*/
1627
export class LanguageModelTextPart2 extends LanguageModelTextPart {
17-
audience: ToolResultAudience[] | undefined;
18-
constructor(value: string, audience?: ToolResultAudience[]);
28+
audience: LanguageModelPartAudience[] | undefined;
29+
constructor(value: string, audience?: LanguageModelPartAudience[]);
1930
}
2031

2132
export class LanguageModelDataPart2 extends LanguageModelDataPart {
22-
audience: ToolResultAudience[] | undefined;
23-
constructor(data: Uint8Array, mimeType: string, audience?: ToolResultAudience[]);
33+
audience: LanguageModelPartAudience[] | undefined;
34+
constructor(data: Uint8Array, mimeType: string, audience?: LanguageModelPartAudience[]);
2435
}
2536
}

0 commit comments

Comments
 (0)