@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,285 @@
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
+ import { v4 as uuidv4 } from 'uuid';
10
+ /**
11
+ * Session Manager
12
+ *
13
+ * Manages the lifecycle of conversation sessions.
14
+ * Provides methods for creating, retrieving, and managing sessions.
15
+ */
16
+ export class SessionManager {
17
+ sessions = new Map();
18
+ defaultSessionId = 'default';
19
+ /**
20
+ * Create a new session
21
+ *
22
+ * @param options - Session creation options
23
+ * @returns The new session ID
24
+ */
25
+ createSession(options) {
26
+ const id = options?.id ?? uuidv4();
27
+ // Check if session already exists
28
+ if (this.sessions.has(id)) {
29
+ throw new Error(`Session with ID "${id}" already exists`);
30
+ }
31
+ const now = new Date();
32
+ const session = {
33
+ id,
34
+ messages: [],
35
+ createdAt: now,
36
+ updatedAt: now,
37
+ metadata: options?.metadata,
38
+ active: true,
39
+ };
40
+ // Add system message if provided
41
+ if (options?.systemMessage) {
42
+ session.messages.push({
43
+ id: uuidv4(),
44
+ role: 'system',
45
+ content: options.systemMessage,
46
+ timestamp: now,
47
+ });
48
+ }
49
+ this.sessions.set(id, session);
50
+ return id;
51
+ }
52
+ /**
53
+ * Get a session by ID
54
+ *
55
+ * @param sessionId - Session ID
56
+ * @returns The session or undefined if not found
57
+ */
58
+ getSession(sessionId) {
59
+ return this.sessions.get(sessionId);
60
+ }
61
+ /**
62
+ * Get or create a session
63
+ *
64
+ * @param sessionId - Session ID
65
+ * @param options - Options for creating if not exists
66
+ * @returns The session
67
+ */
68
+ getOrCreateSession(sessionId, options) {
69
+ let session = this.sessions.get(sessionId);
70
+ if (!session) {
71
+ this.createSession({ ...options, id: sessionId });
72
+ session = this.sessions.get(sessionId);
73
+ }
74
+ return session;
75
+ }
76
+ /**
77
+ * Check if a session exists
78
+ *
79
+ * @param sessionId - Session ID
80
+ * @returns True if session exists
81
+ */
82
+ hasSession(sessionId) {
83
+ return this.sessions.has(sessionId);
84
+ }
85
+ /**
86
+ * Get all sessions matching query options
87
+ *
88
+ * @param options - Query options
89
+ * @returns Array of matching sessions
90
+ */
91
+ querySessions(options) {
92
+ let sessions = Array.from(this.sessions.values());
93
+ // Apply filters
94
+ if (options?.active !== undefined) {
95
+ sessions = sessions.filter((s) => s.active === options.active);
96
+ }
97
+ if (options?.createdAfter) {
98
+ sessions = sessions.filter((s) => s.createdAt >= options.createdAfter);
99
+ }
100
+ if (options?.createdBefore) {
101
+ sessions = sessions.filter((s) => s.createdAt <= options.createdBefore);
102
+ }
103
+ // Sort by creation date (newest first)
104
+ sessions.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
105
+ // Apply pagination
106
+ if (options?.offset) {
107
+ sessions = sessions.slice(options.offset);
108
+ }
109
+ if (options?.limit) {
110
+ sessions = sessions.slice(0, options.limit);
111
+ }
112
+ return sessions;
113
+ }
114
+ /**
115
+ * Get conversation history for a session
116
+ * Messages are returned in chronological order (oldest first)
117
+ *
118
+ * @param sessionId - Session ID
119
+ * @returns Array of messages ordered by timestamp
120
+ */
121
+ getHistory(sessionId) {
122
+ const session = this.sessions.get(sessionId);
123
+ if (!session) {
124
+ return [];
125
+ }
126
+ // Return a copy sorted by timestamp (chronological order)
127
+ return [...session.messages].sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
128
+ }
129
+ /**
130
+ * Add a user message to a session
131
+ *
132
+ * @param sessionId - Session ID
133
+ * @param content - Message content
134
+ * @param metadata - Optional metadata
135
+ * @returns The created message
136
+ */
137
+ addUserMessage(sessionId, content, metadata) {
138
+ const session = this.getOrCreateSession(sessionId);
139
+ const message = {
140
+ id: uuidv4(),
141
+ role: 'user',
142
+ content,
143
+ timestamp: new Date(),
144
+ metadata,
145
+ };
146
+ session.messages.push(message);
147
+ session.updatedAt = new Date();
148
+ return message;
149
+ }
150
+ /**
151
+ * Add an assistant message to a session
152
+ *
153
+ * @param sessionId - Session ID
154
+ * @param response - Agent response
155
+ * @param metadata - Optional metadata
156
+ * @returns The created message
157
+ */
158
+ addAssistantMessage(sessionId, response, metadata) {
159
+ const session = this.getOrCreateSession(sessionId);
160
+ const message = {
161
+ id: uuidv4(),
162
+ role: 'assistant',
163
+ content: ('message' in response ? response.message : JSON.stringify(response)),
164
+ timestamp: new Date(),
165
+ responseType: response.type,
166
+ metadata,
167
+ };
168
+ // Add tool calls if present
169
+ if (response.type === 'execute' && response.toolCalls) {
170
+ message.toolCalls = response.toolCalls;
171
+ }
172
+ session.messages.push(message);
173
+ session.updatedAt = new Date();
174
+ return message;
175
+ }
176
+ /**
177
+ * Add a system message to a session
178
+ *
179
+ * @param sessionId - Session ID
180
+ * @param content - Message content
181
+ * @returns The created message
182
+ */
183
+ addSystemMessage(sessionId, content) {
184
+ const session = this.getOrCreateSession(sessionId);
185
+ const message = {
186
+ id: uuidv4(),
187
+ role: 'system',
188
+ content,
189
+ timestamp: new Date(),
190
+ };
191
+ session.messages.push(message);
192
+ session.updatedAt = new Date();
193
+ return message;
194
+ }
195
+ /**
196
+ * Close a session (mark as inactive)
197
+ *
198
+ * @param sessionId - Session ID
199
+ * @returns True if session was closed
200
+ */
201
+ closeSession(sessionId) {
202
+ const session = this.sessions.get(sessionId);
203
+ if (!session) {
204
+ return false;
205
+ }
206
+ session.active = false;
207
+ session.updatedAt = new Date();
208
+ return true;
209
+ }
210
+ /**
211
+ * Delete a session
212
+ *
213
+ * @param sessionId - Session ID
214
+ * @returns True if session was deleted
215
+ */
216
+ deleteSession(sessionId) {
217
+ return this.sessions.delete(sessionId);
218
+ }
219
+ /**
220
+ * Clear all messages in a session
221
+ *
222
+ * @param sessionId - Session ID
223
+ * @returns True if session was cleared
224
+ */
225
+ clearSession(sessionId) {
226
+ const session = this.sessions.get(sessionId);
227
+ if (!session) {
228
+ return false;
229
+ }
230
+ session.messages = [];
231
+ session.updatedAt = new Date();
232
+ return true;
233
+ }
234
+ /**
235
+ * Update session metadata
236
+ *
237
+ * @param sessionId - Session ID
238
+ * @param metadata - New metadata (merged with existing)
239
+ * @returns True if session was updated
240
+ */
241
+ updateMetadata(sessionId, metadata) {
242
+ const session = this.sessions.get(sessionId);
243
+ if (!session) {
244
+ return false;
245
+ }
246
+ session.metadata = { ...session.metadata, ...metadata };
247
+ session.updatedAt = new Date();
248
+ return true;
249
+ }
250
+ /**
251
+ * Get the default session ID
252
+ */
253
+ getDefaultSessionId() {
254
+ return this.defaultSessionId;
255
+ }
256
+ /**
257
+ * Set the default session ID
258
+ */
259
+ setDefaultSessionId(sessionId) {
260
+ this.defaultSessionId = sessionId;
261
+ }
262
+ /**
263
+ * Get total number of sessions
264
+ */
265
+ getSessionCount() {
266
+ return this.sessions.size;
267
+ }
268
+ /**
269
+ * Get total number of messages across all sessions
270
+ */
271
+ getTotalMessageCount() {
272
+ let count = 0;
273
+ for (const session of this.sessions.values()) {
274
+ count += session.messages.length;
275
+ }
276
+ return count;
277
+ }
278
+ }
279
+ /**
280
+ * Create a new SessionManager instance
281
+ */
282
+ export function createSessionManager() {
283
+ return new SessionManager();
284
+ }
285
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@agenticc/storage-memory",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "In-memory storage adapter for @agenticc/core - for development and testing",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "registry": "https://registry.npmjs.org/"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "keywords": [
24
+ "ai",
25
+ "agent",
26
+ "storage",
27
+ "memory",
28
+ "in-memory",
29
+ "session",
30
+ "conversation"
31
+ ],
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/Chajian/agentic.git"
35
+ },
36
+ "bugs": {
37
+ "url": "https://github.com/Chajian/agentic/issues"
38
+ },
39
+ "homepage": "https://github.com/Chajian/agentic#readme",
40
+ "author": "Chajian <xylyjy@gmail.com>",
41
+ "license": "MIT",
42
+ "scripts": {
43
+ "build": "tsc && tsc-alias",
44
+ "clean": "rimraf dist",
45
+ "typecheck": "tsc --noEmit",
46
+ "lint": "eslint .",
47
+ "lint:fix": "eslint . --fix",
48
+ "format": "prettier --write src/**/*.ts",
49
+ "format:check": "prettier --check src/**/*.ts",
50
+ "test": "vitest --run --passWithNoTests",
51
+ "test:coverage": "vitest --run --coverage --passWithNoTests",
52
+ "test:watch": "vitest",
53
+ "prepublishOnly": "npm run clean && npm run build && npm run typecheck"
54
+ },
55
+ "dependencies": {
56
+ "uuid": "^11.0.3"
57
+ },
58
+ "devDependencies": {
59
+ "@agenticc/core": "workspace:*",
60
+ "@types/node": "^22.10.2",
61
+ "@types/uuid": "^10.0.0",
62
+ "@vitest/coverage-v8": "^2.1.9",
63
+ "rimraf": "^6.0.1",
64
+ "tsc-alias": "^1.8.10",
65
+ "typescript": "^5.7.2",
66
+ "vitest": "^2.1.8"
67
+ },
68
+ "peerDependencies": {
69
+ "@agenticc/core": "^1.0.0"
70
+ },
71
+ "engines": {
72
+ "node": ">=18.0.0"
73
+ }
74
+ }