MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / summarize

Function summarize

crates/opencode-session/src/summary.rs:203–229  ·  view source on GitHub ↗

Summarize a session: compute diffs and update session summary. This mirrors the TS `SessionSummary.summarize` which runs both `summarizeSession` and `summarizeMessage` in parallel.

(
    input: &SummarizeInput,
    messages: &[MessageWithParts],
    worktree: &std::path::Path,
    bus: Option<&Bus>,
)

Source from the content-addressed store, hash-verified

201/// This mirrors the TS `SessionSummary.summarize` which runs both
202/// `summarizeSession` and `summarizeMessage` in parallel.
203pub async fn summarize(
204 input: &SummarizeInput,
205 messages: &[MessageWithParts],
206 worktree: &std::path::Path,
207 bus: Option<&Bus>,
208) -> SessionSummaryData {
209 let diffs = clean_diffs(compute_diff(messages, worktree));
210
211 let summary = SessionSummaryData {
212 additions: diffs.iter().map(|d| d.additions).sum(),
213 deletions: diffs.iter().map(|d| d.deletions).sum(),
214 files: diffs.len() as u64,
215 diffs: diffs.clone(),
216 };
217
218 // Publish diff event if bus is available
219 if let Some(bus) = bus {
220 let diff_event = opencode_core::bus::define_event("session.diff");
221 let diff_data = serde_json::json!({
222 "sessionID": input.session_id,
223 "diff": diffs,
224 });
225 bus.publish(&diff_event, diff_data).await;
226 }
227
228 summary
229}
230
231fn session_diff_storage_key(session_id: &str) -> String {
232 format!("{}{}", SESSION_DIFF_STORAGE_KEY_PREFIX, session_id)

Callers 1

summarize_into_sessionFunction · 0.85

Calls 5

clean_diffsFunction · 0.85
compute_diffFunction · 0.85
define_eventFunction · 0.85
publishMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected