import { Context, Effect, Layer, Schema } from "effect"; import { Prompt } from "effect/unstable/ai"; /** @experimental How many queued inputs to drain at a boundary. */ export type DrainMode = "all" | "one-at-a-time"; /** @experimental What a bounded queue does when a producer offers while full. */ export type OverflowStrategy = "suspend" | "fail" | "drop-newest" | "drop-oldest"; /** @experimental Policy for one steering queue. */ export interface QueuePolicy { readonly mode?: DrainMode; readonly capacity?: number; readonly onFull?: OverflowStrategy; } /** @experimental Queue identity for typed steering errors. */ export type QueueName = "steering" | "followUp"; /** @experimental Prompt injected into a live agent run. */ export interface Input { readonly prompt: Prompt.RawInput; } /** @experimental Options for the in-memory steering layer. */ export interface MakeOptions { readonly steering?: QueuePolicy; readonly followUp?: QueuePolicy; } /** @experimental In-process steering service boundary. */ export interface Interface { readonly steer: (input: Input) => Effect.Effect; readonly followUp: (input: Input) => Effect.Effect; readonly takeSteering: Effect.Effect>; readonly takeFollowUp: Effect.Effect>; } declare const Steering_base: Context.ServiceClass; /** @experimental */ export declare class Steering extends Steering_base { } declare const SteeringQueueFull_base: Schema.Class; readonly capacity: Schema.Finite; }>, import("effect/Cause").YieldableError>; /** @experimental Bounded steering queue rejected an input. */ export declare class SteeringQueueFull extends SteeringQueueFull_base { } /** @experimental In-memory steering backed by two Effect queues. */ export declare const layer: (options?: MakeOptions) => Layer.Layer; /** @experimental */ export declare const layerTest: (implementation: Interface) => Layer.Layer; export {};