feat: discover subject session history
This commit is contained in:
@@ -75,6 +75,7 @@ pub mod history;
|
||||
mod legacy_session_log;
|
||||
pub mod logged_item;
|
||||
mod paste_artifact;
|
||||
pub mod public_index;
|
||||
pub mod public_snapshot;
|
||||
pub mod segment;
|
||||
pub mod segment_log;
|
||||
@@ -95,6 +96,14 @@ pub use history::{
|
||||
};
|
||||
pub use logged_item::{LoggedContentPart, LoggedItem, LoggedRole, from_logged, to_logged};
|
||||
pub use paste_artifact::PasteArtifactLimits;
|
||||
pub use public_index::{
|
||||
DEFAULT_SESSION_PUBLIC_INDEX_MAX_BYTES, DEFAULT_SESSION_PUBLIC_INDEX_MAX_ENTRIES,
|
||||
DEFAULT_SESSION_PUBLIC_INDEX_MAX_SEGMENTS, SESSION_PUBLIC_INDEX_COMPACT_TEXT_MAX_BYTES,
|
||||
SessionPublicIndex, SessionPublicIndexEntry, SessionPublicIndexEntryKind,
|
||||
SessionPublicIndexLimits, SessionPublicIndexLineage, SessionPublicIndexOriginKind,
|
||||
SessionPublicIndexReadError, SessionPublicIndexSegment, SessionPublicIndexToolPart,
|
||||
read_session_public_index,
|
||||
};
|
||||
pub use public_snapshot::{
|
||||
DEFAULT_RETAINED_HISTORY_MAX_ENTRIES, DEFAULT_RETAINED_HISTORY_MAX_RESPONSE_BYTES,
|
||||
DEFAULT_RETAINED_HISTORY_MAX_SCAN_BYTES, DEFAULT_RETAINED_HISTORY_MAX_SEGMENTS,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -978,7 +978,7 @@ pub fn project_session_snapshot(session_id: SessionId, log: &[LogEntry]) -> Sess
|
||||
project_session_snapshot_for_segment(session_id, None, log)
|
||||
}
|
||||
|
||||
fn project_session_snapshot_for_segment(
|
||||
pub(crate) fn project_session_snapshot_for_segment(
|
||||
session_id: SessionId,
|
||||
segment_id: Option<SegmentId>,
|
||||
log: &[LogEntry],
|
||||
|
||||
@@ -468,6 +468,23 @@ impl WorkerSessionStore {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Enumerate canonical Segment logs in ascending identity order without
|
||||
/// creating or migrating state. Unlike the general [`Store`] listing, this
|
||||
/// observation boundary rejects malformed names and non-regular files so a
|
||||
/// persisted Segment cannot be silently omitted from a public index.
|
||||
pub(crate) fn list_segments_read_only(
|
||||
&self,
|
||||
session_id: SessionId,
|
||||
) -> Result<Vec<SegmentId>, StoreError> {
|
||||
self.validate_retained_session(session_id)?;
|
||||
segment_log_paths(&self.root).map(|paths| {
|
||||
paths
|
||||
.into_iter()
|
||||
.map(|(segment_id, _)| segment_id)
|
||||
.collect()
|
||||
})
|
||||
}
|
||||
|
||||
pub fn segment_log_len(&self, segment_id: SegmentId) -> Result<u64, StoreError> {
|
||||
Ok(fs::metadata(self.log_path(segment_id))?.len())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user