Expose large_output_file_path on TaskShellProgress so clients can read complete shell-task output
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
Rechercherichtung
Beginne in schemas/api.schema.json bei der Definition von TaskShellProgress und untersuche anschließend den Generierungspfad für rpc.d.ts, der als aus diesem Schema generiert markiert ist. Prüfe, wie optionale Felder dargestellt werden, und sieh dir die relevanten CLI-Schema- oder API-Validierungstests an. Erledigt ist die Aufgabe, wenn der Fortschritt angehängter Tasks bei Verfügbarkeit den Pfad zur großen Ausgabe und die Gesamtanzahl der Bytes bereitstellen kann, ohne bestehende Consumer zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the feature or problem you'd like to solve
TaskShellProgress.recentOutput is a small rolling window (~10 lines / ~80 chars). A client polling it to display a running shell task shows a lossy sample presented as the tail. Measured at 2s polling against a 10 lines/sec producer — consecutive polls are disjoint, so ~half the output is unobservable:
| poll | lines | first | last |
|---|---|---|---|
| 1 | 10 | 3 | 12 |
| 2 | 10 | 21 | 30 |
| 3 | 10 | 39 | 48 |
| 7 | 10 | 113 | 122 |
A complete log already exists. With largeOutput enabled the runtime writes a full, gap-free file — including for attached tasks (400 lines → bytes=3492 first=1 last=400 contiguous=true). The runtime knows the path: shell_attached_session_read returns recent_output, large_output_file_path, large_output_total_bytes.
The wire contract drops the last two, so clients cannot find the file.
Proposed solution
In schemas/api.schema.json, add to TaskShellProgress:
"largeOutputFilePath": { "type": "string" },
"largeOutputTotalBytes": { "type": "integer" }
Optional, populated only when largeOutput is enabled and the threshold has been crossed — no change for existing consumers.
This must happen in the CLI: TaskShellProgress is defined here and the SDK's rpc.d.ts is generated from this schema (AUTO-GENERATED FILE - DO NOT EDIT / Generated from: api.schema.json). The definition also sets "additionalProperties": false, so the field is actively forbidden on the wire — no client-side or SDK-side change can surface it.
Example prompts or workflows
A GUI host showing live build output for a long-running shell task. Today it must poll recentOutput and stitch samples, knowingly dropping content.
Clients cannot work around this: largeOutput is session-scoped (fixed at createSession; no per-message option, no mid-session config update), so a directory-per-task mapping isn't possible. Concurrent tasks do get separate files, but creation order does not follow task order — tasks listed 1,0 produced files in reverse — so ctime correlation is unsafe. That leaves content-matching heuristics, which are genuinely ambiguous while two tasks emit identical output.
Additional context
- Still absent in 1.0.11:
TaskShellProgressunchanged (3 fields),largeOutputappears 0 times inrpc.d.ts, whilerpc.d.tsgrew ~109KB with other features — looks unaddressed rather than deliberate. - The file is written incrementally (one tracked its task from t=23s to t=44s), so exposing the path enables a real live tail.
- It appears only after the size threshold is crossed (~17s in one probe); brief absence is expected and easy to handle.
TaskShellInfo.logPathdoesn't cover this — documented as detached-only, whereaslarge_output_file_pathis on the attached read path.- Related but distinct: #2984 (session-state trace logging for replay/forensics — different consumer and timing; neither request satisfies the other). The
largeOutputissues oncopilot-sdk(#1788, #2158, #2161) concern the config not being honored; here it was honored.
- Vorherrschende Sprache
- Shell
- Sterne
- 11.2k
- Forks
- 1.9k
- Ø Merge
- 14 Std. 16 Min.
- Gemergte PRs (30 T.)
- 6
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus github/copilot-cli
-
triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
github/copilot-cli#4729 ·
-
area:sessions
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
github/copilot-cli#4712 ·
-
triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
github/copilot-cli#4638 ·
-
Clarify startup message "No copilot-instructions.md found" to specify it means the repo-scoped file Offenarea:context-memory
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 72/100
github/copilot-cli#4475 ·
Alle Issues in github/copilot-cli
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 90/100
danielmiessler/LifeOS#2218 ·
-
docs(agents): strengthen the no-backslash-escaped-backticks rule with an issue-creation example Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
-
technical-debt
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
ll7/robot_sf_ll7#9560 ·
-
Update ghgrab to 2.1.0 Offenpackage-update
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
oSoWoSo/vOid_Community_repOsitory#148 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100