deepseek-ai/deepseek-harness--packages-client-ui-jobs ↗★ 226k
@deepseek-ai/dsh-client-ui-jobs
Session-header background-job list: live registry state mirrored from session/jobs frames 适合需查看当前会话后台任务的Web用户与维护者。
같은 패키지 이름의 다른 저장소
설치
검증된 bundle이 없거나 호환성 검사에 실패했습니다. 먼저 저장소 설명을 읽어 주세요. 전체 README 읽기 ↗
description: "Web background-job surface: the session-header action listing the jobs this session can see; for users and maintainers of the background-job experience." kind: "package-reference"
@deepseek-ai/dsh-client-ui-jobs
English | 中文
Summary
This package renders the background-job surface of the Web GUI: a session-header action that opens a popover listing the jobs this session can see. It reads host-computed registry state through the runtime's jobsBySession mirror and issues no RPC of its own. The trigger appears only when the session has at least one job, with a badge counting running and stopping jobs; settled rows stay visible and de-emphasized until the registry drops them. The model's own view of the same jobs belongs to dsh-tool-jobs; this package is a read-only projection for the human.
Table of Contents
- Use this package
- Understand the implementation
- Further Exploration
- Model Experience
- Known Limitations and Deferred Work
- Dev Note
Use this package
Mount this plugin alongside the runtime; the job action then appears in the session header whenever the session has at least one job. A click opens the popover: live rows first by start time, then settled rows by finish time, each showing the producer kind, label, status, and an elapsed duration that ticks once per second while live and freezes at completion.
Dismissal and limits
Escape closes the list and returns focus to the trigger, as does a pointer press outside it. The list shows what one session can see through the wire view, so a job owned by another session never appears here; a process restart empties the list while the transcript keeps the run_in_background cards that started those jobs.
Understand the implementation
Implementation internals — click to expand
The package contributes one entry to conversation.session.header.actions (JobListAction), and the data arrives entirely through the jobsBySession list mirror that the Session Controller binding folds from session/jobs frames — no RPC, and no state beyond popover visibility. The badge counts running plus stopping and is omitted at zero. Rows are ordered with live rows first by startedAt ascending, then settled rows by finishedAt descending, with a same-millisecond tie broken on start order; a settled row missing finishedAt reads as zero rather than as a negative figure, and a duration past an hour stays in hours. Settled rows stay visible because a failed job's detail is the only place its failure is legible. The behavior is specified by the Web background-job display Agent Note.
Further Exploration
Read these pages when the job surface is not enough. They move from the browser list to the registry and the model-facing tool.
- dsh-tool-jobs — the model-facing jobs tool over the same registry.
- Session Controller — folds the
jobsBySessionmirror this package reads. - ui-subagent — the subagent catalog, where a running one-shot background subagent also appears.
- Web client architecture — how browser plugin rows load and register slots.
Model Experience
None, as this package renders host-computed registry state for a human and touches no prompt, message, schema, stream, or tool result.
KV Cache effect
None; the package never assembles or sends provider requests.
Known Limitations and Deferred Work
These limits define the current job list. They are current package constraints, not a general job-management comparison or a task backlog.
- Rows are read-only — a job's streamed output and a human-initiated cancellation are separate phases. Cancellation additionally owes a model-facing decision the seam does not answer:
kill()marks terminal delivery reported, so an interrupt written against the current contract would leave the model believing its job is still running. - The list is not the registry's own set — it shows what one session can see through the wire view, so a job owned by another session never appears here, and a process restart empties the list while the transcript keeps the
run_in_backgroundcards that started those jobs. An unowned job (one started without a liveAgent) reaches every session's list, matching whatlist(caller)reports to every caller.
Dev Note
Working context for maintainers — click to expand
None.
Runtime invariant: No companion is published. This package is a read-only projection of the jobsBySession mirror onto one header slot entry. It emits no Cordis events, owns no cross-plugin mutable state, and its single slot registration proves disposal through the HMR-safety spec.