FunctionsAgents

Memory

ai-research-agent / agents/memory

MemoryAgent

Defined in: src/agents/memory.js:630

Enhanced Memory Agent with better error handling and features

Features:

  • Rate limiting
  • Multiple LLM provider support
  • Health monitoring
  • Conversation management
  • Memory analytics

Constructors

Constructor

new MemoryAgent(
   userId: string, 
   db: any, 
   options: object): MemoryAgent;

Defined in: src/agents/memory.js:644

Initialize memory agent

Parameters
ParameterTypeDescription

userId

string

User identifier

db

any

Database connection

options

{ defaultApiKey: string; defaultModel: string; defaultProvider: string; memoryOptions: any; providers: any; rateLimit: any; }

Configuration options

options.defaultApiKey

string

Default API key

options.defaultModel

string

Default model

options.defaultProvider

string

Default LLM provider

options.memoryOptions

any

Memory system options

options.providers

any

LLM provider configurations

options.rateLimit

any

Rate limiting configuration

Returns

MemoryAgent

Properties

analytics

analytics: object;

Defined in: src/agents/memory.js:669

NameTypeDefault valueDefined in

averageResponseTime

number

0

src/agents/memory.js:672

errorCount

number

0

src/agents/memory.js:673

sessionStartTime

number

src/agents/memory.js:674

totalMessages

number

0

src/agents/memory.js:670

totalTokens

number

0

src/agents/memory.js:671

conversationHistory

conversationHistory: any[];

Defined in: src/agents/memory.js:666

defaultApiKey

defaultApiKey: string;

Defined in: src/agents/memory.js:651

defaultModel

defaultModel: string;

Defined in: src/agents/memory.js:652

defaultProvider

defaultProvider: string;

Defined in: src/agents/memory.js:650

memory

memory: SimpleMemory;

Defined in: src/agents/memory.js:649

providers

providers: any;

Defined in: src/agents/memory.js:662

rateLimitConfig

rateLimitConfig: any;

Defined in: src/agents/memory.js:656

rateLimiter

rateLimiter: Map<any, any>;

Defined in: src/agents/memory.js:655

sessionId

sessionId: string;

Defined in: src/agents/memory.js:665

Methods

buildPrompt()

buildPrompt(
   message: any, 
   memoryContext: any, 
   options: any): string;

Defined in: src/agents/memory.js:863

Build enhanced prompt with context

Parameters
ParameterType

message

any

memoryContext

any

options

any

Returns

string

chat()

chat(message: string, options: any): Promise<any>;

Defined in: src/agents/memory.js:757

Main chat method with comprehensive error handling

Parameters
ParameterTypeDescription

message

string

User message

options

any

Chat options

Returns

Promise<any>

  • Chat response
Example
const response = await agent.chat("Hello, I'm John", {
  provider: 'groq',
  model: 'mixtral-8x7b-32768',
  temperature: 0.7,
  systemPrompt: 'You are a helpful assistant.'
});

if (response.success) {
  console.log('Response:', response.content);
  console.log('Memory context:', response.memoryContext);
  console.log('Tokens used:', response.tokensUsed);
} else {
  console.error('Error:', response.error);
}

checkRateLimit()

checkRateLimit(
   key: string, 
   maxRequests: number, 
   windowMs: number): boolean;

Defined in: src/agents/memory.js:713

Rate limiting check with sliding window

Parameters
ParameterTypeDefault valueDescription

key

string

undefined

Rate limit key

maxRequests

number

null

Maximum requests per window

windowMs

number

null

Window size in milliseconds

Returns

boolean

  • Whether request is allowed

forceStoreSummary()

forceStoreSummary(): Promise<boolean>;

Defined in: src/agents/memory.js:955

Force store summary of current conversation

Returns

Promise<boolean>

generateResponse()

generateResponse(prompt: any, options: any): Promise<any>;

Defined in: src/agents/memory.js:837

Generate LLM response with timeout and error handling

Parameters
ParameterType

prompt

any

options

any

Returns

Promise<any>

generateSessionId()

generateSessionId(): string;

Defined in: src/agents/memory.js:701

Generate unique session ID

Returns

string

getAnalytics()

getAnalytics(): object;

Defined in: src/agents/memory.js:990

Get analytics and performance metrics

Returns

object

NameTypeDefault valueDefined in

averageResponseTime

number

0

src/agents/memory.js:672

errorCount

number

0

src/agents/memory.js:673

memory

{ cacheHits: number; cacheMisses: number; cacheSize: number; errors: number; isProcessing: boolean; recentMessagesCount: number; summarizations: number; vectorSearches: number; }

src/agents/memory.js:993

sessionId

string

src/agents/memory.js:994

sessionStartTime

number

src/agents/memory.js:674

totalMessages

number

0

src/agents/memory.js:670

totalTokens

number

0

src/agents/memory.js:671

uptime

number

src/agents/memory.js:995

getDefaultProviders()

getDefaultProviders(): object;

Defined in: src/agents/memory.js:681

Get default LLM providers

Returns

object

NameTypeDefined in

groq()

(apiKey: any, model: any, temperature: any) => object

src/agents/memory.js:683

openai()

(apiKey: any, model: any, temperature: any) => object

src/agents/memory.js:689

getMemories()

getMemories(
   query: string, 
   limit: number, 
   options: any): Promise<any[]>;

Defined in: src/agents/memory.js:948

Get memories with filtering

Parameters
ParameterTypeDefault valueDescription

query

string

''

Search query

limit

number

10

Maximum results

options

any

{}

Search options

Returns

Promise<any[]>

  • Memories
Example
// Get all work-related memories
const workMemories = await agent.getMemories('', 20, { memoryType: 'work' });

// Search for meeting memories
const meetingMemories = await agent.getMemories('meeting', 10);

healthCheck()

healthCheck(): Promise<any>;

Defined in: src/agents/memory.js:964

Health check for the agent

Returns

Promise<any>

  • Health status

remember()

remember(
   fact: string, 
   importance: number, 
   category: string, 
   metadata: any): Promise<string>;

Defined in: src/agents/memory.js:920

Remember a fact manually

Parameters
ParameterTypeDefault valueDescription

fact

string

undefined

Fact to remember

importance

number

1

Importance score

category

string

MEMORY_TYPES.MANUAL

Memory category

metadata

any

{}

Additional metadata

Returns

Promise<string>

  • Memory ID
Example
await agent.remember("User prefers meetings in the morning", 8, 'preference', {
  source: 'manual',
  confidence: 0.9
});

resetSession()

resetSession(): void;

Defined in: src/agents/memory.js:1002

Reset session and clear conversation history

Returns

void

updateAnalytics()

updateAnalytics(tokensUsed: any, responseTime: any): void;

Defined in: src/agents/memory.js:893

Update analytics

Parameters
ParameterType

tokensUsed

any

responseTime

any

Returns

void


SimpleMemory

Defined in: src/agents/memory.js:56

Simple Memory Class - Core memory management functionality

Features:

  • Message deduplication
  • Automatic summarization
  • Vector-based relevance search
  • Caching with TTL
  • Batch processing
  • Conflict resolution

Constructors

Constructor

new SimpleMemory(
   userId: string, 
   db: any, 
   options: object): SimpleMemory;

Defined in: src/agents/memory.js:69

Initialize memory system for a user

Parameters
ParameterTypeDescription

userId

string

Unique user identifier

db

any

Database connection

options

{ cacheExpiry: number; enableAutoSummarization: boolean; enableVectorSearch: boolean; maxMemories: number; summaryThreshold: number; }

Configuration options

options.cacheExpiry

number

Cache TTL in milliseconds

options.enableAutoSummarization

boolean

Enable auto-summarization

options.enableVectorSearch

boolean

Enable vector-based search

options.maxMemories

number

Maximum memories to store

options.summaryThreshold

number

Messages before auto-summarization

Returns

SimpleMemory

Properties

batchSize

batchSize: any;

Defined in: src/agents/memory.js:79

cacheExpiry

cacheExpiry: number;

Defined in: src/agents/memory.js:78

db

db: any;

Defined in: src/agents/memory.js:75

enableAutoSummarization

enableAutoSummarization: boolean;

Defined in: src/agents/memory.js:84

enableVectorSearch

enableVectorSearch: boolean;

Defined in: src/agents/memory.js:83

isProcessing

isProcessing: boolean;

Defined in: src/agents/memory.js:89

maxMemories

maxMemories: number;

Defined in: src/agents/memory.js:76

memoryCache

memoryCache: Map<any, any>;

Defined in: src/agents/memory.js:88

metrics

metrics: object;

Defined in: src/agents/memory.js:93

NameTypeDefault valueDefined in

cacheHits

number

0

src/agents/memory.js:94

cacheMisses

number

0

src/agents/memory.js:95

errors

number

0

src/agents/memory.js:98

summarizations

number

0

src/agents/memory.js:97

vectorSearches

number

0

src/agents/memory.js:96

processingQueue

processingQueue: any[];

Defined in: src/agents/memory.js:90

recentMessages

recentMessages: any[];

Defined in: src/agents/memory.js:87

relevanceThreshold

relevanceThreshold: any;

Defined in: src/agents/memory.js:80

summarizeTimeout

summarizeTimeout: Timeout;

Defined in: src/agents/memory.js:161

summaryThreshold

summaryThreshold: number;

Defined in: src/agents/memory.js:77

userId

userId: string;

Defined in: src/agents/memory.js:74

Methods

addMessage()

addMessage(
   role: string, 
   content: string, 
   metadata: any): boolean;

Defined in: src/agents/memory.js:114

Add a message to current session with intelligent deduplication

Parameters
ParameterTypeDescription

role

string

Message role ('user' or 'assistant')

content

string

Message content

metadata

any

Additional message metadata

Returns

boolean

  • Whether message was added
Example
memory.addMessage('user', 'Hello, how are you?', { timestamp: Date.now() });
memory.addMessage('assistant', 'I am doing well, thank you!');

applyVectorSearch()

applyVectorSearch(
   query: any, 
   memories: any, 
   options: any): Promise<any>;

Defined in: src/agents/memory.js:394

Apply vector search to memories

Parameters
ParameterType

query

any

memories

any

options

any

Returns

Promise<any>

clearCache()

clearCache(): void;

Defined in: src/agents/memory.js:548

Clear cache utility

Returns

void

debouncedSummarize()

debouncedSummarize(): void;

Defined in: src/agents/memory.js:156

Debounced summarization to prevent excessive processing

Returns

void

extractFactsFromConversation()

extractFactsFromConversation(conversationText: any): Promise<any[]>;

Defined in: src/agents/memory.js:493

Extract facts from conversation using LLM

Parameters
ParameterType

conversationText

any

Returns

Promise<any[]>

fetchMemoriesFromDB()

fetchMemoriesFromDB(
   query: any, 
   limit: any, 
   options: any): Promise<any>;

Defined in: src/agents/memory.js:364

Fetch memories from database with filtering

Parameters
ParameterType

query

any

limit

any

options

any

Returns

Promise<any>

findSimilarFacts()

findSimilarFacts(content: string): Promise<any[]>;

Defined in: src/agents/memory.js:243

Find similar facts using content similarity

Parameters
ParameterTypeDescription

content

string

Content to find similar facts for

Returns

Promise<any[]>

  • Similar facts

getMemoryContext()

getMemoryContext(
   query: string, 
   includeRecent: boolean, 
   options: any): Promise<string>;

Defined in: src/agents/memory.js:566

Get memory context with better formatting and relevance

Parameters
ParameterTypeDefault valueDescription

query

string

''

Context query

includeRecent

boolean

true

Include recent messages

options

any

{}

Context options

Returns

Promise<string>

  • Formatted context
Example
const context = await memory.getMemoryContext('work meeting', true, {
  maxMemories: 5,
  minImportance: 3
});

getMetrics()

getMetrics(): object;

Defined in: src/agents/memory.js:608

Get performance metrics

Returns

object

NameTypeDefault valueDefined in

cacheHits

number

0

src/agents/memory.js:94

cacheMisses

number

0

src/agents/memory.js:95

cacheSize

number

src/agents/memory.js:611

errors

number

0

src/agents/memory.js:98

isProcessing

boolean

src/agents/memory.js:613

recentMessagesCount

number

src/agents/memory.js:612

summarizations

number

0

src/agents/memory.js:97

vectorSearches

number

0

src/agents/memory.js:96

processFactsInBatches()

processFactsInBatches(factsResponse: any): Promise<void>;

Defined in: src/agents/memory.js:514

Process facts in batches to avoid overwhelming the database

Parameters
ParameterType

factsResponse

any

Returns

Promise<void>

recallRelevantMemories()

recallRelevantMemories(
   query: string, 
   limit: number, 
   options: any): Promise<any[]>;

Defined in: src/agents/memory.js:302

Enhanced memory recall with caching and vector search

Parameters
ParameterTypeDefault valueDescription

query

string

''

Search query

limit

number

10

Maximum results

options

any

{}

Search options

Returns

Promise<any[]>

  • Relevant memories
Example
// Search for work-related memories
const workMemories = await memory.recallRelevantMemories('work', 10);

// Get most important memories
const importantMemories = await memory.recallRelevantMemories('', 5);

// Search with specific options
const recentMemories = await memory.recallRelevantMemories('meeting', 10, { 
  minImportance: 5, 
  includeMetadata: true 
});

storeFact()

storeFact(
   content: string, 
   importance: number, 
   category: string, 
   metadata: any): Promise<string>;

Defined in: src/agents/memory.js:182

Store important facts with validation and conflict resolution

Parameters
ParameterTypeDefault valueDescription

content

string

undefined

Fact content

importance

number

1

Importance score (0-10)

category

string

MEMORY_TYPES.FACT

Memory category

metadata

any

{}

Additional metadata

Returns

Promise<string>

  • Memory ID
Example
await memory.storeFact('User prefers dark mode', 8, 'preference', { source: 'conversation' });
await memory.storeFact('User works at Google', 9, 'personal', { confidence: 0.95 });

summarizeAndStore()

summarizeAndStore(): Promise<boolean>;

Defined in: src/agents/memory.js:451

Improved summarization with error handling and batch processing

Returns

Promise<boolean>

  • Success status

updateMemory()

updateMemory(id: string, updates: any): Promise<void>;

Defined in: src/agents/memory.js:274

Update memory record

Parameters
ParameterTypeDescription

id

string

Memory ID

updates

any

Fields to update

Returns

Promise<void>

updateRelevanceScores()

updateRelevanceScores(memories: any, sentencesByRelevance: any): Promise<void>;

Defined in: src/agents/memory.js:426

Update relevance scores for memories

Parameters
ParameterType

memories

any

sentencesByRelevance

any

Returns

Promise<void>


MEMORY_CONFIG

const MEMORY_CONFIG: object;

Defined in: src/agents/memory.js:20

Configuration constants for memory management

Type Declaration

NameTypeDefault valueDefined in

AUTO_SUMMARIZATION_ENABLED

boolean

true

src/agents/memory.js:30

DEFAULT_BATCH_SIZE

number

5

src/agents/memory.js:24

DEFAULT_CACHE_EXPIRY

number

src/agents/memory.js:23

DEFAULT_IMPORTANCE_RANGE

{ max: number; min: number; }

src/agents/memory.js:26

DEFAULT_MAX_MEMORIES

number

100

src/agents/memory.js:21

DEFAULT_RATE_LIMIT

{ requests: number; windowMs: number; }

src/agents/memory.js:27

DEFAULT_RELEVANCE_THRESHOLD

number

0.3

src/agents/memory.js:25

DEFAULT_SUMMARY_THRESHOLD

number

10

src/agents/memory.js:22

DEFAULT_TIMEOUT

number

30000

src/agents/memory.js:28

VECTOR_SEARCH_ENABLED

boolean

true

src/agents/memory.js:29


MEMORY_TYPES

const MEMORY_TYPES: object;

Defined in: src/agents/memory.js:36

Memory types for categorization

Type Declaration

NameTypeDefault valueDefined in

CONVERSATION

string

'conversation'

src/agents/memory.js:38

FACT

string

'fact'

src/agents/memory.js:37

MANUAL

string

'manual'

src/agents/memory.js:42

PERSONAL

string

'personal'

src/agents/memory.js:40

PREFERENCE

string

'preference'

src/agents/memory.js:39

WORK

string

'work'

src/agents/memory.js:41


createMemorySchema()

function createMemorySchema(db: any): any;

Defined in: src/agents/memory.js:1015

Database schema for memory system

Parameters

ParameterTypeDescription

db

any

Database instance

Returns

any

  • Schema definition

exampleUsage()

function exampleUsage(db: any): Promise<void>;

Defined in: src/agents/memory.js:1037

Comprehensive usage example with error handling

Parameters

ParameterTypeDescription

db

any

Database connection

Returns

Promise<void>