@omnicross/core 0.1.1 → 0.1.2
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 +27 -60
- package/dist/auth/GeminiCodeAssistProjectResolver.js +5 -9
- 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-2FEVTJWG.js +4400 -0
- package/dist/chunk-3MEACFK3.js +193 -0
- package/dist/chunk-3OPYJG76.cjs +266 -0
- package/dist/chunk-46RLHI7D.js +0 -0
- package/dist/chunk-46ZIFWYG.cjs +277 -0
- package/dist/chunk-4NBS6KPV.cjs +43 -0
- package/dist/chunk-4VAVYUZS.cjs +991 -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-6VIXXLMX.cjs +14 -0
- package/dist/chunk-745DV5FL.js +147 -0
- package/dist/chunk-74TMJA7Z.js +53 -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-AQ5TNQB7.js +13 -0
- package/dist/chunk-AVYJ4YBN.js +58 -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-DK4A7DLE.js +266 -0
- package/dist/chunk-DRWHTIIZ.js +13 -0
- package/dist/chunk-DWKQZ2SK.cjs +254 -0
- package/dist/chunk-E3WHL7CO.js +14 -0
- package/dist/chunk-EYZYXJTJ.cjs +1 -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-G2FUJNA2.cjs +193 -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-JO5NLTLY.js +46 -0
- package/dist/chunk-JWC6APFQ.js +23 -0
- package/dist/chunk-KUU2RNG6.cjs +46 -0
- package/dist/chunk-LKZJEL6E.cjs +124 -0
- package/dist/chunk-MNYKI4CI.js +94 -0
- package/dist/chunk-MZNPGW5Q.js +26 -0
- package/dist/chunk-N3V2J5ZO.cjs +53 -0
- package/dist/chunk-NYUNU75A.cjs +44 -0
- package/dist/chunk-NZYN7C3P.cjs +179 -0
- package/dist/chunk-O466Y272.js +235 -0
- package/dist/chunk-PXUJF5HS.js +124 -0
- package/dist/chunk-QBZJ7P2T.cjs +13 -0
- package/dist/chunk-QOCNX236.js +46 -0
- package/dist/chunk-QXD4MV2X.cjs +23 -0
- package/dist/chunk-R3HK6R4B.cjs +13 -0
- package/dist/chunk-RSJ3TWJQ.cjs +186 -0
- package/dist/chunk-S4WBV25P.js +913 -0
- package/dist/chunk-SN3YWBX7.cjs +4400 -0
- package/dist/chunk-SPVWWUHX.cjs +46 -0
- package/dist/chunk-SUEGJ75D.cjs +764 -0
- package/dist/chunk-SVNDB62D.cjs +58 -0
- package/dist/chunk-UYPEN5XE.cjs +235 -0
- package/dist/chunk-V5KPWNYX.cjs +147 -0
- package/dist/chunk-VVEHS2LI.js +431 -0
- package/dist/chunk-XBSYYZIY.cjs +94 -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-ZSVQT3PW.js +43 -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 +38 -3487
- package/dist/completion/CompletionService.d.cts +3 -2
- package/dist/completion/CompletionService.d.ts +3 -2
- package/dist/completion/CompletionService.js +34 -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 +15 -71
- package/dist/completion/openrouter-headers.js +8 -34
- package/dist/completion/openrouter-models.cjs +10 -67
- package/dist/completion/openrouter-models.js +4 -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 +55 -3989
- package/dist/completion.d.cts +3 -2
- package/dist/completion.d.ts +3 -2
- package/dist/completion.js +63 -3953
- package/dist/index.cjs +197 -10429
- package/dist/index.d.cts +9 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.js +125 -10268
- package/dist/logger-4GvQNzhE.d.cts +22 -0
- package/dist/logger-4GvQNzhE.d.ts +22 -0
- package/dist/outbound-api/routeResolver.cjs +7 -217
- package/dist/outbound-api/routeResolver.d.cts +2 -1
- package/dist/outbound-api/routeResolver.d.ts +2 -1
- package/dist/outbound-api/routeResolver.js +6 -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 +1 -18
- package/dist/outbound-api/types.d.cts +2 -1
- package/dist/outbound-api/types.d.ts +2 -1
- package/dist/outbound-api.cjs +35 -5221
- package/dist/outbound-api.d.cts +2 -1
- package/dist/outbound-api.d.ts +2 -1
- package/dist/outbound-api.js +54 -5194
- package/dist/pipeline/AuthSource.cjs +1 -18
- 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/SubscriptionAuthSource.cjs +6 -128
- package/dist/pipeline/SubscriptionAuthSource.js +5 -99
- package/dist/pipeline/SubscriptionAuthStrategy.cjs +1 -18
- 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 +29 -0
- package/dist/ports/usage-event-store.d.ts +29 -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 +6 -1
- package/dist/ports.d.ts +6 -1
- package/dist/provider-proxy/ProviderProxy.cjs +40 -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 +35 -4613
- package/dist/provider-proxy/ingress/providerProxyShared.cjs +35 -2941
- package/dist/provider-proxy/ingress/providerProxyShared.d.cts +2 -1
- package/dist/provider-proxy/ingress/providerProxyShared.d.ts +2 -1
- package/dist/provider-proxy/ingress/providerProxyShared.js +41 -2914
- package/dist/provider-proxy/matchText.cjs +11 -72
- package/dist/provider-proxy/matchText.js +6 -39
- package/dist/provider-proxy/types.cjs +1 -18
- package/dist/provider-proxy/types.d.cts +2 -1
- package/dist/provider-proxy/types.d.ts +2 -1
- package/dist/provider-proxy.cjs +35 -4655
- package/dist/provider-proxy.d.cts +2 -1
- package/dist/provider-proxy.d.ts +2 -1
- package/dist/provider-proxy.js +39 -4628
- 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/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 +73 -0
- package/dist/usage/usage-recorder.d.ts +73 -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 +1 -1
- 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,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
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;
|
|
19
2
|
|
|
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
3
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var DEFAULT_CODE_ASSIST_API_VERSION = "v1internal";
|
|
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
|
-
}
|
|
4
|
+
var _chunkRSJ3TWJQcjs = require('../chunk-RSJ3TWJQ.cjs');
|
|
5
|
+
require('../chunk-YGXJGRFI.cjs');
|
|
38
6
|
|
|
39
7
|
// src/auth/GeminiCodeAssistProjectResolver.ts
|
|
40
8
|
var FREE_TIER_ID = "free-tier";
|
|
@@ -48,18 +16,18 @@ var GeminiCodeAssistHandshakeError = class extends Error {
|
|
|
48
16
|
this.code = code;
|
|
49
17
|
this.name = "GeminiCodeAssistHandshakeError";
|
|
50
18
|
}
|
|
51
|
-
|
|
52
|
-
|
|
19
|
+
|
|
20
|
+
|
|
53
21
|
};
|
|
54
|
-
var GeminiCodeAssistProjectResolver = class {
|
|
55
|
-
constructor(fetchImpl = (url, init) => fetch(url, init)) {
|
|
22
|
+
var GeminiCodeAssistProjectResolver = (_class = class {
|
|
23
|
+
constructor(fetchImpl = (url, init) => fetch(url, init)) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
|
|
56
24
|
this.fetchImpl = fetchImpl;
|
|
57
25
|
}
|
|
58
|
-
|
|
26
|
+
|
|
59
27
|
/** account access token → resolved project id (undefined = free-tier, no project). */
|
|
60
|
-
cache = /* @__PURE__ */ new Map()
|
|
28
|
+
__init() {this.cache = /* @__PURE__ */ new Map()}
|
|
61
29
|
/** In-flight handshakes so concurrent callers share one round-trip. */
|
|
62
|
-
inflight = /* @__PURE__ */ new Map()
|
|
30
|
+
__init2() {this.inflight = /* @__PURE__ */ new Map()}
|
|
63
31
|
/** Test/diagnostic helper — clear the cached resolution for an account. */
|
|
64
32
|
clearCache() {
|
|
65
33
|
this.cache.clear();
|
|
@@ -86,7 +54,7 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
86
54
|
return run;
|
|
87
55
|
}
|
|
88
56
|
codeAssistUrl(method) {
|
|
89
|
-
return `${resolveCodeAssistEndpoint()}/${resolveCodeAssistApiVersion()}:${method}`;
|
|
57
|
+
return `${_chunkRSJ3TWJQcjs.resolveCodeAssistEndpoint.call(void 0, )}/${_chunkRSJ3TWJQcjs.resolveCodeAssistApiVersion.call(void 0, )}:${method}`;
|
|
90
58
|
}
|
|
91
59
|
/** Seed project id from env; reject a purely-numeric value (project NUMBER). */
|
|
92
60
|
seedProjectId() {
|
|
@@ -105,11 +73,11 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
105
73
|
duetProject: seededProject || void 0
|
|
106
74
|
}
|
|
107
75
|
});
|
|
108
|
-
if (load.currentTier
|
|
76
|
+
if (_optionalChain([load, 'access', _ => _.currentTier, 'optionalAccess', _2 => _2.id])) {
|
|
109
77
|
return load.cloudaicompanionProject || void 0;
|
|
110
78
|
}
|
|
111
|
-
const defaultTier = load.allowedTiers
|
|
112
|
-
const tierId = defaultTier
|
|
79
|
+
const defaultTier = _optionalChain([load, 'access', _3 => _3.allowedTiers, 'optionalAccess', _4 => _4.find, 'call', _5 => _5((t) => t.isDefault)]);
|
|
80
|
+
const tierId = _nullishCoalesce(_optionalChain([defaultTier, 'optionalAccess', _6 => _6.id]), () => ( LEGACY_TIER_ID));
|
|
113
81
|
const isFreeish = tierId === FREE_TIER_ID || tierId === LEGACY_TIER_ID;
|
|
114
82
|
const onboardProject = isFreeish ? void 0 : seededProject || void 0;
|
|
115
83
|
let lro = await this.postCodeAssist("onboardUser", accessToken, {
|
|
@@ -130,11 +98,11 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
130
98
|
}
|
|
131
99
|
if (lro.error) {
|
|
132
100
|
throw new GeminiCodeAssistHandshakeError(
|
|
133
|
-
`Code Assist onboardUser failed: ${lro.error.message
|
|
134
|
-
lro.error.code
|
|
101
|
+
`Code Assist onboardUser failed: ${_nullishCoalesce(lro.error.message, () => ( "unknown"))}`,
|
|
102
|
+
_nullishCoalesce(lro.error.code, () => ( 500))
|
|
135
103
|
);
|
|
136
104
|
}
|
|
137
|
-
return lro.response
|
|
105
|
+
return _optionalChain([lro, 'access', _7 => _7.response, 'optionalAccess', _8 => _8.cloudaicompanionProject, 'optionalAccess', _9 => _9.id]) || void 0;
|
|
138
106
|
}
|
|
139
107
|
/** POST a Code Assist method, surfacing the documented hard failures clearly. */
|
|
140
108
|
async postCodeAssist(method, accessToken, body) {
|
|
@@ -173,13 +141,13 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
173
141
|
let detailMessage = "";
|
|
174
142
|
try {
|
|
175
143
|
const errBody = await res.json();
|
|
176
|
-
detailCode = errBody.error
|
|
177
|
-
detailMessage = errBody.error
|
|
178
|
-
} catch {
|
|
144
|
+
detailCode = _optionalChain([errBody, 'access', _10 => _10.error, 'optionalAccess', _11 => _11.status]);
|
|
145
|
+
detailMessage = _nullishCoalesce(_optionalChain([errBody, 'access', _12 => _12.error, 'optionalAccess', _13 => _13.message]), () => ( ""));
|
|
146
|
+
} catch (e) {
|
|
179
147
|
}
|
|
180
148
|
if (res.status === 403) {
|
|
181
149
|
throw new GeminiCodeAssistHandshakeError(
|
|
182
|
-
`Code Assist ${method} denied (403 ${detailCode
|
|
150
|
+
`Code Assist ${method} denied (403 ${_nullishCoalesce(detailCode, () => ( "PERMISSION_DENIED"))}): ${detailMessage || "enable the Cloud AI Companion API and grant the required role"}`,
|
|
183
151
|
403,
|
|
184
152
|
detailCode
|
|
185
153
|
);
|
|
@@ -197,7 +165,7 @@ var GeminiCodeAssistProjectResolver = class {
|
|
|
197
165
|
detailCode
|
|
198
166
|
);
|
|
199
167
|
}
|
|
200
|
-
};
|
|
168
|
+
}, _class);
|
|
201
169
|
function delay(ms) {
|
|
202
170
|
return new Promise((resolve) => {
|
|
203
171
|
setTimeout(resolve, ms);
|
|
@@ -210,9 +178,8 @@ function getGeminiCodeAssistProjectResolver() {
|
|
|
210
178
|
}
|
|
211
179
|
return _resolverSingleton;
|
|
212
180
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
});
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
exports.GeminiCodeAssistHandshakeError = GeminiCodeAssistHandshakeError; exports.GeminiCodeAssistProjectResolver = GeminiCodeAssistProjectResolver; exports.getGeminiCodeAssistProjectResolver = getGeminiCodeAssistProjectResolver;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
function resolveCodeAssistApiVersion() {
|
|
8
|
-
return process.env.CODE_ASSIST_API_VERSION || DEFAULT_CODE_ASSIST_API_VERSION;
|
|
9
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
resolveCodeAssistApiVersion,
|
|
3
|
+
resolveCodeAssistEndpoint
|
|
4
|
+
} from "../chunk-Z7Y2NPHY.js";
|
|
5
|
+
import "../chunk-S4WBV25P.js";
|
|
10
6
|
|
|
11
7
|
// src/auth/GeminiCodeAssistProjectResolver.ts
|
|
12
8
|
var FREE_TIER_ID = "free-tier";
|
|
@@ -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
|
+
};
|