Skip to main content

SessionReader

Struct SessionReader 

Source
pub struct SessionReader;
Expand description

Reader for loading sessions from JSONL files.

Implementations§

Source§

impl SessionReader

Source

pub fn load_transcript(session_dir: &Path) -> Result<Vec<TranscriptEntry>>

Load all transcript entries from a session directory.

If the JSONL contains a compact_boundary system entry (g157), all entries before the last such boundary are discarded—they were already summarised and the summary is the first entry after the boundary. This makes resume O(post-compaction size).

Source

pub fn load_transcript_indexed( session_dir: &Path, ) -> Result<(Vec<TranscriptEntry>, HashMap<String, TranscriptEntry>)>

Load the transcript and build a UUID → TranscriptEntry index alongside the ordered vec. Enables O(1) lookup by UUID (g155).

Source

pub fn load_messages(session_dir: &Path) -> Result<Vec<Message>>

Load the transcript and convert each TranscriptEntry to a runtime Message. Persistence-only fields (id, parent_id, uuid, parent_uuid, timestamp, usage) are dropped here. The result is what run_resumed expects as its seed argument.

The system role is kept in the returned vec; callers that want to rebuild the system prompt from Config can filter it out manually.

Source

pub fn scan_orphan_tool_calls( session_dir: &Path, registry: &ToolRegistry, ) -> Result<Vec<OrphanToolCall>>

Goal-153: scan the transcript for “orphan” tool calls — tool_calls in the last assistant message that have no matching tool reply.

Returns an empty vec when the transcript is clean (no orphans). Returns the orphan descriptions when one or more tool calls from the last assistant message have no corresponding tool result message.

This is the detection side of durable execution; the handling (skip / redo / abort) is done by the caller (cmd_resume).

registry is used to determine side_effect_at_call for orphans (their AuditMeta was never written because the process died before the call returned).

Source

pub fn load_meta(session_dir: &Path) -> Result<SessionMeta>

Load the session metadata from a session directory.

Source

pub fn list_sessions(workspace: &Path) -> Result<Vec<PathBuf>>

List all session directories for a given workspace.

Returns a list of session directories sorted by name (which is timestamp-prefixed, so chronological).

Source

pub fn list_sessions_sorted_by_updated_at( workspace: &Path, ) -> Result<Vec<(PathBuf, SessionMeta)>>

List all session directories sorted by .meta.json updated_at descending (most recently active first).

Used by recursive resume (g151) to pick the most-recent session when no ID is given. Tiebreaks: when two sessions share the same updated_at string (RFC3339 has 1-second granularity, so ties happen during fast tests), fall back to transcript.jsonl mtime, then session_id lexicographically.

Sessions whose .meta.json cannot be read are silently excluded — they’re either being created or corrupted.

Source

pub fn list_all_sessions(base: &Path) -> Result<Vec<PathBuf>>

List all session directories across all workspaces under a base path.

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. 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, 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<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