phase 5: edge transforms, soleprint-ui rename, infra fixes

- pipeline edge transforms: stages can declare accepted_transforms,
  edges carry a transform dict, runner injects per-stage and nodes
  apply (e.g. invert_mask before edge detection); editable from UI
  via PUT /config/edge-transform
- rename mpr-ui-framework -> soleprint-ui (now an external package
  synced via .spr from /home/mariano/wdir/spr); add @vue-flow/core
  and uplot to detection-app so linked package resolves them
- Tiltfile guards kubectl context, k8s commands pin --context kind-mpr
- kind-config: gateway on hostPort 30080 (Caddy fronts mpr.local.ar)
- modelgen: pyproject.toml, .spr marker, dict default_factory support
This commit is contained in:
2026-04-29 05:31:08 -03:00
parent 55e83e4203
commit 020f3540d3
35 changed files with 414 additions and 1747 deletions

View File

@@ -35,6 +35,16 @@ class StageIO:
optional_reads: List[str] = field(default_factory=list)
@dataclass
class TransformOption:
"""A transform the stage accepts on its incoming edges."""
key: str
type: str # "bool", "float", "int", "str"
default: Any = False
label: str = ""
description: str = ""
@dataclass
class StageOutputHint:
"""How to render a stage output in the compare/editor views."""
@@ -55,6 +65,7 @@ class StageDefinition:
io: StageIO = field(default_factory=StageIO)
config_fields: List[StageConfigField] = field(default_factory=list)
output_hints: List[StageOutputHint] = field(default_factory=list)
accepted_transforms: List[TransformOption] = field(default_factory=list)
tracks_element: Optional[str] = None
@@ -129,10 +140,16 @@ class StageRef:
@dataclass
class Edge:
"""Connection between stages in the graph."""
"""Connection between stages in the graph.
transform: per-edge data transformation spec. Flexible JSONB blob
type-checked by the consuming stage. E.g. {"invert_mask": true}
tells edge detection to invert the field segmentation mask.
"""
source: str
target: str
condition: str = ""
transform: Dict[str, Any] = field(default_factory=dict)
@dataclass
@@ -151,6 +168,7 @@ STAGE_VIEWS = [
StageConfigField,
StageIO,
StageOutputHint,
TransformOption,
StageDefinition,
FrameExtractionConfig,
SceneFilterConfig,