@percygfx/opencode-antigravity-auth 0.0.0-stage → 2.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 +896 -3
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/rpc.d.ts +176 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +91 -0
- package/dist/rpc.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +5 -0
- package/dist/server.js.map +1 -0
- package/dist/src/antigravity/oauth.d.ts +31 -0
- package/dist/src/antigravity/oauth.d.ts.map +1 -0
- package/dist/src/antigravity/oauth.js +171 -0
- package/dist/src/antigravity/oauth.js.map +1 -0
- package/dist/src/constants.d.ts +153 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +238 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/core/gateway.d.ts +43 -0
- package/dist/src/core/gateway.d.ts.map +1 -0
- package/dist/src/core/gateway.js +241 -0
- package/dist/src/core/gateway.js.map +1 -0
- package/dist/src/core/index.d.ts +8 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +8 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/types.d.ts +60 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +5 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/cache.d.ts +3 -0
- package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/cache.js +71 -0
- package/dist/src/hooks/auto-update-checker/cache.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/checker.d.ts +16 -0
- package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/checker.js +234 -0
- package/dist/src/hooks/auto-update-checker/checker.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/constants.d.ts +11 -0
- package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/constants.js +26 -0
- package/dist/src/hooks/auto-update-checker/constants.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/index.d.ts +34 -0
- package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/index.js +122 -0
- package/dist/src/hooks/auto-update-checker/index.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/logging.d.ts +3 -0
- package/dist/src/hooks/auto-update-checker/logging.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/logging.js +9 -0
- package/dist/src/hooks/auto-update-checker/logging.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/types.d.ts +25 -0
- package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/types.js +1 -0
- package/dist/src/hooks/auto-update-checker/types.js.map +1 -0
- package/dist/src/opencode-v2/accounts.d.ts +24 -0
- package/dist/src/opencode-v2/accounts.d.ts.map +1 -0
- package/dist/src/opencode-v2/accounts.js +109 -0
- package/dist/src/opencode-v2/accounts.js.map +1 -0
- package/dist/src/opencode-v2/catalog.d.ts +31 -0
- package/dist/src/opencode-v2/catalog.d.ts.map +1 -0
- package/dist/src/opencode-v2/catalog.js +68 -0
- package/dist/src/opencode-v2/catalog.js.map +1 -0
- package/dist/src/opencode-v2/client-shim.d.ts +9 -0
- package/dist/src/opencode-v2/client-shim.d.ts.map +1 -0
- package/dist/src/opencode-v2/client-shim.js +42 -0
- package/dist/src/opencode-v2/client-shim.js.map +1 -0
- package/dist/src/opencode-v2/clipboard.d.ts +7 -0
- package/dist/src/opencode-v2/clipboard.d.ts.map +1 -0
- package/dist/src/opencode-v2/clipboard.js +54 -0
- package/dist/src/opencode-v2/clipboard.js.map +1 -0
- package/dist/src/opencode-v2/index.d.ts +5 -0
- package/dist/src/opencode-v2/index.d.ts.map +1 -0
- package/dist/src/opencode-v2/index.js +4 -0
- package/dist/src/opencode-v2/index.js.map +1 -0
- package/dist/src/opencode-v2/plugin.d.ts +23 -0
- package/dist/src/opencode-v2/plugin.d.ts.map +1 -0
- package/dist/src/opencode-v2/plugin.js +466 -0
- package/dist/src/opencode-v2/plugin.js.map +1 -0
- package/dist/src/opencode-v2/proxy.d.ts +23 -0
- package/dist/src/opencode-v2/proxy.d.ts.map +1 -0
- package/dist/src/opencode-v2/proxy.js +148 -0
- package/dist/src/opencode-v2/proxy.js.map +1 -0
- package/dist/src/opencode-v2/quota-format.d.ts +19 -0
- package/dist/src/opencode-v2/quota-format.d.ts.map +1 -0
- package/dist/src/opencode-v2/quota-format.js +71 -0
- package/dist/src/opencode-v2/quota-format.js.map +1 -0
- package/dist/src/opencode-v2/quota.d.ts +18 -0
- package/dist/src/opencode-v2/quota.d.ts.map +1 -0
- package/dist/src/opencode-v2/quota.js +118 -0
- package/dist/src/opencode-v2/quota.js.map +1 -0
- package/dist/src/opencode-v2/sign-in-attempts.d.ts +52 -0
- package/dist/src/opencode-v2/sign-in-attempts.d.ts.map +1 -0
- package/dist/src/opencode-v2/sign-in-attempts.js +81 -0
- package/dist/src/opencode-v2/sign-in-attempts.js.map +1 -0
- package/dist/src/plugin/account-models.d.ts +38 -0
- package/dist/src/plugin/account-models.d.ts.map +1 -0
- package/dist/src/plugin/account-models.js +78 -0
- package/dist/src/plugin/account-models.js.map +1 -0
- package/dist/src/plugin/accounts.d.ts +186 -0
- package/dist/src/plugin/accounts.d.ts.map +1 -0
- package/dist/src/plugin/accounts.js +1045 -0
- package/dist/src/plugin/accounts.js.map +1 -0
- package/dist/src/plugin/auth.d.ts +21 -0
- package/dist/src/plugin/auth.d.ts.map +1 -0
- package/dist/src/plugin/auth.js +46 -0
- package/dist/src/plugin/auth.js.map +1 -0
- package/dist/src/plugin/cache/index.d.ts +5 -0
- package/dist/src/plugin/cache/index.d.ts.map +1 -0
- package/dist/src/plugin/cache/index.js +5 -0
- package/dist/src/plugin/cache/index.js.map +1 -0
- package/dist/src/plugin/cache/signature-cache.d.ts +111 -0
- package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -0
- package/dist/src/plugin/cache/signature-cache.js +375 -0
- package/dist/src/plugin/cache/signature-cache.js.map +1 -0
- package/dist/src/plugin/cache.d.ts +44 -0
- package/dist/src/plugin/cache.d.ts.map +1 -0
- package/dist/src/plugin/cache.js +200 -0
- package/dist/src/plugin/cache.js.map +1 -0
- package/dist/src/plugin/cli.d.ts +26 -0
- package/dist/src/plugin/cli.d.ts.map +1 -0
- package/dist/src/plugin/cli.js +119 -0
- package/dist/src/plugin/cli.js.map +1 -0
- package/dist/src/plugin/config/index.d.ts +16 -0
- package/dist/src/plugin/config/index.d.ts.map +1 -0
- package/dist/src/plugin/config/index.js +16 -0
- package/dist/src/plugin/config/index.js.map +1 -0
- package/dist/src/plugin/config/loader.d.ts +36 -0
- package/dist/src/plugin/config/loader.d.ts.map +1 -0
- package/dist/src/plugin/config/loader.js +140 -0
- package/dist/src/plugin/config/loader.js.map +1 -0
- package/dist/src/plugin/config/models.d.ts +41 -0
- package/dist/src/plugin/config/models.d.ts.map +1 -0
- package/dist/src/plugin/config/models.js +46 -0
- package/dist/src/plugin/config/models.js.map +1 -0
- package/dist/src/plugin/config/schema.d.ts +135 -0
- package/dist/src/plugin/config/schema.d.ts.map +1 -0
- package/dist/src/plugin/config/schema.js +438 -0
- package/dist/src/plugin/config/schema.js.map +1 -0
- package/dist/src/plugin/config/updater.d.ts +55 -0
- package/dist/src/plugin/config/updater.d.ts.map +1 -0
- package/dist/src/plugin/config/updater.js +125 -0
- package/dist/src/plugin/config/updater.js.map +1 -0
- package/dist/src/plugin/core/streaming/index.d.ts +3 -0
- package/dist/src/plugin/core/streaming/index.d.ts.map +1 -0
- package/dist/src/plugin/core/streaming/index.js +3 -0
- package/dist/src/plugin/core/streaming/index.js.map +1 -0
- package/dist/src/plugin/core/streaming/transformer.d.ts +10 -0
- package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -0
- package/dist/src/plugin/core/streaming/transformer.js +271 -0
- package/dist/src/plugin/core/streaming/transformer.js.map +1 -0
- package/dist/src/plugin/core/streaming/types.d.ts +27 -0
- package/dist/src/plugin/core/streaming/types.d.ts.map +1 -0
- package/dist/src/plugin/core/streaming/types.js +1 -0
- package/dist/src/plugin/core/streaming/types.js.map +1 -0
- package/dist/src/plugin/debug.d.ts +94 -0
- package/dist/src/plugin/debug.d.ts.map +1 -0
- package/dist/src/plugin/debug.js +382 -0
- package/dist/src/plugin/debug.js.map +1 -0
- package/dist/src/plugin/errors.d.ts +28 -0
- package/dist/src/plugin/errors.d.ts.map +1 -0
- package/dist/src/plugin/errors.js +42 -0
- package/dist/src/plugin/errors.js.map +1 -0
- package/dist/src/plugin/fingerprint.d.ts +70 -0
- package/dist/src/plugin/fingerprint.d.ts.map +1 -0
- package/dist/src/plugin/fingerprint.js +138 -0
- package/dist/src/plugin/fingerprint.js.map +1 -0
- package/dist/src/plugin/image-saver.d.ts +25 -0
- package/dist/src/plugin/image-saver.d.ts.map +1 -0
- package/dist/src/plugin/image-saver.js +86 -0
- package/dist/src/plugin/image-saver.js.map +1 -0
- package/dist/src/plugin/logger.d.ts +36 -0
- package/dist/src/plugin/logger.d.ts.map +1 -0
- package/dist/src/plugin/logger.js +71 -0
- package/dist/src/plugin/logger.js.map +1 -0
- package/dist/src/plugin/logging-utils.d.ts +23 -0
- package/dist/src/plugin/logging-utils.d.ts.map +1 -0
- package/dist/src/plugin/logging-utils.js +92 -0
- package/dist/src/plugin/logging-utils.js.map +1 -0
- package/dist/src/plugin/model-discovery.d.ts +28 -0
- package/dist/src/plugin/model-discovery.d.ts.map +1 -0
- package/dist/src/plugin/model-discovery.js +59 -0
- package/dist/src/plugin/model-discovery.js.map +1 -0
- package/dist/src/plugin/model-registry.d.ts +108 -0
- package/dist/src/plugin/model-registry.d.ts.map +1 -0
- package/dist/src/plugin/model-registry.js +304 -0
- package/dist/src/plugin/model-registry.js.map +1 -0
- package/dist/src/plugin/project.d.ts +33 -0
- package/dist/src/plugin/project.d.ts.map +1 -0
- package/dist/src/plugin/project.js +235 -0
- package/dist/src/plugin/project.js.map +1 -0
- package/dist/src/plugin/quota.d.ts +58 -0
- package/dist/src/plugin/quota.d.ts.map +1 -0
- package/dist/src/plugin/quota.js +296 -0
- package/dist/src/plugin/quota.js.map +1 -0
- package/dist/src/plugin/recovery/constants.d.ts +22 -0
- package/dist/src/plugin/recovery/constants.d.ts.map +1 -0
- package/dist/src/plugin/recovery/constants.js +43 -0
- package/dist/src/plugin/recovery/constants.js.map +1 -0
- package/dist/src/plugin/recovery/index.d.ts +12 -0
- package/dist/src/plugin/recovery/index.d.ts.map +1 -0
- package/dist/src/plugin/recovery/index.js +12 -0
- package/dist/src/plugin/recovery/index.js.map +1 -0
- package/dist/src/plugin/recovery/storage.d.ts +24 -0
- package/dist/src/plugin/recovery/storage.d.ts.map +1 -0
- package/dist/src/plugin/recovery/storage.js +354 -0
- package/dist/src/plugin/recovery/storage.js.map +1 -0
- package/dist/src/plugin/recovery/types.d.ts +116 -0
- package/dist/src/plugin/recovery/types.d.ts.map +1 -0
- package/dist/src/plugin/recovery/types.js +6 -0
- package/dist/src/plugin/recovery/types.js.map +1 -0
- package/dist/src/plugin/recovery.d.ts +61 -0
- package/dist/src/plugin/recovery.d.ts.map +1 -0
- package/dist/src/plugin/recovery.js +381 -0
- package/dist/src/plugin/recovery.js.map +1 -0
- package/dist/src/plugin/refresh-queue.d.ts +100 -0
- package/dist/src/plugin/refresh-queue.d.ts.map +1 -0
- package/dist/src/plugin/refresh-queue.js +247 -0
- package/dist/src/plugin/refresh-queue.js.map +1 -0
- package/dist/src/plugin/request-helpers.d.ts +282 -0
- package/dist/src/plugin/request-helpers.d.ts.map +1 -0
- package/dist/src/plugin/request-helpers.js +2343 -0
- package/dist/src/plugin/request-helpers.js.map +1 -0
- package/dist/src/plugin/request.d.ts +95 -0
- package/dist/src/plugin/request.d.ts.map +1 -0
- package/dist/src/plugin/request.js +1491 -0
- package/dist/src/plugin/request.js.map +1 -0
- package/dist/src/plugin/rotation.d.ts +169 -0
- package/dist/src/plugin/rotation.d.ts.map +1 -0
- package/dist/src/plugin/rotation.js +328 -0
- package/dist/src/plugin/rotation.js.map +1 -0
- package/dist/src/plugin/search.d.ts +32 -0
- package/dist/src/plugin/search.d.ts.map +1 -0
- package/dist/src/plugin/search.js +195 -0
- package/dist/src/plugin/search.js.map +1 -0
- package/dist/src/plugin/server.d.ts +23 -0
- package/dist/src/plugin/server.d.ts.map +1 -0
- package/dist/src/plugin/server.js +324 -0
- package/dist/src/plugin/server.js.map +1 -0
- package/dist/src/plugin/storage.d.ts +173 -0
- package/dist/src/plugin/storage.d.ts.map +1 -0
- package/dist/src/plugin/storage.js +674 -0
- package/dist/src/plugin/storage.js.map +1 -0
- package/dist/src/plugin/stores/signature-store.d.ts +5 -0
- package/dist/src/plugin/stores/signature-store.d.ts.map +1 -0
- package/dist/src/plugin/stores/signature-store.js +25 -0
- package/dist/src/plugin/stores/signature-store.js.map +1 -0
- package/dist/src/plugin/thinking-recovery.d.ts +90 -0
- package/dist/src/plugin/thinking-recovery.d.ts.map +1 -0
- package/dist/src/plugin/thinking-recovery.js +316 -0
- package/dist/src/plugin/thinking-recovery.js.map +1 -0
- package/dist/src/plugin/token.d.ts +19 -0
- package/dist/src/plugin/token.d.ts.map +1 -0
- package/dist/src/plugin/token.js +128 -0
- package/dist/src/plugin/token.js.map +1 -0
- package/dist/src/plugin/transform/claude.d.ts +80 -0
- package/dist/src/plugin/transform/claude.d.ts.map +1 -0
- package/dist/src/plugin/transform/claude.js +265 -0
- package/dist/src/plugin/transform/claude.js.map +1 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +35 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.d.ts.map +1 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.js +225 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.js.map +1 -0
- package/dist/src/plugin/transform/gemini.d.ts +100 -0
- package/dist/src/plugin/transform/gemini.d.ts.map +1 -0
- package/dist/src/plugin/transform/gemini.js +446 -0
- package/dist/src/plugin/transform/gemini.js.map +1 -0
- package/dist/src/plugin/transform/index.d.ts +15 -0
- package/dist/src/plugin/transform/index.d.ts.map +1 -0
- package/dist/src/plugin/transform/index.js +14 -0
- package/dist/src/plugin/transform/index.js.map +1 -0
- package/dist/src/plugin/transform/model-resolver.d.ts +99 -0
- package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -0
- package/dist/src/plugin/transform/model-resolver.js +340 -0
- package/dist/src/plugin/transform/model-resolver.js.map +1 -0
- package/dist/src/plugin/transform/types.d.ts +111 -0
- package/dist/src/plugin/transform/types.d.ts.map +1 -0
- package/dist/src/plugin/transform/types.js +1 -0
- package/dist/src/plugin/transform/types.js.map +1 -0
- package/dist/src/plugin/types.d.ts +97 -0
- package/dist/src/plugin/types.d.ts.map +1 -0
- package/dist/src/plugin/types.js +1 -0
- package/dist/src/plugin/types.js.map +1 -0
- package/dist/src/plugin/ui/ansi.d.ts +32 -0
- package/dist/src/plugin/ui/ansi.d.ts.map +1 -0
- package/dist/src/plugin/ui/ansi.js +52 -0
- package/dist/src/plugin/ui/ansi.js.map +1 -0
- package/dist/src/plugin/ui/auth-menu.d.ts +33 -0
- package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -0
- package/dist/src/plugin/ui/auth-menu.js +110 -0
- package/dist/src/plugin/ui/auth-menu.js.map +1 -0
- package/dist/src/plugin/ui/confirm.d.ts +2 -0
- package/dist/src/plugin/ui/confirm.d.ts.map +1 -0
- package/dist/src/plugin/ui/confirm.js +15 -0
- package/dist/src/plugin/ui/confirm.js.map +1 -0
- package/dist/src/plugin/ui/select.d.ts +23 -0
- package/dist/src/plugin/ui/select.d.ts.map +1 -0
- package/dist/src/plugin/ui/select.js +254 -0
- package/dist/src/plugin/ui/select.js.map +1 -0
- package/dist/src/plugin/version.d.ts +19 -0
- package/dist/src/plugin/version.d.ts.map +1 -0
- package/dist/src/plugin/version.js +80 -0
- package/dist/src/plugin/version.js.map +1 -0
- package/dist/src/plugin.d.ts +51 -0
- package/dist/src/plugin.d.ts.map +1 -0
- package/dist/src/plugin.js +2852 -0
- package/dist/src/plugin.js.map +1 -0
- package/dist/tui.js +420 -0
- package/package.json +99 -6
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { authorizeAntigravity, exchangeAntigravity } from "../antigravity/oauth";
|
|
2
|
+
import { createAntigravityPlugin, getActiveAccountManager, getStateFromAuthorizationUrl, parseOAuthCallbackInput, persistAccountPool, shouldSkipLocalServer, } from "../plugin";
|
|
3
|
+
import { parseRefreshParts } from "../plugin/auth";
|
|
4
|
+
import { createLogger } from "../plugin/logger";
|
|
5
|
+
import { discoverRegistryModels } from "../plugin/model-discovery";
|
|
6
|
+
import { getRegistryFetchedAt, getRegistryModels, setRegistryModels } from "../plugin/model-registry";
|
|
7
|
+
import { startOAuthListener } from "../plugin/server";
|
|
8
|
+
import { loadAccounts } from "../plugin/storage";
|
|
9
|
+
import { refreshAccessToken } from "../plugin/token";
|
|
10
|
+
import { accountAuth, accountLabel, removeAccount, setAccountEnabled } from "../opencode-v2/accounts";
|
|
11
|
+
import { createV2ClientShim } from "../opencode-v2/client-shim";
|
|
12
|
+
import { createQuotaReporter } from "../opencode-v2/quota";
|
|
13
|
+
const log = createLogger("core");
|
|
14
|
+
/** The host the request pipeline recognises and rewrites to Antigravity. */
|
|
15
|
+
export const GEMINI_API_ORIGIN = "https://generativelanguage.googleapis.com";
|
|
16
|
+
/** Same provider ID as the opencode v2 plugin, so both share log names and quota bookkeeping. */
|
|
17
|
+
const PROVIDER_ID = "google-antigravity";
|
|
18
|
+
/** How long a discovered model list is used before asking Antigravity again. */
|
|
19
|
+
const MODEL_DISCOVERY_INTERVAL_MS = 6 * 60 * 60 * 1000;
|
|
20
|
+
/** How long the browser sign-in waits for Google's redirect. */
|
|
21
|
+
const BROWSER_CALLBACK_TIMEOUT_MS = 9 * 60 * 1000;
|
|
22
|
+
/** No account in the pool (`antigravity-accounts.json`) can be used: sign in first. */
|
|
23
|
+
export class NotSignedInError extends Error {
|
|
24
|
+
constructor(message = "Not signed in to Google Antigravity.") {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = "NotSignedInError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function hasFetch(result) {
|
|
30
|
+
return typeof result.fetch === "function";
|
|
31
|
+
}
|
|
32
|
+
function withLoginHint(url, loginHint) {
|
|
33
|
+
if (!loginHint)
|
|
34
|
+
return url;
|
|
35
|
+
const parsed = new URL(url);
|
|
36
|
+
parsed.searchParams.set("login_hint", loginHint);
|
|
37
|
+
return parsed.toString();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The plugin's request pipeline, sign-in and account pool without opencode: for other hosts
|
|
41
|
+
* (the Claude Code proxy). Accounts live in the same `antigravity-accounts.json` as the opencode
|
|
42
|
+
* plugin, so an account signed in from either one serves both.
|
|
43
|
+
*/
|
|
44
|
+
export async function createAntigravityGateway(options = {}) {
|
|
45
|
+
const client = createV2ClientShim();
|
|
46
|
+
const v1 = await createAntigravityPlugin(PROVIDER_ID)({
|
|
47
|
+
client,
|
|
48
|
+
directory: options.directory ?? process.cwd(),
|
|
49
|
+
});
|
|
50
|
+
/** The first enabled pool account: the pipeline loads the whole pool, this only seeds it. */
|
|
51
|
+
const poolAuth = async () => {
|
|
52
|
+
const storage = await loadAccounts().catch(() => null);
|
|
53
|
+
const accounts = storage?.accounts ?? [];
|
|
54
|
+
const account = accounts.find((entry) => entry.enabled !== false) ?? accounts[0];
|
|
55
|
+
return account ? accountAuth(account) : undefined;
|
|
56
|
+
};
|
|
57
|
+
let pipeline;
|
|
58
|
+
const getPipeline = () => {
|
|
59
|
+
if (!pipeline) {
|
|
60
|
+
const current = (async () => {
|
|
61
|
+
const auth = await poolAuth();
|
|
62
|
+
if (!auth)
|
|
63
|
+
throw new NotSignedInError();
|
|
64
|
+
// Never hand the loader a non-OAuth credential: it wipes the stored pool when it sees none.
|
|
65
|
+
const result = await v1.auth.loader(async () => (await poolAuth()) ?? auth, { models: {} });
|
|
66
|
+
if (!hasFetch(result))
|
|
67
|
+
throw new NotSignedInError("Google Antigravity is not ready.");
|
|
68
|
+
return result.fetch;
|
|
69
|
+
})();
|
|
70
|
+
pipeline = current;
|
|
71
|
+
current.catch(() => {
|
|
72
|
+
if (pipeline === current)
|
|
73
|
+
pipeline = undefined;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return pipeline;
|
|
77
|
+
};
|
|
78
|
+
/** The pool changed (sign-in, removal): the next request builds a fresh pipeline. */
|
|
79
|
+
const resetPipeline = () => {
|
|
80
|
+
pipeline = undefined;
|
|
81
|
+
};
|
|
82
|
+
let discovering;
|
|
83
|
+
const discoverModels = (accessToken, projectId) => {
|
|
84
|
+
discovering ??= (async () => {
|
|
85
|
+
try {
|
|
86
|
+
setRegistryModels(await discoverRegistryModels(accessToken, projectId));
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
log.warn("model discovery failed; keeping the current model list", { error: String(error) });
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
discovering = undefined;
|
|
93
|
+
}
|
|
94
|
+
})();
|
|
95
|
+
return discovering;
|
|
96
|
+
};
|
|
97
|
+
const refreshModelsIfStale = async () => {
|
|
98
|
+
const fetchedAt = getRegistryFetchedAt();
|
|
99
|
+
if (fetchedAt !== undefined && Date.now() - fetchedAt < MODEL_DISCOVERY_INTERVAL_MS)
|
|
100
|
+
return;
|
|
101
|
+
if (discovering)
|
|
102
|
+
return discovering;
|
|
103
|
+
const auth = await poolAuth();
|
|
104
|
+
if (!auth)
|
|
105
|
+
return;
|
|
106
|
+
const refreshed = await refreshAccessToken(auth, client, PROVIDER_ID).catch(() => undefined);
|
|
107
|
+
if (!refreshed?.access)
|
|
108
|
+
return;
|
|
109
|
+
const parts = parseRefreshParts(refreshed.refresh);
|
|
110
|
+
await discoverModels(refreshed.access, parts.managedProjectId || parts.projectId || "");
|
|
111
|
+
};
|
|
112
|
+
const quota = createQuotaReporter(client, PROVIDER_ID);
|
|
113
|
+
const finishSignIn = async (code, state) => {
|
|
114
|
+
const result = await exchangeAntigravity(code, state);
|
|
115
|
+
if (result.type === "failed")
|
|
116
|
+
throw new Error(`Google sign-in failed: ${result.error}`);
|
|
117
|
+
await persistAccountPool([result], false);
|
|
118
|
+
resetPipeline();
|
|
119
|
+
quota.invalidate();
|
|
120
|
+
log.info("account added", { email: result.email });
|
|
121
|
+
void discoverModels(result.access, result.projectId);
|
|
122
|
+
return result.email ? { email: result.email } : {};
|
|
123
|
+
};
|
|
124
|
+
// Port 51121 is fixed by the OAuth client's redirect URI: one browser sign-in at a time.
|
|
125
|
+
let listener;
|
|
126
|
+
const closeListener = async () => {
|
|
127
|
+
const current = listener;
|
|
128
|
+
listener = undefined;
|
|
129
|
+
await current?.close().catch(() => { });
|
|
130
|
+
};
|
|
131
|
+
const pasteFlow = async (reason, loginHint) => {
|
|
132
|
+
const authorization = await authorizeAntigravity("");
|
|
133
|
+
const fallbackState = getStateFromAuthorizationUrl(authorization.url);
|
|
134
|
+
return {
|
|
135
|
+
mode: "code",
|
|
136
|
+
url: withLoginHint(authorization.url, loginHint),
|
|
137
|
+
reason,
|
|
138
|
+
complete: async (input) => {
|
|
139
|
+
const params = parseOAuthCallbackInput(input, fallbackState);
|
|
140
|
+
if ("error" in params)
|
|
141
|
+
throw new Error(params.error);
|
|
142
|
+
return finishSignIn(params.code, params.state);
|
|
143
|
+
},
|
|
144
|
+
cancel: async () => { },
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
const signIn = async ({ loginHint, paste } = {}) => {
|
|
148
|
+
if (paste)
|
|
149
|
+
return pasteFlow("Paste sign-in was requested.", loginHint);
|
|
150
|
+
if (shouldSkipLocalServer()) {
|
|
151
|
+
return pasteFlow("This looks like a remote or WSL session, so the redirect cannot reach a local page.", loginHint);
|
|
152
|
+
}
|
|
153
|
+
await closeListener();
|
|
154
|
+
let current;
|
|
155
|
+
try {
|
|
156
|
+
current = await startOAuthListener({ timeoutMs: BROWSER_CALLBACK_TIMEOUT_MS });
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
log.warn("could not start the OAuth callback listener", { error: String(error) });
|
|
160
|
+
return pasteFlow("Port 51121 is busy, so the browser cannot report back on its own.", loginHint);
|
|
161
|
+
}
|
|
162
|
+
listener = current;
|
|
163
|
+
let authorization;
|
|
164
|
+
try {
|
|
165
|
+
authorization = await authorizeAntigravity("");
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
await closeListener();
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
const fallbackState = getStateFromAuthorizationUrl(authorization.url);
|
|
172
|
+
const result = (async () => {
|
|
173
|
+
try {
|
|
174
|
+
const url = await current.waitForCallback();
|
|
175
|
+
const code = url.searchParams.get("code");
|
|
176
|
+
const state = url.searchParams.get("state");
|
|
177
|
+
if (!code || !state) {
|
|
178
|
+
throw new Error(url.searchParams.get("error") ?? "Missing code or state in the Google redirect");
|
|
179
|
+
}
|
|
180
|
+
return await finishSignIn(code, state);
|
|
181
|
+
}
|
|
182
|
+
finally {
|
|
183
|
+
if (listener === current)
|
|
184
|
+
listener = undefined;
|
|
185
|
+
await current.close().catch(() => { });
|
|
186
|
+
}
|
|
187
|
+
})();
|
|
188
|
+
// A pasted URL or a cancel may finish the attempt first; keep the listener's rejection quiet.
|
|
189
|
+
result.catch(() => { });
|
|
190
|
+
return {
|
|
191
|
+
mode: "auto",
|
|
192
|
+
url: withLoginHint(authorization.url, loginHint),
|
|
193
|
+
result,
|
|
194
|
+
paste: async (input) => {
|
|
195
|
+
const params = parseOAuthCallbackInput(input, fallbackState);
|
|
196
|
+
if ("error" in params)
|
|
197
|
+
throw new Error(params.error);
|
|
198
|
+
if (listener === current)
|
|
199
|
+
await closeListener();
|
|
200
|
+
return finishSignIn(params.code, params.state);
|
|
201
|
+
},
|
|
202
|
+
cancel: async () => {
|
|
203
|
+
if (listener === current)
|
|
204
|
+
await closeListener();
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
return {
|
|
209
|
+
async fetch(url, init) {
|
|
210
|
+
void refreshModelsIfStale().catch(() => { });
|
|
211
|
+
const fetchThroughPipeline = await getPipeline();
|
|
212
|
+
return fetchThroughPipeline(url, init);
|
|
213
|
+
},
|
|
214
|
+
models: () => getRegistryModels(),
|
|
215
|
+
refreshModelsIfStale,
|
|
216
|
+
quota: async (refresh = false) => (await quota.snapshot(refresh)),
|
|
217
|
+
async accounts() {
|
|
218
|
+
const storage = await loadAccounts();
|
|
219
|
+
return (storage?.accounts ?? []).map((account, index) => ({
|
|
220
|
+
index,
|
|
221
|
+
email: accountLabel(account, index),
|
|
222
|
+
enabled: account.enabled !== false,
|
|
223
|
+
}));
|
|
224
|
+
},
|
|
225
|
+
async setAccountEnabled(index, email, enabled) {
|
|
226
|
+
await setAccountEnabled(getActiveAccountManager(), index, email, enabled);
|
|
227
|
+
quota.invalidate();
|
|
228
|
+
},
|
|
229
|
+
async removeAccount(index, email) {
|
|
230
|
+
const remaining = await removeAccount(getActiveAccountManager(), index, email);
|
|
231
|
+
resetPipeline();
|
|
232
|
+
quota.invalidate();
|
|
233
|
+
return remaining;
|
|
234
|
+
},
|
|
235
|
+
signIn,
|
|
236
|
+
async close() {
|
|
237
|
+
await closeListener();
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/core/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { createAntigravityGateway, GEMINI_API_ORIGIN, NotSignedInError, type AntigravityGateway, type GatewayOptions, } from "./gateway";
|
|
2
|
+
export type { ModelTier, ModelVendor, RegistryModel, RegistryVariant } from "../plugin/model-registry";
|
|
3
|
+
/** The current model list without starting a gateway: last discovery, disk cache, or built-in. */
|
|
4
|
+
export { getRegistryModels } from "../plugin/model-registry";
|
|
5
|
+
/** Rewrites a tool's JSON Schema into what Antigravity accepts (no $schema, $ref, const, ...). */
|
|
6
|
+
export { cleanJSONSchemaForAntigravity as cleanToolSchema } from "../plugin/request-helpers";
|
|
7
|
+
export type { PoolAccount, QuotaAccount, QuotaLimit, QuotaSnapshot, QuotaWindow, SignInFlow, SignInResult } from "./types";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvG,kGAAkG;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,kGAAkG;AAClG,OAAO,EAAE,6BAA6B,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7F,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Host-agnostic core: the request pipeline, sign-in and account pool without opencode.
|
|
2
|
+
// Published as `@percygfx/opencode-antigravity-auth/core` for the Claude Code proxy.
|
|
3
|
+
export { createAntigravityGateway, GEMINI_API_ORIGIN, NotSignedInError, } from "./gateway";
|
|
4
|
+
/** The current model list without starting a gateway: last discovery, disk cache, or built-in. */
|
|
5
|
+
export { getRegistryModels } from "../plugin/model-registry";
|
|
6
|
+
/** Rewrites a tool's JSON Schema into what Antigravity accepts (no $schema, $ref, const, ...). */
|
|
7
|
+
export { cleanJSONSchemaForAntigravity as cleanToolSchema } from "../plugin/request-helpers";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,qFAAqF;AACrF,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,WAAW,CAAC;AAEnB,kGAAkG;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,kGAAkG;AAClG,OAAO,EAAE,6BAA6B,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types of the host-agnostic core (`@percygfx/opencode-antigravity-auth/core`). They mirror the
|
|
3
|
+
* opencode RPC schemas in rpc.ts without depending on opencode, so other hosts can import them.
|
|
4
|
+
*/
|
|
5
|
+
export interface QuotaWindow {
|
|
6
|
+
/** Remaining share of the window, 0–100, or null when Antigravity did not say. */
|
|
7
|
+
remainingPercent: number | null;
|
|
8
|
+
/** When the window resets (epoch ms), or null. */
|
|
9
|
+
resetAt: number | null;
|
|
10
|
+
}
|
|
11
|
+
export interface QuotaLimit {
|
|
12
|
+
/** Model group, e.g. "Gemini" or "Claude & GPT". */
|
|
13
|
+
name: string;
|
|
14
|
+
fiveHour: QuotaWindow | null;
|
|
15
|
+
weekly: QuotaWindow | null;
|
|
16
|
+
}
|
|
17
|
+
export interface QuotaAccount {
|
|
18
|
+
index: number;
|
|
19
|
+
email: string;
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
/** Model families this account currently serves ("Gemini", "Claude"). */
|
|
22
|
+
inUse: string[];
|
|
23
|
+
limits: QuotaLimit[];
|
|
24
|
+
error?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface QuotaSnapshot {
|
|
27
|
+
fetchedAt: number;
|
|
28
|
+
accounts: QuotaAccount[];
|
|
29
|
+
}
|
|
30
|
+
export interface PoolAccount {
|
|
31
|
+
index: number;
|
|
32
|
+
/** Google email, or "Account N" when unknown. */
|
|
33
|
+
email: string;
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface SignInResult {
|
|
37
|
+
email?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A running Google sign-in.
|
|
41
|
+
*
|
|
42
|
+
* - `auto`: a listener on localhost:51121 catches the browser redirect and `result` settles on
|
|
43
|
+
* its own; `paste` finishes it with the redirect URL instead (browser on another machine).
|
|
44
|
+
* - `code`: no listener (remote/WSL session or port busy); finish with `complete(redirectUrl)`.
|
|
45
|
+
*/
|
|
46
|
+
export type SignInFlow = {
|
|
47
|
+
mode: "auto";
|
|
48
|
+
url: string;
|
|
49
|
+
result: Promise<SignInResult>;
|
|
50
|
+
paste(input: string): Promise<SignInResult>;
|
|
51
|
+
cancel(): Promise<void>;
|
|
52
|
+
} | {
|
|
53
|
+
mode: "code";
|
|
54
|
+
url: string;
|
|
55
|
+
/** Why the browser cannot report back on its own. */
|
|
56
|
+
reason: string;
|
|
57
|
+
complete(input: string): Promise<SignInResult>;
|
|
58
|
+
cancel(): Promise<void>;
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kDAAkD;IAClD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/hooks/auto-update-checker/cache.ts"],"names":[],"mappings":"AA+CA,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,MAAqB,GAAG,OAAO,CAsC7E;AAED,wBAAgB,eAAe,IAAI,OAAO,CAGzC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { CACHE_DIR, PACKAGE_NAME } from "./constants";
|
|
4
|
+
function stripTrailingCommas(json) {
|
|
5
|
+
return json.replace(/,(\s*[}\]])/g, "$1");
|
|
6
|
+
}
|
|
7
|
+
function removeFromBunLock(packageName) {
|
|
8
|
+
const lockPath = path.join(CACHE_DIR, "bun.lock");
|
|
9
|
+
if (!fs.existsSync(lockPath))
|
|
10
|
+
return false;
|
|
11
|
+
try {
|
|
12
|
+
const content = fs.readFileSync(lockPath, "utf-8");
|
|
13
|
+
const lock = JSON.parse(stripTrailingCommas(content));
|
|
14
|
+
let modified = false;
|
|
15
|
+
if (lock.workspaces?.[""]?.dependencies?.[packageName]) {
|
|
16
|
+
delete lock.workspaces[""].dependencies[packageName];
|
|
17
|
+
modified = true;
|
|
18
|
+
}
|
|
19
|
+
if (lock.packages?.[packageName]) {
|
|
20
|
+
delete lock.packages[packageName];
|
|
21
|
+
modified = true;
|
|
22
|
+
}
|
|
23
|
+
if (modified) {
|
|
24
|
+
fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2));
|
|
25
|
+
console.log(`[auto-update-checker] Removed from bun.lock: ${packageName}`);
|
|
26
|
+
}
|
|
27
|
+
return modified;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function invalidatePackage(packageName = PACKAGE_NAME) {
|
|
34
|
+
try {
|
|
35
|
+
const pkgDir = path.join(CACHE_DIR, "node_modules", packageName);
|
|
36
|
+
const pkgJsonPath = path.join(CACHE_DIR, "package.json");
|
|
37
|
+
let packageRemoved = false;
|
|
38
|
+
let dependencyRemoved = false;
|
|
39
|
+
let lockRemoved = false;
|
|
40
|
+
if (fs.existsSync(pkgDir)) {
|
|
41
|
+
fs.rmSync(pkgDir, { recursive: true, force: true });
|
|
42
|
+
console.log(`[auto-update-checker] Package removed: ${pkgDir}`);
|
|
43
|
+
packageRemoved = true;
|
|
44
|
+
}
|
|
45
|
+
if (fs.existsSync(pkgJsonPath)) {
|
|
46
|
+
const content = fs.readFileSync(pkgJsonPath, "utf-8");
|
|
47
|
+
const pkgJson = JSON.parse(content);
|
|
48
|
+
if (pkgJson.dependencies?.[packageName]) {
|
|
49
|
+
delete pkgJson.dependencies[packageName];
|
|
50
|
+
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
|
|
51
|
+
console.log(`[auto-update-checker] Dependency removed from package.json: ${packageName}`);
|
|
52
|
+
dependencyRemoved = true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
lockRemoved = removeFromBunLock(packageName);
|
|
56
|
+
if (!packageRemoved && !dependencyRemoved && !lockRemoved) {
|
|
57
|
+
console.log(`[auto-update-checker] Package not found, nothing to invalidate: ${packageName}`);
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
console.error("[auto-update-checker] Failed to invalidate package:", err);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function invalidateCache() {
|
|
68
|
+
console.warn("[auto-update-checker] WARNING: invalidateCache is deprecated, use invalidatePackage");
|
|
69
|
+
return invalidatePackage();
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/hooks/auto-update-checker/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { UpdateCheckResult } from "./types";
|
|
2
|
+
export declare function isLocalDevMode(directory: string): boolean;
|
|
3
|
+
export declare function getLocalDevPath(directory: string): string | null;
|
|
4
|
+
export declare function getLocalDevVersion(directory: string): string | null;
|
|
5
|
+
export interface PluginEntryInfo {
|
|
6
|
+
entry: string;
|
|
7
|
+
isPinned: boolean;
|
|
8
|
+
pinnedVersion: string | null;
|
|
9
|
+
configPath: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function findPluginEntry(directory: string): PluginEntryInfo | null;
|
|
12
|
+
export declare function getCachedVersion(): string | null;
|
|
13
|
+
export declare function updatePinnedVersion(configPath: string, oldEntry: string, newVersion: string): boolean;
|
|
14
|
+
export declare function getLatestVersion(): Promise<string | null>;
|
|
15
|
+
export declare function checkForUpdate(directory: string): Promise<UpdateCheckResult>;
|
|
16
|
+
//# sourceMappingURL=checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../../src/hooks/auto-update-checker/checker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA4C,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAY3F,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAkBD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuBhE;AA4BD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAanE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA2BzE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAwBhD;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAgDrG;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmB/D;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2BlF"}
|