depTerminalPath function
Resolves the cursor path a dependsOn on depId is satisfied by — the
dep's own path for a CapabilityStep, or its terminal-step descendant for a
SubCircuitStep. Returns null (unsatisfiable, fail-closed) for a dangling
dep id or an unresolvable sub-circuit.
Implementation
String? depTerminalPath(
Circuit circuit,
String nodePath,
String depId,
Circuit? Function(String circuitId) circuitById,
) {
final dep = circuit.stepById(depId);
return switch (dep) {
null => null,
CapabilityStep() => stepPath(nodePath, depId),
SubCircuitStep(:final circuitId) => () {
final sub = circuitById(circuitId);
if (sub == null) return null;
return stepPath(stepPath(nodePath, depId), sub.terminalStepId);
}(),
};
}