@earendil-works/pi-ai
Version:
Unified LLM API with automatic model discovery and provider configuration
497 lines • 24 kB
TypeScript
import { type Static } from "@earendil-works/pi-schema";
export declare const SessionAffinityFormatSchema: import("@earendil-works/pi-schema").Schema<"openai" | "openai-nosession" | "openrouter">;
export declare const ThinkingTokenBudgetFieldSchema: import("@earendil-works/pi-schema").Schema<"thinking_budget" | "thinking_budget_tokens" | "thinking_token_budget">;
export declare const ChatTemplateKwargValueSchema: import("@earendil-works/pi-schema").Schema<string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null>;
export declare const OpenRouterRoutingSchema: import("@earendil-works/pi-schema").Schema<{
allow_fallbacks?: boolean | undefined;
require_parameters?: boolean | undefined;
data_collection?: "allow" | "deny" | undefined;
zdr?: boolean | undefined;
enforce_distillable_text?: boolean | undefined;
order?: string[] | undefined;
only?: string[] | undefined;
ignore?: string[] | undefined;
quantizations?: string[] | undefined;
sort?: string | {
by?: string | undefined;
partition?: string | null | undefined;
} | undefined;
max_price?: {
prompt?: string | number | undefined;
completion?: string | number | undefined;
image?: string | number | undefined;
audio?: string | number | undefined;
request?: string | number | undefined;
} | undefined;
preferred_min_throughput?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
preferred_max_latency?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
}>;
export declare const VercelGatewayRoutingSchema: import("@earendil-works/pi-schema").Schema<{
only?: string[] | undefined;
order?: string[] | undefined;
}>;
export declare const AnthropicAllowedFallbackModelSchema: import("@earendil-works/pi-schema").Schema<{
provider: string;
model: string;
cost: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
tiers?: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
inputTokensAbove: number;
}[] | undefined;
};
}>;
export declare const OpenAICompletionsCompatSchema: import("@earendil-works/pi-schema").Schema<{
supportsStore?: boolean | undefined;
supportsDeveloperRole?: boolean | undefined;
supportsReasoningEffort?: boolean | undefined;
supportsUsageInStreaming?: boolean | undefined;
supportsFinishReason?: boolean | undefined;
maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
requiresToolResultName?: boolean | undefined;
requiresAssistantAfterToolResult?: boolean | undefined;
requiresNonNullAssistantContent?: boolean | undefined;
requiresToolsWithToolHistory?: boolean | undefined;
requiresThinkingAsText?: boolean | undefined;
requiresReasoningContentOnAssistantMessages?: boolean | undefined;
thinkingFormat?: "ant-ling" | "baseten" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
chatTemplateKwargs?: Record<string, string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null> | undefined;
chatTemplateArgs?: Record<string, string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null> | undefined;
openRouterRouting?: {
allow_fallbacks?: boolean | undefined;
require_parameters?: boolean | undefined;
data_collection?: "allow" | "deny" | undefined;
zdr?: boolean | undefined;
enforce_distillable_text?: boolean | undefined;
order?: string[] | undefined;
only?: string[] | undefined;
ignore?: string[] | undefined;
quantizations?: string[] | undefined;
sort?: string | {
by?: string | undefined;
partition?: string | null | undefined;
} | undefined;
max_price?: {
prompt?: string | number | undefined;
completion?: string | number | undefined;
image?: string | number | undefined;
audio?: string | number | undefined;
request?: string | number | undefined;
} | undefined;
preferred_min_throughput?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
preferred_max_latency?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
} | undefined;
vercelGatewayRouting?: {
only?: string[] | undefined;
order?: string[] | undefined;
} | undefined;
zaiToolStream?: boolean | undefined;
thinkingTokenBudgetField?: "thinking_budget" | "thinking_budget_tokens" | "thinking_token_budget" | undefined;
supportsThinkingTokenBudget?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
supportsMidConvoToolAdditions?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
cacheControlFormat?: "anthropic" | undefined;
sendSessionAffinityHeaders?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsLongCacheRetention?: boolean | undefined;
vllmPriority?: number | undefined;
}>;
export declare const OpenAIResponsesCompatSchema: import("@earendil-works/pi-schema").Schema<{
supportsDeveloperRole?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsLongCacheRetention?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
supportsAdditionalTools?: boolean | undefined;
supportsToolSearch?: boolean | undefined;
supportsExplicitPromptCacheMode?: boolean | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsMaxOutputTokens?: boolean | undefined;
}>;
export declare const AnthropicMessagesCompatSchema: import("@earendil-works/pi-schema").Schema<{
supportsEagerToolInputStreaming?: boolean | undefined;
supportsLongCacheRetention?: boolean | undefined;
sendSessionAffinityHeaders?: boolean | undefined;
sessionAffinityFormat?: "openrouter" | undefined;
supportsCacheControlOnTools?: boolean | undefined;
supportsTemperature?: boolean | undefined;
forceAdaptiveThinking?: boolean | undefined;
allowEmptySignature?: boolean | undefined;
supportsStrictTools?: boolean | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
supportsMidConvoToolChanges?: boolean | undefined;
supportsMessageThreads?: boolean | undefined;
allowedFallbackModels?: {
provider: string;
model: string;
cost: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
tiers?: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
inputTokensAbove: number;
}[] | undefined;
};
}[] | undefined;
}>;
export declare const BedrockCompatSchema: import("@earendil-works/pi-schema").Schema<{
supportsStrictMode?: boolean | undefined;
}>;
export declare const MistralConversationsCompatSchema: import("@earendil-works/pi-schema").Schema<{
supportsMidConvoSystemMessages?: boolean | undefined;
}>;
export declare const SystemOneCompatSchema: import("@earendil-works/pi-schema").Schema<{
imageInput?: "assets" | "images" | "state-image-urls" | undefined;
sendImageOptInHeader?: boolean | undefined;
}>;
/** Compatibility schema for each API whose models accept compat. Mirrors the compat type of Model. */
export declare const CompatSchemasByApi: {
readonly "openai-completions": import("@earendil-works/pi-schema").Schema<{
supportsStore?: boolean | undefined;
supportsDeveloperRole?: boolean | undefined;
supportsReasoningEffort?: boolean | undefined;
supportsUsageInStreaming?: boolean | undefined;
supportsFinishReason?: boolean | undefined;
maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
requiresToolResultName?: boolean | undefined;
requiresAssistantAfterToolResult?: boolean | undefined;
requiresNonNullAssistantContent?: boolean | undefined;
requiresToolsWithToolHistory?: boolean | undefined;
requiresThinkingAsText?: boolean | undefined;
requiresReasoningContentOnAssistantMessages?: boolean | undefined;
thinkingFormat?: "ant-ling" | "baseten" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
chatTemplateKwargs?: Record<string, string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null> | undefined;
chatTemplateArgs?: Record<string, string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null> | undefined;
openRouterRouting?: {
allow_fallbacks?: boolean | undefined;
require_parameters?: boolean | undefined;
data_collection?: "allow" | "deny" | undefined;
zdr?: boolean | undefined;
enforce_distillable_text?: boolean | undefined;
order?: string[] | undefined;
only?: string[] | undefined;
ignore?: string[] | undefined;
quantizations?: string[] | undefined;
sort?: string | {
by?: string | undefined;
partition?: string | null | undefined;
} | undefined;
max_price?: {
prompt?: string | number | undefined;
completion?: string | number | undefined;
image?: string | number | undefined;
audio?: string | number | undefined;
request?: string | number | undefined;
} | undefined;
preferred_min_throughput?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
preferred_max_latency?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
} | undefined;
vercelGatewayRouting?: {
only?: string[] | undefined;
order?: string[] | undefined;
} | undefined;
zaiToolStream?: boolean | undefined;
thinkingTokenBudgetField?: "thinking_budget" | "thinking_budget_tokens" | "thinking_token_budget" | undefined;
supportsThinkingTokenBudget?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
supportsMidConvoToolAdditions?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
cacheControlFormat?: "anthropic" | undefined;
sendSessionAffinityHeaders?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsLongCacheRetention?: boolean | undefined;
vllmPriority?: number | undefined;
}>;
readonly "openai-responses": import("@earendil-works/pi-schema").Schema<{
supportsDeveloperRole?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsLongCacheRetention?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
supportsAdditionalTools?: boolean | undefined;
supportsToolSearch?: boolean | undefined;
supportsExplicitPromptCacheMode?: boolean | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsMaxOutputTokens?: boolean | undefined;
}>;
readonly "azure-openai-responses": import("@earendil-works/pi-schema").Schema<{
supportsDeveloperRole?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsLongCacheRetention?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
supportsAdditionalTools?: boolean | undefined;
supportsToolSearch?: boolean | undefined;
supportsExplicitPromptCacheMode?: boolean | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsMaxOutputTokens?: boolean | undefined;
}>;
readonly "openai-codex-responses": import("@earendil-works/pi-schema").Schema<{
supportsDeveloperRole?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsLongCacheRetention?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
supportsAdditionalTools?: boolean | undefined;
supportsToolSearch?: boolean | undefined;
supportsExplicitPromptCacheMode?: boolean | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsMaxOutputTokens?: boolean | undefined;
}>;
readonly "anthropic-messages": import("@earendil-works/pi-schema").Schema<{
supportsEagerToolInputStreaming?: boolean | undefined;
supportsLongCacheRetention?: boolean | undefined;
sendSessionAffinityHeaders?: boolean | undefined;
sessionAffinityFormat?: "openrouter" | undefined;
supportsCacheControlOnTools?: boolean | undefined;
supportsTemperature?: boolean | undefined;
forceAdaptiveThinking?: boolean | undefined;
allowEmptySignature?: boolean | undefined;
supportsStrictTools?: boolean | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
supportsMidConvoToolChanges?: boolean | undefined;
supportsMessageThreads?: boolean | undefined;
allowedFallbackModels?: {
provider: string;
model: string;
cost: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
tiers?: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
inputTokensAbove: number;
}[] | undefined;
};
}[] | undefined;
}>;
readonly "bedrock-converse-stream": import("@earendil-works/pi-schema").Schema<{
supportsStrictMode?: boolean | undefined;
}>;
readonly "mistral-conversations": import("@earendil-works/pi-schema").Schema<{
supportsMidConvoSystemMessages?: boolean | undefined;
}>;
readonly "typesafe-system-one": import("@earendil-works/pi-schema").Schema<{
imageInput?: "assets" | "images" | "state-image-urls" | undefined;
sendImageOptInHeader?: boolean | undefined;
}>;
readonly "cloudflare-workers-ai-system-one": import("@earendil-works/pi-schema").Schema<{
imageInput?: "assets" | "images" | "state-image-urls" | undefined;
sendImageOptInHeader?: boolean | undefined;
}>;
};
export declare const ProviderCompatSchema: import("@earendil-works/pi-schema").Schema<{
supportsStore?: boolean | undefined;
supportsReasoningEffort?: boolean | undefined;
supportsUsageInStreaming?: boolean | undefined;
supportsFinishReason?: boolean | undefined;
maxTokensField?: "max_completion_tokens" | "max_tokens" | undefined;
requiresToolResultName?: boolean | undefined;
requiresAssistantAfterToolResult?: boolean | undefined;
requiresNonNullAssistantContent?: boolean | undefined;
requiresToolsWithToolHistory?: boolean | undefined;
requiresThinkingAsText?: boolean | undefined;
requiresReasoningContentOnAssistantMessages?: boolean | undefined;
thinkingFormat?: "ant-ling" | "baseten" | "chat-template" | "deepseek" | "openai" | "openrouter" | "qwen" | "qwen-chat-template" | "string-thinking" | "together" | "zai" | undefined;
chatTemplateKwargs?: Record<string, string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null> | undefined;
chatTemplateArgs?: Record<string, string | number | boolean | {
$var: "thinking.budget" | "thinking.effort" | "thinking.enabled";
omitWhenOff?: boolean | undefined;
} | null> | undefined;
openRouterRouting?: {
allow_fallbacks?: boolean | undefined;
require_parameters?: boolean | undefined;
data_collection?: "allow" | "deny" | undefined;
zdr?: boolean | undefined;
enforce_distillable_text?: boolean | undefined;
order?: string[] | undefined;
only?: string[] | undefined;
ignore?: string[] | undefined;
quantizations?: string[] | undefined;
sort?: string | {
by?: string | undefined;
partition?: string | null | undefined;
} | undefined;
max_price?: {
prompt?: string | number | undefined;
completion?: string | number | undefined;
image?: string | number | undefined;
audio?: string | number | undefined;
request?: string | number | undefined;
} | undefined;
preferred_min_throughput?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
preferred_max_latency?: number | {
p50?: number | undefined;
p75?: number | undefined;
p90?: number | undefined;
p99?: number | undefined;
} | undefined;
} | undefined;
vercelGatewayRouting?: {
only?: string[] | undefined;
order?: string[] | undefined;
} | undefined;
zaiToolStream?: boolean | undefined;
thinkingTokenBudgetField?: "thinking_budget" | "thinking_budget_tokens" | "thinking_token_budget" | undefined;
supportsThinkingTokenBudget?: boolean | undefined;
supportsMidConvoToolAdditions?: boolean | undefined;
cacheControlFormat?: "anthropic" | undefined;
vllmPriority?: number | undefined;
supportsAdditionalTools?: boolean | undefined;
supportsToolSearch?: boolean | undefined;
supportsExplicitPromptCacheMode?: boolean | undefined;
supportsMaxOutputTokens?: boolean | undefined;
supportsEagerToolInputStreaming?: boolean | undefined;
supportsCacheControlOnTools?: boolean | undefined;
supportsTemperature?: boolean | undefined;
forceAdaptiveThinking?: boolean | undefined;
allowEmptySignature?: boolean | undefined;
supportsStrictTools?: boolean | undefined;
supportsMidConvoToolChanges?: boolean | undefined;
supportsMessageThreads?: boolean | undefined;
allowedFallbackModels?: {
provider: string;
model: string;
cost: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
tiers?: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
inputTokensAbove: number;
}[] | undefined;
};
}[] | undefined;
imageInput?: "assets" | "images" | "state-image-urls" | undefined;
sendImageOptInHeader?: boolean | undefined;
supportsDeveloperRole?: boolean | undefined;
supportsMidConvoSystemMessages?: boolean | undefined;
sessionAffinityFormat?: "openai" | "openai-nosession" | "openrouter" | undefined;
promptCacheKeyMode?: "auto" | "disabled" | "enabled" | undefined;
supportsMidConvoEffort?: boolean | undefined;
supportsLongCacheRetention?: boolean | undefined;
supportsStrictMode?: boolean | undefined;
supportsOpenAIGrammarTools?: boolean | undefined;
sendSessionAffinityHeaders?: boolean | undefined;
}>;
export type ChatTemplateKwargValue = Static<typeof ChatTemplateKwargValueSchema>;
/** Provider and model compatibility overrides in models.json: every API's compat fields. */
export type ProviderCompat = Static<typeof ProviderCompatSchema>;
/** Top-level request field used to cap reasoning tokens on OpenAI-compatible servers. */
export type ThinkingTokenBudgetField = Static<typeof ThinkingTokenBudgetFieldSchema>;
export type SessionAffinityFormat = Static<typeof SessionAffinityFormatSchema>;
/** OpenRouter provider routing preferences. */
export interface OpenRouterRouting extends Static<typeof OpenRouterRoutingSchema> {
}
/** Vercel AI Gateway routing preferences. */
export interface VercelGatewayRouting extends Static<typeof VercelGatewayRoutingSchema> {
}
/** An Anthropic server-side refusal fallback model with local pricing metadata. */
export interface AnthropicAllowedFallbackModel extends Static<typeof AnthropicAllowedFallbackModelSchema> {
}
/** Compatibility settings for OpenAI-compatible completions APIs. */
export interface OpenAICompletionsCompat extends Static<typeof OpenAICompletionsCompatSchema> {
}
/** Compatibility settings for OpenAI Responses APIs. */
export interface OpenAIResponsesCompat extends Static<typeof OpenAIResponsesCompatSchema> {
}
/** Compatibility settings for Anthropic Messages-compatible APIs. */
export interface AnthropicMessagesCompat extends Static<typeof AnthropicMessagesCompatSchema> {
}
/** Compatibility settings for Amazon Bedrock models. */
export interface BedrockCompat extends Static<typeof BedrockCompatSchema> {
}
/** Compatibility settings for the Mistral chat API. */
export interface MistralConversationsCompat extends Static<typeof MistralConversationsCompatSchema> {
}
/** Compatibility settings for System One classifier APIs. */
export interface SystemOneCompat extends Static<typeof SystemOneCompatSchema> {
}
//# sourceMappingURL=compat-schema.d.ts.map