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