Skip to main content
The React hooks and providers every feature builds on — API access, theme, auth, and the interactions stream.

ApiProvider

Related: ApiClient

AuthProvider

Parameters Related: AuthState

AuthState

Properties

Breakpoint

BreakpointState

Properties Related: Breakpoint

CapabilityContextValue

Properties Related: CapabilityState

CapabilityProvider

Parameters Related: CapabilityContextValue

CapabilityState

InteractionsStreamOptions

The inputs the caller drives the tail-only stream with. Properties

InteractionsStreamState

Properties Related: StreamInteraction

StreamInteraction

A live interaction plus the client-maintained answered flag.

SystemKindsProvider

Fetch the kind-status table once the caller is authenticated and hold it as SDK state. Gated on 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 Related: SystemKindsState

SystemKindsState

Theme

ThemePreference

ThemeProvider

Parameters Related: ThemeState

ThemeState

Properties Related: Theme, ThemePreference

ToolDisplayNamesContextValue

Properties Related: ToolDisplayNamesState

ToolDisplayNamesProvider

Fetch the tool-meta overlay once the caller is authenticated and hold its display-name map as SDK state. Gated on 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

coversAnyRoute

Whether the projection reaches ANY route under one of 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

Whether the projection reaches a specific WRITE route — an EXACT 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

Whether a WRITE control may be shown/enabled for this caller — the fail-closed, method-aware gate the features fold together with any deployment-level read-only flag (the projection ⊆ gate invariant, in one place). It is 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

Whether the projection is the synthetic TOTAL projection — the admin session (the condition-free ownerless "*" 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

toolDisplayLabel

The option label for a raw tool name under a display-name map: 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

Related: ApiClient

useAuth

Related: AuthState

useBreakpoint

Related: BreakpointState

useCanWrite

Whether a WRITE control may be shown for the current caller — the single boundary primitive a feature calls to hide a control whose 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

Related: CapabilityContextValue

useFeatureOff

Whether kind is reported OFF by the kind-status table — the single proactive predicate a write affordance folds in to hide itself before a doomed write. It is true ONLY once the table is ready AND that kind’s row carries state: 'off'; while the table is loading/failed, no provider is mounted, or the kind is unknown, it is false (treat as not-off until known — under-hiding is safe, the reactive 501 backstop still catches a genuinely-off feature). Parameters

useFeatureOffMessage

The OFF row’s server 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. null whenever the kind is not reported OFF (table loading/failed, no provider, unknown kind, or the kind is on), mirroring useFeatureOff’s not-off-until-known default. Parameters

useInteractionsStream

Props Related: InteractionsStreamOptions, InteractionsStreamState

useOnUnauthorized

useReloadToolDisplayNames

Re-fetch the display-name overlay. A surface that writes a display name calls this so the app-level provider — and every picker reading it — refreshes alongside the surface’s own list invalidation. A no-op when no provider is mounted.

useSystemKinds

The live kind-status state. Falls back to 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

Related: ThemeState

useToolDisplayNames

The live raw-name → display-name map — {} 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.