botbook/src/21-autonomous-tasks/progress.md

7.5 KiB

Progress Tracking

Know Where Your Task Is


Overview

Every autonomous task shows real-time progress so you always know:

  • What step is running
  • How far along it is
  • How much time remains
  • If anything needs your attention

The Progress View

┌────────────────────────────────────────────────────────────────┐
│ Cellphone Store CRM                                            │
│                                                                 │
│ [████████████████████░░░░░░░░░░] 65%                           │
│                                                                 │
│ Step 2 of 4: Generate application UI                           │
│ ├─ Customer list view ✓                                        │
│ ├─ Product list view ✓                                         │
│ ├─ Sales form ◐ (in progress)                                  │
│ └─ Repair board ○ (pending)                                    │
│                                                                 │
│ Started: 2 min ago                                              │
│ ETA: 3 min remaining                                            │
│                                                                 │
│ [Pause]  [Cancel]                                               │
└────────────────────────────────────────────────────────────────┘

Progress Indicators

Symbol Meaning
Completed
In progress
Pending
Needs attention
Failed
Paused

Step States

Each step goes through these states:

pending → running → completed
                  ↘ failed
                  ↘ skipped

State Details

State Description Action
pending Waiting to start None needed
running Currently executing Monitor progress
completed Successfully finished None needed
failed Encountered error Review and retry/skip
skipped Intentionally bypassed None needed
paused Waiting for resume Click Resume
approval Needs your approval Approve or reject

Real-Time Updates

Progress updates via WebSocket:

// Connect to task updates
const ws = new WebSocket('/ws/tasks');

ws.onmessage = (event) => {
    const update = JSON.parse(event.data);
    
    switch (update.type) {
        case 'progress':
            // Update progress bar
            updateProgress(update.percent);
            break;
            
        case 'step_complete':
            // Mark step as done
            markStepComplete(update.step);
            break;
            
        case 'approval_needed':
            // Show approval dialog
            showApproval(update.approval);
            break;
            
        case 'task_complete':
            // Show completion
            showComplete(update.result);
            break;
    }
};

Stored Progress

Progress is persisted to the database so you can:

Resume After Interruption

If you close your browser or lose connection:

  1. Task continues running on the server
  2. When you return, progress is restored
  3. You see exactly where it is

Continue Later

If you pause a task:

  1. Current state is saved
  2. Come back anytime
  3. Click Resume to continue from the exact point

Review History

-- task_progress table
task_id   | step    | percent | status    | updated_at
----------|---------|---------|-----------|--------------------
abc123    | 1       | 100     | completed | 2024-01-15 10:00:15
abc123    | 2       | 65      | running   | 2024-01-15 10:02:30
abc123    | 3       | 0       | pending   | NULL
abc123    | 4       | 0       | pending   | NULL

Progress API

Get Task Progress

GET /api/tasks/{task_id}/progress

Response:

{
    "task_id": "abc123",
    "title": "Cellphone Store CRM",
    "status": "running",
    "progress": 65,
    "current_step": 2,
    "total_steps": 4,
    "started_at": "2024-01-15T10:00:00Z",
    "eta_seconds": 180,
    "steps": [
        {
            "order": 1,
            "name": "Create database tables",
            "status": "completed",
            "progress": 100,
            "duration_ms": 15000
        },
        {
            "order": 2,
            "name": "Generate application UI",
            "status": "running",
            "progress": 65,
            "substeps": [
                {"name": "Customer list", "done": true},
                {"name": "Product list", "done": true},
                {"name": "Sales form", "done": false},
                {"name": "Repair board", "done": false}
            ]
        },
        {
            "order": 3,
            "name": "Add search and filters",
            "status": "pending",
            "progress": 0
        },
        {
            "order": 4,
            "name": "Configure workflows",
            "status": "pending",
            "progress": 0
        }
    ]
}

Subscribe to Updates

WS /ws/tasks/{task_id}

Receives real-time progress updates.


Progress in Chat

Ask your bot about task progress:

"How's my CRM task going?"

Bot response:

📊 Your Cellphone Store CRM task is 65% complete.

Currently: Generating application UI
- ✓ Customer list view
- ✓ Product list view
- ⏳ Sales form (in progress)
- ⏳ Repair board

ETA: About 3 minutes remaining.

Notifications

Get notified when:

Event Notification
Task starts "Your CRM task has started"
Step completes "Step 1 complete: Database created"
Approval needed "⚠️ Approval required for Step 3"
Task completes " Your CRM is ready!"
Task fails " Task failed at Step 2"

Notification Channels

  • Browser - Desktop notifications
  • Email - For long-running tasks
  • Chat - Bot sends you updates
  • Mobile - Push notifications (if app installed)

Time Estimates

The system estimates remaining time based on:

  1. Historical data - How long similar steps took before
  2. Current progress - How fast the current step is moving
  3. Complexity - More complex apps take longer

Estimate Accuracy

Task Complexity Estimate Accuracy
Simple (1-2 tables) ±20%
Medium (3-5 tables) ±30%
Complex (6+ tables) ±50%

Handling Slow Tasks

If a task is taking longer than expected:

Check Progress

"Status of my CRM task"

See Detailed Logs

"Show logs for my CRM task"

Cancel and Retry

"Cancel my CRM task and start over"

Progress Best Practices

Monitor Long Tasks

For tasks over 10 minutes:

  • Enable email notifications
  • Check in periodically
  • Have fallback plans

Pause Before Leaving

If you need to leave:

  • Pause the task
  • It saves state
  • Resume when ready

Review Failed Steps

When a step fails:

  1. Check the error message
  2. Understand what went wrong
  3. Retry, skip, or modify

See Also