opencode-gemini-business 2.1.0 → 2.3.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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # 🔄 opencode-gemini-business
4
4
 
5
- **Multi-account Gemini Business pool with intelligent rotation for OpenCode**
5
+ **Мульти-аккаунтный пул Gemini Business с интеллектуальной ротацией для OpenCode**
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/opencode-gemini-business.svg?style=flat&colorA=18181B&colorB=28CF8D)](https://www.npmjs.com/package/opencode-gemini-business)
8
8
  [![npm downloads](https://img.shields.io/npm/dm/opencode-gemini-business.svg?style=flat&colorA=18181B&colorB=28CF8D)](https://www.npmjs.com/package/opencode-gemini-business)
@@ -11,53 +11,54 @@
11
11
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue?style=flat&colorA=18181B&colorB=3178C6)](https://www.typescriptlang.org/)
12
12
  [![Node.js](https://img.shields.io/badge/Node.js-ESM-green?style=flat&colorA=18181B&colorB=339933)](https://nodejs.org/)
13
13
 
14
- [🇷🇺 Русский](README.ru.md) | **🇬🇧 English**
14
+ **🇷🇺 Русский** | [🇬🇧 English](README.en.md)
15
15
 
16
16
  <br />
17
17
 
18
- *Auth plugin for [OpenCode](https://github.com/anomalyco/opencode) — pool multiple Gemini Business accounts with automatic rotation, failover, and load balancing.*
18
+ *Auth-плагин для [OpenCode](https://github.com/anomalyco/opencode) — пул из нескольких аккаунтов Gemini Business с автоматической ротацией, фейловером и балансировкой нагрузки.*
19
19
 
20
20
  </div>
21
21
 
22
22
  ---
23
23
 
24
- ## 📖 Overview
24
+ ## 📖 Обзор
25
25
 
26
- **opencode-gemini-business** is an OpenCode plugin that enables multi-account rotation for **Gemini Business API** (`business.gemini.google`), providing automatic failover and load balancing across multiple accounts.
26
+ **opencode-gemini-business** плагин для OpenCode, который обеспечивает ротацию между несколькими аккаунтами **Gemini Business API** (`business.gemini.google`), предоставляя автоматическое переключение при ошибках и балансировку нагрузки.
27
27
 
28
- > **Important**: This plugin uses the **Gemini Business / Enterprise API**, NOT Google AI Studio.
28
+ > **Важно**: Плагин использует **Gemini Business / Enterprise API**, НЕ Google AI Studio.
29
29
 
30
30
  ---
31
31
 
32
- ## ✨ Features
32
+ ## ✨ Возможности
33
33
 
34
- | Feature | Description |
35
- |---------|-------------|
36
- | 🔄 **Multi-Account Rotation** | Automatically rotate between multiple Gemini Business accounts |
37
- | 🛡️ **Automatic Failover** | Retry failed requests with different accounts seamlessly |
38
- | 🔐 **JWT Authentication** | Built-in XSRF token retrieval and JWT (HS256) signing |
39
- | 📡 **Streaming Support** | Full SSE streaming, JSON-lines, and fallback parsing |
40
- | ⚙️ **Flexible Strategies** | Round-robin, least-used, or random rotation |
41
- | 🔑 **Auto Auth Setup** | `add-account` automatically creates OpenCode auth record |
34
+ | Возможность | Описание |
35
+ |-------------|----------|
36
+ | 🔄 **Ротация аккаунтов** | Автоматическое переключение между несколькими аккаунтами Gemini Business |
37
+ | 🛡️ **Автоматический фейловер** | Повторные запросы с другим аккаунтом при ошибках |
38
+ | 🔐 **JWT-аутентификация** | Встроенное получение XSRF-токена и подписание JWT (HS256) |
39
+ | 📡 **Поддержка стриминга** | Полная поддержка SSE, JSON-lines и fallback-парсинга |
40
+ | ⚙️ **Гибкие стратегии** | Round-robin, least-used или случайный выбор |
41
+ | 🔑 **Автонастройка auth** | `add-account` автоматически создаёт auth-запись OpenCode |
42
42
 
43
43
  ---
44
44
 
45
- ## 🤖 Supported Models
45
+ ## 🤖 Поддерживаемые модели
46
46
 
47
- | Model | Internal API ID | Best For |
48
- |-------|:---------------:|---------|
49
- | `gemini-2.5-flash` | `gemini-2.5-flash` | Everyday tasks, fast responses |
50
- | `gemini-2.5-pro` | `gemini-2.5-pro` | Complex reasoning |
51
- | `gemini-3-flash` | `gemini-3-flash-preview` | Next-gen fast model |
52
- | `gemini-3-pro` | `gemini-3-pro-preview` | Next-gen reasoning |
47
+ | Модель | Internal API ID | Для чего |
48
+ |--------|:---------------:|----------|
49
+ | `gemini-2.5-flash` | `gemini-2.5-flash` | Повседневные задачи, быстрые ответы |
50
+ | `gemini-2.5-pro` | `gemini-2.5-pro` | Сложные рассуждения |
51
+ | `gemini-3-flash` | `gemini-3-flash-preview` | Новое поколение, быстрая |
52
+ | `gemini-3.1-pro` | `gemini-3.1-pro-preview` | Продвинутые рассуждения (preview) |
53
+ | `auto` | *(пусто)* | Gemini автоматически выберет лучшую модель |
53
54
 
54
55
  ---
55
56
 
56
- ## 🚀 Quick Start
57
+ ## 🚀 Быстрый старт
57
58
 
58
- ### Step 1: Configure OpenCode
59
+ ### Шаг 1: Настроить OpenCode
59
60
 
60
- Add to `~/.config/opencode/opencode.json`:
61
+ Добавьте в `~/.config/opencode/opencode.json`:
61
62
 
62
63
  ```json
63
64
  {
@@ -74,71 +75,84 @@ Add to `~/.config/opencode/opencode.json`:
74
75
  "gemini-2.5-flash": { "name": "Gemini 2.5 Flash" },
75
76
  "gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
76
77
  "gemini-3-flash": { "name": "Gemini 3 Flash" },
77
- "gemini-3-pro": { "name": "Gemini 3 Pro" }
78
+ "gemini-3.1-pro": { "name": "Gemini 3.1 Pro" },
79
+ "auto": { "name": "Авто-выбор" }
78
80
  }
79
81
  }
80
82
  }
81
83
  }
82
84
  ```
83
85
 
84
- ### Step 2: Add Gemini Business account
86
+ ### Шаг 2: Добавить аккаунт Gemini Business
85
87
 
86
- Install the CLI tool:
88
+ Установите CLI-инструмент:
87
89
 
88
90
  ```bash
89
91
  npm install -g opencode-gemini-business
90
92
  ```
91
93
 
92
- Then add your account:
94
+ Добавьте аккаунт (нужен Google Chrome или Chromium):
93
95
 
94
96
  ```bash
95
- opencode-gemini-business add-account \
96
- "My Account" \
97
+ opencode-gemini-business add-account
98
+ ```
99
+
100
+ Откроется окно Chrome — войдите в аккаунт Gemini Business и отправьте любое сообщение в чат. Куки и учётные данные будут захвачены автоматически. Готово!
101
+
102
+ > **Примечание:** `add-account` автоматически создаёт auth-запись в `~/.local/share/opencode/auth.json`, поэтому запускать `opencode auth login` не нужно.
103
+
104
+ <details>
105
+ <summary>Ручной режим (для продвинутых)</summary>
106
+
107
+ Если хотите указать данные вручную или Chrome не установлен:
108
+
109
+ ```bash
110
+ opencode-gemini-business add-account --manual \
111
+ "Мой аккаунт" \
97
112
  "e1f353e7-0291-44cf-9085-e0b6efd20e41" \
98
113
  "CSE.AXUaAj_MKeqeFLr_..." \
99
114
  "COS.AfQtEyCcW1aLwKb3..." \
100
115
  "1370433092"
101
116
  ```
102
117
 
103
- Arguments:
118
+ | # | Аргумент | Описание |
119
+ |:-:|----------|----------|
120
+ | 1 | Имя аккаунта | Отображаемое имя аккаунта |
121
+ | 2 | `team_id` | UUID из URL `/cid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/` |
122
+ | 3 | `__Secure-C_SES` | Значение cookie (начинается с `CSE.`) |
123
+ | 4 | `__Host-C_OSES` | Значение cookie (начинается с `COS.`) |
124
+ | 5 | `csesidx` | Число из URL `?csesidx=...` |
104
125
 
105
- | # | Argument | Description |
106
- |:-:|----------|-------------|
107
- | 1 | Account name | Display name for the account |
108
- | 2 | `team_id` | UUID from URL `/cid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/` |
109
- | 3 | `__Secure-C_SES` | Cookie value (starts with `CSE.`) |
110
- | 4 | `__Host-C_OSES` | Cookie value (starts with `COS.`) |
111
- | 5 | `csesidx` | Number from URL `?csesidx=...` |
112
-
113
- Or use environment variables:
126
+ Или через переменные окружения:
114
127
 
115
128
  ```bash
116
- export GEMINI_ACCOUNT_NAME="My Account"
129
+ export GEMINI_ACCOUNT_NAME="Мой аккаунт"
117
130
  export GEMINI_TEAM_ID="e1f353e7-0291-44cf-9085-e0b6efd20e41"
118
131
  export GEMINI_SECURE_C_SES="CSE.AXUaAj_MKeqeFLr_..."
119
132
  export GEMINI_HOST_C_OSES="COS.AfQtEyCcW1aLwKb3..."
120
133
  export GEMINI_CSESIDX="1370433092"
121
134
 
122
- opencode-gemini-business add-account
135
+ opencode-gemini-business add-account --manual
123
136
  ```
124
137
 
125
- > **Note:** `add-account` automatically creates the auth record in `~/.local/share/opencode/auth.json`, so you don't need to run `opencode auth login`.
138
+ </details>
126
139
 
127
- ### Step 3: Use it
140
+ ### Шаг 3: Использовать
128
141
 
129
142
  ```bash
130
- # Flash model (fast)
131
- opencode run --model=gemini-business/gemini-2.5-flash "Fix this bug"
143
+ # Flash (быстрая)
144
+ opencode run --model=gemini-business/gemini-2.5-flash "Исправь баг"
132
145
 
133
- # Pro model (best quality)
134
- opencode run --model=gemini-business/gemini-2.5-pro "Design architecture"
146
+ # Pro (лучшее качество)
147
+ opencode run --model=gemini-business/gemini-2.5-pro "Спроектируй архитектуру"
135
148
 
136
- # Next-gen models
137
- opencode run --model=gemini-business/gemini-3-flash "Quick task"
138
- opencode run --model=gemini-business/gemini-3-pro "Complex reasoning"
149
+ # Модели нового поколения
150
+ opencode run --model=gemini-business/gemini-3-flash "Быстрая задача"
151
+ opencode run --model=gemini-business/gemini-3.1-pro "Продвинутые рассуждения"
152
+ opencode run --model=gemini-business/auto "Gemini выберет сам"
139
153
  ```
140
154
 
141
- Set as default model in `opencode.json`:
155
+ Установить модель по умолчанию в `opencode.json`:
142
156
 
143
157
  ```json
144
158
  {
@@ -148,117 +162,117 @@ Set as default model in `opencode.json`:
148
162
 
149
163
  ---
150
164
 
151
- ## 🔍 Extracting Credentials
165
+ ## 🔍 Извлечение учётных данных
152
166
 
153
- ### Where to find each value
167
+ ### Где найти каждое значение
154
168
 
155
- Login to [business.gemini.google](https://business.gemini.google) and look at the URL:
169
+ Войдите в [business.gemini.google](https://business.gemini.google) и посмотрите URL:
156
170
 
157
171
  ```
158
172
  https://business.gemini.google/home/cid/e1f353e7-0291-44cf-9085-e0b6efd20e41/r/session/123?csesidx=1370433092
159
173
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
160
- team_id (UUID after /cid/) csesidx
174
+ team_id (UUID после /cid/) csesidx
161
175
  ```
162
176
 
163
177
  ### Cookies
164
178
 
165
- **Method 1: Browser Extension (Recommended)**
179
+ **Способ 1: Расширение браузера (рекомендуется)**
166
180
 
167
- 1. Install [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc)
168
- 2. Open `business.gemini.google` and export cookies
169
- 3. Find `__Secure-C_SES` (starts with `CSE.`) and `__Host-C_OSES` (starts with `COS.`)
181
+ 1. Установите [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc)
182
+ 2. Откройте `business.gemini.google` и экспортируйте cookies
183
+ 3. Найдите `__Secure-C_SES` (начинается с `CSE.`) и `__Host-C_OSES` (начинается с `COS.`)
170
184
 
171
- **Method 2: DevTools**
185
+ **Способ 2: DevTools**
172
186
 
173
- 1. Open DevTools (F12) → **Application** → **Cookies** → `https://business.gemini.google`
174
- 2. Copy `__Secure-C_SES` and `__Host-C_OSES` values
187
+ 1. Откройте DevTools (F12) → **Application** → **Cookies** → `https://business.gemini.google`
188
+ 2. Скопируйте значения `__Secure-C_SES` и `__Host-C_OSES`
175
189
 
176
190
  ---
177
191
 
178
- ## 🔧 Account Management
192
+ ## 🔧 Управление аккаунтами
179
193
 
180
194
  ```bash
181
- # List all accounts
195
+ # Список аккаунтов
182
196
  opencode-gemini-business list-accounts
183
197
 
184
- # Test account connectivity
198
+ # Тест подключения
185
199
  opencode-gemini-business test-account <account_id>
186
200
 
187
- # Remove account
201
+ # Удалить аккаунт
188
202
  opencode-gemini-business remove-account <account_id>
189
203
 
190
- # Help
204
+ # Помощь
191
205
  opencode-gemini-business help
192
206
  ```
193
207
 
194
208
  ---
195
209
 
196
- ## ⚙️ Rotation Strategies
210
+ ## ⚙️ Стратегии ротации
197
211
 
198
- | Strategy | Behavior |
199
- |----------|----------|
200
- | `round-robin` (default) | Cycles through accounts in order |
201
- | `least-used` | Selects least recently used account |
202
- | `random` | Random selection |
212
+ | Стратегия | Поведение |
213
+ |-----------|-----------|
214
+ | `round-robin` (по умолчанию) | Циклический обход аккаунтов по порядку |
215
+ | `least-used` | Выбор наименее недавно использованного |
216
+ | `random` | Случайный выбор |
203
217
 
204
- Configure in `~/.config/opencode/gemini-business-accounts.json` (auto-created on first `add-account`).
218
+ Настраивается в `~/.config/opencode/gemini-business-accounts.json` (создаётся автоматически при первом `add-account`).
205
219
 
206
220
  ---
207
221
 
208
- ## 🛠️ How It Works
222
+ ## 🛠️ Как это работает
209
223
 
210
- 1. Plugin registers as an OpenCode auth provider for `gemini-business`
211
- 2. When a request comes in, `loader()` returns a custom `fetch()` function
212
- 3. Custom `fetch()` intercepts the request from `@ai-sdk/openai-compatible`
213
- 4. Instead of calling `baseURL/chat/completions`, it:
214
- - Picks an account via rotation strategy
215
- - Gets XSRF token and creates JWT (HS256)
216
- - Creates a session via `widgetCreateSession`
217
- - Sends the actual request to `widgetStreamAssist`
218
- - Converts the response back to OpenAI-compatible format
219
- 5. Supports both streaming (SSE) and non-streaming responses
224
+ 1. Плагин регистрируется как auth-провайдер `gemini-business` в OpenCode
225
+ 2. При запросе `loader()` возвращает кастомную функцию `fetch()`
226
+ 3. Кастомный `fetch()` перехватывает запрос от `@ai-sdk/openai-compatible`
227
+ 4. Вместо вызова `baseURL/chat/completions` он:
228
+ - Выбирает аккаунт по стратегии ротации
229
+ - Получает XSRF-токен и создаёт JWT (HS256)
230
+ - Создаёт сессию через `widgetCreateSession`
231
+ - Отправляет запрос на `widgetStreamAssist`
232
+ - Конвертирует ответ в OpenAI-совместимый формат
233
+ 5. Поддерживает стриминг (SSE) и обычные ответы
220
234
 
221
235
  ---
222
236
 
223
237
  ## ❓ FAQ
224
238
 
225
239
  <details>
226
- <summary><b>Q: Where do I find team_id?</b></summary>
240
+ <summary><b>В: Где найти team_id?</b></summary>
227
241
 
228
- Look at the URL in your browser: `https://business.gemini.google/home/cid/e1f353e7-0291-44cf-9085-e0b6efd20e41/...`
242
+ Посмотрите URL в браузере: `https://business.gemini.google/home/cid/e1f353e7-0291-44cf-9085-e0b6efd20e41/...`
229
243
 
230
- The UUID after `/cid/` is your `team_id`.
244
+ UUID после `/cid/` это ваш `team_id`.
231
245
  </details>
232
246
 
233
247
  <details>
234
- <summary><b>Q: Do I need to run `opencode auth login`?</b></summary>
248
+ <summary><b>В: Нужно ли запускать `opencode auth login`?</b></summary>
235
249
 
236
- No. The `add-account` command automatically creates the auth record in `~/.local/share/opencode/auth.json`. If for some reason it wasn't created, you can run `opencode auth login`, select **gemini-business**, and enter any key (e.g. `unused`).
250
+ Нет. Команда `add-account` автоматически создаёт auth-запись в `~/.local/share/opencode/auth.json`. Если по какой-то причине запись не создалась, запустите `opencode auth login`, выберите **gemini-business** и введите любой ключ (например `unused`).
237
251
  </details>
238
252
 
239
253
  <details>
240
- <summary><b>Q: Session expired errors?</b></summary>
254
+ <summary><b>В: Ошибки истечения сессии?</b></summary>
241
255
 
242
- The plugin automatically refreshes sessions (cached for 50 minutes). If you see persistent errors, your cookies may have expired re-extract them from the browser.
256
+ Плагин автоматически обновляет сессии (кешируются на 50 минут). Если ошибки не проходят cookies могли истечь, извлеките их заново из браузера.
243
257
  </details>
244
258
 
245
259
  <details>
246
- <summary><b>Q: Difference from Google AI Studio?</b></summary>
260
+ <summary><b>В: Чем отличается от Google AI Studio?</b></summary>
247
261
 
248
- This plugin uses **Gemini Business API** (`business.gemini.google`) — enterprise accounts with higher rate limits. NOT Google AI Studio (`aistudio.google.com`).
262
+ Плагин использует **Gemini Business API** (`business.gemini.google`) — корпоративные аккаунты с высокими лимитами. НЕ Google AI Studio (`aistudio.google.com`).
249
263
  </details>
250
264
 
251
265
  ---
252
266
 
253
- ## 🔒 Security
267
+ ## 🔒 Безопасность
254
268
 
255
- - Credentials are stored locally in `~/.config/opencode/gemini-business-accounts.json`
256
- - Never commit credentials to git
257
- - Rotate cookies regularly
258
- - The plugin does not send credentials to any third-party services
269
+ - Учётные данные хранятся локально в `~/.config/opencode/gemini-business-accounts.json`
270
+ - Не коммитьте credentials в git
271
+ - Регулярно обновляйте cookies
272
+ - Плагин не отправляет данные третьим сторонам
259
273
 
260
274
  ---
261
275
 
262
- ## 📄 License
276
+ ## 📄 Лицензия
263
277
 
264
278
  [MIT](LICENSE) © opencode-gemini-business contributors
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AASA;;GAEG;AACH,wBAAsB,GAAG,kBAkCxB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAUA;;GAEG;AACH,wBAAsB,GAAG,kBAwCxB"}
package/dist/cli.js CHANGED
@@ -4,6 +4,7 @@ import { homedir } from 'os';
4
4
  import { join } from 'path';
5
5
  import { AccountManager } from './src/account-manager.js';
6
6
  import { GeminiBusinessAPI } from './src/gemini-business-api.js';
7
+ import { BrowserAuth } from './src/browser-auth.js';
7
8
  /**
8
9
  * CLI entry point - handles account management commands.
9
10
  */
@@ -30,6 +31,11 @@ export async function cli() {
30
31
  case 'test-account':
31
32
  await testAccountCommand(accountManager, args[1]);
32
33
  break;
34
+ case 'version':
35
+ case '--version':
36
+ case '-v':
37
+ await printVersion();
38
+ break;
33
39
  case 'help':
34
40
  default:
35
41
  printHelp();
@@ -37,8 +43,48 @@ export async function cli() {
37
43
  }
38
44
  }
39
45
  async function addAccountCommand(manager, args) {
40
- console.log('Add Gemini Business Account');
41
- console.log('----------------------------');
46
+ const isManual = args.includes('--manual');
47
+ const filteredArgs = args.filter(a => a !== '--manual');
48
+ if (isManual) {
49
+ await addAccountManual(manager, filteredArgs);
50
+ }
51
+ else {
52
+ await addAccountBrowser(manager, filteredArgs[0]);
53
+ }
54
+ }
55
+ async function addAccountBrowser(manager, name) {
56
+ console.log('Add Gemini Business Account (Browser Flow)');
57
+ console.log('--------------------------------------------');
58
+ console.log('A Chrome window will open. Sign in to your Gemini Business account.\n');
59
+ const auth = new BrowserAuth({
60
+ name: name || `account-${Date.now()}`,
61
+ });
62
+ try {
63
+ const credentials = await auth.captureCredentials((message) => {
64
+ console.log(message);
65
+ });
66
+ const account = {
67
+ name: name || `account-${Date.now()}`,
68
+ team_id: credentials.team_id,
69
+ cookies: credentials.cookies,
70
+ csesidx: credentials.csesidx,
71
+ user_agent: credentials.user_agent,
72
+ enabled: true,
73
+ };
74
+ const id = await manager.addAccount(account);
75
+ console.log(`\n✅ Account added successfully! ID: ${id}`);
76
+ console.log(` Name: ${account.name}`);
77
+ console.log(` Team ID: ${account.team_id}`);
78
+ await ensureAuthRecord();
79
+ }
80
+ catch (error) {
81
+ console.error(`\n${error instanceof Error ? error.message : error}`);
82
+ process.exit(1);
83
+ }
84
+ }
85
+ async function addAccountManual(manager, args) {
86
+ console.log('Add Gemini Business Account (Manual)');
87
+ console.log('-------------------------------------');
42
88
  const account = {
43
89
  name: args[0] || process.env.GEMINI_ACCOUNT_NAME || `account-${Date.now()}`,
44
90
  team_id: args[1] || process.env.GEMINI_TEAM_ID || '',
@@ -56,7 +102,7 @@ async function addAccountCommand(manager, args) {
56
102
  !account.csesidx) {
57
103
  console.error('Error: Missing required fields!');
58
104
  console.error('\nUsage:');
59
- console.error(' opencode-gemini-business add-account <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
105
+ console.error(' opencode-gemini-business add-account --manual <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
60
106
  console.error('\nOr set environment variables:');
61
107
  console.error(' GEMINI_ACCOUNT_NAME, GEMINI_TEAM_ID, GEMINI_SECURE_C_SES, GEMINI_HOST_C_OSES, GEMINI_CSESIDX, GEMINI_USER_AGENT');
62
108
  process.exit(1);
@@ -65,7 +111,6 @@ async function addAccountCommand(manager, args) {
65
111
  console.log(`✅ Account added successfully! ID: ${id}`);
66
112
  console.log(` Name: ${account.name}`);
67
113
  console.log(` Team ID: ${account.team_id}`);
68
- // Auto-create auth record so user doesn't need to run `opencode auth login`
69
114
  await ensureAuthRecord();
70
115
  }
71
116
  /**
@@ -163,13 +208,28 @@ async function testAccountCommand(manager, accountId) {
163
208
  process.exit(1);
164
209
  }
165
210
  }
211
+ async function printVersion() {
212
+ try {
213
+ const pkgPath = new URL('./package.json', import.meta.url).pathname;
214
+ const pkg = JSON.parse(await readFile(pkgPath, 'utf-8'));
215
+ console.log(`opencode-gemini-business v${pkg.version}`);
216
+ }
217
+ catch {
218
+ console.log('opencode-gemini-business (version unknown)');
219
+ }
220
+ }
166
221
  function printHelp() {
167
222
  console.log('OpenCode Gemini Business Plugin');
168
223
  console.log('================================\n');
169
224
  console.log('Multi-account Gemini Business pool with automatic rotation\n');
170
225
  console.log('Commands:');
171
- console.log(' add-account <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
172
- console.log(' Add a new Gemini Business account\n');
226
+ console.log(' add-account [name]');
227
+ console.log(' Add account via browser login (default). Opens Chrome, you sign in,');
228
+ console.log(' credentials are captured automatically. Requires Chrome/Chromium.\n');
229
+ console.log(' add-account --manual <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
230
+ console.log(' Add account manually by providing credentials as arguments.\n');
231
+ console.log(' ⚠️ Warning: Passing credentials as arguments exposes them in shell history.');
232
+ console.log(' Prefer environment variables or browser-based login.\n');
173
233
  console.log(' list-accounts');
174
234
  console.log(' List all configured accounts\n');
175
235
  console.log(' remove-account <account_id>');
@@ -178,7 +238,9 @@ function printHelp() {
178
238
  console.log(' Test account credentials\n');
179
239
  console.log(' help');
180
240
  console.log(' Show this help message\n');
181
- console.log('Environment Variables:');
241
+ console.log(' version (or --version, -v)');
242
+ console.log(' Show installed version\n');
243
+ console.log('Environment Variables (for --manual mode):');
182
244
  console.log(' GEMINI_ACCOUNT_NAME - Account name');
183
245
  console.log(' GEMINI_TEAM_ID - Team ID');
184
246
  console.log(' GEMINI_SECURE_C_SES - __Secure-c_ses cookie');
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoCH,eAAO,MAAM,oBAAoB,GAAU,MAAM,GAAG;;;yBAOvB,GAAG,aAAa,GAAG;;;;;0BAwBlB,GAAG,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;;;;;;;EAwE1D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmCH,eAAO,MAAM,oBAAoB,GAAU,MAAM,GAAG;;;yBAOvB,GAAG,aAAa,GAAG;;;;;0BAuBlB,GAAG,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;;;;;;;EAgF1D,CAAC"}