@cortexkit/antigravity-auth-core 1.0.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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/dist/agy-transport.d.ts +15 -0
  4. package/dist/agy-transport.d.ts.map +1 -0
  5. package/dist/agy-transport.js +380 -0
  6. package/dist/agy-transport.js.map +1 -0
  7. package/dist/antigravity/oauth.d.ts +42 -0
  8. package/dist/antigravity/oauth.d.ts.map +1 -0
  9. package/dist/antigravity/oauth.js +179 -0
  10. package/dist/antigravity/oauth.js.map +1 -0
  11. package/dist/auth-types.d.ts +26 -0
  12. package/dist/auth-types.d.ts.map +1 -0
  13. package/dist/auth-types.js +3 -0
  14. package/dist/auth-types.js.map +1 -0
  15. package/dist/auth.d.ts +21 -0
  16. package/dist/auth.d.ts.map +1 -0
  17. package/dist/auth.js +46 -0
  18. package/dist/auth.js.map +1 -0
  19. package/dist/constants.d.ts +146 -0
  20. package/dist/constants.d.ts.map +1 -0
  21. package/dist/constants.js +214 -0
  22. package/dist/constants.js.map +1 -0
  23. package/dist/fingerprint.d.ts +73 -0
  24. package/dist/fingerprint.d.ts.map +1 -0
  25. package/dist/fingerprint.js +129 -0
  26. package/dist/fingerprint.js.map +1 -0
  27. package/dist/index.d.ts +13 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +15 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/logger.d.ts +32 -0
  32. package/dist/logger.d.ts.map +1 -0
  33. package/dist/logger.js +67 -0
  34. package/dist/logger.js.map +1 -0
  35. package/dist/model-registry.d.ts +47 -0
  36. package/dist/model-registry.d.ts.map +1 -0
  37. package/dist/model-registry.js +214 -0
  38. package/dist/model-registry.js.map +1 -0
  39. package/dist/model-types.d.ts +8 -0
  40. package/dist/model-types.d.ts.map +1 -0
  41. package/dist/model-types.js +3 -0
  42. package/dist/model-types.js.map +1 -0
  43. package/dist/project.d.ts +34 -0
  44. package/dist/project.d.ts.map +1 -0
  45. package/dist/project.js +236 -0
  46. package/dist/project.js.map +1 -0
  47. package/dist/transform/claude.d.ts +92 -0
  48. package/dist/transform/claude.d.ts.map +1 -0
  49. package/dist/transform/claude.js +280 -0
  50. package/dist/transform/claude.js.map +1 -0
  51. package/dist/transform/cross-model-sanitizer.d.ts +35 -0
  52. package/dist/transform/cross-model-sanitizer.d.ts.map +1 -0
  53. package/dist/transform/cross-model-sanitizer.js +225 -0
  54. package/dist/transform/cross-model-sanitizer.js.map +1 -0
  55. package/dist/transform/gemini.d.ts +100 -0
  56. package/dist/transform/gemini.d.ts.map +1 -0
  57. package/dist/transform/gemini.js +446 -0
  58. package/dist/transform/gemini.js.map +1 -0
  59. package/dist/transform/index.d.ts +15 -0
  60. package/dist/transform/index.d.ts.map +1 -0
  61. package/dist/transform/index.js +14 -0
  62. package/dist/transform/index.js.map +1 -0
  63. package/dist/transform/model-resolver.d.ts +95 -0
  64. package/dist/transform/model-resolver.d.ts.map +1 -0
  65. package/dist/transform/model-resolver.js +398 -0
  66. package/dist/transform/model-resolver.js.map +1 -0
  67. package/dist/transform/types.d.ts +111 -0
  68. package/dist/transform/types.d.ts.map +1 -0
  69. package/dist/transform/types.js +2 -0
  70. package/dist/transform/types.js.map +1 -0
  71. package/dist/version.d.ts +26 -0
  72. package/dist/version.d.ts.map +1 -0
  73. package/dist/version.js +87 -0
  74. package/dist/version.js.map +1 -0
  75. package/package.json +44 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Jens
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @cortexkit/antigravity-auth-core
2
+
3
+ Harness-agnostic core for Google Antigravity OAuth. Shared by the OpenCode
4
+ plugin ([`@cortexkit/opencode-antigravity-auth`](../opencode)) and the pi
5
+ extension ([`@cortexkit/pi-antigravity-auth`](../pi)).
6
+
7
+ Provides:
8
+
9
+ - **OAuth** — authorization, code exchange, and token refresh against Google's
10
+ Antigravity OAuth client.
11
+ - **Transport** — a raw HTTP/1.1 transport (`fetchWithAgyCliTransport`) that
12
+ matches the `agy` CLI's on-wire header order and framing.
13
+ - **Fingerprint** — Antigravity CLI device identity and User-Agent construction.
14
+ - **Request transforms** — Gemini/Claude request shaping, schema sanitization,
15
+ thinking-config handling, and cross-model metadata stripping.
16
+ - **Model registry & resolver** — Antigravity model catalog plus the
17
+ model/thinking-budget wire mappings.
18
+ - **Managed project** — `loadCodeAssist`/`onboardUser` resolution with caching.
19
+
20
+ This package is an implementation detail of the harness packages and has no
21
+ stable public API contract of its own.
22
+
23
+ ## License
24
+
25
+ MIT
@@ -0,0 +1,15 @@
1
+ export declare const DEFAULT_AGY_RESPONSE_HEADER_TIMEOUT_MS = 180000;
2
+ export type AgyTransportOptions = {
3
+ /**
4
+ * Maximum time to wait for the request to connect and receive HTTP response headers.
5
+ * The response body/stream is not bounded by this timeout.
6
+ */
7
+ timeoutMs?: number;
8
+ signal?: AbortSignal | null;
9
+ onDebug?: (message: string) => void;
10
+ };
11
+ type HeaderPair = readonly [string, string];
12
+ export declare function buildAgyCliHeaderPairs(url: string, init?: RequestInit): HeaderPair[];
13
+ export declare function fetchWithAgyCliTransport(url: string, init?: RequestInit, options?: AgyTransportOptions): Promise<Response>;
14
+ export {};
15
+ //# sourceMappingURL=agy-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-transport.d.ts","sourceRoot":"","sources":["../src/agy-transport.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sCAAsC,SAAU,CAAA;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,KAAK,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAqC3C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,UAAU,EAAE,CA6BxF;AA+SD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAgB,EACtB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAuCnB"}
@@ -0,0 +1,380 @@
1
+ import * as net from "node:net";
2
+ import * as tls from "node:tls";
3
+ import { Buffer } from "node:buffer";
4
+ import { PassThrough, Readable, Transform } from "node:stream";
5
+ import { createGunzip } from "node:zlib";
6
+ const DEFAULT_HTTPS_PORT = 443;
7
+ const DEFAULT_PROXY_PORT = 8080;
8
+ export const DEFAULT_AGY_RESPONSE_HEADER_TIMEOUT_MS = 180_000;
9
+ function headersToRecord(headers) {
10
+ const result = {};
11
+ if (!headers)
12
+ return result;
13
+ const normalized = new Headers(headers);
14
+ normalized.forEach((value, key) => {
15
+ result[key.toLowerCase()] = value;
16
+ });
17
+ return result;
18
+ }
19
+ function getHeader(headers, name) {
20
+ return headers[name.toLowerCase()];
21
+ }
22
+ function bodyToBuffer(body) {
23
+ if (body == null)
24
+ return Buffer.alloc(0);
25
+ if (typeof body === "string")
26
+ return Buffer.from(body);
27
+ if (body instanceof Uint8Array)
28
+ return Buffer.from(body);
29
+ if (body instanceof ArrayBuffer)
30
+ return Buffer.from(body);
31
+ throw new Error("agy transport only supports string/byte request bodies");
32
+ }
33
+ function shouldUseChunkedBody(url) {
34
+ return url.pathname.includes(":streamGenerateContent");
35
+ }
36
+ export function buildAgyCliHeaderPairs(url, init = {}) {
37
+ const parsedUrl = new URL(url);
38
+ const headers = headersToRecord(init.headers);
39
+ const body = bodyToBuffer(init.body);
40
+ const host = parsedUrl.port ? `${parsedUrl.hostname}:${parsedUrl.port}` : parsedUrl.hostname;
41
+ const userAgent = getHeader(headers, "User-Agent") ?? "antigravity/cli/1.0.4 darwin/arm64";
42
+ const authorization = getHeader(headers, "Authorization");
43
+ const contentType = getHeader(headers, "Content-Type") ?? "application/json";
44
+ const acceptEncoding = getHeader(headers, "Accept-Encoding") ?? "gzip";
45
+ const chunked = shouldUseChunkedBody(parsedUrl);
46
+ const pairs = [
47
+ ["Host", host],
48
+ ["User-Agent", userAgent],
49
+ ];
50
+ if (chunked) {
51
+ pairs.push(["Transfer-Encoding", "chunked"]);
52
+ }
53
+ else {
54
+ pairs.push(["Content-Length", String(body.byteLength)]);
55
+ }
56
+ if (authorization) {
57
+ pairs.push(["Authorization", authorization]);
58
+ }
59
+ pairs.push(["Content-Type", contentType]);
60
+ pairs.push(["Accept-Encoding", acceptEncoding]);
61
+ return pairs;
62
+ }
63
+ function noProxyIncludes(hostname) {
64
+ const raw = process.env.NO_PROXY || process.env.no_proxy || "";
65
+ if (!raw)
66
+ return false;
67
+ const host = hostname.toLowerCase();
68
+ return raw.split(",").map((entry) => entry.trim().toLowerCase()).some((entry) => {
69
+ if (!entry)
70
+ return false;
71
+ if (entry === "*")
72
+ return true;
73
+ if (entry.startsWith("."))
74
+ return host.endsWith(entry);
75
+ return host === entry || host.endsWith(`.${entry}`);
76
+ });
77
+ }
78
+ function getHttpsProxy(url) {
79
+ if (url.protocol !== "https:" || noProxyIncludes(url.hostname))
80
+ return undefined;
81
+ const rawProxy = process.env.HTTPS_PROXY || process.env.https_proxy || process.env.ALL_PROXY || process.env.all_proxy;
82
+ if (!rawProxy)
83
+ return undefined;
84
+ try {
85
+ return new URL(rawProxy);
86
+ }
87
+ catch {
88
+ return undefined;
89
+ }
90
+ }
91
+ function waitForHead(socket, timeoutMs, onTimeout) {
92
+ return new Promise((resolve, reject) => {
93
+ let buffer = Buffer.alloc(0);
94
+ const timeout = setTimeout(() => {
95
+ onTimeout();
96
+ cleanup(() => reject(new Error(`Antigravity request timed out waiting for response headers after ${timeoutMs}ms`)));
97
+ }, timeoutMs);
98
+ const cleanup = (finish) => {
99
+ socket.off("data", onData);
100
+ socket.off("error", onError);
101
+ clearTimeout(timeout);
102
+ finish();
103
+ };
104
+ const onError = (error) => cleanup(() => reject(error));
105
+ const onData = (chunk) => {
106
+ buffer = Buffer.concat([buffer, chunk]);
107
+ const marker = buffer.indexOf("\r\n\r\n");
108
+ if (marker === -1)
109
+ return;
110
+ const head = buffer.subarray(0, marker).toString("latin1");
111
+ const leftover = buffer.subarray(marker + 4);
112
+ cleanup(() => resolve({ head, leftover }));
113
+ };
114
+ socket.on("data", onData);
115
+ socket.once("error", onError);
116
+ });
117
+ }
118
+ async function connectViaProxy(proxyUrl, targetUrl, timeoutMs, onDebug) {
119
+ const proxySocket = net.connect({
120
+ host: proxyUrl.hostname,
121
+ port: Number(proxyUrl.port || DEFAULT_PROXY_PORT),
122
+ });
123
+ await new Promise((resolve, reject) => {
124
+ const timeout = setTimeout(() => {
125
+ onDebug?.(`agy transport proxy connect timeout after ${timeoutMs}ms`);
126
+ proxySocket.destroy();
127
+ reject(new Error(`Antigravity request timed out connecting to HTTPS proxy after ${timeoutMs}ms`));
128
+ }, timeoutMs);
129
+ const cleanup = () => clearTimeout(timeout);
130
+ proxySocket.once("connect", () => {
131
+ cleanup();
132
+ resolve();
133
+ });
134
+ proxySocket.once("error", (error) => {
135
+ cleanup();
136
+ reject(error);
137
+ });
138
+ });
139
+ const targetHost = targetUrl.hostname;
140
+ const targetPort = Number(targetUrl.port || DEFAULT_HTTPS_PORT);
141
+ const auth = proxyUrl.username
142
+ ? `Proxy-Authorization: Basic ${Buffer.from(`${decodeURIComponent(proxyUrl.username)}:${decodeURIComponent(proxyUrl.password)}`).toString("base64")}\r\n`
143
+ : "";
144
+ proxySocket.write(`CONNECT ${targetHost}:${targetPort} HTTP/1.1\r\n` +
145
+ `Host: ${targetHost}:${targetPort}\r\n` +
146
+ auth +
147
+ "\r\n");
148
+ const { head, leftover } = await waitForHead(proxySocket, timeoutMs, () => {
149
+ onDebug?.(`agy transport proxy CONNECT response timeout after ${timeoutMs}ms`);
150
+ proxySocket.destroy();
151
+ });
152
+ if (!/^HTTP\/1\.[01] 2\d\d\b/.test(head)) {
153
+ proxySocket.destroy();
154
+ throw new Error(`Proxy CONNECT failed: ${head.split("\r\n")[0] ?? "unknown"}`);
155
+ }
156
+ if (leftover.length > 0) {
157
+ proxySocket.unshift(leftover);
158
+ }
159
+ return await new Promise((resolve, reject) => {
160
+ const tlsSocket = tls.connect({ socket: proxySocket, servername: targetHost });
161
+ const timeout = setTimeout(() => {
162
+ onDebug?.(`agy transport proxy TLS handshake timeout after ${timeoutMs}ms`);
163
+ tlsSocket.destroy();
164
+ reject(new Error(`Antigravity request timed out during proxy TLS handshake after ${timeoutMs}ms`));
165
+ }, timeoutMs);
166
+ const cleanup = () => clearTimeout(timeout);
167
+ tlsSocket.once("secureConnect", () => {
168
+ cleanup();
169
+ resolve(tlsSocket);
170
+ });
171
+ tlsSocket.once("error", (error) => {
172
+ cleanup();
173
+ reject(error);
174
+ });
175
+ });
176
+ }
177
+ async function connectDirect(targetUrl, timeoutMs, onDebug) {
178
+ return await new Promise((resolve, reject) => {
179
+ const socket = tls.connect({
180
+ host: targetUrl.hostname,
181
+ port: Number(targetUrl.port || DEFAULT_HTTPS_PORT),
182
+ servername: targetUrl.hostname,
183
+ });
184
+ const timeout = setTimeout(() => {
185
+ onDebug?.(`agy transport TLS connect timeout after ${timeoutMs}ms`);
186
+ socket.destroy();
187
+ reject(new Error(`Antigravity request timed out connecting after ${timeoutMs}ms`));
188
+ }, timeoutMs);
189
+ const cleanup = () => clearTimeout(timeout);
190
+ socket.once("secureConnect", () => {
191
+ cleanup();
192
+ resolve(socket);
193
+ });
194
+ socket.once("error", (error) => {
195
+ cleanup();
196
+ reject(error);
197
+ });
198
+ });
199
+ }
200
+ async function connectTls(targetUrl, timeoutMs, onDebug) {
201
+ const proxyUrl = getHttpsProxy(targetUrl);
202
+ return proxyUrl ? await connectViaProxy(proxyUrl, targetUrl, timeoutMs, onDebug) : await connectDirect(targetUrl, timeoutMs, onDebug);
203
+ }
204
+ function serializeRequest(url, init, body) {
205
+ const method = init.method ?? "POST";
206
+ const path = `${url.pathname}${url.search}`;
207
+ const headerLines = buildAgyCliHeaderPairs(url.toString(), init)
208
+ .map(([key, value]) => `${key}: ${value}`)
209
+ .join("\r\n");
210
+ const head = Buffer.from(`${method} ${path} HTTP/1.1\r\n${headerLines}\r\n\r\n`);
211
+ if (body.byteLength === 0) {
212
+ return head;
213
+ }
214
+ if (!shouldUseChunkedBody(url)) {
215
+ return Buffer.concat([head, body]);
216
+ }
217
+ return Buffer.concat([
218
+ head,
219
+ Buffer.from(`${body.byteLength.toString(16)}\r\n`),
220
+ body,
221
+ Buffer.from("\r\n0\r\n\r\n"),
222
+ ]);
223
+ }
224
+ function parseResponseHead(head) {
225
+ const lines = head.split("\r\n");
226
+ const statusLine = lines.shift() ?? "";
227
+ const match = /^HTTP\/1\.[01]\s+(\d{3})\s*(.*)$/.exec(statusLine);
228
+ if (!match) {
229
+ throw new Error(`Invalid HTTP response: ${statusLine}`);
230
+ }
231
+ const headers = new Headers();
232
+ let chunked = false;
233
+ let gzip = false;
234
+ for (const line of lines) {
235
+ const index = line.indexOf(":");
236
+ if (index <= 0)
237
+ continue;
238
+ const key = line.slice(0, index);
239
+ const value = line.slice(index + 1).trim();
240
+ const lowerKey = key.toLowerCase();
241
+ const lowerValue = value.toLowerCase();
242
+ if (lowerKey === "transfer-encoding" && lowerValue.includes("chunked")) {
243
+ chunked = true;
244
+ continue;
245
+ }
246
+ if (lowerKey === "content-encoding" && lowerValue.includes("gzip")) {
247
+ gzip = true;
248
+ continue;
249
+ }
250
+ if (gzip && lowerKey === "content-length") {
251
+ continue;
252
+ }
253
+ headers.append(key, value);
254
+ }
255
+ return {
256
+ status: Number(match[1]),
257
+ statusText: match[2] ?? "",
258
+ headers,
259
+ chunked,
260
+ gzip,
261
+ };
262
+ }
263
+ class ChunkedDecodeStream extends Transform {
264
+ buffer = Buffer.alloc(0);
265
+ _transform(chunk, _encoding, callback) {
266
+ this.buffer = Buffer.concat([this.buffer, chunk]);
267
+ try {
268
+ this.flushAvailableChunks();
269
+ callback();
270
+ }
271
+ catch (error) {
272
+ callback(error instanceof Error ? error : new Error(String(error)));
273
+ }
274
+ }
275
+ _flush(callback) {
276
+ try {
277
+ this.flushAvailableChunks();
278
+ callback();
279
+ }
280
+ catch (error) {
281
+ callback(error instanceof Error ? error : new Error(String(error)));
282
+ }
283
+ }
284
+ flushAvailableChunks() {
285
+ while (true) {
286
+ const lineEnd = this.buffer.indexOf("\r\n");
287
+ if (lineEnd === -1)
288
+ return;
289
+ const sizeLine = this.buffer.subarray(0, lineEnd).toString("latin1");
290
+ const sizeText = sizeLine.split(";", 1)[0]?.trim() ?? "";
291
+ const size = Number.parseInt(sizeText, 16);
292
+ if (!Number.isFinite(size)) {
293
+ throw new Error(`Invalid chunk size: ${sizeLine}`);
294
+ }
295
+ const chunkStart = lineEnd + 2;
296
+ const chunkEnd = chunkStart + size;
297
+ const nextOffset = chunkEnd + 2;
298
+ if (this.buffer.length < nextOffset)
299
+ return;
300
+ if (size === 0) {
301
+ this.buffer = Buffer.alloc(0);
302
+ this.push(null);
303
+ return;
304
+ }
305
+ this.push(this.buffer.subarray(chunkStart, chunkEnd));
306
+ this.buffer = this.buffer.subarray(nextOffset);
307
+ }
308
+ }
309
+ }
310
+ function buildResponseStream(socket, leftover, head, signal) {
311
+ const source = new PassThrough();
312
+ if (leftover.length > 0) {
313
+ source.write(leftover);
314
+ }
315
+ socket.pipe(source);
316
+ let responseBody = source;
317
+ if (head.chunked) {
318
+ responseBody = responseBody.pipe(new ChunkedDecodeStream());
319
+ }
320
+ if (head.gzip) {
321
+ responseBody = responseBody.pipe(createGunzip());
322
+ }
323
+ const abort = () => socket.destroy(new DOMException("The operation was aborted", "AbortError"));
324
+ const cleanup = () => signal?.removeEventListener("abort", abort);
325
+ if (signal?.aborted) {
326
+ abort();
327
+ }
328
+ else {
329
+ signal?.addEventListener("abort", abort, { once: true });
330
+ }
331
+ responseBody.once("end", () => {
332
+ cleanup();
333
+ socket.destroy();
334
+ });
335
+ responseBody.once("error", () => {
336
+ cleanup();
337
+ socket.destroy();
338
+ });
339
+ responseBody.once("close", cleanup);
340
+ return Readable.toWeb(responseBody);
341
+ }
342
+ export async function fetchWithAgyCliTransport(url, init = {}, options = {}) {
343
+ const parsedUrl = new URL(url);
344
+ if (parsedUrl.protocol !== "https:") {
345
+ throw new Error(`agy transport only supports https URLs: ${url}`);
346
+ }
347
+ const body = bodyToBuffer(init.body);
348
+ const requestBytes = serializeRequest(parsedUrl, init, body);
349
+ const timeoutMs = options.timeoutMs ?? DEFAULT_AGY_RESPONSE_HEADER_TIMEOUT_MS;
350
+ options.onDebug?.(`agy transport connecting to ${parsedUrl.hostname} with header timeout ${timeoutMs}ms`);
351
+ const socket = await connectTls(parsedUrl, timeoutMs, options.onDebug);
352
+ const abort = () => {
353
+ socket.destroy(new DOMException("The operation was aborted", "AbortError"));
354
+ };
355
+ try {
356
+ options.signal?.addEventListener("abort", abort, { once: true });
357
+ socket.write(requestBytes);
358
+ options.onDebug?.(`agy transport request dispatched (${requestBytes.byteLength} bytes)`);
359
+ const { head, leftover } = await waitForHead(socket, timeoutMs, () => {
360
+ options.onDebug?.(`agy transport response header timeout after ${timeoutMs}ms`);
361
+ socket.destroy();
362
+ });
363
+ const parsedHead = parseResponseHead(head);
364
+ options.onDebug?.(`agy transport response headers received: ${parsedHead.status} ${parsedHead.statusText}`);
365
+ const bodyStream = buildResponseStream(socket, leftover, parsedHead, options.signal);
366
+ return new Response(bodyStream, {
367
+ status: parsedHead.status,
368
+ statusText: parsedHead.statusText,
369
+ headers: parsedHead.headers,
370
+ });
371
+ }
372
+ catch (error) {
373
+ socket.destroy();
374
+ throw error;
375
+ }
376
+ finally {
377
+ options.signal?.removeEventListener("abort", abort);
378
+ }
379
+ }
380
+ //# sourceMappingURL=agy-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-transport.js","sourceRoot":"","sources":["../src/agy-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Result returned to the caller after constructing an OAuth authorization URL.
3
+ */
4
+ export interface AntigravityAuthorization {
5
+ url: string;
6
+ verifier: string;
7
+ projectId: string;
8
+ }
9
+ interface AntigravityTokenExchangeSuccess {
10
+ type: "success";
11
+ refresh: string;
12
+ access: string;
13
+ expires: number;
14
+ email?: string;
15
+ projectId: string;
16
+ }
17
+ interface AntigravityTokenExchangeFailure {
18
+ type: "failed";
19
+ error: string;
20
+ }
21
+ export type AntigravityTokenExchangeResult = AntigravityTokenExchangeSuccess | AntigravityTokenExchangeFailure;
22
+ export interface AntigravityRefreshResult {
23
+ access: string;
24
+ refresh: string;
25
+ expires: number;
26
+ }
27
+ /**
28
+ * Refresh an Antigravity OAuth access token using a bare refresh token.
29
+ * Harness-agnostic: performs only the token POST and returns the new
30
+ * credentials. Persistence/caching is the caller's responsibility.
31
+ */
32
+ export declare function refreshAntigravityToken(refreshToken: string): Promise<AntigravityRefreshResult>;
33
+ /**
34
+ * Build the Antigravity OAuth authorization URL including PKCE and optional project metadata.
35
+ */
36
+ export declare function authorizeAntigravity(projectId?: string): Promise<AntigravityAuthorization>;
37
+ /**
38
+ * Exchange an authorization code for Antigravity CLI access and refresh tokens.
39
+ */
40
+ export declare function exchangeAntigravity(code: string, state: string): Promise<AntigravityTokenExchangeResult>;
41
+ export {};
42
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/antigravity/oauth.ts"],"names":[],"mappings":"AA+BA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,+BAA+B;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,+BAA+B;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,8BAA8B,GACtC,+BAA+B,GAC/B,+BAA+B,CAAC;AAEpC,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,wBAAwB,CAAC,CA+BnC;AAoCD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,SAAK,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAsB5F;AAyDD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,8BAA8B,CAAC,CAsEzC"}