Skip to main content

ProjectContextResolver

Struct ProjectContextResolver 

Source
pub struct ProjectContextResolver { /* private fields */ }

Implementations§

Source§

impl ProjectContextResolver

Source

pub fn new(source: Arc<dyn ProjectContextSource>) -> Self

Source

pub fn new_with_workspace_resolver( source: Arc<dyn ProjectContextSource>, workspace_resolver: WorkspaceResolver, ) -> Self

Build a Project resolver against one coherent workspace-provider pair.

The server uses this form so preview/ownership validation cannot observe a different AppState’s process-global first-wins provider. Other embeddings retain Self::new’s dynamic global behavior.

Source

pub fn project_id_from_session(session: &Session) -> Option<ProjectId>

Return the stable, opaque Project id persisted on the session.

The domain accessor dual-writes this compatibility key. Keeping the read centralized here prevents memory, Dream, prompt, and resource callers from independently falling back to mutable workspace identity.

Source

pub fn session_project_identity(session: &Session) -> SessionProjectIdentity

Parse persisted Project membership into an authoritative three-state value. Whitespace is normalized exactly like the rebuildable storage index. Callers with security/resource consequences must distinguish Invalid from truly Unassigned.

Source

pub fn memory_read_identity_for_session(session: &Session) -> Option<ProjectId>

Source

pub async fn resolve_memory_read_scope( &self, session: &Session, workspace: Option<&Path>, ) -> Result<Option<ProjectId>, ProjectContextError>

Source

pub async fn list_project_ids( &self, ) -> Result<Vec<ProjectId>, ProjectContextError>

Source

pub async fn resolve( &self, session: &Session, workspace: Option<&Path>, ) -> Result<Option<ResolvedProjectContext>, ProjectContextError>

Source

pub fn resolve_workspace_candidate( session: &Session, workspace: Option<&Path>, ) -> Result<Option<PathBuf>, ProjectContextError>

Resolve the exact workspace the runtime will use without publishing it.

This is shared by HTTP preflight, SDK/execute prompt refresh, and the Workspace tool so configured/session-default fallbacks cannot bypass Project ownership checks.

Source

pub async fn workspace_owner( &self, workspace: &Path, ) -> Result<Option<ProjectId>, ProjectContextError>

Source

pub async fn refresh_session_prompt( &self, session: &mut Session, ) -> Result<Option<ResolvedProjectContext>, ProjectContextError>

Resolve and persist stable Project identity plus mutable Workspace metadata immediately.

Session-create and chat APIs call this before their first response so a freshly-created assigned session is already self-describing when read back, rather than waiting for the first execution round. The round prelude calls the same helper to keep the metadata current. Provider context is rendered later from this authority; this method never injects Project or Workspace markers into a System message.

Source

pub async fn refresh_session_prompt_read_only( &self, session: &mut Session, ) -> Result<Option<ResolvedProjectContext>, ProjectContextError>

Resolve Project/Workspace metadata on an in-memory snapshot without changing runtime workspace state.

Read APIs use this for sessions that have never entered the runner (for example a disabled schedule or a child created with auto_run=false). The caller is expected to discard the temporary session after building the response.

Trait Implementations§

Source§

impl Clone for ProjectContextResolver

Source§

fn clone(&self) -> ProjectContextResolver

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more