@omnicross/core 0.1.1 → 0.1.3
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/ApiConverter.cjs +3 -778
- package/dist/ApiConverter.js +12 -751
- package/dist/{CompletionService-DtOF_War.d.cts → CompletionService-D3a47vdU.d.cts} +2 -1
- package/dist/{CompletionService-7fCmKAP3.d.ts → CompletionService-DdWaAxq0.d.ts} +2 -1
- package/dist/auth/GeminiCodeAssistProjectResolver.cjs +32 -60
- package/dist/auth/GeminiCodeAssistProjectResolver.js +11 -10
- package/dist/builtin-web-fetch-77JZUZGM.cjs +100 -0
- package/dist/builtin-web-fetch-IGLBX2XY.js +100 -0
- package/dist/chunk-2DCNB7DF.cjs +514 -0
- package/dist/chunk-2FMI2B6V.cjs +6196 -0
- package/dist/chunk-3OPYJG76.cjs +266 -0
- package/dist/chunk-3QOSDDNI.cjs +130 -0
- package/dist/chunk-46RLHI7D.js +0 -0
- package/dist/chunk-46ZIFWYG.cjs +277 -0
- package/dist/chunk-4DECIFU7.js +6196 -0
- package/dist/chunk-4IH4EL7M.cjs +9 -0
- package/dist/chunk-4VAVYUZS.cjs +991 -0
- package/dist/chunk-5ENKBSWO.js +311 -0
- package/dist/chunk-5ERIZW3D.js +44 -0
- package/dist/chunk-5HTVET6E.js +514 -0
- package/dist/chunk-5ZQBEOMD.js +764 -0
- package/dist/chunk-6RPZADX3.cjs +92 -0
- package/dist/chunk-7VU7V2E4.js +0 -0
- package/dist/chunk-7YN22L2H.cjs +87 -0
- package/dist/chunk-A2YMUCBT.cjs +105 -0
- package/dist/chunk-AEOZIDEB.cjs +32 -0
- package/dist/chunk-AQ5TNQB7.js +13 -0
- package/dist/chunk-AVYJ4YBN.js +58 -0
- package/dist/chunk-BO4RFWBR.js +89 -0
- package/dist/chunk-C72S6TTV.cjs +49 -0
- package/dist/chunk-C7PSERMH.js +87 -0
- package/dist/chunk-CDHS2QDC.js +179 -0
- package/dist/chunk-CWM2ZDU5.js +130 -0
- package/dist/chunk-CZHZGRU7.js +383 -0
- package/dist/chunk-DK4A7DLE.js +266 -0
- package/dist/chunk-DQ5VAYZ6.cjs +42 -0
- package/dist/chunk-DRWHTIIZ.js +13 -0
- package/dist/chunk-DWKQZ2SK.cjs +254 -0
- package/dist/chunk-EYZYXJTJ.cjs +1 -0
- package/dist/chunk-FFALUUZZ.cjs +235 -0
- package/dist/chunk-FMOBD2OQ.js +39 -0
- package/dist/chunk-FTQ7IQUC.js +991 -0
- package/dist/chunk-FZ46M34D.cjs +1 -0
- package/dist/chunk-G2UTNSGU.js +277 -0
- package/dist/chunk-GBHYAGX3.cjs +26 -0
- package/dist/chunk-GMMT7RVN.cjs +39 -0
- package/dist/chunk-H5JUT3KV.js +105 -0
- package/dist/chunk-HQP3K7PU.cjs +431 -0
- package/dist/chunk-HUZZZ3JL.js +32 -0
- package/dist/chunk-IAXWICZU.js +69 -0
- package/dist/chunk-JMJBSACD.cjs +147 -0
- package/dist/chunk-JO5NLTLY.js +46 -0
- package/dist/chunk-JWC6APFQ.js +23 -0
- package/dist/chunk-KUU2RNG6.cjs +46 -0
- package/dist/chunk-L74VDN4A.cjs +32 -0
- package/dist/chunk-MQNDWYPN.js +235 -0
- package/dist/chunk-MZNPGW5Q.js +26 -0
- package/dist/chunk-N5QFKSDO.js +56 -0
- package/dist/chunk-NYUNU75A.cjs +44 -0
- package/dist/chunk-NZYN7C3P.cjs +179 -0
- package/dist/chunk-Q27JY5RG.cjs +126 -0
- package/dist/chunk-QBZJ7P2T.cjs +13 -0
- package/dist/chunk-QWBWGODS.cjs +69 -0
- package/dist/chunk-QXD4MV2X.cjs +23 -0
- package/dist/chunk-R3HK6R4B.cjs +13 -0
- package/dist/chunk-RPII3E6Z.cjs +145 -0
- package/dist/chunk-RSJ3TWJQ.cjs +186 -0
- package/dist/chunk-S4WBV25P.js +913 -0
- package/dist/chunk-S6JGLF3G.cjs +89 -0
- package/dist/chunk-SUEGJ75D.cjs +764 -0
- package/dist/chunk-SVNDB62D.cjs +58 -0
- package/dist/chunk-SVXC36MU.cjs +383 -0
- package/dist/chunk-TKJMZBAH.js +32 -0
- package/dist/chunk-UBWEBKRC.js +42 -0
- package/dist/chunk-UNEFIWXI.cjs +32 -0
- package/dist/chunk-VQY5W4YW.cjs +311 -0
- package/dist/chunk-VVEHS2LI.js +431 -0
- package/dist/chunk-WNY4WMRF.js +32 -0
- package/dist/chunk-XEKD23J5.js +9 -0
- package/dist/chunk-XTEI64OU.js +145 -0
- package/dist/chunk-XX6NQJMA.js +92 -0
- package/dist/chunk-Y6OM7EV7.cjs +56 -0
- package/dist/chunk-Y7FO65VT.js +147 -0
- package/dist/chunk-YGXJGRFI.cjs +913 -0
- package/dist/chunk-YMFAJFQT.cjs +173 -0
- package/dist/chunk-Z7LUNECE.js +49 -0
- package/dist/chunk-Z7Y2NPHY.js +186 -0
- package/dist/chunk-ZJZAOKI7.js +254 -0
- package/dist/chunk-ZLX3KGXX.js +173 -0
- package/dist/chunk-ZY6KU6P3.js +126 -0
- package/dist/completion/ApiKeyPoolService.cjs +23 -48
- package/dist/completion/ApiKeyPoolService.d.cts +150 -2
- package/dist/completion/ApiKeyPoolService.d.ts +150 -2
- package/dist/completion/BuiltinToolExecutor.cjs +9 -324
- package/dist/completion/BuiltinToolExecutor.js +6 -290
- package/dist/completion/CompletionService.cjs +45 -3487
- package/dist/completion/CompletionService.d.cts +3 -2
- package/dist/completion/CompletionService.d.ts +3 -2
- package/dist/completion/CompletionService.js +41 -3457
- package/dist/completion/NativeSearchInjector.cjs +8 -192
- package/dist/completion/NativeSearchInjector.js +7 -162
- package/dist/completion/ProviderSearchInjector.cjs +12 -39
- package/dist/completion/native-search-types.cjs +13 -66
- package/dist/completion/native-search-types.js +7 -31
- package/dist/completion/openrouter-headers.cjs +12 -71
- package/dist/completion/openrouter-headers.d.cts +9 -12
- package/dist/completion/openrouter-headers.d.ts +9 -12
- package/dist/completion/openrouter-headers.js +7 -36
- package/dist/completion/openrouter-models.cjs +11 -67
- package/dist/completion/openrouter-models.js +5 -34
- package/dist/completion/types.cjs +1 -18
- package/dist/completion/url-builder.cjs +24 -138
- package/dist/completion/url-builder.js +12 -92
- package/dist/completion.cjs +62 -3989
- package/dist/completion.d.cts +3 -2
- package/dist/completion.d.ts +3 -2
- package/dist/completion.js +70 -3953
- package/dist/index.cjs +319 -10429
- package/dist/index.d.cts +49 -12
- package/dist/index.d.ts +49 -12
- package/dist/index.js +248 -10269
- package/dist/logger-4GvQNzhE.d.cts +22 -0
- package/dist/logger-4GvQNzhE.d.ts +22 -0
- package/dist/outbound-api/routeResolver.cjs +10 -217
- package/dist/outbound-api/routeResolver.d.cts +10 -3
- package/dist/outbound-api/routeResolver.d.ts +10 -3
- package/dist/outbound-api/routeResolver.js +9 -187
- package/dist/outbound-api/subscriptionRegistryPort.cjs +7 -37
- package/dist/outbound-api/subscriptionRegistryPort.d.cts +2 -1
- package/dist/outbound-api/subscriptionRegistryPort.d.ts +2 -1
- package/dist/outbound-api/subscriptionRegistryPort.js +4 -8
- package/dist/outbound-api/types.cjs +5 -17
- package/dist/outbound-api/types.d.cts +12 -144
- package/dist/outbound-api/types.d.ts +12 -144
- package/dist/outbound-api/types.js +6 -0
- package/dist/outbound-api.cjs +197 -5265
- package/dist/outbound-api.d.cts +787 -25
- package/dist/outbound-api.d.ts +787 -25
- package/dist/outbound-api.js +173 -5195
- package/dist/pipeline/AuthSource.cjs +1 -18
- package/dist/pipeline/AuthSource.d.cts +23 -1
- package/dist/pipeline/AuthSource.d.ts +23 -1
- package/dist/pipeline/LlmConfigProviderAuth.cjs +5 -166
- package/dist/pipeline/LlmConfigProviderAuth.d.cts +2 -1
- package/dist/pipeline/LlmConfigProviderAuth.d.ts +2 -1
- package/dist/pipeline/LlmConfigProviderAuth.js +5 -139
- package/dist/pipeline/SubscriptionAccountHealth.cjs +22 -0
- package/dist/pipeline/SubscriptionAccountHealth.d.cts +235 -0
- package/dist/pipeline/SubscriptionAccountHealth.d.ts +235 -0
- package/dist/pipeline/SubscriptionAccountHealth.js +22 -0
- package/dist/pipeline/SubscriptionAuthSource.cjs +6 -128
- package/dist/pipeline/SubscriptionAuthSource.d.cts +3 -2
- package/dist/pipeline/SubscriptionAuthSource.d.ts +3 -2
- package/dist/pipeline/SubscriptionAuthSource.js +5 -99
- package/dist/pipeline/SubscriptionAuthStrategy.cjs +1 -18
- package/dist/pipeline/SubscriptionAuthStrategy.d.cts +24 -1
- package/dist/pipeline/SubscriptionAuthStrategy.d.ts +24 -1
- package/dist/pipeline/auditSink.cjs +14 -0
- package/dist/pipeline/auditSink.d.cts +48 -0
- package/dist/pipeline/auditSink.d.ts +48 -0
- package/dist/pipeline/auditSink.js +14 -0
- package/dist/pipeline/billingEmit.cjs +14 -0
- package/dist/pipeline/billingEmit.d.cts +49 -0
- package/dist/pipeline/billingEmit.d.ts +49 -0
- package/dist/pipeline/billingEmit.js +14 -0
- package/dist/pipeline/executeProviderCall.cjs +5 -69
- package/dist/pipeline/executeProviderCall.js +3 -42
- package/dist/pipeline/resolveProviderChain.cjs +5 -46
- package/dist/pipeline/resolveProviderChain.js +3 -19
- package/dist/pipeline/resolveSubscriptionChain.cjs +5 -67
- package/dist/pipeline/resolveSubscriptionChain.js +3 -40
- package/dist/ports/gemini-code-assist-resolver.cjs +7 -37
- package/dist/ports/gemini-code-assist-resolver.js +4 -8
- package/dist/ports/pricing-store.cjs +1 -0
- package/dist/ports/pricing-store.d.cts +50 -0
- package/dist/ports/pricing-store.d.ts +50 -0
- package/dist/ports/pricing-store.js +0 -0
- package/dist/ports/provider-config-source.cjs +1 -18
- package/dist/ports/usage-event-store.cjs +1 -0
- package/dist/ports/usage-event-store.d.cts +54 -0
- package/dist/ports/usage-event-store.d.ts +54 -0
- package/dist/ports/usage-event-store.js +0 -0
- package/dist/ports/web-search-backend.cjs +1 -18
- package/dist/ports.cjs +1 -18
- package/dist/ports.d.cts +13 -2
- package/dist/ports.d.ts +13 -2
- package/dist/provider-proxy/ProviderProxy.cjs +47 -4643
- package/dist/provider-proxy/ProviderProxy.d.cts +2 -1
- package/dist/provider-proxy/ProviderProxy.d.ts +2 -1
- package/dist/provider-proxy/ProviderProxy.js +42 -4613
- package/dist/provider-proxy/identity/SubscriptionIdentityStore.cjs +15 -0
- package/dist/provider-proxy/identity/SubscriptionIdentityStore.d.cts +121 -0
- package/dist/provider-proxy/identity/SubscriptionIdentityStore.d.ts +121 -0
- package/dist/provider-proxy/identity/SubscriptionIdentityStore.js +15 -0
- package/dist/provider-proxy/identity/fingerprintHeaders.cjs +20 -0
- package/dist/provider-proxy/identity/fingerprintHeaders.d.cts +89 -0
- package/dist/provider-proxy/identity/fingerprintHeaders.d.ts +89 -0
- package/dist/provider-proxy/identity/fingerprintHeaders.js +20 -0
- package/dist/provider-proxy/ingress/providerProxyShared.cjs +42 -2941
- package/dist/provider-proxy/ingress/providerProxyShared.d.cts +13 -3
- package/dist/provider-proxy/ingress/providerProxyShared.d.ts +13 -3
- package/dist/provider-proxy/ingress/providerProxyShared.js +48 -2914
- package/dist/provider-proxy/matchText.cjs +13 -72
- package/dist/provider-proxy/matchText.d.cts +14 -1
- package/dist/provider-proxy/matchText.d.ts +14 -1
- package/dist/provider-proxy/matchText.js +8 -39
- package/dist/provider-proxy/types.cjs +1 -18
- package/dist/provider-proxy/types.d.cts +25 -1
- package/dist/provider-proxy/types.d.ts +25 -1
- package/dist/provider-proxy.cjs +42 -4655
- package/dist/provider-proxy.d.cts +2 -1
- package/dist/provider-proxy.d.ts +2 -1
- package/dist/provider-proxy.js +46 -4628
- package/dist/{routeResolver-HE-ZO0fO.d.ts → routeResolver-B1NglTfe.d.ts} +36 -10
- package/dist/{routeResolver-BrbK6ja9.d.cts → routeResolver-CbG5uBgm.d.cts} +36 -10
- package/dist/serializeError.cjs +5 -81
- package/dist/serializeError.js +3 -54
- package/dist/sse-parser.cjs +7 -455
- package/dist/sse-parser.js +4 -426
- package/dist/transformer/TransformerChainExecutor.cjs +4 -318
- package/dist/transformer/TransformerChainExecutor.js +4 -291
- package/dist/transformer/TransformerService.cjs +5 -289
- package/dist/transformer/TransformerService.js +3 -262
- package/dist/transformer/anthropicBetaInject.cjs +7 -50
- package/dist/transformer/anthropicBetaInject.js +4 -21
- package/dist/transformer/transformers/AnthropicTransformer.cjs +3 -1014
- package/dist/transformer/transformers/AnthropicTransformer.js +3 -987
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +4 -1106
- package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +7 -1079
- package/dist/transformer/transformers/GeminiTransformer.cjs +4 -1010
- package/dist/transformer/transformers/GeminiTransformer.js +4 -983
- package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +3 -535
- package/dist/transformer/transformers/OpenAIResponseTransformer.js +3 -510
- package/dist/transformer/transformers/OpenCodeGoTransformer.cjs +5 -72
- package/dist/transformer/transformers/OpenCodeGoTransformer.js +3 -45
- package/dist/transformer/transformers/ReasoningTransformer.cjs +3 -270
- package/dist/transformer/transformers/ReasoningTransformer.js +2 -249
- package/dist/transformer/transformers.cjs +10 -3177
- package/dist/transformer/transformers.js +23 -3158
- package/dist/transformer/types.cjs +1 -18
- package/dist/transformer.cjs +13 -3726
- package/dist/transformer.js +17 -3706
- package/dist/types-6OUY_xfA.d.ts +830 -0
- package/dist/types-aBFFXoBz.d.cts +830 -0
- package/dist/usage/pricing-engine.cjs +6 -0
- package/dist/usage/pricing-engine.d.cts +83 -0
- package/dist/usage/pricing-engine.d.ts +83 -0
- package/dist/usage/pricing-engine.js +6 -0
- package/dist/usage/usage-recorder.cjs +6 -0
- package/dist/usage/usage-recorder.d.cts +91 -0
- package/dist/usage/usage-recorder.d.ts +91 -0
- package/dist/usage/usage-recorder.js +6 -0
- package/dist/usage.cjs +11 -0
- package/dist/usage.d.cts +8 -0
- package/dist/usage.d.ts +8 -0
- package/dist/usage.js +11 -0
- package/package.json +4 -2
- package/dist/ApiKeyPoolService-BmMkau07.d.cts +0 -170
- package/dist/ApiKeyPoolService-BmMkau07.d.ts +0 -170
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ThinkLevel } from '@omnicross/contracts/completion-types';
|
|
2
2
|
import { LLMProvider } from '@omnicross/contracts/llm-config';
|
|
3
3
|
import { C as CorePaths, U as UsageEventSink } from './usage-event-sink-BX7FE1NL.cjs';
|
|
4
|
-
import { L as Logger
|
|
4
|
+
import { L as Logger } from './logger-4GvQNzhE.cjs';
|
|
5
5
|
import { ProviderConfigSource } from './ports/provider-config-source.cjs';
|
|
6
6
|
import { UsageRecorderImport } from './provider-proxy/types.cjs';
|
|
7
7
|
import { O as OpenAITool, A as AnthropicTool, G as GeminiTools, M as McpToolProvider, B as BuiltinToolExecutor } from './BuiltinToolExecutor-CS2WpXhM.cjs';
|
|
8
8
|
import { C as CompletionOptions, S as StreamCallbacks, a as CompletionResult } from './types-BScIHmPr.cjs';
|
|
9
|
+
import { ApiKeyPoolService } from './completion/ApiKeyPoolService.cjs';
|
|
9
10
|
import { MCPTool } from '@omnicross/contracts/mcp-types';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ThinkLevel } from '@omnicross/contracts/completion-types';
|
|
2
2
|
import { LLMProvider } from '@omnicross/contracts/llm-config';
|
|
3
3
|
import { C as CorePaths, U as UsageEventSink } from './usage-event-sink-BX7FE1NL.js';
|
|
4
|
-
import { L as Logger
|
|
4
|
+
import { L as Logger } from './logger-4GvQNzhE.js';
|
|
5
5
|
import { ProviderConfigSource } from './ports/provider-config-source.js';
|
|
6
6
|
import { UsageRecorderImport } from './provider-proxy/types.js';
|
|
7
7
|
import { O as OpenAITool, A as AnthropicTool, G as GeminiTools, M as McpToolProvider, B as BuiltinToolExecutor } from './BuiltinToolExecutor-BluWyeob.js';
|
|
8
8
|
import { C as CompletionOptions, S as StreamCallbacks, a as CompletionResult } from './types-BScIHmPr.js';
|
|
9
|
+
import { ApiKeyPoolService } from './completion/ApiKeyPoolService.js';
|
|
9
10
|
import { MCPTool } from '@omnicross/contracts/mcp-types';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -1,40 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
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
|
+
var _chunkS6JGLF3Gcjs = require('../chunk-S6JGLF3G.cjs');
|
|
19
4
|
|
|
20
|
-
// src/auth/GeminiCodeAssistProjectResolver.ts
|
|
21
|
-
var GeminiCodeAssistProjectResolver_exports = {};
|
|
22
|
-
__export(GeminiCodeAssistProjectResolver_exports, {
|
|
23
|
-
GeminiCodeAssistHandshakeError: () => GeminiCodeAssistHandshakeError,
|
|
24
|
-
GeminiCodeAssistProjectResolver: () => GeminiCodeAssistProjectResolver,
|
|
25
|
-
getGeminiCodeAssistProjectResolver: () => getGeminiCodeAssistProjectResolver
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(GeminiCodeAssistProjectResolver_exports);
|
|
28
5
|
|
|
29
|
-
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
function resolveCodeAssistEndpoint() {
|
|
33
|
-
return (process.env.CODE_ASSIST_ENDPOINT || DEFAULT_CODE_ASSIST_ENDPOINT).replace(/\/+$/, "");
|
|
34
|
-
}
|
|
35
|
-
function resolveCodeAssistApiVersion() {
|
|
36
|
-
return process.env.CODE_ASSIST_API_VERSION || DEFAULT_CODE_ASSIST_API_VERSION;
|
|
37
|
-
}
|
|
6
|
+
|
|
7
|
+
var _chunkRSJ3TWJQcjs = require('../chunk-RSJ3TWJQ.cjs');
|
|
8
|
+
require('../chunk-YGXJGRFI.cjs');
|
|
38
9
|
|
|
39
10
|
// src/auth/GeminiCodeAssistProjectResolver.ts
|
|
40
11
|
var FREE_TIER_ID = "free-tier";
|
|
@@ -48,18 +19,20 @@ var GeminiCodeAssistHandshakeError = class extends Error {
|
|
|
48
19
|
this.code = code;
|
|
49
20
|
this.name = "GeminiCodeAssistHandshakeError";
|
|
50
21
|
}
|
|
51
|
-
|
|
52
|
-
|
|
22
|
+
|
|
23
|
+
|
|
53
24
|
};
|
|
54
|
-
var GeminiCodeAssistProjectResolver = class {
|
|
55
|
-
|
|
25
|
+
var GeminiCodeAssistProjectResolver = (_class = class {
|
|
26
|
+
// upstream-proxy: the Code Assist handshake is upstream egress → honor the
|
|
27
|
+
// gemini proxy by default (still injectable for tests).
|
|
28
|
+
constructor(fetchImpl = (url, init) => _chunkS6JGLF3Gcjs.fetchUpstream.call(void 0, url, init, { providerId: "gemini" })) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
|
|
56
29
|
this.fetchImpl = fetchImpl;
|
|
57
30
|
}
|
|
58
|
-
|
|
31
|
+
|
|
59
32
|
/** account access token → resolved project id (undefined = free-tier, no project). */
|
|
60
|
-
cache = /* @__PURE__ */ new Map()
|
|
33
|
+
__init() {this.cache = /* @__PURE__ */ new Map()}
|
|
61
34
|
/** In-flight handshakes so concurrent callers share one round-trip. */
|
|
62
|
-
inflight = /* @__PURE__ */ new Map()
|
|
35
|
+
__init2() {this.inflight = /* @__PURE__ */ new Map()}
|
|
63
36
|
/** Test/diagnostic helper — clear the cached resolution for an account. */
|
|
64
37
|
clearCache() {
|
|
65
38
|
this.cache.clear();
|
|
@@ -86,7 +59,7 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
86
59
|
return run;
|
|
87
60
|
}
|
|
88
61
|
codeAssistUrl(method) {
|
|
89
|
-
return `${resolveCodeAssistEndpoint()}/${resolveCodeAssistApiVersion()}:${method}`;
|
|
62
|
+
return `${_chunkRSJ3TWJQcjs.resolveCodeAssistEndpoint.call(void 0, )}/${_chunkRSJ3TWJQcjs.resolveCodeAssistApiVersion.call(void 0, )}:${method}`;
|
|
90
63
|
}
|
|
91
64
|
/** Seed project id from env; reject a purely-numeric value (project NUMBER). */
|
|
92
65
|
seedProjectId() {
|
|
@@ -105,11 +78,11 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
105
78
|
duetProject: seededProject || void 0
|
|
106
79
|
}
|
|
107
80
|
});
|
|
108
|
-
if (load.currentTier
|
|
81
|
+
if (_optionalChain([load, 'access', _ => _.currentTier, 'optionalAccess', _2 => _2.id])) {
|
|
109
82
|
return load.cloudaicompanionProject || void 0;
|
|
110
83
|
}
|
|
111
|
-
const defaultTier = load.allowedTiers
|
|
112
|
-
const tierId = defaultTier
|
|
84
|
+
const defaultTier = _optionalChain([load, 'access', _3 => _3.allowedTiers, 'optionalAccess', _4 => _4.find, 'call', _5 => _5((t) => t.isDefault)]);
|
|
85
|
+
const tierId = _nullishCoalesce(_optionalChain([defaultTier, 'optionalAccess', _6 => _6.id]), () => ( LEGACY_TIER_ID));
|
|
113
86
|
const isFreeish = tierId === FREE_TIER_ID || tierId === LEGACY_TIER_ID;
|
|
114
87
|
const onboardProject = isFreeish ? void 0 : seededProject || void 0;
|
|
115
88
|
let lro = await this.postCodeAssist("onboardUser", accessToken, {
|
|
@@ -130,11 +103,11 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
130
103
|
}
|
|
131
104
|
if (lro.error) {
|
|
132
105
|
throw new GeminiCodeAssistHandshakeError(
|
|
133
|
-
`Code Assist onboardUser failed: ${lro.error.message
|
|
134
|
-
lro.error.code
|
|
106
|
+
`Code Assist onboardUser failed: ${_nullishCoalesce(lro.error.message, () => ( "unknown"))}`,
|
|
107
|
+
_nullishCoalesce(lro.error.code, () => ( 500))
|
|
135
108
|
);
|
|
136
109
|
}
|
|
137
|
-
return lro.response
|
|
110
|
+
return _optionalChain([lro, 'access', _7 => _7.response, 'optionalAccess', _8 => _8.cloudaicompanionProject, 'optionalAccess', _9 => _9.id]) || void 0;
|
|
138
111
|
}
|
|
139
112
|
/** POST a Code Assist method, surfacing the documented hard failures clearly. */
|
|
140
113
|
async postCodeAssist(method, accessToken, body) {
|
|
@@ -173,13 +146,13 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
173
146
|
let detailMessage = "";
|
|
174
147
|
try {
|
|
175
148
|
const errBody = await res.json();
|
|
176
|
-
detailCode = errBody.error
|
|
177
|
-
detailMessage = errBody.error
|
|
178
|
-
} catch {
|
|
149
|
+
detailCode = _optionalChain([errBody, 'access', _10 => _10.error, 'optionalAccess', _11 => _11.status]);
|
|
150
|
+
detailMessage = _nullishCoalesce(_optionalChain([errBody, 'access', _12 => _12.error, 'optionalAccess', _13 => _13.message]), () => ( ""));
|
|
151
|
+
} catch (e) {
|
|
179
152
|
}
|
|
180
153
|
if (res.status === 403) {
|
|
181
154
|
throw new GeminiCodeAssistHandshakeError(
|
|
182
|
-
`Code Assist ${method} denied (403 ${detailCode
|
|
155
|
+
`Code Assist ${method} denied (403 ${_nullishCoalesce(detailCode, () => ( "PERMISSION_DENIED"))}): ${detailMessage || "enable the Cloud AI Companion API and grant the required role"}`,
|
|
183
156
|
403,
|
|
184
157
|
detailCode
|
|
185
158
|
);
|
|
@@ -197,7 +170,7 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
197
170
|
detailCode
|
|
198
171
|
);
|
|
199
172
|
}
|
|
200
|
-
};
|
|
173
|
+
}, _class);
|
|
201
174
|
function delay(ms) {
|
|
202
175
|
return new Promise((resolve) => {
|
|
203
176
|
setTimeout(resolve, ms);
|
|
@@ -210,9 +183,8 @@ function getGeminiCodeAssistProjectResolver() {
|
|
|
210
183
|
}
|
|
211
184
|
return _resolverSingleton;
|
|
212
185
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
});
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
exports.GeminiCodeAssistHandshakeError = GeminiCodeAssistHandshakeError; exports.GeminiCodeAssistProjectResolver = GeminiCodeAssistProjectResolver; exports.getGeminiCodeAssistProjectResolver = getGeminiCodeAssistProjectResolver;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
fetchUpstream
|
|
3
|
+
} from "../chunk-BO4RFWBR.js";
|
|
4
|
+
import {
|
|
5
|
+
resolveCodeAssistApiVersion,
|
|
6
|
+
resolveCodeAssistEndpoint
|
|
7
|
+
} from "../chunk-Z7Y2NPHY.js";
|
|
8
|
+
import "../chunk-S4WBV25P.js";
|
|
10
9
|
|
|
11
10
|
// src/auth/GeminiCodeAssistProjectResolver.ts
|
|
12
11
|
var FREE_TIER_ID = "free-tier";
|
|
@@ -24,7 +23,9 @@ var GeminiCodeAssistHandshakeError = class extends Error {
|
|
|
24
23
|
code;
|
|
25
24
|
};
|
|
26
25
|
var GeminiCodeAssistProjectResolver = class {
|
|
27
|
-
|
|
26
|
+
// upstream-proxy: the Code Assist handshake is upstream egress → honor the
|
|
27
|
+
// gemini proxy by default (still injectable for tests).
|
|
28
|
+
constructor(fetchImpl = (url, init) => fetchUpstream(url, init, { providerId: "gemini" })) {
|
|
28
29
|
this.fetchImpl = fetchImpl;
|
|
29
30
|
}
|
|
30
31
|
fetchImpl;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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; }// src/completion/builtin-web-fetch.ts
|
|
2
|
+
var _readability = require('@mozilla/readability');
|
|
3
|
+
var _jsdom = require('jsdom');
|
|
4
|
+
var _turndown = require('turndown'); var _turndown2 = _interopRequireDefault(_turndown);
|
|
5
|
+
var FETCH_TIMEOUT_MS = 15e3;
|
|
6
|
+
var MAX_RESPONSE_BYTES = 5 * 1024 * 1024;
|
|
7
|
+
var MAX_REDIRECTS = 5;
|
|
8
|
+
var CHROME_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
|
|
9
|
+
var FETCH_HEADERS = {
|
|
10
|
+
"User-Agent": CHROME_UA,
|
|
11
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
12
|
+
"Accept-Language": "en-US,en;q=0.9"
|
|
13
|
+
};
|
|
14
|
+
var turndown = new (0, _turndown2.default)({
|
|
15
|
+
headingStyle: "atx",
|
|
16
|
+
codeBlockStyle: "fenced",
|
|
17
|
+
bulletListMarker: "-"
|
|
18
|
+
});
|
|
19
|
+
async function fetchAndExtractUrl(url, maxChars) {
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
22
|
+
try {
|
|
23
|
+
const res = await fetchWithRedirectLimit(url, controller.signal);
|
|
24
|
+
clearTimeout(timer);
|
|
25
|
+
const contentType = _nullishCoalesce(res.headers.get("content-type"), () => ( ""));
|
|
26
|
+
const rawText = await readBodyWithLimit(res);
|
|
27
|
+
let text;
|
|
28
|
+
if (contentType.includes("json")) {
|
|
29
|
+
try {
|
|
30
|
+
text = JSON.stringify(JSON.parse(rawText), null, 2);
|
|
31
|
+
} catch (e) {
|
|
32
|
+
text = rawText;
|
|
33
|
+
}
|
|
34
|
+
} else if (contentType.includes("html")) {
|
|
35
|
+
text = extractHtml(rawText, res.url || url);
|
|
36
|
+
} else {
|
|
37
|
+
text = rawText;
|
|
38
|
+
}
|
|
39
|
+
return text.length > maxChars ? text.slice(0, maxChars) + "\n\n[Content truncated]" : text;
|
|
40
|
+
} finally {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function extractHtml(html, url) {
|
|
45
|
+
const dom = new (0, _jsdom.JSDOM)(html, { url });
|
|
46
|
+
const doc = dom.window.document;
|
|
47
|
+
for (const sel of ["script", "style", "noscript", "nav", "footer", "aside", "iframe"]) {
|
|
48
|
+
doc.querySelectorAll(sel).forEach((el) => el.remove());
|
|
49
|
+
}
|
|
50
|
+
const reader = new (0, _readability.Readability)(doc);
|
|
51
|
+
const article = reader.parse();
|
|
52
|
+
if (_optionalChain([article, 'optionalAccess', _ => _.content])) {
|
|
53
|
+
return turndown.turndown(article.content).replace(/\n{3,}/g, "\n\n");
|
|
54
|
+
}
|
|
55
|
+
const body = _optionalChain([doc, 'access', _2 => _2.body, 'optionalAccess', _3 => _3.textContent]) || "";
|
|
56
|
+
return body.replace(/\s+/g, " ").trim();
|
|
57
|
+
}
|
|
58
|
+
async function fetchWithRedirectLimit(url, signal) {
|
|
59
|
+
let currentUrl = url;
|
|
60
|
+
for (let i = 0; i < MAX_REDIRECTS; i++) {
|
|
61
|
+
const res = await fetch(currentUrl, { signal, redirect: "manual", headers: FETCH_HEADERS });
|
|
62
|
+
if (res.status >= 300 && res.status < 400) {
|
|
63
|
+
const location = res.headers.get("location");
|
|
64
|
+
if (!location) return res;
|
|
65
|
+
currentUrl = new URL(location, currentUrl).href;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
Object.defineProperty(res, "url", { value: currentUrl, writable: false });
|
|
69
|
+
return res;
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`Too many redirects (>${MAX_REDIRECTS})`);
|
|
72
|
+
}
|
|
73
|
+
async function readBodyWithLimit(res) {
|
|
74
|
+
const reader = _optionalChain([res, 'access', _4 => _4.body, 'optionalAccess', _5 => _5.getReader, 'call', _6 => _6()]);
|
|
75
|
+
if (!reader) return "";
|
|
76
|
+
const chunks = [];
|
|
77
|
+
let totalBytes = 0;
|
|
78
|
+
while (true) {
|
|
79
|
+
const { done, value } = await reader.read();
|
|
80
|
+
if (done) break;
|
|
81
|
+
totalBytes += value.byteLength;
|
|
82
|
+
if (totalBytes > MAX_RESPONSE_BYTES) {
|
|
83
|
+
reader.cancel();
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
chunks.push(value);
|
|
87
|
+
}
|
|
88
|
+
const combined = new Uint8Array(totalBytes > MAX_RESPONSE_BYTES ? MAX_RESPONSE_BYTES : totalBytes);
|
|
89
|
+
let offset = 0;
|
|
90
|
+
for (const chunk of chunks) {
|
|
91
|
+
const len = Math.min(chunk.byteLength, combined.byteLength - offset);
|
|
92
|
+
combined.set(chunk.subarray(0, len), offset);
|
|
93
|
+
offset += len;
|
|
94
|
+
if (offset >= combined.byteLength) break;
|
|
95
|
+
}
|
|
96
|
+
return new TextDecoder("utf-8", { fatal: false }).decode(combined);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
exports.fetchAndExtractUrl = fetchAndExtractUrl;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/completion/builtin-web-fetch.ts
|
|
2
|
+
import { Readability } from "@mozilla/readability";
|
|
3
|
+
import { JSDOM } from "jsdom";
|
|
4
|
+
import TurndownService from "turndown";
|
|
5
|
+
var FETCH_TIMEOUT_MS = 15e3;
|
|
6
|
+
var MAX_RESPONSE_BYTES = 5 * 1024 * 1024;
|
|
7
|
+
var MAX_REDIRECTS = 5;
|
|
8
|
+
var CHROME_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
|
|
9
|
+
var FETCH_HEADERS = {
|
|
10
|
+
"User-Agent": CHROME_UA,
|
|
11
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
12
|
+
"Accept-Language": "en-US,en;q=0.9"
|
|
13
|
+
};
|
|
14
|
+
var turndown = new TurndownService({
|
|
15
|
+
headingStyle: "atx",
|
|
16
|
+
codeBlockStyle: "fenced",
|
|
17
|
+
bulletListMarker: "-"
|
|
18
|
+
});
|
|
19
|
+
async function fetchAndExtractUrl(url, maxChars) {
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
22
|
+
try {
|
|
23
|
+
const res = await fetchWithRedirectLimit(url, controller.signal);
|
|
24
|
+
clearTimeout(timer);
|
|
25
|
+
const contentType = res.headers.get("content-type") ?? "";
|
|
26
|
+
const rawText = await readBodyWithLimit(res);
|
|
27
|
+
let text;
|
|
28
|
+
if (contentType.includes("json")) {
|
|
29
|
+
try {
|
|
30
|
+
text = JSON.stringify(JSON.parse(rawText), null, 2);
|
|
31
|
+
} catch {
|
|
32
|
+
text = rawText;
|
|
33
|
+
}
|
|
34
|
+
} else if (contentType.includes("html")) {
|
|
35
|
+
text = extractHtml(rawText, res.url || url);
|
|
36
|
+
} else {
|
|
37
|
+
text = rawText;
|
|
38
|
+
}
|
|
39
|
+
return text.length > maxChars ? text.slice(0, maxChars) + "\n\n[Content truncated]" : text;
|
|
40
|
+
} finally {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function extractHtml(html, url) {
|
|
45
|
+
const dom = new JSDOM(html, { url });
|
|
46
|
+
const doc = dom.window.document;
|
|
47
|
+
for (const sel of ["script", "style", "noscript", "nav", "footer", "aside", "iframe"]) {
|
|
48
|
+
doc.querySelectorAll(sel).forEach((el) => el.remove());
|
|
49
|
+
}
|
|
50
|
+
const reader = new Readability(doc);
|
|
51
|
+
const article = reader.parse();
|
|
52
|
+
if (article?.content) {
|
|
53
|
+
return turndown.turndown(article.content).replace(/\n{3,}/g, "\n\n");
|
|
54
|
+
}
|
|
55
|
+
const body = doc.body?.textContent || "";
|
|
56
|
+
return body.replace(/\s+/g, " ").trim();
|
|
57
|
+
}
|
|
58
|
+
async function fetchWithRedirectLimit(url, signal) {
|
|
59
|
+
let currentUrl = url;
|
|
60
|
+
for (let i = 0; i < MAX_REDIRECTS; i++) {
|
|
61
|
+
const res = await fetch(currentUrl, { signal, redirect: "manual", headers: FETCH_HEADERS });
|
|
62
|
+
if (res.status >= 300 && res.status < 400) {
|
|
63
|
+
const location = res.headers.get("location");
|
|
64
|
+
if (!location) return res;
|
|
65
|
+
currentUrl = new URL(location, currentUrl).href;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
Object.defineProperty(res, "url", { value: currentUrl, writable: false });
|
|
69
|
+
return res;
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`Too many redirects (>${MAX_REDIRECTS})`);
|
|
72
|
+
}
|
|
73
|
+
async function readBodyWithLimit(res) {
|
|
74
|
+
const reader = res.body?.getReader();
|
|
75
|
+
if (!reader) return "";
|
|
76
|
+
const chunks = [];
|
|
77
|
+
let totalBytes = 0;
|
|
78
|
+
while (true) {
|
|
79
|
+
const { done, value } = await reader.read();
|
|
80
|
+
if (done) break;
|
|
81
|
+
totalBytes += value.byteLength;
|
|
82
|
+
if (totalBytes > MAX_RESPONSE_BYTES) {
|
|
83
|
+
reader.cancel();
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
chunks.push(value);
|
|
87
|
+
}
|
|
88
|
+
const combined = new Uint8Array(totalBytes > MAX_RESPONSE_BYTES ? MAX_RESPONSE_BYTES : totalBytes);
|
|
89
|
+
let offset = 0;
|
|
90
|
+
for (const chunk of chunks) {
|
|
91
|
+
const len = Math.min(chunk.byteLength, combined.byteLength - offset);
|
|
92
|
+
combined.set(chunk.subarray(0, len), offset);
|
|
93
|
+
offset += len;
|
|
94
|
+
if (offset >= combined.byteLength) break;
|
|
95
|
+
}
|
|
96
|
+
return new TextDecoder("utf-8", { fatal: false }).decode(combined);
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
fetchAndExtractUrl
|
|
100
|
+
};
|