conversion fns

This commit is contained in:
lda
2026-05-25 03:36:02 +07:00 Verified
parent 84b931f821
commit 492226a596
4 changed files with 100 additions and 2 deletions
+9 -1
View File
@@ -32,7 +32,12 @@ from .models import (
WorkflowArtifact,
WorkflowDeployment,
)
from .refs import WorkflowCapabilityRef
from .refs import (
WorkflowCapabilityRef,
workflow_capability_ref_from_workflow_ref,
workflow_ref_from_artifact,
workflow_ref_from_capability,
)
from .store import FileWorkflowArtifactStore, WorkflowArtifactStore
from .validation import validate_deployment_dependencies
from .references import logical_ref_for_concrete_ref, normalize_plan_node_refs
@@ -70,4 +75,7 @@ __all__ = [
"summarize_draft_workspace",
"validate_deployment_dependencies",
"validate_workflow_draft",
"workflow_capability_ref_from_workflow_ref",
"workflow_ref_from_artifact",
"workflow_ref_from_capability",
]
+23
View File
@@ -5,6 +5,10 @@ from typing import Any
from pydantic_core import core_schema
from wf_core import WorkflowRef
from .models import WorkflowArtifact
@dataclass(frozen=True, slots=True)
class WorkflowCapabilityRef:
@@ -70,3 +74,22 @@ class WorkflowCapabilityRef:
def _serialize(value: WorkflowCapabilityRef) -> dict[str, int | str]:
"""Serialize canonical saved workflow refs without a display-name parser."""
return {"artifact_id": value.artifact_id, "version": value.version}
def workflow_ref_from_artifact(artifact: WorkflowArtifact) -> WorkflowRef:
"""Return the core child-workflow ref for one saved artifact version."""
return WorkflowRef(artifact_id=artifact.id, version=artifact.version)
def workflow_ref_from_capability(ref: WorkflowCapabilityRef) -> WorkflowRef:
"""Return the core child-workflow ref for a workflow capability identity."""
return WorkflowRef(artifact_id=ref.artifact_id, version=ref.version)
def workflow_capability_ref_from_workflow_ref(
ref: WorkflowRef,
) -> WorkflowCapabilityRef:
"""Return the public capability ref for an artifact-backed workflow ref."""
if ref.artifact_id is None or ref.version is None:
raise ValueError("workflow capability refs require an artifact workflow ref")
return WorkflowCapabilityRef(artifact_id=ref.artifact_id, version=ref.version)