mcp: add StreamableHTTPOptions.EventStore (#593)
Allow users to enable streamable replay by setting a non-nil event store. Updates #587
This commit is contained in:
parent
8aee8d39bd
commit
cfa7a515a9
1 changed files with 15 additions and 21 deletions
|
|
@ -72,8 +72,11 @@ type StreamableHTTPOptions struct {
|
|||
// If nil, do not log.
|
||||
Logger *slog.Logger
|
||||
|
||||
// TODO(rfindley): file a proposal to export this option, or something equivalent.
|
||||
configureTransport func(req *http.Request, transport *StreamableServerTransport)
|
||||
// EventStore enables stream resumption.
|
||||
//
|
||||
// If set, EventStore will be used to persist stream events and replay them
|
||||
// upon stream resumption.
|
||||
EventStore EventStore
|
||||
}
|
||||
|
||||
// NewStreamableHTTPHandler returns a new [StreamableHTTPHandler].
|
||||
|
|
@ -237,12 +240,10 @@ func (h *StreamableHTTPHandler) ServeHTTP(w http.ResponseWriter, req *http.Reque
|
|||
transport = &StreamableServerTransport{
|
||||
SessionID: sessionID,
|
||||
Stateless: h.opts.Stateless,
|
||||
EventStore: h.opts.EventStore,
|
||||
jsonResponse: h.opts.JSONResponse,
|
||||
logger: h.opts.Logger,
|
||||
}
|
||||
if h.opts.configureTransport != nil {
|
||||
h.opts.configureTransport(req, transport)
|
||||
}
|
||||
|
||||
// To support stateless mode, we initialize the session with a default
|
||||
// state, so that it doesn't reject subsequent requests.
|
||||
|
|
|
|||
Loading…
Reference in a new issue