@agenticc/core 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.
Files changed (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/README.zh-CN.md +372 -0
  4. package/dist/audit/index.d.ts +9 -0
  5. package/dist/audit/index.d.ts.map +1 -0
  6. package/dist/audit/index.js +9 -0
  7. package/dist/audit/index.js.map +1 -0
  8. package/dist/audit/logger.d.ts +211 -0
  9. package/dist/audit/logger.d.ts.map +1 -0
  10. package/dist/audit/logger.js +268 -0
  11. package/dist/audit/logger.js.map +1 -0
  12. package/dist/audit/query.d.ts +164 -0
  13. package/dist/audit/query.d.ts.map +1 -0
  14. package/dist/audit/query.js +250 -0
  15. package/dist/audit/query.js.map +1 -0
  16. package/dist/conversation/context-builder.d.ts +119 -0
  17. package/dist/conversation/context-builder.d.ts.map +1 -0
  18. package/dist/conversation/context-builder.js +252 -0
  19. package/dist/conversation/context-builder.js.map +1 -0
  20. package/dist/conversation/index.d.ts +10 -0
  21. package/dist/conversation/index.d.ts.map +1 -0
  22. package/dist/conversation/index.js +10 -0
  23. package/dist/conversation/index.js.map +1 -0
  24. package/dist/conversation/message-store.d.ts +231 -0
  25. package/dist/conversation/message-store.d.ts.map +1 -0
  26. package/dist/conversation/message-store.js +404 -0
  27. package/dist/conversation/message-store.js.map +1 -0
  28. package/dist/conversation/session.d.ts +201 -0
  29. package/dist/conversation/session.d.ts.map +1 -0
  30. package/dist/conversation/session.js +285 -0
  31. package/dist/conversation/session.js.map +1 -0
  32. package/dist/core/agent.d.ts +277 -0
  33. package/dist/core/agent.d.ts.map +1 -0
  34. package/dist/core/agent.js +674 -0
  35. package/dist/core/agent.js.map +1 -0
  36. package/dist/core/agentic-loop.d.ts +98 -0
  37. package/dist/core/agentic-loop.d.ts.map +1 -0
  38. package/dist/core/agentic-loop.js +496 -0
  39. package/dist/core/agentic-loop.js.map +1 -0
  40. package/dist/core/index.d.ts +14 -0
  41. package/dist/core/index.d.ts.map +1 -0
  42. package/dist/core/index.js +14 -0
  43. package/dist/core/index.js.map +1 -0
  44. package/dist/core/intent-parser.d.ts +101 -0
  45. package/dist/core/intent-parser.d.ts.map +1 -0
  46. package/dist/core/intent-parser.js +221 -0
  47. package/dist/core/intent-parser.js.map +1 -0
  48. package/dist/core/plan-generator.d.ts +133 -0
  49. package/dist/core/plan-generator.d.ts.map +1 -0
  50. package/dist/core/plan-generator.js +294 -0
  51. package/dist/core/plan-generator.js.map +1 -0
  52. package/dist/core/plugin-manager.d.ts +120 -0
  53. package/dist/core/plugin-manager.d.ts.map +1 -0
  54. package/dist/core/plugin-manager.js +369 -0
  55. package/dist/core/plugin-manager.js.map +1 -0
  56. package/dist/core/response-handler.d.ts +141 -0
  57. package/dist/core/response-handler.d.ts.map +1 -0
  58. package/dist/core/response-handler.js +384 -0
  59. package/dist/core/response-handler.js.map +1 -0
  60. package/dist/core/tool-executor.d.ts +143 -0
  61. package/dist/core/tool-executor.d.ts.map +1 -0
  62. package/dist/core/tool-executor.js +354 -0
  63. package/dist/core/tool-executor.js.map +1 -0
  64. package/dist/core/tool-registry.d.ts +133 -0
  65. package/dist/core/tool-registry.d.ts.map +1 -0
  66. package/dist/core/tool-registry.js +252 -0
  67. package/dist/core/tool-registry.js.map +1 -0
  68. package/dist/index.d.ts +44 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +47 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/knowledge/chunker.d.ts +78 -0
  73. package/dist/knowledge/chunker.d.ts.map +1 -0
  74. package/dist/knowledge/chunker.js +233 -0
  75. package/dist/knowledge/chunker.js.map +1 -0
  76. package/dist/knowledge/embedder.d.ts +93 -0
  77. package/dist/knowledge/embedder.d.ts.map +1 -0
  78. package/dist/knowledge/embedder.js +205 -0
  79. package/dist/knowledge/embedder.js.map +1 -0
  80. package/dist/knowledge/index.d.ts +10 -0
  81. package/dist/knowledge/index.d.ts.map +1 -0
  82. package/dist/knowledge/index.js +11 -0
  83. package/dist/knowledge/index.js.map +1 -0
  84. package/dist/knowledge/loaders/index.d.ts +10 -0
  85. package/dist/knowledge/loaders/index.d.ts.map +1 -0
  86. package/dist/knowledge/loaders/index.js +10 -0
  87. package/dist/knowledge/loaders/index.js.map +1 -0
  88. package/dist/knowledge/loaders/markdown.d.ts +88 -0
  89. package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
  90. package/dist/knowledge/loaders/markdown.js +205 -0
  91. package/dist/knowledge/loaders/markdown.js.map +1 -0
  92. package/dist/knowledge/loaders/yaml.d.ts +112 -0
  93. package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
  94. package/dist/knowledge/loaders/yaml.js +368 -0
  95. package/dist/knowledge/loaders/yaml.js.map +1 -0
  96. package/dist/knowledge/retriever.d.ts +144 -0
  97. package/dist/knowledge/retriever.d.ts.map +1 -0
  98. package/dist/knowledge/retriever.js +399 -0
  99. package/dist/knowledge/retriever.js.map +1 -0
  100. package/dist/knowledge/store.d.ts +146 -0
  101. package/dist/knowledge/store.d.ts.map +1 -0
  102. package/dist/knowledge/store.js +420 -0
  103. package/dist/knowledge/store.js.map +1 -0
  104. package/dist/llm/adapter.d.ts +194 -0
  105. package/dist/llm/adapter.d.ts.map +1 -0
  106. package/dist/llm/adapter.js +42 -0
  107. package/dist/llm/adapter.js.map +1 -0
  108. package/dist/llm/adapters/anyrouter.d.ts +84 -0
  109. package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
  110. package/dist/llm/adapters/anyrouter.js +372 -0
  111. package/dist/llm/adapters/anyrouter.js.map +1 -0
  112. package/dist/llm/adapters/claude.d.ts +66 -0
  113. package/dist/llm/adapters/claude.d.ts.map +1 -0
  114. package/dist/llm/adapters/claude.js +323 -0
  115. package/dist/llm/adapters/claude.js.map +1 -0
  116. package/dist/llm/adapters/index.d.ts +12 -0
  117. package/dist/llm/adapters/index.d.ts.map +1 -0
  118. package/dist/llm/adapters/index.js +12 -0
  119. package/dist/llm/adapters/index.js.map +1 -0
  120. package/dist/llm/adapters/mimo.d.ts +85 -0
  121. package/dist/llm/adapters/mimo.d.ts.map +1 -0
  122. package/dist/llm/adapters/mimo.js +316 -0
  123. package/dist/llm/adapters/mimo.js.map +1 -0
  124. package/dist/llm/adapters/openai.d.ts +53 -0
  125. package/dist/llm/adapters/openai.d.ts.map +1 -0
  126. package/dist/llm/adapters/openai.js +293 -0
  127. package/dist/llm/adapters/openai.js.map +1 -0
  128. package/dist/llm/adapters/qwen.d.ts +53 -0
  129. package/dist/llm/adapters/qwen.d.ts.map +1 -0
  130. package/dist/llm/adapters/qwen.js +299 -0
  131. package/dist/llm/adapters/qwen.js.map +1 -0
  132. package/dist/llm/adapters/siliconflow.d.ts +69 -0
  133. package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
  134. package/dist/llm/adapters/siliconflow.js +331 -0
  135. package/dist/llm/adapters/siliconflow.js.map +1 -0
  136. package/dist/llm/index.d.ts +9 -0
  137. package/dist/llm/index.d.ts.map +1 -0
  138. package/dist/llm/index.js +12 -0
  139. package/dist/llm/index.js.map +1 -0
  140. package/dist/llm/manager.d.ts +97 -0
  141. package/dist/llm/manager.d.ts.map +1 -0
  142. package/dist/llm/manager.js +337 -0
  143. package/dist/llm/manager.js.map +1 -0
  144. package/dist/test-utils/arbitraries.d.ts +230 -0
  145. package/dist/test-utils/arbitraries.d.ts.map +1 -0
  146. package/dist/test-utils/arbitraries.js +280 -0
  147. package/dist/test-utils/arbitraries.js.map +1 -0
  148. package/dist/test-utils/cleanup.d.ts +184 -0
  149. package/dist/test-utils/cleanup.d.ts.map +1 -0
  150. package/dist/test-utils/cleanup.js +282 -0
  151. package/dist/test-utils/cleanup.js.map +1 -0
  152. package/dist/test-utils/config.d.ts +80 -0
  153. package/dist/test-utils/config.d.ts.map +1 -0
  154. package/dist/test-utils/config.js +94 -0
  155. package/dist/test-utils/config.js.map +1 -0
  156. package/dist/test-utils/index.d.ts +10 -0
  157. package/dist/test-utils/index.d.ts.map +1 -0
  158. package/dist/test-utils/index.js +36 -0
  159. package/dist/test-utils/index.js.map +1 -0
  160. package/dist/test-utils/mocks.d.ts +170 -0
  161. package/dist/test-utils/mocks.d.ts.map +1 -0
  162. package/dist/test-utils/mocks.js +281 -0
  163. package/dist/test-utils/mocks.js.map +1 -0
  164. package/dist/types/config.d.ts +170 -0
  165. package/dist/types/config.d.ts.map +1 -0
  166. package/dist/types/config.js +120 -0
  167. package/dist/types/config.js.map +1 -0
  168. package/dist/types/knowledge.d.ts +95 -0
  169. package/dist/types/knowledge.d.ts.map +1 -0
  170. package/dist/types/knowledge.js +7 -0
  171. package/dist/types/knowledge.js.map +1 -0
  172. package/dist/types/loop.d.ts +148 -0
  173. package/dist/types/loop.d.ts.map +1 -0
  174. package/dist/types/loop.js +16 -0
  175. package/dist/types/loop.js.map +1 -0
  176. package/dist/types/plugin.d.ts +137 -0
  177. package/dist/types/plugin.d.ts.map +1 -0
  178. package/dist/types/plugin.js +15 -0
  179. package/dist/types/plugin.js.map +1 -0
  180. package/dist/types/response.d.ts +186 -0
  181. package/dist/types/response.d.ts.map +1 -0
  182. package/dist/types/response.js +99 -0
  183. package/dist/types/response.js.map +1 -0
  184. package/dist/types/streaming.d.ts +478 -0
  185. package/dist/types/streaming.d.ts.map +1 -0
  186. package/dist/types/streaming.js +483 -0
  187. package/dist/types/streaming.js.map +1 -0
  188. package/dist/types/tool.d.ts +118 -0
  189. package/dist/types/tool.d.ts.map +1 -0
  190. package/dist/types/tool.js +42 -0
  191. package/dist/types/tool.js.map +1 -0
  192. package/dist/utils/error.d.ts +22 -0
  193. package/dist/utils/error.d.ts.map +1 -0
  194. package/dist/utils/error.js +36 -0
  195. package/dist/utils/error.js.map +1 -0
  196. package/package.json +102 -0
@@ -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/conversation/message-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
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 type { AgentResponse, ToolCallRecord } from '../types/response.js';
10
+ /**
11
+ * Message in conversation history
12
+ */
13
+ export interface Message {
14
+ /** Unique message ID */
15
+ id: string;
16
+ /** Message role */
17
+ role: 'user' | 'assistant' | 'system';
18
+ /** Message content */
19
+ content: string;
20
+ /** Message timestamp */
21
+ timestamp: Date;
22
+ /** Tool calls made during this message (for assistant messages) */
23
+ toolCalls?: ToolCallRecord[];
24
+ /** Response type (for assistant messages) */
25
+ responseType?: string;
26
+ /** Additional metadata */
27
+ metadata?: Record<string, unknown>;
28
+ }
29
+ /**
30
+ * Conversation session
31
+ */
32
+ export interface Session {
33
+ /** Unique session ID */
34
+ id: string;
35
+ /** Messages in this session */
36
+ messages: Message[];
37
+ /** Session creation time */
38
+ createdAt: Date;
39
+ /** Last update time */
40
+ updatedAt: Date;
41
+ /** Session metadata */
42
+ metadata?: Record<string, unknown>;
43
+ /** Whether the session is active */
44
+ active: boolean;
45
+ }
46
+ /**
47
+ * Options for creating a new session
48
+ */
49
+ export interface CreateSessionOptions {
50
+ /** Custom session ID (auto-generated if not provided) */
51
+ id?: string;
52
+ /** Initial metadata */
53
+ metadata?: Record<string, unknown>;
54
+ /** Initial system message */
55
+ systemMessage?: string;
56
+ }
57
+ /**
58
+ * Options for querying sessions
59
+ */
60
+ export interface SessionQueryOptions {
61
+ /** Filter by active status */
62
+ active?: boolean;
63
+ /** Filter by creation date (after) */
64
+ createdAfter?: Date;
65
+ /** Filter by creation date (before) */
66
+ createdBefore?: Date;
67
+ /** Maximum number of sessions to return */
68
+ limit?: number;
69
+ /** Offset for pagination */
70
+ offset?: number;
71
+ }
72
+ /**
73
+ * Session Manager
74
+ *
75
+ * Manages the lifecycle of conversation sessions.
76
+ * Provides methods for creating, retrieving, and managing sessions.
77
+ */
78
+ export declare class SessionManager {
79
+ private sessions;
80
+ private defaultSessionId;
81
+ /**
82
+ * Create a new session
83
+ *
84
+ * @param options - Session creation options
85
+ * @returns The new session ID
86
+ */
87
+ createSession(options?: CreateSessionOptions): string;
88
+ /**
89
+ * Get a session by ID
90
+ *
91
+ * @param sessionId - Session ID
92
+ * @returns The session or undefined if not found
93
+ */
94
+ getSession(sessionId: string): Session | undefined;
95
+ /**
96
+ * Get or create a session
97
+ *
98
+ * @param sessionId - Session ID
99
+ * @param options - Options for creating if not exists
100
+ * @returns The session
101
+ */
102
+ getOrCreateSession(sessionId: string, options?: Omit<CreateSessionOptions, 'id'>): Session;
103
+ /**
104
+ * Check if a session exists
105
+ *
106
+ * @param sessionId - Session ID
107
+ * @returns True if session exists
108
+ */
109
+ hasSession(sessionId: string): boolean;
110
+ /**
111
+ * Get all sessions matching query options
112
+ *
113
+ * @param options - Query options
114
+ * @returns Array of matching sessions
115
+ */
116
+ querySessions(options?: SessionQueryOptions): Session[];
117
+ /**
118
+ * Get conversation history for a session
119
+ * Messages are returned in chronological order (oldest first)
120
+ *
121
+ * @param sessionId - Session ID
122
+ * @returns Array of messages ordered by timestamp
123
+ */
124
+ getHistory(sessionId: string): Message[];
125
+ /**
126
+ * Add a user message to a session
127
+ *
128
+ * @param sessionId - Session ID
129
+ * @param content - Message content
130
+ * @param metadata - Optional metadata
131
+ * @returns The created message
132
+ */
133
+ addUserMessage(sessionId: string, content: string, metadata?: Record<string, unknown>): Message;
134
+ /**
135
+ * Add an assistant message to a session
136
+ *
137
+ * @param sessionId - Session ID
138
+ * @param response - Agent response
139
+ * @param metadata - Optional metadata
140
+ * @returns The created message
141
+ */
142
+ addAssistantMessage(sessionId: string, response: AgentResponse, metadata?: Record<string, unknown>): Message;
143
+ /**
144
+ * Add a system message to a session
145
+ *
146
+ * @param sessionId - Session ID
147
+ * @param content - Message content
148
+ * @returns The created message
149
+ */
150
+ addSystemMessage(sessionId: string, content: string): Message;
151
+ /**
152
+ * Close a session (mark as inactive)
153
+ *
154
+ * @param sessionId - Session ID
155
+ * @returns True if session was closed
156
+ */
157
+ closeSession(sessionId: string): boolean;
158
+ /**
159
+ * Delete a session
160
+ *
161
+ * @param sessionId - Session ID
162
+ * @returns True if session was deleted
163
+ */
164
+ deleteSession(sessionId: string): boolean;
165
+ /**
166
+ * Clear all messages in a session
167
+ *
168
+ * @param sessionId - Session ID
169
+ * @returns True if session was cleared
170
+ */
171
+ clearSession(sessionId: string): boolean;
172
+ /**
173
+ * Update session metadata
174
+ *
175
+ * @param sessionId - Session ID
176
+ * @param metadata - New metadata (merged with existing)
177
+ * @returns True if session was updated
178
+ */
179
+ updateMetadata(sessionId: string, metadata: Record<string, unknown>): boolean;
180
+ /**
181
+ * Get the default session ID
182
+ */
183
+ getDefaultSessionId(): string;
184
+ /**
185
+ * Set the default session ID
186
+ */
187
+ setDefaultSessionId(sessionId: string): void;
188
+ /**
189
+ * Get total number of sessions
190
+ */
191
+ getSessionCount(): number;
192
+ /**
193
+ * Get total number of messages across all sessions
194
+ */
195
+ getTotalMessageCount(): number;
196
+ }
197
+ /**
198
+ * Create a new SessionManager instance
199
+ */
200
+ export declare function createSessionManager(): SessionManager;
201
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/conversation/session.ts"],"names":[],"mappings":"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"}