package com.easyagents.agent.runtime.tool.operate;

import com.easyagents.agent.runtime.AgentRuntimeException;

/**
 * 带稳定工具错误码和重试语义的工作区异常。
 */
final class WorkspaceToolException extends AgentRuntimeException {

    private final String code;
    private final boolean retryable;

    /**
     * 创建工具异常。
     *
     * @param code 稳定错误码
     * @param message 可安全返回给模型的信息
     * @param retryable 是否可重试
     */
    WorkspaceToolException(String code, String message, boolean retryable) {
        super(message);
        this.code = code;
        this.retryable = retryable;
    }

    /**
     * 创建带内部原因的工具异常。
     *
     * @param code 稳定错误码
     * @param message 可安全返回给模型的信息
     * @param retryable 是否可重试
     * @param cause 仅写入服务端日志的内部原因
     */
    WorkspaceToolException(String code, String message, boolean retryable, Throwable cause) {
        super(message, cause);
        this.code = code;
        this.retryable = retryable;
    }

    /**
     * 获取稳定错误码。
     *
     * @return 错误码
     */
    String code() {
        return code;
    }

    /**
     * 返回是否可重试。
     *
     * @return 可重试时为 true
     */
    boolean retryable() {
        return retryable;
    }
}
