opencode-gemini-business 1.0.0 → 2.0.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,64 @@
1
+ ## [2.0.1](https://github.com/izzzzzi/opencode-gemini-business/compare/v2.0.0...v2.0.1) (2026-02-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * correct widgetStreamAssist request/response format ([4ce720b](https://github.com/izzzzzi/opencode-gemini-business/commit/4ce720b3a51c5812bb611877b763540cadc9c117))
7
+
8
+ # [2.0.0](https://github.com/izzzzzi/opencode-gemini-business/compare/v1.0.0...v2.0.0) (2026-02-15)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * implement proper JWT authentication for Gemini Business API ([a24999a](https://github.com/izzzzzi/opencode-gemini-business/commit/a24999ac93aeb113d5ac0b788ae289e86009c66e))
14
+
15
+
16
+ ### BREAKING CHANGES
17
+
18
+ * - Complete rewrite of authentication flow based on business-gemini-pool
19
+ - Now creates JWT tokens from xsrfToken and keyId (HMAC-SHA256)
20
+ - Fixed cookie header case sensitivity (__Secure-C_SES, __Host-C_OSES)
21
+ - Fixed session creation with correct body format
22
+
23
+ Changes:
24
+ - Add crypto import for HMAC JWT signing
25
+ - Implement createJWT() method for proper JWT token generation
26
+ - Rename getXSRFToken() to getJWT() to reflect actual purpose
27
+ - Update createSession() with correct body structure:
28
+ - configId (team_id)
29
+ - additionalParams with token placeholder
30
+ - createSessionRequest with session name/displayName
31
+ - Use Authorization Bearer header instead of X-XSRF-Token
32
+ - Fix XSRF endpoint to use GET with ?csesidx parameter
33
+ - Handle XSS protection prefix )]}' in responses
34
+
35
+ Documentation:
36
+ - Update README examples with all supported models
37
+ - Add comprehensive model-specific usage examples
38
+ - Show configuration for gemini-pro, gemini-flash, gemini-2-pro, etc.
39
+ - Update both English and Russian documentation
40
+
41
+ Tested and working with real Gemini Business account! ✅
42
+
43
+ Based on: https://github.com/ddcat666/business-gemini-pool
44
+
45
+ Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
46
+
47
+ # 1.0.0 (2026-02-15)
48
+
49
+
50
+ ### Bug Fixes
51
+
52
+ * add package-lock.json and fix CLI module loading ([98cca46](https://github.com/izzzzzi/opencode-gemini-business/commit/98cca46b6cf0516db3a5abfca1f65aec23033f4c))
53
+ * allow CI to pass with no tests ([3948e26](https://github.com/izzzzzi/opencode-gemini-business/commit/3948e264b7d924a9e6495a3c4c0c305606e72282))
54
+ * configure npm registry in CI workflow ([a82d1d7](https://github.com/izzzzzi/opencode-gemini-business/commit/a82d1d794eee3589a446bc829ff7b702a1ec8c56))
55
+ * update release workflow to match opencode-hashline pattern ([e1ef4fa](https://github.com/izzzzzi/opencode-gemini-business/commit/e1ef4fa50186469dd7190c9f5f66255e89fb05b5))
56
+
57
+
58
+ ### Features
59
+
60
+ * initial release of opencode-gemini-business plugin ([b24c07e](https://github.com/izzzzzi/opencode-gemini-business/commit/b24c07eb6ec407dd16d8127d062ad69b1aca8fd7))
61
+
1
62
  # Changelog
2
63
 
3
64
  All notable changes to this project will be documented in this file.
package/README.md CHANGED
@@ -60,12 +60,57 @@ Add to `~/.config/opencode/opencode.json`:
60
60
 
61
61
  ```json
62
62
  {
63
- "plugins": ["opencode-gemini-business"],
64
- "models": {
63
+ "$schema": "https://opencode.ai/config.json",
64
+ "plugin": ["opencode-gemini-business@latest"],
65
+ "provider": {
65
66
  "gemini-business": {
66
- "provider": "gemini-business",
67
- "model": "gemini-2.5-pro",
68
- "rotation_strategy": "round-robin"
67
+ "models": {
68
+ "gemini-2.5-pro": {
69
+ "name": "Gemini 2.5 Pro (Business)",
70
+ "limit": { "context": 1048576, "output": 32768 },
71
+ "modalities": { "input": ["text"], "output": ["text"] }
72
+ },
73
+ "gemini-2.5-flash": {
74
+ "name": "Gemini 2.5 Flash (Business)",
75
+ "limit": { "context": 1048576, "output": 8192 },
76
+ "modalities": { "input": ["text"], "output": ["text"] }
77
+ },
78
+ "gemini-2.0-pro": {
79
+ "name": "Gemini 2.0 Pro (Business)",
80
+ "limit": { "context": 2097152, "output": 32768 },
81
+ "modalities": { "input": ["text"], "output": ["text"] }
82
+ },
83
+ "gemini-1.5-pro": {
84
+ "name": "Gemini 1.5 Pro (Business)",
85
+ "limit": { "context": 2097152, "output": 8192 },
86
+ "modalities": { "input": ["text"], "output": ["text"] }
87
+ },
88
+ "gemini-1.5-flash": {
89
+ "name": "Gemini 1.5 Flash (Business)",
90
+ "limit": { "context": 1048576, "output": 8192 },
91
+ "modalities": { "input": ["text"], "output": ["text"] }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ ```
98
+
99
+ **Or use short aliases:**
100
+
101
+ ```json
102
+ {
103
+ "$schema": "https://opencode.ai/config.json",
104
+ "plugin": ["opencode-gemini-business@latest"],
105
+ "provider": {
106
+ "gemini-business": {
107
+ "models": {
108
+ "gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
109
+ "gemini-2.5-flash": { "name": "Gemini 2.5 Flash" },
110
+ "gemini-2.0-pro": { "name": "Gemini 2.0 Pro" },
111
+ "gemini-1.5-pro": { "name": "Gemini 1.5 Pro" },
112
+ "gemini-1.5-flash": { "name": "Gemini 1.5 Flash" }
113
+ }
69
114
  }
70
115
  }
71
116
  }
@@ -145,22 +190,41 @@ opencode-gemini-business add-account
145
190
  ### Basic Usage
146
191
 
147
192
  ```bash
148
- # Use with specific model
149
- opencode run "Write a hello world in Python" --model=gemini-business
193
+ # Use Pro model (best quality)
194
+ opencode run "Analyze this codebase architecture" --model=gemini-pro
150
195
 
151
- # Set as default
152
- export OPENCODE_MODEL=gemini-business
153
- opencode run "Your task here"
196
+ # Use Flash model (fastest)
197
+ opencode run "Fix this syntax error" --model=gemini-flash
198
+
199
+ # Use 2.0 Pro (largest context - 2M tokens)
200
+ opencode run "Summarize these 100 files" --model=gemini-2-pro
154
201
  ```
155
202
 
156
203
  ### Model-Specific Usage
157
204
 
158
205
  ```bash
159
- # Use Pro model for complex tasks
160
- opencode run "Analyze this codebase architecture" --model=gemini-pro
206
+ # Complex reasoning tasks gemini-2.5-pro
207
+ opencode run "Design microservices architecture" --model=gemini-pro
161
208
 
162
- # Use Flash model for quick tasks
163
- opencode run "Fix this syntax error" --model=gemini-flash
209
+ # Quick simple tasks gemini-2.5-flash
210
+ opencode run "Write hello world" --model=gemini-flash
211
+
212
+ # Massive context → gemini-2.0-pro (2M tokens)
213
+ opencode run "Analyze entire codebase" --model=gemini-2-pro
214
+
215
+ # Production workloads → gemini-1.5-pro
216
+ opencode run "Review this PR" --model=gemini-1.5-pro
217
+
218
+ # Cost-effective → gemini-1.5-flash
219
+ opencode run "Generate tests" --model=gemini-1.5-flash
220
+ ```
221
+
222
+ ### Set Default Model
223
+
224
+ ```bash
225
+ # Set your preferred model as default
226
+ export OPENCODE_MODEL=gemini-pro
227
+ opencode run "Your task here"
164
228
  ```
165
229
 
166
230
  ### 🛠️ Account Management
@@ -191,11 +255,18 @@ opencode-gemini-business help
191
255
 
192
256
  ```json
193
257
  {
194
- "models": {
258
+ "$schema": "https://opencode.ai/config.json",
259
+ "plugin": ["opencode-gemini-business@latest"],
260
+ "provider": {
195
261
  "gemini-business": {
196
- "provider": "gemini-business",
197
- "model": "gemini-2.5-pro",
198
- "rotation_strategy": "least-used" // ← Change here
262
+ "rotation_strategy": "least-used", // ← Change here
263
+ "models": {
264
+ "gemini-2.5-pro": {
265
+ "name": "Gemini 2.5 Pro (Business)",
266
+ "limit": { "context": 1048576, "output": 32768 },
267
+ "modalities": { "input": ["text"], "output": ["text"] }
268
+ }
269
+ }
199
270
  }
200
271
  }
201
272
  }
package/README.ru.md CHANGED
@@ -58,12 +58,57 @@ npx opencode-gemini-business@latest
58
58
 
59
59
  ```json
60
60
  {
61
- "plugins": ["opencode-gemini-business"],
62
- "models": {
61
+ "$schema": "https://opencode.ai/config.json",
62
+ "plugin": ["opencode-gemini-business@latest"],
63
+ "provider": {
63
64
  "gemini-business": {
64
- "provider": "gemini-business",
65
- "model": "gemini-2.5-pro",
66
- "rotation_strategy": "round-robin"
65
+ "models": {
66
+ "gemini-2.5-pro": {
67
+ "name": "Gemini 2.5 Pro (Business)",
68
+ "limit": { "context": 1048576, "output": 32768 },
69
+ "modalities": { "input": ["text"], "output": ["text"] }
70
+ },
71
+ "gemini-2.5-flash": {
72
+ "name": "Gemini 2.5 Flash (Business)",
73
+ "limit": { "context": 1048576, "output": 8192 },
74
+ "modalities": { "input": ["text"], "output": ["text"] }
75
+ },
76
+ "gemini-2.0-pro": {
77
+ "name": "Gemini 2.0 Pro (Business)",
78
+ "limit": { "context": 2097152, "output": 32768 },
79
+ "modalities": { "input": ["text"], "output": ["text"] }
80
+ },
81
+ "gemini-1.5-pro": {
82
+ "name": "Gemini 1.5 Pro (Business)",
83
+ "limit": { "context": 2097152, "output": 8192 },
84
+ "modalities": { "input": ["text"], "output": ["text"] }
85
+ },
86
+ "gemini-1.5-flash": {
87
+ "name": "Gemini 1.5 Flash (Business)",
88
+ "limit": { "context": 1048576, "output": 8192 },
89
+ "modalities": { "input": ["text"], "output": ["text"] }
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ **Или используйте короткие алиасы:**
98
+
99
+ ```json
100
+ {
101
+ "$schema": "https://opencode.ai/config.json",
102
+ "plugin": ["opencode-gemini-business@latest"],
103
+ "provider": {
104
+ "gemini-business": {
105
+ "models": {
106
+ "gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
107
+ "gemini-2.5-flash": { "name": "Gemini 2.5 Flash" },
108
+ "gemini-2.0-pro": { "name": "Gemini 2.0 Pro" },
109
+ "gemini-1.5-pro": { "name": "Gemini 1.5 Pro" },
110
+ "gemini-1.5-flash": { "name": "Gemini 1.5 Flash" }
111
+ }
67
112
  }
68
113
  }
69
114
  }
@@ -154,22 +199,41 @@ opencode-gemini-business add-account
154
199
  ### Базовое использование
155
200
 
156
201
  ```bash
157
- # Использовать с конкретной моделью
158
- opencode run "Напиши hello world на Python" --model=gemini-business
202
+ # Используй Pro (лучшее качество)
203
+ opencode run "Проанализируй архитектуру проекта" --model=gemini-pro
159
204
 
160
- # Установить по умолчанию
161
- export OPENCODE_MODEL=gemini-business
162
- opencode run "Ваша задача здесь"
205
+ # Используй Flash (самая быстрая)
206
+ opencode run "Исправь синтаксическую ошибку" --model=gemini-flash
207
+
208
+ # Используй 2.0 Pro (огромный контекст - 2M токенов)
209
+ opencode run "Суммируй эти 100 файлов" --model=gemini-2-pro
163
210
  ```
164
211
 
165
212
  ### Использование конкретных моделей
166
213
 
167
214
  ```bash
168
- # Использовать Pro для сложных задач
169
- opencode run "Проанализируй архитектуру этого проекта" --model=gemini-pro
215
+ # Сложные задачи gemini-2.5-pro
216
+ opencode run "Спроектируй микросервисную архитектуру" --model=gemini-pro
217
+
218
+ # Быстрые простые задачи → gemini-2.5-flash
219
+ opencode run "Напиши hello world" --model=gemini-flash
220
+
221
+ # Массивный контекст → gemini-2.0-pro (2M токенов)
222
+ opencode run "Проанализируй весь codebase" --model=gemini-2-pro
223
+
224
+ # Производственные нагрузки → gemini-1.5-pro
225
+ opencode run "Ревью этого PR" --model=gemini-1.5-pro
170
226
 
171
- # Использовать Flash для быстрых задач
172
- opencode run "Исправь эту синтаксическую ошибку" --model=gemini-flash
227
+ # Экономичная gemini-1.5-flash
228
+ opencode run "Сгенерируй тесты" --model=gemini-1.5-flash
229
+ ```
230
+
231
+ ### Установить модель по умолчанию
232
+
233
+ ```bash
234
+ # Установи предпочитаемую модель по умолчанию
235
+ export OPENCODE_MODEL=gemini-pro
236
+ opencode run "Твоя задача здесь"
173
237
  ```
174
238
 
175
239
  ### 🛠️ Управление аккаунтами
@@ -200,11 +264,18 @@ opencode-gemini-business help
200
264
 
201
265
  ```json
202
266
  {
203
- "models": {
267
+ "$schema": "https://opencode.ai/config.json",
268
+ "plugin": ["opencode-gemini-business@latest"],
269
+ "provider": {
204
270
  "gemini-business": {
205
- "provider": "gemini-business",
206
- "model": "gemini-2.5-pro",
207
- "rotation_strategy": "least-used" // ← Измените здесь
271
+ "rotation_strategy": "least-used", // ← Измените здесь
272
+ "models": {
273
+ "gemini-2.5-pro": {
274
+ "name": "Gemini 2.5 Pro (Business)",
275
+ "limit": { "context": 1048576, "output": 32768 },
276
+ "modalities": { "input": ["text"], "output": ["text"] }
277
+ }
278
+ }
208
279
  }
209
280
  }
210
281
  }
@@ -11,10 +11,14 @@ export declare class GeminiBusinessAPI {
11
11
  private account;
12
12
  constructor(account: GeminiBusinessAccount);
13
13
  /**
14
- * Get XSRF token from business.gemini.google
15
- * Tokens are cached for 55 minutes
14
+ * Create JWT token from xsrfToken and keyId
16
15
  */
17
- private getXSRFToken;
16
+ private createJWT;
17
+ /**
18
+ * Get JWT token (created from XSRF token)
19
+ * Tokens are cached for 5 minutes
20
+ */
21
+ private getJWT;
18
22
  /**
19
23
  * Create session with widgetCreateSession
20
24
  * Sessions are cached for 50 minutes
@@ -37,9 +41,13 @@ export declare class GeminiBusinessAPI {
37
41
  */
38
42
  private convertToGeminiFormat;
39
43
  /**
40
- * Build prompt string from OpenAI messages array
44
+ * Build query parts from OpenAI messages array
45
+ */
46
+ private buildQueryParts;
47
+ /**
48
+ * Map OpenAI model names to Gemini internal model IDs
41
49
  */
42
- private buildPromptFromMessages;
50
+ private mapModelId;
43
51
  /**
44
52
  * Convert Gemini Business format to OpenAI format
45
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-business-api.d.ts","sourceRoot":"","sources":["../../src/gemini-business-api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAQpB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,EAAE,qBAAqB;IAI1C;;;OAGG;YACW,YAAY;IAoC1B;;;OAGG;YACW,aAAa;IA2C3B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAsC1E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;YACY,oBAAoB;IAsDnC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBlE;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAY9B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAQtC"}
1
+ {"version":3,"file":"gemini-business-api.d.ts","sourceRoot":"","sources":["../../src/gemini-business-api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAQpB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,EAAE,qBAAqB;IAI1C;;OAEG;IACH,OAAO,CAAC,SAAS;IAqCjB;;;OAGG;YACW,MAAM;IA6CpB;;;OAGG;YACW,aAAa;IAsD3B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAsC1E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0C7B;;OAEG;YACY,oBAAoB;IAsDnC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBlE;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAY9B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAQtC"}
@@ -7,6 +7,7 @@
7
7
  * - https://biz-discoveryengine.googleapis.com/v1alpha/locations/global/widgetStreamAssist (chat)
8
8
  */
9
9
  import fetch from 'node-fetch';
10
+ import { createHmac } from 'crypto';
10
11
  // Gemini Business API Endpoints
11
12
  const BASE_URL = 'https://biz-discoveryengine.googleapis.com/v1alpha/locations/global';
12
13
  const CREATE_SESSION_URL = `${BASE_URL}/widgetCreateSession`;
@@ -18,38 +19,75 @@ export class GeminiBusinessAPI {
18
19
  this.account = account;
19
20
  }
20
21
  /**
21
- * Get XSRF token from business.gemini.google
22
- * Tokens are cached for 55 minutes
22
+ * Create JWT token from xsrfToken and keyId
23
23
  */
24
- async getXSRFToken() {
25
- // Check if cached token is still valid
24
+ createJWT(xsrfToken, keyId) {
25
+ const now = Math.floor(Date.now() / 1000);
26
+ const header = {
27
+ alg: 'HS256',
28
+ typ: 'JWT',
29
+ kid: keyId,
30
+ };
31
+ const payload = {
32
+ iss: 'https://business.gemini.google',
33
+ aud: 'https://biz-discoveryengine.googleapis.com',
34
+ sub: `csesidx/${this.account.csesidx}`,
35
+ iat: now,
36
+ exp: now + 300, // 5 minutes
37
+ nbf: now,
38
+ };
39
+ // Base64url encode
40
+ const base64url = (str) => Buffer.from(str).toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
41
+ const headerB64 = base64url(JSON.stringify(header));
42
+ const payloadB64 = base64url(JSON.stringify(payload));
43
+ const message = `${headerB64}.${payloadB64}`;
44
+ // Decode xsrfToken to get key bytes
45
+ const padding = '='.repeat((4 - (xsrfToken.length % 4)) % 4);
46
+ const keyBytes = Buffer.from(xsrfToken + padding, 'base64url');
47
+ // Create HMAC signature
48
+ const signature = createHmac('sha256', keyBytes).update(message).digest();
49
+ const signatureB64 = signature.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
50
+ return `${message}.${signatureB64}`;
51
+ }
52
+ /**
53
+ * Get JWT token (created from XSRF token)
54
+ * Tokens are cached for 5 minutes
55
+ */
56
+ async getJWT() {
57
+ // Check if cached JWT is still valid
26
58
  if (this.account.xsrf_token && this.account.xsrf_expires) {
27
59
  if (Date.now() < this.account.xsrf_expires) {
28
- return this.account.xsrf_token;
60
+ return this.account.xsrf_token; // Actually stores JWT
29
61
  }
30
62
  }
31
63
  try {
32
- const response = await fetch(GETOXSRF_URL, {
33
- method: 'POST',
64
+ const url = `${GETOXSRF_URL}?csesidx=${this.account.csesidx}`;
65
+ const response = await fetch(url, {
66
+ method: 'GET',
34
67
  headers: {
35
68
  'Cookie': this.buildCookieHeader(),
36
69
  'User-Agent': this.getUserAgent(),
37
- 'Content-Type': 'application/json',
38
70
  },
39
- body: JSON.stringify({}),
40
71
  });
41
72
  if (!response.ok) {
42
73
  const errorText = await response.text();
43
74
  throw new Error(`Failed to get XSRF token: ${response.status} ${response.statusText}\n${errorText}`);
44
75
  }
45
- const data = await response.json();
46
- // Cache token for 55 minutes
47
- this.account.xsrf_token = data.token;
48
- this.account.xsrf_expires = Date.now() + (55 * 60 * 1000);
49
- return data.token;
76
+ let text = await response.text();
77
+ // Remove XSS protection prefix )]}'
78
+ if (text.startsWith(")]}'\n")) {
79
+ text = text.substring(5);
80
+ }
81
+ const data = JSON.parse(text);
82
+ // Create JWT from xsrfToken and keyId
83
+ const jwt = this.createJWT(data.xsrfToken, data.keyId);
84
+ // Cache JWT for 5 minutes (JWT expires in 5 minutes)
85
+ this.account.xsrf_token = jwt; // Store JWT in xsrf_token field
86
+ this.account.xsrf_expires = Date.now() + (4.5 * 60 * 1000); // 4.5 minutes to be safe
87
+ return jwt;
50
88
  }
51
89
  catch (error) {
52
- throw new Error(`XSRF token retrieval failed: ${error}`);
90
+ throw new Error(`JWT retrieval failed: ${error}`);
53
91
  }
54
92
  }
55
93
  /**
@@ -64,30 +102,39 @@ export class GeminiBusinessAPI {
64
102
  }
65
103
  }
66
104
  try {
67
- const xsrfToken = await this.getXSRFToken();
105
+ const jwt = await this.getJWT();
106
+ // Generate random session ID
107
+ const sessionId = Math.random().toString(36).substring(2, 14);
108
+ const body = {
109
+ configId: this.account.team_id,
110
+ additionalParams: { token: '-' },
111
+ createSessionRequest: {
112
+ session: {
113
+ name: sessionId,
114
+ displayName: sessionId,
115
+ },
116
+ },
117
+ };
68
118
  const response = await fetch(CREATE_SESSION_URL, {
69
119
  method: 'POST',
70
120
  headers: {
71
121
  'Content-Type': 'application/json',
72
- 'Cookie': this.buildCookieHeader(),
73
- 'X-Goog-Team-Id': this.account.team_id,
74
- 'X-XSRF-Token': xsrfToken,
122
+ 'Authorization': `Bearer ${jwt}`,
75
123
  'User-Agent': this.getUserAgent(),
124
+ 'Origin': 'https://business.gemini.google',
125
+ 'Referer': 'https://business.gemini.google/',
76
126
  },
77
- body: JSON.stringify({
78
- team_id: this.account.team_id,
79
- csesidx: this.account.csesidx,
80
- }),
127
+ body: JSON.stringify(body),
81
128
  });
82
129
  if (!response.ok) {
83
130
  const errorText = await response.text();
84
131
  throw new Error(`Failed to create session: ${response.status} ${response.statusText}\n${errorText}`);
85
132
  }
86
- const data = await response.json();
133
+ const data = (await response.json());
87
134
  // Cache session for 50 minutes
88
- this.account.session_id = data.session_id;
135
+ this.account.session_id = data.session.name;
89
136
  this.account.session_expires = Date.now() + (50 * 60 * 1000);
90
- return data.session_id;
137
+ return data.session.name;
91
138
  }
92
139
  catch (error) {
93
140
  throw new Error(`Session creation failed: ${error}`);
@@ -99,16 +146,16 @@ export class GeminiBusinessAPI {
99
146
  async chatCompletion(request) {
100
147
  try {
101
148
  const sessionId = await this.createSession();
102
- const xsrfToken = await this.getXSRFToken();
149
+ const xsrfToken = await this.getJWT();
103
150
  // Convert OpenAI format to Gemini Business format
104
151
  const geminiRequest = this.convertToGeminiFormat(request, sessionId);
105
152
  const response = await fetch(STREAM_ASSIST_URL, {
106
153
  method: 'POST',
107
154
  headers: {
108
155
  'Content-Type': 'application/json',
109
- 'Cookie': this.buildCookieHeader(),
110
- 'X-Goog-Team-Id': this.account.team_id,
111
- 'X-XSRF-Token': xsrfToken,
156
+ 'Authorization': `Bearer ${xsrfToken}`,
157
+ 'Origin': 'https://business.gemini.google',
158
+ 'Referer': 'https://business.gemini.google/',
112
159
  'User-Agent': this.getUserAgent(),
113
160
  },
114
161
  body: JSON.stringify(geminiRequest),
@@ -133,7 +180,7 @@ export class GeminiBusinessAPI {
133
180
  * Build cookie header string
134
181
  */
135
182
  buildCookieHeader() {
136
- return `__Secure-c_ses=${this.account.cookies.secure_c_ses}; __Host-c_oses=${this.account.cookies.host_c_oses}`;
183
+ return `__Secure-C_SES=${this.account.cookies.secure_c_ses}; __Host-C_OSES=${this.account.cookies.host_c_oses}`;
137
184
  }
138
185
  /**
139
186
  * Get user agent string
@@ -146,23 +193,40 @@ export class GeminiBusinessAPI {
146
193
  * Convert OpenAI format to Gemini Business format
147
194
  */
148
195
  convertToGeminiFormat(request, sessionId) {
149
- // Build prompt from messages
150
- const prompt = this.buildPromptFromMessages(request.messages);
196
+ // Build query parts from messages
197
+ const queryParts = this.buildQueryParts(request.messages);
198
+ // Map model name to Gemini internal model ID
199
+ const modelId = this.mapModelId(request.model);
151
200
  return {
152
- session_id: sessionId,
153
- prompt,
154
- model: request.model || 'gemini-2.5-pro',
155
- stream: request.stream || false,
156
- temperature: request.temperature,
157
- max_tokens: request.max_tokens,
158
- top_p: request.top_p,
201
+ configId: this.account.team_id,
202
+ additionalParams: { token: '-' },
203
+ streamAssistRequest: {
204
+ session: sessionId,
205
+ query: { parts: queryParts },
206
+ filter: '',
207
+ fileIds: [],
208
+ answerGenerationMode: 'NORMAL',
209
+ assistGenerationConfig: {
210
+ modelId: modelId,
211
+ },
212
+ toolsSpec: {
213
+ webGroundingSpec: {},
214
+ toolRegistry: 'default_tool_registry',
215
+ imageGenerationSpec: {},
216
+ videoGenerationSpec: {},
217
+ },
218
+ languageCode: 'en-US',
219
+ userMetadata: { timeZone: 'Etc/GMT' },
220
+ assistSkippingMode: 'REQUEST_ASSIST',
221
+ },
159
222
  };
160
223
  }
161
224
  /**
162
- * Build prompt string from OpenAI messages array
225
+ * Build query parts from OpenAI messages array
163
226
  */
164
- buildPromptFromMessages(messages) {
165
- return messages
227
+ buildQueryParts(messages) {
228
+ // Combine all messages into a single text prompt
229
+ const fullPrompt = messages
166
230
  .map((msg) => {
167
231
  const role = msg.role === 'assistant' ? 'Assistant' : msg.role === 'system' ? 'System' : 'User';
168
232
  if (typeof msg.content === 'string') {
@@ -178,13 +242,41 @@ export class GeminiBusinessAPI {
178
242
  }
179
243
  })
180
244
  .join('\n\n');
245
+ return [{ text: fullPrompt }];
246
+ }
247
+ /**
248
+ * Map OpenAI model names to Gemini internal model IDs
249
+ */
250
+ mapModelId(model) {
251
+ const modelMap = {
252
+ 'gemini-2.5-pro': 'gemini-3-pro-preview',
253
+ 'gemini-2.5-flash': 'gemini-3-flash-preview',
254
+ 'gemini-2.0-pro': 'gemini-2-pro',
255
+ 'gemini-1.5-pro': 'gemini-1.5-pro',
256
+ 'gemini-1.5-flash': 'gemini-1.5-flash',
257
+ };
258
+ return modelMap[model || 'gemini-2.5-pro'] || 'gemini-3-pro-preview';
181
259
  }
182
260
  /**
183
261
  * Convert Gemini Business format to OpenAI format
184
262
  */
185
263
  convertToOpenAIFormat(data, model) {
186
- const content = data.text || data.content || '';
187
- const finishReason = data.finish_reason || 'stop';
264
+ // Gemini Business returns an array of response chunks
265
+ // We need to collect text from all chunks, ignoring "thought" parts
266
+ let fullText = '';
267
+ if (Array.isArray(data)) {
268
+ for (const chunk of data) {
269
+ const answer = chunk.streamAssistResponse?.answer;
270
+ if (!answer || !answer.replies)
271
+ continue;
272
+ for (const reply of answer.replies) {
273
+ const content = reply.groundedContent?.content;
274
+ if (content && content.text && !content.thought) {
275
+ fullText += content.text;
276
+ }
277
+ }
278
+ }
279
+ }
188
280
  return {
189
281
  id: `chatcmpl-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
190
282
  object: 'chat.completion',
@@ -195,9 +287,9 @@ export class GeminiBusinessAPI {
195
287
  index: 0,
196
288
  message: {
197
289
  role: 'assistant',
198
- content,
290
+ content: fullText.trim(),
199
291
  },
200
- finish_reason: finishReason,
292
+ finish_reason: 'stop',
201
293
  },
202
294
  ],
203
295
  usage: {
@@ -264,7 +356,7 @@ export class GeminiBusinessAPI {
264
356
  async testAccount() {
265
357
  try {
266
358
  // Test 1: Get XSRF token
267
- await this.getXSRFToken();
359
+ await this.getJWT();
268
360
  // Test 2: Create session
269
361
  await this.createSession();
270
362
  return { success: true };
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-business-api.js","sourceRoot":"","sources":["../../src/gemini-business-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-business-api.js","sourceRoot":"","sources":["../../src/gemini-business-api.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-gemini-business",
3
- "version": "1.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "OpenCode plugin for multi-account Gemini Business pool with automatic rotation",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",