opencode-gemini-business 2.0.3 → 2.0.5

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,17 @@
1
+ ## [2.0.5](https://github.com/izzzzzi/opencode-gemini-business/compare/v2.0.4...v2.0.5) (2026-02-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * refactor plugin structure to fix OpenCode compatibility ([c7578ee](https://github.com/izzzzzi/opencode-gemini-business/commit/c7578ee9249cf2a8647470b449275de5684284e7))
7
+
8
+ ## [2.0.4](https://github.com/izzzzzi/opencode-gemini-business/compare/v2.0.3...v2.0.4) (2026-02-15)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * initialize AccountManager outside async loader ([15864ca](https://github.com/izzzzzi/opencode-gemini-business/commit/15864ca500d4751af09db77f0d8030c8cf9ac3b8))
14
+
1
15
  ## [2.0.3](https://github.com/izzzzzi/opencode-gemini-business/compare/v2.0.2...v2.0.3) (2026-02-15)
2
16
 
3
17
 
package/bin/cli.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * CLI entry point for opencode-gemini-business
5
5
  */
6
6
 
7
- import('../dist/index.js')
7
+ import('../dist/cli.js')
8
8
  .then(module => {
9
9
  if (module.cli) {
10
10
  return module.cli();
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point - handles account management commands.
4
+ */
5
+ export declare function cli(): Promise<void>;
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAMA;;GAEG;AACH,wBAAsB,GAAG,kBAkCxB"}
package/dist/cli.js ADDED
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+ import { AccountManager } from './src/account-manager.js';
3
+ import { GeminiBusinessAPI } from './src/gemini-business-api.js';
4
+ /**
5
+ * CLI entry point - handles account management commands.
6
+ */
7
+ export async function cli() {
8
+ const args = process.argv.slice(2);
9
+ const command = args[0];
10
+ const accountManager = new AccountManager();
11
+ try {
12
+ await accountManager.loadAccounts();
13
+ }
14
+ catch {
15
+ // Config file might not exist yet - that's ok.
16
+ }
17
+ switch (command) {
18
+ case 'add-account':
19
+ await addAccountCommand(accountManager, args.slice(1));
20
+ break;
21
+ case 'list-accounts':
22
+ await listAccountsCommand(accountManager);
23
+ break;
24
+ case 'remove-account':
25
+ await removeAccountCommand(accountManager, args[1]);
26
+ break;
27
+ case 'test-account':
28
+ await testAccountCommand(accountManager, args[1]);
29
+ break;
30
+ case 'help':
31
+ default:
32
+ printHelp();
33
+ break;
34
+ }
35
+ }
36
+ async function addAccountCommand(manager, args) {
37
+ console.log('Add Gemini Business Account');
38
+ console.log('----------------------------');
39
+ const account = {
40
+ name: args[0] || process.env.GEMINI_ACCOUNT_NAME || `account-${Date.now()}`,
41
+ team_id: args[1] || process.env.GEMINI_TEAM_ID || '',
42
+ cookies: {
43
+ secure_c_ses: args[2] || process.env.GEMINI_SECURE_C_SES || '',
44
+ host_c_oses: args[3] || process.env.GEMINI_HOST_C_OSES || '',
45
+ },
46
+ csesidx: args[4] || process.env.GEMINI_CSESIDX || '',
47
+ user_agent: args[5] || process.env.GEMINI_USER_AGENT,
48
+ enabled: true,
49
+ };
50
+ if (!account.team_id ||
51
+ !account.cookies.secure_c_ses ||
52
+ !account.cookies.host_c_oses ||
53
+ !account.csesidx) {
54
+ console.error('Error: Missing required fields!');
55
+ console.error('\nUsage:');
56
+ console.error(' opencode-gemini-business add-account <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
57
+ console.error('\nOr set environment variables:');
58
+ console.error(' GEMINI_ACCOUNT_NAME, GEMINI_TEAM_ID, GEMINI_SECURE_C_SES, GEMINI_HOST_C_OSES, GEMINI_CSESIDX, GEMINI_USER_AGENT');
59
+ process.exit(1);
60
+ }
61
+ const id = await manager.addAccount(account);
62
+ console.log(`✅ Account added successfully! ID: ${id}`);
63
+ console.log(` Name: ${account.name}`);
64
+ console.log(` Team ID: ${account.team_id}`);
65
+ }
66
+ async function listAccountsCommand(manager) {
67
+ const accounts = manager.getAccounts();
68
+ if (accounts.length === 0) {
69
+ console.log('No accounts configured.');
70
+ return;
71
+ }
72
+ console.log(`Found ${accounts.length} account(s):\n`);
73
+ accounts.forEach((account, index) => {
74
+ console.log(`[${index + 1}] ${account.name} (${account.id})`);
75
+ console.log(` Team ID: ${account.team_id}`);
76
+ console.log(` Status: ${account.enabled ? '✅ Enabled' : '❌ Disabled'}`);
77
+ console.log(` Errors: ${account.error_count || 0}`);
78
+ if (account.last_error) {
79
+ console.log(` Last Error: ${account.last_error}`);
80
+ }
81
+ if (account.last_used) {
82
+ const lastUsed = new Date(account.last_used);
83
+ console.log(` Last Used: ${lastUsed.toISOString()}`);
84
+ }
85
+ console.log('');
86
+ });
87
+ }
88
+ async function removeAccountCommand(manager, accountId) {
89
+ if (!accountId) {
90
+ console.error('Error: Account ID required');
91
+ console.error('Usage: opencode-gemini-business remove-account <account_id>');
92
+ process.exit(1);
93
+ }
94
+ const removed = await manager.removeAccount(accountId);
95
+ if (removed) {
96
+ console.log(`✅ Account ${accountId} removed successfully`);
97
+ }
98
+ else {
99
+ console.error(`❌ Account ${accountId} not found`);
100
+ process.exit(1);
101
+ }
102
+ }
103
+ async function testAccountCommand(manager, accountId) {
104
+ if (!accountId) {
105
+ console.error('Error: Account ID required');
106
+ console.error('Usage: opencode-gemini-business test-account <account_id>');
107
+ process.exit(1);
108
+ }
109
+ const accounts = manager.getAccounts();
110
+ const account = accounts.find((acc) => acc.id === accountId);
111
+ if (!account) {
112
+ console.error(`❌ Account ${accountId} not found`);
113
+ process.exit(1);
114
+ }
115
+ console.log(`Testing account: ${account.name} (${account.id})`);
116
+ console.log('Please wait...\n');
117
+ const api = new GeminiBusinessAPI(account);
118
+ const result = await api.testAccount();
119
+ if (result.success) {
120
+ console.log('✅ Account test successful!');
121
+ console.log(' XSRF Token: OK');
122
+ console.log(' Session: OK');
123
+ console.log(' Authentication: OK');
124
+ }
125
+ else {
126
+ console.log('❌ Account test failed!');
127
+ console.log(` Error: ${result.error}`);
128
+ process.exit(1);
129
+ }
130
+ }
131
+ function printHelp() {
132
+ console.log('OpenCode Gemini Business Plugin');
133
+ console.log('================================\n');
134
+ console.log('Multi-account Gemini Business pool with automatic rotation\n');
135
+ console.log('Commands:');
136
+ console.log(' add-account <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
137
+ console.log(' Add a new Gemini Business account\n');
138
+ console.log(' list-accounts');
139
+ console.log(' List all configured accounts\n');
140
+ console.log(' remove-account <account_id>');
141
+ console.log(' Remove an account\n');
142
+ console.log(' test-account <account_id>');
143
+ console.log(' Test account credentials\n');
144
+ console.log(' help');
145
+ console.log(' Show this help message\n');
146
+ console.log('Environment Variables:');
147
+ console.log(' GEMINI_ACCOUNT_NAME - Account name');
148
+ console.log(' GEMINI_TEAM_ID - Team ID');
149
+ console.log(' GEMINI_SECURE_C_SES - __Secure-c_ses cookie');
150
+ console.log(' GEMINI_HOST_C_OSES - __Host-c_oses cookie');
151
+ console.log(' GEMINI_CSESIDX - csesidx value');
152
+ console.log(' GEMINI_USER_AGENT - Custom user agent (optional)\n');
153
+ }
154
+ if (import.meta.url === `file://${process.argv[1]}`) {
155
+ cli().catch((error) => {
156
+ console.error('Error:', error.message);
157
+ process.exit(1);
158
+ });
159
+ }
160
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,54 +1,19 @@
1
- #!/usr/bin/env node
2
1
  /**
3
2
  * OpenCode Gemini Business Plugin
4
3
  * Multi-account Gemini Business pool with automatic rotation
5
- *
6
- * Follows OpenCode plugin patterns from:
7
- * - opencode-gemini-auth
8
- * - opencode-openai-codex-auth
9
- * - opencode-antigravity-auth
10
4
  */
11
- import { AccountManager } from './src/account-manager.js';
12
- import { GeminiBusinessAPI } from './src/gemini-business-api.js';
13
- /**
14
- * OpenCode Plugin Entry Point
15
- *
16
- * This plugin doesn't use traditional OAuth - it uses cookie-based auth
17
- * with Gemini Business accounts configured via CLI.
18
- */
19
- export declare const GeminiBusinessPlugin: (ctx: any) => {
5
+ declare const GeminiBusinessPlugin: (_ctx: any) => {
20
6
  auth: {
21
7
  provider: string;
22
- /**
23
- * Loader function - called by OpenCode to initialize the provider
24
- */
25
- loader(getAuth: any, provider: any): Promise<{
8
+ loader(_getAuth: any, _provider: any): Promise<{
26
9
  accountCount?: undefined;
27
10
  strategy?: undefined;
28
- /**
29
- * Custom fetch implementation for Gemini Business API
30
- *
31
- * This intercepts all OpenCode API calls and routes them through
32
- * the Gemini Business API with account rotation.
33
- */
34
11
  fetch?: undefined;
35
12
  } | {
36
13
  accountCount: number;
37
14
  strategy: "round-robin" | "least-used" | "random";
38
- /**
39
- * Custom fetch implementation for Gemini Business API
40
- *
41
- * This intercepts all OpenCode API calls and routes them through
42
- * the Gemini Business API with account rotation.
43
- */
44
- fetch(input: any, options: any): Promise<any>;
15
+ fetch(_input: any, options: any): Promise<any>;
45
16
  }>;
46
- /**
47
- * Authentication methods
48
- *
49
- * For Gemini Business, we don't support OAuth - accounts are configured
50
- * via CLI with cookie extraction from browser.
51
- */
52
17
  methods: {
53
18
  type: "cookie";
54
19
  label: string;
@@ -60,10 +25,4 @@ export declare const GeminiBusinessPlugin: (ctx: any) => {
60
25
  };
61
26
  };
62
27
  export default GeminiBusinessPlugin;
63
- export { AccountManager, GeminiBusinessAPI };
64
- /**
65
- * CLI entry point - handles account management commands
66
- */
67
- declare function cli(): Promise<void>;
68
- export { cli };
69
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,GAAG;;;QAKvC;;WAEG;wBACmB,GAAG,YAAY,GAAG;;;YA0BpC;;;;;eAKG;;;;;YALH;;;;;eAKG;yBACgB,GAAG,WAAW,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;;QAsDvD;;;;;WAKG;;;;;;;;;;CAyBR,CAAC;AAGF,eAAe,oBAAoB,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAM7C;;GAEG;AACH,iBAAe,GAAG,kBAkCjB;AAsJD,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,QAAA,MAAM,oBAAoB,GAAI,MAAM,GAAG;;;yBAQV,GAAG,aAAa,GAAG;;;;;;;0BAwBlB,GAAG,WAAW,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;CAuE7D,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,33 +1,16 @@
1
- #!/usr/bin/env node
2
1
  /**
3
2
  * OpenCode Gemini Business Plugin
4
3
  * Multi-account Gemini Business pool with automatic rotation
5
- *
6
- * Follows OpenCode plugin patterns from:
7
- * - opencode-gemini-auth
8
- * - opencode-openai-codex-auth
9
- * - opencode-antigravity-auth
10
4
  */
11
5
  import { AccountManager } from './src/account-manager.js';
12
6
  import { GeminiBusinessAPI } from './src/gemini-business-api.js';
13
- // ============================================================================
14
- // OpenCode Plugin Export
15
- // ============================================================================
16
- /**
17
- * OpenCode Plugin Entry Point
18
- *
19
- * This plugin doesn't use traditional OAuth - it uses cookie-based auth
20
- * with Gemini Business accounts configured via CLI.
21
- */
22
- export const GeminiBusinessPlugin = (ctx) => {
7
+ const GeminiBusinessPlugin = (_ctx) => {
8
+ // Create account manager once per plugin instance.
9
+ const accountManager = new AccountManager();
23
10
  return {
24
11
  auth: {
25
12
  provider: 'gemini-business',
26
- /**
27
- * Loader function - called by OpenCode to initialize the provider
28
- */
29
- async loader(getAuth, provider) {
30
- const accountManager = new AccountManager();
13
+ async loader(_getAuth, _provider) {
31
14
  await accountManager.loadAccounts();
32
15
  const accounts = accountManager.getAccounts();
33
16
  if (accounts.length === 0) {
@@ -41,38 +24,25 @@ export const GeminiBusinessPlugin = (ctx) => {
41
24
  console.log(`\n✅ Gemini Business: Loaded ${accounts.length} account(s)\n` +
42
25
  ` Strategy: ${accountManager.getConfig().rotation_strategy}\n`);
43
26
  return {
44
- // Return empty config - we handle everything in custom fetch
45
27
  accountCount: accounts.length,
46
28
  strategy: accountManager.getConfig().rotation_strategy,
47
- /**
48
- * Custom fetch implementation for Gemini Business API
49
- *
50
- * This intercepts all OpenCode API calls and routes them through
51
- * the Gemini Business API with account rotation.
52
- */
53
- async fetch(input, options) {
29
+ async fetch(_input, options) {
54
30
  try {
55
- // Get next available account based on rotation strategy
56
31
  const account = accountManager.getNextAccount();
57
32
  if (!account) {
58
33
  throw new Error('No available accounts');
59
34
  }
60
- // Create API client for this account
61
35
  const api = new GeminiBusinessAPI(account);
62
- // Refresh session if needed
63
36
  if (api.needsSessionRefresh()) {
64
37
  console.log(` ⟳ Refreshing session for: ${account.name}`);
65
38
  await api.refreshSession();
66
- await accountManager.updateSession(account.id, account.session_id, 50 * 60 * 1000 // 50 minutes
67
- );
39
+ await accountManager.updateSession(account.id, account.session_id, 50 * 60 * 1000);
68
40
  }
69
- // Parse request body
70
- const requestBody = options?.body ? JSON.parse(options.body) : {};
71
- // Make API call
41
+ const requestBody = options?.body
42
+ ? JSON.parse(options.body)
43
+ : {};
72
44
  const response = await api.chatCompletion(requestBody);
73
- // Success! Reset error count
74
45
  accountManager.resetAccountErrors(account.id);
75
- // Convert to Response object for OpenCode
76
46
  return new Response(JSON.stringify(response), {
77
47
  status: 200,
78
48
  headers: {
@@ -82,23 +52,15 @@ export const GeminiBusinessPlugin = (ctx) => {
82
52
  }
83
53
  catch (error) {
84
54
  const errorMessage = error instanceof Error ? error.message : String(error);
85
- // Mark account error
86
55
  const account = accountManager.getNextAccount();
87
56
  if (account) {
88
57
  accountManager.markAccountError(account.id, errorMessage);
89
58
  }
90
- // Rethrow for OpenCode to handle
91
59
  throw new Error(`Gemini Business API Error: ${errorMessage}`);
92
60
  }
93
61
  },
94
62
  };
95
63
  },
96
- /**
97
- * Authentication methods
98
- *
99
- * For Gemini Business, we don't support OAuth - accounts are configured
100
- * via CLI with cookie extraction from browser.
101
- */
102
64
  methods: [
103
65
  {
104
66
  type: 'cookie',
@@ -123,184 +85,5 @@ export const GeminiBusinessPlugin = (ctx) => {
123
85
  },
124
86
  };
125
87
  };
126
- // Export as default for CommonJS compatibility
127
88
  export default GeminiBusinessPlugin;
128
- // Export legacy functions for backward compatibility (if needed)
129
- export { AccountManager, GeminiBusinessAPI };
130
- // ============================================================================
131
- // CLI Commands
132
- // ============================================================================
133
- /**
134
- * CLI entry point - handles account management commands
135
- */
136
- async function cli() {
137
- const args = process.argv.slice(2);
138
- const command = args[0];
139
- const accountManager = new AccountManager();
140
- try {
141
- await accountManager.loadAccounts();
142
- }
143
- catch {
144
- // Config file might not exist yet - that's ok
145
- }
146
- switch (command) {
147
- case 'add-account':
148
- await addAccountCommand(accountManager, args.slice(1));
149
- break;
150
- case 'list-accounts':
151
- await listAccountsCommand(accountManager);
152
- break;
153
- case 'remove-account':
154
- await removeAccountCommand(accountManager, args[1]);
155
- break;
156
- case 'test-account':
157
- await testAccountCommand(accountManager, args[1]);
158
- break;
159
- case 'help':
160
- default:
161
- printHelp();
162
- break;
163
- }
164
- }
165
- /**
166
- * Add account command
167
- */
168
- async function addAccountCommand(manager, args) {
169
- console.log('Add Gemini Business Account');
170
- console.log('----------------------------');
171
- // Read from command line args or env vars
172
- const account = {
173
- name: args[0] || process.env.GEMINI_ACCOUNT_NAME || `account-${Date.now()}`,
174
- team_id: args[1] || process.env.GEMINI_TEAM_ID || '',
175
- cookies: {
176
- secure_c_ses: args[2] || process.env.GEMINI_SECURE_C_SES || '',
177
- host_c_oses: args[3] || process.env.GEMINI_HOST_C_OSES || '',
178
- },
179
- csesidx: args[4] || process.env.GEMINI_CSESIDX || '',
180
- user_agent: args[5] || process.env.GEMINI_USER_AGENT,
181
- enabled: true,
182
- };
183
- // Validate required fields
184
- if (!account.team_id || !account.cookies.secure_c_ses || !account.cookies.host_c_oses || !account.csesidx) {
185
- console.error('Error: Missing required fields!');
186
- console.error('\nUsage:');
187
- console.error(' opencode-gemini-business add-account <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
188
- console.error('\nOr set environment variables:');
189
- console.error(' GEMINI_ACCOUNT_NAME, GEMINI_TEAM_ID, GEMINI_SECURE_C_SES, GEMINI_HOST_C_OSES, GEMINI_CSESIDX, GEMINI_USER_AGENT');
190
- process.exit(1);
191
- }
192
- const id = await manager.addAccount(account);
193
- console.log(`✅ Account added successfully! ID: ${id}`);
194
- console.log(` Name: ${account.name}`);
195
- console.log(` Team ID: ${account.team_id}`);
196
- }
197
- /**
198
- * List accounts command
199
- */
200
- async function listAccountsCommand(manager) {
201
- const accounts = manager.getAccounts();
202
- if (accounts.length === 0) {
203
- console.log('No accounts configured.');
204
- return;
205
- }
206
- console.log(`Found ${accounts.length} account(s):\n`);
207
- accounts.forEach((account, index) => {
208
- console.log(`[${index + 1}] ${account.name} (${account.id})`);
209
- console.log(` Team ID: ${account.team_id}`);
210
- console.log(` Status: ${account.enabled ? '✅ Enabled' : '❌ Disabled'}`);
211
- console.log(` Errors: ${account.error_count || 0}`);
212
- if (account.last_error) {
213
- console.log(` Last Error: ${account.last_error}`);
214
- }
215
- if (account.last_used) {
216
- const lastUsed = new Date(account.last_used);
217
- console.log(` Last Used: ${lastUsed.toISOString()}`);
218
- }
219
- console.log('');
220
- });
221
- }
222
- /**
223
- * Remove account command
224
- */
225
- async function removeAccountCommand(manager, accountId) {
226
- if (!accountId) {
227
- console.error('Error: Account ID required');
228
- console.error('Usage: opencode-gemini-business remove-account <account_id>');
229
- process.exit(1);
230
- }
231
- const removed = await manager.removeAccount(accountId);
232
- if (removed) {
233
- console.log(`✅ Account ${accountId} removed successfully`);
234
- }
235
- else {
236
- console.error(`❌ Account ${accountId} not found`);
237
- process.exit(1);
238
- }
239
- }
240
- /**
241
- * Test account command
242
- */
243
- async function testAccountCommand(manager, accountId) {
244
- if (!accountId) {
245
- console.error('Error: Account ID required');
246
- console.error('Usage: opencode-gemini-business test-account <account_id>');
247
- process.exit(1);
248
- }
249
- const accounts = manager.getAccounts();
250
- const account = accounts.find(acc => acc.id === accountId);
251
- if (!account) {
252
- console.error(`❌ Account ${accountId} not found`);
253
- process.exit(1);
254
- }
255
- console.log(`Testing account: ${account.name} (${account.id})`);
256
- console.log('Please wait...\n');
257
- const api = new GeminiBusinessAPI(account);
258
- const result = await api.testAccount();
259
- if (result.success) {
260
- console.log('✅ Account test successful!');
261
- console.log(' XSRF Token: OK');
262
- console.log(' Session: OK');
263
- console.log(' Authentication: OK');
264
- }
265
- else {
266
- console.log('❌ Account test failed!');
267
- console.log(` Error: ${result.error}`);
268
- process.exit(1);
269
- }
270
- }
271
- /**
272
- * Print help
273
- */
274
- function printHelp() {
275
- console.log('OpenCode Gemini Business Plugin');
276
- console.log('================================\n');
277
- console.log('Multi-account Gemini Business pool with automatic rotation\n');
278
- console.log('Commands:');
279
- console.log(' add-account <name> <team_id> <secure_c_ses> <host_c_oses> <csesidx> [user_agent]');
280
- console.log(' Add a new Gemini Business account\n');
281
- console.log(' list-accounts');
282
- console.log(' List all configured accounts\n');
283
- console.log(' remove-account <account_id>');
284
- console.log(' Remove an account\n');
285
- console.log(' test-account <account_id>');
286
- console.log(' Test account credentials\n');
287
- console.log(' help');
288
- console.log(' Show this help message\n');
289
- console.log('Environment Variables:');
290
- console.log(' GEMINI_ACCOUNT_NAME - Account name');
291
- console.log(' GEMINI_TEAM_ID - Team ID');
292
- console.log(' GEMINI_SECURE_C_SES - __Secure-c_ses cookie');
293
- console.log(' GEMINI_HOST_C_OSES - __Host-c_oses cookie');
294
- console.log(' GEMINI_CSESIDX - csesidx value');
295
- console.log(' GEMINI_USER_AGENT - Custom user agent (optional)\n');
296
- }
297
- // Export CLI function
298
- export { cli };
299
- // Run CLI if executed directly
300
- if (import.meta.url === `file://${process.argv[1]}`) {
301
- cli().catch(error => {
302
- console.error('Error:', error.message);
303
- process.exit(1);
304
- });
305
- }
306
89
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.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": "2.0.3",
3
+ "version": "2.0.5",
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",