@theia/ai-google 1.71.0-next.8 → 1.71.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.
Files changed (34) hide show
  1. package/lib/browser/google-frontend-application-contribution.d.ts.map +1 -1
  2. package/lib/browser/google-frontend-application-contribution.js +21 -1
  3. package/lib/browser/google-frontend-application-contribution.js.map +1 -1
  4. package/lib/common/google-language-models-manager.d.ts +9 -0
  5. package/lib/common/google-language-models-manager.d.ts.map +1 -1
  6. package/lib/common/google-language-models-manager.js +0 -15
  7. package/lib/common/google-language-models-manager.js.map +1 -1
  8. package/lib/common/google-preferences.d.ts.map +1 -1
  9. package/lib/common/google-preferences.js +1 -1
  10. package/lib/common/google-preferences.js.map +1 -1
  11. package/lib/node/google-language-model.d.ts +6 -4
  12. package/lib/node/google-language-model.d.ts.map +1 -1
  13. package/lib/node/google-language-model.js +18 -34
  14. package/lib/node/google-language-model.js.map +1 -1
  15. package/lib/node/google-language-model.spec.d.ts +2 -0
  16. package/lib/node/google-language-model.spec.d.ts.map +1 -0
  17. package/lib/node/google-language-model.spec.js +76 -0
  18. package/lib/node/google-language-model.spec.js.map +1 -0
  19. package/lib/node/google-language-models-manager-impl.d.ts +1 -2
  20. package/lib/node/google-language-models-manager-impl.d.ts.map +1 -1
  21. package/lib/node/google-language-models-manager-impl.js +4 -6
  22. package/lib/node/google-language-models-manager-impl.js.map +1 -1
  23. package/lib/node/google-reasoning.d.ts +12 -0
  24. package/lib/node/google-reasoning.d.ts.map +1 -0
  25. package/lib/node/google-reasoning.js +48 -0
  26. package/lib/node/google-reasoning.js.map +1 -0
  27. package/package.json +6 -6
  28. package/src/browser/google-frontend-application-contribution.ts +25 -1
  29. package/src/common/google-language-models-manager.ts +11 -1
  30. package/src/common/google-preferences.ts +2 -2
  31. package/src/node/google-language-model.spec.ts +88 -0
  32. package/src/node/google-language-model.ts +19 -38
  33. package/src/node/google-language-models-manager-impl.ts +6 -6
  34. package/src/node/google-reasoning.ts +49 -0
@@ -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;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;;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;CAYlF"}
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"}
@@ -22,6 +22,23 @@ 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
+ }
25
42
  let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContribution {
26
43
  constructor() {
27
44
  this.prevModels = [];
@@ -76,11 +93,14 @@ let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContr
76
93
  }
77
94
  createGeminiModelDescription(modelId) {
78
95
  const id = `${GOOGLE_PROVIDER_ID}/${modelId}`;
96
+ const reasoningApi = reasoningApiFor(modelId);
79
97
  const description = {
80
98
  id: id,
81
99
  model: modelId,
82
100
  apiKey: true,
83
- enableStreaming: true
101
+ enableStreaming: true,
102
+ reasoningSupport: reasoningApi ? GEMINI_REASONING_SUPPORT : undefined,
103
+ reasoningApi
84
104
  };
85
105
  return description;
86
106
  }
@@ -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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"}
@@ -1,3 +1,4 @@
1
+ import { ReasoningApi, ReasoningSupport } from '@theia/ai-core';
1
2
  export declare const GOOGLE_LANGUAGE_MODELS_MANAGER_PATH = "/services/google/language-model-manager";
2
3
  export declare const GoogleLanguageModelsManager: unique symbol;
3
4
  export interface GoogleModelDescription {
@@ -21,6 +22,14 @@ export interface GoogleModelDescription {
21
22
  * Maximum number of tokens to generate. Default is 4096.
22
23
  */
23
24
  maxTokens?: number;
25
+ /** When set, the UI exposes a reasoning selector and requests are translated to {@link reasoningApi}. */
26
+ reasoningSupport?: ReasoningSupport;
27
+ /**
28
+ * Which Gemini reasoning API shape to use. Required when `reasoningSupport` is set.
29
+ * - `'effort'`: `thinkingConfig.thinkingLevel` (Gemini 3+)
30
+ * - `'budget'`: `thinkingConfig.thinkingBudget` (Gemini 2.5)
31
+ */
32
+ reasoningApi?: ReasoningApi;
24
33
  }
25
34
  export interface GoogleLanguageModelsManager {
26
35
  apiKey: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"google-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/google-language-models-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AACjF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAEtB;AAED,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACpD"}
1
+ {"version":3,"file":"google-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/google-language-models-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACpD"}
@@ -1,21 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GoogleLanguageModelsManager = exports.GOOGLE_LANGUAGE_MODELS_MANAGER_PATH = void 0;
4
- // *****************************************************************************
5
- // Copyright (C) 2025 EclipseSource GmbH.
6
- //
7
- // This program and the accompanying materials are made available under the
8
- // terms of the Eclipse Public License v. 2.0 which is available at
9
- // http://www.eclipse.org/legal/epl-2.0.
10
- //
11
- // This Source Code may also be made available under the following Secondary
12
- // Licenses when the conditions for such availability set forth in the Eclipse
13
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
14
- // with the GNU Classpath Exception which is available at
15
- // https://www.gnu.org/software/classpath/license.html.
16
- //
17
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
18
- // *****************************************************************************
19
4
  exports.GOOGLE_LANGUAGE_MODELS_MANAGER_PATH = '/services/google/language-model-manager';
20
5
  exports.GoogleLanguageModelsManager = Symbol('GoogleLanguageModelsManager');
21
6
  //# sourceMappingURL=google-language-models-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-language-models-manager.js","sourceRoot":"","sources":["../../src/common/google-language-models-manager.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;AACnE,QAAA,mCAAmC,GAAG,yCAAyC,CAAC;AAChF,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC"}
1
+ {"version":3,"file":"google-language-models-manager.js","sourceRoot":"","sources":["../../src/common/google-language-models-manager.ts"],"names":[],"mappings":";;;AAiBa,QAAA,mCAAmC,GAAG,yCAAyC,CAAC;AAChF,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"google-preferences.d.ts","sourceRoot":"","sources":["../../src/common/google-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAO,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,YAAY,8BAA8B,CAAC;AACxD,eAAO,MAAM,WAAW,8BAA8B,CAAC;AACvD,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,sBAAsB,kDAAkD,CAAC;AACtF,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AAErF,eAAO,MAAM,uBAAuB,EAAE,gBA6CrC,CAAC"}
1
+ {"version":3,"file":"google-preferences.d.ts","sourceRoot":"","sources":["../../src/common/google-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,eAAO,MAAM,YAAY,8BAA8B,CAAC;AACxD,eAAO,MAAM,WAAW,8BAA8B,CAAC;AACvD,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,sBAAsB,kDAAkD,CAAC;AACtF,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AAErF,eAAO,MAAM,uBAAuB,EAAE,gBA6CrC,CAAC"}
@@ -28,7 +28,7 @@ exports.GooglePreferencesSchema = {
28
28
  [exports.API_KEY_PREF]: {
29
29
  type: 'string',
30
30
  markdownDescription: core_1.nls.localize('theia/ai/google/apiKey/description', 'Enter an API Key of your official Google AI (Gemini) Account. **Please note:** By using this preference the GOOGLE AI API key will be stored in clear text\
31
- on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely.'),
31
+ on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely.') + core_1.LINUX_ENV_HINT,
32
32
  title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
33
33
  },
34
34
  [exports.MODELS_PREF]: {
@@ -1 +1 @@
1
- {"version":3,"file":"google-preferences.js","sourceRoot":"","sources":["../../src/common/google-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uFAA0F;AAC1F,sCAAoD;AAEvC,QAAA,YAAY,GAAG,2BAA2B,CAAC;AAC3C,QAAA,WAAW,GAAG,2BAA2B,CAAC;AAC1C,QAAA,WAAW,GAAG,uCAAuC,CAAC;AACtD,QAAA,sBAAsB,GAAG,+CAA+C,CAAC;AACzE,QAAA,wBAAwB,GAAG,4CAA4C,CAAC;AAExE,QAAA,uBAAuB,GAAqB;IACrD,UAAU,EAAE;QACR,CAAC,oBAAY,CAAC,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAClE;iHACiG,CAAC;YACtG,KAAK,EAAE,+CAAyB;SACnC;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAAE,sCAAsC,CAAC;YACvG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;YAC7D,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EACtE,kGAAkG,CAAC;YACvG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACb;QACD,CAAC,8BAAsB,CAAC,EAAE;YACtB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,wDAAwD,EAC9E,sHAAsH,CAAC;YAC3H,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;SACb;QACD,CAAC,gCAAwB,CAAC,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,qDAAqD,EAC3E;;qEAEqD,CAAC;YAC1D,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,CAAC;YACX,OAAO,EAAE,CAAC,CAAC;SACd;KACJ;CACJ,CAAC"}
1
+ {"version":3,"file":"google-preferences.js","sourceRoot":"","sources":["../../src/common/google-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uFAA0F;AAC1F,sCAAoE;AAEvD,QAAA,YAAY,GAAG,2BAA2B,CAAC;AAC3C,QAAA,WAAW,GAAG,2BAA2B,CAAC;AAC1C,QAAA,WAAW,GAAG,uCAAuC,CAAC;AACtD,QAAA,sBAAsB,GAAG,+CAA+C,CAAC;AACzE,QAAA,wBAAwB,GAAG,4CAA4C,CAAC;AAExE,QAAA,uBAAuB,GAAqB;IACrD,UAAU,EAAE;QACR,CAAC,oBAAY,CAAC,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAClE;iHACiG,CAAC,GAAG,qBAAc;YACvH,KAAK,EAAE,+CAAyB;SACnC;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAAE,sCAAsC,CAAC;YACvG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;YAC7D,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EACtE,kGAAkG,CAAC;YACvG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACb;QACD,CAAC,8BAAsB,CAAC,EAAE;YACtB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,wDAAwD,EAC9E,sHAAsH,CAAC;YAC3H,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;SACb;QACD,CAAC,gCAAwB,CAAC,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,qDAAqD,EAC3E;;qEAEqD,CAAC;YAC1D,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,CAAC;YACX,OAAO,EAAE,CAAC,CAAC;SACd;KACJ;CACJ,CAAC"}
@@ -1,10 +1,11 @@
1
- import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelStatus, LanguageModelStreamResponse, LanguageModelTextResponse, TokenUsageService, UserRequest } from '@theia/ai-core';
1
+ import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelStatus, LanguageModelStreamResponse, LanguageModelTextResponse, ReasoningApi, ReasoningSupport, UserRequest } from '@theia/ai-core';
2
2
  import { CancellationToken } from '@theia/core';
3
3
  import { GoogleGenAI, Content } from '@google/genai';
4
4
  import { GoogleLanguageModelRetrySettings } from './google-language-models-manager-impl';
5
5
  export declare const GoogleModelIdentifier: unique symbol;
6
6
  /**
7
- * Implements the Gemini language model integration for Theia
7
+ * Implements the Gemini language model integration for Theia. Reasoning-level
8
+ * translation lives in {@link googleReasoningFor}.
8
9
  */
9
10
  export declare class GoogleModel implements LanguageModel {
10
11
  readonly id: string;
@@ -13,8 +14,9 @@ export declare class GoogleModel implements LanguageModel {
13
14
  enableStreaming: boolean;
14
15
  apiKey: () => string | undefined;
15
16
  retrySettings: () => GoogleLanguageModelRetrySettings;
16
- protected readonly tokenUsageService?: TokenUsageService | undefined;
17
- constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, apiKey: () => string | undefined, retrySettings: () => GoogleLanguageModelRetrySettings, tokenUsageService?: TokenUsageService | undefined);
17
+ reasoningSupport?: ReasoningSupport | undefined;
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);
18
20
  protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>>;
19
21
  request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
20
22
  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,EAEzB,iBAAiB,EAGjB,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;AAuFzF,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAgBrE;;GAEG;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;IAC5D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;gBANxC,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,EACzC,iBAAiB,CAAC,EAAE,iBAAiB,YAAA;IAG5D,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAejF,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;IAiOvC,OAAO,CAAC,0BAA0B;cAYlB,yBAAyB,CACrC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC;IAsDrC,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;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"}
@@ -19,6 +19,7 @@ exports.GoogleModel = exports.GoogleModelIdentifier = void 0;
19
19
  const ai_core_1 = require("@theia/ai-core");
20
20
  const genai_1 = require("@google/genai");
21
21
  const promise_util_1 = require("@theia/core/lib/common/promise-util");
22
+ const google_reasoning_1 = require("./google-reasoning");
22
23
  const coreutils_1 = require("@theia/core/shared/@lumino/coreutils");
23
24
  /**
24
25
  * Converts a tool call result to the Gemini FunctionResponse format.
@@ -110,29 +111,25 @@ function toGoogleRole(message) {
110
111
  }
111
112
  }
112
113
  /**
113
- * Implements the Gemini language model integration for Theia
114
+ * Implements the Gemini language model integration for Theia. Reasoning-level
115
+ * translation lives in {@link googleReasoningFor}.
114
116
  */
115
117
  class GoogleModel {
116
- constructor(id, model, status, enableStreaming, apiKey, retrySettings, tokenUsageService) {
118
+ constructor(id, model, status, enableStreaming, apiKey, retrySettings, reasoningSupport, reasoningApi) {
117
119
  this.id = id;
118
120
  this.model = model;
119
121
  this.status = status;
120
122
  this.enableStreaming = enableStreaming;
121
123
  this.apiKey = apiKey;
122
124
  this.retrySettings = retrySettings;
123
- this.tokenUsageService = tokenUsageService;
125
+ this.reasoningSupport = reasoningSupport;
126
+ this.reasoningApi = reasoningApi;
124
127
  }
125
128
  getSettings(request) {
126
- const baseSettings = request.settings ?? {};
127
- if (request.thinkingMode?.enabled) {
128
- return {
129
- ...baseSettings,
130
- thinkingConfig: {
131
- includeThoughts: true
132
- }
133
- };
134
- }
135
- return baseSettings;
129
+ return {
130
+ ...request.settings,
131
+ ...(0, google_reasoning_1.googleReasoningFor)(request.reasoning?.level, this.reasoningApi)
132
+ };
136
133
  }
137
134
  async request(request, cancellationToken) {
138
135
  if (!request.messages?.length) {
@@ -183,7 +180,6 @@ class GoogleModel {
183
180
  const toolCallMap = {};
184
181
  const collectedParts = [];
185
182
  try {
186
- let tokenUsage = undefined;
187
183
  for await (const chunk of stream) {
188
184
  if (cancellationToken?.isCancellationRequested) {
189
185
  break;
@@ -278,23 +274,15 @@ class GoogleModel {
278
274
  else if (chunk.text) {
279
275
  yield { content: chunk.text };
280
276
  }
281
- // Remember the token usage
277
+ // Report token usage if available
282
278
  if (chunk.usageMetadata) {
283
279
  const promptTokens = chunk.usageMetadata.promptTokenCount;
284
280
  const completionTokens = chunk.usageMetadata.candidatesTokenCount;
285
- if (promptTokens && completionTokens) {
286
- tokenUsage = {
287
- inputTokens: promptTokens,
288
- outputTokens: completionTokens,
289
- requestId: request.requestId
290
- };
281
+ if (promptTokens !== undefined && completionTokens !== undefined) {
282
+ yield { input_tokens: promptTokens, output_tokens: completionTokens };
291
283
  }
292
284
  }
293
285
  }
294
- // Report token usage if available
295
- if (tokenUsage !== undefined && that.tokenUsageService && that.id) {
296
- that.tokenUsageService.recordTokenUsage(that.id, tokenUsage).catch(error => console.error('Error recording token usage:', error));
297
- }
298
286
  // Process tool calls if any exist
299
287
  const toolCalls = Object.values(toolCallMap);
300
288
  if (toolCalls.length > 0) {
@@ -403,19 +391,15 @@ class GoogleModel {
403
391
  else {
404
392
  responseText = model.text ?? '';
405
393
  }
406
- // Record token usage if available
407
- if (model.usageMetadata && this.tokenUsageService) {
394
+ const result = { text: responseText };
395
+ if (model.usageMetadata) {
408
396
  const promptTokens = model.usageMetadata.promptTokenCount;
409
397
  const completionTokens = model.usageMetadata.candidatesTokenCount;
410
- if (promptTokens && completionTokens) {
411
- await this.tokenUsageService.recordTokenUsage(this.id, {
412
- inputTokens: promptTokens,
413
- outputTokens: completionTokens,
414
- requestId: request.requestId
415
- });
398
+ if (promptTokens !== undefined && completionTokens !== undefined) {
399
+ result.usage = { input_tokens: promptTokens, output_tokens: completionTokens };
416
400
  }
417
401
  }
418
- return { text: responseText };
402
+ return result;
419
403
  }
420
404
  catch (error) {
421
405
  throw new Error(`Failed to get response from Gemini API: ${error instanceof Error ? error.message : 'Unknown error'}`);
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=google-language-model.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-language-model.spec.d.ts","sourceRoot":"","sources":["../../src/node/google-language-model.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
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_model_1 = require("./google-language-model");
20
+ const GEMINI_REASONING_SUPPORT = {
21
+ supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
22
+ defaultLevel: 'auto'
23
+ };
24
+ class TestableGoogleModel extends google_language_model_1.GoogleModel {
25
+ callGetSettings(request) {
26
+ return this.getSettings(request);
27
+ }
28
+ }
29
+ function createModel(modelId, reasoningApi) {
30
+ return new TestableGoogleModel('test-id', modelId, { status: 'ready' }, true, () => 'test-key', () => ({ maxRetriesOnErrors: 0, retryDelayOnRateLimitError: -1, retryDelayOnOtherErrors: -1 }), reasoningApi ? GEMINI_REASONING_SUPPORT : undefined, reasoningApi);
31
+ }
32
+ describe('GoogleModel reasoning translation', () => {
33
+ describe('effort API (Gemini 3 thinkingLevel)', () => {
34
+ it('maps level=medium to thinkingConfig.thinkingLevel=medium', () => {
35
+ const model = createModel('gemini-3-pro', 'effort');
36
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'medium' } });
37
+ (0, chai_1.expect)(result.thinkingConfig).to.deep.include({ thinkingLevel: 'medium', includeThoughts: true });
38
+ });
39
+ it('omits thinkingConfig entirely when level=off', () => {
40
+ const model = createModel('gemini-3-pro', 'effort');
41
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } });
42
+ (0, chai_1.expect)(result.thinkingConfig).to.equal(undefined);
43
+ });
44
+ it('omits thinkingConfig for level=auto (provider default applies)', () => {
45
+ const model = createModel('gemini-3-pro', 'effort');
46
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } });
47
+ (0, chai_1.expect)(result.thinkingConfig).to.equal(undefined);
48
+ });
49
+ });
50
+ describe('budget API (Gemini 2.5 thinkingBudget)', () => {
51
+ it('omits thinkingConfig entirely when level=off', () => {
52
+ const model = createModel('gemini-2.5-pro', 'budget');
53
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } });
54
+ (0, chai_1.expect)(result.thinkingConfig).to.equal(undefined);
55
+ });
56
+ it('maps level=auto to thinkingBudget=-1 (dynamic)', () => {
57
+ const model = createModel('gemini-2.5-pro', 'budget');
58
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } });
59
+ (0, chai_1.expect)(result.thinkingConfig).to.deep.include({ thinkingBudget: -1, includeThoughts: true });
60
+ });
61
+ it('maps level=medium to a moderate positive budget', () => {
62
+ const model = createModel('gemini-2.5-pro', 'budget');
63
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'medium' } });
64
+ const config = result.thinkingConfig;
65
+ (0, chai_1.expect)(config.thinkingBudget).to.be.greaterThan(0);
66
+ });
67
+ });
68
+ describe('non-reasoning models', () => {
69
+ it('ignores reasoning settings on gemini-1.5-flash', () => {
70
+ const model = createModel('gemini-1.5-flash', undefined);
71
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'high' } });
72
+ (0, chai_1.expect)(result.thinkingConfig).to.equal(undefined);
73
+ });
74
+ });
75
+ });
76
+ //# sourceMappingURL=google-language-model.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-language-model.spec.js","sourceRoot":"","sources":["../../src/node/google-language-model.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAE9B,mEAAsD;AAEtD,MAAM,wBAAwB,GAAqB;IAC/C,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;IACpE,YAAY,EAAE,MAAM;CACvB,CAAC;AAEF,MAAM,mBAAoB,SAAQ,mCAAW;IAClC,eAAe,CAAC,OAA6B;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACJ;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,YAA2B;IAC7D,OAAO,IAAI,mBAAmB,CAC1B,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAC7C,GAAG,EAAE,CAAC,UAAU,EAChB,GAAG,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC,EAAE,CAAC,EAC9F,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,EACnD,YAAY,CACf,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAE/C,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvF,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpF,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACtE,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACrF,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpF,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACrF,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACvD,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,CAAC,cAA4C,CAAC;YACnE,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,MAAM,KAAK,GAAG,WAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACrF,IAAA,aAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { LanguageModelRegistry, LanguageModelStatus, TokenUsageService } from '@theia/ai-core';
1
+ import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
2
2
  import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
3
3
  export interface GoogleLanguageModelRetrySettings {
4
4
  maxRetriesOnErrors: number;
@@ -9,7 +9,6 @@ export declare class GoogleLanguageModelsManagerImpl implements GoogleLanguageMo
9
9
  protected _apiKey: string | undefined;
10
10
  protected retrySettings: GoogleLanguageModelRetrySettings;
11
11
  protected readonly languageModelRegistry: LanguageModelRegistry;
12
- protected readonly tokenUsageService: TokenUsageService;
13
12
  get apiKey(): string | undefined;
14
13
  protected calculateStatus(effectiveApiKey: string | undefined): LanguageModelStatus;
15
14
  createOrUpdateLanguageModels(...modelDescriptions: GoogleModelDescription[]): Promise<void>;
@@ -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,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAG/F,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;IAGhE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,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;IA6CjG,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,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"}
@@ -61,12 +61,14 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
61
61
  enableStreaming: modelDescription.enableStreaming,
62
62
  apiKey: apiKeyProvider,
63
63
  retrySettings: retrySettingsProvider,
64
- status
64
+ status,
65
+ reasoningSupport: modelDescription.reasoningSupport,
66
+ reasoningApi: modelDescription.reasoningApi
65
67
  });
66
68
  }
67
69
  else {
68
70
  this.languageModelRegistry.addLanguageModels([
69
- new google_language_model_1.GoogleModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, apiKeyProvider, retrySettingsProvider, this.tokenUsageService)
71
+ new google_language_model_1.GoogleModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, apiKeyProvider, retrySettingsProvider, modelDescription.reasoningSupport, modelDescription.reasoningApi)
70
72
  ]);
71
73
  }
72
74
  }
@@ -97,10 +99,6 @@ tslib_1.__decorate([
97
99
  (0, inversify_1.inject)(ai_core_1.LanguageModelRegistry),
98
100
  tslib_1.__metadata("design:type", Object)
99
101
  ], GoogleLanguageModelsManagerImpl.prototype, "languageModelRegistry", void 0);
100
- tslib_1.__decorate([
101
- (0, inversify_1.inject)(ai_core_1.TokenUsageService),
102
- tslib_1.__metadata("design:type", Object)
103
- ], GoogleLanguageModelsManagerImpl.prototype, "tokenUsageService", void 0);
104
102
  exports.GoogleLanguageModelsManagerImpl = GoogleLanguageModelsManagerImpl = tslib_1.__decorate([
105
103
  (0, inversify_1.injectable)()
106
104
  ], 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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"}
@@ -0,0 +1,12 @@
1
+ import { ReasoningApi, ReasoningLevel } from '@theia/ai-core';
2
+ /**
3
+ * Translates a reasoning level to the Gemini request fragment to merge into `settings`.
4
+ * Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
5
+ * can spread it unconditionally. Per the Gemini docs `thinkingLevel` and `thinkingBudget`
6
+ * must never appear together.
7
+ *
8
+ * @param api `'effort'` for `thinkingConfig.thinkingLevel` (string enum),
9
+ * `'budget'` for `thinkingConfig.thinkingBudget` (`-1` dynamic, positive = token cap).
10
+ */
11
+ export declare function googleReasoningFor(level: ReasoningLevel | undefined, api: ReasoningApi | undefined): Record<string, unknown>;
12
+ //# sourceMappingURL=google-reasoning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-reasoning.d.ts","sourceRoot":"","sources":["../../src/node/google-reasoning.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAAE,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB5H"}
@@ -0,0 +1,48 @@
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
+ exports.googleReasoningFor = googleReasoningFor;
19
+ /**
20
+ * Translates a reasoning level to the Gemini request fragment to merge into `settings`.
21
+ * Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
22
+ * can spread it unconditionally. Per the Gemini docs `thinkingLevel` and `thinkingBudget`
23
+ * must never appear together.
24
+ *
25
+ * @param api `'effort'` for `thinkingConfig.thinkingLevel` (string enum),
26
+ * `'budget'` for `thinkingConfig.thinkingBudget` (`-1` dynamic, positive = token cap).
27
+ */
28
+ function googleReasoningFor(level, api) {
29
+ if (!level || !api || level === 'off') {
30
+ return {};
31
+ }
32
+ if (api === 'effort') {
33
+ const thinkingLevel = level === 'minimal' ? 'minimal' :
34
+ level === 'low' ? 'low' :
35
+ level === 'medium' ? 'medium' :
36
+ level === 'high' ? 'high' :
37
+ undefined; // 'auto' → omit so the provider default applies
38
+ return thinkingLevel ? { thinkingConfig: { thinkingLevel, includeThoughts: true } } : {};
39
+ }
40
+ const thinkingBudget = level === 'auto' ? -1 :
41
+ level === 'minimal' ? 1024 :
42
+ level === 'low' ? 4096 :
43
+ level === 'medium' ? 16000 :
44
+ level === 'high' ? 24576 :
45
+ -1;
46
+ return { thinkingConfig: { thinkingBudget, includeThoughts: true } };
47
+ }
48
+ //# sourceMappingURL=google-reasoning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-reasoning.js","sourceRoot":"","sources":["../../src/node/google-reasoning.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAahF,gDAqBC;AA9BD;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,KAAiC,EAAE,GAA6B;IAC/F,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnB,MAAM,aAAa,GACf,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACvB,SAAS,CAAC,CAAC,gDAAgD;QAC/E,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,CAAC;IACD,MAAM,cAAc,GAChB,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpB,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBACtB,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACzE,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/ai-google",
3
- "version": "1.71.0-next.8+8ec70800c",
3
+ "version": "1.71.0",
4
4
  "description": "Theia - Google AI Integration",
5
5
  "dependencies": {
6
- "@google/genai": "^1.30.0",
7
- "@theia/ai-core": "1.71.0-next.8+8ec70800c",
8
- "@theia/core": "1.71.0-next.8+8ec70800c"
6
+ "@google/genai": "^1.47.0",
7
+ "@theia/ai-core": "1.71.0",
8
+ "@theia/core": "1.71.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.70.0"
47
+ "@theia/ext-scripts": "1.71.0"
48
48
  },
49
49
  "nyc": {
50
50
  "extends": "../../configs/nyc.json"
51
51
  },
52
- "gitHead": "8ec70800c488b9fc44915e8896636628b7cb8636"
52
+ "gitHead": "d8a596fc99f0a8e68b466828ed162569d79e3a71"
53
53
  }
@@ -16,12 +16,33 @@
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';
19
20
  import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
20
21
  import { API_KEY_PREF, MODELS_PREF, MAX_RETRIES, RETRY_DELAY_OTHER_ERRORS, RETRY_DELAY_RATE_LIMIT } from '../common/google-preferences';
21
22
  import { PreferenceService } from '@theia/core';
22
23
 
23
24
  const GOOGLE_PROVIDER_ID = 'google';
24
25
 
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
+
25
46
  @injectable()
26
47
  export class GoogleFrontendApplicationContribution implements FrontendApplicationContribution {
27
48
 
@@ -87,12 +108,15 @@ export class GoogleFrontendApplicationContribution implements FrontendApplicatio
87
108
 
88
109
  protected createGeminiModelDescription(modelId: string): GoogleModelDescription {
89
110
  const id = `${GOOGLE_PROVIDER_ID}/${modelId}`;
111
+ const reasoningApi = reasoningApiFor(modelId);
90
112
 
91
113
  const description: GoogleModelDescription = {
92
114
  id: id,
93
115
  model: modelId,
94
116
  apiKey: true,
95
- enableStreaming: true
117
+ enableStreaming: true,
118
+ reasoningSupport: reasoningApi ? GEMINI_REASONING_SUPPORT : undefined,
119
+ reasoningApi
96
120
  };
97
121
 
98
122
  return description;
@@ -13,8 +13,11 @@
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';
17
+
16
18
  export const GOOGLE_LANGUAGE_MODELS_MANAGER_PATH = '/services/google/language-model-manager';
17
19
  export const GoogleLanguageModelsManager = Symbol('GoogleLanguageModelsManager');
20
+
18
21
  export interface GoogleModelDescription {
19
22
  /**
20
23
  * The identifier of the model which will be shown in the UI.
@@ -36,7 +39,14 @@ export interface GoogleModelDescription {
36
39
  * Maximum number of tokens to generate. Default is 4096.
37
40
  */
38
41
  maxTokens?: number;
39
-
42
+ /** When set, the UI exposes a reasoning selector and requests are translated to {@link reasoningApi}. */
43
+ reasoningSupport?: ReasoningSupport;
44
+ /**
45
+ * Which Gemini reasoning API shape to use. Required when `reasoningSupport` is set.
46
+ * - `'effort'`: `thinkingConfig.thinkingLevel` (Gemini 3+)
47
+ * - `'budget'`: `thinkingConfig.thinkingBudget` (Gemini 2.5)
48
+ */
49
+ reasoningApi?: ReasoningApi;
40
50
  }
41
51
 
42
52
  export interface GoogleLanguageModelsManager {
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { AI_CORE_PREFERENCES_TITLE } from '@theia/ai-core/lib/common/ai-core-preferences';
18
- import { nls, PreferenceSchema } from '@theia/core';
18
+ import { LINUX_ENV_HINT, nls, PreferenceSchema } from '@theia/core';
19
19
 
20
20
  export const API_KEY_PREF = 'ai-features.google.apiKey';
21
21
  export const MODELS_PREF = 'ai-features.google.models';
@@ -29,7 +29,7 @@ export const GooglePreferencesSchema: PreferenceSchema = {
29
29
  type: 'string',
30
30
  markdownDescription: nls.localize('theia/ai/google/apiKey/description',
31
31
  'Enter an API Key of your official Google AI (Gemini) Account. **Please note:** By using this preference the GOOGLE AI API key will be stored in clear text\
32
- on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely.'),
32
+ on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely.') + LINUX_ENV_HINT,
33
33
  title: AI_CORE_PREFERENCES_TITLE,
34
34
  },
35
35
  [MODELS_PREF]: {
@@ -0,0 +1,88 @@
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 { LanguageModelRequest, ReasoningApi, ReasoningSupport } from '@theia/ai-core';
19
+ import { GoogleModel } from './google-language-model';
20
+
21
+ const GEMINI_REASONING_SUPPORT: ReasoningSupport = {
22
+ supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
23
+ defaultLevel: 'auto'
24
+ };
25
+
26
+ class TestableGoogleModel extends GoogleModel {
27
+ public callGetSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>> {
28
+ return this.getSettings(request);
29
+ }
30
+ }
31
+
32
+ function createModel(modelId: string, reasoningApi?: ReasoningApi): TestableGoogleModel {
33
+ return new TestableGoogleModel(
34
+ 'test-id', modelId, { status: 'ready' }, true,
35
+ () => 'test-key',
36
+ () => ({ maxRetriesOnErrors: 0, retryDelayOnRateLimitError: -1, retryDelayOnOtherErrors: -1 }),
37
+ reasoningApi ? GEMINI_REASONING_SUPPORT : undefined,
38
+ reasoningApi
39
+ );
40
+ }
41
+
42
+ describe('GoogleModel reasoning translation', () => {
43
+
44
+ describe('effort API (Gemini 3 thinkingLevel)', () => {
45
+ it('maps level=medium to thinkingConfig.thinkingLevel=medium', () => {
46
+ const model = createModel('gemini-3-pro', 'effort');
47
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'medium' } });
48
+ expect(result.thinkingConfig).to.deep.include({ thinkingLevel: 'medium', includeThoughts: true });
49
+ });
50
+ it('omits thinkingConfig entirely when level=off', () => {
51
+ const model = createModel('gemini-3-pro', 'effort');
52
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } });
53
+ expect(result.thinkingConfig).to.equal(undefined);
54
+ });
55
+ it('omits thinkingConfig for level=auto (provider default applies)', () => {
56
+ const model = createModel('gemini-3-pro', 'effort');
57
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } });
58
+ expect(result.thinkingConfig).to.equal(undefined);
59
+ });
60
+ });
61
+
62
+ describe('budget API (Gemini 2.5 thinkingBudget)', () => {
63
+ it('omits thinkingConfig entirely when level=off', () => {
64
+ const model = createModel('gemini-2.5-pro', 'budget');
65
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } });
66
+ expect(result.thinkingConfig).to.equal(undefined);
67
+ });
68
+ it('maps level=auto to thinkingBudget=-1 (dynamic)', () => {
69
+ const model = createModel('gemini-2.5-pro', 'budget');
70
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } });
71
+ expect(result.thinkingConfig).to.deep.include({ thinkingBudget: -1, includeThoughts: true });
72
+ });
73
+ it('maps level=medium to a moderate positive budget', () => {
74
+ const model = createModel('gemini-2.5-pro', 'budget');
75
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'medium' } });
76
+ const config = result.thinkingConfig as { thinkingBudget: number };
77
+ expect(config.thinkingBudget).to.be.greaterThan(0);
78
+ });
79
+ });
80
+
81
+ describe('non-reasoning models', () => {
82
+ it('ignores reasoning settings on gemini-1.5-flash', () => {
83
+ const model = createModel('gemini-1.5-flash', undefined);
84
+ const result = model.callGetSettings({ messages: [], reasoning: { level: 'high' } });
85
+ expect(result.thinkingConfig).to.equal(undefined);
86
+ });
87
+ });
88
+ });
@@ -24,8 +24,8 @@ import {
24
24
  LanguageModelStreamResponse,
25
25
  LanguageModelStreamResponsePart,
26
26
  LanguageModelTextResponse,
27
- TokenUsageParams,
28
- TokenUsageService,
27
+ ReasoningApi,
28
+ ReasoningSupport,
29
29
  ToolCallResult,
30
30
  ToolInvocationContext,
31
31
  UserRequest
@@ -34,6 +34,7 @@ import { CancellationToken } from '@theia/core';
34
34
  import { GoogleGenAI, FunctionCallingConfigMode, FunctionDeclaration, Content, Schema, Part, Modality, FunctionResponse, ToolConfig } from '@google/genai';
35
35
  import { wait } from '@theia/core/lib/common/promise-util';
36
36
  import { GoogleLanguageModelRetrySettings } from './google-language-models-manager-impl';
37
+ import { googleReasoningFor } from './google-reasoning';
37
38
  import { UUID } from '@theia/core/shared/@lumino/coreutils';
38
39
 
39
40
  interface ToolCallback {
@@ -137,7 +138,8 @@ function toGoogleRole(message: LanguageModelMessage): 'user' | 'model' {
137
138
  }
138
139
 
139
140
  /**
140
- * Implements the Gemini language model integration for Theia
141
+ * Implements the Gemini language model integration for Theia. Reasoning-level
142
+ * translation lives in {@link googleReasoningFor}.
141
143
  */
142
144
  export class GoogleModel implements LanguageModel {
143
145
 
@@ -148,22 +150,15 @@ export class GoogleModel implements LanguageModel {
148
150
  public enableStreaming: boolean,
149
151
  public apiKey: () => string | undefined,
150
152
  public retrySettings: () => GoogleLanguageModelRetrySettings,
151
- protected readonly tokenUsageService?: TokenUsageService
153
+ public reasoningSupport?: ReasoningSupport,
154
+ public reasoningApi?: ReasoningApi
152
155
  ) { }
153
156
 
154
157
  protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>> {
155
- const baseSettings = request.settings ?? {};
156
-
157
- if (request.thinkingMode?.enabled) {
158
- return {
159
- ...baseSettings,
160
- thinkingConfig: {
161
- includeThoughts: true
162
- }
163
- };
164
- }
165
-
166
- return baseSettings;
158
+ return {
159
+ ...request.settings,
160
+ ...googleReasoningFor(request.reasoning?.level, this.reasoningApi)
161
+ };
167
162
  }
168
163
 
169
164
  async request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
@@ -227,7 +222,6 @@ export class GoogleModel implements LanguageModel {
227
222
  const toolCallMap: { [key: string]: ToolCallback } = {};
228
223
  const collectedParts: Part[] = [];
229
224
  try {
230
- let tokenUsage: TokenUsageParams | undefined = undefined;
231
225
  for await (const chunk of stream) {
232
226
  if (cancellationToken?.isCancellationRequested) {
233
227
  break;
@@ -320,25 +314,16 @@ export class GoogleModel implements LanguageModel {
320
314
  yield { content: chunk.text };
321
315
  }
322
316
 
323
- // Remember the token usage
317
+ // Report token usage if available
324
318
  if (chunk.usageMetadata) {
325
319
  const promptTokens = chunk.usageMetadata.promptTokenCount;
326
320
  const completionTokens = chunk.usageMetadata.candidatesTokenCount;
327
- if (promptTokens && completionTokens) {
328
- tokenUsage = {
329
- inputTokens: promptTokens,
330
- outputTokens: completionTokens,
331
- requestId: request.requestId
332
- };
321
+ if (promptTokens !== undefined && completionTokens !== undefined) {
322
+ yield { input_tokens: promptTokens, output_tokens: completionTokens };
333
323
  }
334
324
  }
335
325
  }
336
326
 
337
- // Report token usage if available
338
- if (tokenUsage !== undefined && that.tokenUsageService && that.id) {
339
- that.tokenUsageService.recordTokenUsage(that.id, tokenUsage).catch(error => console.error('Error recording token usage:', error));
340
- }
341
-
342
327
  // Process tool calls if any exist
343
328
  const toolCalls = Object.values(toolCallMap);
344
329
  if (toolCalls.length > 0) {
@@ -464,19 +449,15 @@ export class GoogleModel implements LanguageModel {
464
449
  responseText = model.text ?? '';
465
450
  }
466
451
 
467
- // Record token usage if available
468
- if (model.usageMetadata && this.tokenUsageService) {
452
+ const result: LanguageModelTextResponse = { text: responseText };
453
+ if (model.usageMetadata) {
469
454
  const promptTokens = model.usageMetadata.promptTokenCount;
470
455
  const completionTokens = model.usageMetadata.candidatesTokenCount;
471
- if (promptTokens && completionTokens) {
472
- await this.tokenUsageService.recordTokenUsage(this.id, {
473
- inputTokens: promptTokens,
474
- outputTokens: completionTokens,
475
- requestId: request.requestId
476
- });
456
+ if (promptTokens !== undefined && completionTokens !== undefined) {
457
+ result.usage = { input_tokens: promptTokens, output_tokens: completionTokens };
477
458
  }
478
459
  }
479
- return { text: responseText };
460
+ return result;
480
461
  } catch (error) {
481
462
  throw new Error(`Failed to get response from Gemini API: ${error instanceof Error ? error.message : 'Unknown error'}`);
482
463
  }
@@ -14,7 +14,7 @@
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, TokenUsageService } from '@theia/ai-core';
17
+ import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
19
  import { GoogleModel } from './google-language-model';
20
20
  import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
@@ -37,9 +37,6 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
37
37
  @inject(LanguageModelRegistry)
38
38
  protected readonly languageModelRegistry: LanguageModelRegistry;
39
39
 
40
- @inject(TokenUsageService)
41
- protected readonly tokenUsageService: TokenUsageService;
42
-
43
40
  get apiKey(): string | undefined {
44
41
  return this._apiKey ?? process.env.GOOGLE_API_KEY ?? process.env.GEMINI_API_KEY;
45
42
  }
@@ -77,7 +74,9 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
77
74
  enableStreaming: modelDescription.enableStreaming,
78
75
  apiKey: apiKeyProvider,
79
76
  retrySettings: retrySettingsProvider,
80
- status
77
+ status,
78
+ reasoningSupport: modelDescription.reasoningSupport,
79
+ reasoningApi: modelDescription.reasoningApi
81
80
  });
82
81
  } else {
83
82
  this.languageModelRegistry.addLanguageModels([
@@ -88,7 +87,8 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
88
87
  modelDescription.enableStreaming,
89
88
  apiKeyProvider,
90
89
  retrySettingsProvider,
91
- this.tokenUsageService
90
+ modelDescription.reasoningSupport,
91
+ modelDescription.reasoningApi
92
92
  )
93
93
  ]);
94
94
  }
@@ -0,0 +1,49 @@
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 { ReasoningApi, ReasoningLevel } from '@theia/ai-core';
18
+
19
+ /**
20
+ * Translates a reasoning level to the Gemini request fragment to merge into `settings`.
21
+ * Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
22
+ * can spread it unconditionally. Per the Gemini docs `thinkingLevel` and `thinkingBudget`
23
+ * must never appear together.
24
+ *
25
+ * @param api `'effort'` for `thinkingConfig.thinkingLevel` (string enum),
26
+ * `'budget'` for `thinkingConfig.thinkingBudget` (`-1` dynamic, positive = token cap).
27
+ */
28
+ export function googleReasoningFor(level: ReasoningLevel | undefined, api: ReasoningApi | undefined): Record<string, unknown> {
29
+ if (!level || !api || level === 'off') {
30
+ return {};
31
+ }
32
+ if (api === 'effort') {
33
+ const thinkingLevel =
34
+ level === 'minimal' ? 'minimal' :
35
+ level === 'low' ? 'low' :
36
+ level === 'medium' ? 'medium' :
37
+ level === 'high' ? 'high' :
38
+ undefined; // 'auto' → omit so the provider default applies
39
+ return thinkingLevel ? { thinkingConfig: { thinkingLevel, includeThoughts: true } } : {};
40
+ }
41
+ const thinkingBudget =
42
+ level === 'auto' ? -1 :
43
+ level === 'minimal' ? 1024 :
44
+ level === 'low' ? 4096 :
45
+ level === 'medium' ? 16000 :
46
+ level === 'high' ? 24576 :
47
+ -1;
48
+ return { thinkingConfig: { thinkingBudget, includeThoughts: true } };
49
+ }