@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,372 @@
1
+ # Agentic
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@agenticc/core.svg)](https://www.npmjs.com/package/@agenticc/core)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Build Status](https://github.com/Chajian/agentic/workflows/CI/badge.svg)](https://github.com/Chajian/agentic/actions)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
7
+ [![Node.js](https://img.shields.io/badge/Node.js-18%2B-green.svg)](https://nodejs.org/)
8
+
9
+ [English](./README.md) | 简体中文
10
+
11
+ 一个智能 AI 智能体框架,支持 LLM、ReAct 模式执行、RAG 知识检索和可扩展工具系统。
12
+
13
+ ## 特性
14
+
15
+ - 🤖 **多 LLM 支持**: OpenAI、Anthropic Claude、Google Gemini
16
+ - 🔧 **工具调用系统**: 内置 ReAct 模式实现自主推理
17
+ - 📚 **RAG 知识库**: 语义搜索和文档检索
18
+ - 💬 **无状态架构**: 灵活的对话管理
19
+ - 📝 **审计日志**: 完整的操作跟踪
20
+ - 🔌 **插件系统**: 可扩展的自定义工具架构
21
+ - ⚡ **流式支持**: 实时响应流
22
+ - 🎯 **意图解析**: 智能请求理解
23
+
24
+ ## 安装
25
+
26
+ ```bash
27
+ npm install @agenticc/core
28
+ ```
29
+
30
+ ## 快速开始
31
+
32
+ ```typescript
33
+ import { Agent, ToolRegistry } from '@agenticc/core';
34
+
35
+ // 使用 OpenAI 初始化智能体
36
+ const agent = new Agent({
37
+ llm: {
38
+ provider: 'openai',
39
+ apiKey: process.env.OPENAI_API_KEY,
40
+ model: 'gpt-4',
41
+ },
42
+ });
43
+
44
+ // 定义一个工具
45
+ agent.tools.register({
46
+ name: 'get_weather',
47
+ description: '获取某个地点的天气信息',
48
+ parameters: {
49
+ type: 'object',
50
+ properties: {
51
+ location: { type: 'string' },
52
+ },
53
+ required: ['location'],
54
+ },
55
+ execute: async (params) => {
56
+ // 实现你的工具逻辑
57
+ return `${params.location} 的天气: ...`;
58
+ },
59
+ });
60
+
61
+ // 使用智能体(无状态 - 从你的存储传入历史记录)
62
+ const response = await agent.chat('纽约的天气怎么样?', {
63
+ history: [], // 从数据库加载
64
+ });
65
+ console.log(response);
66
+ ```
67
+
68
+ ## 配置
69
+
70
+ ### LLM 提供商
71
+
72
+ #### OpenAI
73
+ ```typescript
74
+ new Agent({
75
+ llm: {
76
+ provider: 'openai',
77
+ apiKey: 'sk-...',
78
+ model: 'gpt-4',
79
+ },
80
+ });
81
+ ```
82
+
83
+ #### Anthropic Claude
84
+ ```typescript
85
+ new Agent({
86
+ llm: {
87
+ provider: 'anthropic',
88
+ apiKey: 'sk-ant-...',
89
+ model: 'claude-3-opus-20240229',
90
+ },
91
+ });
92
+ ```
93
+
94
+ #### Google Gemini
95
+ ```typescript
96
+ new Agent({
97
+ llm: {
98
+ provider: 'openai', // 使用 OpenAI 适配器兼容 Gemini API
99
+ apiKey: process.env.GEMINI_API_KEY,
100
+ model: 'gemini-pro',
101
+ baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai/',
102
+ },
103
+ });
104
+ ```
105
+
106
+ ### 工具注册表
107
+
108
+ ```typescript
109
+ const tools = new ToolRegistry();
110
+
111
+ // 注册单个工具
112
+ tools.register({
113
+ name: 'calculator',
114
+ description: '执行数学计算',
115
+ parameters: {
116
+ type: 'object',
117
+ properties: {
118
+ expression: { type: 'string' },
119
+ },
120
+ required: ['expression'],
121
+ },
122
+ execute: async ({ expression }) => {
123
+ return eval(expression);
124
+ },
125
+ });
126
+
127
+ // 批量注册工具
128
+ tools.registerBatch([tool1, tool2, tool3]);
129
+ ```
130
+
131
+ ## 核心概念
132
+
133
+ ### 无状态架构
134
+
135
+ Agentic 采用无状态设计 - 它不存储对话历史。你需要:
136
+
137
+ 1. 从你的数据库/存储加载历史记录
138
+ 2. 将历史记录传递给 `chat()` 方法
139
+ 3. 将新消息保存回你的存储
140
+
141
+ ```typescript
142
+ // 从数据库加载
143
+ const history = await db.getMessages(sessionId);
144
+
145
+ // 处理消息
146
+ const response = await agent.chat(userMessage, {
147
+ sessionId,
148
+ history
149
+ });
150
+
151
+ // 保存到数据库
152
+ await db.saveMessage(sessionId, {
153
+ role: 'user',
154
+ content: userMessage
155
+ });
156
+ await db.saveMessage(sessionId, {
157
+ role: 'assistant',
158
+ content: response.message
159
+ });
160
+ ```
161
+
162
+ ### 插件系统
163
+
164
+ 插件允许你将相关工具组织在一起:
165
+
166
+ ```typescript
167
+ const weatherPlugin = {
168
+ name: 'weather',
169
+ version: '1.0.0',
170
+ description: '天气相关工具',
171
+ tools: [
172
+ {
173
+ name: 'get_current_weather',
174
+ description: '获取当前天气',
175
+ parameters: [...],
176
+ execute: async (params) => { ... }
177
+ },
178
+ {
179
+ name: 'get_forecast',
180
+ description: '获取天气预报',
181
+ parameters: [...],
182
+ execute: async (params) => { ... }
183
+ }
184
+ ]
185
+ };
186
+
187
+ await agent.loadPlugin(weatherPlugin);
188
+ ```
189
+
190
+ ### 流式响应
191
+
192
+ ```typescript
193
+ const stream = await agent.chatStream('给我讲个故事', {
194
+ sessionId: 'user-123',
195
+ history: []
196
+ });
197
+
198
+ for await (const chunk of stream) {
199
+ if (chunk.type === 'content') {
200
+ process.stdout.write(chunk.content);
201
+ }
202
+ }
203
+ ```
204
+
205
+ ### 事件监听
206
+
207
+ ```typescript
208
+ agent.on('tool:start', (event) => {
209
+ console.log(`开始执行工具: ${event.toolName}`);
210
+ });
211
+
212
+ agent.on('tool:end', (event) => {
213
+ console.log(`工具执行完成: ${event.toolName}`);
214
+ console.log(`结果: ${event.result}`);
215
+ });
216
+
217
+ agent.on('error', (event) => {
218
+ console.error(`错误: ${event.error.message}`);
219
+ });
220
+ ```
221
+
222
+ ## 高级用法
223
+
224
+ ### 多 LLM 配置
225
+
226
+ 为不同任务使用不同的 LLM:
227
+
228
+ ```typescript
229
+ const agent = new Agent({
230
+ llm: {
231
+ mode: 'multi',
232
+ models: {
233
+ fast: {
234
+ provider: 'openai',
235
+ model: 'gpt-3.5-turbo',
236
+ apiKey: process.env.OPENAI_API_KEY
237
+ },
238
+ smart: {
239
+ provider: 'anthropic',
240
+ model: 'claude-3-opus-20240229',
241
+ apiKey: process.env.ANTHROPIC_API_KEY
242
+ }
243
+ },
244
+ default: 'fast'
245
+ }
246
+ });
247
+
248
+ // 为特定任务使用特定模型
249
+ const response = await agent.chat('复杂问题', {
250
+ llmModel: 'smart'
251
+ });
252
+ ```
253
+
254
+ ### RAG 知识库
255
+
256
+ ```typescript
257
+ import { KnowledgeStore } from '@agenticc/core';
258
+
259
+ const knowledge = new KnowledgeStore();
260
+
261
+ // 添加文档
262
+ await knowledge.addDocument({
263
+ id: 'doc1',
264
+ content: '关于产品的重要信息...',
265
+ metadata: { source: 'manual', page: 1 }
266
+ });
267
+
268
+ // 搜索相关文档
269
+ const results = await knowledge.search('产品特性', {
270
+ limit: 5,
271
+ threshold: 0.7
272
+ });
273
+
274
+ // 在智能体中使用
275
+ const agent = new Agent({
276
+ llm: { ... },
277
+ knowledge
278
+ });
279
+ ```
280
+
281
+ ### 自定义工具验证
282
+
283
+ ```typescript
284
+ tools.register({
285
+ name: 'send_email',
286
+ description: '发送电子邮件',
287
+ parameters: {
288
+ type: 'object',
289
+ properties: {
290
+ to: { type: 'string', format: 'email' },
291
+ subject: { type: 'string', minLength: 1 },
292
+ body: { type: 'string' }
293
+ },
294
+ required: ['to', 'subject', 'body']
295
+ },
296
+ validate: async (params) => {
297
+ // 自定义验证逻辑
298
+ if (!params.to.endsWith('@company.com')) {
299
+ throw new Error('只能发送到公司邮箱');
300
+ }
301
+ },
302
+ execute: async (params) => {
303
+ // 发送邮件
304
+ }
305
+ });
306
+ ```
307
+
308
+ ## API 参考
309
+
310
+ ### Agent
311
+
312
+ 主要的智能体类。
313
+
314
+ #### 构造函数
315
+
316
+ ```typescript
317
+ new Agent(config: AgentConfig)
318
+ ```
319
+
320
+ #### 方法
321
+
322
+ - `chat(message: string, options?: ChatOptions): Promise<AgentResponse>`
323
+ - `chatStream(message: string, options?: ChatOptions): AsyncIterator<StreamChunk>`
324
+ - `loadPlugin(plugin: Plugin): Promise<void>`
325
+ - `unloadPlugin(pluginName: string): void`
326
+
327
+ ### ToolRegistry
328
+
329
+ 管理工具注册和执行。
330
+
331
+ #### 方法
332
+
333
+ - `register(tool: Tool): void`
334
+ - `registerBatch(tools: Tool[]): void`
335
+ - `unregister(toolName: string): void`
336
+ - `get(toolName: string): Tool | undefined`
337
+ - `list(): Tool[]`
338
+
339
+ ### KnowledgeStore
340
+
341
+ 管理文档和语义搜索。
342
+
343
+ #### 方法
344
+
345
+ - `addDocument(doc: Document): Promise<void>`
346
+ - `addDocuments(docs: Document[]): Promise<void>`
347
+ - `search(query: string, options?: SearchOptions): Promise<SearchResult[]>`
348
+ - `delete(docId: string): Promise<void>`
349
+
350
+ ## 示例
351
+
352
+ 查看 [examples](./examples/) 目录获取完整示例:
353
+
354
+ - [基础聊天机器人](./examples/basic-chatbot/)
355
+ - [带工具的智能体](./examples/agent-with-tools/)
356
+ - [RAG 系统](./examples/rag-system/)
357
+ - [多 LLM 路由](./examples/multi-llm/)
358
+ - [流式响应](./examples/streaming/)
359
+
360
+ ## 许可证
361
+
362
+ MIT
363
+
364
+ ## 贡献
365
+
366
+ 欢迎贡献!请查看我们的[贡献指南](../../CONTRIBUTING.zh-CN.md)。
367
+
368
+ ## 支持
369
+
370
+ - **文档**: https://chajian.github.io/agentic/
371
+ - **Issues**: https://github.com/Chajian/agentic/issues
372
+ - **讨论**: https://github.com/Chajian/agentic/discussions
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Audit Module
3
+ *
4
+ * Provides audit logging and querying capabilities for the Agent.
5
+ * Records tool executions, configuration changes, and errors.
6
+ */
7
+ export * from './logger.js';
8
+ export * from './query.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Audit Module
3
+ *
4
+ * Provides audit logging and querying capabilities for the Agent.
5
+ * Records tool executions, configuration changes, and errors.
6
+ */
7
+ export * from './logger.js';
8
+ export * from './query.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/audit/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Audit Logger
3
+ *
4
+ * Records tool executions, configuration changes, and errors
5
+ * for audit and troubleshooting purposes.
6
+ *
7
+ * _Requirements: 10.1, 10.2, 10.3_
8
+ */
9
+ /**
10
+ * Operation types that can be logged
11
+ */
12
+ export type OperationType = 'tool_execution' | 'config_change' | 'knowledge_add' | 'knowledge_delete' | 'session_create' | 'session_close' | 'error';
13
+ /**
14
+ * Status of an operation
15
+ */
16
+ export type OperationStatus = 'success' | 'failure' | 'pending';
17
+ /**
18
+ * Operation log entry
19
+ */
20
+ export interface OperationLog {
21
+ /** Unique log entry ID */
22
+ id: string;
23
+ /** Session ID associated with this operation */
24
+ sessionId?: string;
25
+ /** Type of operation */
26
+ operationType: OperationType;
27
+ /** Target of the operation (e.g., tool name, config key) */
28
+ target?: string;
29
+ /** Parameters passed to the operation */
30
+ params?: Record<string, unknown>;
31
+ /** Result of the operation */
32
+ result?: Record<string, unknown>;
33
+ /** Operation status */
34
+ status: OperationStatus;
35
+ /** Error message if operation failed */
36
+ errorMessage?: string;
37
+ /** Error stack trace if available */
38
+ errorStack?: string;
39
+ /** Timestamp when the operation occurred */
40
+ createdAt: Date;
41
+ /** Duration of the operation in milliseconds */
42
+ durationMs?: number;
43
+ /** Additional metadata */
44
+ metadata?: Record<string, unknown>;
45
+ }
46
+ /**
47
+ * Input for creating a tool execution log
48
+ */
49
+ export interface ToolExecutionLogInput {
50
+ /** Session ID */
51
+ sessionId?: string;
52
+ /** Tool name */
53
+ toolName: string;
54
+ /** Tool arguments */
55
+ args: Record<string, unknown>;
56
+ /** Execution result */
57
+ result: {
58
+ success: boolean;
59
+ content: string;
60
+ data?: unknown;
61
+ error?: {
62
+ code: string;
63
+ message: string;
64
+ details?: unknown;
65
+ };
66
+ };
67
+ /** Execution duration in milliseconds */
68
+ durationMs: number;
69
+ }
70
+ /**
71
+ * Input for creating a config change log
72
+ */
73
+ export interface ConfigChangeLogInput {
74
+ /** Session ID */
75
+ sessionId?: string;
76
+ /** Config key that was changed */
77
+ configKey: string;
78
+ /** Value before the change */
79
+ beforeValue?: unknown;
80
+ /** Value after the change */
81
+ afterValue?: unknown;
82
+ /** Additional metadata */
83
+ metadata?: Record<string, unknown>;
84
+ }
85
+ /**
86
+ * Input for creating an error log
87
+ */
88
+ export interface ErrorLogInput {
89
+ /** Session ID */
90
+ sessionId?: string;
91
+ /** Error message */
92
+ message: string;
93
+ /** Error stack trace */
94
+ stack?: string;
95
+ /** Context where the error occurred */
96
+ context?: string;
97
+ /** Additional error details */
98
+ details?: Record<string, unknown>;
99
+ }
100
+ /**
101
+ * Audit Logger
102
+ *
103
+ * In-memory audit logger that records all operations performed by the Agent.
104
+ * Provides methods for logging tool executions, config changes, and errors.
105
+ */
106
+ export declare class AuditLogger {
107
+ private logs;
108
+ private logsBySession;
109
+ private logsByType;
110
+ /**
111
+ * Log a tool execution
112
+ *
113
+ * @param input - Tool execution details
114
+ * @returns The created log entry
115
+ */
116
+ logToolExecution(input: ToolExecutionLogInput): OperationLog;
117
+ /**
118
+ * Log a configuration change
119
+ *
120
+ * @param input - Config change details
121
+ * @returns The created log entry
122
+ */
123
+ logConfigChange(input: ConfigChangeLogInput): OperationLog;
124
+ /**
125
+ * Log an error
126
+ *
127
+ * @param input - Error details
128
+ * @returns The created log entry
129
+ */
130
+ logError(input: ErrorLogInput): OperationLog;
131
+ /**
132
+ * Log a knowledge addition
133
+ *
134
+ * @param sessionId - Session ID
135
+ * @param documentId - Document ID
136
+ * @param category - Document category
137
+ * @param title - Document title
138
+ * @returns The created log entry
139
+ */
140
+ logKnowledgeAdd(sessionId: string | undefined, documentId: string, category: string, title?: string): OperationLog;
141
+ /**
142
+ * Log a knowledge deletion
143
+ *
144
+ * @param sessionId - Session ID
145
+ * @param documentId - Document ID
146
+ * @param success - Whether deletion was successful
147
+ * @returns The created log entry
148
+ */
149
+ logKnowledgeDelete(sessionId: string | undefined, documentId: string, success: boolean): OperationLog;
150
+ /**
151
+ * Log a session creation
152
+ *
153
+ * @param sessionId - Session ID
154
+ * @param metadata - Session metadata
155
+ * @returns The created log entry
156
+ */
157
+ logSessionCreate(sessionId: string, metadata?: Record<string, unknown>): OperationLog;
158
+ /**
159
+ * Log a session close
160
+ *
161
+ * @param sessionId - Session ID
162
+ * @returns The created log entry
163
+ */
164
+ logSessionClose(sessionId: string): OperationLog;
165
+ /**
166
+ * Get a log entry by ID
167
+ *
168
+ * @param logId - Log entry ID
169
+ * @returns The log entry or undefined
170
+ */
171
+ getLog(logId: string): OperationLog | undefined;
172
+ /**
173
+ * Get all logs for a session
174
+ *
175
+ * @param sessionId - Session ID
176
+ * @returns Array of log entries
177
+ */
178
+ getLogsBySession(sessionId: string): OperationLog[];
179
+ /**
180
+ * Get all logs of a specific type
181
+ *
182
+ * @param operationType - Operation type
183
+ * @returns Array of log entries
184
+ */
185
+ getLogsByType(operationType: OperationType): OperationLog[];
186
+ /**
187
+ * Get all logs
188
+ *
189
+ * @returns Array of all log entries
190
+ */
191
+ getAllLogs(): OperationLog[];
192
+ /**
193
+ * Get total log count
194
+ *
195
+ * @returns Total number of logs
196
+ */
197
+ getLogCount(): number;
198
+ /**
199
+ * Clear all logs
200
+ */
201
+ clear(): void;
202
+ /**
203
+ * Add a log entry to storage
204
+ */
205
+ private addLog;
206
+ }
207
+ /**
208
+ * Create a new AuditLogger instance
209
+ */
210
+ export declare function createAuditLogger(): AuditLogger;
211
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,uBAAuB;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,SAAS,EAAE,IAAI,CAAC;IAChB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,uBAAuB;IACvB,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC;KACH,CAAC;IACF,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAwC;IAGpD,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,UAAU,CAA8C;IAEhE;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY;IA0B5D;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY;IAuB1D;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY;IAiB5C;;;;;;;;OAQG;IACH,eAAe,CACb,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,YAAY;IAef;;;;;;;OAOG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,YAAY;IAcf;;;;;;OAMG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;IAerF;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAchD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/C;;;;;OAKG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAWnD;;;;;OAKG;IACH,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,YAAY,EAAE;IAW3D;;;;OAIG;IACH,UAAU,IAAI,YAAY,EAAE;IAM5B;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,MAAM;CAiBf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C"}