Interaction Types Catalog
EdgeInteract ships with six built-in interaction types covering the full range of human-in-the-loop scenarios: approval workflows, confirmations, data collection forms, selection pickers, informational notifications, and ratings. Custom types can also be defined and registered.
Built-In Types
Approval
Request a human decision: approve, reject, or abstain. Supports payload fields for context.
StableConfirmation
Binary or ternary choice — confirm or cancel a potentially destructive action.
StableForm Interaction
Embed an Atlas Form for structured data collection. Response includes submitted form data JSON.
StablePicker
Let the user select one or many items from a list. Supports single and multiple selection modes.
StableNotification
Read-only message requiring acknowledgement. No decision — just confirm you've seen it.
StableRating
Collect a 1–5 star rating with an optional free-text comment. Useful for AI output quality scoring.
PlannedQuick-Reference Table
| Type | Key | Payload Contains | Response Outcome Values | Response Data |
|---|---|---|---|---|
| Approval | "approval" |
context, fields[] |
approved, rejected, abstained | comment? |
| Confirmation | "confirmation" |
message, confirmLabel, cancelLabel, severity?, thirdOption? |
confirmed, cancelled, third | — |
| Form | "form" |
formId, initialValues? |
submitted | formData: Record<string,any> |
| Picker | "picker" |
title, options[], selectionMode, minSelections?, maxSelections? |
selected | selectedIds: string[] |
| Notification | "notification" |
message, severity?, actionUrl?, actionLabel? |
acknowledged | timestamp |
| Rating | "rating" |
subject, prompt?, allowComment? |
rated | rating: 1-5, comment? |
| Custom | any string | any JSON object | any string | any JSON object |
Type Registration
All built-in types are pre-registered in InteractionContainer and validated by ResponseValidationHook. Custom types must be registered explicitly:
// Register a custom interaction type renderer
interactionContainer.registerInteractionRenderer(
'my-company/peer-review',
PeerReviewComponent
);
// Server-side: register a custom response validator for the type
builder.Services.AddInteractionResponseValidator<PeerReviewResponseValidator>();
"approval". For custom types, use namespaced keys like "my-company/type-name" to avoid collisions with future built-in types.