Commit f163ad4
committed
[SEP-2575][SEP-2322] client: Client gains _send/_negotiate/_isStateless/subscribe; typed methods route via _send (sectioned)
Client (existing class, extends Protocol) gains a `// 2026 stateless` section:
- `_isStateless`, `_logLevel`
- `_buildMeta()` / `_withMeta()` — namespaced `_meta` from client identity
- `_collect(it, opts)` — drain sendAndReceive: progress→onprogress by token,
return raw result, throw on JSON-RPC error
- `_send(req, schema, opts)` — route via sendAndReceive when stateless, else
fall back to `Protocol.request()`. MRTR loop ≤16: on input_required,
dispatch each input request via `this.dispatcher.dispatch` (so
`_validationMiddleware` runs), accumulate inputResponses + thread
requestState, propagate signal
- `_negotiate(transport)` — probe server/discover, set `_isStateless` on
success, fall through on isFallbackable error (wired to connect() in C13)
- `subscribe(filter)` — async generator over subscriptions/listen
- `_listChangedLoop` — stateless backing for options.listChanged with debounce
`// dual-mode`: typed methods (callTool/listTools/getPrompt/listPrompts/
readResource/listResources/listResourceTemplates/complete) route via `_send`.
`setLoggingLevel` stores level for `_buildMeta`, sends legacy RPC when not
stateless.
`// session-dependent` divider above existing `connect()`/`ping()`/
`subscribeResource()`/`_setupListChangedHandler*` (bodies unchanged).
`applyElicitationDefaults` unchanged.
Satisfies: 2575-R10 (per-request _meta), 2575-R11 (discover probe),
2575-R12 (sendAndReceive routing), 2322-R3 (MRTR resume loop),
2322-R4 (requestState round-trip)1 parent 93bb2c3 commit f163ad4
2 files changed
Lines changed: 665 additions & 12 deletions
0 commit comments