MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / read_parts

Function read_parts

atomic-agent/src/transcript/opencode.rs:199–225  ·  view source on GitHub ↗

Content parts of the session in chronological order: `(message_id, data)`.

(conn: &Connection, session_id: &str)

Source from the content-addressed store, hash-verified

197/// Content parts of the session in chronological order:
198/// `(message_id, data)`.
199fn read_parts(conn: &Connection, session_id: &str) -> Option<Vec<(String, Value)>> {
200 let mut stmt = conn
201 .prepare(
202 "SELECT message_id, data FROM part \
203 WHERE session_id = ?1 ORDER BY time_created, id",
204 )
205 .ok()?;
206 let rows = stmt
207 .query_map([session_id], |row| {
208 Ok((row.get::<_, String>(0)?, row.get::<_, String>(1)?))
209 })
210 .ok()?;
211
212 let mut out = Vec::new();
213 for row in rows {
214 match row {
215 Ok((message_id, data)) => match serde_json::from_str::<Value>(&data) {
216 Ok(v) => out.push((message_id, v)),
217 Err(e) => log::debug!("opencode store: skipping unparseable part: {}", e),
218 },
219 Err(e) => {
220 log::debug!("opencode store: skipping part row: {}", e);
221 }
222 }
223 }
224 Some(out)
225}
226
227/// Fold messages and parts into [`TurnData`].
228///

Callers 1

read_turnFunction · 0.85

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected