MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / handle_fork_session

Method handle_fork_session

crates/opencode-tui/src/app/app.rs:2111–2147  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

2109 }
2110
2111 fn handle_fork_session(&mut self) {
2112 let Some(session_id) = self.current_session_id() else {
2113 self.alert_dialog.set_message("No active session to fork.");
2114 self.alert_dialog.open();
2115 return;
2116 };
2117 let session_ctx = self.context.session.read();
2118 let entries = session_ctx
2119 .messages
2120 .get(&session_id)
2121 .map(|msgs| {
2122 msgs.iter()
2123 .map(|m| {
2124 let role = match m.role {
2125 MessageRole::User => "user",
2126 MessageRole::Assistant => "assistant",
2127 MessageRole::System => "system",
2128 };
2129 let preview = m
2130 .content
2131 .chars()
2132 .take(60)
2133 .collect::<String>()
2134 .replace('\n', " ");
2135 ForkEntry {
2136 message_id: m.id.clone(),
2137 role: role.to_string(),
2138 preview,
2139 timestamp: m.created_at.format("%H:%M:%S").to_string(),
2140 }
2141 })
2142 .collect::<Vec<_>>()
2143 })
2144 .unwrap_or_default();
2145 drop(session_ctx);
2146 self.fork_dialog.open(session_id, entries);
2147 }
2148
2149 fn build_session_transcript(&self, session_id: &str) -> Option<String> {
2150 let session_ctx = self.context.session.read();

Callers 1

Calls 7

current_session_idMethod · 0.80
set_messageMethod · 0.80
readMethod · 0.80
replaceMethod · 0.80
openMethod · 0.45
getMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected