@omnicross/core 0.1.10 → 0.2.0

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.
Files changed (166) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +57 -57
  3. package/README.md +22 -15
  4. package/dist/{CompletionService-kNA17cfI.d.cts → CompletionService-BiJqftc-.d.cts} +1 -1
  5. package/dist/{CompletionService-C3BX0Ovy.d.ts → CompletionService-NXN_Av5W.d.ts} +1 -1
  6. package/dist/{ProviderProxy-QdwNV6l1.d.cts → ProviderProxy-CgIcCVwk.d.cts} +1 -1
  7. package/dist/{ProviderProxy--ROec6VI.d.ts → ProviderProxy-DYoY5XoT.d.ts} +1 -1
  8. package/dist/auth/GeminiCodeAssistProjectResolver.cjs +6 -6
  9. package/dist/auth/GeminiCodeAssistProjectResolver.js +4 -4
  10. package/dist/{chunk-QUSEZNYS.cjs → chunk-32SRZFFP.cjs} +4 -1
  11. package/dist/chunk-4JOU54M5.js +200 -0
  12. package/dist/{chunk-2UTGX6FM.js → chunk-4VVCXVB7.js} +1 -1
  13. package/dist/chunk-6DDYNS2B.cjs +384 -0
  14. package/dist/{chunk-HKB656B4.js → chunk-6OC3ORW6.js} +55 -287
  15. package/dist/{chunk-GXEZ2R3E.js → chunk-6OKXH2TW.js} +18 -7
  16. package/dist/{chunk-TIT74RIL.cjs → chunk-7B56AJBB.cjs} +6214 -2423
  17. package/dist/{chunk-YWL7YZWS.cjs → chunk-7LRTPNFL.cjs} +5 -0
  18. package/dist/{chunk-CCVRRJOX.js → chunk-7PIUVCKK.js} +9 -2
  19. package/dist/{chunk-IIRPUVPH.cjs → chunk-7ZHBN75N.cjs} +3 -1
  20. package/dist/{chunk-RJ5ZGNI3.js → chunk-CFSGYFOZ.js} +1 -1
  21. package/dist/chunk-CTKM773J.cjs +3919 -0
  22. package/dist/chunk-DEIUR2TH.js +3919 -0
  23. package/dist/{chunk-WNKWAEUR.js → chunk-EYGBM2VC.js} +3 -1
  24. package/dist/{chunk-NGYOO5TO.js → chunk-FJNKXOWE.js} +9 -9
  25. package/dist/{chunk-UWDW6PN3.cjs → chunk-FX325I5Q.cjs} +20 -9
  26. package/dist/chunk-G4CZIUIB.cjs +200 -0
  27. package/dist/chunk-HCOQQAZE.cjs +123 -0
  28. package/dist/{chunk-55FMGZ3L.js → chunk-HN74IGEO.js} +1 -1
  29. package/dist/{chunk-ZY6KU6P3.js → chunk-HOMUGKHR.js} +8 -5
  30. package/dist/{chunk-AOFWNWLT.cjs → chunk-IUL4VWNU.cjs} +22 -1
  31. package/dist/{chunk-5LNYGCIW.cjs → chunk-KIQ2HA2A.cjs} +5 -5
  32. package/dist/{chunk-MUHWHQVM.cjs → chunk-KQBLZMP6.cjs} +4 -3
  33. package/dist/chunk-LFEH7CEO.js +384 -0
  34. package/dist/chunk-N76KU6F5.js +123 -0
  35. package/dist/{chunk-CMVXX7ON.cjs → chunk-NOITAVHA.cjs} +114 -58
  36. package/dist/{chunk-Q27JY5RG.cjs → chunk-OIKREZVQ.cjs} +7 -4
  37. package/dist/{chunk-RJUONLUQ.cjs → chunk-OST5RJOJ.cjs} +1 -1
  38. package/dist/{chunk-6D4W22P4.js → chunk-QIIAMBTM.js} +4 -1
  39. package/dist/{chunk-56QD3YW6.cjs → chunk-QWNUOR7F.cjs} +11 -4
  40. package/dist/{chunk-S3DYFEBE.js → chunk-R4VCO2CB.js} +10 -1
  41. package/dist/{chunk-ZQQUD66M.cjs → chunk-SQMAEDNE.cjs} +63 -295
  42. package/dist/{chunk-4VZX5F4T.cjs → chunk-T6NWPIYZ.cjs} +5 -2
  43. package/dist/{chunk-P7EM6BND.cjs → chunk-TVYA5JSQ.cjs} +10 -10
  44. package/dist/{chunk-EBLFCNPY.js → chunk-U47LQXPB.js} +5 -2
  45. package/dist/{chunk-N7OOJI5V.js → chunk-V2UKUTJ3.js} +5 -0
  46. package/dist/{chunk-45FHEOKW.js → chunk-V53ZEFXC.js} +92 -36
  47. package/dist/{chunk-OC6DOOFX.cjs → chunk-VXRTQZF2.cjs} +5 -5
  48. package/dist/{chunk-FEBAQI5A.js → chunk-WSJE42SG.js} +4964 -1173
  49. package/dist/{chunk-RICPANBY.cjs → chunk-WX2E2G7H.cjs} +13 -4
  50. package/dist/{chunk-DE2SRBFZ.js → chunk-X335TJNS.js} +4 -3
  51. package/dist/{chunk-N2EIM2XJ.js → chunk-ZLNHPUFA.js} +22 -1
  52. package/dist/completion/CompletionService.cjs +29 -26
  53. package/dist/completion/CompletionService.d.cts +3 -2
  54. package/dist/completion/CompletionService.d.ts +3 -2
  55. package/dist/completion/CompletionService.js +28 -25
  56. package/dist/completion.cjs +37 -34
  57. package/dist/completion.d.cts +3 -2
  58. package/dist/completion.d.ts +3 -2
  59. package/dist/completion.js +36 -33
  60. package/dist/image-generation.cjs +52 -0
  61. package/dist/image-generation.d.cts +93 -0
  62. package/dist/image-generation.d.ts +93 -0
  63. package/dist/image-generation.js +52 -0
  64. package/dist/index.cjs +126 -31
  65. package/dist/index.d.cts +11 -7
  66. package/dist/index.d.ts +11 -7
  67. package/dist/index.js +142 -47
  68. package/dist/openai-operation.cjs +18 -0
  69. package/dist/openai-operation.d.cts +19 -0
  70. package/dist/openai-operation.d.ts +19 -0
  71. package/dist/openai-operation.js +18 -0
  72. package/dist/outbound-api/auditCapture.cjs +3 -3
  73. package/dist/outbound-api/auditCapture.d.cts +13 -2
  74. package/dist/outbound-api/auditCapture.d.ts +13 -2
  75. package/dist/outbound-api/auditCapture.js +2 -2
  76. package/dist/outbound-api/auditRedact.cjs +2 -2
  77. package/dist/outbound-api/auditRedact.js +1 -1
  78. package/dist/outbound-api/routeResolver.cjs +2 -2
  79. package/dist/outbound-api/routeResolver.d.cts +7 -4
  80. package/dist/outbound-api/routeResolver.d.ts +7 -4
  81. package/dist/outbound-api/routeResolver.js +1 -1
  82. package/dist/outbound-api/subscriptionRegistryPort.d.cts +2 -1
  83. package/dist/outbound-api/subscriptionRegistryPort.d.ts +2 -1
  84. package/dist/outbound-api/types.d.cts +6 -3
  85. package/dist/outbound-api/types.d.ts +6 -3
  86. package/dist/outbound-api.cjs +48 -31
  87. package/dist/outbound-api.d.cts +95 -9
  88. package/dist/outbound-api.d.ts +95 -9
  89. package/dist/outbound-api.js +47 -30
  90. package/dist/pipeline/AccountAllowanceScheduling.d.cts +18 -15
  91. package/dist/pipeline/AccountAllowanceScheduling.d.ts +18 -15
  92. package/dist/pipeline/LlmConfigProviderAuth.cjs +3 -3
  93. package/dist/pipeline/LlmConfigProviderAuth.js +2 -2
  94. package/dist/pipeline/SubscriptionAccountHealth.cjs +2 -2
  95. package/dist/pipeline/SubscriptionAccountHealth.d.cts +7 -0
  96. package/dist/pipeline/SubscriptionAccountHealth.d.ts +7 -0
  97. package/dist/pipeline/SubscriptionAccountHealth.js +1 -1
  98. package/dist/pipeline/executeProviderCall.cjs +2 -2
  99. package/dist/pipeline/executeProviderCall.d.cts +11 -6
  100. package/dist/pipeline/executeProviderCall.d.ts +11 -6
  101. package/dist/pipeline/executeProviderCall.js +1 -1
  102. package/dist/pipeline/upstreamFetch.cjs +2 -2
  103. package/dist/pipeline/upstreamFetch.d.cts +5 -0
  104. package/dist/pipeline/upstreamFetch.d.ts +5 -0
  105. package/dist/pipeline/upstreamFetch.js +1 -1
  106. package/dist/ports.d.cts +6 -3
  107. package/dist/ports.d.ts +6 -3
  108. package/dist/provider-proxy/ProviderProxy.cjs +29 -26
  109. package/dist/provider-proxy/ProviderProxy.d.cts +3 -2
  110. package/dist/provider-proxy/ProviderProxy.d.ts +3 -2
  111. package/dist/provider-proxy/ProviderProxy.js +28 -25
  112. package/dist/provider-proxy/identity/codexCliHeaders.cjs +4 -2
  113. package/dist/provider-proxy/identity/codexCliHeaders.d.cts +26 -6
  114. package/dist/provider-proxy/identity/codexCliHeaders.d.ts +26 -6
  115. package/dist/provider-proxy/identity/codexCliHeaders.js +5 -3
  116. package/dist/provider-proxy/ingress/providerProxyShared.cjs +31 -26
  117. package/dist/provider-proxy/ingress/providerProxyShared.d.cts +21 -8
  118. package/dist/provider-proxy/ingress/providerProxyShared.d.ts +21 -8
  119. package/dist/provider-proxy/ingress/providerProxyShared.js +30 -25
  120. package/dist/provider-proxy/types.d.cts +14 -483
  121. package/dist/provider-proxy/types.d.ts +14 -483
  122. package/dist/provider-proxy.cjs +43 -26
  123. package/dist/provider-proxy.d.cts +30 -8
  124. package/dist/provider-proxy.d.ts +30 -8
  125. package/dist/provider-proxy.js +42 -25
  126. package/dist/{routeResolver-C0mkkZaM.d.ts → routeResolver-CTCcSHWu.d.ts} +4 -2
  127. package/dist/{routeResolver-CVFE8KKe.d.cts → routeResolver-rpKQLyDO.d.cts} +4 -2
  128. package/dist/transformer/TransformerChainExecutor.cjs +2 -2
  129. package/dist/transformer/TransformerChainExecutor.d.cts +2 -2
  130. package/dist/transformer/TransformerChainExecutor.d.ts +2 -2
  131. package/dist/transformer/TransformerChainExecutor.js +1 -1
  132. package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.cjs +16 -0
  133. package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.d.cts +53 -0
  134. package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.d.ts +53 -0
  135. package/dist/transformer/transformers/AnthropicOpenAIToAnthropicStream.js +16 -0
  136. package/dist/transformer/transformers/AnthropicTransformer.cjs +4 -3
  137. package/dist/transformer/transformers/AnthropicTransformer.js +3 -2
  138. package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +4 -4
  139. package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +3 -3
  140. package/dist/transformer/transformers/GeminiTransformer.cjs +4 -4
  141. package/dist/transformer/transformers/GeminiTransformer.js +3 -3
  142. package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +3 -3
  143. package/dist/transformer/transformers/OpenAIResponseTransformer.js +2 -2
  144. package/dist/transformer/transformers/OpenAITransformer.cjs +3 -3
  145. package/dist/transformer/transformers/OpenAITransformer.js +2 -2
  146. package/dist/transformer/transformers.cjs +10 -9
  147. package/dist/transformer/transformers.js +13 -12
  148. package/dist/transformer/types.d.cts +39 -4
  149. package/dist/transformer/types.d.ts +39 -4
  150. package/dist/transformer.cjs +14 -13
  151. package/dist/transformer.js +14 -13
  152. package/dist/{types-BB8pxk_3.d.ts → types-5T223WYQ.d.ts} +183 -23
  153. package/dist/types-Bd72H4SB.d.ts +196 -0
  154. package/dist/types-CVRge76p.d.ts +1115 -0
  155. package/dist/types-CbglB73l.d.cts +196 -0
  156. package/dist/types-DsHBBk3h.d.cts +1115 -0
  157. package/dist/{types-C2MwkLah.d.cts → types-jjU24eYG.d.cts} +183 -23
  158. package/dist/usage.cjs +2 -2
  159. package/dist/usage.d.cts +6 -1
  160. package/dist/usage.d.ts +6 -1
  161. package/dist/usage.js +1 -1
  162. package/package.json +69 -64
  163. package/dist/chunk-FCR77GYM.cjs +0 -33
  164. package/dist/chunk-K5NM7VAH.js +0 -33
  165. /package/dist/{chunk-XXFYLL7R.js → chunk-ECZ3ZE2C.js} +0 -0
  166. /package/dist/{chunk-3SCOLIPT.cjs → chunk-MXI2PWIC.cjs} +0 -0
@@ -1,18 +1,19 @@
1
1
  import { VoucherConfig } from '@omnicross/contracts/voucher-types';
2
- import { c as EndpointRoutingConfig, G as GatewayBinding, U as UserMessageQueueConfig, b as ConcurrencyQueueConfig, n as OutboundApiDeps, r as OutboundApiServerStatus, t as OutboundFormatUrls, A as AccountProbeConfig, a as AllowanceSchedulingConfig, F as FingerprintConfig, q as OutboundApiServerConfig, m as ModelPrefixTargets, x as OutboundProxyConfig, s as OutboundEndpoint, R as RequestRole, Q as ModelRef, k as KindMappedEndpoint, l as ModelKind, O as OutboundKeyDb, o as OutboundApiKeyCreated } from './types-BB8pxk_3.js';
3
- export { C as ChatDispatchMode, E as ENDPOINT_MODEL_KINDS, d as GatewayBindingFallback, e as GatewayBindingKeyScope, f as GatewayBindingModelMode, g as GatewayBindingTarget, h as GatewayModelMapping, K as KeySpendReader, i as KeySpendSeeder, j as KeySpendTracker, M as MessagesModelKind, p as OutboundApiKeyInfo, u as OutboundKeyActivationMode, v as OutboundKeyDbRow, w as OutboundKeyPolicy, y as ResponsesModelKind, V as VoucherCreateInput, z as VoucherDb, B as computeVoucherGrant, D as generateVoucherCode, H as hashVoucherCode, I as newVoucherId, J as startOfLocalDay, L as startOfLocalWeek, N as toVoucherInfo, P as voucherCodePrefix } from './types-BB8pxk_3.js';
2
+ import { c as EndpointRoutingConfig, G as GatewayBinding, U as UserMessageQueueConfig, b as ConcurrencyQueueConfig, W as AnthropicConfigSegment, n as OutboundApiDeps, r as OutboundApiServerStatus, t as OutboundFormatUrls, A as AccountProbeConfig, a as AllowanceSchedulingConfig, F as FingerprintConfig, q as OutboundApiServerConfig, m as ModelPrefixTargets, y as OutboundProxyConfig, I as ImagesServerConfig, s as OutboundEndpoint, R as RequestRole, T as ModelRef, k as KindMappedEndpoint, l as ModelKind, x as OutboundPermission, O as OutboundKeyDb, o as OutboundApiKeyCreated } from './types-5T223WYQ.js';
3
+ export { C as ChatDispatchMode, E as ENDPOINT_MODEL_KINDS, d as GatewayBindingFallback, e as GatewayBindingKeyScope, f as GatewayBindingModelMode, g as GatewayBindingTarget, h as GatewayModelMapping, K as KeySpendReader, i as KeySpendSeeder, j as KeySpendTracker, M as MessagesModelKind, p as OutboundApiKeyInfo, u as OutboundKeyActivationMode, v as OutboundKeyDbRow, w as OutboundKeyPolicy, z as ResponsesModelKind, V as VoucherCreateInput, B as VoucherDb, D as computeVoucherGrant, H as generateVoucherCode, J as hashVoucherCode, L as newVoucherId, N as startOfLocalDay, P as startOfLocalWeek, Q as toVoucherInfo, S as voucherCodePrefix } from './types-5T223WYQ.js';
4
4
  import { ProxyConfig } from '@omnicross/contracts/account-tokens-types';
5
5
  import { AuditConfig } from '@omnicross/contracts/audit-types';
6
6
  import { BillingConfig } from '@omnicross/contracts/billing-types';
7
7
  import { WebhookDestination, WebhookConfig } from '@omnicross/contracts/webhook-types';
8
+ import { e as ImageApiLimits } from './types-Bd72H4SB.js';
8
9
  export { AUDIT_REDACTED, redactAuditText } from './outbound-api/auditRedact.js';
9
10
  export { AuditCaptureContext, beginAuditCapture } from './outbound-api/auditCapture.js';
10
11
  export { BillingCaptureContext, beginBillingCapture } from './outbound-api/billingCapture.js';
11
12
  import { K as KeyCostLimits, M as ModelRestriction } from './keyPolicy-zdWTu3CQ.js';
12
13
  export { a as KeyExpiryInput, b as KeyExpiryResult, c as KeySpend, Q as QuotaDecision, d as checkKeyQuota, e as computeKeyExpiry } from './keyPolicy-zdWTu3CQ.js';
13
14
  import http from 'node:http';
14
- import { IngressFormat } from './provider-proxy/types.js';
15
- export { S as SUBSCRIPTION_PROVIDER_IDS, e as endpointSupportsSubscription, i as isSubscriptionProviderId, p as parseModelRef, a as pickModelRefFromList, r as resolveRoute } from './routeResolver-C0mkkZaM.js';
15
+ import { D as IngressFormat } from './types-CVRge76p.js';
16
+ export { S as SUBSCRIPTION_PROVIDER_IDS, e as endpointSupportsSubscription, i as isSubscriptionProviderId, p as parseModelRef, a as pickModelRefFromList, r as resolveRoute } from './routeResolver-CTCcSHWu.js';
16
17
  export { BoundAccountFallbackPolicy, BoundAccountSelectionError, BoundAccountSelectionFailureReason, boundAccountSelectionMessage, isBoundAccountSelectionError } from './pipeline/BoundAccountSelectionError.js';
17
18
  import '@omnicross/contracts/health-logging-types';
18
19
  import './logger-4GvQNzhE.js';
@@ -21,7 +22,9 @@ import '@omnicross/contracts/llm-config';
21
22
  import './transformer/types.js';
22
23
  import '@omnicross/contracts/completion-types';
23
24
  import './transformer/TransformerService.js';
24
- import './ProviderProxy--ROec6VI.js';
25
+ import './ProviderProxy-DYoY5XoT.js';
26
+ import '@omnicross/contracts/image-generation-types';
27
+ import 'node:fs/promises';
25
28
  import '@omnicross/contracts/usage-stats-types';
26
29
  import '@omnicross/contracts/subscription-types';
27
30
  import '@omnicross/contracts/usage-types';
@@ -62,6 +65,8 @@ declare const DEFAULT_OUTBOUND_PORT = 8765;
62
65
  interface ApplyConfigInput {
63
66
  enabled: boolean;
64
67
  networkBinding: boolean;
68
+ /** Additive Images URL publication; serving still depends on runtime capability. */
69
+ imagesEnabled?: boolean;
65
70
  endpoints: EndpointRoutingConfig[];
66
71
  /** Independent resource bindings; absent preserves legacy endpoint routing. */
67
72
  bindings?: GatewayBinding[];
@@ -73,6 +78,15 @@ interface ApplyConfigInput {
73
78
  /** Voucher segment (voucher-redemption #9). Read live per request; absent ⇒
74
79
  * disabled ⇒ the `/redeem` endpoint is inert (zero regression). */
75
80
  voucher?: VoucherConfig;
81
+ /** Anthropic-protocol segment (claude-api-protocol-fidelity, §10). Read live
82
+ * per request; the heartbeat value is hot-applied to the stream synthesizer. */
83
+ anthropic?: AnthropicConfigSegment;
84
+ }
85
+ /** Prepared listener/config publication used by the daemon's settings transaction. */
86
+ interface PreparedOutboundApiConfig {
87
+ publish(): Promise<void>;
88
+ rollback(): Promise<void>;
89
+ dispose(): Promise<void>;
76
90
  }
77
91
  declare class OutboundApiServer {
78
92
  private readonly deps;
@@ -86,6 +100,10 @@ declare class OutboundApiServer {
86
100
  private userMessageQueue;
87
101
  private concurrencyQueue;
88
102
  private voucherConfig;
103
+ private anthropicConfig;
104
+ private imagesEnabled;
105
+ /** R10 `/api/hello` switch (§10 `anthropic.apiHello`, default true). */
106
+ private apiHelloEnabled;
89
107
  private readonly rateLimiter;
90
108
  /**
91
109
  * Redeem-attempt limiter (voucher-redemption #9, design D6) — a SEPARATE bucket
@@ -111,12 +129,35 @@ declare class OutboundApiServer {
111
129
  * in place (read live per request — no restart).
112
130
  */
113
131
  applyConfig(input: ApplyConfigInput): Promise<void>;
132
+ /**
133
+ * Prepare any new listener before persistence when the target can coexist with
134
+ * the current socket. A live fixed-port address-only change cannot be made
135
+ * failure-atomic on every supported platform because the replacement cannot
136
+ * coexist with the old socket, so reject it before persistence instead of
137
+ * performing a fallible close-then-bind during publication.
138
+ */
139
+ prepareConfig(input: ApplyConfigInput): Promise<PreparedOutboundApiConfig>;
114
140
  /** Start the listener on `bindAddr:port`, falling back on EADDRINUSE. */
115
141
  start(bindAddr: string, port: number): Promise<number>;
116
142
  /** Bind once; on EADDRINUSE retry with an ephemeral port (port 0). */
117
- private listen;
143
+ private listenDetached;
144
+ private createHttpServer;
145
+ private installConfigSnapshot;
146
+ private captureRuntimeSnapshot;
147
+ private installRuntimeSnapshot;
148
+ private restoreRuntimeSnapshot;
149
+ private closeServer;
150
+ /** Publication already swapped the authoritative pointer; retirement cannot fail it. */
151
+ private closePublishedServer;
152
+ private announcePublishedListener;
118
153
  /** Per-request handler. Auth is enforced on EVERY request (incl. loopback). */
119
154
  private onRequest;
155
+ /**
156
+ * Serve `HEAD /api/hello` (exact path, query tolerated) with a bare 200 —
157
+ * returning true when it handled the request. Unauthenticated by design and
158
+ * gated on `anthropic.apiHello` (default true).
159
+ */
160
+ private tryServeApiHello;
120
161
  /**
121
162
  * Serve `GET|HEAD /health` (+ `/healthz`) from the injected provider, returning
122
163
  * true when it handled the request. 200 when `ok`, else 503; secret-free body.
@@ -321,6 +362,43 @@ declare function saveServerConfig(store: ApiServerSettingsStore, config: Outboun
321
362
  /** Apply a partial patch to a config, returning the merged whole. */
322
363
  declare function mergeServerConfig(current: OutboundApiServerConfig, patch: Partial<OutboundApiServerConfig>): OutboundApiServerConfig;
323
364
 
365
+ /** Immutable upper bounds used by both tolerant reads and strict admin writes. */
366
+ declare const IMAGE_SERVER_HARD_CEILINGS: Readonly<{
367
+ queue: Readonly<{
368
+ maxConcurrentJobsPerAccount: 8;
369
+ maxQueuedJobs: 1000;
370
+ queueTimeoutMs: number;
371
+ generationTimeoutMs: number;
372
+ }>;
373
+ temporary: Readonly<{
374
+ maxActiveScopes: 256;
375
+ maxTotalBytes: number;
376
+ maxTenantBytes: number;
377
+ staleAfterMs: number;
378
+ cleanupIntervalMs: number;
379
+ }>;
380
+ limits: Readonly<ImageApiLimits>;
381
+ references: Readonly<{
382
+ ttlMs: number;
383
+ maxArtifactBytes: number;
384
+ maxTotalBytes: number;
385
+ maxTenantBytes: number;
386
+ maxEntries: 1000000;
387
+ maxCalls: 2000000;
388
+ maxResponses: 1000000;
389
+ maxTombstones: 2000000;
390
+ tombstoneTtlMs: number;
391
+ cleanupIntervalMs: number;
392
+ }>;
393
+ evidenceTtlMs: number;
394
+ }>;
395
+ /** Migration-safe default: configured off, finite everywhere, and remote-disabled. */
396
+ declare const DEFAULT_IMAGES_SERVER_CONFIG: Readonly<ImagesServerConfig>;
397
+ /** Tolerant read normalization: malformed members fall back or clamp, never throw. */
398
+ declare function normalizeImagesServerConfig(value: unknown): ImagesServerConfig;
399
+ /** Strict structural/range validation. Daemon validation adds filesystem and resolver policy. */
400
+ declare function validateImagesServerConfig(value: unknown): string[];
401
+
324
402
  /**
325
403
  * Either the winning route projected to the resolver shape, or `none` — no
326
404
  * enabled route for this key/endpoint could serve the request. There is no
@@ -690,7 +768,15 @@ declare function createNamedKey(db: OutboundKeyDb, name: string): Promise<Outbou
690
768
  * Mint the local gateway key used by native CLI configuration adapters. Unlike
691
769
  * a user-distributed key it is explicitly loopback-only and endpoint-scoped.
692
770
  */
693
- declare function createIntegrationKey(db: OutboundKeyDb, name: string, allowedEndpoints?: OutboundEndpoint[]): Promise<OutboundApiKeyCreated>;
771
+ declare function createIntegrationKey(db: OutboundKeyDb, name: string, allowedEndpoints?: OutboundPermission[]): Promise<OutboundApiKeyCreated>;
772
+ declare const LEGACY_OUTBOUND_PERMISSIONS: readonly OutboundPermission[];
773
+ /** Strict write-edge validator. Stored-row reads use fail-closed interpretation below. */
774
+ declare function validateOutboundPermissions(value: unknown): OutboundPermission[];
775
+ /**
776
+ * Authoritative legacy interpretation. Absence preserves only the four historic
777
+ * families; malformed persisted data denies all instead of widening access.
778
+ */
779
+ declare function effectiveOutboundPermissions(value: unknown): readonly OutboundPermission[];
694
780
  /**
695
781
  * A verified key + the enforcement inputs carried from the row so the wire layer
696
782
  * runs its policy checks WITHOUT a second DB read (mirrors `maxConcurrency`).
@@ -698,7 +784,7 @@ declare function createIntegrationKey(db: OutboundKeyDb, name: string, allowedEn
698
784
  interface VerifiedKey {
699
785
  id: string;
700
786
  kind?: 'client' | 'integration';
701
- allowedEndpoints?: OutboundEndpoint[];
787
+ allowedEndpoints: OutboundPermission[];
702
788
  loopbackOnly?: boolean;
703
789
  /**
704
790
  * The key's per-key concurrency ceiling, carried from the row so the wire
@@ -920,4 +1006,4 @@ declare function getOutboundApiServer(deps?: OutboundApiDeps, onPortChange?: (po
920
1006
  /** Reset the singleton (tests / teardown only). */
921
1007
  declare function __resetOutboundApiServerForTests(): void;
922
1008
 
923
- export { AccountProbeConfig, AllowanceSchedulingConfig, type ApiServerSettingsStore, type ApplyConfigInput, ConcurrencyQueueConfig, ConcurrencyQueueFullError, ConcurrencyWaitCancelledError, ConcurrencyWaitTimeoutError, DEFAULT_ACCOUNT_PROBE, DEFAULT_ALLOWANCE_SCHEDULING, DEFAULT_CONCURRENCY_QUEUE, DEFAULT_FINGERPRINT, DEFAULT_OUTBOUND_PORT, DEFAULT_USER_MESSAGE_QUEUE, EndpointRoutingConfig, FingerprintConfig, type GateAcquireOptions, type GateAcquisition, type GateSlot, type GateStatusEntry, GatewayBinding, type GatewayBindingResolution, KeyCostLimits, type KeyVerification, KeyedMutex, KindMappedEndpoint, ModelKind, type ModelPrefixKind, ModelPrefixTargets, OUTBOUND_API_SERVER_CONFIG_KEY, OutboundApiDeps, OutboundApiKeyCreated, OutboundApiServer, OutboundApiServerConfig, OutboundApiServerStatus, OutboundConcurrencyGate, OutboundEndpoint, OutboundFormatUrls, OutboundKeyDb, OutboundProxyConfig, OutboundRateLimiter, RequestRole, type ResolveGatewayBindingInput, type SerialAcquireOptions, type SerialQueueStatusEntry, SerialQueueTimeoutError, type SerialSlot, UserMessageQueueConfig, UserMessageSerialQueue, type VerifiedKey, __resetOutboundApiServerForTests, candidateBackgroundModelIds, candidateGatewayBindings, classifyModelPrefix, createIntegrationKey, createNamedKey, defaultServerConfig, detectModelKind, detectRequestRole, endpointToIngressFormat, formatUrls, gatewayBindingToEndpointConfig, getOutboundApiServer, handleVoucherRedeem, hashKey, isConcurrencyRejection, isKindMappedEndpoint, isRedeemRequest, isSerialQueueTimeout, isUserMessageRequest, legacyEndpointsToBindings, loadServerConfig, mergeServerConfig, modelKindsForEndpoint, normalizeAccountProbe, normalizeAllowanceScheduling, normalizeAudit, normalizeBilling, normalizeFingerprint, normalizeGatewayBindings, normalizePrefixTargets, normalizeProxyConfig, normalizeProxySegment, normalizeQueueSegments, normalizeServerConfig, normalizeVoucher, normalizeWebhookDestination, normalizeWebhookSegment, randomBase62, resolveGatewayBinding, resolvePrefixTarget, saveServerConfig, validateEndpointModelConfig, verifyKey, verifyPresentedKey };
1009
+ export { AccountProbeConfig, AllowanceSchedulingConfig, type ApiServerSettingsStore, type ApplyConfigInput, ConcurrencyQueueConfig, ConcurrencyQueueFullError, ConcurrencyWaitCancelledError, ConcurrencyWaitTimeoutError, DEFAULT_ACCOUNT_PROBE, DEFAULT_ALLOWANCE_SCHEDULING, DEFAULT_CONCURRENCY_QUEUE, DEFAULT_FINGERPRINT, DEFAULT_IMAGES_SERVER_CONFIG, DEFAULT_OUTBOUND_PORT, DEFAULT_USER_MESSAGE_QUEUE, EndpointRoutingConfig, FingerprintConfig, type GateAcquireOptions, type GateAcquisition, type GateSlot, type GateStatusEntry, GatewayBinding, type GatewayBindingResolution, IMAGE_SERVER_HARD_CEILINGS, ImagesServerConfig, KeyCostLimits, type KeyVerification, KeyedMutex, KindMappedEndpoint, LEGACY_OUTBOUND_PERMISSIONS, ModelKind, type ModelPrefixKind, ModelPrefixTargets, OUTBOUND_API_SERVER_CONFIG_KEY, OutboundApiDeps, OutboundApiKeyCreated, OutboundApiServer, OutboundApiServerConfig, OutboundApiServerStatus, OutboundConcurrencyGate, OutboundEndpoint, OutboundFormatUrls, OutboundKeyDb, OutboundPermission, OutboundProxyConfig, OutboundRateLimiter, type PreparedOutboundApiConfig, RequestRole, type ResolveGatewayBindingInput, type SerialAcquireOptions, type SerialQueueStatusEntry, SerialQueueTimeoutError, type SerialSlot, UserMessageQueueConfig, UserMessageSerialQueue, type VerifiedKey, __resetOutboundApiServerForTests, candidateBackgroundModelIds, candidateGatewayBindings, classifyModelPrefix, createIntegrationKey, createNamedKey, defaultServerConfig, detectModelKind, detectRequestRole, effectiveOutboundPermissions, endpointToIngressFormat, formatUrls, gatewayBindingToEndpointConfig, getOutboundApiServer, handleVoucherRedeem, hashKey, isConcurrencyRejection, isKindMappedEndpoint, isRedeemRequest, isSerialQueueTimeout, isUserMessageRequest, legacyEndpointsToBindings, loadServerConfig, mergeServerConfig, modelKindsForEndpoint, normalizeAccountProbe, normalizeAllowanceScheduling, normalizeAudit, normalizeBilling, normalizeFingerprint, normalizeGatewayBindings, normalizeImagesServerConfig, normalizePrefixTargets, normalizeProxyConfig, normalizeProxySegment, normalizeQueueSegments, normalizeServerConfig, normalizeVoucher, normalizeWebhookDestination, normalizeWebhookSegment, randomBase62, resolveGatewayBinding, resolvePrefixTarget, saveServerConfig, validateEndpointModelConfig, validateImagesServerConfig, validateOutboundPermissions, verifyKey, verifyPresentedKey };
@@ -6,10 +6,13 @@ import {
6
6
  DEFAULT_ALLOWANCE_SCHEDULING,
7
7
  DEFAULT_CONCURRENCY_QUEUE,
8
8
  DEFAULT_FINGERPRINT,
9
+ DEFAULT_IMAGES_SERVER_CONFIG,
9
10
  DEFAULT_OUTBOUND_PORT,
10
11
  DEFAULT_USER_MESSAGE_QUEUE,
12
+ IMAGE_SERVER_HARD_CEILINGS,
11
13
  KeySpendTracker,
12
14
  KeyedMutex,
15
+ LEGACY_OUTBOUND_PERMISSIONS,
13
16
  OUTBOUND_API_SERVER_CONFIG_KEY,
14
17
  OutboundApiServer,
15
18
  OutboundConcurrencyGate,
@@ -25,6 +28,7 @@ import {
25
28
  createIntegrationKey,
26
29
  createNamedKey,
27
30
  defaultServerConfig,
31
+ effectiveOutboundPermissions,
28
32
  formatUrls,
29
33
  gatewayBindingToEndpointConfig,
30
34
  generateVoucherCode,
@@ -46,6 +50,7 @@ import {
46
50
  normalizeBilling,
47
51
  normalizeFingerprint,
48
52
  normalizeGatewayBindings,
53
+ normalizeImagesServerConfig,
49
54
  normalizePrefixTargets,
50
55
  normalizeProxyConfig,
51
56
  normalizeProxySegment,
@@ -60,34 +65,39 @@ import {
60
65
  startOfLocalDay,
61
66
  startOfLocalWeek,
62
67
  toVoucherInfo,
68
+ validateImagesServerConfig,
69
+ validateOutboundPermissions,
63
70
  verifyKey,
64
71
  verifyPresentedKey,
65
72
  voucherCodePrefix
66
- } from "./chunk-FEBAQI5A.js";
73
+ } from "./chunk-WSJE42SG.js";
67
74
  import "./chunk-VVEHS2LI.js";
68
75
  import "./chunk-WTQMX2Q6.js";
69
- import "./chunk-NGYOO5TO.js";
70
- import "./chunk-HKB656B4.js";
71
- import "./chunk-55FMGZ3L.js";
72
- import "./chunk-45FHEOKW.js";
76
+ import "./chunk-EYGBM2VC.js";
77
+ import "./chunk-DK4A7DLE.js";
78
+ import "./chunk-FJNKXOWE.js";
79
+ import "./chunk-V53ZEFXC.js";
80
+ import "./chunk-7PIUVCKK.js";
81
+ import "./chunk-6OC3ORW6.js";
73
82
  import "./chunk-FU7EAR73.js";
74
- import "./chunk-CCVRRJOX.js";
75
- import "./chunk-6D4W22P4.js";
83
+ import "./chunk-LFEH7CEO.js";
84
+ import "./chunk-HN74IGEO.js";
85
+ import "./chunk-QIIAMBTM.js";
76
86
  import "./chunk-FXR6N3SR.js";
77
87
  import "./chunk-AQDON6MB.js";
78
- import "./chunk-WNKWAEUR.js";
79
88
  import "./chunk-MZNPGW5Q.js";
80
- import "./chunk-DK4A7DLE.js";
81
- import "./chunk-XXFYLL7R.js";
89
+ import "./chunk-ECZ3ZE2C.js";
82
90
  import "./chunk-XTEI64OU.js";
83
91
  import "./chunk-XX6NQJMA.js";
84
92
  import "./chunk-GFIZ6LQI.js";
85
93
  import "./chunk-OE6TDIWW.js";
86
94
  import "./chunk-DRWHTIIZ.js";
95
+ import "./chunk-X335TJNS.js";
96
+ import "./chunk-HOMUGKHR.js";
87
97
  import "./chunk-JWC6APFQ.js";
88
98
  import "./chunk-5ERIZW3D.js";
89
99
  import "./chunk-PO3XB56Z.js";
90
- import "./chunk-N7OOJI5V.js";
100
+ import "./chunk-V2UKUTJ3.js";
91
101
  import "./chunk-23S5OPIO.js";
92
102
  import "./chunk-AVYJ4YBN.js";
93
103
  import "./chunk-OPRS4IQZ.js";
@@ -96,12 +106,19 @@ import {
96
106
  boundAccountSelectionMessage,
97
107
  isBoundAccountSelectionError
98
108
  } from "./chunk-2JYRIADS.js";
99
- import "./chunk-DE2SRBFZ.js";
100
- import "./chunk-ZY6KU6P3.js";
109
+ import {
110
+ beginAuditCapture
111
+ } from "./chunk-6OKXH2TW.js";
112
+ import "./chunk-WNY4WMRF.js";
113
+ import {
114
+ AUDIT_REDACTED,
115
+ redactAuditText
116
+ } from "./chunk-N76KU6F5.js";
101
117
  import {
102
118
  beginBillingCapture
103
119
  } from "./chunk-WLYIIEAF.js";
104
120
  import "./chunk-TKJMZBAH.js";
121
+ import "./chunk-OZFM4X3S.js";
105
122
  import "./chunk-3QFXFCHG.js";
106
123
  import {
107
124
  SUBSCRIPTION_PROVIDER_IDS,
@@ -118,34 +135,27 @@ import {
118
135
  resolvePrefixTarget,
119
136
  resolveRoute,
120
137
  validateEndpointModelConfig
121
- } from "./chunk-EBLFCNPY.js";
138
+ } from "./chunk-U47LQXPB.js";
122
139
  import "./chunk-AQ5TNQB7.js";
123
140
  import {
124
141
  ENDPOINT_MODEL_KINDS
125
142
  } from "./chunk-XEKD23J5.js";
143
+ import "./chunk-Y7FO65VT.js";
144
+ import "./chunk-FMOBD2OQ.js";
145
+ import "./chunk-HUZZZ3JL.js";
126
146
  import "./chunk-H5JUT3KV.js";
127
- import {
128
- beginAuditCapture
129
- } from "./chunk-GXEZ2R3E.js";
130
- import {
131
- AUDIT_REDACTED,
132
- redactAuditText
133
- } from "./chunk-K5NM7VAH.js";
134
- import "./chunk-WNY4WMRF.js";
135
- import "./chunk-OZFM4X3S.js";
136
147
  import "./chunk-5NJLQ6T6.js";
137
- import "./chunk-2UTGX6FM.js";
138
- import "./chunk-S3DYFEBE.js";
148
+ import "./chunk-4VVCXVB7.js";
149
+ import "./chunk-R4VCO2CB.js";
139
150
  import "./chunk-WYVGULTQ.js";
140
- import "./chunk-N2EIM2XJ.js";
141
- import "./chunk-RJ5ZGNI3.js";
151
+ import "./chunk-ZLNHPUFA.js";
152
+ import "./chunk-CFSGYFOZ.js";
142
153
  import "./chunk-3WD4HTR2.js";
143
154
  import "./chunk-MKF46GNZ.js";
144
155
  import "./chunk-GL6XM527.js";
156
+ import "./chunk-DEIUR2TH.js";
157
+ import "./chunk-4JOU54M5.js";
145
158
  import "./chunk-CDHS2QDC.js";
146
- import "./chunk-Y7FO65VT.js";
147
- import "./chunk-FMOBD2OQ.js";
148
- import "./chunk-HUZZZ3JL.js";
149
159
  export {
150
160
  AUDIT_REDACTED,
151
161
  BoundAccountSelectionError,
@@ -156,11 +166,14 @@ export {
156
166
  DEFAULT_ALLOWANCE_SCHEDULING,
157
167
  DEFAULT_CONCURRENCY_QUEUE,
158
168
  DEFAULT_FINGERPRINT,
169
+ DEFAULT_IMAGES_SERVER_CONFIG,
159
170
  DEFAULT_OUTBOUND_PORT,
160
171
  DEFAULT_USER_MESSAGE_QUEUE,
161
172
  ENDPOINT_MODEL_KINDS,
173
+ IMAGE_SERVER_HARD_CEILINGS,
162
174
  KeySpendTracker,
163
175
  KeyedMutex,
176
+ LEGACY_OUTBOUND_PERMISSIONS,
164
177
  OUTBOUND_API_SERVER_CONFIG_KEY,
165
178
  OutboundApiServer,
166
179
  OutboundConcurrencyGate,
@@ -183,6 +196,7 @@ export {
183
196
  defaultServerConfig,
184
197
  detectModelKind,
185
198
  detectRequestRole,
199
+ effectiveOutboundPermissions,
186
200
  endpointSupportsSubscription,
187
201
  endpointToIngressFormat,
188
202
  formatUrls,
@@ -210,6 +224,7 @@ export {
210
224
  normalizeBilling,
211
225
  normalizeFingerprint,
212
226
  normalizeGatewayBindings,
227
+ normalizeImagesServerConfig,
213
228
  normalizePrefixTargets,
214
229
  normalizeProxyConfig,
215
230
  normalizeProxySegment,
@@ -230,6 +245,8 @@ export {
230
245
  startOfLocalWeek,
231
246
  toVoucherInfo,
232
247
  validateEndpointModelConfig,
248
+ validateImagesServerConfig,
249
+ validateOutboundPermissions,
233
250
  verifyKey,
234
251
  verifyPresentedKey,
235
252
  voucherCodePrefix
@@ -1,30 +1,33 @@
1
1
  import { SubscriptionProviderId } from '@omnicross/contracts/subscription-types';
2
- import { a as AllowanceSchedulingConfig } from '../types-C2MwkLah.cjs';
2
+ import { a as AllowanceSchedulingConfig } from '../types-jjU24eYG.cjs';
3
3
  import { AccountAllowanceStore } from './AccountAllowanceStore.cjs';
4
- import '@omnicross/contracts/account-tokens-types';
5
- import '@omnicross/contracts/audit-types';
6
- import '@omnicross/contracts/billing-types';
7
- import '@omnicross/contracts/health-logging-types';
8
- import '@omnicross/contracts/voucher-types';
9
- import '@omnicross/contracts/webhook-types';
10
- import '../logger-4GvQNzhE.cjs';
11
- import '../ports/provider-config-source.cjs';
12
- import '@omnicross/contracts/llm-config';
13
- import '../transformer/types.cjs';
14
- import '@omnicross/contracts/completion-types';
15
- import '../transformer/TransformerService.cjs';
16
- import '../ProviderProxy-QdwNV6l1.cjs';
17
- import '../provider-proxy/types.cjs';
4
+ import '../types-CbglB73l.cjs';
5
+ import '@omnicross/contracts/image-generation-types';
6
+ import '../types-DsHBBk3h.cjs';
18
7
  import 'node:http';
8
+ import '@omnicross/contracts/completion-types';
19
9
  import '@omnicross/contracts/usage-stats-types';
20
10
  import '@omnicross/contracts/usage-types';
21
11
  import '../completion/ApiKeyPoolService.cjs';
12
+ import '@omnicross/contracts/llm-config';
13
+ import '../logger-4GvQNzhE.cjs';
22
14
  import './AuthSource.cjs';
23
15
  import './BoundAccountSelectionError.cjs';
24
16
  import './SubscriptionAuthSource.cjs';
25
17
  import './SubscriptionAuthStrategy.cjs';
18
+ import '../ports/provider-config-source.cjs';
19
+ import '../transformer/types.cjs';
20
+ import '../transformer/TransformerService.cjs';
26
21
  import '../ports/web-search-backend.cjs';
27
22
  import '@omnicross/contracts/websearch-types';
23
+ import 'node:fs/promises';
24
+ import '@omnicross/contracts/account-tokens-types';
25
+ import '@omnicross/contracts/audit-types';
26
+ import '@omnicross/contracts/billing-types';
27
+ import '@omnicross/contracts/health-logging-types';
28
+ import '@omnicross/contracts/voucher-types';
29
+ import '@omnicross/contracts/webhook-types';
30
+ import '../ProviderProxy-CgIcCVwk.cjs';
28
31
  import '../keyPolicy-zdWTu3CQ.cjs';
29
32
  import '@omnicross/contracts/account-allowance-types';
30
33
 
@@ -1,30 +1,33 @@
1
1
  import { SubscriptionProviderId } from '@omnicross/contracts/subscription-types';
2
- import { a as AllowanceSchedulingConfig } from '../types-BB8pxk_3.js';
2
+ import { a as AllowanceSchedulingConfig } from '../types-5T223WYQ.js';
3
3
  import { AccountAllowanceStore } from './AccountAllowanceStore.js';
4
- import '@omnicross/contracts/account-tokens-types';
5
- import '@omnicross/contracts/audit-types';
6
- import '@omnicross/contracts/billing-types';
7
- import '@omnicross/contracts/health-logging-types';
8
- import '@omnicross/contracts/voucher-types';
9
- import '@omnicross/contracts/webhook-types';
10
- import '../logger-4GvQNzhE.js';
11
- import '../ports/provider-config-source.js';
12
- import '@omnicross/contracts/llm-config';
13
- import '../transformer/types.js';
14
- import '@omnicross/contracts/completion-types';
15
- import '../transformer/TransformerService.js';
16
- import '../ProviderProxy--ROec6VI.js';
17
- import '../provider-proxy/types.js';
4
+ import '../types-Bd72H4SB.js';
5
+ import '@omnicross/contracts/image-generation-types';
6
+ import '../types-CVRge76p.js';
18
7
  import 'node:http';
8
+ import '@omnicross/contracts/completion-types';
19
9
  import '@omnicross/contracts/usage-stats-types';
20
10
  import '@omnicross/contracts/usage-types';
21
11
  import '../completion/ApiKeyPoolService.js';
12
+ import '@omnicross/contracts/llm-config';
13
+ import '../logger-4GvQNzhE.js';
22
14
  import './AuthSource.js';
23
15
  import './BoundAccountSelectionError.js';
24
16
  import './SubscriptionAuthSource.js';
25
17
  import './SubscriptionAuthStrategy.js';
18
+ import '../ports/provider-config-source.js';
19
+ import '../transformer/types.js';
20
+ import '../transformer/TransformerService.js';
26
21
  import '../ports/web-search-backend.js';
27
22
  import '@omnicross/contracts/websearch-types';
23
+ import 'node:fs/promises';
24
+ import '@omnicross/contracts/account-tokens-types';
25
+ import '@omnicross/contracts/audit-types';
26
+ import '@omnicross/contracts/billing-types';
27
+ import '@omnicross/contracts/health-logging-types';
28
+ import '@omnicross/contracts/voucher-types';
29
+ import '@omnicross/contracts/webhook-types';
30
+ import '../ProviderProxy-DYoY5XoT.js';
28
31
  import '../keyPolicy-zdWTu3CQ.js';
29
32
  import '@omnicross/contracts/account-allowance-types';
30
33
 
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkQ27JY5RGcjs = require('../chunk-Q27JY5RG.cjs');
4
- require('../chunk-A2YMUCBT.cjs');
3
+ var _chunkOIKREZVQcjs = require('../chunk-OIKREZVQ.cjs');
5
4
  require('../chunk-UNEFIWXI.cjs');
5
+ require('../chunk-A2YMUCBT.cjs');
6
6
 
7
7
 
8
- exports.LlmConfigProviderAuth = _chunkQ27JY5RGcjs.LlmConfigProviderAuth;
8
+ exports.LlmConfigProviderAuth = _chunkOIKREZVQcjs.LlmConfigProviderAuth;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  LlmConfigProviderAuth
3
- } from "../chunk-ZY6KU6P3.js";
4
- import "../chunk-H5JUT3KV.js";
3
+ } from "../chunk-HOMUGKHR.js";
5
4
  import "../chunk-HUZZZ3JL.js";
5
+ import "../chunk-H5JUT3KV.js";
6
6
  export {
7
7
  LlmConfigProviderAuth
8
8
  };
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- var _chunkYWL7YZWScjs = require('../chunk-YWL7YZWS.cjs');
13
+ var _chunk7LRTPNFLcjs = require('../chunk-7LRTPNFL.cjs');
14
14
 
15
15
 
16
16
 
@@ -23,4 +23,4 @@ var _chunkYWL7YZWScjs = require('../chunk-YWL7YZWS.cjs');
23
23
 
24
24
 
25
25
 
26
- exports.ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT = _chunkYWL7YZWScjs.ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT; exports.AUTH_ERROR_TTL_MS = _chunkYWL7YZWScjs.AUTH_ERROR_TTL_MS; exports.MAX_QUOTA_COOLDOWN_MS = _chunkYWL7YZWScjs.MAX_QUOTA_COOLDOWN_MS; exports.OVERLOAD_ENABLED_DEFAULT = _chunkYWL7YZWScjs.OVERLOAD_ENABLED_DEFAULT; exports.OVERLOAD_TTL_MS = _chunkYWL7YZWScjs.OVERLOAD_TTL_MS; exports.SERVER_ERROR_TTL_MS = _chunkYWL7YZWScjs.SERVER_ERROR_TTL_MS; exports.SubscriptionAccountHealth = _chunkYWL7YZWScjs.SubscriptionAccountHealth; exports.__resetSharedAccountHealthForTests = _chunkYWL7YZWScjs.__resetSharedAccountHealthForTests; exports.getSharedAccountHealth = _chunkYWL7YZWScjs.getSharedAccountHealth; exports.resolveResetSeconds = _chunkYWL7YZWScjs.resolveResetSeconds; exports.setSharedAccountHealth = _chunkYWL7YZWScjs.setSharedAccountHealth;
26
+ exports.ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT = _chunk7LRTPNFLcjs.ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT; exports.AUTH_ERROR_TTL_MS = _chunk7LRTPNFLcjs.AUTH_ERROR_TTL_MS; exports.MAX_QUOTA_COOLDOWN_MS = _chunk7LRTPNFLcjs.MAX_QUOTA_COOLDOWN_MS; exports.OVERLOAD_ENABLED_DEFAULT = _chunk7LRTPNFLcjs.OVERLOAD_ENABLED_DEFAULT; exports.OVERLOAD_TTL_MS = _chunk7LRTPNFLcjs.OVERLOAD_TTL_MS; exports.SERVER_ERROR_TTL_MS = _chunk7LRTPNFLcjs.SERVER_ERROR_TTL_MS; exports.SubscriptionAccountHealth = _chunk7LRTPNFLcjs.SubscriptionAccountHealth; exports.__resetSharedAccountHealthForTests = _chunk7LRTPNFLcjs.__resetSharedAccountHealthForTests; exports.getSharedAccountHealth = _chunk7LRTPNFLcjs.getSharedAccountHealth; exports.resolveResetSeconds = _chunk7LRTPNFLcjs.resolveResetSeconds; exports.setSharedAccountHealth = _chunk7LRTPNFLcjs.setSharedAccountHealth;
@@ -138,6 +138,13 @@ interface RecordUpstreamOutcomeInput {
138
138
  retryAfterSeconds?: number | null;
139
139
  /** Bounded response body text for the 403-ban sniff (only read on a 403). */
140
140
  bodyText?: string;
141
+ /**
142
+ * DIAGNOSTIC-ONLY (claude-api-transform-fidelity, R11): the upstream error
143
+ * body's `error.type` on failure statuses (429/529/≥500). Logged, never
144
+ * consulted by any decision branch — a table-driven test pins that outcomes
145
+ * are identical with and without it.
146
+ */
147
+ upstreamErrorType?: string;
141
148
  /** Injectable clock (default the tracker's `now`). */
142
149
  now?: number;
143
150
  }
@@ -138,6 +138,13 @@ interface RecordUpstreamOutcomeInput {
138
138
  retryAfterSeconds?: number | null;
139
139
  /** Bounded response body text for the 403-ban sniff (only read on a 403). */
140
140
  bodyText?: string;
141
+ /**
142
+ * DIAGNOSTIC-ONLY (claude-api-transform-fidelity, R11): the upstream error
143
+ * body's `error.type` on failure statuses (429/529/≥500). Logged, never
144
+ * consulted by any decision branch — a table-driven test pins that outcomes
145
+ * are identical with and without it.
146
+ */
147
+ upstreamErrorType?: string;
141
148
  /** Injectable clock (default the tracker's `now`). */
142
149
  now?: number;
143
150
  }
@@ -10,7 +10,7 @@ import {
10
10
  getSharedAccountHealth,
11
11
  resolveResetSeconds,
12
12
  setSharedAccountHealth
13
- } from "../chunk-N7OOJI5V.js";
13
+ } from "../chunk-V2UKUTJ3.js";
14
14
  export {
15
15
  ACCOUNT_HEALTH_DIAGNOSTIC_LIMIT,
16
16
  AUTH_ERROR_TTL_MS,
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkMUHWHQVMcjs = require('../chunk-MUHWHQVM.cjs');
3
+ var _chunkKQBLZMP6cjs = require('../chunk-KQBLZMP6.cjs');
4
4
 
5
5
 
6
- exports.executeProviderCall = _chunkMUHWHQVMcjs.executeProviderCall;
6
+ exports.executeProviderCall = _chunkKQBLZMP6cjs.executeProviderCall;
@@ -31,8 +31,8 @@ import '@omnicross/contracts/completion-types';
31
31
  * mutated `prepareBody` output. Each site passes a DIFFERENT variable
32
32
  * there today (proxy → post-transform `requestBody`; Adapter/Handler →
33
33
  * the pre-transform `unifiedRequest`), so the core does not hard-code
34
- * it — `responseChainRequest` is supplied by the caller when
35
- * `runResponseChain` is true.
34
+ * it — `responseChainRequest` may be supplied by the caller, while a
35
+ * wire ingress can explicitly retain the post-endpoint Unified request.
36
36
  *
37
37
  * 2. The engine adapter and Handler check `response.ok` on the RAW fetch response
38
38
  * BEFORE running the response chain. Those sites therefore set
@@ -113,12 +113,17 @@ interface ProviderCallContext {
113
113
  runResponseChain?: boolean;
114
114
  /**
115
115
  * The first argument passed to `executeResponseChain` when
116
- * `runResponseChain` is true. This is REQUIRED in that mode because the
117
- * sites diverge on which variable they pass (proxy post-transform
118
- * `requestBody`; the unified ingresses the pre-transform request). The
119
- * core never assumes it equals `prepareBody`'s output.
116
+ * `runResponseChain` is true. Sites diverge on which variable they pass
117
+ * (proxy post-transform `requestBody`; unified ingressesthe
118
+ * pre-transform request), so callers can supply it explicitly. The core
119
+ * never assumes it equals `prepareBody`'s output.
120
120
  */
121
121
  responseChainRequest?: UnifiedChatRequest;
122
+ /**
123
+ * Use the post-endpoint, pre-target Unified request for response encoding.
124
+ * Opt-in preserves the historical proxy fallback to final `requestBody`.
125
+ */
126
+ preserveEndpointRequestForResponseChain?: boolean;
122
127
  }
123
128
  /**
124
129
  * Result of the common exchange.
@@ -31,8 +31,8 @@ import '@omnicross/contracts/completion-types';
31
31
  * mutated `prepareBody` output. Each site passes a DIFFERENT variable
32
32
  * there today (proxy → post-transform `requestBody`; Adapter/Handler →
33
33
  * the pre-transform `unifiedRequest`), so the core does not hard-code
34
- * it — `responseChainRequest` is supplied by the caller when
35
- * `runResponseChain` is true.
34
+ * it — `responseChainRequest` may be supplied by the caller, while a
35
+ * wire ingress can explicitly retain the post-endpoint Unified request.
36
36
  *
37
37
  * 2. The engine adapter and Handler check `response.ok` on the RAW fetch response
38
38
  * BEFORE running the response chain. Those sites therefore set
@@ -113,12 +113,17 @@ interface ProviderCallContext {
113
113
  runResponseChain?: boolean;
114
114
  /**
115
115
  * The first argument passed to `executeResponseChain` when
116
- * `runResponseChain` is true. This is REQUIRED in that mode because the
117
- * sites diverge on which variable they pass (proxy post-transform
118
- * `requestBody`; the unified ingresses the pre-transform request). The
119
- * core never assumes it equals `prepareBody`'s output.
116
+ * `runResponseChain` is true. Sites diverge on which variable they pass
117
+ * (proxy post-transform `requestBody`; unified ingressesthe
118
+ * pre-transform request), so callers can supply it explicitly. The core
119
+ * never assumes it equals `prepareBody`'s output.
120
120
  */
121
121
  responseChainRequest?: UnifiedChatRequest;
122
+ /**
123
+ * Use the post-endpoint, pre-target Unified request for response encoding.
124
+ * Opt-in preserves the historical proxy fallback to final `requestBody`.
125
+ */
126
+ preserveEndpointRequestForResponseChain?: boolean;
122
127
  }
123
128
  /**
124
129
  * Result of the common exchange.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  executeProviderCall
3
- } from "../chunk-DE2SRBFZ.js";
3
+ } from "../chunk-X335TJNS.js";
4
4
  export {
5
5
  executeProviderCall
6
6
  };