dify/api/core/skill/skill_manager.py
Harry d8f4eddc4c refactor(skill): transition from artifact set to bundle structure
- Replaced SkillArtifactSet with SkillBundle across various components, enhancing the organization of skill dependencies and references.
- Updated SkillManager methods to load and save bundles instead of artifacts, improving clarity in asset management.
- Refactored SkillCompiler to compile skills into bundles, streamlining the dependency resolution process.
- Adjusted DifyCli and SandboxBashSession to utilize ToolDependencies, ensuring consistent handling of tool references.
- Introduced AssetReferences for better management of file dependencies within skill bundles.
2026-01-22 20:25:28 +08:00

29 lines
855 B
Python

from core.app_assets.paths import AssetPaths
from core.skill.entities.skill_bundle import SkillBundle
from extensions.ext_storage import storage
class SkillManager:
@staticmethod
def load_bundle(
tenant_id: str,
app_id: str,
assets_id: str,
) -> SkillBundle | None:
key = AssetPaths.build_skill_artifact_set(tenant_id, app_id, assets_id)
try:
data = storage.load_once(key)
return SkillBundle.model_validate_json(data)
except Exception:
return None
@staticmethod
def save_bundle(
tenant_id: str,
app_id: str,
assets_id: str,
bundle: SkillBundle,
) -> None:
key = AssetPaths.build_skill_artifact_set(tenant_id, app_id, assets_id)
storage.save(key, bundle.model_dump_json(indent=2).encode("utf-8"))