package tech.easyflow.agent.runtime.artifact;

/**
 * Artifact Tool 可安全返回给模型的稳定业务异常。
 */
public class AgentArtifactOperationException extends RuntimeException {

    private final String code;
    private final boolean retryable;

    /**
     * 创建 Artifact 业务异常。
     *
     * @param code 稳定错误码
     * @param message 脱敏错误消息
     * @param retryable 是否可重试
     */
    public AgentArtifactOperationException(String code, String message, boolean retryable) {
        super(message);
        this.code = code;
        this.retryable = retryable;
    }

    /**
     * 创建保留内部原因的 Artifact 业务异常。
     *
     * @param code 稳定错误码
     * @param message 脱敏错误消息
     * @param retryable 是否可重试
     * @param cause 内部异常原因，仅用于服务端日志
     */
    public AgentArtifactOperationException(String code, String message, boolean retryable, Throwable cause) {
        super(message, cause);
        this.code = code;
        this.retryable = retryable;
    }

    /** @return 稳定错误码 */
    public String getCode() { return code; }
    /** @return 是否可重试 */
    public boolean isRetryable() { return retryable; }
}
