opencode-antigravity-auth 1.6.5-beta.0 → 2.1.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 (143) hide show
  1. package/README.md +34 -694
  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/account-management.d.ts +67 -0
  21. package/dist/src/plugin/account-management.d.ts.map +1 -0
  22. package/dist/src/plugin/account-management.js +174 -0
  23. package/dist/src/plugin/account-management.js.map +1 -0
  24. package/dist/src/plugin/account-rpc.d.ts +70 -0
  25. package/dist/src/plugin/account-rpc.d.ts.map +1 -0
  26. package/dist/src/plugin/account-rpc.js +28 -0
  27. package/dist/src/plugin/account-rpc.js.map +1 -0
  28. package/dist/src/plugin/accounts.d.ts +32 -19
  29. package/dist/src/plugin/accounts.d.ts.map +1 -1
  30. package/dist/src/plugin/accounts.js +203 -34
  31. package/dist/src/plugin/accounts.js.map +1 -1
  32. package/dist/src/plugin/auth.d.ts +1 -1
  33. package/dist/src/plugin/cache/index.d.ts +1 -1
  34. package/dist/src/plugin/cache/index.js +1 -1
  35. package/dist/src/plugin/cache/signature-cache.d.ts +1 -1
  36. package/dist/src/plugin/cache/signature-cache.js +1 -1
  37. package/dist/src/plugin/cache.d.ts +7 -5
  38. package/dist/src/plugin/cache.d.ts.map +1 -1
  39. package/dist/src/plugin/cache.js +20 -3
  40. package/dist/src/plugin/cache.js.map +1 -1
  41. package/dist/src/plugin/cli.d.ts +4 -6
  42. package/dist/src/plugin/cli.d.ts.map +1 -1
  43. package/dist/src/plugin/cli.js +5 -11
  44. package/dist/src/plugin/cli.js.map +1 -1
  45. package/dist/src/plugin/config/index.d.ts +2 -2
  46. package/dist/src/plugin/config/index.js +2 -2
  47. package/dist/src/plugin/config/loader.d.ts +1 -1
  48. package/dist/src/plugin/config/loader.js +2 -2
  49. package/dist/src/plugin/config/models-v2.d.ts +54 -0
  50. package/dist/src/plugin/config/models-v2.d.ts.map +1 -0
  51. package/dist/src/plugin/config/models-v2.js +62 -0
  52. package/dist/src/plugin/config/models-v2.js.map +1 -0
  53. package/dist/src/plugin/config/models.d.ts +1 -1
  54. package/dist/src/plugin/config/updater.d.ts +16 -3
  55. package/dist/src/plugin/config/updater.d.ts.map +1 -1
  56. package/dist/src/plugin/config/updater.js +53 -10
  57. package/dist/src/plugin/config/updater.js.map +1 -1
  58. package/dist/src/plugin/core/streaming/index.d.ts +2 -2
  59. package/dist/src/plugin/core/streaming/index.js +2 -2
  60. package/dist/src/plugin/core/streaming/transformer.d.ts +1 -1
  61. package/dist/src/plugin/core/streaming/transformer.js +1 -1
  62. package/dist/src/plugin/debug.d.ts +1 -1
  63. package/dist/src/plugin/debug.js +2 -2
  64. package/dist/src/plugin/fingerprint.d.ts +8 -5
  65. package/dist/src/plugin/fingerprint.d.ts.map +1 -1
  66. package/dist/src/plugin/fingerprint.js +23 -41
  67. package/dist/src/plugin/fingerprint.js.map +1 -1
  68. package/dist/src/plugin/logger.d.ts +1 -1
  69. package/dist/src/plugin/logger.js +2 -2
  70. package/dist/src/plugin/project.d.ts +4 -4
  71. package/dist/src/plugin/project.d.ts.map +1 -1
  72. package/dist/src/plugin/project.js +95 -94
  73. package/dist/src/plugin/project.js.map +1 -1
  74. package/dist/src/plugin/quota.d.ts +35 -3
  75. package/dist/src/plugin/quota.d.ts.map +1 -1
  76. package/dist/src/plugin/quota.js +54 -25
  77. package/dist/src/plugin/quota.js.map +1 -1
  78. package/dist/src/plugin/recovery/index.d.ts +3 -3
  79. package/dist/src/plugin/recovery/index.js +3 -3
  80. package/dist/src/plugin/recovery/storage.d.ts +1 -1
  81. package/dist/src/plugin/recovery/storage.js +1 -1
  82. package/dist/src/plugin/recovery.d.ts +3 -3
  83. package/dist/src/plugin/recovery.js +3 -3
  84. package/dist/src/plugin/refresh-queue.d.ts +6 -3
  85. package/dist/src/plugin/refresh-queue.d.ts.map +1 -1
  86. package/dist/src/plugin/refresh-queue.js +23 -6
  87. package/dist/src/plugin/refresh-queue.js.map +1 -1
  88. package/dist/src/plugin/request-helpers.d.ts +1 -1
  89. package/dist/src/plugin/request-helpers.js +5 -5
  90. package/dist/src/plugin/request.d.ts +9 -6
  91. package/dist/src/plugin/request.d.ts.map +1 -1
  92. package/dist/src/plugin/request.js +23 -23
  93. package/dist/src/plugin/request.js.map +1 -1
  94. package/dist/src/plugin/search.js +7 -7
  95. package/dist/src/plugin/search.js.map +1 -1
  96. package/dist/src/plugin/server.js +1 -1
  97. package/dist/src/plugin/storage.d.ts +18 -5
  98. package/dist/src/plugin/storage.d.ts.map +1 -1
  99. package/dist/src/plugin/storage.js +117 -69
  100. package/dist/src/plugin/storage.js.map +1 -1
  101. package/dist/src/plugin/stores/signature-store.d.ts +1 -1
  102. package/dist/src/plugin/token.d.ts +2 -4
  103. package/dist/src/plugin/token.d.ts.map +1 -1
  104. package/dist/src/plugin/token.js +48 -8
  105. package/dist/src/plugin/token.js.map +1 -1
  106. package/dist/src/plugin/transform/claude.d.ts +1 -1
  107. package/dist/src/plugin/transform/claude.js +1 -1
  108. package/dist/src/plugin/transform/cross-model-sanitizer.js +2 -2
  109. package/dist/src/plugin/transform/gemini.d.ts +1 -1
  110. package/dist/src/plugin/transform/index.d.ts +9 -9
  111. package/dist/src/plugin/transform/index.js +4 -4
  112. package/dist/src/plugin/transform/model-resolver.d.ts +9 -1
  113. package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -1
  114. package/dist/src/plugin/transform/model-resolver.js +34 -4
  115. package/dist/src/plugin/transform/model-resolver.js.map +1 -1
  116. package/dist/src/plugin/transform/types.d.ts +1 -1
  117. package/dist/src/plugin/types.d.ts +31 -2
  118. package/dist/src/plugin/types.d.ts.map +1 -1
  119. package/dist/src/plugin/ui/auth-menu.d.ts +1 -4
  120. package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -1
  121. package/dist/src/plugin/ui/auth-menu.js +8 -16
  122. package/dist/src/plugin/ui/auth-menu.js.map +1 -1
  123. package/dist/src/plugin/ui/confirm.js +1 -1
  124. package/dist/src/plugin/ui/select.js +1 -1
  125. package/dist/src/plugin/version.d.ts +35 -6
  126. package/dist/src/plugin/version.d.ts.map +1 -1
  127. package/dist/src/plugin/version.js +138 -42
  128. package/dist/src/plugin/version.js.map +1 -1
  129. package/dist/src/plugin.d.ts +11 -8
  130. package/dist/src/plugin.d.ts.map +1 -1
  131. package/dist/src/plugin.js +170 -291
  132. package/dist/src/plugin.js.map +1 -1
  133. package/dist/src/tui.d.ts +64 -0
  134. package/dist/src/tui.d.ts.map +1 -0
  135. package/dist/src/tui.js +124 -0
  136. package/dist/src/tui.js.map +1 -0
  137. package/dist/src/v2.d.ts +4 -0
  138. package/dist/src/v2.d.ts.map +1 -0
  139. package/dist/src/v2.js +672 -0
  140. package/dist/src/v2.js.map +1 -0
  141. package/index.js +4 -0
  142. package/package.json +21 -7
  143. package/tui.js +1 -0
@@ -1,4 +1,4 @@
1
- import type { SignatureStore, StreamingCallbacks, StreamingOptions, ThoughtBuffer } from './types';
1
+ import type { SignatureStore, StreamingCallbacks, StreamingOptions, ThoughtBuffer } from './types.js';
2
2
  export declare function createThoughtBuffer(): ThoughtBuffer;
3
3
  export declare function transformStreamingPayload(payload: string, transformThinkingParts?: (response: unknown) => unknown): string;
4
4
  export declare function deduplicateThinkingText(response: unknown, sentBuffer: ThoughtBuffer, displayedThinkingHashes?: Set<string>): unknown;
@@ -1,4 +1,4 @@
1
- import { processImageData } from '../../image-saver';
1
+ import { processImageData } from '../../image-saver.js';
2
2
  /**
3
3
  * Simple string hash for thinking deduplication.
4
4
  * Uses DJB2-like algorithm.
@@ -1,4 +1,4 @@
1
- import type { AntigravityConfig } from "./config";
1
+ import type { AntigravityConfig } from "./config/index.js";
2
2
  export declare const DEBUG_MESSAGE_PREFIX = "[opencode-antigravity-auth debug]";
3
3
  /**
4
4
  * Initialize or reinitialize debug state with the given config.
@@ -2,8 +2,8 @@ import { createWriteStream, mkdirSync, readdirSync, statSync, unlinkSync } from
2
2
  import { join } from "node:path";
3
3
  import { env } from "node:process";
4
4
  import { homedir } from "node:os";
5
- import { deriveDebugPolicy, formatAccountContextLabel, formatAccountLabel, formatBodyPreviewForLog, formatErrorForLog, isTruthyFlag, truncateTextForLog, } from "./logging-utils";
6
- import { ensureGitignoreSync } from "./storage";
5
+ import { deriveDebugPolicy, formatAccountContextLabel, formatAccountLabel, formatBodyPreviewForLog, formatErrorForLog, isTruthyFlag, truncateTextForLog, } from "./logging-utils.js";
6
+ import { ensureGitignoreSync } from "./storage.js";
7
7
  const MAX_BODY_PREVIEW_CHARS = 12000;
8
8
  const MAX_BODY_LOG_CHARS = 50000;
9
9
  export const DEBUG_MESSAGE_PREFIX = "[opencode-antigravity-auth debug]";
@@ -38,23 +38,26 @@ export interface FingerprintHeaders {
38
38
  }
39
39
  /**
40
40
  * Generate a randomized device fingerprint.
41
- * Each fingerprint represents a unique "device" identity.
41
+ * Each fingerprint represents a unique "device" identity. The userAgent is the
42
+ * shared Hub User-Agent because Cloud Code ties it to the release and build CL.
42
43
  */
43
44
  export declare function generateFingerprint(): Fingerprint;
44
45
  /**
45
46
  * Collect fingerprint based on actual current system.
46
- * Uses real OS info instead of randomized values.
47
+ * Uses real OS info for stored metadata; the userAgent is still the Hub User-Agent.
47
48
  */
48
49
  export declare function collectCurrentFingerprint(): Fingerprint;
49
50
  /**
50
- * Update the version in a fingerprint's userAgent to match the current runtime version.
51
- * Called after version fetcher resolves so saved fingerprints always carry the latest version.
51
+ * Migrate a fingerprint's userAgent to the current Hub User-Agent.
52
+ * Saved fingerprints may carry a legacy `antigravity/<version> <os>/<arch>` agent or
53
+ * an older Hub release. Requests never send the stored value; this keeps storage in sync.
52
54
  * Returns true if the userAgent was changed.
53
55
  */
54
56
  export declare function updateFingerprintVersion(fingerprint: Fingerprint): boolean;
55
57
  /**
56
58
  * Build HTTP headers from a fingerprint object.
57
- * These headers are used to identify the "device" making API requests.
59
+ * The User-Agent is resolved at call time from the current Hub version, so a stale
60
+ * stored fingerprint userAgent is never sent.
58
61
  */
59
62
  export declare function buildFingerprintHeaders(fingerprint: Fingerprint | null): Partial<FingerprintHeaders>;
60
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/plugin/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;CAChD;AAED,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAcD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAsBjD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,WAAW,CAqBvD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAW1E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpG;AAQD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAKnD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,WAAW,CAG1D"}
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/plugin/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;CAChD;AAED,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAkBD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAajD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,WAAW,CAavD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAQ1E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpG;AAQD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAKnD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,WAAW,CAG1D"}
@@ -9,31 +9,23 @@
9
9
  */
10
10
  import * as crypto from "node:crypto";
11
11
  import * as os from "node:os";
12
- import { getAntigravityVersion } from "../constants";
13
- const OS_VERSIONS = {
14
- darwin: ["10.15.7", "11.6.8", "12.6.3", "13.5.2", "14.2.1", "14.5"],
15
- win32: ["10.0.19041", "10.0.19042", "10.0.19043", "10.0.22000", "10.0.22621", "10.0.22631"],
16
- linux: ["5.15.0", "5.19.0", "6.1.0", "6.2.0", "6.5.0", "6.6.0"],
17
- };
18
- const ARCHITECTURES = ["x64", "arm64"];
19
- const IDE_TYPES = [
20
- "ANTIGRAVITY",
21
- ];
22
- const PLATFORMS = [
23
- "WINDOWS",
24
- "MACOS",
25
- ];
12
+ import { getAntigravityUserAgent } from "../constants.js";
26
13
  const SDK_CLIENTS = [
27
14
  "google-cloud-sdk vscode_cloudshelleditor/0.1",
28
15
  "google-cloud-sdk vscode/1.86.0",
29
16
  "google-cloud-sdk vscode/1.87.0",
30
17
  "google-cloud-sdk vscode/1.96.0",
31
18
  ];
19
+ /** Matches the Hub User-Agent, which always reports the darwin/arm64 manifest build. */
20
+ const HUB_METADATA_PLATFORM = "MACOS";
32
21
  /** Maximum number of fingerprint versions to keep per account */
33
22
  export const MAX_FINGERPRINT_HISTORY = 5;
34
23
  function randomFrom(arr) {
35
24
  return arr[Math.floor(Math.random() * arr.length)];
36
25
  }
26
+ function platformToDisplayName(platform) {
27
+ return platform === "win32" ? "WINDOWS" : "MACOS";
28
+ }
37
29
  function generateDeviceId() {
38
30
  return crypto.randomUUID();
39
31
  }
@@ -42,23 +34,18 @@ function generateSessionToken() {
42
34
  }
43
35
  /**
44
36
  * Generate a randomized device fingerprint.
45
- * Each fingerprint represents a unique "device" identity.
37
+ * Each fingerprint represents a unique "device" identity. The userAgent is the
38
+ * shared Hub User-Agent because Cloud Code ties it to the release and build CL.
46
39
  */
47
40
  export function generateFingerprint() {
48
- const platform = randomFrom(["darwin", "win32"]);
49
- const arch = randomFrom(ARCHITECTURES);
50
- const osVersion = randomFrom(OS_VERSIONS[platform] ?? OS_VERSIONS.darwin);
51
- const matchingPlatform = platform === "win32"
52
- ? "WINDOWS"
53
- : "MACOS";
54
41
  return {
55
42
  deviceId: generateDeviceId(),
56
43
  sessionToken: generateSessionToken(),
57
- userAgent: `antigravity/${getAntigravityVersion()} ${platform}/${arch}`,
44
+ userAgent: getAntigravityUserAgent(),
58
45
  apiClient: randomFrom(SDK_CLIENTS),
59
46
  clientMetadata: {
60
- ideType: randomFrom(IDE_TYPES),
61
- platform: matchingPlatform,
47
+ ideType: "ANTIGRAVITY",
48
+ platform: HUB_METADATA_PLATFORM,
62
49
  pluginType: "GEMINI",
63
50
  },
64
51
  createdAt: Date.now(),
@@ -66,52 +53,47 @@ export function generateFingerprint() {
66
53
  }
67
54
  /**
68
55
  * Collect fingerprint based on actual current system.
69
- * Uses real OS info instead of randomized values.
56
+ * Uses real OS info for stored metadata; the userAgent is still the Hub User-Agent.
70
57
  */
71
58
  export function collectCurrentFingerprint() {
72
- const platform = os.platform();
73
- const arch = os.arch();
74
- const matchingPlatform = platform === "win32"
75
- ? "WINDOWS"
76
- : "MACOS";
77
59
  return {
78
60
  deviceId: generateDeviceId(),
79
61
  sessionToken: generateSessionToken(),
80
- userAgent: `antigravity/${getAntigravityVersion()} ${platform}/${arch}`,
62
+ userAgent: getAntigravityUserAgent(),
81
63
  apiClient: "google-cloud-sdk vscode_cloudshelleditor/0.1",
82
64
  clientMetadata: {
83
65
  ideType: "ANTIGRAVITY",
84
- platform: matchingPlatform,
66
+ platform: platformToDisplayName(os.platform()),
85
67
  pluginType: "GEMINI",
86
68
  },
87
69
  createdAt: Date.now(),
88
70
  };
89
71
  }
90
72
  /**
91
- * Update the version in a fingerprint's userAgent to match the current runtime version.
92
- * Called after version fetcher resolves so saved fingerprints always carry the latest version.
73
+ * Migrate a fingerprint's userAgent to the current Hub User-Agent.
74
+ * Saved fingerprints may carry a legacy `antigravity/<version> <os>/<arch>` agent or
75
+ * an older Hub release. Requests never send the stored value; this keeps storage in sync.
93
76
  * Returns true if the userAgent was changed.
94
77
  */
95
78
  export function updateFingerprintVersion(fingerprint) {
96
- const currentVersion = getAntigravityVersion();
97
- const versionPattern = /^(antigravity\/)([\d.]+)/;
98
- const match = fingerprint.userAgent.match(versionPattern);
99
- if (!match || match[2] === currentVersion) {
79
+ const currentUserAgent = getAntigravityUserAgent();
80
+ if (fingerprint.userAgent === currentUserAgent) {
100
81
  return false;
101
82
  }
102
- fingerprint.userAgent = fingerprint.userAgent.replace(versionPattern, `$1${currentVersion}`);
83
+ fingerprint.userAgent = currentUserAgent;
103
84
  return true;
104
85
  }
105
86
  /**
106
87
  * Build HTTP headers from a fingerprint object.
107
- * These headers are used to identify the "device" making API requests.
88
+ * The User-Agent is resolved at call time from the current Hub version, so a stale
89
+ * stored fingerprint userAgent is never sent.
108
90
  */
109
91
  export function buildFingerprintHeaders(fingerprint) {
110
92
  if (!fingerprint) {
111
93
  return {};
112
94
  }
113
95
  return {
114
- "User-Agent": fingerprint.userAgent,
96
+ "User-Agent": getAntigravityUserAgent(),
115
97
  };
116
98
  }
117
99
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../src/plugin/fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../src/plugin/fingerprint.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * - either sink can be enabled independently
8
8
  * - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
9
9
  */
10
- import type { PluginClient } from "./types";
10
+ import type { PluginClient } from "./types.js";
11
11
  export interface Logger {
12
12
  debug(message: string, extra?: Record<string, unknown>): void;
13
13
  info(message: string, extra?: Record<string, unknown>): void;
@@ -7,8 +7,8 @@
7
7
  * - either sink can be enabled independently
8
8
  * - OPENCODE_ANTIGRAVITY_CONSOLE_LOG=1 → console output (independent of debug flags)
9
9
  */
10
- import { isDebugTuiEnabled } from "./debug";
11
- import { isTruthyFlag, writeConsoleLog, } from "./logging-utils";
10
+ import { isDebugTuiEnabled } from "./debug.js";
11
+ import { isTruthyFlag, writeConsoleLog, } from "./logging-utils.js";
12
12
  const ENV_CONSOLE_LOG = "OPENCODE_ANTIGRAVITY_CONSOLE_LOG";
13
13
  let _client = null;
14
14
  /**
@@ -1,4 +1,4 @@
1
- import type { OAuthAuthDetails, ProjectContextResult } from "./types";
1
+ import type { OAuthAuthDetails, ProjectContextResult } from "./types.js";
2
2
  interface AntigravityUserTier {
3
3
  id?: string;
4
4
  isDefault?: boolean;
@@ -18,11 +18,11 @@ interface LoadCodeAssistPayload {
18
18
  */
19
19
  export declare function invalidateProjectContextCache(refresh?: string): void;
20
20
  /**
21
- * Loads managed project information for the given access token and optional project.
21
+ * Loads managed project information for the given access token from the Antigravity host.
22
22
  */
23
- export declare function loadManagedProject(accessToken: string, projectId?: string): Promise<LoadCodeAssistPayload | null>;
23
+ export declare function loadManagedProject(accessToken: string): Promise<LoadCodeAssistPayload | null>;
24
24
  /**
25
- * Onboards a managed project for the user, optionally retrying until completion.
25
+ * Onboards a managed project for the user, polling until the operation completes.
26
26
  */
27
27
  export declare function onboardManagedProject(accessToken: string, tierId: string, projectId?: string, attempts?: number, delayMs?: number): Promise<string | undefined>;
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/plugin/project.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAatE,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C;AAED,UAAU,qBAAqB;IAC7B,uBAAuB,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,WAAW,CAAC,EAAE;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAuED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAQpE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAuCvC;AAGD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,SAAK,EACb,OAAO,SAAO,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6C7B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+FhG"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/plugin/project.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAmBtE,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C;AAED,UAAU,qBAAqB;IAC7B,uBAAuB,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,WAAW,CAAC,EAAE;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC;AA6ED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAQpE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CA0BnG;AAGD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,SAAK,EACb,OAAO,SAAO,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4C7B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+FhG"}
@@ -1,38 +1,40 @@
1
- import { getAntigravityHeaders, ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_LOAD_ENDPOINTS, ANTIGRAVITY_DEFAULT_PROJECT_ID, } from "../constants";
2
- import { formatRefreshParts, parseRefreshParts } from "./auth";
3
- import { createLogger } from "./logger";
1
+ import { ANTIGRAVITY_DEFAULT_PROJECT_ID, ANTIGRAVITY_ENDPOINT, ANTIGRAVITY_GOOG_API_CLIENT, getAntigravityOnboardUserAgent, getAntigravityUserAgent, getAntigravityVersion, } from "../constants.js";
2
+ import { formatRefreshParts, parseRefreshParts } from "./auth.js";
3
+ import { createLogger } from "./logger.js";
4
4
  const log = createLogger("project");
5
5
  const projectContextResultCache = new Map();
6
6
  const projectContextPendingCache = new Map();
7
- const CODE_ASSIST_METADATA = {
8
- ideType: "ANTIGRAVITY",
9
- platform: process.platform === "win32" ? "WINDOWS" : "MACOS",
10
- pluginType: "GEMINI",
11
- };
12
- function buildMetadata(projectId) {
13
- const metadata = {
14
- ideType: CODE_ASSIST_METADATA.ideType,
15
- platform: CODE_ASSIST_METADATA.platform,
16
- pluginType: CODE_ASSIST_METADATA.pluginType,
7
+ const LOAD_TIMEOUT_MS = 10000;
8
+ const ONBOARD_TIMEOUT_MS = 30000;
9
+ /** Tier used for onboarding when loadCodeAssist does not advertise one. */
10
+ const DEFAULT_TIER_ID = "free-tier";
11
+ /**
12
+ * loadCodeAssist metadata sent by the Antigravity Hub. Platform and plugin type are
13
+ * omitted: MACOS/WINDOWS are not valid Cloud Code platform values.
14
+ */
15
+ const LOAD_CODE_ASSIST_METADATA = { ideType: "ANTIGRAVITY" };
16
+ /**
17
+ * onboardUser metadata uses the snake_case control-plane fields and the Hub version.
18
+ */
19
+ function buildOnboardMetadata() {
20
+ return {
21
+ ide_type: "ANTIGRAVITY",
22
+ ide_version: getAntigravityVersion(),
23
+ ide_name: "antigravity",
17
24
  };
18
- if (projectId) {
19
- metadata.duetProject = projectId;
20
- }
21
- return metadata;
22
25
  }
23
26
  /**
24
- * Selects the default tier ID from the allowed tiers list.
27
+ * Selects the tier to onboard with: the default allowed tier, then the first allowed
28
+ * tier, then the current tier, then free-tier.
25
29
  */
26
- function getDefaultTierId(allowedTiers) {
27
- if (!allowedTiers || allowedTiers.length === 0) {
28
- return undefined;
29
- }
30
+ function getDefaultTierId(payload) {
31
+ const allowedTiers = payload?.allowedTiers ?? [];
30
32
  for (const tier of allowedTiers) {
31
- if (tier?.isDefault) {
33
+ if (tier?.isDefault && tier.id) {
32
34
  return tier.id;
33
35
  }
34
36
  }
35
- return allowedTiers[0]?.id;
37
+ return allowedTiers[0]?.id || payload?.currentTier?.id || DEFAULT_TIER_ID;
36
38
  }
37
39
  /**
38
40
  * Promise-based delay utility.
@@ -42,20 +44,29 @@ function wait(ms) {
42
44
  setTimeout(resolve, ms);
43
45
  });
44
46
  }
47
+ async function fetchWithTimeout(url, options, timeoutMs) {
48
+ const controller = new AbortController();
49
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
50
+ try {
51
+ return await fetch(url, { ...options, signal: controller.signal });
52
+ }
53
+ finally {
54
+ clearTimeout(timeout);
55
+ }
56
+ }
57
+ /**
58
+ * Extracts a cloudaicompanion project id from its string or `{ id }` form.
59
+ */
60
+ function extractProjectId(value) {
61
+ const id = typeof value === "string" ? value : value?.id;
62
+ const trimmed = typeof id === "string" ? id.trim() : "";
63
+ return trimmed || undefined;
64
+ }
45
65
  /**
46
66
  * Extracts the cloudaicompanion project id from loadCodeAssist responses.
47
67
  */
48
68
  function extractManagedProjectId(payload) {
49
- if (!payload) {
50
- return undefined;
51
- }
52
- if (typeof payload.cloudaicompanionProject === "string") {
53
- return payload.cloudaicompanionProject;
54
- }
55
- if (payload.cloudaicompanionProject && typeof payload.cloudaicompanionProject.id === "string") {
56
- return payload.cloudaicompanionProject.id;
57
- }
58
- return undefined;
69
+ return payload ? extractProjectId(payload.cloudaicompanionProject) : undefined;
59
70
  }
60
71
  /**
61
72
  * Generates a cache key for project context based on refresh token.
@@ -77,75 +88,65 @@ export function invalidateProjectContextCache(refresh) {
77
88
  projectContextResultCache.delete(refresh);
78
89
  }
79
90
  /**
80
- * Loads managed project information for the given access token and optional project.
91
+ * Loads managed project information for the given access token from the Antigravity host.
81
92
  */
82
- export async function loadManagedProject(accessToken, projectId) {
83
- const metadata = buildMetadata(projectId);
84
- const requestBody = { metadata };
85
- const loadHeaders = {
86
- "Content-Type": "application/json",
87
- Authorization: `Bearer ${accessToken}`,
88
- "User-Agent": "google-api-nodejs-client/9.15.1",
89
- "X-Goog-Api-Client": "google-cloud-sdk vscode_cloudshelleditor/0.1",
90
- "Client-Metadata": getAntigravityHeaders()["Client-Metadata"],
91
- };
92
- const loadEndpoints = Array.from(new Set([...ANTIGRAVITY_LOAD_ENDPOINTS, ...ANTIGRAVITY_ENDPOINT_FALLBACKS]));
93
- for (const baseEndpoint of loadEndpoints) {
94
- try {
95
- const response = await fetch(`${baseEndpoint}/v1internal:loadCodeAssist`, {
96
- method: "POST",
97
- headers: loadHeaders,
98
- body: JSON.stringify(requestBody),
99
- });
100
- if (!response.ok) {
101
- continue;
102
- }
103
- return (await response.json());
104
- }
105
- catch (error) {
106
- log.debug("Failed to load managed project", { endpoint: baseEndpoint, error: String(error) });
107
- continue;
93
+ export async function loadManagedProject(accessToken) {
94
+ try {
95
+ const response = await fetchWithTimeout(`${ANTIGRAVITY_ENDPOINT}/v1internal:loadCodeAssist`, {
96
+ method: "POST",
97
+ headers: {
98
+ "Content-Type": "application/json",
99
+ Authorization: `Bearer ${accessToken}`,
100
+ "User-Agent": getAntigravityUserAgent(),
101
+ },
102
+ body: JSON.stringify({ metadata: LOAD_CODE_ASSIST_METADATA }),
103
+ }, LOAD_TIMEOUT_MS);
104
+ if (!response.ok) {
105
+ log.debug("loadCodeAssist failed", { endpoint: ANTIGRAVITY_ENDPOINT, status: response.status });
106
+ return null;
108
107
  }
108
+ return (await response.json());
109
+ }
110
+ catch (error) {
111
+ log.debug("Failed to load managed project", { endpoint: ANTIGRAVITY_ENDPOINT, error: String(error) });
112
+ return null;
109
113
  }
110
- return null;
111
114
  }
112
115
  /**
113
- * Onboards a managed project for the user, optionally retrying until completion.
116
+ * Onboards a managed project for the user, polling until the operation completes.
114
117
  */
115
118
  export async function onboardManagedProject(accessToken, tierId, projectId, attempts = 10, delayMs = 5000) {
116
- const metadata = buildMetadata(projectId);
117
119
  const requestBody = {
118
- tierId,
119
- metadata,
120
+ tier_id: tierId,
121
+ metadata: buildOnboardMetadata(),
120
122
  };
121
- for (const baseEndpoint of ANTIGRAVITY_ENDPOINT_FALLBACKS) {
122
- for (let attempt = 0; attempt < attempts; attempt += 1) {
123
- try {
124
- const response = await fetch(`${baseEndpoint}/v1internal:onboardUser`, {
125
- method: "POST",
126
- headers: {
127
- "Content-Type": "application/json",
128
- Authorization: `Bearer ${accessToken}`,
129
- ...getAntigravityHeaders(),
130
- },
131
- body: JSON.stringify(requestBody),
132
- });
133
- if (!response.ok) {
134
- break;
135
- }
136
- const payload = (await response.json());
137
- const managedProjectId = payload.response?.cloudaicompanionProject?.id;
138
- if (payload.done && managedProjectId) {
139
- return managedProjectId;
140
- }
141
- if (payload.done && projectId) {
142
- return projectId;
143
- }
123
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
124
+ try {
125
+ const response = await fetchWithTimeout(`${ANTIGRAVITY_ENDPOINT}/v1internal:onboardUser`, {
126
+ method: "POST",
127
+ headers: {
128
+ Accept: "*/*",
129
+ "Content-Type": "application/json",
130
+ Authorization: `Bearer ${accessToken}`,
131
+ "User-Agent": getAntigravityOnboardUserAgent(),
132
+ "X-Goog-Api-Client": ANTIGRAVITY_GOOG_API_CLIENT,
133
+ },
134
+ body: JSON.stringify(requestBody),
135
+ }, ONBOARD_TIMEOUT_MS);
136
+ if (!response.ok) {
137
+ log.debug("onboardUser failed", { endpoint: ANTIGRAVITY_ENDPOINT, status: response.status });
138
+ return undefined;
144
139
  }
145
- catch (error) {
146
- log.debug("Failed to onboard managed project", { endpoint: baseEndpoint, error: String(error) });
147
- break;
140
+ const payload = (await response.json());
141
+ if (payload.done) {
142
+ return extractProjectId(payload.response?.cloudaicompanionProject) ?? projectId;
148
143
  }
144
+ }
145
+ catch (error) {
146
+ log.debug("Failed to onboard managed project", { endpoint: ANTIGRAVITY_ENDPOINT, error: String(error) });
147
+ return undefined;
148
+ }
149
+ if (attempt < attempts - 1) {
149
150
  await wait(delayMs);
150
151
  }
151
152
  }
@@ -188,14 +189,14 @@ export async function ensureProjectContext(auth) {
188
189
  return { auth: updatedAuth, effectiveProjectId: managedProjectId };
189
190
  };
190
191
  // Try to resolve a managed project from Antigravity if possible.
191
- const loadPayload = await loadManagedProject(accessToken, parts.projectId ?? fallbackProjectId);
192
+ const loadPayload = await loadManagedProject(accessToken);
192
193
  const resolvedManagedProjectId = extractManagedProjectId(loadPayload);
193
194
  if (resolvedManagedProjectId) {
194
195
  return persistManagedProject(resolvedManagedProjectId);
195
196
  }
196
197
  // No managed project found - try to auto-provision one via onboarding.
197
198
  // This handles accounts that were added before managed project provisioning was required.
198
- const tierId = getDefaultTierId(loadPayload?.allowedTiers) ?? "FREE";
199
+ const tierId = getDefaultTierId(loadPayload);
199
200
  log.debug("Auto-provisioning managed project", { tierId, projectId: parts.projectId });
200
201
  const provisionedProjectId = await onboardManagedProject(accessToken, tierId, parts.projectId);
201
202
  if (provisionedProjectId) {
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/plugin/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/plugin/project.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEpC,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAC1E,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAyC,CAAC;AAEpF,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,2EAA2E;AAC3E,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC;;;GAGG;AACH,MAAM,yBAAyB,GAAG,EAAE,OAAO,EAAE,aAAa,EAAW,CAAC;AAuBtE;;GAEG;AACH,SAAS,oBAAoB;IAC3B,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,qBAAqB,EAAE;QACpC,QAAQ,EAAE,aAAa;KACxB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAqC;IAC7D,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,eAAe,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAS,IAAI,CAAC,EAAU;IACtB,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO;QAClC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAoB,EAAE,SAAiB;IAClF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAA2C;IACnE,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,OAAqC;IACpE,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAsB;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,0BAA0B,CAAC,KAAK,EAAE,CAAC;QACnC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IACD,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,GAAG,oBAAoB,4BAA4B,EACnD;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,YAAY,EAAE,uBAAuB,EAAE;aACxC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,yBAAyB,EAAE,CAAC;SAC9D,EACD,eAAe,CAChB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAChG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAGD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,MAAc,EACd,SAAkB,EAClB,QAAQ,GAAG,EAAE,EACb,OAAO,GAAG,IAAI;IAEd,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,oBAAoB,EAAE;KACjC,CAAC;IAEF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,GAAG,oBAAoB,yBAAyB,EAChD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,MAAM,EAAE,KAAK;oBACb,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,WAAW,EAAE;oBACtC,YAAY,EAAE,8BAA8B,EAAE;oBAC9C,mBAAmB,EAAE,2BAA2B;iBACjD;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aAClC,EACD,kBAAkB,CACnB,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7F,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;YAC9D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,uBAAuB,CAAC,IAAI,SAAS,CAAC;YAClF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzG,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAsB;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,OAAO,GAAG,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,IAAmC,EAAE;QAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;QACzD,MAAM,qBAAqB,GAAG,KAAK,EAAE,gBAAwB,EAAiC,EAAE;YAC9F,MAAM,WAAW,GAAqB;gBACpC,GAAG,IAAI;gBACP,OAAO,EAAE,kBAAkB,CAAC;oBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,gBAAgB;iBACjB,CAAC;aACH,CAAC;YAEF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;QACrE,CAAC,CAAC;QAEF,iEAAiE;QACjE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAEtE,IAAI,wBAAwB,EAAE,CAAC;YAC7B,OAAO,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC;QAED,uEAAuE;QACvE,0FAA0F;QAC1F,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAEvF,MAAM,oBAAoB,GAAG,MAAM,qBAAqB,CACtD,WAAW,EACX,MAAM,EACN,KAAK,CAAC,SAAS,CAChB,CAAC;QAEF,IAAI,oBAAoB,EAAE,CAAC;YACzB,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAChF,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QACrD,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,sEAAsE,EAAE;YAC/E,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS;SAChC,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QACvD,CAAC;QAED,6EAA6E;QAC7E,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACzD,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,EAAE;SAC7B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACrD,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,yBAAyB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { PluginClient } from "./types";
2
- import type { AccountMetadataV3 } from "./storage";
1
+ import type { PluginClient } from "./types.js";
2
+ import type { AccountMetadataV3 } from "./storage.js";
3
3
  export type QuotaGroup = "claude" | "gemini-pro" | "gemini-flash";
4
4
  export interface QuotaGroupSummary {
5
5
  remainingFraction?: number;
@@ -9,6 +9,7 @@ export interface QuotaGroupSummary {
9
9
  export interface QuotaSummary {
10
10
  groups: Partial<Record<QuotaGroup, QuotaGroupSummary>>;
11
11
  modelCount: number;
12
+ models?: Record<string, AvailableModel>;
12
13
  error?: string;
13
14
  }
14
15
  export interface GeminiCliQuotaModel {
@@ -31,5 +32,36 @@ export interface AccountQuotaResult {
31
32
  geminiCliQuota?: GeminiCliQuotaSummary;
32
33
  updatedAccount?: AccountMetadataV3;
33
34
  }
34
- export declare function checkAccountsQuota(accounts: AccountMetadataV3[], client: PluginClient, providerId?: string): Promise<AccountQuotaResult[]>;
35
+ export interface FetchAvailableModelsResponse {
36
+ models?: Record<string, FetchAvailableModelEntry>;
37
+ agentModelSorts?: Array<{
38
+ groups?: Array<{
39
+ modelIds?: string[];
40
+ }>;
41
+ }>;
42
+ tieredModelIds?: Record<string, string[]>;
43
+ }
44
+ export interface AvailableModel {
45
+ displayName?: string;
46
+ maxTokens?: number;
47
+ maxOutputTokens?: number;
48
+ supportsImages?: boolean;
49
+ supportsThinking?: boolean;
50
+ disabled?: boolean;
51
+ selectable?: boolean;
52
+ }
53
+ interface FetchAvailableModelEntry extends AvailableModel {
54
+ quotaInfo?: {
55
+ remainingFraction?: number;
56
+ resetTime?: string;
57
+ };
58
+ displayName?: string;
59
+ modelName?: string;
60
+ }
61
+ export declare function checkAccountsQuota(accounts: AccountMetadataV3[], client: PluginClient, providerId?: string, options?: {
62
+ includeDisabled?: boolean;
63
+ onAccountUpdated?: (original: AccountMetadataV3, updated: AccountMetadataV3) => Promise<unknown>;
64
+ signal?: AbortSignal;
65
+ }): Promise<AccountQuotaResult[]>;
66
+ export {};
35
67
  //# sourceMappingURL=quota.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/plugin/quota.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAInD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,cAAc,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAuPD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,EAAE,YAAY,EACpB,UAAU,SAA0B,GACnC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiF/B"}
1
+ {"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../../src/plugin/quota.ts"],"names":[],"mappings":"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"}