@theia/ai-openai 1.76.0-next.7 → 1.76.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.
- package/lib/browser/openai-frontend-application-contribution.d.ts +18 -10
- package/lib/browser/openai-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/openai-frontend-application-contribution.js +68 -64
- package/lib/browser/openai-frontend-application-contribution.js.map +1 -1
- package/lib/common/openai-language-models-manager.d.ts +20 -1
- package/lib/common/openai-language-models-manager.d.ts.map +1 -1
- package/lib/common/openai-preferences.d.ts +2 -1
- package/lib/common/openai-preferences.d.ts.map +1 -1
- package/lib/common/openai-preferences.js +23 -13
- package/lib/common/openai-preferences.js.map +1 -1
- package/lib/node/openai-language-model.d.ts +26 -2
- package/lib/node/openai-language-model.d.ts.map +1 -1
- package/lib/node/openai-language-model.js +44 -18
- package/lib/node/openai-language-model.js.map +1 -1
- package/lib/node/openai-language-model.spec.js +55 -8
- package/lib/node/openai-language-model.spec.js.map +1 -1
- package/lib/node/openai-language-models-manager-impl.d.ts +38 -1
- package/lib/node/openai-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/openai-language-models-manager-impl.js +88 -3
- package/lib/node/openai-language-models-manager-impl.js.map +1 -1
- package/lib/node/openai-language-models-manager-impl.spec.js +171 -0
- package/lib/node/openai-language-models-manager-impl.spec.js.map +1 -1
- package/lib/node/openai-model-defaults.d.ts.map +1 -1
- package/lib/node/openai-model-defaults.js +7 -0
- package/lib/node/openai-model-defaults.js.map +1 -1
- package/lib/node/openai-model-defaults.spec.js +9 -0
- package/lib/node/openai-model-defaults.spec.js.map +1 -1
- package/lib/node/openai-reasoning.d.ts +1 -2
- package/lib/node/openai-reasoning.d.ts.map +1 -1
- package/lib/node/openai-reasoning.js +6 -8
- package/lib/node/openai-reasoning.js.map +1 -1
- package/lib/node/openai-response-api-utils.d.ts +25 -1
- package/lib/node/openai-response-api-utils.d.ts.map +1 -1
- package/lib/node/openai-response-api-utils.js +104 -12
- package/lib/node/openai-response-api-utils.js.map +1 -1
- package/lib/node/openai-response-api-utils.spec.js +146 -0
- package/lib/node/openai-response-api-utils.spec.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/openai-frontend-application-contribution.ts +82 -69
- package/src/common/openai-language-models-manager.ts +21 -2
- package/src/common/openai-preferences.ts +25 -12
- package/src/node/openai-language-model.spec.ts +63 -9
- package/src/node/openai-language-model.ts +58 -20
- package/src/node/openai-language-models-manager-impl.spec.ts +178 -0
- package/src/node/openai-language-models-manager-impl.ts +106 -6
- package/src/node/openai-model-defaults.spec.ts +10 -0
- package/src/node/openai-model-defaults.ts +8 -0
- package/src/node/openai-reasoning.ts +6 -9
- package/src/node/openai-response-api-utils.spec.ts +184 -1
- package/src/node/openai-response-api-utils.ts +115 -13
|
@@ -18,10 +18,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const chai_1 = require("chai");
|
|
19
19
|
const openai_language_models_manager_impl_1 = require("./openai-language-models-manager-impl");
|
|
20
20
|
const openai_server_tools_1 = require("./openai-server-tools");
|
|
21
|
+
const openai_1 = require("openai");
|
|
22
|
+
const mock_logger_1 = require("@theia/core/lib/common/test/mock-logger");
|
|
23
|
+
const test_model_discovery_fetcher_1 = require("@theia/ai-core/lib/node/test/test-model-discovery-fetcher");
|
|
21
24
|
class TestableOpenAiLanguageModelsManagerImpl extends openai_language_models_manager_impl_1.OpenAiLanguageModelsManagerImpl {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
this.stubbedModels = [];
|
|
28
|
+
this.listCalls = 0;
|
|
29
|
+
/** Throw {@link failWith} for the first `failTimes` list calls, then return {@link stubbedModels}. */
|
|
30
|
+
this.failTimes = 0;
|
|
31
|
+
this.failWith = new Error('boom');
|
|
32
|
+
/** The real discovery fetcher, snapshotting in memory and retrying without waiting. */
|
|
33
|
+
this.testFetcher = new test_model_discovery_fetcher_1.TestModelDiscoveryFetcher();
|
|
34
|
+
this.discoveryFetcher = this.testFetcher;
|
|
35
|
+
}
|
|
22
36
|
resolveServerToolsForTest(description) {
|
|
23
37
|
return this.resolveServerTools(description);
|
|
24
38
|
}
|
|
39
|
+
/** In-memory stand-in for the on-disk snapshot. */
|
|
40
|
+
get snapshot() {
|
|
41
|
+
return this.testFetcher.snapshot;
|
|
42
|
+
}
|
|
43
|
+
set snapshot(models) {
|
|
44
|
+
this.testFetcher.snapshot = models;
|
|
45
|
+
}
|
|
46
|
+
async listModels(_apiKey, _proxyUrl) {
|
|
47
|
+
this.listCalls++;
|
|
48
|
+
if (this.listCalls <= this.failTimes) {
|
|
49
|
+
throw this.failWith;
|
|
50
|
+
}
|
|
51
|
+
return this.stubbedModels;
|
|
52
|
+
}
|
|
25
53
|
}
|
|
26
54
|
function modelDescription(overrides = {}) {
|
|
27
55
|
return {
|
|
@@ -49,4 +77,147 @@ describe('OpenAiLanguageModelsManagerImpl server tools', () => {
|
|
|
49
77
|
(0, chai_1.expect)(manager.resolveServerToolsForTest(modelDescription())).to.equal(undefined);
|
|
50
78
|
});
|
|
51
79
|
});
|
|
80
|
+
describe('OpenAiLanguageModelsManagerImpl - fetchAvailableModels', () => {
|
|
81
|
+
let manager;
|
|
82
|
+
beforeEach(() => {
|
|
83
|
+
manager = new TestableOpenAiLanguageModelsManagerImpl();
|
|
84
|
+
manager.logger = new mock_logger_1.MockLogger();
|
|
85
|
+
manager.setApiKey('key');
|
|
86
|
+
});
|
|
87
|
+
it('returns an empty result and skips the network when no API key is set', async () => {
|
|
88
|
+
const previous = process.env.OPENAI_API_KEY;
|
|
89
|
+
delete process.env.OPENAI_API_KEY;
|
|
90
|
+
try {
|
|
91
|
+
manager.setApiKey(undefined);
|
|
92
|
+
(0, chai_1.expect)(await manager.fetchAvailableModels()).to.deep.equal({ models: [], fromCache: false });
|
|
93
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(0);
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
if (previous !== undefined) {
|
|
97
|
+
process.env.OPENAI_API_KEY = previous;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
it('keeps the text-chat families and drops the other model types the endpoint lists', async () => {
|
|
102
|
+
manager.stubbedModels = [
|
|
103
|
+
{ id: 'gpt-5.5' },
|
|
104
|
+
{ id: 'chatgpt-5-latest' },
|
|
105
|
+
{ id: 'o3-mini' },
|
|
106
|
+
{ id: 'gpt-4o-audio-preview' },
|
|
107
|
+
{ id: 'gpt-image-1' },
|
|
108
|
+
{ id: 'text-embedding-3-large' },
|
|
109
|
+
{ id: 'omni-moderation-latest' },
|
|
110
|
+
{ id: 'whisper-1' },
|
|
111
|
+
{ id: 'computer-use-preview' },
|
|
112
|
+
{ id: 'gpt-4o-search-preview' },
|
|
113
|
+
// Multimodal, so it speaks the realtime/live API rather than chat completions.
|
|
114
|
+
{ id: 'gpt-live-1' },
|
|
115
|
+
// Caught by the same `search` term, and rightly so: it speaks the responses API, not this one.
|
|
116
|
+
{ id: 'o3-deep-research' },
|
|
117
|
+
{ id: 'gpt-3.5-turbo-instruct' },
|
|
118
|
+
{ id: 'gpt-5.5' }
|
|
119
|
+
];
|
|
120
|
+
const result = await manager.fetchAvailableModels();
|
|
121
|
+
(0, chai_1.expect)(result.fromCache).to.equal(false);
|
|
122
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal(['gpt-5.5', 'chatgpt-5-latest', 'o3-mini']);
|
|
123
|
+
(0, chai_1.expect)(manager.snapshot).to.deep.equal(result.models);
|
|
124
|
+
});
|
|
125
|
+
it('recognises the legacy year-less snapshots as releases of one model', async () => {
|
|
126
|
+
manager.stubbedModels = [
|
|
127
|
+
{ id: 'gpt-4-0613', created: 1_686_000_000 },
|
|
128
|
+
{ id: 'gpt-4-0125', created: 1_706_000_000 },
|
|
129
|
+
{ id: 'gpt-4-32k-0613', created: 1_686_000_000 }
|
|
130
|
+
];
|
|
131
|
+
const result = await manager.fetchAvailableModels();
|
|
132
|
+
// Two aliases for the two models, then the snapshots they were derived from.
|
|
133
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal([
|
|
134
|
+
'gpt-4',
|
|
135
|
+
'gpt-4-32k',
|
|
136
|
+
'gpt-4-0613',
|
|
137
|
+
'gpt-4-0125',
|
|
138
|
+
'gpt-4-32k-0613'
|
|
139
|
+
]);
|
|
140
|
+
});
|
|
141
|
+
it('adds the undated alias of each release-pinned model, keeping the releases themselves', async () => {
|
|
142
|
+
manager.stubbedModels = [
|
|
143
|
+
{ id: 'gpt-5.6-sol-2026-04-01' },
|
|
144
|
+
{ id: 'gpt-5.6-sol-2025-11-20' },
|
|
145
|
+
{ id: 'gpt-5.6-luna' }
|
|
146
|
+
];
|
|
147
|
+
const result = await manager.fetchAvailableModels();
|
|
148
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal([
|
|
149
|
+
'gpt-5.6-sol',
|
|
150
|
+
'gpt-5.6-sol-2026-04-01',
|
|
151
|
+
'gpt-5.6-sol-2025-11-20',
|
|
152
|
+
'gpt-5.6-luna'
|
|
153
|
+
]);
|
|
154
|
+
});
|
|
155
|
+
it('reports the creation timestamp in milliseconds', async () => {
|
|
156
|
+
manager.stubbedModels = [{ id: 'gpt-5.5', created: 1_700_000_000 }];
|
|
157
|
+
const result = await manager.fetchAvailableModels();
|
|
158
|
+
(0, chai_1.expect)(result.models[0].released).to.equal(1_700_000_000_000);
|
|
159
|
+
});
|
|
160
|
+
it('retries transient connection errors and then succeeds', async () => {
|
|
161
|
+
manager.stubbedModels = [{ id: 'gpt-5.5' }];
|
|
162
|
+
manager.failTimes = 2;
|
|
163
|
+
manager.failWith = new openai_1.APIConnectionError({ message: 'network down' });
|
|
164
|
+
const result = await manager.fetchAvailableModels();
|
|
165
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal(['gpt-5.5']);
|
|
166
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(3);
|
|
167
|
+
});
|
|
168
|
+
it('falls back to the cached snapshot when the fetch keeps failing', async () => {
|
|
169
|
+
manager.snapshot = [{ id: 'gpt-5.5' }];
|
|
170
|
+
manager.failTimes = 99;
|
|
171
|
+
manager.failWith = new openai_1.APIConnectionError({ message: 'still down' });
|
|
172
|
+
const result = await manager.fetchAvailableModels();
|
|
173
|
+
(0, chai_1.expect)(result).to.deep.equal({ models: [{ id: 'gpt-5.5' }], fromCache: true, error: 'still down' });
|
|
174
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(3);
|
|
175
|
+
});
|
|
176
|
+
it('does not retry auth errors and throws without a snapshot', async () => {
|
|
177
|
+
manager.failTimes = 99;
|
|
178
|
+
manager.failWith = new Error('401 unauthorized');
|
|
179
|
+
let threw = false;
|
|
180
|
+
try {
|
|
181
|
+
await manager.fetchAvailableModels();
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
threw = true;
|
|
185
|
+
(0, chai_1.expect)(error.message).to.equal('401 unauthorized');
|
|
186
|
+
}
|
|
187
|
+
(0, chai_1.expect)(threw).to.be.true;
|
|
188
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(1);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('OpenAiLanguageModelsManagerImpl - environment API key consent', () => {
|
|
192
|
+
it('leaves an environment key unused until it is allowed, wherever a key would be read', async () => {
|
|
193
|
+
const previous = { OPENAI_API_KEY: process.env.OPENAI_API_KEY };
|
|
194
|
+
delete process.env.OPENAI_API_KEY;
|
|
195
|
+
process.env.OPENAI_API_KEY = 'from-the-environment';
|
|
196
|
+
try {
|
|
197
|
+
const manager = new TestableOpenAiLanguageModelsManagerImpl();
|
|
198
|
+
// The gate sits on the key, so a custom endpoint or a configured model cannot reach past it either.
|
|
199
|
+
(0, chai_1.expect)(manager.apiKey).to.equal(undefined);
|
|
200
|
+
// Discovery still needs to know the key is there, in order to ask for it.
|
|
201
|
+
(0, chai_1.expect)(await manager.getApiKeySource()).to.equal('environment');
|
|
202
|
+
manager.setAllowEnvironmentApiKey(true);
|
|
203
|
+
(0, chai_1.expect)(manager.apiKey).to.equal('from-the-environment');
|
|
204
|
+
// Withdrawing the consent stops it being used at once.
|
|
205
|
+
manager.setAllowEnvironmentApiKey(false);
|
|
206
|
+
(0, chai_1.expect)(manager.apiKey).to.equal(undefined);
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
if (previous.OPENAI_API_KEY !== undefined) {
|
|
210
|
+
process.env.OPENAI_API_KEY = previous.OPENAI_API_KEY;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
delete process.env.OPENAI_API_KEY;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
it('uses a key set in the preferences whatever the environment says', () => {
|
|
218
|
+
const manager = new TestableOpenAiLanguageModelsManagerImpl();
|
|
219
|
+
manager.setApiKey('from-the-preference');
|
|
220
|
+
(0, chai_1.expect)(manager.apiKey).to.equal('from-the-preference');
|
|
221
|
+
});
|
|
222
|
+
});
|
|
52
223
|
//# sourceMappingURL=openai-language-models-manager-impl.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-models-manager-impl.spec.js","sourceRoot":"","sources":["../../src/node/openai-language-models-manager-impl.spec.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;;AAEhF,+BAA8B;AAE9B,+FAAwF;AACxF,+DAA+E;
|
|
1
|
+
{"version":3,"file":"openai-language-models-manager-impl.spec.js","sourceRoot":"","sources":["../../src/node/openai-language-models-manager-impl.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-model-defaults.d.ts","sourceRoot":"","sources":["../../src/node/openai-model-defaults.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"openai-model-defaults.d.ts","sourceRoot":"","sources":["../../src/node/openai-model-defaults.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAyDD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAEzE"}
|
|
@@ -24,12 +24,19 @@ const O_SERIES_REASONING_SUPPORT = {
|
|
|
24
24
|
supportedLevels: ['off', 'low', 'medium', 'high', 'auto'],
|
|
25
25
|
defaultLevel: 'auto'
|
|
26
26
|
};
|
|
27
|
+
// GPT-6 Astra reasons at every setting: it dropped the `none`/`minimal` efforts of the GPT-5 family.
|
|
28
|
+
// Its `xhigh`/`max` efforts have no representation in ReasoningLevel, so we expose the mappable subset.
|
|
29
|
+
const GPT6_REASONING_SUPPORT = {
|
|
30
|
+
supportedLevels: ['low', 'medium', 'high', 'auto'],
|
|
31
|
+
defaultLevel: 'auto'
|
|
32
|
+
};
|
|
27
33
|
/**
|
|
28
34
|
* First matching prefix wins, so more specific prefixes must come before broader ones
|
|
29
35
|
* (e.g. `gpt-5.4-mini` before `gpt-5.4`). Snapshots inherit their family value
|
|
30
36
|
* (e.g. `gpt-4o-2024-08-06` matches `gpt-4o`).
|
|
31
37
|
*/
|
|
32
38
|
const OPENAI_MODEL_FAMILIES = [
|
|
39
|
+
['gpt-6', { contextWindow: 1_050_000, reasoningSupport: GPT6_REASONING_SUPPORT }],
|
|
33
40
|
['gpt-5.6', { contextWindow: 1_050_000, reasoningSupport: GPT5_REASONING_SUPPORT }],
|
|
34
41
|
['gpt-5.5', { contextWindow: 1_050_000, reasoningSupport: GPT5_REASONING_SUPPORT }],
|
|
35
42
|
['gpt-5.4-mini', { contextWindow: 400_000, reasoningSupport: GPT5_REASONING_SUPPORT }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-model-defaults.js","sourceRoot":"","sources":["../../src/node/openai-model-defaults.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;;
|
|
1
|
+
{"version":3,"file":"openai-model-defaults.js","sourceRoot":"","sources":["../../src/node/openai-model-defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,15 @@ describe('getOpenAiModelDefaults', () => {
|
|
|
21
21
|
it('returns empty defaults for unknown models', () => {
|
|
22
22
|
(0, chai_1.expect)((0, openai_model_defaults_1.getOpenAiModelDefaults)('totally-made-up-model')).to.deep.equal({});
|
|
23
23
|
});
|
|
24
|
+
describe('GPT-6 Astra', () => {
|
|
25
|
+
it('matches gpt-6-astra at 1,050,000 with reasoning that drops `minimal`', () => {
|
|
26
|
+
const d = (0, openai_model_defaults_1.getOpenAiModelDefaults)('gpt-6-astra');
|
|
27
|
+
(0, chai_1.expect)(d.contextWindow).to.equal(1_050_000);
|
|
28
|
+
(0, chai_1.expect)(d.reasoningSupport?.supportedLevels).to.not.include('minimal');
|
|
29
|
+
(0, chai_1.expect)(d.reasoningSupport?.supportedLevels).to.include('high');
|
|
30
|
+
(0, chai_1.expect)(d.reasoningSupport?.defaultLevel).to.equal('auto');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
24
33
|
describe('GPT-5.6', () => {
|
|
25
34
|
it('matches the sol, terra, and luna tiers at 1,050,000 with GPT-5 reasoning', () => {
|
|
26
35
|
for (const id of ['gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna']) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-model-defaults.spec.js","sourceRoot":"","sources":["../../src/node/openai-model-defaults.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-model-defaults.spec.js","sourceRoot":"","sources":["../../src/node/openai-model-defaults.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import { ReasoningLevel } from '@theia/ai-core';
|
|
|
4
4
|
* Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
|
|
5
5
|
* can spread it unconditionally.
|
|
6
6
|
*
|
|
7
|
-
* @param forResponseApi `true` for the Responses API (`reasoning: { effort }
|
|
8
|
-
* `false` for Chat Completions (`reasoning_effort`, `low`|`medium`|`high` only).
|
|
7
|
+
* @param forResponseApi `true` for the Responses API (`reasoning: { effort, summary }`), `false` for Chat Completions (`reasoning_effort`).
|
|
9
8
|
* @param supportsReasoning `false` for models without reasoning support — returns `{}`.
|
|
10
9
|
*/
|
|
11
10
|
export declare function openAiReasoningFor(level: ReasoningLevel | undefined, forResponseApi: boolean, supportsReasoning: boolean): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-reasoning.d.ts","sourceRoot":"","sources":["../../src/node/openai-reasoning.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"openai-reasoning.d.ts","sourceRoot":"","sources":["../../src/node/openai-reasoning.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,cAAc,EAAE,OAAO,EACvB,iBAAiB,EAAE,OAAO,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
|
|
@@ -21,8 +21,7 @@ exports.openAiReasoningFor = openAiReasoningFor;
|
|
|
21
21
|
* Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
|
|
22
22
|
* can spread it unconditionally.
|
|
23
23
|
*
|
|
24
|
-
* @param forResponseApi `true` for the Responses API (`reasoning: { effort }
|
|
25
|
-
* `false` for Chat Completions (`reasoning_effort`, `low`|`medium`|`high` only).
|
|
24
|
+
* @param forResponseApi `true` for the Responses API (`reasoning: { effort, summary }`), `false` for Chat Completions (`reasoning_effort`).
|
|
26
25
|
* @param supportsReasoning `false` for models without reasoning support — returns `{}`.
|
|
27
26
|
*/
|
|
28
27
|
function openAiReasoningFor(level, forResponseApi, supportsReasoning) {
|
|
@@ -35,13 +34,12 @@ function openAiReasoningFor(level, forResponseApi, supportsReasoning) {
|
|
|
35
34
|
level === 'medium' ? 'medium' :
|
|
36
35
|
level === 'high' ? 'high' :
|
|
37
36
|
undefined;
|
|
38
|
-
|
|
37
|
+
// Summaries are opt-in on the Responses API: without `summary` the model still reasons, but nothing is streamed to show.
|
|
38
|
+
return { reasoning: { ...(responsesEffort ? { effort: responsesEffort } : {}), summary: 'auto' } };
|
|
39
39
|
}
|
|
40
|
-
// Chat Completions
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
level === 'high' ? 'high' :
|
|
44
|
-
undefined;
|
|
40
|
+
// Chat Completions takes the same effort values, `minimal` included. Models that reject it (e.g. o-series)
|
|
41
|
+
// leave it out of their `supportedLevels`, and the level is clamped to those before it gets here.
|
|
42
|
+
const chatEffort = level === 'minimal' || level === 'low' || level === 'medium' || level === 'high' ? level : undefined;
|
|
45
43
|
return chatEffort ? { reasoning_effort: chatEffort } : {};
|
|
46
44
|
}
|
|
47
45
|
//# sourceMappingURL=openai-reasoning.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-reasoning.js","sourceRoot":"","sources":["../../src/node/openai-reasoning.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;;
|
|
1
|
+
{"version":3,"file":"openai-reasoning.js","sourceRoot":"","sources":["../../src/node/openai-reasoning.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;;AAYhF,gDAsBC;AA9BD;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAC9B,KAAiC,EACjC,cAAuB,EACvB,iBAA0B;IAE1B,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,eAAe,GACjB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACvB,SAAS,CAAC;QAC9B,yHAAyH;QACzH,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IACvG,CAAC;IACD,2GAA2G;IAC3G,kGAAkG;IAClG,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACxH,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModelMessage, LanguageModelResponse, LanguageModelStreamResponsePart, ToolRequest, UserRequest } from '@theia/ai-core';
|
|
1
|
+
import { LanguageModelMessage, LanguageModelResponse, LanguageModelStreamResponsePart, ThinkingResponsePart, ToolRequest, UserRequest } from '@theia/ai-core';
|
|
2
2
|
import { CancellationToken, ILogger } from '@theia/core';
|
|
3
3
|
import { OpenAI } from 'openai';
|
|
4
4
|
import type { RunnerOptions } from 'openai/lib/AbstractChatCompletionRunner';
|
|
@@ -27,6 +27,30 @@ export declare class OpenAiResponseApiUtils {
|
|
|
27
27
|
* Converts ToolRequest objects to the format expected by the Response API.
|
|
28
28
|
*/
|
|
29
29
|
convertToolsForResponseApi(tools?: ToolRequest[], deferredToolIds?: string[], serverTools?: string[]): Tool[] | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Maps a reasoning-summary stream event to a thinking part. With `reasoning.summary` set, the Responses API streams
|
|
32
|
+
* one or more `summary_text` parts per reasoning item; parts after the first are separated by a blank line.
|
|
33
|
+
*/
|
|
34
|
+
reasoningSummaryThought(event: ResponseStreamEvent): ThinkingResponsePart | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Model ids whose organization rejected `reasoning.summary` (OpenAI requires a verified organization for summaries).
|
|
37
|
+
* Later requests to these models omit the field.
|
|
38
|
+
*/
|
|
39
|
+
protected readonly reasoningSummaryRejectedModels: Set<string>;
|
|
40
|
+
protected withoutRejectedReasoningSummary(settings: Record<string, unknown>, modelId: string): Record<string, unknown>;
|
|
41
|
+
/**
|
|
42
|
+
* Returns `true` and remembers the rejection when `error` is the 400 an unverified organization gets for `reasoning.summary`,
|
|
43
|
+
* so the request can be sent once more without it.
|
|
44
|
+
*/
|
|
45
|
+
protected handleReasoningSummaryRejection(error: unknown, sentSettings: Record<string, unknown>, modelId: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Sends a Responses API request, retrying once without `reasoning.summary` if the organization is not allowed to request it.
|
|
48
|
+
*/
|
|
49
|
+
sendWithReasoningSummaryFallback<T>(settings: Record<string, unknown>, modelId: string, send: (settings: Record<string, unknown>) => Promise<T>): Promise<T>;
|
|
50
|
+
/**
|
|
51
|
+
* Streaming counterpart of {@link sendWithReasoningSummaryFallback}. The rejection arrives before any event, so nothing is emitted twice.
|
|
52
|
+
*/
|
|
53
|
+
streamWithReasoningSummaryFallback(settings: Record<string, unknown>, modelId: string, open: (settings: Record<string, unknown>) => AsyncIterable<ResponseStreamEvent>): AsyncIterable<ResponseStreamEvent>;
|
|
30
54
|
protected createSimpleResponseApiStreamIterator(stream: AsyncIterable<ResponseStreamEvent>, cancellationToken?: CancellationToken): AsyncIterable<LanguageModelStreamResponsePart>;
|
|
31
55
|
/**
|
|
32
56
|
* Processes the provided list of messages by applying system message adjustments and converting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-response-api-utils.d.ts","sourceRoot":"","sources":["../../src/node/openai-response-api-utils.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGH,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"openai-response-api-utils.d.ts","sourceRoot":"","sources":["../../src/node/openai-response-api-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ const ai_core_1 = require("@theia/ai-core");
|
|
|
22
22
|
const core_1 = require("@theia/core");
|
|
23
23
|
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
24
24
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
25
|
+
const openai_1 = require("openai");
|
|
25
26
|
const openai_server_tools_1 = require("./openai-server-tools");
|
|
26
27
|
exports.OPENAI_FUNCTION_CALL_REASONING_DATA_KEY = 'openAiFunctionCallReasoning';
|
|
27
28
|
/**
|
|
@@ -41,6 +42,13 @@ function openAiToolSearchFoundText(found) {
|
|
|
41
42
|
* patterns for tool calling, keeping the main language model class clean and focused.
|
|
42
43
|
*/
|
|
43
44
|
let OpenAiResponseApiUtils = class OpenAiResponseApiUtils {
|
|
45
|
+
constructor() {
|
|
46
|
+
/**
|
|
47
|
+
* Model ids whose organization rejected `reasoning.summary` (OpenAI requires a verified organization for summaries).
|
|
48
|
+
* Later requests to these models omit the field.
|
|
49
|
+
*/
|
|
50
|
+
this.reasoningSummaryRejectedModels = new Set();
|
|
51
|
+
}
|
|
44
52
|
/**
|
|
45
53
|
* Handles Response API requests with proper tool calling cycles.
|
|
46
54
|
* Works for both streaming and non-streaming cases.
|
|
@@ -60,21 +68,21 @@ let OpenAiResponseApiUtils = class OpenAiResponseApiUtils {
|
|
|
60
68
|
// If no tools are provided, use simple response handling
|
|
61
69
|
if (!tools || tools.length === 0) {
|
|
62
70
|
if (isStreaming) {
|
|
63
|
-
const stream = openai.responses.stream({
|
|
71
|
+
const stream = this.streamWithReasoningSummaryFallback(effectiveSettings, modelId, sentSettings => openai.responses.stream({
|
|
64
72
|
model: model,
|
|
65
73
|
instructions,
|
|
66
74
|
input,
|
|
67
|
-
...
|
|
68
|
-
});
|
|
75
|
+
...sentSettings
|
|
76
|
+
}));
|
|
69
77
|
return { stream: this.createSimpleResponseApiStreamIterator(stream, cancellationToken) };
|
|
70
78
|
}
|
|
71
79
|
else {
|
|
72
|
-
const response = await openai.responses.create({
|
|
80
|
+
const response = await this.sendWithReasoningSummaryFallback(effectiveSettings, modelId, sentSettings => openai.responses.create({
|
|
73
81
|
model: model,
|
|
74
82
|
instructions,
|
|
75
83
|
input,
|
|
76
|
-
...
|
|
77
|
-
});
|
|
84
|
+
...sentSettings
|
|
85
|
+
}));
|
|
78
86
|
return {
|
|
79
87
|
text: response.output_text || '',
|
|
80
88
|
usage: response.usage ? {
|
|
@@ -116,8 +124,78 @@ let OpenAiResponseApiUtils = class OpenAiResponseApiUtils {
|
|
|
116
124
|
this.logger.debug(`Converted ${(tools ?? []).length} tools for Response API:`, converted.map(t => t.type === 'function' ? t.name : t.type));
|
|
117
125
|
return converted;
|
|
118
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Maps a reasoning-summary stream event to a thinking part. With `reasoning.summary` set, the Responses API streams
|
|
129
|
+
* one or more `summary_text` parts per reasoning item; parts after the first are separated by a blank line.
|
|
130
|
+
*/
|
|
131
|
+
reasoningSummaryThought(event) {
|
|
132
|
+
if (event.type === 'response.reasoning_summary_part.added') {
|
|
133
|
+
return event.summary_index > 0 ? { thought: '\n\n', signature: '' } : undefined;
|
|
134
|
+
}
|
|
135
|
+
if (event.type === 'response.reasoning_summary_text.delta') {
|
|
136
|
+
return { thought: event.delta, signature: '' };
|
|
137
|
+
}
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
withoutRejectedReasoningSummary(settings, modelId) {
|
|
141
|
+
const reasoning = settings.reasoning;
|
|
142
|
+
if (!this.reasoningSummaryRejectedModels.has(modelId) || !(0, core_1.isObject)(reasoning) || !('summary' in reasoning)) {
|
|
143
|
+
return settings;
|
|
144
|
+
}
|
|
145
|
+
const withoutSummary = { ...reasoning };
|
|
146
|
+
delete withoutSummary.summary;
|
|
147
|
+
return { ...settings, reasoning: withoutSummary };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Returns `true` and remembers the rejection when `error` is the 400 an unverified organization gets for `reasoning.summary`,
|
|
151
|
+
* so the request can be sent once more without it.
|
|
152
|
+
*/
|
|
153
|
+
handleReasoningSummaryRejection(error, sentSettings, modelId) {
|
|
154
|
+
const reasoning = sentSettings.reasoning;
|
|
155
|
+
if (!(error instanceof openai_1.OpenAI.BadRequestError) || error.param !== 'reasoning.summary' || !(0, core_1.isObject)(reasoning) || !('summary' in reasoning)) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
this.logger.warn(`Model ${modelId} rejected reasoning summaries (${error.message}); continuing without them.`);
|
|
159
|
+
this.reasoningSummaryRejectedModels.add(modelId);
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Sends a Responses API request, retrying once without `reasoning.summary` if the organization is not allowed to request it.
|
|
164
|
+
*/
|
|
165
|
+
async sendWithReasoningSummaryFallback(settings, modelId, send) {
|
|
166
|
+
const sentSettings = this.withoutRejectedReasoningSummary(settings, modelId);
|
|
167
|
+
try {
|
|
168
|
+
return await send(sentSettings);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
if (!this.handleReasoningSummaryRejection(error, sentSettings, modelId)) {
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
return send(this.withoutRejectedReasoningSummary(settings, modelId));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Streaming counterpart of {@link sendWithReasoningSummaryFallback}. The rejection arrives before any event, so nothing is emitted twice.
|
|
179
|
+
*/
|
|
180
|
+
async *streamWithReasoningSummaryFallback(settings, modelId, open) {
|
|
181
|
+
const sentSettings = this.withoutRejectedReasoningSummary(settings, modelId);
|
|
182
|
+
let received = false;
|
|
183
|
+
try {
|
|
184
|
+
for await (const event of open(sentSettings)) {
|
|
185
|
+
received = true;
|
|
186
|
+
yield event;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
if (received || !this.handleReasoningSummaryRejection(error, sentSettings, modelId)) {
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
yield* open(this.withoutRejectedReasoningSummary(settings, modelId));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
119
196
|
createSimpleResponseApiStreamIterator(stream, cancellationToken) {
|
|
120
197
|
const logger = this.logger;
|
|
198
|
+
const reasoningSummaryThought = (event) => this.reasoningSummaryThought(event);
|
|
121
199
|
return {
|
|
122
200
|
async *[Symbol.asyncIterator]() {
|
|
123
201
|
let lastUsage;
|
|
@@ -132,6 +210,12 @@ let OpenAiResponseApiUtils = class OpenAiResponseApiUtils {
|
|
|
132
210
|
content: event.delta
|
|
133
211
|
};
|
|
134
212
|
}
|
|
213
|
+
else if (event.type === 'response.reasoning_summary_part.added' || event.type === 'response.reasoning_summary_text.delta') {
|
|
214
|
+
const thought = reasoningSummaryThought(event);
|
|
215
|
+
if (thought) {
|
|
216
|
+
yield thought;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
135
219
|
else if (event.type === 'response.output_item.done' && event.item?.type === 'compaction') {
|
|
136
220
|
yield {
|
|
137
221
|
compaction: {
|
|
@@ -412,13 +496,13 @@ class ResponseApiToolCallIterator {
|
|
|
412
496
|
this.currentWebSearchReplayItems = [];
|
|
413
497
|
if (this.isStreaming) {
|
|
414
498
|
// Use streaming API
|
|
415
|
-
const stream = this.openai.responses.stream({
|
|
499
|
+
const stream = this.utils.streamWithReasoningSummaryFallback(this.settings, this.modelId, settings => this.openai.responses.stream({
|
|
416
500
|
model: this.model,
|
|
417
501
|
instructions: this.instructions,
|
|
418
502
|
input: this.currentInput,
|
|
419
503
|
tools: this.tools,
|
|
420
|
-
...
|
|
421
|
-
});
|
|
504
|
+
...settings
|
|
505
|
+
}));
|
|
422
506
|
for await (const event of stream) {
|
|
423
507
|
if (this.cancellationToken?.isCancellationRequested) {
|
|
424
508
|
break;
|
|
@@ -432,13 +516,13 @@ class ResponseApiToolCallIterator {
|
|
|
432
516
|
}
|
|
433
517
|
}
|
|
434
518
|
async processNonStreamingResponse() {
|
|
435
|
-
const response = await this.openai.responses.create({
|
|
519
|
+
const response = await this.utils.sendWithReasoningSummaryFallback(this.settings, this.modelId, settings => this.openai.responses.create({
|
|
436
520
|
model: this.model,
|
|
437
521
|
instructions: this.instructions,
|
|
438
522
|
input: this.currentInput,
|
|
439
523
|
tools: this.tools,
|
|
440
|
-
...
|
|
441
|
-
});
|
|
524
|
+
...settings
|
|
525
|
+
}));
|
|
442
526
|
// Record token usage
|
|
443
527
|
if (response.usage) {
|
|
444
528
|
this.handleIncoming({
|
|
@@ -527,6 +611,14 @@ class ResponseApiToolCallIterator {
|
|
|
527
611
|
this.pendingReasoningItems = [];
|
|
528
612
|
}
|
|
529
613
|
break;
|
|
614
|
+
case 'response.reasoning_summary_part.added':
|
|
615
|
+
case 'response.reasoning_summary_text.delta': {
|
|
616
|
+
const thought = this.utils.reasoningSummaryThought(event);
|
|
617
|
+
if (thought) {
|
|
618
|
+
this.handleIncoming(thought);
|
|
619
|
+
}
|
|
620
|
+
break;
|
|
621
|
+
}
|
|
530
622
|
case 'response.completed':
|
|
531
623
|
if (event.response?.usage) {
|
|
532
624
|
this.handleIncoming({
|