@kenkaiiii/ggcoder 4.3.38 → 4.3.40
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.js +80 -65
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +4 -1
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/compaction/token-estimator.js +14 -1
- package/dist/core/compaction/token-estimator.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +27 -25
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/oauth/gemini.d.ts +4 -0
- package/dist/core/oauth/gemini.d.ts.map +1 -0
- package/dist/core/oauth/gemini.js +293 -0
- package/dist/core/oauth/gemini.js.map +1 -0
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +322 -1
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/tools/plan-mode.test.js +13 -1
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +32 -6
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/read.test.js +23 -4
- package/dist/tools/read.test.js.map +1 -1
- package/dist/tools/write.test.js +13 -1
- package/dist/tools/write.test.js.map +1 -1
- package/dist/ui/login.js +4 -4
- package/dist/ui/login.js.map +1 -1
- package/dist/utils/image.d.ts +11 -0
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +41 -15
- package/dist/utils/image.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import net from "node:net";
|
|
3
|
+
import crypto from "node:crypto";
|
|
4
|
+
// Public "installed app" client — per RFC 8252 / Google OAuth docs, the
|
|
5
|
+
// embedded secret is not confidential. This is the same client the official
|
|
6
|
+
// Gemini CLI ships with.
|
|
7
|
+
const CLIENT_ID = "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com";
|
|
8
|
+
const CLIENT_SECRET = "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";
|
|
9
|
+
const AUTHORIZE_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
10
|
+
const TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
11
|
+
const SCOPES = [
|
|
12
|
+
"https://www.googleapis.com/auth/cloud-platform",
|
|
13
|
+
"https://www.googleapis.com/auth/userinfo.email",
|
|
14
|
+
"https://www.googleapis.com/auth/userinfo.profile",
|
|
15
|
+
].join(" ");
|
|
16
|
+
const CODE_ASSIST_ENDPOINT = "https://cloudcode-pa.googleapis.com";
|
|
17
|
+
const CODE_ASSIST_API_VERSION = "v1internal";
|
|
18
|
+
const CLIENT_METADATA = {
|
|
19
|
+
ideType: "IDE_UNSPECIFIED",
|
|
20
|
+
platform: "PLATFORM_UNSPECIFIED",
|
|
21
|
+
pluginType: "GEMINI",
|
|
22
|
+
};
|
|
23
|
+
// ── Login ──────────────────────────────────────────────────
|
|
24
|
+
export async function loginGemini(callbacks) {
|
|
25
|
+
const port = await getAvailablePort();
|
|
26
|
+
const redirectUri = `http://127.0.0.1:${port}/oauth2callback`;
|
|
27
|
+
const state = crypto.randomBytes(32).toString("hex");
|
|
28
|
+
const url = new URL(AUTHORIZE_URL);
|
|
29
|
+
url.searchParams.set("client_id", CLIENT_ID);
|
|
30
|
+
url.searchParams.set("redirect_uri", redirectUri);
|
|
31
|
+
url.searchParams.set("response_type", "code");
|
|
32
|
+
url.searchParams.set("scope", SCOPES);
|
|
33
|
+
url.searchParams.set("access_type", "offline");
|
|
34
|
+
url.searchParams.set("prompt", "consent");
|
|
35
|
+
url.searchParams.set("state", state);
|
|
36
|
+
const code = await loginWithServer(url.toString(), state, redirectUri, port, callbacks);
|
|
37
|
+
const creds = await exchangeGeminiCode(code, redirectUri);
|
|
38
|
+
callbacks.onStatus("Completing Gemini onboarding...");
|
|
39
|
+
const projectId = await setupUser(creds.accessToken);
|
|
40
|
+
creds.projectId = projectId;
|
|
41
|
+
return creds;
|
|
42
|
+
}
|
|
43
|
+
async function loginWithServer(authUrl, expectedState, redirectUri, port, callbacks) {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
let receivedCode = null;
|
|
46
|
+
let receivedError = null;
|
|
47
|
+
let timeoutHandle = null;
|
|
48
|
+
const server = http.createServer((req, res) => {
|
|
49
|
+
const reqUrl = new URL(req.url || "", `http://127.0.0.1:${port}`);
|
|
50
|
+
if (reqUrl.pathname !== "/oauth2callback") {
|
|
51
|
+
res.statusCode = 404;
|
|
52
|
+
res.end("Not found");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const err = reqUrl.searchParams.get("error");
|
|
56
|
+
if (err) {
|
|
57
|
+
receivedError = `${err}: ${reqUrl.searchParams.get("error_description") ?? "no description"}`;
|
|
58
|
+
res.writeHead(302, {
|
|
59
|
+
Location: "https://developers.google.com/gemini-code-assist/auth_failure_gemini",
|
|
60
|
+
});
|
|
61
|
+
res.end();
|
|
62
|
+
server.closeAllConnections?.();
|
|
63
|
+
server.close();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (reqUrl.searchParams.get("state") !== expectedState) {
|
|
67
|
+
receivedError = "OAuth state mismatch — possible CSRF. Please try again.";
|
|
68
|
+
res.statusCode = 400;
|
|
69
|
+
res.end(receivedError);
|
|
70
|
+
server.closeAllConnections?.();
|
|
71
|
+
server.close();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const code = reqUrl.searchParams.get("code");
|
|
75
|
+
if (!code) {
|
|
76
|
+
receivedError = "No authorization code received from Google.";
|
|
77
|
+
res.statusCode = 400;
|
|
78
|
+
res.end(receivedError);
|
|
79
|
+
server.closeAllConnections?.();
|
|
80
|
+
server.close();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
receivedCode = code;
|
|
84
|
+
res.writeHead(302, {
|
|
85
|
+
Location: "https://developers.google.com/gemini-code-assist/auth_success_gemini",
|
|
86
|
+
});
|
|
87
|
+
res.end();
|
|
88
|
+
server.closeAllConnections?.();
|
|
89
|
+
server.close();
|
|
90
|
+
});
|
|
91
|
+
server.on("error", (err) => {
|
|
92
|
+
reject(err);
|
|
93
|
+
});
|
|
94
|
+
server.listen(port, "127.0.0.1", () => {
|
|
95
|
+
callbacks.onOpenUrl(authUrl);
|
|
96
|
+
callbacks.onStatus("Waiting for browser callback...");
|
|
97
|
+
});
|
|
98
|
+
server.on("close", () => {
|
|
99
|
+
if (timeoutHandle) {
|
|
100
|
+
clearTimeout(timeoutHandle);
|
|
101
|
+
timeoutHandle = null;
|
|
102
|
+
}
|
|
103
|
+
if (receivedCode) {
|
|
104
|
+
resolve(receivedCode);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
reject(new Error(receivedError ?? "Server closed without receiving code"));
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
timeoutHandle = setTimeout(() => {
|
|
111
|
+
if (!receivedCode && !receivedError) {
|
|
112
|
+
receivedError = "OAuth callback timed out after 2 minutes.";
|
|
113
|
+
server.closeAllConnections?.();
|
|
114
|
+
server.close();
|
|
115
|
+
}
|
|
116
|
+
}, 2 * 60 * 1000);
|
|
117
|
+
// Don't keep the Node event loop alive on the timer alone — once the
|
|
118
|
+
// callback arrives and the server closes, the process should exit.
|
|
119
|
+
timeoutHandle.unref();
|
|
120
|
+
void redirectUri; // referenced above for URL construction
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
async function exchangeGeminiCode(code, redirectUri) {
|
|
124
|
+
const response = await fetch(TOKEN_URL, {
|
|
125
|
+
method: "POST",
|
|
126
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
127
|
+
body: new URLSearchParams({
|
|
128
|
+
grant_type: "authorization_code",
|
|
129
|
+
client_id: CLIENT_ID,
|
|
130
|
+
client_secret: CLIENT_SECRET,
|
|
131
|
+
code,
|
|
132
|
+
redirect_uri: redirectUri,
|
|
133
|
+
}),
|
|
134
|
+
});
|
|
135
|
+
if (!response.ok) {
|
|
136
|
+
const text = await response.text();
|
|
137
|
+
throw new Error(`Gemini token exchange failed (${response.status}): ${text}`);
|
|
138
|
+
}
|
|
139
|
+
const data = (await response.json());
|
|
140
|
+
return {
|
|
141
|
+
accessToken: data.access_token,
|
|
142
|
+
refreshToken: data.refresh_token,
|
|
143
|
+
expiresAt: Date.now() + data.expires_in * 1000 - 60_000,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export async function refreshGeminiToken(refreshToken) {
|
|
147
|
+
const response = await fetch(TOKEN_URL, {
|
|
148
|
+
method: "POST",
|
|
149
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
150
|
+
body: new URLSearchParams({
|
|
151
|
+
grant_type: "refresh_token",
|
|
152
|
+
client_id: CLIENT_ID,
|
|
153
|
+
client_secret: CLIENT_SECRET,
|
|
154
|
+
refresh_token: refreshToken,
|
|
155
|
+
}),
|
|
156
|
+
});
|
|
157
|
+
if (!response.ok) {
|
|
158
|
+
const text = await response.text();
|
|
159
|
+
throw new Error(`Gemini token refresh failed (${response.status}): ${text}`);
|
|
160
|
+
}
|
|
161
|
+
const data = (await response.json());
|
|
162
|
+
return {
|
|
163
|
+
accessToken: data.access_token,
|
|
164
|
+
// Google may omit refresh_token on refresh; keep the existing one.
|
|
165
|
+
refreshToken: data.refresh_token ?? refreshToken,
|
|
166
|
+
expiresAt: Date.now() + data.expires_in * 1000 - 60_000,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Mirrors the Gemini CLI's `setupUser` flow: loadCodeAssist → onboardUser
|
|
171
|
+
* (poll LRO) → return the managed project ID.
|
|
172
|
+
*/
|
|
173
|
+
async function setupUser(accessToken) {
|
|
174
|
+
const envProject = process.env.GOOGLE_CLOUD_PROJECT || process.env.GOOGLE_CLOUD_PROJECT_ID;
|
|
175
|
+
const loadRes = await codeAssistPost(accessToken, "loadCodeAssist", {
|
|
176
|
+
cloudaicompanionProject: envProject,
|
|
177
|
+
metadata: {
|
|
178
|
+
...CLIENT_METADATA,
|
|
179
|
+
duetProject: envProject,
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
// Already onboarded — reuse the managed project.
|
|
183
|
+
if (loadRes.currentTier) {
|
|
184
|
+
if (loadRes.cloudaicompanionProject)
|
|
185
|
+
return loadRes.cloudaicompanionProject;
|
|
186
|
+
if (envProject)
|
|
187
|
+
return envProject;
|
|
188
|
+
throwIneligibleOrMissing(loadRes);
|
|
189
|
+
}
|
|
190
|
+
const tier = loadRes.allowedTiers?.find((t) => t.isDefault) ?? (envProject ? undefined : undefined);
|
|
191
|
+
const tierId = tier?.id ?? "free-tier";
|
|
192
|
+
const onboardReq = tierId === "free-tier"
|
|
193
|
+
? {
|
|
194
|
+
tierId,
|
|
195
|
+
metadata: CLIENT_METADATA,
|
|
196
|
+
}
|
|
197
|
+
: {
|
|
198
|
+
tierId,
|
|
199
|
+
cloudaicompanionProject: envProject,
|
|
200
|
+
metadata: { ...CLIENT_METADATA, duetProject: envProject },
|
|
201
|
+
};
|
|
202
|
+
let lro = await codeAssistPost(accessToken, "onboardUser", onboardReq);
|
|
203
|
+
if (lro.error) {
|
|
204
|
+
throw new Error(`Gemini onboarding failed: ${lro.error.message ?? "unknown error"}`);
|
|
205
|
+
}
|
|
206
|
+
const start = Date.now();
|
|
207
|
+
const MAX_WAIT_MS = 2 * 60 * 1000;
|
|
208
|
+
while (!lro.done && lro.name) {
|
|
209
|
+
if (Date.now() - start > MAX_WAIT_MS) {
|
|
210
|
+
throw new Error("Gemini onboarding timed out (exceeded 2 minutes).");
|
|
211
|
+
}
|
|
212
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
213
|
+
lro = await codeAssistGetOperation(accessToken, lro.name);
|
|
214
|
+
if (lro.error) {
|
|
215
|
+
throw new Error(`Gemini onboarding failed: ${lro.error.message ?? "unknown error"}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const projectId = lro.response?.cloudaicompanionProject?.id ?? envProject;
|
|
219
|
+
if (!projectId) {
|
|
220
|
+
throwIneligibleOrMissing(loadRes);
|
|
221
|
+
}
|
|
222
|
+
return projectId;
|
|
223
|
+
}
|
|
224
|
+
function throwIneligibleOrMissing(loadRes) {
|
|
225
|
+
if (loadRes.ineligibleTiers && loadRes.ineligibleTiers.length > 0) {
|
|
226
|
+
const reasons = loadRes.ineligibleTiers
|
|
227
|
+
.map((t) => t.reasonMessage ?? t.reasonCode ?? "unknown")
|
|
228
|
+
.join("; ");
|
|
229
|
+
throw new Error(`Gemini account is not eligible: ${reasons}`);
|
|
230
|
+
}
|
|
231
|
+
throw new Error("Gemini onboarding did not return a project ID. Set GOOGLE_CLOUD_PROJECT to a project you own and retry.");
|
|
232
|
+
}
|
|
233
|
+
// For onboarding calls, match the UA that official Google SDKs use — puts the
|
|
234
|
+
// request into the same bucket as cloud-sdk traffic rather than a non-official
|
|
235
|
+
// client bucket with tighter per-user rate limits.
|
|
236
|
+
const CODE_ASSIST_ONBOARD_UA = "google-api-nodejs-client/9.15.1";
|
|
237
|
+
const CODE_ASSIST_API_CLIENT_HEADER = `gl-node/${process.version.replace(/^v/, "")}`;
|
|
238
|
+
async function codeAssistPost(accessToken, method, body) {
|
|
239
|
+
const url = `${CODE_ASSIST_ENDPOINT}/${CODE_ASSIST_API_VERSION}:${method}`;
|
|
240
|
+
const res = await fetch(url, {
|
|
241
|
+
method: "POST",
|
|
242
|
+
headers: {
|
|
243
|
+
"Content-Type": "application/json",
|
|
244
|
+
Authorization: `Bearer ${accessToken}`,
|
|
245
|
+
"User-Agent": CODE_ASSIST_ONBOARD_UA,
|
|
246
|
+
"X-Goog-Api-Client": CODE_ASSIST_API_CLIENT_HEADER,
|
|
247
|
+
},
|
|
248
|
+
body: JSON.stringify(body),
|
|
249
|
+
});
|
|
250
|
+
if (!res.ok) {
|
|
251
|
+
const text = await res.text().catch(() => "");
|
|
252
|
+
throw new Error(`Code Assist ${method} failed (${res.status}): ${text}`);
|
|
253
|
+
}
|
|
254
|
+
return (await res.json());
|
|
255
|
+
}
|
|
256
|
+
async function codeAssistGetOperation(accessToken, name) {
|
|
257
|
+
const url = `${CODE_ASSIST_ENDPOINT}/${CODE_ASSIST_API_VERSION}/${name}`;
|
|
258
|
+
const res = await fetch(url, {
|
|
259
|
+
method: "GET",
|
|
260
|
+
headers: {
|
|
261
|
+
"Content-Type": "application/json",
|
|
262
|
+
Authorization: `Bearer ${accessToken}`,
|
|
263
|
+
"User-Agent": CODE_ASSIST_ONBOARD_UA,
|
|
264
|
+
"X-Goog-Api-Client": CODE_ASSIST_API_CLIENT_HEADER,
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
if (!res.ok) {
|
|
268
|
+
const text = await res.text().catch(() => "");
|
|
269
|
+
throw new Error(`Code Assist getOperation failed (${res.status}): ${text}`);
|
|
270
|
+
}
|
|
271
|
+
return (await res.json());
|
|
272
|
+
}
|
|
273
|
+
// ── Helpers ────────────────────────────────────────────────
|
|
274
|
+
function getAvailablePort() {
|
|
275
|
+
return new Promise((resolve, reject) => {
|
|
276
|
+
const envPort = process.env.OAUTH_CALLBACK_PORT;
|
|
277
|
+
if (envPort) {
|
|
278
|
+
const port = parseInt(envPort, 10);
|
|
279
|
+
if (isNaN(port) || port <= 0 || port > 65535) {
|
|
280
|
+
return reject(new Error(`Invalid OAUTH_CALLBACK_PORT: "${envPort}"`));
|
|
281
|
+
}
|
|
282
|
+
return resolve(port);
|
|
283
|
+
}
|
|
284
|
+
const server = net.createServer();
|
|
285
|
+
server.on("error", (err) => reject(err));
|
|
286
|
+
server.listen(0, "127.0.0.1", () => {
|
|
287
|
+
const address = server.address();
|
|
288
|
+
const port = address && typeof address === "object" && "port" in address ? address.port : 0;
|
|
289
|
+
server.close(() => resolve(port));
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EAg7B1C,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
|