Daita agents / guide
Conversations and Transcripts
Continue bounded conversations while retaining an exact immutable transcript for every run.
#Conversation IDs
Every run belongs to a conversation. Omit conversation_id to create one, then reuse the returned ID:
first = await agent.run("Show revenue by region")
second = await agent.run(
"Now compare that with the prior quarter",
conversation_id=first.conversation_id,
)Conversation continuity is a bounded cold projection of completed runs, not a live session runtime. Daita projects at most:
- 8 prior runs;
- 40 messages; and
- 24,000 UTF-8 bytes.
Older context falls outside the projection rather than being summarized by another model call.
#Source Pinning
When a new conversation begins with an explicit source_id, Daita pins that source to the conversation:
first = await agent.run(
"Summarize open orders",
source_id=orders_source.id,
)
follow_up = await agent.run(
"Group them by region",
conversation_id=first.conversation_id,
)An explicit conflicting source on a later turn is rejected. Use a new conversation to switch source scope.
#Inspect Conversation Runs
exists = await agent.conversation_exists(first.conversation_id)
runs = await agent.conversation_runs(first.conversation_id)
for item in runs:
print(item.turn_index, item.transcript.run.message, item.result)Each ConversationRun contains its zero-based turn index, exact Transcript, and terminal LoopExit when available.
#Per-Run Transcript
transcript = await agent.transcript(first.run_id)The transcript contains only canonical messages from that run. Context projected from prior runs, memory, skills, and catalog facts is request context—not copied transcript history.
#Clear Conversations
deleted = await agent.clear_conversations()Clearing conversations deletes transcripts, learning candidates, and review stamps. Separately approved memory, user profile, semantic annotations, and skills are preserved.
The bundled terminal requires confirmation:
daita conversations clear atlas --yes