# 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. # # Run it with `--uv` so every Python node gets its own managed environment. # # `examples/caller.py` shows the whole convention: a non-blocking motion # answered at once, its progress followed on `motion_state`, and a second motion # preempting the first. strict_types: true nodes: - id: ulite6 path: dora-ulite6 build: pip install . inputs: tick: dora/timer/millis/100 request: caller/request outputs: - response - motion_state - joint_pose - tcp_pose - robot_state env: ROBOT_IP: "192.168.1.192" TOOL_TYPE: "vacuum" INIT_MODE: "none" - id: caller path: examples/caller.py inputs: tick: dora/timer/millis/500 response: ulite6/response motion_state: ulite6/motion_state outputs: - request