Merge remote-tracking branch 'origin/worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery

# Conflicts:
#	apps/web/tests/background-job-list.e2e.ts
#	apps/web/tests/live-job-stream.e2e.ts
#	apps/web/tests/snapshots/live-job-stream/settled.expected.md
#	apps/web/tests/snapshots/live-job-stream/streaming.expected.md
#	packages/api/job-controller/README.i18n.yaml
#	packages/api/job-controller/README.md
#	packages/api/job-controller/README.zh.md
#	snapshots/web/background-job-list/running.expected.md
#	snapshots/web/background-job-list/settled.expected.md
This commit is contained in:
Yichen Jiang committed 2026-09-03 11:25:17 +08:00
commit 5295b25073
36 files changed
+214 -118

No files matched your search

@@ -212,6 +212,6 @@ function jobView(job: JobSnapshot): SessionJob {
...(job.detail === undefined ? {} : { detail: job.detail }),
startedAt: job.startedAt,
...(job.finishedAt === undefined ? {} : { finishedAt: job.finishedAt }),
...(job.outputTotal === undefined ? {} : { outputTotal: job.outputTotal }),
...(job.outputTotal === undefined ? {} : { record: true as const }),
}
}
+5 -4
View File
@@ -489,11 +489,12 @@ export interface SessionJob {
readonly startedAt: number
readonly finishedAt?: number
/**
* Total UTF-8 bytes the job's observation record holds so far. Present
* exactly when the job declared a record — the row is observable through
* the job controller's `job.observe` stream.
* Present exactly when the job declared an observation record: the row is
* observable through the job controller's `job.observe` stream, whose
* `opened` anchor carries the live byte offsets. The roster refreshes on
* lifecycle commits only, so it mirrors no byte count.
*/
readonly outputTotal?: number
readonly record?: true
}
/** Complete live control baseline emitted once per control stream generation. */