@zhin.js/core 1.0.37 → 1.0.38

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/CHANGELOG.md +9 -0
  2. package/README.md +57 -3
  3. package/lib/adapter.d.ts +11 -0
  4. package/lib/adapter.d.ts.map +1 -1
  5. package/lib/adapter.js +61 -0
  6. package/lib/adapter.js.map +1 -1
  7. package/lib/ai/index.d.ts +3 -39
  8. package/lib/ai/index.d.ts.map +1 -1
  9. package/lib/ai/index.js +2 -44
  10. package/lib/ai/index.js.map +1 -1
  11. package/lib/ai/types.d.ts +4 -3
  12. package/lib/ai/types.d.ts.map +1 -1
  13. package/lib/built/ai-trigger.js.map +1 -1
  14. package/lib/built/common-adapter-tools.d.ts +55 -0
  15. package/lib/built/common-adapter-tools.d.ts.map +1 -0
  16. package/lib/built/common-adapter-tools.js +158 -0
  17. package/lib/built/common-adapter-tools.js.map +1 -0
  18. package/lib/built/dispatcher.d.ts.map +1 -1
  19. package/lib/built/dispatcher.js +50 -46
  20. package/lib/built/dispatcher.js.map +1 -1
  21. package/lib/built/skill.d.ts.map +1 -1
  22. package/lib/built/skill.js +0 -1
  23. package/lib/built/skill.js.map +1 -1
  24. package/lib/built/tool.d.ts +3 -3
  25. package/lib/built/tool.d.ts.map +1 -1
  26. package/lib/built/tool.js.map +1 -1
  27. package/lib/feature.d.ts +16 -1
  28. package/lib/feature.d.ts.map +1 -1
  29. package/lib/feature.js +41 -2
  30. package/lib/feature.js.map +1 -1
  31. package/lib/index.d.ts +1 -0
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.js +2 -0
  34. package/lib/index.js.map +1 -1
  35. package/lib/plugin.d.ts +38 -1
  36. package/lib/plugin.d.ts.map +1 -1
  37. package/lib/plugin.js +73 -22
  38. package/lib/plugin.js.map +1 -1
  39. package/lib/scheduler/scheduler.js +1 -1
  40. package/lib/scheduler/scheduler.js.map +1 -1
  41. package/lib/types.d.ts +43 -28
  42. package/lib/types.d.ts.map +1 -1
  43. package/lib/utils.d.ts +12 -3
  44. package/lib/utils.d.ts.map +1 -1
  45. package/lib/utils.js +64 -54
  46. package/lib/utils.js.map +1 -1
  47. package/package.json +5 -5
  48. package/src/adapter.ts +85 -5
  49. package/src/ai/index.ts +8 -186
  50. package/src/ai/types.ts +5 -4
  51. package/src/built/ai-trigger.ts +2 -2
  52. package/src/built/common-adapter-tools.ts +207 -0
  53. package/src/built/dispatcher.ts +51 -52
  54. package/src/built/skill.ts +3 -4
  55. package/src/built/tool.ts +3 -3
  56. package/src/feature.ts +45 -2
  57. package/src/index.ts +2 -0
  58. package/src/plugin.ts +92 -31
  59. package/src/scheduler/scheduler.ts +1 -1
  60. package/src/types.ts +39 -28
  61. package/src/utils.ts +63 -52
  62. package/tests/ai/setup.ts +2 -2
  63. package/tests/utils.test.ts +1 -3
  64. package/lib/ai/agent.d.ts +0 -130
  65. package/lib/ai/agent.d.ts.map +0 -1
  66. package/lib/ai/agent.js +0 -702
  67. package/lib/ai/agent.js.map +0 -1
  68. package/lib/ai/bootstrap.d.ts +0 -91
  69. package/lib/ai/bootstrap.d.ts.map +0 -1
  70. package/lib/ai/bootstrap.js +0 -243
  71. package/lib/ai/bootstrap.js.map +0 -1
  72. package/lib/ai/builtin-tools.d.ts +0 -59
  73. package/lib/ai/builtin-tools.d.ts.map +0 -1
  74. package/lib/ai/builtin-tools.js +0 -777
  75. package/lib/ai/builtin-tools.js.map +0 -1
  76. package/lib/ai/compaction.d.ts +0 -132
  77. package/lib/ai/compaction.d.ts.map +0 -1
  78. package/lib/ai/compaction.js +0 -370
  79. package/lib/ai/compaction.js.map +0 -1
  80. package/lib/ai/context-manager.d.ts +0 -213
  81. package/lib/ai/context-manager.d.ts.map +0 -1
  82. package/lib/ai/context-manager.js +0 -313
  83. package/lib/ai/context-manager.js.map +0 -1
  84. package/lib/ai/conversation-memory.d.ts +0 -181
  85. package/lib/ai/conversation-memory.d.ts.map +0 -1
  86. package/lib/ai/conversation-memory.js +0 -581
  87. package/lib/ai/conversation-memory.js.map +0 -1
  88. package/lib/ai/cron-engine.d.ts +0 -92
  89. package/lib/ai/cron-engine.d.ts.map +0 -1
  90. package/lib/ai/cron-engine.js +0 -278
  91. package/lib/ai/cron-engine.js.map +0 -1
  92. package/lib/ai/follow-up.d.ts +0 -131
  93. package/lib/ai/follow-up.d.ts.map +0 -1
  94. package/lib/ai/follow-up.js +0 -265
  95. package/lib/ai/follow-up.js.map +0 -1
  96. package/lib/ai/hooks.d.ts +0 -143
  97. package/lib/ai/hooks.d.ts.map +0 -1
  98. package/lib/ai/hooks.js +0 -108
  99. package/lib/ai/hooks.js.map +0 -1
  100. package/lib/ai/init.d.ts +0 -30
  101. package/lib/ai/init.d.ts.map +0 -1
  102. package/lib/ai/init.js +0 -686
  103. package/lib/ai/init.js.map +0 -1
  104. package/lib/ai/output.d.ts +0 -93
  105. package/lib/ai/output.d.ts.map +0 -1
  106. package/lib/ai/output.js +0 -176
  107. package/lib/ai/output.js.map +0 -1
  108. package/lib/ai/rate-limiter.d.ts +0 -38
  109. package/lib/ai/rate-limiter.d.ts.map +0 -1
  110. package/lib/ai/rate-limiter.js +0 -86
  111. package/lib/ai/rate-limiter.js.map +0 -1
  112. package/lib/ai/service.d.ts +0 -88
  113. package/lib/ai/service.d.ts.map +0 -1
  114. package/lib/ai/service.js +0 -285
  115. package/lib/ai/service.js.map +0 -1
  116. package/lib/ai/session.d.ts +0 -186
  117. package/lib/ai/session.d.ts.map +0 -1
  118. package/lib/ai/session.js +0 -443
  119. package/lib/ai/session.js.map +0 -1
  120. package/lib/ai/subagent.d.ts +0 -50
  121. package/lib/ai/subagent.d.ts.map +0 -1
  122. package/lib/ai/subagent.js +0 -144
  123. package/lib/ai/subagent.js.map +0 -1
  124. package/lib/ai/tone-detector.d.ts +0 -19
  125. package/lib/ai/tone-detector.d.ts.map +0 -1
  126. package/lib/ai/tone-detector.js +0 -72
  127. package/lib/ai/tone-detector.js.map +0 -1
  128. package/lib/ai/tools.d.ts +0 -45
  129. package/lib/ai/tools.d.ts.map +0 -1
  130. package/lib/ai/tools.js +0 -206
  131. package/lib/ai/tools.js.map +0 -1
  132. package/lib/ai/user-profile.d.ts +0 -56
  133. package/lib/ai/user-profile.d.ts.map +0 -1
  134. package/lib/ai/user-profile.js +0 -130
  135. package/lib/ai/user-profile.js.map +0 -1
  136. package/lib/ai/zhin-agent/builtin-tools.d.ts +0 -17
  137. package/lib/ai/zhin-agent/builtin-tools.d.ts.map +0 -1
  138. package/lib/ai/zhin-agent/builtin-tools.js +0 -220
  139. package/lib/ai/zhin-agent/builtin-tools.js.map +0 -1
  140. package/lib/ai/zhin-agent/config.d.ts +0 -54
  141. package/lib/ai/zhin-agent/config.d.ts.map +0 -1
  142. package/lib/ai/zhin-agent/config.js +0 -76
  143. package/lib/ai/zhin-agent/config.js.map +0 -1
  144. package/lib/ai/zhin-agent/exec-policy.d.ts +0 -20
  145. package/lib/ai/zhin-agent/exec-policy.d.ts.map +0 -1
  146. package/lib/ai/zhin-agent/exec-policy.js +0 -71
  147. package/lib/ai/zhin-agent/exec-policy.js.map +0 -1
  148. package/lib/ai/zhin-agent/index.d.ts +0 -70
  149. package/lib/ai/zhin-agent/index.d.ts.map +0 -1
  150. package/lib/ai/zhin-agent/index.js +0 -404
  151. package/lib/ai/zhin-agent/index.js.map +0 -1
  152. package/lib/ai/zhin-agent/prompt.d.ts +0 -21
  153. package/lib/ai/zhin-agent/prompt.d.ts.map +0 -1
  154. package/lib/ai/zhin-agent/prompt.js +0 -111
  155. package/lib/ai/zhin-agent/prompt.js.map +0 -1
  156. package/lib/ai/zhin-agent/tool-collector.d.ts +0 -22
  157. package/lib/ai/zhin-agent/tool-collector.d.ts.map +0 -1
  158. package/lib/ai/zhin-agent/tool-collector.js +0 -218
  159. package/lib/ai/zhin-agent/tool-collector.js.map +0 -1
  160. package/src/ai/agent.ts +0 -831
  161. package/src/ai/bootstrap.ts +0 -309
  162. package/src/ai/builtin-tools.ts +0 -849
  163. package/src/ai/compaction.ts +0 -529
  164. package/src/ai/context-manager.ts +0 -440
  165. package/src/ai/conversation-memory.ts +0 -774
  166. package/src/ai/cron-engine.ts +0 -337
  167. package/src/ai/follow-up.ts +0 -357
  168. package/src/ai/hooks.ts +0 -223
  169. package/src/ai/init.ts +0 -762
  170. package/src/ai/output.ts +0 -261
  171. package/src/ai/rate-limiter.ts +0 -129
  172. package/src/ai/service.ts +0 -331
  173. package/src/ai/session.ts +0 -544
  174. package/src/ai/subagent.ts +0 -209
  175. package/src/ai/tone-detector.ts +0 -89
  176. package/src/ai/tools.ts +0 -218
  177. package/src/ai/user-profile.ts +0 -181
  178. package/src/ai/zhin-agent/builtin-tools.ts +0 -247
  179. package/src/ai/zhin-agent/config.ts +0 -113
  180. package/src/ai/zhin-agent/exec-policy.ts +0 -78
  181. package/src/ai/zhin-agent/index.ts +0 -512
  182. package/src/ai/zhin-agent/prompt.ts +0 -131
  183. package/src/ai/zhin-agent/tool-collector.ts +0 -243
  184. package/tests/ai/agent.test.ts +0 -614
  185. package/tests/ai/context-manager.test.ts +0 -413
  186. package/tests/ai/conversation-memory.test.ts +0 -128
  187. package/tests/ai/follow-up.test.ts +0 -175
  188. package/tests/ai/integration.test.ts +0 -584
  189. package/tests/ai/output.test.ts +0 -128
  190. package/tests/ai/rate-limiter.test.ts +0 -108
  191. package/tests/ai/session.test.ts +0 -375
  192. package/tests/ai/subagent.test.ts +0 -270
  193. package/tests/ai/tone-detector.test.ts +0 -80
  194. package/tests/ai/tools-builtin.test.ts +0 -346
  195. package/tests/ai/user-profile.test.ts +0 -73
  196. package/tests/ai/zhin-agent.test.ts +0 -177
package/lib/ai/service.js DELETED
@@ -1,285 +0,0 @@
1
- /**
2
- * AIService — AI 服务核心类
3
- * 统一管理多个模型提供商,提供会话和 Agent 能力
4
- */
5
- import { Logger } from '@zhin.js/logger';
6
- import { OpenAIProvider, DeepSeekProvider, MoonshotProvider, ZhipuProvider, AnthropicProvider, OllamaProvider, } from './providers/index.js';
7
- import { SessionManager, createMemorySessionManager, } from './session.js';
8
- import { Agent, createAgent } from './agent.js';
9
- import { getBuiltinTools } from './tools.js';
10
- const aiLogger = new Logger(null, 'AI');
11
- export class AIService {
12
- providers = new Map();
13
- defaultProvider;
14
- sessions;
15
- contextManager;
16
- builtinTools;
17
- sessionConfig;
18
- contextConfig;
19
- triggerConfig;
20
- agentConfig;
21
- plugin;
22
- customTools = new Map();
23
- constructor(config = {}) {
24
- this.defaultProvider = config.defaultProvider || 'openai';
25
- this.sessionConfig = config.sessions || {};
26
- this.contextConfig = config.context || {};
27
- this.triggerConfig = config.trigger || {};
28
- this.agentConfig = config.agent;
29
- this.sessions = createMemorySessionManager(this.sessionConfig);
30
- this.builtinTools = getBuiltinTools().map(tool => this.convertToolToAgentTool(tool.toTool()));
31
- if (config.providers?.openai?.apiKey) {
32
- this.registerProvider(new OpenAIProvider(config.providers.openai));
33
- }
34
- if (config.providers?.anthropic?.apiKey) {
35
- this.registerProvider(new AnthropicProvider(config.providers.anthropic));
36
- }
37
- if (config.providers?.deepseek?.apiKey) {
38
- this.registerProvider(new DeepSeekProvider(config.providers.deepseek));
39
- }
40
- if (config.providers?.moonshot?.apiKey) {
41
- this.registerProvider(new MoonshotProvider(config.providers.moonshot));
42
- }
43
- if (config.providers?.zhipu?.apiKey) {
44
- this.registerProvider(new ZhipuProvider(config.providers.zhipu));
45
- }
46
- if (config.providers?.ollama) {
47
- this.registerProvider(new OllamaProvider(config.providers.ollama));
48
- }
49
- }
50
- isReady() {
51
- return this.providers.size > 0;
52
- }
53
- static PRE_EXEC_TIMEOUT = 10_000;
54
- async process(content, context, tools) {
55
- const { platform, senderId, sceneId } = context;
56
- const sessionId = SessionManager.generateId(platform || '', senderId || '', sceneId);
57
- const allTools = this.collectAllToolsWithExternal(tools);
58
- const baseSystemPrompt = '你是一个友好的中文 AI 助手,请始终使用中文回复。';
59
- if (allTools.length === 0) {
60
- return this.finishAndSave(sessionId, content, baseSystemPrompt, sceneId);
61
- }
62
- const callerPermissionLevel = context.senderPermissionLevel
63
- ? (AIService.PERM_MAP[context.senderPermissionLevel] ?? 0)
64
- : (context.isOwner ? 4 : context.isBotAdmin ? 3 : context.isGroupOwner ? 2 : context.isGroupAdmin ? 1 : 0);
65
- const relevantTools = Agent.filterTools(content, allTools, {
66
- callerPermissionLevel,
67
- maxTools: 8,
68
- minScore: 0.1,
69
- });
70
- if (relevantTools.length === 0) {
71
- return this.finishAndSave(sessionId, content, baseSystemPrompt, sceneId);
72
- }
73
- const noParamTools = [];
74
- const paramTools = [];
75
- for (const tool of relevantTools) {
76
- const required = tool.parameters?.required;
77
- (!required || required.length === 0) ? noParamTools.push(tool) : paramTools.push(tool);
78
- }
79
- let preExecutedData = '';
80
- const preExecutedCalls = [];
81
- if (noParamTools.length > 0) {
82
- const results = await Promise.allSettled(noParamTools.map(async (tool) => {
83
- const result = await Promise.race([
84
- tool.execute({}),
85
- new Promise((_, reject) => setTimeout(() => reject(new Error('预执行超时')), AIService.PRE_EXEC_TIMEOUT)),
86
- ]);
87
- return { name: tool.name, result };
88
- }));
89
- for (const r of results) {
90
- if (r.status === 'fulfilled') {
91
- const s = typeof r.value.result === 'string' ? r.value.result : JSON.stringify(r.value.result);
92
- preExecutedData += `\n【${r.value.name}】${s}`;
93
- preExecutedCalls.push({ tool: r.value.name, args: {}, result: r.value.result });
94
- }
95
- }
96
- }
97
- let finalResponse;
98
- if (paramTools.length === 0 && preExecutedData) {
99
- const singleShotPrompt = `你是一个友好的中文 AI 助手。\n\n以下是根据用户问题自动获取的实时数据:\n${preExecutedData}\n\n请基于以上数据回答用户的问题。用自然流畅的中文组织信息,突出重点。`;
100
- finalResponse = await this.simpleChat(content, singleShotPrompt);
101
- }
102
- else {
103
- const agentSystemPrompt = `你是一个友好的中文 AI 助手。
104
- ${preExecutedData ? `\n已自动获取的数据:${preExecutedData}\n` : ''}
105
- ## 关键要求
106
- - 调用工具后**必须**基于结果给出完整中文回答
107
- - 用自然语言总结,突出关键信息`;
108
- const agent = this.createAgent({
109
- systemPrompt: agentSystemPrompt,
110
- tools: paramTools.length > 0 ? paramTools : relevantTools,
111
- useBuiltinTools: false,
112
- collectExternalTools: false,
113
- maxIterations: 3,
114
- });
115
- const agentResult = await agent.run(content);
116
- finalResponse = agentResult.content || this.formatToolCallsFallback([...preExecutedCalls, ...agentResult.toolCalls]);
117
- }
118
- await this.sessions.addMessage(sessionId, { role: 'user', content });
119
- await this.sessions.addMessage(sessionId, { role: 'assistant', content: finalResponse });
120
- if (this.contextManager && sceneId) {
121
- this.contextManager.autoSummarizeIfNeeded(sceneId).catch(() => { });
122
- }
123
- return finalResponse;
124
- }
125
- async finishAndSave(sessionId, content, systemPrompt, sceneId) {
126
- const response = await this.simpleChat(content, systemPrompt);
127
- await this.sessions.addMessage(sessionId, { role: 'user', content });
128
- await this.sessions.addMessage(sessionId, { role: 'assistant', content: response });
129
- if (this.contextManager && sceneId) {
130
- this.contextManager.autoSummarizeIfNeeded(sceneId).catch(() => { });
131
- }
132
- return response;
133
- }
134
- formatToolCallsFallback(toolCalls) {
135
- if (toolCalls.length === 0)
136
- return '处理完成。';
137
- return toolCalls.map(tc => {
138
- const s = typeof tc.result === 'string' ? tc.result : JSON.stringify(tc.result, null, 2);
139
- return `【${tc.tool}】\n${s}`;
140
- }).join('\n\n');
141
- }
142
- async simpleChat(content, systemPrompt) {
143
- const provider = this.getProvider();
144
- const response = await this.chat({
145
- model: provider.models[0],
146
- messages: [
147
- { role: 'system', content: systemPrompt },
148
- { role: 'user', content },
149
- ],
150
- });
151
- const msgContent = response.choices[0]?.message?.content;
152
- return typeof msgContent === 'string' ? msgContent : '';
153
- }
154
- collectAllToolsWithExternal(externalTools) {
155
- const tools = [];
156
- tools.push(...this.builtinTools);
157
- tools.push(...this.customTools.values());
158
- for (const tool of externalTools) {
159
- if (tool.name.startsWith('cmd_') || tool.name.startsWith('process_'))
160
- continue;
161
- tools.push(this.convertToolToAgentTool(tool));
162
- }
163
- if (tools.length > 30)
164
- return tools.slice(0, 30);
165
- return tools;
166
- }
167
- static PERM_MAP = {
168
- 'user': 0, 'group_admin': 1, 'group_owner': 2, 'bot_admin': 3, 'owner': 4,
169
- };
170
- convertToolToAgentTool(tool) {
171
- const agentTool = {
172
- name: tool.name,
173
- description: tool.description,
174
- parameters: tool.parameters,
175
- execute: tool.execute,
176
- };
177
- if (tool.tags?.length)
178
- agentTool.tags = tool.tags;
179
- if (tool.permissionLevel)
180
- agentTool.permissionLevel = AIService.PERM_MAP[tool.permissionLevel] ?? 0;
181
- if (tool.keywords?.length)
182
- agentTool.keywords = tool.keywords;
183
- return agentTool;
184
- }
185
- setSessionManager(manager) { this.sessions.dispose(); this.sessions = manager; }
186
- setContextManager(manager) {
187
- this.contextManager = manager;
188
- const defaultProvider = this.providers.get(this.defaultProvider);
189
- if (defaultProvider)
190
- manager.setAIProvider(defaultProvider);
191
- }
192
- setPlugin(plugin) { this.plugin = plugin; }
193
- registerTool(tool) { this.customTools.set(tool.name, tool); return () => { this.customTools.delete(tool.name); }; }
194
- collectAllTools() {
195
- const tools = [...this.builtinTools, ...this.customTools.values()];
196
- if (this.plugin) {
197
- for (const tool of this.plugin.collectAllTools())
198
- tools.push(this.convertToolToAgentTool(tool));
199
- }
200
- return tools;
201
- }
202
- getContextConfig() { return this.contextConfig; }
203
- getSessionConfig() { return this.sessionConfig; }
204
- getTriggerConfig() { return this.triggerConfig; }
205
- /** Agent 配置(如 disabledTools / allowedTools),供 ZhinAgent 使用 */
206
- getAgentConfig() { return this.agentConfig; }
207
- registerProvider(provider) { this.providers.set(provider.name, provider); }
208
- getProvider(name) {
209
- const providerName = name || this.defaultProvider;
210
- const provider = this.providers.get(providerName);
211
- if (!provider)
212
- throw new Error(`AI Provider "${providerName}" not found. Available: ${this.listProviders().join(', ')}`);
213
- return provider;
214
- }
215
- listProviders() { return Array.from(this.providers.keys()); }
216
- getProviderCapabilities(name) {
217
- const provider = this.getProvider(name);
218
- return {
219
- contextWindow: provider.contextWindow,
220
- capabilities: provider.capabilities,
221
- };
222
- }
223
- async listModels(providerName) {
224
- const result = [];
225
- if (providerName) {
226
- const provider = this.getProvider(providerName);
227
- result.push({ provider: providerName, models: await provider.listModels?.() || provider.models });
228
- }
229
- else {
230
- for (const [name, provider] of this.providers) {
231
- result.push({ provider: name, models: await provider.listModels?.() || provider.models });
232
- }
233
- }
234
- return result;
235
- }
236
- async chat(request, providerName) {
237
- return this.getProvider(providerName).chat(request);
238
- }
239
- async *chatStream(request, providerName) {
240
- yield* this.getProvider(providerName).chatStream(request);
241
- }
242
- async ask(question, options = {}) {
243
- const messages = [];
244
- if (options.systemPrompt)
245
- messages.push({ role: 'system', content: options.systemPrompt });
246
- messages.push({ role: 'user', content: question });
247
- const provider = this.getProvider(options.provider);
248
- const response = await provider.chat({ model: options.model || provider.models[0], messages, temperature: options.temperature });
249
- const content = response.choices[0]?.message?.content;
250
- return typeof content === 'string' ? content : '';
251
- }
252
- createAgent(options = {}) {
253
- const provider = this.getProvider(options.provider);
254
- let tools = [];
255
- if (options.useBuiltinTools !== false)
256
- tools.push(...this.builtinTools);
257
- if (options.collectExternalTools !== false) {
258
- tools.push(...this.customTools.values());
259
- if (this.plugin) {
260
- for (const t of this.plugin.collectAllTools())
261
- tools.push(this.convertToolToAgentTool(t));
262
- }
263
- }
264
- if (options.tools?.length)
265
- tools.push(...options.tools);
266
- return createAgent(provider, { model: options.model, systemPrompt: options.systemPrompt, tools, maxIterations: options.maxIterations });
267
- }
268
- async runAgent(task, options = {}) {
269
- return this.createAgent(options).run(task);
270
- }
271
- async healthCheck() {
272
- const results = {};
273
- for (const [name, provider] of this.providers) {
274
- try {
275
- results[name] = await provider.healthCheck?.() ?? true;
276
- }
277
- catch {
278
- results[name] = false;
279
- }
280
- }
281
- return results;
282
- }
283
- dispose() { this.sessions.dispose(); this.providers.clear(); }
284
- }
285
- //# sourceMappingURL=service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/ai/service.ts"],"names":[],"mappings":"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"}
@@ -1,186 +0,0 @@
1
- /**
2
- * @zhin.js/ai - Session Manager
3
- * 会话管理器,支持上下文记忆和数据库持久化
4
- *
5
- * 特性:
6
- * - 数据库持久化存储(使用 Zhin 的数据库服务)
7
- * - 内存缓存加速读取
8
- * - 自动过期清理
9
- * - 更长的上下文记忆能力
10
- */
11
- import type { ChatMessage, SessionConfig, Session } from './types.js';
12
- /**
13
- * 数据库模型定义
14
- */
15
- export declare const AI_SESSION_MODEL: {
16
- session_id: {
17
- type: "text";
18
- nullable: boolean;
19
- };
20
- messages: {
21
- type: "json";
22
- default: never[];
23
- };
24
- config: {
25
- type: "json";
26
- default: {};
27
- };
28
- created_at: {
29
- type: "integer";
30
- default: number;
31
- };
32
- updated_at: {
33
- type: "integer";
34
- default: number;
35
- };
36
- };
37
- /**
38
- * 会话管理器接口
39
- */
40
- export interface ISessionManager {
41
- get(sessionId: string, config?: SessionConfig): Session | Promise<Session>;
42
- has(sessionId: string): boolean | Promise<boolean>;
43
- addMessage(sessionId: string, message: ChatMessage): void | Promise<void>;
44
- getMessages(sessionId: string): ChatMessage[] | Promise<ChatMessage[]>;
45
- setSystemPrompt(sessionId: string, prompt: string): void | Promise<void>;
46
- clear(sessionId: string): boolean | Promise<boolean>;
47
- reset(sessionId: string): void | Promise<void>;
48
- listSessions(): string[] | Promise<string[]>;
49
- getStats(): {
50
- total: number;
51
- active: number;
52
- expired: number;
53
- } | Promise<{
54
- total: number;
55
- active: number;
56
- expired: number;
57
- }>;
58
- cleanup(): number | Promise<number>;
59
- dispose(): void | Promise<void>;
60
- }
61
- /**
62
- * 内存会话管理器(回退方案)
63
- */
64
- export declare class MemorySessionManager implements ISessionManager {
65
- private sessions;
66
- private config;
67
- private cleanupTimer?;
68
- constructor(config?: {
69
- maxHistory?: number;
70
- expireMs?: number;
71
- });
72
- get(sessionId: string, config?: SessionConfig): Session;
73
- has(sessionId: string): boolean;
74
- addMessage(sessionId: string, message: ChatMessage): void;
75
- private trimMessages;
76
- getMessages(sessionId: string): ChatMessage[];
77
- setSystemPrompt(sessionId: string, prompt: string): void;
78
- clear(sessionId: string): boolean;
79
- reset(sessionId: string): void;
80
- listSessions(): string[];
81
- getStats(): {
82
- total: number;
83
- active: number;
84
- expired: number;
85
- };
86
- cleanup(): number;
87
- dispose(): void;
88
- }
89
- /**
90
- * 数据库会话管理器
91
- * 使用 Zhin 的数据库服务进行持久化存储
92
- */
93
- export declare class DatabaseSessionManager implements ISessionManager {
94
- private cache;
95
- private config;
96
- private cleanupTimer?;
97
- private saveQueue;
98
- private saveTimer?;
99
- private model;
100
- constructor(model: any, config?: {
101
- maxHistory?: number;
102
- expireMs?: number;
103
- });
104
- /**
105
- * 从数据库加载会话
106
- */
107
- private loadSession;
108
- /**
109
- * 保存会话到数据库(防抖)
110
- */
111
- private schedulesSave;
112
- /**
113
- * 批量保存队列中的会话
114
- */
115
- private flushSaveQueue;
116
- get(sessionId: string, config?: SessionConfig): Promise<Session>;
117
- has(sessionId: string): Promise<boolean>;
118
- addMessage(sessionId: string, message: ChatMessage): Promise<void>;
119
- private trimMessages;
120
- getMessages(sessionId: string): Promise<ChatMessage[]>;
121
- setSystemPrompt(sessionId: string, prompt: string): Promise<void>;
122
- clear(sessionId: string): Promise<boolean>;
123
- reset(sessionId: string): Promise<void>;
124
- listSessions(): Promise<string[]>;
125
- getStats(): Promise<{
126
- total: number;
127
- active: number;
128
- expired: number;
129
- }>;
130
- cleanup(): Promise<number>;
131
- dispose(): Promise<void>;
132
- }
133
- /**
134
- * 会话管理器包装器
135
- * 支持同步和异步接口的统一使用
136
- */
137
- export declare class SessionManager implements ISessionManager {
138
- private manager;
139
- constructor(manager: ISessionManager);
140
- /**
141
- * 生成会话 ID
142
- */
143
- static generateId(platform: string, userId: string, channelId?: string): string;
144
- get(sessionId: string, config?: SessionConfig): Session | Promise<Session>;
145
- has(sessionId: string): boolean | Promise<boolean>;
146
- addMessage(sessionId: string, message: ChatMessage): void | Promise<void>;
147
- getMessages(sessionId: string): ChatMessage[] | Promise<ChatMessage[]>;
148
- setSystemPrompt(sessionId: string, prompt: string): void | Promise<void>;
149
- clear(sessionId: string): boolean | Promise<boolean>;
150
- reset(sessionId: string): void | Promise<void>;
151
- listSessions(): string[] | Promise<string[]>;
152
- getStats(): {
153
- total: number;
154
- active: number;
155
- expired: number;
156
- } | Promise<{
157
- total: number;
158
- active: number;
159
- expired: number;
160
- }>;
161
- cleanup(): number | Promise<number>;
162
- dispose(): void | Promise<void>;
163
- }
164
- /**
165
- * 创建内存会话管理器(回退方案)
166
- */
167
- export declare function createMemorySessionManager(config?: {
168
- maxHistory?: number;
169
- expireMs?: number;
170
- }): SessionManager;
171
- /**
172
- * 创建数据库会话管理器
173
- */
174
- export declare function createDatabaseSessionManager(model: any, config?: {
175
- maxHistory?: number;
176
- expireMs?: number;
177
- }): SessionManager;
178
- /**
179
- * 创建会话管理器(向后兼容)
180
- * @deprecated 使用 createMemorySessionManager 或 createDatabaseSessionManager
181
- */
182
- export declare function createSessionManager(config?: {
183
- maxHistory?: number;
184
- expireMs?: number;
185
- }): SessionManager;
186
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/ai/session.ts"],"names":[],"mappings":"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"}