@hashgraphonline/conversational-agent 0.1.204 → 0.1.206

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/cjs/base-agent.d.ts +6 -0
  2. package/dist/cjs/context/ReferenceContextManager.d.ts +84 -0
  3. package/dist/cjs/context/ReferenceResponseProcessor.d.ts +76 -0
  4. package/dist/cjs/conversational-agent.d.ts +34 -0
  5. package/dist/cjs/index.cjs +1 -1
  6. package/dist/cjs/index.cjs.map +1 -1
  7. package/dist/cjs/langchain-agent.d.ts +1 -0
  8. package/dist/cjs/mcp/ContentProcessor.d.ts +37 -0
  9. package/dist/cjs/mcp/MCPClientManager.d.ts +19 -1
  10. package/dist/cjs/memory/ContentStorage.d.ts +205 -0
  11. package/dist/cjs/memory/MemoryWindow.d.ts +114 -0
  12. package/dist/cjs/memory/ReferenceIdGenerator.d.ts +45 -0
  13. package/dist/cjs/memory/SmartMemoryManager.d.ts +201 -0
  14. package/dist/cjs/memory/TokenCounter.d.ts +61 -0
  15. package/dist/cjs/memory/index.d.ts +7 -0
  16. package/dist/cjs/plugins/hbar-transfer/TransferHbarTool.d.ts +18 -0
  17. package/dist/cjs/services/ContentStoreManager.d.ts +54 -0
  18. package/dist/cjs/types/content-reference.d.ts +213 -0
  19. package/dist/cjs/types/index.d.ts +4 -0
  20. package/dist/esm/index12.js +15 -2
  21. package/dist/esm/index12.js.map +1 -1
  22. package/dist/esm/index14.js +119 -95
  23. package/dist/esm/index14.js.map +1 -1
  24. package/dist/esm/index15.js +159 -114
  25. package/dist/esm/index15.js.map +1 -1
  26. package/dist/esm/index16.js +122 -81
  27. package/dist/esm/index16.js.map +1 -1
  28. package/dist/esm/index17.js +236 -0
  29. package/dist/esm/index17.js.map +1 -0
  30. package/dist/esm/index18.js +95 -0
  31. package/dist/esm/index18.js.map +1 -0
  32. package/dist/esm/index19.js +663 -0
  33. package/dist/esm/index19.js.map +1 -0
  34. package/dist/esm/index2.js +3 -1
  35. package/dist/esm/index2.js.map +1 -1
  36. package/dist/esm/index20.js +233 -0
  37. package/dist/esm/index20.js.map +1 -0
  38. package/dist/esm/index21.js +182 -0
  39. package/dist/esm/index21.js.map +1 -0
  40. package/dist/esm/index22.js +126 -0
  41. package/dist/esm/index22.js.map +1 -0
  42. package/dist/esm/index23.js +68 -0
  43. package/dist/esm/index23.js.map +1 -0
  44. package/dist/esm/index24.js +38 -0
  45. package/dist/esm/index24.js.map +1 -0
  46. package/dist/esm/index6.js +143 -84
  47. package/dist/esm/index6.js.map +1 -1
  48. package/dist/esm/index7.js.map +1 -1
  49. package/dist/esm/index8.js +69 -5
  50. package/dist/esm/index8.js.map +1 -1
  51. package/dist/types/base-agent.d.ts +6 -0
  52. package/dist/types/context/ReferenceContextManager.d.ts +84 -0
  53. package/dist/types/context/ReferenceResponseProcessor.d.ts +76 -0
  54. package/dist/types/conversational-agent.d.ts +34 -0
  55. package/dist/types/langchain-agent.d.ts +1 -0
  56. package/dist/types/mcp/ContentProcessor.d.ts +37 -0
  57. package/dist/types/mcp/MCPClientManager.d.ts +19 -1
  58. package/dist/types/memory/ContentStorage.d.ts +205 -0
  59. package/dist/types/memory/MemoryWindow.d.ts +114 -0
  60. package/dist/types/memory/ReferenceIdGenerator.d.ts +45 -0
  61. package/dist/types/memory/SmartMemoryManager.d.ts +201 -0
  62. package/dist/types/memory/TokenCounter.d.ts +61 -0
  63. package/dist/types/memory/index.d.ts +7 -0
  64. package/dist/types/plugins/hbar-transfer/TransferHbarTool.d.ts +18 -0
  65. package/dist/types/services/ContentStoreManager.d.ts +54 -0
  66. package/dist/types/types/content-reference.d.ts +213 -0
  67. package/dist/types/types/index.d.ts +4 -0
  68. package/package.json +30 -26
  69. package/src/base-agent.ts +6 -0
  70. package/src/context/ReferenceContextManager.ts +345 -0
  71. package/src/context/ReferenceResponseProcessor.ts +296 -0
  72. package/src/conversational-agent.ts +166 -92
  73. package/src/langchain-agent.ts +89 -2
  74. package/src/mcp/ContentProcessor.ts +317 -0
  75. package/src/mcp/MCPClientManager.ts +61 -1
  76. package/src/mcp/adapters/langchain.ts +9 -4
  77. package/src/memory/ContentStorage.ts +954 -0
  78. package/src/memory/MemoryWindow.ts +247 -0
  79. package/src/memory/ReferenceIdGenerator.ts +84 -0
  80. package/src/memory/SmartMemoryManager.ts +323 -0
  81. package/src/memory/TokenCounter.ts +152 -0
  82. package/src/memory/index.ts +8 -0
  83. package/src/plugins/hbar-transfer/TransferHbarTool.ts +19 -1
  84. package/src/plugins/hcs-10/HCS10Plugin.ts +5 -4
  85. package/src/services/ContentStoreManager.ts +199 -0
  86. package/src/types/content-reference.ts +281 -0
  87. package/src/types/index.ts +6 -0
@@ -4,6 +4,7 @@ export declare class LangChainAgent extends BaseAgent {
4
4
  private executor;
5
5
  private systemMessage;
6
6
  private mcpManager?;
7
+ private smartMemory;
7
8
  boot(): Promise<void>;
8
9
  chat(message: string, context?: ConversationContext): Promise<ChatResponse>;
9
10
  shutdown(): Promise<void>;
@@ -0,0 +1,37 @@
1
+ import { ContentStorage } from '../memory/ContentStorage';
2
+ import { Logger } from '@hashgraphonline/standards-sdk';
3
+
4
+ export interface MCPResponseContent {
5
+ content: unknown;
6
+ type: 'text' | 'image' | 'resource' | 'text[]' | 'image[]';
7
+ sizeBytes: number;
8
+ mimeType?: string;
9
+ }
10
+ export interface ProcessedResponse {
11
+ content: unknown;
12
+ wasProcessed: boolean;
13
+ referenceCreated?: boolean;
14
+ referenceId?: string;
15
+ originalSize?: number;
16
+ errors?: string[];
17
+ }
18
+ export interface ContentAnalysis {
19
+ shouldProcess: boolean;
20
+ contents: MCPResponseContent[];
21
+ totalSize: number;
22
+ largestContentSize: number;
23
+ }
24
+ export declare class MCPContentProcessor {
25
+ private contentStorage;
26
+ private logger;
27
+ constructor(contentStorage: ContentStorage, logger: Logger);
28
+ analyzeResponse(response: unknown): ContentAnalysis;
29
+ processResponse(response: unknown, serverName: string, toolName: string): Promise<ProcessedResponse>;
30
+ private extractContentFromResponse;
31
+ private createReferencedResponse;
32
+ private createLightweightReference;
33
+ private replaceContentInResponse;
34
+ private detectMimeType;
35
+ private mapMimeTypeToContentType;
36
+ private deepClone;
37
+ }
@@ -1,5 +1,6 @@
1
1
  import { MCPServerConfig, MCPToolInfo, MCPConnectionStatus } from './types';
2
2
  import { Logger } from '@hashgraphonline/standards-sdk';
3
+ import { ContentStorage } from '../memory/ContentStorage';
3
4
 
4
5
  /**
5
6
  * Manages connections to MCP servers and tool discovery
@@ -8,7 +9,8 @@ export declare class MCPClientManager {
8
9
  private clients;
9
10
  private tools;
10
11
  private logger;
11
- constructor(logger: Logger);
12
+ private contentProcessor?;
13
+ constructor(logger: Logger, contentStorage?: ContentStorage);
12
14
  /**
13
15
  * Connect to an MCP server and discover its tools
14
16
  */
@@ -37,4 +39,20 @@ export declare class MCPClientManager {
37
39
  * Get list of connected server names
38
40
  */
39
41
  getConnectedServers(): string[];
42
+ /**
43
+ * Enable content processing with content storage
44
+ */
45
+ enableContentProcessing(contentStorage: ContentStorage): void;
46
+ /**
47
+ * Disable content processing
48
+ */
49
+ disableContentProcessing(): void;
50
+ /**
51
+ * Check if content processing is enabled
52
+ */
53
+ isContentProcessingEnabled(): boolean;
54
+ /**
55
+ * Analyze a response without processing it (for testing/debugging)
56
+ */
57
+ analyzeResponseContent(response: unknown): unknown;
40
58
  }
@@ -0,0 +1,205 @@
1
+ import { BaseMessage } from '@langchain/core/messages';
2
+ import { ReferenceId, ContentReference, ContentMetadata, ReferenceResolutionResult, ContentReferenceConfig, ContentReferenceStore, ContentReferenceStats, ContentType, ContentSource } from '../types/content-reference';
3
+
4
+ /**
5
+ * Search options for message queries
6
+ */
7
+ interface SearchOptions {
8
+ /** Whether to perform case-sensitive search */
9
+ caseSensitive?: boolean;
10
+ /** Maximum number of results to return */
11
+ limit?: number;
12
+ /** Whether to use regex pattern matching */
13
+ useRegex?: boolean;
14
+ }
15
+ /**
16
+ * Result of storing messages
17
+ */
18
+ interface StoreResult {
19
+ /** Number of messages successfully stored */
20
+ stored: number;
21
+ /** Number of old messages dropped to make room */
22
+ dropped: number;
23
+ }
24
+ /**
25
+ * Storage statistics
26
+ */
27
+ export interface StorageStats {
28
+ /** Total number of messages currently stored */
29
+ totalMessages: number;
30
+ /** Maximum storage capacity */
31
+ maxStorageLimit: number;
32
+ /** Percentage of storage used */
33
+ usagePercentage: number;
34
+ /** Timestamp of oldest message */
35
+ oldestMessageTime: Date | undefined;
36
+ /** Timestamp of newest message */
37
+ newestMessageTime: Date | undefined;
38
+ }
39
+ /**
40
+ * Content storage for managing pruned conversation messages and large content references
41
+ * Provides searchable storage with time-based querying and automatic cleanup.
42
+ *
43
+ * Extended to support reference-based storage for large content to optimize context window usage.
44
+ */
45
+ export declare class ContentStorage implements ContentReferenceStore {
46
+ private messages;
47
+ private maxStorage;
48
+ private idCounter;
49
+ private contentStore;
50
+ private referenceConfig;
51
+ private cleanupTimer?;
52
+ private referenceStats;
53
+ static readonly DEFAULT_MAX_STORAGE = 1000;
54
+ constructor(maxStorage?: number, referenceConfig?: Partial<ContentReferenceConfig>);
55
+ /**
56
+ * Store messages in the content storage
57
+ * Automatically drops oldest messages if storage limit is exceeded
58
+ * @param messages - Messages to store
59
+ * @returns Result indicating how many messages were stored and dropped
60
+ */
61
+ storeMessages(messages: BaseMessage[]): StoreResult;
62
+ /**
63
+ * Get the most recent messages from storage
64
+ * @param count - Number of recent messages to retrieve
65
+ * @returns Array of recent messages in chronological order
66
+ */
67
+ getRecentMessages(count: number): BaseMessage[];
68
+ /**
69
+ * Search for messages containing specific text or patterns
70
+ * @param query - Search term or regex pattern
71
+ * @param options - Search configuration options
72
+ * @returns Array of matching messages
73
+ */
74
+ searchMessages(query: string, options?: SearchOptions): BaseMessage[];
75
+ /**
76
+ * Get messages from a specific time range
77
+ * @param startTime - Start of time range (inclusive)
78
+ * @param endTime - End of time range (inclusive)
79
+ * @returns Array of messages within the time range
80
+ */
81
+ getMessagesFromTimeRange(startTime: Date, endTime: Date): BaseMessage[];
82
+ /**
83
+ * Get storage statistics and usage information
84
+ * @returns Current storage statistics
85
+ */
86
+ getStorageStats(): StorageStats;
87
+ /**
88
+ * Clear all stored messages
89
+ */
90
+ clear(): void;
91
+ /**
92
+ * Get total number of stored messages
93
+ * @returns Number of messages currently in storage
94
+ */
95
+ getTotalStoredMessages(): number;
96
+ /**
97
+ * Update the maximum storage limit
98
+ * @param newLimit - New maximum storage limit
99
+ */
100
+ updateStorageLimit(newLimit: number): void;
101
+ /**
102
+ * Get messages by message type
103
+ * @param messageType - Type of messages to retrieve ('human', 'ai', 'system', etc.)
104
+ * @param limit - Maximum number of messages to return
105
+ * @returns Array of messages of the specified type
106
+ */
107
+ getMessagesByType(messageType: string, limit?: number): BaseMessage[];
108
+ /**
109
+ * Get the current storage configuration
110
+ * @returns Storage configuration object
111
+ */
112
+ getConfig(): {
113
+ maxStorage: number;
114
+ currentUsage: number;
115
+ utilizationPercentage: number;
116
+ };
117
+ /**
118
+ * Generate a unique ID for stored messages
119
+ * @returns Unique string identifier
120
+ */
121
+ private generateId;
122
+ /**
123
+ * Get messages stored within the last N minutes
124
+ * @param minutes - Number of minutes to look back
125
+ * @returns Array of messages from the last N minutes
126
+ */
127
+ getRecentMessagesByTime(minutes: number): BaseMessage[];
128
+ /**
129
+ * Export messages to a JSON-serializable format
130
+ * @returns Serializable representation of stored messages
131
+ */
132
+ exportMessages(): {
133
+ content: import('@langchain/core/messages').MessageContent;
134
+ type: import('@langchain/core/messages').MessageType;
135
+ storedAt: string;
136
+ id: string;
137
+ }[];
138
+ /**
139
+ * Determine if content should be stored as a reference based on size
140
+ */
141
+ shouldUseReference(content: Buffer | string): boolean;
142
+ /**
143
+ * Store content and return a reference if it exceeds the size threshold
144
+ * Otherwise returns null to indicate direct content should be used
145
+ */
146
+ storeContentIfLarge(content: Buffer | string, metadata: {
147
+ contentType?: ContentType;
148
+ mimeType?: string;
149
+ source: ContentSource;
150
+ mcpToolName?: string;
151
+ fileName?: string;
152
+ tags?: string[];
153
+ customMetadata?: Record<string, unknown>;
154
+ }): Promise<ContentReference | null>;
155
+ /**
156
+ * Store content and return a reference (implements ContentReferenceStore)
157
+ */
158
+ storeContent(content: Buffer, metadata: Omit<ContentMetadata, 'createdAt' | 'lastAccessedAt' | 'accessCount'>): Promise<ContentReference>;
159
+ /**
160
+ * Resolve a reference to its content (implements ContentReferenceStore)
161
+ */
162
+ resolveReference(referenceId: ReferenceId): Promise<ReferenceResolutionResult>;
163
+ /**
164
+ * Check if a reference exists and is valid
165
+ */
166
+ hasReference(referenceId: ReferenceId): Promise<boolean>;
167
+ /**
168
+ * Mark a reference for cleanup
169
+ */
170
+ cleanupReference(referenceId: ReferenceId): Promise<boolean>;
171
+ /**
172
+ * Get current reference storage statistics (implements ContentReferenceStore)
173
+ */
174
+ getStats(): Promise<ContentReferenceStats>;
175
+ /**
176
+ * Update reference configuration
177
+ */
178
+ updateConfig(config: Partial<ContentReferenceConfig>): Promise<void>;
179
+ /**
180
+ * Perform cleanup based on current policies (implements ContentReferenceStore)
181
+ */
182
+ performCleanup(): Promise<{
183
+ cleanedUp: number;
184
+ errors: string[];
185
+ }>;
186
+ /**
187
+ * Get reference configuration for debugging
188
+ */
189
+ getReferenceConfig(): ContentReferenceConfig;
190
+ private enforceReferenceStorageLimits;
191
+ private calculateExpirationTime;
192
+ private getCleanupPolicy;
193
+ private detectContentType;
194
+ private createContentPreview;
195
+ private updateStatsAfterStore;
196
+ private updateReferenceStorageStats;
197
+ private recordPerformanceMetric;
198
+ private calculateAverage;
199
+ private startReferenceCleanupTimer;
200
+ /**
201
+ * Clean up resources (enhanced to include reference cleanup)
202
+ */
203
+ dispose(): Promise<void>;
204
+ }
205
+ export {};
@@ -0,0 +1,114 @@
1
+ import { BaseMessage } from '@langchain/core/messages';
2
+ import { TokenCounter } from './TokenCounter';
3
+
4
+ /**
5
+ * Result of adding a message to the memory window
6
+ */
7
+ export interface AddMessageResult {
8
+ /** Whether the message was successfully added */
9
+ added: boolean;
10
+ /** Messages that were pruned to make room */
11
+ prunedMessages: BaseMessage[];
12
+ /** Current token count after operation */
13
+ currentTokenCount: number;
14
+ /** Remaining token capacity */
15
+ remainingCapacity: number;
16
+ }
17
+ /**
18
+ * Memory window that manages conversation history with token-based size limits
19
+ * Automatically prunes old messages to stay within token limits while preserving conversational context
20
+ */
21
+ export declare class MemoryWindow {
22
+ private messages;
23
+ private maxTokens;
24
+ private reserveTokens;
25
+ private tokenCounter;
26
+ private systemPrompt;
27
+ private systemPromptTokens;
28
+ static readonly DEFAULT_MAX_TOKENS = 8000;
29
+ static readonly DEFAULT_RESERVE_TOKENS = 1000;
30
+ static readonly PRUNING_BATCH_SIZE = 2;
31
+ constructor(maxTokens?: number, reserveTokens?: number, tokenCounter?: TokenCounter);
32
+ /**
33
+ * Add a message to the memory window, pruning old messages if necessary
34
+ * @param message - The message to add
35
+ * @returns Result of the add operation including any pruned messages
36
+ */
37
+ addMessage(message: BaseMessage): AddMessageResult;
38
+ /**
39
+ * Prune old messages to fit within token limits
40
+ * Removes messages in pairs to maintain conversational flow
41
+ * @returns Array of pruned messages
42
+ */
43
+ pruneToFit(): BaseMessage[];
44
+ /**
45
+ * Get current token count including system prompt and messages
46
+ * @returns Current token count
47
+ */
48
+ getCurrentTokenCount(): number;
49
+ /**
50
+ * Get remaining token capacity before hitting the reserve limit
51
+ * @returns Remaining tokens that can be used
52
+ */
53
+ getRemainingTokenCapacity(): number;
54
+ /**
55
+ * Check if a message can be added without exceeding limits
56
+ * @param message - The message to check
57
+ * @returns True if message can be added within reserve limits
58
+ */
59
+ canAddMessage(message: BaseMessage): boolean;
60
+ /**
61
+ * Get all messages in the memory window
62
+ * @returns Copy of current messages array
63
+ */
64
+ getMessages(): BaseMessage[];
65
+ /**
66
+ * Clear all messages from the memory window
67
+ */
68
+ clear(): void;
69
+ /**
70
+ * Set the system prompt and update token calculations
71
+ * @param systemPrompt - The system prompt text
72
+ */
73
+ setSystemPrompt(systemPrompt: string): void;
74
+ /**
75
+ * Get the current system prompt
76
+ * @returns Current system prompt
77
+ */
78
+ getSystemPrompt(): string;
79
+ /**
80
+ * Get current configuration
81
+ * @returns Memory window configuration
82
+ */
83
+ getConfig(): {
84
+ maxTokens: number;
85
+ reserveTokens: number;
86
+ currentTokens: number;
87
+ messageCount: number;
88
+ systemPromptTokens: number;
89
+ };
90
+ /**
91
+ * Update token limits
92
+ * @param maxTokens - New maximum token limit
93
+ * @param reserveTokens - New reserve token amount
94
+ */
95
+ updateLimits(maxTokens: number, reserveTokens?: number): void;
96
+ /**
97
+ * Get statistics about the memory window
98
+ * @returns Memory usage statistics
99
+ */
100
+ getStats(): {
101
+ totalMessages: number;
102
+ currentTokens: number;
103
+ maxTokens: number;
104
+ reserveTokens: number;
105
+ systemPromptTokens: number;
106
+ usagePercentage: number;
107
+ remainingCapacity: number;
108
+ canAcceptMore: boolean;
109
+ };
110
+ /**
111
+ * Clean up resources
112
+ */
113
+ dispose(): void;
114
+ }
@@ -0,0 +1,45 @@
1
+ import { ReferenceId } from '../types/content-reference';
2
+
3
+ /**
4
+ * Content-based reference ID generator using SHA-256 (HCS-1 style)
5
+ *
6
+ * Generates deterministic reference IDs based on content hashing.
7
+ * Same content always produces the same reference ID.
8
+ */
9
+ export declare class ReferenceIdGenerator {
10
+ /**
11
+ * Generate a content-based reference ID using SHA-256 hashing
12
+ *
13
+ * @param content The content to generate a reference ID for
14
+ * @returns Deterministic reference ID based on content hash
15
+ */
16
+ static generateId(content: Buffer): ReferenceId;
17
+ /**
18
+ * Validate that a string is a properly formatted reference ID
19
+ *
20
+ * @param id The ID to validate
21
+ * @returns true if the ID is valid format
22
+ */
23
+ static isValidReferenceId(id: string): id is ReferenceId;
24
+ /**
25
+ * Extract reference ID from ref:// format
26
+ *
27
+ * @param input Input string that may contain a reference ID
28
+ * @returns Extracted reference ID or null if not found
29
+ */
30
+ static extractReferenceId(input: string): ReferenceId | null;
31
+ /**
32
+ * Format a reference ID in the standard ref:// format
33
+ *
34
+ * @param referenceId The reference ID to format
35
+ * @returns Formatted reference string
36
+ */
37
+ static formatReference(referenceId: ReferenceId): string;
38
+ /**
39
+ * Generate a test reference ID (for testing purposes only)
40
+ *
41
+ * @param testSeed A test seed to generate a fake but valid ID format
42
+ * @returns A valid format reference ID for testing
43
+ */
44
+ static generateTestId(testSeed: string): ReferenceId;
45
+ }
@@ -0,0 +1,201 @@
1
+ import { BaseMessage } from '@langchain/core/messages';
2
+
3
+ /**
4
+ * Configuration for SmartMemoryManager
5
+ */
6
+ export interface SmartMemoryConfig {
7
+ /** Maximum tokens for active memory window */
8
+ maxTokens?: number;
9
+ /** Reserve tokens for response generation */
10
+ reserveTokens?: number;
11
+ /** Model name for token counting */
12
+ modelName?: string;
13
+ /** Maximum messages to store in content storage */
14
+ storageLimit?: number;
15
+ }
16
+ /**
17
+ * Search options for history search
18
+ */
19
+ export interface SearchOptions {
20
+ /** Whether to perform case-sensitive search */
21
+ caseSensitive?: boolean;
22
+ /** Maximum number of results to return */
23
+ limit?: number;
24
+ /** Whether to use regex pattern matching */
25
+ useRegex?: boolean;
26
+ }
27
+ /**
28
+ * Memory statistics for active memory window
29
+ */
30
+ export interface MemoryStats {
31
+ /** Total active messages in memory window */
32
+ totalActiveMessages: number;
33
+ /** Current token count including system prompt */
34
+ currentTokenCount: number;
35
+ /** Maximum token capacity */
36
+ maxTokens: number;
37
+ /** Remaining token capacity */
38
+ remainingCapacity: number;
39
+ /** System prompt token count */
40
+ systemPromptTokens: number;
41
+ /** Memory usage percentage */
42
+ usagePercentage: number;
43
+ }
44
+ /**
45
+ * Smart memory manager that combines active memory window with long-term storage
46
+ * Provides context-aware memory management with automatic pruning and searchable history
47
+ */
48
+ export declare class SmartMemoryManager {
49
+ private memoryWindow;
50
+ private contentStorage;
51
+ private tokenCounter;
52
+ private config;
53
+ private static readonly DEFAULT_CONFIG;
54
+ constructor(config?: SmartMemoryConfig);
55
+ /**
56
+ * Add a message to the active memory window
57
+ * Automatically handles pruning and storage of displaced messages
58
+ * @param message - Message to add
59
+ */
60
+ addMessage(message: BaseMessage): void;
61
+ /**
62
+ * Get all active messages from the memory window
63
+ * @returns Array of active messages in chronological order
64
+ */
65
+ getMessages(): BaseMessage[];
66
+ /**
67
+ * Clear active memory window
68
+ * @param clearStorage - Whether to also clear the content storage (default: false)
69
+ */
70
+ clear(clearStorage?: boolean): void;
71
+ /**
72
+ * Set the system prompt for the memory window
73
+ * @param systemPrompt - System prompt text
74
+ */
75
+ setSystemPrompt(systemPrompt: string): void;
76
+ /**
77
+ * Get the current system prompt
78
+ * @returns Current system prompt text
79
+ */
80
+ getSystemPrompt(): string;
81
+ /**
82
+ * Search through stored message history
83
+ * @param query - Search term or pattern
84
+ * @param options - Search configuration
85
+ * @returns Array of matching messages from history
86
+ */
87
+ searchHistory(query: string, options?: SearchOptions): BaseMessage[];
88
+ /**
89
+ * Get recent messages from storage history
90
+ * @param count - Number of recent messages to retrieve
91
+ * @returns Array of recent messages from storage
92
+ */
93
+ getRecentHistory(count: number): BaseMessage[];
94
+ /**
95
+ * Check if a message can be added without exceeding limits
96
+ * @param message - Message to test
97
+ * @returns True if message can be added
98
+ */
99
+ canAddMessage(message: BaseMessage): boolean;
100
+ /**
101
+ * Get statistics about the active memory window
102
+ * @returns Memory usage statistics
103
+ */
104
+ getMemoryStats(): MemoryStats;
105
+ /**
106
+ * Get statistics about the content storage
107
+ * @returns Storage usage statistics
108
+ */
109
+ getStorageStats(): import('./ContentStorage').StorageStats;
110
+ /**
111
+ * Get combined statistics for both active memory and storage
112
+ * @returns Combined memory and storage statistics
113
+ */
114
+ getOverallStats(): {
115
+ activeMemory: MemoryStats;
116
+ storage: import('./ContentStorage').StorageStats;
117
+ totalMessagesManaged: number;
118
+ activeMemoryUtilization: number;
119
+ storageUtilization: number;
120
+ };
121
+ /**
122
+ * Update the configuration and apply changes
123
+ * @param newConfig - New configuration options
124
+ */
125
+ updateConfig(newConfig: Partial<SmartMemoryConfig>): void;
126
+ /**
127
+ * Get current configuration
128
+ * @returns Current configuration settings
129
+ */
130
+ getConfig(): Required<SmartMemoryConfig>;
131
+ /**
132
+ * Get messages from storage within a time range
133
+ * @param startTime - Start of time range
134
+ * @param endTime - End of time range
135
+ * @returns Messages within the specified time range
136
+ */
137
+ getHistoryFromTimeRange(startTime: Date, endTime: Date): BaseMessage[];
138
+ /**
139
+ * Get messages from storage by message type
140
+ * @param messageType - Type of messages to retrieve ('human', 'ai', 'system', etc.)
141
+ * @param limit - Maximum number of messages to return
142
+ * @returns Messages of the specified type
143
+ */
144
+ getHistoryByType(messageType: string, limit?: number): BaseMessage[];
145
+ /**
146
+ * Get recent messages from storage within the last N minutes
147
+ * @param minutes - Number of minutes to look back
148
+ * @returns Messages from the last N minutes
149
+ */
150
+ getRecentHistoryByTime(minutes: number): BaseMessage[];
151
+ /**
152
+ * Export the current state for persistence or analysis
153
+ * @returns Serializable representation of memory state
154
+ */
155
+ exportState(): {
156
+ config: Required<SmartMemoryConfig>;
157
+ activeMessages: {
158
+ content: import('@langchain/core/messages').MessageContent;
159
+ type: import('@langchain/core/messages').MessageType;
160
+ }[];
161
+ systemPrompt: string;
162
+ memoryStats: MemoryStats;
163
+ storageStats: import('./ContentStorage').StorageStats;
164
+ storedMessages: {
165
+ content: import('@langchain/core/messages').MessageContent;
166
+ type: import('@langchain/core/messages').MessageType;
167
+ storedAt: string;
168
+ id: string;
169
+ }[];
170
+ };
171
+ /**
172
+ * Get a summary of conversation context for external use
173
+ * Useful for providing context to other systems or for logging
174
+ * @param includeStoredContext - Whether to include recent stored messages
175
+ * @returns Context summary object
176
+ */
177
+ getContextSummary(includeStoredContext?: boolean): {
178
+ activeMessageCount: number;
179
+ systemPrompt: string;
180
+ recentMessages: BaseMessage[];
181
+ memoryUtilization: number;
182
+ hasStoredHistory: boolean;
183
+ } | {
184
+ recentStoredMessages: BaseMessage[];
185
+ storageStats: import('./ContentStorage').StorageStats;
186
+ activeMessageCount: number;
187
+ systemPrompt: string;
188
+ recentMessages: BaseMessage[];
189
+ memoryUtilization: number;
190
+ hasStoredHistory: boolean;
191
+ };
192
+ /**
193
+ * Perform maintenance operations
194
+ * Optimizes storage and cleans up resources
195
+ */
196
+ performMaintenance(): void;
197
+ /**
198
+ * Clean up resources and dispose of components
199
+ */
200
+ dispose(): void;
201
+ }