Status: Durable lifecycle SSE is available in the production partner preview. Exact browser approval events remain pending production activation. Cancellation-reconciliation code is deployed, but final-status behavior remains pending a separate live canary.
runs:read, and the run must belong to its tenant.
Last-Event-ID is optional. When supplied, it must be a non-negative safe
integer; the stream resumes strictly after that task_run_events.sequence.
Framing
Every projected event uses standard SSEid, event, and data fields:
idequals the event’s numericsequence.- The stream sends comment heartbeats after ten seconds without a projected event.
- Disconnecting cancels the polling loop.
- A
completed,failed, orcancelledrun closes the stream. - Once the reconciliation final-status canary clears, reconciliation is
non-terminal: the run remains
running, and the stream stays open through reconciliation and recovery. - The TypeScript client rejects a missing/mismatched SSE id, non-increasing sequences, events after a terminal event, and EOF before a terminal event.
Durable event vocabulary
Reconciliation without a new event type
The migration and compatible Workers are deployed, but this final-status path remains pending a separate live canary. Once that gate clears, internalreconcile_required states project through the existing v1 shapes. The run
stays running, and the stream emits this exact
run.progress message:
run.progress event with this exact message:
run.failed event:
failure.code: "run_failed". An accepted cancellation request can follow any
of these paths. It does not prove rollback or guarantee an immediate
run.cancelled event.
Approval events fail closed (pending activation)
Praxa emitsapproval.required only when it can derive a customer-safe exact
presentation from immutable browse_session_act executor input. The event
contains an approvalId, the exact action_digest, and a summary made from
the recorded instruction or steps followed by the target host. The same fields
can appear as RunResource.pendingApproval.
Render that summary without truncation or re-derivation. After the person
chooses, send approve or deny with the event’s exact digest to
POST /v1/runs/:id/approve. Praxa re-derives the presentation and compares the
digest before recording the decision. If the presentation or digest is absent,
stale, unsupported, or mismatched, Praxa emits no unsafe approval projection
and accepts no decision.
The versioned AiPlatformRunEventV1 schema also includes output, tool, and usage
events. The current durable-task projector does not emit those event types.
No event exposes prompts, reasoning content, raw tool arguments, provider
cost, margin, lease state, or executor credentials.