| 70 | // ls|add|rm`), the pi extension passes a registered NAME in a request body and lets the |
| 71 | // engine resolve it, and helm confirmed zero references while porting. A registry is a |
| 72 | // local file the operator owns; a loopback write route for it was a second way to do a |
| 73 | // thing the CLI already does, which is the duplication this reshape exists to delete. |
| 74 | // |
| 75 | // Endpoints that need a project directory take an EXPLICIT reference: `project` is a |
| 76 | // registered project name, `path` an absolute directory. Exactly one of the two — the |
| 77 | // old polymorphic name-or-path guessing is gone. |
| 78 | type ProjectRef = { ok: true; dir: string } | { ok: false; error: string; status: 400 | 404 }; |