@adaline/gateway
Version:
Adaline Gateway
1,399 lines (1,381 loc) • 741 kB
TypeScript
import { GatewayBaseError, ToolCallContentType, ToolResponseContentType } from '@adaline/types';
import { Context, Tracer, Meter } from '@opentelemetry/api';
import { z } from 'zod';
import { ChatModelV1, EmbeddingModelV1 } from '@adaline/provider';
import { AxiosInstance } from 'axios';
declare class GatewayError extends Error {
status: number;
data: unknown;
constructor(message: string, status?: number, data?: unknown);
}
declare class GatewayTelemetryError extends GatewayBaseError {
readonly info: string;
readonly cause: unknown;
constructor({ info, cause }: {
info: string;
cause: unknown;
});
static isGatewayTelemetryError(error: unknown): error is GatewayTelemetryError;
}
type HttpClientOptions = {
retry?: {
maxAttempts: number;
initialDelay: number;
exponentialFactor: number;
};
};
interface HttpClient {
stream<T>(url: string, method: "get" | "post", data?: Record<string, unknown>, headers?: Record<string, string>, options?: {
abortSignal?: AbortSignal;
}, telemetryContext?: Context): AsyncGenerator<T, void, unknown>;
get<T>(url: string, params?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
post<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
put<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
delete<T>(url: string, params?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
patch<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
}
interface HttpClientResponse<T> {
data: T;
headers: Record<string, string>;
status: {
code: number;
text: string;
};
}
declare class HttpClientError extends GatewayBaseError {
readonly info: string;
readonly cause: unknown;
constructor({ info, cause }: {
info: string;
cause: unknown;
});
static isHttpClientError(error: unknown): error is HttpClientError;
}
declare class HttpRequestError extends GatewayBaseError {
readonly info: string;
readonly cause: {
status: number;
headers: Record<string, string>;
data: unknown;
};
constructor(message: string, status: number | undefined, headers: Record<string, string>, data: unknown);
static isHttpRequestError(error: unknown): error is HttpRequestError;
}
interface IsomorphicHttpClientConfig {
timeoutInMilliseconds?: number;
axiosInstance?: AxiosInstance;
telemetryTracer?: Tracer;
enableProxyAgent?: boolean;
}
declare class IsomorphicHttpClient implements HttpClient {
private defaultTimeout?;
private client;
private httpProxyAgent?;
private httpsProxyAgent?;
private enableProxyAgent;
constructor(config: IsomorphicHttpClientConfig);
isNodeEnvironment: () => boolean;
private makeRequest;
stream<T>(url: string, method: "get" | "post", data?: Record<string, unknown>, headers?: Record<string, string>, options?: {
abortSignal?: AbortSignal;
}, telemetryContext?: Context): AsyncGenerator<T, void, unknown>;
get<T>(url: string, params?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
post<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
put<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
delete<T>(url: string, params?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
patch<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>, options?: HttpClientOptions, telemetryContext?: Context): Promise<HttpClientResponse<T>>;
}
declare class QueueTaskTimeoutError extends GatewayBaseError {
readonly info: string;
readonly cause: unknown;
constructor({ info, cause }: {
info: string;
cause: unknown;
});
static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError;
}
interface Cache<T> {
get(key: string): Promise<T | undefined>;
set(key: string, value: T): Promise<void>;
delete(key: string): Promise<void>;
clear(): Promise<void>;
}
declare class LRUCache<T extends object> implements Cache<T> {
private cache;
constructor(maxEntries?: number);
get(key: string): Promise<T | undefined>;
set(key: string, value: T): Promise<void>;
delete(key: string): Promise<void>;
clear(): Promise<void>;
}
type QueueTask<Request, Response> = {
id: string;
request: Request;
cache?: Cache<Response>;
resolve: (value: Response) => void;
reject: (error: any) => void;
execute: (request: Request, context: Context) => Promise<Response>;
telemetryContext: Context;
};
interface Queue<Request, Response> {
enqueue(task: QueueTask<Request, Response>): void;
}
declare const QueueOptions: z.ZodObject<{
maxConcurrentTasks: z.ZodNumber;
retryCount: z.ZodNumber;
timeout: z.ZodNumber;
retry: z.ZodObject<{
initialDelay: z.ZodNumber;
exponentialFactor: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
initialDelay: number;
exponentialFactor: number;
}, {
initialDelay: number;
exponentialFactor: number;
}>;
}, "strip", z.ZodTypeAny, {
timeout: number;
retry: {
initialDelay: number;
exponentialFactor: number;
};
maxConcurrentTasks: number;
retryCount: number;
}, {
timeout: number;
retry: {
initialDelay: number;
exponentialFactor: number;
};
maxConcurrentTasks: number;
retryCount: number;
}>;
type QueueOptionsType = z.infer<typeof QueueOptions>;
declare class SimpleQueue<Request, Response> implements Queue<Request, Response> {
private options;
private activeTasks;
private queue;
constructor(options: QueueOptionsType);
enqueue(task: QueueTask<Request, Response>): void;
private executeWithTimeout;
private executeWithRetry;
private processQueue;
}
type AnalyticsNodeEnvironment = {
node: {
version: string;
platform: string;
architecture: string;
};
};
type AnalyticsBrowserEnvironment = {
browser: {
version: string;
userAgent: string;
};
};
type AnalyticsEvent = {
event: string;
timestamp: string;
dimensions: {
[key: string]: any;
};
status: string;
eventVersion: string;
gatewayVersion: string;
environment: AnalyticsNodeEnvironment | AnalyticsBrowserEnvironment;
userId?: string;
};
interface AnalyticsRecorder {
record(event: AnalyticsEvent["event"], status: AnalyticsEvent["status"], dimensions: AnalyticsEvent["dimensions"]): void;
stopRecorder(): void;
}
declare class AnalyticsManager {
private static analytics;
static getAnalyticsRecorder(enableAnalytics: boolean): AnalyticsRecorder;
}
declare class PostAnalytics implements AnalyticsRecorder {
private readonly eventVersion;
private readonly gatewayVersion;
private flushTimer;
private flushInterval;
private batchSize;
private maxAttempts;
private environment;
private analyticsEndpointUrl;
private events;
constructor();
private startFlushTimer;
private stopFlushTimer;
record(event: AnalyticsEvent["event"], status: AnalyticsEvent["status"], dimensions: AnalyticsEvent["dimensions"]): void;
private flushEvents;
private sendEvents;
stopRecorder(): void;
}
declare class NoOpAnalytics implements AnalyticsRecorder {
record(event: AnalyticsEvent["event"], status: AnalyticsEvent["status"], dimensions: AnalyticsEvent["dimensions"]): void;
stopRecorder(): void;
}
declare class TelemetryManager {
static DEFAULT_TRACER_KEY: string;
static DEFAULT_METER_KEY: string;
private static tracer;
private static meter;
static setTracer(tracer: Tracer | undefined): void;
static getTracer(): Tracer;
static setMeter(meter: Meter | undefined): void;
static getMeter(): Meter;
}
interface Logger {
debug(message: string, ...params: any[]): void;
info(message: string, ...params: any[]): void;
warn(message: string, ...params: any[]): void;
error(message: string, ...params: any[]): void;
critical(message: string, ...params: any[]): void;
}
declare class LoggerManager {
private static logger;
static setLogger(logger: Logger | undefined): void;
static getLogger(): Logger | undefined;
}
declare class ConsoleLogger implements Logger {
debug(message: string, ...params: any[]): void;
info(message: string, ...params: any[]): void;
warn(message: string, ...params: any[]): void;
error(message: string, ...params: any[]): void;
critical(message: string, ...params: any[]): void;
}
declare const CompleteChatHandlerRequest: z.ZodObject<{
cache: z.ZodType<Cache<{
request: {
config: Record<string, any>;
messages: {
role: "system" | "user" | "assistant" | "tool";
content: ({
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
} | {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
} | {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
} | {
value: string;
modality: "text";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
} | {
type: "url";
url: string;
};
modality: "image";
detail: "low" | "medium" | "high" | "auto";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
} | {
type: "url";
url: string;
};
modality: "pdf";
file: {
name: string;
id: string;
size?: number | undefined;
};
metadata?: undefined;
} | {
id: string;
name: string;
modality: "tool-call";
index: number;
arguments: string;
metadata?: undefined;
serverName?: string | undefined;
thoughtSignature?: string | undefined;
} | {
value: {
type: "thinking";
thinking: string;
signature: string;
} | {
type: "redacted";
data: string;
};
modality: "reasoning";
metadata?: undefined;
})[];
metadata?: undefined;
}[];
tools?: {
type: "function";
definition: {
schema: {
name: string;
description: string;
strict?: boolean | undefined;
parameters?: any;
};
};
metadata?: any;
request?: {
type: "http";
url: string;
method: "get" | "post";
query?: Record<string, string> | undefined;
headers?: Record<string, string> | undefined;
body?: Record<string, any> | undefined;
proxyUrl?: string | undefined;
proxyHeaders?: Record<string, string> | undefined;
retry?: {
maxAttempts: number;
initialDelay: number;
exponentialFactor: number;
} | undefined;
} | undefined;
}[] | undefined;
};
response: {
messages: {
role: "system" | "user" | "assistant" | "tool";
content: ({
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
} | {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
} | {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
} | {
value: string;
modality: "text";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
} | {
type: "url";
url: string;
};
modality: "image";
detail: "low" | "medium" | "high" | "auto";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
} | {
type: "url";
url: string;
};
modality: "pdf";
file: {
name: string;
id: string;
size?: number | undefined;
};
metadata?: undefined;
} | {
modality: "tool-call";
name: string;
id: string;
index: number;
arguments: string;
metadata?: undefined;
serverName?: string | undefined;
thoughtSignature?: string | undefined;
} | {
value: {
type: "thinking";
thinking: string;
signature: string;
} | {
type: "redacted";
data: string;
};
modality: "reasoning";
metadata?: undefined;
})[];
metadata?: undefined;
}[];
usage?: {
promptTokens: number;
completionTokens: number;
totalTokens: number;
} | undefined;
logProbs?: {
token: string;
logProb: number;
bytes: number[] | null;
topLogProbs: {
token: string;
logProb: number;
bytes: number[] | null;
}[];
}[] | undefined;
};
cached: boolean;
latencyInMs: number;
provider: {
request?: any;
response?: any;
};
metadataForCallbacks?: any;
}>, z.ZodTypeDef, Cache<{
request: {
config: Record<string, any>;
messages: {
role: "system" | "user" | "assistant" | "tool";
content: ({
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
} | {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
} | {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
} | {
value: string;
modality: "text";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
} | {
type: "url";
url: string;
};
modality: "image";
detail: "low" | "medium" | "high" | "auto";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
} | {
type: "url";
url: string;
};
modality: "pdf";
file: {
name: string;
id: string;
size?: number | undefined;
};
metadata?: undefined;
} | {
id: string;
name: string;
modality: "tool-call";
index: number;
arguments: string;
metadata?: undefined;
serverName?: string | undefined;
thoughtSignature?: string | undefined;
} | {
value: {
type: "thinking";
thinking: string;
signature: string;
} | {
type: "redacted";
data: string;
};
modality: "reasoning";
metadata?: undefined;
})[];
metadata?: undefined;
}[];
tools?: {
type: "function";
definition: {
schema: {
name: string;
description: string;
strict?: boolean | undefined;
parameters?: any;
};
};
metadata?: any;
request?: {
type: "http";
url: string;
method: "get" | "post";
query?: Record<string, string> | undefined;
headers?: Record<string, string> | undefined;
body?: Record<string, any> | undefined;
proxyUrl?: string | undefined;
proxyHeaders?: Record<string, string> | undefined;
retry?: {
maxAttempts: number;
initialDelay: number;
exponentialFactor: number;
} | undefined;
} | undefined;
}[] | undefined;
};
response: {
messages: {
role: "system" | "user" | "assistant" | "tool";
content: ({
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
} | {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
} | {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
} | {
value: string;
modality: "text";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
} | {
type: "url";
url: string;
};
modality: "image";
detail: "low" | "medium" | "high" | "auto";
metadata?: undefined;
} | {
value: {
type: "base64";
base64: string;
} | {
type: "url";
url: string;
};
modality: "pdf";
file: {
name: string;
id: string;
size?: number | undefined;
};
metadata?: undefined;
} | {
modality: "tool-call";
name: string;
id: string;
index: number;
arguments: string;
metadata?: undefined;
serverName?: string | undefined;
thoughtSignature?: string | undefined;
} | {
value: {
type: "thinking";
thinking: string;
signature: string;
} | {
type: "redacted";
data: string;
};
modality: "reasoning";
metadata?: undefined;
})[];
metadata?: undefined;
}[];
usage?: {
promptTokens: number;
completionTokens: number;
totalTokens: number;
} | undefined;
logProbs?: {
token: string;
logProb: number;
bytes: number[] | null;
topLogProbs: {
token: string;
logProb: number;
bytes: number[] | null;
}[];
}[] | undefined;
};
cached: boolean;
latencyInMs: number;
provider: {
request?: any;
response?: any;
};
metadataForCallbacks?: any;
}>>;
model: z.ZodType<ChatModelV1<{
name: string;
description: string;
roles: Partial<Record<"system" | "user" | "assistant" | "tool", string | undefined>>;
modalities: ["text" | "error" | "image" | "pdf" | "tool-call" | "tool-response" | "reasoning" | "search-result", ...("text" | "error" | "image" | "pdf" | "tool-call" | "tool-response" | "reasoning" | "search-result")[]];
maxInputTokens: number;
maxOutputTokens: number;
config: {
def: Record<string, {
type: "multi-string";
param: string;
title: string;
description: string;
max: number;
} | {
type: "object-schema";
param: string;
title: string;
description: string;
objectSchema?: any;
} | {
type: "paired-select";
param: string;
title: string;
description: string;
fields: [{
label: string;
key: string;
choices: {
value: string;
label: string;
}[];
description?: string | undefined;
}, {
label: string;
key: string;
choices: {
value: string;
label: string;
}[];
description?: string | undefined;
}];
uniqueByField?: string | undefined;
} | {
type: "range";
param: string;
title: string;
description: string;
max: number;
default: number;
min: number;
step: number;
} | {
type: "select-boolean";
param: string;
title: string;
description: string;
default: boolean | null;
} | {
type: "select-string";
param: string;
title: string;
description: string;
default: string;
choices: string[];
}>;
schema: z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, unknown, unknown>;
};
price: {
modelName: string;
currency: string;
tokenRanges: {
minTokens: number;
prices: {
base: {
inputPricePerMillion: number;
outputPricePerMillion: number;
};
};
maxTokens?: number | null | undefined;
}[];
};
maxReasoningTokens?: number | undefined;
}>, z.ZodTypeDef, ChatModelV1<{
name: string;
description: string;
roles: Partial<Record<"system" | "user" | "assistant" | "tool", string | undefined>>;
modalities: ["text" | "error" | "image" | "pdf" | "tool-call" | "tool-response" | "reasoning" | "search-result", ...("text" | "error" | "image" | "pdf" | "tool-call" | "tool-response" | "reasoning" | "search-result")[]];
maxInputTokens: number;
maxOutputTokens: number;
config: {
def: Record<string, {
type: "multi-string";
param: string;
title: string;
description: string;
max: number;
} | {
type: "object-schema";
param: string;
title: string;
description: string;
objectSchema?: any;
} | {
type: "paired-select";
param: string;
title: string;
description: string;
fields: [{
label: string;
key: string;
choices: {
value: string;
label: string;
}[];
description?: string | undefined;
}, {
label: string;
key: string;
choices: {
value: string;
label: string;
}[];
description?: string | undefined;
}];
uniqueByField?: string | undefined;
} | {
type: "range";
param: string;
title: string;
description: string;
max: number;
default: number;
min: number;
step: number;
} | {
type: "select-boolean";
param: string;
title: string;
description: string;
default: boolean | null;
} | {
type: "select-string";
param: string;
title: string;
description: string;
default: string;
choices: string[];
}>;
schema: z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, unknown, unknown>;
};
price: {
modelName: string;
currency: string;
tokenRanges: {
minTokens: number;
prices: {
base: {
inputPricePerMillion: number;
outputPricePerMillion: number;
};
};
maxTokens?: number | null | undefined;
}[];
};
maxReasoningTokens?: number | undefined;
}>>;
config: z.ZodRecord<z.ZodString, z.ZodAny>;
messages: z.ZodArray<z.ZodObject<{
role: z.ZodEnum<["system", "user", "assistant", "tool"]>;
content: z.ZodArray<z.ZodDiscriminatedUnion<"modality", [z.ZodObject<{
modality: z.ZodLiteral<"text">;
value: z.ZodString;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
value: string;
modality: "text";
metadata?: undefined;
}, {
value: string;
modality: "text";
metadata?: undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"image">;
detail: z.ZodEnum<["low", "medium", "high", "auto"]>;
value: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
type: z.ZodLiteral<"base64">;
base64: z.ZodString;
mediaType: z.ZodEnum<["png", "jpeg", "webp", "gif"]>;
}, "strip", z.ZodTypeAny, {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
}, {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
}>, z.ZodObject<{
type: z.ZodLiteral<"url">;
url: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: "url";
url: string;
}, {
type: "url";
url: string;
}>]>;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
value: {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
} | {
type: "url";
url: string;
};
modality: "image";
detail: "low" | "medium" | "high" | "auto";
metadata?: undefined;
}, {
value: {
type: "base64";
base64: string;
mediaType: "png" | "jpeg" | "webp" | "gif";
} | {
type: "url";
url: string;
};
modality: "image";
detail: "low" | "medium" | "high" | "auto";
metadata?: undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"pdf">;
value: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
type: z.ZodLiteral<"base64">;
base64: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: "base64";
base64: string;
}, {
type: "base64";
base64: string;
}>, z.ZodObject<{
type: z.ZodLiteral<"url">;
url: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: "url";
url: string;
}, {
type: "url";
url: string;
}>]>;
file: z.ZodObject<{
name: z.ZodString;
id: z.ZodString;
size: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
name: string;
id: string;
size?: number | undefined;
}, {
name: string;
id: string;
size?: number | undefined;
}>;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
value: {
type: "base64";
base64: string;
} | {
type: "url";
url: string;
};
modality: "pdf";
file: {
name: string;
id: string;
size?: number | undefined;
};
metadata?: undefined;
}, {
value: {
type: "base64";
base64: string;
} | {
type: "url";
url: string;
};
modality: "pdf";
file: {
name: string;
id: string;
size?: number | undefined;
};
metadata?: undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"tool-call">;
index: z.ZodNumber;
id: z.ZodString;
name: z.ZodString;
arguments: z.ZodString;
serverName: z.ZodOptional<z.ZodString>;
thoughtSignature: z.ZodOptional<z.ZodString>;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
id: string;
name: string;
modality: "tool-call";
index: number;
arguments: string;
metadata?: undefined;
serverName?: string | undefined;
thoughtSignature?: string | undefined;
}, {
id: string;
name: string;
modality: "tool-call";
index: number;
arguments: string;
metadata?: undefined;
serverName?: string | undefined;
thoughtSignature?: string | undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"tool-response">;
index: z.ZodNumber;
id: z.ZodString;
name: z.ZodString;
data: z.ZodString;
apiResponse: z.ZodOptional<z.ZodObject<{
statusCode: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
statusCode: number;
}, {
statusCode: number;
}>>;
metadata: z.ZodTypeAny;
}, "strip", z.ZodTypeAny, {
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
}, {
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"reasoning">;
value: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
type: z.ZodLiteral<"thinking">;
thinking: z.ZodString;
signature: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: "thinking";
thinking: string;
signature: string;
}, {
type: "thinking";
thinking: string;
signature: string;
}>, z.ZodObject<{
type: z.ZodLiteral<"redacted">;
data: z.ZodString;
}, "strip", z.ZodTypeAny, {
type: "redacted";
data: string;
}, {
type: "redacted";
data: string;
}>]>;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
value: {
type: "thinking";
thinking: string;
signature: string;
} | {
type: "redacted";
data: string;
};
modality: "reasoning";
metadata?: undefined;
}, {
value: {
type: "thinking";
thinking: string;
signature: string;
} | {
type: "redacted";
data: string;
};
modality: "reasoning";
metadata?: undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"error">;
value: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
type: z.ZodLiteral<"safety">;
value: z.ZodObject<{
category: z.ZodString;
probability: z.ZodString;
blocked: z.ZodBoolean;
message: z.ZodString;
}, "strip", z.ZodTypeAny, {
message: string;
category: string;
probability: string;
blocked: boolean;
}, {
message: string;
category: string;
probability: string;
blocked: boolean;
}>;
}, "strip", z.ZodTypeAny, {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
}, {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
}>]>;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
}, {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
}>, z.ZodObject<{
modality: z.ZodLiteral<"search-result">;
value: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
type: z.ZodLiteral<"google">;
query: z.ZodString;
responses: z.ZodArray<z.ZodObject<{
source: z.ZodString;
url: z.ZodString;
title: z.ZodString;
snippet: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}, {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}>, "many">;
references: z.ZodArray<z.ZodObject<{
text: z.ZodString;
responseIndices: z.ZodArray<z.ZodNumber, "many">;
startIndex: z.ZodOptional<z.ZodNumber>;
endIndex: z.ZodOptional<z.ZodNumber>;
confidenceScores: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
}, "strip", z.ZodTypeAny, {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}, {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}>, "many">;
}, "strip", z.ZodTypeAny, {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
}, {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
}>]>;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
}, {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
}>]>, "many">;
metadata: z.ZodUndefined;
}, "strip", z.ZodTypeAny, {
role: "system" | "user" | "assistant" | "tool";
content: ({
modality: "tool-response";
name: string;
id: string;
data: string;
index: number;
metadata?: any;
apiResponse?: {
statusCode: number;
} | undefined;
} | {
value: {
type: "safety";
value: {
message: string;
category: string;
probability: string;
blocked: boolean;
};
};
modality: "error";
metadata?: undefined;
} | {
value: {
type: "google";
query: string;
responses: {
url: string;
source: string;
title: string;
snippet?: string | undefined;
}[];
references: {
text: string;
responseIndices: number[];
startIndex?: number | undefined;
endIndex?: number | undefined;
confidenceScores?: number[] | undefined;
}[];
};
modality: "search-result";
metadata?: undefined;
} | {
v