import type { Runtime, SessionCapabilities } from "#channel/types.js"; import type { HandleEventFn, HarnessToolMap, StepFn } from "#harness/types.js"; import type { RunMode } from "#shared/run-mode.js"; import { type RuntimeModelResolutionScope } from "#runtime/agent/resolve-model.js"; import type { RuntimeCompiledArtifactsSource } from "#runtime/compiled-artifacts-source.js"; import type { ResolvedRuntimeAgentNode } from "#runtime/graph.js"; /** * Factory that creates a {@link Runtime} for the given compiled * artifacts source and optional node id. Matches the signature of * `createWorkflowRuntime`, so callers pass the constructor directly — * no wrapper needed. */ export type CreateRuntime = (config: { readonly compiledArtifactsSource: RuntimeCompiledArtifactsSource; readonly nodeId?: string; }) => Runtime; /** * Input for building a harness step for one resolved runtime node. */ export interface CreateExecutionNodeStepInput { /** * Session-level capabilities propagated from the runtime. The * harness passes this through to `buildToolSet` so `ask_question` * registration and any other capability-gated behavior tracks the * current run. */ readonly capabilities?: SessionCapabilities; /** * Runtime constructor used by the subagent tool executor to start * delegated child runs on the same workflow runtime as the parent. */ readonly createRuntime: CreateRuntime; readonly handleEvent?: HandleEventFn; readonly mode: RunMode; readonly modelResolutionScope: RuntimeModelResolutionScope; readonly node: ResolvedRuntimeAgentNode; } /** * Builds a harness step for one resolved runtime node using the execution-owned * tool, sandbox, and subagent wiring. */ export declare function createExecutionNodeStep(input: CreateExecutionNodeStepInput): StepFn; /** * Resolves unified {@link HarnessToolDefinition}s from the node's registries. * * For authored tools: copies all lifecycle fields from the resolved definition. * For subagent tools: surfaces runtime-owned subagent-call metadata and leaves * execution to the runtime layer. * Tools without `execute` (provider-managed) get entries with schema but no execute. */ export declare function createNodeHarnessTools(input: { readonly node: ResolvedRuntimeAgentNode; }): HarnessToolMap;