Query and List Conversations
User Intent
"I want to list all my conversations or find a specific conversation by name"
Operation
SDK Method:
graphlit.queryConversations()orgraphlit.getConversation()GraphQL:
queryConversationsorgetConversationqueryEntity Type: Conversation
Common Use Cases: List conversations, find conversation by name, retrieve conversation history, manage conversations
TypeScript (Canonical)
import { Graphlit } from 'graphlit-client';
import { EntityState } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Query all conversations
const allConversations = await graphlit.queryConversations();
console.log(`Total conversations: ${allConversations.conversations.results.length}`);
allConversations.conversations.results.forEach(conv => {
console.log(`- ${conv.name} (${conv.state})`);
console.log(` Messages: ${conv.messages?.length || 0}`);
});
// Search by name
const searchResults = await graphlit.queryConversations({
search: 'Support Chat'
});
console.log(`\nFound ${searchResults.conversations.results.length} matching conversations`);
// Get specific conversation with full details
const conversationId = 'conversation-id-here';
const conversation = await graphlit.getConversation(conversationId);
console.log(`\nConversation: ${conversation.conversation.name}`);
console.log(`Created: ${conversation.conversation.creationDate}`);
console.log(`Messages: ${conversation.conversation.messages?.length || 0}`);
// Print message history
conversation.conversation.messages?.forEach((msg, index) => {
console.log(`\n${index + 1}. ${msg.role}:`);
console.log(msg.message);
});Parameters
queryConversations (Optional Filter)
search(string): Search by conversation namestates(EntityState[]): Filter by stateENABLED,DISABLED
getConversation (Required)
id(string): Conversation ID
Response
queryConversations
{
conversations: {
results: Conversation[];
}
}
interface Conversation {
id: string;
name: string;
state: EntityState;
creationDate: Date;
messages?: Message[];
specification?: Specification;
}getConversation
{
conversation: {
id: string;
name: string;
state: EntityState;
creationDate: Date;
messages: Message[];
specification?: Specification;
}
}
interface Message {
role: MessageRole; // USER, ASSISTANT, SYSTEM
message: string;
timestamp: Date;
citations?: Citation[];
}Developer Hints
Conversation History Access
Important: Only getConversation() returns full message history. queryConversations() returns summaries.
// Query - NO message history
const conversations = await graphlit.queryConversations();
conversations.conversations.results.forEach(conv => {
console.log(conv.name); // Available
console.log(conv.messages); // Usually undefined or partial
});
// Get - FULL message history
const conversation = await graphlit.getConversation(conversationId);
conversation.conversation.messages?.forEach(msg => {
console.log(msg.message); // Full history
});Find Conversation by Name
// Search for conversation
const results = await graphlit.queryConversations({
search: 'Customer Support'
});
if (results.conversations.results.length > 0) {
const conv = results.conversations.results[0];
console.log(`Found: ${conv.name} (${conv.id})`);
} else {
console.log('Conversation not found');
}Resume Conversation
// Find existing conversation
const conversations = await graphlit.queryConversations({
search: 'My Chat'
});
let conversationId: string;
if (conversations.conversations.results.length > 0) {
// Resume existing
conversationId = conversations.conversations.results[0].id;
console.log('Resuming existing conversation');
} else {
// Create new
const newConv = await graphlit.createConversation({
name: 'My Chat'
});
conversationId = newConv.createConversation.id;
console.log('Created new conversation');
}
// Continue conversation
await graphlit.promptConversation({
prompt: 'Hello!',
id: conversationId
});Conversation Statistics
const conversations = await graphlit.queryConversations();
// Count by state
const active = conversations.conversations.results.filter(
c => c.state === EntityState.Enabled
).length;
console.log(`Active conversations: ${active} / ${conversations.conversations.results.length}`);
// Find most recent
const sorted = conversations.conversations.results.sort(
(a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime()
);
console.log('\nMost recent conversations:');
sorted.slice(0, 5).forEach(conv => {
console.log(`- ${conv.name} (${new Date(conv.creationDate).toLocaleDateString()})`);
});Variations
1. List All Conversations
Get all conversations:
const conversations = await graphlit.queryConversations();
console.log(`You have ${conversations.conversations.results.length} conversations`);2. Search by Name
Find specific conversations:
const results = await graphlit.queryConversations({
search: 'Support'
});
console.log('Support conversations:');
results.conversations.results.forEach(conv => {
console.log(`- ${conv.name}`);
});3. Get Full Conversation History
Retrieve with messages:
const conversation = await graphlit.getConversation(conversationId);
console.log(`\nConversation: ${conversation.conversation.name}`);
console.log(`Total messages: ${conversation.conversation.messages?.length || 0}\n`);
conversation.conversation.messages?.forEach((msg, index) => {
console.log(`${index + 1}. [${msg.role}]:`);
console.log(msg.message);
console.log('---');
});4. Filter Active Conversations
Only enabled conversations:
const active = await graphlit.queryConversations({
states: [EntityState.Enabled]
});
console.log(`Active conversations: ${active.conversations.results.length}`);5. Recent Conversations
Sort by creation date:
const conversations = await graphlit.queryConversations();
const recent = conversations.conversations.results
.sort((a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime())
.slice(0, 10);
console.log('Last 10 conversations:');
recent.forEach((conv, index) => {
console.log(`${index + 1}. ${conv.name} - ${new Date(conv.creationDate).toLocaleDateString()}`);
});6. Conversation with Citations
Get conversation with citation tracking:
const conversation = await graphlit.getConversation(conversationId);
console.log(`Conversation: ${conversation.conversation.name}\n`);
conversation.conversation.messages?.forEach((msg, index) => {
if (msg.role === MessageRole.Assistant) {
console.log(`Assistant Response ${index + 1}:`);
console.log(msg.message);
if (msg.citations && msg.citations.length > 0) {
console.log('\nCitations:');
msg.citations.forEach((citation, citIndex) => {
console.log(` [${citIndex + 1}] ${citation.content?.name}`);
});
}
console.log('---\n');
}
});Common Issues
Issue: Conversation not found error
Solution: Verify conversation ID is correct. Conversation may have been deleted. Use queryConversations() to list all.
Issue: No message history returned
Solution: Use getConversation() not queryConversations(). Only getConversation() includes full messages.
Issue: Search returns no results
Solution: Search is case-sensitive. Try partial matches. Use queryConversations() without filter to see all.
Issue: Old conversations appearing
Solution: Conversations persist indefinitely. Use deleteConversation() to clean up old ones.
Production Example
Conversation history viewer:
// List all conversations with details
const conversations = await graphlit.queryConversations();
console.log('=== CONVERSATION HISTORY ===\n');
for (const conv of conversations.conversations.results) {
// Get full details
const fullConv = await graphlit.getConversation(conv.id);
const messageCount = fullConv.conversation.messages?.length || 0;
const lastMessage = fullConv.conversation.messages?.[messageCount - 1];
console.log(`📝 ${fullConv.conversation.name}`);
console.log(` ID: ${fullConv.conversation.id}`);
console.log(` Created: ${new Date(fullConv.conversation.creationDate).toLocaleDateString()}`);
console.log(` Messages: ${messageCount}`);
console.log(` State: ${fullConv.conversation.state}`);
if (lastMessage) {
console.log(` Last message: ${lastMessage.message.substring(0, 50)}...`);
}
console.log('');
}Resume or create conversation:
// Try to find existing conversation by name
async function getOrCreateConversation(name: string): Promise<string> {
const results = await graphlit.queryConversations({
search: name
});
if (results.conversations.results.length > 0) {
const existing = results.conversations.results[0];
console.log(`📌 Resuming conversation: ${existing.name}`);
return existing.id;
}
// Create new
const newConv = await graphlit.createConversation({
name: name
});
console.log(`✨ Created new conversation: ${name}`);
return newConv.createConversation.id;
}
// Usage
const conversationId = await getOrCreateConversation('Customer Support Chat');
// Continue conversation
const answer = await graphlit.promptConversation({
prompt: 'How can I help you today?',
id: conversationId
});
console.log(answer.message.message);Conversation management dashboard:
const conversations = await graphlit.queryConversations();
console.log('=== CONVERSATION DASHBOARD ===\n');
// Statistics
const total = conversations.conversations.results.length;
const active = conversations.conversations.results.filter(
c => c.state === EntityState.Enabled
).length;
console.log(`Total Conversations: ${total}`);
console.log(`Active: ${active}`);
console.log(`Disabled: ${total - active}\n`);
// Recent activity
const sorted = conversations.conversations.results
.sort((a, b) => new Date(b.creationDate).getTime() - new Date(a.creationDate).getTime())
.slice(0, 5);
console.log('Recent Conversations:');
for (const conv of sorted) {
const fullConv = await graphlit.getConversation(conv.id);
const msgCount = fullConv.conversation.messages?.length || 0;
console.log(`\n${conv.name}`);
console.log(` Messages: ${msgCount}`);
console.log(` Created: ${new Date(conv.creationDate).toLocaleDateString()}`);
}Last updated
Was this helpful?