JobProgress
Progress payload attached to a Progress SSE frame and to the
InFlight DTO when the in-flight row carries a last-checkpoint
snapshot.
total is optional because some phases of some jobs don't have a
meaningful upper bound (e.g. the tar-extract phase of the provider
cache refresh, which streams files of unknown count); a current-only
payload still lets the UI render "doing N units" with no fraction.
currentinteger<int64>required
Possible values: >= 0
phasestring | nullnullable
Free-text label for multi-stage jobs. Provider cache refresh uses
it for "downloading" / "extracting" / "indexing"; other jobs
leave it None.
totalinteger,null<int64>nullable
Possible values: >= 0
JobProgress
{
"current": 0,
"phase": "string",
"total": 0
}