@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,82 +0,0 @@
|
|
|
1
|
-
import type { GeminiFetch } from '../gemini-client.factory';
|
|
2
|
-
import { type GeminiWireResponse } from './gemini-fixtures';
|
|
3
|
-
export interface MockGeminiModel {
|
|
4
|
-
id: string;
|
|
5
|
-
kind?: 'generate' | 'embedding';
|
|
6
|
-
inputTokenLimit?: number;
|
|
7
|
-
outputTokenLimit?: number;
|
|
8
|
-
thinking?: boolean;
|
|
9
|
-
/** Embedding models: the native vector length (default 3072). */
|
|
10
|
-
dimensions?: number;
|
|
11
|
-
}
|
|
12
|
-
export type MockGeminiReply = {
|
|
13
|
-
kind: 'response';
|
|
14
|
-
response: GeminiWireResponse;
|
|
15
|
-
chunkSize?: number;
|
|
16
|
-
} | {
|
|
17
|
-
kind: 'error';
|
|
18
|
-
status: number;
|
|
19
|
-
grpcStatus: string;
|
|
20
|
-
message?: string;
|
|
21
|
-
details?: unknown[];
|
|
22
|
-
} | {
|
|
23
|
-
kind: 'network';
|
|
24
|
-
}
|
|
25
|
-
/** A hand-written SSE script of `data:` payloads. `hang` keeps the connection open until aborted. */
|
|
26
|
-
| {
|
|
27
|
-
kind: 'sse';
|
|
28
|
-
frames: unknown[];
|
|
29
|
-
hang?: boolean;
|
|
30
|
-
}
|
|
31
|
-
/** Raw body chunks, written as given — for a bare JSON error object mid-stream. */
|
|
32
|
-
| {
|
|
33
|
-
kind: 'raw';
|
|
34
|
-
chunks: string[];
|
|
35
|
-
};
|
|
36
|
-
export interface RecordedGeminiRequest {
|
|
37
|
-
method: string;
|
|
38
|
-
path: string;
|
|
39
|
-
query: URLSearchParams;
|
|
40
|
-
apiKey: string | null;
|
|
41
|
-
headers: Headers;
|
|
42
|
-
body: Record<string, unknown> | undefined;
|
|
43
|
-
signal: AbortSignal | undefined;
|
|
44
|
-
}
|
|
45
|
-
export interface GeminiMockServerOptions {
|
|
46
|
-
validKeys: string[];
|
|
47
|
-
models?: Array<string | MockGeminiModel>;
|
|
48
|
-
respond?(body: Record<string, unknown>, model: string): MockGeminiReply;
|
|
49
|
-
/** An error for embedding a model, instead of vectors. */
|
|
50
|
-
embedError?(model: string): MockGeminiReply | null;
|
|
51
|
-
}
|
|
52
|
-
export declare function googleError(status: number, grpcStatus: string, message: string, details?: unknown[]): {
|
|
53
|
-
error: {
|
|
54
|
-
details?: unknown[] | undefined;
|
|
55
|
-
code: number;
|
|
56
|
-
message: string;
|
|
57
|
-
status: string;
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
/** What the real API would say is wrong with this `generateContent` body, or `null`. */
|
|
61
|
-
export declare function requestProblem(body: Record<string, unknown>, model: MockGeminiModel): string | null;
|
|
62
|
-
export declare class GeminiMockServer {
|
|
63
|
-
readonly requests: RecordedGeminiRequest[];
|
|
64
|
-
private readonly validKeys;
|
|
65
|
-
private readonly models;
|
|
66
|
-
private respondFn;
|
|
67
|
-
private readonly embedErrorFn;
|
|
68
|
-
private readonly queued;
|
|
69
|
-
constructor(opts: GeminiMockServerOptions);
|
|
70
|
-
/** Replace the responder. */
|
|
71
|
-
onGenerate(fn: (body: Record<string, unknown>, model: string) => MockGeminiReply): void;
|
|
72
|
-
/** Answer the next generate call(s) with these replies, in order, before the responder. */
|
|
73
|
-
queue(...replies: MockGeminiReply[]): void;
|
|
74
|
-
/** `generateContent` / `streamGenerateContent` requests only. */
|
|
75
|
-
get generateRequests(): RecordedGeminiRequest[];
|
|
76
|
-
private kindOf;
|
|
77
|
-
private find;
|
|
78
|
-
private errorResponse;
|
|
79
|
-
readonly fetch: GeminiFetch;
|
|
80
|
-
private embed;
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=gemini-mock-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-mock-transport.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/testing/gemini-mock-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// A mocked Gemini HTTP API for tests (issue #447). Not imported by production code.
|
|
3
|
-
//
|
|
4
|
-
// Injected into the real SDK as its `fetch` (via `GeminiClientFactory`'s
|
|
5
|
-
// options), so tests exercise the SDK's own request building (the
|
|
6
|
-
// `GenerateContentConfig` -> REST body translation), error class and SSE
|
|
7
|
-
// parsing — only the network is fake. The same approach, and no new
|
|
8
|
-
// dependency, as the OpenAI and Anthropic mock transports.
|
|
9
|
-
//
|
|
10
|
-
// Behaviour:
|
|
11
|
-
// - `x-goog-api-key` not in `validKeys` -> 400 INVALID_ARGUMENT with the
|
|
12
|
-
// `API_KEY_INVALID` ErrorInfo — the real API's answer to a bad key (not a
|
|
13
|
-
// 401) — whose message echoes the key, so redaction tests have something
|
|
14
|
-
// to catch;
|
|
15
|
-
// - `GET /v1beta/models` -> the configured models with their metadata,
|
|
16
|
-
// paginated by `pageSize` / `pageToken`;
|
|
17
|
-
// - `POST /v1beta/models/{m}:generateContent` / `:streamGenerateContent`
|
|
18
|
-
// -> whatever `respond(body, model)` returns: a response (streamed as SSE
|
|
19
|
-
// chunks when streaming), an HTTP error, a network failure, or a raw SSE
|
|
20
|
-
// script;
|
|
21
|
-
// - `POST /v1beta/models/{m}:batchEmbedContents` -> one deterministic
|
|
22
|
-
// vector per request (`embeddingFor`), truncated to
|
|
23
|
-
// `outputDimensionality`, or a configured error.
|
|
24
|
-
//
|
|
25
|
-
// THE MOCK IS STATELESS ON PURPOSE, like the real API, and validates what the
|
|
26
|
-
// real API validates about a request, so a test cannot pass by leaning on
|
|
27
|
-
// state Gemini does not keep or on a shape Gemini would refuse:
|
|
28
|
-
// - unknown top-level fields are rejected (`previous_response_id` included);
|
|
29
|
-
// - a listed model is required, of the right kind for the method;
|
|
30
|
-
// - `contents` is non-empty, every turn is `user` or `model` with parts, the
|
|
31
|
-
// first is a user turn, and turns alternate;
|
|
32
|
-
// - a function-response turn follows a function-call turn IMMEDIATELY, with
|
|
33
|
-
// exactly one response per call, by name;
|
|
34
|
-
// - on a Gemini 3 model, the first function call of every model step in the
|
|
35
|
-
// current turn carries its `thoughtSignature`;
|
|
36
|
-
// - `thinkingConfig` is refused on a model that does not think, and
|
|
37
|
-
// `thinkingLevel` together with `thinkingBudget` everywhere;
|
|
38
|
-
// - `responseJsonSchema` needs `responseMimeType: application/json`, and
|
|
39
|
-
// Gemini 2.5 refuses a JSON response together with function calling.
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.GeminiMockServer = void 0;
|
|
42
|
-
exports.googleError = googleError;
|
|
43
|
-
exports.requestProblem = requestProblem;
|
|
44
|
-
const gemini_fixtures_1 = require("./gemini-fixtures");
|
|
45
|
-
const GENERATE_BODY_FIELDS = new Set([
|
|
46
|
-
'contents',
|
|
47
|
-
'systemInstruction',
|
|
48
|
-
'generationConfig',
|
|
49
|
-
'tools',
|
|
50
|
-
'toolConfig',
|
|
51
|
-
'safetySettings',
|
|
52
|
-
'cachedContent',
|
|
53
|
-
'serviceTier',
|
|
54
|
-
'labels',
|
|
55
|
-
]);
|
|
56
|
-
function json(status, payload) {
|
|
57
|
-
return new Response(JSON.stringify(payload), { status, headers: { 'content-type': 'application/json' } });
|
|
58
|
-
}
|
|
59
|
-
function googleError(status, grpcStatus, message, details) {
|
|
60
|
-
return { error: { code: status, message, status: grpcStatus, ...(details ? { details } : {}) } };
|
|
61
|
-
}
|
|
62
|
-
function abortError() {
|
|
63
|
-
const err = new Error('This operation was aborted');
|
|
64
|
-
err.name = 'AbortError';
|
|
65
|
-
return err;
|
|
66
|
-
}
|
|
67
|
-
function sseResponse(frames, hang, signal) {
|
|
68
|
-
return rawResponse(frames.map((frame) => `data: ${typeof frame === 'string' ? frame : JSON.stringify(frame)}\r\n\r\n`), hang, signal);
|
|
69
|
-
}
|
|
70
|
-
function rawResponse(chunks, hang, signal) {
|
|
71
|
-
const encoder = new TextEncoder();
|
|
72
|
-
const body = new ReadableStream({
|
|
73
|
-
start(controller) {
|
|
74
|
-
for (const chunk of chunks) {
|
|
75
|
-
controller.enqueue(encoder.encode(chunk));
|
|
76
|
-
}
|
|
77
|
-
if (!hang) {
|
|
78
|
-
controller.close();
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const onAbort = () => {
|
|
82
|
-
try {
|
|
83
|
-
controller.error(abortError());
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
// already closed
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
if (signal?.aborted)
|
|
90
|
-
onAbort();
|
|
91
|
-
else
|
|
92
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
return new Response(body, { status: 200, headers: { 'content-type': 'text/event-stream' } });
|
|
96
|
-
}
|
|
97
|
-
function isGemini3(model) {
|
|
98
|
-
return /^gemini-3/.test(model);
|
|
99
|
-
}
|
|
100
|
-
function isGemini25(model) {
|
|
101
|
-
return /^gemini-2\.5-/.test(model);
|
|
102
|
-
}
|
|
103
|
-
function hasFunctionCalls(turn) {
|
|
104
|
-
return (turn.parts ?? []).some((part) => part.functionCall);
|
|
105
|
-
}
|
|
106
|
-
function hasFunctionResponses(turn) {
|
|
107
|
-
return (turn.parts ?? []).some((part) => part.functionResponse);
|
|
108
|
-
}
|
|
109
|
-
/** What the real API would say is wrong with this `generateContent` body, or `null`. */
|
|
110
|
-
function requestProblem(body, model) {
|
|
111
|
-
for (const key of Object.keys(body)) {
|
|
112
|
-
if (!GENERATE_BODY_FIELDS.has(key)) {
|
|
113
|
-
return `Invalid JSON payload received. Unknown name "${key}": Cannot find field.`;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
const contents = (Array.isArray(body.contents) ? body.contents : []);
|
|
117
|
-
if (contents.length === 0)
|
|
118
|
-
return '* GenerateContentRequest.contents: contents is not specified';
|
|
119
|
-
for (const [i, turn] of contents.entries()) {
|
|
120
|
-
if (turn.role !== 'user' && turn.role !== 'model') {
|
|
121
|
-
return `* GenerateContentRequest.contents[${i}].role: Please use a valid role: user, model.`;
|
|
122
|
-
}
|
|
123
|
-
if (!Array.isArray(turn.parts) || turn.parts.length === 0) {
|
|
124
|
-
return `* GenerateContentRequest.contents[${i}].parts: contents.parts must not be empty.`;
|
|
125
|
-
}
|
|
126
|
-
for (const part of turn.parts) {
|
|
127
|
-
if (part.functionCall && (typeof part.functionCall.args !== 'object' || Array.isArray(part.functionCall.args))) {
|
|
128
|
-
return `* GenerateContentRequest.contents[${i}]: functionCall.args must be a JSON object.`;
|
|
129
|
-
}
|
|
130
|
-
if (part.functionResponse &&
|
|
131
|
-
(!part.functionResponse.name ||
|
|
132
|
-
typeof part.functionResponse.response !== 'object' ||
|
|
133
|
-
Array.isArray(part.functionResponse.response))) {
|
|
134
|
-
return `* GenerateContentRequest.contents[${i}]: functionResponse needs a name and an object response.`;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
if (contents[0].role !== 'user')
|
|
139
|
-
return 'Please ensure that multiturn requests start with a user turn.';
|
|
140
|
-
for (let i = 1; i < contents.length; i += 1) {
|
|
141
|
-
if (contents[i].role === contents[i - 1].role) {
|
|
142
|
-
return 'Please ensure that multiturn requests alternate between user and model.';
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
for (let i = 0; i < contents.length; i += 1) {
|
|
146
|
-
const turn = contents[i];
|
|
147
|
-
if (hasFunctionResponses(turn)) {
|
|
148
|
-
const previous = contents[i - 1];
|
|
149
|
-
if (!previous || !hasFunctionCalls(previous)) {
|
|
150
|
-
return 'Please ensure that function response turn comes immediately after a function call turn.';
|
|
151
|
-
}
|
|
152
|
-
const calls = (previous.parts ?? []).filter((p) => p.functionCall).map((p) => p.functionCall?.name).sort();
|
|
153
|
-
const responses = (turn.parts ?? []).filter((p) => p.functionResponse).map((p) => p.functionResponse?.name).sort();
|
|
154
|
-
if (calls.length !== responses.length) {
|
|
155
|
-
return 'Please ensure that the number of function response parts is equal to the number of function call parts of the function call turn.';
|
|
156
|
-
}
|
|
157
|
-
if (calls.join(',') !== responses.join(',')) {
|
|
158
|
-
return 'Please ensure that each function response names a function call of the function call turn.';
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
if (isGemini3(model.id)) {
|
|
163
|
-
// The current turn: everything after the last user turn that is not
|
|
164
|
-
// just function responses.
|
|
165
|
-
let start = 0;
|
|
166
|
-
contents.forEach((turn, i) => {
|
|
167
|
-
if (turn.role === 'user' && !hasFunctionResponses(turn))
|
|
168
|
-
start = i;
|
|
169
|
-
});
|
|
170
|
-
for (let i = start; i < contents.length; i += 1) {
|
|
171
|
-
const turn = contents[i];
|
|
172
|
-
const firstCall = (turn.parts ?? []).find((p) => p.functionCall);
|
|
173
|
-
if (turn.role === 'model' && firstCall && !firstCall.thoughtSignature) {
|
|
174
|
-
return `Function call is missing a thought_signature in functionCall parts. This is required for tools to work correctly, and missing thought_signature may lead to degraded model performance. Additional data, function call \`default_api:${firstCall.functionCall?.name}\` , position ${i + 1}.`;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const generation = (body.generationConfig ?? {});
|
|
179
|
-
const thinking = generation.thinkingConfig;
|
|
180
|
-
if (thinking) {
|
|
181
|
-
if (model.thinking === false)
|
|
182
|
-
return 'Thinking is not enabled for this model.';
|
|
183
|
-
if (thinking.thinkingLevel !== undefined && thinking.thinkingBudget !== undefined) {
|
|
184
|
-
return 'thinking_level and thinking_budget cannot both be set.';
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
if (generation.responseJsonSchema !== undefined && generation.responseMimeType !== 'application/json') {
|
|
188
|
-
return 'response_json_schema requires response_mime_type to be application/json.';
|
|
189
|
-
}
|
|
190
|
-
const tools = (Array.isArray(body.tools) ? body.tools : []);
|
|
191
|
-
const declares = tools.some((tool) => Array.isArray(tool.functionDeclarations));
|
|
192
|
-
if (isGemini25(model.id) && declares && generation.responseMimeType === 'application/json') {
|
|
193
|
-
return "Function calling with a response mime type: 'application/json' is unsupported";
|
|
194
|
-
}
|
|
195
|
-
return null;
|
|
196
|
-
}
|
|
197
|
-
class GeminiMockServer {
|
|
198
|
-
requests = [];
|
|
199
|
-
validKeys;
|
|
200
|
-
models;
|
|
201
|
-
respondFn;
|
|
202
|
-
embedErrorFn;
|
|
203
|
-
queued = [];
|
|
204
|
-
constructor(opts) {
|
|
205
|
-
this.validKeys = new Set(opts.validKeys);
|
|
206
|
-
this.models = (opts.models ?? ['gemini-2.5-flash']).map((model) => typeof model === 'string' ? { id: model } : model);
|
|
207
|
-
this.respondFn =
|
|
208
|
-
opts.respond ??
|
|
209
|
-
(() => ({ kind: 'error', status: 500, grpcStatus: 'INTERNAL', message: 'no responder configured' }));
|
|
210
|
-
this.embedErrorFn = opts.embedError ?? (() => null);
|
|
211
|
-
}
|
|
212
|
-
/** Replace the responder. */
|
|
213
|
-
onGenerate(fn) {
|
|
214
|
-
this.respondFn = fn;
|
|
215
|
-
}
|
|
216
|
-
/** Answer the next generate call(s) with these replies, in order, before the responder. */
|
|
217
|
-
queue(...replies) {
|
|
218
|
-
this.queued.push(...replies);
|
|
219
|
-
}
|
|
220
|
-
/** `generateContent` / `streamGenerateContent` requests only. */
|
|
221
|
-
get generateRequests() {
|
|
222
|
-
return this.requests.filter((r) => /:(?:stream)?[gG]enerateContent$/.test(r.path));
|
|
223
|
-
}
|
|
224
|
-
kindOf(model) {
|
|
225
|
-
return model.kind ?? (/embedding/.test(model.id) ? 'embedding' : 'generate');
|
|
226
|
-
}
|
|
227
|
-
find(model) {
|
|
228
|
-
return this.models.find((m) => m.id === model);
|
|
229
|
-
}
|
|
230
|
-
errorResponse(reply) {
|
|
231
|
-
return json(reply.status, googleError(reply.status, reply.grpcStatus, reply.message ?? reply.grpcStatus, reply.details));
|
|
232
|
-
}
|
|
233
|
-
fetch = async (input, init) => {
|
|
234
|
-
const url = new URL(typeof input === 'string' ? input : input instanceof URL ? input.href : input.url);
|
|
235
|
-
const headers = new Headers(init?.headers);
|
|
236
|
-
const method = (init?.method ?? 'GET').toUpperCase();
|
|
237
|
-
const body = typeof init?.body === 'string' && init.body.length > 0
|
|
238
|
-
? JSON.parse(init.body)
|
|
239
|
-
: undefined;
|
|
240
|
-
const apiKey = headers.get('x-goog-api-key');
|
|
241
|
-
const signal = init?.signal ?? undefined;
|
|
242
|
-
this.requests.push({ method, path: url.pathname, query: url.searchParams, apiKey, headers, body, signal });
|
|
243
|
-
if (signal?.aborted)
|
|
244
|
-
throw abortError();
|
|
245
|
-
if (!apiKey || !this.validKeys.has(apiKey)) {
|
|
246
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', `API key not valid. Please pass a valid API key. (${apiKey ?? ''})`, [
|
|
247
|
-
{
|
|
248
|
-
'@type': 'type.googleapis.com/google.rpc.ErrorInfo',
|
|
249
|
-
reason: 'API_KEY_INVALID',
|
|
250
|
-
domain: 'googleapis.com',
|
|
251
|
-
metadata: { service: 'generativelanguage.googleapis.com' },
|
|
252
|
-
},
|
|
253
|
-
]));
|
|
254
|
-
}
|
|
255
|
-
if (method === 'GET' && url.pathname === '/v1beta/models') {
|
|
256
|
-
const pageSize = Number(url.searchParams.get('pageSize') ?? 50);
|
|
257
|
-
const start = Number(url.searchParams.get('pageToken') ?? 0);
|
|
258
|
-
const page = this.models.slice(start, start + pageSize);
|
|
259
|
-
const next = start + pageSize < this.models.length ? String(start + pageSize) : undefined;
|
|
260
|
-
return json(200, {
|
|
261
|
-
models: page.map((model) => {
|
|
262
|
-
const embedding = this.kindOf(model) === 'embedding';
|
|
263
|
-
return {
|
|
264
|
-
name: `models/${model.id}`,
|
|
265
|
-
version: '001',
|
|
266
|
-
displayName: model.id,
|
|
267
|
-
inputTokenLimit: model.inputTokenLimit ?? (embedding ? 2048 : 1_048_576),
|
|
268
|
-
outputTokenLimit: model.outputTokenLimit ?? (embedding ? 1 : 65_536),
|
|
269
|
-
supportedGenerationMethods: embedding
|
|
270
|
-
? ['embedContent', 'countTextTokens', 'countTokens']
|
|
271
|
-
: ['generateContent', 'countTokens', 'createCachedContent', 'batchGenerateContent'],
|
|
272
|
-
...(embedding ? {} : { thinking: model.thinking ?? !/^gemini-(?:2\.0|1\.5)/.test(model.id) }),
|
|
273
|
-
};
|
|
274
|
-
}),
|
|
275
|
-
...(next ? { nextPageToken: next } : {}),
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
const match = /^\/v1beta\/models\/([^:]+):(generateContent|streamGenerateContent|batchEmbedContents)$/.exec(url.pathname);
|
|
279
|
-
if (method === 'POST' && match && body) {
|
|
280
|
-
const [, modelId, action] = match;
|
|
281
|
-
const model = this.find(modelId);
|
|
282
|
-
const wantKind = action === 'batchEmbedContents' ? 'embedding' : 'generate';
|
|
283
|
-
if (!model || this.kindOf(model) !== wantKind) {
|
|
284
|
-
return json(404, googleError(404, 'NOT_FOUND', `models/${modelId} is not found for API version v1beta, or is not supported for ${action}.`));
|
|
285
|
-
}
|
|
286
|
-
if (action === 'batchEmbedContents')
|
|
287
|
-
return this.embed(body, model);
|
|
288
|
-
const problem = requestProblem(body, { ...model, thinking: model.thinking ?? !/^gemini-(?:2\.0|1\.5)/.test(model.id) });
|
|
289
|
-
if (problem)
|
|
290
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', problem));
|
|
291
|
-
const reply = this.queued.shift() ?? this.respondFn(body, modelId);
|
|
292
|
-
const streaming = action === 'streamGenerateContent';
|
|
293
|
-
switch (reply.kind) {
|
|
294
|
-
case 'network':
|
|
295
|
-
throw new TypeError('fetch failed');
|
|
296
|
-
case 'error':
|
|
297
|
-
return this.errorResponse(reply);
|
|
298
|
-
case 'sse':
|
|
299
|
-
return sseResponse(reply.frames, reply.hang ?? false, signal);
|
|
300
|
-
case 'raw':
|
|
301
|
-
return rawResponse(reply.chunks, false, signal);
|
|
302
|
-
case 'response':
|
|
303
|
-
if (streaming && url.searchParams.get('alt') !== 'sse') {
|
|
304
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', 'streaming requires alt=sse in this mock'));
|
|
305
|
-
}
|
|
306
|
-
return streaming
|
|
307
|
-
? sseResponse((0, gemini_fixtures_1.streamChunksFor)(reply.response, reply.chunkSize), false, signal)
|
|
308
|
-
: json(200, reply.response);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return json(404, googleError(404, 'NOT_FOUND', `No route for ${method} ${url.pathname}`));
|
|
312
|
-
};
|
|
313
|
-
embed(body, model) {
|
|
314
|
-
const failure = this.embedErrorFn(model.id);
|
|
315
|
-
if (failure?.kind === 'error')
|
|
316
|
-
return this.errorResponse(failure);
|
|
317
|
-
if (failure?.kind === 'network')
|
|
318
|
-
throw new TypeError('fetch failed');
|
|
319
|
-
const requests = (Array.isArray(body.requests) ? body.requests : []);
|
|
320
|
-
if (requests.length === 0)
|
|
321
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', '* BatchEmbedContentsRequest.requests: must not be empty'));
|
|
322
|
-
if (requests.length > 100) {
|
|
323
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', '* BatchEmbedContentsRequest.requests: at most 100 requests can be in one batch'));
|
|
324
|
-
}
|
|
325
|
-
const embeddings = [];
|
|
326
|
-
for (const request of requests) {
|
|
327
|
-
if (request.model !== `models/${model.id}`) {
|
|
328
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', 'Model names in the batch must match the model in the URL.'));
|
|
329
|
-
}
|
|
330
|
-
const parts = (request.content?.parts ?? []);
|
|
331
|
-
const text = parts.map((part) => part.text ?? '').join('');
|
|
332
|
-
const dims = typeof request.outputDimensionality === 'number' ? request.outputDimensionality : undefined;
|
|
333
|
-
if (parts.length === 0)
|
|
334
|
-
return json(400, googleError(400, 'INVALID_ARGUMENT', '* content.parts must not be empty'));
|
|
335
|
-
const full = (0, gemini_fixtures_1.embeddingFor)(text, model.dimensions ?? 3072);
|
|
336
|
-
embeddings.push({ values: dims ? full.slice(0, dims) : full });
|
|
337
|
-
}
|
|
338
|
-
return json(200, { embeddings });
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
exports.GeminiMockServer = GeminiMockServer;
|
|
342
|
-
//# sourceMappingURL=gemini-mock-transport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-mock-transport.js","sourceRoot":"","sources":["../../../../../src/ai/providers/gemini/testing/gemini-mock-transport.ts"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,EAAE;AACF,yEAAyE;AACzE,kEAAkE;AAClE,yEAAyE;AACzE,oEAAoE;AACpE,2DAA2D;AAC3D,EAAE;AACF,aAAa;AACb,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,gBAAgB;AAChB,yEAAyE;AACzE,6CAA6C;AAC7C,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,cAAc;AACd,wEAAwE;AACxE,wDAAwD;AACxD,qDAAqD;AACrD,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,gEAAgE;AAChE,+EAA+E;AAC/E,oEAAoE;AACpE,+EAA+E;AAC/E,iDAAiD;AACjD,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAC9E,mDAAmD;AACnD,sEAAsE;AACtE,iEAAiE;AACjE,2EAA2E;AAC3E,yEAAyE;;;AAyEzE,kCAEC;AAkED,wCAwGC;AAlPD,uDAA2F;AAsD3F,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,UAAU;IACV,mBAAmB;IACnB,kBAAkB;IAClB,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,QAAQ;CACT,CAAC,CAAC;AAEH,SAAS,IAAI,CAAC,MAAc,EAAE,OAAgB;IAC5C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,UAAkB,EAAE,OAAe,EAAE,OAAmB;IAClG,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAEpD,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IAExB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,MAAiB,EAAE,IAAa,EAAE,MAAoB;IACzE,OAAO,WAAW,CAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EACnG,IAAI,EACJ,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAgB,EAAE,IAAa,EAAE,MAAoB;IACxE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAa;QAC1C,KAAK,CAAC,UAAU;YACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,UAAU,CAAC,KAAK,EAAE,CAAC;gBAEnB,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,CAAC;oBACH,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,EAAE,CAAC;;gBAC1B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAiB;IACzC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAiB;IAC7C,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClE,CAAC;AAED,wFAAwF;AACxF,SAAgB,cAAc,CAAC,IAA6B,EAAE,KAAsB;IAClF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,gDAAgD,GAAG,uBAAuB,CAAC;QACpF,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAkB,CAAC;IAEtF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,8DAA8D,CAAC;IAEjG,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClD,OAAO,qCAAqC,CAAC,+CAA+C,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,qCAAqC,CAAC,4CAA4C,CAAC;QAC5F,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC/G,OAAO,qCAAqC,CAAC,6CAA6C,CAAC;YAC7F,CAAC;YACD,IACE,IAAI,CAAC,gBAAgB;gBACrB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI;oBAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,KAAK,QAAQ;oBAClD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAChD,CAAC;gBACD,OAAO,qCAAqC,CAAC,0DAA0D,CAAC;YAC1G,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,+DAA+D,CAAC;IAExG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,yEAAyE,CAAC;QACnF,CAAC;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzB,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,OAAO,yFAAyF,CAAC;YACnG,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3G,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnH,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtC,OAAO,mIAAmI,CAAC;YAC7I,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,4FAA4F,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,oEAAoE;QACpE,2BAA2B;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAEjE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBACtE,OAAO,wOAAwO,SAAS,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;YACvS,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAA4B,CAAC;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAqD,CAAC;IAElF,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,yCAAyC,CAAC;QAC/E,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAClF,OAAO,wDAAwD,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,IAAI,UAAU,CAAC,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;QACtG,OAAO,0EAA0E,CAAC;IACpF,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAmC,CAAC;IAC9F,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAEhF,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,QAAQ,IAAI,UAAU,CAAC,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;QAC3F,OAAO,+EAA+E,CAAC;IACzF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,gBAAgB;IAClB,QAAQ,GAA4B,EAAE,CAAC;IAE/B,SAAS,CAAc;IACvB,MAAM,CAAoB;IACnC,SAAS,CAAoE;IACpE,YAAY,CAA4C;IACxD,MAAM,GAAsB,EAAE,CAAC;IAEhD,YAAY,IAA6B;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAChE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAClD,CAAC;QACF,IAAI,CAAC,SAAS;YACZ,IAAI,CAAC,OAAO;gBACZ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,6BAA6B;IAC7B,UAAU,CAAC,EAAqE;QAC9E,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,GAAG,OAA0B;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;IAEO,MAAM,CAAC,KAAsB;QACnC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;IAEO,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;IACjD,CAAC;IAEO,aAAa,CAAC,KAAkD;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3H,CAAC;IAEQ,KAAK,GAAgB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvG,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACjE,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAA6B;YACpD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3G,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,UAAU,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CACT,GAAG,EACH,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,oDAAoD,MAAM,IAAI,EAAE,GAAG,EAAE;gBACxG;oBACE,OAAO,EAAE,0CAA0C;oBACnD,MAAM,EAAE,iBAAiB;oBACzB,MAAM,EAAE,gBAAgB;oBACxB,QAAQ,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE;iBAC3D;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE1F,OAAO,IAAI,CAAC,GAAG,EAAE;gBACf,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC;oBAErD,OAAO;wBACL,IAAI,EAAE,UAAU,KAAK,CAAC,EAAE,EAAE;wBAC1B,OAAO,EAAE,KAAK;wBACd,WAAW,EAAE,KAAK,CAAC,EAAE;wBACrB,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;wBACxE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACpE,0BAA0B,EAAE,SAAS;4BACnC,CAAC,CAAC,CAAC,cAAc,EAAE,iBAAiB,EAAE,aAAa,CAAC;4BACpD,CAAC,CAAC,CAAC,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,CAAC;wBACrF,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;qBAC9F,CAAC;gBACJ,CAAC,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,wFAAwF,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1H,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;YAE5E,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,IAAI,CACT,GAAG,EACH,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,OAAO,iEAAiE,MAAM,GAAG,CAAC,CAC3H,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,KAAK,oBAAoB;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAExH,IAAI,OAAO;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;YAE7E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,MAAM,KAAK,uBAAuB,CAAC;YAErD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,SAAS;oBACZ,MAAM,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;gBAEtC,KAAK,OAAO;oBACV,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAEnC,KAAK,KAAK;oBACR,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC;gBAEhE,KAAK,KAAK;oBACR,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAElD,KAAK,UAAU;oBACb,IAAI,SAAS,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;wBACvD,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,yCAAyC,CAAC,CAAC,CAAC;oBACpG,CAAC;oBAED,OAAO,SAAS;wBACd,CAAC,CAAC,WAAW,CAAC,IAAA,iCAAe,EAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;wBAC9E,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,gBAAgB,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEM,KAAK,CAAC,IAA6B,EAAE,KAAsB;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,OAAO,EAAE,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAmC,CAAC;QAEvG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,yDAAyD,CAAC,CAAC,CAAC;QAC7I,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,gFAAgF,CAAC,CAAC,CAAC;QAC3I,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,2DAA2D,CAAC,CAAC,CAAC;YACtH,CAAC;YAED,MAAM,KAAK,GAAG,CAAE,OAAO,CAAC,OAAmC,EAAE,KAAK,IAAI,EAAE,CAAe,CAAC;YACxF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,mCAAmC,CAAC,CAAC,CAAC;YAEpH,MAAM,IAAI,GAAG,IAAA,8BAAY,EAAC,IAAI,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;YAE1D,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAxLD,4CAwLC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { SpeechCreateParams } from 'openai/resources/audio/speech';
|
|
2
|
-
import type { TranscriptionCreateParamsNonStreaming } from 'openai/resources/audio/transcriptions';
|
|
3
|
-
import { type AiMediaInput, type AiSpeechRequest, type AiSpeechResult, type AiTranscriptionRequest, type AiTranscriptionResult } from '../../core/types/media.types';
|
|
4
|
-
/** OpenAI's upload limit for `/v1/audio/transcriptions` (25 MiB). */
|
|
5
|
-
export declare const OPENAI_TRANSCRIPTION_MAX_BYTES: number;
|
|
6
|
-
/** Whether OpenAI model `modelId` is a Whisper model (verbose_json, timestamps). */
|
|
7
|
-
export declare function isOpenAiWhisper(modelId: string): boolean;
|
|
8
|
-
/**
|
|
9
|
-
* The name the upload is sent under: the caller's own base name (no path),
|
|
10
|
-
* with an extension OpenAI can decode — appended from the MIME type when the
|
|
11
|
-
* name has none it recognises.
|
|
12
|
-
*/
|
|
13
|
-
export declare function openAiAudioFileName(input: Pick<AiMediaInput, 'filename' | 'mimeType'>): string;
|
|
14
|
-
/**
|
|
15
|
-
* The `/v1/audio/transcriptions` multipart body. A streamed input stays a
|
|
16
|
-
* stream (`toStreamingFile`); bytes become a `File`.
|
|
17
|
-
*/
|
|
18
|
-
export declare function toOpenAiTranscriptionRequest(req: AiTranscriptionRequest): Promise<TranscriptionCreateParamsNonStreaming>;
|
|
19
|
-
export interface FromOpenAiTranscriptionOptions {
|
|
20
|
-
request: AiTranscriptionRequest;
|
|
21
|
-
providerRequestId?: string | null;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* The neutral result, from whichever shape the requested `response_format`
|
|
25
|
-
* produced: a bare string (`text`), `{ text, usage? }` (`json`), or the
|
|
26
|
-
* verbose object with language, duration, segments and words.
|
|
27
|
-
*/
|
|
28
|
-
export declare function fromOpenAiTranscriptionResponse(data: unknown, opts: FromOpenAiTranscriptionOptions): AiTranscriptionResult;
|
|
29
|
-
/** Whether OpenAI model `modelId` is `tts-1`/`tts-1-hd` (no `instructions`). */
|
|
30
|
-
export declare function isOpenAiTts1(modelId: string): boolean;
|
|
31
|
-
/** The `/v1/audio/speech` JSON body. Refuses what OpenAI would refuse, before calling. */
|
|
32
|
-
export declare function toOpenAiSpeechRequest(req: AiSpeechRequest): SpeechCreateParams;
|
|
33
|
-
export interface FromOpenAiSpeechOptions {
|
|
34
|
-
request: AiSpeechRequest;
|
|
35
|
-
providerRequestId?: string | null;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* The neutral result: the bytes, typed by the format that was asked for
|
|
39
|
-
* (the one OpenAI produces). No bytes is a provider fault.
|
|
40
|
-
*/
|
|
41
|
-
export declare function fromOpenAiSpeechResponse(bytes: Uint8Array, opts: FromOpenAiSpeechOptions): AiSpeechResult;
|
|
42
|
-
//# sourceMappingURL=openai-audio.mapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-audio.mapper.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/openai/openai-audio.mapper.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAEV,qCAAqC,EAEtC,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAG3B,MAAM,8BAA8B,CAAC;AAItC,qEAAqE;AACrE,eAAO,MAAM,8BAA8B,QAAmB,CAAC;AA4B/D,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG,MAAM,CAU9F;AAQD;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,qCAAqC,CAAC,CAyChD;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,sBAAsB,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAoCD;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,8BAA8B,GACnC,qBAAqB,CAwCvB;AAWD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAMD,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,CAiC9E;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,uBAAuB,GAAG,cAAc,CAoBzG"}
|