@omnicross/core 0.1.6 → 0.1.8
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 +2 -2
- package/dist/ApiConverter.js +1 -1
- package/dist/{ProviderProxy-C-xqrkKi.d.ts → ProviderProxy--ROec6VI.d.ts} +22 -3
- package/dist/{ProviderProxy-CnMQYN59.d.cts → ProviderProxy-QdwNV6l1.d.cts} +22 -3
- package/dist/auth/GeminiCodeAssistProjectResolver.cjs +4 -3
- package/dist/auth/GeminiCodeAssistProjectResolver.js +3 -2
- package/dist/{chunk-3Z5BQZFM.cjs → chunk-235MXAGX.cjs} +3 -1
- package/dist/{chunk-SQYVORNP.cjs → chunk-26K6T2YS.cjs} +1520 -523
- package/dist/{chunk-DLXZEZWO.cjs → chunk-2E42SAW3.cjs} +42 -4
- package/dist/{chunk-7AK7B36B.cjs → chunk-2Z4XM3H5.cjs} +6 -6
- package/dist/{chunk-OEWZUX4G.js → chunk-32O35CIF.js} +9 -20
- package/dist/chunk-3SCOLIPT.cjs +63 -0
- package/dist/{chunk-SYQF7OIR.js → chunk-3WD4HTR2.js} +2 -0
- package/dist/{chunk-AT7B7SOZ.js → chunk-5NJLQ6T6.js} +21 -10
- package/dist/chunk-5RSZYQJH.cjs +62 -0
- package/dist/{chunk-IFXJ2BG7.js → chunk-7C7DET6S.js} +51 -6
- package/dist/{chunk-SNYBEXLB.cjs → chunk-EPN67EGP.cjs} +6 -1
- package/dist/chunk-FU7EAR73.js +62 -0
- package/dist/{chunk-UX7VWA46.js → chunk-FXR6N3SR.js} +39 -1
- package/dist/{chunk-WYTEQ4Q5.cjs → chunk-GDIXXKF2.cjs} +21 -10
- package/dist/{chunk-WB6PH56J.js → chunk-GFIZ6LQI.js} +12 -8
- package/dist/chunk-GL6XM527.js +61 -0
- package/dist/{chunk-EJLH6NFT.cjs → chunk-J3QQ6JS5.cjs} +12 -8
- package/dist/{chunk-VRFBB5DB.js → chunk-MYYR3HZL.js} +4 -4
- package/dist/{chunk-YJVHCHQX.js → chunk-N7OOJI5V.js} +46 -2
- package/dist/chunk-NKVZ6Z3Y.cjs +61 -0
- package/dist/chunk-OTZC4TNH.cjs +79 -0
- package/dist/{chunk-6VUQPOV3.cjs → chunk-OVQBNVSV.cjs} +10 -21
- package/dist/{chunk-4VLRHHFE.cjs → chunk-OXHNSZ53.cjs} +9 -11
- package/dist/{chunk-6CL5HTPQ.js → chunk-PEGTIPB3.js} +8 -10
- package/dist/chunk-PO3XB56Z.js +79 -0
- package/dist/{chunk-UDCC7EMR.js → chunk-QYC54PMG.js} +1242 -245
- package/dist/{chunk-SIZQQD6T.js → chunk-RJ5ZGNI3.js} +42 -5
- package/dist/{chunk-KCVJWJST.cjs → chunk-RJUONLUQ.cjs} +47 -10
- package/dist/{chunk-BPKCU575.js → chunk-UAPBLNN2.js} +6 -1
- package/dist/{chunk-UNWKG6EI.cjs → chunk-XPIOJQS2.cjs} +51 -6
- package/dist/chunk-XXFYLL7R.js +63 -0
- package/dist/{chunk-YK57NMIF.cjs → chunk-YWL7YZWS.cjs} +47 -3
- package/dist/completion/ApiKeyPoolService.cjs +32 -1
- package/dist/completion/ApiKeyPoolService.d.cts +17 -1
- package/dist/completion/ApiKeyPoolService.d.ts +17 -1
- package/dist/completion/ApiKeyPoolService.js +31 -0
- package/dist/completion/CompletionService.cjs +23 -19
- package/dist/completion/CompletionService.d.cts +1 -0
- package/dist/completion/CompletionService.d.ts +1 -0
- package/dist/completion/CompletionService.js +22 -18
- package/dist/completion.cjs +23 -19
- package/dist/completion.d.cts +1 -0
- package/dist/completion.d.ts +1 -0
- package/dist/completion.js +22 -18
- package/dist/index.cjs +81 -21
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +82 -22
- package/dist/outbound-api/auditCapture.cjs +2 -2
- package/dist/outbound-api/auditCapture.d.cts +3 -4
- package/dist/outbound-api/auditCapture.d.ts +3 -4
- package/dist/outbound-api/auditCapture.js +1 -1
- package/dist/outbound-api/routeResolver.d.cts +4 -3
- package/dist/outbound-api/routeResolver.d.ts +4 -3
- package/dist/outbound-api/subscriptionRegistryPort.d.cts +1 -0
- package/dist/outbound-api/subscriptionRegistryPort.d.ts +1 -0
- package/dist/outbound-api/types.d.cts +3 -2
- package/dist/outbound-api/types.d.ts +3 -2
- package/dist/outbound-api.cjs +23 -19
- package/dist/outbound-api.d.cts +8 -6
- package/dist/outbound-api.d.ts +8 -6
- package/dist/outbound-api.js +22 -18
- package/dist/pipeline/AccountAllowanceScheduling.d.cts +3 -2
- package/dist/pipeline/AccountAllowanceScheduling.d.ts +3 -2
- package/dist/pipeline/AccountRouteActivity.cjs +10 -0
- package/dist/pipeline/AccountRouteActivity.d.cts +61 -0
- package/dist/pipeline/AccountRouteActivity.d.ts +61 -0
- package/dist/pipeline/AccountRouteActivity.js +10 -0
- package/dist/pipeline/ServerOverloadCounter.cjs +16 -0
- package/dist/pipeline/ServerOverloadCounter.d.cts +77 -0
- package/dist/pipeline/ServerOverloadCounter.d.ts +77 -0
- package/dist/pipeline/ServerOverloadCounter.js +16 -0
- package/dist/pipeline/SubscriptionAccountHealth.cjs +4 -2
- package/dist/pipeline/SubscriptionAccountHealth.d.cts +32 -3
- package/dist/pipeline/SubscriptionAccountHealth.d.ts +32 -3
- package/dist/pipeline/SubscriptionAccountHealth.js +3 -1
- package/dist/pipeline/upstreamFetch.cjs +4 -3
- package/dist/pipeline/upstreamFetch.d.cts +35 -6
- package/dist/pipeline/upstreamFetch.d.ts +35 -6
- package/dist/pipeline/upstreamFetch.js +3 -2
- package/dist/pipeline/upstreamTrace.cjs +4 -2
- package/dist/pipeline/upstreamTrace.d.cts +22 -8
- package/dist/pipeline/upstreamTrace.d.ts +22 -8
- package/dist/pipeline/upstreamTrace.js +3 -1
- package/dist/ports.d.cts +2 -2
- package/dist/ports.d.ts +2 -2
- package/dist/provider-proxy/ProviderProxy.cjs +23 -19
- package/dist/provider-proxy/ProviderProxy.d.cts +2 -1
- package/dist/provider-proxy/ProviderProxy.d.ts +2 -1
- package/dist/provider-proxy/ProviderProxy.js +22 -18
- package/dist/provider-proxy/identity/codexCliHeaders.cjs +10 -0
- package/dist/provider-proxy/identity/codexCliHeaders.d.cts +45 -0
- package/dist/provider-proxy/identity/codexCliHeaders.d.ts +45 -0
- package/dist/provider-proxy/identity/codexCliHeaders.js +10 -0
- package/dist/provider-proxy/ingress/providerProxyShared.cjs +23 -19
- package/dist/provider-proxy/ingress/providerProxyShared.d.cts +11 -1
- package/dist/provider-proxy/ingress/providerProxyShared.d.ts +11 -1
- package/dist/provider-proxy/ingress/providerProxyShared.js +22 -18
- package/dist/provider-proxy/matchText.cjs +2 -2
- package/dist/provider-proxy/matchText.d.cts +1 -3
- package/dist/provider-proxy/matchText.d.ts +1 -3
- package/dist/provider-proxy/matchText.js +1 -1
- package/dist/provider-proxy/types.d.cts +20 -1
- package/dist/provider-proxy/types.d.ts +20 -1
- package/dist/provider-proxy.cjs +79 -19
- package/dist/provider-proxy.d.cts +255 -8
- package/dist/provider-proxy.d.ts +255 -8
- package/dist/provider-proxy.js +80 -20
- package/dist/{routeResolver-CHTv_Bs5.d.ts → routeResolver-C0mkkZaM.d.ts} +1 -1
- package/dist/{routeResolver-kepxnfcC.d.cts → routeResolver-CVFE8KKe.d.cts} +1 -1
- package/dist/transformer/transformers/AnthropicTransformer.cjs +3 -2
- package/dist/transformer/transformers/AnthropicTransformer.js +2 -1
- package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +3 -2
- package/dist/transformer/transformers/OpenAIResponseTransformer.js +2 -1
- package/dist/transformer/transformers.cjs +7 -6
- package/dist/transformer/transformers.js +6 -5
- package/dist/transformer.cjs +9 -8
- package/dist/transformer.js +8 -7
- package/dist/{types-hsoKrVQS.d.ts → types-BB8pxk_3.d.ts} +40 -1
- package/dist/{types-H3wGZSOo.d.cts → types-C2MwkLah.d.cts} +40 -1
- package/dist/usage/pricing-engine.cjs +2 -2
- package/dist/usage/pricing-engine.d.cts +20 -0
- package/dist/usage/pricing-engine.d.ts +20 -0
- package/dist/usage/pricing-engine.js +1 -1
- package/dist/usage/usage-recorder.cjs +2 -2
- package/dist/usage/usage-recorder.d.cts +11 -1
- package/dist/usage/usage-recorder.d.ts +11 -1
- package/dist/usage/usage-recorder.js +1 -1
- package/dist/usage.cjs +3 -3
- package/dist/usage.js +2 -2
- package/package.json +1 -1
|
@@ -31,6 +31,12 @@ declare const OVERLOAD_ENABLED_DEFAULT = true;
|
|
|
31
31
|
declare const AUTH_ERROR_TTL_MS: number;
|
|
32
32
|
/** Transient cooldown for a 5xx response or network failure. */
|
|
33
33
|
declare const SERVER_ERROR_TTL_MS: number;
|
|
34
|
+
/**
|
|
35
|
+
* Hard cap on a quota-exhaustion cooldown (the weekly usage window is ~1 week).
|
|
36
|
+
* A parsed/supplied deadline farther than this into the future is clamped, so a
|
|
37
|
+
* bogus parse can never strand an account indefinitely.
|
|
38
|
+
*/
|
|
39
|
+
declare const MAX_QUOTA_COOLDOWN_MS: number;
|
|
34
40
|
/** Per-account health record (all timers are epoch ms). Absent fields ⇒ healthy. */
|
|
35
41
|
interface HealthRecord {
|
|
36
42
|
/** From a 429 authoritative reset header — rate-limited until this instant. */
|
|
@@ -39,11 +45,20 @@ interface HealthRecord {
|
|
|
39
45
|
overloadUntil?: number;
|
|
40
46
|
/** From a final-401 / plain-403 / 5xx / thrown — transient cooldown until this. */
|
|
41
47
|
tempUnavailableUntil?: number;
|
|
48
|
+
/**
|
|
49
|
+
* From a detected quota/usage-limit error (e.g. Codex weekly window exhausted).
|
|
50
|
+
* Intentionally NOT cleared by a 2xx: while the account's credits/window are
|
|
51
|
+
* exhausted, in-flight sessions on the SAME account keep returning 2xx (Codex
|
|
52
|
+
* does not kill them mid-session), which would otherwise immediately heal a
|
|
53
|
+
* transient/rate-limit mark and re-strand every NEW session onto this account.
|
|
54
|
+
* Self-heals only when the deadline elapses.
|
|
55
|
+
*/
|
|
56
|
+
quotaExhaustedUntil?: number;
|
|
42
57
|
/** From a 403-ban — permanent, self-heal never clears it. */
|
|
43
58
|
blocked?: boolean;
|
|
44
59
|
}
|
|
45
60
|
/** The coarse health state surfaced to the admin accounts view (secret-free). */
|
|
46
|
-
type AccountHealthState = 'healthy' | 'rate_limited' | 'overloaded' | 'transient' | 'blocked';
|
|
61
|
+
type AccountHealthState = 'healthy' | 'rate_limited' | 'overloaded' | 'transient' | 'quota_exhausted' | 'blocked';
|
|
47
62
|
/** Admin-facing status projection for one account. */
|
|
48
63
|
interface AccountHealthStatus {
|
|
49
64
|
state: AccountHealthState;
|
|
@@ -68,7 +83,7 @@ interface AccountRecoveryEvent {
|
|
|
68
83
|
/** A recovery listener (fire-and-forget; the emitter never awaits it). */
|
|
69
84
|
type AccountRecoveryListener = (event: AccountRecoveryEvent) => void;
|
|
70
85
|
/** The coarse anomaly state an account transitioned into (secret-free). */
|
|
71
|
-
type AccountAnomalyState = 'blocked' | 'unauthorized' | 'rate_limited' | 'overloaded';
|
|
86
|
+
type AccountAnomalyState = 'blocked' | 'unauthorized' | 'rate_limited' | 'overloaded' | 'quota_exhausted';
|
|
72
87
|
/**
|
|
73
88
|
* The anomaly signal emitted when a HEALTHY account transitions to unhealthy —
|
|
74
89
|
* the additive union #5 (webhooks) consumes, which this tracker's frozen `kind`
|
|
@@ -192,6 +207,20 @@ declare class SubscriptionAccountHealth {
|
|
|
192
207
|
* - 2xx → clear rate-limit + transient state (keep `blocked`).
|
|
193
208
|
*/
|
|
194
209
|
recordUpstreamOutcome(providerId: string, accountId: string, input: RecordUpstreamOutcomeInput): void;
|
|
210
|
+
/**
|
|
211
|
+
* Mark an account quota/usage-exhausted until `untilEpochMs` (the Codex weekly
|
|
212
|
+
* usage-limit wall). Unlike the status-driven timers set by
|
|
213
|
+
* {@link recordUpstreamOutcome}, this mark is NOT cleared by a 2xx: in-flight
|
|
214
|
+
* sessions on the same account keep succeeding after the window is exhausted,
|
|
215
|
+
* so a traffic-driven clear would re-strand every NEW session onto this
|
|
216
|
+
* account. It excludes the account from NEW-session selection until the
|
|
217
|
+
* deadline elapses (existing sessions are unaffected — they already hold their
|
|
218
|
+
* token). Self-heals lazily on read and via {@link sweepRecoveries}.
|
|
219
|
+
* `untilEpochMs` is clamped to {@link MAX_QUOTA_COOLDOWN_MS}; an already-elapsed
|
|
220
|
+
* deadline is a no-op. Emits a `quota_exhausted` anomaly on the healthy→
|
|
221
|
+
* unhealthy edge.
|
|
222
|
+
*/
|
|
223
|
+
markQuotaExhausted(providerId: string, accountId: string, untilEpochMs: number, now?: number): void;
|
|
195
224
|
/** Whether a record is unhealthy at `now`: blocked, or any timer still future. */
|
|
196
225
|
private isUnhealthyAt;
|
|
197
226
|
/**
|
|
@@ -260,4 +289,4 @@ declare function setSharedAccountHealth(instance: SubscriptionAccountHealth): vo
|
|
|
260
289
|
/** Reset the shared singleton (tests / teardown only). */
|
|
261
290
|
declare function __resetSharedAccountHealthForTests(): void;
|
|
262
291
|
|
|
263
|
-
export { ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT, AUTH_ERROR_TTL_MS, type AccountAnomalyEvent, type AccountAnomalyListener, type AccountAnomalyState, type AccountHealthDiagnostic, type AccountHealthDiagnosticFilter, type AccountHealthState, type AccountHealthStatus, type AccountRecoveryEvent, type AccountRecoveryListener, type HeadersLike, type HealthRecord, OVERLOAD_ENABLED_DEFAULT, OVERLOAD_TTL_MS, type RecordUpstreamOutcomeInput, SERVER_ERROR_TTL_MS, SubscriptionAccountHealth, type SubscriptionAccountHealthOptions, __resetSharedAccountHealthForTests, getSharedAccountHealth, resolveResetSeconds, setSharedAccountHealth };
|
|
292
|
+
export { ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT, AUTH_ERROR_TTL_MS, type AccountAnomalyEvent, type AccountAnomalyListener, type AccountAnomalyState, type AccountHealthDiagnostic, type AccountHealthDiagnosticFilter, type AccountHealthState, type AccountHealthStatus, type AccountRecoveryEvent, type AccountRecoveryListener, type HeadersLike, type HealthRecord, MAX_QUOTA_COOLDOWN_MS, OVERLOAD_ENABLED_DEFAULT, OVERLOAD_TTL_MS, type RecordUpstreamOutcomeInput, SERVER_ERROR_TTL_MS, SubscriptionAccountHealth, type SubscriptionAccountHealthOptions, __resetSharedAccountHealthForTests, getSharedAccountHealth, resolveResetSeconds, setSharedAccountHealth };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT,
|
|
3
3
|
AUTH_ERROR_TTL_MS,
|
|
4
|
+
MAX_QUOTA_COOLDOWN_MS,
|
|
4
5
|
OVERLOAD_ENABLED_DEFAULT,
|
|
5
6
|
OVERLOAD_TTL_MS,
|
|
6
7
|
SERVER_ERROR_TTL_MS,
|
|
@@ -9,10 +10,11 @@ import {
|
|
|
9
10
|
getSharedAccountHealth,
|
|
10
11
|
resolveResetSeconds,
|
|
11
12
|
setSharedAccountHealth
|
|
12
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-N7OOJI5V.js";
|
|
13
14
|
export {
|
|
14
15
|
ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT,
|
|
15
16
|
AUTH_ERROR_TTL_MS,
|
|
17
|
+
MAX_QUOTA_COOLDOWN_MS,
|
|
16
18
|
OVERLOAD_ENABLED_DEFAULT,
|
|
17
19
|
OVERLOAD_TTL_MS,
|
|
18
20
|
SERVER_ERROR_TTL_MS,
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
8
|
-
require('../chunk-
|
|
7
|
+
var _chunkRJUONLUQcjs = require('../chunk-RJUONLUQ.cjs');
|
|
8
|
+
require('../chunk-235MXAGX.cjs');
|
|
9
9
|
require('../chunk-HVBBDBS3.cjs');
|
|
10
|
+
require('../chunk-NKVZ6Z3Y.cjs');
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
exports.__resetUpstreamProxyForTests =
|
|
17
|
+
exports.__resetUpstreamProxyForTests = _chunkRJUONLUQcjs.__resetUpstreamProxyForTests; exports.bumpUpstreamProxyGeneration = _chunkRJUONLUQcjs.bumpUpstreamProxyGeneration; exports.fetchUpstream = _chunkRJUONLUQcjs.fetchUpstream; exports.resolveUpstreamDispatcher = _chunkRJUONLUQcjs.resolveUpstreamDispatcher; exports.setUpstreamProxyResolver = _chunkRJUONLUQcjs.setUpstreamProxyResolver;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProxyConfig } from '@omnicross/contracts/account-tokens-types';
|
|
2
2
|
import { Dispatcher } from 'undici';
|
|
3
|
+
import { AccountRouteEndpoint, AccountRouteSessionSource, AccountRouteActivityRecord } from './AccountRouteActivity.cjs';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* upstreamFetch — the single proxy-aware egress seam for `@omnicross/core`
|
|
@@ -28,27 +29,55 @@ import { Dispatcher } from 'undici';
|
|
|
28
29
|
* FROZEN SEAM: `#7` (client fingerprint) attaches per-account TLS/agent behavior
|
|
29
30
|
* at this SAME dispatcher point — do not fork a second egress path.
|
|
30
31
|
*
|
|
31
|
-
* DEBUG TRACE: when
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
32
|
+
* DEBUG TRACE: when a diagnostic caller explicitly installs an upstream-trace
|
|
33
|
+
* path, relay calls (`ctx.providerId` set) clone the response and append the
|
|
34
|
+
* FULL exchange (request + verbatim response incl. SSE) to the trace file. The
|
|
35
|
+
* daemon audit runtime never installs this path, preventing duplicate body
|
|
36
|
+
* storage. Absent a path (the default) it is a pure no-op — zero regression.
|
|
36
37
|
*
|
|
37
38
|
* @module @omnicross/core/pipeline/upstreamFetch
|
|
38
39
|
*/
|
|
39
40
|
|
|
41
|
+
interface AccountRouteActivityContext {
|
|
42
|
+
endpoint: AccountRouteEndpoint;
|
|
43
|
+
sessionKey?: string;
|
|
44
|
+
sessionSource: AccountRouteSessionSource;
|
|
45
|
+
model: string;
|
|
46
|
+
/**
|
|
47
|
+
* Invoked once with the freshly-recorded activity record. Lets a caller
|
|
48
|
+
* capture the record `id` so it can {@link AccountRouteActivityStore.amend}
|
|
49
|
+
* the SAME row later, once a post-hoc fact (e.g. an overload event buried in
|
|
50
|
+
* the 200 SSE body) becomes known during relay. Best-effort: never throws.
|
|
51
|
+
*/
|
|
52
|
+
onRecorded?: (record: AccountRouteActivityRecord) => void;
|
|
53
|
+
}
|
|
40
54
|
/** The opaque call context the resolver maps to a proxy (precedence input). */
|
|
41
55
|
interface UpstreamProxyContext {
|
|
42
56
|
/** The subscription provider id (`claude`/`codex`/`gemini`/`opencodego`) or `'byo'`. */
|
|
43
57
|
providerId?: string;
|
|
44
58
|
/** The selected pooled account id (per-account override input). */
|
|
45
59
|
accountId?: string;
|
|
60
|
+
/** Metadata-only live route activity. Never contains prompts, headers, or tokens. */
|
|
61
|
+
routeActivity?: AccountRouteActivityContext;
|
|
46
62
|
/**
|
|
47
63
|
* The target upstream URL. Injected by {@link fetchUpstream} so the resolver can
|
|
48
64
|
* apply host-based bypass (loopback / `NO_PROXY`). Callers of the ingress helpers
|
|
49
65
|
* do NOT set this — it is filled from the fetch `url`.
|
|
50
66
|
*/
|
|
51
67
|
url?: string;
|
|
68
|
+
/**
|
|
69
|
+
* CREDENTIAL EXCHANGE — this call's request/response BODIES carry secrets (an
|
|
70
|
+
* authorization code + PKCE verifier out, an access/refresh token back), so the
|
|
71
|
+
* debug trace must record the exchange's METADATA only and replace both bodies
|
|
72
|
+
* with a placeholder.
|
|
73
|
+
*
|
|
74
|
+
* Set it on every OAuth token-endpoint call (interactive login + refresh).
|
|
75
|
+
* Those calls still need a `providerId` so the per-provider proxy layer applies
|
|
76
|
+
* and so a failure is traceable at all — but the trace captures bodies verbatim
|
|
77
|
+
* (that is its purpose for relay traffic), and a plaintext token must never
|
|
78
|
+
* reach the trace file. Purely a trace concern: the proxy resolver ignores it.
|
|
79
|
+
*/
|
|
80
|
+
redactBodies?: boolean;
|
|
52
81
|
}
|
|
53
82
|
/**
|
|
54
83
|
* The layered proxy lookup the daemon injects. Applies precedence
|
|
@@ -86,4 +115,4 @@ declare function fetchUpstream(url: string, init: RequestInit, ctx?: UpstreamPro
|
|
|
86
115
|
/** TEST SEAM — clear the resolver + cache so a suite starts from the direct-fetch baseline. */
|
|
87
116
|
declare function __resetUpstreamProxyForTests(): void;
|
|
88
117
|
|
|
89
|
-
export { type UpstreamProxyContext, type UpstreamProxyResolver, __resetUpstreamProxyForTests, bumpUpstreamProxyGeneration, fetchUpstream, resolveUpstreamDispatcher, setUpstreamProxyResolver };
|
|
118
|
+
export { type AccountRouteActivityContext, type UpstreamProxyContext, type UpstreamProxyResolver, __resetUpstreamProxyForTests, bumpUpstreamProxyGeneration, fetchUpstream, resolveUpstreamDispatcher, setUpstreamProxyResolver };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProxyConfig } from '@omnicross/contracts/account-tokens-types';
|
|
2
2
|
import { Dispatcher } from 'undici';
|
|
3
|
+
import { AccountRouteEndpoint, AccountRouteSessionSource, AccountRouteActivityRecord } from './AccountRouteActivity.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* upstreamFetch — the single proxy-aware egress seam for `@omnicross/core`
|
|
@@ -28,27 +29,55 @@ import { Dispatcher } from 'undici';
|
|
|
28
29
|
* FROZEN SEAM: `#7` (client fingerprint) attaches per-account TLS/agent behavior
|
|
29
30
|
* at this SAME dispatcher point — do not fork a second egress path.
|
|
30
31
|
*
|
|
31
|
-
* DEBUG TRACE: when
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
32
|
+
* DEBUG TRACE: when a diagnostic caller explicitly installs an upstream-trace
|
|
33
|
+
* path, relay calls (`ctx.providerId` set) clone the response and append the
|
|
34
|
+
* FULL exchange (request + verbatim response incl. SSE) to the trace file. The
|
|
35
|
+
* daemon audit runtime never installs this path, preventing duplicate body
|
|
36
|
+
* storage. Absent a path (the default) it is a pure no-op — zero regression.
|
|
36
37
|
*
|
|
37
38
|
* @module @omnicross/core/pipeline/upstreamFetch
|
|
38
39
|
*/
|
|
39
40
|
|
|
41
|
+
interface AccountRouteActivityContext {
|
|
42
|
+
endpoint: AccountRouteEndpoint;
|
|
43
|
+
sessionKey?: string;
|
|
44
|
+
sessionSource: AccountRouteSessionSource;
|
|
45
|
+
model: string;
|
|
46
|
+
/**
|
|
47
|
+
* Invoked once with the freshly-recorded activity record. Lets a caller
|
|
48
|
+
* capture the record `id` so it can {@link AccountRouteActivityStore.amend}
|
|
49
|
+
* the SAME row later, once a post-hoc fact (e.g. an overload event buried in
|
|
50
|
+
* the 200 SSE body) becomes known during relay. Best-effort: never throws.
|
|
51
|
+
*/
|
|
52
|
+
onRecorded?: (record: AccountRouteActivityRecord) => void;
|
|
53
|
+
}
|
|
40
54
|
/** The opaque call context the resolver maps to a proxy (precedence input). */
|
|
41
55
|
interface UpstreamProxyContext {
|
|
42
56
|
/** The subscription provider id (`claude`/`codex`/`gemini`/`opencodego`) or `'byo'`. */
|
|
43
57
|
providerId?: string;
|
|
44
58
|
/** The selected pooled account id (per-account override input). */
|
|
45
59
|
accountId?: string;
|
|
60
|
+
/** Metadata-only live route activity. Never contains prompts, headers, or tokens. */
|
|
61
|
+
routeActivity?: AccountRouteActivityContext;
|
|
46
62
|
/**
|
|
47
63
|
* The target upstream URL. Injected by {@link fetchUpstream} so the resolver can
|
|
48
64
|
* apply host-based bypass (loopback / `NO_PROXY`). Callers of the ingress helpers
|
|
49
65
|
* do NOT set this — it is filled from the fetch `url`.
|
|
50
66
|
*/
|
|
51
67
|
url?: string;
|
|
68
|
+
/**
|
|
69
|
+
* CREDENTIAL EXCHANGE — this call's request/response BODIES carry secrets (an
|
|
70
|
+
* authorization code + PKCE verifier out, an access/refresh token back), so the
|
|
71
|
+
* debug trace must record the exchange's METADATA only and replace both bodies
|
|
72
|
+
* with a placeholder.
|
|
73
|
+
*
|
|
74
|
+
* Set it on every OAuth token-endpoint call (interactive login + refresh).
|
|
75
|
+
* Those calls still need a `providerId` so the per-provider proxy layer applies
|
|
76
|
+
* and so a failure is traceable at all — but the trace captures bodies verbatim
|
|
77
|
+
* (that is its purpose for relay traffic), and a plaintext token must never
|
|
78
|
+
* reach the trace file. Purely a trace concern: the proxy resolver ignores it.
|
|
79
|
+
*/
|
|
80
|
+
redactBodies?: boolean;
|
|
52
81
|
}
|
|
53
82
|
/**
|
|
54
83
|
* The layered proxy lookup the daemon injects. Applies precedence
|
|
@@ -86,4 +115,4 @@ declare function fetchUpstream(url: string, init: RequestInit, ctx?: UpstreamPro
|
|
|
86
115
|
/** TEST SEAM — clear the resolver + cache so a suite starts from the direct-fetch baseline. */
|
|
87
116
|
declare function __resetUpstreamProxyForTests(): void;
|
|
88
117
|
|
|
89
|
-
export { type UpstreamProxyContext, type UpstreamProxyResolver, __resetUpstreamProxyForTests, bumpUpstreamProxyGeneration, fetchUpstream, resolveUpstreamDispatcher, setUpstreamProxyResolver };
|
|
118
|
+
export { type AccountRouteActivityContext, type UpstreamProxyContext, type UpstreamProxyResolver, __resetUpstreamProxyForTests, bumpUpstreamProxyGeneration, fetchUpstream, resolveUpstreamDispatcher, setUpstreamProxyResolver };
|
|
@@ -4,9 +4,10 @@ import {
|
|
|
4
4
|
fetchUpstream,
|
|
5
5
|
resolveUpstreamDispatcher,
|
|
6
6
|
setUpstreamProxyResolver
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-RJ5ZGNI3.js";
|
|
8
|
+
import "../chunk-3WD4HTR2.js";
|
|
9
9
|
import "../chunk-MKF46GNZ.js";
|
|
10
|
+
import "../chunk-GL6XM527.js";
|
|
10
11
|
export {
|
|
11
12
|
__resetUpstreamProxyForTests,
|
|
12
13
|
bumpUpstreamProxyGeneration,
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var _chunk3Z5BQZFMcjs = require('../chunk-3Z5BQZFM.cjs');
|
|
8
7
|
|
|
8
|
+
var _chunk235MXAGXcjs = require('../chunk-235MXAGX.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
exports.REDACTED_BODY = _chunk235MXAGXcjs.REDACTED_BODY; exports.__resetUpstreamTraceForTests = _chunk235MXAGXcjs.__resetUpstreamTraceForTests; exports.getUpstreamTracePath = _chunk235MXAGXcjs.getUpstreamTracePath; exports.redactHeaders = _chunk235MXAGXcjs.redactHeaders; exports.setUpstreamTracePath = _chunk235MXAGXcjs.setUpstreamTracePath; exports.writeUpstreamTrace = _chunk235MXAGXcjs.writeUpstreamTrace;
|
|
@@ -14,22 +14,36 @@
|
|
|
14
14
|
* (a `text/event-stream` included — `clone().text()` tees the stream so the
|
|
15
15
|
* relay keeps streaming the original while the clone is buffered for the
|
|
16
16
|
* trace), and appends one {@link UpstreamTraceRecord} JSON line. Relay calls
|
|
17
|
-
* carry an opaque `providerId`;
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* carry an opaque `providerId`; webhook / billing sends do not, so they are
|
|
18
|
+
* skipped (less noise). OAuth token-endpoint calls (interactive login + refresh)
|
|
19
|
+
* DO carry one — a failed login must be diagnosable — but they set the ctx's
|
|
20
|
+
* `redactBodies`, so their bodies are replaced with {@link REDACTED_BODY}.
|
|
21
|
+
* Tracing is fire-and-forget: a read/write failure is swallowed so the egress
|
|
22
|
+
* path is never affected.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
+
* A diagnostic caller may explicitly install a path via
|
|
25
|
+
* {@link setUpstreamTracePath}. The daemon's audit runtime intentionally does
|
|
26
|
+
* not install one: audit bodies have a single persistence path. Absent an
|
|
27
|
+
* explicit path the trace is a pure no-op — byte-identical zero regression.
|
|
24
28
|
*
|
|
25
29
|
* Secret discipline: request/response AUTHORIZATION + api-key HEADER values are
|
|
26
30
|
* masked (`***REDACTED***`) — they are OAuth bearer tokens, not the thing under
|
|
27
31
|
* test, and a plaintext trace file must not hold them. Header KEYS stay visible
|
|
28
32
|
* so presence is verifiable. The request/response BODIES are captured VERBATIM
|
|
29
|
-
* (a prompt / a codex SSE stream) — that is the whole point
|
|
33
|
+
* (a prompt / a codex SSE stream) — that is the whole point — EXCEPT on a
|
|
34
|
+
* credential exchange, where the body IS the secret (see {@link REDACTED_BODY}).
|
|
30
35
|
*
|
|
31
36
|
* @module @omnicross/core/pipeline/upstreamTrace
|
|
32
37
|
*/
|
|
38
|
+
/**
|
|
39
|
+
* Placeholder written in place of a request/response body whose content is a
|
|
40
|
+
* CREDENTIAL rather than the thing under test — an OAuth token exchange or
|
|
41
|
+
* refresh (`fetchUpstream` ctx `redactBodies`). Those calls are still traced so a
|
|
42
|
+
* failed login/refresh is diagnosable (url, status, duration, byte count), but a
|
|
43
|
+
* plaintext authorization code / access token / refresh token must never land in
|
|
44
|
+
* this file.
|
|
45
|
+
*/
|
|
46
|
+
declare const REDACTED_BODY = "***REDACTED (credential exchange)***";
|
|
33
47
|
/**
|
|
34
48
|
* Install (or clear, with `null`/blank) the trace file path. Idempotent — last
|
|
35
49
|
* write wins. The path is resolved by the daemon relative to the audit store.
|
|
@@ -82,4 +96,4 @@ declare function writeUpstreamTrace(record: UpstreamTraceRecord): Promise<void>;
|
|
|
82
96
|
/** TEST SEAM — clear the trace path so a suite starts from the no-trace baseline. */
|
|
83
97
|
declare function __resetUpstreamTraceForTests(): void;
|
|
84
98
|
|
|
85
|
-
export { type UpstreamTraceRecord, __resetUpstreamTraceForTests, getUpstreamTracePath, redactHeaders, setUpstreamTracePath, writeUpstreamTrace };
|
|
99
|
+
export { REDACTED_BODY, type UpstreamTraceRecord, __resetUpstreamTraceForTests, getUpstreamTracePath, redactHeaders, setUpstreamTracePath, writeUpstreamTrace };
|
|
@@ -14,22 +14,36 @@
|
|
|
14
14
|
* (a `text/event-stream` included — `clone().text()` tees the stream so the
|
|
15
15
|
* relay keeps streaming the original while the clone is buffered for the
|
|
16
16
|
* trace), and appends one {@link UpstreamTraceRecord} JSON line. Relay calls
|
|
17
|
-
* carry an opaque `providerId`;
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* carry an opaque `providerId`; webhook / billing sends do not, so they are
|
|
18
|
+
* skipped (less noise). OAuth token-endpoint calls (interactive login + refresh)
|
|
19
|
+
* DO carry one — a failed login must be diagnosable — but they set the ctx's
|
|
20
|
+
* `redactBodies`, so their bodies are replaced with {@link REDACTED_BODY}.
|
|
21
|
+
* Tracing is fire-and-forget: a read/write failure is swallowed so the egress
|
|
22
|
+
* path is never affected.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
+
* A diagnostic caller may explicitly install a path via
|
|
25
|
+
* {@link setUpstreamTracePath}. The daemon's audit runtime intentionally does
|
|
26
|
+
* not install one: audit bodies have a single persistence path. Absent an
|
|
27
|
+
* explicit path the trace is a pure no-op — byte-identical zero regression.
|
|
24
28
|
*
|
|
25
29
|
* Secret discipline: request/response AUTHORIZATION + api-key HEADER values are
|
|
26
30
|
* masked (`***REDACTED***`) — they are OAuth bearer tokens, not the thing under
|
|
27
31
|
* test, and a plaintext trace file must not hold them. Header KEYS stay visible
|
|
28
32
|
* so presence is verifiable. The request/response BODIES are captured VERBATIM
|
|
29
|
-
* (a prompt / a codex SSE stream) — that is the whole point
|
|
33
|
+
* (a prompt / a codex SSE stream) — that is the whole point — EXCEPT on a
|
|
34
|
+
* credential exchange, where the body IS the secret (see {@link REDACTED_BODY}).
|
|
30
35
|
*
|
|
31
36
|
* @module @omnicross/core/pipeline/upstreamTrace
|
|
32
37
|
*/
|
|
38
|
+
/**
|
|
39
|
+
* Placeholder written in place of a request/response body whose content is a
|
|
40
|
+
* CREDENTIAL rather than the thing under test — an OAuth token exchange or
|
|
41
|
+
* refresh (`fetchUpstream` ctx `redactBodies`). Those calls are still traced so a
|
|
42
|
+
* failed login/refresh is diagnosable (url, status, duration, byte count), but a
|
|
43
|
+
* plaintext authorization code / access token / refresh token must never land in
|
|
44
|
+
* this file.
|
|
45
|
+
*/
|
|
46
|
+
declare const REDACTED_BODY = "***REDACTED (credential exchange)***";
|
|
33
47
|
/**
|
|
34
48
|
* Install (or clear, with `null`/blank) the trace file path. Idempotent — last
|
|
35
49
|
* write wins. The path is resolved by the daemon relative to the audit store.
|
|
@@ -82,4 +96,4 @@ declare function writeUpstreamTrace(record: UpstreamTraceRecord): Promise<void>;
|
|
|
82
96
|
/** TEST SEAM — clear the trace path so a suite starts from the no-trace baseline. */
|
|
83
97
|
declare function __resetUpstreamTraceForTests(): void;
|
|
84
98
|
|
|
85
|
-
export { type UpstreamTraceRecord, __resetUpstreamTraceForTests, getUpstreamTracePath, redactHeaders, setUpstreamTracePath, writeUpstreamTrace };
|
|
99
|
+
export { REDACTED_BODY, type UpstreamTraceRecord, __resetUpstreamTraceForTests, getUpstreamTracePath, redactHeaders, setUpstreamTracePath, writeUpstreamTrace };
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
+
REDACTED_BODY,
|
|
2
3
|
__resetUpstreamTraceForTests,
|
|
3
4
|
getUpstreamTracePath,
|
|
4
5
|
redactHeaders,
|
|
5
6
|
setUpstreamTracePath,
|
|
6
7
|
writeUpstreamTrace
|
|
7
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-3WD4HTR2.js";
|
|
8
9
|
export {
|
|
10
|
+
REDACTED_BODY,
|
|
9
11
|
__resetUpstreamTraceForTests,
|
|
10
12
|
getUpstreamTracePath,
|
|
11
13
|
redactHeaders,
|
package/dist/ports.d.cts
CHANGED
|
@@ -5,7 +5,7 @@ export { ProviderConfigSource } from './ports/provider-config-source.cjs';
|
|
|
5
5
|
export { UsageEventStore } from './ports/usage-event-store.cjs';
|
|
6
6
|
export { WebSearchBackend } from './ports/web-search-backend.cjs';
|
|
7
7
|
export { UsageRecorderImport as UsageSink } from './provider-proxy/types.cjs';
|
|
8
|
-
export { O as OutboundCredentialStore } from './types-
|
|
8
|
+
export { O as OutboundCredentialStore } from './types-C2MwkLah.cjs';
|
|
9
9
|
import '@omnicross/contracts/pricing-types';
|
|
10
10
|
import '@omnicross/contracts/llm-config';
|
|
11
11
|
import './transformer/types.cjs';
|
|
@@ -27,5 +27,5 @@ import '@omnicross/contracts/billing-types';
|
|
|
27
27
|
import '@omnicross/contracts/health-logging-types';
|
|
28
28
|
import '@omnicross/contracts/voucher-types';
|
|
29
29
|
import '@omnicross/contracts/webhook-types';
|
|
30
|
-
import './ProviderProxy-
|
|
30
|
+
import './ProviderProxy-QdwNV6l1.cjs';
|
|
31
31
|
import './keyPolicy-zdWTu3CQ.cjs';
|
package/dist/ports.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { ProviderConfigSource } from './ports/provider-config-source.js';
|
|
|
5
5
|
export { UsageEventStore } from './ports/usage-event-store.js';
|
|
6
6
|
export { WebSearchBackend } from './ports/web-search-backend.js';
|
|
7
7
|
export { UsageRecorderImport as UsageSink } from './provider-proxy/types.js';
|
|
8
|
-
export { O as OutboundCredentialStore } from './types-
|
|
8
|
+
export { O as OutboundCredentialStore } from './types-BB8pxk_3.js';
|
|
9
9
|
import '@omnicross/contracts/pricing-types';
|
|
10
10
|
import '@omnicross/contracts/llm-config';
|
|
11
11
|
import './transformer/types.js';
|
|
@@ -27,5 +27,5 @@ import '@omnicross/contracts/billing-types';
|
|
|
27
27
|
import '@omnicross/contracts/health-logging-types';
|
|
28
28
|
import '@omnicross/contracts/voucher-types';
|
|
29
29
|
import '@omnicross/contracts/webhook-types';
|
|
30
|
-
import './ProviderProxy
|
|
30
|
+
import './ProviderProxy--ROec6VI.js';
|
|
31
31
|
import './keyPolicy-zdWTu3CQ.js';
|
|
@@ -1,34 +1,37 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../chunk-EJLH6NFT.cjs');
|
|
4
|
+
var _chunk26K6T2YScjs = require('../chunk-26K6T2YS.cjs');
|
|
6
5
|
require('../chunk-HQP3K7PU.cjs');
|
|
7
6
|
require('../chunk-FZ46M34D.cjs');
|
|
8
|
-
require('../chunk-
|
|
9
|
-
require('../chunk-
|
|
10
|
-
require('../chunk-3OPYJG76.cjs');
|
|
11
|
-
require('../chunk-7AK7B36B.cjs');
|
|
7
|
+
require('../chunk-2Z4XM3H5.cjs');
|
|
8
|
+
require('../chunk-OXHNSZ53.cjs');
|
|
12
9
|
require('../chunk-V4TXMEJS.cjs');
|
|
13
|
-
require('../chunk-
|
|
10
|
+
require('../chunk-OVQBNVSV.cjs');
|
|
11
|
+
require('../chunk-5RSZYQJH.cjs');
|
|
14
12
|
require('../chunk-OF3BECU2.cjs');
|
|
15
|
-
require('../chunk-4VLRHHFE.cjs');
|
|
16
13
|
require('../chunk-EYZYXJTJ.cjs');
|
|
17
|
-
require('../chunk-
|
|
18
|
-
require('../chunk-
|
|
19
|
-
require('../chunk-
|
|
14
|
+
require('../chunk-2E42SAW3.cjs');
|
|
15
|
+
require('../chunk-EPN67EGP.cjs');
|
|
16
|
+
require('../chunk-IIRPUVPH.cjs');
|
|
17
|
+
require('../chunk-GBHYAGX3.cjs');
|
|
18
|
+
require('../chunk-3OPYJG76.cjs');
|
|
19
|
+
require('../chunk-3SCOLIPT.cjs');
|
|
20
20
|
require('../chunk-RPII3E6Z.cjs');
|
|
21
21
|
require('../chunk-6RPZADX3.cjs');
|
|
22
|
+
require('../chunk-J3QQ6JS5.cjs');
|
|
23
|
+
require('../chunk-UIBD2YY5.cjs');
|
|
24
|
+
require('../chunk-R3HK6R4B.cjs');
|
|
25
|
+
require('../chunk-QXD4MV2X.cjs');
|
|
22
26
|
require('../chunk-NYUNU75A.cjs');
|
|
23
|
-
require('../chunk-
|
|
27
|
+
require('../chunk-OTZC4TNH.cjs');
|
|
28
|
+
require('../chunk-YWL7YZWS.cjs');
|
|
24
29
|
require('../chunk-YNJNTCSQ.cjs');
|
|
25
30
|
require('../chunk-SVNDB62D.cjs');
|
|
26
|
-
require('../chunk-UIBD2YY5.cjs');
|
|
27
31
|
require('../chunk-6QQG7YG3.cjs');
|
|
28
32
|
require('../chunk-25GXJCEZ.cjs');
|
|
29
33
|
require('../chunk-MUHWHQVM.cjs');
|
|
30
34
|
require('../chunk-Q27JY5RG.cjs');
|
|
31
|
-
require('../chunk-QXD4MV2X.cjs');
|
|
32
35
|
require('../chunk-APYG5QD7.cjs');
|
|
33
36
|
require('../chunk-L74VDN4A.cjs');
|
|
34
37
|
require('../chunk-4YINUUKQ.cjs');
|
|
@@ -36,16 +39,17 @@ require('../chunk-4VZX5F4T.cjs');
|
|
|
36
39
|
require('../chunk-QBZJ7P2T.cjs');
|
|
37
40
|
require('../chunk-4IH4EL7M.cjs');
|
|
38
41
|
require('../chunk-A2YMUCBT.cjs');
|
|
39
|
-
require('../chunk-
|
|
42
|
+
require('../chunk-XPIOJQS2.cjs');
|
|
40
43
|
require('../chunk-FCR77GYM.cjs');
|
|
41
44
|
require('../chunk-AEOZIDEB.cjs');
|
|
42
45
|
require('../chunk-XSVNC2UD.cjs');
|
|
43
|
-
require('../chunk-
|
|
46
|
+
require('../chunk-GDIXXKF2.cjs');
|
|
44
47
|
require('../chunk-OKMJLEXX.cjs');
|
|
45
48
|
require('../chunk-KBM2W6UY.cjs');
|
|
46
|
-
require('../chunk-
|
|
47
|
-
require('../chunk-
|
|
49
|
+
require('../chunk-RJUONLUQ.cjs');
|
|
50
|
+
require('../chunk-235MXAGX.cjs');
|
|
48
51
|
require('../chunk-HVBBDBS3.cjs');
|
|
52
|
+
require('../chunk-NKVZ6Z3Y.cjs');
|
|
49
53
|
require('../chunk-NZYN7C3P.cjs');
|
|
50
54
|
require('../chunk-JMJBSACD.cjs');
|
|
51
55
|
require('../chunk-GMMT7RVN.cjs');
|
|
@@ -53,4 +57,4 @@ require('../chunk-UNEFIWXI.cjs');
|
|
|
53
57
|
|
|
54
58
|
|
|
55
59
|
|
|
56
|
-
exports.ProviderProxy =
|
|
60
|
+
exports.ProviderProxy = _chunk26K6T2YScjs.ProviderProxy; exports.isLoopbackAddress = _chunk26K6T2YScjs.isLoopbackAddress;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { P as ProviderProxy, i as isLoopbackAddress } from '../ProviderProxy-
|
|
1
|
+
export { P as ProviderProxy, i as isLoopbackAddress } from '../ProviderProxy-QdwNV6l1.cjs';
|
|
2
2
|
import './types.cjs';
|
|
3
3
|
import 'node:http';
|
|
4
4
|
import '@omnicross/contracts/completion-types';
|
|
5
|
+
import '@omnicross/contracts/usage-stats-types';
|
|
5
6
|
import '@omnicross/contracts/subscription-types';
|
|
6
7
|
import '@omnicross/contracts/usage-types';
|
|
7
8
|
import '../completion/ApiKeyPoolService.cjs';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { P as ProviderProxy, i as isLoopbackAddress } from '../ProviderProxy
|
|
1
|
+
export { P as ProviderProxy, i as isLoopbackAddress } from '../ProviderProxy--ROec6VI.js';
|
|
2
2
|
import './types.js';
|
|
3
3
|
import 'node:http';
|
|
4
4
|
import '@omnicross/contracts/completion-types';
|
|
5
|
+
import '@omnicross/contracts/usage-stats-types';
|
|
5
6
|
import '@omnicross/contracts/subscription-types';
|
|
6
7
|
import '@omnicross/contracts/usage-types';
|
|
7
8
|
import '../completion/ApiKeyPoolService.js';
|
|
@@ -1,34 +1,37 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ProviderProxy,
|
|
3
3
|
isLoopbackAddress
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-WB6PH56J.js";
|
|
4
|
+
} from "../chunk-QYC54PMG.js";
|
|
6
5
|
import "../chunk-VVEHS2LI.js";
|
|
7
6
|
import "../chunk-46RLHI7D.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-DK4A7DLE.js";
|
|
11
|
-
import "../chunk-VRFBB5DB.js";
|
|
7
|
+
import "../chunk-MYYR3HZL.js";
|
|
8
|
+
import "../chunk-PEGTIPB3.js";
|
|
12
9
|
import "../chunk-LVUCAWMK.js";
|
|
13
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-32O35CIF.js";
|
|
11
|
+
import "../chunk-FU7EAR73.js";
|
|
14
12
|
import "../chunk-LB6EBS6Y.js";
|
|
15
|
-
import "../chunk-6CL5HTPQ.js";
|
|
16
13
|
import "../chunk-7VU7V2E4.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-FXR6N3SR.js";
|
|
15
|
+
import "../chunk-UAPBLNN2.js";
|
|
16
|
+
import "../chunk-WNKWAEUR.js";
|
|
17
|
+
import "../chunk-MZNPGW5Q.js";
|
|
18
|
+
import "../chunk-DK4A7DLE.js";
|
|
19
|
+
import "../chunk-XXFYLL7R.js";
|
|
20
20
|
import "../chunk-XTEI64OU.js";
|
|
21
21
|
import "../chunk-XX6NQJMA.js";
|
|
22
|
+
import "../chunk-GFIZ6LQI.js";
|
|
23
|
+
import "../chunk-OE6TDIWW.js";
|
|
24
|
+
import "../chunk-DRWHTIIZ.js";
|
|
25
|
+
import "../chunk-JWC6APFQ.js";
|
|
22
26
|
import "../chunk-5ERIZW3D.js";
|
|
23
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-PO3XB56Z.js";
|
|
28
|
+
import "../chunk-N7OOJI5V.js";
|
|
24
29
|
import "../chunk-23S5OPIO.js";
|
|
25
30
|
import "../chunk-AVYJ4YBN.js";
|
|
26
|
-
import "../chunk-OE6TDIWW.js";
|
|
27
31
|
import "../chunk-OPRS4IQZ.js";
|
|
28
32
|
import "../chunk-2JYRIADS.js";
|
|
29
33
|
import "../chunk-DE2SRBFZ.js";
|
|
30
34
|
import "../chunk-ZY6KU6P3.js";
|
|
31
|
-
import "../chunk-JWC6APFQ.js";
|
|
32
35
|
import "../chunk-WLYIIEAF.js";
|
|
33
36
|
import "../chunk-TKJMZBAH.js";
|
|
34
37
|
import "../chunk-3QFXFCHG.js";
|
|
@@ -36,16 +39,17 @@ import "../chunk-EBLFCNPY.js";
|
|
|
36
39
|
import "../chunk-AQ5TNQB7.js";
|
|
37
40
|
import "../chunk-XEKD23J5.js";
|
|
38
41
|
import "../chunk-H5JUT3KV.js";
|
|
39
|
-
import "../chunk-
|
|
42
|
+
import "../chunk-7C7DET6S.js";
|
|
40
43
|
import "../chunk-K5NM7VAH.js";
|
|
41
44
|
import "../chunk-WNY4WMRF.js";
|
|
42
45
|
import "../chunk-OZFM4X3S.js";
|
|
43
|
-
import "../chunk-
|
|
46
|
+
import "../chunk-5NJLQ6T6.js";
|
|
44
47
|
import "../chunk-N5T4M4GU.js";
|
|
45
48
|
import "../chunk-TOVPMMHM.js";
|
|
46
|
-
import "../chunk-
|
|
47
|
-
import "../chunk-
|
|
49
|
+
import "../chunk-RJ5ZGNI3.js";
|
|
50
|
+
import "../chunk-3WD4HTR2.js";
|
|
48
51
|
import "../chunk-MKF46GNZ.js";
|
|
52
|
+
import "../chunk-GL6XM527.js";
|
|
49
53
|
import "../chunk-CDHS2QDC.js";
|
|
50
54
|
import "../chunk-Y7FO65VT.js";
|
|
51
55
|
import "../chunk-FMOBD2OQ.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunk3SCOLIPTcjs = require('../../chunk-3SCOLIPT.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.DEFAULT_CODEX_CLI_HEADERS = _chunk3SCOLIPTcjs.DEFAULT_CODEX_CLI_HEADERS; exports.codexAcceptHeader = _chunk3SCOLIPTcjs.codexAcceptHeader; exports.extractCodexClientHeaders = _chunk3SCOLIPTcjs.extractCodexClientHeaders;
|