@kenkaiiii/ggcoder 4.3.242 → 4.4.0
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/shared.d.ts.map +1 -1
- package/dist/cli/shared.js +27 -5
- package/dist/cli/shared.js.map +1 -1
- package/dist/config.d.ts +3 -14
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -17
- package/dist/config.js.map +1 -1
- package/dist/core/auth-storage.d.ts +1 -40
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +3 -200
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/auto-update.d.ts +4 -26
- package/dist/core/auto-update.d.ts.map +1 -1
- package/dist/core/auto-update.js +12 -237
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/claude-code-version.d.ts +1 -9
- package/dist/core/claude-code-version.d.ts.map +1 -1
- package/dist/core/claude-code-version.js +2 -105
- package/dist/core/claude-code-version.js.map +1 -1
- package/dist/core/file-lock.d.ts +1 -5
- package/dist/core/file-lock.d.ts.map +1 -1
- package/dist/core/file-lock.js +2 -75
- package/dist/core/file-lock.js.map +1 -1
- package/dist/core/logger.d.ts +4 -17
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +21 -110
- package/dist/core/logger.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -54
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +4 -296
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/oauth/anthropic.d.ts +1 -3
- package/dist/core/oauth/anthropic.d.ts.map +1 -1
- package/dist/core/oauth/anthropic.js +2 -96
- package/dist/core/oauth/anthropic.js.map +1 -1
- package/dist/core/oauth/gemini.d.ts +1 -3
- package/dist/core/oauth/gemini.d.ts.map +1 -1
- package/dist/core/oauth/gemini.js +2 -379
- package/dist/core/oauth/gemini.js.map +1 -1
- package/dist/core/oauth/openai.d.ts +1 -3
- package/dist/core/oauth/openai.d.ts.map +1 -1
- package/dist/core/oauth/openai.js +2 -187
- package/dist/core/oauth/openai.js.map +1 -1
- package/dist/core/oauth/pkce.d.ts +1 -4
- package/dist/core/oauth/pkce.d.ts.map +1 -1
- package/dist/core/oauth/pkce.js +2 -16
- package/dist/core/oauth/pkce.js.map +1 -1
- package/dist/core/oauth/types.d.ts +1 -13
- package/dist/core/oauth/types.d.ts.map +1 -1
- package/dist/core/telegram.d.ts +1 -112
- package/dist/core/telegram.d.ts.map +1 -1
- package/dist/core/telegram.js +2 -251
- package/dist/core/telegram.js.map +1 -1
- package/dist/core/thinking-level.d.ts +1 -4
- package/dist/core/thinking-level.d.ts.map +1 -1
- package/dist/core/thinking-level.js +3 -58
- package/dist/core/thinking-level.js.map +1 -1
- package/dist/core/voice-transcriber.d.ts +1 -32
- package/dist/core/voice-transcriber.d.ts.map +1 -1
- package/dist/core/voice-transcriber.js +3 -112
- package/dist/core/voice-transcriber.js.map +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +27 -5
- package/dist/ui/App.js.map +1 -1
- package/dist/utils/plan-steps.d.ts +18 -0
- package/dist/utils/plan-steps.d.ts.map +1 -1
- package/dist/utils/plan-steps.js +32 -0
- package/dist/utils/plan-steps.js.map +1 -1
- package/dist/utils/plan-steps.test.js +57 -1
- package/dist/utils/plan-steps.test.js.map +1 -1
- package/package.json +4 -3
- package/dist/core/model-registry.test.d.ts +0 -2
- package/dist/core/model-registry.test.d.ts.map +0 -1
- package/dist/core/model-registry.test.js +0 -95
- package/dist/core/model-registry.test.js.map +0 -1
- package/dist/core/oauth/gemini.test.d.ts +0 -2
- package/dist/core/oauth/gemini.test.d.ts.map +0 -1
- package/dist/core/oauth/gemini.test.js +0 -154
- package/dist/core/oauth/gemini.test.js.map +0 -1
- package/dist/core/thinking-level.test.d.ts +0 -2
- package/dist/core/thinking-level.test.d.ts.map +0 -1
- package/dist/core/thinking-level.test.js +0 -38
- package/dist/core/thinking-level.test.js.map +0 -1
- package/dist/core/voice-transcriber.test.d.ts +0 -2
- package/dist/core/voice-transcriber.test.d.ts.map +0 -1
- package/dist/core/voice-transcriber.test.js +0 -88
- package/dist/core/voice-transcriber.test.js.map +0 -1
|
@@ -1,97 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { getClaudeCliUserAgent } from "../claude-code-version.js";
|
|
4
|
-
const CLIENT_ID = atob("OWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVl");
|
|
5
|
-
const AUTHORIZE_URL = "https://claude.ai/oauth/authorize";
|
|
6
|
-
// Anthropic migrated OAuth from console.anthropic.com to platform.claude.com
|
|
7
|
-
// in Claude Code v2.1.81+. Try the new endpoint first, fall back to the old one
|
|
8
|
-
// so a transient outage on either edge doesn't wipe the user's credentials.
|
|
9
|
-
const TOKEN_URLS = [
|
|
10
|
-
"https://platform.claude.com/v1/oauth/token",
|
|
11
|
-
"https://console.anthropic.com/v1/oauth/token",
|
|
12
|
-
];
|
|
13
|
-
const REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
|
|
14
|
-
const SCOPES = "org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload";
|
|
15
|
-
async function postTokenRequest(body, label) {
|
|
16
|
-
const encoded = JSON.stringify(body);
|
|
17
|
-
// Claude Code identity. Anthropic's OAuth edge intermittently rejects
|
|
18
|
-
// requests without a recognized claude-cli UA + oauth beta header. Resolve
|
|
19
|
-
// the UA version dynamically so it tracks real Claude Code releases.
|
|
20
|
-
const headers = {
|
|
21
|
-
"Content-Type": "application/json",
|
|
22
|
-
"User-Agent": await getClaudeCliUserAgent(),
|
|
23
|
-
"anthropic-beta": "oauth-2025-04-20",
|
|
24
|
-
};
|
|
25
|
-
let lastError = null;
|
|
26
|
-
for (const url of TOKEN_URLS) {
|
|
27
|
-
let response;
|
|
28
|
-
try {
|
|
29
|
-
response = await fetch(url, { method: "POST", headers, body: encoded });
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
lastError = err instanceof Error ? err : new Error(String(err));
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
if (response.ok) {
|
|
36
|
-
return (await response.json());
|
|
37
|
-
}
|
|
38
|
-
const text = await response.text();
|
|
39
|
-
// 4xx is an authoritative auth failure (invalid_grant, invalid_client, etc.)
|
|
40
|
-
// — don't paper over it by trying another endpoint, the result will be the
|
|
41
|
-
// same and the caller relies on this signal to wipe stale creds.
|
|
42
|
-
if (response.status >= 400 && response.status < 500) {
|
|
43
|
-
throw new Error(`Anthropic ${label} failed (${response.status}): ${text}`);
|
|
44
|
-
}
|
|
45
|
-
lastError = new Error(`Anthropic ${label} failed (${response.status}): ${text}`);
|
|
46
|
-
}
|
|
47
|
-
throw lastError ?? new Error(`Anthropic ${label} failed: all endpoints unreachable`);
|
|
48
|
-
}
|
|
49
|
-
function toCredentials(data) {
|
|
50
|
-
return {
|
|
51
|
-
accessToken: data.access_token,
|
|
52
|
-
refreshToken: data.refresh_token,
|
|
53
|
-
expiresAt: Date.now() + data.expires_in * 1000 - 5 * 60 * 1000,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
export async function loginAnthropic(callbacks) {
|
|
57
|
-
const { verifier, challenge } = await generatePKCE();
|
|
58
|
-
const state = crypto.randomBytes(16).toString("hex");
|
|
59
|
-
const params = new URLSearchParams({
|
|
60
|
-
code: "true",
|
|
61
|
-
client_id: CLIENT_ID,
|
|
62
|
-
response_type: "code",
|
|
63
|
-
redirect_uri: REDIRECT_URI,
|
|
64
|
-
scope: SCOPES,
|
|
65
|
-
code_challenge: challenge,
|
|
66
|
-
code_challenge_method: "S256",
|
|
67
|
-
state,
|
|
68
|
-
});
|
|
69
|
-
const authUrl = `${AUTHORIZE_URL}?${params}`;
|
|
70
|
-
callbacks.onOpenUrl(authUrl);
|
|
71
|
-
const raw = await callbacks.onPromptCode("Paste the code from the browser (format: code#state):");
|
|
72
|
-
const parts = raw.trim().split("#");
|
|
73
|
-
if (parts.length !== 2 || !parts[0] || parts[1] !== state) {
|
|
74
|
-
throw new Error("Invalid code or state mismatch. Please try again.");
|
|
75
|
-
}
|
|
76
|
-
return exchangeAnthropicCode(parts[0], parts[1], verifier);
|
|
77
|
-
}
|
|
78
|
-
async function exchangeAnthropicCode(code, state, verifier) {
|
|
79
|
-
const data = await postTokenRequest({
|
|
80
|
-
grant_type: "authorization_code",
|
|
81
|
-
client_id: CLIENT_ID,
|
|
82
|
-
code,
|
|
83
|
-
state,
|
|
84
|
-
redirect_uri: REDIRECT_URI,
|
|
85
|
-
code_verifier: verifier,
|
|
86
|
-
}, "token exchange");
|
|
87
|
-
return toCredentials(data);
|
|
88
|
-
}
|
|
89
|
-
export async function refreshAnthropicToken(refreshToken) {
|
|
90
|
-
const data = await postTokenRequest({
|
|
91
|
-
grant_type: "refresh_token",
|
|
92
|
-
client_id: CLIENT_ID,
|
|
93
|
-
refresh_token: refreshToken,
|
|
94
|
-
}, "token refresh");
|
|
95
|
-
return toCredentials(data);
|
|
96
|
-
}
|
|
1
|
+
// Moved to @kenkaiiii/gg-core.
|
|
2
|
+
export { loginAnthropic, refreshAnthropicToken } from "@kenkaiiii/gg-core";
|
|
97
3
|
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function loginGemini(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;
|
|
3
|
-
export declare function refreshGeminiToken(refreshToken: string): Promise<OAuthCredentials>;
|
|
1
|
+
export { loginGemini, refreshGeminiToken } from "@kenkaiiii/gg-core";
|
|
4
2
|
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,380 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { generatePKCE } from "./pkce.js";
|
|
4
|
-
const CLIENT_ID_ENV = "GGCODER_GEMINI_OAUTH_CLIENT_ID";
|
|
5
|
-
const CLIENT_SECRET_ENV = "GGCODER_GEMINI_OAUTH_CLIENT_SECRET";
|
|
6
|
-
// Public "installed application" OAuth client shipped with the official Gemini CLI.
|
|
7
|
-
// Unlike the OpenAI/Anthropic flows (pure PKCE, no secret), Google's token endpoint
|
|
8
|
-
// requires a client_secret for the installed-app authorization_code / refresh_token
|
|
9
|
-
// grants — so it must be embedded to support local login like the other providers.
|
|
10
|
-
// This is the published gemini-cli installed-app secret (non-confidential by design);
|
|
11
|
-
// the env vars above override it for users who bring their own Google Cloud client.
|
|
12
|
-
const DEFAULT_CLIENT_ID = "681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com";
|
|
13
|
-
const DEFAULT_CLIENT_SECRET = "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";
|
|
14
|
-
const AUTHORIZE_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
15
|
-
const TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
16
|
-
const CODE_ASSIST_BASE_URL = "https://cloudcode-pa.googleapis.com";
|
|
17
|
-
const CODE_ASSIST_API_VERSION = "v1internal";
|
|
18
|
-
const CODE_ASSIST_POST_RETRIES = 3;
|
|
19
|
-
const CODE_ASSIST_POST_RETRY_DELAY_MS = 100;
|
|
20
|
-
const SCOPE = [
|
|
21
|
-
"https://www.googleapis.com/auth/cloud-platform",
|
|
22
|
-
"https://www.googleapis.com/auth/userinfo.email",
|
|
23
|
-
"https://www.googleapis.com/auth/userinfo.profile",
|
|
24
|
-
].join(" ");
|
|
25
|
-
const USER_TIER_FREE = "free-tier";
|
|
26
|
-
const USER_TIER_LEGACY = "legacy-tier";
|
|
27
|
-
const USER_TIER_STANDARD = "standard-tier";
|
|
28
|
-
const VALIDATION_REQUIRED_REASON = "VALIDATION_REQUIRED";
|
|
29
|
-
const VPC_SC_REASON = "SECURITY_POLICY_VIOLATED";
|
|
30
|
-
class CodeAssistHttpError extends Error {
|
|
31
|
-
status;
|
|
32
|
-
body;
|
|
33
|
-
constructor(label, status, body) {
|
|
34
|
-
super(`Gemini Code Assist ${label} failed (${status}): ${body}`);
|
|
35
|
-
this.name = "CodeAssistHttpError";
|
|
36
|
-
this.status = status;
|
|
37
|
-
this.body = body;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export async function loginGemini(callbacks) {
|
|
41
|
-
const { clientId, clientSecret } = getGeminiOAuthClientCredentials();
|
|
42
|
-
const { verifier, challenge } = await generatePKCE();
|
|
43
|
-
const state = crypto.randomBytes(32).toString("hex");
|
|
44
|
-
const redirectUri = await getLoopbackRedirectUri();
|
|
45
|
-
const url = new URL(AUTHORIZE_URL);
|
|
46
|
-
url.searchParams.set("response_type", "code");
|
|
47
|
-
url.searchParams.set("client_id", clientId);
|
|
48
|
-
url.searchParams.set("redirect_uri", redirectUri);
|
|
49
|
-
url.searchParams.set("scope", SCOPE);
|
|
50
|
-
url.searchParams.set("access_type", "offline");
|
|
51
|
-
url.searchParams.set("prompt", "consent");
|
|
52
|
-
url.searchParams.set("code_challenge", challenge);
|
|
53
|
-
url.searchParams.set("code_challenge_method", "S256");
|
|
54
|
-
url.searchParams.set("state", state);
|
|
55
|
-
let code;
|
|
56
|
-
try {
|
|
57
|
-
code = await loginWithServer(url.toString(), redirectUri, state, callbacks);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
callbacks.onOpenUrl(url.toString());
|
|
61
|
-
const raw = await callbacks.onPromptCode("Could not start local server. Paste the callback URL or code from the browser:");
|
|
62
|
-
const parsed = parseAuthorizationInput(raw);
|
|
63
|
-
if (!parsed.code) {
|
|
64
|
-
throw new Error("No authorization code found in input.");
|
|
65
|
-
}
|
|
66
|
-
if (parsed.state && parsed.state !== state) {
|
|
67
|
-
throw new Error("Invalid state. Please try again.");
|
|
68
|
-
}
|
|
69
|
-
code = parsed.code;
|
|
70
|
-
}
|
|
71
|
-
const creds = await exchangeGeminiCode(code, verifier, redirectUri, clientId, clientSecret);
|
|
72
|
-
callbacks.onStatus("Setting up Gemini Code Assist access...");
|
|
73
|
-
const projectId = await setupCodeAssistProject(creds.accessToken, callbacks);
|
|
74
|
-
return {
|
|
75
|
-
...creds,
|
|
76
|
-
projectId,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
export async function refreshGeminiToken(refreshToken) {
|
|
80
|
-
const { clientId, clientSecret } = getGeminiOAuthClientCredentials();
|
|
81
|
-
const data = await postTokenRequest({
|
|
82
|
-
grant_type: "refresh_token",
|
|
83
|
-
refresh_token: refreshToken,
|
|
84
|
-
client_id: clientId,
|
|
85
|
-
client_secret: clientSecret,
|
|
86
|
-
});
|
|
87
|
-
return {
|
|
88
|
-
accessToken: data.access_token,
|
|
89
|
-
refreshToken: data.refresh_token ?? refreshToken,
|
|
90
|
-
expiresAt: Date.now() + data.expires_in * 1000 - 5 * 60 * 1000,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
function getGeminiOAuthClientCredentials() {
|
|
94
|
-
const clientId = process.env[CLIENT_ID_ENV]?.trim() || DEFAULT_CLIENT_ID;
|
|
95
|
-
const clientSecret = process.env[CLIENT_SECRET_ENV]?.trim() || DEFAULT_CLIENT_SECRET;
|
|
96
|
-
return { clientId, clientSecret };
|
|
97
|
-
}
|
|
98
|
-
async function getLoopbackRedirectUri() {
|
|
99
|
-
return new Promise((resolve, reject) => {
|
|
100
|
-
const server = http.createServer();
|
|
101
|
-
server.listen(0, "127.0.0.1", () => {
|
|
102
|
-
const addr = server.address();
|
|
103
|
-
server.close(() => {
|
|
104
|
-
if (addr && typeof addr === "object") {
|
|
105
|
-
resolve(`http://127.0.0.1:${addr.port}/oauth2callback`);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
reject(new Error("Failed to allocate OAuth callback port."));
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
server.on("error", reject);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
function parseAuthorizationInput(input) {
|
|
116
|
-
const value = input.trim();
|
|
117
|
-
if (!value)
|
|
118
|
-
return {};
|
|
119
|
-
try {
|
|
120
|
-
const url = new URL(value);
|
|
121
|
-
return {
|
|
122
|
-
code: url.searchParams.get("code") ?? undefined,
|
|
123
|
-
state: url.searchParams.get("state") ?? undefined,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
// not a URL
|
|
128
|
-
}
|
|
129
|
-
if (value.includes("code=")) {
|
|
130
|
-
const params = new URLSearchParams(value);
|
|
131
|
-
return {
|
|
132
|
-
code: params.get("code") ?? undefined,
|
|
133
|
-
state: params.get("state") ?? undefined,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
return { code: value };
|
|
137
|
-
}
|
|
138
|
-
async function loginWithServer(authUrl, redirectUri, expectedState, callbacks) {
|
|
139
|
-
const redirect = new URL(redirectUri);
|
|
140
|
-
const port = Number(redirect.port);
|
|
141
|
-
return new Promise((resolve, reject) => {
|
|
142
|
-
let receivedCode = null;
|
|
143
|
-
const server = http.createServer((req, res) => {
|
|
144
|
-
const url = new URL(req.url || "", redirect.origin);
|
|
145
|
-
if (url.pathname !== redirect.pathname) {
|
|
146
|
-
res.statusCode = 404;
|
|
147
|
-
res.end("Not found");
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
if (url.searchParams.get("state") !== expectedState) {
|
|
151
|
-
res.statusCode = 400;
|
|
152
|
-
res.end("State mismatch");
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
receivedCode = url.searchParams.get("code");
|
|
156
|
-
res.writeHead(200, { "Content-Type": "text/html", Connection: "close" });
|
|
157
|
-
res.end("<html><body><h1>Login successful!</h1><p>You can close this tab.</p></body></html>");
|
|
158
|
-
server.close();
|
|
159
|
-
});
|
|
160
|
-
server.on("error", (err) => reject(err));
|
|
161
|
-
server.listen(port, "127.0.0.1", () => {
|
|
162
|
-
callbacks.onOpenUrl(authUrl);
|
|
163
|
-
callbacks.onStatus("Waiting for browser callback...");
|
|
164
|
-
});
|
|
165
|
-
const timeout = setTimeout(() => {
|
|
166
|
-
if (!receivedCode)
|
|
167
|
-
server.close();
|
|
168
|
-
}, 120_000);
|
|
169
|
-
timeout.unref();
|
|
170
|
-
server.on("close", () => {
|
|
171
|
-
clearTimeout(timeout);
|
|
172
|
-
if (receivedCode) {
|
|
173
|
-
resolve(receivedCode);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
reject(new Error("Server closed without receiving code."));
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
async function exchangeGeminiCode(code, verifier, redirectUri, clientId, clientSecret) {
|
|
182
|
-
const data = await postTokenRequest({
|
|
183
|
-
grant_type: "authorization_code",
|
|
184
|
-
client_id: clientId,
|
|
185
|
-
client_secret: clientSecret,
|
|
186
|
-
code,
|
|
187
|
-
redirect_uri: redirectUri,
|
|
188
|
-
code_verifier: verifier,
|
|
189
|
-
});
|
|
190
|
-
if (!data.refresh_token) {
|
|
191
|
-
throw new Error("Gemini OAuth did not return a refresh token. Please try login again.");
|
|
192
|
-
}
|
|
193
|
-
return {
|
|
194
|
-
accessToken: data.access_token,
|
|
195
|
-
refreshToken: data.refresh_token,
|
|
196
|
-
expiresAt: Date.now() + data.expires_in * 1000 - 5 * 60 * 1000,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
async function postTokenRequest(body) {
|
|
200
|
-
const response = await fetch(TOKEN_URL, {
|
|
201
|
-
method: "POST",
|
|
202
|
-
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
203
|
-
body: new URLSearchParams(body),
|
|
204
|
-
});
|
|
205
|
-
if (!response.ok) {
|
|
206
|
-
const text = await response.text();
|
|
207
|
-
throw new Error(`Gemini token request failed (${response.status}): ${text}`);
|
|
208
|
-
}
|
|
209
|
-
return (await response.json());
|
|
210
|
-
}
|
|
211
|
-
async function setupCodeAssistProject(accessToken, callbacks) {
|
|
212
|
-
const envProject = process.env.GOOGLE_CLOUD_PROJECT ?? process.env.GOOGLE_CLOUD_PROJECT_ID;
|
|
213
|
-
if (envProject && /^\d+$/.test(envProject)) {
|
|
214
|
-
throw new Error("GOOGLE_CLOUD_PROJECT must be a project ID, not a numeric project number.");
|
|
215
|
-
}
|
|
216
|
-
const coreMetadata = {
|
|
217
|
-
ideType: "IDE_UNSPECIFIED",
|
|
218
|
-
platform: "PLATFORM_UNSPECIFIED",
|
|
219
|
-
pluginType: "GEMINI",
|
|
220
|
-
};
|
|
221
|
-
const projectMetadata = {
|
|
222
|
-
...coreMetadata,
|
|
223
|
-
...(envProject ? { duetProject: envProject } : {}),
|
|
224
|
-
};
|
|
225
|
-
let loadRes;
|
|
226
|
-
while (true) {
|
|
227
|
-
loadRes = await loadCodeAssist(accessToken, envProject, projectMetadata);
|
|
228
|
-
const validation = getValidationRequiredTier(loadRes);
|
|
229
|
-
if (!validation)
|
|
230
|
-
break;
|
|
231
|
-
callbacks.onStatus(`Gemini Code Assist requires account validation${validation.reasonMessage ? `: ${validation.reasonMessage}` : ""}`);
|
|
232
|
-
callbacks.onOpenUrl(validation.validationUrl);
|
|
233
|
-
const answer = await callbacks.onPromptCode("Complete validation in the browser, then press Enter to retry (or type cancel):");
|
|
234
|
-
if (answer.trim().toLowerCase() === "cancel") {
|
|
235
|
-
throw new Error("Gemini Code Assist account validation was cancelled.");
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
if (loadRes.currentTier) {
|
|
239
|
-
const project = loadRes.cloudaicompanionProject ?? envProject;
|
|
240
|
-
if (!project)
|
|
241
|
-
throwProjectError(loadRes);
|
|
242
|
-
return project;
|
|
243
|
-
}
|
|
244
|
-
const tier = getOnboardTier(loadRes);
|
|
245
|
-
const onboardReq = tier.id === USER_TIER_FREE
|
|
246
|
-
? {
|
|
247
|
-
tierId: tier.id,
|
|
248
|
-
cloudaicompanionProject: undefined,
|
|
249
|
-
metadata: coreMetadata,
|
|
250
|
-
}
|
|
251
|
-
: {
|
|
252
|
-
tierId: tier.id,
|
|
253
|
-
cloudaicompanionProject: envProject,
|
|
254
|
-
metadata: projectMetadata,
|
|
255
|
-
};
|
|
256
|
-
let operation = await codeAssistPost(accessToken, "onboardUser", onboardReq);
|
|
257
|
-
while (!operation.done && operation.name) {
|
|
258
|
-
await new Promise((resolve) => setTimeout(resolve, 5_000));
|
|
259
|
-
operation = await codeAssistGet(accessToken, operation.name);
|
|
260
|
-
}
|
|
261
|
-
const project = operation.response?.cloudaicompanionProject?.id ?? envProject;
|
|
262
|
-
if (!project)
|
|
263
|
-
throwProjectError(loadRes);
|
|
264
|
-
return project;
|
|
265
|
-
}
|
|
266
|
-
async function loadCodeAssist(accessToken, envProject, metadata) {
|
|
267
|
-
try {
|
|
268
|
-
return await codeAssistPost(accessToken, "loadCodeAssist", {
|
|
269
|
-
...(envProject ? { cloudaicompanionProject: envProject } : {}),
|
|
270
|
-
metadata,
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
catch (err) {
|
|
274
|
-
if (err instanceof CodeAssistHttpError && isVpcScAffectedError(err)) {
|
|
275
|
-
return { currentTier: { id: USER_TIER_STANDARD } };
|
|
276
|
-
}
|
|
277
|
-
if (err instanceof CodeAssistHttpError &&
|
|
278
|
-
err.status === 403 &&
|
|
279
|
-
envProject === "cloudshell-gca") {
|
|
280
|
-
throw new Error("Access to the default Cloud Shell Gemini project was denied.\n" +
|
|
281
|
-
"Please set your own Google Cloud project by running:\n" +
|
|
282
|
-
"gcloud config set project [PROJECT_ID]\n" +
|
|
283
|
-
"or setting export GOOGLE_CLOUD_PROJECT=...", { cause: err });
|
|
284
|
-
}
|
|
285
|
-
throw err;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
function getValidationRequiredTier(response) {
|
|
289
|
-
return response.ineligibleTiers?.find((tier) => tier.reasonCode === VALIDATION_REQUIRED_REASON && typeof tier.validationUrl === "string");
|
|
290
|
-
}
|
|
291
|
-
function getOnboardTier(response) {
|
|
292
|
-
const defaultTier = response.allowedTiers?.find((tier) => tier.isDefault);
|
|
293
|
-
return defaultTier ?? { id: USER_TIER_LEGACY, name: "" };
|
|
294
|
-
}
|
|
295
|
-
function throwProjectError(response) {
|
|
296
|
-
const reasons = response.ineligibleTiers
|
|
297
|
-
?.map((tier) => tier.reasonMessage ?? tier.tierName)
|
|
298
|
-
.filter((reason) => Boolean(reason));
|
|
299
|
-
if (reasons && reasons.length > 0) {
|
|
300
|
-
throw new Error(`Gemini Code Assist setup failed: ${reasons.join(", ")}`);
|
|
301
|
-
}
|
|
302
|
-
throw new Error("Gemini requires a Google Cloud project for this account. Set GOOGLE_CLOUD_PROJECT and try again.");
|
|
303
|
-
}
|
|
304
|
-
async function codeAssistPost(accessToken, method, body) {
|
|
305
|
-
let lastError;
|
|
306
|
-
for (let attempt = 0; attempt <= CODE_ASSIST_POST_RETRIES; attempt++) {
|
|
307
|
-
try {
|
|
308
|
-
return await codeAssistRequest(getCodeAssistMethodUrl(method), accessToken, method, {
|
|
309
|
-
method: "POST",
|
|
310
|
-
body: JSON.stringify(body),
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
catch (err) {
|
|
314
|
-
if (!(err instanceof CodeAssistHttpError) ||
|
|
315
|
-
attempt === CODE_ASSIST_POST_RETRIES ||
|
|
316
|
-
!shouldRetryCodeAssistStatus(err.status)) {
|
|
317
|
-
throw err;
|
|
318
|
-
}
|
|
319
|
-
lastError = err;
|
|
320
|
-
}
|
|
321
|
-
await new Promise((resolve) => setTimeout(resolve, CODE_ASSIST_POST_RETRY_DELAY_MS));
|
|
322
|
-
}
|
|
323
|
-
throw lastError ?? new Error(`Gemini Code Assist ${method} failed.`);
|
|
324
|
-
}
|
|
325
|
-
async function codeAssistGet(accessToken, operationName) {
|
|
326
|
-
return codeAssistRequest(getCodeAssistOperationUrl(operationName), accessToken, "operation", {
|
|
327
|
-
method: "GET",
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
async function codeAssistRequest(url, accessToken, label, init) {
|
|
331
|
-
const response = await fetch(url, {
|
|
332
|
-
...init,
|
|
333
|
-
headers: codeAssistHeaders(accessToken),
|
|
334
|
-
});
|
|
335
|
-
if (!response.ok) {
|
|
336
|
-
const text = await response.text();
|
|
337
|
-
throw new CodeAssistHttpError(label, response.status, text);
|
|
338
|
-
}
|
|
339
|
-
return (await response.json());
|
|
340
|
-
}
|
|
341
|
-
function getCodeAssistBaseUrl() {
|
|
342
|
-
const endpoint = process.env.CODE_ASSIST_ENDPOINT ?? CODE_ASSIST_BASE_URL;
|
|
343
|
-
const version = process.env.CODE_ASSIST_API_VERSION || CODE_ASSIST_API_VERSION;
|
|
344
|
-
return `${endpoint}/${version}`;
|
|
345
|
-
}
|
|
346
|
-
function getCodeAssistMethodUrl(method) {
|
|
347
|
-
return `${getCodeAssistBaseUrl()}:${method}`;
|
|
348
|
-
}
|
|
349
|
-
function getCodeAssistOperationUrl(operationName) {
|
|
350
|
-
return `${getCodeAssistBaseUrl()}/${operationName}`;
|
|
351
|
-
}
|
|
352
|
-
function shouldRetryCodeAssistStatus(status) {
|
|
353
|
-
return status === 429 || status === 499 || (status >= 500 && status <= 599);
|
|
354
|
-
}
|
|
355
|
-
function isVpcScAffectedError(error) {
|
|
356
|
-
try {
|
|
357
|
-
const parsed = JSON.parse(error.body);
|
|
358
|
-
if (!parsed || typeof parsed !== "object" || !("error" in parsed))
|
|
359
|
-
return false;
|
|
360
|
-
const details = parsed.error?.details;
|
|
361
|
-
return Array.isArray(details)
|
|
362
|
-
? details.some((detail) => detail != null &&
|
|
363
|
-
typeof detail === "object" &&
|
|
364
|
-
"reason" in detail &&
|
|
365
|
-
detail.reason === VPC_SC_REASON)
|
|
366
|
-
: false;
|
|
367
|
-
}
|
|
368
|
-
catch {
|
|
369
|
-
return false;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
function codeAssistHeaders(accessToken) {
|
|
373
|
-
return {
|
|
374
|
-
Authorization: `Bearer ${accessToken}`,
|
|
375
|
-
"Content-Type": "application/json",
|
|
376
|
-
"User-Agent": "google-gemini-cli",
|
|
377
|
-
"X-Goog-Api-Client": "gemini-cli/0.0.0",
|
|
378
|
-
};
|
|
379
|
-
}
|
|
1
|
+
// Moved to @kenkaiiii/gg-core.
|
|
2
|
+
export { loginGemini, refreshGeminiToken } from "@kenkaiiii/gg-core";
|
|
380
3
|
//# sourceMappingURL=gemini.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/core/oauth/gemini.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function loginOpenAI(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;
|
|
3
|
-
export declare function refreshOpenAIToken(refreshToken: string): Promise<OAuthCredentials>;
|
|
1
|
+
export { loginOpenAI, refreshOpenAIToken } from "@kenkaiiii/gg-core";
|
|
4
2
|
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/openai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|