package com.easyagents.agent.runtime;

import com.easyagents.agent.runtime.event.AgentRuntimeEvent;
import com.easyagents.agent.runtime.message.AgentMessage;
import reactor.core.publisher.Flux;

/**
 * 有状态智能体运行器。
 */
public interface AgentRuntime {

    /**
     * 初始化智能体运行器。
     *
     * @param request 初始化请求
     */
    void init(AgentInitRequest request);

    /**
     * 发送用户消息并流式输出运行事件。
     *
     * @param userMessage 用户消息
     * @return 运行事件流
     */
    Flux<AgentRuntimeEvent> stream(AgentMessage userMessage);

    /**
     * 恢复一次已挂起的运行。
     *
     * @param request 恢复请求
     * @return 运行事件流
     */
    Flux<AgentRuntimeEvent> resume(AgentResumeRequest request);

    /**
     * 关闭运行器并释放底层资源。
     */
    default void close() {
    }
}
