BizFirstGO Integration
EdgeInteract is wired into three major BizFirstGO products: WorkDesk (HIL Inbox), Flow Studio (HIL nodes), and Octopus (agent authorization). Each integration follows the same pipeline but with product-specific entry points and UI.
WorkDesk — HIL Inbox
WorkDesk HIL Inbox
WorkDesk is the employee portal for the BizFirstGO platform. Its HIL Inbox is the primary surface where employees receive and respond to interaction requests from running workflows.
The inbox is powered entirely by EdgeInteract:
- On login, WorkDesk's
InteractionProviderconnects to EdgeStream and subscribes tointeractions.{currentUserId} - Incoming
InteractionRequestmessages appear in the inbox as cards, sorted by priority and timestamp - Each card renders the appropriate
InteractionComponent(approval, form, picker, etc.) - When the employee responds, the
InteractionResponseis published back and the card is dismissed - Timed-out interactions are grayed out and marked "Expired" — they cannot be responded to
Key WorkDesk interactions: expense approvals, leave requests, document sign-offs, bulk action confirmations, policy acknowledgements.
Flow Studio — HIL Nodes
HumanInLoopNode in Flow Studio
Flow Studio's workflow engine contains the HumanInLoopNode — a first-class execution node that pauses a workflow and waits for a human response before continuing. The node uses EdgeInteract internally.
How the HumanInLoopNode works:
Node Configuration
The workflow designer sets the interaction type, target user/role, payload template, and timeout. These are stored as node settings.
Execution: Suspend
When the node executes, it calls IInteractionPublisher.PublishAsync(), then suspends the workflow coroutine (via HIL suspension mechanism). The workflow state is persisted to the database.
Resume on Response
When the InteractionResponse arrives on the callback topic, the HIL resume service wakes the suspended workflow. The response data is injected into the node's output and the workflow continues.
Timeout Handling
If the interaction times out, the node receives an InteractionTimeout. The workflow takes the "timeout" branch — typically escalating to a manager or failing the workflow with a structured error.
Octopus — Agent Authorization
Octopus Agent HIL
Octopus AI agents run autonomously but are designed to pause and request human authorization before performing sensitive or irreversible actions. EdgeInteract is the mechanism for this authorization gate.
Agent authorization patterns:
- Pre-action confirmation: Agent sends a
confirmationinteraction before performing a destructive operation (deleting records, sending bulk messages). - Data access approval: Agent sends an
approvalinteraction when accessing sensitive data, including context about what it needs and why. - Option selection: Agent generates a list of candidate actions and sends a
pickerinteraction so the human can choose the preferred path.
Octopus agents use the server-side IInteractionPublisher directly and await the response before proceeding. If the response is rejected or times out, the agent logs the event and aborts the operation.
Integration Architecture Diagram
┌─────────────────────────────────────────────────────────────────┐
│ BizFirstGO Platform │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Flow Studio │ │ Octopus │ │ WorkDesk │ │
│ │ HIL Nodes │ │ Agents │ │ HIL Inbox │ │
│ └──────┬───────┘ └──────┬───────┘ └────────┬─────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ EdgeInteract │ │
│ │ IInteractionPublisher ←→ InteractionSubscriber │ │
│ │ InteractionPipeline ←→ InteractionResponsePublisher │ │
│ └──────────────────────┬───────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼───────────────────────────────────┐ │
│ │ EdgeStream │ │
│ │ interactions.{userId} topic │ │
│ │ interactions.callback.{interactionId} topic │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Shared Configuration
All three integrations share the same EdgeInteract configuration block in appsettings.json:
{
"EdgeInteract": {
"DefaultTimeoutMs": 86400000,
"MaxConcurrentInteractionsPerUser": 10,
"AuditLog": {
"Enabled": true,
"RetentionDays": 90
},
"RateLimiting": {
"MaxPerMinutePerUser": 5
}
}
}