@theia/ai-google 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/google-frontend-application-contribution.d.ts +13 -10
- package/lib/browser/google-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/google-frontend-application-contribution.js +36 -50
- package/lib/browser/google-frontend-application-contribution.js.map +1 -1
- package/lib/common/google-language-models-manager.d.ts +15 -1
- package/lib/common/google-language-models-manager.d.ts.map +1 -1
- package/lib/common/google-preferences.d.ts +2 -1
- package/lib/common/google-preferences.d.ts.map +1 -1
- package/lib/common/google-preferences.js +16 -7
- package/lib/common/google-preferences.js.map +1 -1
- package/lib/node/google-language-model.d.ts +9 -0
- package/lib/node/google-language-model.d.ts.map +1 -1
- package/lib/node/google-language-model.js +22 -8
- package/lib/node/google-language-model.js.map +1 -1
- package/lib/node/google-language-model.spec.js +24 -0
- package/lib/node/google-language-model.spec.js.map +1 -1
- package/lib/node/google-language-models-manager-impl.d.ts +43 -1
- package/lib/node/google-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/google-language-models-manager-impl.js +97 -3
- package/lib/node/google-language-models-manager-impl.js.map +1 -1
- package/lib/node/google-language-models-manager-impl.spec.js +162 -0
- package/lib/node/google-language-models-manager-impl.spec.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/google-frontend-application-contribution.ts +40 -55
- package/src/common/google-language-models-manager.ts +16 -2
- package/src/common/google-preferences.ts +17 -6
- package/src/node/google-language-model.spec.ts +32 -1
- package/src/node/google-language-model.ts +31 -6
- package/src/node/google-language-models-manager-impl.spec.ts +164 -1
- package/src/node/google-language-models-manager-impl.ts +109 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"google-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,11 +19,12 @@ exports.GoogleLanguageModelsManagerImpl = void 0;
|
|
|
19
19
|
exports.reasoningApiFromModelId = reasoningApiFromModelId;
|
|
20
20
|
const tslib_1 = require("tslib");
|
|
21
21
|
const ai_core_1 = require("@theia/ai-core");
|
|
22
|
+
const node_1 = require("@theia/ai-core/lib/node");
|
|
22
23
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
|
-
const genai_1 = require("@google/genai");
|
|
24
24
|
const google_language_model_1 = require("./google-language-model");
|
|
25
25
|
const google_server_tools_1 = require("./google-server-tools");
|
|
26
26
|
const core_1 = require("@theia/core");
|
|
27
|
+
const GOOGLE_SNAPSHOT_FILE = 'google-models.json';
|
|
27
28
|
const GEMINI_REASONING_SUPPORT = {
|
|
28
29
|
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
29
30
|
defaultLevel: 'auto'
|
|
@@ -43,6 +44,12 @@ function reasoningApiFromModelId(modelId) {
|
|
|
43
44
|
}
|
|
44
45
|
let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
45
46
|
constructor() {
|
|
47
|
+
/**
|
|
48
|
+
* Whether a key found in the environment may be used. Withheld until the user confirms it, so the
|
|
49
|
+
* gate sits on the key itself: every path that reaches for one — discovery, a custom endpoint, a
|
|
50
|
+
* manually configured model — is covered, and revoking the consent takes effect at once.
|
|
51
|
+
*/
|
|
52
|
+
this._allowEnvironmentApiKey = false;
|
|
46
53
|
this.retrySettings = {
|
|
47
54
|
maxRetriesOnErrors: 3,
|
|
48
55
|
retryDelayOnRateLimitError: 60,
|
|
@@ -53,7 +60,87 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
|
53
60
|
this.modelInfoCache = new Map();
|
|
54
61
|
}
|
|
55
62
|
get apiKey() {
|
|
56
|
-
return this._apiKey ?? process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY;
|
|
63
|
+
return this._apiKey ?? (this._allowEnvironmentApiKey ? process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY : undefined);
|
|
64
|
+
}
|
|
65
|
+
async getApiKeySource() {
|
|
66
|
+
if (this._apiKey) {
|
|
67
|
+
return 'preference';
|
|
68
|
+
}
|
|
69
|
+
if (process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY) {
|
|
70
|
+
return 'environment';
|
|
71
|
+
}
|
|
72
|
+
return 'none';
|
|
73
|
+
}
|
|
74
|
+
async fetchAvailableModels() {
|
|
75
|
+
const apiKey = this.apiKey;
|
|
76
|
+
if (!apiKey) {
|
|
77
|
+
return { models: [], fromCache: false };
|
|
78
|
+
}
|
|
79
|
+
return this.discoveryFetcher.fetch({
|
|
80
|
+
snapshotFile: GOOGLE_SNAPSHOT_FILE,
|
|
81
|
+
providerLabel: 'Google',
|
|
82
|
+
listModels: async () => this.toDiscoveredModels(await this.listModels(apiKey)),
|
|
83
|
+
isRetryable: error => this.isRetryableError(error)
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Maps the endpoint's entries onto {@link DiscoveredModel}s. Gemini ids carry no release date
|
|
88
|
+
* today, so collapsing dated variants is a no-op here; it is applied all the same, so a provider
|
|
89
|
+
* that starts pinning releases does not quietly multiply the list.
|
|
90
|
+
*/
|
|
91
|
+
toDiscoveredModels(models) {
|
|
92
|
+
const byId = new Map();
|
|
93
|
+
for (const model of models) {
|
|
94
|
+
// Only models usable for chat/content generation; older SDKs may omit the field.
|
|
95
|
+
if (model.supportedActions && !model.supportedActions.includes('generateContent')) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const id = (model.name ?? '').replace(/^models\//, '');
|
|
99
|
+
if (id.length > 0 && this.isChatModelId(id) && !byId.has(id)) {
|
|
100
|
+
byId.set(id, { id, label: model.displayName, description: model.description });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return ai_core_1.DiscoveredModels.withUndatedAliases([...byId.values()]);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Heuristic for the Gemini chat models among the entries that are left once {@link toDiscoveredModels}
|
|
107
|
+
* has dropped what cannot generate content at all. Two things remain to be excluded, and both
|
|
108
|
+
* report `generateContent` like a chat model: a model that generates something other than text
|
|
109
|
+
* (an image, speech), and one that answers through an agentic API of its own (deep research,
|
|
110
|
+
* computer use, robotics). Everything outside the `gemini-*` family goes too — Gemma, LearnLM —
|
|
111
|
+
* since being able to generate content does not make a model one of the models this provider is
|
|
112
|
+
* about. Anything this misses can be configured as a custom endpoint.
|
|
113
|
+
*
|
|
114
|
+
* The Live API models need no term of their own: they report `bidiGenerateContent`, so the
|
|
115
|
+
* capability check has already left them out.
|
|
116
|
+
*
|
|
117
|
+
* Without a release date to go by, the ranking that decides which models the chat input offers
|
|
118
|
+
* falls back to the numbers in the id, and those only mean a version within this family: a
|
|
119
|
+
* parameter count (`gemma-3-27b-it`) or an experiment date would otherwise read as the newest
|
|
120
|
+
* model there is.
|
|
121
|
+
*/
|
|
122
|
+
isChatModelId(id) {
|
|
123
|
+
if (!/^gemini-/.test(id)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return !/(image|tts|deep-research|computer-use|robotics)/.test(id);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Retry transient network errors; auth/quota errors fail fast. The SDK reports them as plain
|
|
130
|
+
* errors, so there is nothing to match on but the message.
|
|
131
|
+
*/
|
|
132
|
+
isRetryableError(error) {
|
|
133
|
+
const message = (error instanceof Error ? `${error.name} ${error.message}` : String(error)).toLowerCase();
|
|
134
|
+
return /econn|etimedout|enotfound|network|fetch failed|socket|timeout|aborted/.test(message);
|
|
135
|
+
}
|
|
136
|
+
/** Iterates the (auto-paginated) `/v1beta/models` endpoint. Overridable for testing. */
|
|
137
|
+
async listModels(apiKey) {
|
|
138
|
+
const genAI = (0, google_language_model_1.createGoogleClient)({ apiKey });
|
|
139
|
+
const models = [];
|
|
140
|
+
for await (const model of await genAI.models.list()) {
|
|
141
|
+
models.push(model);
|
|
142
|
+
}
|
|
143
|
+
return models;
|
|
57
144
|
}
|
|
58
145
|
calculateStatus(effectiveApiKey) {
|
|
59
146
|
return effectiveApiKey
|
|
@@ -131,7 +218,7 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
|
131
218
|
}
|
|
132
219
|
}
|
|
133
220
|
retrieveModelInfo(modelDescription, apiKey) {
|
|
134
|
-
const genAI =
|
|
221
|
+
const genAI = (0, google_language_model_1.createGoogleClient)({ apiKey });
|
|
135
222
|
return genAI.models.get({ model: modelDescription.model });
|
|
136
223
|
}
|
|
137
224
|
/** API `thinking=false` disables reasoning even when the model id suggests support. */
|
|
@@ -144,6 +231,9 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
|
144
231
|
removeLanguageModels(...modelIds) {
|
|
145
232
|
this.languageModelRegistry.removeLanguageModels(modelIds);
|
|
146
233
|
}
|
|
234
|
+
setAllowEnvironmentApiKey(allowed) {
|
|
235
|
+
this._allowEnvironmentApiKey = allowed;
|
|
236
|
+
}
|
|
147
237
|
setApiKey(apiKey) {
|
|
148
238
|
if (apiKey) {
|
|
149
239
|
this._apiKey = apiKey;
|
|
@@ -172,6 +262,10 @@ tslib_1.__decorate([
|
|
|
172
262
|
(0, inversify_1.named)('ai-google:GoogleLanguageModelsManagerImpl'),
|
|
173
263
|
tslib_1.__metadata("design:type", Object)
|
|
174
264
|
], GoogleLanguageModelsManagerImpl.prototype, "logger", void 0);
|
|
265
|
+
tslib_1.__decorate([
|
|
266
|
+
(0, inversify_1.inject)(node_1.ModelDiscoveryFetcher),
|
|
267
|
+
tslib_1.__metadata("design:type", Object)
|
|
268
|
+
], GoogleLanguageModelsManagerImpl.prototype, "discoveryFetcher", void 0);
|
|
175
269
|
exports.GoogleLanguageModelsManagerImpl = GoogleLanguageModelsManagerImpl = tslib_1.__decorate([
|
|
176
270
|
(0, inversify_1.injectable)()
|
|
177
271
|
], GoogleLanguageModelsManagerImpl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.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":"google-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,10 +18,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const chai_1 = require("chai");
|
|
19
19
|
const google_language_models_manager_impl_1 = require("./google-language-models-manager-impl");
|
|
20
20
|
const mock_logger_1 = require("@theia/core/lib/common/test/mock-logger");
|
|
21
|
+
const test_model_discovery_fetcher_1 = require("@theia/ai-core/lib/node/test/test-model-discovery-fetcher");
|
|
21
22
|
class TestableGoogleManager extends google_language_models_manager_impl_1.GoogleLanguageModelsManagerImpl {
|
|
22
23
|
constructor() {
|
|
23
24
|
super(...arguments);
|
|
24
25
|
this.retrieveCalls = [];
|
|
26
|
+
this.stubbedModels = [];
|
|
27
|
+
this.listCalls = 0;
|
|
28
|
+
/** Throw {@link failWith} for the first `failTimes` list calls, then return {@link stubbedModels}. */
|
|
29
|
+
this.failTimes = 0;
|
|
30
|
+
this.failWith = new Error('boom');
|
|
31
|
+
/** The real discovery fetcher, snapshotting in memory and retrying without waiting. */
|
|
32
|
+
this.testFetcher = new test_model_discovery_fetcher_1.TestModelDiscoveryFetcher();
|
|
33
|
+
this.discoveryFetcher = this.testFetcher;
|
|
25
34
|
}
|
|
26
35
|
callDeriveReasoningApi(modelId, info) {
|
|
27
36
|
return this.deriveReasoningApi(modelId, info);
|
|
@@ -39,6 +48,23 @@ class TestableGoogleManager extends google_language_models_manager_impl_1.Google
|
|
|
39
48
|
}
|
|
40
49
|
return this.stubbedInfo;
|
|
41
50
|
}
|
|
51
|
+
/** In-memory stand-in for the on-disk snapshot. */
|
|
52
|
+
get snapshot() {
|
|
53
|
+
return this.testFetcher.snapshot;
|
|
54
|
+
}
|
|
55
|
+
set snapshot(models) {
|
|
56
|
+
this.testFetcher.snapshot = models;
|
|
57
|
+
}
|
|
58
|
+
async listModels(_apiKey) {
|
|
59
|
+
this.listCalls++;
|
|
60
|
+
if (this.listCalls <= this.failTimes) {
|
|
61
|
+
throw this.failWith;
|
|
62
|
+
}
|
|
63
|
+
return this.stubbedModels;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function listedModel(name, supportedActions, displayName, modelDescription) {
|
|
67
|
+
return ({ name, supportedActions, displayName, description: modelDescription });
|
|
42
68
|
}
|
|
43
69
|
function description(model) {
|
|
44
70
|
return {
|
|
@@ -150,4 +176,140 @@ describe('GoogleLanguageModelsManagerImpl - fetchModelInfo cache', () => {
|
|
|
150
176
|
(0, chai_1.expect)(manager.retrieveCalls).to.deep.equal(['gemini-3-pro']);
|
|
151
177
|
});
|
|
152
178
|
});
|
|
179
|
+
describe('GoogleLanguageModelsManagerImpl - fetchAvailableModels', () => {
|
|
180
|
+
let manager;
|
|
181
|
+
beforeEach(() => {
|
|
182
|
+
manager = new TestableGoogleManager();
|
|
183
|
+
manager.logger = new mock_logger_1.MockLogger();
|
|
184
|
+
manager.setApiKey('key');
|
|
185
|
+
});
|
|
186
|
+
it('returns an empty result and skips the network when no API key is set', async () => {
|
|
187
|
+
const previous = { google: process.env.GOOGLE_API_KEY, gemini: process.env.GEMINI_API_KEY };
|
|
188
|
+
delete process.env.GOOGLE_API_KEY;
|
|
189
|
+
delete process.env.GEMINI_API_KEY;
|
|
190
|
+
try {
|
|
191
|
+
manager.setApiKey(undefined);
|
|
192
|
+
(0, chai_1.expect)(await manager.fetchAvailableModels()).to.deep.equal({ models: [], fromCache: false });
|
|
193
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(0);
|
|
194
|
+
}
|
|
195
|
+
finally {
|
|
196
|
+
if (previous.google !== undefined) {
|
|
197
|
+
process.env.GOOGLE_API_KEY = previous.google;
|
|
198
|
+
}
|
|
199
|
+
if (previous.gemini !== undefined) {
|
|
200
|
+
process.env.GEMINI_API_KEY = previous.gemini;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
it('strips the "models/" prefix, drops models that cannot generate content, and caches the result', async () => {
|
|
205
|
+
manager.stubbedModels = [
|
|
206
|
+
listedModel('models/gemini-3-pro', ['generateContent', 'countTokens'], 'Gemini 3 Pro', 'The best one.'),
|
|
207
|
+
listedModel('models/text-embedding-004', ['embedContent']),
|
|
208
|
+
// Older SDKs omit the field; such models are kept rather than silently dropped.
|
|
209
|
+
listedModel('models/gemini-3-flash'),
|
|
210
|
+
listedModel('models/gemini-3-pro', ['generateContent'])
|
|
211
|
+
];
|
|
212
|
+
const result = await manager.fetchAvailableModels();
|
|
213
|
+
(0, chai_1.expect)(result.fromCache).to.equal(false);
|
|
214
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal(['gemini-3-pro', 'gemini-3-flash']);
|
|
215
|
+
(0, chai_1.expect)(result.models[0].label).to.equal('Gemini 3 Pro');
|
|
216
|
+
(0, chai_1.expect)(result.models[0].description).to.equal('The best one.');
|
|
217
|
+
(0, chai_1.expect)(manager.snapshot).to.deep.equal(result.models);
|
|
218
|
+
});
|
|
219
|
+
it('keeps the Gemini chat models and drops what the endpoint otherwise carries', async () => {
|
|
220
|
+
manager.stubbedModels = [
|
|
221
|
+
listedModel('models/gemini-flash-latest'),
|
|
222
|
+
listedModel('models/gemini-3.8-flash'),
|
|
223
|
+
listedModel('models/gemini-3.1-pro-preview'),
|
|
224
|
+
// Chat-capable, but not a model of this family: its parameter count would read as a version.
|
|
225
|
+
listedModel('models/gemma-3-27b-it'),
|
|
226
|
+
listedModel('models/learnlm-2.0-experimental'),
|
|
227
|
+
// Gemini, and reported as generating content, but not chat: they answer through an API of
|
|
228
|
+
// their own, or they generate something other than text.
|
|
229
|
+
listedModel('models/gemini-3.5-pro-deep-research'),
|
|
230
|
+
listedModel('models/gemini-2.5-flash-preview-tts'),
|
|
231
|
+
listedModel('models/gemini-2.5-flash-image'),
|
|
232
|
+
listedModel('models/gemini-2.5-computer-use-preview'),
|
|
233
|
+
// The Live API and embedding models need no id term: they report what they can do.
|
|
234
|
+
listedModel('models/gemini-2.5-flash-live', ['bidiGenerateContent']),
|
|
235
|
+
listedModel('models/gemini-embedding-001', ['embedContent']),
|
|
236
|
+
listedModel('models/imagen-4.0-generate-001')
|
|
237
|
+
];
|
|
238
|
+
const result = await manager.fetchAvailableModels();
|
|
239
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal([
|
|
240
|
+
'gemini-flash-latest',
|
|
241
|
+
'gemini-3.8-flash',
|
|
242
|
+
'gemini-3.1-pro-preview'
|
|
243
|
+
]);
|
|
244
|
+
});
|
|
245
|
+
it('retries transient network errors and then succeeds', async () => {
|
|
246
|
+
manager.stubbedModels = [listedModel('models/gemini-3-pro')];
|
|
247
|
+
manager.failTimes = 2;
|
|
248
|
+
manager.failWith = new Error('fetch failed');
|
|
249
|
+
const result = await manager.fetchAvailableModels();
|
|
250
|
+
(0, chai_1.expect)(result.models.map(model => model.id)).to.deep.equal(['gemini-3-pro']);
|
|
251
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(3);
|
|
252
|
+
});
|
|
253
|
+
it('falls back to the cached snapshot when the fetch keeps failing', async () => {
|
|
254
|
+
manager.snapshot = [{ id: 'gemini-3-pro' }];
|
|
255
|
+
manager.failTimes = 99;
|
|
256
|
+
manager.failWith = new Error('ETIMEDOUT');
|
|
257
|
+
const result = await manager.fetchAvailableModels();
|
|
258
|
+
(0, chai_1.expect)(result).to.deep.equal({ models: [{ id: 'gemini-3-pro' }], fromCache: true, error: 'ETIMEDOUT' });
|
|
259
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(3);
|
|
260
|
+
});
|
|
261
|
+
it('does not retry auth errors and throws without a snapshot', async () => {
|
|
262
|
+
manager.failTimes = 99;
|
|
263
|
+
manager.failWith = new Error('403 permission denied');
|
|
264
|
+
let threw = false;
|
|
265
|
+
try {
|
|
266
|
+
await manager.fetchAvailableModels();
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
threw = true;
|
|
270
|
+
(0, chai_1.expect)(error.message).to.equal('403 permission denied');
|
|
271
|
+
}
|
|
272
|
+
(0, chai_1.expect)(threw).to.be.true;
|
|
273
|
+
(0, chai_1.expect)(manager.listCalls).to.equal(1);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
describe('GoogleLanguageModelsManagerImpl - environment API key consent', () => {
|
|
277
|
+
it('leaves an environment key unused until it is allowed, wherever a key would be read', async () => {
|
|
278
|
+
const previous = { GOOGLE_API_KEY: process.env.GOOGLE_API_KEY, GEMINI_API_KEY: process.env.GEMINI_API_KEY };
|
|
279
|
+
delete process.env.GOOGLE_API_KEY;
|
|
280
|
+
delete process.env.GEMINI_API_KEY;
|
|
281
|
+
process.env.GOOGLE_API_KEY = 'from-the-environment';
|
|
282
|
+
try {
|
|
283
|
+
const manager = new TestableGoogleManager();
|
|
284
|
+
// The gate sits on the key, so a custom endpoint or a configured model cannot reach past it either.
|
|
285
|
+
(0, chai_1.expect)(manager.apiKey).to.equal(undefined);
|
|
286
|
+
// Discovery still needs to know the key is there, in order to ask for it.
|
|
287
|
+
(0, chai_1.expect)(await manager.getApiKeySource()).to.equal('environment');
|
|
288
|
+
manager.setAllowEnvironmentApiKey(true);
|
|
289
|
+
(0, chai_1.expect)(manager.apiKey).to.equal('from-the-environment');
|
|
290
|
+
// Withdrawing the consent stops it being used at once.
|
|
291
|
+
manager.setAllowEnvironmentApiKey(false);
|
|
292
|
+
(0, chai_1.expect)(manager.apiKey).to.equal(undefined);
|
|
293
|
+
}
|
|
294
|
+
finally {
|
|
295
|
+
if (previous.GOOGLE_API_KEY !== undefined) {
|
|
296
|
+
process.env.GOOGLE_API_KEY = previous.GOOGLE_API_KEY;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
delete process.env.GOOGLE_API_KEY;
|
|
300
|
+
}
|
|
301
|
+
if (previous.GEMINI_API_KEY !== undefined) {
|
|
302
|
+
process.env.GEMINI_API_KEY = previous.GEMINI_API_KEY;
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
delete process.env.GEMINI_API_KEY;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
it('uses a key set in the preferences whatever the environment says', () => {
|
|
310
|
+
const manager = new TestableGoogleManager();
|
|
311
|
+
manager.setApiKey('from-the-preference');
|
|
312
|
+
(0, chai_1.expect)(manager.apiKey).to.equal('from-the-preference');
|
|
313
|
+
});
|
|
314
|
+
});
|
|
153
315
|
//# sourceMappingURL=google-language-models-manager-impl.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-models-manager-impl.spec.js","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"google-language-models-manager-impl.spec.js","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-google",
|
|
3
|
-
"version": "1.76.0
|
|
3
|
+
"version": "1.76.0",
|
|
4
4
|
"description": "Theia - Google AI Integration",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@google/genai": "^1.52.0",
|
|
7
|
-
"@theia/ai-core": "1.76.0
|
|
8
|
-
"@theia/core": "1.76.0
|
|
7
|
+
"@theia/ai-core": "1.76.0",
|
|
8
|
+
"@theia/core": "1.76.0"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"watch": "theiaext watch"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@theia/ext-scripts": "1.
|
|
47
|
+
"@theia/ext-scripts": "1.76.0"
|
|
48
48
|
},
|
|
49
49
|
"nyc": {
|
|
50
50
|
"extends": "../../configs/nyc.json"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "b9b54c500b46515512e2b44371bc0c7122947bed"
|
|
53
53
|
}
|
|
@@ -14,80 +14,65 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
18
17
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
18
|
import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
|
|
20
|
-
import { API_KEY_PREF,
|
|
21
|
-
import {
|
|
19
|
+
import { ALLOW_ENV_API_KEY_PREF, API_KEY_PREF, MODEL_OVERRIDES_PREF, MAX_RETRIES, RETRY_DELAY_OTHER_ERRORS, RETRY_DELAY_RATE_LIMIT } from '../common/google-preferences';
|
|
20
|
+
import { nls, PreferenceChange } from '@theia/core';
|
|
21
|
+
import { DiscoveringProviderContribution, ModelDiscoveryMessages } from '@theia/ai-core/lib/browser';
|
|
22
|
+
import { DiscoveredModel } from '@theia/ai-core/lib/common';
|
|
22
23
|
|
|
23
24
|
const GOOGLE_PROVIDER_ID = 'google';
|
|
24
25
|
|
|
25
26
|
@injectable()
|
|
26
|
-
export class GoogleFrontendApplicationContribution
|
|
27
|
-
|
|
28
|
-
@inject(PreferenceService)
|
|
29
|
-
protected preferenceService: PreferenceService;
|
|
27
|
+
export class GoogleFrontendApplicationContribution extends DiscoveringProviderContribution<GoogleModelDescription> {
|
|
30
28
|
|
|
31
29
|
@inject(GoogleLanguageModelsManager)
|
|
32
|
-
protected manager: GoogleLanguageModelsManager;
|
|
30
|
+
protected readonly manager: GoogleLanguageModelsManager;
|
|
33
31
|
|
|
34
|
-
protected
|
|
32
|
+
protected readonly providerId = GOOGLE_PROVIDER_ID;
|
|
33
|
+
protected readonly providerLabel = 'Google Gemini';
|
|
34
|
+
protected readonly modelOverridesPreference = MODEL_OVERRIDES_PREF;
|
|
35
|
+
protected readonly allowEnvironmentApiKeyPreference = ALLOW_ENV_API_KEY_PREF;
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
protected get discoveryMessages(): ModelDiscoveryMessages {
|
|
38
|
+
return {
|
|
39
|
+
noCredentials: nls.localize('theia/ai/google/discovery/noKey', 'No Google AI API key set. Add a key to discover models.'),
|
|
40
|
+
consentRequired: nls.localize('theia/ai/google/discovery/consentRequired',
|
|
41
|
+
'A Google AI API key was found in the environment. Confirm its use to discover models.'),
|
|
42
|
+
consentPrompt: nls.localize('theia/ai/google/discovery/consentPrompt',
|
|
43
|
+
'A Google AI API key was found in the environment (GOOGLE_API_KEY / GEMINI_API_KEY). Allow Theia to use it to discover and call Gemini models?'),
|
|
44
|
+
useEnvironmentKey: nls.localize('theia/ai/google/discovery/useEnvKey', 'Use key'),
|
|
45
|
+
overridden: nls.localize('theia/ai/google/discovery/overridden',
|
|
46
|
+
'The model list is configured manually. Clear the model overrides to discover the models from the provider again.'),
|
|
47
|
+
cached: error => nls.localize('theia/ai/google/discovery/cached', 'Showing cached models; last refresh failed: {0}', error)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
40
50
|
|
|
51
|
+
protected override initializeProvider(): void {
|
|
52
|
+
this.manager.setApiKey(this.preferenceService.get<string>(API_KEY_PREF, undefined));
|
|
53
|
+
this.manager.setMaxRetriesOnErrors(this.preferenceService.get<number>(MAX_RETRIES, 3));
|
|
54
|
+
this.manager.setRetryDelayOnRateLimitError(this.preferenceService.get<number>(RETRY_DELAY_RATE_LIMIT, 60));
|
|
55
|
+
this.manager.setRetryDelayOnOtherErrors(this.preferenceService.get<number>(RETRY_DELAY_OTHER_ERRORS, -1));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
protected override handlePreferenceChange(event: PreferenceChange): void {
|
|
59
|
+
if (event.preferenceName === API_KEY_PREF) {
|
|
60
|
+
this.manager.setApiKey(this.preferenceService.get<string>(API_KEY_PREF, undefined));
|
|
61
|
+
this.discoverAndRegisterModels();
|
|
62
|
+
} else if (event.preferenceName === MAX_RETRIES) {
|
|
41
63
|
this.manager.setMaxRetriesOnErrors(this.preferenceService.get<number>(MAX_RETRIES, 3));
|
|
64
|
+
} else if (event.preferenceName === RETRY_DELAY_RATE_LIMIT) {
|
|
42
65
|
this.manager.setRetryDelayOnRateLimitError(this.preferenceService.get<number>(RETRY_DELAY_RATE_LIMIT, 60));
|
|
66
|
+
} else if (event.preferenceName === RETRY_DELAY_OTHER_ERRORS) {
|
|
43
67
|
this.manager.setRetryDelayOnOtherErrors(this.preferenceService.get<number>(RETRY_DELAY_OTHER_ERRORS, -1));
|
|
44
|
-
|
|
45
|
-
const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
|
|
46
|
-
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createGeminiModelDescription(modelId)));
|
|
47
|
-
this.prevModels = [...models];
|
|
48
|
-
|
|
49
|
-
this.preferenceService.onPreferenceChanged(event => {
|
|
50
|
-
if (event.preferenceName === API_KEY_PREF) {
|
|
51
|
-
const newApiKey = this.preferenceService.get<string>(API_KEY_PREF, undefined);
|
|
52
|
-
this.manager.setApiKey(newApiKey);
|
|
53
|
-
this.handleKeyChange(newApiKey);
|
|
54
|
-
} else if (event.preferenceName === MAX_RETRIES) {
|
|
55
|
-
this.manager.setMaxRetriesOnErrors(this.preferenceService.get<number>(MAX_RETRIES, 3));
|
|
56
|
-
} else if (event.preferenceName === RETRY_DELAY_RATE_LIMIT) {
|
|
57
|
-
this.manager.setRetryDelayOnRateLimitError(this.preferenceService.get<number>(RETRY_DELAY_RATE_LIMIT, 60));
|
|
58
|
-
} else if (event.preferenceName === RETRY_DELAY_OTHER_ERRORS) {
|
|
59
|
-
this.manager.setRetryDelayOnOtherErrors(this.preferenceService.get<number>(RETRY_DELAY_OTHER_ERRORS, -1));
|
|
60
|
-
} else if (event.preferenceName === MODELS_PREF) {
|
|
61
|
-
this.handleModelChanges(this.preferenceService.get<string[]>(MODELS_PREF, []));
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected handleKeyChange(newApiKey: string | undefined): void {
|
|
68
|
-
if (this.prevModels && this.prevModels.length > 0) {
|
|
69
|
-
this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createGeminiModelDescription(modelId)));
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
protected handleModelChanges(newModels: string[]): void {
|
|
74
|
-
const oldModels = new Set(this.prevModels);
|
|
75
|
-
const updatedModels = new Set(newModels);
|
|
76
|
-
|
|
77
|
-
const modelsToRemove = [...oldModels].filter(model => !updatedModels.has(model));
|
|
78
|
-
const modelsToAdd = [...updatedModels].filter(model => !oldModels.has(model));
|
|
79
|
-
|
|
80
|
-
this.manager.removeLanguageModels(...modelsToRemove.map(model => `${GOOGLE_PROVIDER_ID}/${model}`));
|
|
81
|
-
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createGeminiModelDescription(modelId)));
|
|
82
|
-
this.prevModels = newModels;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
71
|
/** Reasoning capabilities are resolved by the backend from the Gemini /v1beta/models response. */
|
|
86
|
-
protected
|
|
87
|
-
const id = `${GOOGLE_PROVIDER_ID}/${modelId}`;
|
|
72
|
+
protected createModelDescription(model: DiscoveredModel): GoogleModelDescription {
|
|
88
73
|
return {
|
|
89
|
-
id: id
|
|
90
|
-
model:
|
|
74
|
+
id: `${GOOGLE_PROVIDER_ID}/${model.id}`,
|
|
75
|
+
model: model.id,
|
|
91
76
|
apiKey: true,
|
|
92
77
|
enableStreaming: true
|
|
93
78
|
};
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
//
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
|
-
import { ReasoningApi, ReasoningSupport } from '@theia/ai-core';
|
|
16
|
+
import { ApiKeySource, ModelDiscoveryResult, ReasoningApi, ReasoningSupport } from '@theia/ai-core';
|
|
17
17
|
|
|
18
18
|
export const GOOGLE_LANGUAGE_MODELS_MANAGER_PATH = '/services/google/language-model-manager';
|
|
19
19
|
export const GoogleLanguageModelsManager = Symbol('GoogleLanguageModelsManager');
|
|
@@ -52,9 +52,23 @@ export interface GoogleModelDescription {
|
|
|
52
52
|
export interface GoogleLanguageModelsManager {
|
|
53
53
|
apiKey: string | undefined;
|
|
54
54
|
setApiKey(key: string | undefined): void;
|
|
55
|
+
/**
|
|
56
|
+
* Allows or refuses the use of an API key found in the environment. Refused by default: an
|
|
57
|
+
* environment key is only used once the user has confirmed it, and setting this back to `false`
|
|
58
|
+
* stops it being used immediately, wherever it would have been used.
|
|
59
|
+
*/
|
|
60
|
+
setAllowEnvironmentApiKey(allowed: boolean): void;
|
|
55
61
|
setMaxRetriesOnErrors(maxRetries: number): void;
|
|
56
62
|
setRetryDelayOnRateLimitError(retryDelay: number): void;
|
|
57
63
|
setRetryDelayOnOtherErrors(retryDelay: number): void;
|
|
58
64
|
createOrUpdateLanguageModels(...models: GoogleModelDescription[]): Promise<void>;
|
|
59
|
-
removeLanguageModels(...modelIds: string[]): void
|
|
65
|
+
removeLanguageModels(...modelIds: string[]): void;
|
|
66
|
+
/**
|
|
67
|
+
* Fetches the ids of the Gemini models that currently support content generation from the
|
|
68
|
+
* `/v1beta/models` endpoint, retrying transient failures and caching a snapshot for offline use.
|
|
69
|
+
* Returns an empty result when no key is configured; falls back to the cached snapshot on failure.
|
|
70
|
+
*/
|
|
71
|
+
fetchAvailableModels(): Promise<ModelDiscoveryResult>;
|
|
72
|
+
/** Reports where the effective API key comes from (preference, environment, or none). */
|
|
73
|
+
getApiKeySource(): Promise<ApiKeySource>;
|
|
60
74
|
}
|