No source package is shared between node repositories, so the manifest and its type URNs are the only contract a consumer has. Declaring them makes a wiring mistake fail at validate time with the producer and consumer URNs, instead of at runtime. Every payload this node sends is a raw buffer whose shape and dtype live in the metadata rather than an Arrow struct, so the URNs name the element type: UInt8 for image_bgr, Float32 for depth, camera_info and point_cloud, String for camera_state. tick is UInt64, matching how dora types timer inputs. dataflow.yml now builds the node from the checkout with path: + build:. A git:-sourced node does not pick up an adjacent manifest, so validating the previous form checked nothing; with path: the CLI reports "injected 6 contract type(s)" and a deliberately mismatched annotation exits non-zero under strict_types. The README keeps the tag: form for consumers. The workflow needs no camera and no ZED SDK, since validation never runs the node. Also ignores the git/ and out/ working directories dora build creates, and drops the ignore rules for the deleted test assets. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7g2cBJ5e3r15ZbJ9WZn8c
25 lines
647 B
YAML
25 lines
647 B
YAML
# The repository's own example: builds and runs the node from this checkout, so
|
|
# `dora validate` picks up the typed contract in dora-node.yml next to it.
|
|
# A consumer wires the node from a tag instead — see README.md.
|
|
strict_types: true
|
|
|
|
nodes:
|
|
- id: zed-camera
|
|
path: bin/dora_zed
|
|
build: scripts/build.sh
|
|
inputs:
|
|
tick: dora/timer/millis/100
|
|
outputs:
|
|
- image_bgr
|
|
- depth
|
|
- point_cloud
|
|
- camera_info
|
|
- camera_state
|
|
|
|
- id: plot
|
|
git: https://github.com/dora-rs/dora-hub.git
|
|
build: pip install ./node-hub/opencv-plot
|
|
path: opencv-plot
|
|
inputs:
|
|
image: zed-camera/image_bgr
|