@kenkaiiii/ggcoder 4.3.243 → 4.5.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.
Files changed (114) hide show
  1. package/dist/cli/auth.d.ts.map +1 -1
  2. package/dist/cli/auth.js +17 -2
  3. package/dist/cli/auth.js.map +1 -1
  4. package/dist/cli.js +1 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config.d.ts +3 -14
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +4 -17
  9. package/dist/config.js.map +1 -1
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +14 -10
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/auth-storage.d.ts +1 -40
  14. package/dist/core/auth-storage.d.ts.map +1 -1
  15. package/dist/core/auth-storage.js +3 -200
  16. package/dist/core/auth-storage.js.map +1 -1
  17. package/dist/core/auto-update.d.ts +4 -26
  18. package/dist/core/auto-update.d.ts.map +1 -1
  19. package/dist/core/auto-update.js +12 -237
  20. package/dist/core/auto-update.js.map +1 -1
  21. package/dist/core/claude-code-version.d.ts +1 -9
  22. package/dist/core/claude-code-version.d.ts.map +1 -1
  23. package/dist/core/claude-code-version.js +2 -105
  24. package/dist/core/claude-code-version.js.map +1 -1
  25. package/dist/core/compaction/compactor.d.ts.map +1 -1
  26. package/dist/core/compaction/compactor.js +4 -0
  27. package/dist/core/compaction/compactor.js.map +1 -1
  28. package/dist/core/file-lock.d.ts +1 -5
  29. package/dist/core/file-lock.d.ts.map +1 -1
  30. package/dist/core/file-lock.js +2 -75
  31. package/dist/core/file-lock.js.map +1 -1
  32. package/dist/core/logger.d.ts +4 -17
  33. package/dist/core/logger.d.ts.map +1 -1
  34. package/dist/core/logger.js +21 -110
  35. package/dist/core/logger.js.map +1 -1
  36. package/dist/core/model-registry.d.ts +1 -54
  37. package/dist/core/model-registry.d.ts.map +1 -1
  38. package/dist/core/model-registry.js +4 -296
  39. package/dist/core/model-registry.js.map +1 -1
  40. package/dist/core/oauth/anthropic.d.ts +1 -3
  41. package/dist/core/oauth/anthropic.d.ts.map +1 -1
  42. package/dist/core/oauth/anthropic.js +2 -96
  43. package/dist/core/oauth/anthropic.js.map +1 -1
  44. package/dist/core/oauth/gemini.d.ts +1 -3
  45. package/dist/core/oauth/gemini.d.ts.map +1 -1
  46. package/dist/core/oauth/gemini.js +2 -379
  47. package/dist/core/oauth/gemini.js.map +1 -1
  48. package/dist/core/oauth/kimi.d.ts +2 -0
  49. package/dist/core/oauth/kimi.d.ts.map +1 -0
  50. package/dist/core/oauth/kimi.js +3 -0
  51. package/dist/core/oauth/kimi.js.map +1 -0
  52. package/dist/core/oauth/openai.d.ts +1 -3
  53. package/dist/core/oauth/openai.d.ts.map +1 -1
  54. package/dist/core/oauth/openai.js +2 -187
  55. package/dist/core/oauth/openai.js.map +1 -1
  56. package/dist/core/oauth/pkce.d.ts +1 -4
  57. package/dist/core/oauth/pkce.d.ts.map +1 -1
  58. package/dist/core/oauth/pkce.js +2 -16
  59. package/dist/core/oauth/pkce.js.map +1 -1
  60. package/dist/core/oauth/types.d.ts +1 -13
  61. package/dist/core/oauth/types.d.ts.map +1 -1
  62. package/dist/core/telegram.d.ts +1 -112
  63. package/dist/core/telegram.d.ts.map +1 -1
  64. package/dist/core/telegram.js +2 -251
  65. package/dist/core/telegram.js.map +1 -1
  66. package/dist/core/thinking-level.d.ts +1 -4
  67. package/dist/core/thinking-level.d.ts.map +1 -1
  68. package/dist/core/thinking-level.js +3 -58
  69. package/dist/core/thinking-level.js.map +1 -1
  70. package/dist/core/voice-transcriber.d.ts +1 -32
  71. package/dist/core/voice-transcriber.d.ts.map +1 -1
  72. package/dist/core/voice-transcriber.js +3 -112
  73. package/dist/core/voice-transcriber.js.map +1 -1
  74. package/dist/interactive.d.ts.map +1 -1
  75. package/dist/interactive.js +5 -1
  76. package/dist/interactive.js.map +1 -1
  77. package/dist/tools/index.d.ts.map +1 -1
  78. package/dist/tools/index.js +7 -1
  79. package/dist/tools/index.js.map +1 -1
  80. package/dist/tools/read.d.ts +6 -1
  81. package/dist/tools/read.d.ts.map +1 -1
  82. package/dist/tools/read.js +70 -4
  83. package/dist/tools/read.js.map +1 -1
  84. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  85. package/dist/ui/hooks/useAgentLoop.js +7 -0
  86. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  87. package/dist/ui/login.js +1 -1
  88. package/dist/ui/login.js.map +1 -1
  89. package/dist/ui/prompt-routing.d.ts.map +1 -1
  90. package/dist/ui/prompt-routing.js +42 -18
  91. package/dist/ui/prompt-routing.js.map +1 -1
  92. package/dist/ui/slash-command-images.test.js +30 -8
  93. package/dist/ui/slash-command-images.test.js.map +1 -1
  94. package/dist/utils/image.d.ts +25 -2
  95. package/dist/utils/image.d.ts.map +1 -1
  96. package/dist/utils/image.js +116 -23
  97. package/dist/utils/image.js.map +1 -1
  98. package/package.json +5 -4
  99. package/dist/core/model-registry.test.d.ts +0 -2
  100. package/dist/core/model-registry.test.d.ts.map +0 -1
  101. package/dist/core/model-registry.test.js +0 -95
  102. package/dist/core/model-registry.test.js.map +0 -1
  103. package/dist/core/oauth/gemini.test.d.ts +0 -2
  104. package/dist/core/oauth/gemini.test.d.ts.map +0 -1
  105. package/dist/core/oauth/gemini.test.js +0 -154
  106. package/dist/core/oauth/gemini.test.js.map +0 -1
  107. package/dist/core/thinking-level.test.d.ts +0 -2
  108. package/dist/core/thinking-level.test.d.ts.map +0 -1
  109. package/dist/core/thinking-level.test.js +0 -38
  110. package/dist/core/thinking-level.test.js.map +0 -1
  111. package/dist/core/voice-transcriber.test.d.ts +0 -2
  112. package/dist/core/voice-transcriber.test.d.ts.map +0 -1
  113. package/dist/core/voice-transcriber.test.js +0 -88
  114. package/dist/core/voice-transcriber.test.js.map +0 -1
@@ -1,380 +1,3 @@
1
- import http from "node:http";
2
- import crypto from "node:crypto";
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"}
@@ -0,0 +1,2 @@
1
+ export { loginKimi, refreshKimiToken, kimiCodeBaseUrl, kimiCodingHeaders, isKimiCodingEndpoint, } from "@kenkaiiii/gg-core";
2
+ //# sourceMappingURL=kimi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/kimi.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Moved to @kenkaiiii/gg-core.
2
+ export { loginKimi, refreshKimiToken, kimiCodeBaseUrl, kimiCodingHeaders, isKimiCodingEndpoint, } from "@kenkaiiii/gg-core";
3
+ //# sourceMappingURL=kimi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../../src/core/oauth/kimi.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,2 @@
1
- import type { OAuthCredentials, OAuthLoginCallbacks } from "./types.js";
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":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AASxE,wBAAsB,WAAW,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0C3F;AA+ID,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkCxF"}
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"}
@@ -1,188 +1,3 @@
1
- import http from "node:http";
2
- import crypto from "node:crypto";
3
- import { generatePKCE } from "./pkce.js";
4
- const CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
5
- const AUTHORIZE_URL = "https://auth.openai.com/oauth/authorize";
6
- const TOKEN_URL = "https://auth.openai.com/oauth/token";
7
- const REDIRECT_URI = "http://localhost:1455/auth/callback";
8
- const SCOPE = "openid profile email offline_access api.connectors.read api.connectors.invoke";
9
- const JWT_CLAIM_PATH = "https://api.openai.com/auth";
10
- export async function loginOpenAI(callbacks) {
11
- const { verifier, challenge } = await generatePKCE();
12
- const state = crypto.randomBytes(16).toString("hex");
13
- const url = new URL(AUTHORIZE_URL);
14
- url.searchParams.set("response_type", "code");
15
- url.searchParams.set("client_id", CLIENT_ID);
16
- url.searchParams.set("redirect_uri", REDIRECT_URI);
17
- url.searchParams.set("scope", SCOPE);
18
- url.searchParams.set("code_challenge", challenge);
19
- url.searchParams.set("code_challenge_method", "S256");
20
- url.searchParams.set("state", state);
21
- url.searchParams.set("id_token_add_organizations", "true");
22
- url.searchParams.set("codex_cli_simplified_flow", "true");
23
- url.searchParams.set("originator", "ggcoder");
24
- let code;
25
- try {
26
- code = await loginWithServer(url.toString(), state, callbacks);
27
- }
28
- catch {
29
- // Fallback: manual code paste
30
- callbacks.onOpenUrl(url.toString());
31
- const raw = await callbacks.onPromptCode("Could not start local server. Paste the callback URL or code from the browser:");
32
- const parsed = parseAuthorizationInput(raw);
33
- if (!parsed.code) {
34
- throw new Error("No authorization code found in input.");
35
- }
36
- code = parsed.code;
37
- }
38
- const creds = await exchangeOpenAICode(code, verifier);
39
- const accountId = getAccountId(creds.accessToken);
40
- if (!accountId) {
41
- throw new Error("Failed to extract accountId from OpenAI token.");
42
- }
43
- creds.accountId = accountId;
44
- return creds;
45
- }
46
- function parseAuthorizationInput(input) {
47
- const value = input.trim();
48
- if (!value)
49
- return {};
50
- // Full URL
51
- try {
52
- const url = new URL(value);
53
- return {
54
- code: url.searchParams.get("code") ?? undefined,
55
- state: url.searchParams.get("state") ?? undefined,
56
- };
57
- }
58
- catch {
59
- // not a URL
60
- }
61
- // code#state
62
- if (value.includes("#")) {
63
- const [code, state] = value.split("#", 2);
64
- return { code, state };
65
- }
66
- // Query string with code=
67
- if (value.includes("code=")) {
68
- const params = new URLSearchParams(value);
69
- return {
70
- code: params.get("code") ?? undefined,
71
- state: params.get("state") ?? undefined,
72
- };
73
- }
74
- // Raw code
75
- return { code: value };
76
- }
77
- function decodeJwt(token) {
78
- try {
79
- const parts = token.split(".");
80
- if (parts.length !== 3)
81
- return null;
82
- const decoded = atob(parts[1]);
83
- return JSON.parse(decoded);
84
- }
85
- catch {
86
- return null;
87
- }
88
- }
89
- function getAccountId(accessToken) {
90
- const payload = decodeJwt(accessToken);
91
- const auth = payload?.[JWT_CLAIM_PATH];
92
- const accountId = auth?.chatgpt_account_id;
93
- return typeof accountId === "string" && accountId.length > 0 ? accountId : null;
94
- }
95
- async function loginWithServer(authUrl, expectedState, callbacks) {
96
- return new Promise((resolve, reject) => {
97
- let receivedCode = null;
98
- const server = http.createServer((req, res) => {
99
- const url = new URL(req.url || "", "http://localhost");
100
- if (url.pathname !== "/auth/callback") {
101
- res.statusCode = 404;
102
- res.end("Not found");
103
- return;
104
- }
105
- if (url.searchParams.get("state") !== expectedState) {
106
- res.statusCode = 400;
107
- res.end("State mismatch");
108
- return;
109
- }
110
- receivedCode = url.searchParams.get("code");
111
- res.writeHead(200, { "Content-Type": "text/html" });
112
- res.end("<html><body><h1>Login successful!</h1><p>You can close this tab.</p></body></html>");
113
- server.close();
114
- });
115
- server.on("error", (err) => {
116
- reject(err);
117
- });
118
- server.listen(1455, "127.0.0.1", () => {
119
- callbacks.onOpenUrl(authUrl);
120
- callbacks.onStatus("Waiting for browser callback...");
121
- });
122
- const timeout = setTimeout(() => {
123
- if (!receivedCode) {
124
- server.close();
125
- }
126
- }, 120_000);
127
- timeout.unref();
128
- server.on("close", () => {
129
- clearTimeout(timeout);
130
- if (receivedCode) {
131
- resolve(receivedCode);
132
- }
133
- else {
134
- reject(new Error("Server closed without receiving code"));
135
- }
136
- });
137
- });
138
- }
139
- async function exchangeOpenAICode(code, verifier) {
140
- const response = await fetch(TOKEN_URL, {
141
- method: "POST",
142
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
143
- body: new URLSearchParams({
144
- grant_type: "authorization_code",
145
- client_id: CLIENT_ID,
146
- code,
147
- redirect_uri: REDIRECT_URI,
148
- code_verifier: verifier,
149
- }),
150
- });
151
- if (!response.ok) {
152
- const text = await response.text();
153
- throw new Error(`OpenAI token exchange failed (${response.status}): ${text}`);
154
- }
155
- const data = (await response.json());
156
- return {
157
- accessToken: data.access_token,
158
- refreshToken: data.refresh_token,
159
- expiresAt: Date.now() + data.expires_in * 1000,
160
- };
161
- }
162
- export async function refreshOpenAIToken(refreshToken) {
163
- const response = await fetch(TOKEN_URL, {
164
- method: "POST",
165
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
166
- body: new URLSearchParams({
167
- grant_type: "refresh_token",
168
- refresh_token: refreshToken,
169
- client_id: CLIENT_ID,
170
- }),
171
- });
172
- if (!response.ok) {
173
- const text = await response.text();
174
- throw new Error(`OpenAI token refresh failed (${response.status}): ${text}`);
175
- }
176
- const data = (await response.json());
177
- const creds = {
178
- accessToken: data.access_token,
179
- refreshToken: data.refresh_token,
180
- expiresAt: Date.now() + data.expires_in * 1000,
181
- };
182
- const accountId = getAccountId(creds.accessToken);
183
- if (accountId) {
184
- creds.accountId = accountId;
185
- }
186
- return creds;
187
- }
1
+ // Moved to @kenkaiiii/gg-core.
2
+ export { loginOpenAI, refreshOpenAIToken } from "@kenkaiiii/gg-core";
188
3
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/core/oauth/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/core/oauth/openai.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,5 +1,2 @@
1
- export declare function generatePKCE(): Promise<{
2
- verifier: string;
3
- challenge: string;
4
- }>;
1
+ export { generatePKCE } from "@kenkaiiii/gg-core";
5
2
  //# sourceMappingURL=pkce.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/pkce.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAUrF"}
1
+ {"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/pkce.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}