@omnicross/core 0.1.0 → 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 +24 -0
- package/dist/ApiConverter.d.cts +82 -0
- package/dist/ApiConverter.d.ts +82 -0
- package/dist/ApiConverter.js +24 -0
- package/dist/BuiltinToolExecutor-BluWyeob.d.ts +81 -0
- package/dist/BuiltinToolExecutor-CS2WpXhM.d.cts +81 -0
- package/dist/CompletionService-D3a47vdU.d.cts +213 -0
- package/dist/CompletionService-DdWaAxq0.d.ts +213 -0
- package/dist/{ProviderProxy-f_8ziIhW.d.cts → ProviderProxy-C-xqrkKi.d.ts} +7 -2
- package/dist/{ProviderProxy-vjt8sQQk.d.ts → ProviderProxy-CnMQYN59.d.cts} +7 -2
- 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 +12 -0
- package/dist/completion/BuiltinToolExecutor.d.cts +4 -0
- package/dist/completion/BuiltinToolExecutor.d.ts +4 -0
- package/dist/completion/BuiltinToolExecutor.js +12 -0
- package/dist/completion/CompletionService.cjs +38 -0
- package/dist/completion/CompletionService.d.cts +22 -0
- package/dist/completion/CompletionService.d.ts +22 -0
- package/dist/completion/CompletionService.js +38 -0
- package/dist/completion/NativeSearchInjector.cjs +12 -0
- package/dist/completion/NativeSearchInjector.d.cts +42 -0
- package/dist/completion/NativeSearchInjector.d.ts +42 -0
- package/dist/completion/NativeSearchInjector.js +12 -0
- package/dist/completion/ProviderSearchInjector.cjs +60 -0
- package/dist/completion/ProviderSearchInjector.d.cts +47 -0
- package/dist/completion/ProviderSearchInjector.d.ts +47 -0
- package/dist/completion/ProviderSearchInjector.js +60 -0
- package/dist/completion/native-search-types.cjs +14 -0
- package/dist/completion/native-search-types.d.cts +3 -0
- package/dist/completion/native-search-types.d.ts +3 -0
- package/dist/completion/native-search-types.js +14 -0
- package/dist/completion/openrouter-headers.cjs +16 -0
- package/dist/completion/openrouter-headers.d.cts +44 -0
- package/dist/completion/openrouter-headers.d.ts +44 -0
- package/dist/completion/openrouter-headers.js +16 -0
- package/dist/completion/openrouter-models.cjs +29 -0
- package/dist/completion/openrouter-models.d.cts +27 -0
- package/dist/completion/openrouter-models.d.ts +27 -0
- package/dist/completion/openrouter-models.js +29 -0
- package/dist/completion/types.cjs +1 -0
- package/dist/completion/types.d.cts +3 -0
- package/dist/completion/types.d.ts +3 -0
- package/dist/completion/types.js +0 -0
- package/dist/completion/url-builder.cjs +24 -0
- package/dist/completion/url-builder.d.cts +87 -0
- package/dist/completion/url-builder.d.ts +87 -0
- package/dist/completion/url-builder.js +24 -0
- package/dist/completion.cjs +55 -3989
- package/dist/completion.d.cts +150 -8
- package/dist/completion.d.ts +150 -8
- package/dist/completion.js +63 -3953
- package/dist/index.cjs +197 -10428
- package/dist/index.d.cts +35 -91
- package/dist/index.d.ts +35 -91
- package/dist/index.js +125 -10267
- package/dist/logger-4GvQNzhE.d.cts +22 -0
- package/dist/logger-4GvQNzhE.d.ts +22 -0
- package/dist/outbound-api/routeResolver.cjs +11 -0
- package/dist/outbound-api/routeResolver.d.cts +19 -0
- package/dist/outbound-api/routeResolver.d.ts +19 -0
- package/dist/outbound-api/routeResolver.js +11 -0
- package/dist/outbound-api/subscriptionRegistryPort.cjs +7 -37
- package/dist/outbound-api/subscriptionRegistryPort.d.cts +7 -3
- package/dist/outbound-api/subscriptionRegistryPort.d.ts +7 -3
- package/dist/outbound-api/subscriptionRegistryPort.js +4 -8
- package/dist/outbound-api/types.cjs +1 -0
- package/dist/{types-CbCN2NQP.d.ts → outbound-api/types.d.cts} +18 -3
- package/dist/{types-CGGrKqC_.d.cts → outbound-api/types.d.ts} +18 -3
- package/dist/outbound-api/types.js +0 -0
- package/dist/outbound-api.cjs +35 -5220
- package/dist/outbound-api.d.cts +16 -88
- package/dist/outbound-api.d.ts +16 -88
- package/dist/outbound-api.js +54 -5193
- package/dist/pipeline/AuthSource.cjs +1 -0
- package/dist/pipeline/AuthSource.d.cts +101 -0
- package/dist/pipeline/AuthSource.d.ts +101 -0
- package/dist/pipeline/AuthSource.js +0 -0
- package/dist/pipeline/LlmConfigProviderAuth.cjs +8 -0
- package/dist/pipeline/LlmConfigProviderAuth.d.cts +87 -0
- package/dist/pipeline/LlmConfigProviderAuth.d.ts +87 -0
- package/dist/pipeline/LlmConfigProviderAuth.js +8 -0
- package/dist/pipeline/SubscriptionAuthSource.cjs +6 -128
- package/dist/pipeline/SubscriptionAuthSource.d.cts +165 -3
- package/dist/pipeline/SubscriptionAuthSource.d.ts +165 -3
- package/dist/pipeline/SubscriptionAuthSource.js +5 -99
- package/dist/pipeline/SubscriptionAuthStrategy.cjs +1 -18
- package/dist/pipeline/executeProviderCall.cjs +6 -0
- package/dist/pipeline/executeProviderCall.d.cts +149 -0
- package/dist/pipeline/executeProviderCall.d.ts +149 -0
- package/dist/pipeline/executeProviderCall.js +6 -0
- package/dist/pipeline/resolveProviderChain.cjs +6 -0
- package/dist/pipeline/resolveProviderChain.d.cts +58 -0
- package/dist/pipeline/resolveProviderChain.d.ts +58 -0
- package/dist/pipeline/resolveProviderChain.js +6 -0
- package/dist/pipeline/resolveSubscriptionChain.cjs +6 -0
- package/dist/pipeline/resolveSubscriptionChain.d.cts +68 -0
- package/dist/pipeline/resolveSubscriptionChain.d.ts +68 -0
- package/dist/pipeline/resolveSubscriptionChain.js +6 -0
- 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 -0
- package/dist/ports/provider-config-source.d.cts +51 -0
- package/dist/ports/provider-config-source.d.ts +51 -0
- package/dist/ports/provider-config-source.js +0 -0
- 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 -0
- package/dist/ports/web-search-backend.d.cts +29 -0
- package/dist/ports/web-search-backend.d.ts +29 -0
- package/dist/ports/web-search-backend.js +0 -0
- package/dist/ports.cjs +1 -18
- package/dist/ports.d.cts +16 -8
- package/dist/ports.d.ts +16 -8
- package/dist/provider-proxy/ProviderProxy.cjs +40 -0
- package/dist/provider-proxy/ProviderProxy.d.cts +17 -0
- package/dist/provider-proxy/ProviderProxy.d.ts +17 -0
- package/dist/provider-proxy/ProviderProxy.js +40 -0
- package/dist/provider-proxy/ingress/providerProxyShared.cjs +35 -2941
- package/dist/provider-proxy/ingress/providerProxyShared.d.cts +7 -3
- package/dist/provider-proxy/ingress/providerProxyShared.d.ts +7 -3
- 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 +407 -8
- package/dist/provider-proxy/types.d.ts +407 -8
- package/dist/provider-proxy.cjs +35 -4654
- package/dist/provider-proxy.d.cts +10 -6
- package/dist/provider-proxy.d.ts +10 -6
- package/dist/provider-proxy.js +39 -4627
- package/dist/routeResolver-BrbK6ja9.d.cts +88 -0
- package/dist/routeResolver-HE-ZO0fO.d.ts +88 -0
- 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 +8 -0
- package/dist/transformer/anthropicBetaInject.d.cts +20 -0
- package/dist/transformer/anthropicBetaInject.d.ts +20 -0
- package/dist/transformer/anthropicBetaInject.js +8 -0
- package/dist/transformer/transformers/AnthropicTransformer.cjs +6 -0
- package/dist/transformer/transformers/AnthropicTransformer.d.cts +148 -0
- package/dist/transformer/transformers/AnthropicTransformer.d.ts +148 -0
- package/dist/transformer/transformers/AnthropicTransformer.js +6 -0
- 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 +6 -0
- package/dist/transformer/transformers/ReasoningTransformer.d.cts +47 -0
- package/dist/transformer/transformers/ReasoningTransformer.d.ts +47 -0
- package/dist/transformer/transformers/ReasoningTransformer.js +6 -0
- package/dist/transformer/transformers.cjs +39 -0
- package/dist/transformer/transformers.d.cts +100 -0
- package/dist/transformer/transformers.d.ts +100 -0
- package/dist/transformer/transformers.js +39 -0
- package/dist/transformer/types.cjs +1 -18
- package/dist/transformer.cjs +13 -3726
- package/dist/transformer.d.cts +8 -31
- package/dist/transformer.d.ts +8 -31
- package/dist/transformer.js +17 -3706
- package/dist/types-BScIHmPr.d.cts +153 -0
- package/dist/types-BScIHmPr.d.ts +153 -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 +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 +3 -3
- package/dist/ApiKeyPoolService-BmMkau07.d.cts +0 -170
- package/dist/ApiKeyPoolService-BmMkau07.d.ts +0 -170
- package/dist/SubscriptionAuthSource-Cr4fVEYY.d.cts +0 -264
- package/dist/SubscriptionAuthSource-D89zmiSS.d.ts +0 -264
- package/dist/index-BTSmc9Sm.d.ts +0 -645
- package/dist/index-DXazdTzZ.d.cts +0 -645
- package/dist/types-DCzHkhJt.d.ts +0 -467
- package/dist/types-DZIQbgp0.d.cts +0 -467
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ProviderConfigSource } from './ports/provider-config-source.cjs';
|
|
2
|
+
import { IngressFormat, RouteContext } from './provider-proxy/types.cjs';
|
|
3
|
+
import { OutboundEndpoint, EndpointRoutingConfig, RequestRole } from './outbound-api/types.cjs';
|
|
4
|
+
import { SubscriptionProviderId } from '@omnicross/contracts/subscription-types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* subscriptionSupport — single source of truth for (a) which provider ids are
|
|
8
|
+
* subscription-backed and (b) which outbound endpoints can soundly serve a
|
|
9
|
+
* subscription route (`outbound-api-server`, design D2 + review M1/m1).
|
|
10
|
+
*
|
|
11
|
+
* The subscription-id catalog mirrors `SubscriptionProviderRegistry`'s ids; the
|
|
12
|
+
* static fast-path is backstopped at runtime by a live registry lookup (see
|
|
13
|
+
* `isSubscriptionProviderId`) so it degrades gracefully if it drifts. Both
|
|
14
|
+
* `routeResolver` and `apiServerHandlers` import from here — no duplicated set.
|
|
15
|
+
*
|
|
16
|
+
* @module outbound-api/subscriptionSupport
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The registry-aligned subscription provider ids — the outbound layer's SSOT
|
|
21
|
+
* fast-path. NOTE: `SubscriptionProviderId` is currently a `z.string()` alias,
|
|
22
|
+
* so this `readonly SubscriptionProviderId[]` typing does NOT compile-enforce
|
|
23
|
+
* alignment with the registry; drift is instead tolerated at runtime by
|
|
24
|
+
* `isSubscriptionProviderId`'s live `registry.getProfile` fallback.
|
|
25
|
+
*/
|
|
26
|
+
declare const SUBSCRIPTION_PROVIDER_IDS: readonly SubscriptionProviderId[];
|
|
27
|
+
/**
|
|
28
|
+
* True when a provider id refers to a subscription-backed provider. Checks the
|
|
29
|
+
* registry-aligned static catalog first, then falls back to a live registry
|
|
30
|
+
* lookup (so a registry addition is honored even before this list is updated).
|
|
31
|
+
*
|
|
32
|
+
* NOTE (review m2): this classifies by id string. The resolver MUST confirm the
|
|
33
|
+
* id does not resolve to a real BYO provider row before treating it as
|
|
34
|
+
* subscription-backed — see `routeResolver` (BYO rows win).
|
|
35
|
+
*/
|
|
36
|
+
declare function isSubscriptionProviderId(providerId: string): boolean;
|
|
37
|
+
/** True when the endpoint's ingress can soundly serve a subscription route. */
|
|
38
|
+
declare function endpointSupportsSubscription(endpoint: OutboundEndpoint): boolean;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* routeResolver — turn an endpoint's `EndpointRoutingConfig` + the detected
|
|
42
|
+
* request role into a `RouteContext` for the shared `provider-proxy` dispatch
|
|
43
|
+
* (`outbound-api-server`, design D2).
|
|
44
|
+
*
|
|
45
|
+
* Steps:
|
|
46
|
+
* 1. Pick the model for the role (vision → default fallback when `visionModel`
|
|
47
|
+
* is unset; vision is optional).
|
|
48
|
+
* 2. Parse the chosen `"providerId,modelId"` ref.
|
|
49
|
+
* 3. Gate by `useSubscription`: OFF → only BYO-key providers are eligible
|
|
50
|
+
* (subscription-backed providers excluded); ON → subscription-backed
|
|
51
|
+
* providers are eligible.
|
|
52
|
+
* 4. Resolve the provider (BYO via the `ProviderConfigSource`; subscription via the
|
|
53
|
+
* subscription registry) and build the `RouteContext` exactly as the
|
|
54
|
+
* internal callers do.
|
|
55
|
+
* 5. Return a clear `503`-style error when the role's required model is unset,
|
|
56
|
+
* the provider is unavailable, or the subscription gate excludes it.
|
|
57
|
+
*
|
|
58
|
+
* @module outbound-api/routeResolver
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/** A 503-style resolution failure. */
|
|
62
|
+
interface RouteResolveError {
|
|
63
|
+
status: number;
|
|
64
|
+
message: string;
|
|
65
|
+
}
|
|
66
|
+
type RouteResolveResult = {
|
|
67
|
+
ok: true;
|
|
68
|
+
route: RouteContext;
|
|
69
|
+
usedRole: RequestRole;
|
|
70
|
+
} | {
|
|
71
|
+
ok: false;
|
|
72
|
+
error: RouteResolveError;
|
|
73
|
+
};
|
|
74
|
+
/** Parse a `"providerId,modelId"` ref. Returns null on a malformed/empty ref. */
|
|
75
|
+
declare function parseModelRef(ref: string | undefined): {
|
|
76
|
+
providerId: string;
|
|
77
|
+
modelId: string;
|
|
78
|
+
} | null;
|
|
79
|
+
/** Resolve a route for one authenticated outbound request. */
|
|
80
|
+
declare function resolveRoute(args: {
|
|
81
|
+
config: EndpointRoutingConfig;
|
|
82
|
+
role: RequestRole;
|
|
83
|
+
ingressFormat: IngressFormat;
|
|
84
|
+
llmConfig: ProviderConfigSource;
|
|
85
|
+
sessionId?: string | null;
|
|
86
|
+
}): Promise<RouteResolveResult>;
|
|
87
|
+
|
|
88
|
+
export { type RouteResolveError as R, SUBSCRIPTION_PROVIDER_IDS as S, type RouteResolveResult as a, endpointSupportsSubscription as e, isSubscriptionProviderId as i, parseModelRef as p, resolveRoute as r };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ProviderConfigSource } from './ports/provider-config-source.js';
|
|
2
|
+
import { IngressFormat, RouteContext } from './provider-proxy/types.js';
|
|
3
|
+
import { OutboundEndpoint, EndpointRoutingConfig, RequestRole } from './outbound-api/types.js';
|
|
4
|
+
import { SubscriptionProviderId } from '@omnicross/contracts/subscription-types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* subscriptionSupport — single source of truth for (a) which provider ids are
|
|
8
|
+
* subscription-backed and (b) which outbound endpoints can soundly serve a
|
|
9
|
+
* subscription route (`outbound-api-server`, design D2 + review M1/m1).
|
|
10
|
+
*
|
|
11
|
+
* The subscription-id catalog mirrors `SubscriptionProviderRegistry`'s ids; the
|
|
12
|
+
* static fast-path is backstopped at runtime by a live registry lookup (see
|
|
13
|
+
* `isSubscriptionProviderId`) so it degrades gracefully if it drifts. Both
|
|
14
|
+
* `routeResolver` and `apiServerHandlers` import from here — no duplicated set.
|
|
15
|
+
*
|
|
16
|
+
* @module outbound-api/subscriptionSupport
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The registry-aligned subscription provider ids — the outbound layer's SSOT
|
|
21
|
+
* fast-path. NOTE: `SubscriptionProviderId` is currently a `z.string()` alias,
|
|
22
|
+
* so this `readonly SubscriptionProviderId[]` typing does NOT compile-enforce
|
|
23
|
+
* alignment with the registry; drift is instead tolerated at runtime by
|
|
24
|
+
* `isSubscriptionProviderId`'s live `registry.getProfile` fallback.
|
|
25
|
+
*/
|
|
26
|
+
declare const SUBSCRIPTION_PROVIDER_IDS: readonly SubscriptionProviderId[];
|
|
27
|
+
/**
|
|
28
|
+
* True when a provider id refers to a subscription-backed provider. Checks the
|
|
29
|
+
* registry-aligned static catalog first, then falls back to a live registry
|
|
30
|
+
* lookup (so a registry addition is honored even before this list is updated).
|
|
31
|
+
*
|
|
32
|
+
* NOTE (review m2): this classifies by id string. The resolver MUST confirm the
|
|
33
|
+
* id does not resolve to a real BYO provider row before treating it as
|
|
34
|
+
* subscription-backed — see `routeResolver` (BYO rows win).
|
|
35
|
+
*/
|
|
36
|
+
declare function isSubscriptionProviderId(providerId: string): boolean;
|
|
37
|
+
/** True when the endpoint's ingress can soundly serve a subscription route. */
|
|
38
|
+
declare function endpointSupportsSubscription(endpoint: OutboundEndpoint): boolean;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* routeResolver — turn an endpoint's `EndpointRoutingConfig` + the detected
|
|
42
|
+
* request role into a `RouteContext` for the shared `provider-proxy` dispatch
|
|
43
|
+
* (`outbound-api-server`, design D2).
|
|
44
|
+
*
|
|
45
|
+
* Steps:
|
|
46
|
+
* 1. Pick the model for the role (vision → default fallback when `visionModel`
|
|
47
|
+
* is unset; vision is optional).
|
|
48
|
+
* 2. Parse the chosen `"providerId,modelId"` ref.
|
|
49
|
+
* 3. Gate by `useSubscription`: OFF → only BYO-key providers are eligible
|
|
50
|
+
* (subscription-backed providers excluded); ON → subscription-backed
|
|
51
|
+
* providers are eligible.
|
|
52
|
+
* 4. Resolve the provider (BYO via the `ProviderConfigSource`; subscription via the
|
|
53
|
+
* subscription registry) and build the `RouteContext` exactly as the
|
|
54
|
+
* internal callers do.
|
|
55
|
+
* 5. Return a clear `503`-style error when the role's required model is unset,
|
|
56
|
+
* the provider is unavailable, or the subscription gate excludes it.
|
|
57
|
+
*
|
|
58
|
+
* @module outbound-api/routeResolver
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/** A 503-style resolution failure. */
|
|
62
|
+
interface RouteResolveError {
|
|
63
|
+
status: number;
|
|
64
|
+
message: string;
|
|
65
|
+
}
|
|
66
|
+
type RouteResolveResult = {
|
|
67
|
+
ok: true;
|
|
68
|
+
route: RouteContext;
|
|
69
|
+
usedRole: RequestRole;
|
|
70
|
+
} | {
|
|
71
|
+
ok: false;
|
|
72
|
+
error: RouteResolveError;
|
|
73
|
+
};
|
|
74
|
+
/** Parse a `"providerId,modelId"` ref. Returns null on a malformed/empty ref. */
|
|
75
|
+
declare function parseModelRef(ref: string | undefined): {
|
|
76
|
+
providerId: string;
|
|
77
|
+
modelId: string;
|
|
78
|
+
} | null;
|
|
79
|
+
/** Resolve a route for one authenticated outbound request. */
|
|
80
|
+
declare function resolveRoute(args: {
|
|
81
|
+
config: EndpointRoutingConfig;
|
|
82
|
+
role: RequestRole;
|
|
83
|
+
ingressFormat: IngressFormat;
|
|
84
|
+
llmConfig: ProviderConfigSource;
|
|
85
|
+
sessionId?: string | null;
|
|
86
|
+
}): Promise<RouteResolveResult>;
|
|
87
|
+
|
|
88
|
+
export { type RouteResolveError as R, SUBSCRIPTION_PROVIDER_IDS as S, type RouteResolveResult as a, endpointSupportsSubscription as e, isSubscriptionProviderId as i, parseModelRef as p, resolveRoute as r };
|
package/dist/serializeError.cjs
CHANGED
|
@@ -1,82 +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(serializeError_exports);
|
|
26
|
-
function serializeError(err) {
|
|
27
|
-
if (err == null) return "Unknown error (null)";
|
|
28
|
-
if (err instanceof Error) {
|
|
29
|
-
let msg = err.message || err.name || "Error";
|
|
30
|
-
if (err.cause) {
|
|
31
|
-
msg += ` [cause: ${serializeError(err.cause)}]`;
|
|
32
|
-
}
|
|
33
|
-
const anyErr = err;
|
|
34
|
-
if (anyErr.status != null) msg += ` (status: ${anyErr.status})`;
|
|
35
|
-
else if (anyErr.code != null) msg += ` (code: ${anyErr.code})`;
|
|
36
|
-
return msg;
|
|
37
|
-
}
|
|
38
|
-
if (typeof err === "string") return err || "Empty error string";
|
|
39
|
-
if (typeof err !== "object") return String(err);
|
|
40
|
-
const obj = err;
|
|
41
|
-
if (typeof obj.message === "string" && obj.message) {
|
|
42
|
-
let msg = obj.message;
|
|
43
|
-
if (obj.status != null) msg += ` (status: ${obj.status})`;
|
|
44
|
-
else if (obj.code != null) msg += ` (code: ${obj.code})`;
|
|
45
|
-
if (typeof obj.type === "string") msg += ` [type: ${obj.type}]`;
|
|
46
|
-
return msg;
|
|
47
|
-
}
|
|
48
|
-
if (typeof obj.error === "string" && obj.error) {
|
|
49
|
-
return obj.error;
|
|
50
|
-
}
|
|
51
|
-
if (obj.error && typeof obj.error === "object") {
|
|
52
|
-
const inner = obj.error;
|
|
53
|
-
if (typeof inner.message === "string" && inner.message) {
|
|
54
|
-
let msg = inner.message;
|
|
55
|
-
if (typeof inner.type === "string") msg += ` [type: ${inner.type}]`;
|
|
56
|
-
return msg;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
try {
|
|
60
|
-
const json = JSON.stringify(err, getCircularReplacer(), 2);
|
|
61
|
-
if (json && json.length > 1e3) {
|
|
62
|
-
return json.slice(0, 1e3) + "... (truncated)";
|
|
63
|
-
}
|
|
64
|
-
return json || "Unserializable error";
|
|
65
|
-
} catch {
|
|
66
|
-
return `Unserializable error: ${Object.prototype.toString.call(err)}`;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function getCircularReplacer() {
|
|
70
|
-
const seen = /* @__PURE__ */ new WeakSet();
|
|
71
|
-
return (_key, value) => {
|
|
72
|
-
if (typeof value === "object" && value !== null) {
|
|
73
|
-
if (seen.has(value)) return "[Circular]";
|
|
74
|
-
seen.add(value);
|
|
75
|
-
}
|
|
76
|
-
return value;
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
80
|
-
0 && (module.exports = {
|
|
81
|
-
serializeError
|
|
82
|
-
});
|
|
3
|
+
var _chunkSVNDB62Dcjs = require('./chunk-SVNDB62D.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
exports.serializeError = _chunkSVNDB62Dcjs.serializeError;
|
package/dist/serializeError.js
CHANGED
|
@@ -1,57 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
if (err instanceof Error) {
|
|
5
|
-
let msg = err.message || err.name || "Error";
|
|
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
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
serializeError
|
|
3
|
+
} from "./chunk-AVYJ4YBN.js";
|
|
55
4
|
export {
|
|
56
5
|
serializeError
|
|
57
6
|
};
|