@theia/ai-openai 1.60.0-next.47 → 1.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/lib/browser/openai-frontend-application-contribution.d.ts +2 -6
  2. package/lib/browser/openai-frontend-application-contribution.d.ts.map +1 -1
  3. package/lib/browser/openai-frontend-application-contribution.js +9 -36
  4. package/lib/browser/openai-frontend-application-contribution.js.map +1 -1
  5. package/lib/common/openai-language-models-manager.d.ts +0 -6
  6. package/lib/common/openai-language-models-manager.d.ts.map +1 -1
  7. package/lib/node/openai-language-model.d.ts +7 -13
  8. package/lib/node/openai-language-model.d.ts.map +1 -1
  9. package/lib/node/openai-language-model.js +28 -14
  10. package/lib/node/openai-language-model.js.map +1 -1
  11. package/lib/node/openai-language-models-manager-impl.d.ts.map +1 -1
  12. package/lib/node/openai-language-models-manager-impl.js +1 -2
  13. package/lib/node/openai-language-models-manager-impl.js.map +1 -1
  14. package/lib/node/openai-model-utils.spec.js +30 -30
  15. package/lib/node/openai-model-utils.spec.js.map +1 -1
  16. package/lib/node/openai-streaming-iterator.js.map +1 -1
  17. package/lib/node/openai-streaming-iterator.spec.js +4 -5
  18. package/lib/node/openai-streaming-iterator.spec.js.map +1 -1
  19. package/package.json +7 -7
  20. package/src/browser/openai-frontend-application-contribution.ts +9 -48
  21. package/src/common/openai-language-models-manager.ts +0 -4
  22. package/src/node/openai-language-model.ts +36 -23
  23. package/src/node/openai-language-models-manager-impl.ts +0 -2
  24. package/src/node/openai-model-utils.spec.ts +30 -30
  25. package/src/node/openai-streaming-iterator.spec.ts +4 -4
  26. package/src/node/openai-streaming-iterator.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"openai-streaming-iterator.js","sourceRoot":"","sources":["../../src/node/openai-streaming-iterator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-streaming-iterator.js","sourceRoot":"","sources":["../../src/node/openai-streaming-iterator.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ const chai_1 = require("chai");
19
19
  const sinon = require("sinon");
20
20
  const openai_streaming_iterator_1 = require("./openai-streaming-iterator");
21
21
  const core_1 = require("@theia/core");
22
+ const ai_core_1 = require("@theia/ai-core");
22
23
  const events_1 = require("events");
23
24
  describe('StreamingAsyncIterator', () => {
24
25
  let mockStream;
@@ -63,7 +64,6 @@ describe('StreamingAsyncIterator', () => {
63
64
  ]);
64
65
  });
65
66
  it('should buffer messages if consumer is slower (messages arrive before .next() is called)', async () => {
66
- var _a;
67
67
  iterator = createIterator();
68
68
  mockStream.emit('chunk', { choices: [{ delta: { content: 'A' } }] });
69
69
  mockStream.emit('chunk', { choices: [{ delta: { content: 'B' } }] });
@@ -75,7 +75,7 @@ describe('StreamingAsyncIterator', () => {
75
75
  if (done) {
76
76
  break;
77
77
  }
78
- results.push((_a = value.content) !== null && _a !== void 0 ? _a : '');
78
+ results.push(((0, ai_core_1.isTextResponsePart)(value) && value.content) || '');
79
79
  }
80
80
  (0, chai_1.expect)(results).to.deep.equal(['A', 'B', 'C']);
81
81
  });
@@ -94,7 +94,6 @@ describe('StreamingAsyncIterator', () => {
94
94
  (0, chai_1.expect)(second.value).to.be.undefined;
95
95
  });
96
96
  it('should handle the end event correctly', async () => {
97
- var _a;
98
97
  iterator = createIterator();
99
98
  mockStream.emit('chunk', { choices: [{ delta: { content: 'EndTest1' } }] });
100
99
  mockStream.emit('chunk', { choices: [{ delta: { content: 'EndTest2' } }] });
@@ -105,7 +104,7 @@ describe('StreamingAsyncIterator', () => {
105
104
  if (done) {
106
105
  break;
107
106
  }
108
- results.push((_a = value.content) !== null && _a !== void 0 ? _a : '');
107
+ results.push(((0, ai_core_1.isTextResponsePart)(value) && value.content) || '');
109
108
  }
110
109
  (0, chai_1.expect)(results).to.deep.equal(['EndTest1', 'EndTest2']);
111
110
  });
@@ -196,7 +195,7 @@ describe('StreamingAsyncIterator', () => {
196
195
  results.push(part);
197
196
  }
198
197
  (0, chai_1.expect)(results).to.have.lengthOf(1);
199
- (0, chai_1.expect)(results[0].tool_calls).to.deep.equal([
198
+ (0, chai_1.expect)((0, ai_core_1.isToolCallResponsePart)(results[0]) && results[0].tool_calls).to.deep.equal([
200
199
  {
201
200
  id: 'tool-123',
202
201
  finished: true,
@@ -1 +1 @@
1
- {"version":3,"file":"openai-streaming-iterator.spec.js","sourceRoot":"","sources":["../../src/node/openai-streaming-iterator.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-streaming-iterator.spec.js","sourceRoot":"","sources":["../../src/node/openai-streaming-iterator.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@theia/ai-openai",
3
- "version": "1.60.0-next.47+9332521b9",
3
+ "version": "1.60.0",
4
4
  "description": "Theia - OpenAI Integration",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.60.0-next.47+9332521b9",
7
- "@theia/core": "1.60.0-next.47+9332521b9",
8
- "@theia/filesystem": "1.60.0-next.47+9332521b9",
9
- "@theia/workspace": "1.60.0-next.47+9332521b9",
6
+ "@theia/ai-core": "1.60.0",
7
+ "@theia/core": "1.60.0",
8
+ "@theia/filesystem": "1.60.0",
9
+ "@theia/workspace": "1.60.0",
10
10
  "minimatch": "^5.1.0",
11
11
  "openai": "^4.77.0",
12
12
  "tslib": "^2.6.2"
@@ -45,10 +45,10 @@
45
45
  "watch": "theiaext watch"
46
46
  },
47
47
  "devDependencies": {
48
- "@theia/ext-scripts": "1.59.0"
48
+ "@theia/ext-scripts": "1.60.0"
49
49
  },
50
50
  "nyc": {
51
51
  "extends": "../../configs/nyc.json"
52
52
  },
53
- "gitHead": "9332521b9aa74bf534d45968905d37e30a13c3b5"
53
+ "gitHead": "193fa55d7e26aa9dc8acba3ae3b99b0182f3603f"
54
54
  }
@@ -18,7 +18,6 @@ import { FrontendApplicationContribution, PreferenceService } from '@theia/core/
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
19
  import { OpenAiLanguageModelsManager, OpenAiModelDescription } from '../common';
20
20
  import { API_KEY_PREF, CUSTOM_ENDPOINTS_PREF, MODELS_PREF } from './openai-preferences';
21
- import { PREFERENCE_NAME_REQUEST_SETTINGS, RequestSetting } from '@theia/ai-core/lib/browser/ai-core-preferences';
22
21
 
23
22
  const OPENAI_PROVIDER_ID = 'openai';
24
23
 
@@ -40,12 +39,11 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
40
39
  this.manager.setApiKey(apiKey);
41
40
 
42
41
  const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
43
- const requestSettings = this.getRequestSettingsPref();
44
- this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createOpenAIModelDescription(modelId, requestSettings)));
42
+ this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createOpenAIModelDescription(modelId)));
45
43
  this.prevModels = [...models];
46
44
 
47
45
  const customModels = this.preferenceService.get<Partial<OpenAiModelDescription>[]>(CUSTOM_ENDPOINTS_PREF, []);
48
- this.manager.createOrUpdateLanguageModels(...this.createCustomModelDescriptionsFromPreferences(customModels, this.getRequestSettingsPref()));
46
+ this.manager.createOrUpdateLanguageModels(...this.createCustomModelDescriptionsFromPreferences(customModels));
49
47
  this.prevCustomModels = [...customModels];
50
48
 
51
49
  this.preferenceService.onPreferenceChanged(event => {
@@ -55,8 +53,6 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
55
53
  this.handleModelChanges(event.newValue as string[]);
56
54
  } else if (event.preferenceName === CUSTOM_ENDPOINTS_PREF) {
57
55
  this.handleCustomModelChanges(event.newValue as Partial<OpenAiModelDescription>[]);
58
- } else if (event.preferenceName === PREFERENCE_NAME_REQUEST_SETTINGS) {
59
- this.handleRequestSettingsChanges(event.newValue as RequestSetting[]);
60
56
  }
61
57
  });
62
58
  });
@@ -70,19 +66,13 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
70
66
  const modelsToAdd = [...updatedModels].filter(model => !oldModels.has(model));
71
67
 
72
68
  this.manager.removeLanguageModels(...modelsToRemove.map(model => `openai/${model}`));
73
- const requestSettings = this.getRequestSettingsPref();
74
- this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createOpenAIModelDescription(modelId, requestSettings)));
69
+ this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createOpenAIModelDescription(modelId)));
75
70
  this.prevModels = newModels;
76
71
  }
77
72
 
78
- private getRequestSettingsPref(): RequestSetting[] {
79
- return this.preferenceService.get<RequestSetting[]>(PREFERENCE_NAME_REQUEST_SETTINGS, []);
80
- }
81
-
82
73
  protected handleCustomModelChanges(newCustomModels: Partial<OpenAiModelDescription>[]): void {
83
- const requestSettings = this.getRequestSettingsPref();
84
- const oldModels = this.createCustomModelDescriptionsFromPreferences(this.prevCustomModels, requestSettings);
85
- const newModels = this.createCustomModelDescriptionsFromPreferences(newCustomModels, requestSettings);
74
+ const oldModels = this.createCustomModelDescriptionsFromPreferences(this.prevCustomModels);
75
+ const newModels = this.createCustomModelDescriptionsFromPreferences(newCustomModels);
86
76
 
87
77
  const modelsToRemove = oldModels.filter(model => !newModels.some(newModel => newModel.id === model.id));
88
78
  const modelsToAddOrUpdate = newModels.filter(newModel =>
@@ -101,17 +91,8 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
101
91
  this.prevCustomModels = [...newCustomModels];
102
92
  }
103
93
 
104
- protected handleRequestSettingsChanges(newSettings: RequestSetting[]): void {
105
- const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
106
- this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createOpenAIModelDescription(modelId, newSettings)));
107
-
108
- const customModels = this.preferenceService.get<Partial<OpenAiModelDescription>[]>(CUSTOM_ENDPOINTS_PREF, []);
109
- this.manager.createOrUpdateLanguageModels(...this.createCustomModelDescriptionsFromPreferences(customModels, newSettings));
110
- }
111
-
112
- protected createOpenAIModelDescription(modelId: string, requestSettings: RequestSetting[]): OpenAiModelDescription {
94
+ protected createOpenAIModelDescription(modelId: string): OpenAiModelDescription {
113
95
  const id = `${OPENAI_PROVIDER_ID}/${modelId}`;
114
- const modelRequestSetting = this.getMatchingRequestSetting(modelId, OPENAI_PROVIDER_ID, requestSettings);
115
96
  return {
116
97
  id: id,
117
98
  model: modelId,
@@ -119,22 +100,18 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
119
100
  apiVersion: true,
120
101
  developerMessageSettings: openAIModelsNotSupportingDeveloperMessages.includes(modelId) ? 'user' : 'developer',
121
102
  enableStreaming: !openAIModelsWithDisabledStreaming.includes(modelId),
122
- supportsStructuredOutput: !openAIModelsWithoutStructuredOutput.includes(modelId),
123
- defaultRequestSettings: modelRequestSetting?.requestSettings
103
+ supportsStructuredOutput: !openAIModelsWithoutStructuredOutput.includes(modelId)
124
104
  };
125
105
  }
126
106
 
127
107
  protected createCustomModelDescriptionsFromPreferences(
128
- preferences: Partial<OpenAiModelDescription>[],
129
- requestSettings: RequestSetting[]
108
+ preferences: Partial<OpenAiModelDescription>[]
130
109
  ): OpenAiModelDescription[] {
131
110
  return preferences.reduce((acc, pref) => {
132
111
  if (!pref.model || !pref.url || typeof pref.model !== 'string' || typeof pref.url !== 'string') {
133
112
  return acc;
134
113
  }
135
114
 
136
- const modelRequestSetting = this.getMatchingRequestSetting(pref.model, OPENAI_PROVIDER_ID, requestSettings);
137
-
138
115
  return [
139
116
  ...acc,
140
117
  {
@@ -145,27 +122,11 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
145
122
  apiVersion: typeof pref.apiVersion === 'string' || pref.apiVersion === true ? pref.apiVersion : undefined,
146
123
  developerMessageSettings: pref.developerMessageSettings ?? 'developer',
147
124
  supportsStructuredOutput: pref.supportsStructuredOutput ?? true,
148
- enableStreaming: pref.enableStreaming ?? true,
149
- defaultRequestSettings: modelRequestSetting?.requestSettings
125
+ enableStreaming: pref.enableStreaming ?? true
150
126
  }
151
127
  ];
152
128
  }, []);
153
129
  }
154
- protected getMatchingRequestSetting(
155
- modelId: string,
156
- providerId: string,
157
- requestSettings: RequestSetting[]
158
- ): RequestSetting | undefined {
159
- const matchingSettings = requestSettings.filter(
160
- setting => (!setting.providerId || setting.providerId === providerId) && setting.modelId === modelId
161
- );
162
- if (matchingSettings.length > 1) {
163
- console.warn(
164
- `Multiple entries found for provider "${providerId}" and model "${modelId}". Using the first match.`
165
- );
166
- }
167
- return matchingSettings[0];
168
- }
169
130
  }
170
131
 
171
132
  const openAIModelsWithDisabledStreaming: string[] = [];
@@ -52,10 +52,6 @@ export interface OpenAiModelDescription {
52
52
  * Flag to configure whether the OpenAPI model supports structured output. Default is `true`.
53
53
  */
54
54
  supportsStructuredOutput: boolean;
55
- /**
56
- * Default request settings for the OpenAI model.
57
- */
58
- defaultRequestSettings?: { [key: string]: unknown };
59
55
  }
60
56
  export interface OpenAiLanguageModelsManager {
61
57
  apiKey: string | undefined;
@@ -18,9 +18,10 @@ import {
18
18
  LanguageModel,
19
19
  LanguageModelParsedResponse,
20
20
  LanguageModelRequest,
21
- LanguageModelRequestMessage,
21
+ LanguageModelMessage,
22
22
  LanguageModelResponse,
23
- LanguageModelTextResponse
23
+ LanguageModelTextResponse,
24
+ TextMessage
24
25
  } from '@theia/ai-core';
25
26
  import { CancellationToken } from '@theia/core';
26
27
  import { injectable } from '@theia/core/shared/inversify';
@@ -44,7 +45,6 @@ export class OpenAiModel implements LanguageModel {
44
45
  * @param apiVersion a function that returns the OpenAPI version to use for this model, called on each request
45
46
  * @param developerMessageSettings how to handle system messages
46
47
  * @param url the OpenAI API compatible endpoint where the model is hosted. If not provided the default OpenAI endpoint will be used.
47
- * @param defaultRequestSettings optional default settings for requests made using this model.
48
48
  */
49
49
  constructor(
50
50
  public readonly id: string,
@@ -55,16 +55,11 @@ export class OpenAiModel implements LanguageModel {
55
55
  public supportsStructuredOutput: boolean,
56
56
  public url: string | undefined,
57
57
  public openAiModelUtils: OpenAiModelUtils,
58
- public developerMessageSettings: DeveloperMessageSettings = 'developer',
59
- public defaultRequestSettings?: { [key: string]: unknown },
58
+ public developerMessageSettings: DeveloperMessageSettings = 'developer'
60
59
  ) { }
61
60
 
62
61
  protected getSettings(request: LanguageModelRequest): Record<string, unknown> {
63
- const settings = request.settings ? request.settings : this.defaultRequestSettings;
64
- if (!settings) {
65
- return {};
66
- }
67
- return settings;
62
+ return request.settings ?? {};
68
63
  }
69
64
 
70
65
  async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
@@ -171,7 +166,7 @@ export class OpenAiModel implements LanguageModel {
171
166
  }
172
167
  }
173
168
 
174
- protected processMessages(messages: LanguageModelRequestMessage[]): ChatCompletionMessageParam[] {
169
+ protected processMessages(messages: LanguageModelMessage[]): ChatCompletionMessageParam[] {
175
170
  return this.openAiModelUtils.processMessages(messages, this.developerMessageSettings, this.model);
176
171
  }
177
172
  }
@@ -185,25 +180,27 @@ export class OpenAiModel implements LanguageModel {
185
180
  export class OpenAiModelUtils {
186
181
 
187
182
  protected processSystemMessages(
188
- messages: LanguageModelRequestMessage[],
183
+ messages: LanguageModelMessage[],
189
184
  developerMessageSettings: DeveloperMessageSettings
190
- ): LanguageModelRequestMessage[] {
185
+ ): LanguageModelMessage[] {
191
186
  if (developerMessageSettings === 'skip') {
192
187
  return messages.filter(message => message.actor !== 'system');
193
188
  } else if (developerMessageSettings === 'mergeWithFollowingUserMessage') {
194
189
  const updated = messages.slice();
195
190
  for (let i = updated.length - 1; i >= 0; i--) {
196
191
  if (updated[i].actor === 'system') {
192
+ const systemMessage = updated[i] as TextMessage;
197
193
  if (i + 1 < updated.length && updated[i + 1].actor === 'user') {
198
194
  // Merge system message with the next user message
195
+ const userMessage = updated[i + 1] as TextMessage;
199
196
  updated[i + 1] = {
200
197
  ...updated[i + 1],
201
- query: updated[i].query + '\n' + updated[i + 1].query
202
- };
198
+ text: systemMessage.text + '\n' + userMessage.text
199
+ } as TextMessage;
203
200
  updated.splice(i, 1);
204
201
  } else {
205
202
  // The message directly after is not a user message (or none exists), so create a new user message right after
206
- updated.splice(i + 1, 0, { actor: 'user', type: 'text', query: updated[i].query });
203
+ updated.splice(i + 1, 0, { actor: 'user', type: 'text', text: systemMessage.text });
207
204
  updated.splice(i, 1);
208
205
  }
209
206
  }
@@ -214,7 +211,7 @@ export class OpenAiModelUtils {
214
211
  }
215
212
 
216
213
  protected toOpenAiRole(
217
- message: LanguageModelRequestMessage,
214
+ message: LanguageModelMessage,
218
215
  developerMessageSettings: DeveloperMessageSettings
219
216
  ): 'developer' | 'user' | 'assistant' | 'system' {
220
217
  if (message.actor === 'system') {
@@ -230,13 +227,29 @@ export class OpenAiModelUtils {
230
227
  }
231
228
 
232
229
  protected toOpenAIMessage(
233
- message: LanguageModelRequestMessage,
230
+ message: LanguageModelMessage,
234
231
  developerMessageSettings: DeveloperMessageSettings
235
232
  ): ChatCompletionMessageParam {
236
- return {
237
- role: this.toOpenAiRole(message, developerMessageSettings),
238
- content: message.query || ''
239
- };
233
+ if (LanguageModelMessage.isTextMessage(message)) {
234
+ return {
235
+ role: this.toOpenAiRole(message, developerMessageSettings),
236
+ content: message.text
237
+ };
238
+ }
239
+ if (LanguageModelMessage.isToolUseMessage(message)) {
240
+ return {
241
+ role: 'assistant',
242
+ tool_calls: [{ id: message.id, function: { name: message.name, arguments: JSON.stringify(message.input) }, type: 'function' }]
243
+ };
244
+ }
245
+ if (LanguageModelMessage.isToolResultMessage(message)) {
246
+ return {
247
+ role: 'tool',
248
+ tool_call_id: message.tool_use_id,
249
+ content: ''
250
+ };
251
+ }
252
+ throw new Error(`Unknown message type:'${JSON.stringify(message)}'`);
240
253
  }
241
254
 
242
255
  /**
@@ -251,7 +264,7 @@ export class OpenAiModelUtils {
251
264
  * @returns an array of messages formatted for the OpenAI API.
252
265
  */
253
266
  processMessages(
254
- messages: LanguageModelRequestMessage[],
267
+ messages: LanguageModelMessage[],
255
268
  developerMessageSettings: DeveloperMessageSettings,
256
269
  model: string
257
270
  ): ChatCompletionMessageParam[] {
@@ -75,7 +75,6 @@ export class OpenAiLanguageModelsManagerImpl implements OpenAiLanguageModelsMana
75
75
  model.apiVersion = apiVersionProvider;
76
76
  model.developerMessageSettings = modelDescription.developerMessageSettings || 'developer';
77
77
  model.supportsStructuredOutput = modelDescription.supportsStructuredOutput;
78
- model.defaultRequestSettings = modelDescription.defaultRequestSettings;
79
78
  } else {
80
79
  this.languageModelRegistry.addLanguageModels([
81
80
  new OpenAiModel(
@@ -88,7 +87,6 @@ export class OpenAiLanguageModelsManagerImpl implements OpenAiLanguageModelsMana
88
87
  modelDescription.url,
89
88
  this.openAiModelUtils,
90
89
  modelDescription.developerMessageSettings,
91
- modelDescription.defaultRequestSettings
92
90
  )
93
91
  ]);
94
92
  }
@@ -21,9 +21,9 @@ describe('OpenAiModelUtils - processMessages', () => {
21
21
  describe("when developerMessageSettings is 'skip'", () => {
22
22
  it('should remove all system messages', () => {
23
23
  const messages = [
24
- { actor: 'system', type: 'text', query: 'system message' },
25
- { actor: 'user', type: 'text', query: 'user message' },
26
- { actor: 'system', type: 'text', query: 'another system message' },
24
+ { actor: 'system', type: 'text', text: 'system message' },
25
+ { actor: 'user', type: 'text', text: 'user message' },
26
+ { actor: 'system', type: 'text', text: 'another system message' },
27
27
  ];
28
28
  const result = utils.processMessages(messages, 'skip');
29
29
  expect(result).to.deep.equal([
@@ -33,9 +33,9 @@ describe('OpenAiModelUtils - processMessages', () => {
33
33
 
34
34
  it('should do nothing if there is no system message', () => {
35
35
  const messages = [
36
- { actor: 'user', type: 'text', query: 'user message' },
37
- { actor: 'user', type: 'text', query: 'another user message' },
38
- { actor: 'ai', type: 'text', query: 'ai message' }
36
+ { actor: 'user', type: 'text', text: 'user message' },
37
+ { actor: 'user', type: 'text', text: 'another user message' },
38
+ { actor: 'ai', type: 'text', text: 'ai message' }
39
39
  ];
40
40
  const result = utils.processMessages(messages, 'skip');
41
41
  expect(result).to.deep.equal([
@@ -49,9 +49,9 @@ describe('OpenAiModelUtils - processMessages', () => {
49
49
  describe("when developerMessageSettings is 'mergeWithFollowingUserMessage'", () => {
50
50
  it('should merge the system message with the next user message, assign role user, and remove the system message', () => {
51
51
  const messages = [
52
- { actor: 'system', type: 'text', query: 'system msg' },
53
- { actor: 'user', type: 'text', query: 'user msg' },
54
- { actor: 'ai', type: 'text', query: 'ai message' }
52
+ { actor: 'system', type: 'text', text: 'system msg' },
53
+ { actor: 'user', type: 'text', text: 'user msg' },
54
+ { actor: 'ai', type: 'text', text: 'ai message' }
55
55
  ];
56
56
  const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage');
57
57
  expect(result).to.deep.equal([
@@ -62,8 +62,8 @@ describe('OpenAiModelUtils - processMessages', () => {
62
62
 
63
63
  it('should create a new user message if no user message exists, and remove the system message', () => {
64
64
  const messages = [
65
- { actor: 'system', type: 'text', query: 'system only msg' },
66
- { actor: 'ai', type: 'text', query: 'ai message' }
65
+ { actor: 'system', type: 'text', text: 'system only msg' },
66
+ { actor: 'ai', type: 'text', text: 'ai message' }
67
67
  ];
68
68
  const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage');
69
69
  expect(result).to.deep.equal([
@@ -74,11 +74,11 @@ describe('OpenAiModelUtils - processMessages', () => {
74
74
 
75
75
  it('should create a merge multiple system message with the next user message', () => {
76
76
  const messages = [
77
- { actor: 'user', type: 'text', query: 'user message' },
78
- { actor: 'system', type: 'text', query: 'system message' },
79
- { actor: 'system', type: 'text', query: 'system message2' },
80
- { actor: 'user', type: 'text', query: 'user message2' },
81
- { actor: 'ai', type: 'text', query: 'ai message' }
77
+ { actor: 'user', type: 'text', text: 'user message' },
78
+ { actor: 'system', type: 'text', text: 'system message' },
79
+ { actor: 'system', type: 'text', text: 'system message2' },
80
+ { actor: 'user', type: 'text', text: 'user message2' },
81
+ { actor: 'ai', type: 'text', text: 'ai message' }
82
82
  ];
83
83
  const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage');
84
84
  expect(result).to.deep.equal([
@@ -90,10 +90,10 @@ describe('OpenAiModelUtils - processMessages', () => {
90
90
 
91
91
  it('should create a new user message from several system messages if the next message is not a user message', () => {
92
92
  const messages = [
93
- { actor: 'user', type: 'text', query: 'user message' },
94
- { actor: 'system', type: 'text', query: 'system message' },
95
- { actor: 'system', type: 'text', query: 'system message2' },
96
- { actor: 'ai', type: 'text', query: 'ai message' }
93
+ { actor: 'user', type: 'text', text: 'user message' },
94
+ { actor: 'system', type: 'text', text: 'system message' },
95
+ { actor: 'system', type: 'text', text: 'system message2' },
96
+ { actor: 'ai', type: 'text', text: 'ai message' }
97
97
  ];
98
98
  const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage');
99
99
  expect(result).to.deep.equal([
@@ -107,9 +107,9 @@ describe('OpenAiModelUtils - processMessages', () => {
107
107
  describe('when no special merging or skipping is needed', () => {
108
108
  it('should leave messages unchanged in ordering and assign roles based on developerMessageSettings', () => {
109
109
  const messages = [
110
- { actor: 'user', type: 'text', query: 'user message' },
111
- { actor: 'system', type: 'text', query: 'system message' },
112
- { actor: 'ai', type: 'text', query: 'ai message' }
110
+ { actor: 'user', type: 'text', text: 'user message' },
111
+ { actor: 'system', type: 'text', text: 'system message' },
112
+ { actor: 'ai', type: 'text', text: 'ai message' }
113
113
  ];
114
114
  // Using a developerMessageSettings that is not merge/skip, e.g., 'developer'
115
115
  const result = utils.processMessages(messages, 'developer');
@@ -124,8 +124,8 @@ describe('OpenAiModelUtils - processMessages', () => {
124
124
  describe('role assignment for system messages when developerMessageSettings is one of the role strings', () => {
125
125
  it('should assign role as specified for a system message when developerMessageSettings is "user"', () => {
126
126
  const messages = [
127
- { actor: 'system', type: 'text', query: 'system msg' },
128
- { actor: 'ai', type: 'text', query: 'ai msg' }
127
+ { actor: 'system', type: 'text', text: 'system msg' },
128
+ { actor: 'ai', type: 'text', text: 'ai msg' }
129
129
  ];
130
130
  // Since the first message is system and developerMessageSettings is not merge/skip, ordering is not adjusted
131
131
  const result = utils.processMessages(messages, 'user');
@@ -137,8 +137,8 @@ describe('OpenAiModelUtils - processMessages', () => {
137
137
 
138
138
  it('should assign role as specified for a system message when developerMessageSettings is "system"', () => {
139
139
  const messages = [
140
- { actor: 'system', type: 'text', query: 'system msg' },
141
- { actor: 'ai', type: 'text', query: 'ai msg' }
140
+ { actor: 'system', type: 'text', text: 'system msg' },
141
+ { actor: 'ai', type: 'text', text: 'ai msg' }
142
142
  ];
143
143
  const result = utils.processMessages(messages, 'system');
144
144
  expect(result).to.deep.equal([
@@ -149,9 +149,9 @@ describe('OpenAiModelUtils - processMessages', () => {
149
149
 
150
150
  it('should assign role as specified for a system message when developerMessageSettings is "developer"', () => {
151
151
  const messages = [
152
- { actor: 'system', type: 'text', query: 'system msg' },
153
- { actor: 'user', type: 'text', query: 'user msg' },
154
- { actor: 'ai', type: 'text', query: 'ai msg' }
152
+ { actor: 'system', type: 'text', text: 'system msg' },
153
+ { actor: 'user', type: 'text', text: 'user msg' },
154
+ { actor: 'ai', type: 'text', text: 'ai msg' }
155
155
  ];
156
156
  const result = utils.processMessages(messages, 'developer');
157
157
  expect(result).to.deep.equal([
@@ -19,7 +19,7 @@ import * as sinon from 'sinon';
19
19
  import { StreamingAsyncIterator } from './openai-streaming-iterator';
20
20
  import { ChatCompletionStream } from 'openai/lib/ChatCompletionStream';
21
21
  import { CancellationTokenSource, CancellationError } from '@theia/core';
22
- import { LanguageModelStreamResponsePart } from '@theia/ai-core';
22
+ import { LanguageModelStreamResponsePart, isTextResponsePart, isToolCallResponsePart } from '@theia/ai-core';
23
23
  import { EventEmitter } from 'events';
24
24
 
25
25
  describe('StreamingAsyncIterator', () => {
@@ -88,7 +88,7 @@ describe('StreamingAsyncIterator', () => {
88
88
  if (done) {
89
89
  break;
90
90
  }
91
- results.push(value.content ?? '');
91
+ results.push((isTextResponsePart(value) && value.content) || '');
92
92
  }
93
93
 
94
94
  expect(results).to.deep.equal(['A', 'B', 'C']);
@@ -126,7 +126,7 @@ describe('StreamingAsyncIterator', () => {
126
126
  if (done) {
127
127
  break;
128
128
  }
129
- results.push(value.content ?? '');
129
+ results.push((isTextResponsePart(value) && value.content) || '');
130
130
  }
131
131
 
132
132
  expect(results).to.deep.equal(['EndTest1', 'EndTest2']);
@@ -243,7 +243,7 @@ describe('StreamingAsyncIterator', () => {
243
243
  }
244
244
 
245
245
  expect(results).to.have.lengthOf(1);
246
- expect(results[0].tool_calls).to.deep.equal([
246
+ expect(isToolCallResponsePart(results[0]) && results[0].tool_calls).to.deep.equal([
247
247
  {
248
248
  id: 'tool-123',
249
249
  finished: true,
@@ -53,7 +53,7 @@ export class StreamingAsyncIterator implements AsyncIterableIterator<LanguageMod
53
53
  this.dispose();
54
54
  }, true);
55
55
  this.registerStreamListener('chunk', chunk => {
56
- this.handleIncoming({ ...chunk.choices[0]?.delta });
56
+ this.handleIncoming({ ...chunk.choices[0]?.delta as LanguageModelStreamResponsePart });
57
57
  });
58
58
  if (cancellationToken) {
59
59
  this.toDispose.push(cancellationToken.onCancellationRequested(() => stream.abort()));