@theia/ai-google 1.72.0-next.52 → 1.72.0-next.59

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.
@@ -6,11 +6,9 @@ export declare class GoogleFrontendApplicationContribution implements FrontendAp
6
6
  protected manager: GoogleLanguageModelsManager;
7
7
  protected prevModels: string[];
8
8
  onStart(): void;
9
- /**
10
- * Called when the API key changes. Updates all Google models on the manager to ensure the new key is used.
11
- */
12
9
  protected handleKeyChange(newApiKey: string | undefined): void;
13
10
  protected handleModelChanges(newModels: string[]): void;
11
+ /** Reasoning capabilities are resolved by the backend from the Gemini /v1beta/models response. */
14
12
  protected createGeminiModelDescription(modelId: string): GoogleModelDescription;
15
13
  }
16
14
  //# sourceMappingURL=google-frontend-application-contribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwBhD,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA+Bf;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM9D,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;CAelF"}
1
+ {"version":3,"file":"google-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA+Bf,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM9D,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,kGAAkG;IAClG,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;CASlF"}
@@ -22,23 +22,6 @@ const common_1 = require("../common");
22
22
  const google_preferences_1 = require("../common/google-preferences");
23
23
  const core_1 = require("@theia/core");
24
24
  const GOOGLE_PROVIDER_ID = 'google';
25
- /** Gemini 3 uses `thinkingConfig.thinkingLevel`. */
26
- const EFFORT_REASONING = /^gemini-3(?:\.|-)/i;
27
- /** Gemini 2.5 uses `thinkingConfig.thinkingBudget` (integer; `-1` dynamic, `0` off). */
28
- const BUDGET_REASONING = /^gemini-2\.5(?:-|$)/i;
29
- const GEMINI_REASONING_SUPPORT = {
30
- supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
31
- defaultLevel: 'auto'
32
- };
33
- function reasoningApiFor(modelId) {
34
- if (EFFORT_REASONING.test(modelId)) {
35
- return 'effort';
36
- }
37
- if (BUDGET_REASONING.test(modelId)) {
38
- return 'budget';
39
- }
40
- return undefined;
41
- }
42
25
  let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContribution {
43
26
  constructor() {
44
27
  this.prevModels = [];
@@ -74,9 +57,6 @@ let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContr
74
57
  });
75
58
  });
76
59
  }
77
- /**
78
- * Called when the API key changes. Updates all Google models on the manager to ensure the new key is used.
79
- */
80
60
  handleKeyChange(newApiKey) {
81
61
  if (this.prevModels && this.prevModels.length > 0) {
82
62
  this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createGeminiModelDescription(modelId)));
@@ -91,18 +71,15 @@ let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContr
91
71
  this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createGeminiModelDescription(modelId)));
92
72
  this.prevModels = newModels;
93
73
  }
74
+ /** Reasoning capabilities are resolved by the backend from the Gemini /v1beta/models response. */
94
75
  createGeminiModelDescription(modelId) {
95
76
  const id = `${GOOGLE_PROVIDER_ID}/${modelId}`;
96
- const reasoningApi = reasoningApiFor(modelId);
97
- const description = {
77
+ return {
98
78
  id: id,
99
79
  model: modelId,
100
80
  apiKey: true,
101
- enableStreaming: true,
102
- reasoningSupport: reasoningApi ? GEMINI_REASONING_SUPPORT : undefined,
103
- reasoningApi
81
+ enableStreaming: true
104
82
  };
105
- return description;
106
83
  }
107
84
  };
108
85
  exports.GoogleFrontendApplicationContribution = GoogleFrontendApplicationContribution;
@@ -1 +1 @@
1
- {"version":3,"file":"google-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@ export declare class GoogleModel implements LanguageModel {
16
16
  retrySettings: () => GoogleLanguageModelRetrySettings;
17
17
  reasoningSupport?: ReasoningSupport | undefined;
18
18
  reasoningApi?: ReasoningApi | undefined;
19
- constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, apiKey: () => string | undefined, retrySettings: () => GoogleLanguageModelRetrySettings, reasoningSupport?: ReasoningSupport | undefined, reasoningApi?: ReasoningApi | undefined);
19
+ maxInputTokens?: number | undefined;
20
+ constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, apiKey: () => string | undefined, retrySettings: () => GoogleLanguageModelRetrySettings, reasoningSupport?: ReasoningSupport | undefined, reasoningApi?: ReasoningApi | undefined, maxInputTokens?: number | undefined);
20
21
  protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>>;
21
22
  request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
22
23
  protected handleStreamingRequest(genAI: GoogleGenAI, request: UserRequest, cancellationToken?: CancellationToken, toolMessages?: Content[]): Promise<LanguageModelStreamResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"google-language-model.d.ts","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"AAeA,OAAO,EAGH,aAAa,EAEb,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAE3B,yBAAyB,EACzB,YAAY,EACZ,gBAAgB,EAGhB,WAAW,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAkD,OAAO,EAAwD,MAAM,eAAe,CAAC;AAE3J,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAwFzF,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAgBrE;;;GAGG;AACH,qBAAa,WAAY,YAAW,aAAa;aAGzB,EAAE,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,mBAAmB;IAC3B,eAAe,EAAE,OAAO;IACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAChC,aAAa,EAAE,MAAM,gCAAgC;IACrD,gBAAgB,CAAC,EAAE,gBAAgB;IACnC,YAAY,CAAC,EAAE,YAAY;gBAPlB,EAAE,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAC3B,eAAe,EAAE,OAAO,EACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,gCAAgC,EACrD,gBAAgB,CAAC,EAAE,gBAAgB,YAAA,EACnC,YAAY,CAAC,EAAE,YAAY,YAAA;IAGtC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOjF,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB1F,sBAAsB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,YAAY,CAAC,EAAE,OAAO,EAAE,GACzB,OAAO,CAAC,2BAA2B,CAAC;IAuNvC,OAAO,CAAC,0BAA0B;cAYlB,yBAAyB,CACrC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC;IAkDrC,SAAS,CAAC,gBAAgB,IAAI,WAAW;IAUzC;;;;;OAKG;YACW,SAAS;CAqC1B"}
1
+ {"version":3,"file":"google-language-model.d.ts","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"AAeA,OAAO,EAGH,aAAa,EAEb,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAE3B,yBAAyB,EACzB,YAAY,EACZ,gBAAgB,EAGhB,WAAW,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAkD,OAAO,EAAwD,MAAM,eAAe,CAAC;AAE3J,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAwFzF,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAgBrE;;;GAGG;AACH,qBAAa,WAAY,YAAW,aAAa;aAGzB,EAAE,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,mBAAmB;IAC3B,eAAe,EAAE,OAAO;IACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAChC,aAAa,EAAE,MAAM,gCAAgC;IACrD,gBAAgB,CAAC,EAAE,gBAAgB;IACnC,YAAY,CAAC,EAAE,YAAY;IAC3B,cAAc,CAAC,EAAE,MAAM;gBARd,EAAE,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAC3B,eAAe,EAAE,OAAO,EACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,gCAAgC,EACrD,gBAAgB,CAAC,EAAE,gBAAgB,YAAA,EACnC,YAAY,CAAC,EAAE,YAAY,YAAA,EAC3B,cAAc,CAAC,EAAE,MAAM,YAAA;IAGlC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOjF,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB1F,sBAAsB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,YAAY,CAAC,EAAE,OAAO,EAAE,GACzB,OAAO,CAAC,2BAA2B,CAAC;IAuNvC,OAAO,CAAC,0BAA0B;cAYlB,yBAAyB,CACrC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC;IAkDrC,SAAS,CAAC,gBAAgB,IAAI,WAAW;IAUzC;;;;;OAKG;YACW,SAAS;CAqC1B"}
@@ -115,7 +115,7 @@ function toGoogleRole(message) {
115
115
  * translation lives in {@link googleReasoningFor}.
116
116
  */
117
117
  class GoogleModel {
118
- constructor(id, model, status, enableStreaming, apiKey, retrySettings, reasoningSupport, reasoningApi) {
118
+ constructor(id, model, status, enableStreaming, apiKey, retrySettings, reasoningSupport, reasoningApi, maxInputTokens) {
119
119
  this.id = id;
120
120
  this.model = model;
121
121
  this.status = status;
@@ -124,6 +124,7 @@ class GoogleModel {
124
124
  this.retrySettings = retrySettings;
125
125
  this.reasoningSupport = reasoningSupport;
126
126
  this.reasoningApi = reasoningApi;
127
+ this.maxInputTokens = maxInputTokens;
127
128
  }
128
129
  getSettings(request) {
129
130
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"google-language-model.js","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-language-model.js","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,41 @@
1
- import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
1
+ import { LanguageModelRegistry, LanguageModelStatus, ReasoningApi, ReasoningSupport } from '@theia/ai-core';
2
+ import { Model } from '@google/genai';
2
3
  import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
3
4
  export interface GoogleLanguageModelRetrySettings {
4
5
  maxRetriesOnErrors: number;
5
6
  retryDelayOnRateLimitError: number;
6
7
  retryDelayOnOtherErrors: number;
7
8
  }
9
+ /**
10
+ * Maps a Gemini model id to its reasoning API shape (Gemini 3 → `effort`, Gemini 2.5 → `budget`).
11
+ * Inferred from the id because /v1beta/models only exposes a single `thinking` boolean.
12
+ */
13
+ export declare function reasoningApiFromModelId(modelId: string): ReasoningApi | undefined;
14
+ interface ResolvedModelMetadata {
15
+ maxInputTokens?: number;
16
+ reasoningSupport?: ReasoningSupport;
17
+ reasoningApi?: ReasoningApi;
18
+ }
8
19
  export declare class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsManager {
9
20
  protected _apiKey: string | undefined;
10
21
  protected retrySettings: GoogleLanguageModelRetrySettings;
22
+ protected readonly modelInfoCache: Map<string, Promise<Model>>;
11
23
  protected readonly languageModelRegistry: LanguageModelRegistry;
12
24
  get apiKey(): string | undefined;
13
25
  protected calculateStatus(effectiveApiKey: string | undefined): LanguageModelStatus;
14
26
  createOrUpdateLanguageModels(...modelDescriptions: GoogleModelDescription[]): Promise<void>;
27
+ protected createOrUpdateLanguageModel(modelDescription: GoogleModelDescription): Promise<void>;
28
+ /** Description overrides win over the values derived from /v1beta/models. */
29
+ protected resolveMetadata(description: GoogleModelDescription, apiKey: string | undefined): Promise<ResolvedModelMetadata>;
30
+ protected fetchModelInfo(modelDescription: GoogleModelDescription, apiKey: string | undefined): Promise<Model | undefined>;
31
+ protected retrieveModelInfo(modelDescription: GoogleModelDescription, apiKey: string): Promise<Model>;
32
+ /** API `thinking=false` disables reasoning even when the model id suggests support. */
33
+ protected deriveReasoningApi(modelId: string, info: Model | undefined): ReasoningApi | undefined;
15
34
  removeLanguageModels(...modelIds: string[]): void;
16
35
  setApiKey(apiKey: string | undefined): void;
17
36
  setMaxRetriesOnErrors(maxRetries: number): void;
18
37
  setRetryDelayOnRateLimitError(retryDelay: number): void;
19
38
  setRetryDelayOnOtherErrors(retryDelay: number): void;
20
39
  }
40
+ export {};
21
41
  //# sourceMappingURL=google-language-models-manager-impl.d.ts.map
@@ -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,MAAM,gBAAgB,CAAC;AAG5E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,MAAM,WAAW,gCAAgC;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;CACnC;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,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,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;IAgDjG,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":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5G,OAAO,EAAe,KAAK,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,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;IAEhE,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;IAiDpG,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"}
@@ -16,10 +16,29 @@
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.GoogleLanguageModelsManagerImpl = void 0;
19
+ exports.reasoningApiFromModelId = reasoningApiFromModelId;
19
20
  const tslib_1 = require("tslib");
20
21
  const ai_core_1 = require("@theia/ai-core");
21
22
  const inversify_1 = require("@theia/core/shared/inversify");
23
+ const genai_1 = require("@google/genai");
22
24
  const google_language_model_1 = require("./google-language-model");
25
+ const GEMINI_REASONING_SUPPORT = {
26
+ supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
27
+ defaultLevel: 'auto'
28
+ };
29
+ /**
30
+ * Maps a Gemini model id to its reasoning API shape (Gemini 3 → `effort`, Gemini 2.5 → `budget`).
31
+ * Inferred from the id because /v1beta/models only exposes a single `thinking` boolean.
32
+ */
33
+ function reasoningApiFromModelId(modelId) {
34
+ if (/^gemini-3(?:\.|-)/i.test(modelId)) {
35
+ return 'effort';
36
+ }
37
+ if (/^gemini-2\.5(?:-|$)/i.test(modelId)) {
38
+ return 'budget';
39
+ }
40
+ return undefined;
41
+ }
23
42
  let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
24
43
  constructor() {
25
44
  this.retrySettings = {
@@ -27,6 +46,9 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
27
46
  retryDelayOnRateLimitError: 60,
28
47
  retryDelayOnOtherErrors: -1
29
48
  };
49
+ // Cached `/v1beta/models` lookups keyed by model id. Successful lookups are kept for the process lifetime;
50
+ // failed lookups are evicted so the next call retries.
51
+ this.modelInfoCache = new Map();
30
52
  }
31
53
  get apiKey() {
32
54
  return this._apiKey ?? process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY;
@@ -37,41 +59,85 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
37
59
  : { status: 'unavailable', message: 'No Google API key set' };
38
60
  }
39
61
  async createOrUpdateLanguageModels(...modelDescriptions) {
40
- for (const modelDescription of modelDescriptions) {
41
- const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
42
- const apiKeyProvider = () => {
43
- if (modelDescription.apiKey === true) {
44
- return this.apiKey;
45
- }
46
- if (modelDescription.apiKey) {
47
- return modelDescription.apiKey;
48
- }
49
- return undefined;
50
- };
51
- const retrySettingsProvider = () => this.retrySettings;
52
- // Determine the effective API key for status
53
- const status = this.calculateStatus(apiKeyProvider());
54
- if (model) {
55
- if (!(model instanceof google_language_model_1.GoogleModel)) {
56
- console.warn(`Gemini: model ${modelDescription.id} is not a Gemini model`);
57
- continue;
58
- }
59
- await this.languageModelRegistry.patchLanguageModel(modelDescription.id, {
60
- model: modelDescription.model,
61
- enableStreaming: modelDescription.enableStreaming,
62
- apiKey: apiKeyProvider,
63
- retrySettings: retrySettingsProvider,
64
- status,
65
- reasoningSupport: modelDescription.reasoningSupport,
66
- reasoningApi: modelDescription.reasoningApi
67
- });
62
+ await Promise.all(modelDescriptions.map(description => this.createOrUpdateLanguageModel(description)));
63
+ }
64
+ async createOrUpdateLanguageModel(modelDescription) {
65
+ const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
66
+ const apiKeyProvider = () => {
67
+ if (modelDescription.apiKey === true) {
68
+ return this.apiKey;
68
69
  }
69
- else {
70
- this.languageModelRegistry.addLanguageModels([
71
- new google_language_model_1.GoogleModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, apiKeyProvider, retrySettingsProvider, modelDescription.reasoningSupport, modelDescription.reasoningApi)
72
- ]);
70
+ if (modelDescription.apiKey) {
71
+ return modelDescription.apiKey;
73
72
  }
73
+ return undefined;
74
+ };
75
+ const retrySettingsProvider = () => this.retrySettings;
76
+ const apiKey = apiKeyProvider();
77
+ const status = this.calculateStatus(apiKey);
78
+ const metadata = await this.resolveMetadata(modelDescription, apiKey);
79
+ if (model) {
80
+ if (!(model instanceof google_language_model_1.GoogleModel)) {
81
+ console.warn(`Gemini: model ${modelDescription.id} is not a Gemini model`);
82
+ return;
83
+ }
84
+ await this.languageModelRegistry.patchLanguageModel(modelDescription.id, {
85
+ model: modelDescription.model,
86
+ enableStreaming: modelDescription.enableStreaming,
87
+ apiKey: apiKeyProvider,
88
+ retrySettings: retrySettingsProvider,
89
+ status,
90
+ reasoningSupport: metadata.reasoningSupport,
91
+ reasoningApi: metadata.reasoningApi,
92
+ maxInputTokens: metadata.maxInputTokens
93
+ });
94
+ }
95
+ else {
96
+ this.languageModelRegistry.addLanguageModels([
97
+ new google_language_model_1.GoogleModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, apiKeyProvider, retrySettingsProvider, metadata.reasoningSupport, metadata.reasoningApi, metadata.maxInputTokens)
98
+ ]);
99
+ }
100
+ }
101
+ /** Description overrides win over the values derived from /v1beta/models. */
102
+ async resolveMetadata(description, apiKey) {
103
+ const info = await this.fetchModelInfo(description, apiKey);
104
+ const reasoningApi = description.reasoningApi ?? this.deriveReasoningApi(description.model, info);
105
+ return {
106
+ maxInputTokens: info?.inputTokenLimit,
107
+ reasoningSupport: description.reasoningSupport ?? (reasoningApi ? GEMINI_REASONING_SUPPORT : undefined),
108
+ reasoningApi
109
+ };
110
+ }
111
+ async fetchModelInfo(modelDescription, apiKey) {
112
+ if (!apiKey) {
113
+ return undefined;
114
+ }
115
+ const cacheKey = modelDescription.model;
116
+ const cached = this.modelInfoCache.get(cacheKey);
117
+ if (cached) {
118
+ return cached;
119
+ }
120
+ const fetchPromise = this.retrieveModelInfo(modelDescription, apiKey);
121
+ this.modelInfoCache.set(cacheKey, fetchPromise);
122
+ try {
123
+ return await fetchPromise;
124
+ }
125
+ catch (error) {
126
+ this.modelInfoCache.delete(cacheKey);
127
+ console.warn(`Gemini: failed to retrieve model info for '${modelDescription.id}':`, error instanceof Error ? error.message : error);
128
+ return undefined;
129
+ }
130
+ }
131
+ retrieveModelInfo(modelDescription, apiKey) {
132
+ const genAI = new genai_1.GoogleGenAI({ apiKey, vertexai: false });
133
+ return genAI.models.get({ model: modelDescription.model });
134
+ }
135
+ /** API `thinking=false` disables reasoning even when the model id suggests support. */
136
+ deriveReasoningApi(modelId, info) {
137
+ if (info?.thinking === false) {
138
+ return undefined;
74
139
  }
140
+ return reasoningApiFromModelId(modelId);
75
141
  }
76
142
  removeLanguageModels(...modelIds) {
77
143
  this.languageModelRegistry.removeLanguageModels(modelIds);
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=google-language-models-manager-impl.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-language-models-manager-impl.spec.d.ts","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const google_language_models_manager_impl_1 = require("./google-language-models-manager-impl");
20
+ class TestableGoogleManager extends google_language_models_manager_impl_1.GoogleLanguageModelsManagerImpl {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.retrieveCalls = [];
24
+ }
25
+ callDeriveReasoningApi(modelId, info) {
26
+ return this.deriveReasoningApi(modelId, info);
27
+ }
28
+ callFetchModelInfo(desc, apiKey) {
29
+ return this.fetchModelInfo(desc, apiKey);
30
+ }
31
+ async retrieveModelInfo(modelDescription, _apiKey) {
32
+ this.retrieveCalls.push(modelDescription.model);
33
+ if (this.stubbedInfo instanceof Error) {
34
+ throw this.stubbedInfo;
35
+ }
36
+ if (!this.stubbedInfo) {
37
+ throw new Error('No stub configured');
38
+ }
39
+ return this.stubbedInfo;
40
+ }
41
+ }
42
+ function description(model) {
43
+ return {
44
+ id: `google/${model}`,
45
+ model,
46
+ apiKey: true,
47
+ enableStreaming: true
48
+ };
49
+ }
50
+ describe('reasoningApiFromModelId', () => {
51
+ it('maps Gemini 3 family ids to "effort"', () => {
52
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-3-pro')).to.equal('effort');
53
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-3.0-pro')).to.equal('effort');
54
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-3-flash')).to.equal('effort');
55
+ });
56
+ it('maps Gemini 2.5 family ids to "budget"', () => {
57
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-2.5-pro')).to.equal('budget');
58
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-2.5-flash')).to.equal('budget');
59
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-2.5')).to.equal('budget');
60
+ });
61
+ it('returns undefined for non-reasoning families', () => {
62
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-1.5-pro')).to.equal(undefined);
63
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-2.0-flash')).to.equal(undefined);
64
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-pro')).to.equal(undefined);
65
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('text-bison')).to.equal(undefined);
66
+ });
67
+ it('does not match prefixes that only happen to start with gemini-2 or gemini-3', () => {
68
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-30-foo')).to.equal(undefined);
69
+ (0, chai_1.expect)((0, google_language_models_manager_impl_1.reasoningApiFromModelId)('gemini-2.55')).to.equal(undefined);
70
+ });
71
+ });
72
+ describe('GoogleLanguageModelsManagerImpl - deriveReasoningApi', () => {
73
+ let manager;
74
+ beforeEach(() => {
75
+ manager = new TestableGoogleManager();
76
+ });
77
+ it('falls back to the model-id heuristic when info is missing', () => {
78
+ (0, chai_1.expect)(manager.callDeriveReasoningApi('gemini-3-pro', undefined)).to.equal('effort');
79
+ (0, chai_1.expect)(manager.callDeriveReasoningApi('gemini-2.5-pro', undefined)).to.equal('budget');
80
+ (0, chai_1.expect)(manager.callDeriveReasoningApi('gemini-1.5-pro', undefined)).to.equal(undefined);
81
+ });
82
+ it('uses the model-id heuristic when the API does not report thinking', () => {
83
+ const info = { thinking: undefined };
84
+ (0, chai_1.expect)(manager.callDeriveReasoningApi('gemini-3-pro', info)).to.equal('effort');
85
+ });
86
+ it('respects an explicit thinking=true from the API', () => {
87
+ const info = { thinking: true };
88
+ (0, chai_1.expect)(manager.callDeriveReasoningApi('gemini-2.5-pro', info)).to.equal('budget');
89
+ });
90
+ it('disables reasoning when the API explicitly reports thinking=false (overrides the model-id heuristic)', () => {
91
+ const info = { thinking: false };
92
+ (0, chai_1.expect)(manager.callDeriveReasoningApi('gemini-3-pro', info)).to.equal(undefined);
93
+ });
94
+ });
95
+ describe('GoogleLanguageModelsManagerImpl - fetchModelInfo cache', () => {
96
+ let manager;
97
+ beforeEach(() => {
98
+ manager = new TestableGoogleManager();
99
+ });
100
+ it('returns undefined and skips the network when no API key is provided', async () => {
101
+ manager.stubbedInfo = { thinking: true };
102
+ const result = await manager.callFetchModelInfo(description('gemini-3-pro'), undefined);
103
+ (0, chai_1.expect)(result).to.equal(undefined);
104
+ (0, chai_1.expect)(manager.retrieveCalls).to.deep.equal([]);
105
+ });
106
+ it('fetches once per model and reuses the cached result', async () => {
107
+ manager.stubbedInfo = { thinking: true };
108
+ const desc = description('gemini-3-pro');
109
+ const first = await manager.callFetchModelInfo(desc, 'key');
110
+ const second = await manager.callFetchModelInfo(desc, 'key');
111
+ (0, chai_1.expect)(first).to.equal(manager.stubbedInfo);
112
+ (0, chai_1.expect)(second).to.equal(manager.stubbedInfo);
113
+ (0, chai_1.expect)(manager.retrieveCalls).to.deep.equal(['gemini-3-pro']);
114
+ });
115
+ it('keys the cache by model id', async () => {
116
+ manager.stubbedInfo = { thinking: true };
117
+ await manager.callFetchModelInfo(description('gemini-3-pro'), 'key');
118
+ await manager.callFetchModelInfo(description('gemini-2.5-pro'), 'key');
119
+ (0, chai_1.expect)(manager.retrieveCalls).to.deep.equal(['gemini-3-pro', 'gemini-2.5-pro']);
120
+ });
121
+ it('does not cache failures (next call retries)', async () => {
122
+ manager.stubbedInfo = new Error('boom');
123
+ const desc = description('gemini-3-pro');
124
+ const first = await manager.callFetchModelInfo(desc, 'key');
125
+ (0, chai_1.expect)(first).to.equal(undefined);
126
+ manager.stubbedInfo = { thinking: true };
127
+ const second = await manager.callFetchModelInfo(desc, 'key');
128
+ (0, chai_1.expect)(second).to.equal(manager.stubbedInfo);
129
+ (0, chai_1.expect)(manager.retrieveCalls).to.deep.equal(['gemini-3-pro', 'gemini-3-pro']);
130
+ });
131
+ it('shares an in-flight fetch between concurrent callers', async () => {
132
+ let resolve = () => undefined;
133
+ const pending = new Promise(r => { resolve = r; });
134
+ manager
135
+ .retrieveModelInfo = (modelDescription) => {
136
+ manager.retrieveCalls.push(modelDescription.model);
137
+ return pending;
138
+ };
139
+ const desc = description('gemini-3-pro');
140
+ const p1 = manager.callFetchModelInfo(desc, 'key');
141
+ const p2 = manager.callFetchModelInfo(desc, 'key');
142
+ const expectedInfo = { thinking: true };
143
+ resolve(expectedInfo);
144
+ const [r1, r2] = await Promise.all([p1, p2]);
145
+ (0, chai_1.expect)(r1).to.equal(expectedInfo);
146
+ (0, chai_1.expect)(r2).to.equal(expectedInfo);
147
+ (0, chai_1.expect)(manager.retrieveCalls).to.deep.equal(['gemini-3-pro']);
148
+ });
149
+ });
150
+ //# sourceMappingURL=google-language-models-manager-impl.spec.js.map
@@ -0,0 +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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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/ai-google",
3
- "version": "1.72.0-next.52+726081b2a",
3
+ "version": "1.72.0-next.59+044f7bfc5",
4
4
  "description": "Theia - Google AI Integration",
5
5
  "dependencies": {
6
6
  "@google/genai": "^1.51.0",
7
- "@theia/ai-core": "1.72.0-next.52+726081b2a",
8
- "@theia/core": "1.72.0-next.52+726081b2a"
7
+ "@theia/ai-core": "1.72.0-next.59+044f7bfc5",
8
+ "@theia/core": "1.72.0-next.59+044f7bfc5"
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": "726081b2aa03827611ba4a323da1a6aaf0e9a9b9"
52
+ "gitHead": "044f7bfc503932372f324434beabbf5422dc583f"
53
53
  }
@@ -16,33 +16,12 @@
16
16
 
17
17
  import { FrontendApplicationContribution } from '@theia/core/lib/browser';
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
- import { ReasoningApi, ReasoningSupport } from '@theia/ai-core';
20
19
  import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
21
20
  import { API_KEY_PREF, MODELS_PREF, MAX_RETRIES, RETRY_DELAY_OTHER_ERRORS, RETRY_DELAY_RATE_LIMIT } from '../common/google-preferences';
22
21
  import { PreferenceService } from '@theia/core';
23
22
 
24
23
  const GOOGLE_PROVIDER_ID = 'google';
25
24
 
26
- /** Gemini 3 uses `thinkingConfig.thinkingLevel`. */
27
- const EFFORT_REASONING = /^gemini-3(?:\.|-)/i;
28
- /** Gemini 2.5 uses `thinkingConfig.thinkingBudget` (integer; `-1` dynamic, `0` off). */
29
- const BUDGET_REASONING = /^gemini-2\.5(?:-|$)/i;
30
-
31
- const GEMINI_REASONING_SUPPORT: ReasoningSupport = {
32
- supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
33
- defaultLevel: 'auto'
34
- };
35
-
36
- function reasoningApiFor(modelId: string): ReasoningApi | undefined {
37
- if (EFFORT_REASONING.test(modelId)) {
38
- return 'effort';
39
- }
40
- if (BUDGET_REASONING.test(modelId)) {
41
- return 'budget';
42
- }
43
- return undefined;
44
- }
45
-
46
25
  @injectable()
47
26
  export class GoogleFrontendApplicationContribution implements FrontendApplicationContribution {
48
27
 
@@ -85,9 +64,6 @@ export class GoogleFrontendApplicationContribution implements FrontendApplicatio
85
64
  });
86
65
  }
87
66
 
88
- /**
89
- * Called when the API key changes. Updates all Google models on the manager to ensure the new key is used.
90
- */
91
67
  protected handleKeyChange(newApiKey: string | undefined): void {
92
68
  if (this.prevModels && this.prevModels.length > 0) {
93
69
  this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createGeminiModelDescription(modelId)));
@@ -106,19 +82,14 @@ export class GoogleFrontendApplicationContribution implements FrontendApplicatio
106
82
  this.prevModels = newModels;
107
83
  }
108
84
 
85
+ /** Reasoning capabilities are resolved by the backend from the Gemini /v1beta/models response. */
109
86
  protected createGeminiModelDescription(modelId: string): GoogleModelDescription {
110
87
  const id = `${GOOGLE_PROVIDER_ID}/${modelId}`;
111
- const reasoningApi = reasoningApiFor(modelId);
112
-
113
- const description: GoogleModelDescription = {
88
+ return {
114
89
  id: id,
115
90
  model: modelId,
116
91
  apiKey: true,
117
- enableStreaming: true,
118
- reasoningSupport: reasoningApi ? GEMINI_REASONING_SUPPORT : undefined,
119
- reasoningApi
92
+ enableStreaming: true
120
93
  };
121
-
122
- return description;
123
94
  }
124
95
  }
@@ -151,7 +151,8 @@ export class GoogleModel implements LanguageModel {
151
151
  public apiKey: () => string | undefined,
152
152
  public retrySettings: () => GoogleLanguageModelRetrySettings,
153
153
  public reasoningSupport?: ReasoningSupport,
154
- public reasoningApi?: ReasoningApi
154
+ public reasoningApi?: ReasoningApi,
155
+ public maxInputTokens?: number
155
156
  ) { }
156
157
 
157
158
  protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>> {
@@ -0,0 +1,183 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { expect } from 'chai';
18
+ import type { Model } from '@google/genai';
19
+ import { ReasoningApi } from '@theia/ai-core';
20
+ import { GoogleLanguageModelsManagerImpl, reasoningApiFromModelId } from './google-language-models-manager-impl';
21
+ import { GoogleModelDescription } from '../common';
22
+
23
+ class TestableGoogleManager extends GoogleLanguageModelsManagerImpl {
24
+ public retrieveCalls: string[] = [];
25
+ public stubbedInfo: Model | Error | undefined;
26
+
27
+ public callDeriveReasoningApi(modelId: string, info: Model | undefined): ReasoningApi | undefined {
28
+ return this.deriveReasoningApi(modelId, info);
29
+ }
30
+
31
+ public callFetchModelInfo(
32
+ desc: GoogleModelDescription,
33
+ apiKey: string | undefined
34
+ ): Promise<Model | undefined> {
35
+ return this.fetchModelInfo(desc, apiKey);
36
+ }
37
+
38
+ protected override async retrieveModelInfo(modelDescription: GoogleModelDescription, _apiKey: string): Promise<Model> {
39
+ this.retrieveCalls.push(modelDescription.model);
40
+ if (this.stubbedInfo instanceof Error) {
41
+ throw this.stubbedInfo;
42
+ }
43
+ if (!this.stubbedInfo) {
44
+ throw new Error('No stub configured');
45
+ }
46
+ return this.stubbedInfo;
47
+ }
48
+ }
49
+
50
+ function description(model: string): GoogleModelDescription {
51
+ return {
52
+ id: `google/${model}`,
53
+ model,
54
+ apiKey: true,
55
+ enableStreaming: true
56
+ };
57
+ }
58
+
59
+ describe('reasoningApiFromModelId', () => {
60
+ it('maps Gemini 3 family ids to "effort"', () => {
61
+ expect(reasoningApiFromModelId('gemini-3-pro')).to.equal('effort');
62
+ expect(reasoningApiFromModelId('gemini-3.0-pro')).to.equal('effort');
63
+ expect(reasoningApiFromModelId('gemini-3-flash')).to.equal('effort');
64
+ });
65
+
66
+ it('maps Gemini 2.5 family ids to "budget"', () => {
67
+ expect(reasoningApiFromModelId('gemini-2.5-pro')).to.equal('budget');
68
+ expect(reasoningApiFromModelId('gemini-2.5-flash')).to.equal('budget');
69
+ expect(reasoningApiFromModelId('gemini-2.5')).to.equal('budget');
70
+ });
71
+
72
+ it('returns undefined for non-reasoning families', () => {
73
+ expect(reasoningApiFromModelId('gemini-1.5-pro')).to.equal(undefined);
74
+ expect(reasoningApiFromModelId('gemini-2.0-flash')).to.equal(undefined);
75
+ expect(reasoningApiFromModelId('gemini-pro')).to.equal(undefined);
76
+ expect(reasoningApiFromModelId('text-bison')).to.equal(undefined);
77
+ });
78
+
79
+ it('does not match prefixes that only happen to start with gemini-2 or gemini-3', () => {
80
+ expect(reasoningApiFromModelId('gemini-30-foo')).to.equal(undefined);
81
+ expect(reasoningApiFromModelId('gemini-2.55')).to.equal(undefined);
82
+ });
83
+ });
84
+
85
+ describe('GoogleLanguageModelsManagerImpl - deriveReasoningApi', () => {
86
+ let manager: TestableGoogleManager;
87
+
88
+ beforeEach(() => {
89
+ manager = new TestableGoogleManager();
90
+ });
91
+
92
+ it('falls back to the model-id heuristic when info is missing', () => {
93
+ expect(manager.callDeriveReasoningApi('gemini-3-pro', undefined)).to.equal('effort');
94
+ expect(manager.callDeriveReasoningApi('gemini-2.5-pro', undefined)).to.equal('budget');
95
+ expect(manager.callDeriveReasoningApi('gemini-1.5-pro', undefined)).to.equal(undefined);
96
+ });
97
+
98
+ it('uses the model-id heuristic when the API does not report thinking', () => {
99
+ const info = { thinking: undefined } as unknown as Model;
100
+ expect(manager.callDeriveReasoningApi('gemini-3-pro', info)).to.equal('effort');
101
+ });
102
+
103
+ it('respects an explicit thinking=true from the API', () => {
104
+ const info = { thinking: true } as unknown as Model;
105
+ expect(manager.callDeriveReasoningApi('gemini-2.5-pro', info)).to.equal('budget');
106
+ });
107
+
108
+ it('disables reasoning when the API explicitly reports thinking=false (overrides the model-id heuristic)', () => {
109
+ const info = { thinking: false } as unknown as Model;
110
+ expect(manager.callDeriveReasoningApi('gemini-3-pro', info)).to.equal(undefined);
111
+ });
112
+ });
113
+
114
+ describe('GoogleLanguageModelsManagerImpl - fetchModelInfo cache', () => {
115
+ let manager: TestableGoogleManager;
116
+
117
+ beforeEach(() => {
118
+ manager = new TestableGoogleManager();
119
+ });
120
+
121
+ it('returns undefined and skips the network when no API key is provided', async () => {
122
+ manager.stubbedInfo = { thinking: true } as unknown as Model;
123
+ const result = await manager.callFetchModelInfo(description('gemini-3-pro'), undefined);
124
+ expect(result).to.equal(undefined);
125
+ expect(manager.retrieveCalls).to.deep.equal([]);
126
+ });
127
+
128
+ it('fetches once per model and reuses the cached result', async () => {
129
+ manager.stubbedInfo = { thinking: true } as unknown as Model;
130
+ const desc = description('gemini-3-pro');
131
+
132
+ const first = await manager.callFetchModelInfo(desc, 'key');
133
+ const second = await manager.callFetchModelInfo(desc, 'key');
134
+
135
+ expect(first).to.equal(manager.stubbedInfo);
136
+ expect(second).to.equal(manager.stubbedInfo);
137
+ expect(manager.retrieveCalls).to.deep.equal(['gemini-3-pro']);
138
+ });
139
+
140
+ it('keys the cache by model id', async () => {
141
+ manager.stubbedInfo = { thinking: true } as unknown as Model;
142
+
143
+ await manager.callFetchModelInfo(description('gemini-3-pro'), 'key');
144
+ await manager.callFetchModelInfo(description('gemini-2.5-pro'), 'key');
145
+
146
+ expect(manager.retrieveCalls).to.deep.equal(['gemini-3-pro', 'gemini-2.5-pro']);
147
+ });
148
+
149
+ it('does not cache failures (next call retries)', async () => {
150
+ manager.stubbedInfo = new Error('boom');
151
+ const desc = description('gemini-3-pro');
152
+
153
+ const first = await manager.callFetchModelInfo(desc, 'key');
154
+ expect(first).to.equal(undefined);
155
+
156
+ manager.stubbedInfo = { thinking: true } as unknown as Model;
157
+ const second = await manager.callFetchModelInfo(desc, 'key');
158
+
159
+ expect(second).to.equal(manager.stubbedInfo);
160
+ expect(manager.retrieveCalls).to.deep.equal(['gemini-3-pro', 'gemini-3-pro']);
161
+ });
162
+
163
+ it('shares an in-flight fetch between concurrent callers', async () => {
164
+ let resolve: (info: Model) => void = () => undefined;
165
+ const pending = new Promise<Model>(r => { resolve = r; });
166
+ (manager as unknown as { retrieveModelInfo: (...args: unknown[]) => Promise<Model> })
167
+ .retrieveModelInfo = (modelDescription: GoogleModelDescription) => {
168
+ manager.retrieveCalls.push(modelDescription.model);
169
+ return pending;
170
+ };
171
+ const desc = description('gemini-3-pro');
172
+
173
+ const p1 = manager.callFetchModelInfo(desc, 'key');
174
+ const p2 = manager.callFetchModelInfo(desc, 'key');
175
+ const expectedInfo = { thinking: true } as unknown as Model;
176
+ resolve(expectedInfo);
177
+
178
+ const [r1, r2] = await Promise.all([p1, p2]);
179
+ expect(r1).to.equal(expectedInfo);
180
+ expect(r2).to.equal(expectedInfo);
181
+ expect(manager.retrieveCalls).to.deep.equal(['gemini-3-pro']);
182
+ });
183
+ });
@@ -14,8 +14,9 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
17
+ import { LanguageModelRegistry, LanguageModelStatus, ReasoningApi, ReasoningSupport } from '@theia/ai-core';
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
+ import { GoogleGenAI, Model } from '@google/genai';
19
20
  import { GoogleModel } from './google-language-model';
20
21
  import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
21
22
 
@@ -25,6 +26,31 @@ export interface GoogleLanguageModelRetrySettings {
25
26
  retryDelayOnOtherErrors: number;
26
27
  }
27
28
 
29
+ const GEMINI_REASONING_SUPPORT: ReasoningSupport = {
30
+ supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
31
+ defaultLevel: 'auto'
32
+ };
33
+
34
+ /**
35
+ * Maps a Gemini model id to its reasoning API shape (Gemini 3 → `effort`, Gemini 2.5 → `budget`).
36
+ * Inferred from the id because /v1beta/models only exposes a single `thinking` boolean.
37
+ */
38
+ export function reasoningApiFromModelId(modelId: string): ReasoningApi | undefined {
39
+ if (/^gemini-3(?:\.|-)/i.test(modelId)) {
40
+ return 'effort';
41
+ }
42
+ if (/^gemini-2\.5(?:-|$)/i.test(modelId)) {
43
+ return 'budget';
44
+ }
45
+ return undefined;
46
+ }
47
+
48
+ interface ResolvedModelMetadata {
49
+ maxInputTokens?: number;
50
+ reasoningSupport?: ReasoningSupport;
51
+ reasoningApi?: ReasoningApi;
52
+ }
53
+
28
54
  @injectable()
29
55
  export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsManager {
30
56
  protected _apiKey: string | undefined;
@@ -33,6 +59,9 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
33
59
  retryDelayOnRateLimitError: 60,
34
60
  retryDelayOnOtherErrors: -1
35
61
  };
62
+ // Cached `/v1beta/models` lookups keyed by model id. Successful lookups are kept for the process lifetime;
63
+ // failed lookups are evicted so the next call retries.
64
+ protected readonly modelInfoCache = new Map<string, Promise<Model>>();
36
65
 
37
66
  @inject(LanguageModelRegistry)
38
67
  protected readonly languageModelRegistry: LanguageModelRegistry;
@@ -48,51 +77,101 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
48
77
  }
49
78
 
50
79
  async createOrUpdateLanguageModels(...modelDescriptions: GoogleModelDescription[]): Promise<void> {
51
- for (const modelDescription of modelDescriptions) {
52
- const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
53
- const apiKeyProvider = () => {
54
- if (modelDescription.apiKey === true) {
55
- return this.apiKey;
56
- }
57
- if (modelDescription.apiKey) {
58
- return modelDescription.apiKey;
59
- }
60
- return undefined;
61
- };
62
- const retrySettingsProvider = () => this.retrySettings;
63
-
64
- // Determine the effective API key for status
65
- const status = this.calculateStatus(apiKeyProvider());
66
-
67
- if (model) {
68
- if (!(model instanceof GoogleModel)) {
69
- console.warn(`Gemini: model ${modelDescription.id} is not a Gemini model`);
70
- continue;
71
- }
72
- await this.languageModelRegistry.patchLanguageModel<GoogleModel>(modelDescription.id, {
73
- model: modelDescription.model,
74
- enableStreaming: modelDescription.enableStreaming,
75
- apiKey: apiKeyProvider,
76
- retrySettings: retrySettingsProvider,
77
- status,
78
- reasoningSupport: modelDescription.reasoningSupport,
79
- reasoningApi: modelDescription.reasoningApi
80
- });
81
- } else {
82
- this.languageModelRegistry.addLanguageModels([
83
- new GoogleModel(
84
- modelDescription.id,
85
- modelDescription.model,
86
- status,
87
- modelDescription.enableStreaming,
88
- apiKeyProvider,
89
- retrySettingsProvider,
90
- modelDescription.reasoningSupport,
91
- modelDescription.reasoningApi
92
- )
93
- ]);
80
+ await Promise.all(modelDescriptions.map(description => this.createOrUpdateLanguageModel(description)));
81
+ }
82
+
83
+ protected async createOrUpdateLanguageModel(modelDescription: GoogleModelDescription): Promise<void> {
84
+ const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
85
+ const apiKeyProvider = () => {
86
+ if (modelDescription.apiKey === true) {
87
+ return this.apiKey;
88
+ }
89
+ if (modelDescription.apiKey) {
90
+ return modelDescription.apiKey;
91
+ }
92
+ return undefined;
93
+ };
94
+ const retrySettingsProvider = () => this.retrySettings;
95
+
96
+ const apiKey = apiKeyProvider();
97
+ const status = this.calculateStatus(apiKey);
98
+ const metadata = await this.resolveMetadata(modelDescription, apiKey);
99
+
100
+ if (model) {
101
+ if (!(model instanceof GoogleModel)) {
102
+ console.warn(`Gemini: model ${modelDescription.id} is not a Gemini model`);
103
+ return;
94
104
  }
105
+ await this.languageModelRegistry.patchLanguageModel<GoogleModel>(modelDescription.id, {
106
+ model: modelDescription.model,
107
+ enableStreaming: modelDescription.enableStreaming,
108
+ apiKey: apiKeyProvider,
109
+ retrySettings: retrySettingsProvider,
110
+ status,
111
+ reasoningSupport: metadata.reasoningSupport,
112
+ reasoningApi: metadata.reasoningApi,
113
+ maxInputTokens: metadata.maxInputTokens
114
+ });
115
+ } else {
116
+ this.languageModelRegistry.addLanguageModels([
117
+ new GoogleModel(
118
+ modelDescription.id,
119
+ modelDescription.model,
120
+ status,
121
+ modelDescription.enableStreaming,
122
+ apiKeyProvider,
123
+ retrySettingsProvider,
124
+ metadata.reasoningSupport,
125
+ metadata.reasoningApi,
126
+ metadata.maxInputTokens
127
+ )
128
+ ]);
129
+ }
130
+ }
131
+
132
+ /** Description overrides win over the values derived from /v1beta/models. */
133
+ protected async resolveMetadata(description: GoogleModelDescription, apiKey: string | undefined): Promise<ResolvedModelMetadata> {
134
+ const info = await this.fetchModelInfo(description, apiKey);
135
+ const reasoningApi = description.reasoningApi ?? this.deriveReasoningApi(description.model, info);
136
+ return {
137
+ maxInputTokens: info?.inputTokenLimit,
138
+ reasoningSupport: description.reasoningSupport ?? (reasoningApi ? GEMINI_REASONING_SUPPORT : undefined),
139
+ reasoningApi
140
+ };
141
+ }
142
+
143
+ protected async fetchModelInfo(modelDescription: GoogleModelDescription, apiKey: string | undefined): Promise<Model | undefined> {
144
+ if (!apiKey) {
145
+ return undefined;
146
+ }
147
+ const cacheKey = modelDescription.model;
148
+ const cached = this.modelInfoCache.get(cacheKey);
149
+ if (cached) {
150
+ return cached;
151
+ }
152
+ const fetchPromise = this.retrieveModelInfo(modelDescription, apiKey);
153
+ this.modelInfoCache.set(cacheKey, fetchPromise);
154
+ try {
155
+ return await fetchPromise;
156
+ } catch (error) {
157
+ this.modelInfoCache.delete(cacheKey);
158
+ console.warn(`Gemini: failed to retrieve model info for '${modelDescription.id}':`,
159
+ error instanceof Error ? error.message : error);
160
+ return undefined;
161
+ }
162
+ }
163
+
164
+ protected retrieveModelInfo(modelDescription: GoogleModelDescription, apiKey: string): Promise<Model> {
165
+ const genAI = new GoogleGenAI({ apiKey, vertexai: false });
166
+ return genAI.models.get({ model: modelDescription.model });
167
+ }
168
+
169
+ /** API `thinking=false` disables reasoning even when the model id suggests support. */
170
+ protected deriveReasoningApi(modelId: string, info: Model | undefined): ReasoningApi | undefined {
171
+ if (info?.thinking === false) {
172
+ return undefined;
95
173
  }
174
+ return reasoningApiFromModelId(modelId);
96
175
  }
97
176
 
98
177
  removeLanguageModels(...modelIds: string[]): void {