import type { Agent } from './agent'; import type { RunContext } from './runContext'; import type * as protocol from './types/protocol'; import type { UnknownContext } from './types'; /** * The action a tool guardrail should take after evaluation. * * - `allow`: proceed to the next guardrail or tool execution/output handling. * - `rejectContent`: treat the guardrail as rejecting the call/output and short‑circuit with a message. * - `throwException`: escalate immediately as a tripwire to fail fast and surface diagnostics. */ export type ToolGuardrailBehavior = { type: 'allow'; } | { type: 'rejectContent'; message: string; } | { type: 'throwException'; }; /** * The output of a tool guardrail function. * * `behavior` drives runner control flow; `outputInfo` is optional, structured metadata for tracing or debugging. */ export interface ToolGuardrailFunctionOutput { /** * Additional data about the guardrail evaluation. */ outputInfo?: any; /** * The behavior the runner should take in response to this guardrail. */ behavior: ToolGuardrailBehavior; } export interface ToolGuardrailMetadata { type: 'tool_input' | 'tool_output'; name: string; } export interface ToolGuardrailBase { name: string; } /** * Input data passed to a tool input guardrail function. */ export interface ToolInputGuardrailData { context: RunContext; agent: Agent; toolCall: protocol.FunctionCallItem; } /** * Input data passed to a tool output guardrail function. */ export interface ToolOutputGuardrailData extends ToolInputGuardrailData { output: unknown; } export type ToolInputGuardrailFunction = (data: ToolInputGuardrailData) => Promise; export type ToolOutputGuardrailFunction = (data: ToolOutputGuardrailData) => Promise; export interface ToolInputGuardrailDefinition extends ToolGuardrailBase { type: 'tool_input'; run: ToolInputGuardrailFunction; } export interface ToolOutputGuardrailDefinition extends ToolGuardrailBase { type: 'tool_output'; run: ToolOutputGuardrailFunction; } export interface ToolInputGuardrailResult { guardrail: ToolGuardrailMetadata & { type: 'tool_input'; }; output: ToolGuardrailFunctionOutput; } export interface ToolOutputGuardrailResult { guardrail: ToolGuardrailMetadata & { type: 'tool_output'; }; output: ToolGuardrailFunctionOutput; } export declare function defineToolInputGuardrail(args: { name: string; run: ToolInputGuardrailFunction; }): ToolInputGuardrailDefinition; export declare function defineToolOutputGuardrail(args: { name: string; run: ToolOutputGuardrailFunction; }): ToolOutputGuardrailDefinition; export declare const ToolGuardrailFunctionOutputFactory: { allow(outputInfo?: any): ToolGuardrailFunctionOutput; rejectContent(message: string, outputInfo?: any): ToolGuardrailFunctionOutput; throwException(outputInfo?: any): ToolGuardrailFunctionOutput; }; type ToolInputGuardrailInit = ToolInputGuardrailDefinition | { name: string; run: ToolInputGuardrailFunction; }; type ToolOutputGuardrailInit = ToolOutputGuardrailDefinition | { name: string; run: ToolOutputGuardrailFunction; }; export declare function resolveToolInputGuardrails(guardrails?: ToolInputGuardrailInit[]): ToolInputGuardrailDefinition[]; export declare function resolveToolOutputGuardrails(guardrails?: ToolOutputGuardrailInit[]): ToolOutputGuardrailDefinition[]; export {};