@marinoscar/platform-api 0.1.0-next.5 → 0.1.0-next.6

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 (241) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ai/core/ai-error.d.ts +15 -158
  3. package/dist/ai/core/ai-error.d.ts.map +1 -1
  4. package/dist/ai/core/ai-error.js +58 -221
  5. package/dist/ai/core/ai-error.js.map +1 -1
  6. package/dist/ai/core/capabilities.d.ts +3 -126
  7. package/dist/ai/core/capabilities.d.ts.map +1 -1
  8. package/dist/ai/core/capabilities.js +13 -109
  9. package/dist/ai/core/capabilities.js.map +1 -1
  10. package/dist/ai/core/conversation.d.ts +2 -15
  11. package/dist/ai/core/conversation.d.ts.map +1 -1
  12. package/dist/ai/core/conversation.js +9 -54
  13. package/dist/ai/core/conversation.js.map +1 -1
  14. package/dist/ai/core/hosted-tools.d.ts +3 -172
  15. package/dist/ai/core/hosted-tools.d.ts.map +1 -1
  16. package/dist/ai/core/hosted-tools.js +20 -286
  17. package/dist/ai/core/hosted-tools.js.map +1 -1
  18. package/dist/ai/core/provider-adapter.interface.d.ts +3 -260
  19. package/dist/ai/core/provider-adapter.interface.d.ts.map +1 -1
  20. package/dist/ai/core/provider-adapter.interface.js +7 -29
  21. package/dist/ai/core/provider-adapter.interface.js.map +1 -1
  22. package/dist/ai/core/structured-output.d.ts +3 -49
  23. package/dist/ai/core/structured-output.d.ts.map +1 -1
  24. package/dist/ai/core/structured-output.js +9 -80
  25. package/dist/ai/core/structured-output.js.map +1 -1
  26. package/dist/ai/core/tools.d.ts +3 -93
  27. package/dist/ai/core/tools.d.ts.map +1 -1
  28. package/dist/ai/core/tools.js +9 -73
  29. package/dist/ai/core/tools.js.map +1 -1
  30. package/dist/ai/core/types/file-inputs.types.d.ts +3 -102
  31. package/dist/ai/core/types/file-inputs.types.d.ts.map +1 -1
  32. package/dist/ai/core/types/file-inputs.types.js +14 -78
  33. package/dist/ai/core/types/file-inputs.types.js.map +1 -1
  34. package/dist/ai/core/types/media.types.d.ts +3 -616
  35. package/dist/ai/core/types/media.types.d.ts.map +1 -1
  36. package/dist/ai/core/types/media.types.js +33 -203
  37. package/dist/ai/core/types/media.types.js.map +1 -1
  38. package/dist/ai/core/types/responses.types.d.ts +3 -619
  39. package/dist/ai/core/types/responses.types.d.ts.map +1 -1
  40. package/dist/ai/core/types/responses.types.js +9 -57
  41. package/dist/ai/core/types/responses.types.js.map +1 -1
  42. package/dist/ai/http/dto/ai-images.dto.d.ts +4 -4
  43. package/dist/ai/index.d.ts +1 -1
  44. package/dist/ai/index.d.ts.map +1 -1
  45. package/dist/ai/index.js +3 -3
  46. package/dist/ai/index.js.map +1 -1
  47. package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts +13 -15
  48. package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts.map +1 -1
  49. package/dist/ai/providers/anthropic/anthropic-client.factory.js +23 -52
  50. package/dist/ai/providers/anthropic/anthropic-client.factory.js.map +1 -1
  51. package/dist/ai/providers/anthropic/anthropic.adapter.d.ts +15 -51
  52. package/dist/ai/providers/anthropic/anthropic.adapter.d.ts.map +1 -1
  53. package/dist/ai/providers/anthropic/anthropic.adapter.js +29 -293
  54. package/dist/ai/providers/anthropic/anthropic.adapter.js.map +1 -1
  55. package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts +10 -14
  56. package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts.map +1 -1
  57. package/dist/ai/providers/azure-openai/azure-openai-client.factory.js +20 -53
  58. package/dist/ai/providers/azure-openai/azure-openai-client.factory.js.map +1 -1
  59. package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts +14 -31
  60. package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts.map +1 -1
  61. package/dist/ai/providers/azure-openai/azure-openai.adapter.js +25 -170
  62. package/dist/ai/providers/azure-openai/azure-openai.adapter.js.map +1 -1
  63. package/dist/ai/providers/gemini/gemini-client.factory.d.ts +13 -18
  64. package/dist/ai/providers/gemini/gemini-client.factory.d.ts.map +1 -1
  65. package/dist/ai/providers/gemini/gemini-client.factory.js +24 -68
  66. package/dist/ai/providers/gemini/gemini-client.factory.js.map +1 -1
  67. package/dist/ai/providers/gemini/gemini.adapter.d.ts +15 -58
  68. package/dist/ai/providers/gemini/gemini.adapter.d.ts.map +1 -1
  69. package/dist/ai/providers/gemini/gemini.adapter.js +29 -348
  70. package/dist/ai/providers/gemini/gemini.adapter.js.map +1 -1
  71. package/dist/ai/providers/openai/openai-client.factory.d.ts +13 -35
  72. package/dist/ai/providers/openai/openai-client.factory.d.ts.map +1 -1
  73. package/dist/ai/providers/openai/openai-client.factory.js +25 -64
  74. package/dist/ai/providers/openai/openai-client.factory.js.map +1 -1
  75. package/dist/ai/providers/openai/openai.adapter.d.ts +15 -48
  76. package/dist/ai/providers/openai/openai.adapter.d.ts.map +1 -1
  77. package/dist/ai/providers/openai/openai.adapter.js +27 -206
  78. package/dist/ai/providers/openai/openai.adapter.js.map +1 -1
  79. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts +11 -11
  80. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts.map +1 -1
  81. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js +18 -41
  82. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js.map +1 -1
  83. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts +14 -32
  84. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts.map +1 -1
  85. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js +25 -149
  86. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js.map +1 -1
  87. package/dist/ai/providers/platform-ai-tracer.d.ts +4 -0
  88. package/dist/ai/providers/platform-ai-tracer.d.ts.map +1 -0
  89. package/dist/ai/providers/platform-ai-tracer.js +20 -0
  90. package/dist/ai/providers/platform-ai-tracer.js.map +1 -0
  91. package/dist/ai/runtime/ai-image-run-request.d.ts +1 -1
  92. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts +28 -5
  93. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts.map +1 -1
  94. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js +54 -9
  95. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js.map +1 -1
  96. package/dist/ai/testing/index.d.ts +1 -1
  97. package/dist/ai/testing/index.d.ts.map +1 -1
  98. package/dist/ai/testing/index.js +2 -1
  99. package/dist/ai/testing/index.js.map +1 -1
  100. package/dist/jobs/rate-limit.error.d.ts +2 -26
  101. package/dist/jobs/rate-limit.error.d.ts.map +1 -1
  102. package/dist/jobs/rate-limit.error.js +4 -52
  103. package/dist/jobs/rate-limit.error.js.map +1 -1
  104. package/dist/storage/config/storage-config.controller.d.ts +1 -1
  105. package/package.json +3 -2
  106. package/dist/ai/providers/anthropic/anthropic-errors.d.ts +0 -16
  107. package/dist/ai/providers/anthropic/anthropic-errors.d.ts.map +0 -1
  108. package/dist/ai/providers/anthropic/anthropic-errors.js +0 -156
  109. package/dist/ai/providers/anthropic/anthropic-errors.js.map +0 -1
  110. package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts +0 -80
  111. package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts.map +0 -1
  112. package/dist/ai/providers/anthropic/anthropic-messages.mapper.js +0 -536
  113. package/dist/ai/providers/anthropic/anthropic-messages.mapper.js.map +0 -1
  114. package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts +0 -49
  115. package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts.map +0 -1
  116. package/dist/ai/providers/anthropic/anthropic-model-catalog.js +0 -198
  117. package/dist/ai/providers/anthropic/anthropic-model-catalog.js.map +0 -1
  118. package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts +0 -35
  119. package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts.map +0 -1
  120. package/dist/ai/providers/anthropic/anthropic-stream.mapper.js +0 -203
  121. package/dist/ai/providers/anthropic/anthropic-stream.mapper.js.map +0 -1
  122. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts +0 -18
  123. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts.map +0 -1
  124. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js +0 -120
  125. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js.map +0 -1
  126. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts +0 -59
  127. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts.map +0 -1
  128. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js +0 -206
  129. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js.map +0 -1
  130. package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts +0 -23
  131. package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts.map +0 -1
  132. package/dist/ai/providers/azure-openai/azure-openai-settings.js +0 -54
  133. package/dist/ai/providers/azure-openai/azure-openai-settings.js.map +0 -1
  134. package/dist/ai/providers/gemini/gemini-content.mapper.d.ts +0 -98
  135. package/dist/ai/providers/gemini/gemini-content.mapper.d.ts.map +0 -1
  136. package/dist/ai/providers/gemini/gemini-content.mapper.js +0 -665
  137. package/dist/ai/providers/gemini/gemini-content.mapper.js.map +0 -1
  138. package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts +0 -13
  139. package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts.map +0 -1
  140. package/dist/ai/providers/gemini/gemini-embeddings.mapper.js +0 -78
  141. package/dist/ai/providers/gemini/gemini-embeddings.mapper.js.map +0 -1
  142. package/dist/ai/providers/gemini/gemini-errors.d.ts +0 -32
  143. package/dist/ai/providers/gemini/gemini-errors.d.ts.map +0 -1
  144. package/dist/ai/providers/gemini/gemini-errors.js +0 -191
  145. package/dist/ai/providers/gemini/gemini-errors.js.map +0 -1
  146. package/dist/ai/providers/gemini/gemini-model-catalog.d.ts +0 -45
  147. package/dist/ai/providers/gemini/gemini-model-catalog.d.ts.map +0 -1
  148. package/dist/ai/providers/gemini/gemini-model-catalog.js +0 -264
  149. package/dist/ai/providers/gemini/gemini-model-catalog.js.map +0 -1
  150. package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts +0 -31
  151. package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts.map +0 -1
  152. package/dist/ai/providers/gemini/gemini-stream.mapper.js +0 -118
  153. package/dist/ai/providers/gemini/gemini-stream.mapper.js.map +0 -1
  154. package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts +0 -80
  155. package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts.map +0 -1
  156. package/dist/ai/providers/gemini/testing/gemini-fixtures.js +0 -118
  157. package/dist/ai/providers/gemini/testing/gemini-fixtures.js.map +0 -1
  158. package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts +0 -82
  159. package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts.map +0 -1
  160. package/dist/ai/providers/gemini/testing/gemini-mock-transport.js +0 -342
  161. package/dist/ai/providers/gemini/testing/gemini-mock-transport.js.map +0 -1
  162. package/dist/ai/providers/openai/openai-audio.mapper.d.ts +0 -42
  163. package/dist/ai/providers/openai/openai-audio.mapper.d.ts.map +0 -1
  164. package/dist/ai/providers/openai/openai-audio.mapper.js +0 -266
  165. package/dist/ai/providers/openai/openai-audio.mapper.js.map +0 -1
  166. package/dist/ai/providers/openai/openai-call-telemetry.d.ts +0 -25
  167. package/dist/ai/providers/openai/openai-call-telemetry.d.ts.map +0 -1
  168. package/dist/ai/providers/openai/openai-call-telemetry.js +0 -93
  169. package/dist/ai/providers/openai/openai-call-telemetry.js.map +0 -1
  170. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts +0 -41
  171. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts.map +0 -1
  172. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js +0 -173
  173. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js.map +0 -1
  174. package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts +0 -33
  175. package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts.map +0 -1
  176. package/dist/ai/providers/openai/openai-chat-completions.engine.js +0 -165
  177. package/dist/ai/providers/openai/openai-chat-completions.engine.js.map +0 -1
  178. package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts +0 -42
  179. package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts.map +0 -1
  180. package/dist/ai/providers/openai/openai-chat-completions.mapper.js +0 -304
  181. package/dist/ai/providers/openai/openai-chat-completions.mapper.js.map +0 -1
  182. package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts +0 -25
  183. package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts.map +0 -1
  184. package/dist/ai/providers/openai/openai-embeddings.mapper.js +0 -81
  185. package/dist/ai/providers/openai/openai-embeddings.mapper.js.map +0 -1
  186. package/dist/ai/providers/openai/openai-errors.d.ts +0 -45
  187. package/dist/ai/providers/openai/openai-errors.d.ts.map +0 -1
  188. package/dist/ai/providers/openai/openai-errors.js +0 -247
  189. package/dist/ai/providers/openai/openai-errors.js.map +0 -1
  190. package/dist/ai/providers/openai/openai-family-guards.d.ts +0 -4
  191. package/dist/ai/providers/openai/openai-family-guards.d.ts.map +0 -1
  192. package/dist/ai/providers/openai/openai-family-guards.js +0 -19
  193. package/dist/ai/providers/openai/openai-family-guards.js.map +0 -1
  194. package/dist/ai/providers/openai/openai-images.mapper.d.ts +0 -23
  195. package/dist/ai/providers/openai/openai-images.mapper.d.ts.map +0 -1
  196. package/dist/ai/providers/openai/openai-images.mapper.js +0 -164
  197. package/dist/ai/providers/openai/openai-images.mapper.js.map +0 -1
  198. package/dist/ai/providers/openai/openai-model-catalog.d.ts +0 -36
  199. package/dist/ai/providers/openai/openai-model-catalog.d.ts.map +0 -1
  200. package/dist/ai/providers/openai/openai-model-catalog.js +0 -209
  201. package/dist/ai/providers/openai/openai-model-catalog.js.map +0 -1
  202. package/dist/ai/providers/openai/openai-realtime.mapper.d.ts +0 -18
  203. package/dist/ai/providers/openai/openai-realtime.mapper.d.ts.map +0 -1
  204. package/dist/ai/providers/openai/openai-realtime.mapper.js +0 -159
  205. package/dist/ai/providers/openai/openai-realtime.mapper.js.map +0 -1
  206. package/dist/ai/providers/openai/openai-redirect-guard.d.ts +0 -9
  207. package/dist/ai/providers/openai/openai-redirect-guard.d.ts.map +0 -1
  208. package/dist/ai/providers/openai/openai-redirect-guard.js +0 -61
  209. package/dist/ai/providers/openai/openai-redirect-guard.js.map +0 -1
  210. package/dist/ai/providers/openai/openai-responses.engine.d.ts +0 -50
  211. package/dist/ai/providers/openai/openai-responses.engine.d.ts.map +0 -1
  212. package/dist/ai/providers/openai/openai-responses.engine.js +0 -206
  213. package/dist/ai/providers/openai/openai-responses.engine.js.map +0 -1
  214. package/dist/ai/providers/openai/openai-responses.mapper.d.ts +0 -64
  215. package/dist/ai/providers/openai/openai-responses.mapper.d.ts.map +0 -1
  216. package/dist/ai/providers/openai/openai-responses.mapper.js +0 -580
  217. package/dist/ai/providers/openai/openai-responses.mapper.js.map +0 -1
  218. package/dist/ai/providers/openai/openai-stream.mapper.d.ts +0 -28
  219. package/dist/ai/providers/openai/openai-stream.mapper.d.ts.map +0 -1
  220. package/dist/ai/providers/openai/openai-stream.mapper.js +0 -139
  221. package/dist/ai/providers/openai/openai-stream.mapper.js.map +0 -1
  222. package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts +0 -24
  223. package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts.map +0 -1
  224. package/dist/ai/providers/openai/testing/chat-completions-fixtures.js +0 -72
  225. package/dist/ai/providers/openai/testing/chat-completions-fixtures.js.map +0 -1
  226. package/dist/ai/providers/openai/testing/conformance-responders.d.ts +0 -7
  227. package/dist/ai/providers/openai/testing/conformance-responders.d.ts.map +0 -1
  228. package/dist/ai/providers/openai/testing/conformance-responders.js +0 -64
  229. package/dist/ai/providers/openai/testing/conformance-responders.js.map +0 -1
  230. package/dist/ai/providers/openai/testing/openai-fixtures.d.ts +0 -52
  231. package/dist/ai/providers/openai/testing/openai-fixtures.d.ts.map +0 -1
  232. package/dist/ai/providers/openai/testing/openai-fixtures.js +0 -208
  233. package/dist/ai/providers/openai/testing/openai-fixtures.js.map +0 -1
  234. package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts +0 -242
  235. package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts.map +0 -1
  236. package/dist/ai/providers/openai/testing/openai-mock-transport.js +0 -523
  237. package/dist/ai/providers/openai/testing/openai-mock-transport.js.map +0 -1
  238. package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts +0 -13
  239. package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts.map +0 -1
  240. package/dist/ai/providers/openai-compatible/openai-compatible-settings.js +0 -29
  241. package/dist/ai/providers/openai-compatible/openai-compatible-settings.js.map +0 -1
@@ -1,33 +0,0 @@
1
- import type { OpenAI } from 'openai';
2
- import type { AiCallContext } from '../../core/provider-adapter.interface';
3
- import type { AiResponse, AiResponseRequest, AiStreamEvent } from '../../core/types/responses.types';
4
- import type { OpenAiCallTelemetry } from './openai-call-telemetry';
5
- import { type ChatCompletionsTokenParameter } from './openai-chat-completions.mapper';
6
- import { type OpenAiFamily } from './openai-errors';
7
- export interface OpenAiChatCompletionsEngineDeps {
8
- family: OpenAiFamily;
9
- telemetry: OpenAiCallTelemetry;
10
- /** The SDK client for one call. */
11
- client(ctx: AiCallContext): OpenAI;
12
- /** Which body field carries the output-token limit. */
13
- tokenParameter: ChatCompletionsTokenParameter;
14
- }
15
- export interface OpenAiChatCompletionsCallOptions {
16
- /** The `model` to send when it differs from `req.model` (an Azure deployment). */
17
- wireModel?: string;
18
- }
19
- export declare class OpenAiChatCompletionsEngine {
20
- private readonly deps;
21
- constructor(deps: OpenAiChatCompletionsEngineDeps);
22
- private get providerId();
23
- private body;
24
- create(req: AiResponseRequest, ctx: AiCallContext, opts?: OpenAiChatCompletionsCallOptions): Promise<AiResponse>;
25
- /** Streams one response — see the file header for the contract. */
26
- stream(req: AiResponseRequest, ctx: AiCallContext, opts?: OpenAiChatCompletionsCallOptions): AsyncGenerator<AiStreamEvent>;
27
- /**
28
- * What each storage-object part becomes on the wire: its presigned URL, or
29
- * its bytes as a `data:` URL. `undefined` when the request names none.
30
- */
31
- private deliverStorageInputs;
32
- }
33
- //# sourceMappingURL=openai-chat-completions.engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-chat-completions.engine.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/openai/openai-chat-completions.engine.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACrG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EACL,KAAK,6BAA6B,EAGnC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,mCAAmC;IACnC,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC;IACnC,uDAAuD;IACvD,cAAc,EAAE,6BAA6B,CAAC;CAC/C;AAED,MAAM,WAAW,gCAAgC;IAC/C,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,+BAA+B;IAElE,OAAO,KAAK,UAAU,GAErB;YAEa,IAAI;IAUlB,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,GAAE,gCAAqC,GAAG,OAAO,CAAC,UAAU,CAAC;IAapH,mEAAmE;IAC5D,MAAM,CACX,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE,gCAAqC,GAC1C,cAAc,CAAC,aAAa,CAAC;IAsFhC;;;OAGG;YACW,oBAAoB;CAqCnC"}
@@ -1,165 +0,0 @@
1
- "use strict";
2
- // =============================================================================
3
- // The Chat Completions call path of the OpenAI family (issue #448, epic #421)
4
- // =============================================================================
5
- //
6
- // `create` and `stream` against `POST /chat/completions`, the counterpart of
7
- // `openai-responses.engine.ts` for servers (and Azure deployments) that do not
8
- // serve the Responses API. Same contracts, same telemetry:
9
- //
10
- // - every call runs in one `ai.provider.call` span (operations
11
- // `chat.completions.create` / `chat.completions.stream`);
12
- // - a failure BEFORE the first chunk is thrown as an `AiError`; once the
13
- // stream has started, a failure ends it with exactly one `error` event;
14
- // - `ctx.signal` aborts the request, and a consumer that stops iterating
15
- // aborts it too.
16
- //
17
- // Streaming asks for `stream_options: { include_usage: true }` so the final
18
- // (choice-less) chunk carries token usage — without it every streamed call
19
- // would record zero tokens.
20
- //
21
- // STORAGE-OBJECT INPUTS (#441). Chat Completions has no file store worth
22
- // uploading to for a call, so only the `presigned_url` and `inline`
23
- // strategies are delivered (an image as its URL or a `data:` URL, a file as
24
- // inline `file_data`); an `upload` strategy is refused. The adapters using
25
- // this engine declare their `fileInputStrategy` accordingly.
26
- // =============================================================================
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.OpenAiChatCompletionsEngine = void 0;
29
- const ai_error_1 = require("../../core/ai-error");
30
- const openai_chat_completions_stream_mapper_1 = require("./openai-chat-completions-stream.mapper");
31
- const openai_chat_completions_mapper_1 = require("./openai-chat-completions.mapper");
32
- const openai_errors_1 = require("./openai-errors");
33
- const openai_responses_mapper_1 = require("./openai-responses.mapper");
34
- class OpenAiChatCompletionsEngine {
35
- deps;
36
- constructor(deps) {
37
- this.deps = deps;
38
- }
39
- get providerId() {
40
- return this.deps.family.providerId;
41
- }
42
- async body(req, ctx, opts) {
43
- const body = (0, openai_chat_completions_mapper_1.toChatCompletionsRequest)(req, {
44
- family: this.deps.family,
45
- storage: await this.deliverStorageInputs(req, ctx),
46
- tokenParameter: this.deps.tokenParameter,
47
- });
48
- return opts.wireModel ? { ...body, model: opts.wireModel } : body;
49
- }
50
- create(req, ctx, opts = {}) {
51
- return this.deps.telemetry.call('chat.completions.create', req.model, ctx, async () => {
52
- const body = await this.body(req, ctx, opts);
53
- const { data, request_id } = await this.deps
54
- .client(ctx)
55
- .chat.completions.create({ ...body, stream: false }, { signal: ctx.signal })
56
- .withResponse();
57
- return (0, openai_chat_completions_mapper_1.fromChatCompletion)(data, { request: req, providerRequestId: request_id, family: this.deps.family });
58
- });
59
- }
60
- /** Streams one response — see the file header for the contract. */
61
- async *stream(req, ctx, opts = {}) {
62
- const { telemetry, family } = this.deps;
63
- const operation = 'chat.completions.stream';
64
- const started = Date.now();
65
- const span = telemetry.startSpan(operation, req.model);
66
- let status = 'ok';
67
- let providerRequestId = null;
68
- let sdkStream;
69
- let terminated = false;
70
- try {
71
- const body = await this.body(req, ctx, opts);
72
- try {
73
- const { data, request_id } = await this.deps
74
- .client(ctx)
75
- .chat.completions.create({ ...body, stream: true, stream_options: { include_usage: true } }, { signal: ctx.signal })
76
- .withResponse();
77
- sdkStream = data;
78
- providerRequestId = request_id;
79
- }
80
- catch (err) {
81
- throw (0, openai_errors_1.mapOpenAiError)(err, family);
82
- }
83
- const mapper = new openai_chat_completions_stream_mapper_1.ChatCompletionsStreamMapper({ request: req, providerRequestId, family });
84
- try {
85
- for await (const chunk of sdkStream) {
86
- for (const out of mapper.map(chunk))
87
- yield out;
88
- }
89
- for (const out of mapper.finish()) {
90
- if (out.type === 'error')
91
- status = out.code;
92
- yield out;
93
- }
94
- }
95
- catch (err) {
96
- const mapped = (0, openai_errors_1.mapOpenAiError)(err, family);
97
- if (!mapper.started)
98
- throw mapped;
99
- status = mapped.code;
100
- yield* mapper.fail(mapped);
101
- }
102
- terminated = mapper.terminated;
103
- if (!terminated) {
104
- if (ctx.signal?.aborted) {
105
- throw new ai_error_1.AiError('AI_PROVIDER_UNAVAILABLE', 'The AI request was cancelled.', {
106
- details: { provider: this.providerId, aborted: true },
107
- });
108
- }
109
- const truncated = new ai_error_1.AiError('AI_PROVIDER_UNAVAILABLE', `The ${family.label} stream ended before the response completed.`, { details: { provider: this.providerId } });
110
- if (!mapper.started)
111
- throw truncated;
112
- status = truncated.code;
113
- terminated = true;
114
- yield* mapper.fail(truncated);
115
- }
116
- }
117
- catch (err) {
118
- const mapped = (0, openai_errors_1.mapOpenAiError)(err, family);
119
- status = mapped.code;
120
- throw mapped;
121
- }
122
- finally {
123
- // A consumer that stopped early leaves the HTTP stream open: close it.
124
- if (!terminated)
125
- sdkStream?.controller.abort();
126
- telemetry.endSpan(span, status);
127
- telemetry.logCall(operation, req.model, ctx, status, started, providerRequestId);
128
- }
129
- }
130
- /**
131
- * What each storage-object part becomes on the wire: its presigned URL, or
132
- * its bytes as a `data:` URL. `undefined` when the request names none.
133
- */
134
- async deliverStorageInputs(req, ctx) {
135
- const ids = (0, openai_responses_mapper_1.storageObjectIdsOf)(req);
136
- if (ids.length === 0)
137
- return undefined;
138
- const deliveries = new Map();
139
- for (const id of ids) {
140
- const input = ctx.storageInputs?.get(id);
141
- if (!input) {
142
- throw new ai_error_1.AiError('AI_INVALID_REQUEST', 'A storage-object input was not resolved by the runtime.', {
143
- details: { provider: this.providerId },
144
- });
145
- }
146
- const base = { modality: input.modality, filename: input.filename };
147
- if (input.strategy === 'presigned_url' && input.url) {
148
- deliveries.set(id, { ...base, url: input.url });
149
- }
150
- else if (input.strategy === 'inline' && input.read) {
151
- const payload = await input.read();
152
- const data = Buffer.from(payload.data).toString('base64');
153
- deliveries.set(id, { ...base, url: `data:${input.mimeType};base64,${data}` });
154
- }
155
- else {
156
- throw new ai_error_1.AiError('AI_INVALID_REQUEST', 'A storage-object input was not prepared for delivery.', {
157
- details: { provider: this.providerId, strategy: input.strategy },
158
- });
159
- }
160
- }
161
- return deliveries;
162
- }
163
- }
164
- exports.OpenAiChatCompletionsEngine = OpenAiChatCompletionsEngine;
165
- //# sourceMappingURL=openai-chat-completions.engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-chat-completions.engine.js","sourceRoot":"","sources":["../../../../src/ai/providers/openai/openai-chat-completions.engine.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import type { ChatCompletion, ChatCompletionCreateParamsBase } from 'openai/resources/chat/completions/completions';
2
- import type { AiResponse, AiResponseRequest } from '../../core/types/responses.types';
3
- import { type OpenAiFamily } from './openai-errors';
4
- import type { OpenAiStorageDeliveries } from './openai-responses.mapper';
5
- /** The request body minus `stream`/`stream_options`, which the engine sets. */
6
- export type ChatCompletionsRequestBody = Omit<ChatCompletionCreateParamsBase, 'stream' | 'stream_options'>;
7
- /**
8
- * Which body field carries the output-token limit. `max_completion_tokens` is
9
- * OpenAI's (and Azure's) current name and the only one reasoning models
10
- * accept; `max_tokens` is the one every OpenAI-compatible server understands.
11
- */
12
- export type ChatCompletionsTokenParameter = 'max_tokens' | 'max_completion_tokens';
13
- export interface ToChatCompletionsOptions {
14
- family?: OpenAiFamily;
15
- storage?: OpenAiStorageDeliveries;
16
- tokenParameter?: ChatCompletionsTokenParameter;
17
- }
18
- /**
19
- * Builds the Chat Completions body for `req`. `providerOptions[<provider id>]`
20
- * is shallow-merged LAST — the escape hatch for server-specific fields
21
- * (`top_p`, `seed`, Ollama's `keep_alive`, ...) — except `stream` and
22
- * `stream_options`, which belong to the engine.
23
- *
24
- * Throws `AiError` (never an SDK error): see the file header.
25
- */
26
- export declare function toChatCompletionsRequest(req: AiResponseRequest, opts?: ToChatCompletionsOptions): ChatCompletionsRequestBody;
27
- export interface FromChatCompletionOptions {
28
- /** The originating request; its `structuredOutput` drives `parsed`. */
29
- request: AiResponseRequest;
30
- providerRequestId?: string | null;
31
- family?: OpenAiFamily;
32
- }
33
- /**
34
- * Maps a finished `ChatCompletion` to an `AiResponse`. Only the first choice
35
- * is read (the request never asks for more). A completion with no choice at
36
- * all is a provider fault. When structured output was requested and the turn
37
- * finished (no pending tool call), the text is validated with
38
- * `parseStructured` — invalid JSON or a schema mismatch throws
39
- * `AI_STRUCTURED_OUTPUT_INVALID`.
40
- */
41
- export declare function fromChatCompletion(completion: ChatCompletion, opts: FromChatCompletionOptions): AiResponse;
42
- //# sourceMappingURL=openai-chat-completions.mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-chat-completions.mapper.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/openai/openai-chat-completions.mapper.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EACV,cAAc,EAGd,8BAA8B,EAK/B,MAAM,+CAA+C,CAAC;AAIvD,OAAO,KAAK,EAKV,UAAU,EACV,iBAAiB,EAIlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,+EAA+E;AAC/E,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;AAE3G;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,GAAG,YAAY,GAAG,uBAAuB,CAAC;AAEnF,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,cAAc,CAAC,EAAE,6BAA6B,CAAC;CAChD;AA6LD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,iBAAiB,EACtB,IAAI,GAAE,wBAA6B,GAClC,0BAA0B,CAgD5B;AAyBD,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,yBAAyB,GAAG,UAAU,CAgD1G"}
@@ -1,304 +0,0 @@
1
- "use strict";
2
- // =============================================================================
3
- // Our Responses types <-> OpenAI Chat Completions (issue #448, epic #421)
4
- // =============================================================================
5
- //
6
- // The graceful-degradation path of the OpenAI wire family. Most
7
- // OpenAI-compatible servers (Ollama, vLLM, LM Studio) and every Azure OpenAI
8
- // api-version serve `POST /chat/completions`, while only some serve the
9
- // Responses API. Pure functions, no I/O — `toChatCompletionsRequest` builds
10
- // the body, `fromChatCompletion` reads the answer, and the stream mapper
11
- // (`openai-chat-completions-stream.mapper.ts`) ends by building a synthetic
12
- // `ChatCompletion` and handing it to `fromChatCompletion`, so a streamed and
13
- // a non-streamed call cannot disagree about what a response means.
14
- //
15
- // MAPPING
16
- // instructions -> a leading `system` message
17
- // message user/system/developer -> `user` / `system` (developer is sent as
18
- // system: compatible servers rarely know it)
19
- // message assistant -> `assistant` (text only)
20
- // function_call (replayed) -> `tool_calls` on the preceding assistant turn
21
- // function_call_output -> a `tool` message
22
- // reasoning (replayed) -> dropped: Chat Completions has nowhere to put it
23
- // image part -> `image_url` (URL, presigned URL or data: URL)
24
- // file part -> `file` with `file_data` (inline data: URL) or
25
- // `file_id`; a remote file URL is refused
26
- // function tools -> `tools[].function` (JSON Schema from Zod)
27
- // structuredOutput -> `response_format: { type: 'json_schema' }`,
28
- // then `parseStructured` on the text
29
- // maxOutputTokens -> `max_tokens` or `max_completion_tokens`, as
30
- // the adapter declares (`tokenParameter`)
31
- //
32
- // REFUSED (AI_CAPABILITY_UNSUPPORTED):
33
- // - a reasoning EFFORT: Chat Completions has no reasoning summaries, and the
34
- // compatible servers this path exists for have no effort knob (a summary
35
- // request alone is a harmless no-op, as for a non-reasoning OpenAI model);
36
- // - `previousResponseId`: the API is stateless — send the history instead;
37
- // - any hosted tool (#442): Chat Completions runs function tools only;
38
- // - a remote file URL: only inline bytes or an uploaded file id are accepted.
39
- //
40
- // `metadata` is not forwarded: OpenAI only accepts it on stored completions,
41
- // and compatible servers reject unknown fields inconsistently.
42
- // =============================================================================
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.toChatCompletionsRequest = toChatCompletionsRequest;
45
- exports.fromChatCompletion = fromChatCompletion;
46
- const node_crypto_1 = require("node:crypto");
47
- const ai_error_1 = require("../../core/ai-error");
48
- const structured_output_1 = require("../../core/structured-output");
49
- const openai_errors_1 = require("./openai-errors");
50
- function unsupported(family, message, details) {
51
- return new ai_error_1.AiError('AI_CAPABILITY_UNSUPPORTED', message, { details: { provider: family.providerId, ...details } });
52
- }
53
- function invalid(family, message, details = {}) {
54
- return new ai_error_1.AiError('AI_INVALID_REQUEST', message, { details: { provider: family.providerId, ...details } });
55
- }
56
- // ---- request ----------------------------------------------------------------
57
- function toImagePart(url, detail) {
58
- return { type: 'image_url', image_url: { url, detail: detail ?? 'auto' } };
59
- }
60
- function toFilePart(family, source, filename) {
61
- if (source.fileId) {
62
- return { type: 'file', file: { file_id: source.fileId } };
63
- }
64
- if (source.url?.startsWith('data:')) {
65
- return { type: 'file', file: { file_data: source.url, filename: filename ?? 'file' } };
66
- }
67
- throw unsupported(family, 'Chat Completions accepts file inputs only as inline data or an uploaded file id.', {
68
- part: 'file',
69
- });
70
- }
71
- function toContentPart(part, family, storage) {
72
- if (part.type === 'text') {
73
- return { type: 'text', text: part.text };
74
- }
75
- if (part.url) {
76
- return part.type === 'image' ? toImagePart(part.url, part.detail) : toFilePart(family, { url: part.url }, part.filename);
77
- }
78
- if (!part.storageObjectId) {
79
- throw invalid(family, `An ${part.type} part needs a url or a storageObjectId.`, { part: part.type });
80
- }
81
- const delivered = storage?.get(part.storageObjectId);
82
- if (!delivered || (!delivered.url && !delivered.fileId)) {
83
- throw invalid(family, 'A storage-object input was not resolved by the runtime.', { part: part.type });
84
- }
85
- // By the stored object's modality, not the part's type (#441).
86
- if (delivered.modality === 'image') {
87
- if (!delivered.url) {
88
- throw unsupported(family, 'Chat Completions accepts images only by URL.', { part: part.type });
89
- }
90
- return toImagePart(delivered.url, part.type === 'image' ? part.detail : undefined);
91
- }
92
- return toFilePart(family, delivered, (part.type === 'file' ? part.filename : undefined) ?? delivered.filename);
93
- }
94
- function textOnly(family, content, role) {
95
- if (content.some((part) => part.type !== 'text')) {
96
- throw invalid(family, `A ${role} message may contain only text parts.`, { role });
97
- }
98
- return content.map((part) => (part.type === 'text' ? part.text : '')).join('');
99
- }
100
- function toMessages(req, family, storage) {
101
- const messages = [];
102
- if (req.instructions !== undefined) {
103
- messages.push({ role: 'system', content: req.instructions });
104
- }
105
- if (typeof req.input === 'string') {
106
- messages.push({ role: 'user', content: req.input });
107
- return messages;
108
- }
109
- for (const item of req.input) {
110
- appendItem(messages, item, family, storage);
111
- }
112
- return messages;
113
- }
114
- function appendItem(messages, item, family, storage) {
115
- switch (item.type) {
116
- case 'reasoning':
117
- // Chat Completions has no reasoning items to replay.
118
- return;
119
- case 'function_call_output':
120
- messages.push({ role: 'tool', tool_call_id: item.callId, content: item.output });
121
- return;
122
- case 'function_call': {
123
- // A replayed call belongs to the assistant turn that made it: the one
124
- // just before it when that turn is an assistant message, else a new one.
125
- const call = {
126
- id: item.callId,
127
- type: 'function',
128
- function: { name: item.name, arguments: item.arguments },
129
- };
130
- const last = messages[messages.length - 1];
131
- if (last?.role === 'assistant') {
132
- last.tool_calls = [...(last.tool_calls ?? []), call];
133
- }
134
- else {
135
- const assistant = { role: 'assistant', content: null, tool_calls: [call] };
136
- messages.push(assistant);
137
- }
138
- return;
139
- }
140
- case 'message':
141
- break;
142
- }
143
- switch (item.role) {
144
- case 'assistant':
145
- messages.push({ role: 'assistant', content: textOnly(family, item.content, 'assistant') });
146
- return;
147
- case 'system':
148
- case 'developer':
149
- messages.push({ role: 'system', content: textOnly(family, item.content, item.role) });
150
- return;
151
- case 'user': {
152
- // Text-only turns travel as a plain string — the one shape every
153
- // compatible server accepts.
154
- const plain = item.content.every((part) => part.type === 'text');
155
- messages.push({
156
- role: 'user',
157
- content: plain
158
- ? item.content.map((part) => (part.type === 'text' ? part.text : '')).join('')
159
- : item.content.map((part) => toContentPart(part, family, storage)),
160
- });
161
- return;
162
- }
163
- }
164
- }
165
- function toTool(tool, family) {
166
- if (tool.type !== 'function') {
167
- throw unsupported(family, `Hosted tool "${tool.type}" is not supported over Chat Completions.`, {
168
- tool: tool.type,
169
- capability: 'hosted_tools',
170
- });
171
- }
172
- return {
173
- type: 'function',
174
- function: {
175
- name: tool.name,
176
- description: tool.description,
177
- parameters: (0, structured_output_1.toJsonSchema)(tool.parameters),
178
- strict: tool.strict ?? true,
179
- },
180
- };
181
- }
182
- function toToolChoice(choice) {
183
- return typeof choice === 'string' ? choice : { type: 'function', function: { name: choice.name } };
184
- }
185
- /**
186
- * Builds the Chat Completions body for `req`. `providerOptions[<provider id>]`
187
- * is shallow-merged LAST — the escape hatch for server-specific fields
188
- * (`top_p`, `seed`, Ollama's `keep_alive`, ...) — except `stream` and
189
- * `stream_options`, which belong to the engine.
190
- *
191
- * Throws `AiError` (never an SDK error): see the file header.
192
- */
193
- function toChatCompletionsRequest(req, opts = {}) {
194
- const family = opts.family ?? openai_errors_1.OPENAI_FAMILY;
195
- if (req.previousResponseId !== undefined) {
196
- throw unsupported(family, 'Chat Completions stores no responses; send the conversation as input instead.', {
197
- capability: 'previous_response_id',
198
- });
199
- }
200
- if (req.reasoning?.effort !== undefined) {
201
- throw unsupported(family, `Model "${req.model}" does not support reasoning effort over Chat Completions.`, {
202
- model: req.model,
203
- capability: 'reasoning',
204
- });
205
- }
206
- const body = {
207
- model: req.model,
208
- messages: toMessages(req, family, opts.storage),
209
- };
210
- if (req.tools && req.tools.length > 0)
211
- body.tools = req.tools.map((tool) => toTool(tool, family));
212
- if (req.toolChoice !== undefined)
213
- body.tool_choice = toToolChoice(req.toolChoice);
214
- if (req.structuredOutput) {
215
- body.response_format = {
216
- type: 'json_schema',
217
- json_schema: {
218
- name: req.structuredOutput.name,
219
- schema: (0, structured_output_1.toJsonSchema)(req.structuredOutput.schema),
220
- strict: req.structuredOutput.strict ?? true,
221
- },
222
- };
223
- }
224
- if (req.maxOutputTokens !== undefined) {
225
- body[opts.tokenParameter ?? 'max_completion_tokens'] = req.maxOutputTokens;
226
- }
227
- if (req.temperature !== undefined)
228
- body.temperature = req.temperature;
229
- const { stream: _stream, stream_options: _streamOptions, ...escapeHatch } = (req.providerOptions?.[family.providerId] ?? {});
230
- return { ...body, ...escapeHatch };
231
- }
232
- // ---- response ---------------------------------------------------------------
233
- function finishReasonOf(raw, output, refused) {
234
- if (refused || raw === 'content_filter')
235
- return 'content_filter';
236
- if (output.some((item) => item.type === 'function_call'))
237
- return 'tool_calls';
238
- if (raw === 'length')
239
- return 'length';
240
- return 'stop';
241
- }
242
- function usageOf(usage) {
243
- if (!usage)
244
- return {};
245
- const out = { inputTokens: usage.prompt_tokens, outputTokens: usage.completion_tokens };
246
- const reasoning = usage.completion_tokens_details?.reasoning_tokens;
247
- const cached = usage.prompt_tokens_details?.cached_tokens;
248
- if (typeof reasoning === 'number')
249
- out.reasoningTokens = reasoning;
250
- if (typeof cached === 'number')
251
- out.cachedInputTokens = cached;
252
- return out;
253
- }
254
- /**
255
- * Maps a finished `ChatCompletion` to an `AiResponse`. Only the first choice
256
- * is read (the request never asks for more). A completion with no choice at
257
- * all is a provider fault. When structured output was requested and the turn
258
- * finished (no pending tool call), the text is validated with
259
- * `parseStructured` — invalid JSON or a schema mismatch throws
260
- * `AI_STRUCTURED_OUTPUT_INVALID`.
261
- */
262
- function fromChatCompletion(completion, opts) {
263
- const family = opts.family ?? openai_errors_1.OPENAI_FAMILY;
264
- const providerRequestId = opts.providerRequestId ?? undefined;
265
- const choice = completion.choices?.[0];
266
- if (!choice) {
267
- throw new ai_error_1.AiError('AI_PROVIDER_UNAVAILABLE', `${family.label} returned a completion with no choices.`, {
268
- details: { provider: family.providerId, ...(providerRequestId ? { providerRequestId } : {}) },
269
- });
270
- }
271
- const output = [];
272
- const text = typeof choice.message?.content === 'string' ? choice.message.content : '';
273
- if (text.length > 0)
274
- output.push({ type: 'message', text });
275
- for (const call of choice.message?.tool_calls ?? []) {
276
- if (call.type !== 'function')
277
- continue;
278
- output.push({
279
- type: 'function_call',
280
- callId: call.id,
281
- name: call.function.name,
282
- arguments: call.function.arguments ?? '',
283
- });
284
- }
285
- const refused = typeof choice.message?.refusal === 'string' && choice.message.refusal.length > 0;
286
- const finishReason = finishReasonOf(choice.finish_reason, output, refused);
287
- const result = {
288
- // Some compatible servers omit the id; the neutral contract needs one.
289
- id: completion.id || `chatcmpl-${(0, node_crypto_1.randomUUID)()}`,
290
- provider: family.providerId,
291
- model: completion.model || opts.request.model,
292
- output,
293
- outputText: text,
294
- usage: usageOf(completion.usage),
295
- finishReason,
296
- };
297
- if (providerRequestId)
298
- result.providerRequestId = providerRequestId;
299
- if (opts.request.structuredOutput && finishReason !== 'tool_calls') {
300
- result.parsed = (0, structured_output_1.parseStructured)(opts.request.structuredOutput.schema, text);
301
- }
302
- return result;
303
- }
304
- //# sourceMappingURL=openai-chat-completions.mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-chat-completions.mapper.js","sourceRoot":"","sources":["../../../../src/ai/providers/openai/openai-chat-completions.mapper.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { CreateEmbeddingResponse, EmbeddingCreateParams } from 'openai/resources/embeddings';
2
- import type { AiEmbeddingRequest, AiEmbeddingResult } from '../../core/types/media.types';
3
- import { type OpenAiFamily } from './openai-errors';
4
- /** Whether OpenAI model `modelId` accepts the `dimensions` parameter. */
5
- export declare function openAiEmbeddingSupportsDimensions(modelId: string): boolean;
6
- export type OpenAiEmbeddingBody = EmbeddingCreateParams & {
7
- encoding_format: 'float';
8
- };
9
- /** The `/v1/embeddings` body for `req`. `providerOptions.openai` merges first; the port's own fields win. */
10
- export declare function toOpenAiEmbeddingRequest(req: AiEmbeddingRequest, family?: OpenAiFamily): OpenAiEmbeddingBody;
11
- export interface FromOpenAiEmbeddingOptions {
12
- request: AiEmbeddingRequest;
13
- providerRequestId?: string | null;
14
- /** Which OpenAI-family provider answered (#448); OpenAI by default. */
15
- family?: OpenAiFamily;
16
- }
17
- /**
18
- * The neutral result. Vectors are ordered by OpenAI's `index` (never trusted
19
- * to already be in order), and the answer must hold exactly one vector per
20
- * input, all the same length — anything else is a provider fault
21
- * (`AI_PROVIDER_UNAVAILABLE`), not something to hand a caller who will store
22
- * it next to a row.
23
- */
24
- export declare function fromOpenAiEmbeddingResponse(data: CreateEmbeddingResponse, opts: FromOpenAiEmbeddingOptions): AiEmbeddingResult;
25
- //# sourceMappingURL=openai-embeddings.mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-embeddings.mapper.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/openai/openai-embeddings.mapper.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGlG,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKnE,yEAAyE;AACzE,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IAAE,eAAe,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,6GAA6G;AAC7G,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EACvB,MAAM,GAAE,YAA4B,GACnC,mBAAmB,CAkBrB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,uEAAuE;IACvE,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,uBAAuB,EAC7B,IAAI,EAAE,0BAA0B,GAC/B,iBAAiB,CA+BnB"}