@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,514 @@
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;// src/transformer/transformers/OpenAIResponseTransformer.ts
2
+ var OpenAIResponseTransformer = (_class = class {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this); }
3
+ static __initStatic() {this.TransformerName = "openai-response"}
4
+ __init() {this.name = "openai-response"}
5
+ __init2() {this.endPoint = "/v1/responses"}
6
+
7
+ /**
8
+ * Handle authentication - Bearer token
9
+ */
10
+ async auth(request, provider, _context) {
11
+ return {
12
+ body: request,
13
+ config: {
14
+ headers: {
15
+ Authorization: `Bearer ${provider.apiKey}`,
16
+ "Content-Type": "application/json"
17
+ }
18
+ }
19
+ };
20
+ }
21
+ /**
22
+ * Transform unified request → Response API format
23
+ */
24
+ async transformRequestIn(request, provider, _context) {
25
+ const input = [];
26
+ for (const msg of request.messages) {
27
+ if (msg.role === "system") {
28
+ input.push({
29
+ role: "developer",
30
+ content: typeof msg.content === "string" ? msg.content : flattenContent(msg.content)
31
+ });
32
+ } else if (msg.role === "tool") {
33
+ input.push({
34
+ type: "function_call_output",
35
+ call_id: msg.tool_call_id,
36
+ output: typeof msg.content === "string" ? msg.content : ""
37
+ });
38
+ } else {
39
+ const entry = {
40
+ role: msg.role,
41
+ content: typeof msg.content === "string" ? msg.content : flattenContent(msg.content)
42
+ };
43
+ if (msg.role === "assistant" && _optionalChain([msg, 'access', _ => _.tool_calls, 'optionalAccess', _2 => _2.length])) {
44
+ input.push(entry);
45
+ for (const tc of msg.tool_calls) {
46
+ input.push({
47
+ type: "function_call",
48
+ id: tc.id,
49
+ call_id: tc.id,
50
+ name: tc.function.name,
51
+ arguments: tc.function.arguments
52
+ });
53
+ }
54
+ continue;
55
+ }
56
+ input.push(entry);
57
+ }
58
+ }
59
+ const body = {
60
+ model: request.model,
61
+ input,
62
+ stream: _nullishCoalesce(request.stream, () => ( false)),
63
+ ...request.max_tokens ? { max_output_tokens: request.max_tokens } : {},
64
+ ...request.temperature !== void 0 ? { temperature: request.temperature } : {}
65
+ };
66
+ if (_optionalChain([request, 'access', _3 => _3.reasoning, 'optionalAccess', _4 => _4.effort]) && request.reasoning.effort !== "none") {
67
+ body.reasoning = { effort: request.reasoning.effort, summary: "auto" };
68
+ }
69
+ if (_optionalChain([request, 'access', _5 => _5.tools, 'optionalAccess', _6 => _6.length])) {
70
+ body.tools = request.tools.map((tool) => ({
71
+ type: "function",
72
+ name: tool.function.name,
73
+ description: tool.function.description,
74
+ parameters: tool.function.parameters
75
+ }));
76
+ }
77
+ if (request.tool_choice) {
78
+ if (typeof request.tool_choice === "string") {
79
+ body.tool_choice = request.tool_choice;
80
+ } else if (typeof request.tool_choice === "object" && "function" in request.tool_choice) {
81
+ body.tool_choice = { type: "function", name: request.tool_choice.function.name };
82
+ }
83
+ }
84
+ const url = new URL("/v1/responses", provider.baseUrl);
85
+ return { body, config: { url } };
86
+ }
87
+ /**
88
+ * Transform Response API request → unified format
89
+ */
90
+ async transformRequestOut(request, _context) {
91
+ const req = request;
92
+ const messages = [];
93
+ if (req.input) {
94
+ for (const item of req.input) {
95
+ const entry = item;
96
+ if (entry.type === "function_call_output") {
97
+ messages.push({
98
+ role: "tool",
99
+ content: entry.output || "",
100
+ tool_call_id: entry.call_id || void 0
101
+ });
102
+ continue;
103
+ }
104
+ if (entry.type === "function_call") {
105
+ const toolCall = {
106
+ id: (_nullishCoalesce(entry.call_id, () => ( entry.id))) || "",
107
+ type: "function",
108
+ function: {
109
+ name: entry.name || "",
110
+ arguments: typeof entry.arguments === "string" ? entry.arguments : ""
111
+ }
112
+ };
113
+ const last = messages[messages.length - 1];
114
+ if (last && last.role === "assistant") {
115
+ (last.tool_calls ??= []).push(toolCall);
116
+ } else {
117
+ messages.push({ role: "assistant", content: null, tool_calls: [toolCall] });
118
+ }
119
+ continue;
120
+ }
121
+ const role = entry.role;
122
+ if (role === "developer") {
123
+ messages.push({
124
+ role: "system",
125
+ content: typeof entry.content === "string" ? entry.content : JSON.stringify(entry.content)
126
+ });
127
+ } else if (role === "user" || role === "assistant") {
128
+ messages.push({
129
+ role,
130
+ content: typeof entry.content === "string" ? entry.content : JSON.stringify(entry.content)
131
+ });
132
+ }
133
+ }
134
+ }
135
+ const result = {
136
+ messages,
137
+ model: req.model,
138
+ max_tokens: req.max_output_tokens,
139
+ temperature: req.temperature,
140
+ stream: req.stream
141
+ };
142
+ if (_optionalChain([req, 'access', _7 => _7.reasoning, 'optionalAccess', _8 => _8.effort])) {
143
+ result.reasoning = {
144
+ effort: req.reasoning.effort,
145
+ enabled: true
146
+ };
147
+ }
148
+ if (_optionalChain([req, 'access', _9 => _9.tools, 'optionalAccess', _10 => _10.length])) {
149
+ result.tools = req.tools.filter((t) => t.type === "function").map((t) => ({
150
+ type: "function",
151
+ function: {
152
+ name: t.name || "",
153
+ description: t.description || "",
154
+ parameters: t.parameters || {}
155
+ }
156
+ }));
157
+ }
158
+ return result;
159
+ }
160
+ /**
161
+ * Transform Response API response → unified (OpenAI CC) format
162
+ */
163
+ async transformResponseOut(response, _context) {
164
+ const contentType = _nullishCoalesce(response.headers.get("Content-Type"), () => ( ""));
165
+ if (contentType.includes("text/event-stream")) {
166
+ if (!response.body) {
167
+ throw new Error("Stream response body is null");
168
+ }
169
+ return new Response(convertResponseApiStreamToOpenAI(response.body), {
170
+ headers: {
171
+ "Content-Type": "text/event-stream",
172
+ "Cache-Control": "no-cache",
173
+ Connection: "keep-alive"
174
+ }
175
+ });
176
+ }
177
+ const data = await response.json();
178
+ return new Response(JSON.stringify(convertResponseApiJsonToOpenAI(data)), {
179
+ headers: { "Content-Type": "application/json" }
180
+ });
181
+ }
182
+ /**
183
+ * Transform OpenAI CC response → Response API format
184
+ */
185
+ async transformResponseIn(response, _context) {
186
+ const contentType = _nullishCoalesce(response.headers.get("Content-Type"), () => ( ""));
187
+ if (contentType.includes("text/event-stream")) {
188
+ if (!response.body) {
189
+ throw new Error("Stream response body is null");
190
+ }
191
+ return new Response(convertOpenAIStreamToResponseApi(response.body), {
192
+ headers: {
193
+ "Content-Type": "text/event-stream",
194
+ "Cache-Control": "no-cache",
195
+ Connection: "keep-alive"
196
+ }
197
+ });
198
+ }
199
+ const data = await response.json();
200
+ return new Response(JSON.stringify(convertOpenAIJsonToResponseApi(data)), {
201
+ headers: { "Content-Type": "application/json" }
202
+ });
203
+ }
204
+ }, _class.__initStatic(), _class);
205
+ function flattenContent(content) {
206
+ if (typeof content === "string") return content;
207
+ if (!content) return "";
208
+ if (Array.isArray(content)) {
209
+ return content.filter((c) => c.type === "text").map((c) => c.text || "").join("\n");
210
+ }
211
+ return "";
212
+ }
213
+ function convertResponseApiJsonToOpenAI(data) {
214
+ let textContent = "";
215
+ const toolCalls = [];
216
+ const output = data.output;
217
+ if (output) {
218
+ for (const item of output) {
219
+ if (item.type === "message") {
220
+ const content = item.content;
221
+ if (content) {
222
+ for (const part of content) {
223
+ if (part.type === "output_text" && typeof part.text === "string") {
224
+ textContent += part.text;
225
+ }
226
+ }
227
+ }
228
+ } else if (item.type === "function_call") {
229
+ toolCalls.push({
230
+ id: item.call_id || item.id || `call_${Date.now()}`,
231
+ type: "function",
232
+ function: {
233
+ name: item.name,
234
+ arguments: typeof item.arguments === "string" ? item.arguments : JSON.stringify(item.arguments || {})
235
+ }
236
+ });
237
+ }
238
+ }
239
+ }
240
+ const usage = data.usage;
241
+ const message = {
242
+ role: "assistant",
243
+ content: textContent || null
244
+ };
245
+ if (toolCalls.length > 0) {
246
+ message.tool_calls = toolCalls;
247
+ }
248
+ return {
249
+ id: data.id || `chatcmpl-${Date.now()}`,
250
+ object: "chat.completion",
251
+ created: Math.floor(Date.now() / 1e3),
252
+ model: data.model || "unknown",
253
+ choices: [
254
+ {
255
+ index: 0,
256
+ message,
257
+ finish_reason: toolCalls.length > 0 ? "tool_calls" : "stop"
258
+ }
259
+ ],
260
+ usage: usage ? {
261
+ prompt_tokens: usage.input_tokens || 0,
262
+ completion_tokens: usage.output_tokens || 0,
263
+ total_tokens: (usage.input_tokens || 0) + (usage.output_tokens || 0)
264
+ } : void 0
265
+ };
266
+ }
267
+ function convertOpenAIJsonToResponseApi(data) {
268
+ const choices = data.choices;
269
+ const message = _optionalChain([choices, 'optionalAccess', _11 => _11[0], 'optionalAccess', _12 => _12.message]);
270
+ const output = [];
271
+ if (message) {
272
+ const contentParts = [];
273
+ if (message.content) {
274
+ contentParts.push({ type: "output_text", text: message.content });
275
+ }
276
+ if (contentParts.length > 0) {
277
+ output.push({ type: "message", role: "assistant", content: contentParts });
278
+ }
279
+ const toolCalls = message.tool_calls;
280
+ if (_optionalChain([toolCalls, 'optionalAccess', _13 => _13.length])) {
281
+ for (const tc of toolCalls) {
282
+ const func = tc.function;
283
+ output.push({
284
+ type: "function_call",
285
+ id: tc.id,
286
+ call_id: tc.id,
287
+ name: _optionalChain([func, 'optionalAccess', _14 => _14.name]),
288
+ arguments: _optionalChain([func, 'optionalAccess', _15 => _15.arguments])
289
+ });
290
+ }
291
+ }
292
+ }
293
+ const usage = data.usage;
294
+ return {
295
+ id: data.id || `resp_${Date.now()}`,
296
+ object: "response",
297
+ status: "completed",
298
+ model: data.model || "unknown",
299
+ output,
300
+ usage: usage ? {
301
+ input_tokens: usage.prompt_tokens || 0,
302
+ output_tokens: usage.completion_tokens || 0,
303
+ total_tokens: usage.total_tokens || (usage.prompt_tokens || 0) + (usage.completion_tokens || 0)
304
+ } : void 0
305
+ };
306
+ }
307
+ function convertResponseApiStreamToOpenAI(responseApiStream) {
308
+ const decoder = new TextDecoder();
309
+ const encoder = new TextEncoder();
310
+ return new ReadableStream({
311
+ start: async (controller) => {
312
+ const reader = responseApiStream.getReader();
313
+ let buffer = "";
314
+ let isClosed = false;
315
+ const messageId = `chatcmpl-${Date.now()}`;
316
+ let model = "unknown";
317
+ let hasEmittedRole = false;
318
+ const safeEnqueue = (str) => {
319
+ if (!isClosed) {
320
+ try {
321
+ controller.enqueue(encoder.encode(str));
322
+ } catch (e2) {
323
+ isClosed = true;
324
+ }
325
+ }
326
+ };
327
+ const emitChunk = (choices, usage) => {
328
+ const chunk = {
329
+ id: messageId,
330
+ object: "chat.completion.chunk",
331
+ created: Math.floor(Date.now() / 1e3),
332
+ model,
333
+ choices
334
+ };
335
+ if (usage) chunk.usage = usage;
336
+ safeEnqueue(`data: ${JSON.stringify(chunk)}
337
+
338
+ `);
339
+ };
340
+ try {
341
+ while (true) {
342
+ const { done, value } = await reader.read();
343
+ if (done) break;
344
+ buffer += decoder.decode(value, { stream: true });
345
+ const lines = buffer.split("\n");
346
+ buffer = lines.pop() || "";
347
+ for (const line of lines) {
348
+ if (isClosed) break;
349
+ if (!line.startsWith("data:")) continue;
350
+ const data = line.slice(5).trim();
351
+ if (data === "[DONE]") continue;
352
+ try {
353
+ const event = JSON.parse(data);
354
+ model = event.model || _optionalChain([event, 'access', _16 => _16.response, 'optionalAccess', _17 => _17.model]) || model;
355
+ switch (event.type) {
356
+ case "response.output_text.delta":
357
+ if (event.delta) {
358
+ if (!hasEmittedRole) {
359
+ emitChunk([{ index: 0, delta: { role: "assistant", content: "" }, finish_reason: null }]);
360
+ hasEmittedRole = true;
361
+ }
362
+ emitChunk([{ index: 0, delta: { content: event.delta }, finish_reason: null }]);
363
+ }
364
+ break;
365
+ case "response.reasoning_summary_text.delta":
366
+ if (event.delta) {
367
+ emitChunk([{
368
+ index: 0,
369
+ delta: { thinking: { content: event.delta } },
370
+ finish_reason: null
371
+ }]);
372
+ }
373
+ break;
374
+ case "response.completed": {
375
+ const resp = event.response;
376
+ const respUsage = _optionalChain([resp, 'optionalAccess', _18 => _18.usage]);
377
+ const usage = respUsage ? {
378
+ prompt_tokens: respUsage.input_tokens || 0,
379
+ completion_tokens: respUsage.output_tokens || 0,
380
+ total_tokens: (respUsage.input_tokens || 0) + (respUsage.output_tokens || 0)
381
+ } : void 0;
382
+ emitChunk([{ index: 0, delta: {}, finish_reason: "stop" }], usage);
383
+ safeEnqueue("data: [DONE]\n\n");
384
+ break;
385
+ }
386
+ case "error":
387
+ emitChunk([{
388
+ index: 0,
389
+ delta: { content: `[Error: ${_optionalChain([event, 'access', _19 => _19.error, 'optionalAccess', _20 => _20.message]) || "Unknown error"}]` },
390
+ finish_reason: "stop"
391
+ }]);
392
+ break;
393
+ default:
394
+ break;
395
+ }
396
+ } catch (e3) {
397
+ }
398
+ }
399
+ }
400
+ } catch (e) {
401
+ if (!isClosed) controller.error(e);
402
+ } finally {
403
+ if (!isClosed) {
404
+ try {
405
+ controller.close();
406
+ } catch (e4) {
407
+ }
408
+ }
409
+ reader.releaseLock();
410
+ }
411
+ }
412
+ });
413
+ }
414
+ function convertOpenAIStreamToResponseApi(openaiStream) {
415
+ const decoder = new TextDecoder();
416
+ const encoder = new TextEncoder();
417
+ return new ReadableStream({
418
+ start: async (controller) => {
419
+ const reader = openaiStream.getReader();
420
+ let buffer = "";
421
+ let isClosed = false;
422
+ let accumulatedContent = "";
423
+ let model = "unknown";
424
+ const responseId = `resp_${Date.now()}`;
425
+ const safeEnqueue = (str) => {
426
+ if (!isClosed) {
427
+ try {
428
+ controller.enqueue(encoder.encode(str));
429
+ } catch (e5) {
430
+ isClosed = true;
431
+ }
432
+ }
433
+ };
434
+ const emitEvent = (event) => {
435
+ safeEnqueue(`data: ${JSON.stringify(event)}
436
+
437
+ `);
438
+ };
439
+ emitEvent({
440
+ type: "response.created",
441
+ response: { id: responseId, status: "in_progress" }
442
+ });
443
+ try {
444
+ while (true) {
445
+ const { done, value } = await reader.read();
446
+ if (done) break;
447
+ buffer += decoder.decode(value, { stream: true });
448
+ const lines = buffer.split("\n");
449
+ buffer = lines.pop() || "";
450
+ for (const line of lines) {
451
+ if (isClosed) break;
452
+ if (!line.startsWith("data:")) continue;
453
+ const data = line.slice(5).trim();
454
+ if (data === "[DONE]") continue;
455
+ try {
456
+ const chunk = JSON.parse(data);
457
+ const choice = _optionalChain([chunk, 'access', _21 => _21.choices, 'optionalAccess', _22 => _22[0]]);
458
+ model = chunk.model || model;
459
+ if (!choice) continue;
460
+ if (_optionalChain([choice, 'access', _23 => _23.delta, 'optionalAccess', _24 => _24.content])) {
461
+ accumulatedContent += choice.delta.content;
462
+ emitEvent({ type: "response.output_text.delta", delta: choice.delta.content });
463
+ }
464
+ if (_optionalChain([choice, 'access', _25 => _25.delta, 'optionalAccess', _26 => _26.thinking, 'optionalAccess', _27 => _27.content])) {
465
+ emitEvent({
466
+ type: "response.reasoning_summary_text.delta",
467
+ delta: choice.delta.thinking.content
468
+ });
469
+ }
470
+ if (choice.finish_reason) {
471
+ emitEvent({ type: "response.output_text.done", text: accumulatedContent });
472
+ emitEvent({
473
+ type: "response.completed",
474
+ response: {
475
+ id: responseId,
476
+ status: "completed",
477
+ model,
478
+ output: [
479
+ {
480
+ type: "message",
481
+ role: "assistant",
482
+ content: [{ type: "output_text", text: accumulatedContent }]
483
+ }
484
+ ],
485
+ usage: chunk.usage ? {
486
+ input_tokens: chunk.usage.prompt_tokens || 0,
487
+ output_tokens: chunk.usage.completion_tokens || 0,
488
+ total_tokens: chunk.usage.total_tokens || 0
489
+ } : void 0
490
+ }
491
+ });
492
+ }
493
+ } catch (e6) {
494
+ }
495
+ }
496
+ }
497
+ } catch (e) {
498
+ if (!isClosed) controller.error(e);
499
+ } finally {
500
+ if (!isClosed) {
501
+ try {
502
+ controller.close();
503
+ } catch (e7) {
504
+ }
505
+ }
506
+ reader.releaseLock();
507
+ }
508
+ }
509
+ });
510
+ }
511
+
512
+
513
+
514
+ exports.OpenAIResponseTransformer = OpenAIResponseTransformer;