@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.
- package/LICENSE +21 -0
- package/README.md +370 -0
- package/README.zh-CN.md +372 -0
- package/dist/audit/index.d.ts +9 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +9 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/logger.d.ts +211 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +268 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/query.d.ts +164 -0
- package/dist/audit/query.d.ts.map +1 -0
- package/dist/audit/query.js +250 -0
- package/dist/audit/query.js.map +1 -0
- package/dist/conversation/context-builder.d.ts +119 -0
- package/dist/conversation/context-builder.d.ts.map +1 -0
- package/dist/conversation/context-builder.js +252 -0
- package/dist/conversation/context-builder.js.map +1 -0
- package/dist/conversation/index.d.ts +10 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +10 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/message-store.d.ts +231 -0
- package/dist/conversation/message-store.d.ts.map +1 -0
- package/dist/conversation/message-store.js +404 -0
- package/dist/conversation/message-store.js.map +1 -0
- package/dist/conversation/session.d.ts +201 -0
- package/dist/conversation/session.d.ts.map +1 -0
- package/dist/conversation/session.js +285 -0
- package/dist/conversation/session.js.map +1 -0
- package/dist/core/agent.d.ts +277 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +674 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agentic-loop.d.ts +98 -0
- package/dist/core/agentic-loop.d.ts.map +1 -0
- package/dist/core/agentic-loop.js +496 -0
- package/dist/core/agentic-loop.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/intent-parser.d.ts +101 -0
- package/dist/core/intent-parser.d.ts.map +1 -0
- package/dist/core/intent-parser.js +221 -0
- package/dist/core/intent-parser.js.map +1 -0
- package/dist/core/plan-generator.d.ts +133 -0
- package/dist/core/plan-generator.d.ts.map +1 -0
- package/dist/core/plan-generator.js +294 -0
- package/dist/core/plan-generator.js.map +1 -0
- package/dist/core/plugin-manager.d.ts +120 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +369 -0
- package/dist/core/plugin-manager.js.map +1 -0
- package/dist/core/response-handler.d.ts +141 -0
- package/dist/core/response-handler.d.ts.map +1 -0
- package/dist/core/response-handler.js +384 -0
- package/dist/core/response-handler.js.map +1 -0
- package/dist/core/tool-executor.d.ts +143 -0
- package/dist/core/tool-executor.d.ts.map +1 -0
- package/dist/core/tool-executor.js +354 -0
- package/dist/core/tool-executor.js.map +1 -0
- package/dist/core/tool-registry.d.ts +133 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +252 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/chunker.d.ts +78 -0
- package/dist/knowledge/chunker.d.ts.map +1 -0
- package/dist/knowledge/chunker.js +233 -0
- package/dist/knowledge/chunker.js.map +1 -0
- package/dist/knowledge/embedder.d.ts +93 -0
- package/dist/knowledge/embedder.d.ts.map +1 -0
- package/dist/knowledge/embedder.js +205 -0
- package/dist/knowledge/embedder.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +11 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/loaders/index.d.ts +10 -0
- package/dist/knowledge/loaders/index.d.ts.map +1 -0
- package/dist/knowledge/loaders/index.js +10 -0
- package/dist/knowledge/loaders/index.js.map +1 -0
- package/dist/knowledge/loaders/markdown.d.ts +88 -0
- package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
- package/dist/knowledge/loaders/markdown.js +205 -0
- package/dist/knowledge/loaders/markdown.js.map +1 -0
- package/dist/knowledge/loaders/yaml.d.ts +112 -0
- package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
- package/dist/knowledge/loaders/yaml.js +368 -0
- package/dist/knowledge/loaders/yaml.js.map +1 -0
- package/dist/knowledge/retriever.d.ts +144 -0
- package/dist/knowledge/retriever.d.ts.map +1 -0
- package/dist/knowledge/retriever.js +399 -0
- package/dist/knowledge/retriever.js.map +1 -0
- package/dist/knowledge/store.d.ts +146 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +420 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/llm/adapter.d.ts +194 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +42 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/adapters/anyrouter.d.ts +84 -0
- package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
- package/dist/llm/adapters/anyrouter.js +372 -0
- package/dist/llm/adapters/anyrouter.js.map +1 -0
- package/dist/llm/adapters/claude.d.ts +66 -0
- package/dist/llm/adapters/claude.d.ts.map +1 -0
- package/dist/llm/adapters/claude.js +323 -0
- package/dist/llm/adapters/claude.js.map +1 -0
- package/dist/llm/adapters/index.d.ts +12 -0
- package/dist/llm/adapters/index.d.ts.map +1 -0
- package/dist/llm/adapters/index.js +12 -0
- package/dist/llm/adapters/index.js.map +1 -0
- package/dist/llm/adapters/mimo.d.ts +85 -0
- package/dist/llm/adapters/mimo.d.ts.map +1 -0
- package/dist/llm/adapters/mimo.js +316 -0
- package/dist/llm/adapters/mimo.js.map +1 -0
- package/dist/llm/adapters/openai.d.ts +53 -0
- package/dist/llm/adapters/openai.d.ts.map +1 -0
- package/dist/llm/adapters/openai.js +293 -0
- package/dist/llm/adapters/openai.js.map +1 -0
- package/dist/llm/adapters/qwen.d.ts +53 -0
- package/dist/llm/adapters/qwen.d.ts.map +1 -0
- package/dist/llm/adapters/qwen.js +299 -0
- package/dist/llm/adapters/qwen.js.map +1 -0
- package/dist/llm/adapters/siliconflow.d.ts +69 -0
- package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
- package/dist/llm/adapters/siliconflow.js +331 -0
- package/dist/llm/adapters/siliconflow.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +12 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/manager.d.ts +97 -0
- package/dist/llm/manager.d.ts.map +1 -0
- package/dist/llm/manager.js +337 -0
- package/dist/llm/manager.js.map +1 -0
- package/dist/test-utils/arbitraries.d.ts +230 -0
- package/dist/test-utils/arbitraries.d.ts.map +1 -0
- package/dist/test-utils/arbitraries.js +280 -0
- package/dist/test-utils/arbitraries.js.map +1 -0
- package/dist/test-utils/cleanup.d.ts +184 -0
- package/dist/test-utils/cleanup.d.ts.map +1 -0
- package/dist/test-utils/cleanup.js +282 -0
- package/dist/test-utils/cleanup.js.map +1 -0
- package/dist/test-utils/config.d.ts +80 -0
- package/dist/test-utils/config.d.ts.map +1 -0
- package/dist/test-utils/config.js +94 -0
- package/dist/test-utils/config.js.map +1 -0
- package/dist/test-utils/index.d.ts +10 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +36 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/mocks.d.ts +170 -0
- package/dist/test-utils/mocks.d.ts.map +1 -0
- package/dist/test-utils/mocks.js +281 -0
- package/dist/test-utils/mocks.js.map +1 -0
- package/dist/types/config.d.ts +170 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +120 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/knowledge.d.ts +95 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +7 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/loop.d.ts +148 -0
- package/dist/types/loop.d.ts.map +1 -0
- package/dist/types/loop.js +16 -0
- package/dist/types/loop.js.map +1 -0
- package/dist/types/plugin.d.ts +137 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +15 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/response.d.ts +186 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +99 -0
- package/dist/types/response.js.map +1 -0
- package/dist/types/streaming.d.ts +478 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +483 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/tool.d.ts +118 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +42 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/error.d.ts +22 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +36 -0
- package/dist/utils/error.js.map +1 -0
- 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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"}
|