import { Context, Effect, Layer, Schema } from "effect"; import { Response, Tool, Toolkit } from "effect/unstable/ai"; import type { AgentToolToolkit } from "../agent/agent-tool.js"; import { ToolContext } from "./tool-context.js"; import type { Route, RouteInput } from "./tool-placement.js"; import { client, mcp, remote, route, sandbox } from "./tool-executor-routes.js"; export { client, mcp, remote, route, sandbox }; import type { SchemaTool, ToolSchemaServices } from "./tool-result-codec.js"; /** @experimental */ export interface Request { readonly call: Response.ToolCallPart; readonly toolCallBatch: { readonly calls: ReadonlyArray>; }; readonly turn: number; readonly toolCallIndex: number; readonly agentName: string; readonly sessionId: string; } /** @experimental */ export interface Success { readonly _tag: "Success"; readonly result: unknown; readonly encodedResult: unknown; } /** @experimental */ export interface DomainFailure { readonly _tag: "DomainFailure"; readonly failure: unknown; readonly encodedFailure: unknown; } /** @experimental */ export interface Suspend { readonly _tag: "Suspend"; readonly token: string; } /** @experimental */ export type Outcome = Success | DomainFailure | Suspend; /** @experimental */ export declare const FrameworkStage: Schema.Literals; /** @experimental */ export type FrameworkStage = typeof FrameworkStage.Type; declare const FrameworkFailure_base: Schema.Class; readonly tool: Schema.String; readonly message: Schema.String; }>, import("effect/Cause").YieldableError>; /** @experimental */ export declare class FrameworkFailure extends FrameworkFailure_base { } declare const RemoteRetryMisconfigured_base: Schema.Class; readonly message: Schema.String; }>, import("effect/Cause").YieldableError>; /** @experimental An idempotent remote route supplied an invalid or unstable operation key or retry bound. */ export declare class RemoteRetryMisconfigured extends RemoteRetryMisconfigured_base { } /** @experimental */ export interface Interface { readonly execute: (request: Request) => Effect.Effect; } declare const ToolExecutor_base: Context.ServiceClass>; /** @experimental */ export declare class ToolExecutor extends ToolExecutor_base { } /** @experimental */ export type ToolkitInput> = Toolkit.Toolkit | Toolkit.WithHandler; /** @experimental A schema-backed tool set with a closed name-based invocation. */ export interface ClosedToolSet { readonly tools: Readonly>; readonly invoke: (name: string, params: unknown) => Effect.Effect; } /** @experimental */ export declare function executeToolkit(toolkit: ClosedToolSet, request: Request): Effect.Effect>; export declare function executeToolkit(toolkit: AgentToolToolkit, request: Request): Effect.Effect; export declare function executeToolkit>(toolkit: Toolkit.WithHandler, request: Request): Effect.Effect>; export declare function executeToolkit>(toolkit: Toolkit.Toolkit, request: Request): Effect.Effect | Tool.HandlerServices>; export declare function executeToolkit(request: Request): ((toolkit: AgentToolToolkit) => Effect.Effect) & (>(toolkit: Toolkit.WithHandler) => Effect.Effect>) & (>(toolkit: Toolkit.Toolkit) => Effect.Effect | Tool.HandlerServices>); /** @experimental */ export declare function layerToolkit(toolkit: AgentToolToolkit): Layer.Layer; export declare function layerToolkit(toolkit: ClosedToolSet): Layer.Layer; export declare function layerToolkit(toolkit: ClosedToolSet): Layer.Layer>; export declare function layerToolkit>(toolkit: Toolkit.WithHandler): Layer.Layer; export declare function layerToolkit>(toolkit: Toolkit.Toolkit): Layer.Layer>; /** @experimental */ export declare function routeToolkit(toolkit: AgentToolToolkit): Route; export declare function routeToolkit(toolkit: ClosedToolSet): RouteInput>; export declare function routeToolkit>(toolkit: Toolkit.WithHandler): Route; export declare function routeToolkit>(toolkit: Toolkit.Toolkit): Effect.Effect>; /** @experimental */ export declare function layerRouter(routes: Iterable>): Layer.Layer; export declare function layerRouter(routes: Iterable | Effect.Effect, never, R>>): Layer.Layer; export declare function layerRouter(routes: Iterable | RouteInput>): Layer.Layer; export declare function layerRouter(routes: Iterable | RouteInput>): Layer.Layer; export declare function layerRouter(routes: Iterable>): Layer.Layer; /** @experimental */ export declare const layerTest: (implementation: Interface) => Layer.Layer;