@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,483 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming Response Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the interfaces for Server-Sent Events (SSE) streaming responses.
|
|
5
|
+
* Used for real-time feedback during long-running AI assistant operations.
|
|
6
|
+
*
|
|
7
|
+
* Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 3.5, 8.1, 8.2, 8.4, 10.4
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// SSE Event Types
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* All possible SSE event types
|
|
14
|
+
*/
|
|
15
|
+
export const SSE_EVENT_TYPES = [
|
|
16
|
+
'processing_started',
|
|
17
|
+
'iteration_started',
|
|
18
|
+
'iteration_completed',
|
|
19
|
+
'content_chunk',
|
|
20
|
+
'tool_call_started',
|
|
21
|
+
'tool_call_completed',
|
|
22
|
+
'tool_error',
|
|
23
|
+
'knowledge_retrieved',
|
|
24
|
+
'confirmation_check',
|
|
25
|
+
'decision',
|
|
26
|
+
'completed',
|
|
27
|
+
'error',
|
|
28
|
+
'cancelled',
|
|
29
|
+
'heartbeat',
|
|
30
|
+
'max_iterations',
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Default streaming configuration
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_STREAMING_CONFIG = {
|
|
36
|
+
enabled: true,
|
|
37
|
+
maxDuration: 5 * 60 * 1000, // 5 minutes
|
|
38
|
+
heartbeatInterval: 15 * 1000, // 15 seconds
|
|
39
|
+
maxConcurrent: 100,
|
|
40
|
+
enableBatching: false,
|
|
41
|
+
batchInterval: 50, // 50ms
|
|
42
|
+
};
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// Error Handling Types
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Error codes for streaming errors
|
|
48
|
+
*/
|
|
49
|
+
export const STREAMING_ERROR_CODES = [
|
|
50
|
+
'LLM_API_ERROR',
|
|
51
|
+
'TOOL_EXECUTION_FAILED',
|
|
52
|
+
'KNOWLEDGE_RETRIEVAL_FAILED',
|
|
53
|
+
'RATE_LIMIT_EXCEEDED',
|
|
54
|
+
'CONTEXT_LENGTH_EXCEEDED',
|
|
55
|
+
'AGENT_CRASH',
|
|
56
|
+
'DATABASE_ERROR',
|
|
57
|
+
'NETWORK_ERROR',
|
|
58
|
+
'TIMEOUT',
|
|
59
|
+
'INVALID_REQUEST',
|
|
60
|
+
'STREAM_CLOSED',
|
|
61
|
+
'MAX_CONCURRENT_EXCEEDED',
|
|
62
|
+
'UNKNOWN_ERROR',
|
|
63
|
+
];
|
|
64
|
+
/**
|
|
65
|
+
* Cancellation reasons
|
|
66
|
+
*/
|
|
67
|
+
export const CANCELLATION_REASONS = [
|
|
68
|
+
'user_cancelled',
|
|
69
|
+
'client_disconnected',
|
|
70
|
+
'timeout',
|
|
71
|
+
'server_shutdown',
|
|
72
|
+
];
|
|
73
|
+
/**
|
|
74
|
+
* Default error handling strategies
|
|
75
|
+
*/
|
|
76
|
+
export const DEFAULT_ERROR_HANDLING = {
|
|
77
|
+
LLM_API_ERROR: {
|
|
78
|
+
code: 'LLM_API_ERROR',
|
|
79
|
+
recoverable: false,
|
|
80
|
+
strategy: 'abort',
|
|
81
|
+
},
|
|
82
|
+
TOOL_EXECUTION_FAILED: {
|
|
83
|
+
code: 'TOOL_EXECUTION_FAILED',
|
|
84
|
+
recoverable: true,
|
|
85
|
+
strategy: 'continue',
|
|
86
|
+
},
|
|
87
|
+
KNOWLEDGE_RETRIEVAL_FAILED: {
|
|
88
|
+
code: 'KNOWLEDGE_RETRIEVAL_FAILED',
|
|
89
|
+
recoverable: true,
|
|
90
|
+
strategy: 'continue',
|
|
91
|
+
},
|
|
92
|
+
RATE_LIMIT_EXCEEDED: {
|
|
93
|
+
code: 'RATE_LIMIT_EXCEEDED',
|
|
94
|
+
recoverable: true,
|
|
95
|
+
strategy: 'retry',
|
|
96
|
+
maxRetries: 3,
|
|
97
|
+
retryDelay: 1000,
|
|
98
|
+
},
|
|
99
|
+
CONTEXT_LENGTH_EXCEEDED: {
|
|
100
|
+
code: 'CONTEXT_LENGTH_EXCEEDED',
|
|
101
|
+
recoverable: false,
|
|
102
|
+
strategy: 'abort',
|
|
103
|
+
},
|
|
104
|
+
AGENT_CRASH: {
|
|
105
|
+
code: 'AGENT_CRASH',
|
|
106
|
+
recoverable: false,
|
|
107
|
+
strategy: 'abort',
|
|
108
|
+
},
|
|
109
|
+
DATABASE_ERROR: {
|
|
110
|
+
code: 'DATABASE_ERROR',
|
|
111
|
+
recoverable: false,
|
|
112
|
+
strategy: 'abort',
|
|
113
|
+
},
|
|
114
|
+
NETWORK_ERROR: {
|
|
115
|
+
code: 'NETWORK_ERROR',
|
|
116
|
+
recoverable: true,
|
|
117
|
+
strategy: 'retry',
|
|
118
|
+
maxRetries: 3,
|
|
119
|
+
retryDelay: 500,
|
|
120
|
+
},
|
|
121
|
+
TIMEOUT: {
|
|
122
|
+
code: 'TIMEOUT',
|
|
123
|
+
recoverable: true,
|
|
124
|
+
strategy: 'retry',
|
|
125
|
+
maxRetries: 2,
|
|
126
|
+
retryDelay: 1000,
|
|
127
|
+
},
|
|
128
|
+
INVALID_REQUEST: {
|
|
129
|
+
code: 'INVALID_REQUEST',
|
|
130
|
+
recoverable: false,
|
|
131
|
+
strategy: 'abort',
|
|
132
|
+
},
|
|
133
|
+
STREAM_CLOSED: {
|
|
134
|
+
code: 'STREAM_CLOSED',
|
|
135
|
+
recoverable: false,
|
|
136
|
+
strategy: 'abort',
|
|
137
|
+
},
|
|
138
|
+
MAX_CONCURRENT_EXCEEDED: {
|
|
139
|
+
code: 'MAX_CONCURRENT_EXCEEDED',
|
|
140
|
+
recoverable: false,
|
|
141
|
+
strategy: 'abort',
|
|
142
|
+
},
|
|
143
|
+
UNKNOWN_ERROR: {
|
|
144
|
+
code: 'UNKNOWN_ERROR',
|
|
145
|
+
recoverable: false,
|
|
146
|
+
strategy: 'abort',
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
// ============================================================================
|
|
150
|
+
// Type Guards
|
|
151
|
+
// ============================================================================
|
|
152
|
+
/**
|
|
153
|
+
* Type guard to check if a value is a valid SSE event type
|
|
154
|
+
*/
|
|
155
|
+
export function isValidSSEEventType(type) {
|
|
156
|
+
return typeof type === 'string' && SSE_EVENT_TYPES.includes(type);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Type guard to check if a value is a valid streaming error code
|
|
160
|
+
*/
|
|
161
|
+
export function isValidStreamingErrorCode(code) {
|
|
162
|
+
return typeof code === 'string' && STREAMING_ERROR_CODES.includes(code);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Type guard to check if a value is a valid cancellation reason
|
|
166
|
+
*/
|
|
167
|
+
export function isValidCancellationReason(reason) {
|
|
168
|
+
return typeof reason === 'string' && CANCELLATION_REASONS.includes(reason);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Type guard for ProcessingStartedEvent
|
|
172
|
+
*/
|
|
173
|
+
export function isProcessingStartedEvent(event) {
|
|
174
|
+
return event.type === 'processing_started';
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Type guard for IterationStartedEvent
|
|
178
|
+
*/
|
|
179
|
+
export function isIterationStartedEvent(event) {
|
|
180
|
+
return event.type === 'iteration_started';
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Type guard for IterationCompletedEvent
|
|
184
|
+
*/
|
|
185
|
+
export function isIterationCompletedEvent(event) {
|
|
186
|
+
return event.type === 'iteration_completed';
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Type guard for ContentChunkEvent
|
|
190
|
+
*/
|
|
191
|
+
export function isContentChunkEvent(event) {
|
|
192
|
+
return event.type === 'content_chunk';
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Type guard for ToolCallStartedEvent
|
|
196
|
+
*/
|
|
197
|
+
export function isToolCallStartedEvent(event) {
|
|
198
|
+
return event.type === 'tool_call_started';
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Type guard for ToolCallCompletedEvent
|
|
202
|
+
*/
|
|
203
|
+
export function isToolCallCompletedEvent(event) {
|
|
204
|
+
return event.type === 'tool_call_completed';
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Type guard for ToolErrorEvent
|
|
208
|
+
*/
|
|
209
|
+
export function isToolErrorEvent(event) {
|
|
210
|
+
return event.type === 'tool_error';
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Type guard for ErrorEvent
|
|
214
|
+
*/
|
|
215
|
+
export function isErrorEvent(event) {
|
|
216
|
+
return event.type === 'error';
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Type guard for CancelledEvent
|
|
220
|
+
*/
|
|
221
|
+
export function isCancelledEvent(event) {
|
|
222
|
+
return event.type === 'cancelled';
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Type guard for CompletedEvent
|
|
226
|
+
*/
|
|
227
|
+
export function isCompletedEvent(event) {
|
|
228
|
+
return event.type === 'completed';
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Type guard for HeartbeatEvent
|
|
232
|
+
*/
|
|
233
|
+
export function isHeartbeatEvent(event) {
|
|
234
|
+
return event.type === 'heartbeat';
|
|
235
|
+
}
|
|
236
|
+
// ============================================================================
|
|
237
|
+
// Factory Functions
|
|
238
|
+
// ============================================================================
|
|
239
|
+
let eventIdCounter = 0;
|
|
240
|
+
/**
|
|
241
|
+
* Generates a unique event ID
|
|
242
|
+
*/
|
|
243
|
+
export function generateEventId() {
|
|
244
|
+
return `evt_${Date.now()}_${++eventIdCounter}`;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Creates a base event with common fields
|
|
248
|
+
*/
|
|
249
|
+
function createBaseEvent(type, sessionId) {
|
|
250
|
+
return {
|
|
251
|
+
id: generateEventId(),
|
|
252
|
+
type,
|
|
253
|
+
timestamp: Date.now(),
|
|
254
|
+
sessionId,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Creates a ProcessingStartedEvent
|
|
259
|
+
*/
|
|
260
|
+
export function createProcessingStartedEvent(sessionId, messageId) {
|
|
261
|
+
return {
|
|
262
|
+
...createBaseEvent('processing_started', sessionId),
|
|
263
|
+
data: { messageId },
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Creates an IterationStartedEvent
|
|
268
|
+
*/
|
|
269
|
+
export function createIterationStartedEvent(sessionId, iteration, maxIterations) {
|
|
270
|
+
return {
|
|
271
|
+
...createBaseEvent('iteration_started', sessionId),
|
|
272
|
+
data: { iteration, maxIterations },
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Creates an IterationCompletedEvent
|
|
277
|
+
*/
|
|
278
|
+
export function createIterationCompletedEvent(sessionId, iteration, duration, toolCallCount) {
|
|
279
|
+
return {
|
|
280
|
+
...createBaseEvent('iteration_completed', sessionId),
|
|
281
|
+
data: { iteration, duration, toolCallCount },
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Creates a ContentChunkEvent
|
|
286
|
+
*/
|
|
287
|
+
export function createContentChunkEvent(sessionId, content, isComplete) {
|
|
288
|
+
return {
|
|
289
|
+
...createBaseEvent('content_chunk', sessionId),
|
|
290
|
+
data: { content, isComplete },
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Creates a ToolCallStartedEvent
|
|
295
|
+
*/
|
|
296
|
+
export function createToolCallStartedEvent(sessionId, toolCallId, toolName, args) {
|
|
297
|
+
return {
|
|
298
|
+
...createBaseEvent('tool_call_started', sessionId),
|
|
299
|
+
data: { toolCallId, toolName, arguments: args },
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Creates a ToolCallCompletedEvent
|
|
304
|
+
*/
|
|
305
|
+
export function createToolCallCompletedEvent(sessionId, toolCallId, toolName, success, duration, result) {
|
|
306
|
+
return {
|
|
307
|
+
...createBaseEvent('tool_call_completed', sessionId),
|
|
308
|
+
data: { toolCallId, toolName, success, duration, result },
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Creates a ToolErrorEvent
|
|
313
|
+
*/
|
|
314
|
+
export function createToolErrorEvent(sessionId, toolCallId, toolName, error, recoverable) {
|
|
315
|
+
return {
|
|
316
|
+
...createBaseEvent('tool_error', sessionId),
|
|
317
|
+
data: { toolCallId, toolName, error, recoverable },
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Creates a KnowledgeRetrievedEvent
|
|
322
|
+
*/
|
|
323
|
+
export function createKnowledgeRetrievedEvent(sessionId, documentCount, categories) {
|
|
324
|
+
return {
|
|
325
|
+
...createBaseEvent('knowledge_retrieved', sessionId),
|
|
326
|
+
data: { documentCount, categories },
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Creates a ConfirmationCheckEvent
|
|
331
|
+
*/
|
|
332
|
+
export function createConfirmationCheckEvent(sessionId, description) {
|
|
333
|
+
return {
|
|
334
|
+
...createBaseEvent('confirmation_check', sessionId),
|
|
335
|
+
data: { description },
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Creates a DecisionEvent
|
|
340
|
+
*/
|
|
341
|
+
export function createDecisionEvent(sessionId, reason, completed) {
|
|
342
|
+
return {
|
|
343
|
+
...createBaseEvent('decision', sessionId),
|
|
344
|
+
data: { reason, completed },
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Creates a CompletedEvent
|
|
349
|
+
*/
|
|
350
|
+
export function createCompletedEvent(sessionId, messageId, totalDuration, iterations, toolCalls) {
|
|
351
|
+
return {
|
|
352
|
+
...createBaseEvent('completed', sessionId),
|
|
353
|
+
data: { messageId, totalDuration, iterations, toolCalls },
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Creates a MaxIterationsEvent
|
|
358
|
+
*/
|
|
359
|
+
export function createMaxIterationsEvent(sessionId, iterations, partialContent) {
|
|
360
|
+
return {
|
|
361
|
+
...createBaseEvent('max_iterations', sessionId),
|
|
362
|
+
data: { iterations, partialContent },
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Creates an ErrorEvent
|
|
367
|
+
*/
|
|
368
|
+
export function createErrorEvent(sessionId, code, message, recoverable, details) {
|
|
369
|
+
return {
|
|
370
|
+
...createBaseEvent('error', sessionId),
|
|
371
|
+
data: { code, message, recoverable, details },
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Creates a CancelledEvent
|
|
376
|
+
*/
|
|
377
|
+
export function createCancelledEvent(sessionId, reason, partialContent) {
|
|
378
|
+
return {
|
|
379
|
+
...createBaseEvent('cancelled', sessionId),
|
|
380
|
+
data: { reason, partialContent },
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Creates a HeartbeatEvent
|
|
385
|
+
*/
|
|
386
|
+
export function createHeartbeatEvent(sessionId) {
|
|
387
|
+
return {
|
|
388
|
+
...createBaseEvent('heartbeat', sessionId),
|
|
389
|
+
data: { serverTime: Date.now() },
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
// ============================================================================
|
|
393
|
+
// Utility Functions
|
|
394
|
+
// ============================================================================
|
|
395
|
+
/**
|
|
396
|
+
* Formats an SSE event for transmission
|
|
397
|
+
*/
|
|
398
|
+
export function formatSSEEvent(event) {
|
|
399
|
+
const lines = [];
|
|
400
|
+
lines.push(`id: ${event.id}`);
|
|
401
|
+
lines.push(`event: ${event.type}`);
|
|
402
|
+
lines.push(`data: ${JSON.stringify(event)}`);
|
|
403
|
+
lines.push(''); // Empty line to end the event
|
|
404
|
+
return lines.join('\n') + '\n';
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Parses an SSE event from a string
|
|
408
|
+
*/
|
|
409
|
+
export function parseSSEEvent(eventString) {
|
|
410
|
+
const lines = eventString.split('\n');
|
|
411
|
+
let data = null;
|
|
412
|
+
for (const line of lines) {
|
|
413
|
+
if (line.startsWith('data: ')) {
|
|
414
|
+
data = line.slice(6);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (!data) {
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
try {
|
|
421
|
+
return JSON.parse(data);
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
return null;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Gets the error handling configuration for an error code
|
|
429
|
+
*/
|
|
430
|
+
export function getErrorHandling(code) {
|
|
431
|
+
return DEFAULT_ERROR_HANDLING[code] ?? DEFAULT_ERROR_HANDLING.UNKNOWN_ERROR;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Checks if an error is recoverable
|
|
435
|
+
*/
|
|
436
|
+
export function isRecoverableError(code) {
|
|
437
|
+
return getErrorHandling(code).recoverable;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Creates a new StreamContext
|
|
441
|
+
*/
|
|
442
|
+
export function createStreamContext(id, sessionId, userId) {
|
|
443
|
+
return {
|
|
444
|
+
id,
|
|
445
|
+
sessionId,
|
|
446
|
+
userId,
|
|
447
|
+
status: 'active',
|
|
448
|
+
startTime: Date.now(),
|
|
449
|
+
lastEventId: 0,
|
|
450
|
+
abortController: new AbortController(),
|
|
451
|
+
accumulatedContent: '',
|
|
452
|
+
eventCount: 0,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Validates streaming configuration
|
|
457
|
+
*/
|
|
458
|
+
export function validateStreamingConfig(config) {
|
|
459
|
+
const errors = [];
|
|
460
|
+
if (config.maxDuration !== undefined && config.maxDuration < 1000) {
|
|
461
|
+
errors.push('maxDuration must be at least 1000ms (1 second)');
|
|
462
|
+
}
|
|
463
|
+
if (config.heartbeatInterval !== undefined && config.heartbeatInterval < 1000) {
|
|
464
|
+
errors.push('heartbeatInterval must be at least 1000ms (1 second)');
|
|
465
|
+
}
|
|
466
|
+
if (config.maxConcurrent !== undefined && config.maxConcurrent < 1) {
|
|
467
|
+
errors.push('maxConcurrent must be at least 1');
|
|
468
|
+
}
|
|
469
|
+
if (config.batchInterval !== undefined && config.batchInterval < 10) {
|
|
470
|
+
errors.push('batchInterval must be at least 10ms');
|
|
471
|
+
}
|
|
472
|
+
return errors;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Merges partial config with defaults
|
|
476
|
+
*/
|
|
477
|
+
export function mergeStreamingConfig(partial) {
|
|
478
|
+
return {
|
|
479
|
+
...DEFAULT_STREAMING_CONFIG,
|
|
480
|
+
...partial,
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/types/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool System Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the interfaces for the Agent's tool registration and execution system.
|
|
5
|
+
* Tools are the primary way the Agent interacts with external systems.
|
|
6
|
+
*/
|
|
7
|
+
import type { KnowledgeBase } from './knowledge.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parameter type for tool definitions
|
|
10
|
+
*/
|
|
11
|
+
export type ToolParameterType = 'string' | 'number' | 'boolean' | 'object' | 'array';
|
|
12
|
+
/**
|
|
13
|
+
* Defines a single parameter for a tool
|
|
14
|
+
*/
|
|
15
|
+
export interface ToolParameter {
|
|
16
|
+
/** Parameter name */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Parameter data type */
|
|
19
|
+
type: ToolParameterType;
|
|
20
|
+
/** Human-readable description of the parameter */
|
|
21
|
+
description: string;
|
|
22
|
+
/** Whether this parameter is required */
|
|
23
|
+
required: boolean;
|
|
24
|
+
/** Optional list of allowed values */
|
|
25
|
+
enum?: string[];
|
|
26
|
+
/** Default value if not provided */
|
|
27
|
+
default?: unknown;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Context provided to tool execution
|
|
31
|
+
*/
|
|
32
|
+
export interface ToolContext {
|
|
33
|
+
/** Access to the knowledge base for RAG operations */
|
|
34
|
+
knowledgeBase: KnowledgeBase;
|
|
35
|
+
/** Current conversation session ID */
|
|
36
|
+
sessionId: string;
|
|
37
|
+
/** Logger for tool operations */
|
|
38
|
+
logger: ToolLogger;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Logger interface for tool operations
|
|
42
|
+
*/
|
|
43
|
+
export interface ToolLogger {
|
|
44
|
+
info(message: string, data?: Record<string, unknown>): void;
|
|
45
|
+
warn(message: string, data?: Record<string, unknown>): void;
|
|
46
|
+
error(message: string, data?: Record<string, unknown>): void;
|
|
47
|
+
debug(message: string, data?: Record<string, unknown>): void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Result of a tool execution
|
|
51
|
+
*/
|
|
52
|
+
export interface ToolResult {
|
|
53
|
+
/** Whether the execution was successful */
|
|
54
|
+
success: boolean;
|
|
55
|
+
/** Human-readable result message */
|
|
56
|
+
content: string;
|
|
57
|
+
/** Optional structured data from the execution */
|
|
58
|
+
data?: unknown;
|
|
59
|
+
/** Error details if execution failed */
|
|
60
|
+
error?: {
|
|
61
|
+
code: string;
|
|
62
|
+
message: string;
|
|
63
|
+
details?: unknown;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Tool execution function signature
|
|
68
|
+
*/
|
|
69
|
+
export type ToolExecutor = (args: Record<string, unknown>, context: ToolContext) => Promise<ToolResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Complete tool definition
|
|
72
|
+
*/
|
|
73
|
+
export interface Tool {
|
|
74
|
+
/** Unique tool name (used for Function Calling) */
|
|
75
|
+
name: string;
|
|
76
|
+
/** Human-readable description of what the tool does */
|
|
77
|
+
description: string;
|
|
78
|
+
/** List of parameters the tool accepts */
|
|
79
|
+
parameters: ToolParameter[];
|
|
80
|
+
/** The function that executes the tool */
|
|
81
|
+
execute: ToolExecutor;
|
|
82
|
+
/** Optional category for grouping tools */
|
|
83
|
+
category?: string;
|
|
84
|
+
/** Whether this tool requires confirmation before execution */
|
|
85
|
+
requiresConfirmation?: boolean;
|
|
86
|
+
/** Risk level of this tool's operations */
|
|
87
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Tool definition format for LLM Function Calling
|
|
91
|
+
* This is the format expected by OpenAI/Claude APIs
|
|
92
|
+
*/
|
|
93
|
+
export interface ToolDefinition {
|
|
94
|
+
type: 'function';
|
|
95
|
+
function: {
|
|
96
|
+
name: string;
|
|
97
|
+
description: string;
|
|
98
|
+
parameters: {
|
|
99
|
+
type: 'object';
|
|
100
|
+
properties: Record<string, ToolPropertySchema>;
|
|
101
|
+
required: string[];
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* JSON Schema property definition for tool parameters
|
|
107
|
+
*/
|
|
108
|
+
export interface ToolPropertySchema {
|
|
109
|
+
type: string;
|
|
110
|
+
description: string;
|
|
111
|
+
enum?: string[];
|
|
112
|
+
default?: unknown;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Converts a Tool to a ToolDefinition for LLM Function Calling
|
|
116
|
+
*/
|
|
117
|
+
export declare function toolToDefinition(tool: Tool): ToolDefinition;
|
|
118
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool System Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the interfaces for the Agent's tool registration and execution system.
|
|
5
|
+
* Tools are the primary way the Agent interacts with external systems.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Converts a Tool to a ToolDefinition for LLM Function Calling
|
|
9
|
+
*/
|
|
10
|
+
export function toolToDefinition(tool) {
|
|
11
|
+
const properties = {};
|
|
12
|
+
const required = [];
|
|
13
|
+
for (const param of tool.parameters) {
|
|
14
|
+
const propSchema = {
|
|
15
|
+
type: param.type,
|
|
16
|
+
description: param.description,
|
|
17
|
+
};
|
|
18
|
+
if (param.enum) {
|
|
19
|
+
propSchema.enum = param.enum;
|
|
20
|
+
}
|
|
21
|
+
if (param.default !== undefined) {
|
|
22
|
+
propSchema.default = param.default;
|
|
23
|
+
}
|
|
24
|
+
properties[param.name] = propSchema;
|
|
25
|
+
if (param.required) {
|
|
26
|
+
required.push(param.name);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
type: 'function',
|
|
31
|
+
function: {
|
|
32
|
+
name: tool.name,
|
|
33
|
+
description: tool.description,
|
|
34
|
+
parameters: {
|
|
35
|
+
type: 'object',
|
|
36
|
+
properties,
|
|
37
|
+
required,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0HH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,MAAM,UAAU,GAAuC,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,UAAU,GAAuB;YACrC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACrC,CAAC;QACD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAEpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,QAAQ;aACT;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handling Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides safe error message extraction to prevent '[object Object]' in error messages.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Safely extract error message from unknown error type
|
|
8
|
+
*
|
|
9
|
+
* @param error - Unknown error value
|
|
10
|
+
* @returns Human-readable error message
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* try {
|
|
15
|
+
* throw new Error('Something went wrong');
|
|
16
|
+
* } catch (error) {
|
|
17
|
+
* console.log(getErrorMessage(error)); // "Something went wrong"
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
22
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAatD"}
|