@zimtsui/brainswitch 0.0.56 → 0.0.57
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/README.md +109 -54
- package/assets/verbatim/declarations.handlebars +11 -0
- package/assets/verbatim/instruction.md +49 -0
- package/build/adaptor.d.ts +40 -9
- package/build/adaptor.js +36 -38
- package/build/adaptor.js.map +1 -1
- package/build/api-types/anthropic/billing.d.ts +5 -5
- package/build/api-types/anthropic/billing.js +1 -2
- package/build/api-types/anthropic/billing.js.map +1 -1
- package/build/api-types/anthropic/tool-codec.d.ts +11 -12
- package/build/api-types/anthropic/tool-codec.js +27 -42
- package/build/api-types/anthropic/tool-codec.js.map +1 -1
- package/build/api-types/google/billing.d.ts +5 -5
- package/build/api-types/google/billing.js +2 -3
- package/build/api-types/google/billing.js.map +1 -1
- package/build/api-types/google/restful-request.d.ts +1 -1
- package/build/api-types/google/restful-request.js +0 -1
- package/build/api-types/google/restful-request.js.map +1 -1
- package/build/api-types/google/tool-codec.d.ts +11 -11
- package/build/api-types/google/tool-codec.js +21 -19
- package/build/api-types/google/tool-codec.js.map +1 -1
- package/build/api-types/{openai-chatcompletion → openai-chatcompletions}/billing.d.ts +2 -3
- package/build/api-types/{openai-chatcompletion → openai-chatcompletions}/billing.js +0 -2
- package/build/api-types/openai-chatcompletions/billing.js.map +1 -0
- package/build/api-types/openai-chatcompletions/tool-codec.d.ts +17 -0
- package/build/api-types/{openai-chatcompletion → openai-chatcompletions}/tool-codec.js +26 -32
- package/build/api-types/openai-chatcompletions/tool-codec.js.map +1 -0
- package/build/api-types/openai-responses/billing.d.ts +5 -5
- package/build/api-types/openai-responses/billing.js +1 -2
- package/build/api-types/openai-responses/billing.js.map +1 -1
- package/build/api-types/openai-responses/tool-codec.d.ts +11 -11
- package/build/api-types/openai-responses/tool-codec.js +36 -32
- package/build/api-types/openai-responses/tool-codec.js.map +1 -1
- package/build/assets.d.ts +7 -0
- package/build/assets.js +8 -0
- package/build/assets.js.map +1 -0
- package/build/compatible-engine/session.d.ts +67 -0
- package/build/compatible-engine/session.js +92 -0
- package/build/compatible-engine/session.js.map +1 -0
- package/build/compatible-engine/structuring.d.ts +36 -0
- package/build/compatible-engine/structuring.js +34 -0
- package/build/compatible-engine/structuring.js.map +1 -0
- package/build/compatible-engine/validation.d.ts +21 -0
- package/build/compatible-engine/validation.js +82 -0
- package/build/compatible-engine/validation.js.map +1 -0
- package/build/compatible-engine.d/agentloop.d.ts +12 -0
- package/build/compatible-engine.d/agentloop.js +52 -0
- package/build/compatible-engine.d/agentloop.js.map +1 -0
- package/build/compatible-engine.d/aliyun/transport.d.ts +12 -0
- package/build/compatible-engine.d/aliyun/transport.js +7 -0
- package/build/compatible-engine.d/aliyun/transport.js.map +1 -0
- package/build/compatible-engine.d/aliyun.d.ts +24 -0
- package/build/compatible-engine.d/aliyun.js +46 -0
- package/build/compatible-engine.d/aliyun.js.map +1 -0
- package/build/compatible-engine.d/anthropic/choice-codec.d.ts +5 -0
- package/build/compatible-engine.d/anthropic/choice-codec.js +26 -0
- package/build/compatible-engine.d/anthropic/choice-codec.js.map +1 -0
- package/build/compatible-engine.d/anthropic/message-codec.d.ts +36 -0
- package/build/compatible-engine.d/anthropic/message-codec.js +86 -0
- package/build/compatible-engine.d/anthropic/message-codec.js.map +1 -0
- package/build/compatible-engine.d/anthropic/transport.d.ts +34 -0
- package/build/compatible-engine.d/anthropic/transport.js +150 -0
- package/build/compatible-engine.d/anthropic/transport.js.map +1 -0
- package/build/compatible-engine.d/anthropic.d.ts +26 -0
- package/build/compatible-engine.d/anthropic.js +46 -0
- package/build/compatible-engine.d/anthropic.js.map +1 -0
- package/build/compatible-engine.d/google/choice-codec.d.ts +5 -0
- package/build/compatible-engine.d/google/choice-codec.js +27 -0
- package/build/compatible-engine.d/google/choice-codec.js.map +1 -0
- package/build/compatible-engine.d/google/message-codec.d.ts +36 -0
- package/build/compatible-engine.d/google/message-codec.js +94 -0
- package/build/compatible-engine.d/google/message-codec.js.map +1 -0
- package/build/compatible-engine.d/google/transport.d.ts +30 -0
- package/build/{compatible.d → compatible-engine.d}/google/transport.js +22 -18
- package/build/compatible-engine.d/google/transport.js.map +1 -0
- package/build/compatible-engine.d/google.d.ts +26 -0
- package/build/compatible-engine.d/google.js +50 -0
- package/build/compatible-engine.d/google.js.map +1 -0
- package/build/compatible-engine.d/openai-chatcompletions/choice-codec.d.ts +5 -0
- package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js +31 -0
- package/build/compatible-engine.d/openai-chatcompletions/choice-codec.js.map +1 -0
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.d.ts +24 -0
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.js +71 -0
- package/build/compatible-engine.d/openai-chatcompletions/message-codec.js.map +1 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.d.ts +38 -0
- package/build/{compatible.d/openai-chatcompletions.d → compatible-engine.d/openai-chatcompletions/transport.d}/monolith.js +25 -22
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/monolith.js.map +1 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.d.ts +37 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js +190 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.d/stream.js.map +1 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.d.ts +10 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.js +11 -0
- package/build/compatible-engine.d/openai-chatcompletions/transport.js.map +1 -0
- package/build/compatible-engine.d/openai-chatcompletions.d.ts +17 -0
- package/build/compatible-engine.d/openai-chatcompletions.js +14 -0
- package/build/compatible-engine.d/openai-chatcompletions.js.map +1 -0
- package/build/compatible-engine.d/openai-responses/choice-codec.d.ts +5 -0
- package/build/compatible-engine.d/openai-responses/choice-codec.js +30 -0
- package/build/compatible-engine.d/openai-responses/choice-codec.js.map +1 -0
- package/build/compatible-engine.d/openai-responses/message-codec.d.ts +36 -0
- package/build/compatible-engine.d/openai-responses/message-codec.js +96 -0
- package/build/compatible-engine.d/openai-responses/message-codec.js.map +1 -0
- package/build/compatible-engine.d/openai-responses/transport.d.ts +35 -0
- package/build/{compatible.d → compatible-engine.d}/openai-responses/transport.js +21 -29
- package/build/compatible-engine.d/openai-responses/transport.js.map +1 -0
- package/build/compatible-engine.d/openai-responses.d.ts +26 -0
- package/build/compatible-engine.d/openai-responses.js +46 -0
- package/build/compatible-engine.d/openai-responses.js.map +1 -0
- package/build/compatible-engine.d.ts +22 -0
- package/build/compatible-engine.js +29 -0
- package/build/compatible-engine.js.map +1 -0
- package/build/config.d.ts +1 -0
- package/build/config.js +1 -2
- package/build/config.js.map +1 -1
- package/build/endpoint-spec.d.ts +1 -0
- package/build/endpoint-spec.js +2 -1
- package/build/endpoint-spec.js.map +1 -1
- package/build/engine/session.d.ts +7 -0
- package/build/{session.js.map → engine/session.js.map} +1 -1
- package/build/engine/transport.d.ts +5 -0
- package/build/engine/transport.js +1 -0
- package/build/engine/transport.js.map +1 -0
- package/build/engine/validation.d.ts +9 -0
- package/build/engine/validation.js +1 -0
- package/build/engine/validation.js.map +1 -0
- package/build/engine.d.ts +49 -40
- package/build/engine.js +88 -70
- package/build/engine.js.map +1 -1
- package/build/exports.d.ts +14 -14
- package/build/exports.js +14 -14
- package/build/exports.js.map +1 -1
- package/build/function.d.ts +79 -66
- package/build/function.js +30 -47
- package/build/function.js.map +1 -1
- package/build/inference-context.d.ts +2 -2
- package/build/inference-context.js +0 -1
- package/build/inference-context.js.map +1 -1
- package/build/native-engines.d/google/message-codec.d.ts +18 -16
- package/build/native-engines.d/google/message-codec.js +31 -33
- package/build/native-engines.d/google/message-codec.js.map +1 -1
- package/build/native-engines.d/google/session.d.ts +44 -51
- package/build/native-engines.d/google/session.js +85 -81
- package/build/native-engines.d/google/session.js.map +1 -1
- package/build/native-engines.d/google/transport.d.ts +22 -19
- package/build/native-engines.d/google/transport.js +13 -13
- package/build/native-engines.d/google/transport.js.map +1 -1
- package/build/native-engines.d/google/validation.d.ts +22 -0
- package/build/native-engines.d/google/validation.js +20 -0
- package/build/native-engines.d/google/validation.js.map +1 -0
- package/build/native-engines.d/google.d/agentloop.d.ts +12 -0
- package/build/native-engines.d/google.d/agentloop.js +57 -0
- package/build/native-engines.d/google.d/agentloop.js.map +1 -0
- package/build/native-engines.d/google.d/exports.d.ts +3 -0
- package/build/native-engines.d/google.d/exports.js +4 -0
- package/build/native-engines.d/google.d/exports.js.map +1 -0
- package/build/native-engines.d/google.d.ts +42 -0
- package/build/native-engines.d/google.js +83 -0
- package/build/native-engines.d/google.js.map +1 -0
- package/build/native-engines.d/openai-responses/choice-codec.d.ts +5 -0
- package/build/native-engines.d/openai-responses/choice-codec.js +30 -0
- package/build/native-engines.d/openai-responses/choice-codec.js.map +1 -0
- package/build/native-engines.d/openai-responses/message-codec.d.ts +19 -17
- package/build/native-engines.d/openai-responses/message-codec.js +31 -25
- package/build/native-engines.d/openai-responses/message-codec.js.map +1 -1
- package/build/native-engines.d/openai-responses/session.d.ts +47 -45
- package/build/native-engines.d/openai-responses/session.js +75 -105
- package/build/native-engines.d/openai-responses/session.js.map +1 -1
- package/build/native-engines.d/openai-responses/structuring.d.ts +19 -0
- package/build/native-engines.d/openai-responses/structuring.js +19 -0
- package/build/native-engines.d/openai-responses/structuring.js.map +1 -0
- package/build/native-engines.d/openai-responses/tool.d.ts +15 -12
- package/build/native-engines.d/openai-responses/tool.js +1 -12
- package/build/native-engines.d/openai-responses/tool.js.map +1 -1
- package/build/native-engines.d/openai-responses/transport.d.ts +24 -25
- package/build/native-engines.d/openai-responses/transport.js +21 -41
- package/build/native-engines.d/openai-responses/transport.js.map +1 -1
- package/build/native-engines.d/openai-responses/validation.d.ts +20 -0
- package/build/native-engines.d/openai-responses/validation.js +80 -0
- package/build/native-engines.d/openai-responses/validation.js.map +1 -0
- package/build/native-engines.d/openai-responses.d/agentloop.d.ts +12 -0
- package/build/native-engines.d/openai-responses.d/agentloop.js +61 -0
- package/build/native-engines.d/openai-responses.d/agentloop.js.map +1 -0
- package/build/native-engines.d/openai-responses.d/exports.d.ts +4 -0
- package/build/native-engines.d/openai-responses.d/exports.js +5 -0
- package/build/native-engines.d/openai-responses.d/exports.js.map +1 -0
- package/build/native-engines.d/openai-responses.d.ts +44 -0
- package/build/native-engines.d/openai-responses.js +78 -0
- package/build/native-engines.d/openai-responses.js.map +1 -0
- package/build/throttle.d.ts +6 -5
- package/build/throttle.js +17 -14
- package/build/throttle.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/verbatim/codec/declarations.d.ts +2 -0
- package/build/verbatim/codec/declarations.js +22 -0
- package/build/verbatim/codec/declarations.js.map +1 -0
- package/build/verbatim/codec/request.d.ts +7 -0
- package/build/verbatim/codec/request.js +53 -0
- package/build/verbatim/codec/request.js.map +1 -0
- package/build/verbatim/codec.d.ts +2 -0
- package/build/verbatim/codec.js +3 -0
- package/build/verbatim/codec.js.map +1 -0
- package/build/verbatim.d.ts +74 -0
- package/build/verbatim.js +17 -0
- package/build/verbatim.js.map +1 -0
- package/examples/agent.ts +65 -0
- package/examples/chat.ts +24 -0
- package/examples/config.ts +24 -0
- package/{test/src → examples}/tsconfig.json +6 -2
- package/examples/verbatim.ts +44 -0
- package/package.json +10 -9
- package/build/agentloop.d.ts +0 -12
- package/build/agentloop.js +0 -43
- package/build/agentloop.js.map +0 -1
- package/build/api-types/openai-chatcompletion/billing.js.map +0 -1
- package/build/api-types/openai-chatcompletion/tool-codec.d.ts +0 -18
- package/build/api-types/openai-chatcompletion/tool-codec.js.map +0 -1
- package/build/compatible/engine.d/aliyun.d.ts +0 -23
- package/build/compatible/engine.d/aliyun.js +0 -44
- package/build/compatible/engine.d/aliyun.js.map +0 -1
- package/build/compatible/engine.d/anthropic.d.ts +0 -23
- package/build/compatible/engine.d/anthropic.js +0 -41
- package/build/compatible/engine.d/anthropic.js.map +0 -1
- package/build/compatible/engine.d/google.d.ts +0 -23
- package/build/compatible/engine.d/google.js +0 -45
- package/build/compatible/engine.d/google.js.map +0 -1
- package/build/compatible/engine.d/openai-responses.d.ts +0 -23
- package/build/compatible/engine.d/openai-responses.js +0 -41
- package/build/compatible/engine.d/openai-responses.js.map +0 -1
- package/build/compatible/engine.d.ts +0 -18
- package/build/compatible/engine.js +0 -21
- package/build/compatible/engine.js.map +0 -1
- package/build/compatible/session.d.ts +0 -78
- package/build/compatible/session.js +0 -138
- package/build/compatible/session.js.map +0 -1
- package/build/compatible/tool-call-validator.d.ts +0 -11
- package/build/compatible/tool-call-validator.js +0 -12
- package/build/compatible/tool-call-validator.js.map +0 -1
- package/build/compatible.d/aliyun/transport.d.ts +0 -11
- package/build/compatible.d/aliyun/transport.js +0 -9
- package/build/compatible.d/aliyun/transport.js.map +0 -1
- package/build/compatible.d/anthropic/message-codec.d.ts +0 -31
- package/build/compatible.d/anthropic/message-codec.js +0 -88
- package/build/compatible.d/anthropic/message-codec.js.map +0 -1
- package/build/compatible.d/anthropic/transport.d.ts +0 -31
- package/build/compatible.d/anthropic/transport.js +0 -137
- package/build/compatible.d/anthropic/transport.js.map +0 -1
- package/build/compatible.d/google/message-codec.d.ts +0 -31
- package/build/compatible.d/google/message-codec.js +0 -98
- package/build/compatible.d/google/message-codec.js.map +0 -1
- package/build/compatible.d/google/transport.d.ts +0 -28
- package/build/compatible.d/google/transport.js.map +0 -1
- package/build/compatible.d/openai-chatcompletions/message-codec.d.ts +0 -19
- package/build/compatible.d/openai-chatcompletions/message-codec.js +0 -66
- package/build/compatible.d/openai-chatcompletions/message-codec.js.map +0 -1
- package/build/compatible.d/openai-chatcompletions/transport.d.ts +0 -9
- package/build/compatible.d/openai-chatcompletions/transport.js +0 -25
- package/build/compatible.d/openai-chatcompletions/transport.js.map +0 -1
- package/build/compatible.d/openai-chatcompletions.d/monolith.d.ts +0 -36
- package/build/compatible.d/openai-chatcompletions.d/monolith.js.map +0 -1
- package/build/compatible.d/openai-chatcompletions.d/stream.d.ts +0 -35
- package/build/compatible.d/openai-chatcompletions.d/stream.js +0 -196
- package/build/compatible.d/openai-chatcompletions.d/stream.js.map +0 -1
- package/build/compatible.d/openai-responses/message-codec.d.ts +0 -32
- package/build/compatible.d/openai-responses/message-codec.js +0 -105
- package/build/compatible.d/openai-responses/message-codec.js.map +0 -1
- package/build/compatible.d/openai-responses/transport.d.ts +0 -33
- package/build/compatible.d/openai-responses/transport.js.map +0 -1
- package/build/frontmatter.d.ts +0 -5
- package/build/frontmatter.js +0 -13
- package/build/frontmatter.js.map +0 -1
- package/build/native-engines.d/google/agentloop.d.ts +0 -12
- package/build/native-engines.d/google/agentloop.js +0 -42
- package/build/native-engines.d/google/agentloop.js.map +0 -1
- package/build/native-engines.d/google/engine.d.ts +0 -35
- package/build/native-engines.d/google/engine.js +0 -73
- package/build/native-engines.d/google/engine.js.map +0 -1
- package/build/native-engines.d/google/exports.d.ts +0 -5
- package/build/native-engines.d/google/exports.js +0 -6
- package/build/native-engines.d/google/exports.js.map +0 -1
- package/build/native-engines.d/openai-responses/agentloop.d.ts +0 -13
- package/build/native-engines.d/openai-responses/agentloop.js +0 -53
- package/build/native-engines.d/openai-responses/agentloop.js.map +0 -1
- package/build/native-engines.d/openai-responses/engine.d.ts +0 -32
- package/build/native-engines.d/openai-responses/engine.js +0 -63
- package/build/native-engines.d/openai-responses/engine.js.map +0 -1
- package/build/native-engines.d/openai-responses/exports.d.ts +0 -6
- package/build/native-engines.d/openai-responses/exports.js +0 -7
- package/build/native-engines.d/openai-responses/exports.js.map +0 -1
- package/build/native-engines.d/openai-responses/tool-call-validator.d.ts +0 -12
- package/build/native-engines.d/openai-responses/tool-call-validator.js +0 -33
- package/build/native-engines.d/openai-responses/tool-call-validator.js.map +0 -1
- package/build/session.d.ts +0 -7
- package/test/build/test-codecs.d.ts +0 -1
- package/test/build/test-codecs.js +0 -230
- package/test/build/test-codecs.js.map +0 -1
- package/test/build/test-compatible-engine.d.ts +0 -1
- package/test/build/test-compatible-engine.js +0 -27
- package/test/build/test-compatible-engine.js.map +0 -1
- package/test/build/test-compatible-engines.d.ts +0 -1
- package/test/build/test-compatible-engines.js +0 -112
- package/test/build/test-compatible-engines.js.map +0 -1
- package/test/build/test-engine.d.ts +0 -1
- package/test/build/test-engine.js +0 -97
- package/test/build/test-engine.js.map +0 -1
- package/test/build/test-helpers.d.ts +0 -46
- package/test/build/test-helpers.js +0 -45
- package/test/build/test-helpers.js.map +0 -1
- package/test/build/test-native-engines.d.ts +0 -1
- package/test/build/test-native-engines.js +0 -64
- package/test/build/test-native-engines.js.map +0 -1
- package/test/build/test.d.ts +0 -5
- package/test/build/test.js +0 -6
- package/test/build/test.js.map +0 -1
- package/test/build/tsconfig.tsbuildinfo +0 -1
- package/test/src/test-codecs.ts +0 -256
- package/test/src/test-compatible-engine.ts +0 -45
- package/test/src/test-compatible-engines.ts +0 -129
- package/test/src/test-engine.ts +0 -144
- package/test/src/test-helpers.ts +0 -53
- package/test/src/test-native-engines.ts +0 -75
- package/test/src/test.ts +0 -5
- /package/build/{session.js → engine/session.js} +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type InferenceParams, type ProviderSpec } from '../../engine.ts';
|
|
2
|
+
import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
|
|
3
|
+
import { Function } from '../../function.ts';
|
|
4
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
5
|
+
import { type InferenceContext } from '../../inference-context.ts';
|
|
6
|
+
import { Throttle } from '../../throttle.ts';
|
|
7
|
+
import type { MessageCodec } from './message-codec.ts';
|
|
8
|
+
import type { Billing } from '../../api-types/anthropic/billing.ts';
|
|
9
|
+
import type { ToolCodec } from '../../api-types/anthropic/tool-codec.ts';
|
|
10
|
+
import type { Verbatim } from '../../verbatim.ts';
|
|
11
|
+
import { Validator } from '../../compatible-engine/validation.ts';
|
|
12
|
+
import type { Structuring } from '../../compatible-engine/structuring.ts';
|
|
13
|
+
import type { Engine } from '../../engine.ts';
|
|
14
|
+
export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<RoleMessage.User.From<fdm>, RoleMessage.Ai.From<fdm, vdm>, RoleMessage.Developer, Session.From<fdm, vdm>> {
|
|
15
|
+
protected ctx: Transport.Context<fdm, vdm>;
|
|
16
|
+
protected client: Anthropic;
|
|
17
|
+
constructor(ctx: Transport.Context<fdm, vdm>);
|
|
18
|
+
protected makeParams(session: Session.From<fdm, vdm>): Anthropic.MessageCreateParamsStreaming;
|
|
19
|
+
fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
20
|
+
}
|
|
21
|
+
export declare namespace Transport {
|
|
22
|
+
interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
23
|
+
providerSpec: ProviderSpec;
|
|
24
|
+
inferenceSpec: InferenceParams;
|
|
25
|
+
fdm: fdm;
|
|
26
|
+
throttle: Throttle;
|
|
27
|
+
choice: Structuring.Choice.From<fdm, vdm>;
|
|
28
|
+
parallelToolCall: boolean;
|
|
29
|
+
messageCodec: MessageCodec<fdm, vdm>;
|
|
30
|
+
toolCodec: ToolCodec<fdm>;
|
|
31
|
+
billing: Billing;
|
|
32
|
+
validator: Validator.From<fdm, vdm>;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { NetworkError, ResponseInvalid } from "../../engine.js";
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
import { logger } from "../../telemetry.js";
|
|
4
|
+
import * as ChoiceCodec from "./choice-codec.js";
|
|
5
|
+
export class Transport {
|
|
6
|
+
ctx;
|
|
7
|
+
client;
|
|
8
|
+
constructor(ctx) {
|
|
9
|
+
this.ctx = ctx;
|
|
10
|
+
this.client = new Anthropic({
|
|
11
|
+
baseURL: this.ctx.providerSpec.baseUrl,
|
|
12
|
+
apiKey: this.ctx.providerSpec.apiKey,
|
|
13
|
+
fetchOptions: { dispatcher: this.ctx.providerSpec.proxyAgent },
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
makeParams(session) {
|
|
17
|
+
const tools = this.ctx.toolCodec.encodeFunctionDeclarationMap(this.ctx.fdm);
|
|
18
|
+
return {
|
|
19
|
+
model: this.ctx.inferenceSpec.model,
|
|
20
|
+
stream: true,
|
|
21
|
+
messages: session.chatMessages.map(chatMessage => this.ctx.messageCodec.encodeChatMessage(chatMessage)),
|
|
22
|
+
system: session.developerMessage && this.ctx.messageCodec.encodeDeveloperMessage(session.developerMessage),
|
|
23
|
+
tools: tools.length ? tools : undefined,
|
|
24
|
+
tool_choice: tools.length ? ChoiceCodec.encode(this.ctx.choice, this.ctx.parallelToolCall) : undefined,
|
|
25
|
+
max_tokens: this.ctx.inferenceSpec.maxTokens ?? 64 * 1024,
|
|
26
|
+
...this.ctx.inferenceSpec.additionalOptions,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async fetch(wfctx, session, signal) {
|
|
30
|
+
await this.ctx.throttle.requests(wfctx);
|
|
31
|
+
// Prepare request
|
|
32
|
+
const params = this.makeParams(session);
|
|
33
|
+
logger.message.trace(params);
|
|
34
|
+
// Send request
|
|
35
|
+
const stream = this.client.messages.stream(params, { signal });
|
|
36
|
+
// Get response
|
|
37
|
+
let response = null;
|
|
38
|
+
try {
|
|
39
|
+
for await (const event of stream) {
|
|
40
|
+
if (event.type === 'message_start') {
|
|
41
|
+
logger.message.trace(event);
|
|
42
|
+
response = structuredClone(event.message);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (response) { }
|
|
46
|
+
else
|
|
47
|
+
throw new Error();
|
|
48
|
+
if (event.type === 'message_delta') {
|
|
49
|
+
logger.message.trace(event);
|
|
50
|
+
response.stop_sequence = event.delta.stop_sequence ?? response.stop_sequence;
|
|
51
|
+
response.stop_reason = event.delta.stop_reason ?? response.stop_reason;
|
|
52
|
+
response.usage.input_tokens = event.usage.input_tokens ?? response.usage.input_tokens;
|
|
53
|
+
response.usage.output_tokens = event.usage.output_tokens;
|
|
54
|
+
response.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens ?? response.usage.cache_read_input_tokens;
|
|
55
|
+
response.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens ?? response.usage.cache_creation_input_tokens;
|
|
56
|
+
response.usage.server_tool_use = event.usage.server_tool_use ?? response.usage.server_tool_use;
|
|
57
|
+
}
|
|
58
|
+
else if (event.type === 'message_stop') {
|
|
59
|
+
logger.message.trace(event);
|
|
60
|
+
}
|
|
61
|
+
else if (event.type === 'content_block_start') {
|
|
62
|
+
logger.message.trace(event);
|
|
63
|
+
const contentBlock = structuredClone(event.content_block);
|
|
64
|
+
response.content.push(contentBlock);
|
|
65
|
+
if (contentBlock.type === 'tool_use')
|
|
66
|
+
contentBlock.input = '';
|
|
67
|
+
}
|
|
68
|
+
else if (event.type === 'content_block_delta') {
|
|
69
|
+
const contentBlock = response.content[event.index];
|
|
70
|
+
if (event.delta.type === 'text_delta') {
|
|
71
|
+
logger.inference.debug(event.delta.text);
|
|
72
|
+
if (contentBlock?.type === 'text') { }
|
|
73
|
+
else
|
|
74
|
+
throw new Error();
|
|
75
|
+
contentBlock.text += event.delta.text;
|
|
76
|
+
}
|
|
77
|
+
else if (event.delta.type === 'thinking_delta') {
|
|
78
|
+
logger.inference.trace(event.delta.thinking);
|
|
79
|
+
if (contentBlock?.type === 'thinking') { }
|
|
80
|
+
else
|
|
81
|
+
throw new Error();
|
|
82
|
+
contentBlock.thinking += event.delta.thinking;
|
|
83
|
+
}
|
|
84
|
+
else if (event.delta.type === 'signature_delta') {
|
|
85
|
+
if (contentBlock?.type === 'thinking') { }
|
|
86
|
+
else
|
|
87
|
+
throw new Error();
|
|
88
|
+
contentBlock.signature += event.delta.signature;
|
|
89
|
+
}
|
|
90
|
+
else if (event.delta.type === 'input_json_delta') {
|
|
91
|
+
logger.inference.trace(event.delta.partial_json);
|
|
92
|
+
if (contentBlock?.type === 'tool_use') { }
|
|
93
|
+
else
|
|
94
|
+
throw new Error();
|
|
95
|
+
if (typeof contentBlock.input === 'string') { }
|
|
96
|
+
else
|
|
97
|
+
throw new Error();
|
|
98
|
+
contentBlock.input += event.delta.partial_json;
|
|
99
|
+
}
|
|
100
|
+
else
|
|
101
|
+
throw new Error('Unknown type of content block delta', { cause: event.delta });
|
|
102
|
+
}
|
|
103
|
+
else if (event.type === 'content_block_stop') {
|
|
104
|
+
const contentBlock = response.content[event.index];
|
|
105
|
+
if (contentBlock?.type === 'text')
|
|
106
|
+
logger.inference.debug('\n');
|
|
107
|
+
else if (contentBlock?.type === 'thinking')
|
|
108
|
+
logger.inference.trace('\n');
|
|
109
|
+
else if (contentBlock?.type === 'tool_use')
|
|
110
|
+
logger.inference.debug('\n');
|
|
111
|
+
logger.message.trace(event);
|
|
112
|
+
if (contentBlock?.type === 'tool_use') {
|
|
113
|
+
if (typeof contentBlock.input === 'string') { }
|
|
114
|
+
else
|
|
115
|
+
throw new Error();
|
|
116
|
+
try {
|
|
117
|
+
contentBlock.input = JSON.parse(contentBlock.input);
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
throw new ResponseInvalid('Invalid JSON of tool use input', { cause: contentBlock.input });
|
|
121
|
+
}
|
|
122
|
+
logger.message.debug(contentBlock);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else
|
|
126
|
+
throw new Error('Unknown stream event', { cause: event });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
if (e instanceof TypeError)
|
|
132
|
+
throw new NetworkError(undefined, { cause: e });
|
|
133
|
+
else
|
|
134
|
+
throw e;
|
|
135
|
+
}
|
|
136
|
+
// Validate response
|
|
137
|
+
if (response) { }
|
|
138
|
+
else
|
|
139
|
+
throw new Error();
|
|
140
|
+
if (response.stop_reason === 'max_tokens')
|
|
141
|
+
throw new ResponseInvalid('Token limit exceeded.', { cause: response });
|
|
142
|
+
if (response.stop_reason === 'end_turn' || response.stop_reason === 'tool_use') { }
|
|
143
|
+
else
|
|
144
|
+
throw new ResponseInvalid('Abnormal stop reason', { cause: response });
|
|
145
|
+
logger.message.debug(response.usage);
|
|
146
|
+
wfctx.cost?.(this.ctx.billing.charge(response.usage));
|
|
147
|
+
return this.ctx.messageCodec.decodeAiMessage(response.content);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/anthropic/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CompatibleEngine } from '../compatible-engine.ts';
|
|
2
|
+
import { Function } from '../function.ts';
|
|
3
|
+
import { ToolCodec } from '../api-types/anthropic/tool-codec.ts';
|
|
4
|
+
import { Billing } from '../api-types/anthropic/billing.ts';
|
|
5
|
+
import { Validator } from '../compatible-engine/validation.ts';
|
|
6
|
+
import * as MessageCodecModule from './anthropic/message-codec.ts';
|
|
7
|
+
import * as TransportModule from './anthropic/transport.ts';
|
|
8
|
+
import * as ChoiceCodecModule from './anthropic/choice-codec.ts';
|
|
9
|
+
import type { Verbatim } from '../verbatim.ts';
|
|
10
|
+
export type AnthropicCompatibleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = AnthropicCompatibleEngine.Instance<fdm, vdm>;
|
|
11
|
+
export declare namespace AnthropicCompatibleEngine {
|
|
12
|
+
class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Instance<fdm, vdm> {
|
|
13
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
14
|
+
protected messageCodec: AnthropicCompatibleEngine.MessageCodec<fdm, vdm>;
|
|
15
|
+
protected billing: Billing;
|
|
16
|
+
protected validator: Validator.From<fdm, vdm>;
|
|
17
|
+
protected transport: AnthropicCompatibleEngine.Transport<fdm, vdm>;
|
|
18
|
+
protected parallelToolCall: boolean;
|
|
19
|
+
constructor(options: AnthropicCompatibleEngine.Options<fdm, vdm>);
|
|
20
|
+
}
|
|
21
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Options<fdm, vdm> {
|
|
22
|
+
}
|
|
23
|
+
export import MessageCodec = MessageCodecModule.MessageCodec;
|
|
24
|
+
export import Transport = TransportModule.Transport;
|
|
25
|
+
export import ChoiceCodec = ChoiceCodecModule;
|
|
26
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CompatibleEngine } from "../compatible-engine.js";
|
|
2
|
+
import { ToolCodec } from "../api-types/anthropic/tool-codec.js";
|
|
3
|
+
import { Billing } from "../api-types/anthropic/billing.js";
|
|
4
|
+
import { Validator } from "../compatible-engine/validation.js";
|
|
5
|
+
import * as MessageCodecModule from "./anthropic/message-codec.js";
|
|
6
|
+
import * as TransportModule from "./anthropic/transport.js";
|
|
7
|
+
import * as ChoiceCodecModule from "./anthropic/choice-codec.js";
|
|
8
|
+
export var AnthropicCompatibleEngine;
|
|
9
|
+
(function (AnthropicCompatibleEngine) {
|
|
10
|
+
class Instance extends CompatibleEngine.Instance {
|
|
11
|
+
toolCodec;
|
|
12
|
+
messageCodec;
|
|
13
|
+
billing;
|
|
14
|
+
validator;
|
|
15
|
+
transport;
|
|
16
|
+
parallelToolCall;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
super(options);
|
|
19
|
+
this.parallelToolCall = options.parallelToolCall ?? false;
|
|
20
|
+
this.toolCodec = new ToolCodec({ fdm: this.fdm });
|
|
21
|
+
this.messageCodec = new AnthropicCompatibleEngine.MessageCodec({
|
|
22
|
+
toolCodec: this.toolCodec,
|
|
23
|
+
vdm: this.vdm,
|
|
24
|
+
});
|
|
25
|
+
this.billing = new Billing({ pricing: this.pricing });
|
|
26
|
+
this.validator = new Validator({ choice: this.choice });
|
|
27
|
+
this.transport = new AnthropicCompatibleEngine.Transport({
|
|
28
|
+
providerSpec: this.providerSpec,
|
|
29
|
+
inferenceSpec: this.inferenceParams,
|
|
30
|
+
fdm: this.fdm,
|
|
31
|
+
throttle: this.throttle,
|
|
32
|
+
choice: this.choice,
|
|
33
|
+
parallelToolCall: this.parallelToolCall,
|
|
34
|
+
messageCodec: this.messageCodec,
|
|
35
|
+
toolCodec: this.toolCodec,
|
|
36
|
+
billing: this.billing,
|
|
37
|
+
validator: this.validator,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
AnthropicCompatibleEngine.Instance = Instance;
|
|
42
|
+
AnthropicCompatibleEngine.MessageCodec = MessageCodecModule.MessageCodec;
|
|
43
|
+
AnthropicCompatibleEngine.Transport = TransportModule.Transport;
|
|
44
|
+
AnthropicCompatibleEngine.ChoiceCodec = ChoiceCodecModule;
|
|
45
|
+
})(AnthropicCompatibleEngine || (AnthropicCompatibleEngine = {}));
|
|
46
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/compatible-engine.d/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,kBAAkB,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,iBAAiB,MAAM,6BAA6B,CAAC;AASjE,MAAM,KAAW,yBAAyB,CA6CzC;AA7CD,WAAiB,yBAAyB;IACtC,MAAa,QAGX,SAAQ,gBAAgB,CAAC,QAAkB;QAC/B,SAAS,CAAiB;QAC1B,YAAY,CAAmD;QAC/D,OAAO,CAAU;QACjB,SAAS,CAA2B;QACpC,SAAS,CAAgD;QAChD,gBAAgB,CAAU;QAE7C,YAAmB,OAAoD;YACnE,KAAK,CAAC,OAAO,CAAC,CAAC;YACf,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,yBAAyB,CAAC,YAAY,CAAC;gBAC3D,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,GAAG,IAAI,yBAAyB,CAAC,SAAS,CAAC;gBACrD,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,eAAe;gBACnC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC5B,CAAC,CAAC;QACP,CAAC;KACJ;IAlCY,kCAAQ,WAkCpB,CAAA;IAOa,sCAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAC/C,mCAAS,GAAG,eAAe,CAAC,SAAS,CAAC;IACtC,qCAAW,GAAG,iBAAiB,CAAC;AAClD,CAAC,EA7CgB,yBAAyB,KAAzB,yBAAyB,QA6CzC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Structuring } from '../../compatible-engine/structuring.ts';
|
|
2
|
+
import type { Function } from '../../function.ts';
|
|
3
|
+
import type { Verbatim } from '../../verbatim.ts';
|
|
4
|
+
import * as Google from '@google/genai';
|
|
5
|
+
export declare function encode<fdu extends Function.Decl.Proto, vdu extends Verbatim.Decl.Proto>(choice: Structuring.Choice<fdu, vdu>): Google.FunctionCallingConfig;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Structuring } from "../../compatible-engine/structuring.js";
|
|
2
|
+
import * as Google from '@google/genai';
|
|
3
|
+
export function encode(choice) {
|
|
4
|
+
if (choice === Structuring.Choice.NONE)
|
|
5
|
+
return { mode: Google.FunctionCallingConfigMode.NONE };
|
|
6
|
+
else if (choice === Structuring.Choice.REQUIRED)
|
|
7
|
+
return { mode: Google.FunctionCallingConfigMode.AUTO };
|
|
8
|
+
else if (choice === Structuring.Choice.ANYONE)
|
|
9
|
+
return { mode: Google.FunctionCallingConfigMode.AUTO };
|
|
10
|
+
else if (choice === Structuring.Choice.AUTO)
|
|
11
|
+
return { mode: Google.FunctionCallingConfigMode.AUTO };
|
|
12
|
+
else if (choice === Structuring.Choice.FCall.REQUIRED)
|
|
13
|
+
return { mode: Google.FunctionCallingConfigMode.ANY };
|
|
14
|
+
else if (choice === Structuring.Choice.FCall.ANYONE)
|
|
15
|
+
return { mode: Google.FunctionCallingConfigMode.ANY };
|
|
16
|
+
else if (choice instanceof Structuring.Choice.FCall)
|
|
17
|
+
return { mode: Google.FunctionCallingConfigMode.ANY, allowedFunctionNames: [choice.name] };
|
|
18
|
+
else if (choice === Structuring.Choice.VRequest.REQUIRED)
|
|
19
|
+
return { mode: Google.FunctionCallingConfigMode.NONE };
|
|
20
|
+
else if (choice === Structuring.Choice.VRequest.ANYONE)
|
|
21
|
+
return { mode: Google.FunctionCallingConfigMode.NONE };
|
|
22
|
+
else if (choice instanceof Structuring.Choice.VRequest)
|
|
23
|
+
return { mode: Google.FunctionCallingConfigMode.NONE };
|
|
24
|
+
else
|
|
25
|
+
throw new Error('Invalid structuring choice');
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=choice-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choice-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/google/choice-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAGrE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,MAAM,UAAU,MAAM,CAIlB,MAAoC;IAGpC,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SAC1F,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SACnG,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SACjG,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SAE/F,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC;SACxG,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC;SACtG,IAAI,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK;QAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;SAE1F,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SAC5G,IAAI,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;SAC1G,IAAI,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;;QAE1G,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
|
|
2
|
+
import { Function } from '../../function.ts';
|
|
3
|
+
import * as Google from '@google/genai';
|
|
4
|
+
import { type ToolCodec } from '../../api-types/google/tool-codec.ts';
|
|
5
|
+
import type { Verbatim } from '../../verbatim.ts';
|
|
6
|
+
declare const NOMINAL: unique symbol;
|
|
7
|
+
export declare class MessageCodec<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> {
|
|
8
|
+
protected ctx: MessageCodec.Context<fdm, vdm>;
|
|
9
|
+
constructor(ctx: MessageCodec.Context<fdm, vdm>);
|
|
10
|
+
encodeAiMessage(aiMessage: RoleMessage.Ai.From<fdm, vdm>): Google.Content;
|
|
11
|
+
encodeChatMessages(chatMessages: Session.ChatMessage.From<fdm, vdm>[]): Google.Content[];
|
|
12
|
+
encodeUserMessage(userMessage: RoleMessage.User.From<fdm>): Google.Content;
|
|
13
|
+
encodeDeveloperMessage(developerMessage: RoleMessage.Developer): Google.Content;
|
|
14
|
+
/**
|
|
15
|
+
* @throws {@link VerbatimCodec.Request.Invalid}
|
|
16
|
+
*/
|
|
17
|
+
decodeAiMessage(content: Google.Content): MessageCodec.Message.Ai.From<fdm, vdm>;
|
|
18
|
+
}
|
|
19
|
+
export declare namespace MessageCodec {
|
|
20
|
+
interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
21
|
+
toolCodec: ToolCodec<fdm>;
|
|
22
|
+
vdm: vdm;
|
|
23
|
+
}
|
|
24
|
+
namespace Message {
|
|
25
|
+
class Ai<out fdu extends Function.Decl.Proto, out vdu extends Verbatim.Decl.Proto> extends RoleMessage.Ai<fdu, vdu> {
|
|
26
|
+
protected raw: Google.Content;
|
|
27
|
+
protected [NOMINAL]: never;
|
|
28
|
+
constructor(parts: RoleMessage.Ai.Part<fdu, vdu>[], raw: Google.Content);
|
|
29
|
+
getRaw(): Google.Content;
|
|
30
|
+
}
|
|
31
|
+
namespace Ai {
|
|
32
|
+
type From<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = Ai<Function.Decl.From<fdm>, Verbatim.Decl.From<vdm>>;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ResponseInvalid } from "../../engine.js";
|
|
2
|
+
import { RoleMessage } from "../../compatible-engine/session.js";
|
|
3
|
+
import { Function } from "../../function.js";
|
|
4
|
+
import * as Google from '@google/genai';
|
|
5
|
+
import * as VerbatimCodec from "../../verbatim/codec.js";
|
|
6
|
+
const NOMINAL = Symbol();
|
|
7
|
+
export class MessageCodec {
|
|
8
|
+
ctx;
|
|
9
|
+
constructor(ctx) {
|
|
10
|
+
this.ctx = ctx;
|
|
11
|
+
}
|
|
12
|
+
encodeAiMessage(aiMessage) {
|
|
13
|
+
if (aiMessage instanceof MessageCodec.Message.Ai)
|
|
14
|
+
return aiMessage.getRaw();
|
|
15
|
+
else {
|
|
16
|
+
const parts = aiMessage.getParts().map(part => {
|
|
17
|
+
if (part instanceof RoleMessage.Part.Text)
|
|
18
|
+
return Google.createPartFromText(part.text);
|
|
19
|
+
else if (part instanceof Function.Call) {
|
|
20
|
+
if (part.args instanceof Object) { }
|
|
21
|
+
else
|
|
22
|
+
throw new Error();
|
|
23
|
+
return Google.createPartFromFunctionCall(part.name, part.args);
|
|
24
|
+
}
|
|
25
|
+
else
|
|
26
|
+
throw new Error();
|
|
27
|
+
});
|
|
28
|
+
return Google.createModelContent(parts);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
encodeChatMessages(chatMessages) {
|
|
32
|
+
return chatMessages.map(chatMessage => {
|
|
33
|
+
if (chatMessage instanceof RoleMessage.User)
|
|
34
|
+
return this.encodeUserMessage(chatMessage);
|
|
35
|
+
else if (chatMessage instanceof RoleMessage.Ai)
|
|
36
|
+
return this.encodeAiMessage(chatMessage);
|
|
37
|
+
else
|
|
38
|
+
throw new Error();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
encodeUserMessage(userMessage) {
|
|
42
|
+
const parts = userMessage.getParts().map(part => {
|
|
43
|
+
if (part instanceof RoleMessage.Part.Text)
|
|
44
|
+
return Google.createPartFromText(part.text);
|
|
45
|
+
else if (part instanceof Function.Response)
|
|
46
|
+
return this.ctx.toolCodec.encodeFunctionResponse(part);
|
|
47
|
+
else
|
|
48
|
+
throw new Error();
|
|
49
|
+
});
|
|
50
|
+
return Google.createUserContent(parts);
|
|
51
|
+
}
|
|
52
|
+
encodeDeveloperMessage(developerMessage) {
|
|
53
|
+
const parts = developerMessage.getParts().map(part => Google.createPartFromText(part.text));
|
|
54
|
+
return { parts };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @throws {@link VerbatimCodec.Request.Invalid}
|
|
58
|
+
*/
|
|
59
|
+
decodeAiMessage(content) {
|
|
60
|
+
if (content.parts) { }
|
|
61
|
+
else
|
|
62
|
+
throw new Error();
|
|
63
|
+
return new MessageCodec.Message.Ai(content.parts.flatMap(part => {
|
|
64
|
+
const parts = [];
|
|
65
|
+
if (part.functionCall || part.text) { }
|
|
66
|
+
else
|
|
67
|
+
throw new ResponseInvalid('Unknown content part', { cause: content });
|
|
68
|
+
if (part.text) {
|
|
69
|
+
const vrs = VerbatimCodec.Request.decode(part.text, this.ctx.vdm);
|
|
70
|
+
parts.push(new RoleMessage.Part.Text(part.text, vrs));
|
|
71
|
+
}
|
|
72
|
+
if (part.functionCall)
|
|
73
|
+
parts.push(this.ctx.toolCodec.decodeFunctionCall(part.functionCall));
|
|
74
|
+
return parts;
|
|
75
|
+
}), content);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
(function (MessageCodec) {
|
|
79
|
+
let Message;
|
|
80
|
+
(function (Message) {
|
|
81
|
+
class Ai extends RoleMessage.Ai {
|
|
82
|
+
raw;
|
|
83
|
+
constructor(parts, raw) {
|
|
84
|
+
super(parts);
|
|
85
|
+
this.raw = raw;
|
|
86
|
+
}
|
|
87
|
+
getRaw() {
|
|
88
|
+
return this.raw;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
Message.Ai = Ai;
|
|
92
|
+
})(Message = MessageCodec.Message || (MessageCodec.Message = {}));
|
|
93
|
+
})(MessageCodec || (MessageCodec = {}));
|
|
94
|
+
//# sourceMappingURL=message-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/google/message-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Engine, type InferenceParams as InferenceParams, type ProviderSpec } from '../../engine.ts';
|
|
2
|
+
import { RoleMessage, type Session } from '../../compatible-engine/session.ts';
|
|
3
|
+
import { Function } from '../../function.ts';
|
|
4
|
+
import { type InferenceContext } from '../../inference-context.ts';
|
|
5
|
+
import { Throttle } from '../../throttle.ts';
|
|
6
|
+
import type { MessageCodec } from './message-codec.ts';
|
|
7
|
+
import type { ToolCodec } from '../../api-types/google/tool-codec.ts';
|
|
8
|
+
import type { Billing } from '../../api-types/google/billing.ts';
|
|
9
|
+
import type { Verbatim } from '../../verbatim.ts';
|
|
10
|
+
import type { Validator } from '../../compatible-engine/validation.ts';
|
|
11
|
+
import type { Structuring } from '../../compatible-engine/structuring.ts';
|
|
12
|
+
export declare class Transport<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> implements Engine.Transport<RoleMessage.User.From<fdm>, RoleMessage.Ai.From<fdm, vdm>, RoleMessage.Developer, Session.From<fdm, vdm>> {
|
|
13
|
+
protected ctx: Transport.Context<fdm, vdm>;
|
|
14
|
+
protected apiURL: URL;
|
|
15
|
+
constructor(ctx: Transport.Context<fdm, vdm>);
|
|
16
|
+
fetch(wfctx: InferenceContext, session: Session.From<fdm, vdm>, signal?: AbortSignal): Promise<RoleMessage.Ai.From<fdm, vdm>>;
|
|
17
|
+
}
|
|
18
|
+
export declare namespace Transport {
|
|
19
|
+
interface Context<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> {
|
|
20
|
+
inferenceParams: InferenceParams;
|
|
21
|
+
providerSpec: ProviderSpec;
|
|
22
|
+
fdm: fdm;
|
|
23
|
+
throttle: Throttle;
|
|
24
|
+
choice: Structuring.Choice.From<fdm, vdm>;
|
|
25
|
+
messageCodec: MessageCodec<fdm, vdm>;
|
|
26
|
+
toolCodec: ToolCodec<fdm>;
|
|
27
|
+
billing: Billing;
|
|
28
|
+
validator: Validator.From<fdm, vdm>;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { ResponseInvalid } from
|
|
2
|
-
import { RoleMessage } from '#@/compatible/session.ts';
|
|
3
|
-
import { Function } from '#@/function.ts';
|
|
1
|
+
import { NetworkError, ResponseInvalid } from "../../engine.js";
|
|
4
2
|
import * as Google from '@google/genai';
|
|
5
3
|
import * as Undici from 'undici';
|
|
6
|
-
import {} from
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
export class GoogleCompatibleTransport {
|
|
4
|
+
import { logger } from "../../telemetry.js";
|
|
5
|
+
import * as ChoiceCodec from "./choice-codec.js";
|
|
6
|
+
export class Transport {
|
|
10
7
|
ctx;
|
|
11
8
|
apiURL;
|
|
12
9
|
constructor(ctx) {
|
|
@@ -14,17 +11,18 @@ export class GoogleCompatibleTransport {
|
|
|
14
11
|
this.apiURL = new URL(`${this.ctx.providerSpec.baseUrl}/v1beta/models/${this.ctx.inferenceParams.model}:generateContent`);
|
|
15
12
|
}
|
|
16
13
|
async fetch(wfctx, session, signal) {
|
|
17
|
-
const systemInstruction = session.developerMessage && this.ctx.messageCodec.convertFromDeveloperMessage(session.developerMessage);
|
|
18
|
-
const contents = this.ctx.messageCodec.convertFromChatMessages(session.chatMessages);
|
|
19
14
|
await this.ctx.throttle.requests(wfctx);
|
|
20
|
-
|
|
15
|
+
// Prepare request body
|
|
16
|
+
const systemInstruction = session.developerMessage && this.ctx.messageCodec.encodeDeveloperMessage(session.developerMessage);
|
|
17
|
+
const contents = this.ctx.messageCodec.encodeChatMessages(session.chatMessages);
|
|
18
|
+
const tools = this.ctx.toolCodec.encodeFunctionDeclarationMap(this.ctx.fdm);
|
|
21
19
|
const reqbody = {
|
|
22
20
|
contents,
|
|
23
21
|
tools: tools.length ? [{
|
|
24
22
|
functionDeclarations: tools,
|
|
25
23
|
}] : undefined,
|
|
26
24
|
toolConfig: tools.length ? {
|
|
27
|
-
functionCallingConfig:
|
|
25
|
+
functionCallingConfig: ChoiceCodec.encode(this.ctx.choice),
|
|
28
26
|
} : undefined,
|
|
29
27
|
systemInstruction,
|
|
30
28
|
generationConfig: this.ctx.inferenceParams.maxTokens || this.ctx.inferenceParams.additionalOptions ? {
|
|
@@ -33,6 +31,7 @@ export class GoogleCompatibleTransport {
|
|
|
33
31
|
} : undefined,
|
|
34
32
|
};
|
|
35
33
|
logger.message.trace(reqbody);
|
|
34
|
+
// Send request
|
|
36
35
|
const res = await Undici.fetch(this.apiURL, {
|
|
37
36
|
method: 'POST',
|
|
38
37
|
headers: new Headers({
|
|
@@ -42,12 +41,19 @@ export class GoogleCompatibleTransport {
|
|
|
42
41
|
body: JSON.stringify(reqbody),
|
|
43
42
|
dispatcher: this.ctx.providerSpec.proxyAgent,
|
|
44
43
|
signal,
|
|
44
|
+
}).catch(e => {
|
|
45
|
+
if (e instanceof TypeError)
|
|
46
|
+
throw new NetworkError(undefined, { cause: e });
|
|
47
|
+
else
|
|
48
|
+
throw e;
|
|
45
49
|
});
|
|
46
|
-
|
|
50
|
+
// Get response
|
|
47
51
|
if (res.ok) { }
|
|
48
52
|
else
|
|
49
53
|
throw new Error(undefined, { cause: res });
|
|
50
54
|
const response = await res.json();
|
|
55
|
+
logger.message.trace(response);
|
|
56
|
+
// Validate response
|
|
51
57
|
if (response.candidates?.[0]?.content?.parts?.length) { }
|
|
52
58
|
else
|
|
53
59
|
throw new ResponseInvalid('Content missing', { cause: response });
|
|
@@ -56,19 +62,17 @@ export class GoogleCompatibleTransport {
|
|
|
56
62
|
if (response.candidates[0].finishReason === Google.FinishReason.STOP) { }
|
|
57
63
|
else
|
|
58
64
|
throw new ResponseInvalid('Abnormal finish reason', { cause: response });
|
|
65
|
+
if (response.usageMetadata) { }
|
|
66
|
+
else
|
|
67
|
+
throw new ResponseInvalid('Usage metadata missing', { cause: response });
|
|
59
68
|
for (const part of response.candidates[0].content.parts) {
|
|
60
69
|
if (part.text)
|
|
61
70
|
logger.inference.debug(part.text);
|
|
62
71
|
if (part.functionCall)
|
|
63
72
|
logger.message.debug(part.functionCall);
|
|
64
73
|
}
|
|
65
|
-
if (response.usageMetadata) { }
|
|
66
|
-
else
|
|
67
|
-
throw new ResponseInvalid('Usage metadata missing', { cause: response });
|
|
68
74
|
wfctx.cost?.(this.ctx.billing.charge(response.usageMetadata));
|
|
69
|
-
|
|
70
|
-
this.ctx.toolCallValidator.validate(aiMessage.getFunctionCalls());
|
|
71
|
-
return aiMessage;
|
|
75
|
+
return this.ctx.messageCodec.decodeAiMessage(response.candidates[0].content);
|
|
72
76
|
}
|
|
73
77
|
}
|
|
74
78
|
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/compatible-engine.d/google/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CompatibleEngine } from '../compatible-engine.ts';
|
|
2
|
+
import { Function } from '../function.ts';
|
|
3
|
+
import * as MessageCodecModule from './google/message-codec.ts';
|
|
4
|
+
import { ToolCodec } from '../api-types/google/tool-codec.ts';
|
|
5
|
+
import { Billing } from '../api-types/google/billing.ts';
|
|
6
|
+
import { Validator } from '../compatible-engine/validation.ts';
|
|
7
|
+
import * as TransportModule from './google/transport.ts';
|
|
8
|
+
import type { Verbatim } from '../verbatim.ts';
|
|
9
|
+
import * as ChoiceCodecModule from './google/choice-codec.ts';
|
|
10
|
+
export type GoogleCompatibleEngine<fdm extends Function.Decl.Map.Proto, vdm extends Verbatim.Decl.Map.Proto> = GoogleCompatibleEngine.Instance<fdm, vdm>;
|
|
11
|
+
export declare namespace GoogleCompatibleEngine {
|
|
12
|
+
class Instance<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Instance<fdm, vdm> {
|
|
13
|
+
protected toolCodec: ToolCodec<fdm>;
|
|
14
|
+
protected messageCodec: GoogleCompatibleEngine.MessageCodec<fdm, vdm>;
|
|
15
|
+
protected billing: Billing;
|
|
16
|
+
protected validator: Validator.From<fdm, vdm>;
|
|
17
|
+
protected transport: GoogleCompatibleEngine.Transport<fdm, vdm>;
|
|
18
|
+
protected parallelToolCall: boolean;
|
|
19
|
+
constructor(options: GoogleCompatibleEngine.Options<fdm, vdm>);
|
|
20
|
+
}
|
|
21
|
+
interface Options<in out fdm extends Function.Decl.Map.Proto, in out vdm extends Verbatim.Decl.Map.Proto> extends CompatibleEngine.Options<fdm, vdm> {
|
|
22
|
+
}
|
|
23
|
+
export import Transport = TransportModule.Transport;
|
|
24
|
+
export import MessageCodec = MessageCodecModule.MessageCodec;
|
|
25
|
+
export import ChoiceCodec = ChoiceCodecModule;
|
|
26
|
+
}
|