Resources: subscriptions/listen model on modern servers (era fork) (#1630) (#1730)

Fork resource subscriptions by protocol era: legacy keeps resources/subscribe; modern (2026-07-28) models subscriptions as a filter over one long-lived subscriptions/listen stream with reconnect-by-re-listen (capped backoff), an optimistic Connecting→Listening header badge, and a fix so the browser proxy no longer blocks listen() ~60s. Closes #1630.
This commit is contained in:
Cliff Hall 2026-07-20 19:33:40 -04:00 • committed by GitHub
commit 320daf2f67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -23,6 +23,7 @@ import type {
PromptGetInvocation,
ResourceReadInvocation,
ResourceTemplateReadInvocation,
ResourceSubscriptionStreamState,
} from "./types.js";
import type {
Tool,
@ -114,6 +115,13 @@ export interface InspectorClientEventMap {
newPendingElicitation: ElicitationCreateMessage;
rootsChange: Root[];
resourceSubscriptionsChange: string[];
/**
* Fired when the modern-era `subscriptions/listen` stream that backs resource
* subscriptions changes lifecycle state (#1630): opened+acknowledged, dropped
* and reconnecting, or ended. Legacy connections never dispatch an `active`
* state (they have no persistent stream).
*/
resourceSubscriptionStreamChange: ResourceSubscriptionStreamState;
// Task events
/** Fired only from server notification notifications/tasks/status. */
taskStatusChange: { taskId: string; task: Task };