@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
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `Logger` — core-owned port for the structured logger the serving core uses.
3
+ *
4
+ * The serving core MUST depend on THIS interface, never on the concrete host
5
+ * `LoggerService` class as a type. The host (`LoggerService`) already exposes a
6
+ * superset of this surface, so it is passed directly with NO adapter.
7
+ *
8
+ * `error` uses the WIDEST signature `(message, error?, meta?)` so every core
9
+ * call site — `error(msg)`, `error(msg, errInstance)`, `error(msg, err, meta)` —
10
+ * stays assignable (design Q2). `info`/`warn`/`debug` take an optional `meta`
11
+ * bag matching the host's `Record<string, unknown> | Error | object`.
12
+ *
13
+ * @module ports/logger
14
+ */
15
+ interface Logger {
16
+ info(message: string, meta?: Record<string, unknown> | Error | object): void;
17
+ warn(message: string, meta?: Record<string, unknown> | Error | object): void;
18
+ error(message: string, error?: unknown, meta?: Record<string, unknown> | object): void;
19
+ debug(message: string, meta?: Record<string, unknown> | Error | object): void;
20
+ }
21
+
22
+ export type { Logger as L };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `Logger` — core-owned port for the structured logger the serving core uses.
3
+ *
4
+ * The serving core MUST depend on THIS interface, never on the concrete host
5
+ * `LoggerService` class as a type. The host (`LoggerService`) already exposes a
6
+ * superset of this surface, so it is passed directly with NO adapter.
7
+ *
8
+ * `error` uses the WIDEST signature `(message, error?, meta?)` so every core
9
+ * call site — `error(msg)`, `error(msg, errInstance)`, `error(msg, err, meta)` —
10
+ * stays assignable (design Q2). `info`/`warn`/`debug` take an optional `meta`
11
+ * bag matching the host's `Record<string, unknown> | Error | object`.
12
+ *
13
+ * @module ports/logger
14
+ */
15
+ interface Logger {
16
+ info(message: string, meta?: Record<string, unknown> | Error | object): void;
17
+ warn(message: string, meta?: Record<string, unknown> | Error | object): void;
18
+ error(message: string, error?: unknown, meta?: Record<string, unknown> | object): void;
19
+ debug(message: string, meta?: Record<string, unknown> | Error | object): void;
20
+ }
21
+
22
+ export type { Logger as L };
@@ -1,221 +1,11 @@
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/outbound-api/routeResolver.ts
21
- var routeResolver_exports = {};
22
- __export(routeResolver_exports, {
23
- isSubscriptionProviderId: () => isSubscriptionProviderId,
24
- parseModelRef: () => parseModelRef,
25
- resolveRoute: () => resolveRoute
26
- });
27
- module.exports = __toCommonJS(routeResolver_exports);
28
3
 
29
- // src/outbound-api/subscriptionRegistryPort.ts
30
- var _registry = null;
31
- function getSubscriptionRegistryForOutbound() {
32
- return _registry;
33
- }
34
4
 
35
- // src/outbound-api/subscriptionSupport.ts
36
- var SUBSCRIPTION_PROVIDER_IDS = [
37
- "claude",
38
- "codex",
39
- "gemini",
40
- "opencodego"
41
- ];
42
- var SUBSCRIPTION_ID_SET = new Set(SUBSCRIPTION_PROVIDER_IDS);
43
- function isSubscriptionProviderId(providerId) {
44
- if (SUBSCRIPTION_ID_SET.has(providerId)) return true;
45
- const registry = getSubscriptionRegistryForOutbound();
46
- return registry?.getProfile(providerId) != null;
47
- }
48
- var SUBSCRIPTION_SUPPORTED_ENDPOINTS = /* @__PURE__ */ new Set([
49
- "messages",
50
- "responses"
51
- ]);
52
- function endpointSupportsSubscription(endpoint) {
53
- return SUBSCRIPTION_SUPPORTED_ENDPOINTS.has(endpoint);
54
- }
5
+ var _chunkG2FUJNA2cjs = require('../chunk-G2FUJNA2.cjs');
6
+ require('../chunk-QBZJ7P2T.cjs');
55
7
 
56
- // src/outbound-api/routeResolver.ts
57
- function parseModelRef(ref) {
58
- if (!ref) return null;
59
- const idx = ref.indexOf(",");
60
- if (idx <= 0) return null;
61
- const providerId = ref.slice(0, idx).trim();
62
- const modelId = ref.slice(idx + 1).trim();
63
- if (!providerId || !modelId) return null;
64
- return { providerId, modelId };
65
- }
66
- function pickModelRefForRole(config, role) {
67
- if (role === "vision") {
68
- if (config.visionModel && config.visionModel.trim()) {
69
- return { ref: config.visionModel, effectiveRole: "vision" };
70
- }
71
- return { ref: config.defaultModel, effectiveRole: "default" };
72
- }
73
- if (role === "background") {
74
- return { ref: config.backgroundModel, effectiveRole: "background" };
75
- }
76
- return { ref: config.defaultModel, effectiveRole: "default" };
77
- }
78
- async function resolveRoute(args) {
79
- const { config, role, ingressFormat, llmConfig } = args;
80
- const sessionId = args.sessionId ?? null;
81
- const { ref, effectiveRole } = pickModelRefForRole(config, role);
82
- if (!ref || !ref.trim()) {
83
- return {
84
- ok: false,
85
- error: {
86
- status: 503,
87
- message: `endpoint '${config.endpoint}' has no ${effectiveRole} model configured`
88
- }
89
- };
90
- }
91
- const parsed = parseModelRef(ref);
92
- if (!parsed) {
93
- return {
94
- ok: false,
95
- error: {
96
- status: 503,
97
- message: `endpoint '${config.endpoint}' ${effectiveRole} model ref is malformed: '${ref}'`
98
- }
99
- };
100
- }
101
- const { providerId, modelId } = parsed;
102
- const provider = await llmConfig.getProvider(providerId);
103
- if (!provider) {
104
- if (isSubscriptionProviderId(providerId)) {
105
- return await resolveSubscriptionRoute({
106
- config,
107
- providerId,
108
- modelId,
109
- ingressFormat,
110
- sessionId,
111
- effectiveRole
112
- });
113
- }
114
- return {
115
- ok: false,
116
- error: {
117
- status: 503,
118
- message: `provider '${providerId}' not found for endpoint '${config.endpoint}'`
119
- }
120
- };
121
- }
122
- const isOfficialProvider = provider.isOfficial === true || provider.id === "anthropic";
123
- const targetProviderFormat = isOfficialProvider ? "anthropic" : "transform";
124
- let anthropicSdkHints = null;
125
- if (ingressFormat === "anthropic-messages") {
126
- anthropicSdkHints = {
127
- apiKey: resolveApiKey(provider.api_key),
128
- isOfficialProvider,
129
- passThrough: false,
130
- attribution: { sessionId, apiKeyId: null }
131
- };
132
- }
133
- const route = {
134
- sessionId,
135
- targetProviderFormat,
136
- model: modelId,
137
- ingressFormat,
138
- authMode: "byo",
139
- providerId,
140
- anthropicSdkHints
141
- };
142
- return { ok: true, route, usedRole: effectiveRole };
143
- }
144
- async function resolveSubscriptionRoute(args) {
145
- const { config, providerId, modelId, ingressFormat, sessionId, effectiveRole } = args;
146
- if (!config.useSubscription) {
147
- return {
148
- ok: false,
149
- error: {
150
- status: 503,
151
- message: `subscription routing disabled for endpoint '${config.endpoint}'`
152
- }
153
- };
154
- }
155
- if (!endpointSupportsSubscription(config.endpoint)) {
156
- return {
157
- ok: false,
158
- error: {
159
- status: 503,
160
- message: `subscription routing is not supported on the '${config.endpoint}' endpoint; use a BYO API-key provider, or the /v1/messages or /v1/responses endpoint`
161
- }
162
- };
163
- }
164
- const registry = getSubscriptionRegistryForOutbound();
165
- const profile = registry?.getProfile(providerId) ?? null;
166
- if (!profile) {
167
- return {
168
- ok: false,
169
- error: {
170
- status: 503,
171
- message: `subscription provider '${providerId}' is not available`
172
- }
173
- };
174
- }
175
- const hints = {
176
- apiKey: "",
177
- isOfficialProvider: false,
178
- passThrough: false,
179
- subscriptionProfile: profile,
180
- attribution: { sessionId, apiKeyId: null }
181
- };
182
- const subscriptionConfig = providerId === "opencodego" ? await registry?.getOpenCodeGoConfig?.() : void 0;
183
- const route = {
184
- sessionId,
185
- targetProviderFormat: "transform",
186
- model: modelId,
187
- ingressFormat,
188
- authMode: "subscription",
189
- providerId,
190
- // Anthropic delegation carries the dispatch profile inside
191
- // `anthropicSdkHints.subscriptionProfile`. The Responses ingress reads the
192
- // TOP-LEVEL `route.subscriptionProfile`, and so does the built-in
193
- // (factory-absent) `/v1/messages` subscription path (RT2.1) — the registry's
194
- // `SubscriptionDispatchProfile` structurally satisfies `SubscriptionAuthProfile`
195
- // ({ authStrategy, resolveUpstreamUrl, providerTransformerNames }), so set it
196
- // for BOTH. This is INERT when an Anthropic ingress factory is present: that
197
- // delegation reads the hint-bundle field above (and uses a different
198
- // route-minting path), never the top-level field. (chat/gemini never reach
199
- // here — Gate 2 rejected them.)
200
- subscriptionProfile: ingressFormat === "openai-responses" || ingressFormat === "anthropic-messages" ? profile : void 0,
201
- // Opaque per-account config (opencodego-only; `undefined` otherwise). Read by
202
- // the built-in `/v1/messages` plan builder; INERT for the factory-present
203
- // delegation path + non-opencodego.
204
- subscriptionConfig,
205
- anthropicSdkHints: hints
206
- };
207
- return { ok: true, route, usedRole: effectiveRole };
208
- }
209
- function resolveApiKey(apiKey) {
210
- if (!apiKey) return "";
211
- if (apiKey.startsWith("$")) {
212
- return process.env[apiKey.slice(1)] || "";
213
- }
214
- return apiKey;
215
- }
216
- // Annotate the CommonJS export names for ESM import in node:
217
- 0 && (module.exports = {
218
- isSubscriptionProviderId,
219
- parseModelRef,
220
- resolveRoute
221
- });
8
+
9
+
10
+
11
+ exports.isSubscriptionProviderId = _chunkG2FUJNA2cjs.isSubscriptionProviderId; exports.parseModelRef = _chunkG2FUJNA2cjs.parseModelRef; exports.resolveRoute = _chunkG2FUJNA2cjs.resolveRoute;
@@ -9,7 +9,8 @@ import 'node:http';
9
9
  import '@omnicross/contracts/completion-types';
10
10
  import '@omnicross/contracts/subscription-types';
11
11
  import '@omnicross/contracts/usage-types';
12
- import '../ApiKeyPoolService-BmMkau07.cjs';
12
+ import '../completion/ApiKeyPoolService.cjs';
13
+ import '../logger-4GvQNzhE.cjs';
13
14
  import '../pipeline/AuthSource.cjs';
14
15
  import '../pipeline/SubscriptionAuthSource.cjs';
15
16
  import '../pipeline/SubscriptionAuthStrategy.cjs';
@@ -9,7 +9,8 @@ import 'node:http';
9
9
  import '@omnicross/contracts/completion-types';
10
10
  import '@omnicross/contracts/subscription-types';
11
11
  import '@omnicross/contracts/usage-types';
12
- import '../ApiKeyPoolService-BmMkau07.js';
12
+ import '../completion/ApiKeyPoolService.js';
13
+ import '../logger-4GvQNzhE.js';
13
14
  import '../pipeline/AuthSource.js';
14
15
  import '../pipeline/SubscriptionAuthSource.js';
15
16
  import '../pipeline/SubscriptionAuthStrategy.js';
@@ -1,190 +1,9 @@
1
- // src/outbound-api/subscriptionRegistryPort.ts
2
- var _registry = null;
3
- function getSubscriptionRegistryForOutbound() {
4
- return _registry;
5
- }
6
-
7
- // src/outbound-api/subscriptionSupport.ts
8
- var SUBSCRIPTION_PROVIDER_IDS = [
9
- "claude",
10
- "codex",
11
- "gemini",
12
- "opencodego"
13
- ];
14
- var SUBSCRIPTION_ID_SET = new Set(SUBSCRIPTION_PROVIDER_IDS);
15
- function isSubscriptionProviderId(providerId) {
16
- if (SUBSCRIPTION_ID_SET.has(providerId)) return true;
17
- const registry = getSubscriptionRegistryForOutbound();
18
- return registry?.getProfile(providerId) != null;
19
- }
20
- var SUBSCRIPTION_SUPPORTED_ENDPOINTS = /* @__PURE__ */ new Set([
21
- "messages",
22
- "responses"
23
- ]);
24
- function endpointSupportsSubscription(endpoint) {
25
- return SUBSCRIPTION_SUPPORTED_ENDPOINTS.has(endpoint);
26
- }
27
-
28
- // src/outbound-api/routeResolver.ts
29
- function parseModelRef(ref) {
30
- if (!ref) return null;
31
- const idx = ref.indexOf(",");
32
- if (idx <= 0) return null;
33
- const providerId = ref.slice(0, idx).trim();
34
- const modelId = ref.slice(idx + 1).trim();
35
- if (!providerId || !modelId) return null;
36
- return { providerId, modelId };
37
- }
38
- function pickModelRefForRole(config, role) {
39
- if (role === "vision") {
40
- if (config.visionModel && config.visionModel.trim()) {
41
- return { ref: config.visionModel, effectiveRole: "vision" };
42
- }
43
- return { ref: config.defaultModel, effectiveRole: "default" };
44
- }
45
- if (role === "background") {
46
- return { ref: config.backgroundModel, effectiveRole: "background" };
47
- }
48
- return { ref: config.defaultModel, effectiveRole: "default" };
49
- }
50
- async function resolveRoute(args) {
51
- const { config, role, ingressFormat, llmConfig } = args;
52
- const sessionId = args.sessionId ?? null;
53
- const { ref, effectiveRole } = pickModelRefForRole(config, role);
54
- if (!ref || !ref.trim()) {
55
- return {
56
- ok: false,
57
- error: {
58
- status: 503,
59
- message: `endpoint '${config.endpoint}' has no ${effectiveRole} model configured`
60
- }
61
- };
62
- }
63
- const parsed = parseModelRef(ref);
64
- if (!parsed) {
65
- return {
66
- ok: false,
67
- error: {
68
- status: 503,
69
- message: `endpoint '${config.endpoint}' ${effectiveRole} model ref is malformed: '${ref}'`
70
- }
71
- };
72
- }
73
- const { providerId, modelId } = parsed;
74
- const provider = await llmConfig.getProvider(providerId);
75
- if (!provider) {
76
- if (isSubscriptionProviderId(providerId)) {
77
- return await resolveSubscriptionRoute({
78
- config,
79
- providerId,
80
- modelId,
81
- ingressFormat,
82
- sessionId,
83
- effectiveRole
84
- });
85
- }
86
- return {
87
- ok: false,
88
- error: {
89
- status: 503,
90
- message: `provider '${providerId}' not found for endpoint '${config.endpoint}'`
91
- }
92
- };
93
- }
94
- const isOfficialProvider = provider.isOfficial === true || provider.id === "anthropic";
95
- const targetProviderFormat = isOfficialProvider ? "anthropic" : "transform";
96
- let anthropicSdkHints = null;
97
- if (ingressFormat === "anthropic-messages") {
98
- anthropicSdkHints = {
99
- apiKey: resolveApiKey(provider.api_key),
100
- isOfficialProvider,
101
- passThrough: false,
102
- attribution: { sessionId, apiKeyId: null }
103
- };
104
- }
105
- const route = {
106
- sessionId,
107
- targetProviderFormat,
108
- model: modelId,
109
- ingressFormat,
110
- authMode: "byo",
111
- providerId,
112
- anthropicSdkHints
113
- };
114
- return { ok: true, route, usedRole: effectiveRole };
115
- }
116
- async function resolveSubscriptionRoute(args) {
117
- const { config, providerId, modelId, ingressFormat, sessionId, effectiveRole } = args;
118
- if (!config.useSubscription) {
119
- return {
120
- ok: false,
121
- error: {
122
- status: 503,
123
- message: `subscription routing disabled for endpoint '${config.endpoint}'`
124
- }
125
- };
126
- }
127
- if (!endpointSupportsSubscription(config.endpoint)) {
128
- return {
129
- ok: false,
130
- error: {
131
- status: 503,
132
- message: `subscription routing is not supported on the '${config.endpoint}' endpoint; use a BYO API-key provider, or the /v1/messages or /v1/responses endpoint`
133
- }
134
- };
135
- }
136
- const registry = getSubscriptionRegistryForOutbound();
137
- const profile = registry?.getProfile(providerId) ?? null;
138
- if (!profile) {
139
- return {
140
- ok: false,
141
- error: {
142
- status: 503,
143
- message: `subscription provider '${providerId}' is not available`
144
- }
145
- };
146
- }
147
- const hints = {
148
- apiKey: "",
149
- isOfficialProvider: false,
150
- passThrough: false,
151
- subscriptionProfile: profile,
152
- attribution: { sessionId, apiKeyId: null }
153
- };
154
- const subscriptionConfig = providerId === "opencodego" ? await registry?.getOpenCodeGoConfig?.() : void 0;
155
- const route = {
156
- sessionId,
157
- targetProviderFormat: "transform",
158
- model: modelId,
159
- ingressFormat,
160
- authMode: "subscription",
161
- providerId,
162
- // Anthropic delegation carries the dispatch profile inside
163
- // `anthropicSdkHints.subscriptionProfile`. The Responses ingress reads the
164
- // TOP-LEVEL `route.subscriptionProfile`, and so does the built-in
165
- // (factory-absent) `/v1/messages` subscription path (RT2.1) — the registry's
166
- // `SubscriptionDispatchProfile` structurally satisfies `SubscriptionAuthProfile`
167
- // ({ authStrategy, resolveUpstreamUrl, providerTransformerNames }), so set it
168
- // for BOTH. This is INERT when an Anthropic ingress factory is present: that
169
- // delegation reads the hint-bundle field above (and uses a different
170
- // route-minting path), never the top-level field. (chat/gemini never reach
171
- // here — Gate 2 rejected them.)
172
- subscriptionProfile: ingressFormat === "openai-responses" || ingressFormat === "anthropic-messages" ? profile : void 0,
173
- // Opaque per-account config (opencodego-only; `undefined` otherwise). Read by
174
- // the built-in `/v1/messages` plan builder; INERT for the factory-present
175
- // delegation path + non-opencodego.
176
- subscriptionConfig,
177
- anthropicSdkHints: hints
178
- };
179
- return { ok: true, route, usedRole: effectiveRole };
180
- }
181
- function resolveApiKey(apiKey) {
182
- if (!apiKey) return "";
183
- if (apiKey.startsWith("$")) {
184
- return process.env[apiKey.slice(1)] || "";
185
- }
186
- return apiKey;
187
- }
1
+ import {
2
+ isSubscriptionProviderId,
3
+ parseModelRef,
4
+ resolveRoute
5
+ } from "../chunk-3MEACFK3.js";
6
+ import "../chunk-AQ5TNQB7.js";
188
7
  export {
189
8
  isSubscriptionProviderId,
190
9
  parseModelRef,
@@ -1,38 +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/outbound-api/subscriptionRegistryPort.ts
21
- var subscriptionRegistryPort_exports = {};
22
- __export(subscriptionRegistryPort_exports, {
23
- getSubscriptionRegistryForOutbound: () => getSubscriptionRegistryForOutbound,
24
- setSubscriptionRegistryForOutbound: () => setSubscriptionRegistryForOutbound
25
- });
26
- module.exports = __toCommonJS(subscriptionRegistryPort_exports);
27
- var _registry = null;
28
- function setSubscriptionRegistryForOutbound(registry) {
29
- _registry = registry;
30
- }
31
- function getSubscriptionRegistryForOutbound() {
32
- return _registry;
33
- }
34
- // Annotate the CommonJS export names for ESM import in node:
35
- 0 && (module.exports = {
36
- getSubscriptionRegistryForOutbound,
37
- setSubscriptionRegistryForOutbound
38
- });
3
+
4
+ var _chunkQBZJ7P2Tcjs = require('../chunk-QBZJ7P2T.cjs');
5
+
6
+
7
+
8
+ exports.getSubscriptionRegistryForOutbound = _chunkQBZJ7P2Tcjs.getSubscriptionRegistryForOutbound; exports.setSubscriptionRegistryForOutbound = _chunkQBZJ7P2Tcjs.setSubscriptionRegistryForOutbound;
@@ -3,8 +3,9 @@ import 'node:http';
3
3
  import '@omnicross/contracts/completion-types';
4
4
  import '@omnicross/contracts/subscription-types';
5
5
  import '@omnicross/contracts/usage-types';
6
- import '../ApiKeyPoolService-BmMkau07.cjs';
6
+ import '../completion/ApiKeyPoolService.cjs';
7
7
  import '@omnicross/contracts/llm-config';
8
+ import '../logger-4GvQNzhE.cjs';
8
9
  import '../pipeline/AuthSource.cjs';
9
10
  import '../pipeline/SubscriptionAuthSource.cjs';
10
11
  import '../pipeline/SubscriptionAuthStrategy.cjs';
@@ -3,8 +3,9 @@ import 'node:http';
3
3
  import '@omnicross/contracts/completion-types';
4
4
  import '@omnicross/contracts/subscription-types';
5
5
  import '@omnicross/contracts/usage-types';
6
- import '../ApiKeyPoolService-BmMkau07.js';
6
+ import '../completion/ApiKeyPoolService.js';
7
7
  import '@omnicross/contracts/llm-config';
8
+ import '../logger-4GvQNzhE.js';
8
9
  import '../pipeline/AuthSource.js';
9
10
  import '../pipeline/SubscriptionAuthSource.js';
10
11
  import '../pipeline/SubscriptionAuthStrategy.js';
@@ -1,11 +1,7 @@
1
- // src/outbound-api/subscriptionRegistryPort.ts
2
- var _registry = null;
3
- function setSubscriptionRegistryForOutbound(registry) {
4
- _registry = registry;
5
- }
6
- function getSubscriptionRegistryForOutbound() {
7
- return _registry;
8
- }
1
+ import {
2
+ getSubscriptionRegistryForOutbound,
3
+ setSubscriptionRegistryForOutbound
4
+ } from "../chunk-AQ5TNQB7.js";
9
5
  export {
10
6
  getSubscriptionRegistryForOutbound,
11
7
  setSubscriptionRegistryForOutbound
@@ -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/outbound-api/types.ts
17
- var types_exports = {};
18
- module.exports = __toCommonJS(types_exports);
1
+ "use strict";
@@ -8,7 +8,8 @@ import 'node:http';
8
8
  import '@omnicross/contracts/completion-types';
9
9
  import '@omnicross/contracts/subscription-types';
10
10
  import '@omnicross/contracts/usage-types';
11
- import '../ApiKeyPoolService-BmMkau07.cjs';
11
+ import '../completion/ApiKeyPoolService.cjs';
12
+ import '../logger-4GvQNzhE.cjs';
12
13
  import '../pipeline/AuthSource.cjs';
13
14
  import '../pipeline/SubscriptionAuthSource.cjs';
14
15
  import '../pipeline/SubscriptionAuthStrategy.cjs';
@@ -8,7 +8,8 @@ import 'node:http';
8
8
  import '@omnicross/contracts/completion-types';
9
9
  import '@omnicross/contracts/subscription-types';
10
10
  import '@omnicross/contracts/usage-types';
11
- import '../ApiKeyPoolService-BmMkau07.js';
11
+ import '../completion/ApiKeyPoolService.js';
12
+ import '../logger-4GvQNzhE.js';
12
13
  import '../pipeline/AuthSource.js';
13
14
  import '../pipeline/SubscriptionAuthSource.js';
14
15
  import '../pipeline/SubscriptionAuthStrategy.js';