actions/action_bridge.ts view source
ActionEventOptions Options for deriving an SseEventSpec from an ActionSpec.
channel
stringBridge functions to derive RouteSpec and SseEventSpec from ActionSpec.
Action specs define the contract (method, input/output, auth, side effects). Bridge functions produce transport-specific specs from them. HTTP-specific concerns (path, handler) come from options.
6 declarations
actions/action_bridge.ts view source
ActionEventOptions Options for deriving an SseEventSpec from an ActionSpec.
channelstringactions/action_bridge.ts view source
ActionRouteOptions Options for deriving a RouteSpec from an ActionSpec.
pathstringhandlerparamsURL path parameter schema. Use z.strictObject() with string fields matching :param segments.
z.ZodObjectqueryURL query parameter schema. Use z.strictObject() with string fields.
z.ZodObjecthttp_methodOverride the default HTTP method (default: side_effects → POST, else GET).
authOverride the default auth mapping (default: 'public' → none, 'authenticated' → authenticated, 'keeper' → keeper, {role} → role).
errorsHandler-specific error schemas (HTTP status code → Zod schema). Transport-specific — not on ActionSpec.
actions/action_bridge.ts view source
(side_effects: true | null): RouteMethod Derive the default HTTP method from side effects.
side_effectstrue | nullRouteMethod actions/action_bridge.ts view source
(spec: { method: string; kind: "request_response" | "remote_notification" | "local_call"; initiator: "frontend" | "backend" | "both"; auth: "public" | "authenticated" | "keeper" | { ...; } | null; ... 4 more ...; description: string; }, options?: ActionEventOptions | undefined): SseEventSpec Derive an SseEventSpec from an ActionSpec.
Only remote_notification actions can become SSE events.
specthe action spec (must have kind: 'remote_notification')
{ method: string; kind: "request_response" | "remote_notification" | "local_call"; initiator: "frontend" | "backend" | "both"; auth: "public" | "authenticated" | "keeper" | { role: string; } | null; ... 4 more ...; description: string; }options?optional SSE-specific options (channel)
ActionEventOptions | undefinedSseEventSpec an SseEventSpec ready for create_validated_broadcaster
actions/action_bridge.ts view source
(auth: "public" | "authenticated" | "keeper" | { role: string; }): RouteAuth Map an ActionAuth value to a RouteAuth.
auth"public" | "authenticated" | "keeper" | { role: string; }RouteAuth actions/action_bridge.ts view source
(spec: { method: string; kind: "request_response" | "remote_notification" | "local_call"; initiator: "frontend" | "backend" | "both"; auth: "public" | "authenticated" | "keeper" | { ...; } | null; ... 4 more ...; description: string; }, options: ActionRouteOptions): RouteSpec Derive a RouteSpec from an ActionSpec and options.
Only request_response actions (which require non-null auth) can become routes.
remote_notification actions (auth null) should use event_spec_from_action.
local_call actions are not for HTTP transport.
Error schemas are transport-specific (keyed by HTTP status codes) and belong on the options, not the action spec. Action specs define the contract; transport concerns like HTTP error codes are added at the bridge layer.
specthe action spec (must have non-null auth)
{ method: string; kind: "request_response" | "remote_notification" | "local_call"; initiator: "frontend" | "backend" | "both"; auth: "public" | "authenticated" | "keeper" | { role: string; } | null; ... 4 more ...; description: string; }optionsHTTP-specific options (path, handler, optional overrides)
RouteSpec a RouteSpec ready for apply_route_specs
if - `spec.auth` is null