opencode-antigravity-auth 1.6.5-beta.0 → 2.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 (126) hide show
  1. package/README.md +36 -12
  2. package/dist/index.d.ts +10 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/antigravity/oauth.d.ts +0 -28
  7. package/dist/src/antigravity/oauth.d.ts.map +1 -1
  8. package/dist/src/antigravity/oauth.js +25 -103
  9. package/dist/src/antigravity/oauth.js.map +1 -1
  10. package/dist/src/constants.d.ts +53 -32
  11. package/dist/src/constants.d.ts.map +1 -1
  12. package/dist/src/constants.js +64 -56
  13. package/dist/src/constants.js.map +1 -1
  14. package/dist/src/hooks/auto-update-checker/cache.js +1 -1
  15. package/dist/src/hooks/auto-update-checker/checker.d.ts +1 -1
  16. package/dist/src/hooks/auto-update-checker/checker.js +2 -2
  17. package/dist/src/hooks/auto-update-checker/index.d.ts +4 -4
  18. package/dist/src/hooks/auto-update-checker/index.js +6 -6
  19. package/dist/src/hooks/auto-update-checker/logging.js +1 -1
  20. package/dist/src/plugin/accounts.d.ts +9 -10
  21. package/dist/src/plugin/accounts.d.ts.map +1 -1
  22. package/dist/src/plugin/accounts.js +14 -13
  23. package/dist/src/plugin/accounts.js.map +1 -1
  24. package/dist/src/plugin/auth.d.ts +1 -1
  25. package/dist/src/plugin/cache/index.d.ts +1 -1
  26. package/dist/src/plugin/cache/index.js +1 -1
  27. package/dist/src/plugin/cache/signature-cache.d.ts +1 -1
  28. package/dist/src/plugin/cache/signature-cache.js +1 -1
  29. package/dist/src/plugin/cache.d.ts +7 -5
  30. package/dist/src/plugin/cache.d.ts.map +1 -1
  31. package/dist/src/plugin/cache.js +20 -3
  32. package/dist/src/plugin/cache.js.map +1 -1
  33. package/dist/src/plugin/cli.d.ts +4 -6
  34. package/dist/src/plugin/cli.d.ts.map +1 -1
  35. package/dist/src/plugin/cli.js +5 -11
  36. package/dist/src/plugin/cli.js.map +1 -1
  37. package/dist/src/plugin/config/index.d.ts +2 -2
  38. package/dist/src/plugin/config/index.js +2 -2
  39. package/dist/src/plugin/config/loader.d.ts +1 -1
  40. package/dist/src/plugin/config/loader.js +2 -2
  41. package/dist/src/plugin/config/models-v2.d.ts +36 -0
  42. package/dist/src/plugin/config/models-v2.d.ts.map +1 -0
  43. package/dist/src/plugin/config/models-v2.js +51 -0
  44. package/dist/src/plugin/config/models-v2.js.map +1 -0
  45. package/dist/src/plugin/config/models.d.ts +1 -1
  46. package/dist/src/plugin/config/updater.d.ts +16 -3
  47. package/dist/src/plugin/config/updater.d.ts.map +1 -1
  48. package/dist/src/plugin/config/updater.js +53 -10
  49. package/dist/src/plugin/config/updater.js.map +1 -1
  50. package/dist/src/plugin/core/streaming/index.d.ts +2 -2
  51. package/dist/src/plugin/core/streaming/index.js +2 -2
  52. package/dist/src/plugin/core/streaming/transformer.d.ts +1 -1
  53. package/dist/src/plugin/core/streaming/transformer.js +1 -1
  54. package/dist/src/plugin/debug.d.ts +1 -1
  55. package/dist/src/plugin/debug.js +2 -2
  56. package/dist/src/plugin/fingerprint.d.ts +8 -5
  57. package/dist/src/plugin/fingerprint.d.ts.map +1 -1
  58. package/dist/src/plugin/fingerprint.js +23 -41
  59. package/dist/src/plugin/fingerprint.js.map +1 -1
  60. package/dist/src/plugin/logger.d.ts +1 -1
  61. package/dist/src/plugin/logger.js +2 -2
  62. package/dist/src/plugin/project.d.ts +4 -4
  63. package/dist/src/plugin/project.d.ts.map +1 -1
  64. package/dist/src/plugin/project.js +95 -94
  65. package/dist/src/plugin/project.js.map +1 -1
  66. package/dist/src/plugin/quota.d.ts +2 -2
  67. package/dist/src/plugin/quota.d.ts.map +1 -1
  68. package/dist/src/plugin/quota.js +12 -8
  69. package/dist/src/plugin/quota.js.map +1 -1
  70. package/dist/src/plugin/recovery/index.d.ts +3 -3
  71. package/dist/src/plugin/recovery/index.js +3 -3
  72. package/dist/src/plugin/recovery/storage.d.ts +1 -1
  73. package/dist/src/plugin/recovery/storage.js +1 -1
  74. package/dist/src/plugin/recovery.d.ts +3 -3
  75. package/dist/src/plugin/recovery.js +3 -3
  76. package/dist/src/plugin/refresh-queue.d.ts +2 -2
  77. package/dist/src/plugin/refresh-queue.js +2 -2
  78. package/dist/src/plugin/request-helpers.d.ts +1 -1
  79. package/dist/src/plugin/request-helpers.js +5 -5
  80. package/dist/src/plugin/request.d.ts +9 -6
  81. package/dist/src/plugin/request.d.ts.map +1 -1
  82. package/dist/src/plugin/request.js +23 -23
  83. package/dist/src/plugin/request.js.map +1 -1
  84. package/dist/src/plugin/search.js +7 -7
  85. package/dist/src/plugin/search.js.map +1 -1
  86. package/dist/src/plugin/server.js +1 -1
  87. package/dist/src/plugin/storage.d.ts +3 -5
  88. package/dist/src/plugin/storage.d.ts.map +1 -1
  89. package/dist/src/plugin/storage.js +56 -67
  90. package/dist/src/plugin/storage.js.map +1 -1
  91. package/dist/src/plugin/stores/signature-store.d.ts +1 -1
  92. package/dist/src/plugin/token.d.ts +1 -1
  93. package/dist/src/plugin/token.js +5 -5
  94. package/dist/src/plugin/transform/claude.d.ts +1 -1
  95. package/dist/src/plugin/transform/claude.js +1 -1
  96. package/dist/src/plugin/transform/cross-model-sanitizer.js +2 -2
  97. package/dist/src/plugin/transform/gemini.d.ts +1 -1
  98. package/dist/src/plugin/transform/index.d.ts +9 -9
  99. package/dist/src/plugin/transform/index.js +4 -4
  100. package/dist/src/plugin/transform/model-resolver.d.ts +12 -1
  101. package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -1
  102. package/dist/src/plugin/transform/model-resolver.js +26 -4
  103. package/dist/src/plugin/transform/model-resolver.js.map +1 -1
  104. package/dist/src/plugin/transform/types.d.ts +1 -1
  105. package/dist/src/plugin/types.d.ts +26 -2
  106. package/dist/src/plugin/types.d.ts.map +1 -1
  107. package/dist/src/plugin/ui/auth-menu.d.ts +1 -4
  108. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -1
  109. package/dist/src/plugin/ui/auth-menu.js +8 -16
  110. package/dist/src/plugin/ui/auth-menu.js.map +1 -1
  111. package/dist/src/plugin/ui/confirm.js +1 -1
  112. package/dist/src/plugin/ui/select.js +1 -1
  113. package/dist/src/plugin/version.d.ts +35 -6
  114. package/dist/src/plugin/version.d.ts.map +1 -1
  115. package/dist/src/plugin/version.js +138 -42
  116. package/dist/src/plugin/version.js.map +1 -1
  117. package/dist/src/plugin.d.ts +11 -8
  118. package/dist/src/plugin.d.ts.map +1 -1
  119. package/dist/src/plugin.js +97 -276
  120. package/dist/src/plugin.js.map +1 -1
  121. package/dist/src/v2.d.ts +4 -0
  122. package/dist/src/v2.d.ts.map +1 -0
  123. package/dist/src/v2.js +391 -0
  124. package/dist/src/v2.js.map +1 -0
  125. package/index.js +4 -0
  126. package/package.json +14 -6
package/dist/src/v2.js ADDED
@@ -0,0 +1,391 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { createRequire } from "node:module";
3
+ import { pathToFileURL } from "node:url";
4
+ import { createGoogleGenerativeAI } from "@ai-sdk/google";
5
+ import { Credential, Integration, Model, Plugin, Provider } from "@opencode/plugin";
6
+ import { authorizeAntigravity, exchangeAntigravity } from "./antigravity/oauth.js";
7
+ import { ANTIGRAVITY_REDIRECT_URI } from "./constants.js";
8
+ import { createAntigravityPlugin, persistAccountPool } from "./plugin.js";
9
+ import { accessTokenExpired, formatRefreshParts, parseRefreshParts } from "./plugin/auth.js";
10
+ import { OPENCODE_V2_MODEL_DEFINITIONS } from "./plugin/config/models-v2.js";
11
+ import { ensureProjectContext } from "./plugin/project.js";
12
+ import { executeSearch } from "./plugin/search.js";
13
+ import { startOAuthListener } from "./plugin/server.js";
14
+ import { loadAccounts, saveAccounts } from "./plugin/storage.js";
15
+ import { AntigravityTokenRefreshError, refreshAccessToken } from "./plugin/token.js";
16
+ const PROVIDER_ID = "google";
17
+ const METHOD_ID = "antigravity";
18
+ // Core rewrites the standard Google SDK package to its native transport after
19
+ // every provider/model update. Its local module URL avoids that conversion and
20
+ // lets Core's earlier generic SDK loader use our installed dependency directly.
21
+ const SDK_PACKAGE = typeof import.meta.resolve === "function"
22
+ ? import.meta.resolve("@ai-sdk/google")
23
+ : pathToFileURL(createRequire(import.meta.url).resolve("@ai-sdk/google")).href;
24
+ const GOOGLE_PACKAGE = `aisdk:${SDK_PACKAGE}`;
25
+ const API_KEY_SENTINEL = "antigravity-oauth";
26
+ const ownsModel = (id) => id.startsWith("antigravity-");
27
+ function mergeBody(base, overlay) {
28
+ const result = { ...base };
29
+ for (const [key, value] of Object.entries(overlay)) {
30
+ const previous = result[key];
31
+ if (value === undefined)
32
+ continue;
33
+ result[key] = value && typeof value === "object" && !Array.isArray(value)
34
+ && previous && typeof previous === "object" && !Array.isArray(previous)
35
+ ? mergeBody(previous, value)
36
+ : value;
37
+ }
38
+ return result;
39
+ }
40
+ // V2 owns credentials, notifications and session repair. The legacy transport
41
+ // only needs these methods to be awaitable; it never writes V2 session files.
42
+ function transportClient() {
43
+ const unusedSession = async () => {
44
+ throw new Error("Legacy session recovery is unavailable in OpenCode V2");
45
+ };
46
+ return {
47
+ app: { log: async () => undefined },
48
+ auth: { set: async () => undefined },
49
+ tui: { showToast: async () => undefined },
50
+ session: { prompt: unusedSession, abort: unusedSession, messages: unusedSession },
51
+ };
52
+ }
53
+ function oauthCredential(auth, metadata) {
54
+ return {
55
+ type: "oauth",
56
+ methodID: Integration.MethodID.make(METHOD_ID),
57
+ refresh: auth.refresh,
58
+ access: auth.access ?? "",
59
+ expires: auth.expires ?? 0,
60
+ ...(metadata ? { metadata } : {}),
61
+ };
62
+ }
63
+ function isAntigravityCredential(value) {
64
+ return value?.type === "oauth" && value.methodID === METHOD_ID && !!value.refresh;
65
+ }
66
+ /** OpenCode 2.1's source transforms and AI SDK 3 transport adapter. */
67
+ export const AntigravityV2Plugin = Plugin.define({
68
+ id: "opencode-antigravity-auth",
69
+ async setup(ctx) {
70
+ const client = transportClient();
71
+ const outbound = new AsyncLocalStorage();
72
+ const transport = await createAntigravityPlugin(PROVIDER_ID)({
73
+ client,
74
+ directory: ctx.location.directory,
75
+ runtimeVersion: 2,
76
+ fetch: (input, init) => {
77
+ const send = outbound.getStore() ?? globalThis.fetch;
78
+ // Core's wrapper applies model.body to string init.body. It has already
79
+ // been applied to the Google request before interception, so a Request
80
+ // prevents applying that overlay again to the Antigravity envelope.
81
+ const request = new Request(input, init);
82
+ request.headers.delete("x-goog-api-key");
83
+ return send(request, { signal: init?.signal });
84
+ },
85
+ });
86
+ const registrations = [];
87
+ const saved = await loadAccounts();
88
+ const hasSavedAccounts = saved?.accounts.some((account) => account.enabled !== false && !!account.refreshToken);
89
+ const listeners = new Set();
90
+ const lifetime = new AbortController();
91
+ let disposed = false;
92
+ let loader;
93
+ let loaderIdentity;
94
+ let generation = 0;
95
+ let observedIdentity;
96
+ let loading;
97
+ const observeAuth = (resolved) => {
98
+ if (observedIdentity !== resolved?.identity) {
99
+ observedIdentity = resolved?.identity;
100
+ generation += 1;
101
+ loader = undefined;
102
+ loaderIdentity = undefined;
103
+ }
104
+ return resolved;
105
+ };
106
+ const resolveAuth = async () => {
107
+ const connection = await ctx.integration.connection.active(PROVIDER_ID);
108
+ if (connection) {
109
+ const value = await ctx.integration.connection.resolve(connection);
110
+ const stored = await loadAccounts();
111
+ const migrated = value?.type === "oauth" && value.methodID === "oauth"
112
+ && stored?.accounts.some((account) => account.refreshToken === parseRefreshParts(value.refresh).refreshToken);
113
+ if (!isAntigravityCredential(value) && !migrated)
114
+ return observeAuth(undefined);
115
+ if (value?.type !== "oauth")
116
+ return observeAuth(undefined);
117
+ // V1 credentials are imported with a generic method ID. Only matching
118
+ // this plugin's existing pool establishes their Antigravity ownership.
119
+ return observeAuth({ auth: value, identity: `credential:${parseRefreshParts(value.refresh).refreshToken}`, select: true });
120
+ }
121
+ // The independent pool also supports V1 migration without a connection.
122
+ const stored = await loadAccounts();
123
+ const active = stored?.accounts[stored.activeIndex];
124
+ const account = active?.enabled !== false && active?.refreshToken
125
+ ? active
126
+ : stored?.accounts.find((item) => item.enabled !== false && item.refreshToken);
127
+ return observeAuth(account ? {
128
+ auth: { type: "oauth", refresh: formatRefreshParts(account) },
129
+ identity: "account-pool",
130
+ select: false,
131
+ } : undefined);
132
+ };
133
+ const currentAuth = async () => (await resolveAuth())?.auth;
134
+ const invalidateLoader = () => { generation += 1; loader = undefined; loaderIdentity = undefined; };
135
+ const rememberAuth = async (auth, email) => {
136
+ const parts = parseRefreshParts(auth.refresh);
137
+ await persistAccountPool([{
138
+ type: "success",
139
+ refresh: auth.refresh,
140
+ access: auth.access ?? "",
141
+ expires: auth.expires ?? 0,
142
+ projectId: parts.projectId ?? "",
143
+ email,
144
+ }]);
145
+ };
146
+ const getLoader = async () => {
147
+ if (disposed)
148
+ throw new Error("Antigravity plugin has been disposed");
149
+ const resolved = await resolveAuth();
150
+ if (!resolved)
151
+ throw new Error("Connect Google with Antigravity OAuth to use this model");
152
+ const { auth, identity } = resolved;
153
+ if (loader && loaderIdentity === identity)
154
+ return loader;
155
+ if (loading) {
156
+ await loading;
157
+ return getLoader();
158
+ }
159
+ const expectedGeneration = generation;
160
+ loading = (async () => {
161
+ // Finish an older manager's pending save before selecting a new
162
+ // connection, so it cannot overwrite the newly selected cursors.
163
+ await transport.flush?.();
164
+ const token = parseRefreshParts(auth.refresh).refreshToken;
165
+ let stored = await loadAccounts();
166
+ if (!stored?.accounts.some((account) => account.refreshToken === token)) {
167
+ await rememberAuth(auth);
168
+ stored = await loadAccounts();
169
+ }
170
+ if (resolved.select && stored) {
171
+ const index = stored.accounts.findIndex((account) => account.refreshToken === token && account.enabled !== false);
172
+ if (index >= 0) {
173
+ stored.activeIndex = index;
174
+ stored.activeIndexByFamily = { claude: index, gemini: index };
175
+ await saveAccounts(stored);
176
+ }
177
+ }
178
+ const result = await transport.auth.loader(async () => await currentAuth() ?? { type: "none" }, {});
179
+ if (typeof result.fetch !== "function")
180
+ throw new Error("Antigravity OAuth is unavailable");
181
+ if (disposed)
182
+ throw new Error("Antigravity plugin has been disposed");
183
+ if (generation !== expectedGeneration)
184
+ return undefined;
185
+ loader = result;
186
+ loaderIdentity = identity;
187
+ return loader;
188
+ })();
189
+ let result;
190
+ try {
191
+ result = await loading;
192
+ }
193
+ finally {
194
+ loading = undefined;
195
+ }
196
+ return result ?? getLoader();
197
+ };
198
+ const scopedFetch = (fallback, body) => async (input, init) => {
199
+ if (disposed)
200
+ throw new Error("Antigravity plugin has been disposed");
201
+ const original = typeof fallback === "function" ? fallback : globalThis.fetch;
202
+ if (!await currentAuth())
203
+ return original(input, init);
204
+ if (body && typeof init?.body === "string") {
205
+ init = { ...init, body: JSON.stringify(mergeBody(JSON.parse(init.body), body)) };
206
+ }
207
+ const interceptor = await getLoader();
208
+ const signal = AbortSignal.any([
209
+ lifetime.signal,
210
+ ...(init?.signal ? [init.signal] : input instanceof Request ? [input.signal] : []),
211
+ ]);
212
+ return outbound.run(original, () => interceptor.fetch(input instanceof URL ? input.toString() : input, { ...init, signal }));
213
+ };
214
+ const cleanup = async () => {
215
+ if (disposed)
216
+ return;
217
+ disposed = true;
218
+ lifetime.abort(new Error("Antigravity plugin disposed"));
219
+ await Promise.allSettled([...listeners].map((listener) => listener.close()));
220
+ await Promise.allSettled(registrations.reverse().map((registration) => registration.dispose()));
221
+ await transport.dispose?.();
222
+ loader = undefined;
223
+ };
224
+ try {
225
+ registrations.push(await ctx.integration.transform((editor) => {
226
+ editor.method.update({
227
+ integrationID: PROVIDER_ID,
228
+ method: {
229
+ id: METHOD_ID,
230
+ type: "oauth",
231
+ label: "Google OAuth (Antigravity)",
232
+ form: [
233
+ { key: "projectId", type: "string", title: "Google Cloud project ID (optional)" },
234
+ { key: "manual", type: "boolean", title: "Paste an authorization code or callback URL", default: true },
235
+ ],
236
+ },
237
+ async authorize(answer) {
238
+ const auth = await authorizeAntigravity(typeof answer.projectId === "string" ? answer.projectId : "");
239
+ const state = new URL(auth.url).searchParams.get("state");
240
+ if (!state)
241
+ throw new Error("Antigravity authorization did not provide OAuth state");
242
+ const complete = async (input) => {
243
+ let code = input.trim();
244
+ if (/^https?:\/\//i.test(code)) {
245
+ const callback = new URL(code);
246
+ const redirect = new URL(ANTIGRAVITY_REDIRECT_URI);
247
+ if (callback.origin !== redirect.origin || callback.pathname !== redirect.pathname || callback.searchParams.get("state") !== state) {
248
+ throw new Error("Invalid Antigravity OAuth callback URL or state");
249
+ }
250
+ code = callback.searchParams.get("code") ?? "";
251
+ }
252
+ if (!code)
253
+ throw new Error("Missing Antigravity authorization code");
254
+ const result = await exchangeAntigravity(code, state);
255
+ if (result.type !== "success")
256
+ throw new Error("Antigravity authorization failed; please try signing in again");
257
+ await persistAccountPool([result]);
258
+ invalidateLoader();
259
+ return oauthCredential({ ...result, type: "oauth" }, result.email ? { email: result.email } : undefined);
260
+ };
261
+ if (answer.manual !== false) {
262
+ return { url: auth.url, instructions: "Open this URL, then paste the authorization code or full callback URL.", mode: "code", callback: complete };
263
+ }
264
+ const listener = await startOAuthListener();
265
+ listeners.add(listener);
266
+ const callback = listener.waitForCallback()
267
+ .then((url) => complete(url.toString()))
268
+ .finally(async () => {
269
+ listeners.delete(listener);
270
+ await listener.close();
271
+ });
272
+ // The host consumes this promise after returning the authorization.
273
+ void callback.catch(() => undefined);
274
+ return { url: auth.url, instructions: "Open this URL in your browser to connect Antigravity.", mode: "auto", callback };
275
+ },
276
+ async refresh(credential) {
277
+ try {
278
+ const refreshed = await refreshAccessToken(credential, client, PROVIDER_ID);
279
+ if (!refreshed?.access)
280
+ throw new Error("Antigravity token refresh temporarily unavailable");
281
+ const stored = await loadAccounts();
282
+ const email = stored?.accounts.find((account) => account.refreshToken === parseRefreshParts(credential.refresh).refreshToken)?.email;
283
+ await rememberAuth(refreshed, email);
284
+ return oauthCredential(refreshed, credential.metadata);
285
+ }
286
+ catch (error) {
287
+ if (error instanceof AntigravityTokenRefreshError && error.code === "invalid_grant") {
288
+ const stored = await loadAccounts();
289
+ const account = stored?.accounts.find((item) => item.refreshToken === parseRefreshParts(credential.refresh).refreshToken);
290
+ if (account && stored) {
291
+ account.enabled = false;
292
+ await saveAccounts(stored);
293
+ }
294
+ const connection = await ctx.integration.connection.active(PROVIDER_ID);
295
+ if (connection)
296
+ await ctx.integration.connection.status({ integrationID: PROVIDER_ID, connection, status: { status: "needs_auth", message: "Google revoked this account; sign in again." } });
297
+ invalidateLoader();
298
+ }
299
+ // Core resolves credentials before model construction. Keep that
300
+ // step available so the transport can rotate to another account.
301
+ // Six minutes clears Core's five-minute refresh buffer briefly.
302
+ return { ...credential, access: "", expires: Date.now() + 6 * 60_000 };
303
+ }
304
+ },
305
+ label: (credential) => typeof credential.metadata?.email === "string" ? credential.metadata.email : undefined,
306
+ });
307
+ }));
308
+ registrations.push(await ctx.provider.transform((editor) => {
309
+ // Keep the native Google provider and every unrelated model intact.
310
+ // Only a missing provider (e.g. a minimal host) needs a source template.
311
+ if (!editor.get(PROVIDER_ID)) {
312
+ editor.add({
313
+ info: { ...Provider.Info.empty(Provider.ID.google), name: "Google", package: GOOGLE_PACKAGE },
314
+ models: [],
315
+ });
316
+ }
317
+ if (hasSavedAccounts) {
318
+ editor.update(PROVIDER_ID, (provider) => {
319
+ if (provider.activation === "auto")
320
+ provider.activation = "enabled";
321
+ });
322
+ }
323
+ for (const [id, definition] of Object.entries(OPENCODE_V2_MODEL_DEFINITIONS)) {
324
+ editor.models.update(PROVIDER_ID, id, (model) => {
325
+ Object.assign(model, structuredClone(definition), { package: GOOGLE_PACKAGE });
326
+ model.variants = structuredClone(definition.variants).map((variant) => ({ ...variant, id: Model.VariantID.make(variant.id) }));
327
+ });
328
+ }
329
+ }));
330
+ registrations.push(await ctx.model.transform((editor) => {
331
+ for (const model of editor.list(PROVIDER_ID)) {
332
+ const id = String(model.id);
333
+ if (!ownsModel(id))
334
+ continue;
335
+ editor.update(PROVIDER_ID, id, (target) => {
336
+ // A native provider override can otherwise bypass the SDK hook.
337
+ target.package = GOOGLE_PACKAGE;
338
+ });
339
+ }
340
+ }));
341
+ registrations.push(await ctx.aisdk.hook("sdk", async (event) => {
342
+ if (event.package !== SDK_PACKAGE || !ownsModel(event.model.id))
343
+ return;
344
+ event.sdk = createGoogleGenerativeAI({
345
+ ...event.options,
346
+ fetch: scopedFetch(event.options.fetch, event.model.body),
347
+ // SDK 3 checks for a nonempty key before invoking custom fetch. The
348
+ // interceptor replaces this sentinel with account-specific OAuth.
349
+ apiKey: event.options.apiKey ?? API_KEY_SENTINEL,
350
+ baseURL: event.options.baseURL ?? "https://generativelanguage.googleapis.com/v1beta",
351
+ });
352
+ }, { providerID: PROVIDER_ID }));
353
+ registrations.push(await ctx.tool.transform((editor) => {
354
+ editor.add({
355
+ name: "google_search",
356
+ description: "Search Google for current information and analyze URLs. Include URLs from the question in the urls argument.",
357
+ input: {
358
+ type: "object",
359
+ properties: {
360
+ query: { type: "string", minLength: 1 },
361
+ urls: { type: "array", items: { type: "string" } },
362
+ thinking: { type: "boolean", default: true },
363
+ },
364
+ required: ["query"],
365
+ additionalProperties: false,
366
+ },
367
+ async execute(input, context) {
368
+ const args = input;
369
+ if (!args || typeof args.query !== "string" || !args.query.trim())
370
+ throw new Error("A search query is required");
371
+ let auth = await currentAuth();
372
+ if (!auth)
373
+ return { content: "Connect Google with Antigravity OAuth to use Google Search." };
374
+ if (!auth.access || accessTokenExpired(auth))
375
+ auth = await refreshAccessToken(auth, client, PROVIDER_ID);
376
+ if (!auth?.access)
377
+ throw new Error("Antigravity token refresh failed; please sign in again");
378
+ const project = await ensureProjectContext(auth);
379
+ return { content: await executeSearch(args, auth.access, project.effectiveProjectId, AbortSignal.any([context.signal, lifetime.signal])) };
380
+ },
381
+ });
382
+ }));
383
+ return cleanup;
384
+ }
385
+ catch (error) {
386
+ await cleanup();
387
+ throw error;
388
+ }
389
+ },
390
+ });
391
+ //# sourceMappingURL=v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEnF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC5F,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAsB,MAAM,oBAAoB,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGpF,MAAM,WAAW,GAAG,QAAQ,CAAA;AAC5B,MAAM,SAAS,GAAG,aAAa,CAAA;AAC/B,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU;IAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAA;AAChF,MAAM,cAAc,GAAG,SAAS,WAAW,EAAE,CAAA;AAC7C,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;AAC5C,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAI/D,SAAS,SAAS,CAAC,IAA6B,EAAE,OAAgC;IAChF,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;eACpE,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YACvE,CAAC,CAAC,SAAS,CAAC,QAAmC,EAAE,KAAgC,CAAC;YAClF,CAAC,CAAC,KAAK,CAAA;IACX,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,SAAS,eAAe;IACtB,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC,CAAA;IACD,OAAO;QACL,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE;QACnC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE;QACpC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE;QACzC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE;KAClF,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAsB,EAAE,QAAuC;IACtF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAA;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAmC;IAClE,OAAO,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACnF,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,EAAE,EAAE,2BAA2B;IAC/B,KAAK,CAAC,KAAK,CAAC,GAAG;QACb,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAS,CAAA;QAC/C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAC3D,MAAM;YACN,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS;YACjC,cAAc,EAAE,CAAC;YACjB,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,KAAK,CAAA;gBACpD,wEAAwE;gBACxE,uEAAuE;gBACvE,oEAAoE;gBACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBACxC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;gBACxC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAChD,CAAC;SACF,CAAC,CAAA;QACF,MAAM,aAAa,GAAmB,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAA;QAClC,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAC/G,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;QACtC,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,MAAgC,CAAA;QACpC,IAAI,cAAkC,CAAA;QACtC,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,gBAAoC,CAAA;QACxC,IAAI,OAAsD,CAAA;QAG1D,MAAM,WAAW,GAAG,CAAC,QAAkC,EAAE,EAAE;YACzD,IAAI,gBAAgB,KAAK,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAC5C,gBAAgB,GAAG,QAAQ,EAAE,QAAQ,CAAA;gBACrC,UAAU,IAAI,CAAC,CAAA;gBACf,MAAM,GAAG,SAAS,CAAA;gBAClB,cAAc,GAAG,SAAS,CAAA;YAC5B,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAA;QACD,MAAM,WAAW,GAAG,KAAK,IAAuC,EAAE;YAChE,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YACvE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;gBAClE,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;gBACnC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO;uBACjE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;gBAC/G,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;oBAAE,OAAO,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC/E,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO;oBAAE,OAAO,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC1D,sEAAsE;gBACtE,uEAAuE;gBACvE,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5H,CAAC;YACD,wEAAwE;YACxE,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;YACnC,MAAM,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YACnD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,KAAK,KAAK,IAAI,MAAM,EAAE,YAAY;gBAC/D,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAA;YAChF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE;gBAC7D,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAChB,CAAC,CAAA;QACD,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,EAAE,IAAI,CAAA;QAC3D,MAAM,gBAAgB,GAAG,GAAG,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,cAAc,GAAG,SAAS,CAAA,CAAC,CAAC,CAAA;QAElG,MAAM,YAAY,GAAG,KAAK,EAAE,IAAsB,EAAE,KAAc,EAAE,EAAE;YACpE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7C,MAAM,kBAAkB,CAAC,CAAC;oBACxB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;oBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;oBAChC,KAAK;iBACN,CAAC,CAAC,CAAA;QACL,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,KAAK,IAA2B,EAAE;YAClD,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;YACrE,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAA;YACpC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;YACzF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAA;YACnC,IAAI,MAAM,IAAI,cAAc,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAA;YACxD,IAAI,OAAO,EAAE,CAAC;gBAAC,MAAM,OAAO,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAA;YAAC,CAAC;YAClD,MAAM,kBAAkB,GAAG,UAAU,CAAA;YACrC,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;gBACpB,gEAAgE;gBAChE,iEAAiE;gBACjE,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAA;gBACzB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,CAAA;gBAC1D,IAAI,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;gBACjC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,EAAE,CAAC;oBACxE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;oBACxB,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;gBAC/B,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;oBAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAA;oBACjH,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBACf,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;wBAC1B,MAAM,CAAC,mBAAmB,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;wBAC7D,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;oBAC5B,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAA0B,EAAE,CAC1E,MAAM,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC9C,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;gBAC3F,IAAI,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;gBACrE,IAAI,UAAU,KAAK,kBAAkB;oBAAE,OAAO,SAAS,CAAA;gBACvD,MAAM,GAAG,MAAsB,CAAA;gBAC/B,cAAc,GAAG,QAAQ,CAAA;gBACzB,OAAO,MAAM,CAAA;YACf,CAAC,CAAC,EAAE,CAAA;YACJ,IAAI,MAAgC,CAAA;YACpC,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,OAAO,CAAA;YAAC,CAAC;oBAAS,CAAC;gBAAC,OAAO,GAAG,SAAS,CAAA;YAAC,CAAC;YAC9D,OAAO,MAAM,IAAI,SAAS,EAAE,CAAA;QAC9B,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,CAAC,QAAiB,EAAE,IAAyB,EAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACjG,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;YACrE,MAAM,QAAQ,GAAU,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAA;YAC7F,IAAI,CAAC,MAAM,WAAW,EAAE;gBAAE,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACtD,IAAI,IAAI,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3C,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAA4B,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA;YAC7G,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAA;YACrC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;gBAC7B,QAAQ,CAAC,MAAM;gBACf,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACnF,CAAC,CAAA;YACF,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC9H,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,QAAQ;gBAAE,OAAM;YACpB,QAAQ,GAAG,IAAI,CAAA;YACf,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAA;YACxD,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC5E,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YAC/F,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,CAAA;YAC3B,MAAM,GAAG,SAAS,CAAA;QACpB,CAAC,CAAA;QAED,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC5D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBACnB,aAAa,EAAE,WAAW;oBAC1B,MAAM,EAAE;wBACN,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,4BAA4B;wBACnC,IAAI,EAAE;4BACJ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,oCAAoC,EAAE;4BACjF,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,6CAA6C,EAAE,OAAO,EAAE,IAAI,EAAE;yBACxG;qBACF;oBACD,KAAK,CAAC,SAAS,CAAC,MAAM;wBACpB,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;wBACrG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;wBACzD,IAAI,CAAC,KAAK;4BAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;wBACpF,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;4BACvC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;4BACvB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gCAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;gCAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAA;gCAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;oCACnI,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;gCACpE,CAAC;gCACD,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;4BAChD,CAAC;4BACD,IAAI,CAAC,IAAI;gCAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;4BACpE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;4BACrD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gCAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;4BAC/G,MAAM,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;4BAClC,gBAAgB,EAAE,CAAA;4BAClB,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;wBAC1G,CAAC,CAAA;wBACD,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;4BAC5B,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,wEAAwE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;wBACpJ,CAAC;wBACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAA;wBAC3C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;wBACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,EAAE;6BACxC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;6BACvC,OAAO,CAAC,KAAK,IAAI,EAAE;4BAClB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;4BAC1B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;wBACxB,CAAC,CAAC,CAAA;wBACJ,oEAAoE;wBACpE,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;wBACpC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,uDAAuD,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;oBACzH,CAAC;oBACD,KAAK,CAAC,OAAO,CAAC,UAAU;wBACtB,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;4BAC3E,IAAI,CAAC,SAAS,EAAE,MAAM;gCAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;4BAC5F,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;4BACnC,MAAM,KAAK,GAAG,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,CAAA;4BACpI,MAAM,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;4BACpC,OAAO,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;wBACxD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,KAAK,YAAY,4BAA4B,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gCACpF,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;gCACnC,MAAM,OAAO,GAAG,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;gCACzH,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oCAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;oCAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;gCAAC,CAAC;gCAC9E,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gCACvE,IAAI,UAAU;oCAAE,MAAM,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,6CAA6C,EAAE,EAAE,CAAC,CAAA;gCAC7L,gBAAgB,EAAE,CAAA;4BACpB,CAAC;4BACD,iEAAiE;4BACjE,iEAAiE;4BACjE,gEAAgE;4BAChE,OAAO,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAAA;wBACxE,CAAC;oBACH,CAAC;oBACD,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBAC9G,CAAC,CAAA;YACJ,CAAC,CAAC,CAAC,CAAA;YAEH,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzD,oEAAoE;gBACpE,yEAAyE;gBACzE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC;wBACT,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;wBAC7F,MAAM,EAAE,EAAE;qBACX,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;wBACtC,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM;4BAAE,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAA;oBACrE,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,KAAK,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAAE,CAAC;oBAC7E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;wBAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;wBAC9E,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;oBAChI,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC,CAAA;YAEH,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBAAE,SAAQ;oBAC5B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;wBACxC,gEAAgE;wBAChE,MAAM,CAAC,OAAO,GAAG,cAAc,CAAA;oBACjC,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC,CAAA;YAEH,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC7D,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,OAAM;gBACvE,KAAK,CAAC,GAAG,GAAG,wBAAwB,CAAC;oBACnC,GAAG,KAAK,CAAC,OAAO;oBAChB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBACzD,oEAAoE;oBACpE,kEAAkE;oBAClE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,gBAAgB;oBAChD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,kDAAkD;iBACrF,CAAC,CAAA;YACJ,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAEhC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrD,MAAM,CAAC,GAAG,CAAC;oBACT,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,8GAA8G;oBAC3H,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;4BACvC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;yBAC7C;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;wBACnB,oBAAoB,EAAE,KAAK;qBAC5B;oBACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;wBAC1B,MAAM,IAAI,GAAG,KAAmB,CAAA;wBAChC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;4BAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;wBAChH,IAAI,IAAI,GAAG,MAAM,WAAW,EAAE,CAAA;wBAC9B,IAAI,CAAC,IAAI;4BAAE,OAAO,EAAE,OAAO,EAAE,6DAA6D,EAAE,CAAA;wBAC5F,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC;4BAAE,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;wBACxG,IAAI,CAAC,IAAI,EAAE,MAAM;4BAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;wBAC5F,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAA;wBAChD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;oBAC5I,CAAC;iBACF,CAAC,CAAA;YACJ,CAAC,CAAC,CAAC,CAAA;YACH,OAAO,OAAO,CAAA;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,EAAE,CAAA;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAC,CAAA"}
package/index.js ADDED
@@ -0,0 +1,4 @@
1
+ // OpenCode V2's local-directory loader looks for a root entrypoint. Published
2
+ // packages keep their compiled implementation under dist.
3
+ export { default } from "./dist/index.js"
4
+ export * from "./dist/index.js"
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "opencode-antigravity-auth",
3
- "version": "1.6.5-beta.0",
3
+ "version": "2.0.0",
4
4
  "description": "Google Antigravity IDE OAuth auth plugin for Opencode - access Gemini 3 Pro and Claude 4.6 using Google credentials",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ },
12
+ "./package.json": "./package.json"
13
+ },
7
14
  "type": "module",
8
15
  "license": "MIT",
9
16
  "author": "noefabris",
@@ -29,12 +36,13 @@
29
36
  "node": ">=20.0.0"
30
37
  },
31
38
  "files": [
39
+ "index.js",
32
40
  "dist/",
33
41
  "README.md",
34
42
  "LICENSE"
35
43
  ],
36
44
  "scripts": {
37
- "build": "tsc -p tsconfig.build.json",
45
+ "build": "tsc -p tsconfig.build.json && node script/fix-esm-imports.mjs",
38
46
  "build:schema": "npx tsx script/build-schema.ts",
39
47
  "typecheck": "tsc --noEmit",
40
48
  "test": "vitest run",
@@ -43,10 +51,8 @@
43
51
  "test:coverage": "vitest run --coverage",
44
52
  "prepublishOnly": "npm run build",
45
53
  "test:e2e:models": "npx tsx script/test-models.ts",
46
- "test:e2e:regression": "npx tsx script/test-regression.ts"
47
- },
48
- "peerDependencies": {
49
- "typescript": "^5"
54
+ "test:e2e:regression": "npx tsx script/test-regression.ts",
55
+ "test:e2e:v2": "node script/test-opencode-v2.mjs"
50
56
  },
51
57
  "devDependencies": {
52
58
  "@types/node": "^24.10.1",
@@ -58,6 +64,8 @@
58
64
  "zod-to-json-schema": "^3.25.1"
59
65
  },
60
66
  "dependencies": {
67
+ "@ai-sdk/google": "^3.0.137",
68
+ "@opencode/plugin": "^2.1.2",
61
69
  "@opencode-ai/plugin": "^0.15.30",
62
70
  "@openauthjs/openauth": "^0.4.3",
63
71
  "proper-lockfile": "^4.1.2",