opencode-gemini-cli-oauth 1.1.2 ā 1.1.3
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/dist/cli/setup.js +80 -31
- package/dist/cli/setup.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/setup.js
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
import fs from 'fs/promises';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import os from 'os';
|
|
5
|
-
import
|
|
5
|
+
import http from 'http';
|
|
6
|
+
import url from 'url';
|
|
6
7
|
import { OAuth2Client } from 'google-auth-library';
|
|
7
8
|
import { OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, OAUTH_SCOPES, OAUTH_CREDS_PATH, GEMINI_DIR } from '../constants.js';
|
|
9
|
+
// Setup paths
|
|
8
10
|
const OPENCODE_CONFIG_DIR = path.join(os.homedir(), '.config', 'opencode');
|
|
9
11
|
const OPENCODE_CONFIG_PATH = path.join(OPENCODE_CONFIG_DIR, 'opencode.json');
|
|
10
12
|
const MODELS_CONFIG = {
|
|
@@ -34,6 +36,8 @@ const MODELS_CONFIG = {
|
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
};
|
|
39
|
+
// Helper for user input
|
|
40
|
+
import readline from 'readline';
|
|
37
41
|
const rl = readline.createInterface({
|
|
38
42
|
input: process.stdin,
|
|
39
43
|
output: process.stdout
|
|
@@ -41,32 +45,79 @@ const rl = readline.createInterface({
|
|
|
41
45
|
const question = (query) => {
|
|
42
46
|
return new Promise((resolve) => rl.question(query, resolve));
|
|
43
47
|
};
|
|
44
|
-
async function
|
|
45
|
-
console.log('\nš Initiating Native Google Login...');
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
async function performLoopbackLogin() {
|
|
49
|
+
console.log('\nš Initiating Native Google Login (Loopback Flow)...');
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
51
|
+
let client; // Declare client here
|
|
52
|
+
// Create a local server to receive the code
|
|
53
|
+
const server = http.createServer(async (req, res) => {
|
|
54
|
+
try {
|
|
55
|
+
if (!req.url)
|
|
56
|
+
return;
|
|
57
|
+
const query = url.parse(req.url, true).query;
|
|
58
|
+
if (query.code) {
|
|
59
|
+
const code = query.code;
|
|
60
|
+
// Close the browser tab
|
|
61
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
62
|
+
res.end(`
|
|
63
|
+
<html>
|
|
64
|
+
<body style="font-family: sans-serif; text-align: center; padding-top: 50px;">
|
|
65
|
+
<h1 style="color: #4CAF50;">Authentication Successful!</h1>
|
|
66
|
+
<p>You can close this window and return to the terminal.</p>
|
|
67
|
+
</body>
|
|
68
|
+
</html>
|
|
69
|
+
`);
|
|
70
|
+
// Close server
|
|
71
|
+
server.close();
|
|
72
|
+
console.log('ā
Authorization code received!');
|
|
73
|
+
console.log('š Exchanging code for token...');
|
|
74
|
+
try {
|
|
75
|
+
// Exchange code for tokens (client is now accessible)
|
|
76
|
+
const { tokens } = await client.getToken(code);
|
|
77
|
+
// Save credentials
|
|
78
|
+
await fs.mkdir(GEMINI_DIR, { recursive: true });
|
|
79
|
+
await fs.writeFile(OAUTH_CREDS_PATH, JSON.stringify(tokens, null, 2));
|
|
80
|
+
console.log('ā
Authentication successful! Credentials saved.');
|
|
81
|
+
resolve();
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
reject(err);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.error('Server error:', err);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
// Listen on a random available port
|
|
93
|
+
server.listen(0, async () => {
|
|
94
|
+
const address = server.address();
|
|
95
|
+
if (!address || typeof address === 'string') {
|
|
96
|
+
reject(new Error('Failed to get server port'));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const port = address.port;
|
|
100
|
+
const redirectUri = `http://localhost:${port}`;
|
|
101
|
+
console.log(`š Local server listening on port ${port}`);
|
|
102
|
+
// Initialize OAuth client with dynamic redirect URI
|
|
103
|
+
client = new OAuth2Client({
|
|
104
|
+
clientId: OAUTH_CLIENT_ID,
|
|
105
|
+
clientSecret: OAUTH_CLIENT_SECRET,
|
|
106
|
+
redirectUri: redirectUri
|
|
107
|
+
});
|
|
108
|
+
const authorizeUrl = client.generateAuthUrl({
|
|
109
|
+
access_type: 'offline',
|
|
110
|
+
scope: OAUTH_SCOPES,
|
|
111
|
+
prompt: 'consent'
|
|
112
|
+
});
|
|
113
|
+
console.log('\nš Opening browser to authorize...');
|
|
114
|
+
console.log(` URL: ${authorizeUrl}`);
|
|
115
|
+
// Try to open browser, or ask user to click
|
|
116
|
+
const { exec } = await import('child_process');
|
|
117
|
+
const start = (process.platform == 'darwin' ? 'open' : process.platform == 'win32' ? 'start' : 'xdg-open');
|
|
118
|
+
exec(`${start} "${authorizeUrl}"`);
|
|
119
|
+
});
|
|
55
120
|
});
|
|
56
|
-
console.log('\nš Open this URL in your browser to authorize:\n');
|
|
57
|
-
console.log(authorizeUrl);
|
|
58
|
-
console.log('\n');
|
|
59
|
-
const code = await question('š Paste the authorization code here: ');
|
|
60
|
-
if (!code) {
|
|
61
|
-
throw new Error('No code provided');
|
|
62
|
-
}
|
|
63
|
-
console.log('š Exchanging code for token...');
|
|
64
|
-
const { tokens } = await client.getToken(code.trim());
|
|
65
|
-
// Save credentials
|
|
66
|
-
await fs.mkdir(GEMINI_DIR, { recursive: true });
|
|
67
|
-
await fs.writeFile(OAUTH_CREDS_PATH, JSON.stringify(tokens, null, 2));
|
|
68
|
-
console.log('ā
Authentication successful! Credentials saved.');
|
|
69
|
-
return tokens;
|
|
70
121
|
}
|
|
71
122
|
async function updateOpencodeConfig() {
|
|
72
123
|
try {
|
|
@@ -79,13 +130,10 @@ async function updateOpencodeConfig() {
|
|
|
79
130
|
catch (e) {
|
|
80
131
|
console.log('Creating new OpenCode configuration file...');
|
|
81
132
|
}
|
|
82
|
-
// Ensure provider section exists
|
|
83
133
|
if (!config.provider)
|
|
84
134
|
config.provider = {};
|
|
85
|
-
// Merge our models
|
|
86
135
|
console.log('\nš¦ Configuring models in opencode.json...');
|
|
87
136
|
config.provider['gemini-cli-oauth'] = MODELS_CONFIG['gemini-cli-oauth'];
|
|
88
|
-
// Ensure plugin is listed
|
|
89
137
|
if (!config.plugin)
|
|
90
138
|
config.plugin = [];
|
|
91
139
|
if (!config.plugin.includes('opencode-gemini-cli-oauth')) {
|
|
@@ -108,14 +156,14 @@ async function main() {
|
|
|
108
156
|
console.log('ā
OAuth credentials found.');
|
|
109
157
|
const answer = await question('Do you want to re-authenticate? (y/N) ');
|
|
110
158
|
if (answer.toLowerCase() === 'y') {
|
|
111
|
-
await
|
|
159
|
+
await performLoopbackLogin();
|
|
112
160
|
}
|
|
113
161
|
}
|
|
114
162
|
catch {
|
|
115
163
|
console.log('ā ļø No OAuth credentials found.');
|
|
116
164
|
const answer = await question('Do you want to login now? (Y/n) ');
|
|
117
165
|
if (answer.toLowerCase() !== 'n') {
|
|
118
|
-
await
|
|
166
|
+
await performLoopbackLogin();
|
|
119
167
|
}
|
|
120
168
|
}
|
|
121
169
|
// 2. Update Config
|
|
@@ -126,6 +174,7 @@ async function main() {
|
|
|
126
174
|
console.log('\n⨠Setup Complete!');
|
|
127
175
|
console.log('You can now use "Gemini (Google Account)" models in OpenCode.');
|
|
128
176
|
rl.close();
|
|
177
|
+
process.exit(0);
|
|
129
178
|
}
|
|
130
179
|
main().catch((error) => {
|
|
131
180
|
console.error('\nā Setup failed:', error.message);
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED