package com.easyagents.skill.model;

import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 可移植 Skill 包聚合。
 */
public class SkillPackage implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    private SkillPackageLayout layout = SkillPackageLayout.SINGLE_DIRECTORY;
    private List<Skill> skills = new ArrayList<>();

    /**
     * 创建空 Skill 包。
     */
    public SkillPackage() {
    }

    /**
     * 创建 Skill 包。
     *
     * @param layout 包结构形态
     * @param skills Skill 列表
     */
    public SkillPackage(SkillPackageLayout layout, List<Skill> skills) {
        setLayout(layout);
        setSkills(skills);
    }

    /**
     * 获取包结构形态。
     *
     * @return 包结构形态
     */
    public SkillPackageLayout getLayout() {
        return layout;
    }

    /**
     * 设置包结构形态。
     *
     * @param layout 包结构形态
     */
    public void setLayout(SkillPackageLayout layout) {
        this.layout = layout == null ? SkillPackageLayout.SINGLE_DIRECTORY : layout;
    }

    /**
     * 获取 Skill 列表。
     *
     * @return Skill 列表
     */
    public List<Skill> getSkills() {
        return skills;
    }

    /**
     * 设置 Skill 列表。
     *
     * @param skills Skill 列表
     */
    public void setSkills(List<Skill> skills) {
        this.skills = skills == null ? new ArrayList<>() : new ArrayList<>(skills);
    }
}
