import type { TurnResult, UserSignal, ResolvedNode } from '../../types/channel.js'; import type { RunContext } from '../../types/run-context.js'; import type { ChannelDriver } from '../../types/channel.js'; import type { DecideNode } from '../../types/flow.js'; import { buildNodePrompt } from '../../flow/nodeBuilders.js'; import type { AnyTool } from '../../types/effectTool.js'; import { type ModelTurnLoop } from './ModelTurnLoop.js'; export interface TextDriverConfig { toolDefs?: Record; maxSteps?: number; /** Replaces only the provider/tool iteration loop; Kuralle still owns turn composition. */ modelLoop?: ModelTurnLoop; } export declare class TextDriver implements ChannelDriver { readonly outputCapability: "kuralle-controlled-text"; private readonly toolDefs; private readonly maxSteps; private readonly modelLoop; constructor(config?: TextDriverConfig); runAgentTurn(node: ResolvedNode, ctx: RunContext): Promise; runExtraction(node: ResolvedNode, ctx: RunContext): Promise; runStructured(node: DecideNode, ctx: RunContext): Promise; awaitUser(ctx: RunContext): Promise; private agentToolDefs; private resolveTools; } export { addTurnUsage, languageModelId } from './turnUsage.js'; export { buildNodePrompt }; /** Compose the base layer for any custom driver's structured decide path. */ export declare function buildDecideSystem(node: DecideNode, ctx: RunContext): import("ai").SystemModelMessage[];