opencode-gemini-cli-oauth 1.1.1 ā 1.1.2
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 +35 -32
- package/dist/cli/setup.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/setup.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { spawn } from 'child_process';
|
|
3
2
|
import fs from 'fs/promises';
|
|
4
3
|
import path from 'path';
|
|
5
4
|
import os from 'os';
|
|
6
5
|
import readline from 'readline';
|
|
7
|
-
|
|
6
|
+
import { OAuth2Client } from 'google-auth-library';
|
|
7
|
+
import { OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, OAUTH_SCOPES, OAUTH_CREDS_PATH, GEMINI_DIR } from '../constants.js';
|
|
8
8
|
const OPENCODE_CONFIG_DIR = path.join(os.homedir(), '.config', 'opencode');
|
|
9
9
|
const OPENCODE_CONFIG_PATH = path.join(OPENCODE_CONFIG_DIR, 'opencode.json');
|
|
10
|
-
const OAUTH_CREDS_PATH = path.join(GEMINI_DIR, 'oauth_creds.json');
|
|
11
10
|
const MODELS_CONFIG = {
|
|
12
11
|
"gemini-cli-oauth": {
|
|
13
12
|
"npm": "opencode-gemini-cli-oauth",
|
|
@@ -42,25 +41,32 @@ const rl = readline.createInterface({
|
|
|
42
41
|
const question = (query) => {
|
|
43
42
|
return new Promise((resolve) => rl.question(query, resolve));
|
|
44
43
|
};
|
|
45
|
-
async function
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
async function performNativeLogin() {
|
|
45
|
+
console.log('\nš Initiating Native Google Login...');
|
|
46
|
+
const client = new OAuth2Client({
|
|
47
|
+
clientId: OAUTH_CLIENT_ID,
|
|
48
|
+
clientSecret: OAUTH_CLIENT_SECRET,
|
|
49
|
+
redirectUri: 'urn:ietf:wg:oauth:2.0:oob'
|
|
50
50
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return new Promise((resolve, reject) => {
|
|
56
|
-
const login = spawn('gemini', ['auth', 'login'], { stdio: 'inherit' });
|
|
57
|
-
login.on('close', (code) => {
|
|
58
|
-
if (code === 0)
|
|
59
|
-
resolve();
|
|
60
|
-
else
|
|
61
|
-
reject(new Error('Login failed'));
|
|
62
|
-
});
|
|
51
|
+
const authorizeUrl = client.generateAuthUrl({
|
|
52
|
+
access_type: 'offline',
|
|
53
|
+
scope: OAUTH_SCOPES,
|
|
54
|
+
prompt: 'consent' // Force refresh token
|
|
63
55
|
});
|
|
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;
|
|
64
70
|
}
|
|
65
71
|
async function updateOpencodeConfig() {
|
|
66
72
|
try {
|
|
@@ -96,30 +102,23 @@ async function updateOpencodeConfig() {
|
|
|
96
102
|
async function main() {
|
|
97
103
|
console.log('š OpenCode Gemini CLI OAuth Setup');
|
|
98
104
|
console.log('==================================');
|
|
99
|
-
// 1. Check
|
|
100
|
-
const hasGemini = await checkGeminiCliInstalled();
|
|
101
|
-
if (!hasGemini) {
|
|
102
|
-
console.error('ā Gemini CLI is not installed.');
|
|
103
|
-
console.log('Please install it first: npm install -g @google/gemini-cli');
|
|
104
|
-
process.exit(1);
|
|
105
|
-
}
|
|
106
|
-
// 2. Check Auth
|
|
105
|
+
// 1. Check Auth
|
|
107
106
|
try {
|
|
108
107
|
await fs.access(OAUTH_CREDS_PATH);
|
|
109
108
|
console.log('ā
OAuth credentials found.');
|
|
110
109
|
const answer = await question('Do you want to re-authenticate? (y/N) ');
|
|
111
110
|
if (answer.toLowerCase() === 'y') {
|
|
112
|
-
await
|
|
111
|
+
await performNativeLogin();
|
|
113
112
|
}
|
|
114
113
|
}
|
|
115
114
|
catch {
|
|
116
115
|
console.log('ā ļø No OAuth credentials found.');
|
|
117
116
|
const answer = await question('Do you want to login now? (Y/n) ');
|
|
118
117
|
if (answer.toLowerCase() !== 'n') {
|
|
119
|
-
await
|
|
118
|
+
await performNativeLogin();
|
|
120
119
|
}
|
|
121
120
|
}
|
|
122
|
-
//
|
|
121
|
+
// 2. Update Config
|
|
123
122
|
const updateConfig = await question('Do you want to automatically configure OpenCode models? (Y/n) ');
|
|
124
123
|
if (updateConfig.toLowerCase() !== 'n') {
|
|
125
124
|
await updateOpencodeConfig();
|
|
@@ -128,5 +127,9 @@ async function main() {
|
|
|
128
127
|
console.log('You can now use "Gemini (Google Account)" models in OpenCode.');
|
|
129
128
|
rl.close();
|
|
130
129
|
}
|
|
131
|
-
main().catch(
|
|
130
|
+
main().catch((error) => {
|
|
131
|
+
console.error('\nā Setup failed:', error.message);
|
|
132
|
+
rl.close();
|
|
133
|
+
process.exit(1);
|
|
134
|
+
});
|
|
132
135
|
//# sourceMappingURL=setup.js.map
|
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,
|
|
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,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3E,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAE7E,MAAM,aAAa,GAAG;IACpB,kBAAkB,EAAE;QAClB,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE;YACR,sBAAsB,EAAE;gBACtB,MAAM,EAAE,mCAAmC;gBAC3C,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aACnF;YACD,uBAAuB,EAAE;gBACvB,MAAM,EAAE,iCAAiC;gBACzC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aAC1F;YACD,yBAAyB,EAAE;gBACzB,MAAM,EAAE,mCAAmC;gBAC3C,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aAC1F;YACD,iBAAiB,EAAE;gBACjB,MAAM,EAAE,2CAA2C;gBACnD,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aACjE;SACF;KACF;CACF,CAAC;AAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAmB,EAAE;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,KAAK,UAAU,kBAAkB;IAC/B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,QAAQ,EAAE,eAAe;QACzB,YAAY,EAAE,mBAAmB;QACjC,WAAW,EAAE,2BAA2B;KACzC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;QAC1C,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,SAAS,CAAC,sBAAsB;KACzC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAElB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,wCAAwC,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEtE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAE3C,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAExE,0BAA0B;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,gBAAgB,oBAAoB,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,gBAAgB;IAChB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,wCAAwC,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,kBAAkB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,kBAAkB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,gEAAgE,CAAC,CAAC;IACtG,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QACvC,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED