Skip to the copilot
Back to the workspace

Component states

Every state the copilot UI can be in, rendered from static fixtures with the same components the workspace uses. Components take protocol types as props, so a different agent backend that emits the same events gets the same UI.

Tool call card

One card per tool call, keyed by callId. Status is always text plus icon, never color alone.

preparing

Issue refundissue_refundPreparing arguments

{"orderId":"AO-10492","amou

Arguments and result (JSON)
{
  "arguments": "{\"orderId\":\"AO-10492\",\"amou",
  "result": null
}

Simulated back office · Refunds move money: policy RF-1 requires an operator to approve every refund.

running with progress

Damage assessmentrun_damage_assessmentRunning

Ticket #4821 photos, order AO-10492

Detecting tears and punctures (50%)

Arguments and result (JSON)
{
  "arguments": {
    "ticketId": "4821",
    "orderId": "AO-10492"
  },
  "result": null
}

Simulated back office · Read-only analysis of the customer's photos.

retrying

Replacement shipmentcreate_replacement_shipmentRetrying

1 x RL-2P-FLY, expedited shipping

Carrier API returned 503 Service Unavailable. Retrying (attempt 2 of 3).

Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492",
    "sku": "RL-2P-FLY",
    "quantity": 1,
    "shippingSpeed": "expedited"
  },
  "result": null
}

Simulated back office · Pre-authorized by policy RP-4: damaged-on-arrival replacement under $400.

succeeded

Look up orderlookup_orderDone452 ms

Order AO-10492

1 x Ridgeline 2P Tent, $329.00, delivered 2026-10-13, Jonas Keller

Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492"
  },
  "result": {
    "callId": "g_lookup_order",
    "name": "lookup_order",
    "status": "ok",
    "output": {
      "items": [
        {
          "name": "Ridgeline 2P Tent",
          "quantity": 1
        }
      ],
      "totalCents": 32900,
      "deliveredAt": "2026-10-13",
      "customer": {
        "name": "Jonas Keller"
      }
    },
    "attempts": 1,
    "operatorEdits": null,
    "note": null
  }
}

Simulated back office · Read-only lookup.

failed after retries

Replacement shipmentcreate_replacement_shipmentFailedattempt 3 of 3

1 x RL-2P-FLY, expedited shipping

Carrier API returned 503 Service Unavailable. (after 3 attempts)

Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492",
    "sku": "RL-2P-FLY",
    "quantity": 1,
    "shippingSpeed": "expedited"
  },
  "result": {
    "callId": "g_create_replacement_shipment",
    "name": "create_replacement_shipment",
    "status": "error",
    "output": {
      "error": "upstream_503",
      "message": "Carrier API returned 503 Service Unavailable."
    },
    "attempts": 3,
    "operatorEdits": null,
    "note": null
  }
}

Simulated back office · Pre-authorized by policy RP-4: damaged-on-arrival replacement under $400.

invalid arguments

Damage assessmentrun_damage_assessmentInvalid arguments

Ticket #4821 photos, order AO-10492

The model sent arguments that don't match the tool's schema

Nothing ran. The error went back to the model so it can correct the call.ticketId: Invalid input: expected string, received number
Arguments and result (JSON)
{
  "arguments": {
    "ticketId": 4821,
    "orderId": "AO-10492"
  },
  "result": null
}

Simulated back office · Read-only analysis of the customer's photos.

declined

Send customer emailsend_customer_emailDeclined

"Your Ridgeline 2P"

Declined: "Draft it in the ticket instead"

Arguments and result (JSON)
{
  "arguments": {
    "subject": "Your Ridgeline 2P"
  },
  "result": {
    "callId": "g_send_customer_email",
    "name": "send_customer_email",
    "status": "declined",
    "output": {
      "declined": true
    },
    "attempts": 1,
    "operatorEdits": null,
    "note": "Draft it in the ticket instead"
  }
}

Simulated back office · Customer-facing messages need operator approval (policy CC-2).

cancelled

Damage assessmentrun_damage_assessmentCancelled

Ticket #4821 photos, order AO-10492

Arguments and result (JSON)
{
  "arguments": {
    "ticketId": "4821",
    "orderId": "AO-10492"
  },
  "result": null
}

Simulated back office · Read-only analysis of the customer's photos.

awaiting approval

Issue refundissue_refundNeeds your approval

$98.70 as refund to original payment

Approval needed: Issue refund

High impact

Refund $98.70 on AO-10492 as a refund to the original payment

Refunds move money: policy RF-1 requires an operator to approve every refund.

Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492",
    "amountCents": 9870,
    "reason": "Goodwill for a damaged-on-arrival rain fly",
    "method": "original_payment"
  },
  "result": null
}

Simulated back office · Refunds move money: policy RF-1 requires an operator to approve every refund.

decided, waiting for another decision

Issue refundissue_refundApproved, waiting to run

$98.70 as refund to original payment

Approved with 2 editsSending to the agent...
Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492",
    "amountCents": 9870,
    "reason": "Goodwill for a damaged-on-arrival rain fly",
    "method": "original_payment"
  },
  "result": null
}

Simulated back office · Refunds move money: policy RF-1 requires an operator to approve every refund.

expired (run stopped)

Issue refundissue_refundCancelled

$98.70 as refund to original payment

Expired: the run was stopped before you decided. Nothing was executed.
Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492",
    "amountCents": 9870,
    "reason": "Goodwill for a damaged-on-arrival rain fly",
    "method": "original_payment"
  },
  "result": null
}

Simulated back office · Refunds move money: policy RF-1 requires an operator to approve every refund.

rejected by the server

Issue refundissue_refundNeeds your approval

$98.70 as refund to original payment

Approval needed: Issue refund

High impact

Refund $98.70 on AO-10492 as a refund to the original payment

Refunds move money: policy RF-1 requires an operator to approve every refund.

Arguments and result (JSON)
{
  "arguments": {
    "orderId": "AO-10492",
    "amountCents": 9870,
    "reason": "Goodwill for a damaged-on-arrival rain fly",
    "method": "original_payment"
  },
  "result": null
}

Simulated back office · Refunds move money: policy RF-1 requires an operator to approve every refund.

Streaming answer with citations

Markers are linked before Markdown parsing, outside code spans; a half-received marker is held back.

streaming (marker [2 still arriving)

Delivered Oct 13, so the claim is inside the damaged-on-arrival window . Replace the part only

complete, with an unverified citation and a literal [1] in code

Inside the 30-day window . Members also get a free return label .

The raw marker looks like [1].

chips

resolved pending [2] unverified

Connection banner

Connection lost (simulated drop). Reconnecting, attempt 1 of 4.Only committed steps are kept; the interrupted step resumes.
Reconnected. Resumed from the last committed step; nothing ran twice.
Reconnected. The step that was cut off was regenerated.

Run status

Ready1 min 5 s
Running: Damage assessment
Waiting for your approval1 min 5 s
Reconnecting1 min 5 s
Completed1 min 5 s
Stopped1 min 5 s
Needs attention1 min 5 s
Interrupted by a reload1 min 5 s

Mode badge

Scripted modeLive · OpenAI GPT-6 LunaLive · Anthropic Claude Opus 5.5 · not live-verified