PersonaGraph

Struct PersonaGraph 

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

Persona graph for managing entity relationships

Maintains a graph structure of personas and their relationships, enabling coherent persona switching across related entities.

Implementations§

Source§

impl PersonaGraph

Source

pub fn new() -> Self

Create a new empty persona graph

Source

pub fn add_node(&self, node: PersonaNode)

Add a persona node to the graph

Source

pub fn get_node(&self, persona_id: &str) -> Option<PersonaNode>

Get a node by persona ID

Source

pub fn add_edge(&self, from: String, to: String, relationship_type: String)

Add an edge between two personas

Source

pub fn get_edges_from(&self, persona_id: &str) -> Vec<Edge>

Get all edges from a persona

Source

pub fn get_edges_to(&self, persona_id: &str) -> Vec<Edge>

Get all edges to a persona

Find all related personas using BFS traversal

Traverses the graph starting from the given persona ID, following relationships of the specified types.

§Arguments
  • start_persona_id - Starting persona ID
  • relationship_types - Optional filter for relationship types to follow
  • max_depth - Maximum traversal depth (None = unlimited)
§Returns

Vector of persona IDs reachable from the start persona

Find all related personas using DFS traversal

Traverses the graph starting from the given persona ID, following relationships of the specified types.

§Arguments
  • start_persona_id - Starting persona ID
  • relationship_types - Optional filter for relationship types to follow
  • max_depth - Maximum traversal depth (None = unlimited)
§Returns

Vector of persona IDs reachable from the start persona

Source

pub fn get_subgraph( &self, start_persona_id: &str, ) -> (Vec<PersonaNode>, Vec<Edge>)

Get the entire subgraph starting from a persona

Returns all nodes and edges reachable from the start persona.

Source

pub fn get_all_nodes(&self) -> Vec<PersonaNode>

Get all nodes in the graph

Source

pub fn remove_node(&self, persona_id: &str)

Remove a node and all its edges

Source

pub fn clear(&self)

Clear the entire graph

Source

pub fn get_stats(&self) -> GraphStats

Get graph statistics

Link personas across entity types automatically

Creates relationships between personas based on common entity type patterns:

  • user → has_orders → order
  • user → has_accounts → account
  • order → has_payments → payment
  • user → has_webhooks → webhook
  • user → has_tcp_messages → tcp_message
§Arguments
  • from_persona_id - Source persona ID
  • from_entity_type - Source entity type (e.g., “user”, “order”)
  • to_persona_id - Target persona ID
  • to_entity_type - Target entity type (e.g., “order”, “payment”)

Find all related personas of a specific entity type

Traverses the graph to find all personas of the specified entity type that are related to the starting persona.

§Arguments
  • start_persona_id - Starting persona ID
  • target_entity_type - Entity type to find (e.g., “order”, “payment”)
  • relationship_type - Optional relationship type filter (e.g., “has_orders”)
§Returns

Vector of persona IDs matching the criteria

Get or create a persona node and link it to related entities

This is a convenience method that creates a persona node if it doesn’t exist and automatically establishes relationships based on entity type patterns.

§Arguments
  • persona_id - Persona ID
  • entity_type - Entity type (e.g., “user”, “order”, “payment”)
  • related_entity_id - Optional related entity ID to link to
  • related_entity_type - Optional related entity type
Source§

impl PersonaGraph

Source

pub fn to_visualization(&self) -> GraphVisualization

Generate visualization data for the graph

Trait Implementations§

Source§

impl Clone for PersonaGraph

Source§

fn clone(&self) -> PersonaGraph

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for PersonaGraph

Source§

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

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

impl Default for PersonaGraph

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> Fake for T

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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: 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: 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> 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.
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
Source§

impl<T> ParallelSend for T