feat: add local feature for !Send tool handler support (#740)

* feat: add local feature for !Send tool handler support

* fix: gate streamable HTTP transport on not(local) feature
This commit is contained in:
Dale Seo 2026-03-11 17:22:56 -04:00 • committed by GitHub
commit 1a4a52a173
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 362 additions and 222 deletions

View file

@ -162,7 +162,8 @@ impl<S: Service<RoleClient>> ServiceExt<RoleClient> for S {
self,
transport: T,
ct: CancellationToken,
) -> impl Future<Output = Result<RunningService<RoleClient, Self>, ClientInitializeError>> + Send
) -> impl Future<Output = Result<RunningService<RoleClient, Self>, ClientInitializeError>>
+ MaybeSendFuture
where
T: IntoTransport<RoleClient, E, A>,
E: std::error::Error + Send + Sync + 'static,

View file

@ -95,7 +95,8 @@ impl<S: Service<RoleServer>> ServiceExt<RoleServer> for S {
self,
transport: T,
ct: CancellationToken,
) -> impl Future<Output = Result<RunningService<RoleServer, Self>, ServerInitializeError>> + Send
) -> impl Future<Output = Result<RunningService<RoleServer, Self>, ServerInitializeError>>
+ MaybeSendFuture
where
T: IntoTransport<RoleServer, E, A>,
E: std::error::Error + Send + Sync + 'static,

View file

@ -3,7 +3,7 @@ use std::{future::poll_fn, marker::PhantomData};
use tower_service::Service as TowerService;
use super::NotificationContext;
use crate::service::{RequestContext, Service, ServiceRole};
use crate::service::{MaybeSendFuture, RequestContext, Service, ServiceRole};
pub struct TowerHandler<S, R: ServiceRole> {
pub service: S,
@ -44,7 +44,7 @@ where
&self,
_notification: R::PeerNot,
_context: NotificationContext<R>,
) -> impl Future<Output = Result<(), crate::ErrorData>> + Send + '_ {
) -> impl Future<Output = Result<(), crate::ErrorData>> + MaybeSendFuture + '_ {
std::future::ready(Ok(()))
}