Skip to content

ema / ema / ContextManager

Class: ContextManager

Defined in: agent.ts:160

Manages conversation context and message history for the agent.

Constructors

Constructor

ts
new ContextManager(
   systemPrompt, 
   llmClient, 
   tools, 
   workspaceDir, 
   tokenLimit, 
   events): ContextManager;

Defined in: agent.ts:172

Parameters

systemPrompt

string

llmClient

LLMClient

tools

Tool[]

workspaceDir

string

tokenLimit

number = 80000

events

AgentEventsEmitter

Returns

ContextManager

Properties

apiTotalTokens

ts
apiTotalTokens: number;

Defined in: agent.ts:169


events

ts
events: AgentEventsEmitter;

Defined in: agent.ts:165


llmClient

ts
llmClient: LLMClient;

Defined in: agent.ts:161


messages

ts
messages: Message[];

Defined in: agent.ts:168


skipNextTokenCheck

ts
skipNextTokenCheck: boolean;

Defined in: agent.ts:170


systemPrompt

ts
systemPrompt: string;

Defined in: agent.ts:163


tokenLimit

ts
tokenLimit: number;

Defined in: agent.ts:164


toolDict

ts
toolDict: Map<string, Tool>;

Defined in: agent.ts:167


tools

ts
tools: Tool[];

Defined in: agent.ts:166


workspaceDir

ts
workspaceDir: string;

Defined in: agent.ts:162

Accessors

context

Get Signature

ts
get context(): Context;

Defined in: agent.ts:209

Get current conversation context (messages and tools).

Returns

Context

Methods

addAssistantMessage()

ts
addAssistantMessage(response): void;

Defined in: agent.ts:219

Add an assistant message to context.

Parameters

response

LLMResponse

Returns

void


addToolMessage()

ts
addToolMessage(
   result, 
   toolCallId, 
   name): void;

Defined in: agent.ts:229

Add a tool result message to context.

Parameters

result

ToolResult

toolCallId

string

name

string

Returns

void


addUserMessage()

ts
addUserMessage(content): void;

Defined in: agent.ts:214

Add a user message to context.

Parameters

content

string

Returns

void


createSummary()

ts
createSummary(messages, roundNum): Promise<string>;

Defined in: agent.ts:448

Create summary for one execution round.

Parameters

messages

Message[]

roundNum

number

Returns

Promise<string>


estimateTokens()

ts
estimateTokens(): number;

Defined in: agent.ts:247

Accurately calculate token count for message history using tiktoken.

Returns

number


estimateTokensFallback()

ts
estimateTokensFallback(): number;

Defined in: agent.ts:289

Fallback token estimation method (when tiktoken is unavailable).

Returns

number


getHistory()

ts
getHistory(): Message[];

Defined in: agent.ts:516

Get message history (shallow copy).

Returns

Message[]


summarizeMessages()

ts
summarizeMessages(): Promise<void>;

Defined in: agent.ts:328

Check and summarize message history if token limit exceeded.

Strategy (Agent mode):

  • Keep all user messages (these are user intents)
  • Summarize content between each user-user pair (agent execution process)
  • If last round is still executing (has agent/tool messages but no next user), also summarize
  • Structure: system -> user1 -> summary1 -> user2 -> summary2 -> user3 -> summary3 (if executing)

Summary is triggered when EITHER:

  • Local token estimation exceeds limit
  • API reported total_tokens exceeds limit

Returns

Promise<void>


updateApiTokens()

ts
updateApiTokens(response): void;

Defined in: agent.ts:240

Update API reported token count.

Parameters

response

LLMResponse

Returns

void