@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,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通用适配器 Typing Indicator 集成模块
|
|
3
|
+
*
|
|
4
|
+
* 为所有适配器提供统一的 Typing Indicator 集成接口,
|
|
5
|
+
* 支持自动初始化和配置管理。
|
|
6
|
+
*/
|
|
7
|
+
import type { Adapter, Bot } from '@zhin.js/core';
|
|
8
|
+
import { TypingIndicatorManager, type TypingIndicatorConfig, type TypingIndicator } from './index.js';
|
|
9
|
+
/**
|
|
10
|
+
* 平台 Bot 可能具备的扩展消息编辑能力
|
|
11
|
+
*/
|
|
12
|
+
interface MessageEditableBot {
|
|
13
|
+
$editMessage?(messageId: string, content: string): Promise<void>;
|
|
14
|
+
$updateMessage?(messageId: string, content: string): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export type BotWithEditing = Bot & Partial<MessageEditableBot>;
|
|
17
|
+
/** 出站发送:优先 Adapter.sendMessage(走 before.sendMessage 链) */
|
|
18
|
+
type OutboundAdapter = Pick<Adapter, 'sendMessage'>;
|
|
19
|
+
export interface AdapterTypingIndicatorConfig {
|
|
20
|
+
/** 是否启用(默认 true) */
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
/** 默认表情(默认 '⏳') */
|
|
23
|
+
defaultEmoji?: string;
|
|
24
|
+
/** 是否在完成后自动移除(默认 true) */
|
|
25
|
+
autoRemove?: boolean;
|
|
26
|
+
/** 自动移除延迟,毫秒(默认 5000) */
|
|
27
|
+
removeDelay?: number;
|
|
28
|
+
/** 私聊配置 */
|
|
29
|
+
privateConfig?: Partial<TypingIndicatorConfig>;
|
|
30
|
+
/** 群聊配置 */
|
|
31
|
+
groupConfig?: Partial<TypingIndicatorConfig>;
|
|
32
|
+
/** 平台特定配置 */
|
|
33
|
+
platformConfig?: Record<string, Partial<TypingIndicatorConfig>>;
|
|
34
|
+
}
|
|
35
|
+
export interface PlatformFeatures {
|
|
36
|
+
/** 平台名称 */
|
|
37
|
+
platform: string;
|
|
38
|
+
/** 是否支持消息回应(reaction) */
|
|
39
|
+
supportsReaction: boolean;
|
|
40
|
+
/** 是否支持消息编辑 */
|
|
41
|
+
supportsEdit: boolean;
|
|
42
|
+
/** 是否支持消息删除 */
|
|
43
|
+
supportsDelete: boolean;
|
|
44
|
+
/** 是否支持输入状态 */
|
|
45
|
+
supportsTyping: boolean;
|
|
46
|
+
/** 默认提示类型 */
|
|
47
|
+
defaultType: 'reaction' | 'message' | 'typing' | 'none';
|
|
48
|
+
}
|
|
49
|
+
export declare const PLATFORM_FEATURES: Record<string, PlatformFeatures>;
|
|
50
|
+
/** 平台适配器自管的 Typing Indicator(如 ICQQ),与 agent 内置 TypingIndicatorManager 区分 */
|
|
51
|
+
export interface PlatformTypingIndicatorManager {
|
|
52
|
+
start(options: {
|
|
53
|
+
messageId?: string;
|
|
54
|
+
sessionId: string;
|
|
55
|
+
userId?: string;
|
|
56
|
+
groupId?: string;
|
|
57
|
+
sceneType: 'private' | 'group';
|
|
58
|
+
}): Promise<unknown>;
|
|
59
|
+
stop(options: {
|
|
60
|
+
sessionId: string;
|
|
61
|
+
userId?: string;
|
|
62
|
+
groupId?: string;
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export type BotTypingIndicatorManager = TypingIndicatorManager | PlatformTypingIndicatorManager;
|
|
66
|
+
export interface BotWithTypingIndicator extends Bot {
|
|
67
|
+
$typingIndicator?: BotTypingIndicatorManager;
|
|
68
|
+
$addReaction?(messageId: string, emoji: string): Promise<string | null>;
|
|
69
|
+
$removeReaction?(messageId: string, reactionId: string): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
export declare class AdapterTypingIndicatorManager {
|
|
72
|
+
private managers;
|
|
73
|
+
private configs;
|
|
74
|
+
/**
|
|
75
|
+
* 为 Bot 启用 Typing Indicator
|
|
76
|
+
*/
|
|
77
|
+
enableForBot(bot: BotWithTypingIndicator, platform: string, config?: Partial<AdapterTypingIndicatorConfig>, outbound?: OutboundAdapter): TypingIndicatorManager;
|
|
78
|
+
/**
|
|
79
|
+
* 注册平台适配器
|
|
80
|
+
*/
|
|
81
|
+
private registerAdapter;
|
|
82
|
+
/**
|
|
83
|
+
* 解析会话 ID
|
|
84
|
+
*/
|
|
85
|
+
private parseSessionId;
|
|
86
|
+
/**
|
|
87
|
+
* 获取 Bot 的管理器
|
|
88
|
+
*/
|
|
89
|
+
getManager(platform: string, botId: string): TypingIndicatorManager | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* 获取 Bot 的配置
|
|
92
|
+
*/
|
|
93
|
+
getConfig(platform: string, botId: string): AdapterTypingIndicatorConfig | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* 停止 Bot 的所有提示
|
|
96
|
+
*/
|
|
97
|
+
stopAll(platform: string, botId: string): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* 停止所有 Bot 的所有提示
|
|
100
|
+
*/
|
|
101
|
+
stopAllBots(): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* 移除 Bot 的管理器
|
|
104
|
+
*/
|
|
105
|
+
removeBot(platform: string, botId: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* 清除所有管理器
|
|
108
|
+
*/
|
|
109
|
+
clearAll(): void;
|
|
110
|
+
/**
|
|
111
|
+
* 获取所有已注册的 Bot
|
|
112
|
+
*/
|
|
113
|
+
getRegisteredBots(): Array<{
|
|
114
|
+
platform: string;
|
|
115
|
+
botId: string;
|
|
116
|
+
}>;
|
|
117
|
+
/**
|
|
118
|
+
* 获取平台特性
|
|
119
|
+
*/
|
|
120
|
+
getPlatformFeatures(platform: string): PlatformFeatures | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* 检查平台是否支持 Typing Indicator
|
|
123
|
+
*/
|
|
124
|
+
supportsTypingIndicator(platform: string): boolean;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 获取全局适配器 Typing Indicator 管理器
|
|
128
|
+
*/
|
|
129
|
+
export declare function getAdapterTypingIndicatorManager(): AdapterTypingIndicatorManager;
|
|
130
|
+
/**
|
|
131
|
+
* 初始化适配器 Typing Indicator 管理器
|
|
132
|
+
*/
|
|
133
|
+
export declare function initAdapterTypingIndicatorManager(): AdapterTypingIndicatorManager;
|
|
134
|
+
/**
|
|
135
|
+
* 为 Bot 启用 Typing Indicator
|
|
136
|
+
*/
|
|
137
|
+
export declare function enableTypingIndicatorForBot(bot: BotWithTypingIndicator, platform: string, config?: Partial<AdapterTypingIndicatorConfig>, outbound?: OutboundAdapter): TypingIndicatorManager;
|
|
138
|
+
/**
|
|
139
|
+
* 快速开始提示
|
|
140
|
+
*/
|
|
141
|
+
export declare function startTypingForBot(bot: BotWithTypingIndicator, platform: string, options: {
|
|
142
|
+
messageId?: string;
|
|
143
|
+
sessionId: string;
|
|
144
|
+
userId?: string;
|
|
145
|
+
groupId?: string;
|
|
146
|
+
sceneType?: 'private' | 'group' | 'channel';
|
|
147
|
+
}, config?: Partial<AdapterTypingIndicatorConfig>, outbound?: OutboundAdapter): Promise<TypingIndicator>;
|
|
148
|
+
/**
|
|
149
|
+
* 快速停止提示
|
|
150
|
+
*/
|
|
151
|
+
export declare function stopTypingForBot(bot: BotWithTypingIndicator, platform: string, options: {
|
|
152
|
+
sessionId: string;
|
|
153
|
+
userId?: string;
|
|
154
|
+
groupId?: string;
|
|
155
|
+
sceneType?: 'private' | 'group' | 'channel';
|
|
156
|
+
}): Promise<void>;
|
|
157
|
+
export {};
|
|
158
|
+
//# sourceMappingURL=adapter-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-integration.d.ts","sourceRoot":"","sources":["../../src/typing-indicator/adapter-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通用适配器 Typing Indicator 集成模块
|
|
3
|
+
*
|
|
4
|
+
* 为所有适配器提供统一的 Typing Indicator 集成接口,
|
|
5
|
+
* 支持自动初始化和配置管理。
|
|
6
|
+
*/
|
|
7
|
+
import { TypingIndicatorManager, ReactionTypingIndicatorAdapter, GenericTypingIndicatorAdapter, } from './index.js';
|
|
8
|
+
function resolveTypingSendTarget(options) {
|
|
9
|
+
if ((options.sceneType === 'group' || options.sceneType === 'channel') &&
|
|
10
|
+
options.groupId) {
|
|
11
|
+
return { type: 'group', id: options.groupId };
|
|
12
|
+
}
|
|
13
|
+
if (options.userId) {
|
|
14
|
+
return { type: 'private', id: options.userId };
|
|
15
|
+
}
|
|
16
|
+
const parts = (options.sessionId ?? '').split(':').filter((p) => p.length > 0);
|
|
17
|
+
if (parts.length >= 3) {
|
|
18
|
+
return { type: 'group', id: parts[1] };
|
|
19
|
+
}
|
|
20
|
+
if (parts.length >= 2) {
|
|
21
|
+
return { type: 'private', id: parts[parts.length - 1] };
|
|
22
|
+
}
|
|
23
|
+
return { type: 'private', id: options.sessionId ?? '' };
|
|
24
|
+
}
|
|
25
|
+
function createOutboundSendMessage(bot, platform, outbound) {
|
|
26
|
+
return async (options, content) => {
|
|
27
|
+
try {
|
|
28
|
+
const { type, id } = resolveTypingSendTarget(options);
|
|
29
|
+
const sendOptions = {
|
|
30
|
+
type,
|
|
31
|
+
id,
|
|
32
|
+
context: platform,
|
|
33
|
+
bot: bot.$id,
|
|
34
|
+
content: [{ type: 'text', data: { text: content } }],
|
|
35
|
+
};
|
|
36
|
+
if (outbound) {
|
|
37
|
+
return await outbound.sendMessage(sendOptions);
|
|
38
|
+
}
|
|
39
|
+
return await bot.$sendMessage(sendOptions);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error(`[${platform}] Failed to send message:`, error);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// ── 预定义平台特性 ────────────────────────────────────────────────────
|
|
48
|
+
export const PLATFORM_FEATURES = {
|
|
49
|
+
icqq: {
|
|
50
|
+
platform: 'icqq',
|
|
51
|
+
supportsReaction: true,
|
|
52
|
+
supportsEdit: false,
|
|
53
|
+
supportsDelete: true,
|
|
54
|
+
supportsTyping: false,
|
|
55
|
+
defaultType: 'reaction',
|
|
56
|
+
},
|
|
57
|
+
telegram: {
|
|
58
|
+
platform: 'telegram',
|
|
59
|
+
supportsReaction: true,
|
|
60
|
+
supportsEdit: true,
|
|
61
|
+
supportsDelete: true,
|
|
62
|
+
supportsTyping: true,
|
|
63
|
+
defaultType: 'typing',
|
|
64
|
+
},
|
|
65
|
+
discord: {
|
|
66
|
+
platform: 'discord',
|
|
67
|
+
supportsReaction: true,
|
|
68
|
+
supportsEdit: true,
|
|
69
|
+
supportsDelete: true,
|
|
70
|
+
supportsTyping: true,
|
|
71
|
+
defaultType: 'typing',
|
|
72
|
+
},
|
|
73
|
+
kook: {
|
|
74
|
+
platform: 'kook',
|
|
75
|
+
supportsReaction: false,
|
|
76
|
+
supportsEdit: true,
|
|
77
|
+
supportsDelete: true,
|
|
78
|
+
supportsTyping: true,
|
|
79
|
+
defaultType: 'typing',
|
|
80
|
+
},
|
|
81
|
+
slack: {
|
|
82
|
+
platform: 'slack',
|
|
83
|
+
supportsReaction: false,
|
|
84
|
+
supportsEdit: true,
|
|
85
|
+
supportsDelete: true,
|
|
86
|
+
supportsTyping: true,
|
|
87
|
+
defaultType: 'typing',
|
|
88
|
+
},
|
|
89
|
+
lark: {
|
|
90
|
+
platform: 'lark',
|
|
91
|
+
supportsReaction: false,
|
|
92
|
+
supportsEdit: true,
|
|
93
|
+
supportsDelete: true,
|
|
94
|
+
supportsTyping: true,
|
|
95
|
+
defaultType: 'typing',
|
|
96
|
+
},
|
|
97
|
+
dingtalk: {
|
|
98
|
+
platform: 'dingtalk',
|
|
99
|
+
supportsReaction: false,
|
|
100
|
+
supportsEdit: false,
|
|
101
|
+
supportsDelete: false,
|
|
102
|
+
supportsTyping: false,
|
|
103
|
+
defaultType: 'message',
|
|
104
|
+
},
|
|
105
|
+
qq: {
|
|
106
|
+
platform: 'qq',
|
|
107
|
+
supportsReaction: false,
|
|
108
|
+
supportsEdit: false,
|
|
109
|
+
supportsDelete: true,
|
|
110
|
+
supportsTyping: false,
|
|
111
|
+
defaultType: 'message',
|
|
112
|
+
},
|
|
113
|
+
onebot11: {
|
|
114
|
+
platform: 'onebot11',
|
|
115
|
+
supportsReaction: false,
|
|
116
|
+
supportsEdit: false,
|
|
117
|
+
supportsDelete: true,
|
|
118
|
+
supportsTyping: false,
|
|
119
|
+
defaultType: 'message',
|
|
120
|
+
},
|
|
121
|
+
onebot12: {
|
|
122
|
+
platform: 'onebot12',
|
|
123
|
+
supportsReaction: false,
|
|
124
|
+
supportsEdit: false,
|
|
125
|
+
supportsDelete: true,
|
|
126
|
+
supportsTyping: false,
|
|
127
|
+
defaultType: 'message',
|
|
128
|
+
},
|
|
129
|
+
napcat: {
|
|
130
|
+
platform: 'napcat',
|
|
131
|
+
supportsReaction: true,
|
|
132
|
+
supportsEdit: false,
|
|
133
|
+
supportsDelete: true,
|
|
134
|
+
supportsTyping: true,
|
|
135
|
+
defaultType: 'reaction',
|
|
136
|
+
},
|
|
137
|
+
github: {
|
|
138
|
+
platform: 'github',
|
|
139
|
+
supportsReaction: false,
|
|
140
|
+
supportsEdit: false,
|
|
141
|
+
supportsDelete: false,
|
|
142
|
+
supportsTyping: false,
|
|
143
|
+
defaultType: 'message',
|
|
144
|
+
},
|
|
145
|
+
satori: {
|
|
146
|
+
platform: 'satori',
|
|
147
|
+
supportsReaction: false,
|
|
148
|
+
supportsEdit: true,
|
|
149
|
+
supportsDelete: true,
|
|
150
|
+
supportsTyping: true,
|
|
151
|
+
defaultType: 'typing',
|
|
152
|
+
},
|
|
153
|
+
email: {
|
|
154
|
+
platform: 'email',
|
|
155
|
+
supportsReaction: false,
|
|
156
|
+
supportsEdit: false,
|
|
157
|
+
supportsDelete: false,
|
|
158
|
+
supportsTyping: false,
|
|
159
|
+
defaultType: 'none',
|
|
160
|
+
},
|
|
161
|
+
'wechat-mp': {
|
|
162
|
+
platform: 'wechat-mp',
|
|
163
|
+
supportsReaction: false,
|
|
164
|
+
supportsEdit: false,
|
|
165
|
+
supportsDelete: false,
|
|
166
|
+
supportsTyping: false,
|
|
167
|
+
defaultType: 'message',
|
|
168
|
+
},
|
|
169
|
+
milky: {
|
|
170
|
+
platform: 'milky',
|
|
171
|
+
supportsReaction: false,
|
|
172
|
+
supportsEdit: false,
|
|
173
|
+
supportsDelete: true,
|
|
174
|
+
supportsTyping: false,
|
|
175
|
+
defaultType: 'message',
|
|
176
|
+
},
|
|
177
|
+
sandbox: {
|
|
178
|
+
platform: 'sandbox',
|
|
179
|
+
supportsReaction: false,
|
|
180
|
+
supportsEdit: false,
|
|
181
|
+
supportsDelete: true,
|
|
182
|
+
supportsTyping: false,
|
|
183
|
+
defaultType: 'message',
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
// ── 适配器集成管理器 ──────────────────────────────────────────────────
|
|
187
|
+
export class AdapterTypingIndicatorManager {
|
|
188
|
+
managers = new Map();
|
|
189
|
+
configs = new Map();
|
|
190
|
+
/**
|
|
191
|
+
* 为 Bot 启用 Typing Indicator
|
|
192
|
+
*/
|
|
193
|
+
enableForBot(bot, platform, config, outbound) {
|
|
194
|
+
const botKey = `${platform}:${bot.$id}`;
|
|
195
|
+
// 如果已经启用,返回现有的管理器
|
|
196
|
+
if (this.managers.has(botKey)) {
|
|
197
|
+
return this.managers.get(botKey);
|
|
198
|
+
}
|
|
199
|
+
// 获取平台特性
|
|
200
|
+
const features = PLATFORM_FEATURES[platform] || {
|
|
201
|
+
platform,
|
|
202
|
+
supportsReaction: false,
|
|
203
|
+
supportsEdit: false,
|
|
204
|
+
supportsDelete: true,
|
|
205
|
+
supportsTyping: false,
|
|
206
|
+
defaultType: 'message',
|
|
207
|
+
};
|
|
208
|
+
// 合并配置
|
|
209
|
+
const mergedConfig = {
|
|
210
|
+
enabled: true,
|
|
211
|
+
defaultEmoji: '⏳',
|
|
212
|
+
autoRemove: true,
|
|
213
|
+
removeDelay: 5000,
|
|
214
|
+
...config,
|
|
215
|
+
};
|
|
216
|
+
// 根据平台特性调整配置
|
|
217
|
+
if (!features.supportsReaction) {
|
|
218
|
+
// 如果平台不支持 reaction,强制使用 message
|
|
219
|
+
if (mergedConfig.privateConfig?.type === 'reaction') {
|
|
220
|
+
mergedConfig.privateConfig.type = 'message';
|
|
221
|
+
}
|
|
222
|
+
if (mergedConfig.groupConfig?.type === 'reaction') {
|
|
223
|
+
mergedConfig.groupConfig.type = 'message';
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// 创建管理器
|
|
227
|
+
const manager = new TypingIndicatorManager({
|
|
228
|
+
type: features.defaultType,
|
|
229
|
+
emoji: mergedConfig.defaultEmoji,
|
|
230
|
+
autoRemove: mergedConfig.autoRemove,
|
|
231
|
+
removeDelay: mergedConfig.removeDelay,
|
|
232
|
+
});
|
|
233
|
+
this.registerAdapter(manager, bot, platform, features, outbound);
|
|
234
|
+
// 存储管理器和配置
|
|
235
|
+
this.managers.set(botKey, manager);
|
|
236
|
+
this.configs.set(botKey, mergedConfig);
|
|
237
|
+
// 将管理器附加到 Bot
|
|
238
|
+
bot.$typingIndicator = manager;
|
|
239
|
+
return manager;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* 注册平台适配器
|
|
243
|
+
*/
|
|
244
|
+
registerAdapter(manager, bot, platform, features, outbound) {
|
|
245
|
+
const sendMessage = createOutboundSendMessage(bot, platform, outbound);
|
|
246
|
+
if (features.supportsReaction && bot.$addReaction && bot.$removeReaction) {
|
|
247
|
+
// 支持 reaction 的平台使用 ReactionTypingIndicatorAdapter
|
|
248
|
+
const adapter = new ReactionTypingIndicatorAdapter(
|
|
249
|
+
// addReaction
|
|
250
|
+
async (messageId, emoji) => {
|
|
251
|
+
try {
|
|
252
|
+
return await bot.$addReaction(messageId, emoji);
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
console.error(`[${platform}] Failed to add reaction:`, error);
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
// removeReaction
|
|
260
|
+
async (messageId, reactionId) => {
|
|
261
|
+
try {
|
|
262
|
+
await bot.$removeReaction(messageId, reactionId);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
console.error(`[${platform}] Failed to remove reaction:`, error);
|
|
266
|
+
}
|
|
267
|
+
}, sendMessage,
|
|
268
|
+
// deleteMessage
|
|
269
|
+
async (messageId) => {
|
|
270
|
+
try {
|
|
271
|
+
await bot.$recallMessage(messageId);
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
console.error(`[${platform}] Failed to delete message:`, error);
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
// editMessage
|
|
278
|
+
async (messageId, content) => {
|
|
279
|
+
try {
|
|
280
|
+
const editBot = bot;
|
|
281
|
+
if (typeof editBot.$editMessage === 'function') {
|
|
282
|
+
await editBot.$editMessage(messageId, content);
|
|
283
|
+
}
|
|
284
|
+
else if (typeof editBot.$updateMessage === 'function') {
|
|
285
|
+
await editBot.$updateMessage(messageId, content);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
console.error(`[${platform}] Failed to edit message:`, error);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
manager.registerAdapter(adapter);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
// 不支持 reaction 的平台使用 GenericTypingIndicatorAdapter
|
|
296
|
+
const adapter = new GenericTypingIndicatorAdapter(platform, sendMessage,
|
|
297
|
+
// deleteMessage
|
|
298
|
+
async (messageId) => {
|
|
299
|
+
try {
|
|
300
|
+
await bot.$recallMessage(messageId);
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
console.error(`[${platform}] Failed to delete message:`, error);
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
// editMessage
|
|
307
|
+
async (messageId, content) => {
|
|
308
|
+
try {
|
|
309
|
+
const editBot = bot;
|
|
310
|
+
if (typeof editBot.$editMessage === 'function') {
|
|
311
|
+
await editBot.$editMessage(messageId, content);
|
|
312
|
+
}
|
|
313
|
+
else if (typeof editBot.$updateMessage === 'function') {
|
|
314
|
+
await editBot.$updateMessage(messageId, content);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
console.error(`[${platform}] Failed to edit message:`, error);
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
manager.registerAdapter(adapter);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* 解析会话 ID
|
|
326
|
+
*/
|
|
327
|
+
parseSessionId(sessionId) {
|
|
328
|
+
const parts = sessionId.split(':');
|
|
329
|
+
if (parts.length === 2) {
|
|
330
|
+
return [parts[0], parts[1]];
|
|
331
|
+
}
|
|
332
|
+
return ['private', sessionId];
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* 获取 Bot 的管理器
|
|
336
|
+
*/
|
|
337
|
+
getManager(platform, botId) {
|
|
338
|
+
return this.managers.get(`${platform}:${botId}`);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* 获取 Bot 的配置
|
|
342
|
+
*/
|
|
343
|
+
getConfig(platform, botId) {
|
|
344
|
+
return this.configs.get(`${platform}:${botId}`);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* 停止 Bot 的所有提示
|
|
348
|
+
*/
|
|
349
|
+
async stopAll(platform, botId) {
|
|
350
|
+
const manager = this.managers.get(`${platform}:${botId}`);
|
|
351
|
+
if (manager) {
|
|
352
|
+
await manager.stopAll();
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* 停止所有 Bot 的所有提示
|
|
357
|
+
*/
|
|
358
|
+
async stopAllBots() {
|
|
359
|
+
for (const manager of this.managers.values()) {
|
|
360
|
+
await manager.stopAll();
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* 移除 Bot 的管理器
|
|
365
|
+
*/
|
|
366
|
+
removeBot(platform, botId) {
|
|
367
|
+
const botKey = `${platform}:${botId}`;
|
|
368
|
+
this.managers.delete(botKey);
|
|
369
|
+
this.configs.delete(botKey);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* 清除所有管理器
|
|
373
|
+
*/
|
|
374
|
+
clearAll() {
|
|
375
|
+
this.managers.clear();
|
|
376
|
+
this.configs.clear();
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* 获取所有已注册的 Bot
|
|
380
|
+
*/
|
|
381
|
+
getRegisteredBots() {
|
|
382
|
+
const bots = [];
|
|
383
|
+
for (const key of this.managers.keys()) {
|
|
384
|
+
const [platform, botId] = key.split(':');
|
|
385
|
+
bots.push({ platform, botId });
|
|
386
|
+
}
|
|
387
|
+
return bots;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* 获取平台特性
|
|
391
|
+
*/
|
|
392
|
+
getPlatformFeatures(platform) {
|
|
393
|
+
return PLATFORM_FEATURES[platform];
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* 检查平台是否支持 Typing Indicator
|
|
397
|
+
*/
|
|
398
|
+
supportsTypingIndicator(platform) {
|
|
399
|
+
const features = PLATFORM_FEATURES[platform];
|
|
400
|
+
return features ? features.defaultType !== 'none' : false;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// ── 全局实例 ──────────────────────────────────────────────────────────
|
|
404
|
+
let globalAdapterManager = null;
|
|
405
|
+
/**
|
|
406
|
+
* 获取全局适配器 Typing Indicator 管理器
|
|
407
|
+
*/
|
|
408
|
+
export function getAdapterTypingIndicatorManager() {
|
|
409
|
+
if (!globalAdapterManager) {
|
|
410
|
+
globalAdapterManager = new AdapterTypingIndicatorManager();
|
|
411
|
+
}
|
|
412
|
+
return globalAdapterManager;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* 初始化适配器 Typing Indicator 管理器
|
|
416
|
+
*/
|
|
417
|
+
export function initAdapterTypingIndicatorManager() {
|
|
418
|
+
globalAdapterManager = new AdapterTypingIndicatorManager();
|
|
419
|
+
return globalAdapterManager;
|
|
420
|
+
}
|
|
421
|
+
// ── 便捷函数 ──────────────────────────────────────────────────────────
|
|
422
|
+
function resolveTypingSceneType(options) {
|
|
423
|
+
if (options.sceneType)
|
|
424
|
+
return options.sceneType;
|
|
425
|
+
if (options.groupId)
|
|
426
|
+
return 'group';
|
|
427
|
+
const prefix = options.sessionId.split(':')[0];
|
|
428
|
+
if (prefix === 'group' || prefix === 'private' || prefix === 'channel') {
|
|
429
|
+
return prefix;
|
|
430
|
+
}
|
|
431
|
+
return 'private';
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* 为 Bot 启用 Typing Indicator
|
|
435
|
+
*/
|
|
436
|
+
export function enableTypingIndicatorForBot(bot, platform, config, outbound) {
|
|
437
|
+
return getAdapterTypingIndicatorManager().enableForBot(bot, platform, config, outbound);
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* 快速开始提示
|
|
441
|
+
*/
|
|
442
|
+
export async function startTypingForBot(bot, platform, options, config, outbound) {
|
|
443
|
+
const manager = enableTypingIndicatorForBot(bot, platform, config, outbound);
|
|
444
|
+
return await manager.start({
|
|
445
|
+
...options,
|
|
446
|
+
platform,
|
|
447
|
+
botId: bot.$id,
|
|
448
|
+
sceneType: resolveTypingSceneType(options),
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* 快速停止提示
|
|
453
|
+
*/
|
|
454
|
+
export async function stopTypingForBot(bot, platform, options) {
|
|
455
|
+
const manager = getAdapterTypingIndicatorManager().getManager(platform, bot.$id);
|
|
456
|
+
if (manager) {
|
|
457
|
+
await manager.stop({
|
|
458
|
+
...options,
|
|
459
|
+
platform,
|
|
460
|
+
botId: bot.$id,
|
|
461
|
+
sceneType: resolveTypingSceneType(options),
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
//# sourceMappingURL=adapter-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-integration.js","sourceRoot":"","sources":["../../src/typing-indicator/adapter-integration.ts"],"names":[],"mappings":"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"}
|