@theia/ai-google 1.76.0-next.4 → 1.76.0-next.42

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 (30) hide show
  1. package/lib/browser/google-frontend-application-contribution.d.ts +13 -10
  2. package/lib/browser/google-frontend-application-contribution.d.ts.map +1 -1
  3. package/lib/browser/google-frontend-application-contribution.js +36 -50
  4. package/lib/browser/google-frontend-application-contribution.js.map +1 -1
  5. package/lib/common/google-language-models-manager.d.ts +15 -1
  6. package/lib/common/google-language-models-manager.d.ts.map +1 -1
  7. package/lib/common/google-preferences.d.ts +2 -1
  8. package/lib/common/google-preferences.d.ts.map +1 -1
  9. package/lib/common/google-preferences.js +16 -7
  10. package/lib/common/google-preferences.js.map +1 -1
  11. package/lib/node/google-language-model.d.ts +9 -0
  12. package/lib/node/google-language-model.d.ts.map +1 -1
  13. package/lib/node/google-language-model.js +22 -8
  14. package/lib/node/google-language-model.js.map +1 -1
  15. package/lib/node/google-language-model.spec.js +24 -0
  16. package/lib/node/google-language-model.spec.js.map +1 -1
  17. package/lib/node/google-language-models-manager-impl.d.ts +43 -1
  18. package/lib/node/google-language-models-manager-impl.d.ts.map +1 -1
  19. package/lib/node/google-language-models-manager-impl.js +97 -3
  20. package/lib/node/google-language-models-manager-impl.js.map +1 -1
  21. package/lib/node/google-language-models-manager-impl.spec.js +162 -0
  22. package/lib/node/google-language-models-manager-impl.spec.js.map +1 -1
  23. package/package.json +4 -4
  24. package/src/browser/google-frontend-application-contribution.ts +40 -55
  25. package/src/common/google-language-models-manager.ts +16 -2
  26. package/src/common/google-preferences.ts +17 -6
  27. package/src/node/google-language-model.spec.ts +32 -1
  28. package/src/node/google-language-model.ts +31 -6
  29. package/src/node/google-language-models-manager-impl.spec.ts +164 -1
  30. 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,EAAE,MAAM,gBAAgB,CAAC;AAE5G,OAAO,EAAe,KAAK,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;CACnC;AAOD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQjF;AAED,UAAU,qBAAqB;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,qBACa,+BAAgC,YAAW,2BAA2B;IAC/E,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,aAAa,EAAE,gCAAgC,CAIvD;IAGF,SAAS,CAAC,QAAQ,CAAC,cAAc,8BAAqC;IAGtE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAM7E,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAIjF,2BAA2B,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDpG,6EAA6E;cAC7D,eAAe,CAAC,WAAW,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAUhH,cAAc,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAqBhI,SAAS,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKrG,uFAAuF;IACvF,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS;IAOhG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQ3C,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI/C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvD,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAGvD"}
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 = new genai_1.GoogleGenAI({ apiKey, vertexai: false });
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":"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"}
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-next.4+21b9b5342",
3
+ "version": "1.76.0-next.42+b0f9e63a6",
4
4
  "description": "Theia - Google AI Integration",
5
5
  "dependencies": {
6
6
  "@google/genai": "^1.52.0",
7
- "@theia/ai-core": "1.76.0-next.4+21b9b5342",
8
- "@theia/core": "1.76.0-next.4+21b9b5342"
7
+ "@theia/ai-core": "1.76.0-next.42+b0f9e63a6",
8
+ "@theia/core": "1.76.0-next.42+b0f9e63a6"
9
9
  },
10
10
  "publishConfig": {
11
11
  "access": "public"
@@ -49,5 +49,5 @@
49
49
  "nyc": {
50
50
  "extends": "../../configs/nyc.json"
51
51
  },
52
- "gitHead": "21b9b534224c55152fca0b67af7f8a8283dad2bd"
52
+ "gitHead": "b0f9e63a6d331135265869a341dce7c7f1eef158"
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, MODELS_PREF, MAX_RETRIES, RETRY_DELAY_OTHER_ERRORS, RETRY_DELAY_RATE_LIMIT } from '../common/google-preferences';
21
- import { PreferenceService } from '@theia/core';
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 implements FrontendApplicationContribution {
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 prevModels: string[] = [];
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
- onStart(): void {
37
- this.preferenceService.ready.then(() => {
38
- const apiKey = this.preferenceService.get<string>(API_KEY_PREF, undefined);
39
- this.manager.setApiKey(apiKey);
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 createGeminiModelDescription(modelId: string): GoogleModelDescription {
87
- const id = `${GOOGLE_PROVIDER_ID}/${modelId}`;
72
+ protected createModelDescription(model: DiscoveredModel): GoogleModelDescription {
88
73
  return {
89
- id: id,
90
- model: modelId,
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
  }
@@ -18,7 +18,8 @@ import { AI_CORE_PREFERENCES_TITLE, MODEL_PROVIDER_TYPE_DETAIL, ModelProviderTyp
18
18
  import { LINUX_ENV_HINT, nls, PreferenceSchema } from '@theia/core';
19
19
 
20
20
  export const API_KEY_PREF = 'ai-features.google.apiKey';
21
- export const MODELS_PREF = 'ai-features.google.models';
21
+ export const ALLOW_ENV_API_KEY_PREF = 'ai-features.google.allowEnvironmentApiKey';
22
+ export const MODEL_OVERRIDES_PREF = 'ai-features.google.modelOverrides';
22
23
  export const MAX_RETRIES = 'ai-features.google.maxRetriesOnErrors';
23
24
  export const RETRY_DELAY_RATE_LIMIT = 'ai-features.google.retryDelayOnRateLimitError';
24
25
  export const RETRY_DELAY_OTHER_ERRORS = 'ai-features.google.retryDelayOnOtherErrors';
@@ -33,14 +34,24 @@ export const GooglePreferencesSchema: PreferenceSchema = {
33
34
  on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely.') + LINUX_ENV_HINT,
34
35
  title: AI_CORE_PREFERENCES_TITLE,
35
36
  },
36
- [MODELS_PREF]: {
37
- type: 'array',
38
- description: nls.localize('theia/ai/google/models/description', 'Official Google Gemini models to use'),
37
+ [ALLOW_ENV_API_KEY_PREF]: {
38
+ type: 'boolean',
39
+ default: false,
39
40
  title: AI_CORE_PREFERENCES_TITLE,
40
- default: ['gemini-3.1-pro-preview', 'gemini-3.7-flash', 'gemini-3.6-flash', 'gemini-3.5-flash', 'gemini-3.5-flash-lite'],
41
+ markdownDescription: nls.localize('theia/ai/google/allowEnvApiKey/description',
42
+ 'Allow Theia to use a Google AI (Gemini) API key found in the environment (`GOOGLE_API_KEY` / `GEMINI_API_KEY`). '
43
+ + 'You are asked to confirm this once before the key is used; set it back to `false` to revoke consent.'),
44
+ },
45
+ [MODEL_OVERRIDES_PREF]: {
46
+ type: 'array',
47
+ default: [],
41
48
  items: {
42
49
  type: 'string'
43
- }
50
+ },
51
+ title: AI_CORE_PREFERENCES_TITLE,
52
+ markdownDescription: nls.localize('theia/ai/google/modelOverrides/description',
53
+ 'Override the models discovered from Google Gemini. When empty (default), the available models are discovered from the provider. '
54
+ + 'Set explicit model ids to use exactly those instead; discovery is then not used at all.')
44
55
  },
45
56
  [MAX_RETRIES]: {
46
57
  type: 'integer',