Skip to main content

PathResolver

Struct PathResolver 

Source
pub struct PathResolver { /* private fields */ }
Expand description

Builder-style resolver over Cursor’s data directories.

Implementations§

Source§

impl PathResolver

Source

pub fn new() -> Self

Source

pub fn with_home<P: Into<PathBuf>>(self, home: P) -> Self

Source

pub fn with_anysphere_dir<P: Into<PathBuf>>(self, dir: P) -> Self

Override ~/.cursor/ directly.

Source

pub fn with_user_data_dir<P: Into<PathBuf>>(self, dir: P) -> Self

Override the Electron user-data root. On macOS this defaults to <home>/Library/Application Support/Cursor.

Source

pub fn home_dir(&self) -> Result<&Path>

Source

pub fn anysphere_dir(&self) -> Result<PathBuf>

Path to ~/.cursor/.

Source

pub fn projects_dir(&self) -> Result<PathBuf>

Path to ~/.cursor/projects/.

Source

pub fn project_transcripts_dir(&self, slug: &str) -> Result<PathBuf>

Path to the agent-transcripts folder for a project slug.

Source

pub fn transcript_path(&self, slug: &str, composer_id: &str) -> Result<PathBuf>

Path to the JSONL transcript file for a composer in a project.

Source

pub fn user_data_dir(&self) -> Result<PathBuf>

Path to the Electron user-data root.

Source

pub fn user_dir(&self) -> Result<PathBuf>

Path to <user-data>/User/.

Source

pub fn global_storage_dir(&self) -> Result<PathBuf>

Path to <user-data>/User/globalStorage/.

Source

pub fn db_path(&self) -> Result<PathBuf>

Path to the primary cross-workspace SQLite database (<user-data>/User/globalStorage/state.vscdb).

Source

pub fn workspace_storage_dir(&self) -> Result<PathBuf>

Path to <user-data>/User/workspaceStorage/. Cursor stores one subdirectory per workspace folder it’s been opened against, named by the workspace id (an opaque 32-hex-char hash Cursor computes from the folder URI). Each subdir contains a workspace.json with the canonical folder URI that subdir is bound to.

Source

pub fn find_workspace_id(&self, folder: &Path) -> Result<Option<String>>

Look up Cursor’s workspace id for a given folder, if it has been opened in Cursor.app before. Scans every workspaceStorage/<id>/workspace.json, returning the <id> whose recorded folder URI canonicalizes to folder.

Returns Ok(None) when the folder hasn’t been opened yet — the caller can decide whether to synthesize one via Self::ensure_workspace_storage_entry.

Source

pub fn ensure_workspace_storage_entry( &self, folder: &Path, synthesize_id: impl FnOnce(&Path) -> String, ) -> Result<EnsuredWorkspaceId>

Look up the workspace id for folder; if none exists, create workspaceStorage/<synthesized-id>/workspace.json recording the folder URI and return the synthesized id. The next time Cursor.app opens that folder it’ll scan workspaceStorage, match by URI, and adopt our id — so any composer we projected with workspaceIdentifier.id = <our-id> lights up in the sidebar.

synthesize_id decides what id to assign for new folders. Production callers should pass a stable hash (e.g. the first 32 hex chars of SHA-256 of the folder path) so re-runs don’t accumulate orphaned workspaceStorage entries.

Source

pub fn exists(&self) -> bool

Whether Cursor’s user-data tree exists.

Source

pub fn db_exists(&self) -> bool

Whether the primary global SQLite database exists.

Trait Implementations§

Source§

impl Clone for PathResolver

Source§

fn clone(&self) -> PathResolver

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
Source§

impl Debug for PathResolver

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PathResolver

Source§

fn default() -> Self

Returns the “default value” for a type. 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<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, 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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.