Portal Community

The Five Pipeline Stages

1

Request Creation & Publish

Server constructs an InteractionRequest, validates it, runs pre-send hooks, and calls IInteractionPublisher.PublishAsync(). The interaction is registered in the pipeline state store with status: "pending".

Output: interactionId, interaction registered in state store

Failure: Hook rejection, validation error, rate limit exceeded → InteractionPublishException

2

EdgeStream Delivery

EdgeInteract publishes the serialized request to interactions.{targetUserId} via EdgeStream. The message fans out to all active WebSocket sessions for the targeted user. The timeout timer starts.

Output: Message delivered to 0..N client sessions, status: "delivered"

Failure: No active sessions → message is queued or dropped depending on configuration

3

UI Display

Client's InteractionSubscriber receives the message. InteractionContainer routes it to the correct component based on type. The component renders and waits for user input. Status: "displayed".

Output: Interaction visible in the user's browser/app

Failure: Unknown type → fallback renderer or error boundary

4

User Response

User takes action. Component calls respond(outcome, data). InteractionResponsePublisher publishes an InteractionResponse to interactions.callback.{interactionId}. Post-receive hooks run on the server.

Output: InteractionResponse on callback topic, status: "responded"

Failure: Response validation failure → hook rejects response, UI shows error

5

Acknowledgement

Server processes the response, runs post-receive hooks, and publishes InteractionAck to the user's session. The client receives the ack and dismisses the UI component. status: "acknowledged". The awaiting Task resolves.

Output: Cycle complete, workflow resumes with response data

Failure: Server processing error → error response to client

Timeout Path

If the timeout fires before Stage 4 completes:

T

Timeout Fires

The pipeline timer expires. EdgeInteract publishes InteractionTimeout to the callback topic with outcome: "timeout".

D

Client Dismissal

The client receives a timeout dismissal signal. The UI component is removed from the inbox. The interaction is marked as expired.

Pipeline Status Transitions

StatusMeaningNext Status
pendingRequest created, not yet delivereddelivered or failed
deliveredPublished to EdgeStream topicdisplayed or timed_out
displayedRendered in client UIresponded or timed_out
respondedUser submitted a responseacknowledged or failed
acknowledgedServer processed, cycle complete(terminal)
timed_outNo response within timeoutMs(terminal)
failedError in hook, validation, or server processing(terminal)

Topic Map

TopicDirectionContent
interactions.{userId}Server → ClientInteractionRequest
interactions.callback.{interactionId}Client → ServerInteractionResponse
interactions.ack.{interactionId}Server → ClientInteractionAck
interactions.dismiss.{userId}Server → ClientTimeout/dismissal signal
Explore Each Stage The pages in this guide cover each stage in detail. Start with InteractionRequest to understand the full request schema, then follow the stages in order.