@theia/ai-openai 1.67.0-next.3 → 1.67.0-next.56

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 (57) hide show
  1. package/README.md +1 -0
  2. package/package.json +6 -6
  3. package/src/common/openai-preferences.ts +9 -12
  4. package/src/node/openai-model-utils.spec.ts +104 -1
  5. package/src/node/openai-response-api-utils.ts +54 -6
  6. package/lib/browser/openai-frontend-application-contribution.d.ts +0 -18
  7. package/lib/browser/openai-frontend-application-contribution.d.ts.map +0 -1
  8. package/lib/browser/openai-frontend-application-contribution.js +0 -163
  9. package/lib/browser/openai-frontend-application-contribution.js.map +0 -1
  10. package/lib/browser/openai-frontend-module.d.ts +0 -4
  11. package/lib/browser/openai-frontend-module.d.ts.map +0 -1
  12. package/lib/browser/openai-frontend-module.js +0 -33
  13. package/lib/browser/openai-frontend-module.js.map +0 -1
  14. package/lib/common/index.d.ts +0 -2
  15. package/lib/common/index.d.ts.map +0 -1
  16. package/lib/common/index.js +0 -20
  17. package/lib/common/index.js.map +0 -1
  18. package/lib/common/openai-language-models-manager.d.ts +0 -63
  19. package/lib/common/openai-language-models-manager.d.ts.map +0 -1
  20. package/lib/common/openai-language-models-manager.js +0 -22
  21. package/lib/common/openai-language-models-manager.js.map +0 -1
  22. package/lib/common/openai-preferences.d.ts +0 -7
  23. package/lib/common/openai-preferences.d.ts.map +0 -1
  24. package/lib/common/openai-preferences.js +0 -144
  25. package/lib/common/openai-preferences.js.map +0 -1
  26. package/lib/node/openai-backend-module.d.ts +0 -5
  27. package/lib/node/openai-backend-module.d.ts.map +0 -1
  28. package/lib/node/openai-backend-module.js +0 -40
  29. package/lib/node/openai-backend-module.js.map +0 -1
  30. package/lib/node/openai-language-model.d.ts +0 -80
  31. package/lib/node/openai-language-model.d.ts.map +0 -1
  32. package/lib/node/openai-language-model.js +0 -324
  33. package/lib/node/openai-language-model.js.map +0 -1
  34. package/lib/node/openai-language-models-manager-impl.d.ts +0 -22
  35. package/lib/node/openai-language-models-manager-impl.d.ts.map +0 -1
  36. package/lib/node/openai-language-models-manager-impl.js +0 -162
  37. package/lib/node/openai-language-models-manager-impl.js.map +0 -1
  38. package/lib/node/openai-model-utils.spec.d.ts +0 -2
  39. package/lib/node/openai-model-utils.spec.d.ts.map +0 -1
  40. package/lib/node/openai-model-utils.spec.js +0 -382
  41. package/lib/node/openai-model-utils.spec.js.map +0 -1
  42. package/lib/node/openai-request-api-context.d.ts +0 -4
  43. package/lib/node/openai-request-api-context.d.ts.map +0 -1
  44. package/lib/node/openai-request-api-context.js +0 -18
  45. package/lib/node/openai-request-api-context.js.map +0 -1
  46. package/lib/node/openai-response-api-utils.d.ts +0 -42
  47. package/lib/node/openai-response-api-utils.d.ts.map +0 -1
  48. package/lib/node/openai-response-api-utils.js +0 -677
  49. package/lib/node/openai-response-api-utils.js.map +0 -1
  50. package/lib/node/openai-streaming-iterator.d.ts +0 -24
  51. package/lib/node/openai-streaming-iterator.d.ts.map +0 -1
  52. package/lib/node/openai-streaming-iterator.js +0 -176
  53. package/lib/node/openai-streaming-iterator.js.map +0 -1
  54. package/lib/node/openai-streaming-iterator.spec.d.ts +0 -2
  55. package/lib/node/openai-streaming-iterator.spec.d.ts.map +0 -1
  56. package/lib/node/openai-streaming-iterator.spec.js +0 -207
  57. package/lib/node/openai-streaming-iterator.spec.js.map +0 -1
@@ -1,382 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // *****************************************************************************
4
- // Copyright (C) 2024 EclipseSource GmbH.
5
- //
6
- // This program and the accompanying materials are made available under the
7
- // terms of the Eclipse Public License v. 2.0 which is available at
8
- // http://www.eclipse.org/legal/epl-2.0.
9
- //
10
- // This Source Code may also be made available under the following Secondary
11
- // Licenses when the conditions for such availability set forth in the Eclipse
12
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
13
- // with the GNU Classpath Exception which is available at
14
- // https://www.gnu.org/software/classpath/license.html.
15
- //
16
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
17
- // *****************************************************************************
18
- const chai_1 = require("chai");
19
- const openai_language_model_1 = require("./openai-language-model");
20
- const openai_response_api_utils_1 = require("./openai-response-api-utils");
21
- const utils = new openai_language_model_1.OpenAiModelUtils();
22
- const responseUtils = new openai_response_api_utils_1.OpenAiResponseApiUtils();
23
- describe('OpenAiModelUtils - processMessages', () => {
24
- describe("when developerMessageSettings is 'skip'", () => {
25
- it('should remove all system messages', () => {
26
- const messages = [
27
- { actor: 'system', type: 'text', text: 'system message' },
28
- { actor: 'user', type: 'text', text: 'user message' },
29
- { actor: 'system', type: 'text', text: 'another system message' },
30
- ];
31
- const result = utils.processMessages(messages, 'skip', 'gpt-4');
32
- (0, chai_1.expect)(result).to.deep.equal([
33
- { role: 'user', content: 'user message' }
34
- ]);
35
- });
36
- it('should do nothing if there is no system message', () => {
37
- const messages = [
38
- { actor: 'user', type: 'text', text: 'user message' },
39
- { actor: 'user', type: 'text', text: 'another user message' },
40
- { actor: 'ai', type: 'text', text: 'ai message' }
41
- ];
42
- const result = utils.processMessages(messages, 'skip', 'gpt-4');
43
- (0, chai_1.expect)(result).to.deep.equal([
44
- { role: 'user', content: 'user message' },
45
- { role: 'user', content: 'another user message' },
46
- { role: 'assistant', content: 'ai message' }
47
- ]);
48
- });
49
- });
50
- describe("when developerMessageSettings is 'mergeWithFollowingUserMessage'", () => {
51
- it('should merge the system message with the next user message, assign role user, and remove the system message', () => {
52
- const messages = [
53
- { actor: 'system', type: 'text', text: 'system msg' },
54
- { actor: 'user', type: 'text', text: 'user msg' },
55
- { actor: 'ai', type: 'text', text: 'ai message' }
56
- ];
57
- const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage', 'gpt-4');
58
- (0, chai_1.expect)(result).to.deep.equal([
59
- { role: 'user', content: 'system msg\nuser msg' },
60
- { role: 'assistant', content: 'ai message' }
61
- ]);
62
- });
63
- it('should create a new user message if no user message exists, and remove the system message', () => {
64
- const messages = [
65
- { actor: 'system', type: 'text', text: 'system only msg' },
66
- { actor: 'ai', type: 'text', text: 'ai message' }
67
- ];
68
- const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage', 'gpt-4');
69
- (0, chai_1.expect)(result).to.deep.equal([
70
- { role: 'user', content: 'system only msg' },
71
- { role: 'assistant', content: 'ai message' }
72
- ]);
73
- });
74
- it('should create a merge multiple system message with the next user message', () => {
75
- const messages = [
76
- { actor: 'user', type: 'text', text: 'user message' },
77
- { actor: 'system', type: 'text', text: 'system message' },
78
- { actor: 'system', type: 'text', text: 'system message2' },
79
- { actor: 'user', type: 'text', text: 'user message2' },
80
- { actor: 'ai', type: 'text', text: 'ai message' }
81
- ];
82
- const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage', 'gpt-4');
83
- (0, chai_1.expect)(result).to.deep.equal([
84
- { role: 'user', content: 'user message' },
85
- { role: 'user', content: 'system message\nsystem message2\nuser message2' },
86
- { role: 'assistant', content: 'ai message' }
87
- ]);
88
- });
89
- it('should create a new user message from several system messages if the next message is not a user message', () => {
90
- const messages = [
91
- { actor: 'user', type: 'text', text: 'user message' },
92
- { actor: 'system', type: 'text', text: 'system message' },
93
- { actor: 'system', type: 'text', text: 'system message2' },
94
- { actor: 'ai', type: 'text', text: 'ai message' }
95
- ];
96
- const result = utils.processMessages(messages, 'mergeWithFollowingUserMessage', 'gpt-4');
97
- (0, chai_1.expect)(result).to.deep.equal([
98
- { role: 'user', content: 'user message' },
99
- { role: 'user', content: 'system message\nsystem message2' },
100
- { role: 'assistant', content: 'ai message' }
101
- ]);
102
- });
103
- });
104
- describe('when no special merging or skipping is needed', () => {
105
- it('should leave messages unchanged in ordering and assign roles based on developerMessageSettings', () => {
106
- const messages = [
107
- { actor: 'user', type: 'text', text: 'user message' },
108
- { actor: 'system', type: 'text', text: 'system message' },
109
- { actor: 'ai', type: 'text', text: 'ai message' }
110
- ];
111
- // Using a developerMessageSettings that is not merge/skip, e.g., 'developer'
112
- const result = utils.processMessages(messages, 'developer', 'gpt-4');
113
- (0, chai_1.expect)(result).to.deep.equal([
114
- { role: 'user', content: 'user message' },
115
- { role: 'developer', content: 'system message' },
116
- { role: 'assistant', content: 'ai message' }
117
- ]);
118
- });
119
- });
120
- describe('role assignment for system messages when developerMessageSettings is one of the role strings', () => {
121
- it('should assign role as specified for a system message when developerMessageSettings is "user"', () => {
122
- const messages = [
123
- { actor: 'system', type: 'text', text: 'system msg' },
124
- { actor: 'ai', type: 'text', text: 'ai msg' }
125
- ];
126
- // Since the first message is system and developerMessageSettings is not merge/skip, ordering is not adjusted
127
- const result = utils.processMessages(messages, 'user', 'gpt-4');
128
- (0, chai_1.expect)(result).to.deep.equal([
129
- { role: 'user', content: 'system msg' },
130
- { role: 'assistant', content: 'ai msg' }
131
- ]);
132
- });
133
- it('should assign role as specified for a system message when developerMessageSettings is "system"', () => {
134
- const messages = [
135
- { actor: 'system', type: 'text', text: 'system msg' },
136
- { actor: 'ai', type: 'text', text: 'ai msg' }
137
- ];
138
- const result = utils.processMessages(messages, 'system', 'gpt-4');
139
- (0, chai_1.expect)(result).to.deep.equal([
140
- { role: 'system', content: 'system msg' },
141
- { role: 'assistant', content: 'ai msg' }
142
- ]);
143
- });
144
- it('should assign role as specified for a system message when developerMessageSettings is "developer"', () => {
145
- const messages = [
146
- { actor: 'system', type: 'text', text: 'system msg' },
147
- { actor: 'user', type: 'text', text: 'user msg' },
148
- { actor: 'ai', type: 'text', text: 'ai msg' }
149
- ];
150
- const result = utils.processMessages(messages, 'developer', 'gpt-4');
151
- (0, chai_1.expect)(result).to.deep.equal([
152
- { role: 'developer', content: 'system msg' },
153
- { role: 'user', content: 'user msg' },
154
- { role: 'assistant', content: 'ai msg' }
155
- ]);
156
- });
157
- });
158
- });
159
- describe('OpenAiModelUtils - processMessagesForResponseApi', () => {
160
- describe("when developerMessageSettings is 'skip'", () => {
161
- it('should remove all system messages and return no instructions', () => {
162
- const messages = [
163
- { actor: 'system', type: 'text', text: 'system message' },
164
- { actor: 'user', type: 'text', text: 'user message' },
165
- { actor: 'system', type: 'text', text: 'another system message' },
166
- ];
167
- const result = responseUtils.processMessages(messages, 'skip', 'gpt-4');
168
- (0, chai_1.expect)(result.instructions).to.be.undefined;
169
- (0, chai_1.expect)(result.input).to.deep.equal([
170
- {
171
- type: 'message',
172
- role: 'user',
173
- content: [{ type: 'input_text', text: 'user message' }]
174
- }
175
- ]);
176
- });
177
- });
178
- describe("when developerMessageSettings is 'mergeWithFollowingUserMessage'", () => {
179
- it('should merge system message with user message and return no instructions', () => {
180
- const messages = [
181
- { actor: 'system', type: 'text', text: 'system msg' },
182
- { actor: 'user', type: 'text', text: 'user msg' },
183
- { actor: 'ai', type: 'text', text: 'ai message' }
184
- ];
185
- const result = responseUtils.processMessages(messages, 'mergeWithFollowingUserMessage', 'gpt-4');
186
- (0, chai_1.expect)(result.instructions).to.be.undefined;
187
- (0, chai_1.expect)(result.input).to.have.lengthOf(2);
188
- (0, chai_1.expect)(result.input[0]).to.deep.equal({
189
- type: 'message',
190
- role: 'user',
191
- content: [{ type: 'input_text', text: 'system msg\nuser msg' }]
192
- });
193
- const assistantMessage = result.input[1];
194
- (0, chai_1.expect)(assistantMessage).to.deep.include({
195
- type: 'message',
196
- role: 'assistant',
197
- status: 'completed',
198
- content: [{ type: 'output_text', text: 'ai message', annotations: [] }]
199
- });
200
- if (assistantMessage.type === 'message' && 'id' in assistantMessage) {
201
- (0, chai_1.expect)(assistantMessage.id).to.be.a('string').and.to.match(/^msg_/);
202
- }
203
- else {
204
- throw new Error('Expected assistant message to have an id');
205
- }
206
- });
207
- });
208
- describe('when system messages should be converted to instructions', () => {
209
- it('should extract system messages as instructions and convert other messages to input items', () => {
210
- const messages = [
211
- { actor: 'system', type: 'text', text: 'You are a helpful assistant' },
212
- { actor: 'user', type: 'text', text: 'Hello!' },
213
- { actor: 'ai', type: 'text', text: 'Hi there!' }
214
- ];
215
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
216
- (0, chai_1.expect)(result.instructions).to.equal('You are a helpful assistant');
217
- (0, chai_1.expect)(result.input).to.have.lengthOf(2);
218
- (0, chai_1.expect)(result.input[0]).to.deep.equal({
219
- type: 'message',
220
- role: 'user',
221
- content: [{ type: 'input_text', text: 'Hello!' }]
222
- });
223
- const assistantMessage = result.input[1];
224
- (0, chai_1.expect)(assistantMessage).to.deep.include({
225
- type: 'message',
226
- role: 'assistant',
227
- status: 'completed',
228
- content: [{ type: 'output_text', text: 'Hi there!', annotations: [] }]
229
- });
230
- if (assistantMessage.type === 'message' && 'id' in assistantMessage) {
231
- (0, chai_1.expect)(assistantMessage.id).to.be.a('string').and.to.match(/^msg_/);
232
- }
233
- else {
234
- throw new Error('Expected assistant message to have an id');
235
- }
236
- });
237
- it('should combine multiple system messages into instructions', () => {
238
- const messages = [
239
- { actor: 'system', type: 'text', text: 'You are helpful' },
240
- { actor: 'system', type: 'text', text: 'Be concise' },
241
- { actor: 'user', type: 'text', text: 'What is 2+2?' }
242
- ];
243
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
244
- (0, chai_1.expect)(result.instructions).to.equal('You are helpful\nBe concise');
245
- (0, chai_1.expect)(result.input).to.deep.equal([
246
- {
247
- type: 'message',
248
- role: 'user',
249
- content: [{ type: 'input_text', text: 'What is 2+2?' }]
250
- }
251
- ]);
252
- });
253
- });
254
- describe('tool use and tool result messages', () => {
255
- it('should convert tool use messages to function calls', () => {
256
- const messages = [
257
- { actor: 'user', type: 'text', text: 'Calculate 2+2' },
258
- {
259
- actor: 'ai',
260
- type: 'tool_use',
261
- id: 'call_123',
262
- name: 'calculator',
263
- input: { expression: '2+2' }
264
- }
265
- ];
266
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
267
- (0, chai_1.expect)(result.input).to.deep.equal([
268
- {
269
- type: 'message',
270
- role: 'user',
271
- content: [{ type: 'input_text', text: 'Calculate 2+2' }]
272
- },
273
- {
274
- type: 'function_call',
275
- call_id: 'call_123',
276
- name: 'calculator',
277
- arguments: '{"expression":"2+2"}'
278
- }
279
- ]);
280
- });
281
- it('should convert tool result messages to function call outputs', () => {
282
- const messages = [
283
- {
284
- actor: 'user',
285
- type: 'tool_result',
286
- name: 'calculator',
287
- tool_use_id: 'call_123',
288
- content: '4'
289
- }
290
- ];
291
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
292
- (0, chai_1.expect)(result.input).to.deep.equal([
293
- {
294
- type: 'function_call_output',
295
- call_id: 'call_123',
296
- output: '4'
297
- }
298
- ]);
299
- });
300
- it('should stringify non-string tool result content', () => {
301
- const messages = [
302
- {
303
- actor: 'user',
304
- type: 'tool_result',
305
- name: 'data_processor',
306
- tool_use_id: 'call_456',
307
- content: { result: 'success', data: [1, 2, 3] }
308
- }
309
- ];
310
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
311
- (0, chai_1.expect)(result.input).to.deep.equal([
312
- {
313
- type: 'function_call_output',
314
- call_id: 'call_456',
315
- output: '{"result":"success","data":[1,2,3]}'
316
- }
317
- ]);
318
- });
319
- });
320
- describe('image messages', () => {
321
- it('should convert base64 image messages to input image items', () => {
322
- const messages = [
323
- {
324
- actor: 'user',
325
- type: 'image',
326
- image: {
327
- mimeType: 'image/png',
328
- base64data: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=='
329
- }
330
- }
331
- ];
332
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
333
- (0, chai_1.expect)(result.input).to.deep.equal([
334
- {
335
- type: 'message',
336
- role: 'user',
337
- content: [{
338
- type: 'input_image',
339
- detail: 'auto',
340
- image_url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=='
341
- }]
342
- }
343
- ]);
344
- });
345
- it('should convert URL image messages to input image items', () => {
346
- const messages = [
347
- {
348
- actor: 'user',
349
- type: 'image',
350
- image: {
351
- url: 'https://example.com/image.png'
352
- }
353
- }
354
- ];
355
- const result = responseUtils.processMessages(messages, 'developer', 'gpt-4');
356
- (0, chai_1.expect)(result.input).to.deep.equal([
357
- {
358
- type: 'message',
359
- role: 'user',
360
- content: [{
361
- type: 'input_image',
362
- detail: 'auto',
363
- image_url: 'https://example.com/image.png'
364
- }]
365
- }
366
- ]);
367
- });
368
- });
369
- describe('error handling', () => {
370
- it('should throw error for unknown message types', () => {
371
- const invalidMessage = {
372
- actor: 'user',
373
- type: 'unknown_type',
374
- someProperty: 'value'
375
- };
376
- const messages = [invalidMessage];
377
- (0, chai_1.expect)(() => responseUtils.processMessages(messages, 'developer', 'gpt-4'))
378
- .to.throw('unhandled case');
379
- });
380
- });
381
- });
382
- //# sourceMappingURL=openai-model-utils.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-model-utils.spec.js","sourceRoot":"","sources":["../../src/node/openai-model-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- interface OpenAIRequestApiContext {
2
- parent?: OpenAIRequestApiContext;
3
- }
4
- //# sourceMappingURL=openai-request-api-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-request-api-context.d.ts","sourceRoot":"","sources":["../../src/node/openai-request-api-context.ts"],"names":[],"mappings":"AAgBA,UAAU,uBAAuB;IAC7B,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAEpC"}
@@ -1,18 +0,0 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2025 EclipseSource GmbH.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
- // export class OpenAIRequestApiContext {
17
- // }
18
- //# sourceMappingURL=openai-request-api-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-request-api-context.js","sourceRoot":"","sources":["../../src/node/openai-request-api-context.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAOhF,yCAAyC;AACzC,IAAI"}
@@ -1,42 +0,0 @@
1
- import { LanguageModelMessage, LanguageModelResponse, LanguageModelStreamResponsePart, TokenUsageService, ToolRequest, UserRequest } from '@theia/ai-core';
2
- import { CancellationToken } from '@theia/core';
3
- import { OpenAI } from 'openai';
4
- import type { RunnerOptions } from 'openai/lib/AbstractChatCompletionRunner';
5
- import type { FunctionTool, ResponseInputItem, ResponseStreamEvent } from 'openai/resources/responses/responses';
6
- import { DeveloperMessageSettings, OpenAiModelUtils } from './openai-language-model';
7
- /**
8
- * Utility class for handling OpenAI Response API requests and tool calling cycles.
9
- *
10
- * This class encapsulates the complexity of the Response API's multi-turn conversation
11
- * patterns for tool calling, keeping the main language model class clean and focused.
12
- */
13
- export declare class OpenAiResponseApiUtils {
14
- /**
15
- * Handles Response API requests with proper tool calling cycles.
16
- * Works for both streaming and non-streaming cases.
17
- */
18
- handleRequest(openai: OpenAI, request: UserRequest, settings: Record<string, unknown>, model: string, modelUtils: OpenAiModelUtils, developerMessageSettings: DeveloperMessageSettings, runnerOptions: RunnerOptions, modelId: string, isStreaming: boolean, tokenUsageService?: TokenUsageService, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
19
- /**
20
- * Converts ToolRequest objects to the format expected by the Response API.
21
- */
22
- convertToolsForResponseApi(tools?: ToolRequest[]): FunctionTool[] | undefined;
23
- protected createSimpleResponseApiStreamIterator(stream: AsyncIterable<ResponseStreamEvent>, requestId: string, modelId: string, tokenUsageService?: TokenUsageService, cancellationToken?: CancellationToken): AsyncIterable<LanguageModelStreamResponsePart>;
24
- /**
25
- * Processes the provided list of messages by applying system message adjustments and converting
26
- * them directly to the format expected by the OpenAI Response API.
27
- *
28
- * This method converts messages directly without going through ChatCompletionMessageParam types.
29
- *
30
- * @param messages the list of messages to process.
31
- * @param developerMessageSettings how system and developer messages are handled during processing.
32
- * @param model the OpenAI model identifier. Currently not used, but allows subclasses to implement model-specific behavior.
33
- * @returns an object containing instructions and input formatted for the Response API.
34
- */
35
- processMessages(messages: LanguageModelMessage[], developerMessageSettings: DeveloperMessageSettings, model: string): {
36
- instructions?: string;
37
- input: ResponseInputItem[];
38
- };
39
- protected processSystemMessages(messages: LanguageModelMessage[], developerMessageSettings: DeveloperMessageSettings): LanguageModelMessage[];
40
- }
41
- export declare function processSystemMessages(messages: LanguageModelMessage[], developerMessageSettings: DeveloperMessageSettings): LanguageModelMessage[];
42
- //# sourceMappingURL=openai-response-api-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-response-api-utils.d.ts","sourceRoot":"","sources":["../../src/node/openai-response-api-utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEH,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAE/B,iBAAiB,EAEjB,WAAW,EACX,WAAW,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAe,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EACR,YAAY,EAIZ,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAYrF;;;;;GAKG;AACH,qBACa,sBAAsB;IAE/B;;;OAGG;IACG,aAAa,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,gBAAgB,EAC5B,wBAAwB,EAAE,wBAAwB,EAClD,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,iBAAiB,CAAC,EAAE,iBAAiB,GACtC,OAAO,CAAC,qBAAqB,CAAC;IA6DjC;;OAEG;IACH,0BAA0B,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS;IAuB7E,SAAS,CAAC,qCAAqC,CAC3C,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,iBAAiB,CAAC,EAAE,iBAAiB,GACtC,aAAa,CAAC,+BAA+B,CAAC;IAqCjD;;;;;;;;;;OAUG;IACH,eAAe,CACX,QAAQ,EAAE,oBAAoB,EAAE,EAChC,wBAAwB,EAAE,wBAAwB,EAClD,KAAK,EAAE,MAAM,GACd;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;KAAE;IA4ExD,SAAS,CAAC,qBAAqB,CAC3B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,wBAAwB,EAAE,wBAAwB,GACnD,oBAAoB,EAAE;CAG5B;AAkdD,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,wBAAwB,EAAE,wBAAwB,GACnD,oBAAoB,EAAE,CA0BxB"}