ApiProvider
AuthProvider
Related: AuthState
AuthState
Breakpoint
BreakpointState
Related: Breakpoint
CapabilityContextValue
Related: CapabilityState
CapabilityProvider
Related: CapabilityContextValue
CapabilityState
ExecutionKeyBinding
InteractionsStreamOptions
InteractionsStreamState
Related: StreamInteraction
OwnIdentity
StreamInteraction
answered flag.
SystemKindsProvider
isAuthenticated (the table is an authed read), so the login
screen never fires a doomed request; a fetch failure settles into failed
QUIETLY — no unauthorized routing, no loud error — because the consuming
affordance falls back to its reactive OFF handling.
Parameters
SystemKindsState
Theme
ThemePreference
ThemeProvider
Related: ThemeState
ThemeState
Related: Theme, ThemePreference
ToolDisplayNamesContextValue
Related: ToolDisplayNamesState
ToolDisplayNamesProvider
isAuthenticated (the overlay is an authed
read), so the login screen never fires a doomed request; a fetch failure settles
into failed QUIETLY, because the consuming pickers fall back to the bare raw name.
reload re-fetches on demand, so an app-level display-name write refreshes every
picker without a remount.
Parameters
Related: ToolDisplayNamesContextValue
ToolDisplayNamesState
UnauthorizedProvider
boundExecutionKey
Related: ExecutionKeyBinding
coversAnyRoute
prefixes — the
declarative test behind nav filtering and plugin requiredCapabilities. A
routes[].path (a concrete path, or a route template such as /api/presets/{name})
covers a prefix when it is that prefix or a segment-nested descendant of it; a dynamic route_patterns[] entry covers a
prefix through its served open_prefix — the literal the server rules every
path starting with is reachable — when it overlaps the prefix at a segment
boundary. A null open prefix (a pattern whose matched set is not a clean
prefix) covers nothing by prefix: under-showing is safe, over-showing is the bug.
Parameters
coversRoute
path whose
admitted methods include method. A templated route is listed under its template
path (/api/presets/{name}) with the methods the caller’s grant admits on a
representative instance of it, so a caller names the template on both sides. 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 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).
A templated write route is gated by its template path: the projection lists it with
the methods the caller’s grant admits on a representative instance. A credential fenced
per instance is decided at the server, which answers 403 on submit where the fence
denies that instance. 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 projected 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
toolDisplayLabel
Display (raw) when
a display name maps the name and is non-empty AND differs from the raw name, else
the bare raw name. Shared so every tool picker labels identically.
Parameters
useApi
useAuth
useBreakpoint
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
useCapabilities
useExecutionKeyBinding
useFeatureOff
kind is OFF — the single predicate a write affordance folds in to hide
itself before a doomed write. It is true once the table is ready AND that kind’s
row carries state: 'off', or once a write refusal revealed the kind OFF
(useReportFeatureOff). Otherwise — the table loading/failed, no provider
mounted, the kind unknown — it is false (not-off until known: under-hiding is
safe, a write’s 501 refusal still reveals a genuinely-off feature).
Parameters
useFeatureOffMessage
detail for kind — the proactive counterpart to a write
refusal’s message, so a proactively-hidden surface shows the SERVER’s own
remediation line rather than a client-composed env-var string; for a kind only a
write refusal revealed OFF, that refusal’s message. null whenever the kind is not
OFF, mirroring useFeatureOff’s not-off-until-known default.
Parameters
useInteractionsStream
Related: InteractionsStreamOptions, InteractionsStreamState
useOnUnauthorized
useReloadToolDisplayNames
useSystemKinds
loading when no provider is mounted, so
a consumer rendered outside the shell reads every kind as not-off rather than
throwing — the fail-open default this proactive-hiding idiom relies on.
Related: SystemKindsState
useTheme
useToolDisplayNames
{} while the overlay is loading/failed, no
provider is mounted, or no row carries a display name. A tool picker folds this into
its option labels; an unmapped name reads the bare raw name.
