keepwork-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +21 -0
  2. package/dist-npm/keepwork-sdk.js +37514 -0
  3. package/dist-npm/keepwork-sdk.js.map +1 -0
  4. package/dist-npm/md5-CZ0vz1_S.js +240 -0
  5. package/dist-npm/md5-CZ0vz1_S.js.map +1 -0
  6. package/dist-npm/types/index.d.ts +42 -0
  7. package/dist-npm/types/index.d.ts.map +1 -0
  8. package/dist-npm/types/src/ai-chat/AIChat.core.d.ts +218 -0
  9. package/dist-npm/types/src/ai-chat/AIChat.core.d.ts.map +1 -0
  10. package/dist-npm/types/src/ai-chat/AIChat.d.ts +18 -0
  11. package/dist-npm/types/src/ai-chat/AIChat.d.ts.map +1 -0
  12. package/dist-npm/types/src/ai-chat/AIChat.session.d.ts +201 -0
  13. package/dist-npm/types/src/ai-chat/AIChat.session.d.ts.map +1 -0
  14. package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts +297 -0
  15. package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts.map +1 -0
  16. package/dist-npm/types/src/ai-chat/AIGenerators.d.ts +15 -0
  17. package/dist-npm/types/src/ai-chat/AIGenerators.d.ts.map +1 -0
  18. package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts +208 -0
  19. package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts.map +1 -0
  20. package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts +153 -0
  21. package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts.map +1 -0
  22. package/dist-npm/types/src/ai-chat/CopilotTools.d.ts +150 -0
  23. package/dist-npm/types/src/ai-chat/CopilotTools.d.ts.map +1 -0
  24. package/dist-npm/types/src/ai-chat/MqttManager.d.ts +123 -0
  25. package/dist-npm/types/src/ai-chat/MqttManager.d.ts.map +1 -0
  26. package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts +210 -0
  27. package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts.map +1 -0
  28. package/dist-npm/types/src/audio/AudioEngine.d.ts +272 -0
  29. package/dist-npm/types/src/audio/AudioEngine.d.ts.map +1 -0
  30. package/dist-npm/types/src/audio/AudioEngine.utils.d.ts +72 -0
  31. package/dist-npm/types/src/audio/AudioEngine.utils.d.ts.map +1 -0
  32. package/dist-npm/types/src/audio/Speech.d.ts +247 -0
  33. package/dist-npm/types/src/audio/Speech.d.ts.map +1 -0
  34. package/dist-npm/types/src/core/AgentConfig.d.ts +104 -0
  35. package/dist-npm/types/src/core/AgentConfig.d.ts.map +1 -0
  36. package/dist-npm/types/src/core/AgentRouter.d.ts +342 -0
  37. package/dist-npm/types/src/core/AgentRouter.d.ts.map +1 -0
  38. package/dist-npm/types/src/core/NPL.d.ts +251 -0
  39. package/dist-npm/types/src/core/NPL.d.ts.map +1 -0
  40. package/dist-npm/types/src/core/RemoteLog.d.ts +132 -0
  41. package/dist-npm/types/src/core/RemoteLog.d.ts.map +1 -0
  42. package/dist-npm/types/src/core/keepworkSDK.core.d.ts +84 -0
  43. package/dist-npm/types/src/core/keepworkSDK.core.d.ts.map +1 -0
  44. package/dist-npm/types/src/core/keepworkSDK.d.ts +129 -0
  45. package/dist-npm/types/src/core/keepworkSDK.d.ts.map +1 -0
  46. package/dist-npm/types/src/core/keepworkSDK.pages.d.ts +101 -0
  47. package/dist-npm/types/src/core/keepworkSDK.pages.d.ts.map +1 -0
  48. package/dist-npm/types/src/core/keepworkSDK.utils.d.ts +40 -0
  49. package/dist-npm/types/src/core/keepworkSDK.utils.d.ts.map +1 -0
  50. package/dist-npm/types/src/digital-human/DigitalHuman.d.ts +1316 -0
  51. package/dist-npm/types/src/digital-human/DigitalHuman.d.ts.map +1 -0
  52. package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts +54 -0
  53. package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts.map +1 -0
  54. package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts +104 -0
  55. package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts.map +1 -0
  56. package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts +390 -0
  57. package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts.map +1 -0
  58. package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts +59 -0
  59. package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts.map +1 -0
  60. package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts +114 -0
  61. package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts.map +1 -0
  62. package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts +53 -0
  63. package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts.map +1 -0
  64. package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts +65 -0
  65. package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts.map +1 -0
  66. package/dist-npm/types/src/rtc/AIChatRTC.d.ts +91 -0
  67. package/dist-npm/types/src/rtc/AIChatRTC.d.ts.map +1 -0
  68. package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts +268 -0
  69. package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts.map +1 -0
  70. package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts +232 -0
  71. package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts.map +1 -0
  72. package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts +92 -0
  73. package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts.map +1 -0
  74. package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts +15 -0
  75. package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts.map +1 -0
  76. package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts +127 -0
  77. package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts.map +1 -0
  78. package/dist-npm/types/src/rtc/LocalRTC.d.ts +91 -0
  79. package/dist-npm/types/src/rtc/LocalRTC.d.ts.map +1 -0
  80. package/dist-npm/types/src/rtc/SpeechRTC.d.ts +156 -0
  81. package/dist-npm/types/src/rtc/SpeechRTC.d.ts.map +1 -0
  82. package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts +191 -0
  83. package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts.map +1 -0
  84. package/dist-npm/types/src/store/CloudDrive.d.ts +140 -0
  85. package/dist-npm/types/src/store/CloudDrive.d.ts.map +1 -0
  86. package/dist-npm/types/src/store/LocalStorageUtil.d.ts +136 -0
  87. package/dist-npm/types/src/store/LocalStorageUtil.d.ts.map +1 -0
  88. package/dist-npm/types/src/store/PersonalPageStore.base.d.ts +267 -0
  89. package/dist-npm/types/src/store/PersonalPageStore.base.d.ts.map +1 -0
  90. package/dist-npm/types/src/store/PersonalPageStore.d.ts +13 -0
  91. package/dist-npm/types/src/store/PersonalPageStore.d.ts.map +1 -0
  92. package/dist-npm/types/src/store/PersonalPageStore.data.d.ts +198 -0
  93. package/dist-npm/types/src/store/PersonalPageStore.data.d.ts.map +1 -0
  94. package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts +171 -0
  95. package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts.map +1 -0
  96. package/dist-npm/types/src/store/PersonalPageStore.types.d.ts +92 -0
  97. package/dist-npm/types/src/store/PersonalPageStore.types.d.ts.map +1 -0
  98. package/dist-npm/types/src/store/YMLParser.d.ts +96 -0
  99. package/dist-npm/types/src/store/YMLParser.d.ts.map +1 -0
  100. package/dist-npm/types/src/tools/AgentTool.d.ts +110 -0
  101. package/dist-npm/types/src/tools/AgentTool.d.ts.map +1 -0
  102. package/dist-npm/types/src/tools/AppTools.d.ts +122 -0
  103. package/dist-npm/types/src/tools/AppTools.d.ts.map +1 -0
  104. package/dist-npm/types/src/tools/ExecuteTool.d.ts +96 -0
  105. package/dist-npm/types/src/tools/ExecuteTool.d.ts.map +1 -0
  106. package/dist-npm/types/src/tools/FileTools.d.ts +77 -0
  107. package/dist-npm/types/src/tools/FileTools.d.ts.map +1 -0
  108. package/dist-npm/types/src/tools/MinigameTools.d.ts +234 -0
  109. package/dist-npm/types/src/tools/MinigameTools.d.ts.map +1 -0
  110. package/dist-npm/types/src/tools/MqttTool.d.ts +53 -0
  111. package/dist-npm/types/src/tools/MqttTool.d.ts.map +1 -0
  112. package/dist-npm/types/src/tools/PersonalPageTool.d.ts +57 -0
  113. package/dist-npm/types/src/tools/PersonalPageTool.d.ts.map +1 -0
  114. package/dist-npm/types/src/tools/SummarizeTool.d.ts +279 -0
  115. package/dist-npm/types/src/tools/SummarizeTool.d.ts.map +1 -0
  116. package/dist-npm/types/src/tools/WebTool.d.ts +106 -0
  117. package/dist-npm/types/src/tools/WebTool.d.ts.map +1 -0
  118. package/dist-npm/types/src/types/common.d.ts +164 -0
  119. package/dist-npm/types/src/types/common.d.ts.map +1 -0
  120. package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts +229 -0
  121. package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts.map +1 -0
  122. package/dist-npm/types/src/ui/LoginWindow.d.ts +163 -0
  123. package/dist-npm/types/src/ui/LoginWindow.d.ts.map +1 -0
  124. package/dist-npm/types/src/ui/ProfileWindow.d.ts +75 -0
  125. package/dist-npm/types/src/ui/ProfileWindow.d.ts.map +1 -0
  126. package/dist-npm/types/src/ui/VerifyHuman.d.ts +23 -0
  127. package/dist-npm/types/src/ui/VerifyHuman.d.ts.map +1 -0
  128. package/dist-npm/types/src/ui/WorkspaceViewer.d.ts +184 -0
  129. package/dist-npm/types/src/ui/WorkspaceViewer.d.ts.map +1 -0
  130. package/dist-npm/types/src/user/SocialFriends.d.ts +173 -0
  131. package/dist-npm/types/src/user/SocialFriends.d.ts.map +1 -0
  132. package/dist-npm/types/src/user/UserWorks.d.ts +187 -0
  133. package/dist-npm/types/src/user/UserWorks.d.ts.map +1 -0
  134. package/dist-npm/types/src/utils/ImageUtils.d.ts +107 -0
  135. package/dist-npm/types/src/utils/ImageUtils.d.ts.map +1 -0
  136. package/dist-npm/types/src/utils/SDKLogger.d.ts +111 -0
  137. package/dist-npm/types/src/utils/SDKLogger.d.ts.map +1 -0
  138. package/dist-npm/types/src/utils/translation.d.ts +95 -0
  139. package/dist-npm/types/src/utils/translation.d.ts.map +1 -0
  140. package/dist-npm/types/src/wechat/WxAuth.d.ts +126 -0
  141. package/dist-npm/types/src/wechat/WxAuth.d.ts.map +1 -0
  142. package/dist-npm/types/src/wechat/WxLaunchApp.d.ts +96 -0
  143. package/dist-npm/types/src/wechat/WxLaunchApp.d.ts.map +1 -0
  144. package/dist-npm/types/src/wechat/WxUtils.d.ts +145 -0
  145. package/dist-npm/types/src/wechat/WxUtils.d.ts.map +1 -0
  146. package/package.json +52 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * DigitalHumanSubtitleOverlay.ts — DigitalHuman 字幕叠加层
3
+ *
4
+ * 在虚拟人头像容器上渲染助手/用户字幕气泡,支持打字机逐字显示、思考动画、
5
+ * 括号动作文本剥离、自动隐藏等。被 DigitalHuman 主类使用。
6
+ */
7
+ /** 字幕叠加层注入的 CSS(含助手/用户气泡样式与思考动画) */
8
+ export declare const DIGITAL_HUMAN_SUBTITLE_CSS = "\n.dh-avatar-root .dh-subtitle-root {\n position: absolute;\n inset: 0;\n z-index: var(--dh-subtitle-z-index, 20);\n pointer-events: none;\n overflow: visible;\n}\n.dh-avatar-root .dh-subtitle-slot {\n position: absolute;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.24s ease;\n max-width: var(--dh-subtitle-max-width, 40%);\n}\n.dh-avatar-root .dh-subtitle-slot.dh-subtitle-visible { opacity: 1; }\n.dh-avatar-root .dh-subtitle-assistant-slot {\n top: var(--dh-subtitle-assistant-top, 5%);\n left: var(--dh-subtitle-assistant-left, 3%);\n}\n.dh-avatar-root .dh-subtitle-user-slot {\n left: var(--dh-subtitle-user-left, 3%);\n bottom: var(--dh-subtitle-user-bottom, 10%);\n max-width: var(--dh-subtitle-user-max-width, 35%);\n}\n.dh-avatar-root .dh-subtitle-bubble {\n box-sizing: border-box;\n max-height: var(--dh-subtitle-max-height, 42vh);\n overflow: hidden;\n word-break: break-word;\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n text-align: left;\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n pointer-events: none;\n letter-spacing: 0;\n}\n.dh-avatar-root .dh-subtitle-assistant {\n background: var(--dh-subtitle-assistant-bg, rgba(255, 255, 255, 0.92));\n color: var(--dh-subtitle-assistant-color, #222);\n font-size: var(--dh-subtitle-assistant-font-size, clamp(14px, 3.4vw, 24px));\n line-height: 1.55;\n padding: var(--dh-subtitle-assistant-padding, 12px 16px);\n border-radius: var(--dh-subtitle-assistant-radius, 16px 16px 0 16px);\n box-shadow: var(--dh-subtitle-assistant-shadow, 0 4px 18px rgba(0, 0, 0, 0.14));\n}\n.dh-avatar-root .dh-subtitle-user {\n background: var(--dh-subtitle-user-bg, rgba(0, 0, 0, 0.66));\n color: var(--dh-subtitle-user-color, #fff);\n font-size: var(--dh-subtitle-user-font-size, clamp(12px, 2.8vw, 20px));\n line-height: 1.5;\n padding: var(--dh-subtitle-user-padding, 8px 14px);\n border-radius: var(--dh-subtitle-user-radius, 12px);\n}\n.dh-avatar-root .dh-subtitle-thinking {\n display: inline-block;\n background: linear-gradient(90deg, rgba(0,0,0,0.25), rgba(0,0,0,0.75), rgba(0,0,0,0.25));\n background-size: 200% 100%;\n -webkit-background-clip: text;\n background-clip: text;\n color: transparent;\n animation: dh-subtitle-thinking 1.2s linear infinite;\n}\n@keyframes dh-subtitle-thinking {\n from { background-position: 200% 0; }\n to { background-position: -200% 0; }\n}\n";
9
+ /** 字幕配置 */
10
+ export interface SubtitleConfig {
11
+ enabled: boolean;
12
+ showUser: boolean;
13
+ showAssistant: boolean;
14
+ showThinking: boolean;
15
+ typewriter: boolean;
16
+ charIntervalMs: number;
17
+ autoHideDelayMs: number;
18
+ userAutoHideDelayMs: number;
19
+ stripBracketText: boolean;
20
+ pointerEvents: 'none' | 'auto';
21
+ dismissOnClick: boolean;
22
+ clearOnStandby: boolean;
23
+ thinkingText: string;
24
+ }
25
+ /** 字幕更新数据 */
26
+ export interface SubtitleUpdateData {
27
+ text?: string;
28
+ isUser?: boolean;
29
+ roundId?: string | number;
30
+ /** 用户字幕是否为最终结果(决定是否自动隐藏) */
31
+ definite?: boolean;
32
+ [key: string]: unknown;
33
+ }
34
+ /** DigitalHuman owner 需提供的最小接口 */
35
+ export interface SubtitleOwner {
36
+ _avatarRoot?: HTMLElement | null;
37
+ [key: string]: unknown;
38
+ }
39
+ /** Agent 状态码映射(由 DigitalHuman/AIChatRTC 传入) */
40
+ export interface AgentStateMap {
41
+ SPEAKING?: number;
42
+ FINISHED?: number;
43
+ INTERRUPTED?: number;
44
+ [key: string]: number | undefined;
45
+ }
46
+ export default class DigitalHumanSubtitleOverlay {
47
+ owner: SubtitleOwner;
48
+ root: HTMLDivElement | null;
49
+ userSlot: HTMLDivElement | null;
50
+ userText: HTMLDivElement | null;
51
+ assistantSlot: HTMLDivElement | null;
52
+ assistantText: HTMLDivElement | null;
53
+ userHideTimer: ReturnType<typeof setTimeout> | null;
54
+ assistantHideTimer: ReturnType<typeof setTimeout> | null;
55
+ rafId: number;
56
+ revealStartTime: number;
57
+ targetText: string;
58
+ displayText: string;
59
+ revealIndex: number;
60
+ textCompleteReceived: boolean;
61
+ thinkingVisible: boolean;
62
+ lastRoundId: string;
63
+ config: SubtitleConfig;
64
+ constructor(owner: SubtitleOwner, config?: Partial<SubtitleConfig> | boolean);
65
+ /** 设置/合并字幕配置;true/false 作为 enabled 快捷开关 */
66
+ setConfig(config?: Partial<SubtitleConfig> | boolean): SubtitleConfig;
67
+ /** 获取当前配置副本 */
68
+ getConfig(): SubtitleConfig;
69
+ /** 把字幕 DOM 挂载到头像容器 */
70
+ attachRoot(avatarRoot: HTMLElement): void;
71
+ /** 确保 DOM 已挂载,返回是否就绪 */
72
+ private _ensure;
73
+ private _syncPointerEvents;
74
+ /** 清理文本:剥离括号动作段 + 去除 `*` */
75
+ private _cleanText;
76
+ private _show;
77
+ private _hide;
78
+ /** 显示"思考中"动画 */
79
+ showThinking(): void;
80
+ /** 隐藏思考动画 */
81
+ hideThinking(): void;
82
+ /** 统一字幕更新入口(按 isUser 分发) */
83
+ updateSubtitle(data?: SubtitleUpdateData): void;
84
+ /** 更新用户字幕 */
85
+ updateUser(text: string, data?: SubtitleUpdateData): void;
86
+ /** 更新助手字幕(支持流式增量 + 打字机显示) */
87
+ updateAssistant(text: string, data?: SubtitleUpdateData): void;
88
+ private _resetAssistantText;
89
+ /** 启动打字机逐字揭示(基于 requestAnimationFrame) */
90
+ private _startReveal;
91
+ private _cancelReveal;
92
+ /** 立即显示完整助手文本(非打字机模式或强制刷新) */
93
+ private _flushAssistant;
94
+ /** 标记本轮文本已接收完毕 */
95
+ markTextComplete(): void;
96
+ /** 标记最终态:立即刷完助手文本并调度用户字幕自动隐藏 */
97
+ markFinal(): void;
98
+ /** 根据语音 Agent 状态码联动字幕(思考/最终态) */
99
+ handleVoiceState(data?: {
100
+ code?: number;
101
+ }, AGENT_STATE?: AgentStateMap): void;
102
+ private _scheduleAssistantHide;
103
+ /** 隐藏用户字幕 */
104
+ hideUser(): void;
105
+ /** 隐藏助手字幕 */
106
+ hideAssistant(): void;
107
+ /** 清空所有字幕状态与定时器 */
108
+ clear(): void;
109
+ /** 从 DOM 移除字幕容器 */
110
+ destroyDom(): void;
111
+ /** 完全销毁(清状态 + 移除 DOM) */
112
+ destroy(): void;
113
+ }
114
+ //# sourceMappingURL=DigitalHumanSubtitleOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DigitalHumanSubtitleOverlay.d.ts","sourceRoot":"","sources":["../../../../src/digital-human/DigitalHumanSubtitleOverlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * DigitalHumanUtils.ts — DigitalHuman / DigitalHumanFrame 共享轻量工具
3
+ *
4
+ * 提供事件发射器 mixin 和心跳/时长解析工具。
5
+ */
6
+ /** 事件监听回调 */
7
+ export type EventListener<T = unknown> = (data: T) => void;
8
+ /** 事件发射器 mixin 提供的方法集合 */
9
+ export interface EventEmitterMixin {
10
+ /** 内部监听表,由 _initEvents 初始化 */
11
+ _listeners?: Record<string, EventListener[]>;
12
+ /** 初始化监听表(构造时调用) */
13
+ _initEvents(this: EventEmitterMixin): void;
14
+ /** 注册事件监听 */
15
+ on(this: EventEmitterMixin, event: string, callback: EventListener): EventEmitterMixin;
16
+ /** 移除事件监听 */
17
+ off(this: EventEmitterMixin, event: string, callback: EventListener): EventEmitterMixin;
18
+ /** 触发事件 */
19
+ emit(this: EventEmitterMixin, event: string, data?: unknown): void;
20
+ }
21
+ /** createEventEmitterMixin 选项 */
22
+ export interface EventEmitterMixinOptions {
23
+ /** 日志前缀标签 */
24
+ label?: string;
25
+ /** 自定义 logger(默认全局 console) */
26
+ logger?: Pick<Console, 'warn'>;
27
+ }
28
+ /**
29
+ * 创建一个可被 Object.assign 到类原型上的事件发射器 mixin。
30
+ * 被 DigitalHuman 和 DigitalHumanFrame 共用。
31
+ */
32
+ export declare function createEventEmitterMixin({ label, logger }?: EventEmitterMixinOptions): EventEmitterMixin;
33
+ /**
34
+ * 解析心跳间隔(数字或时长字符串如 "5s" / "500ms")为毫秒。
35
+ * 纯数字按 page-router 心跳约定视为「秒」。
36
+ * @param value - 间隔值
37
+ * @param defaultUnit - 默认单位(默认 's')
38
+ * @returns 毫秒数,无效时返回 0
39
+ */
40
+ export declare function parseIntervalToMs(value: number | string, defaultUnit?: string): number;
41
+ /**
42
+ * 解析心跳最大次数,钳制为非负整数。
43
+ * @param value - 次数值
44
+ * @param fallback - 缺省回退(默认 3)
45
+ */
46
+ export declare function parseHeartbeatMaxCount(value: number | string | null | undefined, fallback?: number): number;
47
+ /**
48
+ * 解析通用毫秒时长(数字或 "500ms" / "5s" / "1m" 字符串)。
49
+ * @param value - 时长值
50
+ * @param fallbackMs - 回退毫秒(默认 0)
51
+ */
52
+ export declare function parseDurationMs(value: number | string | null | undefined, fallbackMs?: number): number;
53
+ //# sourceMappingURL=DigitalHumanUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DigitalHumanUtils.d.ts","sourceRoot":"","sources":["../../../../src/digital-human/DigitalHumanUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3D,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7C,oBAAoB;IACpB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,aAAa;IACb,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,iBAAiB,CAAC;IACvF,aAAa;IACb,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,iBAAiB,CAAC;IACxF,WAAW;IACX,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACpE;AAED,iCAAiC;AACjC,MAAM,WAAW,wBAAwB;IACvC,aAAa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,KAAK,EAAE,MAAgB,EAAE,GAAE,wBAA6B,GACzD,iBAAiB,CAkCnB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,MAAM,CAe3F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAK9G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,GAAE,MAAU,GAAG,MAAM,CAIzG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * AIChatRTC.constants.js — AIChatRTC 共享常量与工具函数
3
+ *
4
+ * 提供给 AIChatRTC.js(主类)和 AIChatRTC.session.js(RTCChatSession)共同使用,
5
+ * 避免两个文件之间的循环依赖。
6
+ */
7
+ declare const DEFAULT_RTC_SDK_URL = "https://cdn.keepwork.com/keepwork/cdn/volcengine/rtc@4.68.1.index.min.js";
8
+ /** TLV message types matching VolcEngine AIGC protocol */
9
+ declare const MESSAGE_TYPE: {
10
+ SUBTITLE: string;
11
+ FUNCTION_CALL: string;
12
+ FUNCTION_CALL_INFO: string;
13
+ BRIEF: string;
14
+ CHAT: string;
15
+ };
16
+ /** Agent conversation states */
17
+ declare const AGENT_STATE: {
18
+ UNKNOWN: number;
19
+ LISTENING: number;
20
+ THINKING: number;
21
+ SPEAKING: number;
22
+ INTERRUPTED: number;
23
+ FINISHED: number;
24
+ };
25
+ declare const AGENT_STATE_LABELS: {
26
+ [AGENT_STATE.UNKNOWN]: string;
27
+ [AGENT_STATE.LISTENING]: string;
28
+ [AGENT_STATE.THINKING]: string;
29
+ [AGENT_STATE.SPEAKING]: string;
30
+ [AGENT_STATE.INTERRUPTED]: string;
31
+ [AGENT_STATE.FINISHED]: string;
32
+ };
33
+ /** Binary-channel control commands */
34
+ declare const COMMAND: {
35
+ INTERRUPT: string;
36
+ EXTERNAL_TEXT_TO_SPEECH: string;
37
+ EXTERNAL_TEXT_TO_LLM: string;
38
+ EXTERNAL_PROMPTS_FOR_LLM: string;
39
+ };
40
+ declare const INTERRUPT_PRIORITY: {
41
+ NONE: number;
42
+ HIGH: number;
43
+ MEDIUM: number;
44
+ LOW: number;
45
+ };
46
+ /**
47
+ * Encode a string into TLV (Type-Length-Value) binary format.
48
+ * TLV: | type (4 bytes) | length (4 bytes, big-endian) | value (N bytes) |
49
+ */
50
+ declare function string2tlv(str: string, type: string): ArrayBufferLike;
51
+ /**
52
+ * Decode TLV binary data back to { type, value } strings.
53
+ */
54
+ declare function tlv2String(tlvBuffer: ArrayBuffer | ArrayBufferView): {
55
+ type: string;
56
+ value: string;
57
+ };
58
+ declare function _randomId(len?: number): string;
59
+ declare function genId(prefix: string, username?: string): string;
60
+ declare function deepClone<T>(value: T): T;
61
+ declare function mergeToolDefinitions(existingTools: unknown, copilotTools: unknown[]): Array<Record<string, unknown>>;
62
+ declare function formatChildResultsSummary(results: Array<Record<string, unknown>>): string;
63
+ declare function normalizeRTCMessageContent(content: unknown): string | null;
64
+ export { DEFAULT_RTC_SDK_URL, MESSAGE_TYPE, AGENT_STATE, AGENT_STATE_LABELS, COMMAND, INTERRUPT_PRIORITY, string2tlv, tlv2String, _randomId, genId, deepClone, mergeToolDefinitions, formatChildResultsSummary, normalizeRTCMessageContent, };
65
+ //# sourceMappingURL=AIChatRTC.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatRTC.constants.d.ts","sourceRoot":"","sources":["../../../../src/rtc/AIChatRTC.constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,QAAA,MAAM,mBAAmB,6EACmD,CAAC;AAE7E,0DAA0D;AAC1D,QAAA,MAAM,YAAY;;;;;;CAMjB,CAAC;AAEF,gCAAgC;AAChC,QAAA,MAAM,WAAW;;;;;;;CAOhB,CAAC;AAEF,QAAA,MAAM,kBAAkB;IACtB,CAAC,WAAW,CAAC,OAAO,CAAC,SAAK;IAC1B,CAAC,WAAW,CAAC,SAAS,CAAC,SAAa;IACpC,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAY;IAClC,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAY;IAClC,CAAC,WAAW,CAAC,WAAW,CAAC,SAAe;IACxC,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAY;CACnC,CAAC;AAEF,sCAAsC;AACtC,QAAA,MAAM,OAAO;;;;;CAKZ,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;;;CAKvB,CAAC;AAMF;;;GAGG;AACH,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAe9D;AAED;;GAEG;AACH,iBAAS,UAAU,CAAC,SAAS,EAAE,WAAW,GAAG,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAU7F;AAMD,iBAAS,SAAS,CAAC,GAAG,SAAI,GAAG,MAAM,CAMlC;AAED,iBAAS,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,iBAAS,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAGjC;AAED,iBAAS,oBAAoB,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAa7G;AAED,iBAAS,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CASlF;AAED,iBAAS,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGnE;AAED,OAAO,EACL,mBAAmB,EACnB,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAC1E,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EACjD,yBAAyB,EAAE,0BAA0B,GACtD,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * AIChatRTC — VolcEngine RTC-based voice chat module.
3
+ *
4
+ * Provides an interface similar to AIChat.js (constructor takes SDK, provides
5
+ * `createSession()`) plus real-time event emitting for subtitles, agent state,
6
+ * and function calls. Supports S2S, ASR+LLM+TTS, and mixed modes.
7
+ *
8
+ * Usage:
9
+ * import AIChatRTC from './AIChatRTC';
10
+ * // or: const { AIChatRTC, AGENT_STATE } = window; // from IIFE bundle
11
+ *
12
+ * const rtc = new AIChatRTC(sdk);
13
+ * const session = rtc.createSession({
14
+ * appId: '...',
15
+ * agentConfig: { WelcomeMessage: 'Hello!', ... },
16
+ * config: { LLMConfig: { ... }, TTSConfig: { ... }, ... },
17
+ * });
18
+ * session.on('subtitle', ({ text, isUser }) => console.log(text));
19
+ * session.on('state', ({ code, label }) => console.log(label));
20
+ * await session.start();
21
+ * session.sendText('Hi there');
22
+ * await session.stop();
23
+ *
24
+ * Reference: https://www.volcengine.com/docs/6348/1554654?lang=zh
25
+ */
26
+ import RTCChatSession from './AIChatRTC.session';
27
+ import { DEFAULT_RTC_SDK_URL, MESSAGE_TYPE, AGENT_STATE, AGENT_STATE_LABELS, COMMAND, INTERRUPT_PRIORITY, string2tlv, tlv2String } from './AIChatRTC.constants';
28
+ declare class AIChatRTC {
29
+ static AGENT_STATE: {
30
+ UNKNOWN: number;
31
+ LISTENING: number;
32
+ THINKING: number;
33
+ SPEAKING: number;
34
+ INTERRUPTED: number;
35
+ FINISHED: number;
36
+ };
37
+ static AGENT_STATE_LABELS: {
38
+ [AGENT_STATE.UNKNOWN]: string;
39
+ [AGENT_STATE.LISTENING]: string;
40
+ [AGENT_STATE.THINKING]: string;
41
+ [AGENT_STATE.SPEAKING]: string;
42
+ [AGENT_STATE.INTERRUPTED]: string;
43
+ [AGENT_STATE
44
+ .FINISHED]: string;
45
+ };
46
+ static COMMAND: {
47
+ INTERRUPT: string;
48
+ EXTERNAL_TEXT_TO_SPEECH: string;
49
+ EXTERNAL_TEXT_TO_LLM: string;
50
+ EXTERNAL_PROMPTS_FOR_LLM: string;
51
+ };
52
+ sdk: unknown;
53
+ sdkUrl: string;
54
+ _loadPromise: Promise<void> | null;
55
+ [key: string]: unknown;
56
+ /**
57
+ * @param {Object} sdk - KeepworkSDK instance (provides sdk.post, sdk.token, sdk.copilotTools)
58
+ * @param {Object} [options]
59
+ * @param {string} [options.sdkUrl] - Override VolcEngine RTC CDN URL
60
+ */
61
+ constructor(sdk: unknown, options?: Record<string, unknown>);
62
+ /**
63
+ * Preload the VolcEngine RTC SDK. Called automatically by session.start(),
64
+ * but can be invoked earlier for faster startup.
65
+ * @returns {Promise<void>}
66
+ */
67
+ loadSDK(): Promise<void>;
68
+ /**
69
+ * Create a new RTC chat session.
70
+ * @param {Object} config - Session configuration
71
+ * @param {string} config.appId - VolcEngine AppId
72
+ * @param {'ai'|'human'} [config.mode='ai'] - Session mode: 'ai' starts an AI voice agent;
73
+ * 'human' joins the room for human-only voice/text chat (no AI agent is created)
74
+ * @param {string} [config.roomId] - Room ID (auto-generated if omitted)
75
+ * @param {string} [config.userId] - User ID (auto-generated if omitted)
76
+ * @param {string} [config.taskId] - Task ID (auto-generated if omitted)
77
+ * @param {string} [config.agentUserId='ai_agent_bot'] - Agent bot user ID in the RTC room
78
+ * @param {string} [config.rtcToken] - Pre-fetched RTC token (skips server request if provided)
79
+ * @param {Object} [config.agentConfig] - AgentConfig for voiceChat/start (ai mode only)
80
+ * @param {Object} [config.config] - The main Config block (ASR/LLM/TTS/S2S/Subtitle/Interrupt etc.) (ai mode only)
81
+ * @param {string} [config.workspace] - SandboxToolEnv workspace name (ai mode only)
82
+ * @param {string|Object} [config.mountFolder] - Readonly fallback folder for file operations (ai mode only)
83
+ * @param {string[]} [config.enabledToolCategories=['fileOps','agent']] - Tool categories for SandboxToolEnv (ai mode only)
84
+ * @param {Array} [config.tools] - Additional custom tool definitions (OpenAI format) (ai mode only)
85
+ * @returns {RTCChatSession}
86
+ */
87
+ createSession(config?: Record<string, unknown>): RTCChatSession;
88
+ }
89
+ export { AIChatRTC, RTCChatSession, MESSAGE_TYPE, AGENT_STATE, AGENT_STATE_LABELS, COMMAND, INTERRUPT_PRIORITY, string2tlv, tlv2String, DEFAULT_RTC_SDK_URL, };
90
+ export default AIChatRTC;
91
+ //# sourceMappingURL=AIChatRTC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatRTC.d.ts","sourceRoot":"","sources":["../../../../src/rtc/AIChatRTC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EACL,mBAAmB,EACnB,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAC1E,UAAU,EAAE,UAAU,EAEvB,MAAM,uBAAuB,CAAC;AAQ/B,cAAM,SAAS;IACb,MAAM,CAAC,WAAW;;;;;;;MAAe;IACjC,MAAM,CAAC,kBAAkB;QAhCZ,CAAI,WACjB,CAAG,OAAK,CAAC;QAAM,CAAI,WAAW,CAAC,SAC1B,CAAC;QAAc,CACrB,WACM,CAAC,QAAQ,CAAC;QAAa,CAAI,WAAW,CAAC,QAAQ,CAAC;QACtD,CAED,WAAW,CAAC,WAAW,CAAC;QAAgB,CAAI,WAAW;aACvD,QAAQ,CAAC;MAwBwC;IAC/C,MAAM,CAAC,OAAO;;;;;MAAW;IAEzB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvB;;;;OAIG;gBACS,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAM/D;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBxB;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,cAAc;CAGpE;AAOD,OAAO,EACL,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,mBAAmB,GACpB,CAAC;AACF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * AIChatRTC.session.js — RTCChatSession 类(VolcEngine RTC 语音会话生命周期)
3
+ *
4
+ * 由 AIChatRTC.js 导入,不单独使用。
5
+ */
6
+ /** RTC 引擎/SDK 宽松调用类型(方法返回 any 以便链式调用) */
7
+ type RTCAny = Record<string, any>;
8
+ declare class RTCChatSession {
9
+ aiChatRTC: RTCAny;
10
+ sdk: RTCAny;
11
+ options: Record<string, unknown>;
12
+ rtcEngine: RTCAny;
13
+ sandbox: RTCAny;
14
+ _listeners: Record<string, Array<(data?: unknown) => void>>;
15
+ _subtitleBuffer: Record<string, {
16
+ text: string;
17
+ isUser: boolean;
18
+ [k: string]: unknown;
19
+ }>;
20
+ _history: Array<Record<string, unknown>>;
21
+ _pendingMessages: Array<{
22
+ targetUserId?: string;
23
+ binaryData?: unknown;
24
+ label?: string;
25
+ isRoomMessage?: boolean;
26
+ [k: string]: unknown;
27
+ }>;
28
+ _comfortSentTypes: Set<string>;
29
+ _chatReassemblyBuffer: Record<string, {
30
+ chunks: string[];
31
+ userId?: unknown;
32
+ username?: unknown;
33
+ timestamp?: unknown;
34
+ [k: string]: unknown;
35
+ }>;
36
+ _autoPlayFailUsers: unknown[];
37
+ enabledToolCategories: unknown;
38
+ customTools: unknown[];
39
+ agentState: number;
40
+ isActive: boolean;
41
+ isMuted: boolean;
42
+ isConnected: boolean;
43
+ isScreenSharing: boolean;
44
+ isCameraSharing: boolean;
45
+ mode: string;
46
+ appId: unknown;
47
+ roomId: string;
48
+ userId: string;
49
+ taskId: string;
50
+ agentUserId: string;
51
+ _chatGroupId: number;
52
+ _imageGroupId: number;
53
+ _cleanupChildSessions: () => void;
54
+ _cancelDebounceTimers: () => void;
55
+ _consumePendingChildResults: () => unknown[];
56
+ [key: string]: unknown;
57
+ /**
58
+ * @param {AIChatRTC} aiChatRTC - Parent AIChatRTC instance
59
+ * @param {Object} config - Session configuration (see AIChatRTC.createSession)
60
+ */
61
+ constructor(aiChatRTC: Record<string, unknown>, config?: Record<string, unknown>);
62
+ /**
63
+ * Subscribe to an event.
64
+ * @param {string} event
65
+ * @param {Function} callback
66
+ * @returns {RTCChatSession} this (for chaining)
67
+ */
68
+ on(event: string, callback: (data?: unknown) => void): this;
69
+ /**
70
+ * Unsubscribe from an event.
71
+ * @param {string} event
72
+ * @param {Function} callback
73
+ * @returns {RTCChatSession}
74
+ */
75
+ off(event: string, callback: (data?: unknown) => void): this;
76
+ /**
77
+ * Emit an event to all subscribers.
78
+ * @param {string} event
79
+ * @param {*} data
80
+ */
81
+ emit(event: string, data?: unknown): void;
82
+ /**
83
+ * Start the session: load RTC SDK → fetch token → join room → start audio.
84
+ * In 'ai' mode, also starts the server-side AI voice agent.
85
+ * In 'human' mode, only joins the RTC room for multi-user voice/text chat.
86
+ * @returns {Promise<void>}
87
+ */
88
+ start(): Promise<void>;
89
+ /**
90
+ * Stop the session and leave the RTC room.
91
+ * In 'ai' mode, also stops the server-side AI voice agent.
92
+ * @returns {Promise<void>}
93
+ */
94
+ stop(): Promise<void>;
95
+ /**
96
+ * Update an active voice chat session via REST API.
97
+ * Supports commands: ExternalTextToSpeech, UpdateParameters, interrupt, etc.
98
+ * @param {string} command - Command type
99
+ * @param {Object} [options] - Additional fields (Message, InterruptMode, Parameters, etc.)
100
+ * @returns {Promise<Object>} API response
101
+ */
102
+ updateVoiceChat(command: string, options?: Record<string, unknown>): Promise<unknown>;
103
+ /**
104
+ * Update LLM/TTS/etc. parameters without leaving the RTC room.
105
+ * @param {Object} config - New Config block for VolcEngine UpdateParameters
106
+ * @param {Object} [options] - Additional UpdateVoiceChat fields
107
+ * @returns {Promise<Object>} API response
108
+ */
109
+ updateParameters(config?: unknown, options?: Record<string, unknown>): Promise<unknown>;
110
+ /** Alias for stop() + full cleanup */
111
+ destroy(): Promise<void>;
112
+ _cleanup(): void;
113
+ _ensureSandbox(): RTCAny;
114
+ /**
115
+ * Send a message using a ChatSession-like API.
116
+ * Supports delayed child-agent result injection and local `${...}` template
117
+ * expansion via `runCode` before sending through the RTC text channel.
118
+ *
119
+ * Returns the text submitted into the RTC pipeline. The actual assistant
120
+ * response continues to arrive via RTC events such as `subtitle`.
121
+ *
122
+ * @param {string|Object|null} userMessage
123
+ * @param {Object} [options]
124
+ * @param {boolean} [options.runCode=false] - Resolve `${...}` expressions via sandbox before sending
125
+ * @returns {Promise<string|null>}
126
+ */
127
+ send(userMessage: unknown, options?: Record<string, unknown>): Promise<string | null>;
128
+ /**
129
+ * Send text. In 'ai' mode, sends to the agent's LLM via RTC binary channel.
130
+ * In 'human' mode, broadcasts to all room members via sendRoomText().
131
+ * @param {string} text
132
+ */
133
+ sendText(text: string): void;
134
+ /**
135
+ * Broadcast a text message to all users in the RTC room.
136
+ * Works in both 'ai' and 'human' modes.
137
+ * Automatically chunks messages that exceed 1 KB.
138
+ * @param {string} text
139
+ */
140
+ sendRoomText(text: string): void;
141
+ /**
142
+ * Send background context to the agent's LLM via RTC binary channel.
143
+ * Uses ExternalPromptsForLLM: injected as context for the next reply
144
+ * without triggering an immediate response.
145
+ * @param {string} text - Context text to inject
146
+ * @param {Object} [options]
147
+ * @param {boolean} [options.useREST=false] - Use REST API instead of binary channel
148
+ */
149
+ sendContext(text: string, options?: Record<string, unknown>): unknown;
150
+ /**
151
+ * Send text to the agent's TTS (text-to-speech) via RTC binary channel.
152
+ * @param {string} text
153
+ * @param {Object} [options]
154
+ * @param {boolean} [options.useREST=false] - Use REST API instead of binary channel (supports InterruptMode)
155
+ * @param {number} [options.interruptMode] - REST only: 1=high/2=medium/3=low priority
156
+ */
157
+ sendTTS(text: string, options?: Record<string, unknown>): unknown;
158
+ /**
159
+ * Send an interrupt command to stop the agent mid-speech.
160
+ */
161
+ interrupt(): void;
162
+ /**
163
+ * Send a base64-encoded image with text to the agent's LLM.
164
+ * Automatically splits into 1 KB TLV chunks per VolcEngine protocol.
165
+ * @param {string} imageBase64 - Base64 image data (no data URI prefix)
166
+ * @param {string} text - Accompanying text message
167
+ */
168
+ sendImageWithText(imageBase64: string, text: string, options?: Record<string, unknown>): Promise<void>;
169
+ /**
170
+ * Mute the local microphone.
171
+ * Idempotent: no-op if already muted; swallows RTC SDK promise rejections
172
+ * (e.g. "Has already stop capture") so callers don't see UnhandledPromiseRejection.
173
+ */
174
+ mute(): void;
175
+ /**
176
+ * Unmute the local microphone.
177
+ * Idempotent: no-op if already unmuted; swallows RTC SDK promise rejections
178
+ * (e.g. "Has already capture") so callers don't see UnhandledPromiseRejection.
179
+ */
180
+ unmute(): void;
181
+ /**
182
+ * Start sharing the screen. The agent can see the shared screen.
183
+ */
184
+ startScreenShare(): Promise<void>;
185
+ /**
186
+ * Start sharing the camera. The agent can see the camera feed.
187
+ */
188
+ startCameraShare(): Promise<void>;
189
+ /**
190
+ * Stop any active video sharing (screen or camera).
191
+ */
192
+ stopVideoShare(): Promise<void>;
193
+ /**
194
+ * Try to resume audio playback after an autoplay failure.
195
+ * Call this in response to a user interaction (click/tap).
196
+ */
197
+ resumeAudio(): void;
198
+ /**
199
+ * Get accumulated subtitle history.
200
+ * @returns {Array<{ role: string, text: string, roundId: string }>}
201
+ */
202
+ getHistory(): Record<string, unknown>[];
203
+ /** Clear subtitle history. */
204
+ clear(): void;
205
+ /**
206
+ * Restart the RTC agent session with an optional prompt file.
207
+ *
208
+ * Behavior:
209
+ * - No promptFile: restores settings to initial defaults.
210
+ * - Pure markdown (only system_prompt): changes only system prompt.
211
+ * - Full config: temporarily overrides; next empty restart reverts to defaults.
212
+ *
213
+ * @param {string} [promptFile] - URL or path to agent config file.
214
+ * @param {string[]} [tools] - Optional tool category override. Empty means inherit defaults.
215
+ * @returns {Promise<Object>} { configSource }
216
+ */
217
+ restartAgent(promptFile?: string, tools?: unknown): Promise<{
218
+ configSource: unknown;
219
+ }>;
220
+ _resolveLocalModelSettings(model: string): RTCAny;
221
+ _buildVoiceChatBody(copilotToolDefs: unknown): Promise<RTCAny>;
222
+ _buildVoiceChatConfigForAPI(copilotToolDefs: unknown, sourceConfig?: unknown, options?: Record<string, unknown>): Promise<RTCAny>;
223
+ _buildVoiceChatUpdateConfig(config?: RTCAny): RTCAny;
224
+ /**
225
+ * Expand all ${...} template expressions in SystemMessages using the sandbox.
226
+ */
227
+ _expandSystemMessages(config: RTCAny): Promise<void>;
228
+ _setupRTCEvents(): void;
229
+ _handleConnectionStateChanged({ state }: {
230
+ state?: unknown;
231
+ }): void;
232
+ _handleBinaryMessage(event: RTCAny): Promise<void>;
233
+ _handleChatMessage(parsed: RTCAny): void;
234
+ _handleSubtitleData(parsed: RTCAny): void;
235
+ _handleLegacySubtitle(event: RTCAny): void;
236
+ _handleAgentBrief(parsed: RTCAny): void;
237
+ _handleFunctionCallInfo(parsed: RTCAny): void;
238
+ _handleFunctionCall(parsed: RTCAny): Promise<void>;
239
+ _sendCommand(command: string, message: string): void;
240
+ _sendBinaryMessageSafe(targetUserId: string, binaryData: unknown, label: string): boolean;
241
+ _flushPendingMessages(): void;
242
+ /**
243
+ * Split a string into chunks whose JSON-encoded byte length fits within maxBytes.
244
+ * Accounts for JSON string escaping (e.g. quotes, backslashes, control chars).
245
+ */
246
+ _splitTextForTLV(text: string, maxBytes: number): string[];
247
+ /**
248
+ * Send a function-call result back to the agent, chunking if it exceeds 1 KB.
249
+ * Uses IsPartial + FragmentID on the 'func' TLV type (mirrors image chunking).
250
+ */
251
+ _sendFuncResultChunked(toolCallId: string, content: string, funcName: string): Promise<void>;
252
+ /**
253
+ * Send a text command (e.g. ExternalTextToLLM) that may exceed 1 KB.
254
+ * Splits into multiple sequential ctrl messages if necessary.
255
+ */
256
+ _sendCommandChunked(command: string, message: string): Promise<void>;
257
+ /**
258
+ * Send a base64 image in chunks via sendUserBinaryMessage.
259
+ * Per VolcEngine docs: default per-message limit is 1 KB.
260
+ * IsPartial=true / FragmentID for intermediate chunks.
261
+ * Message text only in the last chunk (IsPartial=false).
262
+ */
263
+ _sendImageChunked(imageBase64: string, message: string, groupId: number): Promise<void>;
264
+ _addHistory(role: string, text: string, roundId?: unknown): void;
265
+ }
266
+ export default RTCChatSession;
267
+ export { RTCChatSession };
268
+ //# sourceMappingURL=AIChatRTC.session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatRTC.session.d.ts","sourceRoot":"","sources":["../../../../src/rtc/AIChatRTC.session.ts"],"names":[],"mappings":"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"}