@zyraxon-ai/llm 19.0.5
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 +131 -0
- package/dist/cache-policy.d.ts +3 -0
- package/dist/cache-policy.d.ts.map +1 -0
- package/dist/cache-policy.js +109 -0
- package/dist/cache-policy.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/llm.d.ts +205 -0
- package/dist/llm.d.ts.map +1 -0
- package/dist/llm.js +82 -0
- package/dist/llm.js.map +1 -0
- package/dist/protocols/anthropic-messages.d.ts +340 -0
- package/dist/protocols/anthropic-messages.d.ts.map +1 -0
- package/dist/protocols/anthropic-messages.js +719 -0
- package/dist/protocols/anthropic-messages.js.map +1 -0
- package/dist/protocols/bedrock-converse.d.ts +472 -0
- package/dist/protocols/bedrock-converse.d.ts.map +1 -0
- package/dist/protocols/bedrock-converse.js +529 -0
- package/dist/protocols/bedrock-converse.js.map +1 -0
- package/dist/protocols/bedrock-event-stream.d.ts +10 -0
- package/dist/protocols/bedrock-event-stream.d.ts.map +1 -0
- package/dist/protocols/bedrock-event-stream.js +64 -0
- package/dist/protocols/bedrock-event-stream.js.map +1 -0
- package/dist/protocols/gemini.d.ts +165 -0
- package/dist/protocols/gemini.d.ts.map +1 -0
- package/dist/protocols/gemini.js +420 -0
- package/dist/protocols/gemini.js.map +1 -0
- package/dist/protocols/index.d.ts +7 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +7 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/protocols/openai-chat.d.ts +297 -0
- package/dist/protocols/openai-chat.d.ts.map +1 -0
- package/dist/protocols/openai-chat.js +426 -0
- package/dist/protocols/openai-chat.js.map +1 -0
- package/dist/protocols/openai-compatible-chat.d.ts +12 -0
- package/dist/protocols/openai-compatible-chat.d.ts.map +1 -0
- package/dist/protocols/openai-compatible-chat.js +20 -0
- package/dist/protocols/openai-compatible-chat.js.map +1 -0
- package/dist/protocols/openai-responses.d.ts +615 -0
- package/dist/protocols/openai-responses.d.ts.map +1 -0
- package/dist/protocols/openai-responses.js +828 -0
- package/dist/protocols/openai-responses.js.map +1 -0
- package/dist/protocols/shared.d.ts +193 -0
- package/dist/protocols/shared.d.ts.map +1 -0
- package/dist/protocols/shared.js +237 -0
- package/dist/protocols/shared.js.map +1 -0
- package/dist/protocols/utils/bedrock-auth.d.ts +19 -0
- package/dist/protocols/utils/bedrock-auth.d.ts.map +1 -0
- package/dist/protocols/utils/bedrock-auth.js +42 -0
- package/dist/protocols/utils/bedrock-auth.js.map +1 -0
- package/dist/protocols/utils/bedrock-cache.d.ts +16 -0
- package/dist/protocols/utils/bedrock-cache.d.ts.map +1 -0
- package/dist/protocols/utils/bedrock-cache.js +30 -0
- package/dist/protocols/utils/bedrock-cache.js.map +1 -0
- package/dist/protocols/utils/bedrock-media.d.ts +50 -0
- package/dist/protocols/utils/bedrock-media.d.ts.map +1 -0
- package/dist/protocols/utils/bedrock-media.js +69 -0
- package/dist/protocols/utils/bedrock-media.js.map +1 -0
- package/dist/protocols/utils/cache.d.ts +7 -0
- package/dist/protocols/utils/cache.d.ts.map +1 -0
- package/dist/protocols/utils/cache.js +9 -0
- package/dist/protocols/utils/cache.js.map +1 -0
- package/dist/protocols/utils/gemini-tool-schema.d.ts +3 -0
- package/dist/protocols/utils/gemini-tool-schema.d.ts.map +1 -0
- package/dist/protocols/utils/gemini-tool-schema.js +84 -0
- package/dist/protocols/utils/gemini-tool-schema.js.map +1 -0
- package/dist/protocols/utils/lifecycle.d.ts +20 -0
- package/dist/protocols/utils/lifecycle.d.ts.map +1 -0
- package/dist/protocols/utils/lifecycle.js +66 -0
- package/dist/protocols/utils/lifecycle.js.map +1 -0
- package/dist/protocols/utils/openai-options.d.ts +23 -0
- package/dist/protocols/utils/openai-options.d.ts.map +1 -0
- package/dist/protocols/utils/openai-options.js +68 -0
- package/dist/protocols/utils/openai-options.js.map +1 -0
- package/dist/protocols/utils/tool-schema.d.ts +8 -0
- package/dist/protocols/utils/tool-schema.d.ts.map +1 -0
- package/dist/protocols/utils/tool-schema.js +80 -0
- package/dist/protocols/utils/tool-schema.js.map +1 -0
- package/dist/protocols/utils/tool-stream.d.ts +156 -0
- package/dist/protocols/utils/tool-stream.d.ts.map +1 -0
- package/dist/protocols/utils/tool-stream.js +137 -0
- package/dist/protocols/utils/tool-stream.js.map +1 -0
- package/dist/provider-error.d.ts +3 -0
- package/dist/provider-error.d.ts.map +1 -0
- package/dist/provider-error.js +29 -0
- package/dist/provider-error.js.map +1 -0
- package/dist/provider.d.ts +24 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +3 -0
- package/dist/provider.js.map +1 -0
- package/dist/providers/amazon-bedrock.d.ts +142 -0
- package/dist/providers/amazon-bedrock.d.ts.map +1 -0
- package/dist/providers/amazon-bedrock.js +27 -0
- package/dist/providers/amazon-bedrock.js.map +1 -0
- package/dist/providers/anthropic.d.ts +24 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +27 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/azure.d.ts +36 -0
- package/dist/providers/azure.d.ts.map +1 -0
- package/dist/providers/azure.js +70 -0
- package/dist/providers/azure.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +47 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +88 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/github-copilot.d.ts +30 -0
- package/dist/providers/github-copilot.d.ts.map +1 -0
- package/dist/providers/github-copilot.js +48 -0
- package/dist/providers/github-copilot.js.map +1 -0
- package/dist/providers/google.d.ts +24 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +27 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +12 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +12 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai-compatible-profile.d.ts +44 -0
- package/dist/providers/openai-compatible-profile.d.ts.map +1 -0
- package/dist/providers/openai-compatible-profile.js +13 -0
- package/dist/providers/openai-compatible-profile.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +62 -0
- package/dist/providers/openai-compatible.d.ts.map +1 -0
- package/dist/providers/openai-compatible.js +48 -0
- package/dist/providers/openai-compatible.js.map +1 -0
- package/dist/providers/openai-options.d.ts +31 -0
- package/dist/providers/openai-options.d.ts.map +1 -0
- package/dist/providers/openai-options.js +43 -0
- package/dist/providers/openai-options.js.map +1 -0
- package/dist/providers/openai.d.ts +116 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +39 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/openrouter.d.ts +199 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +66 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/xai.d.ts +32 -0
- package/dist/providers/xai.d.ts.map +1 -0
- package/dist/providers/xai.js +44 -0
- package/dist/providers/xai.js.map +1 -0
- package/dist/route/auth-options.d.ts +35 -0
- package/dist/route/auth-options.d.ts.map +1 -0
- package/dist/route/auth-options.js +15 -0
- package/dist/route/auth-options.js.map +1 -0
- package/dist/route/auth.js +90 -0
- package/dist/route/auth.js.map +1 -0
- package/dist/route/client.d.ts +306 -0
- package/dist/route/client.d.ts.map +1 -0
- package/dist/route/client.js +197 -0
- package/dist/route/client.js.map +1 -0
- package/dist/route/endpoint.js +22 -0
- package/dist/route/endpoint.js.map +1 -0
- package/dist/route/executor.d.ts +13 -0
- package/dist/route/executor.d.ts.map +1 -0
- package/dist/route/executor.js +287 -0
- package/dist/route/executor.js.map +1 -0
- package/dist/route/framing.js +5 -0
- package/dist/route/framing.js.map +1 -0
- package/dist/route/index.d.ts +17 -0
- package/dist/route/index.d.ts.map +1 -0
- package/dist/route/index.js +10 -0
- package/dist/route/index.js.map +1 -0
- package/dist/route/protocol.d.ts +77 -0
- package/dist/route/protocol.d.ts.map +1 -0
- package/dist/route/protocol.js +18 -0
- package/dist/route/protocol.js.map +1 -0
- package/dist/route/transport/http.d.ts +34 -0
- package/dist/route/transport/http.d.ts.map +1 -0
- package/dist/route/transport/http.js +98 -0
- package/dist/route/transport/http.js.map +1 -0
- package/dist/route/transport/index.d.ts +28 -0
- package/dist/route/transport/index.d.ts.map +1 -0
- package/dist/route/transport/index.js +3 -0
- package/dist/route/transport/index.js.map +1 -0
- package/dist/route/transport/websocket.d.ts +57 -0
- package/dist/route/transport/websocket.d.ts.map +1 -0
- package/dist/route/transport/websocket.js +181 -0
- package/dist/route/transport/websocket.js.map +1 -0
- package/dist/schema/errors.d.ts +166 -0
- package/dist/schema/errors.d.ts.map +1 -0
- package/dist/schema/errors.js +187 -0
- package/dist/schema/errors.js.map +1 -0
- package/dist/schema/events.d.ts +3821 -0
- package/dist/schema/events.d.ts.map +1 -0
- package/dist/schema/events.js +484 -0
- package/dist/schema/events.js.map +1 -0
- package/dist/schema/ids.d.ts +31 -0
- package/dist/schema/ids.d.ts.map +1 -0
- package/dist/schema/ids.js +19 -0
- package/dist/schema/ids.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/messages.d.ts +294 -0
- package/dist/schema/messages.d.ts.map +1 -0
- package/dist/schema/messages.js +247 -0
- package/dist/schema/messages.js.map +1 -0
- package/dist/schema/options.d.ts +144 -0
- package/dist/schema/options.d.ts.map +1 -0
- package/dist/schema/options.js +196 -0
- package/dist/schema/options.js.map +1 -0
- package/dist/tool-runtime.d.ts +16 -0
- package/dist/tool-runtime.d.ts.map +1 -0
- package/dist/tool-runtime.js +35 -0
- package/dist/tool-runtime.js.map +1 -0
- package/dist/tool.js +67 -0
- package/dist/tool.js.map +1 -0
- package/dist/utils/record.d.ts +3 -0
- package/dist/utils/record.d.ts.map +1 -0
- package/dist/utils/record.js +3 -0
- package/dist/utils/record.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { newBreakpoints, ttlBucket } from "./cache";
|
|
3
|
+
// Bedrock cache markers are positional: emit a `cachePoint` block immediately
|
|
4
|
+
// after the content the caller wants treated as a cacheable prefix. Bedrock
|
|
5
|
+
// accepts optional `ttl: "5m" | "1h"` on cachePoint, mirroring Anthropic.
|
|
6
|
+
export const CachePointBlock = Schema.Struct({
|
|
7
|
+
cachePoint: Schema.Struct({
|
|
8
|
+
type: Schema.tag("default"),
|
|
9
|
+
ttl: Schema.optional(Schema.Literals(["5m", "1h"])),
|
|
10
|
+
}),
|
|
11
|
+
});
|
|
12
|
+
// Bedrock-Claude enforces the same 4-breakpoint cap as the Anthropic Messages
|
|
13
|
+
// API. Callers pass a shared counter through every `block()` call site so the
|
|
14
|
+
// budget is respected across `system`, `messages`, and `tools`.
|
|
15
|
+
export const BEDROCK_BREAKPOINT_CAP = 4;
|
|
16
|
+
export const breakpoints = () => newBreakpoints(BEDROCK_BREAKPOINT_CAP);
|
|
17
|
+
const DEFAULT_5M = { cachePoint: { type: "default" } };
|
|
18
|
+
const DEFAULT_1H = { cachePoint: { type: "default", ttl: "1h" } };
|
|
19
|
+
export const block = (breakpoints, cache) => {
|
|
20
|
+
if (cache?.type !== "ephemeral" && cache?.type !== "persistent")
|
|
21
|
+
return undefined;
|
|
22
|
+
if (breakpoints.remaining <= 0) {
|
|
23
|
+
breakpoints.dropped += 1;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
breakpoints.remaining -= 1;
|
|
27
|
+
return ttlBucket(cache.ttlSeconds) === "1h" ? DEFAULT_1H : DEFAULT_5M;
|
|
28
|
+
};
|
|
29
|
+
export * as BedrockCache from "./bedrock-cache";
|
|
30
|
+
//# sourceMappingURL=bedrock-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock-cache.js","sourceRoot":"","sources":["../../../src/protocols/utils/bedrock-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAoB,MAAM,SAAS,CAAA;AAErE,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;KACpD,CAAC;CACH,CAAC,CAAA;AAGF,8EAA8E;AAC9E,8EAA8E;AAC9E,gEAAgE;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAGvC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAA;AAEvE,MAAM,UAAU,GAAoB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAA;AACvE,MAAM,UAAU,GAAoB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAA;AAElF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,WAAwB,EAAE,KAA4B,EAA+B,EAAE;IAC3G,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY;QAAE,OAAO,SAAS,CAAA;IACjF,IAAI,WAAW,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QAC/B,WAAW,CAAC,OAAO,IAAI,CAAC,CAAA;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,WAAW,CAAC,SAAS,IAAI,CAAC,CAAA;IAC1B,OAAO,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;AACvE,CAAC,CAAA;AAED,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
export declare const ImageFormat: Schema.Literals<readonly ["png", "jpeg", "gif", "webp"]>;
|
|
3
|
+
export type ImageFormat = Schema.Schema.Type<typeof ImageFormat>;
|
|
4
|
+
export declare const ImageBlock: Schema.Struct<{
|
|
5
|
+
readonly image: Schema.Struct<{
|
|
6
|
+
readonly format: Schema.Literals<readonly ["png", "jpeg", "gif", "webp"]>;
|
|
7
|
+
readonly source: Schema.Struct<{
|
|
8
|
+
readonly bytes: Schema.String;
|
|
9
|
+
}>;
|
|
10
|
+
}>;
|
|
11
|
+
}>;
|
|
12
|
+
export type ImageBlock = Schema.Schema.Type<typeof ImageBlock>;
|
|
13
|
+
export declare const DocumentFormat: Schema.Literals<readonly ["pdf", "csv", "doc", "docx", "xls", "xlsx", "html", "txt", "md"]>;
|
|
14
|
+
export type DocumentFormat = Schema.Schema.Type<typeof DocumentFormat>;
|
|
15
|
+
export declare const DocumentBlock: Schema.Struct<{
|
|
16
|
+
readonly document: Schema.Struct<{
|
|
17
|
+
readonly format: Schema.Literals<readonly ["pdf", "csv", "doc", "docx", "xls", "xlsx", "html", "txt", "md"]>;
|
|
18
|
+
readonly name: Schema.String;
|
|
19
|
+
readonly source: Schema.Struct<{
|
|
20
|
+
readonly bytes: Schema.String;
|
|
21
|
+
}>;
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
export type DocumentBlock = Schema.Schema.Type<typeof DocumentBlock>;
|
|
25
|
+
export declare const lower: (part: {
|
|
26
|
+
readonly type: "media";
|
|
27
|
+
readonly mediaType: string;
|
|
28
|
+
readonly data: string | Uint8Array<ArrayBufferLike>;
|
|
29
|
+
readonly filename?: string;
|
|
30
|
+
readonly metadata?: {
|
|
31
|
+
readonly [x: string]: unknown;
|
|
32
|
+
};
|
|
33
|
+
}) => Effect.Effect<{
|
|
34
|
+
readonly document: {
|
|
35
|
+
readonly format: "pdf" | "csv" | "doc" | "docx" | "xls" | "xlsx" | "html" | "txt" | "md";
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly source: {
|
|
38
|
+
readonly bytes: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
} | {
|
|
42
|
+
image: {
|
|
43
|
+
format: "png" | "jpeg" | "gif" | "webp";
|
|
44
|
+
source: {
|
|
45
|
+
bytes: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
}, import("../..").LLMError, never>;
|
|
49
|
+
export * as BedrockMedia from "./bedrock-media";
|
|
50
|
+
//# sourceMappingURL=bedrock-media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock-media.d.ts","sourceRoot":"","sources":["../../../src/protocols/utils/bedrock-media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAMvC,eAAO,MAAM,WAAW,0DAAkD,CAAA;AAC1E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAA;AAEhE,eAAO,MAAM,UAAU;;;;;;;EAKrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,CAAA;AAI9D,eAAO,MAAM,cAAc,6FAAqF,CAAA;AAChH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAA;AAEtE,eAAO,MAAM,aAAa;;;;;;;;EAMxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,CAAA;AAmCpE,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;mCAuBhB,CAAA;AAEF,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { ProviderShared } from "../shared";
|
|
3
|
+
// Bedrock Converse accepts image `format` as the file extension and
|
|
4
|
+
// `source.bytes` as base64 in the JSON wire format.
|
|
5
|
+
export const ImageFormat = Schema.Literals(["png", "jpeg", "gif", "webp"]);
|
|
6
|
+
export const ImageBlock = Schema.Struct({
|
|
7
|
+
image: Schema.Struct({
|
|
8
|
+
format: ImageFormat,
|
|
9
|
+
source: Schema.Struct({ bytes: Schema.String }),
|
|
10
|
+
}),
|
|
11
|
+
});
|
|
12
|
+
// Bedrock document blocks require a user-facing name so the model can refer to
|
|
13
|
+
// the uploaded document.
|
|
14
|
+
export const DocumentFormat = Schema.Literals(["pdf", "csv", "doc", "docx", "xls", "xlsx", "html", "txt", "md"]);
|
|
15
|
+
export const DocumentBlock = Schema.Struct({
|
|
16
|
+
document: Schema.Struct({
|
|
17
|
+
format: DocumentFormat,
|
|
18
|
+
name: Schema.String,
|
|
19
|
+
source: Schema.Struct({ bytes: Schema.String }),
|
|
20
|
+
}),
|
|
21
|
+
});
|
|
22
|
+
const IMAGE_FORMATS = {
|
|
23
|
+
"image/png": "png",
|
|
24
|
+
"image/jpeg": "jpeg",
|
|
25
|
+
"image/jpg": "jpeg",
|
|
26
|
+
"image/gif": "gif",
|
|
27
|
+
"image/webp": "webp",
|
|
28
|
+
};
|
|
29
|
+
const DOCUMENT_FORMATS = {
|
|
30
|
+
"application/pdf": "pdf",
|
|
31
|
+
"text/csv": "csv",
|
|
32
|
+
"application/msword": "doc",
|
|
33
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
|
|
34
|
+
"application/vnd.ms-excel": "xls",
|
|
35
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
|
|
36
|
+
"text/html": "html",
|
|
37
|
+
"text/plain": "txt",
|
|
38
|
+
"text/markdown": "md",
|
|
39
|
+
};
|
|
40
|
+
const documentBlock = (part, format, bytes) => ({
|
|
41
|
+
document: {
|
|
42
|
+
format,
|
|
43
|
+
name: part.filename ?? `document.${format}`,
|
|
44
|
+
source: { bytes },
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
// Route by MIME. Known image/document formats lower into a typed block; anything
|
|
48
|
+
// else fails with a clear error instead of silently degrading to a malformed
|
|
49
|
+
// document block. Image MIME types not in `IMAGE_FORMATS` (e.g. `image/svg+xml`)
|
|
50
|
+
// get an image-specific error so the caller knows it's a format-support issue,
|
|
51
|
+
// not a kind-detection issue.
|
|
52
|
+
export const lower = Effect.fn("BedrockMedia.lower")(function* (part) {
|
|
53
|
+
const mime = part.mediaType.toLowerCase();
|
|
54
|
+
const imageFormat = IMAGE_FORMATS[mime];
|
|
55
|
+
if (imageFormat) {
|
|
56
|
+
const media = yield* ProviderShared.validateMedia("Bedrock Converse", part, new Set(Object.keys(IMAGE_FORMATS)));
|
|
57
|
+
return { image: { format: imageFormat, source: { bytes: media.base64 } } };
|
|
58
|
+
}
|
|
59
|
+
if (mime.startsWith("image/"))
|
|
60
|
+
return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support image media type ${part.mediaType}`);
|
|
61
|
+
const documentFormat = DOCUMENT_FORMATS[mime];
|
|
62
|
+
if (documentFormat) {
|
|
63
|
+
const media = yield* ProviderShared.validateMedia("Bedrock Converse", part, new Set(Object.keys(DOCUMENT_FORMATS)));
|
|
64
|
+
return documentBlock(part, documentFormat, media.base64);
|
|
65
|
+
}
|
|
66
|
+
return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support media type ${part.mediaType}`);
|
|
67
|
+
});
|
|
68
|
+
export * as BedrockMedia from "./bedrock-media";
|
|
69
|
+
//# sourceMappingURL=bedrock-media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock-media.js","sourceRoot":"","sources":["../../../src/protocols/utils/bedrock-media.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface Breakpoints {
|
|
2
|
+
remaining: number;
|
|
3
|
+
dropped: number;
|
|
4
|
+
}
|
|
5
|
+
export declare const newBreakpoints: (cap: number) => Breakpoints;
|
|
6
|
+
export declare const ttlBucket: (ttlSeconds: number | undefined) => "1h" | undefined;
|
|
7
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/protocols/utils/cache.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,WAA+C,CAAA;AAK5F,eAAO,MAAM,SAAS,GAAI,YAAY,MAAM,GAAG,SAAS,KAAG,IAAI,GAAG,SACC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Shared helpers for provider cache-marker lowering. Anthropic and Bedrock
|
|
2
|
+
// both enforce a 4-breakpoint cap per request and accept the same `5m`/`1h`
|
|
3
|
+
// TTL buckets, so the counter and TTL mapping live here.
|
|
4
|
+
export const newBreakpoints = (cap) => ({ remaining: cap, dropped: 0 });
|
|
5
|
+
// Returns `"1h"` for any `ttlSeconds >= 3600`, otherwise `undefined` (the
|
|
6
|
+
// provider default 5m). Anthropic & Bedrock both treat anything shorter than
|
|
7
|
+
// an hour as 5m.
|
|
8
|
+
export const ttlBucket = (ttlSeconds) => ttlSeconds !== undefined && ttlSeconds >= 3600 ? "1h" : undefined;
|
|
9
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/protocols/utils/cache.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4EAA4E;AAC5E,yDAAyD;AAOzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAe,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AAE5F,0EAA0E;AAC1E,6EAA6E;AAC7E,iBAAiB;AACjB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAA8B,EAAoB,EAAE,CAC5E,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-tool-schema.d.ts","sourceRoot":"","sources":["../../../src/protocols/utils/gemini-tool-schema.ts"],"names":[],"mappings":"AAgGA,eAAO,MAAM,OAAO,GAAI,QAAQ,OAAO,4BAAsC,CAAA;AAE7E,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { isRecord } from "../../utils/record";
|
|
2
|
+
// Gemini accepts a JSON Schema-like dialect for tool parameters, but rejects a
|
|
3
|
+
// handful of common JSON Schema shapes. Keep this projection isolated so the
|
|
4
|
+
// Gemini protocol file still reads like the other protocol modules.
|
|
5
|
+
const SCHEMA_INTENT_KEYS = [
|
|
6
|
+
"type",
|
|
7
|
+
"properties",
|
|
8
|
+
"items",
|
|
9
|
+
"prefixItems",
|
|
10
|
+
"enum",
|
|
11
|
+
"const",
|
|
12
|
+
"$ref",
|
|
13
|
+
"additionalProperties",
|
|
14
|
+
"patternProperties",
|
|
15
|
+
"required",
|
|
16
|
+
"not",
|
|
17
|
+
"if",
|
|
18
|
+
"then",
|
|
19
|
+
"else",
|
|
20
|
+
];
|
|
21
|
+
const hasCombiner = (schema) => isRecord(schema) && (Array.isArray(schema.anyOf) || Array.isArray(schema.oneOf) || Array.isArray(schema.allOf));
|
|
22
|
+
const hasSchemaIntent = (schema) => isRecord(schema) && (hasCombiner(schema) || SCHEMA_INTENT_KEYS.some((key) => key in schema));
|
|
23
|
+
const sanitizeNode = (schema) => {
|
|
24
|
+
if (!isRecord(schema))
|
|
25
|
+
return Array.isArray(schema) ? schema.map(sanitizeNode) : schema;
|
|
26
|
+
const result = Object.fromEntries(Object.entries(schema).map(([key, value]) => [
|
|
27
|
+
key,
|
|
28
|
+
key === "enum" && Array.isArray(value) ? value.map(String) : sanitizeNode(value),
|
|
29
|
+
]));
|
|
30
|
+
if (Array.isArray(result.enum) && (result.type === "integer" || result.type === "number"))
|
|
31
|
+
result.type = "string";
|
|
32
|
+
const properties = result.properties;
|
|
33
|
+
if (result.type === "object" && isRecord(properties) && Array.isArray(result.required)) {
|
|
34
|
+
result.required = result.required.filter((field) => typeof field === "string" && field in properties);
|
|
35
|
+
}
|
|
36
|
+
if (result.type === "array" && !hasCombiner(result)) {
|
|
37
|
+
result.items = result.items ?? {};
|
|
38
|
+
if (isRecord(result.items) && !hasSchemaIntent(result.items))
|
|
39
|
+
result.items = { ...result.items, type: "string" };
|
|
40
|
+
}
|
|
41
|
+
if (typeof result.type === "string" && result.type !== "object" && !hasCombiner(result)) {
|
|
42
|
+
delete result.properties;
|
|
43
|
+
delete result.required;
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
const emptyObjectSchema = (schema) => schema.type === "object" &&
|
|
48
|
+
(!isRecord(schema.properties) || Object.keys(schema.properties).length === 0) &&
|
|
49
|
+
!schema.additionalProperties;
|
|
50
|
+
const projectNode = (schema) => {
|
|
51
|
+
if (!isRecord(schema))
|
|
52
|
+
return undefined;
|
|
53
|
+
if (emptyObjectSchema(schema))
|
|
54
|
+
return undefined;
|
|
55
|
+
return Object.fromEntries([
|
|
56
|
+
["description", schema.description],
|
|
57
|
+
["required", schema.required],
|
|
58
|
+
["format", schema.format],
|
|
59
|
+
["type", Array.isArray(schema.type) ? schema.type.filter((type) => type !== "null")[0] : schema.type],
|
|
60
|
+
["nullable", Array.isArray(schema.type) && schema.type.includes("null") ? true : undefined],
|
|
61
|
+
["enum", schema.const !== undefined ? [schema.const] : schema.enum],
|
|
62
|
+
[
|
|
63
|
+
"properties",
|
|
64
|
+
isRecord(schema.properties)
|
|
65
|
+
? Object.fromEntries(Object.entries(schema.properties).map(([key, value]) => [key, projectNode(value)]))
|
|
66
|
+
: undefined,
|
|
67
|
+
],
|
|
68
|
+
[
|
|
69
|
+
"items",
|
|
70
|
+
Array.isArray(schema.items)
|
|
71
|
+
? schema.items.map(projectNode)
|
|
72
|
+
: schema.items === undefined
|
|
73
|
+
? undefined
|
|
74
|
+
: projectNode(schema.items),
|
|
75
|
+
],
|
|
76
|
+
["allOf", Array.isArray(schema.allOf) ? schema.allOf.map(projectNode) : undefined],
|
|
77
|
+
["anyOf", Array.isArray(schema.anyOf) ? schema.anyOf.map(projectNode) : undefined],
|
|
78
|
+
["oneOf", Array.isArray(schema.oneOf) ? schema.oneOf.map(projectNode) : undefined],
|
|
79
|
+
["minLength", schema.minLength],
|
|
80
|
+
].filter((entry) => entry[1] !== undefined));
|
|
81
|
+
};
|
|
82
|
+
export const convert = (schema) => projectNode(sanitizeNode(schema));
|
|
83
|
+
export * as GeminiToolSchema from "./gemini-tool-schema";
|
|
84
|
+
//# sourceMappingURL=gemini-tool-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-tool-schema.js","sourceRoot":"","sources":["../../../src/protocols/utils/gemini-tool-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LLMEvent, type FinishReason, type ProviderMetadata, type Usage } from "../../schema";
|
|
2
|
+
export interface State {
|
|
3
|
+
readonly stepStarted: boolean;
|
|
4
|
+
readonly text: ReadonlySet<string>;
|
|
5
|
+
readonly reasoning: ReadonlySet<string>;
|
|
6
|
+
}
|
|
7
|
+
export declare const initial: () => State;
|
|
8
|
+
export declare const stepStart: (state: State, events: LLMEvent[]) => State;
|
|
9
|
+
export declare const textDelta: (state: State, events: LLMEvent[], id: string, text: string) => State;
|
|
10
|
+
export declare const reasoningStart: (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata) => State;
|
|
11
|
+
export declare const reasoningDelta: (state: State, events: LLMEvent[], id: string, text: string, providerMetadata?: ProviderMetadata) => State;
|
|
12
|
+
export declare const reasoningEnd: (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata) => State;
|
|
13
|
+
export declare const textEnd: (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata) => State;
|
|
14
|
+
export declare const finish: (state: State, events: LLMEvent[], input: {
|
|
15
|
+
readonly reason: FinishReason;
|
|
16
|
+
readonly usage?: Usage;
|
|
17
|
+
readonly providerMetadata?: ProviderMetadata;
|
|
18
|
+
}) => State;
|
|
19
|
+
export * as Lifecycle from "./lifecycle";
|
|
20
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/protocols/utils/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAA;AAE7F,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACxC;AAED,eAAO,MAAM,OAAO,QAAO,KAAwE,CAAA;AAEnG,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,QAAQ,QAAQ,EAAE,KAAG,KAI5D,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,QAAQ,QAAQ,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,KAAG,KAQtF,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,OAAO,KAAK,EACZ,QAAQ,QAAQ,EAAE,EAClB,IAAI,MAAM,EACV,mBAAmB,gBAAgB,KAClC,KAKF,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,OAAO,KAAK,EACZ,QAAQ,QAAQ,EAAE,EAClB,IAAI,MAAM,EACV,MAAM,MAAM,EACZ,mBAAmB,gBAAgB,KAClC,KAIF,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,OAAO,KAAK,EACZ,QAAQ,QAAQ,EAAE,EAClB,IAAI,MAAM,EACV,mBAAmB,gBAAgB,KAClC,KAOF,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,EAAE,QAAQ,QAAQ,EAAE,EAAE,IAAI,MAAM,EAAE,mBAAmB,gBAAgB,KAAG,KAO3G,CAAA;AAQD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,QAAQ,QAAQ,EAAE,EAClB,OAAO;IACL,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CAC7C,KACA,KAYF,CAAA;AAED,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { LLMEvent } from "../../schema";
|
|
2
|
+
export const initial = () => ({ stepStarted: false, text: new Set(), reasoning: new Set() });
|
|
3
|
+
export const stepStart = (state, events) => {
|
|
4
|
+
if (state.stepStarted)
|
|
5
|
+
return state;
|
|
6
|
+
events.push(LLMEvent.stepStart({ index: 0 }));
|
|
7
|
+
return { ...state, stepStarted: true };
|
|
8
|
+
};
|
|
9
|
+
export const textDelta = (state, events, id, text) => {
|
|
10
|
+
const stepped = stepStart(state, events);
|
|
11
|
+
if (stepped.text.has(id)) {
|
|
12
|
+
events.push(LLMEvent.textDelta({ id, text }));
|
|
13
|
+
return stepped;
|
|
14
|
+
}
|
|
15
|
+
events.push(LLMEvent.textStart({ id }), LLMEvent.textDelta({ id, text }));
|
|
16
|
+
return { ...stepped, text: new Set([...stepped.text, id]) };
|
|
17
|
+
};
|
|
18
|
+
export const reasoningStart = (state, events, id, providerMetadata) => {
|
|
19
|
+
if (state.reasoning.has(id))
|
|
20
|
+
return state;
|
|
21
|
+
const stepped = stepStart(state, events);
|
|
22
|
+
events.push(LLMEvent.reasoningStart({ id, providerMetadata }));
|
|
23
|
+
return { ...stepped, reasoning: new Set([...stepped.reasoning, id]) };
|
|
24
|
+
};
|
|
25
|
+
export const reasoningDelta = (state, events, id, text, providerMetadata) => {
|
|
26
|
+
const started = reasoningStart(state, events, id, providerMetadata);
|
|
27
|
+
events.push(LLMEvent.reasoningDelta({ id, text }));
|
|
28
|
+
return started;
|
|
29
|
+
};
|
|
30
|
+
export const reasoningEnd = (state, events, id, providerMetadata) => {
|
|
31
|
+
if (!state.reasoning.has(id))
|
|
32
|
+
return state;
|
|
33
|
+
const stepped = stepStart(state, events);
|
|
34
|
+
events.push(LLMEvent.reasoningEnd({ id, providerMetadata }));
|
|
35
|
+
const reasoning = new Set(stepped.reasoning);
|
|
36
|
+
reasoning.delete(id);
|
|
37
|
+
return { ...stepped, reasoning };
|
|
38
|
+
};
|
|
39
|
+
export const textEnd = (state, events, id, providerMetadata) => {
|
|
40
|
+
if (!state.text.has(id))
|
|
41
|
+
return state;
|
|
42
|
+
const stepped = stepStart(state, events);
|
|
43
|
+
events.push(LLMEvent.textEnd({ id, providerMetadata }));
|
|
44
|
+
const text = new Set(stepped.text);
|
|
45
|
+
text.delete(id);
|
|
46
|
+
return { ...stepped, text };
|
|
47
|
+
};
|
|
48
|
+
const closeOpenBlocks = (state, events) => {
|
|
49
|
+
for (const id of state.reasoning)
|
|
50
|
+
events.push(LLMEvent.reasoningEnd({ id }));
|
|
51
|
+
for (const id of state.text)
|
|
52
|
+
events.push(LLMEvent.textEnd({ id }));
|
|
53
|
+
return { ...state, text: new Set(), reasoning: new Set() };
|
|
54
|
+
};
|
|
55
|
+
export const finish = (state, events, input) => {
|
|
56
|
+
const stepped = closeOpenBlocks(stepStart(state, events), events);
|
|
57
|
+
events.push(LLMEvent.stepFinish({
|
|
58
|
+
index: 0,
|
|
59
|
+
reason: input.reason,
|
|
60
|
+
usage: input.usage,
|
|
61
|
+
providerMetadata: input.providerMetadata,
|
|
62
|
+
}), LLMEvent.finish(input));
|
|
63
|
+
return { ...stepped, stepStarted: false };
|
|
64
|
+
};
|
|
65
|
+
export * as Lifecycle from "./lifecycle";
|
|
66
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/protocols/utils/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import type { LLMRequest, ReasoningEffort } from "../../schema";
|
|
3
|
+
export declare const OpenAIReasoningEfforts: ("none" | "minimal" | "low" | "medium" | "high" | "xhigh")[];
|
|
4
|
+
export type OpenAIReasoningEffort = (typeof OpenAIReasoningEfforts)[number];
|
|
5
|
+
export declare const OpenAIResponseIncludables: readonly ["file_search_call.results", "web_search_call.results", "web_search_call.action.sources", "message.input_image.image_url", "computer_call_output.output.image_url", "code_interpreter_call.outputs", "reasoning.encrypted_content", "message.output_text.logprobs"];
|
|
6
|
+
export type OpenAIResponseIncludable = (typeof OpenAIResponseIncludables)[number];
|
|
7
|
+
export declare const OpenAIServiceTiers: readonly ["auto", "default", "flex", "priority"];
|
|
8
|
+
export type OpenAIServiceTier = (typeof OpenAIServiceTiers)[number];
|
|
9
|
+
export declare const OpenAIReasoningEffort: Schema.Literals<("none" | "minimal" | "low" | "medium" | "high" | "xhigh")[]>;
|
|
10
|
+
export declare const OpenAITextVerbosity: Schema.Literals<readonly ["low", "medium", "high"]>;
|
|
11
|
+
export declare const OpenAIResponseIncludable: Schema.Literals<readonly ["file_search_call.results", "web_search_call.results", "web_search_call.action.sources", "message.input_image.image_url", "computer_call_output.output.image_url", "code_interpreter_call.outputs", "reasoning.encrypted_content", "message.output_text.logprobs"]>;
|
|
12
|
+
export declare const OpenAIServiceTier: Schema.Literals<readonly ["auto", "default", "flex", "priority"]>;
|
|
13
|
+
export declare const isReasoningEffort: (effort: unknown) => effort is OpenAIReasoningEffort;
|
|
14
|
+
export declare const store: (request: LLMRequest) => boolean | undefined;
|
|
15
|
+
export declare const reasoningEffort: (request: LLMRequest) => ReasoningEffort | undefined;
|
|
16
|
+
export declare const reasoningSummary: (request: LLMRequest) => "auto" | undefined;
|
|
17
|
+
export declare const include: (request: LLMRequest) => ReadonlyArray<OpenAIResponseIncludable> | undefined;
|
|
18
|
+
export declare const promptCacheKey: (request: LLMRequest) => string;
|
|
19
|
+
export declare const textVerbosity: (request: LLMRequest) => "low" | "medium" | "high";
|
|
20
|
+
export declare const serviceTier: (request: LLMRequest) => "auto" | "default" | "flex" | "priority";
|
|
21
|
+
export declare const instructions: (request: LLMRequest) => string;
|
|
22
|
+
export * as OpenAIOptions from "./openai-options";
|
|
23
|
+
//# sourceMappingURL=openai-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-options.d.ts","sourceRoot":"","sources":["../../../src/protocols/utils/openai-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAA;AAGpG,eAAO,MAAM,sBAAsB,8DAElC,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAI3E,eAAO,MAAM,yBAAyB,8QAS5B,CAAA;AACV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AACjF,eAAO,MAAM,kBAAkB,kDAAmD,CAAA;AAClF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAQnE,eAAO,MAAM,qBAAqB,+EAA0C,CAAA;AAC5E,eAAO,MAAM,mBAAmB,qDAAgB,CAAA;AAChD,eAAO,MAAM,wBAAwB,+RAA6C,CAAA;AAClF,eAAO,MAAM,iBAAiB,mEAAsC,CAAA;AAKpE,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,KAAG,MAAM,IAAI,qBACM,CAAA;AAOpE,eAAO,MAAM,KAAK,GAAI,SAAS,UAAU,KAAG,OAAO,GAAG,SAGrD,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,SAAS,UAAU,KAAG,eAAe,GAAG,SAGvE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,UAAU,KAAG,MAAM,GAAG,SACI,CAAA;AAOpE,eAAO,MAAM,OAAO,GAAI,SAAS,UAAU,KAAG,aAAa,CAAC,wBAAwB,CAAC,GAAG,SAKvF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,UAAU,WAGjD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,UAAU,8BAGhD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,SAAS,UAAU,6CAG9C,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,WAG/C,CAAA;AAED,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { ReasoningEfforts, TextVerbosity } from "../../schema";
|
|
3
|
+
export const OpenAIReasoningEfforts = ReasoningEfforts.filter((effort) => effort !== "max");
|
|
4
|
+
// Mirrors OpenAI's `ResponseIncludable` union from the official SDK. Keep this
|
|
5
|
+
// in lockstep with `openai-node/src/resources/responses/responses.ts`.
|
|
6
|
+
export const OpenAIResponseIncludables = [
|
|
7
|
+
"file_search_call.results",
|
|
8
|
+
"web_search_call.results",
|
|
9
|
+
"web_search_call.action.sources",
|
|
10
|
+
"message.input_image.image_url",
|
|
11
|
+
"computer_call_output.output.image_url",
|
|
12
|
+
"code_interpreter_call.outputs",
|
|
13
|
+
"reasoning.encrypted_content",
|
|
14
|
+
"message.output_text.logprobs",
|
|
15
|
+
];
|
|
16
|
+
export const OpenAIServiceTiers = ["auto", "default", "flex", "priority"];
|
|
17
|
+
const REASONING_EFFORTS = new Set(ReasoningEfforts);
|
|
18
|
+
const OPENAI_REASONING_EFFORTS = new Set(OpenAIReasoningEfforts);
|
|
19
|
+
const TEXT_VERBOSITY = new Set(["low", "medium", "high"]);
|
|
20
|
+
const INCLUDABLES = new Set(OpenAIResponseIncludables);
|
|
21
|
+
const SERVICE_TIERS = new Set(OpenAIServiceTiers);
|
|
22
|
+
export const OpenAIReasoningEffort = Schema.Literals(OpenAIReasoningEfforts);
|
|
23
|
+
export const OpenAITextVerbosity = TextVerbosity;
|
|
24
|
+
export const OpenAIResponseIncludable = Schema.Literals(OpenAIResponseIncludables);
|
|
25
|
+
export const OpenAIServiceTier = Schema.Literals(OpenAIServiceTiers);
|
|
26
|
+
const isAnyReasoningEffort = (effort) => typeof effort === "string" && REASONING_EFFORTS.has(effort);
|
|
27
|
+
export const isReasoningEffort = (effort) => typeof effort === "string" && OPENAI_REASONING_EFFORTS.has(effort);
|
|
28
|
+
const isTextVerbosity = (value) => typeof value === "string" && TEXT_VERBOSITY.has(value);
|
|
29
|
+
const options = (request) => request.providerOptions?.openai;
|
|
30
|
+
export const store = (request) => {
|
|
31
|
+
const value = options(request)?.store;
|
|
32
|
+
return typeof value === "boolean" ? value : undefined;
|
|
33
|
+
};
|
|
34
|
+
export const reasoningEffort = (request) => {
|
|
35
|
+
const value = options(request)?.reasoningEffort;
|
|
36
|
+
return isAnyReasoningEffort(value) ? value : undefined;
|
|
37
|
+
};
|
|
38
|
+
export const reasoningSummary = (request) => options(request)?.reasoningSummary === "auto" ? "auto" : undefined;
|
|
39
|
+
// Resolve the OpenAI Responses `include` field. Filters out unknown
|
|
40
|
+
// includable values defensively so a typo in upstream config drops the
|
|
41
|
+
// invalid entry instead of poisoning the wire body. An empty array (either
|
|
42
|
+
// passed directly or produced by filtering) is treated as "no include" and
|
|
43
|
+
// returns undefined so the request body omits the field entirely.
|
|
44
|
+
export const include = (request) => {
|
|
45
|
+
const value = options(request)?.include;
|
|
46
|
+
if (!Array.isArray(value))
|
|
47
|
+
return undefined;
|
|
48
|
+
const filtered = value.filter((entry) => INCLUDABLES.has(entry));
|
|
49
|
+
return filtered.length > 0 ? filtered : undefined;
|
|
50
|
+
};
|
|
51
|
+
export const promptCacheKey = (request) => {
|
|
52
|
+
const value = options(request)?.promptCacheKey;
|
|
53
|
+
return typeof value === "string" ? value : undefined;
|
|
54
|
+
};
|
|
55
|
+
export const textVerbosity = (request) => {
|
|
56
|
+
const value = options(request)?.textVerbosity;
|
|
57
|
+
return isTextVerbosity(value) ? value : undefined;
|
|
58
|
+
};
|
|
59
|
+
export const serviceTier = (request) => {
|
|
60
|
+
const value = options(request)?.serviceTier;
|
|
61
|
+
return typeof value === "string" && SERVICE_TIERS.has(value) ? value : undefined;
|
|
62
|
+
};
|
|
63
|
+
export const instructions = (request) => {
|
|
64
|
+
const value = options(request)?.instructions;
|
|
65
|
+
return typeof value === "string" ? value : undefined;
|
|
66
|
+
};
|
|
67
|
+
export * as OpenAIOptions from "./openai-options";
|
|
68
|
+
//# sourceMappingURL=openai-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-options.js","sourceRoot":"","sources":["../../../src/protocols/utils/openai-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { JsonSchema, ModelToolSchemaCompatibility } from "../../schema";
|
|
2
|
+
export declare const ToolSchemaProjection: {
|
|
3
|
+
readonly gemini: (schema: JsonSchema) => JsonSchema;
|
|
4
|
+
readonly modelCompatibility: (schema: JsonSchema, compatibility: ModelToolSchemaCompatibility | undefined) => JsonSchema;
|
|
5
|
+
readonly moonshot: (schema: JsonSchema) => JsonSchema;
|
|
6
|
+
readonly openAI: (schema: JsonSchema) => JsonSchema;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=tool-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schema.d.ts","sourceRoot":"","sources":["../../../src/protocols/utils/tool-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAgF5E,eAAO,MAAM,oBAAoB;8BAfT,UAAU,KAAG,UAAU;0CAGrC,UAAU,iBACH,4BAA4B,GAAG,SAAS,KACtD,UAAU;gCA5Ba,UAAU,KAAG,UAAU;8BAKzB,UAAU,KAAG,UAAU;CAsCrC,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { isRecord } from "../../utils/record";
|
|
2
|
+
import { GeminiToolSchema } from "./gemini-tool-schema";
|
|
3
|
+
const removeNullSchemas = (value) => {
|
|
4
|
+
if (Array.isArray(value))
|
|
5
|
+
return value.map(removeNullSchemas);
|
|
6
|
+
if (!isRecord(value))
|
|
7
|
+
return value;
|
|
8
|
+
const fields = Object.fromEntries(Object.entries(value)
|
|
9
|
+
.filter(([key]) => key !== "anyOf")
|
|
10
|
+
.map(([key, field]) => [key, removeNullSchemas(field)]));
|
|
11
|
+
if (!Array.isArray(value.anyOf))
|
|
12
|
+
return fields;
|
|
13
|
+
const variants = value.anyOf.filter((variant) => !isRecord(variant) || variant.type !== "null").map(removeNullSchemas);
|
|
14
|
+
if (variants.length === 1 && isRecord(variants[0]))
|
|
15
|
+
return { ...fields, ...variants[0] };
|
|
16
|
+
return { ...fields, anyOf: variants };
|
|
17
|
+
};
|
|
18
|
+
const tupleItemsSchema = (items) => {
|
|
19
|
+
const projected = items.map(moonshotNode);
|
|
20
|
+
if (projected.length === 0)
|
|
21
|
+
return {};
|
|
22
|
+
if (projected.length === 1)
|
|
23
|
+
return projected[0];
|
|
24
|
+
return { anyOf: projected };
|
|
25
|
+
};
|
|
26
|
+
const moonshotNode = (schema) => {
|
|
27
|
+
if (Array.isArray(schema))
|
|
28
|
+
return schema.map(moonshotNode);
|
|
29
|
+
if (!isRecord(schema))
|
|
30
|
+
return schema;
|
|
31
|
+
if (typeof schema.$ref === "string")
|
|
32
|
+
return { $ref: schema.$ref };
|
|
33
|
+
return Object.fromEntries(Object.entries(schema).flatMap(([key, value]) => {
|
|
34
|
+
if (key === "items" && Array.isArray(value))
|
|
35
|
+
return [[key, tupleItemsSchema(value)]];
|
|
36
|
+
if (key === "prefixItems") {
|
|
37
|
+
if ("items" in schema)
|
|
38
|
+
return [];
|
|
39
|
+
return [["items", tupleItemsSchema(Array.isArray(value) ? value : [])]];
|
|
40
|
+
}
|
|
41
|
+
if (key === "unevaluatedItems")
|
|
42
|
+
return [];
|
|
43
|
+
return [[key, moonshotNode(value)]];
|
|
44
|
+
}));
|
|
45
|
+
};
|
|
46
|
+
const moonshot = (schema) => {
|
|
47
|
+
const projected = moonshotNode(schema);
|
|
48
|
+
return isRecord(projected) ? projected : {};
|
|
49
|
+
};
|
|
50
|
+
const openAI = (schema) => {
|
|
51
|
+
const variants = Array.isArray(schema.anyOf) ? schema.anyOf.filter(isRecord) : [];
|
|
52
|
+
const flattened = variants.length === 0
|
|
53
|
+
? { ...schema, type: "object" }
|
|
54
|
+
: {
|
|
55
|
+
...Object.fromEntries(Object.entries(schema).filter(([key]) => key !== "anyOf")),
|
|
56
|
+
type: "object",
|
|
57
|
+
properties: variants.reduce((properties, variant) => ({ ...(isRecord(variant.properties) ? variant.properties : {}), ...properties }), {}),
|
|
58
|
+
additionalProperties: false,
|
|
59
|
+
};
|
|
60
|
+
const normalized = removeNullSchemas(flattened);
|
|
61
|
+
return isRecord(normalized) ? normalized : { type: "object" };
|
|
62
|
+
};
|
|
63
|
+
const gemini = (schema) => GeminiToolSchema.convert(schema) ?? {};
|
|
64
|
+
const modelCompatibility = (schema, compatibility) => {
|
|
65
|
+
if (compatibility === undefined)
|
|
66
|
+
return schema;
|
|
67
|
+
switch (compatibility) {
|
|
68
|
+
case "gemini":
|
|
69
|
+
return gemini(schema);
|
|
70
|
+
case "moonshot":
|
|
71
|
+
return moonshot(schema);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
export const ToolSchemaProjection = {
|
|
75
|
+
gemini,
|
|
76
|
+
modelCompatibility,
|
|
77
|
+
moonshot,
|
|
78
|
+
openAI,
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=tool-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schema.js","sourceRoot":"","sources":["../../../src/protocols/utils/tool-schema.ts"],"names":[],"mappings":"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"}
|