Renders the AgentList with a 'New Agent' affordance. Uses useAuthorized
for the access token and the cloud-agents-client for the fetch. In mock
mode this works without a backend so the UI can be developed alongside
Epic A.
antd Table that renders cloud-agent definitions and links each row to
/agents/{agent_id}. Uses Tag for the model and dayjs.fromNow for the
last-activity column. Empty state is the antd Empty placeholder.
EventSource hook with auto-reconnect, seq-cursor resume, and dedup.
On error closes the stream and re-opens after 1s backoff, passing
since_seq=<lastSeq> so the server replays missed events. In mock mode
replays MOCK_RUN_EVENTS at 400ms cadence so the UI looks live, and
listens for window offline/online so Playwright can exercise the
reconnect path.
Proxy-routed fetches for agents, sessions, runs, conversation, and
followup. Mock-aware: short-circuits to mock-agents.ts when
NEXT_PUBLIC_USE_MOCK_AGENTS=true. Centralizes the SSE URL shape via
buildRunEventStreamUrl so the hook just opens the EventSource.
Documents how to run the spike, what AWS resources are required (subnet,
SG, IAM instance profile), the cost envelope, and how to clean up the
one-time infra after Epic B ships.
Wired via NEXT_PUBLIC_USE_MOCK_AGENTS=true. Temporary shim until Epic A
(LIT-2877) lands the real /v1/agents, /v1/sessions, conversation, and
event-stream endpoints. Shapes mirror the API spec for a one-line swap.
Includes a canned MOCK_RUN_EVENTS sequence used by the SSE hook.
Launches t3.large in the BYOC AWS account, fires a user-data HTTPS
callback, sends an SSM RunCommand to a *running* instance to measure
warm-attach latency, and always terminates in a finally block.
The warm-attach latency is the critical number for LIT-2890 (B2):
<2000ms -> SSM RunCommand push hydrate
2000-5000ms -> long-poll daemon
>5000ms -> reconsider warm-pool design
5-line Flask app on port 3333 that logs callbacks from EC2 user-data and
SSM RunCommand. Used by the EC2 provisioning spike to time when boot
and hydrate callbacks arrive.
Mirrors the API spec from LIT-2877 (Epic A). Single source of truth for
the dashboard so components don't redefine shapes inline. Namespaced
`Cloud*` to avoid colliding with the legacy proxy-side Agent type.