@omnicross/core 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/dist/ApiConverter.cjs +3 -778
  2. package/dist/ApiConverter.js +12 -751
  3. package/dist/{CompletionService-DtOF_War.d.cts → CompletionService-D3a47vdU.d.cts} +2 -1
  4. package/dist/{CompletionService-7fCmKAP3.d.ts → CompletionService-DdWaAxq0.d.ts} +2 -1
  5. package/dist/auth/GeminiCodeAssistProjectResolver.cjs +27 -60
  6. package/dist/auth/GeminiCodeAssistProjectResolver.js +5 -9
  7. package/dist/builtin-web-fetch-77JZUZGM.cjs +100 -0
  8. package/dist/builtin-web-fetch-IGLBX2XY.js +100 -0
  9. package/dist/chunk-2DCNB7DF.cjs +514 -0
  10. package/dist/chunk-2FEVTJWG.js +4400 -0
  11. package/dist/chunk-3MEACFK3.js +193 -0
  12. package/dist/chunk-3OPYJG76.cjs +266 -0
  13. package/dist/chunk-46RLHI7D.js +0 -0
  14. package/dist/chunk-46ZIFWYG.cjs +277 -0
  15. package/dist/chunk-4NBS6KPV.cjs +43 -0
  16. package/dist/chunk-4VAVYUZS.cjs +991 -0
  17. package/dist/chunk-5ERIZW3D.js +44 -0
  18. package/dist/chunk-5HTVET6E.js +514 -0
  19. package/dist/chunk-5ZQBEOMD.js +764 -0
  20. package/dist/chunk-6VIXXLMX.cjs +14 -0
  21. package/dist/chunk-745DV5FL.js +147 -0
  22. package/dist/chunk-74TMJA7Z.js +53 -0
  23. package/dist/chunk-7VU7V2E4.js +0 -0
  24. package/dist/chunk-7YN22L2H.cjs +87 -0
  25. package/dist/chunk-A2YMUCBT.cjs +105 -0
  26. package/dist/chunk-AQ5TNQB7.js +13 -0
  27. package/dist/chunk-AVYJ4YBN.js +58 -0
  28. package/dist/chunk-C72S6TTV.cjs +49 -0
  29. package/dist/chunk-C7PSERMH.js +87 -0
  30. package/dist/chunk-CDHS2QDC.js +179 -0
  31. package/dist/chunk-DK4A7DLE.js +266 -0
  32. package/dist/chunk-DRWHTIIZ.js +13 -0
  33. package/dist/chunk-DWKQZ2SK.cjs +254 -0
  34. package/dist/chunk-E3WHL7CO.js +14 -0
  35. package/dist/chunk-EYZYXJTJ.cjs +1 -0
  36. package/dist/chunk-FMOBD2OQ.js +39 -0
  37. package/dist/chunk-FTQ7IQUC.js +991 -0
  38. package/dist/chunk-FZ46M34D.cjs +1 -0
  39. package/dist/chunk-G2FUJNA2.cjs +193 -0
  40. package/dist/chunk-G2UTNSGU.js +277 -0
  41. package/dist/chunk-GBHYAGX3.cjs +26 -0
  42. package/dist/chunk-GMMT7RVN.cjs +39 -0
  43. package/dist/chunk-H5JUT3KV.js +105 -0
  44. package/dist/chunk-HQP3K7PU.cjs +431 -0
  45. package/dist/chunk-JO5NLTLY.js +46 -0
  46. package/dist/chunk-JWC6APFQ.js +23 -0
  47. package/dist/chunk-KUU2RNG6.cjs +46 -0
  48. package/dist/chunk-LKZJEL6E.cjs +124 -0
  49. package/dist/chunk-MNYKI4CI.js +94 -0
  50. package/dist/chunk-MZNPGW5Q.js +26 -0
  51. package/dist/chunk-N3V2J5ZO.cjs +53 -0
  52. package/dist/chunk-NYUNU75A.cjs +44 -0
  53. package/dist/chunk-NZYN7C3P.cjs +179 -0
  54. package/dist/chunk-O466Y272.js +235 -0
  55. package/dist/chunk-PXUJF5HS.js +124 -0
  56. package/dist/chunk-QBZJ7P2T.cjs +13 -0
  57. package/dist/chunk-QOCNX236.js +46 -0
  58. package/dist/chunk-QXD4MV2X.cjs +23 -0
  59. package/dist/chunk-R3HK6R4B.cjs +13 -0
  60. package/dist/chunk-RSJ3TWJQ.cjs +186 -0
  61. package/dist/chunk-S4WBV25P.js +913 -0
  62. package/dist/chunk-SN3YWBX7.cjs +4400 -0
  63. package/dist/chunk-SPVWWUHX.cjs +46 -0
  64. package/dist/chunk-SUEGJ75D.cjs +764 -0
  65. package/dist/chunk-SVNDB62D.cjs +58 -0
  66. package/dist/chunk-UYPEN5XE.cjs +235 -0
  67. package/dist/chunk-V5KPWNYX.cjs +147 -0
  68. package/dist/chunk-VVEHS2LI.js +431 -0
  69. package/dist/chunk-XBSYYZIY.cjs +94 -0
  70. package/dist/chunk-YGXJGRFI.cjs +913 -0
  71. package/dist/chunk-YMFAJFQT.cjs +173 -0
  72. package/dist/chunk-Z7LUNECE.js +49 -0
  73. package/dist/chunk-Z7Y2NPHY.js +186 -0
  74. package/dist/chunk-ZJZAOKI7.js +254 -0
  75. package/dist/chunk-ZLX3KGXX.js +173 -0
  76. package/dist/chunk-ZSVQT3PW.js +43 -0
  77. package/dist/completion/ApiKeyPoolService.cjs +23 -48
  78. package/dist/completion/ApiKeyPoolService.d.cts +150 -2
  79. package/dist/completion/ApiKeyPoolService.d.ts +150 -2
  80. package/dist/completion/BuiltinToolExecutor.cjs +9 -324
  81. package/dist/completion/BuiltinToolExecutor.js +6 -290
  82. package/dist/completion/CompletionService.cjs +38 -3487
  83. package/dist/completion/CompletionService.d.cts +3 -2
  84. package/dist/completion/CompletionService.d.ts +3 -2
  85. package/dist/completion/CompletionService.js +34 -3457
  86. package/dist/completion/NativeSearchInjector.cjs +8 -192
  87. package/dist/completion/NativeSearchInjector.js +7 -162
  88. package/dist/completion/ProviderSearchInjector.cjs +12 -39
  89. package/dist/completion/native-search-types.cjs +13 -66
  90. package/dist/completion/native-search-types.js +7 -31
  91. package/dist/completion/openrouter-headers.cjs +15 -71
  92. package/dist/completion/openrouter-headers.js +8 -34
  93. package/dist/completion/openrouter-models.cjs +10 -67
  94. package/dist/completion/openrouter-models.js +4 -34
  95. package/dist/completion/types.cjs +1 -18
  96. package/dist/completion/url-builder.cjs +24 -138
  97. package/dist/completion/url-builder.js +12 -92
  98. package/dist/completion.cjs +55 -3989
  99. package/dist/completion.d.cts +3 -2
  100. package/dist/completion.d.ts +3 -2
  101. package/dist/completion.js +63 -3953
  102. package/dist/index.cjs +197 -10429
  103. package/dist/index.d.cts +9 -2
  104. package/dist/index.d.ts +9 -2
  105. package/dist/index.js +125 -10268
  106. package/dist/logger-4GvQNzhE.d.cts +22 -0
  107. package/dist/logger-4GvQNzhE.d.ts +22 -0
  108. package/dist/outbound-api/routeResolver.cjs +7 -217
  109. package/dist/outbound-api/routeResolver.d.cts +2 -1
  110. package/dist/outbound-api/routeResolver.d.ts +2 -1
  111. package/dist/outbound-api/routeResolver.js +6 -187
  112. package/dist/outbound-api/subscriptionRegistryPort.cjs +7 -37
  113. package/dist/outbound-api/subscriptionRegistryPort.d.cts +2 -1
  114. package/dist/outbound-api/subscriptionRegistryPort.d.ts +2 -1
  115. package/dist/outbound-api/subscriptionRegistryPort.js +4 -8
  116. package/dist/outbound-api/types.cjs +1 -18
  117. package/dist/outbound-api/types.d.cts +2 -1
  118. package/dist/outbound-api/types.d.ts +2 -1
  119. package/dist/outbound-api.cjs +35 -5221
  120. package/dist/outbound-api.d.cts +2 -1
  121. package/dist/outbound-api.d.ts +2 -1
  122. package/dist/outbound-api.js +54 -5194
  123. package/dist/pipeline/AuthSource.cjs +1 -18
  124. package/dist/pipeline/LlmConfigProviderAuth.cjs +5 -166
  125. package/dist/pipeline/LlmConfigProviderAuth.d.cts +2 -1
  126. package/dist/pipeline/LlmConfigProviderAuth.d.ts +2 -1
  127. package/dist/pipeline/LlmConfigProviderAuth.js +5 -139
  128. package/dist/pipeline/SubscriptionAuthSource.cjs +6 -128
  129. package/dist/pipeline/SubscriptionAuthSource.js +5 -99
  130. package/dist/pipeline/SubscriptionAuthStrategy.cjs +1 -18
  131. package/dist/pipeline/executeProviderCall.cjs +5 -69
  132. package/dist/pipeline/executeProviderCall.js +3 -42
  133. package/dist/pipeline/resolveProviderChain.cjs +5 -46
  134. package/dist/pipeline/resolveProviderChain.js +3 -19
  135. package/dist/pipeline/resolveSubscriptionChain.cjs +5 -67
  136. package/dist/pipeline/resolveSubscriptionChain.js +3 -40
  137. package/dist/ports/gemini-code-assist-resolver.cjs +7 -37
  138. package/dist/ports/gemini-code-assist-resolver.js +4 -8
  139. package/dist/ports/pricing-store.cjs +1 -0
  140. package/dist/ports/pricing-store.d.cts +50 -0
  141. package/dist/ports/pricing-store.d.ts +50 -0
  142. package/dist/ports/pricing-store.js +0 -0
  143. package/dist/ports/provider-config-source.cjs +1 -18
  144. package/dist/ports/usage-event-store.cjs +1 -0
  145. package/dist/ports/usage-event-store.d.cts +29 -0
  146. package/dist/ports/usage-event-store.d.ts +29 -0
  147. package/dist/ports/usage-event-store.js +0 -0
  148. package/dist/ports/web-search-backend.cjs +1 -18
  149. package/dist/ports.cjs +1 -18
  150. package/dist/ports.d.cts +6 -1
  151. package/dist/ports.d.ts +6 -1
  152. package/dist/provider-proxy/ProviderProxy.cjs +40 -4643
  153. package/dist/provider-proxy/ProviderProxy.d.cts +2 -1
  154. package/dist/provider-proxy/ProviderProxy.d.ts +2 -1
  155. package/dist/provider-proxy/ProviderProxy.js +35 -4613
  156. package/dist/provider-proxy/ingress/providerProxyShared.cjs +35 -2941
  157. package/dist/provider-proxy/ingress/providerProxyShared.d.cts +2 -1
  158. package/dist/provider-proxy/ingress/providerProxyShared.d.ts +2 -1
  159. package/dist/provider-proxy/ingress/providerProxyShared.js +41 -2914
  160. package/dist/provider-proxy/matchText.cjs +11 -72
  161. package/dist/provider-proxy/matchText.js +6 -39
  162. package/dist/provider-proxy/types.cjs +1 -18
  163. package/dist/provider-proxy/types.d.cts +2 -1
  164. package/dist/provider-proxy/types.d.ts +2 -1
  165. package/dist/provider-proxy.cjs +35 -4655
  166. package/dist/provider-proxy.d.cts +2 -1
  167. package/dist/provider-proxy.d.ts +2 -1
  168. package/dist/provider-proxy.js +39 -4628
  169. package/dist/serializeError.cjs +5 -81
  170. package/dist/serializeError.js +3 -54
  171. package/dist/sse-parser.cjs +7 -455
  172. package/dist/sse-parser.js +4 -426
  173. package/dist/transformer/TransformerChainExecutor.cjs +4 -318
  174. package/dist/transformer/TransformerChainExecutor.js +4 -291
  175. package/dist/transformer/TransformerService.cjs +5 -289
  176. package/dist/transformer/TransformerService.js +3 -262
  177. package/dist/transformer/anthropicBetaInject.cjs +7 -50
  178. package/dist/transformer/anthropicBetaInject.js +4 -21
  179. package/dist/transformer/transformers/AnthropicTransformer.cjs +3 -1014
  180. package/dist/transformer/transformers/AnthropicTransformer.js +3 -987
  181. package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +4 -1106
  182. package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +7 -1079
  183. package/dist/transformer/transformers/GeminiTransformer.cjs +4 -1010
  184. package/dist/transformer/transformers/GeminiTransformer.js +4 -983
  185. package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +3 -535
  186. package/dist/transformer/transformers/OpenAIResponseTransformer.js +3 -510
  187. package/dist/transformer/transformers/OpenCodeGoTransformer.cjs +5 -72
  188. package/dist/transformer/transformers/OpenCodeGoTransformer.js +3 -45
  189. package/dist/transformer/transformers/ReasoningTransformer.cjs +3 -270
  190. package/dist/transformer/transformers/ReasoningTransformer.js +2 -249
  191. package/dist/transformer/transformers.cjs +10 -3177
  192. package/dist/transformer/transformers.js +23 -3158
  193. package/dist/transformer/types.cjs +1 -18
  194. package/dist/transformer.cjs +13 -3726
  195. package/dist/transformer.js +17 -3706
  196. package/dist/usage/pricing-engine.cjs +6 -0
  197. package/dist/usage/pricing-engine.d.cts +83 -0
  198. package/dist/usage/pricing-engine.d.ts +83 -0
  199. package/dist/usage/pricing-engine.js +6 -0
  200. package/dist/usage/usage-recorder.cjs +6 -0
  201. package/dist/usage/usage-recorder.d.cts +73 -0
  202. package/dist/usage/usage-recorder.d.ts +73 -0
  203. package/dist/usage/usage-recorder.js +6 -0
  204. package/dist/usage.cjs +11 -0
  205. package/dist/usage.d.cts +8 -0
  206. package/dist/usage.d.ts +8 -0
  207. package/dist/usage.js +11 -0
  208. package/package.json +1 -1
  209. package/dist/ApiKeyPoolService-BmMkau07.d.cts +0 -170
  210. package/dist/ApiKeyPoolService-BmMkau07.d.ts +0 -170
@@ -1,18 +1 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
-
16
- // src/pipeline/AuthSource.ts
17
- var AuthSource_exports = {};
18
- module.exports = __toCommonJS(AuthSource_exports);
1
+ "use strict";
@@ -1,169 +1,8 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
19
2
 
20
- // src/pipeline/LlmConfigProviderAuth.ts
21
- var LlmConfigProviderAuth_exports = {};
22
- __export(LlmConfigProviderAuth_exports, {
23
- LlmConfigProviderAuth: () => LlmConfigProviderAuth
24
- });
25
- module.exports = __toCommonJS(LlmConfigProviderAuth_exports);
3
+ var _chunkLKZJEL6Ecjs = require('../chunk-LKZJEL6E.cjs');
4
+ require('../chunk-A2YMUCBT.cjs');
5
+ require('../chunk-6VIXXLMX.cjs');
26
6
 
27
- // src/openrouter.ts
28
- function isOpenRouterProvider(provider) {
29
- const baseUrl = (provider.api_base_url || "").toLowerCase();
30
- return baseUrl.includes("openrouter.ai");
31
- }
32
- var OPENROUTER_APP_HEADERS = {
33
- "HTTP-Referer": "https://omnicross.dev",
34
- "X-Title": "omnicross"
35
- };
36
7
 
37
- // src/completion/url-builder.ts
38
- var import_endpoint_resolver = require("@omnicross/contracts/endpoint-resolver");
39
- function resolveApiFormat(provider) {
40
- if (provider.apiFormat) {
41
- return provider.apiFormat;
42
- }
43
- if (provider.chatApiFormat) {
44
- return provider.chatApiFormat;
45
- }
46
- if (provider.apiType === "claudecode" || provider.apiType === "anthropic") {
47
- return "anthropic";
48
- }
49
- if (provider.apiType === "google") {
50
- return "google";
51
- }
52
- return "openai";
53
- }
54
-
55
- // src/completion/header-builder.ts
56
- function getProviderHeaders(provider, apiKey) {
57
- const format = resolveApiFormat(provider);
58
- let headers;
59
- switch (format) {
60
- case "anthropic":
61
- headers = {
62
- "Content-Type": "application/json",
63
- "x-api-key": apiKey,
64
- "anthropic-version": "2025-01-10"
65
- // Required for extended thinking feature
66
- };
67
- break;
68
- case "google":
69
- headers = {
70
- "Content-Type": "application/json",
71
- "x-goog-api-key": apiKey
72
- };
73
- break;
74
- case "azure-openai":
75
- headers = {
76
- "Content-Type": "application/json",
77
- "api-key": apiKey
78
- };
79
- break;
80
- case "openai":
81
- case "openai-response":
82
- default:
83
- headers = {
84
- "Content-Type": "application/json",
85
- "Authorization": `Bearer ${apiKey}`
86
- };
87
- break;
88
- }
89
- if (isOpenRouterProvider(provider)) {
90
- return { ...headers, ...OPENROUTER_APP_HEADERS };
91
- }
92
- return headers;
93
- }
94
-
95
- // src/pipeline/LlmConfigProviderAuth.ts
96
- function isReportableStatus(status) {
97
- return status === 429 || status === 529 || status === 401 || status === 403;
98
- }
99
- var LlmConfigProviderAuth = class {
100
- provider;
101
- apiKeyPool;
102
- providerId;
103
- sessionId;
104
- /**
105
- * The current resolved key. Mutable so a Phase-3 caller can read the
106
- * rotated key after `onResult`; this phase it is only set at construction
107
- * and updated inside `onResult` (mirroring the inline re-point in
108
- * `callWithPoolReporting`).
109
- */
110
- apiKey;
111
- constructor(opts) {
112
- this.provider = opts.provider;
113
- this.apiKey = opts.apiKey;
114
- this.apiKeyPool = opts.apiKeyPool ?? null;
115
- this.providerId = opts.providerId;
116
- this.sessionId = opts.sessionId;
117
- }
118
- /**
119
- * Merge the provider auth headers (and content-type / OpenRouter app
120
- * headers) into `headers`, exactly as a direct `getProviderHeaders` call
121
- * would produce them. `hints` are accepted for contract symmetry but the
122
- * provider-key path does not vary headers by URL/model.
123
- */
124
- applyHeaders(headers, _hints) {
125
- const authHeaders = getProviderHeaders(this.provider, this.apiKey);
126
- for (const [k, v] of Object.entries(authHeaders)) {
127
- headers[k] = v;
128
- }
129
- }
130
- /**
131
- * React to the final HTTP status — the pool-rotation seam (design D5).
132
- *
133
- * Reproduces `callWithPoolReporting`'s reportable + success branches:
134
- * - reportable status (429/529/401/403) on a pool-backed request →
135
- * `reportError(providerId, sessionId, status)`; when it hands back a
136
- * `newKey` the session was re-bound, so we adopt it (`this.apiKey`) and
137
- * return `{ rebound: true, newKey }`. When no key is available it returns
138
- * `{ rebound: false }` (the session is still cooled/disabled by the report).
139
- * - success / any 2xx → `reportSuccess(sessionId)`; `{ rebound: false }`.
140
- * - non-reportable, non-success, or non-pool request → no-op
141
- * `{ rebound: false }`.
142
- *
143
- * NOTE: no caller invokes this in Phase 2; it is unit-tested in isolation.
144
- */
145
- async onResult(status) {
146
- const pool = this.apiKeyPool;
147
- const providerId = this.providerId;
148
- const sessionId = this.sessionId;
149
- if (!pool || !providerId || !sessionId) {
150
- return { rebound: false };
151
- }
152
- if (isReportableStatus(status)) {
153
- const newKey = await pool.reportError(providerId, sessionId, status);
154
- if (newKey) {
155
- this.apiKey = newKey;
156
- return { rebound: true, newKey };
157
- }
158
- return { rebound: false };
159
- }
160
- if (status !== null && status >= 200 && status < 300) {
161
- pool.reportSuccess(sessionId);
162
- }
163
- return { rebound: false };
164
- }
165
- };
166
- // Annotate the CommonJS export names for ESM import in node:
167
- 0 && (module.exports = {
168
- LlmConfigProviderAuth
169
- });
8
+ exports.LlmConfigProviderAuth = _chunkLKZJEL6Ecjs.LlmConfigProviderAuth;
@@ -1,6 +1,7 @@
1
1
  import { LLMProvider } from '@omnicross/contracts/llm-config';
2
- import { A as ApiKeyPoolService } from '../ApiKeyPoolService-BmMkau07.cjs';
2
+ import { ApiKeyPoolService } from '../completion/ApiKeyPoolService.cjs';
3
3
  import { AuthSource, AuthApplyHints, AuthResultOutcome } from './AuthSource.cjs';
4
+ import '../logger-4GvQNzhE.cjs';
4
5
 
5
6
  /**
6
7
  * LlmConfigProviderAuth — `AuthSource` for LLM-config provider rows.
@@ -1,6 +1,7 @@
1
1
  import { LLMProvider } from '@omnicross/contracts/llm-config';
2
- import { A as ApiKeyPoolService } from '../ApiKeyPoolService-BmMkau07.js';
2
+ import { ApiKeyPoolService } from '../completion/ApiKeyPoolService.js';
3
3
  import { AuthSource, AuthApplyHints, AuthResultOutcome } from './AuthSource.js';
4
+ import '../logger-4GvQNzhE.js';
4
5
 
5
6
  /**
6
7
  * LlmConfigProviderAuth — `AuthSource` for LLM-config provider rows.
@@ -1,142 +1,8 @@
1
- // src/openrouter.ts
2
- function isOpenRouterProvider(provider) {
3
- const baseUrl = (provider.api_base_url || "").toLowerCase();
4
- return baseUrl.includes("openrouter.ai");
5
- }
6
- var OPENROUTER_APP_HEADERS = {
7
- "HTTP-Referer": "https://omnicross.dev",
8
- "X-Title": "omnicross"
9
- };
10
-
11
- // src/completion/url-builder.ts
12
- import { resolveProviderEndpoint as resolveProviderEndpointShared } from "@omnicross/contracts/endpoint-resolver";
13
- function resolveApiFormat(provider) {
14
- if (provider.apiFormat) {
15
- return provider.apiFormat;
16
- }
17
- if (provider.chatApiFormat) {
18
- return provider.chatApiFormat;
19
- }
20
- if (provider.apiType === "claudecode" || provider.apiType === "anthropic") {
21
- return "anthropic";
22
- }
23
- if (provider.apiType === "google") {
24
- return "google";
25
- }
26
- return "openai";
27
- }
28
-
29
- // src/completion/header-builder.ts
30
- function getProviderHeaders(provider, apiKey) {
31
- const format = resolveApiFormat(provider);
32
- let headers;
33
- switch (format) {
34
- case "anthropic":
35
- headers = {
36
- "Content-Type": "application/json",
37
- "x-api-key": apiKey,
38
- "anthropic-version": "2025-01-10"
39
- // Required for extended thinking feature
40
- };
41
- break;
42
- case "google":
43
- headers = {
44
- "Content-Type": "application/json",
45
- "x-goog-api-key": apiKey
46
- };
47
- break;
48
- case "azure-openai":
49
- headers = {
50
- "Content-Type": "application/json",
51
- "api-key": apiKey
52
- };
53
- break;
54
- case "openai":
55
- case "openai-response":
56
- default:
57
- headers = {
58
- "Content-Type": "application/json",
59
- "Authorization": `Bearer ${apiKey}`
60
- };
61
- break;
62
- }
63
- if (isOpenRouterProvider(provider)) {
64
- return { ...headers, ...OPENROUTER_APP_HEADERS };
65
- }
66
- return headers;
67
- }
68
-
69
- // src/pipeline/LlmConfigProviderAuth.ts
70
- function isReportableStatus(status) {
71
- return status === 429 || status === 529 || status === 401 || status === 403;
72
- }
73
- var LlmConfigProviderAuth = class {
74
- provider;
75
- apiKeyPool;
76
- providerId;
77
- sessionId;
78
- /**
79
- * The current resolved key. Mutable so a Phase-3 caller can read the
80
- * rotated key after `onResult`; this phase it is only set at construction
81
- * and updated inside `onResult` (mirroring the inline re-point in
82
- * `callWithPoolReporting`).
83
- */
84
- apiKey;
85
- constructor(opts) {
86
- this.provider = opts.provider;
87
- this.apiKey = opts.apiKey;
88
- this.apiKeyPool = opts.apiKeyPool ?? null;
89
- this.providerId = opts.providerId;
90
- this.sessionId = opts.sessionId;
91
- }
92
- /**
93
- * Merge the provider auth headers (and content-type / OpenRouter app
94
- * headers) into `headers`, exactly as a direct `getProviderHeaders` call
95
- * would produce them. `hints` are accepted for contract symmetry but the
96
- * provider-key path does not vary headers by URL/model.
97
- */
98
- applyHeaders(headers, _hints) {
99
- const authHeaders = getProviderHeaders(this.provider, this.apiKey);
100
- for (const [k, v] of Object.entries(authHeaders)) {
101
- headers[k] = v;
102
- }
103
- }
104
- /**
105
- * React to the final HTTP status — the pool-rotation seam (design D5).
106
- *
107
- * Reproduces `callWithPoolReporting`'s reportable + success branches:
108
- * - reportable status (429/529/401/403) on a pool-backed request →
109
- * `reportError(providerId, sessionId, status)`; when it hands back a
110
- * `newKey` the session was re-bound, so we adopt it (`this.apiKey`) and
111
- * return `{ rebound: true, newKey }`. When no key is available it returns
112
- * `{ rebound: false }` (the session is still cooled/disabled by the report).
113
- * - success / any 2xx → `reportSuccess(sessionId)`; `{ rebound: false }`.
114
- * - non-reportable, non-success, or non-pool request → no-op
115
- * `{ rebound: false }`.
116
- *
117
- * NOTE: no caller invokes this in Phase 2; it is unit-tested in isolation.
118
- */
119
- async onResult(status) {
120
- const pool = this.apiKeyPool;
121
- const providerId = this.providerId;
122
- const sessionId = this.sessionId;
123
- if (!pool || !providerId || !sessionId) {
124
- return { rebound: false };
125
- }
126
- if (isReportableStatus(status)) {
127
- const newKey = await pool.reportError(providerId, sessionId, status);
128
- if (newKey) {
129
- this.apiKey = newKey;
130
- return { rebound: true, newKey };
131
- }
132
- return { rebound: false };
133
- }
134
- if (status !== null && status >= 200 && status < 300) {
135
- pool.reportSuccess(sessionId);
136
- }
137
- return { rebound: false };
138
- }
139
- };
1
+ import {
2
+ LlmConfigProviderAuth
3
+ } from "../chunk-PXUJF5HS.js";
4
+ import "../chunk-H5JUT3KV.js";
5
+ import "../chunk-E3WHL7CO.js";
140
6
  export {
141
7
  LlmConfigProviderAuth
142
8
  };
@@ -1,131 +1,9 @@
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
- // src/pipeline/SubscriptionAuthSource.ts
21
- var SubscriptionAuthSource_exports = {};
22
- __export(SubscriptionAuthSource_exports, {
23
- SubscriptionAuthSource: () => SubscriptionAuthSource,
24
- stripAuthHeaders: () => stripAuthHeaders
25
- });
26
- module.exports = __toCommonJS(SubscriptionAuthSource_exports);
27
3
 
28
- // src/serializeError.ts
29
- function serializeError(err) {
30
- if (err == null) return "Unknown error (null)";
31
- if (err instanceof Error) {
32
- let msg = err.message || err.name || "Error";
33
- if (err.cause) {
34
- msg += ` [cause: ${serializeError(err.cause)}]`;
35
- }
36
- const anyErr = err;
37
- if (anyErr.status != null) msg += ` (status: ${anyErr.status})`;
38
- else if (anyErr.code != null) msg += ` (code: ${anyErr.code})`;
39
- return msg;
40
- }
41
- if (typeof err === "string") return err || "Empty error string";
42
- if (typeof err !== "object") return String(err);
43
- const obj = err;
44
- if (typeof obj.message === "string" && obj.message) {
45
- let msg = obj.message;
46
- if (obj.status != null) msg += ` (status: ${obj.status})`;
47
- else if (obj.code != null) msg += ` (code: ${obj.code})`;
48
- if (typeof obj.type === "string") msg += ` [type: ${obj.type}]`;
49
- return msg;
50
- }
51
- if (typeof obj.error === "string" && obj.error) {
52
- return obj.error;
53
- }
54
- if (obj.error && typeof obj.error === "object") {
55
- const inner = obj.error;
56
- if (typeof inner.message === "string" && inner.message) {
57
- let msg = inner.message;
58
- if (typeof inner.type === "string") msg += ` [type: ${inner.type}]`;
59
- return msg;
60
- }
61
- }
62
- try {
63
- const json = JSON.stringify(err, getCircularReplacer(), 2);
64
- if (json && json.length > 1e3) {
65
- return json.slice(0, 1e3) + "... (truncated)";
66
- }
67
- return json || "Unserializable error";
68
- } catch {
69
- return `Unserializable error: ${Object.prototype.toString.call(err)}`;
70
- }
71
- }
72
- function getCircularReplacer() {
73
- const seen = /* @__PURE__ */ new WeakSet();
74
- return (_key, value) => {
75
- if (typeof value === "object" && value !== null) {
76
- if (seen.has(value)) return "[Circular]";
77
- seen.add(value);
78
- }
79
- return value;
80
- };
81
- }
4
+ var _chunkN3V2J5ZOcjs = require('../chunk-N3V2J5ZO.cjs');
5
+ require('../chunk-SVNDB62D.cjs');
82
6
 
83
- // src/pipeline/SubscriptionAuthSource.ts
84
- function stripAuthHeaders(headers) {
85
- delete headers.authorization;
86
- delete headers.Authorization;
87
- delete headers["x-api-key"];
88
- delete headers["X-Api-Key"];
89
- delete headers["x-goog-api-key"];
90
- delete headers["X-Goog-Api-Key"];
91
- }
92
- var SubscriptionAuthSource = class {
93
- constructor(profile) {
94
- this.profile = profile;
95
- }
96
- profile;
97
- /**
98
- * Strip any transformer-set auth headers, then delegate to the bound
99
- * strategy. Mirrors `SubscriptionDispatcher`'s
100
- * `stripAuthHeaders(...)` + `applyHeadersWithRetry(...)` sequence, including
101
- * the best-effort swallow-and-warn around a throwing `applyHeaders`.
102
- *
103
- * The strategy's looser `AuthApplyHints` (optional `upstreamUrl` /
104
- * `resolvedModel`) is fed from the pipeline's required `{ upstreamUrl,
105
- * model }` at the boundary.
106
- */
107
- async applyHeaders(headers, hints) {
108
- stripAuthHeaders(headers);
109
- try {
110
- await this.profile.authStrategy.applyHeaders(headers, {
111
- upstreamUrl: hints.upstreamUrl,
112
- resolvedModel: hints.model
113
- });
114
- } catch (err) {
115
- console.warn("[SubscriptionAuthSource] authStrategy.applyHeaders threw:", serializeError(err));
116
- }
117
- }
118
- /** Delegate the 401-refresh decision to the bound strategy. */
119
- async onUnauthorized() {
120
- return this.profile.authStrategy.onUnauthorized();
121
- }
122
- /** Resolve the upstream URL from the profile, when it provides one. */
123
- resolveUpstreamUrl(model) {
124
- return this.profile.resolveUpstreamUrl?.(model);
125
- }
126
- };
127
- // Annotate the CommonJS export names for ESM import in node:
128
- 0 && (module.exports = {
129
- SubscriptionAuthSource,
130
- stripAuthHeaders
131
- });
7
+
8
+
9
+ exports.SubscriptionAuthSource = _chunkN3V2J5ZOcjs.SubscriptionAuthSource; exports.stripAuthHeaders = _chunkN3V2J5ZOcjs.stripAuthHeaders;
@@ -1,102 +1,8 @@
1
- // src/serializeError.ts
2
- function serializeError(err) {
3
- if (err == null) return "Unknown error (null)";
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
- }
55
-
56
- // src/pipeline/SubscriptionAuthSource.ts
57
- function stripAuthHeaders(headers) {
58
- delete headers.authorization;
59
- delete headers.Authorization;
60
- delete headers["x-api-key"];
61
- delete headers["X-Api-Key"];
62
- delete headers["x-goog-api-key"];
63
- delete headers["X-Goog-Api-Key"];
64
- }
65
- var SubscriptionAuthSource = class {
66
- constructor(profile) {
67
- this.profile = profile;
68
- }
69
- profile;
70
- /**
71
- * Strip any transformer-set auth headers, then delegate to the bound
72
- * strategy. Mirrors `SubscriptionDispatcher`'s
73
- * `stripAuthHeaders(...)` + `applyHeadersWithRetry(...)` sequence, including
74
- * the best-effort swallow-and-warn around a throwing `applyHeaders`.
75
- *
76
- * The strategy's looser `AuthApplyHints` (optional `upstreamUrl` /
77
- * `resolvedModel`) is fed from the pipeline's required `{ upstreamUrl,
78
- * model }` at the boundary.
79
- */
80
- async applyHeaders(headers, hints) {
81
- stripAuthHeaders(headers);
82
- try {
83
- await this.profile.authStrategy.applyHeaders(headers, {
84
- upstreamUrl: hints.upstreamUrl,
85
- resolvedModel: hints.model
86
- });
87
- } catch (err) {
88
- console.warn("[SubscriptionAuthSource] authStrategy.applyHeaders threw:", serializeError(err));
89
- }
90
- }
91
- /** Delegate the 401-refresh decision to the bound strategy. */
92
- async onUnauthorized() {
93
- return this.profile.authStrategy.onUnauthorized();
94
- }
95
- /** Resolve the upstream URL from the profile, when it provides one. */
96
- resolveUpstreamUrl(model) {
97
- return this.profile.resolveUpstreamUrl?.(model);
98
- }
99
- };
1
+ import {
2
+ SubscriptionAuthSource,
3
+ stripAuthHeaders
4
+ } from "../chunk-74TMJA7Z.js";
5
+ import "../chunk-AVYJ4YBN.js";
100
6
  export {
101
7
  SubscriptionAuthSource,
102
8
  stripAuthHeaders
@@ -1,18 +1 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
-
16
- // src/pipeline/SubscriptionAuthStrategy.ts
17
- var SubscriptionAuthStrategy_exports = {};
18
- module.exports = __toCommonJS(SubscriptionAuthStrategy_exports);
1
+ "use strict";