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

Function read_parts

atomic-agent/src/transcript/opencode.rs:202–228  ·  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

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

Callers 1

read_turnFunction · 0.85

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected