generic source-to-infospace generator

This commit is contained in:
2026-05-14 19:33:22 +02:00
parent 065e17f42e
commit 46aad3cce8
20 changed files with 1629 additions and 8 deletions

View File

@@ -273,10 +273,12 @@ class WorkflowStageRecord:
input_artifact_id: str
output_artifact_id: str = ""
message: str = ""
provider: str = ""
metadata: dict[str, Any] = field(default_factory=dict)
def to_dict(self) -> dict[str, Any]:
data = asdict(self)
return {key: value for key, value in data.items() if value != ""}
return {key: value for key, value in data.items() if value not in ("", {}, [])}
@dataclass(frozen=True)
@@ -442,6 +444,7 @@ def _execute_workflow(
infospace.root,
dry_run=False,
provider=result.provider,
provider_metadata=result.metadata,
)
outputs.append(output)
stage_outputs[stage.id] = {
@@ -458,6 +461,8 @@ def _execute_workflow(
status="completed",
input_artifact_id=input_record.artifact_id,
output_artifact_id=output.artifact_id,
provider=result.provider,
metadata=result.metadata,
)
)
elif stage.kind == "split_entities":
@@ -645,6 +650,7 @@ def _resolve_output(
*,
dry_run: bool,
provider: str = "",
provider_metadata: dict[str, Any] | None = None,
) -> WorkflowOutputRecord:
if stage.output is None:
raise InfospaceError(
@@ -673,6 +679,11 @@ def _resolve_output(
"stage_id": stage.id,
"input_artifact_id": input_record.artifact_id,
**({"provider": provider} if provider else {}),
**(
{"provider_metadata": provider_metadata}
if provider_metadata
else {}
),
},
relationships=[
{