import type { ModelMessage } from "ai"; import type { HarnessToolDefinition } from "#harness/execute-tool.js"; import type { UnstampedMessageStreamEvent, SessionStartedStreamEvent } from "#protocol/message.js"; import type { ResolvedDynamicToolResolver } from "#runtime/types.js"; import type { ContextContainer } from "#context/container.js"; import type { DurableDynamicToolMetadata } from "#context/keys.js"; /** * Reconstructs tool definitions from durable metadata using * registered step functions. No resolver re-invocation — the * execute function is looked up by step ID and called with stored * closure vars. */ export declare function replayDynamicSessionTools(metadata: readonly DurableDynamicToolMetadata[], _resolvers: readonly ResolvedDynamicToolResolver[]): readonly HarnessToolDefinition[]; /** * Dispatches a stream event to dynamic tool resolvers. Each * resolver's metadata replaces its slot (by slug) in the * scope-appropriate durable key. The tool-loop calls * {@link buildDynamicTools} to assemble the effective toolset. */ export declare function dispatchDynamicToolEvent(input: { readonly ctx: ContextContainer; readonly resolvers: readonly ResolvedDynamicToolResolver[]; readonly event: UnstampedMessageStreamEvent; readonly messages: readonly ModelMessage[]; }): Promise; /** * Re-resolves session-scoped dynamic tools when a durable session reaches a * different runtime revision. The refresh is internal: lifecycle consumers * still observe exactly one `session.started` event for the session. */ export declare function refreshDynamicSessionToolsForRuntimeRevision(input: { readonly ctx: ContextContainer; readonly resolvers: readonly ResolvedDynamicToolResolver[]; readonly event: SessionStartedStreamEvent; readonly messages: readonly ModelMessage[]; readonly runtimeRevision: string; }): Promise;