@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.
- package/lib/browser/google-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/google-frontend-application-contribution.js +21 -1
- package/lib/browser/google-frontend-application-contribution.js.map +1 -1
- package/lib/common/google-language-models-manager.d.ts +9 -0
- package/lib/common/google-language-models-manager.d.ts.map +1 -1
- package/lib/common/google-language-models-manager.js +0 -15
- package/lib/common/google-language-models-manager.js.map +1 -1
- package/lib/common/google-preferences.d.ts.map +1 -1
- package/lib/common/google-preferences.js +1 -1
- package/lib/common/google-preferences.js.map +1 -1
- package/lib/node/google-language-model.d.ts +6 -4
- package/lib/node/google-language-model.d.ts.map +1 -1
- package/lib/node/google-language-model.js +18 -34
- package/lib/node/google-language-model.js.map +1 -1
- package/lib/node/google-language-model.spec.d.ts +2 -0
- package/lib/node/google-language-model.spec.d.ts.map +1 -0
- package/lib/node/google-language-model.spec.js +76 -0
- package/lib/node/google-language-model.spec.js.map +1 -0
- package/lib/node/google-language-models-manager-impl.d.ts +1 -2
- package/lib/node/google-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/google-language-models-manager-impl.js +4 -6
- package/lib/node/google-language-models-manager-impl.js.map +1 -1
- package/lib/node/google-reasoning.d.ts +12 -0
- package/lib/node/google-reasoning.d.ts.map +1 -0
- package/lib/node/google-reasoning.js +48 -0
- package/lib/node/google-reasoning.js.map +1 -0
- package/package.json +6 -6
- package/src/browser/google-frontend-application-contribution.ts +25 -1
- package/src/common/google-language-models-manager.ts +11 -1
- package/src/common/google-preferences.ts +2 -2
- package/src/node/google-language-model.spec.ts +88 -0
- package/src/node/google-language-model.ts +19 -38
- package/src/node/google-language-models-manager-impl.ts +6 -6
- 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;
|
|
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":";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;;;;AAGhF,4DAAkE;
|
|
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;
|
|
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":";;;
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
17
|
-
|
|
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,
|
|
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,
|
|
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.
|
|
125
|
+
this.reasoningSupport = reasoningSupport;
|
|
126
|
+
this.reasoningApi = reasoningApi;
|
|
124
127
|
}
|
|
125
128
|
getSettings(request) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
407
|
-
if (model.usageMetadata
|
|
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
|
-
|
|
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
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModelRegistry, LanguageModelStatus
|
|
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,
|
|
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,
|
|
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":";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,
|
|
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
|
|
3
|
+
"version": "1.71.0",
|
|
4
4
|
"description": "Theia - Google AI Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@google/genai": "^1.
|
|
7
|
-
"@theia/ai-core": "1.71.0
|
|
8
|
-
"@theia/core": "1.71.0
|
|
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.
|
|
47
|
+
"@theia/ext-scripts": "1.71.0"
|
|
48
48
|
},
|
|
49
49
|
"nyc": {
|
|
50
50
|
"extends": "../../configs/nyc.json"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
153
|
+
public reasoningSupport?: ReasoningSupport,
|
|
154
|
+
public reasoningApi?: ReasoningApi
|
|
152
155
|
) { }
|
|
153
156
|
|
|
154
157
|
protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>> {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
468
|
-
if (model.usageMetadata
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
+
}
|