Docs
GuidesExamplesWebsite GitHub
OverviewGetting Started
AgentConversationsConfigurationAuthenticationLLM ProvidersTools
Data SourcesSQLitePostgreSQLLocal WorkspaceCatalogQueryingPostgreSQL UpdatesRemote MCP Reads
ArtifactsDurable JobsScheduled RoutinesInbox and Deliveries
MemorySemanticsSkillsReviewed Learning
Terminal and CLIObservation EventsError HandlingEvaluation
Daita / Docs
OverviewGetting Started
AgentConversationsConfigurationAuthenticationLLM ProvidersTools
Data SourcesSQLitePostgreSQLLocal WorkspaceCatalogQueryingPostgreSQL UpdatesRemote MCP Reads
ArtifactsDurable JobsScheduled RoutinesInbox and Deliveries
MemorySemanticsSkillsReviewed Learning
Terminal and CLIObservation EventsError HandlingEvaluation

Daita agents / guide

Conversations and Transcripts

Continue bounded conversations while retaining one exact immutable transcript and terminal result for every run.

#Conversation IDs

Every foreground run belongs to a conversation. Omit conversation_id to create one, then reuse the returned ID:

python
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 or resumable session. Daita projects at most eight 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

A new conversation that supplies source_id pins that source:

python
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. Start a new conversation to change source scope. files_only=True creates or continues a Files-only turn without granting source or MCP access.

#Inspect Runs

python
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

python
transcript = await agent.transcript(first.run_id)

The transcript contains only the canonical user, assistant, and ordered tool messages from that run. Prior conversations, memory, skills, catalog facts, and machine execution scope are model-request context, not copied transcript history.

Machine-originated job follow-ups and routine occurrences use the same loop and exact transcript records with an immutable ExecutionScope. They cannot inherit ambient authority from a conversation.

#Clear Conversations

python
deleted = await agent.clear_conversations()

Clearing removes ordinary terminal transcripts, learning candidate records, and review stamps. It preserves approved memory, user profile, semantic annotations, and skills. The minimum run state still required by active jobs, follow-ups, or routine occurrences remains rooted, as do artifacts referenced by durable job results or retained deliveries.

The terminal requires confirmation:

bash
daita conversations clear atlas --yes

Copies already delivered to user-owned directories are never deleted.

PreviousAgent
NextConfiguration

On this page

Conversation IDsSource PinningInspect RunsPer-Run TranscriptClear Conversations