```python
def line_up(links: dict[str, str], start: str) -> list[str]:
    if start not in links:
        raise ValueError("Unknown name")

    current = start
    path = [current]

    while True:
        next_name = links.get(current)
        if next_name is None:
            break

        if next_name == current:
            raise ValueError("Circular link detected")

        current = next_name
        path.append(current)

    return path
```