pub struct PermissionManager { /* private fields */ }Expand description
Permission Manager - handles permission requests in background tasks
§Architecture
Based on Zed’s async permission pattern:
- Hook sends request via unbounded channel (never blocks)
- Background task processes request
- One-shot channel returns result to caller
§Example
ⓘ
let manager = PermissionManager::new(connection_cx);
let rx = manager.request_permission("Edit", input, "call_123", "session_456");
let decision = rx.await?;Implementations§
Source§impl PermissionManager
impl PermissionManager
Sourcepub fn new(connection_cx: Arc<JrConnectionCx<AgentToClient>>) -> Self
pub fn new(connection_cx: Arc<JrConnectionCx<AgentToClient>>) -> Self
Create a new PermissionManager
Sourcepub fn request_permission(
&self,
tool_name: String,
tool_input: Value,
tool_call_id: String,
session_id: String,
) -> Receiver<PermissionManagerDecision>
pub fn request_permission( &self, tool_name: String, tool_input: Value, tool_call_id: String, session_id: String, ) -> Receiver<PermissionManagerDecision>
Request permission (non-blocking)
Returns a receiver that will resolve when user responds.
This never blocks - it immediately sends to the background task and returns a receiver for the result.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PermissionManager
impl !RefUnwindSafe for PermissionManager
impl Send for PermissionManager
impl Sync for PermissionManager
impl Unpin for PermissionManager
impl !UnwindSafe for PermissionManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoMaybeUndefined<T> for T
impl<T> IntoMaybeUndefined<T> for T
fn into_maybe_undefined(self) -> MaybeUndefined<T>
Source§impl<T> IntoOption<T> for T
impl<T> IntoOption<T> for T
fn into_option(self) -> Option<T>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request