ApiProvider
AuthProvider
Related: AuthState
AuthState
CapabilityContextValue
Related: CapabilityState
CapabilityProvider
Related: CapabilityContextValue
CapabilityState
InteractionsStreamState
Related: StreamInteraction
StreamInteraction
answered flag.
Theme
ThemeProvider
Related: ThemeState
ThemeState
Related: Theme
UnauthorizedProvider
coversAnyRoute
prefixes — the
declarative test behind nav filtering and plugin requiredCapabilities. A
concrete routes[].path covers a prefix when it is that prefix or a
segment-nested descendant of it; a dynamic route_patterns[].pattern covers a
prefix only when it is a simple anchored open-wildcard pattern (^<literal>.*$)
whose open literal overlaps the prefix at a segment boundary.
Under-showing is safe (projection is UX; the server is the authority);
over-showing is the bug. So any non-anchored or otherwise complex pattern
(alternation, char class, bounded quantifier) is conservatively treated as NOT
covering — its matched set is not a clean prefix, so we never infer reach from
it.
Parameters
coversRoute
path whose
admitted methods include method. This is the method-aware companion to
coversAnyRoute: a read/nav surface gates path-only (any method reaching a
prefix means the surface is navigable), but an action that issues method path
must gate on the method too, or a caller whose jq fence admits only GET on path
would be shown a control that 403s on submit (projection ⊆ gate).
Only concrete routes are consulted: dynamic route_patterns carry no method, so
no write capability can be soundly inferred from them, and a synthetic TOTAL
(admin) projection carries no concrete routes at all — callers short-circuit it
with isFullProjection before reaching here. Under-showing is safe (the
server stays the authority); over-showing an action the gate denies is the bug.
Parameters
coversWrite
true ONLY once the projection
is ready AND either it is a full (admin / gate-off) projection or it reaches
method path. While the projection is loading/failed it is false — a write control
never enables before the gate is known (fail closed; not-ready ⇒ disabled/read-only).
Only concrete routes carry methods, so a DYNAMIC (templated) write route — one the
projection can represent only as a method-less route_patterns row — reads false for
every non-admin caller and degrades that control to read-only. Under-showing is safe
(the server stays the authority); over-showing a write the gate denies is the bug.
Parameters
Related: CapabilityState
isFullProjection
"*" discriminator) and the gate-off local-dev
projection alike. This is projection.admin === true and NOTHING else: a
seeded editor/viewer carries ["*"] scopes PLUS a jq fence, so keying on "*"
scopes would hand every editor/viewer the unfiltered nav and a wall of 403s on
the admin routes their fence denies. Keying on admin makes editor/viewer
SCOPED sessions whose nav is filtered by their jq-exact routes, which is
exactly right — and the gate-off synthetic projection (admin: true, empty
routes) still reads as full, so an AC-disabled deployment shows everything.
Parameters
useApi
useAuth
useCanWrite
method path the caller’s
projection cannot reach. It reads the live capability state and folds it through
coversWrite: true only once the projection is ready AND it is a full
(admin / gate-off) projection or it reaches method path; while the projection is
loading/failed it is false (fail closed — no write control before the gate is
known). method defaults to POST, the common write verb; pass the exact verb for
a PUT/PATCH/DELETE control.
Parameters

