Member Junction
    Preparing search index...

    One page of a conversation's transcript plus the peripheral data its rows need.

    Deliberately NOT a ConversationDetailCache — that type is the FULL-history contract and is what GetAgentContextWindow consumes. Keeping the shapes distinct is what stops a window from being written into _detailCache by accident.

    interface DetailWindowLoadResult {
        AgentRunsByDetailId: Map<string, MJAIAgentRunEntity>;
        ArtifactsByDetailId: Map<string, ArtifactJSON[]>;
        Details: MJConversationDetailEntity[];
        Failed: boolean;
        HasMoreAbove: boolean;
        NewestSequence: number;
        OldestSequence: number;
        RatingsByDetailId: Map<string, RatingJSON[]>;
        UserAvatars: Map<string, UserAvatarInfo>;
    }
    Index

    Properties

    AgentRunsByDetailId: Map<string, MJAIAgentRunEntity>

    Agent runs keyed by conversation detail ID.

    ArtifactsByDetailId: Map<string, ArtifactJSON[]>

    Parsed artifacts keyed by conversation detail ID.

    The window's rows, chronological by Sequence.

    Failed: boolean

    True when a read underlying this window FAILED, as opposed to returning nothing.

    Without this the two are indistinguishable, and the difference matters more than it looks: HasMoreAbove: false from a failed read means "you have reached the start of the conversation", so a consumer folds a transport blip into its cursor and stops offering to page. Nothing later restores it. A failed read must leave the caller's paging state alone, which it can only do if it can tell the two apart.

    Set when the row read failed, when the older-rows probe failed, or when a widening retry failed. Peripheral failures do NOT set it — those already degrade to empty maps and the transcript still renders.

    HasMoreAbove: boolean

    True when at least one row exists below OldestSequence.

    NewestSequence: number

    Sequence of the newest loaded row. Used to detect live appends.

    OldestSequence: number

    Sequence of the oldest loaded row — the next older fetch's exclusive bound.

    RatingsByDetailId: Map<string, RatingJSON[]>

    Ratings keyed by conversation detail ID.

    UserAvatars: Map<string, UserAvatarInfo>

    User avatars keyed by UserID.