import type { DurableToolCallInput, SerializableDurableOptions, SerializableToolMetadata } from '../../types.js'; /** * Resolves the effective tool-call foreach concurrency for a durable agentic * workflow from the serialized workflow input (iteration state) and the * step's tool calls. * * Mirrors @mastra/core's non-durable loop semantics * (loop/workflows/agentic-execution/tool-call-concurrency.ts): * - Global `requireToolApproval` forces sequential execution. The serialized * boolean shadow is `true` for function-form policies, so those degrade * safely to sequential as well. * - Any tool in the step's *effective active tool set* with `requireApproval` * or `hasSuspendSchema` forces sequential execution so approval/suspension * flows never race with concurrent tool calls. The check is against the * active tool set, NOT the tools the model actually called: a registered * suspending/approval tool the model skipped this step must still force * sequential execution, since a concurrently-running sibling tool would * race the suspension. * - Otherwise the configured `toolCallConcurrency` applies * (default {@link DurableAgentDefaults.TOOL_CALL_CONCURRENCY}). * * The active tool set is the `activeTools` allowlist the LLM step stamps on * each tool call (processors may narrow or clear it; all calls in one step * share the value, `null` = restriction cleared → unrestricted). When the * calls carry no stamp, the run-level `activeTools` option applies. * * Designed to be called from a foreach concurrency resolver at execution * time, reading only serialized state — safe across durable-engine replays * and shared workflow instances. */ export declare function resolveDurableToolCallConcurrency({ options, toolsMetadata, toolCalls, }: { options?: Pick; toolsMetadata?: SerializableToolMetadata[]; toolCalls?: Pick[]; }): number; //# sourceMappingURL=tool-call-concurrency.d.ts.map