@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,102 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (err.cause) {
|
|
7
|
-
msg += ` [cause: ${serializeError(err.cause)}]`;
|
|
8
|
-
}
|
|
9
|
-
const anyErr = err;
|
|
10
|
-
if (anyErr.status != null) msg += ` (status: ${anyErr.status})`;
|
|
11
|
-
else if (anyErr.code != null) msg += ` (code: ${anyErr.code})`;
|
|
12
|
-
return msg;
|
|
13
|
-
}
|
|
14
|
-
if (typeof err === "string") return err || "Empty error string";
|
|
15
|
-
if (typeof err !== "object") return String(err);
|
|
16
|
-
const obj = err;
|
|
17
|
-
if (typeof obj.message === "string" && obj.message) {
|
|
18
|
-
let msg = obj.message;
|
|
19
|
-
if (obj.status != null) msg += ` (status: ${obj.status})`;
|
|
20
|
-
else if (obj.code != null) msg += ` (code: ${obj.code})`;
|
|
21
|
-
if (typeof obj.type === "string") msg += ` [type: ${obj.type}]`;
|
|
22
|
-
return msg;
|
|
23
|
-
}
|
|
24
|
-
if (typeof obj.error === "string" && obj.error) {
|
|
25
|
-
return obj.error;
|
|
26
|
-
}
|
|
27
|
-
if (obj.error && typeof obj.error === "object") {
|
|
28
|
-
const inner = obj.error;
|
|
29
|
-
if (typeof inner.message === "string" && inner.message) {
|
|
30
|
-
let msg = inner.message;
|
|
31
|
-
if (typeof inner.type === "string") msg += ` [type: ${inner.type}]`;
|
|
32
|
-
return msg;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
const json = JSON.stringify(err, getCircularReplacer(), 2);
|
|
37
|
-
if (json && json.length > 1e3) {
|
|
38
|
-
return json.slice(0, 1e3) + "... (truncated)";
|
|
39
|
-
}
|
|
40
|
-
return json || "Unserializable error";
|
|
41
|
-
} catch {
|
|
42
|
-
return `Unserializable error: ${Object.prototype.toString.call(err)}`;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function getCircularReplacer() {
|
|
46
|
-
const seen = /* @__PURE__ */ new WeakSet();
|
|
47
|
-
return (_key, value) => {
|
|
48
|
-
if (typeof value === "object" && value !== null) {
|
|
49
|
-
if (seen.has(value)) return "[Circular]";
|
|
50
|
-
seen.add(value);
|
|
51
|
-
}
|
|
52
|
-
return value;
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// src/pipeline/SubscriptionAuthSource.ts
|
|
57
|
-
function stripAuthHeaders(headers) {
|
|
58
|
-
delete headers.authorization;
|
|
59
|
-
delete headers.Authorization;
|
|
60
|
-
delete headers["x-api-key"];
|
|
61
|
-
delete headers["X-Api-Key"];
|
|
62
|
-
delete headers["x-goog-api-key"];
|
|
63
|
-
delete headers["X-Goog-Api-Key"];
|
|
64
|
-
}
|
|
65
|
-
var SubscriptionAuthSource = class {
|
|
66
|
-
constructor(profile) {
|
|
67
|
-
this.profile = profile;
|
|
68
|
-
}
|
|
69
|
-
profile;
|
|
70
|
-
/**
|
|
71
|
-
* Strip any transformer-set auth headers, then delegate to the bound
|
|
72
|
-
* strategy. Mirrors `SubscriptionDispatcher`'s
|
|
73
|
-
* `stripAuthHeaders(...)` + `applyHeadersWithRetry(...)` sequence, including
|
|
74
|
-
* the best-effort swallow-and-warn around a throwing `applyHeaders`.
|
|
75
|
-
*
|
|
76
|
-
* The strategy's looser `AuthApplyHints` (optional `upstreamUrl` /
|
|
77
|
-
* `resolvedModel`) is fed from the pipeline's required `{ upstreamUrl,
|
|
78
|
-
* model }` at the boundary.
|
|
79
|
-
*/
|
|
80
|
-
async applyHeaders(headers, hints) {
|
|
81
|
-
stripAuthHeaders(headers);
|
|
82
|
-
try {
|
|
83
|
-
await this.profile.authStrategy.applyHeaders(headers, {
|
|
84
|
-
upstreamUrl: hints.upstreamUrl,
|
|
85
|
-
resolvedModel: hints.model
|
|
86
|
-
});
|
|
87
|
-
} catch (err) {
|
|
88
|
-
console.warn("[SubscriptionAuthSource] authStrategy.applyHeaders threw:", serializeError(err));
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/** Delegate the 401-refresh decision to the bound strategy. */
|
|
92
|
-
async onUnauthorized() {
|
|
93
|
-
return this.profile.authStrategy.onUnauthorized();
|
|
94
|
-
}
|
|
95
|
-
/** Resolve the upstream URL from the profile, when it provides one. */
|
|
96
|
-
resolveUpstreamUrl(model) {
|
|
97
|
-
return this.profile.resolveUpstreamUrl?.(model);
|
|
98
|
-
}
|
|
99
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
SubscriptionAuthSource,
|
|
3
|
+
stripAuthHeaders
|
|
4
|
+
} from "../chunk-N5QFKSDO.js";
|
|
5
|
+
import "../chunk-AVYJ4YBN.js";
|
|
100
6
|
export {
|
|
101
7
|
SubscriptionAuthSource,
|
|
102
8
|
stripAuthHeaders
|
|
@@ -1,18 +1 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// src/pipeline/SubscriptionAuthStrategy.ts
|
|
17
|
-
var SubscriptionAuthStrategy_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(SubscriptionAuthStrategy_exports);
|
|
1
|
+
"use strict";
|
|
@@ -31,6 +31,24 @@ interface AuthApplyHints {
|
|
|
31
31
|
upstreamUrl?: string;
|
|
32
32
|
/** Resolved model id — same purpose as `upstreamUrl`. */
|
|
33
33
|
resolvedModel?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Stable per-conversation session key (subscription-account-scheduling, D5).
|
|
36
|
+
* When present it drives the account pool's sticky session affinity; absent ⇒
|
|
37
|
+
* pure priority/LRU selection (still correct — affinity only loses stickiness).
|
|
38
|
+
*/
|
|
39
|
+
sessionKey?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Per-request selection callback (subscription-account-health, D5;
|
|
42
|
+
* subscription-account-model-map, D3). The strategy invokes it with the
|
|
43
|
+
* EFFECTIVE account id it resolved so the relay can mark that account's health
|
|
44
|
+
* against the upstream outcome. The OPTIONAL 3rd `remappedModel` carries the
|
|
45
|
+
* selected account's ACTUAL upstream model when its `supportedModels` object
|
|
46
|
+
* remaps `resolvedModel` — the relay rewrites the outbound `body.model` to it on
|
|
47
|
+
* the pass-through / same-format path; absent ⇒ the body is forwarded verbatim.
|
|
48
|
+
* Absent callback ⇒ health simply isn't marked on that path (degrades to the
|
|
49
|
+
* pre-health behavior).
|
|
50
|
+
*/
|
|
51
|
+
reportSelection?: (accountId: string, isActive: boolean, remappedModel?: string) => void;
|
|
34
52
|
}
|
|
35
53
|
interface AuthStrategy {
|
|
36
54
|
/** Discriminator — also surfaced through `subscription:list` to renderers. */
|
|
@@ -52,8 +70,13 @@ interface AuthStrategy {
|
|
|
52
70
|
*
|
|
53
71
|
* Implementations SHOULD use a shared `RefreshMutex` to dedupe concurrent
|
|
54
72
|
* refreshes so N parallel 401s collapse into one upstream refresh call.
|
|
73
|
+
*
|
|
74
|
+
* The OPTIONAL `sessionKey` (subscription-account-scheduling, D7) refreshes the
|
|
75
|
+
* account the request was ACTUALLY served by: when it resolves to a sticky
|
|
76
|
+
* non-active account the strategy refreshes THAT account by id; absent (or an
|
|
77
|
+
* active pick) ⇒ the active-account refresh, unchanged.
|
|
55
78
|
*/
|
|
56
|
-
onUnauthorized(): Promise<boolean>;
|
|
79
|
+
onUnauthorized(sessionKey?: string): Promise<boolean>;
|
|
57
80
|
/** Diagnostic surface for the `subscription:status` IPC. */
|
|
58
81
|
describeStatus(): Promise<SubscriptionStatusEntry>;
|
|
59
82
|
}
|
|
@@ -31,6 +31,24 @@ interface AuthApplyHints {
|
|
|
31
31
|
upstreamUrl?: string;
|
|
32
32
|
/** Resolved model id — same purpose as `upstreamUrl`. */
|
|
33
33
|
resolvedModel?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Stable per-conversation session key (subscription-account-scheduling, D5).
|
|
36
|
+
* When present it drives the account pool's sticky session affinity; absent ⇒
|
|
37
|
+
* pure priority/LRU selection (still correct — affinity only loses stickiness).
|
|
38
|
+
*/
|
|
39
|
+
sessionKey?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Per-request selection callback (subscription-account-health, D5;
|
|
42
|
+
* subscription-account-model-map, D3). The strategy invokes it with the
|
|
43
|
+
* EFFECTIVE account id it resolved so the relay can mark that account's health
|
|
44
|
+
* against the upstream outcome. The OPTIONAL 3rd `remappedModel` carries the
|
|
45
|
+
* selected account's ACTUAL upstream model when its `supportedModels` object
|
|
46
|
+
* remaps `resolvedModel` — the relay rewrites the outbound `body.model` to it on
|
|
47
|
+
* the pass-through / same-format path; absent ⇒ the body is forwarded verbatim.
|
|
48
|
+
* Absent callback ⇒ health simply isn't marked on that path (degrades to the
|
|
49
|
+
* pre-health behavior).
|
|
50
|
+
*/
|
|
51
|
+
reportSelection?: (accountId: string, isActive: boolean, remappedModel?: string) => void;
|
|
34
52
|
}
|
|
35
53
|
interface AuthStrategy {
|
|
36
54
|
/** Discriminator — also surfaced through `subscription:list` to renderers. */
|
|
@@ -52,8 +70,13 @@ interface AuthStrategy {
|
|
|
52
70
|
*
|
|
53
71
|
* Implementations SHOULD use a shared `RefreshMutex` to dedupe concurrent
|
|
54
72
|
* refreshes so N parallel 401s collapse into one upstream refresh call.
|
|
73
|
+
*
|
|
74
|
+
* The OPTIONAL `sessionKey` (subscription-account-scheduling, D7) refreshes the
|
|
75
|
+
* account the request was ACTUALLY served by: when it resolves to a sticky
|
|
76
|
+
* non-active account the strategy refreshes THAT account by id; absent (or an
|
|
77
|
+
* active pick) ⇒ the active-account refresh, unchanged.
|
|
55
78
|
*/
|
|
56
|
-
onUnauthorized(): Promise<boolean>;
|
|
79
|
+
onUnauthorized(sessionKey?: string): Promise<boolean>;
|
|
57
80
|
/** Diagnostic surface for the `subscription:status` IPC. */
|
|
58
81
|
describeStatus(): Promise<SubscriptionStatusEntry>;
|
|
59
82
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkAEOZIDEBcjs = require('../chunk-AEOZIDEB.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
exports.__resetAuditSinkForTests = _chunkAEOZIDEBcjs.__resetAuditSinkForTests; exports.getAuditCaptureConfig = _chunkAEOZIDEBcjs.getAuditCaptureConfig; exports.recordAudit = _chunkAEOZIDEBcjs.recordAudit; exports.setAuditCaptureConfig = _chunkAEOZIDEBcjs.setAuditCaptureConfig; exports.setAuditSink = _chunkAEOZIDEBcjs.setAuditSink;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AuditRecord, AuditConfig } from '@omnicross/contracts/audit-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* auditSink — the module-slot sink + capture-config port for `@omnicross/core`
|
|
5
|
+
* (request-audit-log, design D5).
|
|
6
|
+
*
|
|
7
|
+
* The outbound server's post-response capture hook calls {@link recordAudit}
|
|
8
|
+
* with an assembled {@link AuditRecord}. The concrete `AuditWriter` (the
|
|
9
|
+
* date-rotated jsonl store) lives in the DAEMON and registers itself as the sink
|
|
10
|
+
* at bootstrap via {@link setAuditSink}. Core imports NOTHING from the daemon —
|
|
11
|
+
* exactly the `setWebhookSink` / `setUpstreamProxyResolver` precedent.
|
|
12
|
+
*
|
|
13
|
+
* A SECOND slot holds the active {@link AuditConfig} ({@link setAuditCaptureConfig}
|
|
14
|
+
* / {@link getAuditCaptureConfig}). The capture hook reads it to GATE assembly:
|
|
15
|
+
* absent/`enabled:false` ⇒ the hook does nothing (not even record assembly), so
|
|
16
|
+
* audit-disabled is byte-identical zero regression. The daemon sets BOTH slots
|
|
17
|
+
* together (config + sink) when audit is enabled and clears BOTH when disabled.
|
|
18
|
+
*
|
|
19
|
+
* HARD CONTRACT (design D5 / risk "the audit write adding latency"):
|
|
20
|
+
* {@link recordAudit} NEVER throws and NEVER awaits — it hands the record to the
|
|
21
|
+
* sink (which enqueues and returns immediately) and swallows any sink error, so
|
|
22
|
+
* a slow/failing/throwing writer can never affect the relay path. Absent a sink
|
|
23
|
+
* it is a pure no-op.
|
|
24
|
+
*
|
|
25
|
+
* @module @omnicross/core/pipeline/auditSink
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** The sink the daemon registers; it MUST enqueue-and-return (never block/throw). */
|
|
29
|
+
type AuditSink = (record: AuditRecord) => void;
|
|
30
|
+
/** Install (or clear, with `null`) the audit sink. Idempotent; last write wins. */
|
|
31
|
+
declare function setAuditSink(fn: AuditSink | null): void;
|
|
32
|
+
/**
|
|
33
|
+
* Install (or clear, with `null`) the active audit-capture config. `null` (or an
|
|
34
|
+
* `enabled:false` config) disables capture entirely — the hook does no work.
|
|
35
|
+
*/
|
|
36
|
+
declare function setAuditCaptureConfig(config: AuditConfig | null): void;
|
|
37
|
+
/** The active capture config, or `null` when audit is disabled/unset. */
|
|
38
|
+
declare function getAuditCaptureConfig(): AuditConfig | null;
|
|
39
|
+
/**
|
|
40
|
+
* Hand one audit record to the registered sink. A no-op when no sink is set
|
|
41
|
+
* (zero regression). NEVER throws (a misbehaving sink is swallowed) and NEVER
|
|
42
|
+
* awaits (the sink enqueues + returns) — so no relay path is ever delayed.
|
|
43
|
+
*/
|
|
44
|
+
declare function recordAudit(record: AuditRecord): void;
|
|
45
|
+
/** TEST SEAM — clear both slots so a suite starts from the no-audit baseline. */
|
|
46
|
+
declare function __resetAuditSinkForTests(): void;
|
|
47
|
+
|
|
48
|
+
export { type AuditSink, __resetAuditSinkForTests, getAuditCaptureConfig, recordAudit, setAuditCaptureConfig, setAuditSink };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AuditRecord, AuditConfig } from '@omnicross/contracts/audit-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* auditSink — the module-slot sink + capture-config port for `@omnicross/core`
|
|
5
|
+
* (request-audit-log, design D5).
|
|
6
|
+
*
|
|
7
|
+
* The outbound server's post-response capture hook calls {@link recordAudit}
|
|
8
|
+
* with an assembled {@link AuditRecord}. The concrete `AuditWriter` (the
|
|
9
|
+
* date-rotated jsonl store) lives in the DAEMON and registers itself as the sink
|
|
10
|
+
* at bootstrap via {@link setAuditSink}. Core imports NOTHING from the daemon —
|
|
11
|
+
* exactly the `setWebhookSink` / `setUpstreamProxyResolver` precedent.
|
|
12
|
+
*
|
|
13
|
+
* A SECOND slot holds the active {@link AuditConfig} ({@link setAuditCaptureConfig}
|
|
14
|
+
* / {@link getAuditCaptureConfig}). The capture hook reads it to GATE assembly:
|
|
15
|
+
* absent/`enabled:false` ⇒ the hook does nothing (not even record assembly), so
|
|
16
|
+
* audit-disabled is byte-identical zero regression. The daemon sets BOTH slots
|
|
17
|
+
* together (config + sink) when audit is enabled and clears BOTH when disabled.
|
|
18
|
+
*
|
|
19
|
+
* HARD CONTRACT (design D5 / risk "the audit write adding latency"):
|
|
20
|
+
* {@link recordAudit} NEVER throws and NEVER awaits — it hands the record to the
|
|
21
|
+
* sink (which enqueues and returns immediately) and swallows any sink error, so
|
|
22
|
+
* a slow/failing/throwing writer can never affect the relay path. Absent a sink
|
|
23
|
+
* it is a pure no-op.
|
|
24
|
+
*
|
|
25
|
+
* @module @omnicross/core/pipeline/auditSink
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** The sink the daemon registers; it MUST enqueue-and-return (never block/throw). */
|
|
29
|
+
type AuditSink = (record: AuditRecord) => void;
|
|
30
|
+
/** Install (or clear, with `null`) the audit sink. Idempotent; last write wins. */
|
|
31
|
+
declare function setAuditSink(fn: AuditSink | null): void;
|
|
32
|
+
/**
|
|
33
|
+
* Install (or clear, with `null`) the active audit-capture config. `null` (or an
|
|
34
|
+
* `enabled:false` config) disables capture entirely — the hook does no work.
|
|
35
|
+
*/
|
|
36
|
+
declare function setAuditCaptureConfig(config: AuditConfig | null): void;
|
|
37
|
+
/** The active capture config, or `null` when audit is disabled/unset. */
|
|
38
|
+
declare function getAuditCaptureConfig(): AuditConfig | null;
|
|
39
|
+
/**
|
|
40
|
+
* Hand one audit record to the registered sink. A no-op when no sink is set
|
|
41
|
+
* (zero regression). NEVER throws (a misbehaving sink is swallowed) and NEVER
|
|
42
|
+
* awaits (the sink enqueues + returns) — so no relay path is ever delayed.
|
|
43
|
+
*/
|
|
44
|
+
declare function recordAudit(record: AuditRecord): void;
|
|
45
|
+
/** TEST SEAM — clear both slots so a suite starts from the no-audit baseline. */
|
|
46
|
+
declare function __resetAuditSinkForTests(): void;
|
|
47
|
+
|
|
48
|
+
export { type AuditSink, __resetAuditSinkForTests, getAuditCaptureConfig, recordAudit, setAuditCaptureConfig, setAuditSink };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__resetAuditSinkForTests,
|
|
3
|
+
getAuditCaptureConfig,
|
|
4
|
+
recordAudit,
|
|
5
|
+
setAuditCaptureConfig,
|
|
6
|
+
setAuditSink
|
|
7
|
+
} from "../chunk-WNY4WMRF.js";
|
|
8
|
+
export {
|
|
9
|
+
__resetAuditSinkForTests,
|
|
10
|
+
getAuditCaptureConfig,
|
|
11
|
+
recordAudit,
|
|
12
|
+
setAuditCaptureConfig,
|
|
13
|
+
setAuditSink
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkL74VDN4Acjs = require('../chunk-L74VDN4A.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
exports.__resetBillingSinkForTests = _chunkL74VDN4Acjs.__resetBillingSinkForTests; exports.getBillingCaptureConfig = _chunkL74VDN4Acjs.getBillingCaptureConfig; exports.publishBillingEvent = _chunkL74VDN4Acjs.publishBillingEvent; exports.setBillingCaptureConfig = _chunkL74VDN4Acjs.setBillingCaptureConfig; exports.setBillingSink = _chunkL74VDN4Acjs.setBillingSink;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BillingEvent, BillingConfig } from '@omnicross/contracts/billing-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* billingEmit — the module-slot sink + capture-gate port for `@omnicross/core`
|
|
5
|
+
* (billing-event-stream, design D4/D7).
|
|
6
|
+
*
|
|
7
|
+
* The outbound server's post-response billing hook calls {@link publishBillingEvent}
|
|
8
|
+
* with an assembled {@link BillingEvent}. The concrete `BillingPublisher` (the
|
|
9
|
+
* durable-first jsonl ledger + built-in POST) lives in the DAEMON and registers
|
|
10
|
+
* itself as the sink at bootstrap via {@link setBillingSink}. Core imports NOTHING
|
|
11
|
+
* from the daemon — exactly the `setWebhookSink` / `setAuditSink` precedent.
|
|
12
|
+
*
|
|
13
|
+
* A SECOND slot holds the active {@link BillingConfig} ({@link setBillingCaptureConfig}
|
|
14
|
+
* / {@link getBillingCaptureConfig}). The capture hook reads it to GATE assembly:
|
|
15
|
+
* absent/`enabled:false` ⇒ the hook does nothing (not even event assembly), so
|
|
16
|
+
* billing-disabled is byte-identical zero regression. The daemon sets BOTH slots
|
|
17
|
+
* together (config + sink) when billing is enabled and clears BOTH when disabled.
|
|
18
|
+
*
|
|
19
|
+
* HARD CONTRACT (design D7 / risk "a billing POST blocking the request path"):
|
|
20
|
+
* {@link publishBillingEvent} NEVER throws and NEVER awaits — it hands the event
|
|
21
|
+
* to the sink (which durably appends + enqueues delivery and returns immediately)
|
|
22
|
+
* and swallows any sink error, so a slow/failing/throwing publisher can never
|
|
23
|
+
* affect the relay path. Absent a sink it is a pure no-op.
|
|
24
|
+
*
|
|
25
|
+
* @module @omnicross/core/pipeline/billingEmit
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** The sink the daemon registers; it MUST durably-append-and-return (never block/throw). */
|
|
29
|
+
type BillingSink = (event: BillingEvent) => void;
|
|
30
|
+
/** Install (or clear, with `null`) the billing sink. Idempotent; last write wins. */
|
|
31
|
+
declare function setBillingSink(fn: BillingSink | null): void;
|
|
32
|
+
/**
|
|
33
|
+
* Install (or clear, with `null`) the active billing config. `null` (or an
|
|
34
|
+
* `enabled:false` config) disables the capture entirely — the hook does no work.
|
|
35
|
+
*/
|
|
36
|
+
declare function setBillingCaptureConfig(config: BillingConfig | null): void;
|
|
37
|
+
/** The active billing config, or `null` when billing is disabled/unset. */
|
|
38
|
+
declare function getBillingCaptureConfig(): BillingConfig | null;
|
|
39
|
+
/**
|
|
40
|
+
* Publish one billing event to the registered sink. A no-op when no sink is set
|
|
41
|
+
* (zero regression). NEVER throws (a misbehaving sink is swallowed) and NEVER
|
|
42
|
+
* awaits (the sink durably appends + enqueues delivery, then returns) — so no
|
|
43
|
+
* relay path is ever delayed.
|
|
44
|
+
*/
|
|
45
|
+
declare function publishBillingEvent(event: BillingEvent): void;
|
|
46
|
+
/** TEST SEAM — clear both slots so a suite starts from the no-billing baseline. */
|
|
47
|
+
declare function __resetBillingSinkForTests(): void;
|
|
48
|
+
|
|
49
|
+
export { type BillingSink, __resetBillingSinkForTests, getBillingCaptureConfig, publishBillingEvent, setBillingCaptureConfig, setBillingSink };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BillingEvent, BillingConfig } from '@omnicross/contracts/billing-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* billingEmit — the module-slot sink + capture-gate port for `@omnicross/core`
|
|
5
|
+
* (billing-event-stream, design D4/D7).
|
|
6
|
+
*
|
|
7
|
+
* The outbound server's post-response billing hook calls {@link publishBillingEvent}
|
|
8
|
+
* with an assembled {@link BillingEvent}. The concrete `BillingPublisher` (the
|
|
9
|
+
* durable-first jsonl ledger + built-in POST) lives in the DAEMON and registers
|
|
10
|
+
* itself as the sink at bootstrap via {@link setBillingSink}. Core imports NOTHING
|
|
11
|
+
* from the daemon — exactly the `setWebhookSink` / `setAuditSink` precedent.
|
|
12
|
+
*
|
|
13
|
+
* A SECOND slot holds the active {@link BillingConfig} ({@link setBillingCaptureConfig}
|
|
14
|
+
* / {@link getBillingCaptureConfig}). The capture hook reads it to GATE assembly:
|
|
15
|
+
* absent/`enabled:false` ⇒ the hook does nothing (not even event assembly), so
|
|
16
|
+
* billing-disabled is byte-identical zero regression. The daemon sets BOTH slots
|
|
17
|
+
* together (config + sink) when billing is enabled and clears BOTH when disabled.
|
|
18
|
+
*
|
|
19
|
+
* HARD CONTRACT (design D7 / risk "a billing POST blocking the request path"):
|
|
20
|
+
* {@link publishBillingEvent} NEVER throws and NEVER awaits — it hands the event
|
|
21
|
+
* to the sink (which durably appends + enqueues delivery and returns immediately)
|
|
22
|
+
* and swallows any sink error, so a slow/failing/throwing publisher can never
|
|
23
|
+
* affect the relay path. Absent a sink it is a pure no-op.
|
|
24
|
+
*
|
|
25
|
+
* @module @omnicross/core/pipeline/billingEmit
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** The sink the daemon registers; it MUST durably-append-and-return (never block/throw). */
|
|
29
|
+
type BillingSink = (event: BillingEvent) => void;
|
|
30
|
+
/** Install (or clear, with `null`) the billing sink. Idempotent; last write wins. */
|
|
31
|
+
declare function setBillingSink(fn: BillingSink | null): void;
|
|
32
|
+
/**
|
|
33
|
+
* Install (or clear, with `null`) the active billing config. `null` (or an
|
|
34
|
+
* `enabled:false` config) disables the capture entirely — the hook does no work.
|
|
35
|
+
*/
|
|
36
|
+
declare function setBillingCaptureConfig(config: BillingConfig | null): void;
|
|
37
|
+
/** The active billing config, or `null` when billing is disabled/unset. */
|
|
38
|
+
declare function getBillingCaptureConfig(): BillingConfig | null;
|
|
39
|
+
/**
|
|
40
|
+
* Publish one billing event to the registered sink. A no-op when no sink is set
|
|
41
|
+
* (zero regression). NEVER throws (a misbehaving sink is swallowed) and NEVER
|
|
42
|
+
* awaits (the sink durably appends + enqueues delivery, then returns) — so no
|
|
43
|
+
* relay path is ever delayed.
|
|
44
|
+
*/
|
|
45
|
+
declare function publishBillingEvent(event: BillingEvent): void;
|
|
46
|
+
/** TEST SEAM — clear both slots so a suite starts from the no-billing baseline. */
|
|
47
|
+
declare function __resetBillingSinkForTests(): void;
|
|
48
|
+
|
|
49
|
+
export { type BillingSink, __resetBillingSinkForTests, getBillingCaptureConfig, publishBillingEvent, setBillingCaptureConfig, setBillingSink };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__resetBillingSinkForTests,
|
|
3
|
+
getBillingCaptureConfig,
|
|
4
|
+
publishBillingEvent,
|
|
5
|
+
setBillingCaptureConfig,
|
|
6
|
+
setBillingSink
|
|
7
|
+
} from "../chunk-TKJMZBAH.js";
|
|
8
|
+
export {
|
|
9
|
+
__resetBillingSinkForTests,
|
|
10
|
+
getBillingCaptureConfig,
|
|
11
|
+
publishBillingEvent,
|
|
12
|
+
setBillingCaptureConfig,
|
|
13
|
+
setBillingSink
|
|
14
|
+
};
|
|
@@ -1,70 +1,6 @@
|
|
|
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});
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(executeProviderCall_exports);
|
|
26
|
-
async function executeProviderCall(ctx) {
|
|
27
|
-
const {
|
|
28
|
-
executor,
|
|
29
|
-
request,
|
|
30
|
-
provider,
|
|
31
|
-
chain,
|
|
32
|
-
endpointTransformer,
|
|
33
|
-
extendedContext,
|
|
34
|
-
resolveUrl,
|
|
35
|
-
buildHeaders,
|
|
36
|
-
prepareBody,
|
|
37
|
-
fetchFn,
|
|
38
|
-
runResponseChain = false,
|
|
39
|
-
responseChainRequest
|
|
40
|
-
} = ctx;
|
|
41
|
-
const { requestBody, config } = await executor.executeRequestChain(
|
|
42
|
-
request,
|
|
43
|
-
provider,
|
|
44
|
-
chain,
|
|
45
|
-
{ endpointTransformer, extendedContext }
|
|
46
|
-
);
|
|
47
|
-
const finalBody = prepareBody ? await prepareBody(requestBody, config) : requestBody;
|
|
48
|
-
const url = resolveUrl(config);
|
|
49
|
-
const headers = buildHeaders(config);
|
|
50
|
-
const fetched = await fetchFn(url, headers, finalBody);
|
|
51
|
-
let response = fetched;
|
|
52
|
-
if (runResponseChain) {
|
|
53
|
-
response = await executor.executeResponseChain(
|
|
54
|
-
// Preserve the EXACT first arg each site passed: proxy → requestBody,
|
|
55
|
-
// unified ingresses → their pre-transform request. The caller supplies
|
|
56
|
-
// it via `responseChainRequest`; fall back to `requestBody` (the proxy
|
|
57
|
-
// shape) so the contract is never silently `undefined`.
|
|
58
|
-
responseChainRequest ?? requestBody,
|
|
59
|
-
fetched,
|
|
60
|
-
provider,
|
|
61
|
-
chain,
|
|
62
|
-
{ endpointTransformer }
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
return { response, requestBody, finalBody, config, url, headers };
|
|
66
|
-
}
|
|
67
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
68
|
-
0 && (module.exports = {
|
|
69
|
-
executeProviderCall
|
|
70
|
-
});
|
|
3
|
+
var _chunkKUU2RNG6cjs = require('../chunk-KUU2RNG6.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
exports.executeProviderCall = _chunkKUU2RNG6cjs.executeProviderCall;
|
|
@@ -1,45 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
executor,
|
|
5
|
-
request,
|
|
6
|
-
provider,
|
|
7
|
-
chain,
|
|
8
|
-
endpointTransformer,
|
|
9
|
-
extendedContext,
|
|
10
|
-
resolveUrl,
|
|
11
|
-
buildHeaders,
|
|
12
|
-
prepareBody,
|
|
13
|
-
fetchFn,
|
|
14
|
-
runResponseChain = false,
|
|
15
|
-
responseChainRequest
|
|
16
|
-
} = ctx;
|
|
17
|
-
const { requestBody, config } = await executor.executeRequestChain(
|
|
18
|
-
request,
|
|
19
|
-
provider,
|
|
20
|
-
chain,
|
|
21
|
-
{ endpointTransformer, extendedContext }
|
|
22
|
-
);
|
|
23
|
-
const finalBody = prepareBody ? await prepareBody(requestBody, config) : requestBody;
|
|
24
|
-
const url = resolveUrl(config);
|
|
25
|
-
const headers = buildHeaders(config);
|
|
26
|
-
const fetched = await fetchFn(url, headers, finalBody);
|
|
27
|
-
let response = fetched;
|
|
28
|
-
if (runResponseChain) {
|
|
29
|
-
response = await executor.executeResponseChain(
|
|
30
|
-
// Preserve the EXACT first arg each site passed: proxy → requestBody,
|
|
31
|
-
// unified ingresses → their pre-transform request. The caller supplies
|
|
32
|
-
// it via `responseChainRequest`; fall back to `requestBody` (the proxy
|
|
33
|
-
// shape) so the contract is never silently `undefined`.
|
|
34
|
-
responseChainRequest ?? requestBody,
|
|
35
|
-
fetched,
|
|
36
|
-
provider,
|
|
37
|
-
chain,
|
|
38
|
-
{ endpointTransformer }
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
return { response, requestBody, finalBody, config, url, headers };
|
|
42
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
executeProviderCall
|
|
3
|
+
} from "../chunk-JO5NLTLY.js";
|
|
43
4
|
export {
|
|
44
5
|
executeProviderCall
|
|
45
6
|
};
|
|
@@ -1,47 +1,6 @@
|
|
|
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});
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(resolveProviderChain_exports);
|
|
26
|
-
async function resolveProviderChain(llmConfig, providerId, model) {
|
|
27
|
-
const cachedChain = await llmConfig.resolveTransformerChain(providerId, model);
|
|
28
|
-
const mainTransformer = await llmConfig.getMainTransformer(providerId);
|
|
29
|
-
const chain = {
|
|
30
|
-
providerTransformers: [...cachedChain.providerTransformers],
|
|
31
|
-
modelTransformers: [...cachedChain.modelTransformers]
|
|
32
|
-
};
|
|
33
|
-
if (mainTransformer) {
|
|
34
|
-
const alreadyInChain = chain.providerTransformers.some(
|
|
35
|
-
(t) => t.name === mainTransformer.name
|
|
36
|
-
);
|
|
37
|
-
if (!alreadyInChain) {
|
|
38
|
-
chain.providerTransformers.unshift(mainTransformer);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
const hasTransformers = chain.providerTransformers.length > 0 || chain.modelTransformers.length > 0;
|
|
42
|
-
return { chain, mainTransformer, hasTransformers };
|
|
43
|
-
}
|
|
44
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
45
|
-
0 && (module.exports = {
|
|
46
|
-
resolveProviderChain
|
|
47
|
-
});
|
|
3
|
+
var _chunkQXD4MV2Xcjs = require('../chunk-QXD4MV2X.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
exports.resolveProviderChain = _chunkQXD4MV2Xcjs.resolveProviderChain;
|