@marinoscar/platform-api 0.1.0-next.5 → 0.1.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/ai/core/ai-error.d.ts +15 -158
- package/dist/ai/core/ai-error.d.ts.map +1 -1
- package/dist/ai/core/ai-error.js +58 -221
- package/dist/ai/core/ai-error.js.map +1 -1
- package/dist/ai/core/capabilities.d.ts +3 -126
- package/dist/ai/core/capabilities.d.ts.map +1 -1
- package/dist/ai/core/capabilities.js +13 -109
- package/dist/ai/core/capabilities.js.map +1 -1
- package/dist/ai/core/conversation.d.ts +2 -15
- package/dist/ai/core/conversation.d.ts.map +1 -1
- package/dist/ai/core/conversation.js +9 -54
- package/dist/ai/core/conversation.js.map +1 -1
- package/dist/ai/core/hosted-tools.d.ts +3 -172
- package/dist/ai/core/hosted-tools.d.ts.map +1 -1
- package/dist/ai/core/hosted-tools.js +20 -286
- package/dist/ai/core/hosted-tools.js.map +1 -1
- package/dist/ai/core/provider-adapter.interface.d.ts +3 -260
- package/dist/ai/core/provider-adapter.interface.d.ts.map +1 -1
- package/dist/ai/core/provider-adapter.interface.js +7 -29
- package/dist/ai/core/provider-adapter.interface.js.map +1 -1
- package/dist/ai/core/structured-output.d.ts +3 -49
- package/dist/ai/core/structured-output.d.ts.map +1 -1
- package/dist/ai/core/structured-output.js +9 -80
- package/dist/ai/core/structured-output.js.map +1 -1
- package/dist/ai/core/tools.d.ts +3 -93
- package/dist/ai/core/tools.d.ts.map +1 -1
- package/dist/ai/core/tools.js +9 -73
- package/dist/ai/core/tools.js.map +1 -1
- package/dist/ai/core/types/file-inputs.types.d.ts +3 -102
- package/dist/ai/core/types/file-inputs.types.d.ts.map +1 -1
- package/dist/ai/core/types/file-inputs.types.js +14 -78
- package/dist/ai/core/types/file-inputs.types.js.map +1 -1
- package/dist/ai/core/types/media.types.d.ts +3 -616
- package/dist/ai/core/types/media.types.d.ts.map +1 -1
- package/dist/ai/core/types/media.types.js +33 -203
- package/dist/ai/core/types/media.types.js.map +1 -1
- package/dist/ai/core/types/responses.types.d.ts +3 -619
- package/dist/ai/core/types/responses.types.d.ts.map +1 -1
- package/dist/ai/core/types/responses.types.js +9 -57
- package/dist/ai/core/types/responses.types.js.map +1 -1
- package/dist/ai/http/dto/ai-images.dto.d.ts +4 -4
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +3 -3
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts +13 -15
- package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts.map +1 -1
- package/dist/ai/providers/anthropic/anthropic-client.factory.js +23 -52
- package/dist/ai/providers/anthropic/anthropic-client.factory.js.map +1 -1
- package/dist/ai/providers/anthropic/anthropic.adapter.d.ts +15 -51
- package/dist/ai/providers/anthropic/anthropic.adapter.d.ts.map +1 -1
- package/dist/ai/providers/anthropic/anthropic.adapter.js +29 -293
- package/dist/ai/providers/anthropic/anthropic.adapter.js.map +1 -1
- package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts +10 -14
- package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts.map +1 -1
- package/dist/ai/providers/azure-openai/azure-openai-client.factory.js +20 -53
- package/dist/ai/providers/azure-openai/azure-openai-client.factory.js.map +1 -1
- package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts +14 -31
- package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts.map +1 -1
- package/dist/ai/providers/azure-openai/azure-openai.adapter.js +25 -170
- package/dist/ai/providers/azure-openai/azure-openai.adapter.js.map +1 -1
- package/dist/ai/providers/gemini/gemini-client.factory.d.ts +13 -18
- package/dist/ai/providers/gemini/gemini-client.factory.d.ts.map +1 -1
- package/dist/ai/providers/gemini/gemini-client.factory.js +24 -68
- package/dist/ai/providers/gemini/gemini-client.factory.js.map +1 -1
- package/dist/ai/providers/gemini/gemini.adapter.d.ts +15 -58
- package/dist/ai/providers/gemini/gemini.adapter.d.ts.map +1 -1
- package/dist/ai/providers/gemini/gemini.adapter.js +29 -348
- package/dist/ai/providers/gemini/gemini.adapter.js.map +1 -1
- package/dist/ai/providers/openai/openai-client.factory.d.ts +13 -35
- package/dist/ai/providers/openai/openai-client.factory.d.ts.map +1 -1
- package/dist/ai/providers/openai/openai-client.factory.js +25 -64
- package/dist/ai/providers/openai/openai-client.factory.js.map +1 -1
- package/dist/ai/providers/openai/openai.adapter.d.ts +15 -48
- package/dist/ai/providers/openai/openai.adapter.d.ts.map +1 -1
- package/dist/ai/providers/openai/openai.adapter.js +27 -206
- package/dist/ai/providers/openai/openai.adapter.js.map +1 -1
- package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts +11 -11
- package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts.map +1 -1
- package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js +18 -41
- package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js.map +1 -1
- package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts +14 -32
- package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts.map +1 -1
- package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js +25 -149
- package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js.map +1 -1
- package/dist/ai/providers/platform-ai-tracer.d.ts +4 -0
- package/dist/ai/providers/platform-ai-tracer.d.ts.map +1 -0
- package/dist/ai/providers/platform-ai-tracer.js +20 -0
- package/dist/ai/providers/platform-ai-tracer.js.map +1 -0
- package/dist/ai/runtime/ai-image-run-request.d.ts +1 -1
- package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts +28 -5
- package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts.map +1 -1
- package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js +54 -9
- package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js.map +1 -1
- package/dist/ai/testing/index.d.ts +1 -1
- package/dist/ai/testing/index.d.ts.map +1 -1
- package/dist/ai/testing/index.js +2 -1
- package/dist/ai/testing/index.js.map +1 -1
- package/dist/jobs/rate-limit.error.d.ts +2 -26
- package/dist/jobs/rate-limit.error.d.ts.map +1 -1
- package/dist/jobs/rate-limit.error.js +4 -52
- package/dist/jobs/rate-limit.error.js.map +1 -1
- package/dist/storage/config/storage-config.controller.d.ts +1 -1
- package/package.json +3 -2
- package/dist/ai/providers/anthropic/anthropic-errors.d.ts +0 -16
- package/dist/ai/providers/anthropic/anthropic-errors.d.ts.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-errors.js +0 -156
- package/dist/ai/providers/anthropic/anthropic-errors.js.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts +0 -80
- package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-messages.mapper.js +0 -536
- package/dist/ai/providers/anthropic/anthropic-messages.mapper.js.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts +0 -49
- package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-model-catalog.js +0 -198
- package/dist/ai/providers/anthropic/anthropic-model-catalog.js.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts +0 -35
- package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts.map +0 -1
- package/dist/ai/providers/anthropic/anthropic-stream.mapper.js +0 -203
- package/dist/ai/providers/anthropic/anthropic-stream.mapper.js.map +0 -1
- package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts +0 -18
- package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts.map +0 -1
- package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js +0 -120
- package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js.map +0 -1
- package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts +0 -59
- package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts.map +0 -1
- package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js +0 -206
- package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js.map +0 -1
- package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts +0 -23
- package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts.map +0 -1
- package/dist/ai/providers/azure-openai/azure-openai-settings.js +0 -54
- package/dist/ai/providers/azure-openai/azure-openai-settings.js.map +0 -1
- package/dist/ai/providers/gemini/gemini-content.mapper.d.ts +0 -98
- package/dist/ai/providers/gemini/gemini-content.mapper.d.ts.map +0 -1
- package/dist/ai/providers/gemini/gemini-content.mapper.js +0 -665
- package/dist/ai/providers/gemini/gemini-content.mapper.js.map +0 -1
- package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts +0 -13
- package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts.map +0 -1
- package/dist/ai/providers/gemini/gemini-embeddings.mapper.js +0 -78
- package/dist/ai/providers/gemini/gemini-embeddings.mapper.js.map +0 -1
- package/dist/ai/providers/gemini/gemini-errors.d.ts +0 -32
- package/dist/ai/providers/gemini/gemini-errors.d.ts.map +0 -1
- package/dist/ai/providers/gemini/gemini-errors.js +0 -191
- package/dist/ai/providers/gemini/gemini-errors.js.map +0 -1
- package/dist/ai/providers/gemini/gemini-model-catalog.d.ts +0 -45
- package/dist/ai/providers/gemini/gemini-model-catalog.d.ts.map +0 -1
- package/dist/ai/providers/gemini/gemini-model-catalog.js +0 -264
- package/dist/ai/providers/gemini/gemini-model-catalog.js.map +0 -1
- package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts +0 -31
- package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts.map +0 -1
- package/dist/ai/providers/gemini/gemini-stream.mapper.js +0 -118
- package/dist/ai/providers/gemini/gemini-stream.mapper.js.map +0 -1
- package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts +0 -80
- package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts.map +0 -1
- package/dist/ai/providers/gemini/testing/gemini-fixtures.js +0 -118
- package/dist/ai/providers/gemini/testing/gemini-fixtures.js.map +0 -1
- package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts +0 -82
- package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts.map +0 -1
- package/dist/ai/providers/gemini/testing/gemini-mock-transport.js +0 -342
- package/dist/ai/providers/gemini/testing/gemini-mock-transport.js.map +0 -1
- package/dist/ai/providers/openai/openai-audio.mapper.d.ts +0 -42
- package/dist/ai/providers/openai/openai-audio.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-audio.mapper.js +0 -266
- package/dist/ai/providers/openai/openai-audio.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-call-telemetry.d.ts +0 -25
- package/dist/ai/providers/openai/openai-call-telemetry.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-call-telemetry.js +0 -93
- package/dist/ai/providers/openai/openai-call-telemetry.js.map +0 -1
- package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts +0 -41
- package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js +0 -173
- package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts +0 -33
- package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-chat-completions.engine.js +0 -165
- package/dist/ai/providers/openai/openai-chat-completions.engine.js.map +0 -1
- package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts +0 -42
- package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-chat-completions.mapper.js +0 -304
- package/dist/ai/providers/openai/openai-chat-completions.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts +0 -25
- package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-embeddings.mapper.js +0 -81
- package/dist/ai/providers/openai/openai-embeddings.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-errors.d.ts +0 -45
- package/dist/ai/providers/openai/openai-errors.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-errors.js +0 -247
- package/dist/ai/providers/openai/openai-errors.js.map +0 -1
- package/dist/ai/providers/openai/openai-family-guards.d.ts +0 -4
- package/dist/ai/providers/openai/openai-family-guards.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-family-guards.js +0 -19
- package/dist/ai/providers/openai/openai-family-guards.js.map +0 -1
- package/dist/ai/providers/openai/openai-images.mapper.d.ts +0 -23
- package/dist/ai/providers/openai/openai-images.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-images.mapper.js +0 -164
- package/dist/ai/providers/openai/openai-images.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-model-catalog.d.ts +0 -36
- package/dist/ai/providers/openai/openai-model-catalog.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-model-catalog.js +0 -209
- package/dist/ai/providers/openai/openai-model-catalog.js.map +0 -1
- package/dist/ai/providers/openai/openai-realtime.mapper.d.ts +0 -18
- package/dist/ai/providers/openai/openai-realtime.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-realtime.mapper.js +0 -159
- package/dist/ai/providers/openai/openai-realtime.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-redirect-guard.d.ts +0 -9
- package/dist/ai/providers/openai/openai-redirect-guard.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-redirect-guard.js +0 -61
- package/dist/ai/providers/openai/openai-redirect-guard.js.map +0 -1
- package/dist/ai/providers/openai/openai-responses.engine.d.ts +0 -50
- package/dist/ai/providers/openai/openai-responses.engine.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-responses.engine.js +0 -206
- package/dist/ai/providers/openai/openai-responses.engine.js.map +0 -1
- package/dist/ai/providers/openai/openai-responses.mapper.d.ts +0 -64
- package/dist/ai/providers/openai/openai-responses.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-responses.mapper.js +0 -580
- package/dist/ai/providers/openai/openai-responses.mapper.js.map +0 -1
- package/dist/ai/providers/openai/openai-stream.mapper.d.ts +0 -28
- package/dist/ai/providers/openai/openai-stream.mapper.d.ts.map +0 -1
- package/dist/ai/providers/openai/openai-stream.mapper.js +0 -139
- package/dist/ai/providers/openai/openai-stream.mapper.js.map +0 -1
- package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts +0 -24
- package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts.map +0 -1
- package/dist/ai/providers/openai/testing/chat-completions-fixtures.js +0 -72
- package/dist/ai/providers/openai/testing/chat-completions-fixtures.js.map +0 -1
- package/dist/ai/providers/openai/testing/conformance-responders.d.ts +0 -7
- package/dist/ai/providers/openai/testing/conformance-responders.d.ts.map +0 -1
- package/dist/ai/providers/openai/testing/conformance-responders.js +0 -64
- package/dist/ai/providers/openai/testing/conformance-responders.js.map +0 -1
- package/dist/ai/providers/openai/testing/openai-fixtures.d.ts +0 -52
- package/dist/ai/providers/openai/testing/openai-fixtures.d.ts.map +0 -1
- package/dist/ai/providers/openai/testing/openai-fixtures.js +0 -208
- package/dist/ai/providers/openai/testing/openai-fixtures.js.map +0 -1
- package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts +0 -242
- package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts.map +0 -1
- package/dist/ai/providers/openai/testing/openai-mock-transport.js +0 -523
- package/dist/ai/providers/openai/testing/openai-mock-transport.js.map +0 -1
- package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts +0 -13
- package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts.map +0 -1
- package/dist/ai/providers/openai-compatible/openai-compatible-settings.js +0 -29
- package/dist/ai/providers/openai-compatible/openai-compatible-settings.js.map +0 -1
|
@@ -1,55 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// =============================================================================
|
|
3
|
-
//
|
|
3
|
+
// AzureOpenAiProviderAdapter: the Nest binding (issue #991)
|
|
4
4
|
// =============================================================================
|
|
5
5
|
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// (
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
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
|
|
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
|
-
|
|
77
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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":";AAAA,gFAAgF;AAChF,
|
|
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 {
|
|
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
|
-
|
|
16
|
-
|
|
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":"
|
|
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
|
-
//
|
|
3
|
+
// GeminiClientFactory: the Nest binding (issue #991)
|
|
4
4
|
// =============================================================================
|
|
5
5
|
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
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.
|
|
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
|
|
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
|
-
|
|
65
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
3
|
-
import
|
|
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
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* object.
|
|
15
|
+
* @param registry - the provider registry this adapter joins.
|
|
16
|
+
* @param clients - the injectable SDK client factory.
|
|
57
17
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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":"
|
|
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"}
|