package com.easyagents.skill.codec;

import com.easyagents.skill.model.SkillPackageLimits;

/**
 * Skill 包读取选项。
 */
public final class SkillPackageReadOptions {

    private final SkillPackageLimits limits;
    private final SkillPackageReadMode mode;

    /**
     * 使用指定安全限额创建读取选项。
     *
     * @param limits 安全限额
     */
    public SkillPackageReadOptions(SkillPackageLimits limits) {
        this(limits, SkillPackageReadMode.COMMIT_ON_VALID);
    }

    /**
     * 使用指定安全限额和内容处理模式创建读取选项。
     *
     * @param limits 安全限额
     * @param mode 内容处理模式
     */
    public SkillPackageReadOptions(SkillPackageLimits limits, SkillPackageReadMode mode) {
        this.limits = limits == null ? SkillPackageLimits.defaults() : limits;
        this.mode = mode == null ? SkillPackageReadMode.COMMIT_ON_VALID : mode;
    }

    /**
     * 创建默认读取选项。
     *
     * @return 默认读取选项
     */
    public static SkillPackageReadOptions defaults() {
        return new SkillPackageReadOptions(SkillPackageLimits.defaults());
    }

    /**
     * 创建只返回校验报告且不提交内容的读取选项。
     * 二进制资源的 contentRef 仅表示内容哈希身份，不承诺可通过内容存储打开。
     *
     * @return 只读预检选项
     */
    public static SkillPackageReadOptions reportOnly() {
        return new SkillPackageReadOptions(SkillPackageLimits.defaults(), SkillPackageReadMode.REPORT_ONLY);
    }

    /**
     * 获取安全限额。
     *
     * @return 安全限额
     */
    public SkillPackageLimits getLimits() {
        return limits;
    }

    /**
     * 获取内容处理模式。
     *
     * @return 内容处理模式
     */
    public SkillPackageReadMode getMode() {
        return mode;
    }
}
