ObjectStackObjectStack

Conversation

Conversation protocol schemas

AI Conversation Memory Protocol

Multi-turn AI conversations with token budget management.

Enables context preservation, conversation history, and token optimization.

Source: packages/spec/src/ai/conversation.zod.ts

TypeScript Usage

import { CodeContent, ConversationAnalytics, ConversationContext, ConversationMessage, ConversationSession, ConversationSummary, FileContent, FunctionCall, ImageContent, MessageContent, MessageContentType, MessagePruningEvent, MessageRole, TextContent, TokenBudgetConfig, TokenBudgetStrategy, TokenUsageStats, ToolCall } from '@objectstack/spec/ai';
import type { CodeContent, ConversationAnalytics, ConversationContext, ConversationMessage, ConversationSession, ConversationSummary, FileContent, FunctionCall, ImageContent, MessageContent, MessageContentType, MessagePruningEvent, MessageRole, TextContent, TokenBudgetConfig, TokenBudgetStrategy, TokenUsageStats, ToolCall } from '@objectstack/spec/ai';

// Validate data
const result = CodeContent.parse(data);

CodeContent

Properties

PropertyTypeRequiredDescription
typestring
textstringCode snippet
languagestring
metadataRecord<string, any>optional

ConversationAnalytics

Properties

PropertyTypeRequiredDescription
sessionIdstring
totalMessagesinteger
userMessagesinteger
assistantMessagesinteger
systemMessagesinteger
totalTokensinteger
averageTokensPerMessagenumber
peakTokenUsageinteger
pruningEventsinteger
summarizationEventsinteger
tokensSavedByPruninginteger
tokensSavedBySummarizationinteger
durationnumberoptionalSession duration in seconds
firstMessageAtstringoptionalISO 8601 timestamp
lastMessageAtstringoptionalISO 8601 timestamp

ConversationContext

Properties

PropertyTypeRequiredDescription
sessionIdstringConversation session ID
userIdstringoptionalUser identifier
agentIdstringoptionalAI agent identifier
objectstringoptionalRelated object (e.g., "case", "project")
recordIdstringoptionalRelated record ID
scopeRecord<string, any>optionalAdditional context scope
systemMessagestringoptionalSystem prompt/instructions
metadataRecord<string, any>optional

ConversationMessage

Properties

PropertyTypeRequiredDescription
idstringUnique message ID
timestampstringISO 8601 timestamp
roleEnum<'system' | 'user' | 'assistant' | 'function' | 'tool'>
contentObject | Object | Object | Object[]Message content (multimodal array)
functionCallObjectoptionalLegacy function call
toolCallsObject[]optionalTool calls
toolCallIdstringoptionalTool call ID this message responds to
namestringoptionalName of the function/user
tokensObjectoptionalToken usage for this message
costnumberoptionalCost for this message in USD
pinnedbooleanPrevent removal during pruning
importancenumberoptionalImportance score for pruning
embeddingnumber[]optionalVector embedding for semantic search
metadataRecord<string, any>optional

ConversationSession

Properties

PropertyTypeRequiredDescription
idstringUnique session ID
namestringoptionalSession name/title
contextObject
modelIdstringoptionalAI model ID
tokenBudgetObject
messagesObject[]
tokensObjectoptional
totalTokensObjectoptionalTotal tokens across all messages
totalCostnumberoptionalTotal cost for this session in USD
statusEnum<'active' | 'paused' | 'completed' | 'archived'>
createdAtstringISO 8601 timestamp
updatedAtstringISO 8601 timestamp
expiresAtstringoptionalISO 8601 timestamp
metadataRecord<string, any>optional

ConversationSummary

Properties

PropertyTypeRequiredDescription
summarystringConversation summary
keyPointsstring[]optionalKey discussion points
originalTokensintegerOriginal token count
summaryTokensintegerSummary token count
tokensSavedintegerTokens saved
messageRangeObjectRange of messages summarized
generatedAtstringISO 8601 timestamp
modelIdstringoptionalModel used for summarization

FileContent

Properties

PropertyTypeRequiredDescription
typestring
fileUrlstringFile attachment URL
mimeTypestringMIME type
fileNamestringoptional
metadataRecord<string, any>optional

FunctionCall

Properties

PropertyTypeRequiredDescription
namestringFunction name
argumentsstringJSON string of function arguments
resultstringoptionalFunction execution result

ImageContent

Properties

PropertyTypeRequiredDescription
typestring
imageUrlstringImage URL
detailEnum<'low' | 'high' | 'auto'>
metadataRecord<string, any>optional

MessageContent

Union Options

This schema accepts one of the following structures:

Option 1

Type: text

Properties

PropertyTypeRequiredDescription
typestring
textstringText content
metadataRecord<string, any>optional

Option 2

Type: image

Properties

PropertyTypeRequiredDescription
typestring
imageUrlstringImage URL
detailEnum<'low' | 'high' | 'auto'>
metadataRecord<string, any>optional

Option 3

Type: file

Properties

PropertyTypeRequiredDescription
typestring
fileUrlstringFile attachment URL
mimeTypestringMIME type
fileNamestringoptional
metadataRecord<string, any>optional

Option 4

Type: code

Properties

PropertyTypeRequiredDescription
typestring
textstringCode snippet
languagestring
metadataRecord<string, any>optional


MessageContentType

Allowed Values

  • text
  • image
  • file
  • code
  • structured

MessagePruningEvent

Properties

PropertyTypeRequiredDescription
timestampstringEvent timestamp
prunedMessagesObject[]
tokensFreedinteger
messagesRemovedinteger
remainingTokensinteger
remainingMessagesinteger

MessageRole

Allowed Values

  • system
  • user
  • assistant
  • function
  • tool

TextContent

Properties

PropertyTypeRequiredDescription
typestring
textstringText content
metadataRecord<string, any>optional

TokenBudgetConfig

Properties

PropertyTypeRequiredDescription
maxTokensintegerMaximum total tokens
maxPromptTokensintegeroptionalMax tokens for prompt
maxCompletionTokensintegeroptionalMax tokens for completion
reserveTokensintegerReserve tokens for system messages
bufferPercentagenumberBuffer percentage (0.1 = 10%)
strategyEnum<'fifo' | 'importance' | 'semantic' | 'sliding_window' | 'summary'>
slidingWindowSizeintegeroptionalNumber of recent messages to keep
minImportanceScorenumberoptionalMinimum importance to keep
semanticThresholdnumberoptionalSemantic similarity threshold
enableSummarizationbooleanEnable context summarization
summarizationThresholdintegeroptionalTrigger summarization at N tokens
summaryModelstringoptionalModel ID for summarization
warnThresholdnumberWarn at % of budget (0.8 = 80%)

TokenBudgetStrategy

Allowed Values

  • fifo
  • importance
  • semantic
  • sliding_window
  • summary

TokenUsageStats

Properties

PropertyTypeRequiredDescription
promptTokensinteger
completionTokensinteger
totalTokensinteger
budgetLimitinteger
budgetUsedinteger
budgetRemaininginteger
budgetPercentagenumberUsage as percentage of budget
messageCountinteger
prunedMessageCountinteger
summarizedMessageCountinteger

ToolCall

Properties

PropertyTypeRequiredDescription
idstringTool call ID
typeEnum<'function'>
functionObject

On this page