@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.
- package/dist/auth/GeminiCodeAssistProjectResolver.cjs +11 -184
- package/dist/auth/GeminiCodeAssistProjectResolver.d.cts +41 -3
- package/dist/auth/GeminiCodeAssistProjectResolver.d.ts +41 -3
- package/dist/auth/GeminiCodeAssistProjectResolver.js +12 -185
- package/dist/{chunk-POUTD5AM.cjs → chunk-47E3I5PF.cjs} +10 -3
- package/dist/chunk-4LSZ7NFM.js +50 -0
- package/dist/{chunk-WX2E2G7H.cjs → chunk-4NAMH4UE.cjs} +79 -51
- package/dist/{chunk-LQYS2N47.js → chunk-4RM22ETG.js} +14 -2
- package/dist/{chunk-YEVWA4C7.cjs → chunk-57Y2EA2G.cjs} +6 -5
- package/dist/chunk-6I4SAWCN.js +24 -0
- package/dist/{chunk-KIQ2HA2A.cjs → chunk-BTSADEX4.cjs} +5 -5
- package/dist/chunk-CGEZQC2G.cjs +67 -0
- package/dist/chunk-E5RCCGE7.cjs +95 -0
- package/dist/chunk-EE7VP4O3.js +230 -0
- package/dist/chunk-F6P4DIBL.js +95 -0
- package/dist/{chunk-BKXC4XM6.cjs → chunk-FORICQ5U.cjs} +15 -11
- package/dist/{chunk-PF7YQBKX.js → chunk-FYPKKMB3.js} +6 -2
- package/dist/chunk-GWC7HCZI.cjs +44 -0
- package/dist/{chunk-LFEH7CEO.js → chunk-IDPMD4B7.js} +22 -0
- package/dist/{chunk-UPQIWJIE.cjs → chunk-INY54AYX.cjs} +14 -2
- package/dist/{chunk-C3NPMQTK.js → chunk-JHJRZ75C.js} +14 -10
- package/dist/chunk-K6J2RIEX.js +67 -0
- package/dist/chunk-KSMK45RD.cjs +45 -0
- package/dist/chunk-LL3MZ7O5.cjs +24 -0
- package/dist/{chunk-PAXJGABW.js → chunk-MPFOC7AT.js} +10 -5
- package/dist/{chunk-DKBXDV5U.cjs → chunk-N3MGNLCU.cjs} +49 -44
- package/dist/chunk-NCZDUBC2.js +44 -0
- package/dist/chunk-NDIBVTBZ.cjs +230 -0
- package/dist/{chunk-5DJSOFEP.js → chunk-NTF7TLT7.js} +1 -1
- package/dist/chunk-ONTTXSRL.js +32 -0
- package/dist/{chunk-HN74IGEO.js → chunk-OXBGNEYR.js} +1 -1
- package/dist/{chunk-5GXOYVLB.js → chunk-QSOHEDKO.js} +44 -39
- package/dist/{chunk-QEOV6Y4E.cjs → chunk-RX3BCX53.cjs} +359 -170
- package/dist/{chunk-TX3AEV6H.cjs → chunk-RXMF7GNF.cjs} +4 -3
- package/dist/chunk-SQU2FGXI.cjs +50 -0
- package/dist/{chunk-EUZRH544.js → chunk-TKZ3DZS5.js} +10 -3
- package/dist/{chunk-MXI2PWIC.cjs → chunk-UKQHBK4Q.cjs} +1 -32
- package/dist/{chunk-3XVDFRCQ.cjs → chunk-UOOLU64V.cjs} +13 -8
- package/dist/{chunk-ZSA44G7J.cjs → chunk-VFFCV4J6.cjs} +3 -3
- package/dist/{chunk-6DDYNS2B.cjs → chunk-VGBJPHHD.cjs} +36 -14
- package/dist/{chunk-2T6D7LWE.cjs → chunk-VYOBVPNB.cjs} +6 -2
- package/dist/chunk-X6GHTNDL.cjs +482 -0
- package/dist/chunk-XBQTVRMK.js +45 -0
- package/dist/{chunk-R4VCO2CB.js → chunk-YEHQ5FXZ.js} +28 -0
- package/dist/{chunk-5TEWZN5J.js → chunk-YV4JSBPA.js} +278 -89
- package/dist/{chunk-HDXSPXIN.js → chunk-ZBDDPWVQ.js} +4 -3
- package/dist/chunk-ZJJBITUN.js +482 -0
- package/dist/{chunk-QRXOLINS.js → chunk-ZMERU7D3.js} +3 -2
- package/dist/completion/CompletionService.cjs +29 -22
- package/dist/completion/CompletionService.js +28 -21
- package/dist/completion.cjs +29 -22
- package/dist/completion.js +28 -21
- package/dist/image-generation.cjs +2 -2
- package/dist/image-generation.d.cts +2 -2
- package/dist/image-generation.d.ts +2 -2
- package/dist/image-generation.js +1 -1
- package/dist/index.cjs +40 -29
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +40 -29
- package/dist/outbound-api/routeResolver.cjs +3 -3
- package/dist/outbound-api/routeResolver.d.cts +3 -3
- package/dist/outbound-api/routeResolver.d.ts +3 -3
- package/dist/outbound-api/routeResolver.js +2 -2
- package/dist/outbound-api/types.cjs +6 -2
- package/dist/outbound-api/types.d.cts +2 -2
- package/dist/outbound-api/types.d.ts +2 -2
- package/dist/outbound-api/types.js +7 -3
- package/dist/outbound-api.cjs +33 -22
- package/dist/outbound-api.d.cts +4 -4
- package/dist/outbound-api.d.ts +4 -4
- package/dist/outbound-api.js +33 -22
- package/dist/pipeline/AccountAllowanceScheduling.cjs +4 -3
- package/dist/pipeline/AccountAllowanceScheduling.d.cts +4 -4
- package/dist/pipeline/AccountAllowanceScheduling.d.ts +4 -4
- package/dist/pipeline/AccountAllowanceScheduling.js +3 -2
- package/dist/pipeline/AccountAllowanceStore.cjs +2 -2
- package/dist/pipeline/AccountAllowanceStore.js +1 -1
- package/dist/pipeline/AuthSource.d.cts +6 -0
- package/dist/pipeline/AuthSource.d.ts +6 -0
- package/dist/pipeline/SubscriptionAuthSource.cjs +5 -4
- package/dist/pipeline/SubscriptionAuthSource.js +4 -3
- package/dist/pipeline/SubscriptionAuthStrategy.d.cts +7 -0
- package/dist/pipeline/SubscriptionAuthStrategy.d.ts +7 -0
- package/dist/pipeline/antigravityQuotaFamily.cjs +16 -0
- package/dist/pipeline/antigravityQuotaFamily.d.cts +52 -0
- package/dist/pipeline/antigravityQuotaFamily.d.ts +52 -0
- package/dist/pipeline/antigravityQuotaFamily.js +16 -0
- package/dist/pipeline/upstreamFetch.cjs +3 -3
- package/dist/pipeline/upstreamFetch.js +2 -2
- package/dist/ports.d.cts +2 -2
- package/dist/ports.d.ts +2 -2
- package/dist/provider-proxy/ProviderProxy.cjs +29 -22
- package/dist/provider-proxy/ProviderProxy.js +28 -21
- package/dist/provider-proxy/identity/codexCliHeaders.cjs +8 -2
- package/dist/provider-proxy/identity/codexCliHeaders.d.cts +36 -7
- package/dist/provider-proxy/identity/codexCliHeaders.d.ts +36 -7
- package/dist/provider-proxy/identity/codexCliHeaders.js +7 -1
- package/dist/provider-proxy/identity/openCodeGoHeaders.cjs +17 -0
- package/dist/provider-proxy/identity/openCodeGoHeaders.d.cts +71 -0
- package/dist/provider-proxy/identity/openCodeGoHeaders.d.ts +71 -0
- package/dist/provider-proxy/identity/openCodeGoHeaders.js +17 -0
- package/dist/provider-proxy/ingress/providerProxyShared.cjs +29 -22
- package/dist/provider-proxy/ingress/providerProxyShared.js +28 -21
- package/dist/provider-proxy.cjs +29 -22
- package/dist/provider-proxy.d.cts +2 -2
- package/dist/provider-proxy.d.ts +2 -2
- package/dist/provider-proxy.js +28 -21
- package/dist/{routeResolver-STwMz_G4.d.ts → routeResolver-BLTleO4H.d.ts} +1 -1
- package/dist/{routeResolver-Da0yvkL1.d.cts → routeResolver-C2z0pp-q.d.cts} +1 -1
- package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.cjs +2 -2
- package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.js +1 -1
- package/dist/transformer/transformers/AnthropicTransformer.cjs +3 -3
- package/dist/transformer/transformers/AnthropicTransformer.js +2 -2
- package/dist/transformer/transformers/AntigravityTransformer.cjs +31 -0
- package/dist/transformer/transformers/AntigravityTransformer.d.cts +104 -0
- package/dist/transformer/transformers/AntigravityTransformer.d.ts +104 -0
- package/dist/transformer/transformers/AntigravityTransformer.js +31 -0
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +3 -3
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.cts +2 -1
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.d.ts +2 -1
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +2 -2
- package/dist/transformer/transformers/GeminiTransformer.cjs +3 -3
- package/dist/transformer/transformers/GeminiTransformer.js +2 -2
- package/dist/transformer/transformers/antigravityFailover.cjs +30 -0
- package/dist/transformer/transformers/antigravityFailover.d.cts +52 -0
- package/dist/transformer/transformers/antigravityFailover.d.ts +52 -0
- package/dist/transformer/transformers/antigravityFailover.js +30 -0
- package/dist/transformer/transformers/antigravityIdentity.cjs +24 -0
- package/dist/transformer/transformers/antigravityIdentity.d.cts +76 -0
- package/dist/transformer/transformers/antigravityIdentity.d.ts +76 -0
- package/dist/transformer/transformers/antigravityIdentity.js +24 -0
- package/dist/transformer/transformers.cjs +61 -9
- package/dist/transformer/transformers.d.cts +7 -2
- package/dist/transformer/transformers.d.ts +7 -2
- package/dist/transformer/transformers.js +61 -9
- package/dist/transformer/types.d.cts +11 -0
- package/dist/transformer/types.d.ts +11 -0
- package/dist/transformer.cjs +21 -12
- package/dist/transformer.d.cts +3 -0
- package/dist/transformer.d.ts +3 -0
- package/dist/transformer.js +20 -11
- package/dist/{types-Be-yt_6T.d.cts → types-BVwJQ9ZS.d.cts} +3 -0
- package/dist/{types-D-oHYusb.d.cts → types-C6m-Db26.d.cts} +25 -4
- package/dist/{types-Dvlpjn0d.d.ts → types-Da735j2d.d.ts} +25 -4
- package/dist/{types-Dm4_36V4.d.ts → types-VAHRysdP.d.ts} +3 -0
- package/package.json +2 -2
- package/dist/chunk-4IH4EL7M.cjs +0 -9
- package/dist/chunk-ECZ3ZE2C.js +0 -63
- package/dist/chunk-XEKD23J5.js +0 -9
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
|
+
|
|
3
|
+
var _chunkVFFCV4J6cjs = require('./chunk-VFFCV4J6.cjs');
|
|
4
|
+
|
|
5
|
+
// src/transformer/transformers/antigravityIdentity.ts
|
|
6
|
+
var DEFAULT_ANTIGRAVITY_VERSION = "2.8.0";
|
|
7
|
+
var ANTIGRAVITY_VERSION_MANIFEST_URL = "https://antigravity-hub-auto-updater-974169037036.us-central1.run.app/manifest/latest-arm64-mac.yml";
|
|
8
|
+
var ANTIGRAVITY_VERSION_FETCH_TIMEOUT_MS = 5e3;
|
|
9
|
+
var discoveredAntigravityVersion = null;
|
|
10
|
+
var antigravityVersionFetch = null;
|
|
11
|
+
var nextVersionProbeAt = 0;
|
|
12
|
+
function __resetAntigravityVersionCache() {
|
|
13
|
+
discoveredAntigravityVersion = null;
|
|
14
|
+
antigravityVersionFetch = null;
|
|
15
|
+
nextVersionProbeAt = 0;
|
|
16
|
+
}
|
|
17
|
+
function getAntigravityVersion() {
|
|
18
|
+
return process.env["ANTIGRAVITY_VERSION"] || discoveredAntigravityVersion || DEFAULT_ANTIGRAVITY_VERSION;
|
|
19
|
+
}
|
|
20
|
+
function parseAntigravityManifestVersion(yamlText) {
|
|
21
|
+
for (const line of yamlText.split(/\r?\n/)) {
|
|
22
|
+
const match = /^\s*version\s*:\s*(?:"([^"]*)"|'([^']*)'|([^\s#]+))\s*(?:#.*)?$/.exec(line);
|
|
23
|
+
if (!match) continue;
|
|
24
|
+
const version = (_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(match[1], () => ( match[2])), () => ( match[3])), () => ( ""))).trim();
|
|
25
|
+
return /^\d+\.\d+\.\d+$/.test(version) ? version : null;
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
function ensureAntigravityVersion(fetcher = (url, init) => _chunkVFFCV4J6cjs.fetchUpstream.call(void 0, url, _nullishCoalesce(init, () => ( {})), { providerId: "antigravity", redactBodies: true }), signal) {
|
|
30
|
+
if (["ANTIGRAVITY_VERSION", "ANTIGRAVITY_CL", "ANTIGRAVITY_OS", "ANTIGRAVITY_ARCH"].some((key) => process.env[key])) return Promise.resolve();
|
|
31
|
+
if (antigravityVersionFetch) return antigravityVersionFetch;
|
|
32
|
+
if (Date.now() < nextVersionProbeAt) return Promise.resolve();
|
|
33
|
+
nextVersionProbeAt = Date.now() + 6e4;
|
|
34
|
+
antigravityVersionFetch = (async () => {
|
|
35
|
+
try {
|
|
36
|
+
const timeoutSignal = AbortSignal.timeout(ANTIGRAVITY_VERSION_FETCH_TIMEOUT_MS);
|
|
37
|
+
const response = await fetcher(ANTIGRAVITY_VERSION_MANIFEST_URL, {
|
|
38
|
+
headers: { "Cache-Control": "no-cache", "User-Agent": "electron-builder" },
|
|
39
|
+
signal: signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal
|
|
40
|
+
});
|
|
41
|
+
if (response.ok) {
|
|
42
|
+
const version = parseAntigravityManifestVersion(await response.text());
|
|
43
|
+
if (version) {
|
|
44
|
+
discoveredAntigravityVersion = version;
|
|
45
|
+
nextVersionProbeAt = Date.now() + 60 * 6e4;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
} catch (e) {
|
|
49
|
+
} finally {
|
|
50
|
+
antigravityVersionFetch = null;
|
|
51
|
+
}
|
|
52
|
+
})();
|
|
53
|
+
return antigravityVersionFetch;
|
|
54
|
+
}
|
|
55
|
+
function getAntigravityUserAgent() {
|
|
56
|
+
const version = getAntigravityVersion();
|
|
57
|
+
const cl = process.env["ANTIGRAVITY_CL"] || "963137146";
|
|
58
|
+
const os = process.env["ANTIGRAVITY_OS"] || "darwin";
|
|
59
|
+
const arch = process.env["ANTIGRAVITY_ARCH"] || "arm64";
|
|
60
|
+
return `antigravity/hub/${version} (aidev_client; os_type=${os}; arch=${arch}; cl=${cl})`;
|
|
61
|
+
}
|
|
62
|
+
var ANTIGRAVITY_MODEL_WIRE_PROFILES = {
|
|
63
|
+
"gemini-3.5-flash-extra-low": { modelEnum: "MODEL_PLACEHOLDER_M187", maxOutputTokens: 65536 },
|
|
64
|
+
"gemini-3.5-flash-low": { modelEnum: "MODEL_PLACEHOLDER_M20", maxOutputTokens: 65536 },
|
|
65
|
+
"gemini-3-flash-agent": { modelEnum: "MODEL_PLACEHOLDER_M132", maxOutputTokens: 65536 },
|
|
66
|
+
"gemini-3.1-pro-low": { modelEnum: "MODEL_PLACEHOLDER_M36", maxOutputTokens: 65535 },
|
|
67
|
+
"gemini-pro-agent": { modelEnum: "MODEL_PLACEHOLDER_M16", maxOutputTokens: 65535 },
|
|
68
|
+
// Claude on daily-cloudcode-pa rejects maxOutputTokens > 64000 with a 400.
|
|
69
|
+
// The model_enum label is untracked for Anthropic ids; the backend does not
|
|
70
|
+
// require it.
|
|
71
|
+
"claude-sonnet-4-5": { maxOutputTokens: 64e3 },
|
|
72
|
+
"claude-sonnet-4-5-thinking": { maxOutputTokens: 64e3 },
|
|
73
|
+
"claude-opus-4-5": { maxOutputTokens: 64e3 },
|
|
74
|
+
"claude-opus-4-5-thinking": { maxOutputTokens: 64e3 },
|
|
75
|
+
"claude-sonnet-4-6": { maxOutputTokens: 64e3 },
|
|
76
|
+
"claude-sonnet-4-6-thinking": { maxOutputTokens: 64e3 },
|
|
77
|
+
"claude-opus-4-6": { maxOutputTokens: 64e3 },
|
|
78
|
+
"claude-opus-4-6-thinking": { maxOutputTokens: 64e3 },
|
|
79
|
+
"gpt-oss-120b": { maxOutputTokens: 32768 },
|
|
80
|
+
"gpt-oss-120b-medium": { maxOutputTokens: 32768 }
|
|
81
|
+
};
|
|
82
|
+
function getAntigravityModelWireProfile(wireModelId) {
|
|
83
|
+
return ANTIGRAVITY_MODEL_WIRE_PROFILES[wireModelId];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
exports.DEFAULT_ANTIGRAVITY_VERSION = DEFAULT_ANTIGRAVITY_VERSION; exports.__resetAntigravityVersionCache = __resetAntigravityVersionCache; exports.getAntigravityVersion = getAntigravityVersion; exports.parseAntigravityManifestVersion = parseAntigravityManifestVersion; exports.ensureAntigravityVersion = ensureAntigravityVersion; exports.getAntigravityUserAgent = getAntigravityUserAgent; exports.ANTIGRAVITY_MODEL_WIRE_PROFILES = ANTIGRAVITY_MODEL_WIRE_PROFILES; exports.getAntigravityModelWireProfile = getAntigravityModelWireProfile;
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveCodeAssistApiVersion,
|
|
3
|
+
resolveCodeAssistEndpoint
|
|
4
|
+
} from "./chunk-QSOHEDKO.js";
|
|
5
|
+
import {
|
|
6
|
+
fetchUpstream
|
|
7
|
+
} from "./chunk-NTF7TLT7.js";
|
|
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
|
+
status;
|
|
22
|
+
code;
|
|
23
|
+
};
|
|
24
|
+
var ANTIGRAVITY_CODE_ASSIST_ENDPOINT = "https://daily-cloudcode-pa.googleapis.com";
|
|
25
|
+
var GeminiCodeAssistProjectResolver = class {
|
|
26
|
+
/** account access token → resolved project id (undefined = free-tier, no project). */
|
|
27
|
+
cache = /* @__PURE__ */ new Map();
|
|
28
|
+
/** In-flight handshakes so concurrent callers share one round-trip. */
|
|
29
|
+
inflight = /* @__PURE__ */ new Map();
|
|
30
|
+
dialect;
|
|
31
|
+
endpoint;
|
|
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 = {}) {
|
|
35
|
+
this.dialect = options.dialect ?? "gemini-cli";
|
|
36
|
+
this.endpoint = options.endpoint;
|
|
37
|
+
const providerId = options.proxyProviderId ?? "gemini";
|
|
38
|
+
this.fetchImpl = fetchImpl ?? ((url, init) => fetchUpstream(url, init, { providerId }));
|
|
39
|
+
}
|
|
40
|
+
fetchImpl;
|
|
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 = this.endpoint ?? resolveCodeAssistEndpoint();
|
|
68
|
+
return `${base}/${resolveCodeAssistApiVersion()}:${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 (load.currentTier?.id) {
|
|
99
|
+
return this.settleProject(load.cloudaicompanionProject || void 0);
|
|
100
|
+
}
|
|
101
|
+
const defaultTier = load.allowedTiers?.find((t) => t.isDefault);
|
|
102
|
+
const tierId = defaultTier?.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: ${lro.error.message ?? "unknown"}`,
|
|
119
|
+
lro.error.code ?? 500
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
return this.settleProject(lro.response?.cloudaicompanionProject?.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 = errBody.error?.status;
|
|
176
|
+
detailMessage = errBody.error?.message ?? "";
|
|
177
|
+
} catch {
|
|
178
|
+
}
|
|
179
|
+
if (res.status === 403) {
|
|
180
|
+
throw new GeminiCodeAssistHandshakeError(
|
|
181
|
+
`Code Assist ${method} denied (403 ${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
|
+
};
|
|
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
|
+
export {
|
|
225
|
+
GeminiCodeAssistHandshakeError,
|
|
226
|
+
ANTIGRAVITY_CODE_ASSIST_ENDPOINT,
|
|
227
|
+
GeminiCodeAssistProjectResolver,
|
|
228
|
+
getGeminiCodeAssistProjectResolver,
|
|
229
|
+
getAntigravityProjectResolver
|
|
230
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fetchUpstream
|
|
3
|
+
} from "./chunk-NTF7TLT7.js";
|
|
4
|
+
|
|
5
|
+
// src/transformer/transformers/antigravityIdentity.ts
|
|
6
|
+
var DEFAULT_ANTIGRAVITY_VERSION = "2.8.0";
|
|
7
|
+
var ANTIGRAVITY_VERSION_MANIFEST_URL = "https://antigravity-hub-auto-updater-974169037036.us-central1.run.app/manifest/latest-arm64-mac.yml";
|
|
8
|
+
var ANTIGRAVITY_VERSION_FETCH_TIMEOUT_MS = 5e3;
|
|
9
|
+
var discoveredAntigravityVersion = null;
|
|
10
|
+
var antigravityVersionFetch = null;
|
|
11
|
+
var nextVersionProbeAt = 0;
|
|
12
|
+
function __resetAntigravityVersionCache() {
|
|
13
|
+
discoveredAntigravityVersion = null;
|
|
14
|
+
antigravityVersionFetch = null;
|
|
15
|
+
nextVersionProbeAt = 0;
|
|
16
|
+
}
|
|
17
|
+
function getAntigravityVersion() {
|
|
18
|
+
return process.env["ANTIGRAVITY_VERSION"] || discoveredAntigravityVersion || DEFAULT_ANTIGRAVITY_VERSION;
|
|
19
|
+
}
|
|
20
|
+
function parseAntigravityManifestVersion(yamlText) {
|
|
21
|
+
for (const line of yamlText.split(/\r?\n/)) {
|
|
22
|
+
const match = /^\s*version\s*:\s*(?:"([^"]*)"|'([^']*)'|([^\s#]+))\s*(?:#.*)?$/.exec(line);
|
|
23
|
+
if (!match) continue;
|
|
24
|
+
const version = (match[1] ?? match[2] ?? match[3] ?? "").trim();
|
|
25
|
+
return /^\d+\.\d+\.\d+$/.test(version) ? version : null;
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
function ensureAntigravityVersion(fetcher = (url, init) => fetchUpstream(url, init ?? {}, { providerId: "antigravity", redactBodies: true }), signal) {
|
|
30
|
+
if (["ANTIGRAVITY_VERSION", "ANTIGRAVITY_CL", "ANTIGRAVITY_OS", "ANTIGRAVITY_ARCH"].some((key) => process.env[key])) return Promise.resolve();
|
|
31
|
+
if (antigravityVersionFetch) return antigravityVersionFetch;
|
|
32
|
+
if (Date.now() < nextVersionProbeAt) return Promise.resolve();
|
|
33
|
+
nextVersionProbeAt = Date.now() + 6e4;
|
|
34
|
+
antigravityVersionFetch = (async () => {
|
|
35
|
+
try {
|
|
36
|
+
const timeoutSignal = AbortSignal.timeout(ANTIGRAVITY_VERSION_FETCH_TIMEOUT_MS);
|
|
37
|
+
const response = await fetcher(ANTIGRAVITY_VERSION_MANIFEST_URL, {
|
|
38
|
+
headers: { "Cache-Control": "no-cache", "User-Agent": "electron-builder" },
|
|
39
|
+
signal: signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal
|
|
40
|
+
});
|
|
41
|
+
if (response.ok) {
|
|
42
|
+
const version = parseAntigravityManifestVersion(await response.text());
|
|
43
|
+
if (version) {
|
|
44
|
+
discoveredAntigravityVersion = version;
|
|
45
|
+
nextVersionProbeAt = Date.now() + 60 * 6e4;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
} catch {
|
|
49
|
+
} finally {
|
|
50
|
+
antigravityVersionFetch = null;
|
|
51
|
+
}
|
|
52
|
+
})();
|
|
53
|
+
return antigravityVersionFetch;
|
|
54
|
+
}
|
|
55
|
+
function getAntigravityUserAgent() {
|
|
56
|
+
const version = getAntigravityVersion();
|
|
57
|
+
const cl = process.env["ANTIGRAVITY_CL"] || "963137146";
|
|
58
|
+
const os = process.env["ANTIGRAVITY_OS"] || "darwin";
|
|
59
|
+
const arch = process.env["ANTIGRAVITY_ARCH"] || "arm64";
|
|
60
|
+
return `antigravity/hub/${version} (aidev_client; os_type=${os}; arch=${arch}; cl=${cl})`;
|
|
61
|
+
}
|
|
62
|
+
var ANTIGRAVITY_MODEL_WIRE_PROFILES = {
|
|
63
|
+
"gemini-3.5-flash-extra-low": { modelEnum: "MODEL_PLACEHOLDER_M187", maxOutputTokens: 65536 },
|
|
64
|
+
"gemini-3.5-flash-low": { modelEnum: "MODEL_PLACEHOLDER_M20", maxOutputTokens: 65536 },
|
|
65
|
+
"gemini-3-flash-agent": { modelEnum: "MODEL_PLACEHOLDER_M132", maxOutputTokens: 65536 },
|
|
66
|
+
"gemini-3.1-pro-low": { modelEnum: "MODEL_PLACEHOLDER_M36", maxOutputTokens: 65535 },
|
|
67
|
+
"gemini-pro-agent": { modelEnum: "MODEL_PLACEHOLDER_M16", maxOutputTokens: 65535 },
|
|
68
|
+
// Claude on daily-cloudcode-pa rejects maxOutputTokens > 64000 with a 400.
|
|
69
|
+
// The model_enum label is untracked for Anthropic ids; the backend does not
|
|
70
|
+
// require it.
|
|
71
|
+
"claude-sonnet-4-5": { maxOutputTokens: 64e3 },
|
|
72
|
+
"claude-sonnet-4-5-thinking": { maxOutputTokens: 64e3 },
|
|
73
|
+
"claude-opus-4-5": { maxOutputTokens: 64e3 },
|
|
74
|
+
"claude-opus-4-5-thinking": { maxOutputTokens: 64e3 },
|
|
75
|
+
"claude-sonnet-4-6": { maxOutputTokens: 64e3 },
|
|
76
|
+
"claude-sonnet-4-6-thinking": { maxOutputTokens: 64e3 },
|
|
77
|
+
"claude-opus-4-6": { maxOutputTokens: 64e3 },
|
|
78
|
+
"claude-opus-4-6-thinking": { maxOutputTokens: 64e3 },
|
|
79
|
+
"gpt-oss-120b": { maxOutputTokens: 32768 },
|
|
80
|
+
"gpt-oss-120b-medium": { maxOutputTokens: 32768 }
|
|
81
|
+
};
|
|
82
|
+
function getAntigravityModelWireProfile(wireModelId) {
|
|
83
|
+
return ANTIGRAVITY_MODEL_WIRE_PROFILES[wireModelId];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export {
|
|
87
|
+
DEFAULT_ANTIGRAVITY_VERSION,
|
|
88
|
+
__resetAntigravityVersionCache,
|
|
89
|
+
getAntigravityVersion,
|
|
90
|
+
parseAntigravityManifestVersion,
|
|
91
|
+
ensureAntigravityVersion,
|
|
92
|
+
getAntigravityUserAgent,
|
|
93
|
+
ANTIGRAVITY_MODEL_WIRE_PROFILES,
|
|
94
|
+
getAntigravityModelWireProfile
|
|
95
|
+
};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class; var _class2;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKSMK45RDcjs = require('./chunk-KSMK45RD.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkVYOBVPNBcjs = require('./chunk-VYOBVPNB.cjs');
|
|
4
7
|
|
|
5
8
|
// src/pipeline/AccountAllowanceScheduling.ts
|
|
6
9
|
var DEFAULT_POLICY = {
|
|
@@ -30,11 +33,12 @@ 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
|
-
|
|
36
|
+
function freshWorstWindow(snapshot, resolvedModel) {
|
|
37
|
+
const family = snapshot.providerId === "antigravity" && resolvedModel ? _chunkKSMK45RDcjs.antigravityModelFamily.call(void 0, 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) => (_nullishCoalesce(right.usedPercent, () => ( -1))) - (_nullishCoalesce(left.usedPercent, () => ( -1))))[0];
|
|
35
39
|
}
|
|
36
40
|
var AccountAllowanceScheduling = (_class2 = class {
|
|
37
|
-
constructor(store =
|
|
41
|
+
constructor(store = _chunkVYOBVPNBcjs.getSharedAccountAllowanceStore.call(void 0, ), now = Date.now) {;_class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this);_class2.prototype.__init5.call(this);
|
|
38
42
|
this.store = store;
|
|
39
43
|
this.now = now;
|
|
40
44
|
}
|
|
@@ -49,8 +53,8 @@ var AccountAllowanceScheduling = (_class2 = 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 = (_class2 = 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 = (_class2 = 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
|
}
|
|
@@ -17,7 +17,8 @@ function cloneWindow(window) {
|
|
|
17
17
|
...window.windowMinutes === void 0 ? {} : { windowMinutes: window.windowMinutes },
|
|
18
18
|
...window.resetsAt === void 0 ? {} : { resetsAt: window.resetsAt },
|
|
19
19
|
...window.remainingSeconds === void 0 ? {} : { remainingSeconds: window.remainingSeconds },
|
|
20
|
-
state: window.state
|
|
20
|
+
state: window.state,
|
|
21
|
+
...window.disabled === void 0 ? {} : { disabled: window.disabled }
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
function cloneSnapshot(snapshot) {
|
|
@@ -56,7 +57,7 @@ function normalizedInstant(value) {
|
|
|
56
57
|
return Number.isFinite(parsed) ? new Date(parsed).toISOString() : void 0;
|
|
57
58
|
}
|
|
58
59
|
function isAllowanceProvider(value) {
|
|
59
|
-
return value === "claude" || value === "codex" || value === "gemini" || value === "opencodego" || value === "kimi" || value === "grok" || value === "copilot";
|
|
60
|
+
return value === "claude" || value === "codex" || value === "gemini" || value === "opencodego" || value === "kimi" || value === "grok" || value === "copilot" || value === "antigravity";
|
|
60
61
|
}
|
|
61
62
|
function isWindowState(value) {
|
|
62
63
|
return value === "fresh" || value === "stale" || value === "unavailable" || value === "unsupported";
|
|
@@ -95,6 +96,9 @@ function normalizeAccountAllowanceSnapshot(value) {
|
|
|
95
96
|
...windowMinutes === void 0 ? {} : { windowMinutes },
|
|
96
97
|
...resetsAt === void 0 ? {} : { resetsAt },
|
|
97
98
|
...remainingSeconds2 === void 0 ? {} : { remainingSeconds: remainingSeconds2 },
|
|
99
|
+
// antigravity: the disabled counter-family hard-block flag (additive;
|
|
100
|
+
// absent on every other provider's windows).
|
|
101
|
+
...window.disabled === true ? { disabled: true } : {},
|
|
98
102
|
state
|
|
99
103
|
});
|
|
100
104
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkUKQHBK4Qcjs = require('./chunk-UKQHBK4Q.cjs');
|
|
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 = _chunkUKQHBK4Qcjs.flattenHeaderValue.call(void 0, 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
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
exports.OPENCODE_SESSION_HEADER = OPENCODE_SESSION_HEADER; exports.setOpenCodeGoUserAgent = setOpenCodeGoUserAgent; exports.getOpenCodeGoUserAgent = getOpenCodeGoUserAgent; exports.extractOpenCodeSessionHeader = extractOpenCodeSessionHeader; exports.resolveOpenCodeSessionHeader = resolveOpenCodeSessionHeader; exports.__resetOpenCodeGoHeadersForTests = __resetOpenCodeGoHeadersForTests;
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
// src/transformer/transformers/utils/anthropicImageDrop.ts
|
|
2
|
+
var anthropicDroppedImageCount = 0;
|
|
3
|
+
var warnedForCurrentStream = false;
|
|
4
|
+
function beginAnthropicImageDropScope() {
|
|
5
|
+
warnedForCurrentStream = false;
|
|
6
|
+
}
|
|
7
|
+
function noteDroppedInlineImages(count) {
|
|
8
|
+
anthropicDroppedImageCount += count;
|
|
9
|
+
if (warnedForCurrentStream) return;
|
|
10
|
+
warnedForCurrentStream = true;
|
|
11
|
+
console.warn(
|
|
12
|
+
`[Anthropic face] dropped ${count} session image(s); the Anthropic Messages wire has no image block (total dropped: ${anthropicDroppedImageCount})`
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
1
16
|
// src/transformer/transformers/AnthropicOpenAIToAnthropicStream.ts
|
|
2
17
|
var DEFAULT_ANTHROPIC_PING_HEARTBEAT_MS = 2e4;
|
|
3
18
|
var anthropicPingHeartbeatMs = DEFAULT_ANTHROPIC_PING_HEARTBEAT_MS;
|
|
@@ -124,6 +139,7 @@ data: ${JSON.stringify({ type: "message_stop" })}
|
|
|
124
139
|
isClosed = true;
|
|
125
140
|
};
|
|
126
141
|
try {
|
|
142
|
+
beginAnthropicImageDropScope();
|
|
127
143
|
armPing();
|
|
128
144
|
while (true) {
|
|
129
145
|
const { done, value } = await reader.read();
|
|
@@ -190,6 +206,10 @@ data: ${JSON.stringify({
|
|
|
190
206
|
}
|
|
191
207
|
const choice = chunk.choices?.[0];
|
|
192
208
|
if (!choice) continue;
|
|
209
|
+
const deltaImages = choice.delta?.images;
|
|
210
|
+
if (Array.isArray(deltaImages) && deltaImages.length > 0) {
|
|
211
|
+
noteDroppedInlineImages(deltaImages.length);
|
|
212
|
+
}
|
|
193
213
|
if (chunk.usage) {
|
|
194
214
|
stopReasonDelta = {
|
|
195
215
|
type: "message_delta",
|
|
@@ -375,6 +395,8 @@ data: ${JSON.stringify({
|
|
|
375
395
|
}
|
|
376
396
|
|
|
377
397
|
export {
|
|
398
|
+
beginAnthropicImageDropScope,
|
|
399
|
+
noteDroppedInlineImages,
|
|
378
400
|
DEFAULT_ANTHROPIC_PING_HEARTBEAT_MS,
|
|
379
401
|
setAnthropicPingHeartbeatMs,
|
|
380
402
|
getAnthropicPingHeartbeatMs,
|
|
@@ -1811,6 +1811,11 @@ function assertFiniteImageApiLimits(limits) {
|
|
|
1811
1811
|
throw new TypeError("Image API aggregate output limit must cover one output.");
|
|
1812
1812
|
}
|
|
1813
1813
|
}
|
|
1814
|
+
function resolveImageRequestProvider(runtime, model) {
|
|
1815
|
+
const providerId = runtime.modelRoutes.get(model);
|
|
1816
|
+
if (!providerId) throw new ImageGenerationError("unsupported_model", { param: "model" });
|
|
1817
|
+
return providerId;
|
|
1818
|
+
}
|
|
1814
1819
|
|
|
1815
1820
|
// src/image-generation/openai-images/generateHandler.ts
|
|
1816
1821
|
function validateRuntime(runtime) {
|
|
@@ -1863,7 +1868,10 @@ function createImageGenerateHandler(deps) {
|
|
|
1863
1868
|
...runtime.preferredAccountGroup ? { preferredAccountGroup: runtime.preferredAccountGroup } : {},
|
|
1864
1869
|
...runtime.boundAccountFallbackPolicy ? { boundAccountFallbackPolicy: runtime.boundAccountFallbackPolicy } : {}
|
|
1865
1870
|
},
|
|
1866
|
-
{
|
|
1871
|
+
{
|
|
1872
|
+
providerId: resolveImageRequestProvider(runtime, request2.model),
|
|
1873
|
+
...runtime.retention ? { retention: runtime.retention } : {}
|
|
1874
|
+
}
|
|
1867
1875
|
);
|
|
1868
1876
|
if (request2.stream) {
|
|
1869
1877
|
await writeImageApiSse({
|
|
@@ -2536,7 +2544,10 @@ function createImageEditHandler(deps) {
|
|
|
2536
2544
|
...runtime.preferredAccountGroup ? { preferredAccountGroup: runtime.preferredAccountGroup } : {},
|
|
2537
2545
|
...runtime.boundAccountFallbackPolicy ? { boundAccountFallbackPolicy: runtime.boundAccountFallbackPolicy } : {}
|
|
2538
2546
|
},
|
|
2539
|
-
{
|
|
2547
|
+
{
|
|
2548
|
+
providerId: resolveImageRequestProvider(runtime, request2.model),
|
|
2549
|
+
...runtime.retention ? { retention: runtime.retention } : {}
|
|
2550
|
+
}
|
|
2540
2551
|
);
|
|
2541
2552
|
if (request2.stream) {
|
|
2542
2553
|
await writeImageApiSse({
|
|
@@ -2883,6 +2894,7 @@ var NORMALIZATION_RUNTIME = {
|
|
|
2883
2894
|
providerId: "responses-image-inspection",
|
|
2884
2895
|
defaultModel: "responses-image-model",
|
|
2885
2896
|
modelAliases: /* @__PURE__ */ new Map(),
|
|
2897
|
+
modelRoutes: /* @__PURE__ */ new Map(),
|
|
2886
2898
|
limits: DEFAULT_IMAGE_API_LIMITS
|
|
2887
2899
|
};
|
|
2888
2900
|
function invalid5(param) {
|