fix(console): reconcile history around lineage anchors
This commit is contained in:
@@ -842,6 +842,16 @@ pub struct SessionConversationTurn {
|
||||
pub entries: Vec<SessionSnapshotEntry>,
|
||||
}
|
||||
|
||||
/// The immediate parent lineage and the stable real-user boundary adopted from it.
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
|
||||
#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
|
||||
pub struct SessionHistoryLineageBoundary {
|
||||
pub lineage_id: String,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub adopted_through_turn_id: Option<String>,
|
||||
}
|
||||
|
||||
/// Bounded backward page over the adopted conversation lineage.
|
||||
///
|
||||
/// Turns remain chronological within a page. `next_cursor` is an opaque,
|
||||
@@ -859,6 +869,10 @@ pub struct SessionHistoryPage {
|
||||
/// cursor with this page's boundary.
|
||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||
pub compact_ancestor_lineage_ids: Vec<String>,
|
||||
/// Immediate parent relationship used to retain only the adopted prefix
|
||||
/// across fork/rewind refreshes that have no newest-page overlap.
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub parent_lineage: Option<SessionHistoryLineageBoundary>,
|
||||
pub turns: Vec<SessionConversationTurn>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub next_cursor: Option<String>,
|
||||
|
||||
@@ -12,10 +12,10 @@ use crate::{
|
||||
PasteArtifactAvailability, PasteArtifactMediaType, PasteArtifactRef, PendingSubmissionSummary,
|
||||
PendingSubmissionsSnapshot, Permission, RewindSummary, RewindTarget, RewindTargetId, RunResult,
|
||||
ScopeRule, Segment, SessionContentPart, SessionConversationTurn, SessionEntryProvenance,
|
||||
SessionHistoryPage, SessionMessageRole, SessionSnapshot, SessionSnapshotEntry,
|
||||
SessionSnapshotEntryData, SessionToolAttachment, SubmissionDisposition, SymlinkPolicy,
|
||||
ToolResultDisposition, TurnResult, UploadedFileAvailability, UploadedFileRef, WorkerBusyState,
|
||||
WorkerCommandAcknowledgement, WorkerCommandDisposition, WorkerCommandEnvelope,
|
||||
SessionHistoryLineageBoundary, SessionHistoryPage, SessionMessageRole, SessionSnapshot,
|
||||
SessionSnapshotEntry, SessionSnapshotEntryData, SessionToolAttachment, SubmissionDisposition,
|
||||
SymlinkPolicy, ToolResultDisposition, TurnResult, UploadedFileAvailability, UploadedFileRef,
|
||||
WorkerBusyState, WorkerCommandAcknowledgement, WorkerCommandDisposition, WorkerCommandEnvelope,
|
||||
WorkerCommandKind, WorkerEvent, WorkerMaintenanceState, WorkerRunState, WorkerState,
|
||||
WorkerStateSnapshot, WorkerStatus,
|
||||
subscription::{
|
||||
@@ -106,6 +106,7 @@ pub fn generated_protocol_types() -> String {
|
||||
push_decl::<SessionSnapshotEntryData>(&cfg, &mut output);
|
||||
push_decl::<SessionSnapshotEntry>(&cfg, &mut output);
|
||||
push_decl::<SessionConversationTurn>(&cfg, &mut output);
|
||||
push_decl::<SessionHistoryLineageBoundary>(&cfg, &mut output);
|
||||
push_decl::<SessionHistoryPage>(&cfg, &mut output);
|
||||
push_decl::<PendingSubmissionSummary>(&cfg, &mut output);
|
||||
push_decl::<PendingSubmissionsSnapshot>(&cfg, &mut output);
|
||||
|
||||
Reference in New Issue
Block a user