@kevin0181/rcodex 0.0.1
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/LICENSE +21 -0
- package/README.md +160 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +114 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/gateway-daemon.d.ts +2 -0
- package/dist/commands/gateway-daemon.d.ts.map +1 -0
- package/dist/commands/gateway-daemon.js +22 -0
- package/dist/commands/gateway-daemon.js.map +1 -0
- package/dist/commands/launch.d.ts +2 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +129 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +137 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +78 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/stop.d.ts +2 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +20 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/switch.d.ts +4 -0
- package/dist/commands/switch.d.ts.map +1 -0
- package/dist/commands/switch.js +78 -0
- package/dist/commands/switch.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +107 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/core/codex.d.ts +6 -0
- package/dist/core/codex.d.ts.map +1 -0
- package/dist/core/codex.js +123 -0
- package/dist/core/codex.js.map +1 -0
- package/dist/core/config.d.ts +6 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +68 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/constants.d.ts +4 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +7 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/ollama.d.ts +3 -0
- package/dist/core/ollama.d.ts.map +1 -0
- package/dist/core/ollama.js +20 -0
- package/dist/core/ollama.js.map +1 -0
- package/dist/gateway/auth.d.ts +58 -0
- package/dist/gateway/auth.d.ts.map +1 -0
- package/dist/gateway/auth.js +248 -0
- package/dist/gateway/auth.js.map +1 -0
- package/dist/gateway/providers/anthropic.d.ts +15 -0
- package/dist/gateway/providers/anthropic.d.ts.map +1 -0
- package/dist/gateway/providers/anthropic.js +122 -0
- package/dist/gateway/providers/anthropic.js.map +1 -0
- package/dist/gateway/providers/antigravity-oauth-flow.d.ts +21 -0
- package/dist/gateway/providers/antigravity-oauth-flow.d.ts.map +1 -0
- package/dist/gateway/providers/antigravity-oauth-flow.js +231 -0
- package/dist/gateway/providers/antigravity-oauth-flow.js.map +1 -0
- package/dist/gateway/providers/antigravity.d.ts +5 -0
- package/dist/gateway/providers/antigravity.d.ts.map +1 -0
- package/dist/gateway/providers/antigravity.js +111 -0
- package/dist/gateway/providers/antigravity.js.map +1 -0
- package/dist/gateway/providers/claude-oauth-flow.d.ts +16 -0
- package/dist/gateway/providers/claude-oauth-flow.d.ts.map +1 -0
- package/dist/gateway/providers/claude-oauth-flow.js +178 -0
- package/dist/gateway/providers/claude-oauth-flow.js.map +1 -0
- package/dist/gateway/providers/copilot.d.ts +19 -0
- package/dist/gateway/providers/copilot.d.ts.map +1 -0
- package/dist/gateway/providers/copilot.js +141 -0
- package/dist/gateway/providers/copilot.js.map +1 -0
- package/dist/gateway/providers/google.d.ts +12 -0
- package/dist/gateway/providers/google.d.ts.map +1 -0
- package/dist/gateway/providers/google.js +58 -0
- package/dist/gateway/providers/google.js.map +1 -0
- package/dist/gateway/providers/ollama.d.ts +6 -0
- package/dist/gateway/providers/ollama.d.ts.map +1 -0
- package/dist/gateway/providers/ollama.js +54 -0
- package/dist/gateway/providers/ollama.js.map +1 -0
- package/dist/gateway/providers/openai-oauth-flow.d.ts +15 -0
- package/dist/gateway/providers/openai-oauth-flow.d.ts.map +1 -0
- package/dist/gateway/providers/openai-oauth-flow.js +149 -0
- package/dist/gateway/providers/openai-oauth-flow.js.map +1 -0
- package/dist/gateway/providers/openai.d.ts +8 -0
- package/dist/gateway/providers/openai.d.ts.map +1 -0
- package/dist/gateway/providers/openai.js +193 -0
- package/dist/gateway/providers/openai.js.map +1 -0
- package/dist/gateway/proxy.d.ts +119 -0
- package/dist/gateway/proxy.d.ts.map +1 -0
- package/dist/gateway/proxy.js +1949 -0
- package/dist/gateway/proxy.js.map +1 -0
- package/dist/gateway/server.d.ts +6 -0
- package/dist/gateway/server.d.ts.map +1 -0
- package/dist/gateway/server.js +890 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/ui.d.ts +2 -0
- package/dist/gateway/ui.d.ts.map +1 -0
- package/dist/gateway/ui.js +1748 -0
- package/dist/gateway/ui.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +25 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +4 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +22 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/shell.d.ts +8 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +27 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/updates.d.ts +2 -0
- package/dist/utils/updates.d.ts.map +1 -0
- package/dist/utils/updates.js +83 -0
- package/dist/utils/updates.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { createServer } from "http";
|
|
2
|
+
import { randomBytes } from "crypto";
|
|
3
|
+
import { platform, arch } from "os";
|
|
4
|
+
import { readFileSync, existsSync } from "fs";
|
|
5
|
+
import { join, dirname } from "path";
|
|
6
|
+
import { homedir } from "os";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
function tryReadCreds(p) {
|
|
9
|
+
try {
|
|
10
|
+
if (!existsSync(p))
|
|
11
|
+
return null;
|
|
12
|
+
const d = JSON.parse(readFileSync(p, "utf-8"));
|
|
13
|
+
if (d.clientId && d.clientSecret)
|
|
14
|
+
return { clientId: d.clientId, clientSecret: d.clientSecret };
|
|
15
|
+
}
|
|
16
|
+
catch { /* fall through */ }
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
export function getAppCredentials() {
|
|
20
|
+
// 1. User override in ~/.rcodex/antigravity-app.json
|
|
21
|
+
const userPath = join(homedir(), ".rcodex", "antigravity-app.json");
|
|
22
|
+
const fromUser = tryReadCreds(userPath);
|
|
23
|
+
if (fromUser)
|
|
24
|
+
return fromUser;
|
|
25
|
+
// 2. Bundled with the package (dist/antigravity-credentials.json)
|
|
26
|
+
const pkgDir = dirname(fileURLToPath(import.meta.url));
|
|
27
|
+
const bundledPath = join(pkgDir, "../../antigravity-credentials.json");
|
|
28
|
+
const fromPkg = tryReadCreds(bundledPath);
|
|
29
|
+
if (fromPkg)
|
|
30
|
+
return fromPkg;
|
|
31
|
+
throw new Error("Antigravity credentials not found.\n" +
|
|
32
|
+
"Run: rcodex doctor ??to diagnose and auto-fix setup issues.\n" +
|
|
33
|
+
"Or create ~/.rcodex/antigravity-app.json with { \"clientId\": \"...\", \"clientSecret\": \"...\" }");
|
|
34
|
+
}
|
|
35
|
+
export function hasAppCredentials() {
|
|
36
|
+
try {
|
|
37
|
+
getAppCredentials();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
45
|
+
const TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
46
|
+
const CALLBACK_PORT = 49157;
|
|
47
|
+
const REDIRECT_URI = `http://localhost:${CALLBACK_PORT}/callback`;
|
|
48
|
+
const SCOPES = [
|
|
49
|
+
"openid",
|
|
50
|
+
"email",
|
|
51
|
+
"profile",
|
|
52
|
+
"https://www.googleapis.com/auth/cloud-platform",
|
|
53
|
+
].join(" ");
|
|
54
|
+
export function buildAntigravityAuthUrl() {
|
|
55
|
+
const { clientId } = getAppCredentials();
|
|
56
|
+
const state = randomBytes(16).toString("hex");
|
|
57
|
+
const params = new URLSearchParams({
|
|
58
|
+
response_type: "code",
|
|
59
|
+
client_id: clientId,
|
|
60
|
+
redirect_uri: REDIRECT_URI,
|
|
61
|
+
scope: SCOPES,
|
|
62
|
+
access_type: "offline",
|
|
63
|
+
prompt: "consent",
|
|
64
|
+
state,
|
|
65
|
+
});
|
|
66
|
+
return { url: `${AUTH_URL}?${params}`, state };
|
|
67
|
+
}
|
|
68
|
+
export async function exchangeAntigravityCode(code) {
|
|
69
|
+
const { clientId, clientSecret } = getAppCredentials();
|
|
70
|
+
const res = await fetch(TOKEN_URL, {
|
|
71
|
+
method: "POST",
|
|
72
|
+
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
73
|
+
body: new URLSearchParams({
|
|
74
|
+
grant_type: "authorization_code",
|
|
75
|
+
code,
|
|
76
|
+
redirect_uri: REDIRECT_URI,
|
|
77
|
+
client_id: clientId,
|
|
78
|
+
client_secret: clientSecret,
|
|
79
|
+
}).toString(),
|
|
80
|
+
signal: AbortSignal.timeout(30_000),
|
|
81
|
+
});
|
|
82
|
+
if (!res.ok)
|
|
83
|
+
throw new Error(`Antigravity token exchange failed (${res.status}): ${await res.text()}`);
|
|
84
|
+
const data = await res.json();
|
|
85
|
+
return { accessToken: data.access_token, refreshToken: data.refresh_token, expiresIn: data.expires_in };
|
|
86
|
+
}
|
|
87
|
+
export async function refreshAntigravityAccessToken(refreshToken) {
|
|
88
|
+
const { clientId, clientSecret } = getAppCredentials();
|
|
89
|
+
const res = await fetch(TOKEN_URL, {
|
|
90
|
+
method: "POST",
|
|
91
|
+
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
92
|
+
body: new URLSearchParams({
|
|
93
|
+
grant_type: "refresh_token",
|
|
94
|
+
refresh_token: refreshToken,
|
|
95
|
+
client_id: clientId,
|
|
96
|
+
client_secret: clientSecret,
|
|
97
|
+
}).toString(),
|
|
98
|
+
signal: AbortSignal.timeout(30_000),
|
|
99
|
+
});
|
|
100
|
+
if (!res.ok)
|
|
101
|
+
throw new Error(`Antigravity token refresh failed (${res.status}): ${await res.text()}`);
|
|
102
|
+
const data = await res.json();
|
|
103
|
+
return { accessToken: data.access_token, refreshToken: data.refresh_token ?? refreshToken, expiresIn: data.expires_in };
|
|
104
|
+
}
|
|
105
|
+
const LOAD_ASSIST_URL = "https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist";
|
|
106
|
+
const ONBOARD_URL = "https://cloudcode-pa.googleapis.com/v1internal:onboardUser";
|
|
107
|
+
function platformEnum() {
|
|
108
|
+
const os = platform();
|
|
109
|
+
const a = arch();
|
|
110
|
+
if (os === "darwin")
|
|
111
|
+
return a === "arm64" ? 2 : 1;
|
|
112
|
+
if (os === "linux")
|
|
113
|
+
return a === "arm64" ? 4 : 3;
|
|
114
|
+
if (os === "win32")
|
|
115
|
+
return 5;
|
|
116
|
+
return 0;
|
|
117
|
+
}
|
|
118
|
+
function assistHeaders(accessToken) {
|
|
119
|
+
return {
|
|
120
|
+
"content-type": "application/json",
|
|
121
|
+
"authorization": `Bearer ${accessToken}`,
|
|
122
|
+
"user-agent": "google-api-nodejs-client/9.15.1",
|
|
123
|
+
"x-goog-api-client": "google-cloud-sdk vscode_cloudshelleditor/0.1",
|
|
124
|
+
"client-metadata": JSON.stringify({ ideType: 9, platform: platformEnum(), pluginType: 2 }),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export async function loadAntigravityProject(accessToken) {
|
|
128
|
+
const metadata = { ideType: 9, platform: platformEnum(), pluginType: 2 };
|
|
129
|
+
const res = await fetch(LOAD_ASSIST_URL, {
|
|
130
|
+
method: "POST",
|
|
131
|
+
headers: assistHeaders(accessToken),
|
|
132
|
+
body: JSON.stringify({ metadata }),
|
|
133
|
+
signal: AbortSignal.timeout(30_000),
|
|
134
|
+
});
|
|
135
|
+
if (!res.ok)
|
|
136
|
+
throw new Error(`loadCodeAssist failed (${res.status}): ${await res.text()}`);
|
|
137
|
+
const data = await res.json();
|
|
138
|
+
let projectId;
|
|
139
|
+
if (typeof data.cloudaicompanionProject === "string")
|
|
140
|
+
projectId = data.cloudaicompanionProject;
|
|
141
|
+
else if (data.cloudaicompanionProject?.id)
|
|
142
|
+
projectId = data.cloudaicompanionProject.id;
|
|
143
|
+
if (!projectId)
|
|
144
|
+
throw new Error("No cloudaicompanionProject in loadCodeAssist response");
|
|
145
|
+
let tierId = "legacy-tier";
|
|
146
|
+
for (const t of data.allowedTiers ?? []) {
|
|
147
|
+
if (t.isDefault && t.id) {
|
|
148
|
+
tierId = t.id.trim();
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Onboard (enables Gemini Code Assist for the project); poll until done
|
|
153
|
+
for (let i = 0; i < 10; i++) {
|
|
154
|
+
const ob = await fetch(ONBOARD_URL, {
|
|
155
|
+
method: "POST",
|
|
156
|
+
headers: assistHeaders(accessToken),
|
|
157
|
+
body: JSON.stringify({ tierId, metadata }),
|
|
158
|
+
signal: AbortSignal.timeout(30_000),
|
|
159
|
+
});
|
|
160
|
+
if (!ob.ok)
|
|
161
|
+
break;
|
|
162
|
+
const od = await ob.json();
|
|
163
|
+
if (od.done) {
|
|
164
|
+
const rp = od.response?.cloudaicompanionProject;
|
|
165
|
+
if (typeof rp === "string" && rp)
|
|
166
|
+
projectId = rp.trim();
|
|
167
|
+
else if (rp && typeof rp === "object" && rp.id)
|
|
168
|
+
projectId = rp.id.trim();
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
await new Promise(r => setTimeout(r, 3000));
|
|
172
|
+
}
|
|
173
|
+
return projectId;
|
|
174
|
+
}
|
|
175
|
+
let activeServer = null;
|
|
176
|
+
function closeServer() {
|
|
177
|
+
if (!activeServer)
|
|
178
|
+
return;
|
|
179
|
+
try {
|
|
180
|
+
activeServer.closeAllConnections?.();
|
|
181
|
+
activeServer.close();
|
|
182
|
+
}
|
|
183
|
+
catch { /* */ }
|
|
184
|
+
activeServer = null;
|
|
185
|
+
}
|
|
186
|
+
export function waitForAntigravityCallback(expectedState) {
|
|
187
|
+
closeServer();
|
|
188
|
+
return new Promise((resolve, reject) => {
|
|
189
|
+
const server = createServer((req, res) => {
|
|
190
|
+
const url = new URL(req.url ?? "/", `http://localhost:${CALLBACK_PORT}`);
|
|
191
|
+
if (url.pathname !== "/callback") {
|
|
192
|
+
res.writeHead(404);
|
|
193
|
+
res.end();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const error = url.searchParams.get("error");
|
|
197
|
+
if (error) {
|
|
198
|
+
res.writeHead(200, { "content-type": "text/html" });
|
|
199
|
+
res.end(page(`Login failed: ${error}`, true));
|
|
200
|
+
closeServer();
|
|
201
|
+
reject(new Error(`OAuth error: ${error}`));
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const code = url.searchParams.get("code");
|
|
205
|
+
const state = url.searchParams.get("state");
|
|
206
|
+
if (state !== expectedState || !code) {
|
|
207
|
+
res.writeHead(400);
|
|
208
|
+
res.end("Bad request");
|
|
209
|
+
closeServer();
|
|
210
|
+
reject(new Error("Invalid OAuth callback"));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
res.writeHead(200, { "content-type": "text/html" });
|
|
214
|
+
res.end(page("Antigravity connected! You can close this tab.", false));
|
|
215
|
+
closeServer();
|
|
216
|
+
resolve(code);
|
|
217
|
+
});
|
|
218
|
+
activeServer = server;
|
|
219
|
+
server.on("error", (err) => { activeServer = null; reject(err); });
|
|
220
|
+
server.listen(CALLBACK_PORT, "127.0.0.1");
|
|
221
|
+
setTimeout(() => { closeServer(); reject(new Error("OAuth login timed out after 5 minutes")); }, 5 * 60 * 1000);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
function page(msg, isError) {
|
|
225
|
+
return `<!DOCTYPE html><html><head><meta charset="UTF-8">
|
|
226
|
+
<style>body{font-family:-apple-system,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#0d0d12;color:#e2e2f0}
|
|
227
|
+
.box{text-align:center;padding:40px;border-radius:16px;background:#16161e;border:1px solid ${isError ? "#ef4444" : "#34d399"}33}
|
|
228
|
+
h2{color:${isError ? "#ef4444" : "#34d399"};margin-bottom:8px}p{color:#6b6b8a}</style></head>
|
|
229
|
+
<body><div class="box"><h2>${isError ? "Error:" : "Success:"} ${msg}</h2><p>Return to the rcodex Gateway tab.</p></div></body></html>`;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=antigravity-oauth-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-oauth-flow.js","sourceRoot":"","sources":["../../../src/gateway/providers/antigravity-oauth-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const ANTIGRAVITY_DEFAULT_MODELS: string[];
|
|
2
|
+
export declare function isAntigravityModel(model: string): boolean;
|
|
3
|
+
export declare function callAntigravity(accessToken: string, model: string, contents: unknown[], systemInstruction?: unknown, tools?: unknown[], stream?: boolean, signal?: AbortSignal, projectId?: string): Promise<Response>;
|
|
4
|
+
export declare function getAntigravityModels(accessToken: string, projectId?: string): Promise<string[]>;
|
|
5
|
+
//# sourceMappingURL=antigravity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../src/gateway/providers/antigravity.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,UAOtC,CAAC;AAIF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAQD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,CAAC,EAAE,OAAO,EAC3B,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,MAAM,UAAO,EACb,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAyCnB;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAarG"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { randomUUID } from "crypto";
|
|
2
|
+
import { platform, arch } from "os";
|
|
3
|
+
const AG_BASE = "https://daily-cloudcode-pa.googleapis.com";
|
|
4
|
+
export const ANTIGRAVITY_DEFAULT_MODELS = [
|
|
5
|
+
"ag/gemini-3.1-pro-high",
|
|
6
|
+
"ag/gemini-3.1-pro-low",
|
|
7
|
+
"ag/gemini-3-flash",
|
|
8
|
+
"ag/claude-sonnet-4-6",
|
|
9
|
+
"ag/claude-opus-4-6-thinking",
|
|
10
|
+
"ag/gpt-oss-120b-medium",
|
|
11
|
+
];
|
|
12
|
+
const modelCache = new Map();
|
|
13
|
+
export function isAntigravityModel(model) {
|
|
14
|
+
return model.startsWith("ag/");
|
|
15
|
+
}
|
|
16
|
+
function generateProjectId() {
|
|
17
|
+
const adj = ["useful", "bright", "swift", "calm", "bold"][Math.floor(Math.random() * 5)];
|
|
18
|
+
const noun = ["fuze", "wave", "spark", "flow", "core"][Math.floor(Math.random() * 5)];
|
|
19
|
+
return `${adj}-${noun}-${randomUUID().slice(0, 5)}`;
|
|
20
|
+
}
|
|
21
|
+
export async function callAntigravity(accessToken, model, contents, systemInstruction, tools, stream = true, signal, projectId) {
|
|
22
|
+
const agModel = model.replace(/^ag\//, "");
|
|
23
|
+
const sessionId = randomUUID() + Date.now().toString();
|
|
24
|
+
const request = {
|
|
25
|
+
contents,
|
|
26
|
+
generationConfig: { maxOutputTokens: 8192 },
|
|
27
|
+
sessionId,
|
|
28
|
+
};
|
|
29
|
+
if (systemInstruction)
|
|
30
|
+
request.systemInstruction = systemInstruction;
|
|
31
|
+
if (tools?.length) {
|
|
32
|
+
request.tools = [{ functionDeclarations: tools }];
|
|
33
|
+
request.toolConfig = { functionCallingConfig: { mode: "VALIDATED" } };
|
|
34
|
+
}
|
|
35
|
+
const body = {
|
|
36
|
+
project: projectId ?? generateProjectId(),
|
|
37
|
+
model: agModel,
|
|
38
|
+
userAgent: "antigravity",
|
|
39
|
+
requestType: "agent",
|
|
40
|
+
requestId: `agent-${randomUUID()}`,
|
|
41
|
+
request,
|
|
42
|
+
};
|
|
43
|
+
const endpoint = stream
|
|
44
|
+
? `${AG_BASE}/v1internal:streamGenerateContent?alt=sse`
|
|
45
|
+
: `${AG_BASE}/v1internal:generateContent`;
|
|
46
|
+
return fetch(endpoint, {
|
|
47
|
+
method: "POST",
|
|
48
|
+
headers: {
|
|
49
|
+
"content-type": "application/json",
|
|
50
|
+
"authorization": `Bearer ${accessToken}`,
|
|
51
|
+
"user-agent": `antigravity/1.107.0 ${platform()}/${arch()}`,
|
|
52
|
+
"x-request-source": "local",
|
|
53
|
+
"accept": stream ? "text/event-stream" : "application/json",
|
|
54
|
+
},
|
|
55
|
+
body: JSON.stringify(body),
|
|
56
|
+
signal,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export async function getAntigravityModels(accessToken, projectId) {
|
|
60
|
+
if (!accessToken)
|
|
61
|
+
return [];
|
|
62
|
+
const key = `${accessToken.slice(0, 16)}:${projectId ?? ""}`;
|
|
63
|
+
const cached = modelCache.get(key);
|
|
64
|
+
if (cached && cached.expiresAt > Date.now())
|
|
65
|
+
return cached.models;
|
|
66
|
+
const checks = await Promise.all(ANTIGRAVITY_DEFAULT_MODELS.map(async (model) => {
|
|
67
|
+
const ok = await probeAntigravityModel(accessToken, model, projectId);
|
|
68
|
+
return ok ? model : null;
|
|
69
|
+
}));
|
|
70
|
+
const models = checks.filter((model) => Boolean(model));
|
|
71
|
+
modelCache.set(key, { models, expiresAt: Date.now() + 10 * 60_000 });
|
|
72
|
+
return models;
|
|
73
|
+
}
|
|
74
|
+
async function probeAntigravityModel(accessToken, model, projectId) {
|
|
75
|
+
const agModel = model.replace(/^ag\//, "");
|
|
76
|
+
const body = {
|
|
77
|
+
project: projectId ?? generateProjectId(),
|
|
78
|
+
model: agModel,
|
|
79
|
+
userAgent: "antigravity",
|
|
80
|
+
requestType: "agent",
|
|
81
|
+
requestId: `model-probe-${randomUUID()}`,
|
|
82
|
+
request: {
|
|
83
|
+
contents: [{ role: "user", parts: [{ text: "ping" }] }],
|
|
84
|
+
generationConfig: { maxOutputTokens: 1 },
|
|
85
|
+
sessionId: randomUUID() + Date.now().toString(),
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
try {
|
|
89
|
+
const res = await fetch(`${AG_BASE}/v1internal:generateContent`, {
|
|
90
|
+
method: "POST",
|
|
91
|
+
headers: {
|
|
92
|
+
"content-type": "application/json",
|
|
93
|
+
"authorization": `Bearer ${accessToken}`,
|
|
94
|
+
"user-agent": `antigravity/1.107.0 ${platform()}/${arch()}`,
|
|
95
|
+
"x-request-source": "local",
|
|
96
|
+
},
|
|
97
|
+
body: JSON.stringify(body),
|
|
98
|
+
signal: AbortSignal.timeout(12_000),
|
|
99
|
+
});
|
|
100
|
+
if (res.ok)
|
|
101
|
+
return true;
|
|
102
|
+
const text = await res.text();
|
|
103
|
+
if (res.status === 429 || /quota|rate/i.test(text))
|
|
104
|
+
return true;
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=antigravity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../../src/gateway/providers/antigravity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const CLAUDE_CODE_MODELS: string[];
|
|
2
|
+
export interface OAuthTokens {
|
|
3
|
+
accessToken: string;
|
|
4
|
+
refreshToken: string;
|
|
5
|
+
expiresIn: number;
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildClaudeAuthUrl(): {
|
|
9
|
+
url: string;
|
|
10
|
+
state: string;
|
|
11
|
+
verifier: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function exchangeClaudeCode(code: string, verifier: string, state: string): Promise<OAuthTokens>;
|
|
14
|
+
export declare function refreshClaudeAccessToken(refreshToken: string): Promise<OAuthTokens>;
|
|
15
|
+
export declare function waitForClaudeCallback(expectedState: string): Promise<string>;
|
|
16
|
+
//# sourceMappingURL=claude-oauth-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-oauth-flow.d.ts","sourceRoot":"","sources":["../../../src/gateway/providers/claude-oauth-flow.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,kBAAkB,UAM9B,CAAC;AAQF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAgBrF;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CA4CtB;AAyBD,wBAAsB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4BzF;AAaD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C5E"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { createServer } from "http";
|
|
2
|
+
import { createHash, randomBytes } from "crypto";
|
|
3
|
+
const CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
|
|
4
|
+
const AUTH_URL = "https://claude.ai/oauth/authorize";
|
|
5
|
+
const TOKEN_URL = "https://platform.claude.com/v1/oauth/token";
|
|
6
|
+
const CREATE_KEY_URL = "https://api.anthropic.com/api/oauth/claude_cli/create_api_key";
|
|
7
|
+
const CALLBACK_PORT = 49155;
|
|
8
|
+
// The token exchange validates against this URI, NOT the localhost one
|
|
9
|
+
const PLATFORM_REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
|
|
10
|
+
// Localhost server receives the actual code (platform relays via state-encoded port)
|
|
11
|
+
const LOCAL_REDIRECT_URI = `http://localhost:${CALLBACK_PORT}/callback`;
|
|
12
|
+
const SCOPES = "org:create_api_key user:profile user:inference";
|
|
13
|
+
export const CLAUDE_CODE_MODELS = [
|
|
14
|
+
"claude-opus-4-7-20250514",
|
|
15
|
+
"claude-opus-4-5",
|
|
16
|
+
"claude-sonnet-4-6",
|
|
17
|
+
"claude-sonnet-4-5",
|
|
18
|
+
"claude-haiku-4-5-20251001",
|
|
19
|
+
];
|
|
20
|
+
function generatePKCE() {
|
|
21
|
+
const verifier = randomBytes(32).toString("base64url");
|
|
22
|
+
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
23
|
+
return { verifier, challenge };
|
|
24
|
+
}
|
|
25
|
+
export function buildClaudeAuthUrl() {
|
|
26
|
+
const { verifier, challenge } = generatePKCE();
|
|
27
|
+
const state = randomBytes(16).toString("hex");
|
|
28
|
+
const params = new URLSearchParams({
|
|
29
|
+
response_type: "code",
|
|
30
|
+
client_id: CLIENT_ID,
|
|
31
|
+
// Use localhost so we directly receive the code in our callback server
|
|
32
|
+
redirect_uri: LOCAL_REDIRECT_URI,
|
|
33
|
+
scope: SCOPES,
|
|
34
|
+
code_challenge: challenge,
|
|
35
|
+
code_challenge_method: "S256",
|
|
36
|
+
state,
|
|
37
|
+
});
|
|
38
|
+
return { url: `${AUTH_URL}?${params}`, state, verifier };
|
|
39
|
+
}
|
|
40
|
+
export async function exchangeClaudeCode(code, verifier, state) {
|
|
41
|
+
// Strip fragment (#...) from auth code ??Anthropic appends extra data after '#'
|
|
42
|
+
const cleanCode = code.split("#")[0];
|
|
43
|
+
const res = await fetch(TOKEN_URL, {
|
|
44
|
+
method: "POST",
|
|
45
|
+
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
46
|
+
body: new URLSearchParams({
|
|
47
|
+
grant_type: "authorization_code",
|
|
48
|
+
code: cleanCode,
|
|
49
|
+
// Token endpoint validates against the platform redirect URI, not localhost
|
|
50
|
+
redirect_uri: LOCAL_REDIRECT_URI,
|
|
51
|
+
client_id: CLIENT_ID,
|
|
52
|
+
code_verifier: verifier,
|
|
53
|
+
state,
|
|
54
|
+
}).toString(),
|
|
55
|
+
signal: AbortSignal.timeout(120_000), // endpoint can be slow (up to 60s)
|
|
56
|
+
});
|
|
57
|
+
if (!res.ok) {
|
|
58
|
+
const err = await res.text();
|
|
59
|
+
throw new Error(`Claude token exchange failed (${res.status}): ${err}`);
|
|
60
|
+
}
|
|
61
|
+
const data = await res.json();
|
|
62
|
+
const tokens = {
|
|
63
|
+
accessToken: data.access_token,
|
|
64
|
+
refreshToken: data.refresh_token,
|
|
65
|
+
expiresIn: data.expires_in,
|
|
66
|
+
};
|
|
67
|
+
// Use the access token to create a permanent API key
|
|
68
|
+
try {
|
|
69
|
+
tokens.apiKey = await createClaudeApiKey(data.access_token);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.warn("[Claude OAuth] create_api_key failed (storing OAuth token as fallback):", err.message);
|
|
73
|
+
}
|
|
74
|
+
return tokens;
|
|
75
|
+
}
|
|
76
|
+
async function createClaudeApiKey(accessToken) {
|
|
77
|
+
const res = await fetch(CREATE_KEY_URL, {
|
|
78
|
+
method: "POST",
|
|
79
|
+
headers: {
|
|
80
|
+
"authorization": `Bearer ${accessToken}`,
|
|
81
|
+
"anthropic-version": "2023-06-01",
|
|
82
|
+
"content-type": "application/json",
|
|
83
|
+
},
|
|
84
|
+
body: JSON.stringify({ name: "rcodex Gateway" }),
|
|
85
|
+
signal: AbortSignal.timeout(30_000),
|
|
86
|
+
});
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
const err = await res.text();
|
|
89
|
+
throw new Error(`create_api_key failed (${res.status}): ${err}`);
|
|
90
|
+
}
|
|
91
|
+
const data = await res.json();
|
|
92
|
+
const key = data.raw_key ?? data.key ?? data.api_key;
|
|
93
|
+
if (!key)
|
|
94
|
+
throw new Error(`create_api_key: no key in response: ${JSON.stringify(data)}`);
|
|
95
|
+
return key;
|
|
96
|
+
}
|
|
97
|
+
export async function refreshClaudeAccessToken(refreshToken) {
|
|
98
|
+
const res = await fetch(TOKEN_URL, {
|
|
99
|
+
method: "POST",
|
|
100
|
+
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
101
|
+
body: new URLSearchParams({
|
|
102
|
+
grant_type: "refresh_token",
|
|
103
|
+
refresh_token: refreshToken,
|
|
104
|
+
client_id: CLIENT_ID,
|
|
105
|
+
}).toString(),
|
|
106
|
+
signal: AbortSignal.timeout(30_000),
|
|
107
|
+
});
|
|
108
|
+
if (!res.ok) {
|
|
109
|
+
const err = await res.text();
|
|
110
|
+
throw new Error(`Claude token refresh failed (${res.status}): ${err}`);
|
|
111
|
+
}
|
|
112
|
+
const data = await res.json();
|
|
113
|
+
return {
|
|
114
|
+
accessToken: data.access_token,
|
|
115
|
+
refreshToken: data.refresh_token ?? refreshToken,
|
|
116
|
+
expiresIn: data.expires_in,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
let activeCallbackServer = null;
|
|
120
|
+
function closeCallbackServer() {
|
|
121
|
+
if (!activeCallbackServer)
|
|
122
|
+
return;
|
|
123
|
+
try {
|
|
124
|
+
activeCallbackServer.closeAllConnections?.();
|
|
125
|
+
activeCallbackServer.close();
|
|
126
|
+
}
|
|
127
|
+
catch { /* ignore */ }
|
|
128
|
+
activeCallbackServer = null;
|
|
129
|
+
}
|
|
130
|
+
export function waitForClaudeCallback(expectedState) {
|
|
131
|
+
closeCallbackServer();
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
const server = createServer((req, res) => {
|
|
134
|
+
const url = new URL(req.url ?? "/", `http://localhost:${CALLBACK_PORT}`);
|
|
135
|
+
if (url.pathname !== "/callback") {
|
|
136
|
+
res.writeHead(404);
|
|
137
|
+
res.end();
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const error = url.searchParams.get("error");
|
|
141
|
+
if (error) {
|
|
142
|
+
res.writeHead(200, { "content-type": "text/html" });
|
|
143
|
+
res.end(successPage(`Login failed: ${error}`, true));
|
|
144
|
+
closeCallbackServer();
|
|
145
|
+
reject(new Error(`OAuth error: ${error}`));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const state = url.searchParams.get("state");
|
|
149
|
+
const code = url.searchParams.get("code");
|
|
150
|
+
if (state !== expectedState || !code) {
|
|
151
|
+
res.writeHead(400);
|
|
152
|
+
res.end("Bad request");
|
|
153
|
+
closeCallbackServer();
|
|
154
|
+
reject(new Error("Invalid OAuth callback"));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
res.writeHead(200, { "content-type": "text/html" });
|
|
158
|
+
res.end(successPage("Claude Code connected! You can close this tab.", false));
|
|
159
|
+
closeCallbackServer();
|
|
160
|
+
resolve(code);
|
|
161
|
+
});
|
|
162
|
+
activeCallbackServer = server;
|
|
163
|
+
server.on("error", (err) => { activeCallbackServer = null; reject(err); });
|
|
164
|
+
server.listen(CALLBACK_PORT, "127.0.0.1");
|
|
165
|
+
setTimeout(() => {
|
|
166
|
+
closeCallbackServer();
|
|
167
|
+
reject(new Error("OAuth login timed out after 5 minutes"));
|
|
168
|
+
}, 5 * 60 * 1000);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function successPage(msg, isError) {
|
|
172
|
+
return `<!DOCTYPE html><html><head><meta charset="UTF-8">
|
|
173
|
+
<style>body{font-family:-apple-system,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#0d0d12;color:#e2e2f0}
|
|
174
|
+
.box{text-align:center;padding:40px;border-radius:16px;background:#16161e;border:1px solid ${isError ? "#ef4444" : "#f97316"}33}
|
|
175
|
+
h2{color:${isError ? "#ef4444" : "#f97316"};margin-bottom:8px}p{color:#6b6b8a}</style></head>
|
|
176
|
+
<body><div class="box"><h2>${isError ? "Error:" : "Success:"} ${msg}</h2><p>Return to the rcodex Gateway tab.</p></div></body></html>`;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=claude-oauth-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-oauth-flow.js","sourceRoot":"","sources":["../../../src/gateway/providers/claude-oauth-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const COPILOT_DEFAULT_MODELS: string[];
|
|
2
|
+
export interface CopilotDeviceAuth {
|
|
3
|
+
deviceCode: string;
|
|
4
|
+
userCode: string;
|
|
5
|
+
verificationUri: string;
|
|
6
|
+
expiresIn: number;
|
|
7
|
+
interval: number;
|
|
8
|
+
}
|
|
9
|
+
export interface CopilotOAuthToken {
|
|
10
|
+
accessToken: string;
|
|
11
|
+
tokenType?: string;
|
|
12
|
+
scope?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function startCopilotDeviceAuth(): Promise<CopilotDeviceAuth>;
|
|
15
|
+
export declare function pollCopilotDeviceToken(auth: CopilotDeviceAuth): Promise<CopilotOAuthToken>;
|
|
16
|
+
export declare function getCopilotToken(githubToken: string): Promise<string>;
|
|
17
|
+
export declare function getCopilotModels(githubToken: string): Promise<string[]>;
|
|
18
|
+
export declare function callCopilot(githubToken: string, model: string, messages: unknown[], instructions?: string, stream?: boolean, signal?: AbortSignal, tools?: unknown[]): Promise<Response>;
|
|
19
|
+
//# sourceMappingURL=copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../src/gateway/providers/copilot.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,UAMlC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA0BzE;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwChG;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe1E;AAaD,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB7E;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,UAAO,EACb,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC,QAAQ,CAAC,CAgBnB"}
|