Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Session Lifecycle

Every agent session in Ennio progresses through a state machine with 16 states.

State Machine

Spawning → Working → PrDraft → PrOpen ──→ CiPassing → ReviewPending → Approved → Merged → Done
                                  │            │             │             │
                                  │        CiFailed    ChangesRequested   MergeConflicts
                                  │            │             │             │
                                  │       CiFixSent    (agent fixes)   (agent rebases)
                                  │            │
                                  │       CiFixFailed
                                  │
                                  ├── Exited (restorable)
                                  └── Killed (terminal)

States

StateTerminalDescription
SpawningNoWorkspace being created, agent starting
WorkingNoAgent is actively writing code
PrDraftNoDraft pull request created
PrOpenNoPull request opened for review
CiPassingNoCI checks are green
CiFailedNoCI checks failed
CiFixSentNoAgent sent a fix for CI
CiFixFailedNoCI fix attempt also failed
ReviewPendingNoAwaiting code review
ChangesRequestedNoReviewer requested changes
ApprovedNoPR approved
MergeConflictsNoMerge conflicts detected
MergedYesPR merged successfully
DoneYesSession completed normally
ExitedNoAgent exited unexpectedly (can be restored)
KilledYesManually terminated

Activity States

Independent of the session status, each session has an activity state reflecting the agent process:

ActivityDescription
ActiveAgent is actively working
ReadyAgent is idle, waiting for input
IdleNo recent activity
WaitingInputAgent explicitly waiting for user input
BlockedBlocked on an external resource
ExitedAgent process has exited

Lifecycle Polling

The LifecycleManager runs a continuous polling loop that:

  1. Queries the tracker plugin for PR/CI status
  2. Queries the SCM plugin for review state
  3. Compares external state against the current session status
  4. Triggers status transitions
  5. Fires configured reactions
  6. Emits events to the event bus and database

Session Operations

OperationCLI CommandEffect
Spawnennio spawn <project>Creates workspace, starts agent
Sendennio send <session> <msg>Sends text to the running agent
Killennio session kill <id>Terminates the agent and marks session as Killed
Restoreennio session restore <id>Restarts an Exited session in its existing workspace
Infoennio session info <id>Shows session details, status history, recent events
Listennio session list [project]Lists all sessions, optionally filtered by project