(meta: &CodexMeta)
| 111 | } |
| 112 | |
| 113 | pub(super) fn session_metadata_json(meta: &CodexMeta) -> Option<String> { |
| 114 | let mut metadata = serde_json::Map::new(); |
| 115 | metadata.insert( |
| 116 | "source".to_string(), |
| 117 | Value::String("codex_rollout".to_string()), |
| 118 | ); |
| 119 | if let Some(thread_source) = &meta.thread_source { |
| 120 | metadata.insert( |
| 121 | "thread_source".to_string(), |
| 122 | Value::String(thread_source.clone()), |
| 123 | ); |
| 124 | } |
| 125 | if let Some(agent_role) = &meta.agent_role { |
| 126 | metadata.insert("agent_role".to_string(), Value::String(agent_role.clone())); |
| 127 | } |
| 128 | if let Some(agent_nickname) = &meta.agent_nickname { |
| 129 | metadata.insert( |
| 130 | "agent_nickname".to_string(), |
| 131 | Value::String(agent_nickname.clone()), |
| 132 | ); |
| 133 | } |
| 134 | append_location_metadata( |
| 135 | &mut metadata, |
| 136 | CODEX_SESSION_LOCATION_KEYS, |
| 137 | TranscriptLocation::new(Some(&meta.cwd), "session_meta"), |
| 138 | ); |
| 139 | insert_git_metadata(&mut metadata, meta.git.as_ref()); |
| 140 | serde_json::to_string(&Value::Object(metadata)).ok() |
| 141 | } |
| 142 | |
| 143 | pub(super) fn annotate_message( |
| 144 | message: &mut SessionMessageRecord, |
no test coverage detected