@marinoscar/platform-api 0.1.0-next.4 → 0.1.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -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,59 +0,0 @@
|
|
|
1
|
-
import type { Message, RawMessageStreamEvent } from '@anthropic-ai/sdk/resources/messages/messages';
|
|
2
|
-
import type { AnthropicFetch } from '../anthropic-client.factory';
|
|
3
|
-
export interface MockSseFrame {
|
|
4
|
-
event?: string;
|
|
5
|
-
data: unknown;
|
|
6
|
-
}
|
|
7
|
-
export type MockAnthropicReply = {
|
|
8
|
-
kind: 'message';
|
|
9
|
-
message: Message;
|
|
10
|
-
chunkSize?: number;
|
|
11
|
-
} | {
|
|
12
|
-
kind: 'error';
|
|
13
|
-
status: number;
|
|
14
|
-
type: string;
|
|
15
|
-
message?: string;
|
|
16
|
-
headers?: Record<string, string>;
|
|
17
|
-
} | {
|
|
18
|
-
kind: 'network';
|
|
19
|
-
}
|
|
20
|
-
/** A hand-written SSE script. `hang` keeps the connection open after the last frame until aborted. */
|
|
21
|
-
| {
|
|
22
|
-
kind: 'sse';
|
|
23
|
-
frames: MockSseFrame[];
|
|
24
|
-
hang?: boolean;
|
|
25
|
-
};
|
|
26
|
-
export interface RecordedAnthropicRequest {
|
|
27
|
-
method: string;
|
|
28
|
-
path: string;
|
|
29
|
-
apiKey: string | null;
|
|
30
|
-
headers: Headers;
|
|
31
|
-
body: Record<string, unknown> | undefined;
|
|
32
|
-
signal: AbortSignal | undefined;
|
|
33
|
-
}
|
|
34
|
-
export interface AnthropicMockServerOptions {
|
|
35
|
-
validKeys: string[];
|
|
36
|
-
models?: string[];
|
|
37
|
-
respond?(body: Record<string, unknown>): MockAnthropicReply;
|
|
38
|
-
}
|
|
39
|
-
/** SSE frames for a Messages event list, named the way Anthropic names them. */
|
|
40
|
-
export declare function framesFor(events: RawMessageStreamEvent[]): MockSseFrame[];
|
|
41
|
-
/** What the real API would say is wrong with this conversation, or `null`. */
|
|
42
|
-
export declare function conversationProblem(body: Record<string, unknown>): string | null;
|
|
43
|
-
export declare class AnthropicMockServer {
|
|
44
|
-
readonly requests: RecordedAnthropicRequest[];
|
|
45
|
-
private readonly validKeys;
|
|
46
|
-
private readonly models;
|
|
47
|
-
private requestCounter;
|
|
48
|
-
private respondFn;
|
|
49
|
-
private readonly queued;
|
|
50
|
-
constructor(opts: AnthropicMockServerOptions);
|
|
51
|
-
/** Replace the responder. */
|
|
52
|
-
onMessages(fn: (body: Record<string, unknown>) => MockAnthropicReply): void;
|
|
53
|
-
/** Answer the next `/v1/messages` call(s) with these replies, in order, before the responder. */
|
|
54
|
-
queue(...replies: MockAnthropicReply[]): void;
|
|
55
|
-
/** `/v1/messages` requests only. */
|
|
56
|
-
get messageRequests(): RecordedAnthropicRequest[];
|
|
57
|
-
readonly fetch: AnthropicFetch;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=anthropic-mock-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-mock-transport.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/anthropic/testing/anthropic-mock-transport.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,sGAAsG;GACpG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAAC;CAC7D;AA4DD,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,YAAY,EAAE,CAEzE;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CA6ChF;AAED,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAM;IAEnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAwD;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAEvC,IAAI,EAAE,0BAA0B;IAQ5C,6BAA6B;IAC7B,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,kBAAkB,GAAG,IAAI;IAI3E,iGAAiG;IACjG,KAAK,CAAC,GAAG,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAI7C,oCAAoC;IACpC,IAAI,eAAe,IAAI,wBAAwB,EAAE,CAEhD;IAED,QAAQ,CAAC,KAAK,EAAE,cAAc,CAyE5B;CACH"}
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// A mocked Anthropic HTTP API for tests (issue #446). Not imported by production code.
|
|
3
|
-
//
|
|
4
|
-
// Injected into the real SDK as its `fetch` (via `AnthropicClientFactory`'s
|
|
5
|
-
// options), so tests exercise the SDK's own request building, error classes
|
|
6
|
-
// and SSE parsing — only the network is fake. The same approach, and no new
|
|
7
|
-
// dependency, as `openai-mock-transport.ts`.
|
|
8
|
-
//
|
|
9
|
-
// Behaviour:
|
|
10
|
-
// - `x-api-key` not in `validKeys` -> 401 `authentication_error` whose
|
|
11
|
-
// message echoes the key, so redaction tests have something to catch;
|
|
12
|
-
// - `GET /v1/models` -> the configured model list, paginated by `limit`;
|
|
13
|
-
// - `POST /v1/messages` -> whatever `respond(body)` returns: a `Message`
|
|
14
|
-
// (streamed as SSE when the body says `stream: true`), an HTTP error, a
|
|
15
|
-
// network failure, or a raw SSE script.
|
|
16
|
-
//
|
|
17
|
-
// THE MOCK IS STATELESS ON PURPOSE, like the real API, and validates what the
|
|
18
|
-
// real API validates about a conversation, so a test cannot pass by leaning
|
|
19
|
-
// on state Anthropic does not keep:
|
|
20
|
-
// - `max_tokens` is required;
|
|
21
|
-
// - the first message is a user turn, and roles alternate;
|
|
22
|
-
// - every `tool_result` names a `tool_use` in the IMMEDIATELY preceding
|
|
23
|
-
// assistant turn;
|
|
24
|
-
// - with extended thinking on, an assistant turn that calls a tool must
|
|
25
|
-
// start with a (signed) thinking block;
|
|
26
|
-
// - any `previous_response_id`-like field is rejected as unknown.
|
|
27
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.AnthropicMockServer = void 0;
|
|
29
|
-
exports.framesFor = framesFor;
|
|
30
|
-
exports.conversationProblem = conversationProblem;
|
|
31
|
-
const anthropic_fixtures_1 = require("./anthropic-fixtures");
|
|
32
|
-
function json(status, payload, headers) {
|
|
33
|
-
return new Response(JSON.stringify(payload), {
|
|
34
|
-
status,
|
|
35
|
-
headers: { 'content-type': 'application/json', ...headers },
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function errorBody(type, message) {
|
|
39
|
-
return { type: 'error', error: { type, message } };
|
|
40
|
-
}
|
|
41
|
-
function abortError() {
|
|
42
|
-
const err = new Error('This operation was aborted');
|
|
43
|
-
err.name = 'AbortError';
|
|
44
|
-
return err;
|
|
45
|
-
}
|
|
46
|
-
function sseResponse(frames, headers, hang, signal) {
|
|
47
|
-
const encoder = new TextEncoder();
|
|
48
|
-
const body = new ReadableStream({
|
|
49
|
-
start(controller) {
|
|
50
|
-
for (const frame of frames) {
|
|
51
|
-
const lines = [
|
|
52
|
-
...(frame.event ? [`event: ${frame.event}`] : []),
|
|
53
|
-
`data: ${typeof frame.data === 'string' ? frame.data : JSON.stringify(frame.data)}`,
|
|
54
|
-
];
|
|
55
|
-
controller.enqueue(encoder.encode(`${lines.join('\n')}\n\n`));
|
|
56
|
-
}
|
|
57
|
-
if (!hang) {
|
|
58
|
-
controller.close();
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
const onAbort = () => {
|
|
62
|
-
try {
|
|
63
|
-
controller.error(abortError());
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
// already closed
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
if (signal?.aborted)
|
|
70
|
-
onAbort();
|
|
71
|
-
else
|
|
72
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
return new Response(body, { status: 200, headers: { 'content-type': 'text/event-stream', ...headers } });
|
|
76
|
-
}
|
|
77
|
-
/** SSE frames for a Messages event list, named the way Anthropic names them. */
|
|
78
|
-
function framesFor(events) {
|
|
79
|
-
return events.map((event) => ({ event: event.type, data: event }));
|
|
80
|
-
}
|
|
81
|
-
/** What the real API would say is wrong with this conversation, or `null`. */
|
|
82
|
-
function conversationProblem(body) {
|
|
83
|
-
if (typeof body.max_tokens !== 'number')
|
|
84
|
-
return 'max_tokens: Field required';
|
|
85
|
-
if ('previous_response_id' in body)
|
|
86
|
-
return 'previous_response_id: Extra inputs are not permitted';
|
|
87
|
-
const messages = (Array.isArray(body.messages) ? body.messages : []);
|
|
88
|
-
if (messages.length === 0)
|
|
89
|
-
return 'messages: at least one message is required';
|
|
90
|
-
if (messages[0].role !== 'user')
|
|
91
|
-
return 'messages: first message must use the "user" role';
|
|
92
|
-
const thinking = body.thinking?.type;
|
|
93
|
-
const thinkingOn = thinking === 'enabled' || thinking === 'adaptive';
|
|
94
|
-
for (let i = 0; i < messages.length; i += 1) {
|
|
95
|
-
const turn = messages[i];
|
|
96
|
-
const blocks = typeof turn.content === 'string' ? [{ type: 'text' }] : turn.content;
|
|
97
|
-
if (i > 0 && messages[i - 1].role === turn.role) {
|
|
98
|
-
return `messages.${i}: roles must alternate between "user" and "assistant"`;
|
|
99
|
-
}
|
|
100
|
-
if (turn.role === 'user') {
|
|
101
|
-
const previous = messages[i - 1];
|
|
102
|
-
const calls = new Set(previous && Array.isArray(previous.content)
|
|
103
|
-
? previous.content.filter((b) => b.type === 'tool_use').map((b) => b.id)
|
|
104
|
-
: []);
|
|
105
|
-
for (const block of blocks) {
|
|
106
|
-
if (block.type === 'tool_result' && !calls.has(block.tool_use_id)) {
|
|
107
|
-
return `messages.${i}: unexpected \`tool_use_id\` found in \`tool_result\` blocks: ${block.tool_use_id}. Each \`tool_result\` block must have a corresponding \`tool_use\` block in the previous message.`;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (turn.role === 'assistant' && thinkingOn && blocks.some((b) => b.type === 'tool_use')) {
|
|
112
|
-
const first = blocks[0];
|
|
113
|
-
if (first.type !== 'thinking' && first.type !== 'redacted_thinking') {
|
|
114
|
-
return `messages.${i}.content.0.type: Expected \`thinking\` or \`redacted_thinking\`, but found \`${first.type}\`.`;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
class AnthropicMockServer {
|
|
121
|
-
requests = [];
|
|
122
|
-
validKeys;
|
|
123
|
-
models;
|
|
124
|
-
requestCounter = 0;
|
|
125
|
-
respondFn;
|
|
126
|
-
queued = [];
|
|
127
|
-
constructor(opts) {
|
|
128
|
-
this.validKeys = new Set(opts.validKeys);
|
|
129
|
-
this.models = opts.models ?? ['claude-sonnet-4-5'];
|
|
130
|
-
this.respondFn =
|
|
131
|
-
opts.respond ??
|
|
132
|
-
(() => ({ kind: 'error', status: 500, type: 'api_error', message: 'no responder configured' }));
|
|
133
|
-
}
|
|
134
|
-
/** Replace the responder. */
|
|
135
|
-
onMessages(fn) {
|
|
136
|
-
this.respondFn = fn;
|
|
137
|
-
}
|
|
138
|
-
/** Answer the next `/v1/messages` call(s) with these replies, in order, before the responder. */
|
|
139
|
-
queue(...replies) {
|
|
140
|
-
this.queued.push(...replies);
|
|
141
|
-
}
|
|
142
|
-
/** `/v1/messages` requests only. */
|
|
143
|
-
get messageRequests() {
|
|
144
|
-
return this.requests.filter((r) => r.path === '/v1/messages');
|
|
145
|
-
}
|
|
146
|
-
fetch = async (input, init) => {
|
|
147
|
-
const url = new URL(typeof input === 'string' ? input : input instanceof URL ? input.href : input.url);
|
|
148
|
-
const headers = new Headers(init?.headers);
|
|
149
|
-
const method = (init?.method ?? 'GET').toUpperCase();
|
|
150
|
-
const body = typeof init?.body === 'string' ? JSON.parse(init.body) : undefined;
|
|
151
|
-
const apiKey = headers.get('x-api-key');
|
|
152
|
-
const signal = init?.signal ?? undefined;
|
|
153
|
-
this.requests.push({ method, path: url.pathname, apiKey, headers, body, signal });
|
|
154
|
-
if (signal?.aborted)
|
|
155
|
-
throw abortError();
|
|
156
|
-
const requestId = `req_mock_${++this.requestCounter}`;
|
|
157
|
-
const base = { 'request-id': requestId };
|
|
158
|
-
if (!apiKey || !this.validKeys.has(apiKey)) {
|
|
159
|
-
return json(401, errorBody('authentication_error', `invalid x-api-key: ${apiKey ?? ''}`), base);
|
|
160
|
-
}
|
|
161
|
-
if (method === 'GET' && url.pathname === '/v1/models') {
|
|
162
|
-
const limit = Number(url.searchParams.get('limit') ?? 20);
|
|
163
|
-
const after = url.searchParams.get('after_id');
|
|
164
|
-
const start = after ? this.models.indexOf(after) + 1 : 0;
|
|
165
|
-
const page = this.models.slice(start, start + limit);
|
|
166
|
-
return json(200, {
|
|
167
|
-
data: page.map((id, i) => ({
|
|
168
|
-
type: 'model',
|
|
169
|
-
id,
|
|
170
|
-
display_name: id,
|
|
171
|
-
created_at: new Date(Date.UTC(2025, 0, 1 + i)).toISOString(),
|
|
172
|
-
max_input_tokens: 200000,
|
|
173
|
-
max_tokens: 64000,
|
|
174
|
-
capabilities: null,
|
|
175
|
-
})),
|
|
176
|
-
has_more: start + limit < this.models.length,
|
|
177
|
-
first_id: page[0] ?? null,
|
|
178
|
-
last_id: page[page.length - 1] ?? null,
|
|
179
|
-
}, base);
|
|
180
|
-
}
|
|
181
|
-
if (method === 'POST' && url.pathname === '/v1/messages' && body) {
|
|
182
|
-
const problem = conversationProblem(body);
|
|
183
|
-
if (problem)
|
|
184
|
-
return json(400, errorBody('invalid_request_error', problem), base);
|
|
185
|
-
const reply = this.queued.shift() ?? this.respondFn(body);
|
|
186
|
-
switch (reply.kind) {
|
|
187
|
-
case 'network':
|
|
188
|
-
throw new TypeError('fetch failed');
|
|
189
|
-
case 'error':
|
|
190
|
-
return json(reply.status, errorBody(reply.type, reply.message ?? reply.type), {
|
|
191
|
-
...base,
|
|
192
|
-
...(reply.headers ?? {}),
|
|
193
|
-
});
|
|
194
|
-
case 'sse':
|
|
195
|
-
return sseResponse(reply.frames, base, reply.hang ?? false, signal);
|
|
196
|
-
case 'message':
|
|
197
|
-
return body.stream === true
|
|
198
|
-
? sseResponse(framesFor((0, anthropic_fixtures_1.streamEventsFor)(reply.message, reply.chunkSize)), base, false, signal)
|
|
199
|
-
: json(200, reply.message, base);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return json(404, errorBody('not_found_error', `No route for ${method} ${url.pathname}`), base);
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
exports.AnthropicMockServer = AnthropicMockServer;
|
|
206
|
-
//# sourceMappingURL=anthropic-mock-transport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-mock-transport.js","sourceRoot":"","sources":["../../../../../src/ai/providers/anthropic/testing/anthropic-mock-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { type AiOpenAiApiStyle } from '@marinoscar/platform-contract/ai';
|
|
2
|
-
import type { OpenAiFamily } from '../openai/openai-errors';
|
|
3
|
-
export declare const AZURE_OPENAI_PROVIDER_ID = "azure-openai";
|
|
4
|
-
export declare const AZURE_OPENAI_FAMILY: OpenAiFamily;
|
|
5
|
-
/**
|
|
6
|
-
* The `api-version` used when the slot names none: the first GA-track
|
|
7
|
-
* version to serve the Responses API, Chat Completions, embeddings and model
|
|
8
|
-
* listing alike. An administrator pins another in `apiVersion`.
|
|
9
|
-
*/
|
|
10
|
-
export declare const AZURE_OPENAI_DEFAULT_API_VERSION = "2025-04-01-preview";
|
|
11
|
-
/** The wire API used when the slot names none — current api-versions serve the Responses API. */
|
|
12
|
-
export declare const AZURE_OPENAI_DEFAULT_API_STYLE: AiOpenAiApiStyle;
|
|
13
|
-
export interface AzureOpenAiSettings {
|
|
14
|
-
apiVersion: string;
|
|
15
|
-
apiStyle: AiOpenAiApiStyle;
|
|
16
|
-
/** Model id → deployment name; empty when none is configured. */
|
|
17
|
-
deployments: Readonly<Record<string, string>>;
|
|
18
|
-
}
|
|
19
|
-
/** The call's Azure settings, each field defaulted independently. */
|
|
20
|
-
export declare function azureOpenAiSettings(raw: Readonly<Record<string, unknown>> | undefined): AzureOpenAiSettings;
|
|
21
|
-
/** The deployment a model id is served by: the configured one, else the id itself (Azure's common convention). */
|
|
22
|
-
export declare function azureDeploymentFor(settings: AzureOpenAiSettings, modelId: string): string;
|
|
23
|
-
//# sourceMappingURL=azure-openai-settings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"azure-openai-settings.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai-settings.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD,eAAO,MAAM,mBAAmB,EAAE,YAGhC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,uBAAuB,CAAC;AAErE,iGAAiG;AACjG,eAAO,MAAM,8BAA8B,EAAE,gBAA8B,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,iEAAiE;IACjE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AAQD,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,mBAAmB,CAY3G;AAED,kHAAkH;AAClH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIzF"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// =============================================================================
|
|
3
|
-
// Azure OpenAI per-call settings (issue #448, epic #421)
|
|
4
|
-
// =============================================================================
|
|
5
|
-
//
|
|
6
|
-
// What `AiCallContext.providerSettings` carries for `azure-openai` (the
|
|
7
|
-
// `ai.providers['azure-openai']` slot minus `enabled`/`baseUrl`), read with
|
|
8
|
-
// defaults. The settings schema already validated the stored slot; this parse
|
|
9
|
-
// is the adapter's own defence against a direct caller, and it never throws —
|
|
10
|
-
// a malformed field falls back to its default.
|
|
11
|
-
// =============================================================================
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.AZURE_OPENAI_DEFAULT_API_STYLE = exports.AZURE_OPENAI_DEFAULT_API_VERSION = exports.AZURE_OPENAI_FAMILY = exports.AZURE_OPENAI_PROVIDER_ID = void 0;
|
|
14
|
-
exports.azureOpenAiSettings = azureOpenAiSettings;
|
|
15
|
-
exports.azureDeploymentFor = azureDeploymentFor;
|
|
16
|
-
const zod_1 = require("zod");
|
|
17
|
-
const ai_1 = require("@marinoscar/platform-contract/ai");
|
|
18
|
-
exports.AZURE_OPENAI_PROVIDER_ID = 'azure-openai';
|
|
19
|
-
exports.AZURE_OPENAI_FAMILY = Object.freeze({
|
|
20
|
-
providerId: exports.AZURE_OPENAI_PROVIDER_ID,
|
|
21
|
-
label: 'Azure OpenAI',
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* The `api-version` used when the slot names none: the first GA-track
|
|
25
|
-
* version to serve the Responses API, Chat Completions, embeddings and model
|
|
26
|
-
* listing alike. An administrator pins another in `apiVersion`.
|
|
27
|
-
*/
|
|
28
|
-
exports.AZURE_OPENAI_DEFAULT_API_VERSION = '2025-04-01-preview';
|
|
29
|
-
/** The wire API used when the slot names none — current api-versions serve the Responses API. */
|
|
30
|
-
exports.AZURE_OPENAI_DEFAULT_API_STYLE = 'responses';
|
|
31
|
-
const fieldSchemas = {
|
|
32
|
-
apiVersion: zod_1.z.string().regex(ai_1.AI_AZURE_API_VERSION_PATTERN),
|
|
33
|
-
apiStyle: zod_1.z.enum(ai_1.AI_OPENAI_API_STYLES),
|
|
34
|
-
deployments: zod_1.z.record(zod_1.z.string(), zod_1.z.string().min(1)),
|
|
35
|
-
};
|
|
36
|
-
/** The call's Azure settings, each field defaulted independently. */
|
|
37
|
-
function azureOpenAiSettings(raw) {
|
|
38
|
-
const read = (key) => {
|
|
39
|
-
const parsed = fieldSchemas[key].safeParse(raw?.[key]);
|
|
40
|
-
return parsed.success ? parsed.data : undefined;
|
|
41
|
-
};
|
|
42
|
-
return {
|
|
43
|
-
apiVersion: read('apiVersion') ?? exports.AZURE_OPENAI_DEFAULT_API_VERSION,
|
|
44
|
-
apiStyle: read('apiStyle') ?? exports.AZURE_OPENAI_DEFAULT_API_STYLE,
|
|
45
|
-
deployments: read('deployments') ?? {},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
/** The deployment a model id is served by: the configured one, else the id itself (Azure's common convention). */
|
|
49
|
-
function azureDeploymentFor(settings, modelId) {
|
|
50
|
-
return Object.prototype.hasOwnProperty.call(settings.deployments, modelId)
|
|
51
|
-
? settings.deployments[modelId]
|
|
52
|
-
: modelId;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=azure-openai-settings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"azure-openai-settings.js","sourceRoot":"","sources":["../../../../src/ai/providers/azure-openai/azure-openai-settings.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yDAAyD;AACzD,gFAAgF;AAChF,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,+CAA+C;AAC/C,gFAAgF;;;AA0ChF,kDAYC;AAGD,gDAIC;AA3DD,6BAAwB;AAExB,yDAI0C;AAG7B,QAAA,wBAAwB,GAAG,cAAc,CAAC;AAE1C,QAAA,mBAAmB,GAAiB,MAAM,CAAC,MAAM,CAAC;IAC7D,UAAU,EAAE,gCAAwB;IACpC,KAAK,EAAE,cAAc;CACtB,CAAC,CAAC;AAEH;;;;GAIG;AACU,QAAA,gCAAgC,GAAG,oBAAoB,CAAC;AAErE,iGAAiG;AACpF,QAAA,8BAA8B,GAAqB,WAAW,CAAC;AAS5E,MAAM,YAAY,GAAG;IACnB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iCAA4B,CAAC;IAC1D,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,yBAAoB,CAAC;IACtC,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrD,CAAC;AAEF,qEAAqE;AACrE,SAAgB,mBAAmB,CAAC,GAAkD;IACpF,MAAM,IAAI,GAAG,CAAsC,GAAM,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,MAAM,CAAC,IAA0C,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,wCAAgC;QAClE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,sCAA8B;QAC5D,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,kHAAkH;AAClH,SAAgB,kBAAkB,CAAC,QAA6B,EAAE,OAAe;IAC/E,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QACxE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;QAC/B,CAAC,CAAC,OAAO,CAAC;AACd,CAAC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { Content, FinishReason, GenerateContentConfig, GenerateContentResponse, GenerateContentResponseUsageMetadata, Part } from '@google/genai';
|
|
2
|
-
import type { AiStorageInputModality } from '../../core/types/file-inputs.types';
|
|
3
|
-
import { type AiFinishReason, type AiOutputItem, type AiReasoningItem, type AiResponse, type AiResponseRequest, type AiStreamEvent, type AiUsage } from '../../core/types/responses.types';
|
|
4
|
-
import { type GeminiModelProfile } from './gemini-model-catalog';
|
|
5
|
-
/** The parameters of one `generateContent` / `generateContentStream` call, minus the signal. */
|
|
6
|
-
export interface GeminiRequest {
|
|
7
|
-
model: string;
|
|
8
|
-
contents: Content[];
|
|
9
|
-
config: GenerateContentConfig;
|
|
10
|
-
}
|
|
11
|
-
/** Which part a replayed `thoughtSignature` belongs on (see REPLAY above). */
|
|
12
|
-
export type GeminiSignatureTarget = 'thought' | 'text' | 'function_call';
|
|
13
|
-
/** What `AI_PROVIDER_STATE.data` holds for a Gemini reasoning item. */
|
|
14
|
-
export interface GeminiReasoningState {
|
|
15
|
-
signature: string;
|
|
16
|
-
target: GeminiSignatureTarget;
|
|
17
|
-
/** `target: 'function_call'` only: the call the signature belongs to. */
|
|
18
|
-
callId?: string;
|
|
19
|
-
}
|
|
20
|
-
/** The prefix of a call id this adapter made up for an id-less Gemini call. */
|
|
21
|
-
export declare const GEMINI_SYNTHETIC_CALL_ID_PREFIX = "gemini_call_";
|
|
22
|
-
/**
|
|
23
|
-
* How one storage-object input reached Gemini (#441): its bytes, read under
|
|
24
|
-
* the runtime's cap, sent inline. Nothing is uploaded, so nothing is deleted.
|
|
25
|
-
*/
|
|
26
|
-
export interface GeminiStorageDelivery {
|
|
27
|
-
modality: AiStorageInputModality;
|
|
28
|
-
mimeType: string;
|
|
29
|
-
filename: string;
|
|
30
|
-
data: Uint8Array;
|
|
31
|
-
}
|
|
32
|
-
/** Deliveries keyed by storage object id. */
|
|
33
|
-
export type GeminiStorageDeliveries = ReadonlyMap<string, GeminiStorageDelivery>;
|
|
34
|
-
/** The MIME type a URL's path extension names, or `undefined` (Gemini then decides). */
|
|
35
|
-
export declare function geminiMimeTypeFromUrl(url: string): string | undefined;
|
|
36
|
-
/** Every storage object id `req` names, in order, each once. */
|
|
37
|
-
export declare function geminiStorageObjectIds(req: AiResponseRequest): string[];
|
|
38
|
-
/** The Gemini state an item carries, or `undefined` for another provider's / none. */
|
|
39
|
-
export declare function geminiReasoningState(item: AiReasoningItem): GeminiReasoningState | undefined;
|
|
40
|
-
/**
|
|
41
|
-
* A function's output as Gemini's `functionResponse.response` (a JSON object):
|
|
42
|
-
* a JSON object output is sent as-is; anything else — JSON or plain text — is
|
|
43
|
-
* wrapped as `{ output }`, the key Gemini documents for a function's output.
|
|
44
|
-
*/
|
|
45
|
-
export declare function geminiFunctionResponse(output: string): Record<string, unknown>;
|
|
46
|
-
/**
|
|
47
|
-
* Builds the Gemini request for `req`.
|
|
48
|
-
*
|
|
49
|
-
* `profile` is the model's classifier profile (or `null` when unclassified);
|
|
50
|
-
* `storage` is what the adapter delivered for each storage-object part.
|
|
51
|
-
* Throws `AiError` (never an SDK error): see the file header.
|
|
52
|
-
*/
|
|
53
|
-
export declare function toGeminiRequest(req: AiResponseRequest, profile: GeminiModelProfile | null, storage?: GeminiStorageDeliveries): GeminiRequest;
|
|
54
|
-
/**
|
|
55
|
-
* Turns response parts into our output items, in order — incrementally, so
|
|
56
|
-
* the stream mapper can emit deltas as parts arrive, and `create` feeds it a
|
|
57
|
-
* whole response at once. Consecutive text parts are ONE message item and
|
|
58
|
-
* consecutive thought parts ONE reasoning item (a stream splits one logical
|
|
59
|
-
* part across many chunks); a function call closes whatever is open.
|
|
60
|
-
*/
|
|
61
|
-
export declare class GeminiOutputAssembler {
|
|
62
|
-
readonly items: AiOutputItem[];
|
|
63
|
-
private open;
|
|
64
|
-
private pendingSignature;
|
|
65
|
-
/** Consumes one part; returns the deltas and completed items it produced. */
|
|
66
|
-
push(part: Part): AiStreamEvent[];
|
|
67
|
-
/** Closes whatever is open; call once, after the last part. */
|
|
68
|
-
finish(): AiStreamEvent[];
|
|
69
|
-
private attachSignature;
|
|
70
|
-
private done;
|
|
71
|
-
private close;
|
|
72
|
-
private functionCall;
|
|
73
|
-
}
|
|
74
|
-
/** Usage, normalised: output includes thinking tokens, as OpenAI's and Anthropic's do. */
|
|
75
|
-
export declare function geminiUsage(usage: GenerateContentResponseUsageMetadata | null | undefined): AiUsage;
|
|
76
|
-
/** Our finish reason for Gemini's (a candidate's `finishReason`, or a blocked prompt). */
|
|
77
|
-
export declare function geminiFinishReason(finishReason: FinishReason | string | null | undefined, output: AiOutputItem[], promptBlocked?: boolean): AiFinishReason;
|
|
78
|
-
export interface GeminiResponseParts {
|
|
79
|
-
id: string;
|
|
80
|
-
model: string;
|
|
81
|
-
output: AiOutputItem[];
|
|
82
|
-
finishReason: FinishReason | string | null | undefined;
|
|
83
|
-
promptBlocked: boolean;
|
|
84
|
-
usage: AiUsage;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* The `AiResponse` for mapped parts — shared by `create` and the stream. When
|
|
88
|
-
* the request asked for structured output and the model finished its turn,
|
|
89
|
-
* the text is validated with `parseStructured` (a mismatch throws
|
|
90
|
-
* `AI_STRUCTURED_OUTPUT_INVALID`); a filtered answer to a structured request
|
|
91
|
-
* throws `AI_CONTENT_FILTERED`, since there is nothing to parse.
|
|
92
|
-
*/
|
|
93
|
-
export declare function finishGeminiResponse(parts: GeminiResponseParts, request: AiResponseRequest): AiResponse;
|
|
94
|
-
/** An id for a response Gemini did not name. */
|
|
95
|
-
export declare function geminiFallbackResponseId(): string;
|
|
96
|
-
/** Maps a finished `GenerateContentResponse` to an `AiResponse`. */
|
|
97
|
-
export declare function fromGeminiResponse(response: GenerateContentResponse, request: AiResponseRequest): AiResponse;
|
|
98
|
-
//# sourceMappingURL=gemini-content.mapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-content.mapper.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/gemini/gemini-content.mapper.ts"],"names":[],"mappings":"AAkFA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EAIZ,qBAAqB,EACrB,uBAAuB,EACvB,oCAAoC,EACpC,IAAI,EAKL,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,YAAY,EAEjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAGlB,KAAK,OAAO,EACb,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE1F,gGAAgG;AAChG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;CAC/B;AAED,8EAA8E;AAC9E,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;AAEzE,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,iBAAiB,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,6CAA6C;AAC7C,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AA+CjF,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYrE;AAmCD,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAcvE;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,oBAAoB,GAAG,SAAS,CAe5F;AAsBD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAU9E;AAuMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,kBAAkB,GAAG,IAAI,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,aAAa,CA0Df;AAcD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAM;IACpC,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,6EAA6E;IAC7E,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,EAAE;IAgDjC,+DAA+D;IAC/D,MAAM,IAAI,aAAa,EAAE;IAWzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,KAAK;IAyBb,OAAO,CAAC,YAAY;CAerB;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,oCAAoC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAiBnG;AAuBD,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACtD,MAAM,EAAE,YAAY,EAAE,EACtB,aAAa,UAAQ,GACpB,cAAc,CAWhB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAyBvG;AAED,gDAAgD;AAChD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAkB5G"}
|