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

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 +19 -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,46 +1,16 @@
1
1
  "use strict";
2
2
  // =============================================================================
3
- // Anthropic provider adapter (issue #446, epic #421)
3
+ // AnthropicProviderAdapter: the Nest binding (issue #991)
4
4
  // =============================================================================
5
5
  //
6
- // The second real `AiProviderAdapter`, and the one that proves the contract
7
- // is provider-neutral: Anthropic's Messages API differs from the Responses
8
- // API in almost every respect that matters (a separate system prompt,
9
- // content blocks, signed `thinking` blocks, `tool_use`/`tool_result`, a
10
- // required `max_tokens`, and no server-side conversation state), and it fits
11
- // the neutral types with one declared flag and no change to the conformance
12
- // kit's requests or to any `AiService` caller. Pieces:
13
- //
14
- // anthropic-client.factory.ts one SDK client per call (key, maxRetries 0)
15
- // anthropic-messages.mapper.ts AiResponseRequest <-> Messages API
16
- // anthropic-stream.mapper.ts stream events -> AiStreamEvent
17
- // anthropic-errors.ts SDK error -> AiError
18
- // anthropic-model-catalog.ts classifyModel()'s rule table + per-family profile
19
- //
20
- // PORTS. `responses` only. Anthropic has no embeddings, image-generation or
21
- // audio endpoints, so `embeddings`, `images`, `audio` and `realtime` are
22
- // ABSENT — presence is the declaration, and `AiProviderRegistry.supports()`
23
- // stays truthful. `supportsHostedTools: false` keeps it truthful for the one
24
- // capability that rides on the responses port without a port of its own:
25
- // Anthropic's server tools are a different set, and none is mapped yet.
26
- //
27
- // STATELESS (#446). `supportsPreviousResponseId: false`: Anthropic stores no
28
- // response to chain onto. The facade refuses a caller's `previousResponseId`
29
- // and the tool loop resends the full history instead — see
30
- // `AiProviderAdapter.supportsPreviousResponseId`. The request mapper refuses
31
- // it too, as defence in depth for a direct port caller.
32
- //
33
- // STORAGE-OBJECT INPUTS (#441). `fileInputStrategy` is images by
34
- // `presigned_url` (a 10-minute signed GET the runtime minted, passed as an
35
- // `image` URL source — Anthropic fetches it) and files `inline` (the bytes,
36
- // read under the runtime's cap, sent as a base64 PDF or plain-text
37
- // `document`). Nothing is uploaded to Anthropic, so there is nothing to
38
- // delete afterwards.
39
- //
40
- // OBSERVABILITY. Every provider call runs inside an `ai.provider.call` span
41
- // carrying `ai.provider`, `ai.model`, `ai.operation` and `ai.status` (`ok` or
42
- // the AiErrorCode) — never prompt text, output text or the key — exactly as
43
- // the OpenAI adapter's do. No exception is recorded on the span.
6
+ // The adapter itself (ports, mappers, error mapping, telemetry) lives in
7
+ // `@marinoscar/platform-ai-providers/anthropic`, framework-free. This subclass keeps the
8
+ // platform's injectable class and constructor signature
9
+ // (`AiProviderRegistry`, `AnthropicClientFactory`), hands the base a Nest `Logger` named
10
+ // after this class and the platform tracer (`../platform-ai-tracer.ts`), so
11
+ // log lines and `ai.provider.call` spans are unchanged, and registers itself
12
+ // with `AiProviderRegistry` in `onModuleInit` as it always did. It imports no
13
+ // SDK.
44
14
  // =============================================================================
45
15
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
46
16
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -53,270 +23,33 @@ var __metadata = (this && this.__metadata) || function (k, v) {
53
23
  };
54
24
  var AnthropicProviderAdapter_1;
55
25
  Object.defineProperty(exports, "__esModule", { value: true });
56
- exports.AnthropicProviderAdapter = exports.ANTHROPIC_PROVIDER_CALL_SPAN = void 0;
26
+ exports.ANTHROPIC_PROVIDER_CALL_SPAN = exports.AnthropicProviderAdapter = void 0;
57
27
  const common_1 = require("@nestjs/common");
58
- const api_1 = require("@opentelemetry/api");
59
- const ai_error_1 = require("../../core/ai-error");
28
+ const anthropic_1 = require("@marinoscar/platform-ai-providers/anthropic");
29
+ require("../../core/ai-error");
60
30
  const provider_registry_1 = require("../../core/provider-registry");
61
- const index_1 = require("../../../otel-core/index");
31
+ const platform_ai_tracer_1 = require("../platform-ai-tracer");
62
32
  const anthropic_client_factory_1 = require("./anthropic-client.factory");
63
- const anthropic_errors_1 = require("./anthropic-errors");
64
- const anthropic_messages_mapper_1 = require("./anthropic-messages.mapper");
65
- const anthropic_model_catalog_1 = require("./anthropic-model-catalog");
66
- const anthropic_stream_mapper_1 = require("./anthropic-stream.mapper");
67
- /** The span name every provider adapter uses (`OpenAiProviderAdapter`'s too). */
68
- exports.ANTHROPIC_PROVIDER_CALL_SPAN = 'ai.provider.call';
69
- /** Page size for `GET /v1/models` — Anthropic's maximum, so a catalog is one or two requests. */
70
- const MODELS_PAGE_SIZE = 1000;
71
- const tracer = api_1.trace.getTracer((0, index_1.resolveServiceName)());
72
- let AnthropicProviderAdapter = AnthropicProviderAdapter_1 = class AnthropicProviderAdapter {
33
+ /**
34
+ * The injectable AnthropicProviderAdapter: registers itself with `AiProviderRegistry` when
35
+ * its module initialises.
36
+ *
37
+ * @stability experimental
38
+ */
39
+ let AnthropicProviderAdapter = AnthropicProviderAdapter_1 = class AnthropicProviderAdapter extends anthropic_1.AnthropicProviderAdapter {
73
40
  registry;
74
- clients;
75
- id = anthropic_errors_1.ANTHROPIC_PROVIDER_ID;
76
- displayName = 'Anthropic';
77
- /** The endpoint used when the settings slot has no `baseUrl` (#773: the egress inventory reads it). */
78
- defaultBaseUrl = anthropic_client_factory_1.ANTHROPIC_DEFAULT_BASE_URL;
79
- /** Stateless: the runtime resends history instead of chaining (#446). */
80
- supportsPreviousResponseId = false;
81
- /** None of the neutral hosted tools are mapped — the mapper refuses them. */
82
- supportsHostedTools = false;
83
- /** Images by presigned URL, documents inline — see the file header. */
84
- fileInputStrategy = { image: 'presigned_url', file: 'inline' };
85
- responses = {
86
- create: (req, ctx) => this.createResponse(req, ctx),
87
- stream: (req, ctx) => this.streamResponse(req, ctx),
88
- };
89
- logger = new common_1.Logger(AnthropicProviderAdapter_1.name);
41
+ /**
42
+ * @param registry - the provider registry this adapter joins.
43
+ * @param clients - the injectable SDK client factory.
44
+ */
90
45
  constructor(registry, clients) {
46
+ super({ clients, logger: new common_1.Logger(AnthropicProviderAdapter_1.name), tracer: platform_ai_tracer_1.PLATFORM_AI_TRACER });
91
47
  this.registry = registry;
92
- this.clients = clients;
93
48
  }
49
+ /** Adds this adapter to `AiProviderRegistry`. */
94
50
  onModuleInit() {
95
51
  this.registry.register(this);
96
52
  }
97
- classifyModel(modelId) {
98
- return (0, anthropic_model_catalog_1.classifyAnthropicModel)(modelId);
99
- }
100
- /** `GET /v1/models`, every page. */
101
- async listModels(ctx) {
102
- return this.call('models.list', undefined, ctx, async () => {
103
- const client = this.clients.create(ctx);
104
- const models = [];
105
- for await (const model of client.models.list({ limit: MODELS_PAGE_SIZE }, { signal: ctx.signal })) {
106
- const created = model.created_at ? new Date(model.created_at) : undefined;
107
- models.push({
108
- id: model.id,
109
- ownedBy: anthropic_errors_1.ANTHROPIC_PROVIDER_ID,
110
- ...(created && !Number.isNaN(created.getTime()) ? { createdAt: created } : {}),
111
- });
112
- }
113
- return models;
114
- });
115
- }
116
- /**
117
- * `GET /v1/models?limit=1` with the key. A rejected key is an ANSWER
118
- * (`{ ok: false, code: 'AI_KEY_INVALID' }`), as is any other failure.
119
- */
120
- async verifyKey(ctx) {
121
- try {
122
- await this.call('verify_key', undefined, ctx, async () => {
123
- const client = this.clients.create(ctx);
124
- await client.models.list({ limit: 1 }, { signal: ctx.signal });
125
- });
126
- return { ok: true };
127
- }
128
- catch (err) {
129
- const mapped = (0, anthropic_errors_1.mapAnthropicError)(err);
130
- return mapped.code === 'AI_KEY_INVALID'
131
- ? { ok: false, code: 'AI_KEY_INVALID' }
132
- : { ok: false, code: mapped.code, detail: mapped.message };
133
- }
134
- }
135
- // ---- responses port -------------------------------------------------------
136
- plan(req, storage) {
137
- return (0, anthropic_messages_mapper_1.toAnthropicRequest)(req, (0, anthropic_model_catalog_1.anthropicModelProfile)(req.model), storage);
138
- }
139
- createResponse(req, ctx) {
140
- return this.call('messages.create', req.model, ctx, async () => {
141
- const plan = this.plan(req, await this.deliverStorageInputs(req, ctx));
142
- const client = this.clients.create(ctx);
143
- const { data, request_id } = await client.messages
144
- .create({ ...plan.body, stream: false }, { signal: ctx.signal })
145
- .withResponse();
146
- return (0, anthropic_messages_mapper_1.fromAnthropicMessage)(data, {
147
- request: req,
148
- providerRequestId: request_id,
149
- structuredToolName: plan.structuredToolName,
150
- });
151
- });
152
- }
153
- /**
154
- * Streams one response. A failure BEFORE `response.created` (a rejected
155
- * key, a 429, an unsupported request) is thrown as an `AiError`; once the
156
- * stream has started, a failure ends it with exactly one `error` event.
157
- *
158
- * `ctx.signal` aborts the SDK request; a consumer that stops iterating
159
- * (`break`) aborts it too.
160
- */
161
- async *streamResponse(req, ctx) {
162
- const started = Date.now();
163
- const span = this.startSpan('messages.stream', req.model);
164
- let status = 'ok';
165
- let providerRequestId = null;
166
- let sdkStream;
167
- let terminated = false;
168
- try {
169
- const plan = this.plan(req, await this.deliverStorageInputs(req, ctx));
170
- const client = this.clients.create(ctx);
171
- try {
172
- const { data, request_id } = await client.messages
173
- .create({ ...plan.body, stream: true }, { signal: ctx.signal })
174
- .withResponse();
175
- sdkStream = data;
176
- providerRequestId = request_id ?? null;
177
- }
178
- catch (err) {
179
- throw (0, anthropic_errors_1.mapAnthropicError)(err);
180
- }
181
- const mapper = new anthropic_stream_mapper_1.AnthropicStreamMapper({
182
- request: req,
183
- providerRequestId,
184
- structuredToolName: plan.structuredToolName,
185
- });
186
- try {
187
- for await (const event of sdkStream) {
188
- for (const out of mapper.map(event)) {
189
- if (out.type === 'error')
190
- status = out.code;
191
- yield out;
192
- }
193
- if (mapper.terminated)
194
- break;
195
- }
196
- }
197
- catch (err) {
198
- const mapped = (0, anthropic_errors_1.mapAnthropicError)(err);
199
- if (!mapper.started)
200
- throw mapped;
201
- status = mapped.code;
202
- yield* mapper.fail(mapped);
203
- }
204
- terminated = mapper.terminated;
205
- if (!terminated) {
206
- if (ctx.signal?.aborted) {
207
- throw new ai_error_1.AiError('AI_PROVIDER_UNAVAILABLE', 'The AI request was cancelled.', {
208
- details: { provider: anthropic_errors_1.ANTHROPIC_PROVIDER_ID, aborted: true },
209
- });
210
- }
211
- const truncated = new ai_error_1.AiError('AI_PROVIDER_UNAVAILABLE', 'The Anthropic stream ended before the response completed.', { details: { provider: anthropic_errors_1.ANTHROPIC_PROVIDER_ID } });
212
- if (!mapper.started)
213
- throw truncated;
214
- status = truncated.code;
215
- terminated = true;
216
- yield* mapper.fail(truncated);
217
- }
218
- }
219
- catch (err) {
220
- const mapped = (0, anthropic_errors_1.mapAnthropicError)(err);
221
- status = mapped.code;
222
- throw mapped;
223
- }
224
- finally {
225
- // A consumer that stopped early leaves the HTTP stream open: close it.
226
- if (!terminated)
227
- sdkStream?.controller.abort();
228
- this.endSpan(span, status);
229
- this.logCall('messages.stream', req.model, ctx, status, started, providerRequestId);
230
- }
231
- }
232
- // ---- storage-object inputs (#441) ------------------------------------------
233
- /**
234
- * What each storage-object part of `req` becomes on the wire, by the
235
- * strategy the runtime prepared it for: a presigned URL, or the bytes read
236
- * (under the runtime's cap) for an inline document. `undefined` when the
237
- * request names no storage object.
238
- */
239
- async deliverStorageInputs(req, ctx) {
240
- const ids = (0, anthropic_messages_mapper_1.anthropicStorageObjectIds)(req);
241
- if (ids.length === 0)
242
- return undefined;
243
- const deliveries = new Map();
244
- for (const id of ids) {
245
- const input = ctx.storageInputs?.get(id);
246
- if (!input) {
247
- throw new ai_error_1.AiError('AI_INVALID_REQUEST', 'A storage-object input was not resolved by the runtime.', {
248
- details: { provider: anthropic_errors_1.ANTHROPIC_PROVIDER_ID },
249
- });
250
- }
251
- const base = { modality: input.modality, mimeType: input.mimeType, filename: input.filename };
252
- if (input.strategy === 'presigned_url' && input.url) {
253
- deliveries.set(id, { ...base, url: input.url });
254
- }
255
- else if (input.strategy === 'inline' && input.read) {
256
- const payload = await input.read();
257
- deliveries.set(id, { ...base, data: payload.data });
258
- }
259
- else {
260
- throw new ai_error_1.AiError('AI_INVALID_REQUEST', 'A storage-object input was not prepared for delivery.', {
261
- details: { provider: anthropic_errors_1.ANTHROPIC_PROVIDER_ID, strategy: input.strategy },
262
- });
263
- }
264
- }
265
- return deliveries;
266
- }
267
- // ---- telemetry ------------------------------------------------------------
268
- startSpan(operation, model) {
269
- return tracer.startSpan(exports.ANTHROPIC_PROVIDER_CALL_SPAN, {
270
- kind: api_1.SpanKind.CLIENT,
271
- attributes: {
272
- 'ai.provider': anthropic_errors_1.ANTHROPIC_PROVIDER_ID,
273
- 'ai.operation': operation,
274
- ...(model ? { 'ai.model': model } : {}),
275
- },
276
- });
277
- }
278
- endSpan(span, status) {
279
- span.setAttribute('ai.status', status);
280
- span.setStatus(status === 'ok' ? { code: api_1.SpanStatusCode.OK } : { code: api_1.SpanStatusCode.ERROR, message: status });
281
- span.end();
282
- }
283
- /** ⚠ Only ids, the model, the operation, the outcome and a duration. Never the key or a body. */
284
- logCall(operation, model, ctx, status, started, providerRequestId) {
285
- this.logger.debug({
286
- msg: 'AI provider call',
287
- provider: anthropic_errors_1.ANTHROPIC_PROVIDER_ID,
288
- operation,
289
- model,
290
- status,
291
- requestId: ctx.requestId,
292
- providerRequestId: providerRequestId ?? undefined,
293
- durationMs: Date.now() - started,
294
- });
295
- }
296
- /** Runs `fn` inside an `ai.provider.call` span, mapping any failure to `AiError`. */
297
- async call(operation, model, ctx, fn) {
298
- const started = Date.now();
299
- const span = this.startSpan(operation, model);
300
- let status = 'ok';
301
- let providerRequestId;
302
- try {
303
- const result = await fn();
304
- if (result && typeof result === 'object' && 'providerRequestId' in result) {
305
- providerRequestId = result.providerRequestId;
306
- }
307
- return result;
308
- }
309
- catch (err) {
310
- const mapped = (0, anthropic_errors_1.mapAnthropicError)(err);
311
- status = mapped.code;
312
- providerRequestId = mapped.toJSON().details.providerRequestId;
313
- throw mapped;
314
- }
315
- finally {
316
- this.endSpan(span, status);
317
- this.logCall(operation, model, ctx, status, started, providerRequestId);
318
- }
319
- }
320
53
  };
321
54
  exports.AnthropicProviderAdapter = AnthropicProviderAdapter;
322
55
  exports.AnthropicProviderAdapter = AnthropicProviderAdapter = AnthropicProviderAdapter_1 = __decorate([
@@ -324,4 +57,7 @@ exports.AnthropicProviderAdapter = AnthropicProviderAdapter = AnthropicProviderA
324
57
  __metadata("design:paramtypes", [provider_registry_1.AiProviderRegistry,
325
58
  anthropic_client_factory_1.AnthropicClientFactory])
326
59
  ], AnthropicProviderAdapter);
60
+ // The rest of what this path exported before #991, unchanged.
61
+ var anthropic_2 = require("@marinoscar/platform-ai-providers/anthropic");
62
+ Object.defineProperty(exports, "ANTHROPIC_PROVIDER_CALL_SPAN", { enumerable: true, get: function () { return anthropic_2.ANTHROPIC_PROVIDER_CALL_SPAN; } });
327
63
  //# sourceMappingURL=anthropic.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.adapter.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/anthropic.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.adapter.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/anthropic.adapter.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0DAA0D;AAC1D,gFAAgF;AAChF,EAAE;AACF,yEAAyE;AACzE,yFAAyF;AACzF,wDAAwD;AACxD,yFAAyF;AACzF,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO;AACP,gFAAgF;;;;;;;;;;;;;AAEhF,2CAAkE;AAClE,2EAAuH;AAEvH,+BAA6B;AAC7B,oEAAkE;AAClE,8DAA2D;AAC3D,yEAAoE;AAEpE;;;;;GAKG;AAEI,IAAM,wBAAwB,gCAA9B,MAAM,wBAAyB,SAAQ,oCAA4B;IAMrD;IALnB;;;OAGG;IACH,YACmB,QAA4B,EAC7C,OAA+B;QAE/B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,uCAAkB,EAAE,CAAC,CAAC;QAHjF,aAAQ,GAAR,QAAQ,CAAoB;IAI/C,CAAC;IAED,iDAAiD;IACjD,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF,CAAA;AAhBY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAOkB,sCAAkB;QACpC,iDAAsB;GAPtB,wBAAwB,CAgBpC;AAED,8DAA8D;AAC9D,yEAA2F;AAAlF,yHAAA,4BAA4B,OAAA"}
@@ -1,21 +1,17 @@
1
- import { AzureOpenAI } from 'openai';
2
- import type { AiCallContext } from '../../core/provider-adapter.interface';
3
- import { type OpenAiClientOptions } from '../openai/openai-client.factory';
4
- import { type AzureOpenAiSettings } from './azure-openai-settings';
5
- /** DI token for the Azure client's options (tests inject a mocked `fetch`). */
1
+ import { AzureOpenAiClientFactory as BaseAzureOpenAiClientFactory, type OpenAiClientOptions } from '@marinoscar/platform-ai-providers/openai';
2
+ /** DI token for `OpenAiClientOptions` (optional; tests and forks provide it). */
6
3
  export declare const AZURE_OPENAI_CLIENT_OPTIONS: unique symbol;
7
4
  /**
8
- * `<endpoint>/openai` — the resource endpoint without trailing slashes, and
9
- * without a doubled `/openai` when the administrator already typed it.
5
+ * The injectable AzureOpenAiClientFactory: the framework-free factory of
6
+ * `@marinoscar/platform-ai-providers/openai` with its options injected.
7
+ *
8
+ * @stability experimental
10
9
  */
11
- export declare function azureOpenAiBaseUrl(endpoint: string): string;
12
- export declare class AzureOpenAiClientFactory {
13
- private readonly options;
14
- constructor(options?: OpenAiClientOptions);
10
+ export declare class AzureOpenAiClientFactory extends BaseAzureOpenAiClientFactory {
15
11
  /**
16
- * The client for one call. Throws `AI_KEY_INVALID` for an empty key and
17
- * `AI_PROVIDER_UNAVAILABLE` when no endpoint is configured.
12
+ * @param options - the client options (a mocked `fetch` in tests); none in production.
18
13
  */
19
- create(ctx: AiCallContext, settings: AzureOpenAiSettings): AzureOpenAI;
14
+ constructor(options?: OpenAiClientOptions);
20
15
  }
16
+ export { azureOpenAiBaseUrl } from '@marinoscar/platform-ai-providers/openai';
21
17
  //# sourceMappingURL=azure-openai-client.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai-client.factory.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai-client.factory.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAExF,+EAA+E;AAC/E,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,qBACa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAEe,OAAO,CAAC,EAAE,mBAAmB;IAI1F;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB,GAAG,WAAW;CAgBvE"}
1
+ {"version":3,"file":"azure-openai-client.factory.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai-client.factory.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,wBAAwB,IAAI,4BAA4B,EACxD,KAAK,mBAAmB,EACzB,MAAM,0CAA0C,CAAC;AAElD,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF;;;;;GAKG;AACH,qBACa,wBAAyB,SAAQ,4BAA4B;IACxE;;OAEG;gBAC0D,OAAO,CAAC,EAAE,mBAAmB;CAG3F;AAGD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC"}
@@ -1,26 +1,13 @@
1
1
  "use strict";
2
2
  // =============================================================================
3
- // Azure OpenAI SDK client factory (issue #448, epic #421)
3
+ // AzureOpenAiClientFactory: the Nest binding (issue #991)
4
4
  // =============================================================================
5
5
  //
6
- // One `AzureOpenAI` client PER CALL, built from that call's context — the
7
- // key is resolved per call, exactly as for OpenAI — with every option the SDK
8
- // would otherwise read from the environment pinned explicitly:
9
- //
10
- // - `baseURL` is passed, never `endpoint`: `AzureOpenAI` defaults `baseURL`
11
- // to `OPENAI_BASE_URL` and refuses `endpoint` beside it, so an ambient
12
- // variable on a host would otherwise break (or redirect) every call. The
13
- // base is `<endpoint>/openai`, the path the SDK itself derives.
14
- // - `apiVersion` and `apiKey` are always explicit (the SDK falls back to
15
- // `OPENAI_API_VERSION` / `AZURE_OPENAI_API_KEY`).
16
- // - the key travels in Azure's `api-key` header (the SDK's own behaviour).
17
- // - `maxRetries: 0`, no SDK logging, and a `fetch` that follows no
18
- // redirect (`openai-redirect-guard.ts`).
19
- //
20
- // No `deployment` is pinned on the client: the adapter puts the DEPLOYMENT
21
- // NAME in the request's `model`, and the SDK routes Chat Completions and
22
- // embeddings to `/deployments/<model>/...` from it while the Responses API
23
- // takes it as the body's `model` — so one client serves every model.
6
+ // The factory itself (one SDK client per call, every SDK option pinned) lives
7
+ // in `@marinoscar/platform-ai-providers/openai`. This subclass keeps the
8
+ // platform's injectable class, its constructor signature and its optional
9
+ // `AZURE_OPENAI_CLIENT_OPTIONS` injection token, so the provider module and any test
10
+ // that provides the token wire it exactly as before. It imports no SDK.
24
11
  // =============================================================================
25
12
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
26
13
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -35,46 +22,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
35
22
  return function (target, key) { decorator(target, key, paramIndex); }
36
23
  };
37
24
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.AzureOpenAiClientFactory = exports.AZURE_OPENAI_CLIENT_OPTIONS = void 0;
39
- exports.azureOpenAiBaseUrl = azureOpenAiBaseUrl;
25
+ exports.azureOpenAiBaseUrl = exports.AzureOpenAiClientFactory = exports.AZURE_OPENAI_CLIENT_OPTIONS = void 0;
40
26
  const common_1 = require("@nestjs/common");
41
- const openai_1 = require("openai");
42
- const ai_error_1 = require("../../core/ai-error");
43
- const openai_client_factory_1 = require("../openai/openai-client.factory");
44
- const openai_redirect_guard_1 = require("../openai/openai-redirect-guard");
45
- const azure_openai_settings_1 = require("./azure-openai-settings");
46
- /** DI token for the Azure client's options (tests inject a mocked `fetch`). */
27
+ const openai_1 = require("@marinoscar/platform-ai-providers/openai");
28
+ /** DI token for `OpenAiClientOptions` (optional; tests and forks provide it). */
47
29
  exports.AZURE_OPENAI_CLIENT_OPTIONS = Symbol('AZURE_OPENAI_CLIENT_OPTIONS');
48
30
  /**
49
- * `<endpoint>/openai` — the resource endpoint without trailing slashes, and
50
- * without a doubled `/openai` when the administrator already typed it.
31
+ * The injectable AzureOpenAiClientFactory: the framework-free factory of
32
+ * `@marinoscar/platform-ai-providers/openai` with its options injected.
33
+ *
34
+ * @stability experimental
51
35
  */
52
- function azureOpenAiBaseUrl(endpoint) {
53
- const trimmed = endpoint.replace(/\/+$/, '');
54
- return /\/openai$/i.test(trimmed) ? trimmed : `${trimmed}/openai`;
55
- }
56
- let AzureOpenAiClientFactory = class AzureOpenAiClientFactory {
57
- options;
58
- constructor(options) {
59
- this.options = options ?? {};
60
- }
36
+ let AzureOpenAiClientFactory = class AzureOpenAiClientFactory extends openai_1.AzureOpenAiClientFactory {
61
37
  /**
62
- * The client for one call. Throws `AI_KEY_INVALID` for an empty key and
63
- * `AI_PROVIDER_UNAVAILABLE` when no endpoint is configured.
38
+ * @param options - the client options (a mocked `fetch` in tests); none in production.
64
39
  */
65
- create(ctx, settings) {
66
- (0, openai_client_factory_1.assertOpenAiApiKey)(ctx, azure_openai_settings_1.AZURE_OPENAI_FAMILY);
67
- if (!ctx.baseUrl) {
68
- throw new ai_error_1.AiError('AI_PROVIDER_UNAVAILABLE', 'No Azure OpenAI endpoint is configured.', {
69
- details: { provider: azure_openai_settings_1.AZURE_OPENAI_FAMILY.providerId, missing: 'baseUrl' },
70
- });
71
- }
72
- return new openai_1.AzureOpenAI({
73
- apiKey: ctx.apiKey,
74
- baseURL: azureOpenAiBaseUrl(ctx.baseUrl),
75
- apiVersion: settings.apiVersion,
76
- ...(0, openai_client_factory_1.pinnedOpenAiClientOptions)(this.options, (0, openai_redirect_guard_1.noRedirectFetch)(this.options.fetch)),
77
- });
40
+ constructor(options) {
41
+ super(options);
78
42
  }
79
43
  };
80
44
  exports.AzureOpenAiClientFactory = AzureOpenAiClientFactory;
@@ -84,4 +48,7 @@ exports.AzureOpenAiClientFactory = AzureOpenAiClientFactory = __decorate([
84
48
  __param(0, (0, common_1.Inject)(exports.AZURE_OPENAI_CLIENT_OPTIONS)),
85
49
  __metadata("design:paramtypes", [Object])
86
50
  ], AzureOpenAiClientFactory);
51
+ // The rest of what this path exported before #991, unchanged.
52
+ var openai_2 = require("@marinoscar/platform-ai-providers/openai");
53
+ Object.defineProperty(exports, "azureOpenAiBaseUrl", { enumerable: true, get: function () { return openai_2.azureOpenAiBaseUrl; } });
87
54
  //# sourceMappingURL=azure-openai-client.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai-client.factory.js","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai-client.factory.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0DAA0D;AAC1D,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,+DAA+D;AAC/D,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,oEAAoE;AACpE,2EAA2E;AAC3E,sDAAsD;AACtD,6EAA6E;AAC7E,qEAAqE;AACrE,6CAA6C;AAC7C,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,qEAAqE;AACrE,gFAAgF;;;;;;;;;;;;;;;AAsBhF,gDAIC;AAxBD,2CAA8D;AAC9D,mCAAqC;AAErC,kDAA8C;AAE9C,2EAIyC;AACzC,2EAAkE;AAClE,mEAAwF;AAExF,+EAA+E;AAClE,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAEjF;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE7C,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,SAAS,CAAC;AACpE,CAAC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAClB,OAAO,CAAsB;IAE9C,YAA6D,OAA6B;QACxF,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAkB,EAAE,QAA6B;QACtD,IAAA,0CAAkB,EAAC,GAAG,EAAE,2CAAmB,CAAC,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAO,CAAC,yBAAyB,EAAE,yCAAyC,EAAE;gBACtF,OAAO,EAAE,EAAE,QAAQ,EAAE,2CAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;aAC1E,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,oBAAW,CAAC;YACrB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;YACxC,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,GAAG,IAAA,iDAAyB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAA,uCAAe,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA3BY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,mCAA2B,CAAC,CAAA;;GAHjD,wBAAwB,CA2BpC"}
1
+ {"version":3,"file":"azure-openai-client.factory.js","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai-client.factory.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0DAA0D;AAC1D,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,0EAA0E;AAC1E,qFAAqF;AACrF,wEAAwE;AACxE,gFAAgF;;;;;;;;;;;;;;;AAEhF,2CAA8D;AAC9D,qEAGkD;AAElD,iFAAiF;AACpE,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAEjF;;;;;GAKG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,iCAA4B;IACxE;;OAEG;IACH,YAA6D,OAA6B;QACxF,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF,CAAA;AAPY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,mCAA2B,CAAC,CAAA;;GAJjD,wBAAwB,CAOpC;AAED,8DAA8D;AAC9D,mEAA8E;AAArE,4GAAA,kBAAkB,OAAA"}
@@ -1,39 +1,22 @@
1
1
  import { OnModuleInit } from '@nestjs/common';
2
- import type { AiModelCapabilities } from '../../core/capabilities';
3
- import type { AiCallContext, AiDiscoveredModel, AiKeyVerification, AiProviderAdapter, AiResponsesPort } from '../../core/provider-adapter.interface';
2
+ import { AzureOpenAiProviderAdapter as BaseAzureOpenAiProviderAdapter } from '@marinoscar/platform-ai-providers/openai';
3
+ import '../../core/ai-error';
4
4
  import { AiProviderRegistry } from '../../core/provider-registry';
5
- import type { AiFileInputStrategies } from '../../core/types/file-inputs.types';
6
- import type { AiEmbeddingsPort } from '../../core/types/media.types';
7
5
  import { AzureOpenAiClientFactory } from './azure-openai-client.factory';
8
- export declare class AzureOpenAiProviderAdapter implements AiProviderAdapter, OnModuleInit {
6
+ /**
7
+ * The injectable AzureOpenAiProviderAdapter: registers itself with `AiProviderRegistry` when
8
+ * its module initialises.
9
+ *
10
+ * @stability experimental
11
+ */
12
+ export declare class AzureOpenAiProviderAdapter extends BaseAzureOpenAiProviderAdapter implements OnModuleInit {
9
13
  private readonly registry;
10
- private readonly clients;
11
- readonly id = "azure-openai";
12
- readonly displayName = "Azure OpenAI";
13
- /** Static and conservative — see the file header. */
14
- readonly supportsPreviousResponseId = false;
15
- /** No hosted tool is mapped for Azure — see the file header. */
16
- readonly supportsHostedTools = false;
17
- /** Images by presigned URL, files inline — see the file header. */
18
- readonly fileInputStrategy: AiFileInputStrategies;
19
- readonly responses: AiResponsesPort;
20
- readonly embeddings: AiEmbeddingsPort;
21
- private readonly logger;
22
- private readonly telemetry;
23
- private readonly responsesEngine;
24
- private readonly chatEngine;
25
- constructor(registry: AiProviderRegistry, clients: AzureOpenAiClientFactory);
26
- onModuleInit(): void;
27
- classifyModel(modelId: string): AiModelCapabilities | null;
28
- listModels(ctx: AiCallContext): Promise<AiDiscoveredModel[]>;
29
14
  /**
30
- * `GET /openai/models` with the key. A rejected key is an ANSWER, as is any
31
- * other failure — mapped to its code — so the admin UI never has to catch.
15
+ * @param registry - the provider registry this adapter joins.
16
+ * @param clients - the injectable SDK client factory.
32
17
  */
33
- verifyKey(ctx: AiCallContext): Promise<AiKeyVerification>;
34
- private create;
35
- private stream;
36
- /** `POST /openai/deployments/<deployment>/embeddings`, floats on the wire. */
37
- private embed;
18
+ constructor(registry: AiProviderRegistry, clients: AzureOpenAiClientFactory);
19
+ /** Adds this adapter to `AiProviderRegistry`. */
20
+ onModuleInit(): void;
38
21
  }
39
22
  //# sourceMappingURL=azure-openai.adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai.adapter.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai.adapter.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAyC,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAS5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAQzE,qBACa,0BAA2B,YAAW,iBAAiB,EAAE,YAAY;IA4B9E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IA5B1B,QAAQ,CAAC,EAAE,kBAA4B;IACvC,QAAQ,CAAC,WAAW,kBAAkB;IAEtC,qDAAqD;IACrD,QAAQ,CAAC,0BAA0B,SAAS;IAE5C,gEAAgE;IAChE,QAAQ,CAAC,mBAAmB,SAAS;IAErC,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,CAA8C;IAE/F,QAAQ,CAAC,SAAS,EAAE,eAAe,CAGjC;IAEF,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAEnC;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6D;IACvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAGtC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,wBAAwB;IAoBpD,YAAY,IAAI,IAAI;IAIpB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAQpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAoBlE;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB/D,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,MAAM;IAiBd,8EAA8E;IAC9E,OAAO,CAAC,KAAK;CAiBd"}
1
+ {"version":3,"file":"azure-openai.adapter.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai.adapter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,0BAA0B,IAAI,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAExH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;;GAKG;AACH,qBACa,0BAA2B,SAAQ,8BAA+B,YAAW,YAAY;IAMlG,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B;;;OAGG;gBAEgB,QAAQ,EAAE,kBAAkB,EAC7C,OAAO,EAAE,wBAAwB;IAKnC,iDAAiD;IACjD,YAAY,IAAI,IAAI;CAGrB"}