@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,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"}