After a subscriptions/listen reconnect, how does a client learn about transitions it missed?
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- api, backend-api-design
Direção de pesquisa
Start with the cited task subscription requirements in specification/2026-07-28/tasks.md, then read the reconnection behavior in basic/patterns/subscriptions.mdx and the SSE note in changelog.mdx. Compare the server-side and client-side proposals, resolve which requirement the specification should adopt, and update the relevant task subscription text so missed transitions are handled after reconnecting.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Context
notifications/taskscarries a completeDetailedTask, "identical to whattasks/getwould have returned at that moment" (specification/2026-07-28/tasks.md:477). Clients "MAY continue pollingtasks/getin addition to subscribing … but need not do so" (:505).- In core MCP 2026-07-28, an abrupt transport drop ends a subscription (
basic/patterns/subscriptions.mdx:125). The client "MAY treat [it] as a trigger to reconnect" (:157-158). On stdio it "MUST re-sendsubscriptions/listen", and the server "holds no subscription state across reconnections" (:160-162). - SSE resumability was removed on purpose in this revision (SEP-2575,
changelog.mdx:28). This issue doesn't ask to bring it back. Snapshot notifications make it unnecessary for tasks, with one exception, below.
The gap
A client that follows :505 and relies on notifications alone can do this:
subscriptions/listenwithtaskIds: [T], and the ack confirmsT.- The transport drops.
Tmovesworking → completed(or→ input_required) while no stream exists. The notification has nowhere to go.- The client reconnects and re-sends
subscriptions/listenforT, and the server acks. Tis terminal, so nothing further ever changes. The client never receives a notification and waits untilttlMsexpires.
For input_required, the task also stalls server-side, because the client never sees inputRequests.
Proposal (either line settles it)
- Server side: "After acknowledging a
subscriptions/listenthat includestaskIds, the server SHOULD send onenotifications/taskscarrying the currentDetailedTaskfor each acknowledged task ID." This is snapshot-on-subscribe, the same shape A2A'sSubscribeToTaskuses. - Client side: "A client that (re-)establishes a subscription MUST call
tasks/getonce for each task ID in the acknowledgement before relying on notifications alone." This needs no server change and fits the "need not poll" text as long as that text gets this qualifier.
lastUpdatedAt (tasks.md:133) already lets a client discard a stale snapshot if both a poll and a notification arrive, so either option is safe to combine with polling.
- Linguagem predominante
- TypeScript
- Estrelas
- 52
- Forks
- 12
- Merge médio
- 4d 23h
- PRs com merge (30d)
- 4
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o 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 modelcontextprotocol/ext-tasks
-
documentation
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
modelcontextprotocol/ext-tasks#31 · 1 comentário ·
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
modelcontextprotocol/ext-tasks#22 · 1 comentário ·
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
modelcontextprotocol/ext-tasks#30 · 1 comentário ·
-
Auth binding: no error code represents a denial, and SEP-1686's disclosure requirement did not carry overTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
modelcontextprotocol/ext-tasks#20 · 2 comentários ·
Todas as issues de modelcontextprotocol/ext-tasks
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
polarsource/polar#15580 ·
Mantenedores costumam responder em até 1 dia
-
accepted bug via-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 69/100
pingdotgg/t3code#20931 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug/1-unconfirmed kind/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 83/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ranxianglei/billion-context#3583 ·
Mantenedores costumam responder em até 1 dia