* fix(runtimes): enforce private runtime access
* fix(runtimes): gate agent model discovery
* refactor(runtimes): reuse isRuntimeUsableForUser on runtime detail
The detail page re-derived the owner-or-public rule inline instead of
calling the shared helper every other surface in this PR uses. The two
disagreed on an ownerless runtime: the helper is fail-closed (matching
the server's read gate, which reuses canUseRuntimeForAgent), while the
inline copy rendered Usage for a public one and could only 404.
Co-authored-by: multica-agent <[email protected]>
---------
Co-authored-by: m2keloop <[email protected]>
Co-authored-by: Bohan-J <[email protected]>
Co-authored-by: multica-agent <[email protected]>