/** Durable request-route lookup for one open model step. @module @deepseek-ai/dsh-llm-retry/history */
/**
 * Find the provider in force for one currently open step.
 * Request headers remain effective across turn boundaries until a newer full
 * snapshot changes them; every provider change requires a newer full snapshot.
 * @param events - session events ending inside the open step.
 * @param turn - turn that owns the failed step.
 * @param step - failed step whose provider is required.
 * @returns the provider from the request header in force for the step.
 */
export function providerForOpenStep(events, turn, step) {
    const stepStartIndex = events.findLastIndex(event => event.type === 'step/start'
        && event.data.turn === turn
        && event.data.step === step);
    if (stepStartIndex < 0 || events.slice(stepStartIndex + 1).some(event => event.type === 'step/end' || event.type === 'turn/end'))
        return undefined;
    for (let index = events.length - 1; index >= 0; index -= 1) {
        // The loop bounds prove this indexed read exists.
        // oxlint-disable-next-line typescript/no-non-null-assertion
        const event = events[index];
        if (event.type === 'request/header')
            return event.data.header.config.provider;
    }
    return undefined;
}
//# sourceMappingURL=history.js.map