@omnicross/core 0.4.2 → 0.4.4

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 (150) hide show
  1. package/dist/auth/GeminiCodeAssistProjectResolver.cjs +11 -184
  2. package/dist/auth/GeminiCodeAssistProjectResolver.d.cts +41 -3
  3. package/dist/auth/GeminiCodeAssistProjectResolver.d.ts +41 -3
  4. package/dist/auth/GeminiCodeAssistProjectResolver.js +12 -185
  5. package/dist/{chunk-POUTD5AM.cjs → chunk-47E3I5PF.cjs} +10 -3
  6. package/dist/chunk-4LSZ7NFM.js +50 -0
  7. package/dist/{chunk-WX2E2G7H.cjs → chunk-4NAMH4UE.cjs} +79 -51
  8. package/dist/{chunk-LQYS2N47.js → chunk-4RM22ETG.js} +14 -2
  9. package/dist/{chunk-YEVWA4C7.cjs → chunk-57Y2EA2G.cjs} +6 -5
  10. package/dist/chunk-6I4SAWCN.js +24 -0
  11. package/dist/{chunk-KIQ2HA2A.cjs → chunk-BTSADEX4.cjs} +5 -5
  12. package/dist/chunk-CGEZQC2G.cjs +67 -0
  13. package/dist/chunk-E5RCCGE7.cjs +95 -0
  14. package/dist/chunk-EE7VP4O3.js +230 -0
  15. package/dist/chunk-F6P4DIBL.js +95 -0
  16. package/dist/{chunk-BKXC4XM6.cjs → chunk-FORICQ5U.cjs} +15 -11
  17. package/dist/{chunk-PF7YQBKX.js → chunk-FYPKKMB3.js} +6 -2
  18. package/dist/chunk-GWC7HCZI.cjs +44 -0
  19. package/dist/{chunk-LFEH7CEO.js → chunk-IDPMD4B7.js} +22 -0
  20. package/dist/{chunk-UPQIWJIE.cjs → chunk-INY54AYX.cjs} +14 -2
  21. package/dist/{chunk-C3NPMQTK.js → chunk-JHJRZ75C.js} +14 -10
  22. package/dist/chunk-K6J2RIEX.js +67 -0
  23. package/dist/chunk-KSMK45RD.cjs +45 -0
  24. package/dist/chunk-LL3MZ7O5.cjs +24 -0
  25. package/dist/{chunk-PAXJGABW.js → chunk-MPFOC7AT.js} +10 -5
  26. package/dist/{chunk-DKBXDV5U.cjs → chunk-N3MGNLCU.cjs} +49 -44
  27. package/dist/chunk-NCZDUBC2.js +44 -0
  28. package/dist/chunk-NDIBVTBZ.cjs +230 -0
  29. package/dist/{chunk-5DJSOFEP.js → chunk-NTF7TLT7.js} +1 -1
  30. package/dist/chunk-ONTTXSRL.js +32 -0
  31. package/dist/{chunk-HN74IGEO.js → chunk-OXBGNEYR.js} +1 -1
  32. package/dist/{chunk-5GXOYVLB.js → chunk-QSOHEDKO.js} +44 -39
  33. package/dist/{chunk-QEOV6Y4E.cjs → chunk-RX3BCX53.cjs} +359 -170
  34. package/dist/{chunk-TX3AEV6H.cjs → chunk-RXMF7GNF.cjs} +4 -3
  35. package/dist/chunk-SQU2FGXI.cjs +50 -0
  36. package/dist/{chunk-EUZRH544.js → chunk-TKZ3DZS5.js} +10 -3
  37. package/dist/{chunk-MXI2PWIC.cjs → chunk-UKQHBK4Q.cjs} +1 -32
  38. package/dist/{chunk-3XVDFRCQ.cjs → chunk-UOOLU64V.cjs} +13 -8
  39. package/dist/{chunk-ZSA44G7J.cjs → chunk-VFFCV4J6.cjs} +3 -3
  40. package/dist/{chunk-6DDYNS2B.cjs → chunk-VGBJPHHD.cjs} +36 -14
  41. package/dist/{chunk-2T6D7LWE.cjs → chunk-VYOBVPNB.cjs} +6 -2
  42. package/dist/chunk-X6GHTNDL.cjs +482 -0
  43. package/dist/chunk-XBQTVRMK.js +45 -0
  44. package/dist/{chunk-R4VCO2CB.js → chunk-YEHQ5FXZ.js} +28 -0
  45. package/dist/{chunk-5TEWZN5J.js → chunk-YV4JSBPA.js} +278 -89
  46. package/dist/{chunk-HDXSPXIN.js → chunk-ZBDDPWVQ.js} +4 -3
  47. package/dist/chunk-ZJJBITUN.js +482 -0
  48. package/dist/{chunk-QRXOLINS.js → chunk-ZMERU7D3.js} +3 -2
  49. package/dist/completion/CompletionService.cjs +29 -22
  50. package/dist/completion/CompletionService.js +28 -21
  51. package/dist/completion.cjs +29 -22
  52. package/dist/completion.js +28 -21
  53. package/dist/image-generation.cjs +2 -2
  54. package/dist/image-generation.d.cts +2 -2
  55. package/dist/image-generation.d.ts +2 -2
  56. package/dist/image-generation.js +1 -1
  57. package/dist/index.cjs +40 -29
  58. package/dist/index.d.cts +6 -3
  59. package/dist/index.d.ts +6 -3
  60. package/dist/index.js +40 -29
  61. package/dist/outbound-api/routeResolver.cjs +3 -3
  62. package/dist/outbound-api/routeResolver.d.cts +3 -3
  63. package/dist/outbound-api/routeResolver.d.ts +3 -3
  64. package/dist/outbound-api/routeResolver.js +2 -2
  65. package/dist/outbound-api/types.cjs +6 -2
  66. package/dist/outbound-api/types.d.cts +2 -2
  67. package/dist/outbound-api/types.d.ts +2 -2
  68. package/dist/outbound-api/types.js +7 -3
  69. package/dist/outbound-api.cjs +33 -22
  70. package/dist/outbound-api.d.cts +4 -4
  71. package/dist/outbound-api.d.ts +4 -4
  72. package/dist/outbound-api.js +33 -22
  73. package/dist/pipeline/AccountAllowanceScheduling.cjs +4 -3
  74. package/dist/pipeline/AccountAllowanceScheduling.d.cts +4 -4
  75. package/dist/pipeline/AccountAllowanceScheduling.d.ts +4 -4
  76. package/dist/pipeline/AccountAllowanceScheduling.js +3 -2
  77. package/dist/pipeline/AccountAllowanceStore.cjs +2 -2
  78. package/dist/pipeline/AccountAllowanceStore.js +1 -1
  79. package/dist/pipeline/AuthSource.d.cts +6 -0
  80. package/dist/pipeline/AuthSource.d.ts +6 -0
  81. package/dist/pipeline/SubscriptionAuthSource.cjs +5 -4
  82. package/dist/pipeline/SubscriptionAuthSource.js +4 -3
  83. package/dist/pipeline/SubscriptionAuthStrategy.d.cts +7 -0
  84. package/dist/pipeline/SubscriptionAuthStrategy.d.ts +7 -0
  85. package/dist/pipeline/antigravityQuotaFamily.cjs +16 -0
  86. package/dist/pipeline/antigravityQuotaFamily.d.cts +52 -0
  87. package/dist/pipeline/antigravityQuotaFamily.d.ts +52 -0
  88. package/dist/pipeline/antigravityQuotaFamily.js +16 -0
  89. package/dist/pipeline/upstreamFetch.cjs +3 -3
  90. package/dist/pipeline/upstreamFetch.js +2 -2
  91. package/dist/ports.d.cts +2 -2
  92. package/dist/ports.d.ts +2 -2
  93. package/dist/provider-proxy/ProviderProxy.cjs +29 -22
  94. package/dist/provider-proxy/ProviderProxy.js +28 -21
  95. package/dist/provider-proxy/identity/codexCliHeaders.cjs +8 -2
  96. package/dist/provider-proxy/identity/codexCliHeaders.d.cts +36 -7
  97. package/dist/provider-proxy/identity/codexCliHeaders.d.ts +36 -7
  98. package/dist/provider-proxy/identity/codexCliHeaders.js +7 -1
  99. package/dist/provider-proxy/identity/openCodeGoHeaders.cjs +17 -0
  100. package/dist/provider-proxy/identity/openCodeGoHeaders.d.cts +71 -0
  101. package/dist/provider-proxy/identity/openCodeGoHeaders.d.ts +71 -0
  102. package/dist/provider-proxy/identity/openCodeGoHeaders.js +17 -0
  103. package/dist/provider-proxy/ingress/providerProxyShared.cjs +29 -22
  104. package/dist/provider-proxy/ingress/providerProxyShared.js +28 -21
  105. package/dist/provider-proxy.cjs +29 -22
  106. package/dist/provider-proxy.d.cts +2 -2
  107. package/dist/provider-proxy.d.ts +2 -2
  108. package/dist/provider-proxy.js +28 -21
  109. package/dist/{routeResolver-STwMz_G4.d.ts → routeResolver-BLTleO4H.d.ts} +1 -1
  110. package/dist/{routeResolver-Da0yvkL1.d.cts → routeResolver-C2z0pp-q.d.cts} +1 -1
  111. package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.cjs +2 -2
  112. package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.js +1 -1
  113. package/dist/transformer/transformers/AnthropicTransformer.cjs +3 -3
  114. package/dist/transformer/transformers/AnthropicTransformer.js +2 -2
  115. package/dist/transformer/transformers/AntigravityTransformer.cjs +31 -0
  116. package/dist/transformer/transformers/AntigravityTransformer.d.cts +104 -0
  117. package/dist/transformer/transformers/AntigravityTransformer.d.ts +104 -0
  118. package/dist/transformer/transformers/AntigravityTransformer.js +31 -0
  119. package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +3 -3
  120. package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.cts +2 -1
  121. package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.ts +2 -1
  122. package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +2 -2
  123. package/dist/transformer/transformers/GeminiTransformer.cjs +3 -3
  124. package/dist/transformer/transformers/GeminiTransformer.js +2 -2
  125. package/dist/transformer/transformers/antigravityFailover.cjs +30 -0
  126. package/dist/transformer/transformers/antigravityFailover.d.cts +52 -0
  127. package/dist/transformer/transformers/antigravityFailover.d.ts +52 -0
  128. package/dist/transformer/transformers/antigravityFailover.js +30 -0
  129. package/dist/transformer/transformers/antigravityIdentity.cjs +24 -0
  130. package/dist/transformer/transformers/antigravityIdentity.d.cts +76 -0
  131. package/dist/transformer/transformers/antigravityIdentity.d.ts +76 -0
  132. package/dist/transformer/transformers/antigravityIdentity.js +24 -0
  133. package/dist/transformer/transformers.cjs +61 -9
  134. package/dist/transformer/transformers.d.cts +7 -2
  135. package/dist/transformer/transformers.d.ts +7 -2
  136. package/dist/transformer/transformers.js +61 -9
  137. package/dist/transformer/types.d.cts +11 -0
  138. package/dist/transformer/types.d.ts +11 -0
  139. package/dist/transformer.cjs +21 -12
  140. package/dist/transformer.d.cts +3 -0
  141. package/dist/transformer.d.ts +3 -0
  142. package/dist/transformer.js +20 -11
  143. package/dist/{types-Be-yt_6T.d.cts → types-BVwJQ9ZS.d.cts} +3 -0
  144. package/dist/{types-D-oHYusb.d.cts → types-C6m-Db26.d.cts} +25 -4
  145. package/dist/{types-Dvlpjn0d.d.ts → types-Da735j2d.d.ts} +25 -4
  146. package/dist/{types-Dm4_36V4.d.ts → types-VAHRysdP.d.ts} +3 -0
  147. package/package.json +2 -2
  148. package/dist/chunk-4IH4EL7M.cjs +0 -9
  149. package/dist/chunk-ECZ3ZE2C.js +0 -63
  150. package/dist/chunk-XEKD23J5.js +0 -9
@@ -1,6 +1,9 @@
1
+ import {
2
+ antigravityModelFamily
3
+ } from "./chunk-XBQTVRMK.js";
1
4
  import {
2
5
  getSharedAccountAllowanceStore
3
- } from "./chunk-PF7YQBKX.js";
6
+ } from "./chunk-FYPKKMB3.js";
4
7
 
5
8
  // src/pipeline/AccountAllowanceScheduling.ts
6
9
  var DEFAULT_POLICY = {
@@ -30,8 +33,9 @@ function isAccountAllowanceExhaustedError(error) {
30
33
  const value = error;
31
34
  return value.code === "account_allowance_exhausted" && value.status === 429;
32
35
  }
33
- function freshWorstWindow(snapshot) {
34
- return snapshot.windows.filter((window) => window.state === "fresh" && typeof window.usedPercent === "number").sort((left, right) => (right.usedPercent ?? -1) - (left.usedPercent ?? -1))[0];
36
+ function freshWorstWindow(snapshot, resolvedModel) {
37
+ const family = snapshot.providerId === "antigravity" && resolvedModel ? antigravityModelFamily(resolvedModel) : void 0;
38
+ return snapshot.windows.filter((window) => window.state === "fresh" && (typeof window.usedPercent === "number" || window.disabled === true) && (!resolvedModel || snapshot.providerId !== "antigravity" || window.scope === "all" || window.modelFamily === family)).map((window) => window.disabled === true ? { ...window, usedPercent: 100 } : window).sort((left, right) => (right.usedPercent ?? -1) - (left.usedPercent ?? -1))[0];
35
39
  }
36
40
  var AccountAllowanceScheduling = class {
37
41
  constructor(store = getSharedAccountAllowanceStore(), now = Date.now) {
@@ -49,8 +53,8 @@ var AccountAllowanceScheduling = class {
49
53
  getConfig() {
50
54
  return { ...this.config };
51
55
  }
52
- evaluate(providerId, accountId, basePriority, now = this.now()) {
53
- const decision = this.decide(providerId, accountId, basePriority, now);
56
+ evaluate(providerId, accountId, basePriority, now = this.now(), resolvedModel) {
57
+ const decision = this.decide(providerId, accountId, basePriority, now, resolvedModel);
54
58
  this.recordApplied(decision);
55
59
  return decision;
56
60
  }
@@ -59,10 +63,10 @@ var AccountAllowanceScheduling = class {
59
63
  * Admin/read-model callers use this so polling an account list never creates
60
64
  * synthetic demotion/pause history entries.
61
65
  */
62
- preview(providerId, accountId, basePriority, now = this.now()) {
63
- return this.decide(providerId, accountId, basePriority, now);
66
+ preview(providerId, accountId, basePriority, now = this.now(), resolvedModel) {
67
+ return this.decide(providerId, accountId, basePriority, now, resolvedModel);
64
68
  }
65
- decide(providerId, accountId, basePriority, now) {
69
+ decide(providerId, accountId, basePriority, now, resolvedModel) {
66
70
  const decidedAt = new Date(now).toISOString();
67
71
  const base = {
68
72
  providerId,
@@ -73,12 +77,12 @@ var AccountAllowanceScheduling = class {
73
77
  decidedAt
74
78
  };
75
79
  if (!this.config.enabled) return { ...base, action: "ignore", reason: "policy-disabled" };
76
- if (providerId !== "claude" && providerId !== "codex" && providerId !== "kimi" && providerId !== "opencodego" && providerId !== "grok" && providerId !== "copilot") {
80
+ if (providerId !== "claude" && providerId !== "codex" && providerId !== "kimi" && providerId !== "opencodego" && providerId !== "grok" && providerId !== "copilot" && providerId !== "antigravity") {
77
81
  return { ...base, action: "ignore", reason: "provider-unsupported" };
78
82
  }
79
83
  const snapshot = this.store.get(providerId, accountId, now);
80
84
  if (!snapshot) return { ...base, action: "ignore", reason: "snapshot-missing" };
81
- const worst = freshWorstWindow(snapshot);
85
+ const worst = freshWorstWindow(snapshot, resolvedModel);
82
86
  if (!worst || worst.usedPercent === null) {
83
87
  return { ...base, action: "ignore", reason: "snapshot-not-fresh", observedAt: snapshot.observedAt };
84
88
  }
@@ -0,0 +1,67 @@
1
+ import {
2
+ ANTIGRAVITY_ENDPOINT
3
+ } from "./chunk-ZJJBITUN.js";
4
+
5
+ // src/transformer/transformers/antigravityFailover.ts
6
+ var ANTIGRAVITY_SANDBOX_ENDPOINT = "https://daily-cloudcode-pa.sandbox.googleapis.com";
7
+ var sandboxFailoverEnabled = false;
8
+ function setAntigravitySandboxFailover(enabled) {
9
+ sandboxFailoverEnabled = enabled;
10
+ }
11
+ function isAntigravitySandboxFailoverEnabled() {
12
+ return sandboxFailoverEnabled;
13
+ }
14
+ function __resetAntigravityFailoverState() {
15
+ sandboxFailoverEnabled = false;
16
+ }
17
+ function isAntigravityRetryableFailure(status, bodyText) {
18
+ if (status === null) return true;
19
+ if (status === 429 || status >= 500) return true;
20
+ if (status === 400 || status === 404) {
21
+ const message = (bodyText ?? "").toLowerCase();
22
+ return message.includes("requested model is currently unavailable") || message.includes("requested entity was not found") || message.includes("not found") || message.includes("tool_use") || message.includes("tool_result");
23
+ }
24
+ return false;
25
+ }
26
+ function maybeAntigravityFailoverUrl(failedUrl, status, bodyText, methodPath) {
27
+ if (!sandboxFailoverEnabled) return null;
28
+ if (!isAntigravityRetryableFailure(status, bodyText)) return null;
29
+ let parsed;
30
+ try {
31
+ parsed = new URL(failedUrl);
32
+ } catch {
33
+ return null;
34
+ }
35
+ if (parsed.origin !== ANTIGRAVITY_ENDPOINT) return null;
36
+ const tail = methodPath ?? `${parsed.pathname}${parsed.search}`;
37
+ return `${ANTIGRAVITY_SANDBOX_ENDPOINT}${tail.startsWith("/") ? tail : `/${tail}`}`;
38
+ }
39
+ async function fetchWithAntigravityFailover(url, fetcher, signal) {
40
+ signal?.throwIfAborted();
41
+ let response;
42
+ try {
43
+ response = await fetcher(url);
44
+ } catch (error) {
45
+ signal?.throwIfAborted();
46
+ const fallback2 = maybeAntigravityFailoverUrl(url, null);
47
+ if (!fallback2) throw error;
48
+ return fetcher(fallback2);
49
+ }
50
+ if (!sandboxFailoverEnabled || response.ok) return response;
51
+ const body = response.status === 400 || response.status === 404 ? await response.clone().text().catch(() => "") : void 0;
52
+ const fallback = maybeAntigravityFailoverUrl(url, response.status, body);
53
+ if (!fallback) return response;
54
+ await response.body?.cancel().catch(() => void 0);
55
+ signal?.throwIfAborted();
56
+ return fetcher(fallback);
57
+ }
58
+
59
+ export {
60
+ ANTIGRAVITY_SANDBOX_ENDPOINT,
61
+ setAntigravitySandboxFailover,
62
+ isAntigravitySandboxFailoverEnabled,
63
+ __resetAntigravityFailoverState,
64
+ isAntigravityRetryableFailure,
65
+ maybeAntigravityFailoverUrl,
66
+ fetchWithAntigravityFailover
67
+ };
@@ -0,0 +1,45 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/pipeline/antigravityQuotaFamily.ts
2
+ var ANTIGRAVITY_COUNTER_TO_MODEL_FAMILY = {
3
+ google: "gemini",
4
+ anthropic: "claude",
5
+ openai: "gpt-oss"
6
+ };
7
+ var ANTIGRAVITY_MODEL_TO_COUNTER_FAMILY = {
8
+ gemini: "google",
9
+ claude: "anthropic",
10
+ "gpt-oss": "openai"
11
+ };
12
+ var ANTIGRAVITY_COUNTER_FAMILY_KEYS = [
13
+ "google",
14
+ "anthropic",
15
+ "openai"
16
+ ];
17
+ function antigravityModelFamily(modelId) {
18
+ if (!modelId) return void 0;
19
+ if (modelId.startsWith("claude-")) return "claude";
20
+ if (modelId.startsWith("gpt-oss-")) return "gpt-oss";
21
+ if (modelId.startsWith("gemini-") || modelId.startsWith("tab_")) return "gemini";
22
+ return void 0;
23
+ }
24
+ function antigravityCounterFamilyForModel(modelId) {
25
+ const family = antigravityModelFamily(modelId);
26
+ return family ? ANTIGRAVITY_MODEL_TO_COUNTER_FAMILY[family] : void 0;
27
+ }
28
+ function antigravityCounterFamiliesForBucketId(bucketId, groupName) {
29
+ const bucket = (_nullishCoalesce(bucketId, () => ( ""))).toLowerCase();
30
+ const group = (_nullishCoalesce(groupName, () => ( ""))).toLowerCase();
31
+ if (bucket.startsWith("gemini-") || group.includes("gemini")) return ["google"];
32
+ if (bucket.startsWith("3p-") || group.includes("claude") || group.includes("gpt") || group.includes("third party")) {
33
+ return ["anthropic", "openai"];
34
+ }
35
+ return [];
36
+ }
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ exports.ANTIGRAVITY_COUNTER_TO_MODEL_FAMILY = ANTIGRAVITY_COUNTER_TO_MODEL_FAMILY; exports.ANTIGRAVITY_MODEL_TO_COUNTER_FAMILY = ANTIGRAVITY_MODEL_TO_COUNTER_FAMILY; exports.ANTIGRAVITY_COUNTER_FAMILY_KEYS = ANTIGRAVITY_COUNTER_FAMILY_KEYS; exports.antigravityModelFamily = antigravityModelFamily; exports.antigravityCounterFamilyForModel = antigravityCounterFamilyForModel; exports.antigravityCounterFamiliesForBucketId = antigravityCounterFamiliesForBucketId;
@@ -0,0 +1,24 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/outbound-api/types.ts
2
+ var IMAGE_PROVIDER_IDS = [
3
+ "codex-subscription",
4
+ "antigravity-subscription"
5
+ ];
6
+ var DEFAULT_IMAGE_MODEL_ROUTES = Object.freeze({
7
+ "gpt-image-2": "codex-subscription",
8
+ "gpt-image-2-5": "codex-subscription",
9
+ "gemini-2.5-flash-image": "antigravity-subscription",
10
+ "gemini-2.5-flash-image-preview": "antigravity-subscription",
11
+ "gemini-3.1-flash-image": "antigravity-subscription",
12
+ "gemini-3.1-flash-image-preview": "antigravity-subscription",
13
+ "gemini-3-pro-image-preview": "antigravity-subscription"
14
+ });
15
+ var ENDPOINT_MODEL_KINDS = {
16
+ messages: ["fable", "opus", "sonnet", "haiku"],
17
+ responses: ["codex", "mini"]
18
+ };
19
+
20
+
21
+
22
+
23
+
24
+ exports.IMAGE_PROVIDER_IDS = IMAGE_PROVIDER_IDS; exports.DEFAULT_IMAGE_MODEL_ROUTES = DEFAULT_IMAGE_MODEL_ROUTES; exports.ENDPOINT_MODEL_KINDS = ENDPOINT_MODEL_KINDS;
@@ -1,6 +1,3 @@
1
- import {
2
- GeminiTransformer
3
- } from "./chunk-HN74IGEO.js";
4
1
  import {
5
2
  OpenAIResponseTransformer
6
3
  } from "./chunk-V53ZEFXC.js";
@@ -9,16 +6,23 @@ import {
9
6
  } from "./chunk-7PIUVCKK.js";
10
7
  import {
11
8
  AnthropicTransformer
12
- } from "./chunk-EUZRH544.js";
9
+ } from "./chunk-TKZ3DZS5.js";
10
+ import {
11
+ AntigravityTransformer
12
+ } from "./chunk-ZJJBITUN.js";
13
+ import {
14
+ GeminiTransformer
15
+ } from "./chunk-OXBGNEYR.js";
13
16
  import {
14
17
  GeminiCodeAssistTransformer
15
- } from "./chunk-5GXOYVLB.js";
18
+ } from "./chunk-QSOHEDKO.js";
16
19
 
17
20
  // src/transformer/transformers/index.ts
18
21
  var BuiltinTransformers = {
19
22
  OpenAITransformer,
20
23
  GeminiTransformer,
21
24
  GeminiCodeAssistTransformer,
25
+ AntigravityTransformer,
22
26
  AnthropicTransformer,
23
27
  OpenAIResponseTransformer
24
28
  };
@@ -29,6 +33,7 @@ var BUILTIN_TRANSFORMER_NAMES = [
29
33
  "openai",
30
34
  "gemini",
31
35
  "gemini-code-assist",
36
+ "antigravity",
32
37
  "anthropic",
33
38
  "openai-response"
34
39
  ];
@@ -3,48 +3,16 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkWX2E2G7Hcjs = require('./chunk-WX2E2G7H.cjs');
6
+ var _chunk4NAMH4UEcjs = require('./chunk-4NAMH4UE.cjs');
7
7
 
8
- // src/transformer/transformers/GeminiCodeAssistTransformer.ts
9
- var DEFAULT_CODE_ASSIST_ENDPOINT = "https://cloudcode-pa.googleapis.com";
10
- var DEFAULT_CODE_ASSIST_API_VERSION = "v1internal";
11
- function resolveCodeAssistEndpoint() {
12
- return (process.env.CODE_ASSIST_ENDPOINT || DEFAULT_CODE_ASSIST_ENDPOINT).replace(/\/+$/, "");
13
- }
14
- function resolveCodeAssistApiVersion() {
15
- return process.env.CODE_ASSIST_API_VERSION || DEFAULT_CODE_ASSIST_API_VERSION;
16
- }
17
- var DEFAULT_GEMINI_CLI_VERSION = "0.46.0";
18
- function getGeminiCliUserAgent(modelId = "gemini-3.1-pro-preview") {
19
- const version = process.env.GEMINI_CLI_VERSION || DEFAULT_GEMINI_CLI_VERSION;
20
- const platform = process.platform === "win32" ? "win32" : process.platform;
21
- const arch = process.arch === "x64" ? "x64" : process.arch;
22
- return `GeminiCLI/${version}/${modelId} (${platform}; ${arch}; terminal)`;
23
- }
24
- function getGeminiCliIdentityHeaders(modelId) {
25
- return {
26
- "User-Agent": getGeminiCliUserAgent(modelId),
27
- "Client-Metadata": "ideType=IDE_UNSPECIFIED,platform=PLATFORM_UNSPECIFIED,pluginType=GEMINI"
28
- };
29
- }
30
- function buildCodeAssistUrl(stream) {
31
- const base = resolveCodeAssistEndpoint();
32
- const version = resolveCodeAssistApiVersion();
33
- const method = stream ? "streamGenerateContent?alt=sse" : "generateContent";
34
- return `${base}/${version}:${method}`;
35
- }
36
- function generateUserPromptId() {
37
- const c = globalThis.crypto;
38
- if (_optionalChain([c, 'optionalAccess', _ => _.randomUUID])) return c.randomUUID();
39
- return `omnicross-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
40
- }
41
- function peelResponseEnvelope(parsed) {
8
+ // src/transformer/transformers/ccaEnvelope.ts
9
+ function peelCcaResponseEnvelope(parsed) {
42
10
  if (parsed && typeof parsed === "object" && "response" in parsed) {
43
11
  return parsed.response;
44
12
  }
45
13
  return parsed;
46
14
  }
47
- async function unwrapCodeAssistResponse(response) {
15
+ async function unwrapCcaResponse(response) {
48
16
  const contentType = _nullishCoalesce(response.headers.get("Content-Type"), () => ( ""));
49
17
  if (contentType.includes("stream") || contentType.includes("text/event-stream")) {
50
18
  const sourceBody = response.body;
@@ -69,7 +37,7 @@ async function unwrapCodeAssistResponse(response) {
69
37
  }
70
38
  try {
71
39
  const parsed = JSON.parse(payload);
72
- const inner2 = peelResponseEnvelope(parsed);
40
+ const inner2 = peelCcaResponseEnvelope(parsed);
73
41
  controller.enqueue(encoder.encode(`data: ${JSON.stringify(inner2)}
74
42
  `));
75
43
  } catch (e) {
@@ -103,13 +71,48 @@ async function unwrapCodeAssistResponse(response) {
103
71
  });
104
72
  }
105
73
  const raw = await response.json().catch(() => null);
106
- const inner = peelResponseEnvelope(raw);
74
+ const inner = peelCcaResponseEnvelope(raw);
107
75
  return new Response(JSON.stringify(inner), {
108
76
  status: response.status,
109
77
  statusText: response.statusText,
110
78
  headers: response.headers
111
79
  });
112
80
  }
81
+ function buildCcaMethodUrl(base, version, stream) {
82
+ const method = stream ? "streamGenerateContent?alt=sse" : "generateContent";
83
+ return `${base}/${version}:${method}`;
84
+ }
85
+
86
+ // src/transformer/transformers/GeminiCodeAssistTransformer.ts
87
+ var DEFAULT_CODE_ASSIST_ENDPOINT = "https://cloudcode-pa.googleapis.com";
88
+ var DEFAULT_CODE_ASSIST_API_VERSION = "v1internal";
89
+ function resolveCodeAssistEndpoint() {
90
+ return (process.env.CODE_ASSIST_ENDPOINT || DEFAULT_CODE_ASSIST_ENDPOINT).replace(/\/+$/, "");
91
+ }
92
+ function resolveCodeAssistApiVersion() {
93
+ return process.env.CODE_ASSIST_API_VERSION || DEFAULT_CODE_ASSIST_API_VERSION;
94
+ }
95
+ var DEFAULT_GEMINI_CLI_VERSION = "0.46.0";
96
+ function getGeminiCliUserAgent(modelId = "gemini-3.1-pro-preview") {
97
+ const version = process.env.GEMINI_CLI_VERSION || DEFAULT_GEMINI_CLI_VERSION;
98
+ const platform = process.platform === "win32" ? "win32" : process.platform;
99
+ const arch = process.arch === "x64" ? "x64" : process.arch;
100
+ return `GeminiCLI/${version}/${modelId} (${platform}; ${arch}; terminal)`;
101
+ }
102
+ function getGeminiCliIdentityHeaders(modelId) {
103
+ return {
104
+ "User-Agent": getGeminiCliUserAgent(modelId),
105
+ "Client-Metadata": "ideType=IDE_UNSPECIFIED,platform=PLATFORM_UNSPECIFIED,pluginType=GEMINI"
106
+ };
107
+ }
108
+ function buildCodeAssistUrl(stream) {
109
+ return buildCcaMethodUrl(resolveCodeAssistEndpoint(), resolveCodeAssistApiVersion(), stream);
110
+ }
111
+ function generateUserPromptId() {
112
+ const c = globalThis.crypto;
113
+ if (_optionalChain([c, 'optionalAccess', _ => _.randomUUID])) return c.randomUUID();
114
+ return `omnicross-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
115
+ }
113
116
  var GeminiCodeAssistTransformer = (_class = class {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this); }
114
117
  static __initStatic() {this.TransformerName = "gemini-code-assist"}
115
118
  __init() {this.name = "gemini-code-assist"}
@@ -130,7 +133,7 @@ var GeminiCodeAssistTransformer = (_class = class {constructor() { _class.protot
130
133
  * openaiResponsesIngress). `undefined` is the valid fresh free-tier value.
131
134
  */
132
135
  async transformRequestIn(request, provider, _context) {
133
- const inner = _chunkWX2E2G7Hcjs.buildRequestBody.call(void 0, request, provider);
136
+ const inner = _chunk4NAMH4UEcjs.buildRequestBody.call(void 0, request, provider);
134
137
  const envelope = {
135
138
  model: request.model,
136
139
  project: provider.geminiProject,
@@ -161,15 +164,15 @@ var GeminiCodeAssistTransformer = (_class = class {constructor() { _class.protot
161
164
  if (inner && typeof inner === "object" && !("model" in inner) && "model" in r) {
162
165
  inner.model = r.model;
163
166
  }
164
- return _chunkWX2E2G7Hcjs.transformRequestOut.call(void 0, inner);
167
+ return _chunk4NAMH4UEcjs.transformRequestOut.call(void 0, inner);
165
168
  }
166
169
  /**
167
170
  * Code Assist response → OpenAI-compatible. PEEL the `.response` envelope from
168
171
  * the body / each SSE chunk, then DELEGATE to the existing gemini parser.
169
172
  */
170
173
  async transformResponseOut(response, _context) {
171
- const unwrapped = await unwrapCodeAssistResponse(response);
172
- return _chunkWX2E2G7Hcjs.transformResponseOut.call(void 0, unwrapped, this.name, this.logger);
174
+ const unwrapped = await unwrapCcaResponse(response);
175
+ return _chunk4NAMH4UEcjs.transformResponseOut.call(void 0, unwrapped, this.name, this.logger);
173
176
  }
174
177
  /**
175
178
  * OpenAI-compatible response → Code Assist (endpoint-encode parity). Re-wraps
@@ -178,7 +181,7 @@ var GeminiCodeAssistTransformer = (_class = class {constructor() { _class.protot
178
181
  * `transformResponseOut`'s peel.
179
182
  */
180
183
  async transformResponseIn(response, _context) {
181
- const geminiResponse = await _chunkWX2E2G7Hcjs.transformResponseIn.call(void 0, response, this.logger);
184
+ const geminiResponse = await _chunk4NAMH4UEcjs.transformResponseIn.call(void 0, response, this.logger);
182
185
  const contentType = _nullishCoalesce(geminiResponse.headers.get("Content-Type"), () => ( ""));
183
186
  if (contentType.includes("text/event-stream")) {
184
187
  return geminiResponse;
@@ -199,4 +202,6 @@ var GeminiCodeAssistTransformer = (_class = class {constructor() { _class.protot
199
202
 
200
203
 
201
204
 
202
- exports.resolveCodeAssistEndpoint = resolveCodeAssistEndpoint; exports.resolveCodeAssistApiVersion = resolveCodeAssistApiVersion; exports.getGeminiCliUserAgent = getGeminiCliUserAgent; exports.getGeminiCliIdentityHeaders = getGeminiCliIdentityHeaders; exports.buildCodeAssistUrl = buildCodeAssistUrl; exports.GeminiCodeAssistTransformer = GeminiCodeAssistTransformer;
205
+
206
+
207
+ exports.unwrapCcaResponse = unwrapCcaResponse; exports.buildCcaMethodUrl = buildCcaMethodUrl; exports.resolveCodeAssistEndpoint = resolveCodeAssistEndpoint; exports.resolveCodeAssistApiVersion = resolveCodeAssistApiVersion; exports.getGeminiCliUserAgent = getGeminiCliUserAgent; exports.getGeminiCliIdentityHeaders = getGeminiCliIdentityHeaders; exports.buildCodeAssistUrl = buildCodeAssistUrl; exports.GeminiCodeAssistTransformer = GeminiCodeAssistTransformer;
@@ -0,0 +1,44 @@
1
+ import {
2
+ flattenHeaderValue
3
+ } from "./chunk-ONTTXSRL.js";
4
+
5
+ // src/provider-proxy/identity/openCodeGoHeaders.ts
6
+ var OPENCODE_SESSION_HEADER = "x-opencode-session";
7
+ var configuredUserAgent;
8
+ function setOpenCodeGoUserAgent(userAgent) {
9
+ const trimmed = typeof userAgent === "string" ? userAgent.trim() : "";
10
+ configuredUserAgent = trimmed.length > 0 ? trimmed : void 0;
11
+ }
12
+ function getOpenCodeGoUserAgent() {
13
+ if (configuredUserAgent) return configuredUserAgent;
14
+ const version = true ? "0.4.4" : "0.0.0-dev";
15
+ return `omnicross/${version}`;
16
+ }
17
+ function extractOpenCodeSessionHeader(reqHeaders) {
18
+ for (const [rawKey, rawVal] of Object.entries(reqHeaders)) {
19
+ if (rawKey.toLowerCase() !== OPENCODE_SESSION_HEADER) continue;
20
+ const value = flattenHeaderValue(rawVal);
21
+ if (value === void 0) continue;
22
+ const trimmed = value.trim();
23
+ if (trimmed.length > 0) return trimmed;
24
+ }
25
+ return void 0;
26
+ }
27
+ function resolveOpenCodeSessionHeader(callerSession, sessionKey) {
28
+ const caller = typeof callerSession === "string" ? callerSession.trim() : "";
29
+ if (caller.length > 0) return caller;
30
+ if (typeof sessionKey === "string" && sessionKey.trim().length > 0) return sessionKey;
31
+ return void 0;
32
+ }
33
+ function __resetOpenCodeGoHeadersForTests() {
34
+ configuredUserAgent = void 0;
35
+ }
36
+
37
+ export {
38
+ OPENCODE_SESSION_HEADER,
39
+ setOpenCodeGoUserAgent,
40
+ getOpenCodeGoUserAgent,
41
+ extractOpenCodeSessionHeader,
42
+ resolveOpenCodeSessionHeader,
43
+ __resetOpenCodeGoHeadersForTests
44
+ };
@@ -0,0 +1,230 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
+
3
+
4
+ var _chunkN3MGNLCUcjs = require('./chunk-N3MGNLCU.cjs');
5
+
6
+
7
+ var _chunkVFFCV4J6cjs = require('./chunk-VFFCV4J6.cjs');
8
+
9
+ // src/auth/GeminiCodeAssistProjectResolver.ts
10
+ var FREE_TIER_ID = "free-tier";
11
+ var LEGACY_TIER_ID = "legacy-tier";
12
+ var ONBOARD_POLL_INTERVAL_MS = 5e3;
13
+ var ONBOARD_MAX_POLLS = 24;
14
+ var GeminiCodeAssistHandshakeError = class extends Error {
15
+ constructor(message, status, code) {
16
+ super(message);
17
+ this.status = status;
18
+ this.code = code;
19
+ this.name = "GeminiCodeAssistHandshakeError";
20
+ }
21
+
22
+
23
+ };
24
+ var ANTIGRAVITY_CODE_ASSIST_ENDPOINT = "https://daily-cloudcode-pa.googleapis.com";
25
+ var GeminiCodeAssistProjectResolver = (_class = class {
26
+ /** account access token → resolved project id (undefined = free-tier, no project). */
27
+ __init() {this.cache = /* @__PURE__ */ new Map()}
28
+ /** In-flight handshakes so concurrent callers share one round-trip. */
29
+ __init2() {this.inflight = /* @__PURE__ */ new Map()}
30
+
31
+
32
+ // upstream-proxy: the Code Assist handshake is upstream egress → honor the
33
+ // dialect's proxy layer by default (still injectable for tests).
34
+ constructor(fetchImpl, options = {}) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
35
+ this.dialect = _nullishCoalesce(options.dialect, () => ( "gemini-cli"));
36
+ this.endpoint = options.endpoint;
37
+ const providerId = _nullishCoalesce(options.proxyProviderId, () => ( "gemini"));
38
+ this.fetchImpl = _nullishCoalesce(fetchImpl, () => ( ((url, init) => _chunkVFFCV4J6cjs.fetchUpstream.call(void 0, url, init, { providerId }))));
39
+ }
40
+
41
+ /** Test/diagnostic helper — clear the cached resolution for an account. */
42
+ clearCache() {
43
+ this.cache.clear();
44
+ this.inflight.clear();
45
+ }
46
+ /**
47
+ * Resolve (and cache) the Code Assist project for the given access token.
48
+ * Runs the handshake at most once per token. Returns `undefined` for a
49
+ * brand-new free-tier account (valid — the envelope sends no project).
50
+ */
51
+ async resolveProject(accessToken) {
52
+ if (this.cache.has(accessToken)) {
53
+ return this.cache.get(accessToken);
54
+ }
55
+ const existing = this.inflight.get(accessToken);
56
+ if (existing) return existing;
57
+ const run = this.runHandshake(accessToken).then((project) => {
58
+ this.cache.set(accessToken, project);
59
+ return project;
60
+ }).finally(() => {
61
+ this.inflight.delete(accessToken);
62
+ });
63
+ this.inflight.set(accessToken, run);
64
+ return run;
65
+ }
66
+ codeAssistUrl(method) {
67
+ const base = _nullishCoalesce(this.endpoint, () => ( _chunkN3MGNLCUcjs.resolveCodeAssistEndpoint.call(void 0, )));
68
+ return `${base}/${_chunkN3MGNLCUcjs.resolveCodeAssistApiVersion.call(void 0, )}:${method}`;
69
+ }
70
+ /** The client metadata the dialect's upstream expects on the handshake calls. */
71
+ handshakeMetadata(project) {
72
+ if (this.dialect === "antigravity") {
73
+ return { ideType: "ANTIGRAVITY" };
74
+ }
75
+ return {
76
+ ideType: "IDE_UNSPECIFIED",
77
+ platform: "PLATFORM_UNSPECIFIED",
78
+ pluginType: "GEMINI",
79
+ duetProject: project
80
+ };
81
+ }
82
+ /** The tier id used when `allowedTiers` carries no default. */
83
+ get fallbackTierId() {
84
+ return this.dialect === "antigravity" ? FREE_TIER_ID : LEGACY_TIER_ID;
85
+ }
86
+ /** Seed project id from env; reject a purely-numeric value (project NUMBER). */
87
+ seedProjectId() {
88
+ const seed = process.env.GOOGLE_CLOUD_PROJECT || process.env.GOOGLE_CLOUD_PROJECT_ID || "";
89
+ if (seed && /^\d+$/.test(seed.trim())) return "";
90
+ return seed.trim();
91
+ }
92
+ async runHandshake(accessToken) {
93
+ const seededProject = this.seedProjectId();
94
+ const load = await this.postCodeAssist("loadCodeAssist", accessToken, {
95
+ cloudaicompanionProject: seededProject || void 0,
96
+ metadata: this.handshakeMetadata(seededProject || void 0)
97
+ });
98
+ if (_optionalChain([load, 'access', _ => _.currentTier, 'optionalAccess', _2 => _2.id])) {
99
+ return this.settleProject(load.cloudaicompanionProject || void 0);
100
+ }
101
+ const defaultTier = _optionalChain([load, 'access', _3 => _3.allowedTiers, 'optionalAccess', _4 => _4.find, 'call', _5 => _5((t) => t.isDefault)]);
102
+ const tierId = _nullishCoalesce(_optionalChain([defaultTier, 'optionalAccess', _6 => _6.id]), () => ( this.fallbackTierId));
103
+ const isFreeish = tierId === FREE_TIER_ID || tierId === LEGACY_TIER_ID;
104
+ const onboardProject = isFreeish ? void 0 : seededProject || void 0;
105
+ let lro = await this.postCodeAssist("onboardUser", accessToken, {
106
+ tierId,
107
+ cloudaicompanionProject: onboardProject,
108
+ metadata: this.handshakeMetadata(onboardProject)
109
+ });
110
+ let polls = 0;
111
+ while (!lro.done && polls < ONBOARD_MAX_POLLS) {
112
+ await delay(ONBOARD_POLL_INTERVAL_MS);
113
+ polls++;
114
+ lro = await this.getOperation(accessToken, lro.name);
115
+ }
116
+ if (lro.error) {
117
+ throw new GeminiCodeAssistHandshakeError(
118
+ `Code Assist onboardUser failed: ${_nullishCoalesce(lro.error.message, () => ( "unknown"))}`,
119
+ _nullishCoalesce(lro.error.code, () => ( 500))
120
+ );
121
+ }
122
+ return this.settleProject(_optionalChain([lro, 'access', _7 => _7.response, 'optionalAccess', _8 => _8.cloudaicompanionProject, 'optionalAccess', _9 => _9.id]) || void 0);
123
+ }
124
+ /**
125
+ * Final project settlement per dialect: gemini-cli treats `undefined` as the
126
+ * valid fresh free-tier value; antigravity ALWAYS carries a project (its
127
+ * envelope is rejected without one), so an absent project is a hard error.
128
+ */
129
+ settleProject(project) {
130
+ if (project === void 0 && this.dialect === "antigravity") {
131
+ throw new GeminiCodeAssistHandshakeError(
132
+ "Code Assist loadCodeAssist did not return a cloudaicompanionProject (antigravity requires one)",
133
+ 502
134
+ );
135
+ }
136
+ return project;
137
+ }
138
+ /** POST a Code Assist method, surfacing the documented hard failures clearly. */
139
+ async postCodeAssist(method, accessToken, body) {
140
+ const url = this.codeAssistUrl(method);
141
+ const res = await this.fetchImpl(url, {
142
+ method: "POST",
143
+ headers: {
144
+ Authorization: `Bearer ${accessToken}`,
145
+ "Content-Type": "application/json"
146
+ },
147
+ body: JSON.stringify(body)
148
+ });
149
+ if (!res.ok) {
150
+ await this.throwForStatus(res, method);
151
+ }
152
+ return await res.json();
153
+ }
154
+ async getOperation(accessToken, name) {
155
+ const url = this.codeAssistUrl("getOperation");
156
+ const res = await this.fetchImpl(url, {
157
+ method: "POST",
158
+ headers: {
159
+ Authorization: `Bearer ${accessToken}`,
160
+ "Content-Type": "application/json"
161
+ },
162
+ body: JSON.stringify({ name })
163
+ });
164
+ if (!res.ok) {
165
+ await this.throwForStatus(res, "getOperation");
166
+ }
167
+ return await res.json();
168
+ }
169
+ /** Map a non-2xx Code Assist response to a clear, surfaced error. */
170
+ async throwForStatus(res, method) {
171
+ let detailCode;
172
+ let detailMessage = "";
173
+ try {
174
+ const errBody = await res.json();
175
+ detailCode = _optionalChain([errBody, 'access', _10 => _10.error, 'optionalAccess', _11 => _11.status]);
176
+ detailMessage = _nullishCoalesce(_optionalChain([errBody, 'access', _12 => _12.error, 'optionalAccess', _13 => _13.message]), () => ( ""));
177
+ } catch (e) {
178
+ }
179
+ if (res.status === 403) {
180
+ throw new GeminiCodeAssistHandshakeError(
181
+ `Code Assist ${method} denied (403 ${_nullishCoalesce(detailCode, () => ( "PERMISSION_DENIED"))}): ${detailMessage || "enable the Cloud AI Companion API and grant the required role"}`,
182
+ 403,
183
+ detailCode
184
+ );
185
+ }
186
+ if (res.status === 429) {
187
+ throw new GeminiCodeAssistHandshakeError(
188
+ `Code Assist ${method} rate-limited (429): ${detailMessage || "quota exceeded, retry later"}`,
189
+ 429,
190
+ detailCode
191
+ );
192
+ }
193
+ throw new GeminiCodeAssistHandshakeError(
194
+ `Code Assist ${method} failed (${res.status}): ${detailMessage || res.statusText}`,
195
+ res.status,
196
+ detailCode
197
+ );
198
+ }
199
+ }, _class);
200
+ function delay(ms) {
201
+ return new Promise((resolve) => {
202
+ setTimeout(resolve, ms);
203
+ });
204
+ }
205
+ var _resolverSingleton = null;
206
+ function getGeminiCodeAssistProjectResolver() {
207
+ if (!_resolverSingleton) {
208
+ _resolverSingleton = new GeminiCodeAssistProjectResolver();
209
+ }
210
+ return _resolverSingleton;
211
+ }
212
+ var _antigravityResolverSingleton = null;
213
+ function getAntigravityProjectResolver() {
214
+ if (!_antigravityResolverSingleton) {
215
+ _antigravityResolverSingleton = new GeminiCodeAssistProjectResolver(void 0, {
216
+ endpoint: ANTIGRAVITY_CODE_ASSIST_ENDPOINT,
217
+ dialect: "antigravity",
218
+ proxyProviderId: "antigravity"
219
+ });
220
+ }
221
+ return _antigravityResolverSingleton;
222
+ }
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+ exports.GeminiCodeAssistHandshakeError = GeminiCodeAssistHandshakeError; exports.ANTIGRAVITY_CODE_ASSIST_ENDPOINT = ANTIGRAVITY_CODE_ASSIST_ENDPOINT; exports.GeminiCodeAssistProjectResolver = GeminiCodeAssistProjectResolver; exports.getGeminiCodeAssistProjectResolver = getGeminiCodeAssistProjectResolver; exports.getAntigravityProjectResolver = getAntigravityProjectResolver;