@zhin.js/agent 0.1.25 → 0.1.27
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/README.md +1 -1
- package/lib/agent-prompt/registry.js +1 -1
- package/lib/agent-prompt/registry.js.map +1 -1
- package/lib/ai-event-bus.d.ts +19 -0
- package/lib/ai-event-bus.d.ts.map +1 -0
- package/lib/ai-event-bus.js +75 -0
- package/lib/ai-event-bus.js.map +1 -0
- package/lib/ai-event-subscriber.d.ts +38 -0
- package/lib/ai-event-subscriber.d.ts.map +1 -0
- package/lib/ai-event-subscriber.js +65 -0
- package/lib/ai-event-subscriber.js.map +1 -0
- package/lib/builtin/ask-user-tool.d.ts +2 -0
- package/lib/builtin/ask-user-tool.d.ts.map +1 -1
- package/lib/builtin/ask-user-tool.js +2 -0
- package/lib/builtin/ask-user-tool.js.map +1 -1
- package/lib/builtin/bash-tool.d.ts +7 -3
- package/lib/builtin/bash-tool.d.ts.map +1 -1
- package/lib/builtin/bash-tool.js +51 -9
- package/lib/builtin/bash-tool.js.map +1 -1
- package/lib/builtin/bing-search-html.d.ts.map +1 -1
- package/lib/builtin/bing-search-html.js +14 -7
- package/lib/builtin/bing-search-html.js.map +1 -1
- package/lib/builtin/builtin-base-tool.d.ts +2 -0
- package/lib/builtin/builtin-base-tool.d.ts.map +1 -1
- package/lib/builtin/builtin-base-tool.js +5 -0
- package/lib/builtin/builtin-base-tool.js.map +1 -1
- package/lib/builtin/edit-file-tool.d.ts +1 -1
- package/lib/builtin/edit-file-tool.d.ts.map +1 -1
- package/lib/builtin/edit-file-tool.js +33 -1
- package/lib/builtin/edit-file-tool.js.map +1 -1
- package/lib/builtin/file-edit-quote-utils.d.ts +1 -3
- package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -1
- package/lib/builtin/file-edit-quote-utils.js +1 -3
- package/lib/builtin/file-edit-quote-utils.js.map +1 -1
- package/lib/builtin/glob-tool.d.ts +1 -1
- package/lib/builtin/glob-tool.d.ts.map +1 -1
- package/lib/builtin/glob-tool.js +15 -3
- package/lib/builtin/glob-tool.js.map +1 -1
- package/lib/builtin/grep-tool.d.ts +1 -1
- package/lib/builtin/grep-tool.d.ts.map +1 -1
- package/lib/builtin/grep-tool.js +16 -3
- package/lib/builtin/grep-tool.js.map +1 -1
- package/lib/builtin/list-dir-tool.d.ts +1 -1
- package/lib/builtin/list-dir-tool.d.ts.map +1 -1
- package/lib/builtin/list-dir-tool.js +14 -3
- package/lib/builtin/list-dir-tool.js.map +1 -1
- package/lib/builtin/read-file-tool.d.ts +1 -1
- package/lib/builtin/read-file-tool.d.ts.map +1 -1
- package/lib/builtin/read-file-tool.js +24 -3
- package/lib/builtin/read-file-tool.js.map +1 -1
- package/lib/builtin/run-deferred-task-tool.d.ts +3 -0
- package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -1
- package/lib/builtin/run-deferred-task-tool.js +2 -0
- package/lib/builtin/run-deferred-task-tool.js.map +1 -1
- package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
- package/lib/builtin/spawn-task-tool.js +2 -0
- package/lib/builtin/spawn-task-tool.js.map +1 -1
- package/lib/builtin/web-fetch-tool.d.ts +2 -2
- package/lib/builtin/web-fetch-tool.d.ts.map +1 -1
- package/lib/builtin/web-fetch-tool.js +12 -18
- package/lib/builtin/web-fetch-tool.js.map +1 -1
- package/lib/builtin/write-file-tool.d.ts +1 -1
- package/lib/builtin/write-file-tool.d.ts.map +1 -1
- package/lib/builtin/write-file-tool.js +33 -1
- package/lib/builtin/write-file-tool.js.map +1 -1
- package/lib/common-adapter-tools.d.ts +8 -41
- package/lib/common-adapter-tools.d.ts.map +1 -1
- package/lib/common-adapter-tools.js +23 -182
- package/lib/common-adapter-tools.js.map +1 -1
- package/lib/deferred-worker-runner.d.ts +13 -2
- package/lib/deferred-worker-runner.d.ts.map +1 -1
- package/lib/deferred-worker-runner.js +91 -13
- package/lib/deferred-worker-runner.js.map +1 -1
- package/lib/discovery/agents.js +1 -1
- package/lib/discovery/agents.js.map +1 -1
- package/lib/discovery/skills.js +1 -1
- package/lib/discovery/skills.js.map +1 -1
- package/lib/discovery/tools.d.ts +1 -1
- package/lib/discovery/tools.d.ts.map +1 -1
- package/lib/discovery/tools.js +17 -4
- package/lib/discovery/tools.js.map +1 -1
- package/lib/discovery/utils.js +1 -1
- package/lib/discovery/utils.js.map +1 -1
- package/lib/hooks.d.ts.map +1 -1
- package/lib/hooks.js +2 -0
- package/lib/hooks.js.map +1 -1
- package/lib/index.d.ts +9 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/init/message-media.d.ts +3 -1
- package/lib/init/message-media.d.ts.map +1 -1
- package/lib/init/message-media.js +20 -0
- package/lib/init/message-media.js.map +1 -1
- package/lib/init/register-ai-service.js.map +1 -1
- package/lib/init/register-ai-trigger.d.ts.map +1 -1
- package/lib/init/register-ai-trigger.js +71 -10
- package/lib/init/register-ai-trigger.js.map +1 -1
- package/lib/init/register-builtin-tools.js +7 -7
- package/lib/init/register-builtin-tools.js.map +1 -1
- package/lib/init/register-typing-indicator.d.ts +10 -0
- package/lib/init/register-typing-indicator.d.ts.map +1 -0
- package/lib/init/register-typing-indicator.js +290 -0
- package/lib/init/register-typing-indicator.js.map +1 -0
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +2 -0
- package/lib/init.js.map +1 -1
- package/lib/mcp-client/connection.d.ts +2 -0
- package/lib/mcp-client/connection.d.ts.map +1 -1
- package/lib/mcp-client/connection.js +7 -0
- package/lib/mcp-client/connection.js.map +1 -1
- package/lib/mcp-client/index.d.ts +2 -0
- package/lib/mcp-client/index.d.ts.map +1 -1
- package/lib/mcp-client/index.js +19 -2
- package/lib/mcp-client/index.js.map +1 -1
- package/lib/monitoring/index.d.ts +79 -0
- package/lib/monitoring/index.d.ts.map +1 -0
- package/lib/monitoring/index.js +197 -0
- package/lib/monitoring/index.js.map +1 -0
- package/lib/monitoring/metrics.d.ts +240 -0
- package/lib/monitoring/metrics.d.ts.map +1 -0
- package/lib/monitoring/metrics.js +483 -0
- package/lib/monitoring/metrics.js.map +1 -0
- package/lib/orchestrator/agent-dispatcher.d.ts +170 -0
- package/lib/orchestrator/agent-dispatcher.d.ts.map +1 -0
- package/lib/orchestrator/agent-dispatcher.js +379 -0
- package/lib/orchestrator/agent-dispatcher.js.map +1 -0
- package/lib/orchestrator/hook-registry.d.ts.map +1 -1
- package/lib/orchestrator/hook-registry.js +2 -0
- package/lib/orchestrator/hook-registry.js.map +1 -1
- package/lib/orchestrator/index.d.ts +2 -0
- package/lib/orchestrator/index.d.ts.map +1 -1
- package/lib/orchestrator/index.js +2 -0
- package/lib/orchestrator/index.js.map +1 -1
- package/lib/orchestrator/mcp-lifecycle.d.ts +1 -1
- package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -1
- package/lib/orchestrator/mcp-lifecycle.js +2 -2
- package/lib/orchestrator/mcp-lifecycle.js.map +1 -1
- package/lib/orchestrator/mcp-registry.d.ts +8 -1
- package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
- package/lib/orchestrator/mcp-registry.js +28 -5
- package/lib/orchestrator/mcp-registry.js.map +1 -1
- package/lib/orchestrator/task-queue.d.ts +147 -0
- package/lib/orchestrator/task-queue.d.ts.map +1 -0
- package/lib/orchestrator/task-queue.js +337 -0
- package/lib/orchestrator/task-queue.js.map +1 -0
- package/lib/orchestrator/tool-selection.d.ts.map +1 -1
- package/lib/orchestrator/tool-selection.js +3 -0
- package/lib/orchestrator/tool-selection.js.map +1 -1
- package/lib/orchestrator/types.d.ts +8 -0
- package/lib/orchestrator/types.d.ts.map +1 -1
- package/lib/plugin-ai-hook-bus.d.ts +4 -0
- package/lib/plugin-ai-hook-bus.d.ts.map +1 -0
- package/lib/plugin-ai-hook-bus.js +24 -0
- package/lib/plugin-ai-hook-bus.js.map +1 -0
- package/lib/security/anomaly-detection.d.ts +119 -0
- package/lib/security/anomaly-detection.d.ts.map +1 -0
- package/lib/security/anomaly-detection.js +305 -0
- package/lib/security/anomaly-detection.js.map +1 -0
- package/lib/security/audit-logger.d.ts +158 -0
- package/lib/security/audit-logger.d.ts.map +1 -0
- package/lib/security/audit-logger.js +379 -0
- package/lib/security/audit-logger.js.map +1 -0
- package/lib/security/bash-tool-context.d.ts +3 -3
- package/lib/security/bash-tool-context.d.ts.map +1 -1
- package/lib/security/budget-limiter.d.ts +156 -0
- package/lib/security/budget-limiter.d.ts.map +1 -0
- package/lib/security/budget-limiter.js +363 -0
- package/lib/security/budget-limiter.js.map +1 -0
- package/lib/security/dangerous-tool-policy.d.ts +17 -0
- package/lib/security/dangerous-tool-policy.d.ts.map +1 -0
- package/lib/security/dangerous-tool-policy.js +137 -0
- package/lib/security/dangerous-tool-policy.js.map +1 -0
- package/lib/security/exec-policy.d.ts +21 -12
- package/lib/security/exec-policy.d.ts.map +1 -1
- package/lib/security/exec-policy.js +198 -25
- package/lib/security/exec-policy.js.map +1 -1
- package/lib/security/file-policy.d.ts +0 -1
- package/lib/security/file-policy.d.ts.map +1 -1
- package/lib/security/file-policy.js +112 -14
- package/lib/security/file-policy.js.map +1 -1
- package/lib/security/file-role-policy.d.ts +119 -0
- package/lib/security/file-role-policy.d.ts.map +1 -0
- package/lib/security/file-role-policy.js +268 -0
- package/lib/security/file-role-policy.js.map +1 -0
- package/lib/security/index.d.ts +59 -0
- package/lib/security/index.d.ts.map +1 -1
- package/lib/security/index.js +68 -0
- package/lib/security/index.js.map +1 -1
- package/lib/security/network-policy.d.ts +94 -0
- package/lib/security/network-policy.d.ts.map +1 -0
- package/lib/security/network-policy.js +291 -0
- package/lib/security/network-policy.js.map +1 -0
- package/lib/security/owner-approve-always-store.d.ts +2 -0
- package/lib/security/owner-approve-always-store.d.ts.map +1 -1
- package/lib/security/owner-approve-always-store.js +37 -0
- package/lib/security/owner-approve-always-store.js.map +1 -1
- package/lib/security/sandbox-enhanced.d.ts +170 -0
- package/lib/security/sandbox-enhanced.d.ts.map +1 -0
- package/lib/security/sandbox-enhanced.js +630 -0
- package/lib/security/sandbox-enhanced.js.map +1 -0
- package/lib/security/sandbox.d.ts +104 -0
- package/lib/security/sandbox.d.ts.map +1 -0
- package/lib/security/sandbox.js +373 -0
- package/lib/security/sandbox.js.map +1 -0
- package/lib/security/security-config.example.d.ts +33 -0
- package/lib/security/security-config.example.d.ts.map +1 -0
- package/lib/security/security-config.example.js +166 -0
- package/lib/security/security-config.example.js.map +1 -0
- package/lib/subagent-goal-notify.d.ts +13 -0
- package/lib/subagent-goal-notify.d.ts.map +1 -0
- package/lib/subagent-goal-notify.js +32 -0
- package/lib/subagent-goal-notify.js.map +1 -0
- package/lib/subagent.d.ts +24 -0
- package/lib/subagent.d.ts.map +1 -1
- package/lib/subagent.js +98 -16
- package/lib/subagent.js.map +1 -1
- package/lib/typing-indicator/adapter-integration.d.ts +158 -0
- package/lib/typing-indicator/adapter-integration.d.ts.map +1 -0
- package/lib/typing-indicator/adapter-integration.js +465 -0
- package/lib/typing-indicator/adapter-integration.js.map +1 -0
- package/lib/typing-indicator/index.d.ts +170 -0
- package/lib/typing-indicator/index.d.ts.map +1 -0
- package/lib/typing-indicator/index.js +316 -0
- package/lib/typing-indicator/index.js.map +1 -0
- package/lib/typing-indicator/integration.d.ts +92 -0
- package/lib/typing-indicator/integration.d.ts.map +1 -0
- package/lib/typing-indicator/integration.js +220 -0
- package/lib/typing-indicator/integration.js.map +1 -0
- package/lib/zhin-agent/config.d.ts +20 -2
- package/lib/zhin-agent/config.d.ts.map +1 -1
- package/lib/zhin-agent/config.js +27 -9
- package/lib/zhin-agent/config.js.map +1 -1
- package/lib/zhin-agent/event-emitter.d.ts +11 -0
- package/lib/zhin-agent/event-emitter.d.ts.map +1 -0
- package/lib/zhin-agent/event-emitter.js +43 -0
- package/lib/zhin-agent/event-emitter.js.map +1 -0
- package/lib/zhin-agent/index.d.ts +9 -31
- package/lib/zhin-agent/index.d.ts.map +1 -1
- package/lib/zhin-agent/index.js +70 -672
- package/lib/zhin-agent/index.js.map +1 -1
- package/lib/zhin-agent/llm-runner.d.ts +16 -0
- package/lib/zhin-agent/llm-runner.d.ts.map +1 -0
- package/lib/zhin-agent/llm-runner.js +85 -0
- package/lib/zhin-agent/llm-runner.js.map +1 -0
- package/lib/zhin-agent/model-resolver.d.ts +9 -0
- package/lib/zhin-agent/model-resolver.d.ts.map +1 -0
- package/lib/zhin-agent/model-resolver.js +25 -0
- package/lib/zhin-agent/model-resolver.js.map +1 -0
- package/lib/zhin-agent/phase-trace.d.ts +12 -0
- package/lib/zhin-agent/phase-trace.d.ts.map +1 -0
- package/lib/zhin-agent/phase-trace.js +24 -0
- package/lib/zhin-agent/phase-trace.js.map +1 -0
- package/lib/zhin-agent/prompt-assembly.d.ts +22 -0
- package/lib/zhin-agent/prompt-assembly.d.ts.map +1 -0
- package/lib/zhin-agent/prompt-assembly.js +66 -0
- package/lib/zhin-agent/prompt-assembly.js.map +1 -0
- package/lib/zhin-agent/prompt-builder.d.ts +200 -0
- package/lib/zhin-agent/prompt-builder.d.ts.map +1 -0
- package/lib/zhin-agent/prompt-builder.js +574 -0
- package/lib/zhin-agent/prompt-builder.js.map +1 -0
- package/lib/zhin-agent/prompt-templates.d.ts +160 -0
- package/lib/zhin-agent/prompt-templates.d.ts.map +1 -0
- package/lib/zhin-agent/prompt-templates.js +436 -0
- package/lib/zhin-agent/prompt-templates.js.map +1 -0
- package/lib/zhin-agent/prompt.d.ts +15 -0
- package/lib/zhin-agent/prompt.d.ts.map +1 -1
- package/lib/zhin-agent/prompt.js +149 -4
- package/lib/zhin-agent/prompt.js.map +1 -1
- package/lib/zhin-agent/session-io.d.ts +10 -0
- package/lib/zhin-agent/session-io.d.ts.map +1 -0
- package/lib/zhin-agent/session-io.js +14 -0
- package/lib/zhin-agent/session-io.js.map +1 -0
- package/lib/zhin-agent/task-continuation.d.ts +144 -0
- package/lib/zhin-agent/task-continuation.d.ts.map +1 -0
- package/lib/zhin-agent/task-continuation.js +346 -0
- package/lib/zhin-agent/task-continuation.js.map +1 -0
- package/lib/zhin-agent/text-sanitize.d.ts +2 -5
- package/lib/zhin-agent/text-sanitize.d.ts.map +1 -1
- package/lib/zhin-agent/text-sanitize.js +2 -25
- package/lib/zhin-agent/text-sanitize.js.map +1 -1
- package/lib/zhin-agent/tool-calls-user-format.d.ts.map +1 -1
- package/lib/zhin-agent/tool-calls-user-format.js +12 -3
- package/lib/zhin-agent/tool-calls-user-format.js.map +1 -1
- package/lib/zhin-agent/tool-orchestration.d.ts +9 -0
- package/lib/zhin-agent/tool-orchestration.d.ts.map +1 -0
- package/lib/zhin-agent/tool-orchestration.js +68 -0
- package/lib/zhin-agent/tool-orchestration.js.map +1 -0
- package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -1
- package/lib/zhin-agent/tool-search-orchestrator.js +5 -2
- package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -1
- package/lib/zhin-agent/turn-pipeline.d.ts +5 -0
- package/lib/zhin-agent/turn-pipeline.d.ts.map +1 -0
- package/lib/zhin-agent/turn-pipeline.js +541 -0
- package/lib/zhin-agent/turn-pipeline.js.map +1 -0
- package/lib/zhin-agent/turn-tracker.d.ts +17 -0
- package/lib/zhin-agent/turn-tracker.d.ts.map +1 -0
- package/lib/zhin-agent/turn-tracker.js +54 -0
- package/lib/zhin-agent/turn-tracker.js.map +1 -0
- package/lib/zhin-agent/web-search-locale-attach.d.ts +4 -0
- package/lib/zhin-agent/web-search-locale-attach.d.ts.map +1 -0
- package/lib/zhin-agent/web-search-locale-attach.js +19 -0
- package/lib/zhin-agent/web-search-locale-attach.js.map +1 -0
- package/lib/zhin-agent/zhin-agent-private.d.ts +66 -0
- package/lib/zhin-agent/zhin-agent-private.d.ts.map +1 -0
- package/lib/zhin-agent/zhin-agent-private.js +4 -0
- package/lib/zhin-agent/zhin-agent-private.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typing Indicator 集成示例
|
|
3
|
+
*
|
|
4
|
+
* 展示如何在 ZhinAgent 中集成消息处理状态提示
|
|
5
|
+
*/
|
|
6
|
+
import { TypingIndicatorManager, ReactionTypingIndicatorAdapter, GenericTypingIndicatorAdapter, } from './index.js';
|
|
7
|
+
const DEFAULT_TYPING_CONFIG = {
|
|
8
|
+
enabled: true,
|
|
9
|
+
defaultType: 'reaction',
|
|
10
|
+
defaultEmoji: '⏳',
|
|
11
|
+
defaultMessage: '正在处理中...',
|
|
12
|
+
autoRemove: true,
|
|
13
|
+
removeDelay: 5000,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* 为 ZhinAgent 创建 Typing Indicator 管理器
|
|
17
|
+
*/
|
|
18
|
+
export function createTypingIndicatorManagerForZhinAgent(plugin, config = {}) {
|
|
19
|
+
const mergedConfig = { ...DEFAULT_TYPING_CONFIG, ...config };
|
|
20
|
+
const manager = new TypingIndicatorManager({
|
|
21
|
+
type: mergedConfig.defaultType,
|
|
22
|
+
emoji: mergedConfig.defaultEmoji,
|
|
23
|
+
message: mergedConfig.defaultMessage,
|
|
24
|
+
autoRemove: mergedConfig.autoRemove,
|
|
25
|
+
removeDelay: mergedConfig.removeDelay,
|
|
26
|
+
});
|
|
27
|
+
// 注册 ICQQ 适配器(如果存在)
|
|
28
|
+
// 注意:实际使用时需要从适配器实例获取 bot
|
|
29
|
+
// 这里提供的是示例实现
|
|
30
|
+
return manager;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 创建 ICQQ 适配器
|
|
34
|
+
*
|
|
35
|
+
* 注意:实际使用时需要从 ICQQ 适配器实例获取 bot
|
|
36
|
+
* 这里提供的是示例实现框架
|
|
37
|
+
*/
|
|
38
|
+
export function createICQQAdapterFromBot(bot, outbound) {
|
|
39
|
+
const addReaction = async (messageId, emoji) => {
|
|
40
|
+
try {
|
|
41
|
+
if (bot.$addReaction) {
|
|
42
|
+
return await bot.$addReaction(messageId, emoji);
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('[ICQQ] Failed to add reaction:', error);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const removeReaction = async (messageId, reactionId) => {
|
|
52
|
+
try {
|
|
53
|
+
if (bot.$removeReaction) {
|
|
54
|
+
await bot.$removeReaction(messageId, reactionId);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('[ICQQ] Failed to remove reaction:', error);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const sendMessage = async (options, content) => {
|
|
62
|
+
try {
|
|
63
|
+
const isGroup = options.sceneType === 'group' || options.sceneType === 'channel';
|
|
64
|
+
const id = isGroup
|
|
65
|
+
? (options.groupId ?? options.sessionId?.split(':')[1] ?? '')
|
|
66
|
+
: (options.userId ?? options.sessionId?.split(':').pop() ?? '');
|
|
67
|
+
const sendOptions = {
|
|
68
|
+
type: (isGroup ? 'group' : 'private'),
|
|
69
|
+
id,
|
|
70
|
+
context: 'icqq',
|
|
71
|
+
bot: bot.$id,
|
|
72
|
+
content: [{ type: 'text', data: { text: content } }],
|
|
73
|
+
};
|
|
74
|
+
if (outbound) {
|
|
75
|
+
return await outbound.sendMessage(sendOptions);
|
|
76
|
+
}
|
|
77
|
+
const typedBot = bot;
|
|
78
|
+
return await typedBot.$sendMessage?.(sendOptions) ?? null;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error('[ICQQ] Failed to send message:', error);
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const deleteMessage = async (messageId) => {
|
|
86
|
+
try {
|
|
87
|
+
await bot.$recallMessage(messageId);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error('[ICQQ] Failed to delete message:', error);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return new ReactionTypingIndicatorAdapter(addReaction, removeReaction, sendMessage, deleteMessage);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 创建通用适配器
|
|
97
|
+
*/
|
|
98
|
+
export function createGenericAdapterFromBot(bot, platform, outbound) {
|
|
99
|
+
const sendMessage = async (options, content) => {
|
|
100
|
+
try {
|
|
101
|
+
const isGroup = options.sceneType === 'group' || options.sceneType === 'channel';
|
|
102
|
+
const id = isGroup
|
|
103
|
+
? (options.groupId ?? options.sessionId?.split(':')[1] ?? '')
|
|
104
|
+
: (options.userId ?? options.sessionId?.split(':').pop() ?? '');
|
|
105
|
+
const sendOptions = {
|
|
106
|
+
type: (isGroup ? 'group' : 'private'),
|
|
107
|
+
id,
|
|
108
|
+
context: platform,
|
|
109
|
+
bot: bot.$id,
|
|
110
|
+
content: [{ type: 'text', data: { text: content } }],
|
|
111
|
+
};
|
|
112
|
+
if (outbound) {
|
|
113
|
+
return await outbound.sendMessage(sendOptions);
|
|
114
|
+
}
|
|
115
|
+
const typedBot = bot;
|
|
116
|
+
return await typedBot.$sendMessage?.(sendOptions) ?? null;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error(`[${platform}] Failed to send message:`, error);
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const deleteMessage = async (messageId) => {
|
|
124
|
+
try {
|
|
125
|
+
await bot.$recallMessage(messageId);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error(`[${platform}] Failed to delete message:`, error);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
return new GenericTypingIndicatorAdapter(platform, sendMessage, deleteMessage);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 在 Agent 处理过程中使用 Typing Indicator
|
|
135
|
+
*
|
|
136
|
+
* 使用示例:
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const manager = createTypingIndicatorManagerForZhinAgent(plugin);
|
|
139
|
+
*
|
|
140
|
+
* // 开始处理时
|
|
141
|
+
* const indicator = await manager.start({
|
|
142
|
+
* platform: 'icqq',
|
|
143
|
+
* botId: '75318',
|
|
144
|
+
* sessionId: 'private:liuchunlang',
|
|
145
|
+
* messageId: '123456',
|
|
146
|
+
* sceneType: 'private',
|
|
147
|
+
* }, {
|
|
148
|
+
* type: 'reaction',
|
|
149
|
+
* emoji: '⏳',
|
|
150
|
+
* });
|
|
151
|
+
*
|
|
152
|
+
* // 处理完成后
|
|
153
|
+
* await indicator.stop();
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export async function withTypingIndicator(manager, context, config, fn) {
|
|
157
|
+
const options = {
|
|
158
|
+
messageId: context.messageId,
|
|
159
|
+
sessionId: context.sessionId,
|
|
160
|
+
userId: context.userId,
|
|
161
|
+
groupId: context.groupId,
|
|
162
|
+
platform: context.platform,
|
|
163
|
+
botId: context.botId,
|
|
164
|
+
sceneType: context.sceneType,
|
|
165
|
+
};
|
|
166
|
+
// 开始提示
|
|
167
|
+
const indicator = await manager.start(options, config);
|
|
168
|
+
try {
|
|
169
|
+
// 执行实际处理
|
|
170
|
+
const result = await fn();
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
// 停止提示
|
|
175
|
+
await indicator.stop();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// ── 配置解析 ──────────────────────────────────────────────────────────
|
|
179
|
+
/**
|
|
180
|
+
* 从平台配置解析 Typing Indicator 配置
|
|
181
|
+
*/
|
|
182
|
+
export function resolveTypingIndicatorConfig(platform, platformConfig) {
|
|
183
|
+
const defaultConfigs = {
|
|
184
|
+
icqq: {
|
|
185
|
+
type: 'reaction',
|
|
186
|
+
emoji: '⏳',
|
|
187
|
+
autoRemove: true,
|
|
188
|
+
},
|
|
189
|
+
qq: {
|
|
190
|
+
type: 'reaction',
|
|
191
|
+
emoji: '⏳',
|
|
192
|
+
autoRemove: true,
|
|
193
|
+
},
|
|
194
|
+
wechat: {
|
|
195
|
+
type: 'message',
|
|
196
|
+
message: '正在思考...',
|
|
197
|
+
autoRemove: true,
|
|
198
|
+
removeDelay: 3000,
|
|
199
|
+
},
|
|
200
|
+
telegram: {
|
|
201
|
+
type: 'typing',
|
|
202
|
+
autoRemove: true,
|
|
203
|
+
},
|
|
204
|
+
discord: {
|
|
205
|
+
type: 'typing',
|
|
206
|
+
autoRemove: true,
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
const defaultConfig = defaultConfigs[platform] || {
|
|
210
|
+
type: 'message',
|
|
211
|
+
message: '正在处理中...',
|
|
212
|
+
autoRemove: true,
|
|
213
|
+
};
|
|
214
|
+
// 合并平台特定配置
|
|
215
|
+
if (platformConfig) {
|
|
216
|
+
return { ...defaultConfig, ...platformConfig };
|
|
217
|
+
}
|
|
218
|
+
return defaultConfig;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/typing-indicator/integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import type { RateLimitConfig } from '@zhin.js/ai';
|
|
5
5
|
import type { ModelHarnessConfig } from './model-harness.js';
|
|
6
6
|
export type ModelSizeHint = 'small' | 'medium' | 'large';
|
|
7
|
+
export type ExecApprovalMode = 'ask' | 'allow' | 'deny';
|
|
7
8
|
/**
|
|
8
9
|
* Infer model size from model name string.
|
|
9
10
|
* Pattern: `:8b` → small, `:14b` → medium, else large.
|
|
@@ -20,6 +21,7 @@ export declare function resolveModelSize(config: Required<ZhinAgentConfig>, mode
|
|
|
20
21
|
export declare function resolveSkillInstructionMaxChars(config: Required<ZhinAgentConfig>, modelName: string): number;
|
|
21
22
|
export declare const SECTION_SEP = "\n\n---\n\n";
|
|
22
23
|
export declare const HISTORY_CONTEXT_MARKER = "[Chat messages since your last reply - for context]";
|
|
24
|
+
/** 与 @zhin.js/core `CURRENT_USER_MESSAGE_MARKER` 保持一致 */
|
|
23
25
|
export declare const CURRENT_MESSAGE_MARKER = "[Current message - respond to this]";
|
|
24
26
|
export declare const PERM_MAP: Record<string, number>;
|
|
25
27
|
export type OnChunkCallback = (chunk: string, full: string) => void;
|
|
@@ -53,7 +55,14 @@ export interface ZhinAgentConfig {
|
|
|
53
55
|
execSecurity?: 'deny' | 'allowlist' | 'full';
|
|
54
56
|
execPreset?: 'readonly' | 'network' | 'development' | 'custom';
|
|
55
57
|
execAllowlist?: string[];
|
|
56
|
-
|
|
58
|
+
/** 主 Agent:白名单外命令处理模式(ask=请求确认,allow=自动放行,deny=直接拒绝) */
|
|
59
|
+
execApprovalMode?: ExecApprovalMode;
|
|
60
|
+
/** 子 Agent(spawn_task)执行模式 */
|
|
61
|
+
subagentExecApprovalMode?: ExecApprovalMode;
|
|
62
|
+
/** Worker 执行模式(deferred worker 默认) */
|
|
63
|
+
workerExecApprovalMode?: ExecApprovalMode;
|
|
64
|
+
/** Task 执行模式(run_deferred_task 入口) */
|
|
65
|
+
taskExecApprovalMode?: ExecApprovalMode;
|
|
57
66
|
maxSubagentIterations?: number;
|
|
58
67
|
subagentTools?: string[];
|
|
59
68
|
/**
|
|
@@ -75,7 +84,7 @@ export interface ZhinAgentConfig {
|
|
|
75
84
|
sessionId: string;
|
|
76
85
|
extra: Record<string, unknown>;
|
|
77
86
|
}) => void;
|
|
78
|
-
/** 启用
|
|
87
|
+
/** 启用 deferred + 同步 Worker(主 Agent 仅编排) */
|
|
79
88
|
toolSearch?: boolean;
|
|
80
89
|
/** Worker 侧 TF-IDF 载入 deferred 工具数量上限 */
|
|
81
90
|
toolSearchMaxResults?: number;
|
|
@@ -87,6 +96,11 @@ export interface ZhinAgentConfig {
|
|
|
87
96
|
platformPromptSectionMaxChars?: number;
|
|
88
97
|
/** 单 slot 平台 prompt 合计上限(字符) */
|
|
89
98
|
platformPromptMaxChars?: number;
|
|
99
|
+
/**
|
|
100
|
+
* 同一轮对话内累计多少次策略/安全拒绝后强制结束工具循环(默认 2,传给 Agent)。
|
|
101
|
+
* 设为 0 禁用熔断。
|
|
102
|
+
*/
|
|
103
|
+
policyDenialStopAfter?: number;
|
|
90
104
|
}
|
|
91
105
|
/** toolSearch 主 Agent 默认常驻(不含 activate_skill:执行一律经 Worker) */
|
|
92
106
|
export declare const DEFAULT_TOOL_SEARCH_ORCHESTRATOR_TOOLS: readonly ["tool_search", "run_deferred_task", "ask_user"];
|
|
@@ -97,4 +111,8 @@ export declare const DEFAULT_TOOL_SEARCH_WORKER_BASE_TOOLS: readonly ["bash", "r
|
|
|
97
111
|
export declare const DEFAULT_CONFIG: Required<ZhinAgentConfig>;
|
|
98
112
|
/** `env` 参数主要用于测试注入,运行时默认读取 `process.env`。 */
|
|
99
113
|
export declare function isPhaseTraceEnabled(config: Required<ZhinAgentConfig>, env?: NodeJS.ProcessEnv): boolean;
|
|
114
|
+
/** run_deferred_task 外层超时:须覆盖 Worker 多轮 LLM + MCP(默认远高于 Agent 30s 工具超时) */
|
|
115
|
+
export declare function resolveDeferredTaskToolTimeout(config: Pick<Required<ZhinAgentConfig>, 'timeout' | 'subagentTurnWaitMs' | 'maxSubagentIterations'>): number;
|
|
116
|
+
/** Worker 内慢工具(MCP 等)默认超时 */
|
|
117
|
+
export declare function resolveWorkerSlowToolTimeout(config: Pick<Required<ZhinAgentConfig>, 'timeout' | 'maxSubagentIterations'>): number;
|
|
100
118
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/config.ts"],"names":[],"mappings":"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"}
|
package/lib/zhin-agent/config.js
CHANGED
|
@@ -40,6 +40,7 @@ export function resolveSkillInstructionMaxChars(config, modelName) {
|
|
|
40
40
|
}
|
|
41
41
|
export const SECTION_SEP = '\n\n---\n\n';
|
|
42
42
|
export const HISTORY_CONTEXT_MARKER = '[Chat messages since your last reply - for context]';
|
|
43
|
+
/** 与 @zhin.js/core `CURRENT_USER_MESSAGE_MARKER` 保持一致 */
|
|
43
44
|
export const CURRENT_MESSAGE_MARKER = '[Current message - respond to this]';
|
|
44
45
|
export const PERM_MAP = PERMISSION_LEVEL_PRIORITY;
|
|
45
46
|
const TRUE_VALUES = new Set(['1', 'true', 'yes', 'on']);
|
|
@@ -64,11 +65,11 @@ export const DEFAULT_TOOL_SEARCH_WORKER_BASE_TOOLS = [
|
|
|
64
65
|
];
|
|
65
66
|
export const DEFAULT_CONFIG = {
|
|
66
67
|
persona: 'You are Zhin, an intelligent IM assistant running in Zhin.js. Answer clearly, act through available tools when needed, and never claim actions or results unless confirmed by tool output.',
|
|
67
|
-
maxIterations:
|
|
68
|
-
timeout:
|
|
69
|
-
preExecTimeout:
|
|
70
|
-
maxSkills:
|
|
71
|
-
maxTools:
|
|
68
|
+
maxIterations: 15, // 增加到15次,支持复杂任务
|
|
69
|
+
timeout: 120_000, // 增加到2分钟
|
|
70
|
+
preExecTimeout: 15_000,
|
|
71
|
+
maxSkills: 5, // 增加技能数量
|
|
72
|
+
maxTools: 12, // 增加工具数量
|
|
72
73
|
minTopicRounds: 5,
|
|
73
74
|
slidingWindowSize: 5,
|
|
74
75
|
topicChangeThreshold: 0.15,
|
|
@@ -84,21 +85,25 @@ export const DEFAULT_CONFIG = {
|
|
|
84
85
|
execSecurity: 'deny',
|
|
85
86
|
execPreset: 'custom',
|
|
86
87
|
execAllowlist: [],
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
execApprovalMode: 'deny',
|
|
89
|
+
subagentExecApprovalMode: 'deny',
|
|
90
|
+
workerExecApprovalMode: 'deny',
|
|
91
|
+
taskExecApprovalMode: 'deny',
|
|
92
|
+
maxSubagentIterations: 25, // 增加子任务迭代次数
|
|
89
93
|
subagentTools: [],
|
|
90
|
-
subagentTurnWaitMs:
|
|
94
|
+
subagentTurnWaitMs: 300_000, // 增加等待时间到5分钟
|
|
91
95
|
modelSizeHint: '',
|
|
92
96
|
skillInstructionMaxChars: 0,
|
|
93
97
|
modelHarness: {},
|
|
94
98
|
phaseTrace: false,
|
|
95
99
|
onPhaseTrace: () => { },
|
|
96
100
|
toolSearch: false,
|
|
97
|
-
toolSearchMaxResults:
|
|
101
|
+
toolSearchMaxResults: 8, // 增加工具搜索结果数量
|
|
98
102
|
toolSearchOrchestratorTools: [...DEFAULT_TOOL_SEARCH_ORCHESTRATOR_TOOLS],
|
|
99
103
|
toolSearchWorkerBaseTools: [...DEFAULT_TOOL_SEARCH_WORKER_BASE_TOOLS],
|
|
100
104
|
platformPromptSectionMaxChars: 2048,
|
|
101
105
|
platformPromptMaxChars: 4096,
|
|
106
|
+
policyDenialStopAfter: 2,
|
|
102
107
|
};
|
|
103
108
|
/** `env` 参数主要用于测试注入,运行时默认读取 `process.env`。 */
|
|
104
109
|
export function isPhaseTraceEnabled(config, env = process.env) {
|
|
@@ -107,4 +112,17 @@ export function isPhaseTraceEnabled(config, env = process.env) {
|
|
|
107
112
|
const raw = env.ZHIN_AGENT_PHASE_TRACE?.trim().toLowerCase();
|
|
108
113
|
return !!raw && TRUE_VALUES.has(raw);
|
|
109
114
|
}
|
|
115
|
+
/** run_deferred_task 外层超时:须覆盖 Worker 多轮 LLM + MCP(默认远高于 Agent 30s 工具超时) */
|
|
116
|
+
export function resolveDeferredTaskToolTimeout(config) {
|
|
117
|
+
const turnMs = config.timeout ?? 60_000;
|
|
118
|
+
const waitMs = config.subagentTurnWaitMs ?? 180_000;
|
|
119
|
+
const maxIter = config.maxSubagentIterations ?? 15;
|
|
120
|
+
const iterationBudget = turnMs * Math.min(maxIter, 10);
|
|
121
|
+
return Math.max(waitMs, iterationBudget, 180_000);
|
|
122
|
+
}
|
|
123
|
+
/** Worker 内慢工具(MCP 等)默认超时 */
|
|
124
|
+
export function resolveWorkerSlowToolTimeout(config) {
|
|
125
|
+
const turnMs = config.timeout ?? 60_000;
|
|
126
|
+
return Math.min(180_000, Math.max(60_000, turnMs * 2));
|
|
127
|
+
}
|
|
110
128
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/zhin-agent/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/zhin-agent/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Plugin, ToolContext } from '@zhin.js/core';
|
|
2
|
+
export declare class ZhinAgentEventEmitter {
|
|
3
|
+
private hostPlugin;
|
|
4
|
+
constructor(hostPlugin?: Plugin | null);
|
|
5
|
+
setHostPlugin(plugin: Plugin): void;
|
|
6
|
+
getHostPlugin(): Plugin | null;
|
|
7
|
+
createPayload(sessionId: string, context: ToolContext, mode: Plugin.AIEventPayload['mode'], extra?: Partial<Plugin.AIEventPayload>): Plugin.AIEventPayload;
|
|
8
|
+
dispatch(name: keyof Plugin.Lifecycle, payload: Plugin.AIEventPayload): Promise<void>;
|
|
9
|
+
emit(name: keyof Plugin.Lifecycle, payload: Plugin.AIEventPayload): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=event-emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/event-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKzD,qBAAa,qBAAqB;IACpB,OAAO,CAAC,UAAU;gBAAV,UAAU,GAAE,MAAM,GAAG,IAAW;IAEpD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAInC,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EACnC,KAAK,GAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAM,GACzC,MAAM,CAAC,cAAc;IAelB,QAAQ,CACZ,IAAI,EAAE,MAAM,MAAM,CAAC,SAAS,EAC5B,OAAO,EAAE,MAAM,CAAC,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC;IAMhB,IAAI,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI;CAQzE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Logger, formatCompact } from '@zhin.js/logger';
|
|
2
|
+
const logger = new Logger(null, 'ZhinAgent');
|
|
3
|
+
export class ZhinAgentEventEmitter {
|
|
4
|
+
hostPlugin;
|
|
5
|
+
constructor(hostPlugin = null) {
|
|
6
|
+
this.hostPlugin = hostPlugin;
|
|
7
|
+
}
|
|
8
|
+
setHostPlugin(plugin) {
|
|
9
|
+
this.hostPlugin = plugin.root ?? plugin;
|
|
10
|
+
}
|
|
11
|
+
getHostPlugin() {
|
|
12
|
+
return this.hostPlugin;
|
|
13
|
+
}
|
|
14
|
+
createPayload(sessionId, context, mode, extra = {}) {
|
|
15
|
+
return {
|
|
16
|
+
sessionId,
|
|
17
|
+
source: 'zhin-agent',
|
|
18
|
+
mode,
|
|
19
|
+
userId: context.senderId,
|
|
20
|
+
platform: context.platform,
|
|
21
|
+
botId: context.botId,
|
|
22
|
+
sceneId: context.sceneId,
|
|
23
|
+
messageId: context.messageId,
|
|
24
|
+
scope: context.scope,
|
|
25
|
+
...extra,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async dispatch(name, payload) {
|
|
29
|
+
const root = this.hostPlugin?.root ?? this.hostPlugin;
|
|
30
|
+
if (!root)
|
|
31
|
+
return;
|
|
32
|
+
await root.dispatch(name, payload);
|
|
33
|
+
}
|
|
34
|
+
emit(name, payload) {
|
|
35
|
+
this.dispatch(name, payload).catch((error) => {
|
|
36
|
+
logger.warn(formatCompact({
|
|
37
|
+
ai_event: String(name),
|
|
38
|
+
error: error instanceof Error ? error.message : String(error),
|
|
39
|
+
}));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=event-emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../src/zhin-agent/event-emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAE7C,MAAM,OAAO,qBAAqB;IACZ;IAApB,YAAoB,aAA4B,IAAI;QAAhC,eAAU,GAAV,UAAU,CAAsB;IAAG,CAAC;IAExD,aAAa,CAAC,MAAc;QAC1B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IAC1C,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,aAAa,CACX,SAAiB,EACjB,OAAoB,EACpB,IAAmC,EACnC,QAAwC,EAAE;QAE1C,OAAO;YACL,SAAS;YACT,MAAM,EAAE,YAAY;YACpB,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,QAAQ;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAA4B,EAC5B,OAA8B;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAW,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,IAA4B,EAAE,OAA8B;QAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* 11. 定时任务:cron_add 持久化定时任务
|
|
16
16
|
* 12. 多模态输入:图片/音频直接传给视觉模型
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import type { Plugin } from '@zhin.js/core';
|
|
19
19
|
import type { AIProvider, AgentTool, ContentPart } from '@zhin.js/ai';
|
|
20
20
|
import type { Tool, ToolContext } from '../orchestrator/types.js';
|
|
21
21
|
import type { SkillRegistry } from '../orchestrator/skill-registry.js';
|
|
@@ -31,6 +31,9 @@ import { type ZhinAgentConfig, type OnChunkCallback } from './config.js';
|
|
|
31
31
|
export type { ZhinAgentConfig, OnChunkCallback } from './config.js';
|
|
32
32
|
export type { ZhinAgentTurnMetrics, ZhinAgentTurnPath } from './turn-metrics.js';
|
|
33
33
|
export { formatAiHandlerCompleteLog, formatZhinAgentTurnUsage } from './turn-metrics.js';
|
|
34
|
+
export * from './prompt-builder.js';
|
|
35
|
+
export * from './prompt-templates.js';
|
|
36
|
+
export * from './task-continuation.js';
|
|
34
37
|
export declare class ZhinAgent {
|
|
35
38
|
private provider;
|
|
36
39
|
private config;
|
|
@@ -48,21 +51,18 @@ export declare class ZhinAgent {
|
|
|
48
51
|
private skillsSummaryXML;
|
|
49
52
|
private modelRegistry;
|
|
50
53
|
private phaseTraceEnabled;
|
|
51
|
-
|
|
52
|
-
private hostPlugin;
|
|
54
|
+
private readonly emitter;
|
|
53
55
|
private deferredCatalog;
|
|
54
56
|
private readonly deferredWorkerRunner;
|
|
55
57
|
private lastToolSearchDeferredStats?;
|
|
56
|
-
private
|
|
57
|
-
private
|
|
58
|
-
private activeTurnSubagentWaits;
|
|
58
|
+
private readonly turnTracker;
|
|
59
|
+
private get phaseConfig();
|
|
59
60
|
constructor(provider: AIProvider, config?: ZhinAgentConfig);
|
|
60
61
|
setSkillRegistry(registry: SkillRegistry): void;
|
|
61
62
|
setOrchestrator(orchestrator: AgentOrchestrator): void;
|
|
62
63
|
setSessionManager(manager: SessionManager): void;
|
|
63
64
|
setContextManager(manager: ContextManager): void;
|
|
64
65
|
setModelRegistry(registry: ModelRegistry): void;
|
|
65
|
-
/** 由 init 注入根插件,供 Owner 编排 / ask_user(勿依赖消息处理时的 getPlugin ALS) */
|
|
66
66
|
setHostPlugin(plugin: Plugin): void;
|
|
67
67
|
upgradeMemoryToDatabase(msgModel: any, sumModel: any): void;
|
|
68
68
|
upgradeProfilesToDatabase(model: any): void;
|
|
@@ -70,42 +70,20 @@ export declare class ZhinAgent {
|
|
|
70
70
|
setSubagentSender(sender: SubagentResultSender): void;
|
|
71
71
|
getSubagentManager(): SubagentManager | null;
|
|
72
72
|
getUserProfiles(): UserProfileStore;
|
|
73
|
-
/** 根据任务类型选择最合适的模型,优先使用 config 显式指定,其次 ModelRegistry,回退到 provider.models[0] */
|
|
74
|
-
private resolveModel;
|
|
75
|
-
/**
|
|
76
|
-
* 返回按优先级排序的候选模型列表(用于自动降级)。
|
|
77
|
-
* 第一个是最优选择,失败后依次尝试后续模型。
|
|
78
|
-
*/
|
|
79
|
-
private resolveModelCandidates;
|
|
80
73
|
registerTool(tool: AgentTool): () => void;
|
|
81
74
|
setBootstrapContext(context: string): void;
|
|
82
75
|
setActiveSkillsContext(content: string): void;
|
|
83
76
|
setSkillsSummaryXML(xml: string): void;
|
|
84
|
-
/** 上一轮 `process` / `processMultimodal` 的 token 等指标(供 AI Handler 打汇总日志) */
|
|
85
77
|
getLastTurnMetrics(): ZhinAgentTurnMetrics | null;
|
|
86
78
|
private beginActiveTurn;
|
|
87
|
-
private addActiveTurnSubagentUsage;
|
|
88
|
-
private trackActiveTurnSubagent;
|
|
89
79
|
private finalizeActiveTurn;
|
|
80
|
+
private emitSessionNewEvent;
|
|
81
|
+
private emitSessionCompactEvent;
|
|
90
82
|
process(content: string, context: ToolContext, externalTools?: Tool[], onChunk?: OnChunkCallback): Promise<OutputElement[]>;
|
|
91
83
|
private resolveAgentToolsForTurn;
|
|
92
84
|
private runDeferredWorker;
|
|
93
85
|
private buildDisciplinedPrompt;
|
|
94
|
-
private usageLogFields;
|
|
95
|
-
private logPhase;
|
|
96
86
|
processMultimodal(parts: ContentPart[], context: ToolContext, onChunk?: OnChunkCallback): Promise<OutputElement[]>;
|
|
97
|
-
/**
|
|
98
|
-
* 为内置工具注入 `extra.web_search_locale`:
|
|
99
|
-
* - 若调用方已在 `context.extra.web_search_locale` 中设置,则规范化后沿用;
|
|
100
|
-
* - 否则读取用户档案 `preferred_language` / `language`;
|
|
101
|
-
* - 均未设置时不在 extra 中写入,web_search 默认使用中文市场。
|
|
102
|
-
*/
|
|
103
|
-
private attachWebSearchLocale;
|
|
104
|
-
private buildHistoryMessages;
|
|
105
|
-
private streamChatWithHistory;
|
|
106
|
-
private saveToSession;
|
|
107
|
-
/** @deprecated 使用 {@link formatToolCallsForUser} */
|
|
108
|
-
private fallbackFormat;
|
|
109
87
|
isReady(): boolean;
|
|
110
88
|
dispose(): void;
|
|
111
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/index.ts"],"names":[],"mappings":"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"}
|