package com.easyagents.agent.runtime;

import java.time.Duration;

/**
 * 运行时执行参数。
 */
public class AgentExecutionOptions {

    private int maxIters = 10;
    private Duration timeout = Duration.ofMinutes(5);
    private boolean reasoningEnabled = true;
    private boolean toolCallingEnabled = true;

    /**
     * 获取最大 ReAct 迭代次数。
     *
     * @return 最大迭代次数
     */
    public int getMaxIters() {
        return maxIters;
    }

    /**
     * 设置最大 ReAct 迭代次数。
     *
     * @param maxIters 最大迭代次数
     */
    public void setMaxIters(int maxIters) {
        this.maxIters = maxIters <= 0 ? 10 : maxIters;
    }

    /**
     * 获取超时时间。
     *
     * @return 超时时间
     */
    public Duration getTimeout() {
        return timeout;
    }

    /**
     * 设置超时时间。
     *
     * @param timeout 超时时间
     */
    public void setTimeout(Duration timeout) {
        this.timeout = timeout == null ? Duration.ofMinutes(5) : timeout;
    }

    /**
     * 返回是否reasoning events are enabled。
     *
     * @return 启用时为 true
     */
    public boolean isReasoningEnabled() {
        return reasoningEnabled;
    }

    /**
     * 设置whether reasoning events are enabled。
     *
     * @param reasoningEnabled 启用时为 true
     */
    public void setReasoningEnabled(boolean reasoningEnabled) {
        this.reasoningEnabled = reasoningEnabled;
    }

    /**
     * 返回是否tool calls are enabled。
     *
     * @return 启用时为 true
     */
    public boolean isToolCallingEnabled() {
        return toolCallingEnabled;
    }

    /**
     * 设置whether tool calls are enabled。
     *
     * @param toolCallingEnabled 启用时为 true
     */
    public void setToolCallingEnabled(boolean toolCallingEnabled) {
        this.toolCallingEnabled = toolCallingEnabled;
    }
}
