@omnicross/core 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/ApiConverter.cjs +24 -0
  2. package/dist/ApiConverter.d.cts +82 -0
  3. package/dist/ApiConverter.d.ts +82 -0
  4. package/dist/ApiConverter.js +24 -0
  5. package/dist/BuiltinToolExecutor-BluWyeob.d.ts +81 -0
  6. package/dist/BuiltinToolExecutor-CS2WpXhM.d.cts +81 -0
  7. package/dist/CompletionService-D3a47vdU.d.cts +213 -0
  8. package/dist/CompletionService-DdWaAxq0.d.ts +213 -0
  9. package/dist/{ProviderProxy-f_8ziIhW.d.cts → ProviderProxy-C-xqrkKi.d.ts} +7 -2
  10. package/dist/{ProviderProxy-vjt8sQQk.d.ts → ProviderProxy-CnMQYN59.d.cts} +7 -2
  11. package/dist/auth/GeminiCodeAssistProjectResolver.cjs +27 -60
  12. package/dist/auth/GeminiCodeAssistProjectResolver.js +5 -9
  13. package/dist/builtin-web-fetch-77JZUZGM.cjs +100 -0
  14. package/dist/builtin-web-fetch-IGLBX2XY.js +100 -0
  15. package/dist/chunk-2DCNB7DF.cjs +514 -0
  16. package/dist/chunk-2FEVTJWG.js +4400 -0
  17. package/dist/chunk-3MEACFK3.js +193 -0
  18. package/dist/chunk-3OPYJG76.cjs +266 -0
  19. package/dist/chunk-46RLHI7D.js +0 -0
  20. package/dist/chunk-46ZIFWYG.cjs +277 -0
  21. package/dist/chunk-4NBS6KPV.cjs +43 -0
  22. package/dist/chunk-4VAVYUZS.cjs +991 -0
  23. package/dist/chunk-5ERIZW3D.js +44 -0
  24. package/dist/chunk-5HTVET6E.js +514 -0
  25. package/dist/chunk-5ZQBEOMD.js +764 -0
  26. package/dist/chunk-6VIXXLMX.cjs +14 -0
  27. package/dist/chunk-745DV5FL.js +147 -0
  28. package/dist/chunk-74TMJA7Z.js +53 -0
  29. package/dist/chunk-7VU7V2E4.js +0 -0
  30. package/dist/chunk-7YN22L2H.cjs +87 -0
  31. package/dist/chunk-A2YMUCBT.cjs +105 -0
  32. package/dist/chunk-AQ5TNQB7.js +13 -0
  33. package/dist/chunk-AVYJ4YBN.js +58 -0
  34. package/dist/chunk-C72S6TTV.cjs +49 -0
  35. package/dist/chunk-C7PSERMH.js +87 -0
  36. package/dist/chunk-CDHS2QDC.js +179 -0
  37. package/dist/chunk-DK4A7DLE.js +266 -0
  38. package/dist/chunk-DRWHTIIZ.js +13 -0
  39. package/dist/chunk-DWKQZ2SK.cjs +254 -0
  40. package/dist/chunk-E3WHL7CO.js +14 -0
  41. package/dist/chunk-EYZYXJTJ.cjs +1 -0
  42. package/dist/chunk-FMOBD2OQ.js +39 -0
  43. package/dist/chunk-FTQ7IQUC.js +991 -0
  44. package/dist/chunk-FZ46M34D.cjs +1 -0
  45. package/dist/chunk-G2FUJNA2.cjs +193 -0
  46. package/dist/chunk-G2UTNSGU.js +277 -0
  47. package/dist/chunk-GBHYAGX3.cjs +26 -0
  48. package/dist/chunk-GMMT7RVN.cjs +39 -0
  49. package/dist/chunk-H5JUT3KV.js +105 -0
  50. package/dist/chunk-HQP3K7PU.cjs +431 -0
  51. package/dist/chunk-JO5NLTLY.js +46 -0
  52. package/dist/chunk-JWC6APFQ.js +23 -0
  53. package/dist/chunk-KUU2RNG6.cjs +46 -0
  54. package/dist/chunk-LKZJEL6E.cjs +124 -0
  55. package/dist/chunk-MNYKI4CI.js +94 -0
  56. package/dist/chunk-MZNPGW5Q.js +26 -0
  57. package/dist/chunk-N3V2J5ZO.cjs +53 -0
  58. package/dist/chunk-NYUNU75A.cjs +44 -0
  59. package/dist/chunk-NZYN7C3P.cjs +179 -0
  60. package/dist/chunk-O466Y272.js +235 -0
  61. package/dist/chunk-PXUJF5HS.js +124 -0
  62. package/dist/chunk-QBZJ7P2T.cjs +13 -0
  63. package/dist/chunk-QOCNX236.js +46 -0
  64. package/dist/chunk-QXD4MV2X.cjs +23 -0
  65. package/dist/chunk-R3HK6R4B.cjs +13 -0
  66. package/dist/chunk-RSJ3TWJQ.cjs +186 -0
  67. package/dist/chunk-S4WBV25P.js +913 -0
  68. package/dist/chunk-SN3YWBX7.cjs +4400 -0
  69. package/dist/chunk-SPVWWUHX.cjs +46 -0
  70. package/dist/chunk-SUEGJ75D.cjs +764 -0
  71. package/dist/chunk-SVNDB62D.cjs +58 -0
  72. package/dist/chunk-UYPEN5XE.cjs +235 -0
  73. package/dist/chunk-V5KPWNYX.cjs +147 -0
  74. package/dist/chunk-VVEHS2LI.js +431 -0
  75. package/dist/chunk-XBSYYZIY.cjs +94 -0
  76. package/dist/chunk-YGXJGRFI.cjs +913 -0
  77. package/dist/chunk-YMFAJFQT.cjs +173 -0
  78. package/dist/chunk-Z7LUNECE.js +49 -0
  79. package/dist/chunk-Z7Y2NPHY.js +186 -0
  80. package/dist/chunk-ZJZAOKI7.js +254 -0
  81. package/dist/chunk-ZLX3KGXX.js +173 -0
  82. package/dist/chunk-ZSVQT3PW.js +43 -0
  83. package/dist/completion/ApiKeyPoolService.cjs +23 -48
  84. package/dist/completion/ApiKeyPoolService.d.cts +150 -2
  85. package/dist/completion/ApiKeyPoolService.d.ts +150 -2
  86. package/dist/completion/BuiltinToolExecutor.cjs +12 -0
  87. package/dist/completion/BuiltinToolExecutor.d.cts +4 -0
  88. package/dist/completion/BuiltinToolExecutor.d.ts +4 -0
  89. package/dist/completion/BuiltinToolExecutor.js +12 -0
  90. package/dist/completion/CompletionService.cjs +38 -0
  91. package/dist/completion/CompletionService.d.cts +22 -0
  92. package/dist/completion/CompletionService.d.ts +22 -0
  93. package/dist/completion/CompletionService.js +38 -0
  94. package/dist/completion/NativeSearchInjector.cjs +12 -0
  95. package/dist/completion/NativeSearchInjector.d.cts +42 -0
  96. package/dist/completion/NativeSearchInjector.d.ts +42 -0
  97. package/dist/completion/NativeSearchInjector.js +12 -0
  98. package/dist/completion/ProviderSearchInjector.cjs +60 -0
  99. package/dist/completion/ProviderSearchInjector.d.cts +47 -0
  100. package/dist/completion/ProviderSearchInjector.d.ts +47 -0
  101. package/dist/completion/ProviderSearchInjector.js +60 -0
  102. package/dist/completion/native-search-types.cjs +14 -0
  103. package/dist/completion/native-search-types.d.cts +3 -0
  104. package/dist/completion/native-search-types.d.ts +3 -0
  105. package/dist/completion/native-search-types.js +14 -0
  106. package/dist/completion/openrouter-headers.cjs +16 -0
  107. package/dist/completion/openrouter-headers.d.cts +44 -0
  108. package/dist/completion/openrouter-headers.d.ts +44 -0
  109. package/dist/completion/openrouter-headers.js +16 -0
  110. package/dist/completion/openrouter-models.cjs +29 -0
  111. package/dist/completion/openrouter-models.d.cts +27 -0
  112. package/dist/completion/openrouter-models.d.ts +27 -0
  113. package/dist/completion/openrouter-models.js +29 -0
  114. package/dist/completion/types.cjs +1 -0
  115. package/dist/completion/types.d.cts +3 -0
  116. package/dist/completion/types.d.ts +3 -0
  117. package/dist/completion/types.js +0 -0
  118. package/dist/completion/url-builder.cjs +24 -0
  119. package/dist/completion/url-builder.d.cts +87 -0
  120. package/dist/completion/url-builder.d.ts +87 -0
  121. package/dist/completion/url-builder.js +24 -0
  122. package/dist/completion.cjs +55 -3989
  123. package/dist/completion.d.cts +150 -8
  124. package/dist/completion.d.ts +150 -8
  125. package/dist/completion.js +63 -3953
  126. package/dist/index.cjs +197 -10428
  127. package/dist/index.d.cts +35 -91
  128. package/dist/index.d.ts +35 -91
  129. package/dist/index.js +125 -10267
  130. package/dist/logger-4GvQNzhE.d.cts +22 -0
  131. package/dist/logger-4GvQNzhE.d.ts +22 -0
  132. package/dist/outbound-api/routeResolver.cjs +11 -0
  133. package/dist/outbound-api/routeResolver.d.cts +19 -0
  134. package/dist/outbound-api/routeResolver.d.ts +19 -0
  135. package/dist/outbound-api/routeResolver.js +11 -0
  136. package/dist/outbound-api/subscriptionRegistryPort.cjs +7 -37
  137. package/dist/outbound-api/subscriptionRegistryPort.d.cts +7 -3
  138. package/dist/outbound-api/subscriptionRegistryPort.d.ts +7 -3
  139. package/dist/outbound-api/subscriptionRegistryPort.js +4 -8
  140. package/dist/outbound-api/types.cjs +1 -0
  141. package/dist/{types-CbCN2NQP.d.ts → outbound-api/types.d.cts} +18 -3
  142. package/dist/{types-CGGrKqC_.d.cts → outbound-api/types.d.ts} +18 -3
  143. package/dist/outbound-api/types.js +0 -0
  144. package/dist/outbound-api.cjs +35 -5220
  145. package/dist/outbound-api.d.cts +16 -88
  146. package/dist/outbound-api.d.ts +16 -88
  147. package/dist/outbound-api.js +54 -5193
  148. package/dist/pipeline/AuthSource.cjs +1 -0
  149. package/dist/pipeline/AuthSource.d.cts +101 -0
  150. package/dist/pipeline/AuthSource.d.ts +101 -0
  151. package/dist/pipeline/AuthSource.js +0 -0
  152. package/dist/pipeline/LlmConfigProviderAuth.cjs +8 -0
  153. package/dist/pipeline/LlmConfigProviderAuth.d.cts +87 -0
  154. package/dist/pipeline/LlmConfigProviderAuth.d.ts +87 -0
  155. package/dist/pipeline/LlmConfigProviderAuth.js +8 -0
  156. package/dist/pipeline/SubscriptionAuthSource.cjs +6 -128
  157. package/dist/pipeline/SubscriptionAuthSource.d.cts +165 -3
  158. package/dist/pipeline/SubscriptionAuthSource.d.ts +165 -3
  159. package/dist/pipeline/SubscriptionAuthSource.js +5 -99
  160. package/dist/pipeline/SubscriptionAuthStrategy.cjs +1 -18
  161. package/dist/pipeline/executeProviderCall.cjs +6 -0
  162. package/dist/pipeline/executeProviderCall.d.cts +149 -0
  163. package/dist/pipeline/executeProviderCall.d.ts +149 -0
  164. package/dist/pipeline/executeProviderCall.js +6 -0
  165. package/dist/pipeline/resolveProviderChain.cjs +6 -0
  166. package/dist/pipeline/resolveProviderChain.d.cts +58 -0
  167. package/dist/pipeline/resolveProviderChain.d.ts +58 -0
  168. package/dist/pipeline/resolveProviderChain.js +6 -0
  169. package/dist/pipeline/resolveSubscriptionChain.cjs +6 -0
  170. package/dist/pipeline/resolveSubscriptionChain.d.cts +68 -0
  171. package/dist/pipeline/resolveSubscriptionChain.d.ts +68 -0
  172. package/dist/pipeline/resolveSubscriptionChain.js +6 -0
  173. package/dist/ports/gemini-code-assist-resolver.cjs +7 -37
  174. package/dist/ports/gemini-code-assist-resolver.js +4 -8
  175. package/dist/ports/pricing-store.cjs +1 -0
  176. package/dist/ports/pricing-store.d.cts +50 -0
  177. package/dist/ports/pricing-store.d.ts +50 -0
  178. package/dist/ports/pricing-store.js +0 -0
  179. package/dist/ports/provider-config-source.cjs +1 -0
  180. package/dist/ports/provider-config-source.d.cts +51 -0
  181. package/dist/ports/provider-config-source.d.ts +51 -0
  182. package/dist/ports/provider-config-source.js +0 -0
  183. package/dist/ports/usage-event-store.cjs +1 -0
  184. package/dist/ports/usage-event-store.d.cts +29 -0
  185. package/dist/ports/usage-event-store.d.ts +29 -0
  186. package/dist/ports/usage-event-store.js +0 -0
  187. package/dist/ports/web-search-backend.cjs +1 -0
  188. package/dist/ports/web-search-backend.d.cts +29 -0
  189. package/dist/ports/web-search-backend.d.ts +29 -0
  190. package/dist/ports/web-search-backend.js +0 -0
  191. package/dist/ports.cjs +1 -18
  192. package/dist/ports.d.cts +16 -8
  193. package/dist/ports.d.ts +16 -8
  194. package/dist/provider-proxy/ProviderProxy.cjs +40 -0
  195. package/dist/provider-proxy/ProviderProxy.d.cts +17 -0
  196. package/dist/provider-proxy/ProviderProxy.d.ts +17 -0
  197. package/dist/provider-proxy/ProviderProxy.js +40 -0
  198. package/dist/provider-proxy/ingress/providerProxyShared.cjs +35 -2941
  199. package/dist/provider-proxy/ingress/providerProxyShared.d.cts +7 -3
  200. package/dist/provider-proxy/ingress/providerProxyShared.d.ts +7 -3
  201. package/dist/provider-proxy/ingress/providerProxyShared.js +41 -2914
  202. package/dist/provider-proxy/matchText.cjs +11 -72
  203. package/dist/provider-proxy/matchText.js +6 -39
  204. package/dist/provider-proxy/types.cjs +1 -18
  205. package/dist/provider-proxy/types.d.cts +407 -8
  206. package/dist/provider-proxy/types.d.ts +407 -8
  207. package/dist/provider-proxy.cjs +35 -4654
  208. package/dist/provider-proxy.d.cts +10 -6
  209. package/dist/provider-proxy.d.ts +10 -6
  210. package/dist/provider-proxy.js +39 -4627
  211. package/dist/routeResolver-BrbK6ja9.d.cts +88 -0
  212. package/dist/routeResolver-HE-ZO0fO.d.ts +88 -0
  213. package/dist/serializeError.cjs +5 -81
  214. package/dist/serializeError.js +3 -54
  215. package/dist/sse-parser.cjs +7 -455
  216. package/dist/sse-parser.js +4 -426
  217. package/dist/transformer/TransformerChainExecutor.cjs +4 -318
  218. package/dist/transformer/TransformerChainExecutor.js +4 -291
  219. package/dist/transformer/TransformerService.cjs +5 -289
  220. package/dist/transformer/TransformerService.js +3 -262
  221. package/dist/transformer/anthropicBetaInject.cjs +8 -0
  222. package/dist/transformer/anthropicBetaInject.d.cts +20 -0
  223. package/dist/transformer/anthropicBetaInject.d.ts +20 -0
  224. package/dist/transformer/anthropicBetaInject.js +8 -0
  225. package/dist/transformer/transformers/AnthropicTransformer.cjs +6 -0
  226. package/dist/transformer/transformers/AnthropicTransformer.d.cts +148 -0
  227. package/dist/transformer/transformers/AnthropicTransformer.d.ts +148 -0
  228. package/dist/transformer/transformers/AnthropicTransformer.js +6 -0
  229. package/dist/transformer/transformers/GeminiCodeAssistTransformer.cjs +4 -1106
  230. package/dist/transformer/transformers/GeminiCodeAssistTransformer.js +7 -1079
  231. package/dist/transformer/transformers/GeminiTransformer.cjs +4 -1010
  232. package/dist/transformer/transformers/GeminiTransformer.js +4 -983
  233. package/dist/transformer/transformers/OpenAIResponseTransformer.cjs +3 -535
  234. package/dist/transformer/transformers/OpenAIResponseTransformer.js +3 -510
  235. package/dist/transformer/transformers/OpenCodeGoTransformer.cjs +5 -72
  236. package/dist/transformer/transformers/OpenCodeGoTransformer.js +3 -45
  237. package/dist/transformer/transformers/ReasoningTransformer.cjs +6 -0
  238. package/dist/transformer/transformers/ReasoningTransformer.d.cts +47 -0
  239. package/dist/transformer/transformers/ReasoningTransformer.d.ts +47 -0
  240. package/dist/transformer/transformers/ReasoningTransformer.js +6 -0
  241. package/dist/transformer/transformers.cjs +39 -0
  242. package/dist/transformer/transformers.d.cts +100 -0
  243. package/dist/transformer/transformers.d.ts +100 -0
  244. package/dist/transformer/transformers.js +39 -0
  245. package/dist/transformer/types.cjs +1 -18
  246. package/dist/transformer.cjs +13 -3726
  247. package/dist/transformer.d.cts +8 -31
  248. package/dist/transformer.d.ts +8 -31
  249. package/dist/transformer.js +17 -3706
  250. package/dist/types-BScIHmPr.d.cts +153 -0
  251. package/dist/types-BScIHmPr.d.ts +153 -0
  252. package/dist/usage/pricing-engine.cjs +6 -0
  253. package/dist/usage/pricing-engine.d.cts +83 -0
  254. package/dist/usage/pricing-engine.d.ts +83 -0
  255. package/dist/usage/pricing-engine.js +6 -0
  256. package/dist/usage/usage-recorder.cjs +6 -0
  257. package/dist/usage/usage-recorder.d.cts +73 -0
  258. package/dist/usage/usage-recorder.d.ts +73 -0
  259. package/dist/usage/usage-recorder.js +6 -0
  260. package/dist/usage.cjs +11 -0
  261. package/dist/usage.d.cts +8 -0
  262. package/dist/usage.d.ts +8 -0
  263. package/dist/usage.js +11 -0
  264. package/package.json +3 -3
  265. package/dist/ApiKeyPoolService-BmMkau07.d.cts +0 -170
  266. package/dist/ApiKeyPoolService-BmMkau07.d.ts +0 -170
  267. package/dist/SubscriptionAuthSource-Cr4fVEYY.d.cts +0 -264
  268. package/dist/SubscriptionAuthSource-D89zmiSS.d.ts +0 -264
  269. package/dist/index-BTSmc9Sm.d.ts +0 -645
  270. package/dist/index-DXazdTzZ.d.cts +0 -645
  271. package/dist/types-DCzHkhJt.d.ts +0 -467
  272. package/dist/types-DZIQbgp0.d.cts +0 -467
@@ -0,0 +1,124 @@
1
+ import {
2
+ resolveApiFormat
3
+ } from "./chunk-H5JUT3KV.js";
4
+ import {
5
+ OPENROUTER_APP_HEADERS,
6
+ isOpenRouterProvider
7
+ } from "./chunk-E3WHL7CO.js";
8
+
9
+ // src/completion/header-builder.ts
10
+ function getProviderHeaders(provider, apiKey) {
11
+ const format = resolveApiFormat(provider);
12
+ let headers;
13
+ switch (format) {
14
+ case "anthropic":
15
+ headers = {
16
+ "Content-Type": "application/json",
17
+ "x-api-key": apiKey,
18
+ "anthropic-version": "2025-01-10"
19
+ // Required for extended thinking feature
20
+ };
21
+ break;
22
+ case "google":
23
+ headers = {
24
+ "Content-Type": "application/json",
25
+ "x-goog-api-key": apiKey
26
+ };
27
+ break;
28
+ case "azure-openai":
29
+ headers = {
30
+ "Content-Type": "application/json",
31
+ "api-key": apiKey
32
+ };
33
+ break;
34
+ case "openai":
35
+ case "openai-response":
36
+ default:
37
+ headers = {
38
+ "Content-Type": "application/json",
39
+ "Authorization": `Bearer ${apiKey}`
40
+ };
41
+ break;
42
+ }
43
+ if (isOpenRouterProvider(provider)) {
44
+ return { ...headers, ...OPENROUTER_APP_HEADERS };
45
+ }
46
+ return headers;
47
+ }
48
+
49
+ // src/pipeline/LlmConfigProviderAuth.ts
50
+ function isReportableStatus(status) {
51
+ return status === 429 || status === 529 || status === 401 || status === 403;
52
+ }
53
+ var LlmConfigProviderAuth = class {
54
+ provider;
55
+ apiKeyPool;
56
+ providerId;
57
+ sessionId;
58
+ /**
59
+ * The current resolved key. Mutable so a Phase-3 caller can read the
60
+ * rotated key after `onResult`; this phase it is only set at construction
61
+ * and updated inside `onResult` (mirroring the inline re-point in
62
+ * `callWithPoolReporting`).
63
+ */
64
+ apiKey;
65
+ constructor(opts) {
66
+ this.provider = opts.provider;
67
+ this.apiKey = opts.apiKey;
68
+ this.apiKeyPool = opts.apiKeyPool ?? null;
69
+ this.providerId = opts.providerId;
70
+ this.sessionId = opts.sessionId;
71
+ }
72
+ /**
73
+ * Merge the provider auth headers (and content-type / OpenRouter app
74
+ * headers) into `headers`, exactly as a direct `getProviderHeaders` call
75
+ * would produce them. `hints` are accepted for contract symmetry but the
76
+ * provider-key path does not vary headers by URL/model.
77
+ */
78
+ applyHeaders(headers, _hints) {
79
+ const authHeaders = getProviderHeaders(this.provider, this.apiKey);
80
+ for (const [k, v] of Object.entries(authHeaders)) {
81
+ headers[k] = v;
82
+ }
83
+ }
84
+ /**
85
+ * React to the final HTTP status — the pool-rotation seam (design D5).
86
+ *
87
+ * Reproduces `callWithPoolReporting`'s reportable + success branches:
88
+ * - reportable status (429/529/401/403) on a pool-backed request →
89
+ * `reportError(providerId, sessionId, status)`; when it hands back a
90
+ * `newKey` the session was re-bound, so we adopt it (`this.apiKey`) and
91
+ * return `{ rebound: true, newKey }`. When no key is available it returns
92
+ * `{ rebound: false }` (the session is still cooled/disabled by the report).
93
+ * - success / any 2xx → `reportSuccess(sessionId)`; `{ rebound: false }`.
94
+ * - non-reportable, non-success, or non-pool request → no-op
95
+ * `{ rebound: false }`.
96
+ *
97
+ * NOTE: no caller invokes this in Phase 2; it is unit-tested in isolation.
98
+ */
99
+ async onResult(status) {
100
+ const pool = this.apiKeyPool;
101
+ const providerId = this.providerId;
102
+ const sessionId = this.sessionId;
103
+ if (!pool || !providerId || !sessionId) {
104
+ return { rebound: false };
105
+ }
106
+ if (isReportableStatus(status)) {
107
+ const newKey = await pool.reportError(providerId, sessionId, status);
108
+ if (newKey) {
109
+ this.apiKey = newKey;
110
+ return { rebound: true, newKey };
111
+ }
112
+ return { rebound: false };
113
+ }
114
+ if (status !== null && status >= 200 && status < 300) {
115
+ pool.reportSuccess(sessionId);
116
+ }
117
+ return { rebound: false };
118
+ }
119
+ };
120
+
121
+ export {
122
+ getProviderHeaders,
123
+ LlmConfigProviderAuth
124
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/outbound-api/subscriptionRegistryPort.ts
2
+ var _registry = null;
3
+ function setSubscriptionRegistryForOutbound(registry) {
4
+ _registry = registry;
5
+ }
6
+ function getSubscriptionRegistryForOutbound() {
7
+ return _registry;
8
+ }
9
+
10
+
11
+
12
+
13
+ exports.setSubscriptionRegistryForOutbound = setSubscriptionRegistryForOutbound; exports.getSubscriptionRegistryForOutbound = getSubscriptionRegistryForOutbound;
@@ -0,0 +1,46 @@
1
+ // src/provider-proxy/matchText.ts
2
+ var MATCH_TEXT_PER_MESSAGE_CAP = 8192;
3
+ var MATCH_TEXT_RECENT_MESSAGES = 6;
4
+ function flattenMatchText(value) {
5
+ if (typeof value === "string") return value;
6
+ if (Array.isArray(value)) {
7
+ const parts = [];
8
+ for (const item of value) {
9
+ const text = flattenMatchText(item);
10
+ if (text) parts.push(text);
11
+ }
12
+ return parts.join("\n");
13
+ }
14
+ if (value && typeof value === "object") {
15
+ const obj = value;
16
+ if (obj.type === "tool_result" && obj.content !== void 0) {
17
+ return flattenMatchText(obj.content);
18
+ }
19
+ if (typeof obj.text === "string") return obj.text;
20
+ }
21
+ return "";
22
+ }
23
+ function collectMatchText(anthropicBody) {
24
+ const messages = Array.isArray(anthropicBody.messages) ? anthropicBody.messages : [];
25
+ const slices = [];
26
+ const sys = flattenMatchText(anthropicBody.system).trim();
27
+ if (sys) slices.push(sys.slice(0, MATCH_TEXT_PER_MESSAGE_CAP));
28
+ const recent = [];
29
+ for (let i = messages.length - 1; i >= 0 && recent.length < MATCH_TEXT_RECENT_MESSAGES; i--) {
30
+ const message = messages[i];
31
+ if (!message || typeof message !== "object") continue;
32
+ const role = message.role;
33
+ if (role !== "user" && role !== "system") continue;
34
+ const text = flattenMatchText(message.content).trim();
35
+ if (text) recent.push(text.slice(0, MATCH_TEXT_PER_MESSAGE_CAP));
36
+ }
37
+ for (let i = recent.length - 1; i >= 0; i--) slices.push(recent[i]);
38
+ return slices;
39
+ }
40
+
41
+ export {
42
+ MATCH_TEXT_PER_MESSAGE_CAP,
43
+ MATCH_TEXT_RECENT_MESSAGES,
44
+ flattenMatchText,
45
+ collectMatchText
46
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/pipeline/resolveProviderChain.ts
2
+ async function resolveProviderChain(llmConfig, providerId, model) {
3
+ const cachedChain = await llmConfig.resolveTransformerChain(providerId, model);
4
+ const mainTransformer = await llmConfig.getMainTransformer(providerId);
5
+ const chain = {
6
+ providerTransformers: [...cachedChain.providerTransformers],
7
+ modelTransformers: [...cachedChain.modelTransformers]
8
+ };
9
+ if (mainTransformer) {
10
+ const alreadyInChain = chain.providerTransformers.some(
11
+ (t) => t.name === mainTransformer.name
12
+ );
13
+ if (!alreadyInChain) {
14
+ chain.providerTransformers.unshift(mainTransformer);
15
+ }
16
+ }
17
+ const hasTransformers = chain.providerTransformers.length > 0 || chain.modelTransformers.length > 0;
18
+ return { chain, mainTransformer, hasTransformers };
19
+ }
20
+
21
+
22
+
23
+ exports.resolveProviderChain = resolveProviderChain;
@@ -0,0 +1,13 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/ports/gemini-code-assist-resolver.ts
2
+ var resolver = null;
3
+ function setGeminiCodeAssistResolver(impl) {
4
+ resolver = impl;
5
+ }
6
+ function getGeminiCodeAssistResolver() {
7
+ return resolver;
8
+ }
9
+
10
+
11
+
12
+
13
+ exports.setGeminiCodeAssistResolver = setGeminiCodeAssistResolver; exports.getGeminiCodeAssistResolver = getGeminiCodeAssistResolver;
@@ -0,0 +1,186 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
+
3
+
4
+
5
+
6
+ var _chunkYGXJGRFIcjs = require('./chunk-YGXJGRFI.cjs');
7
+
8
+ // src/transformer/transformers/GeminiCodeAssistTransformer.ts
9
+ var DEFAULT_CODE_ASSIST_ENDPOINT = "https://cloudcode-pa.googleapis.com";
10
+ var DEFAULT_CODE_ASSIST_API_VERSION = "v1internal";
11
+ function resolveCodeAssistEndpoint() {
12
+ return (process.env.CODE_ASSIST_ENDPOINT || DEFAULT_CODE_ASSIST_ENDPOINT).replace(/\/+$/, "");
13
+ }
14
+ function resolveCodeAssistApiVersion() {
15
+ return process.env.CODE_ASSIST_API_VERSION || DEFAULT_CODE_ASSIST_API_VERSION;
16
+ }
17
+ function buildCodeAssistUrl(stream) {
18
+ const base = resolveCodeAssistEndpoint();
19
+ const version = resolveCodeAssistApiVersion();
20
+ const method = stream ? "streamGenerateContent?alt=sse" : "generateContent";
21
+ return `${base}/${version}:${method}`;
22
+ }
23
+ function generateUserPromptId() {
24
+ const c = globalThis.crypto;
25
+ if (_optionalChain([c, 'optionalAccess', _ => _.randomUUID])) return c.randomUUID();
26
+ return `omnicross-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
27
+ }
28
+ function peelResponseEnvelope(parsed) {
29
+ if (parsed && typeof parsed === "object" && "response" in parsed) {
30
+ return parsed.response;
31
+ }
32
+ return parsed;
33
+ }
34
+ async function unwrapCodeAssistResponse(response) {
35
+ const contentType = _nullishCoalesce(response.headers.get("Content-Type"), () => ( ""));
36
+ if (contentType.includes("stream") || contentType.includes("text/event-stream")) {
37
+ const sourceBody = response.body;
38
+ if (!sourceBody) return response;
39
+ const decoder = new TextDecoder();
40
+ const encoder = new TextEncoder();
41
+ const peeled = new ReadableStream({
42
+ async start(controller) {
43
+ const reader = sourceBody.getReader();
44
+ let buffer = "";
45
+ const processLine = (line) => {
46
+ if (!line.startsWith("data:")) {
47
+ if (line.length > 0) controller.enqueue(encoder.encode(`${line}
48
+ `));
49
+ return;
50
+ }
51
+ const payload = line.slice(line.indexOf(":") + 1).trim();
52
+ if (!payload || payload === "[DONE]") {
53
+ controller.enqueue(encoder.encode(`${line}
54
+ `));
55
+ return;
56
+ }
57
+ try {
58
+ const parsed = JSON.parse(payload);
59
+ const inner2 = peelResponseEnvelope(parsed);
60
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(inner2)}
61
+ `));
62
+ } catch (e) {
63
+ controller.enqueue(encoder.encode(`${line}
64
+ `));
65
+ }
66
+ };
67
+ try {
68
+ while (true) {
69
+ const { done, value } = await reader.read();
70
+ if (done) {
71
+ if (buffer) processLine(buffer);
72
+ break;
73
+ }
74
+ buffer += decoder.decode(value, { stream: true });
75
+ const lines = buffer.split("\n");
76
+ buffer = lines.pop() || "";
77
+ for (const line of lines) processLine(line);
78
+ }
79
+ } catch (err) {
80
+ controller.error(err);
81
+ } finally {
82
+ controller.close();
83
+ }
84
+ }
85
+ });
86
+ return new Response(peeled, {
87
+ status: response.status,
88
+ statusText: response.statusText,
89
+ headers: response.headers
90
+ });
91
+ }
92
+ const raw = await response.json().catch(() => null);
93
+ const inner = peelResponseEnvelope(raw);
94
+ return new Response(JSON.stringify(inner), {
95
+ status: response.status,
96
+ statusText: response.statusText,
97
+ headers: response.headers
98
+ });
99
+ }
100
+ var GeminiCodeAssistTransformer = (_class = class {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this); }
101
+ static __initStatic() {this.TransformerName = "gemini-code-assist"}
102
+ __init() {this.name = "gemini-code-assist"}
103
+
104
+ /** Code Assist has no fixed `/models/:modelAndAction` endpoint pattern — the
105
+ * URL is built per-request in `transformRequestIn`. Left undefined so the
106
+ * TransformerService does NOT treat this as an endpoint (reverse) transformer. */
107
+ __init2() {this.endPoint = void 0}
108
+ /**
109
+ * unified → Code Assist envelope.
110
+ *
111
+ * Builds the inner public-Gemini body via the shared `buildRequestBody`, then
112
+ * wraps it as `{ model, project, user_prompt_id, request: <inner> }` and sets
113
+ * the Code Assist URL + Bearer-only headers.
114
+ *
115
+ * The resolved Code Assist `project` is threaded in via `provider.geminiProject`
116
+ * (stashed by the subscription dispatch seam — see SubscriptionDispatcher /
117
+ * openaiResponsesIngress). `undefined` is the valid fresh free-tier value.
118
+ */
119
+ async transformRequestIn(request, provider, _context) {
120
+ const inner = _chunkYGXJGRFIcjs.buildRequestBody.call(void 0, request);
121
+ const envelope = {
122
+ model: request.model,
123
+ project: provider.geminiProject,
124
+ user_prompt_id: generateUserPromptId(),
125
+ request: inner
126
+ };
127
+ const url = buildCodeAssistUrl(Boolean(request.stream));
128
+ const headers = {
129
+ "x-goog-api-key": void 0,
130
+ "X-Goog-Api-Key": void 0
131
+ };
132
+ return {
133
+ body: envelope,
134
+ config: { url, headers }
135
+ };
136
+ }
137
+ /**
138
+ * Code Assist request → unified (endpoint-decode parity with GeminiTransformer).
139
+ * Peels the top-level `request` envelope first, then delegates to the shared
140
+ * gemini request decoder. Not used on the subscription dispatch path (the
141
+ * endpoint transformer there is Anthropic/OpenAI-Response), but provided for
142
+ * completeness so this transformer is a drop-in for the gemini one.
143
+ */
144
+ async transformRequestOut(request, _context) {
145
+ const r = request;
146
+ const inner = r && typeof r === "object" && "request" in r ? r.request : r;
147
+ if (inner && typeof inner === "object" && !("model" in inner) && "model" in r) {
148
+ inner.model = r.model;
149
+ }
150
+ return _chunkYGXJGRFIcjs.transformRequestOut.call(void 0, inner);
151
+ }
152
+ /**
153
+ * Code Assist response → OpenAI-compatible. PEEL the `.response` envelope from
154
+ * the body / each SSE chunk, then DELEGATE to the existing gemini parser.
155
+ */
156
+ async transformResponseOut(response, _context) {
157
+ const unwrapped = await unwrapCodeAssistResponse(response);
158
+ return _chunkYGXJGRFIcjs.transformResponseOut.call(void 0, unwrapped, this.name, this.logger);
159
+ }
160
+ /**
161
+ * OpenAI-compatible response → Code Assist (endpoint-encode parity). Re-wraps
162
+ * the standard gemini response under the top-level `response` key after the
163
+ * shared gemini encoder produces a public-Gemini body. Symmetric with
164
+ * `transformResponseOut`'s peel.
165
+ */
166
+ async transformResponseIn(response, _context) {
167
+ const geminiResponse = await _chunkYGXJGRFIcjs.transformResponseIn.call(void 0, response, this.logger);
168
+ const contentType = _nullishCoalesce(geminiResponse.headers.get("Content-Type"), () => ( ""));
169
+ if (contentType.includes("text/event-stream")) {
170
+ return geminiResponse;
171
+ }
172
+ const data = await geminiResponse.json().catch(() => null);
173
+ return new Response(JSON.stringify({ response: data }), {
174
+ status: geminiResponse.status,
175
+ statusText: geminiResponse.statusText,
176
+ headers: { "Content-Type": "application/json" }
177
+ });
178
+ }
179
+ }, _class.__initStatic(), _class);
180
+
181
+
182
+
183
+
184
+
185
+
186
+ exports.resolveCodeAssistEndpoint = resolveCodeAssistEndpoint; exports.resolveCodeAssistApiVersion = resolveCodeAssistApiVersion; exports.buildCodeAssistUrl = buildCodeAssistUrl; exports.GeminiCodeAssistTransformer = GeminiCodeAssistTransformer;