def METHOD_NAME(workbench: dict[NodeID, Node]) -> dict[NodeID, Any]:
    """Returns values assigned to each output node"""
    output_to_value = {}
    for port in iter_project_ports(workbench, "output"):
        if port.node.inputs:
            try:
                # Is link?
                port_link = _NonStrictPortLink.parse_obj(port.node.inputs["in_1"])
                # resolve
                node = workbench[port_link.node_uuid]
                # If the node has not results (e.g. did not run or failed), then node.outputs is set to None
                value = node.outputs[port_link.output] if node.outputs else None
            except ValidationError:
                # not a link
                value = port.node.inputs["in_1"]
        else:
            value = None
        output_to_value[port.node_id] = value
    return output_to_value