Expose large_output_file_path on TaskShellProgress so clients can read complete shell-task output
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
Direção de pesquisa
Comece em schemas/api.schema.json, na definição de TaskShellProgress, e depois inspecione o caminho de geração de rpc.d.ts, que está marcado como gerado a partir desse schema. Verifique como os campos opcionais são representados e confira os testes relevantes de schema da CLI ou de validação da API. Está concluído quando o progresso das tarefas anexadas puder expor o caminho da saída grande e a contagem total de bytes quando disponíveis, sem quebrar os consumidores existentes.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Shell
- Estrelas
- 11.2k
- Forks
- 1.9k
- Merge médio
- 14h 16min
- PRs com merge (30d)
- 6
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/copilot-cli
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4848 ·
-
area:agents area:mcp
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4729 ·
-
area:sessions
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4712 ·
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
github/copilot-cli#4638 ·
-
Clarify startup message "No copilot-instructions.md found" to specify it means the repo-scoped file Abertaarea:context-memory
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 72/100
github/copilot-cli#4475 ·
Todas as issues de github/copilot-cli
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
danielmiessler/LifeOS#2218 ·
-
docs(agents): strengthen the no-backslash-escaped-backticks rule with an issue-creation example Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
-
Update ghgrab to 2.1.0 Abertapackage-update
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
oSoWoSo/vOid_Community_repOsitory#148 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
chore
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 91/100
alunduil/alunduil-chezmoi#792 ·