@agenticc/storage-memory 1.0.0

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.
@@ -0,0 +1,404 @@
1
+ /**
2
+ * Message Store
3
+ *
4
+ * Provides persistent storage for conversation messages.
5
+ * Supports storing user messages, agent responses, and tool call records.
6
+ *
7
+ * _Requirements: 9.2_
8
+ */
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ /**
11
+ * Message Store
12
+ *
13
+ * In-memory message store with support for persistence hooks.
14
+ * Can be extended with database persistence by implementing the
15
+ * MessagePersistence interface.
16
+ */
17
+ export class MessageStore {
18
+ messages = new Map();
19
+ sessions = new Map();
20
+ toolCalls = new Map();
21
+ // Index for faster lookups
22
+ messagesBySession = new Map();
23
+ toolCallsBySession = new Map();
24
+ toolCallsByMessage = new Map();
25
+ /**
26
+ * Store a user message
27
+ *
28
+ * @param sessionId - Session ID
29
+ * @param content - Message content
30
+ * @param metadata - Optional metadata
31
+ * @returns The stored message
32
+ */
33
+ storeUserMessage(sessionId, content, metadata) {
34
+ this.ensureSession(sessionId);
35
+ const message = {
36
+ id: uuidv4(),
37
+ sessionId,
38
+ role: 'user',
39
+ content,
40
+ timestamp: new Date(),
41
+ metadata,
42
+ persisted: false,
43
+ };
44
+ this.addMessage(message);
45
+ return message;
46
+ }
47
+ /**
48
+ * Store an assistant message with agent response
49
+ *
50
+ * @param sessionId - Session ID
51
+ * @param response - Agent response
52
+ * @param metadata - Optional metadata
53
+ * @returns The stored message
54
+ */
55
+ storeAssistantMessage(sessionId, response, metadata) {
56
+ this.ensureSession(sessionId);
57
+ const message = {
58
+ id: uuidv4(),
59
+ sessionId,
60
+ role: 'assistant',
61
+ content: ('message' in response ? response.message : JSON.stringify(response)),
62
+ timestamp: new Date(),
63
+ responseType: response.type,
64
+ metadata,
65
+ persisted: false,
66
+ };
67
+ // Store tool calls if present
68
+ if (response.type === 'execute' && response.toolCalls) {
69
+ message.toolCalls = response.toolCalls;
70
+ this.storeToolCalls(sessionId, message.id, response.toolCalls);
71
+ }
72
+ this.addMessage(message);
73
+ return message;
74
+ }
75
+ /**
76
+ * Store a system message
77
+ *
78
+ * @param sessionId - Session ID
79
+ * @param content - Message content
80
+ * @returns The stored message
81
+ */
82
+ storeSystemMessage(sessionId, content) {
83
+ this.ensureSession(sessionId);
84
+ const message = {
85
+ id: uuidv4(),
86
+ sessionId,
87
+ role: 'system',
88
+ content,
89
+ timestamp: new Date(),
90
+ persisted: false,
91
+ };
92
+ this.addMessage(message);
93
+ return message;
94
+ }
95
+ /**
96
+ * Store tool call records
97
+ *
98
+ * @param sessionId - Session ID
99
+ * @param messageId - Message ID
100
+ * @param toolCalls - Tool call records
101
+ */
102
+ storeToolCalls(sessionId, messageId, toolCalls) {
103
+ for (const call of toolCalls) {
104
+ const storedCall = {
105
+ ...call,
106
+ id: uuidv4(),
107
+ sessionId,
108
+ messageId,
109
+ timestamp: new Date(),
110
+ };
111
+ this.toolCalls.set(storedCall.id, storedCall);
112
+ // Update indexes
113
+ if (!this.toolCallsBySession.has(sessionId)) {
114
+ this.toolCallsBySession.set(sessionId, new Set());
115
+ }
116
+ this.toolCallsBySession.get(sessionId).add(storedCall.id);
117
+ if (!this.toolCallsByMessage.has(messageId)) {
118
+ this.toolCallsByMessage.set(messageId, new Set());
119
+ }
120
+ this.toolCallsByMessage.get(messageId).add(storedCall.id);
121
+ }
122
+ }
123
+ /**
124
+ * Get a message by ID
125
+ *
126
+ * @param messageId - Message ID
127
+ * @returns The message or undefined
128
+ */
129
+ getMessage(messageId) {
130
+ return this.messages.get(messageId);
131
+ }
132
+ /**
133
+ * Query messages with filters
134
+ *
135
+ * @param options - Query options
136
+ * @returns Array of matching messages
137
+ */
138
+ queryMessages(options) {
139
+ let messages;
140
+ // Start with session filter if provided (uses index)
141
+ if (options?.sessionId) {
142
+ const messageIds = this.messagesBySession.get(options.sessionId);
143
+ if (!messageIds) {
144
+ return [];
145
+ }
146
+ messages = Array.from(messageIds)
147
+ .map((id) => this.messages.get(id))
148
+ .filter(Boolean);
149
+ }
150
+ else {
151
+ messages = Array.from(this.messages.values());
152
+ }
153
+ // Apply filters
154
+ if (options?.role) {
155
+ messages = messages.filter((m) => m.role === options.role);
156
+ }
157
+ if (options?.responseType) {
158
+ messages = messages.filter((m) => m.responseType === options.responseType);
159
+ }
160
+ if (options?.after) {
161
+ messages = messages.filter((m) => m.timestamp >= options.after);
162
+ }
163
+ if (options?.before) {
164
+ messages = messages.filter((m) => m.timestamp <= options.before);
165
+ }
166
+ // Sort by timestamp
167
+ const order = options?.order ?? 'asc';
168
+ messages.sort((a, b) => {
169
+ const diff = a.timestamp.getTime() - b.timestamp.getTime();
170
+ return order === 'asc' ? diff : -diff;
171
+ });
172
+ // Apply pagination
173
+ if (options?.offset) {
174
+ messages = messages.slice(options.offset);
175
+ }
176
+ if (options?.limit) {
177
+ messages = messages.slice(0, options.limit);
178
+ }
179
+ // Optionally exclude tool calls
180
+ if (options?.includeToolCalls === false) {
181
+ messages = messages.map((m) => {
182
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
+ const { toolCalls, ...rest } = m;
184
+ return rest;
185
+ });
186
+ }
187
+ return messages;
188
+ }
189
+ /**
190
+ * Get conversation history for a session
191
+ * Messages are returned in chronological order
192
+ *
193
+ * @param sessionId - Session ID
194
+ * @returns Array of messages ordered by timestamp
195
+ */
196
+ getSessionHistory(sessionId) {
197
+ return this.queryMessages({
198
+ sessionId,
199
+ order: 'asc',
200
+ });
201
+ }
202
+ /**
203
+ * Query tool calls with filters
204
+ *
205
+ * @param options - Query options
206
+ * @returns Array of matching tool calls
207
+ */
208
+ queryToolCalls(options) {
209
+ let calls;
210
+ // Start with session filter if provided (uses index)
211
+ if (options?.sessionId) {
212
+ const callIds = this.toolCallsBySession.get(options.sessionId);
213
+ if (!callIds) {
214
+ return [];
215
+ }
216
+ calls = Array.from(callIds)
217
+ .map((id) => this.toolCalls.get(id))
218
+ .filter(Boolean);
219
+ }
220
+ else {
221
+ calls = Array.from(this.toolCalls.values());
222
+ }
223
+ // Apply filters
224
+ if (options?.toolName) {
225
+ calls = calls.filter((c) => c.toolName === options.toolName);
226
+ }
227
+ if (options?.success !== undefined) {
228
+ calls = calls.filter((c) => c.result.success === options.success);
229
+ }
230
+ if (options?.after) {
231
+ calls = calls.filter((c) => c.timestamp >= options.after);
232
+ }
233
+ if (options?.before) {
234
+ calls = calls.filter((c) => c.timestamp <= options.before);
235
+ }
236
+ // Sort by timestamp (newest first)
237
+ calls.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
238
+ // Apply limit
239
+ if (options?.limit) {
240
+ calls = calls.slice(0, options.limit);
241
+ }
242
+ return calls;
243
+ }
244
+ /**
245
+ * Get tool calls for a specific message
246
+ *
247
+ * @param messageId - Message ID
248
+ * @returns Array of tool calls
249
+ */
250
+ getToolCallsForMessage(messageId) {
251
+ const callIds = this.toolCallsByMessage.get(messageId);
252
+ if (!callIds) {
253
+ return [];
254
+ }
255
+ return Array.from(callIds)
256
+ .map((id) => this.toolCalls.get(id))
257
+ .filter(Boolean);
258
+ }
259
+ /**
260
+ * Get a session by ID
261
+ *
262
+ * @param sessionId - Session ID
263
+ * @returns The session or undefined
264
+ */
265
+ getSession(sessionId) {
266
+ return this.sessions.get(sessionId);
267
+ }
268
+ /**
269
+ * Get all sessions
270
+ *
271
+ * @returns Array of all sessions
272
+ */
273
+ getAllSessions() {
274
+ return Array.from(this.sessions.values());
275
+ }
276
+ /**
277
+ * Delete a message
278
+ *
279
+ * @param messageId - Message ID
280
+ * @returns True if deleted
281
+ */
282
+ deleteMessage(messageId) {
283
+ const message = this.messages.get(messageId);
284
+ if (!message) {
285
+ return false;
286
+ }
287
+ // Remove from session index
288
+ const sessionMessages = this.messagesBySession.get(message.sessionId);
289
+ if (sessionMessages) {
290
+ sessionMessages.delete(messageId);
291
+ }
292
+ // Remove associated tool calls
293
+ const toolCallIds = this.toolCallsByMessage.get(messageId);
294
+ if (toolCallIds) {
295
+ for (const callId of toolCallIds) {
296
+ this.toolCalls.delete(callId);
297
+ const sessionCalls = this.toolCallsBySession.get(message.sessionId);
298
+ if (sessionCalls) {
299
+ sessionCalls.delete(callId);
300
+ }
301
+ }
302
+ this.toolCallsByMessage.delete(messageId);
303
+ }
304
+ return this.messages.delete(messageId);
305
+ }
306
+ /**
307
+ * Delete all messages in a session
308
+ *
309
+ * @param sessionId - Session ID
310
+ * @returns Number of messages deleted
311
+ */
312
+ deleteSessionMessages(sessionId) {
313
+ const messageIds = this.messagesBySession.get(sessionId);
314
+ if (!messageIds) {
315
+ return 0;
316
+ }
317
+ let count = 0;
318
+ for (const messageId of messageIds) {
319
+ if (this.deleteMessage(messageId)) {
320
+ count++;
321
+ }
322
+ }
323
+ this.messagesBySession.delete(sessionId);
324
+ this.toolCallsBySession.delete(sessionId);
325
+ this.sessions.delete(sessionId);
326
+ return count;
327
+ }
328
+ /**
329
+ * Get message count for a session
330
+ *
331
+ * @param sessionId - Session ID
332
+ * @returns Number of messages
333
+ */
334
+ getMessageCount(sessionId) {
335
+ return this.messagesBySession.get(sessionId)?.size ?? 0;
336
+ }
337
+ /**
338
+ * Get total message count across all sessions
339
+ *
340
+ * @returns Total number of messages
341
+ */
342
+ getTotalMessageCount() {
343
+ return this.messages.size;
344
+ }
345
+ /**
346
+ * Get total tool call count
347
+ *
348
+ * @returns Total number of tool calls
349
+ */
350
+ getTotalToolCallCount() {
351
+ return this.toolCalls.size;
352
+ }
353
+ /**
354
+ * Clear all data
355
+ */
356
+ clear() {
357
+ this.messages.clear();
358
+ this.sessions.clear();
359
+ this.toolCalls.clear();
360
+ this.messagesBySession.clear();
361
+ this.toolCallsBySession.clear();
362
+ this.toolCallsByMessage.clear();
363
+ }
364
+ /**
365
+ * Ensure a session exists
366
+ */
367
+ ensureSession(sessionId) {
368
+ if (!this.sessions.has(sessionId)) {
369
+ const now = new Date();
370
+ this.sessions.set(sessionId, {
371
+ id: sessionId,
372
+ messages: [],
373
+ createdAt: now,
374
+ updatedAt: now,
375
+ active: true,
376
+ persisted: false,
377
+ });
378
+ }
379
+ }
380
+ /**
381
+ * Add a message to storage
382
+ */
383
+ addMessage(message) {
384
+ this.messages.set(message.id, message);
385
+ // Update session index
386
+ if (!this.messagesBySession.has(message.sessionId)) {
387
+ this.messagesBySession.set(message.sessionId, new Set());
388
+ }
389
+ this.messagesBySession.get(message.sessionId).add(message.id);
390
+ // Update session timestamp
391
+ const session = this.sessions.get(message.sessionId);
392
+ if (session) {
393
+ session.updatedAt = new Date();
394
+ session.messages.push(message);
395
+ }
396
+ }
397
+ }
398
+ /**
399
+ * Create a new MessageStore instance
400
+ */
401
+ export function createMessageStore() {
402
+ return new MessageStore();
403
+ }
404
+ //# sourceMappingURL=message-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-store.js","sourceRoot":"","sources":["../src/message-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Session Management
3
+ *
4
+ * Manages conversation sessions for the Agent.
5
+ * Each session maintains its own conversation history and metadata.
6
+ *
7
+ * _Requirements: 9.1, 9.4_
8
+ */
9
+ interface ToolCallRecord {
10
+ toolName: string;
11
+ arguments: Record<string, unknown>;
12
+ result: {
13
+ success: boolean;
14
+ content: string;
15
+ data?: unknown;
16
+ };
17
+ }
18
+ type ExecuteResponse = {
19
+ type: 'execute';
20
+ message: string;
21
+ data?: unknown;
22
+ toolCalls?: ToolCallRecord[];
23
+ };
24
+ type GenericAgentResponse = {
25
+ type: string;
26
+ message?: string;
27
+ data?: unknown;
28
+ toolCalls?: ToolCallRecord[];
29
+ };
30
+ type AgentResponse = ExecuteResponse | GenericAgentResponse;
31
+ /**
32
+ * Message in conversation history
33
+ */
34
+ export interface Message {
35
+ /** Unique message ID */
36
+ id: string;
37
+ /** Message role */
38
+ role: 'user' | 'assistant' | 'system';
39
+ /** Message content */
40
+ content: string;
41
+ /** Message timestamp */
42
+ timestamp: Date;
43
+ /** Tool calls made during this message (for assistant messages) */
44
+ toolCalls?: ToolCallRecord[];
45
+ /** Response type (for assistant messages) */
46
+ responseType?: string;
47
+ /** Additional metadata */
48
+ metadata?: Record<string, unknown>;
49
+ }
50
+ /**
51
+ * Conversation session
52
+ */
53
+ export interface Session {
54
+ /** Unique session ID */
55
+ id: string;
56
+ /** Messages in this session */
57
+ messages: Message[];
58
+ /** Session creation time */
59
+ createdAt: Date;
60
+ /** Last update time */
61
+ updatedAt: Date;
62
+ /** Session metadata */
63
+ metadata?: Record<string, unknown>;
64
+ /** Whether the session is active */
65
+ active: boolean;
66
+ }
67
+ /**
68
+ * Options for creating a new session
69
+ */
70
+ export interface CreateSessionOptions {
71
+ /** Custom session ID (auto-generated if not provided) */
72
+ id?: string;
73
+ /** Initial metadata */
74
+ metadata?: Record<string, unknown>;
75
+ /** Initial system message */
76
+ systemMessage?: string;
77
+ }
78
+ /**
79
+ * Options for querying sessions
80
+ */
81
+ export interface SessionQueryOptions {
82
+ /** Filter by active status */
83
+ active?: boolean;
84
+ /** Filter by creation date (after) */
85
+ createdAfter?: Date;
86
+ /** Filter by creation date (before) */
87
+ createdBefore?: Date;
88
+ /** Maximum number of sessions to return */
89
+ limit?: number;
90
+ /** Offset for pagination */
91
+ offset?: number;
92
+ }
93
+ /**
94
+ * Session Manager
95
+ *
96
+ * Manages the lifecycle of conversation sessions.
97
+ * Provides methods for creating, retrieving, and managing sessions.
98
+ */
99
+ export declare class SessionManager {
100
+ private sessions;
101
+ private defaultSessionId;
102
+ /**
103
+ * Create a new session
104
+ *
105
+ * @param options - Session creation options
106
+ * @returns The new session ID
107
+ */
108
+ createSession(options?: CreateSessionOptions): string;
109
+ /**
110
+ * Get a session by ID
111
+ *
112
+ * @param sessionId - Session ID
113
+ * @returns The session or undefined if not found
114
+ */
115
+ getSession(sessionId: string): Session | undefined;
116
+ /**
117
+ * Get or create a session
118
+ *
119
+ * @param sessionId - Session ID
120
+ * @param options - Options for creating if not exists
121
+ * @returns The session
122
+ */
123
+ getOrCreateSession(sessionId: string, options?: Omit<CreateSessionOptions, 'id'>): Session;
124
+ /**
125
+ * Check if a session exists
126
+ *
127
+ * @param sessionId - Session ID
128
+ * @returns True if session exists
129
+ */
130
+ hasSession(sessionId: string): boolean;
131
+ /**
132
+ * Get all sessions matching query options
133
+ *
134
+ * @param options - Query options
135
+ * @returns Array of matching sessions
136
+ */
137
+ querySessions(options?: SessionQueryOptions): Session[];
138
+ /**
139
+ * Get conversation history for a session
140
+ * Messages are returned in chronological order (oldest first)
141
+ *
142
+ * @param sessionId - Session ID
143
+ * @returns Array of messages ordered by timestamp
144
+ */
145
+ getHistory(sessionId: string): Message[];
146
+ /**
147
+ * Add a user message to a session
148
+ *
149
+ * @param sessionId - Session ID
150
+ * @param content - Message content
151
+ * @param metadata - Optional metadata
152
+ * @returns The created message
153
+ */
154
+ addUserMessage(sessionId: string, content: string, metadata?: Record<string, unknown>): Message;
155
+ /**
156
+ * Add an assistant message to a session
157
+ *
158
+ * @param sessionId - Session ID
159
+ * @param response - Agent response
160
+ * @param metadata - Optional metadata
161
+ * @returns The created message
162
+ */
163
+ addAssistantMessage(sessionId: string, response: AgentResponse, metadata?: Record<string, unknown>): Message;
164
+ /**
165
+ * Add a system message to a session
166
+ *
167
+ * @param sessionId - Session ID
168
+ * @param content - Message content
169
+ * @returns The created message
170
+ */
171
+ addSystemMessage(sessionId: string, content: string): Message;
172
+ /**
173
+ * Close a session (mark as inactive)
174
+ *
175
+ * @param sessionId - Session ID
176
+ * @returns True if session was closed
177
+ */
178
+ closeSession(sessionId: string): boolean;
179
+ /**
180
+ * Delete a session
181
+ *
182
+ * @param sessionId - Session ID
183
+ * @returns True if session was deleted
184
+ */
185
+ deleteSession(sessionId: string): boolean;
186
+ /**
187
+ * Clear all messages in a session
188
+ *
189
+ * @param sessionId - Session ID
190
+ * @returns True if session was cleared
191
+ */
192
+ clearSession(sessionId: string): boolean;
193
+ /**
194
+ * Update session metadata
195
+ *
196
+ * @param sessionId - Session ID
197
+ * @param metadata - New metadata (merged with existing)
198
+ * @returns True if session was updated
199
+ */
200
+ updateMetadata(sessionId: string, metadata: Record<string, unknown>): boolean;
201
+ /**
202
+ * Get the default session ID
203
+ */
204
+ getDefaultSessionId(): string;
205
+ /**
206
+ * Set the default session ID
207
+ */
208
+ setDefaultSessionId(sessionId: string): void;
209
+ /**
210
+ * Get total number of sessions
211
+ */
212
+ getSessionCount(): number;
213
+ /**
214
+ * Get total number of messages across all sessions
215
+ */
216
+ getTotalMessageCount(): number;
217
+ }
218
+ /**
219
+ * Create a new SessionManager instance
220
+ */
221
+ export declare function createSessionManager(): SessionManager;
222
+ export {};
223
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}