Skip to main content

zagens_runtime_adapters/persist/
context_reference.rs

1//! Durable context-reference metadata (session resume, HTTP runtime).
2//!
3//! Split from `tui::file_mention` so the HTTP sidecar does not depend on TUI widgets.
4
5use serde::{Deserialize, Serialize};
6
7/// Durable, compact metadata for a user-visible context reference.
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct ContextReference {
10    pub kind: ContextReferenceKind,
11    pub source: ContextReferenceSource,
12    /// Short badge for terminal display, e.g. `file`, `dir`, `image`.
13    pub badge: String,
14    /// Compact display label from the transcript, without the leading `@`.
15    pub label: String,
16    /// Resolved target path or URI-equivalent string.
17    pub target: String,
18    pub included: bool,
19    pub expanded: bool,
20    #[serde(default, skip_serializing_if = "Option::is_none")]
21    pub detail: Option<String>,
22}
23
24#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
25#[serde(rename_all = "snake_case")]
26pub enum ContextReferenceKind {
27    File,
28    Directory,
29    Missing,
30    Unsupported,
31    MediaMention,
32    MediaAttachment,
33}
34
35#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
36#[serde(rename_all = "snake_case")]
37pub enum ContextReferenceSource {
38    AtMention,
39    Attachment,
40}