opencode-gemini-cli-oauth 1.1.21 → 1.2.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.
Files changed (51) hide show
  1. package/dist/constants.d.ts +9 -20
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +18 -29
  4. package/dist/constants.js.map +1 -1
  5. package/dist/index.d.ts +4 -12
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -14
  8. package/dist/index.js.map +1 -1
  9. package/dist/oauth.d.ts +27 -0
  10. package/dist/oauth.d.ts.map +1 -0
  11. package/dist/oauth.js +170 -0
  12. package/dist/oauth.js.map +1 -0
  13. package/dist/plugin.d.ts +11 -28
  14. package/dist/plugin.d.ts.map +1 -1
  15. package/dist/plugin.js +170 -70
  16. package/dist/plugin.js.map +1 -1
  17. package/dist/types.d.ts +5 -44
  18. package/dist/types.d.ts.map +1 -1
  19. package/package.json +23 -21
  20. package/dist/auth/account-manager.d.ts +0 -16
  21. package/dist/auth/account-manager.d.ts.map +0 -1
  22. package/dist/auth/account-manager.js +0 -63
  23. package/dist/auth/account-manager.js.map +0 -1
  24. package/dist/auth/oauth.d.ts +0 -27
  25. package/dist/auth/oauth.d.ts.map +0 -1
  26. package/dist/auth/oauth.js +0 -89
  27. package/dist/auth/oauth.js.map +0 -1
  28. package/dist/cli/setup.d.ts +0 -3
  29. package/dist/cli/setup.d.ts.map +0 -1
  30. package/dist/cli/setup.js +0 -234
  31. package/dist/cli/setup.js.map +0 -1
  32. package/dist/index-minimal.d.ts +0 -2
  33. package/dist/index-minimal.d.ts.map +0 -1
  34. package/dist/index-minimal.js +0 -2
  35. package/dist/index-minimal.js.map +0 -1
  36. package/dist/index-simple.d.ts +0 -5
  37. package/dist/index-simple.d.ts.map +0 -1
  38. package/dist/index-simple.js +0 -5
  39. package/dist/index-simple.js.map +0 -1
  40. package/dist/plugin-minimal.d.ts +0 -21
  41. package/dist/plugin-minimal.d.ts.map +0 -1
  42. package/dist/plugin-minimal.js +0 -27
  43. package/dist/plugin-minimal.js.map +0 -1
  44. package/dist/plugin-simple.d.ts +0 -28
  45. package/dist/plugin-simple.d.ts.map +0 -1
  46. package/dist/plugin-simple.js +0 -117
  47. package/dist/plugin-simple.js.map +0 -1
  48. package/dist/storage/storage.d.ts +0 -56
  49. package/dist/storage/storage.d.ts.map +0 -1
  50. package/dist/storage/storage.js +0 -138
  51. package/dist/storage/storage.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":""}
package/dist/cli/setup.js DELETED
@@ -1,234 +0,0 @@
1
- #!/usr/bin/env node
2
- import fs from 'fs/promises';
3
- import path from 'path';
4
- import os from 'os';
5
- import http from 'http';
6
- import url from 'url';
7
- import { OAuth2Client } from 'google-auth-library';
8
- import { OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, OAUTH_SCOPES, OAUTH_CREDS_PATH, GEMINI_DIR, GOOGLE_ACCOUNTS_PATH } from '../constants.js';
9
- // Setup paths
10
- const OPENCODE_CONFIG_DIR = path.join(os.homedir(), '.config', 'opencode');
11
- const OPENCODE_CONFIG_PATH = path.join(OPENCODE_CONFIG_DIR, 'opencode.json');
12
- const MODELS_CONFIG = {
13
- "gemini-cli-oauth": {
14
- "name": "Gemini CLI",
15
- "npm": "opencode-gemini-cli-oauth",
16
- "api": "google",
17
- "models": {
18
- "gemini-2.0-flash-exp": {
19
- "name": "Gemini 2.0 Flash (Google Account)",
20
- "limit": { "context": 1048576, "output": 8192 },
21
- "modalities": { "input": ["text", "image", "audio", "video"], "output": ["text"] }
22
- },
23
- "gemini-1.5-pro-latest": {
24
- "name": "Gemini 1.5 Pro (Google Account)",
25
- "limit": { "context": 2097152, "output": 8192 },
26
- "modalities": { "input": ["text", "image", "audio", "video", "pdf"], "output": ["text"] }
27
- },
28
- "gemini-1.5-flash-latest": {
29
- "name": "Gemini 1.5 Flash (Google Account)",
30
- "limit": { "context": 1048576, "output": 8192 },
31
- "modalities": { "input": ["text", "image", "audio", "video", "pdf"], "output": ["text"] }
32
- },
33
- "gemini-exp-1206": {
34
- "name": "Gemini Experimental 1206 (Google Account)",
35
- "limit": { "context": 2097152, "output": 8192 },
36
- "modalities": { "input": ["text", "image"], "output": ["text"] }
37
- },
38
- "gemini-2.0-pro-exp-02-05": {
39
- "name": "Gemini 2.0 Pro Experimental (Google Account)",
40
- "limit": { "context": 2097152, "output": 8192 },
41
- "modalities": { "input": ["text", "image", "audio", "video", "pdf"], "output": ["text"] }
42
- }
43
- }
44
- }
45
- };
46
- // Helper for user input
47
- import readline from 'readline';
48
- const rl = readline.createInterface({
49
- input: process.stdin,
50
- output: process.stdout
51
- });
52
- const question = (query) => {
53
- return new Promise((resolve) => rl.question(query, resolve));
54
- };
55
- async function saveAccount(tokens, client) {
56
- // Get user info to identify account
57
- client.setCredentials(tokens);
58
- const userInfo = await client.getTokenInfo(tokens.access_token);
59
- const email = userInfo.email || 'unknown';
60
- console.log(`\n📧 Identified account: ${email}`);
61
- // 1. Update/Create google_accounts.json (Multi-account storage)
62
- let accounts = [];
63
- try {
64
- const data = await fs.readFile(GOOGLE_ACCOUNTS_PATH, 'utf-8');
65
- const parsed = JSON.parse(data);
66
- if (Array.isArray(parsed)) {
67
- accounts = parsed;
68
- }
69
- else {
70
- console.log('⚠️ Warning: google_accounts.json format invalid (not an array). Resetting.');
71
- accounts = [];
72
- }
73
- }
74
- catch (e) {
75
- // File doesn't exist yet or is corrupted
76
- accounts = [];
77
- }
78
- // Remove existing entry for this email if any
79
- accounts = accounts.filter(acc => acc.email !== email);
80
- // Add new entry
81
- accounts.push({
82
- email,
83
- tokens,
84
- last_active: Date.now()
85
- });
86
- await fs.writeFile(GOOGLE_ACCOUNTS_PATH, JSON.stringify(accounts, null, 2));
87
- console.log(`✅ Saved to account pool (${accounts.length} accounts total)`);
88
- // 2. Update oauth_creds.json (Current active account)
89
- // This ensures compatibility with Gemini CLI single-account mode
90
- await fs.writeFile(OAUTH_CREDS_PATH, JSON.stringify(tokens, null, 2));
91
- console.log('✅ Set as active account');
92
- }
93
- async function listAccounts() {
94
- try {
95
- const data = await fs.readFile(GOOGLE_ACCOUNTS_PATH, 'utf-8');
96
- const accounts = JSON.parse(data);
97
- console.log('\n👥 Registered Accounts:');
98
- accounts.forEach((acc, idx) => {
99
- console.log(` ${idx + 1}. ${acc.email}`);
100
- });
101
- console.log('');
102
- }
103
- catch (e) {
104
- console.log('\n👥 No accounts registered yet.\n');
105
- }
106
- }
107
- async function performLoopbackLogin() {
108
- console.log('\n🔐 Initiating Native Google Login (Loopback Flow)...');
109
- return new Promise((resolve, reject) => {
110
- let client;
111
- const server = http.createServer(async (req, res) => {
112
- try {
113
- if (!req.url)
114
- return;
115
- const query = url.parse(req.url, true).query;
116
- if (query.code) {
117
- const code = query.code;
118
- res.writeHead(200, { 'Content-Type': 'text/html' });
119
- res.end(`
120
- <html>
121
- <body style="font-family: sans-serif; text-align: center; padding-top: 50px;">
122
- <h1 style="color: #4CAF50;">Authentication Successful!</h1>
123
- <p>You can close this window and return to the terminal.</p>
124
- </body>
125
- </html>
126
- `);
127
- server.close();
128
- console.log('✅ Authorization code received!');
129
- console.log('🔄 Exchanging code for token...');
130
- try {
131
- const { tokens } = await client.getToken(code);
132
- await saveAccount(tokens, client);
133
- resolve();
134
- }
135
- catch (err) {
136
- reject(err);
137
- }
138
- }
139
- }
140
- catch (err) {
141
- console.error('Server error:', err);
142
- }
143
- });
144
- server.listen(0, async () => {
145
- const address = server.address();
146
- if (!address || typeof address === 'string') {
147
- reject(new Error('Failed to get server port'));
148
- return;
149
- }
150
- const port = address.port;
151
- const redirectUri = `http://localhost:${port}`;
152
- console.log(`🚀 Local server listening on port ${port}`);
153
- client = new OAuth2Client({
154
- clientId: OAUTH_CLIENT_ID,
155
- clientSecret: OAUTH_CLIENT_SECRET,
156
- redirectUri: redirectUri
157
- });
158
- const authorizeUrl = client.generateAuthUrl({
159
- access_type: 'offline',
160
- scope: OAUTH_SCOPES,
161
- prompt: 'consent'
162
- });
163
- console.log('\n👉 Opening browser to authorize...');
164
- console.log(` URL: ${authorizeUrl}`);
165
- const { exec } = await import('child_process');
166
- const start = (process.platform == 'darwin' ? 'open' : process.platform == 'win32' ? 'start' : 'xdg-open');
167
- exec(`${start} "${authorizeUrl}"`);
168
- });
169
- });
170
- }
171
- async function updateOpencodeConfig() {
172
- try {
173
- await fs.mkdir(OPENCODE_CONFIG_DIR, { recursive: true });
174
- let config = {};
175
- try {
176
- const content = await fs.readFile(OPENCODE_CONFIG_PATH, 'utf-8');
177
- config = JSON.parse(content);
178
- }
179
- catch (e) {
180
- console.log('Creating new OpenCode configuration file...');
181
- }
182
- if (!config.provider)
183
- config.provider = {};
184
- console.log('\n📦 Configuring models in opencode.json...');
185
- config.provider['gemini-cli-oauth'] = MODELS_CONFIG['gemini-cli-oauth'];
186
- if (!config.plugin)
187
- config.plugin = [];
188
- if (!config.plugin.includes('opencode-gemini-cli-oauth')) {
189
- config.plugin.push('opencode-gemini-cli-oauth');
190
- }
191
- await fs.writeFile(OPENCODE_CONFIG_PATH, JSON.stringify(config, null, 2));
192
- console.log('✅ Configuration updated successfully!');
193
- }
194
- catch (error) {
195
- console.error('❌ Failed to update configuration:', error);
196
- }
197
- }
198
- async function main() {
199
- await fs.mkdir(GEMINI_DIR, { recursive: true });
200
- console.log('🚀 OpenCode Gemini CLI OAuth Manager');
201
- console.log('====================================');
202
- await listAccounts();
203
- const action = await question('Choose action:\n1. Add/Login new account\n2. Update OpenCode config only\n3. Exit\n> ');
204
- if (action === '1') {
205
- await performLoopbackLogin();
206
- // Ask if want to add another
207
- while (true) {
208
- const addMore = await question('\nDo you want to add another account? (y/N) ');
209
- if (addMore.toLowerCase() === 'y') {
210
- await performLoopbackLogin();
211
- }
212
- else {
213
- break;
214
- }
215
- }
216
- }
217
- else if (action === '3') {
218
- process.exit(0);
219
- }
220
- // Always offer to update config at the end
221
- const updateConfig = await question('\nUpdate OpenCode configuration? (Y/n) ');
222
- if (updateConfig.toLowerCase() !== 'n') {
223
- await updateOpencodeConfig();
224
- }
225
- console.log('\n✨ Done!');
226
- rl.close();
227
- process.exit(0);
228
- }
229
- main().catch((error) => {
230
- console.error('\n❌ Operation failed:', error.message);
231
- rl.close();
232
- process.exit(1);
233
- });
234
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { GeminiCLIOAuthPlugin, metadata } from './plugin-minimal.js';
2
- //# sourceMappingURL=index-minimal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-minimal.d.ts","sourceRoot":"","sources":["../src/index-minimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { GeminiCLIOAuthPlugin, metadata } from './plugin-minimal.js';
2
- //# sourceMappingURL=index-minimal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-minimal.js","sourceRoot":"","sources":["../src/index-minimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Simplified entry point (no classes)
3
- */
4
- export { GeminiCLIOAuthPlugin, metadata } from './plugin-simple.js';
5
- //# sourceMappingURL=index-simple.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-simple.d.ts","sourceRoot":"","sources":["../src/index-simple.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Simplified entry point (no classes)
3
- */
4
- export { GeminiCLIOAuthPlugin, metadata } from './plugin-simple.js';
5
- //# sourceMappingURL=index-simple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-simple.js","sourceRoot":"","sources":["../src/index-simple.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Minimal test - just to see if plugin structure is correct
3
- */
4
- export declare const GeminiCLIOAuthPlugin: ({ client, directory }: any) => Promise<{
5
- auth: {
6
- provider: string;
7
- loader: (getAuth: any, provider: string) => Promise<{
8
- apiKey?: undefined;
9
- fetch?: undefined;
10
- } | {
11
- apiKey: string;
12
- fetch: typeof fetch;
13
- }>;
14
- };
15
- }>;
16
- export declare const metadata: {
17
- name: string;
18
- version: string;
19
- description: string;
20
- };
21
- //# sourceMappingURL=plugin-minimal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-minimal.d.ts","sourceRoot":"","sources":["../src/plugin-minimal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,oBAAoB,GAAU,uBAAuB,GAAG;;;0BAMvC,GAAG,YAAY,MAAM;;;;;;;;EAclD,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Minimal test - just to see if plugin structure is correct
3
- */
4
- export const GeminiCLIOAuthPlugin = async ({ client, directory }) => {
5
- console.log('🚀 Minimal Gemini CLI OAuth plugin loading...');
6
- return {
7
- auth: {
8
- provider: 'gemini-cli-oauth',
9
- loader: async (getAuth, provider) => {
10
- if (provider !== 'gemini-cli-oauth') {
11
- return {};
12
- }
13
- console.log(`🔐 Provider: ${provider}`);
14
- return {
15
- apiKey: '',
16
- fetch: fetch, // Just use native fetch for now to test structure
17
- };
18
- },
19
- },
20
- };
21
- };
22
- export const metadata = {
23
- name: 'opencode-gemini-cli-oauth',
24
- version: '1.0.2-minimal',
25
- description: 'Minimal test',
26
- };
27
- //# sourceMappingURL=plugin-minimal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-minimal.js","sourceRoot":"","sources":["../src/plugin-minimal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAO,EAAE,EAAE;IACvE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE7D,OAAO;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,kBAAkB;YAC5B,MAAM,EAAE,KAAK,EAAE,OAAY,EAAE,QAAgB,EAAE,EAAE;gBAC/C,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;oBACpC,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;gBAExC,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,KAAK,EAAE,kDAAkD;iBACjE,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,cAAc;CAC5B,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Yusuf
4
- * SPDX-License-Identifier: MIT
5
- *
6
- * Simplified OpenCode Plugin for Gemini CLI OAuth (No Classes)
7
- */
8
- /**
9
- * OpenCode plugin export (following Antigravity pattern)
10
- */
11
- export declare const GeminiCLIOAuthPlugin: ({ client, directory }: any) => Promise<{
12
- auth: {
13
- provider: string;
14
- loader: (getAuth: any, provider: string) => Promise<{
15
- apiKey?: undefined;
16
- fetch?: undefined;
17
- } | {
18
- apiKey: string;
19
- fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
20
- }>;
21
- };
22
- }>;
23
- export declare const metadata: {
24
- name: string;
25
- version: string;
26
- description: string;
27
- };
28
- //# sourceMappingURL=plugin-simple.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-simple.d.ts","sourceRoot":"","sources":["../src/plugin-simple.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4EH;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAU,uBAAuB,GAAG;;;0BAcvC,GAAG,YAAY,MAAM;;;;;yBAWtB,WAAW,GAAG,GAAG,SAAS,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;;;EAyBrF,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;CAIpB,CAAC"}
@@ -1,117 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Yusuf
4
- * SPDX-License-Identifier: MIT
5
- *
6
- * Simplified OpenCode Plugin for Gemini CLI OAuth (No Classes)
7
- */
8
- import fs from 'node:fs/promises';
9
- import path from 'node:path';
10
- import os from 'node:os';
11
- import { OAuth2Client } from 'google-auth-library';
12
- const OAUTH_CLIENT_ID = '681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com';
13
- const OAUTH_CLIENT_SECRET = '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';
14
- const OAUTH_CREDS_PATH = path.join(os.homedir(), '.gemini/oauth_creds.json');
15
- /**
16
- * Get OAuth access token from Gemini CLI credentials
17
- */
18
- async function getAccessToken() {
19
- try {
20
- const data = await fs.readFile(OAUTH_CREDS_PATH, 'utf-8');
21
- const credentials = JSON.parse(data);
22
- // Check if token needs refresh
23
- const now = Date.now();
24
- const expiryTime = credentials.expiry_date || 0;
25
- const needsRefresh = expiryTime - now < 5 * 60 * 1000; // 5 min buffer
26
- if (needsRefresh && credentials.refresh_token) {
27
- // Refresh token
28
- const client = new OAuth2Client(OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET);
29
- client.setCredentials({ refresh_token: credentials.refresh_token });
30
- const { credentials: refreshed } = await client.refreshAccessToken();
31
- if (refreshed.access_token) {
32
- // Update stored credentials
33
- credentials.access_token = refreshed.access_token;
34
- credentials.expiry_date = refreshed.expiry_date || Date.now() + 3600 * 1000;
35
- await fs.writeFile(OAUTH_CREDS_PATH, JSON.stringify(credentials, null, 2), 'utf-8');
36
- return refreshed.access_token;
37
- }
38
- }
39
- return credentials.access_token;
40
- }
41
- catch (error) {
42
- throw new Error(`Failed to get OAuth token: ${error instanceof Error ? error.message : String(error)}`);
43
- }
44
- }
45
- /**
46
- * Create authenticated fetch with OAuth token injection
47
- */
48
- function createAuthFetch() {
49
- return async function (input, init) {
50
- const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
51
- // Only intercept Gemini API requests
52
- if (!url.includes('generativelanguage.googleapis.com')) {
53
- return fetch(input, init);
54
- }
55
- // Get OAuth token
56
- const token = await getAccessToken();
57
- // Inject Authorization header
58
- const headers = new Headers(init === null || init === void 0 ? void 0 : init.headers);
59
- headers.set('Authorization', `Bearer ${token}`);
60
- // Remove API key from URL if present
61
- const urlObj = new URL(url);
62
- urlObj.searchParams.delete('key');
63
- return fetch(urlObj.toString(), { ...init, headers });
64
- };
65
- }
66
- /**
67
- * OpenCode plugin export (following Antigravity pattern)
68
- */
69
- export const GeminiCLIOAuthPlugin = async ({ client, directory }) => {
70
- console.log('🚀 Loading Gemini CLI OAuth plugin...');
71
- // Verify credentials exist
72
- try {
73
- await fs.access(OAUTH_CREDS_PATH);
74
- console.log('✅ OAuth credentials found');
75
- }
76
- catch (error) {
77
- console.warn('⚠️ No OAuth credentials. Run: gemini auth login');
78
- }
79
- return {
80
- auth: {
81
- provider: 'gemini-cli-oauth',
82
- loader: async (getAuth, provider) => {
83
- // Only intercept for our provider
84
- if (provider !== 'gemini-cli-oauth') {
85
- return {};
86
- }
87
- console.log(`🔐 Gemini CLI OAuth: Active for provider ${provider}`);
88
- // Return object with apiKey and fetch function (Antigravity pattern)
89
- return {
90
- apiKey: '',
91
- async fetch(input, init) {
92
- const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
93
- // Pass through non-Gemini API requests
94
- if (!url.includes('generativelanguage.googleapis.com')) {
95
- return fetch(input, init);
96
- }
97
- // Get OAuth token
98
- const token = await getAccessToken();
99
- // Inject Authorization header
100
- const headers = new Headers(init === null || init === void 0 ? void 0 : init.headers);
101
- headers.set('Authorization', `Bearer ${token}`);
102
- // Remove API key from URL if present
103
- const urlObj = new URL(url);
104
- urlObj.searchParams.delete('key');
105
- return fetch(urlObj.toString(), { ...init, headers });
106
- },
107
- };
108
- },
109
- },
110
- };
111
- };
112
- export const metadata = {
113
- name: 'opencode-gemini-cli-oauth',
114
- version: '1.0.1-simplified',
115
- description: 'Simplified Gemini CLI OAuth plugin',
116
- };
117
- //# sourceMappingURL=plugin-simple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-simple.js","sourceRoot":"","sources":["../src/plugin-simple.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Yusuf
4
- * SPDX-License-Identifier: MIT
5
- */
6
- import type { OAuthCredentials, GoogleAccount, AccountPool, AccountPoolEntry } from '../types.js';
7
- /**
8
- * Storage manager for OAuth credentials and account pool
9
- */
10
- export declare const StorageManager: {
11
- /**
12
- * Ensure storage directories exist
13
- */
14
- ensureDirectories(): Promise<void>;
15
- /**
16
- * Read OAuth credentials from Gemini CLI storage
17
- */
18
- readOAuthCredentials(): Promise<OAuthCredentials | null>;
19
- /**
20
- * Write OAuth credentials to Gemini CLI storage
21
- */
22
- writeOAuthCredentials(credentials: OAuthCredentials): Promise<void>;
23
- /**
24
- * Read Google accounts list from Gemini CLI
25
- */
26
- readGoogleAccounts(): Promise<GoogleAccount[]>;
27
- /**
28
- * Read account pool
29
- */
30
- readAccountPool(): Promise<AccountPool>;
31
- /**
32
- * Write account pool
33
- */
34
- writeAccountPool(pool: AccountPool): Promise<void>;
35
- /**
36
- * Update account in pool
37
- */
38
- updateAccountInPool(email: string, updates: Partial<AccountPoolEntry>): Promise<void>;
39
- /**
40
- * Add or update account in pool
41
- */
42
- upsertAccountInPool(entry: AccountPoolEntry): Promise<void>;
43
- /**
44
- * Remove account from pool
45
- */
46
- removeAccountFromPool(email: string): Promise<void>;
47
- /**
48
- * Get current active account from pool
49
- */
50
- getCurrentAccount(): Promise<AccountPoolEntry | null>;
51
- /**
52
- * Rotate to next account in pool
53
- */
54
- rotateToNextAccount(): Promise<AccountPoolEntry | null>;
55
- };
56
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACwB,OAAO,CAAC,IAAI,CAAC;IAKxC;;OAEG;4BAC2B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAY9D;;OAEG;uCACsC,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE;;OAEG;0BACyB,OAAO,CAAC,aAAa,EAAE,CAAC;IAapD;;OAEG;uBACsB,OAAO,CAAC,WAAW,CAAC;IAY7C;;OAEG;2BAC0B,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;OAEG;+BAEM,MAAM,WACJ,OAAO,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IAahB;;OAEG;+BAC8B,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE;;OAEG;iCACgC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD;;OAEG;yBACwB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAQ3D;;OAEG;2BAC0B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAW9D,CAAC"}