@marinoscar/platform-api 0.1.0-next.4 → 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 +18 -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,55 +1,16 @@
1
1
  "use strict";
2
2
  // =============================================================================
3
- // Azure OpenAI provider adapter (issue #448, epic #421)
3
+ // AzureOpenAiProviderAdapter: the Nest binding (issue #991)
4
4
  // =============================================================================
5
5
  //
6
- // OpenAI's models behind an Azure resource (data residency, enterprise
7
- // agreements). Azure speaks OpenAI's wire protocol, so this adapter is
8
- // composition, not a new mapping: the OpenAI adapter's shared pieces
9
- // (`../openai/`) with Azure's differences plugged in.
10
- //
11
- // azure-openai-settings.ts the slot's apiVersion / apiStyle / deployments
12
- // azure-openai-client.factory.ts `AzureOpenAI` per call: endpoint, api-version,
13
- // `api-key` header, no redirects
14
- // ../openai/openai-responses.engine.ts apiStyle 'responses' (the default)
15
- // ../openai/openai-chat-completions.engine.ts apiStyle 'chat_completions'
16
- //
17
- // DEPLOYMENTS. Azure routes by DEPLOYMENT NAME, not model id. A request's
18
- // model id is looked up in the slot's `deployments` map (model id ->
19
- // deployment name) and falls back to the id itself — Azure's common
20
- // convention of naming a deployment after its model. The deployment name is
21
- // what goes on the wire (`model` in the body; the SDK builds
22
- // `/deployments/<name>/...` from it for Chat Completions and embeddings);
23
- // the model id stays what telemetry, usage and the neutral response use.
24
- //
25
- // MODEL LIST. `GET /openai/models` is always called (it is also how a key is
26
- // verified). When a `deployments` map is configured, ITS KEYS are the model
27
- // list — Azure's data plane cannot enumerate a resource's deployments, and
28
- // the listing it does return names every model the region offers, deployed
29
- // or not. Without a map the listing is returned as-is and the administrator
30
- // enables what is actually deployed.
31
- //
32
- // CLASSIFICATION. Azure models are OpenAI models, so model ids classify with
33
- // OpenAI's own table (`classifyOpenAiModel`) minus `hosted_tools`, which this
34
- // adapter does not run; an id the table does not know (`gpt-35-turbo`, a
35
- // custom map key) is `null` — unclassified — for an administrator to decide.
36
- //
37
- // FLAGS (static, conservative — see docs/specs/ai-platform.md §2.24):
38
- // - `supportsPreviousResponseId: false`. Azure's Responses API does store
39
- // responses, but a flag is per ADAPTER while `apiStyle` is per slot, and
40
- // the Chat Completions style cannot chain; declaring `false` means the
41
- // tool loop always resends the full history, which works in both styles.
42
- // - `supportsHostedTools: false`. Azure's hosted-tool coverage varies by
43
- // region and api-version; none is mapped. A hosted tool reaching the port
44
- // directly is refused with AI_CAPABILITY_UNSUPPORTED.
45
- //
46
- // PORTS. `responses` and `embeddings`. Images and audio are deliberately
47
- // absent for now (their Azure routing differs per api-version); presence is
48
- // the declaration, so the registry stays truthful.
49
- //
50
- // STORAGE-OBJECT INPUTS (#441). Images by `presigned_url` (Azure fetches the
51
- // signed URL), files `inline` (base64 `file_data`) — both engines deliver
52
- // both, and nothing is uploaded to Azure, so nothing needs deleting.
6
+ // The adapter itself (ports, mappers, error mapping, telemetry) lives in
7
+ // `@marinoscar/platform-ai-providers/openai`, framework-free. This subclass keeps the
8
+ // platform's injectable class and constructor signature
9
+ // (`AiProviderRegistry`, `AzureOpenAiClientFactory`), 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.
53
14
  // =============================================================================
54
15
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
55
16
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -64,137 +25,31 @@ var AzureOpenAiProviderAdapter_1;
64
25
  Object.defineProperty(exports, "__esModule", { value: true });
65
26
  exports.AzureOpenAiProviderAdapter = void 0;
66
27
  const common_1 = require("@nestjs/common");
28
+ const openai_1 = require("@marinoscar/platform-ai-providers/openai");
29
+ require("../../core/ai-error");
67
30
  const provider_registry_1 = require("../../core/provider-registry");
68
- const openai_call_telemetry_1 = require("../openai/openai-call-telemetry");
69
- const openai_chat_completions_engine_1 = require("../openai/openai-chat-completions.engine");
70
- const openai_embeddings_mapper_1 = require("../openai/openai-embeddings.mapper");
71
- const openai_errors_1 = require("../openai/openai-errors");
72
- const openai_family_guards_1 = require("../openai/openai-family-guards");
73
- const openai_model_catalog_1 = require("../openai/openai-model-catalog");
74
- const openai_responses_engine_1 = require("../openai/openai-responses.engine");
31
+ const platform_ai_tracer_1 = require("../platform-ai-tracer");
75
32
  const azure_openai_client_factory_1 = require("./azure-openai-client.factory");
76
- const azure_openai_settings_1 = require("./azure-openai-settings");
77
- let AzureOpenAiProviderAdapter = AzureOpenAiProviderAdapter_1 = class AzureOpenAiProviderAdapter {
33
+ /**
34
+ * The injectable AzureOpenAiProviderAdapter: registers itself with `AiProviderRegistry` when
35
+ * its module initialises.
36
+ *
37
+ * @stability experimental
38
+ */
39
+ let AzureOpenAiProviderAdapter = AzureOpenAiProviderAdapter_1 = class AzureOpenAiProviderAdapter extends openai_1.AzureOpenAiProviderAdapter {
78
40
  registry;
79
- clients;
80
- id = azure_openai_settings_1.AZURE_OPENAI_PROVIDER_ID;
81
- displayName = 'Azure OpenAI';
82
- /** Static and conservative — see the file header. */
83
- supportsPreviousResponseId = false;
84
- /** No hosted tool is mapped for Azure — see the file header. */
85
- supportsHostedTools = false;
86
- /** Images by presigned URL, files inline — see the file header. */
87
- fileInputStrategy = { image: 'presigned_url', file: 'inline' };
88
- responses = {
89
- create: (req, ctx) => this.create(req, ctx),
90
- stream: (req, ctx) => this.stream(req, ctx),
91
- };
92
- embeddings = {
93
- embed: (req, ctx) => this.embed(req, ctx),
94
- };
95
- logger = new common_1.Logger(AzureOpenAiProviderAdapter_1.name);
96
- telemetry = new openai_call_telemetry_1.OpenAiCallTelemetry(azure_openai_settings_1.AZURE_OPENAI_FAMILY, this.logger);
97
- responsesEngine;
98
- chatEngine;
41
+ /**
42
+ * @param registry - the provider registry this adapter joins.
43
+ * @param clients - the injectable SDK client factory.
44
+ */
99
45
  constructor(registry, clients) {
46
+ super({ clients, logger: new common_1.Logger(AzureOpenAiProviderAdapter_1.name), tracer: platform_ai_tracer_1.PLATFORM_AI_TRACER });
100
47
  this.registry = registry;
101
- this.clients = clients;
102
- const client = (ctx) => this.clients.create(ctx, (0, azure_openai_settings_1.azureOpenAiSettings)(ctx.providerSettings));
103
- this.responsesEngine = new openai_responses_engine_1.OpenAiResponsesEngine({
104
- family: azure_openai_settings_1.AZURE_OPENAI_FAMILY,
105
- telemetry: this.telemetry,
106
- logger: this.logger,
107
- client,
108
- classify: (modelId) => this.classifyModel(modelId),
109
- });
110
- this.chatEngine = new openai_chat_completions_engine_1.OpenAiChatCompletionsEngine({
111
- family: azure_openai_settings_1.AZURE_OPENAI_FAMILY,
112
- telemetry: this.telemetry,
113
- client,
114
- // Azure's current name for the limit, and the only one its reasoning deployments accept.
115
- tokenParameter: 'max_completion_tokens',
116
- });
117
48
  }
49
+ /** Adds this adapter to `AiProviderRegistry`. */
118
50
  onModuleInit() {
119
51
  this.registry.register(this);
120
52
  }
121
- classifyModel(modelId) {
122
- const caps = (0, openai_model_catalog_1.classifyOpenAiModel)(modelId);
123
- if (!caps)
124
- return null;
125
- return { ...caps, capabilities: caps.capabilities.filter((capability) => capability !== 'hosted_tools') };
126
- }
127
- async listModels(ctx) {
128
- return this.telemetry.call('models.list', undefined, ctx, async () => {
129
- const settings = (0, azure_openai_settings_1.azureOpenAiSettings)(ctx.providerSettings);
130
- const client = this.clients.create(ctx, settings);
131
- const listed = [];
132
- for await (const model of client.models.list({ signal: ctx.signal })) {
133
- listed.push({
134
- id: model.id,
135
- ...(model.owned_by ? { ownedBy: model.owned_by } : {}),
136
- ...(typeof model.created === 'number' ? { createdAt: new Date(model.created * 1000) } : {}),
137
- });
138
- }
139
- const configured = Object.keys(settings.deployments);
140
- return configured.length > 0 ? configured.map((id) => ({ id })) : listed;
141
- });
142
- }
143
- /**
144
- * `GET /openai/models` with the key. A rejected key is an ANSWER, as is any
145
- * other failure — mapped to its code — so the admin UI never has to catch.
146
- */
147
- async verifyKey(ctx) {
148
- try {
149
- await this.telemetry.call('verify_key', undefined, ctx, async () => {
150
- await this.clients.create(ctx, (0, azure_openai_settings_1.azureOpenAiSettings)(ctx.providerSettings)).models.list({ signal: ctx.signal });
151
- });
152
- return { ok: true };
153
- }
154
- catch (err) {
155
- const mapped = (0, openai_errors_1.mapOpenAiError)(err, azure_openai_settings_1.AZURE_OPENAI_FAMILY);
156
- return mapped.code === 'AI_KEY_INVALID'
157
- ? { ok: false, code: 'AI_KEY_INVALID' }
158
- : { ok: false, code: mapped.code, detail: mapped.message };
159
- }
160
- }
161
- // ---- responses port -------------------------------------------------------
162
- create(req, ctx) {
163
- (0, openai_family_guards_1.assertNoHostedTools)(req, this.id);
164
- const settings = (0, azure_openai_settings_1.azureOpenAiSettings)(ctx.providerSettings);
165
- const opts = { wireModel: (0, azure_openai_settings_1.azureDeploymentFor)(settings, req.model) };
166
- return settings.apiStyle === 'chat_completions'
167
- ? this.chatEngine.create(req, ctx, opts)
168
- : this.responsesEngine.create(req, ctx, opts);
169
- }
170
- stream(req, ctx) {
171
- const settings = (0, azure_openai_settings_1.azureOpenAiSettings)(ctx.providerSettings);
172
- const opts = { wireModel: (0, azure_openai_settings_1.azureDeploymentFor)(settings, req.model) };
173
- const run = () => settings.apiStyle === 'chat_completions'
174
- ? this.chatEngine.stream(req, ctx, opts)
175
- : this.responsesEngine.stream(req, ctx, opts);
176
- return (async function* () {
177
- (0, openai_family_guards_1.assertNoHostedTools)(req, azure_openai_settings_1.AZURE_OPENAI_PROVIDER_ID);
178
- yield* run();
179
- })();
180
- }
181
- // ---- embeddings port ------------------------------------------------------
182
- /** `POST /openai/deployments/<deployment>/embeddings`, floats on the wire. */
183
- embed(req, ctx) {
184
- return this.telemetry.call('embeddings.create', req.model, ctx, async () => {
185
- const settings = (0, azure_openai_settings_1.azureOpenAiSettings)(ctx.providerSettings);
186
- const body = { ...(0, openai_embeddings_mapper_1.toOpenAiEmbeddingRequest)(req, azure_openai_settings_1.AZURE_OPENAI_FAMILY), model: (0, azure_openai_settings_1.azureDeploymentFor)(settings, req.model) };
187
- const { data, request_id } = await this.clients
188
- .create(ctx, settings)
189
- .embeddings.create(body, { signal: ctx.signal })
190
- .withResponse();
191
- return (0, openai_embeddings_mapper_1.fromOpenAiEmbeddingResponse)(data, {
192
- request: req,
193
- providerRequestId: request_id,
194
- family: azure_openai_settings_1.AZURE_OPENAI_FAMILY,
195
- });
196
- });
197
- }
198
53
  };
199
54
  exports.AzureOpenAiProviderAdapter = AzureOpenAiProviderAdapter;
200
55
  exports.AzureOpenAiProviderAdapter = AzureOpenAiProviderAdapter = AzureOpenAiProviderAdapter_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai.adapter.js","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"azure-openai.adapter.js","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai.adapter.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,4DAA4D;AAC5D,gFAAgF;AAChF,EAAE;AACF,yEAAyE;AACzE,sFAAsF;AACtF,wDAAwD;AACxD,2FAA2F;AAC3F,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO;AACP,gFAAgF;;;;;;;;;;;;;AAEhF,2CAAkE;AAClE,qEAAwH;AAExH,+BAA6B;AAC7B,oEAAkE;AAClE,8DAA2D;AAC3D,+EAAyE;AAEzE;;;;;GAKG;AAEI,IAAM,0BAA0B,kCAAhC,MAAM,0BAA2B,SAAQ,mCAA8B;IAMzD;IALnB;;;OAGG;IACH,YACmB,QAA4B,EAC7C,OAAiC;QAEjC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,eAAM,CAAC,4BAA0B,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,uCAAkB,EAAE,CAAC,CAAC;QAHnF,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,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;qCAOkB,sCAAkB;QACpC,sDAAwB;GAPxB,0BAA0B,CAgBtC"}
@@ -1,23 +1,18 @@
1
- import { GoogleGenAI } from '@google/genai';
2
- import type { AiCallContext } from '../../core/provider-adapter.interface';
3
- export declare const GEMINI_DEFAULT_BASE_URL = "https://generativelanguage.googleapis.com";
4
- export declare const GEMINI_API_VERSION = "v1beta";
5
- /** A generous ceiling for one request; long thinking turns take minutes. */
6
- export declare const GEMINI_DEFAULT_TIMEOUT_MS: number;
7
- /** The `fetch` the SDK uses. Tests inject a mocked one; production uses the global. */
8
- export type GeminiFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
9
- export interface GeminiClientOptions {
10
- fetch?: GeminiFetch;
11
- timeoutMs?: number;
12
- }
1
+ import { GeminiClientFactory as BaseGeminiClientFactory, type GeminiClientOptions } from '@marinoscar/platform-ai-providers/gemini';
13
2
  /** DI token for `GeminiClientOptions` (optional; tests and forks provide it). */
14
3
  export declare const GEMINI_CLIENT_OPTIONS: unique symbol;
15
- export declare class GeminiClientFactory {
16
- private readonly options;
4
+ /**
5
+ * The injectable GeminiClientFactory: the framework-free factory of
6
+ * `@marinoscar/platform-ai-providers/gemini` with its options injected.
7
+ *
8
+ * @stability experimental
9
+ */
10
+ export declare class GeminiClientFactory extends BaseGeminiClientFactory {
11
+ /**
12
+ * @param options - the client options (a mocked `fetch` in tests); none in production.
13
+ */
17
14
  constructor(options?: GeminiClientOptions);
18
- /** The timeout every request of a client from this factory carries. */
19
- get timeoutMs(): number;
20
- /** The SDK client for one call. Throws `AI_KEY_INVALID` for an empty key. */
21
- create(ctx: AiCallContext): GoogleGenAI;
22
15
  }
16
+ export { GEMINI_API_VERSION, GEMINI_DEFAULT_BASE_URL, GEMINI_DEFAULT_TIMEOUT_MS } from '@marinoscar/platform-ai-providers/gemini';
17
+ export type { GeminiFetch, GeminiClientOptions } from '@marinoscar/platform-ai-providers/gemini';
23
18
  //# sourceMappingURL=gemini-client.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-client.factory.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini-client.factory.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAG3E,eAAO,MAAM,uBAAuB,8CAA8C,CAAC;AAEnF,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,uFAAuF;AACvF,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE9F,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAErE,qBACa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAES,OAAO,CAAC,EAAE,mBAAmB;IAIpF,uEAAuE;IACvE,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,6EAA6E;IAC7E,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW;CAmBxC"}
1
+ {"version":3,"file":"gemini-client.factory.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini-client.factory.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,mBAAmB,IAAI,uBAAuB,EAC9C,KAAK,mBAAmB,EACzB,MAAM,0CAA0C,CAAC;AAElD,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAErE;;;;;GAKG;AACH,qBACa,mBAAoB,SAAQ,uBAAuB;IAC9D;;OAEG;gBACoD,OAAO,CAAC,EAAE,mBAAmB;CAGrF;AAGD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAClI,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC"}
@@ -1,41 +1,13 @@
1
1
  "use strict";
2
2
  // =============================================================================
3
- // Google Gen AI SDK client factory (issue #447, epic #421)
3
+ // GeminiClientFactory: the Nest binding (issue #991)
4
4
  // =============================================================================
5
5
  //
6
- // One client PER CALL, built from that call's `AiCallContext` — the same
7
- // shape as `OpenAiClientFactory` and `AnthropicClientFactory`, for the same
8
- // reason: the key is resolved per call (org key or the user's own).
9
- //
10
- // EVERYTHING THE SDK WOULD DISCOVER ON ITS OWN IS PINNED. `@google/genai`
11
- // reads a surprising amount of ambient configuration, and none of it may
12
- // decide which account or endpoint a call uses (there is no Gemini
13
- // configuration in this application's environment — docs/specs/ai-platform.md
14
- // §2.1):
15
- //
16
- // GOOGLE_GENAI_USE_VERTEXAI / _ENTERPRISE -> `vertexai: false`: always the
17
- // Gemini Developer API, never a
18
- // Vertex project's ADC
19
- // GOOGLE_API_KEY / GEMINI_API_KEY -> `apiKey` always passed (an
20
- // empty key is refused first)
21
- // GOOGLE_GEMINI_BASE_URL -> `httpOptions.baseUrl` always
22
- // passed
23
- // GOOGLE_CLOUD_PROJECT / _LOCATION -> unused off Vertex
24
- //
25
- // NO RETRIES. The SDK retries only when `httpOptions.retryOptions` is set, and
26
- // it never is: retries are the caller's job (the queue for a job, the user
27
- // for an interactive call), and an SDK retrying a 429 underneath would
28
- // multiply every attempt and hide the throttle from `toRateLimitError()`.
29
- //
30
- // The API version is pinned to `v1beta`, where every feature this adapter
31
- // maps (thinking config, `responseJsonSchema`, `thoughtSignature`) lives.
32
- //
33
- // TIMEOUT. `httpOptions.timeout` bounds each request, and the SDK aborts it
34
- // with the same `AbortError` a caller's signal raises — `mapGeminiError`
35
- // tells the two apart by whether the CALLER's signal fired. Setting it also
36
- // makes the SDK raise (never lower) the process-wide undici header/body
37
- // timeouts to match, so a long non-streaming thinking turn is not cut off by
38
- // undici's five-minute default first.
6
+ // The factory itself (one SDK client per call, every SDK option pinned) lives
7
+ // in `@marinoscar/platform-ai-providers/gemini`. This subclass keeps the
8
+ // platform's injectable class, its constructor signature and its optional
9
+ // `GEMINI_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.
39
11
  // =============================================================================
40
12
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
41
13
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -50,44 +22,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
50
22
  return function (target, key) { decorator(target, key, paramIndex); }
51
23
  };
52
24
  Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.GeminiClientFactory = exports.GEMINI_CLIENT_OPTIONS = exports.GEMINI_DEFAULT_TIMEOUT_MS = exports.GEMINI_API_VERSION = exports.GEMINI_DEFAULT_BASE_URL = void 0;
54
- const genai_1 = require("@google/genai");
25
+ exports.GEMINI_DEFAULT_TIMEOUT_MS = exports.GEMINI_DEFAULT_BASE_URL = exports.GEMINI_API_VERSION = exports.GeminiClientFactory = exports.GEMINI_CLIENT_OPTIONS = void 0;
55
26
  const common_1 = require("@nestjs/common");
56
- const ai_error_1 = require("../../core/ai-error");
57
- const gemini_errors_1 = require("./gemini-errors");
58
- exports.GEMINI_DEFAULT_BASE_URL = 'https://generativelanguage.googleapis.com';
59
- exports.GEMINI_API_VERSION = 'v1beta';
60
- /** A generous ceiling for one request; long thinking turns take minutes. */
61
- exports.GEMINI_DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
27
+ const gemini_1 = require("@marinoscar/platform-ai-providers/gemini");
62
28
  /** DI token for `GeminiClientOptions` (optional; tests and forks provide it). */
63
29
  exports.GEMINI_CLIENT_OPTIONS = Symbol('GEMINI_CLIENT_OPTIONS');
64
- let GeminiClientFactory = class GeminiClientFactory {
65
- options;
30
+ /**
31
+ * The injectable GeminiClientFactory: the framework-free factory of
32
+ * `@marinoscar/platform-ai-providers/gemini` with its options injected.
33
+ *
34
+ * @stability experimental
35
+ */
36
+ let GeminiClientFactory = class GeminiClientFactory extends gemini_1.GeminiClientFactory {
37
+ /**
38
+ * @param options - the client options (a mocked `fetch` in tests); none in production.
39
+ */
66
40
  constructor(options) {
67
- this.options = options ?? {};
68
- }
69
- /** The timeout every request of a client from this factory carries. */
70
- get timeoutMs() {
71
- return this.options.timeoutMs ?? exports.GEMINI_DEFAULT_TIMEOUT_MS;
72
- }
73
- /** The SDK client for one call. Throws `AI_KEY_INVALID` for an empty key. */
74
- create(ctx) {
75
- if (!ctx.apiKey || ctx.apiKey.trim().length === 0) {
76
- throw new ai_error_1.AiError('AI_KEY_INVALID', 'No Google Gemini API key was supplied.', {
77
- details: { provider: gemini_errors_1.GEMINI_PROVIDER_ID },
78
- });
79
- }
80
- return new genai_1.GoogleGenAI({
81
- vertexai: false,
82
- apiKey: ctx.apiKey,
83
- apiVersion: exports.GEMINI_API_VERSION,
84
- httpOptions: {
85
- baseUrl: ctx.baseUrl ?? exports.GEMINI_DEFAULT_BASE_URL,
86
- apiVersion: exports.GEMINI_API_VERSION,
87
- timeout: this.timeoutMs,
88
- ...(this.options.fetch ? { fetch: this.options.fetch } : {}),
89
- },
90
- });
41
+ super(options);
91
42
  }
92
43
  };
93
44
  exports.GeminiClientFactory = GeminiClientFactory;
@@ -97,4 +48,9 @@ exports.GeminiClientFactory = GeminiClientFactory = __decorate([
97
48
  __param(0, (0, common_1.Inject)(exports.GEMINI_CLIENT_OPTIONS)),
98
49
  __metadata("design:paramtypes", [Object])
99
50
  ], GeminiClientFactory);
51
+ // The rest of what this path exported before #991, unchanged.
52
+ var gemini_2 = require("@marinoscar/platform-ai-providers/gemini");
53
+ Object.defineProperty(exports, "GEMINI_API_VERSION", { enumerable: true, get: function () { return gemini_2.GEMINI_API_VERSION; } });
54
+ Object.defineProperty(exports, "GEMINI_DEFAULT_BASE_URL", { enumerable: true, get: function () { return gemini_2.GEMINI_DEFAULT_BASE_URL; } });
55
+ Object.defineProperty(exports, "GEMINI_DEFAULT_TIMEOUT_MS", { enumerable: true, get: function () { return gemini_2.GEMINI_DEFAULT_TIMEOUT_MS; } });
100
56
  //# sourceMappingURL=gemini-client.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-client.factory.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini-client.factory.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,2DAA2D;AAC3D,gFAAgF;AAChF,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,oEAAoE;AACpE,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,mEAAmE;AACnE,8EAA8E;AAC9E,SAAS;AACT,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,qEAAqE;AACrE,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,uDAAuD;AACvD,kEAAkE;AAClE,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,uEAAuE;AACvE,0EAA0E;AAC1E,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,sCAAsC;AACtC,gFAAgF;;;;;;;;;;;;;;;AAEhF,yCAA4C;AAC5C,2CAA8D;AAE9D,kDAA8C;AAE9C,mDAAqD;AAExC,QAAA,uBAAuB,GAAG,2CAA2C,CAAC;AAEtE,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,4EAA4E;AAC/D,QAAA,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAUxD,iFAAiF;AACpE,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAG9D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACb,OAAO,CAAsB;IAE9C,YAAuD,OAA6B;QAClF,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,uEAAuE;IACvE,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,iCAAyB,CAAC;IAC7D,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,GAAkB;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,kBAAO,CAAC,gBAAgB,EAAE,wCAAwC,EAAE;gBAC5E,OAAO,EAAE,EAAE,QAAQ,EAAE,kCAAkB,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,mBAAW,CAAC;YACrB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,0BAAkB;YAC9B,WAAW,EAAE;gBACX,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,+BAAuB;gBAC/C,UAAU,EAAE,0BAAkB;gBAC9B,OAAO,EAAE,IAAI,CAAC,SAAS;gBACvB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhCY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAIE,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,6BAAqB,CAAC,CAAA;;GAH3C,mBAAmB,CAgC/B"}
1
+ {"version":3,"file":"gemini-client.factory.js","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini-client.factory.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,qDAAqD;AACrD,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,0EAA0E;AAC1E,+EAA+E;AAC/E,wEAAwE;AACxE,gFAAgF;;;;;;;;;;;;;;;AAEhF,2CAA8D;AAC9D,qEAGkD;AAElD,iFAAiF;AACpE,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAErE;;;;;GAKG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,4BAAuB;IAC9D;;OAEG;IACH,YAAuD,OAA6B;QAClF,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF,CAAA;AAPY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,6BAAqB,CAAC,CAAA;;GAJ3C,mBAAmB,CAO/B;AAED,8DAA8D;AAC9D,mEAAkI;AAAzH,4GAAA,kBAAkB,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AAAE,mHAAA,yBAAyB,OAAA"}
@@ -1,66 +1,23 @@
1
1
  import { OnModuleInit } from '@nestjs/common';
2
- import type { AiModelCapabilities } from '../../core/capabilities';
3
- import type { AiCallContext, AiDiscoveredModel, AiDiscoveredModelMetadata, AiKeyVerification, AiProviderAdapter, AiResponsesPort } from '../../core/provider-adapter.interface';
2
+ import { GeminiProviderAdapter as BaseGeminiProviderAdapter } from '@marinoscar/platform-ai-providers/gemini';
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 { GeminiClientFactory } from './gemini-client.factory';
8
- /** The span name every provider adapter uses. */
9
- export declare const GEMINI_PROVIDER_CALL_SPAN = "ai.provider.call";
10
- export declare class GeminiProviderAdapter implements AiProviderAdapter, OnModuleInit {
6
+ /**
7
+ * The injectable GeminiProviderAdapter: registers itself with `AiProviderRegistry` when
8
+ * its module initialises.
9
+ *
10
+ * @stability experimental
11
+ */
12
+ export declare class GeminiProviderAdapter extends BaseGeminiProviderAdapter implements OnModuleInit {
11
13
  private readonly registry;
12
- private readonly clients;
13
- readonly id = "gemini";
14
- readonly displayName = "Google Gemini";
15
- /** The endpoint used when the settings slot has no `baseUrl` (#773: the egress inventory reads it). */
16
- readonly defaultBaseUrl = "https://generativelanguage.googleapis.com";
17
- /** Stateless: the runtime resends history instead of chaining (#446). */
18
- readonly supportsPreviousResponseId = false;
19
- /** Google Search grounding and code execution are not mapped yet — see the file header. */
20
- readonly supportsHostedTools = false;
21
- /** Both modalities inline (base64) — see the file header. */
22
- readonly fileInputStrategy: AiFileInputStrategies;
23
- readonly responses: AiResponsesPort;
24
- readonly embeddings: AiEmbeddingsPort;
25
- private readonly logger;
26
- constructor(registry: AiProviderRegistry, clients: GeminiClientFactory);
27
- onModuleInit(): void;
28
- classifyModel(modelId: string, metadata?: AiDiscoveredModelMetadata): AiModelCapabilities | null;
29
- /**
30
- * `GET /v1beta/models`, every page. Each model carries its listing metadata
31
- * (token limits, supported methods, thinking) for `classifyModel`.
32
- */
33
- listModels(ctx: AiCallContext): Promise<AiDiscoveredModel[]>;
34
- /**
35
- * `GET /v1beta/models?pageSize=1` with the key. A rejected key is an ANSWER
36
- * (`{ ok: false, code: 'AI_KEY_INVALID' }`), as is any other failure.
37
- */
38
- verifyKey(ctx: AiCallContext): Promise<AiKeyVerification>;
39
- private plan;
40
- private createResponse;
41
- /**
42
- * Streams one response. A failure BEFORE `response.created` (a rejected
43
- * key, a 429, an unsupported request) is thrown as an `AiError`; once the
44
- * stream has started, a failure ends it with exactly one `error` event.
45
- *
46
- * `ctx.signal` aborts the request; a consumer that stops iterating
47
- * (`break`) aborts it too — the SDK's own iterator only releases its reader,
48
- * so the adapter holds an abort controller of its own for that.
49
- */
50
- private streamResponse;
51
- /** `embedContent` (`batchEmbedContents` on the wire), one content per input. */
52
- private embed;
53
14
  /**
54
- * The bytes of each storage-object part of `req`, read under the runtime's
55
- * cap for inline delivery. `undefined` when the request names no storage
56
- * object.
15
+ * @param registry - the provider registry this adapter joins.
16
+ * @param clients - the injectable SDK client factory.
57
17
  */
58
- private deliverStorageInputs;
59
- private startSpan;
60
- private endSpan;
61
- /** ⚠ Only ids, the model, the operation, the outcome and a duration. Never the key or a body. */
62
- private logCall;
63
- /** Runs `fn` inside an `ai.provider.call` span, mapping any failure to `AiError`. */
64
- private call;
18
+ constructor(registry: AiProviderRegistry, clients: GeminiClientFactory);
19
+ /** Adds this adapter to `AiProviderRegistry`. */
20
+ onModuleInit(): void;
65
21
  }
22
+ export { GEMINI_PROVIDER_CALL_SPAN } from '@marinoscar/platform-ai-providers/gemini';
66
23
  //# sourceMappingURL=gemini.adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.adapter.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini.adapter.ts"],"names":[],"mappings":"AA6DA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,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;AAG5G,OAAO,EAAE,mBAAmB,EAA2B,MAAM,yBAAyB,CAAC;AAcvF,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAkB5D,qBACa,qBAAsB,YAAW,iBAAiB,EAAE,YAAY;IA4BzE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IA5B1B,QAAQ,CAAC,EAAE,YAAsB;IACjC,QAAQ,CAAC,WAAW,mBAAmB;IAEvC,uGAAuG;IACvG,QAAQ,CAAC,cAAc,+CAA2B;IAElD,yEAAyE;IACzE,QAAQ,CAAC,0BAA0B,SAAS;IAE5C,2FAA2F;IAC3F,QAAQ,CAAC,mBAAmB,SAAS;IAErC,6DAA6D;IAC7D,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,CAAuC;IAExF,QAAQ,CAAC,SAAS,EAAE,eAAe,CAGjC;IAEF,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAEnC;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAG9C,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,mBAAmB;IAG/C,YAAY,IAAI,IAAI;IAIpB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,yBAAyB,GAAG,mBAAmB,GAAG,IAAI;IAIhG;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0BlE;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAoBjD,IAAI;IAIlB,OAAO,CAAC,cAAc;IAetB;;;;;;;;OAQG;YACY,cAAc;IA6F7B,gFAAgF;IAChF,OAAO,CAAC,KAAK;IAiBb;;;;OAIG;YACW,oBAAoB;IAwClC,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,OAAO;IAMf,iGAAiG;IACjG,OAAO,CAAC,OAAO;IAkBf,qFAAqF;YACvE,IAAI;CAuBnB"}
1
+ {"version":3,"file":"gemini.adapter.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini.adapter.ts"],"names":[],"mappings":"AAcA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,qBAAqB,IAAI,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAE9G,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;;;GAKG;AACH,qBACa,qBAAsB,SAAQ,yBAA0B,YAAW,YAAY;IAMxF,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B;;;OAGG;gBAEgB,QAAQ,EAAE,kBAAkB,EAC7C,OAAO,EAAE,mBAAmB;IAK9B,iDAAiD;IACjD,YAAY,IAAI,IAAI;CAGrB;AAGD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC"}