@zhin.js/agent 1.1.14 → 1.1.16

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 (213) hide show
  1. package/README.md +5 -4
  2. package/lib/activity-feedback/adapter-integration.d.ts +33 -10
  3. package/lib/activity-feedback/adapter-integration.d.ts.map +1 -1
  4. package/lib/activity-feedback/adapter-integration.js +90 -88
  5. package/lib/activity-feedback/adapter-integration.js.map +1 -1
  6. package/lib/activity-feedback/ai-bus.d.ts +2 -1
  7. package/lib/activity-feedback/ai-bus.d.ts.map +1 -1
  8. package/lib/activity-feedback/ai-bus.js +14 -3
  9. package/lib/activity-feedback/ai-bus.js.map +1 -1
  10. package/lib/activity-feedback/index.d.ts +3 -3
  11. package/lib/activity-feedback/index.d.ts.map +1 -1
  12. package/lib/activity-feedback/index.js +2 -2
  13. package/lib/activity-feedback/index.js.map +1 -1
  14. package/lib/activity-feedback/manager.d.ts +0 -5
  15. package/lib/activity-feedback/manager.d.ts.map +1 -1
  16. package/lib/activity-feedback/manager.js +21 -17
  17. package/lib/activity-feedback/manager.js.map +1 -1
  18. package/lib/activity-feedback/turn-event-projector.d.ts +11 -0
  19. package/lib/activity-feedback/turn-event-projector.d.ts.map +1 -0
  20. package/lib/activity-feedback/turn-event-projector.js +58 -0
  21. package/lib/activity-feedback/turn-event-projector.js.map +1 -0
  22. package/lib/ai-event-subscriber.d.ts +2 -2
  23. package/lib/ai-event-subscriber.d.ts.map +1 -1
  24. package/lib/ai-event-subscriber.js +1 -1
  25. package/lib/ai-event-subscriber.js.map +1 -1
  26. package/lib/authoring/bridge.d.ts.map +1 -1
  27. package/lib/authoring/bridge.js +15 -4
  28. package/lib/authoring/bridge.js.map +1 -1
  29. package/lib/authoring/define-tool.d.ts +8 -3
  30. package/lib/authoring/define-tool.d.ts.map +1 -1
  31. package/lib/authoring/define-tool.js +10 -0
  32. package/lib/authoring/define-tool.js.map +1 -1
  33. package/lib/authoring/types.d.ts +10 -3
  34. package/lib/authoring/types.d.ts.map +1 -1
  35. package/lib/authoring/types.js.map +1 -1
  36. package/lib/config/zhin-agent-config.d.ts +1 -3
  37. package/lib/config/zhin-agent-config.d.ts.map +1 -1
  38. package/lib/config/zhin-agent-defaults.d.ts.map +1 -1
  39. package/lib/config/zhin-agent-defaults.js +0 -2
  40. package/lib/config/zhin-agent-defaults.js.map +1 -1
  41. package/lib/core/agent-core-run.js +1 -1
  42. package/lib/core/agent-core-run.js.map +1 -1
  43. package/lib/deferred-worker-runner.d.ts.map +1 -1
  44. package/lib/deferred-worker-runner.js +2 -15
  45. package/lib/deferred-worker-runner.js.map +1 -1
  46. package/lib/deferred-worker-tool-load.d.ts +1 -1
  47. package/lib/deferred-worker-tool-load.js +1 -1
  48. package/lib/event/event-emitter.js +1 -1
  49. package/lib/event/event-emitter.js.map +1 -1
  50. package/lib/hooks.d.ts +0 -12
  51. package/lib/hooks.d.ts.map +1 -1
  52. package/lib/hooks.js.map +1 -1
  53. package/lib/index.d.ts +8 -11
  54. package/lib/index.d.ts.map +1 -1
  55. package/lib/index.js +6 -7
  56. package/lib/index.js.map +1 -1
  57. package/lib/init/dispose-zhin-agent.d.ts +1 -1
  58. package/lib/init/dispose-zhin-agent.d.ts.map +1 -1
  59. package/lib/init/dispose-zhin-agent.js +2 -2
  60. package/lib/init/dispose-zhin-agent.js.map +1 -1
  61. package/lib/internal/agent-host.d.ts +0 -3
  62. package/lib/internal/agent-host.d.ts.map +1 -1
  63. package/lib/plugin-runtime/agent-host-port.d.ts +8 -0
  64. package/lib/plugin-runtime/agent-host-port.d.ts.map +1 -1
  65. package/lib/plugin-runtime/agent-host-port.js.map +1 -1
  66. package/lib/plugin-runtime/capability-ingress.d.ts +2 -0
  67. package/lib/plugin-runtime/capability-ingress.d.ts.map +1 -1
  68. package/lib/plugin-runtime/capability-ingress.js +7 -0
  69. package/lib/plugin-runtime/capability-ingress.js.map +1 -1
  70. package/lib/plugin-runtime/capability-tools.d.ts.map +1 -1
  71. package/lib/plugin-runtime/capability-tools.js +1 -0
  72. package/lib/plugin-runtime/capability-tools.js.map +1 -1
  73. package/lib/plugin-runtime/full-agent-turn-engine.d.ts.map +1 -1
  74. package/lib/plugin-runtime/full-agent-turn-engine.js +31 -29
  75. package/lib/plugin-runtime/full-agent-turn-engine.js.map +1 -1
  76. package/lib/plugin-runtime/index.d.ts +1 -0
  77. package/lib/plugin-runtime/index.d.ts.map +1 -1
  78. package/lib/plugin-runtime/index.js.map +1 -1
  79. package/lib/plugin-runtime/workroom-projection-outbound.d.ts +4 -4
  80. package/lib/plugin-runtime/workroom-projection-outbound.d.ts.map +1 -1
  81. package/lib/plugin-runtime/workroom-projection-outbound.js +2 -2
  82. package/lib/plugin-runtime/workroom-projection-outbound.js.map +1 -1
  83. package/lib/prompt/assembly.d.ts +3 -1
  84. package/lib/prompt/assembly.d.ts.map +1 -1
  85. package/lib/prompt/assembly.js +27 -52
  86. package/lib/prompt/assembly.js.map +1 -1
  87. package/lib/prompt/index.d.ts +3 -6
  88. package/lib/prompt/index.d.ts.map +1 -1
  89. package/lib/prompt/index.js +2 -4
  90. package/lib/prompt/index.js.map +1 -1
  91. package/lib/prompt/prompt-assembly-registry.d.ts +14 -6
  92. package/lib/prompt/prompt-assembly-registry.d.ts.map +1 -1
  93. package/lib/prompt/prompt-assembly-registry.js +14 -5
  94. package/lib/prompt/prompt-assembly-registry.js.map +1 -1
  95. package/lib/prompt/prompt-budget.d.ts +11 -6
  96. package/lib/prompt/prompt-budget.d.ts.map +1 -1
  97. package/lib/prompt/prompt-budget.js +42 -11
  98. package/lib/prompt/prompt-budget.js.map +1 -1
  99. package/lib/prompt/system-prompt.d.ts +2 -4
  100. package/lib/prompt/system-prompt.d.ts.map +1 -1
  101. package/lib/prompt/system-prompt.js +34 -54
  102. package/lib/prompt/system-prompt.js.map +1 -1
  103. package/lib/resource-hub/index.d.ts +15 -5
  104. package/lib/resource-hub/index.d.ts.map +1 -1
  105. package/lib/resource-hub/index.js +10 -0
  106. package/lib/resource-hub/index.js.map +1 -1
  107. package/lib/resource-hub/public-api.d.ts +10 -0
  108. package/lib/resource-hub/public-api.d.ts.map +1 -0
  109. package/lib/resource-hub/public-api.js +6 -0
  110. package/lib/resource-hub/public-api.js.map +1 -0
  111. package/lib/resource-hub/types.d.ts +2 -1
  112. package/lib/resource-hub/types.d.ts.map +1 -1
  113. package/lib/subagent/subagent-runtime.d.ts +13 -1
  114. package/lib/subagent/subagent-runtime.d.ts.map +1 -1
  115. package/lib/subagent/subagent-runtime.js +136 -34
  116. package/lib/subagent/subagent-runtime.js.map +1 -1
  117. package/lib/subagent/subagent-system-init.js +4 -4
  118. package/lib/subagent/subagent-system-init.js.map +1 -1
  119. package/lib/subagent/subagent-system.d.ts +2 -1
  120. package/lib/subagent/subagent-system.d.ts.map +1 -1
  121. package/lib/subagent/subagent-system.js +10 -3
  122. package/lib/subagent/subagent-system.js.map +1 -1
  123. package/lib/task-executor.d.ts +7 -1
  124. package/lib/task-executor.d.ts.map +1 -1
  125. package/lib/task-executor.js +74 -48
  126. package/lib/task-executor.js.map +1 -1
  127. package/lib/turn/inbound-queue-runtime.d.ts.map +1 -1
  128. package/lib/turn/inbound-queue-runtime.js +6 -2
  129. package/lib/turn/inbound-queue-runtime.js.map +1 -1
  130. package/lib/turn/inbound-turn-queue.d.ts +1 -0
  131. package/lib/turn/inbound-turn-queue.d.ts.map +1 -1
  132. package/lib/turn/inbound-turn-queue.js +14 -4
  133. package/lib/turn/inbound-turn-queue.js.map +1 -1
  134. package/lib/turn/index.d.ts +1 -1
  135. package/lib/turn/index.d.ts.map +1 -1
  136. package/lib/turn/index.js +1 -1
  137. package/lib/turn/index.js.map +1 -1
  138. package/lib/turn/turn-context-bridge.d.ts +0 -2
  139. package/lib/turn/turn-context-bridge.d.ts.map +1 -1
  140. package/lib/turn/turn-context-bridge.js +1 -8
  141. package/lib/turn/turn-context-bridge.js.map +1 -1
  142. package/lib/turn/turn-ingress.d.ts +3 -1
  143. package/lib/turn/turn-ingress.d.ts.map +1 -1
  144. package/lib/turn/turn-ingress.js.map +1 -1
  145. package/lib/turn/turn-pipeline.d.ts +1 -1
  146. package/lib/turn/turn-pipeline.d.ts.map +1 -1
  147. package/lib/turn/turn-pipeline.js +40 -3
  148. package/lib/turn/turn-pipeline.js.map +1 -1
  149. package/lib/typing-indicator/index.d.ts +4 -0
  150. package/lib/typing-indicator/index.d.ts.map +1 -1
  151. package/lib/typing-indicator/index.js +96 -23
  152. package/lib/typing-indicator/index.js.map +1 -1
  153. package/lib/utils/keyed-mutex.d.ts +1 -1
  154. package/lib/utils/keyed-mutex.d.ts.map +1 -1
  155. package/lib/utils/keyed-mutex.js +18 -4
  156. package/lib/utils/keyed-mutex.js.map +1 -1
  157. package/lib/workroom/journal.d.ts +4 -1
  158. package/lib/workroom/journal.d.ts.map +1 -1
  159. package/lib/workroom/journal.js +93 -6
  160. package/lib/workroom/journal.js.map +1 -1
  161. package/lib/workroom/kernel-contracts.d.ts +2 -1
  162. package/lib/workroom/kernel-contracts.d.ts.map +1 -1
  163. package/lib/workroom/kernel-state.d.ts.map +1 -1
  164. package/lib/workroom/kernel-state.js +35 -1
  165. package/lib/workroom/kernel-state.js.map +1 -1
  166. package/lib/workroom/runtime.d.ts +34 -1
  167. package/lib/workroom/runtime.d.ts.map +1 -1
  168. package/lib/workroom/runtime.js +97 -5
  169. package/lib/workroom/runtime.js.map +1 -1
  170. package/lib/workroom/workroom-kernel.d.ts +6 -0
  171. package/lib/workroom/workroom-kernel.d.ts.map +1 -1
  172. package/lib/workroom/workroom-kernel.js +129 -0
  173. package/lib/workroom/workroom-kernel.js.map +1 -1
  174. package/lib/workroom/workroom-run-control.d.ts +69 -0
  175. package/lib/workroom/workroom-run-control.d.ts.map +1 -0
  176. package/lib/workroom/workroom-run-control.js +144 -0
  177. package/lib/workroom/workroom-run-control.js.map +1 -0
  178. package/lib/workroom/workroom-scheduler.d.ts.map +1 -1
  179. package/lib/workroom/workroom-scheduler.js +9 -1
  180. package/lib/workroom/workroom-scheduler.js.map +1 -1
  181. package/lib/zhin-agent/index.d.ts +2 -5
  182. package/lib/zhin-agent/index.d.ts.map +1 -1
  183. package/lib/zhin-agent/index.js +23 -17
  184. package/lib/zhin-agent/index.js.map +1 -1
  185. package/package.json +12 -11
  186. package/lib/agent-prompt/format.d.ts +0 -6
  187. package/lib/agent-prompt/format.d.ts.map +0 -1
  188. package/lib/agent-prompt/format.js +0 -40
  189. package/lib/agent-prompt/format.js.map +0 -1
  190. package/lib/agent-prompt/index.d.ts +0 -5
  191. package/lib/agent-prompt/index.d.ts.map +0 -1
  192. package/lib/agent-prompt/index.js +0 -4
  193. package/lib/agent-prompt/index.js.map +0 -1
  194. package/lib/agent-prompt/registry.d.ts +0 -7
  195. package/lib/agent-prompt/registry.d.ts.map +0 -1
  196. package/lib/agent-prompt/registry.js +0 -23
  197. package/lib/agent-prompt/registry.js.map +0 -1
  198. package/lib/agent-prompt/resolver.d.ts +0 -13
  199. package/lib/agent-prompt/resolver.d.ts.map +0 -1
  200. package/lib/agent-prompt/resolver.js +0 -75
  201. package/lib/agent-prompt/resolver.js.map +0 -1
  202. package/lib/prompt/define-agent-prompt-section.d.ts +0 -29
  203. package/lib/prompt/define-agent-prompt-section.d.ts.map +0 -1
  204. package/lib/prompt/define-agent-prompt-section.js +0 -22
  205. package/lib/prompt/define-agent-prompt-section.js.map +0 -1
  206. package/lib/prompt/discover-prompt-sections.d.ts +0 -21
  207. package/lib/prompt/discover-prompt-sections.d.ts.map +0 -1
  208. package/lib/prompt/discover-prompt-sections.js +0 -49
  209. package/lib/prompt/discover-prompt-sections.js.map +0 -1
  210. package/lib/prompt/prompt-section-loader.d.ts +0 -27
  211. package/lib/prompt/prompt-section-loader.d.ts.map +0 -1
  212. package/lib/prompt/prompt-section-loader.js +0 -75
  213. package/lib/prompt/prompt-section-loader.js.map +0 -1
package/README.md CHANGED
@@ -97,7 +97,7 @@ turn 会跨代执行。
97
97
  - 🛡️ **6 层 Bash 安全**:`ExecPolicy` 纵深防御(危险黑名单、环境变量剥离、wrapper 剥离、复合命令拆分、只读放行、交互式审批)
98
98
  - 📂 **文件访问安全**:`FilePolicy` 路径检查、设备路径拦截、命令读写分类
99
99
  - 📋 **精简系统提示词**:`PromptBuilder` 组装 Context、Style、Tools、Safety,并按需注入 Platform、Skills、Memory、Bootstrap
100
- - 🧩 **提示词注册表**:`PromptAssemblyRegistry` 先注册默认系统提示分段,再按 `priority` 合并插件扩展/覆盖,并在 `systemPromptMaxChars` 预算下统一截断
100
+ - 🧩 **代际提示词能力**:`@zhin.js/prompt-section` 将插件上下文投影到当前 Runtime generation,`order``retention` 分离,并在 `systemPromptMaxChars` 预算下明确保留或失败
101
101
  - 🔌 **框架挂载**:Plugin Runtime (basic/cli) 装配 Agent 服务,通过 Scope+Token 提供
102
102
  - 📦 **上下文与记忆**:`ContextRepository`(`agent_messages`)、`AgentSessionStore`;聊天事件从 `ConversationEventStore` 游标消费
103
103
  - ⏰ **跟进与定时**:`FollowUpManager`、`PersistentCronEngine`、cron 工具
@@ -113,9 +113,10 @@ turn 会跨代执行。
113
113
 
114
114
  ## PromptAssemblyRegistry
115
115
 
116
- `buildRichSystemPrompt()` 现在会先创建默认提示词分段注册表,再合并调用方/插件注册的 `PromptAssemblyRegistry`。
117
- 扩展方可使用稳定 section id 覆盖默认段,或用新 id 插入额外段;最终内容按 `priority` 排序,并复用同一预算截断逻辑。
118
- `ZhinAgent` 通过 `getPromptRegistry()` 暴露该注册表,Plugin Runtime 组合根也会提供 `promptAssemblyRegistry` 上下文供 generation 内扩展使用。
116
+ `buildRichSystemPrompt()` 先创建内建分段,再合并当前 Runtime snapshot 中的
117
+ Prompt Section 投影。身份由 owner 与本地名共同决定,重复身份会在组合时被拒绝,
118
+ 不存在暗中覆盖。最终内容按 `order` 呈现,并按 `retention` `maxChars`
119
+ 执行预算策略。新回合使用新 generation,已开始回合保持原 generation。
119
120
 
120
121
  ## 模块化架构(理想蓝图 8 模块)
121
122
 
@@ -1,14 +1,37 @@
1
1
  /**
2
2
  * Activity Feedback — endpoint 适配器集成(复用 typing-indicator 底层适配器)
3
3
  */
4
- import type { Adapter, Endpoint } from '@zhin.js/core';
5
- import { type GenerationStoreContext } from '@zhin.js/plugin-runtime';
4
+ import type { EndpointControl } from '@zhin.js/core';
5
+ import type { ConversationRef } from '@zhin.js/im-contract';
6
6
  import { type TypingIndicator, type TypingIndicatorOptions } from '../typing-indicator/index.js';
7
7
  import { PLATFORM_FEATURES, buildTypingSendContent, type PlatformFeatures } from '../typing-indicator/adapter-integration.js';
8
8
  import { ActivityFeedbackManager } from './manager.js';
9
9
  import type { ActivityFeedbackPhase, ResolvedActivityFeedbackPhaseConfig } from './types.js';
10
10
  export { PLATFORM_FEATURES, buildTypingSendContent, type PlatformFeatures };
11
- type OutboundAdapter = Pick<Adapter, 'sendMessage'>;
11
+ /**
12
+ * Narrow outbound seam used by activity feedback.
13
+ *
14
+ * An Adapter definition selects and constructs Endpoints; it is not a live
15
+ * message sender. Runtime integrations therefore depend on this port instead
16
+ * of importing or fabricating the legacy all-in-one Adapter class.
17
+ */
18
+ export interface ActivityFeedbackSendPort {
19
+ send(input: Readonly<{
20
+ conversation: ConversationRef;
21
+ content: unknown;
22
+ }>): Promise<string | null | undefined>;
23
+ }
24
+ /** Structural compatibility for callers that still expose legacy sendMessage. */
25
+ export interface LegacyActivityFeedbackSendPort {
26
+ sendMessage(options: Readonly<{
27
+ type: 'private' | 'group';
28
+ id: string;
29
+ context: string;
30
+ endpoint: string;
31
+ content: unknown;
32
+ }>): Promise<string | null | undefined>;
33
+ }
34
+ export type ActivityFeedbackOutbound = ActivityFeedbackSendPort | LegacyActivityFeedbackSendPort;
12
35
  export interface PlatformActivityFeedbackStartOptions {
13
36
  messageId?: string;
14
37
  sessionId: string;
@@ -31,20 +54,20 @@ export interface PlatformActivityFeedbackManager {
31
54
  getActiveIndicator?(phase: ActivityFeedbackPhase, options: TypingIndicatorOptions): TypingIndicator | undefined;
32
55
  }
33
56
  export type BotActivityFeedbackManager = ActivityFeedbackManager | PlatformActivityFeedbackManager;
34
- export interface EndpointWithActivityFeedback extends Endpoint {
57
+ export interface EndpointWithActivityFeedback {
58
+ /** Concrete Endpoint identity within one Adapter definition. */
59
+ readonly $id: string;
60
+ /** Runtime IO/control belongs to the concrete Endpoint, never the Adapter definition. */
61
+ readonly control?: EndpointControl;
35
62
  $activityFeedback?: BotActivityFeedbackManager;
36
63
  }
37
64
  export declare class AdapterActivityFeedbackManager {
38
65
  private managers;
39
- enableForEndpoint(endpoint: EndpointWithActivityFeedback, platform: string, outbound?: OutboundAdapter): ActivityFeedbackManager;
66
+ enableForEndpoint(endpoint: EndpointWithActivityFeedback, platform: string, outbound?: ActivityFeedbackOutbound): ActivityFeedbackManager;
40
67
  getManager(platform: string, endpointKey: string): ActivityFeedbackManager | undefined;
41
68
  stopAll(platform: string, endpointKey: string): Promise<void>;
42
69
  clearAll(): void;
43
70
  }
44
- export declare function getAdapterActivityFeedbackManager(): AdapterActivityFeedbackManager;
45
- export declare function provideAdapterActivityFeedbackManager(context: GenerationStoreContext): AdapterActivityFeedbackManager;
46
- /** @deprecated 使用 provideAdapterActivityFeedbackManager 替代 */
47
- export declare const initAdapterActivityFeedbackManager: () => AdapterActivityFeedbackManager;
48
- export declare function enableActivityFeedbackForBot(endpoint: EndpointWithActivityFeedback, platform: string, outbound?: OutboundAdapter): ActivityFeedbackManager;
71
+ export declare function enableActivityFeedbackForBot(endpoint: EndpointWithActivityFeedback, platform: string, outbound?: ActivityFeedbackOutbound): ActivityFeedbackManager;
49
72
  export declare function isGenericActivityFeedbackManager(manager: BotActivityFeedbackManager): manager is ActivityFeedbackManager;
50
73
  //# sourceMappingURL=adapter-integration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-integration.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/adapter-integration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAe,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,gBAAgB,EAEtB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAI7F,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,CAAC;AAE5E,KAAK,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAoDpD,MAAM,WAAW,oCAAoC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,6CAA6C;IAC7C,WAAW,EAAE,mCAAmC,CAAC;CAClD;AAED,qDAAqD;AACrD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,CAAC,OAAO,EAAE,oCAAoC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,qBAAqB,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,kBAAkB,CAAC,CACjB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,sBAAsB,GAC9B,eAAe,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,MAAM,0BAA0B,GAAG,uBAAuB,GAAG,+BAA+B,CAAC;AAEnG,MAAM,WAAW,4BAA6B,SAAQ,QAAQ;IAC5D,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;CAChD;AAiFD,qBAAa,8BAA8B;IACzC,OAAO,CAAC,QAAQ,CAA8C;IAE9D,iBAAiB,CACf,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,eAAe,GACzB,uBAAuB;IAoB1B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAIhF,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,QAAQ,IAAI,IAAI;CAGjB;AAID,wBAAgB,iCAAiC,IAAI,8BAA8B,CAElF;AAED,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,sBAAsB,GAAG,8BAA8B,CAKrH;AAED,8DAA8D;AAC9D,eAAO,MAAM,kCAAkC,sCAA6C,CAAC;AAE7F,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,eAAe,GACzB,uBAAuB,CAEzB;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,0BAA0B,GAClC,OAAO,IAAI,uBAAuB,CAEpC"}
1
+ {"version":3,"file":"adapter-integration.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/adapter-integration.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,7 @@
2
2
  * Activity Feedback — endpoint 适配器集成(复用 typing-indicator 底层适配器)
3
3
  */
4
4
  import { getLogger } from '@zhin.js/logger';
5
- import { createGenerationStore } from '@zhin.js/plugin-runtime';
6
- import { ReactionTypingIndicatorAdapter, GenericTypingIndicatorAdapter, } from '../typing-indicator/index.js';
5
+ import { MessageTypingIndicator, NativeTypingIndicator, NoneTypingIndicator, ReactionTypingIndicator, } from '../typing-indicator/index.js';
7
6
  import { PLATFORM_FEATURES, buildTypingSendContent, } from '../typing-indicator/adapter-integration.js';
8
7
  import { ActivityFeedbackManager } from './manager.js';
9
8
  const logger = getLogger('ActivityFeedback');
@@ -34,20 +33,24 @@ function createOutboundSendMessage(endpoint, platform, messages, outbound) {
34
33
  if (!segments)
35
34
  return null;
36
35
  const { type, id } = resolveSendTarget(options);
37
- const sendOptions = {
38
- type,
39
- id,
40
- context: platform,
41
- endpoint: endpoint.$id,
42
- content: segments,
43
- };
44
36
  if (outbound) {
45
- const messageId = await outbound.sendMessage(sendOptions);
37
+ const messageId = 'send' in outbound
38
+ ? await outbound.send({
39
+ conversation: toConversationRef(endpoint, platform, options),
40
+ content: segments,
41
+ })
42
+ : await outbound.sendMessage({
43
+ type,
44
+ id,
45
+ context: platform,
46
+ endpoint: endpoint.$id,
47
+ content: segments,
48
+ });
46
49
  if (messageId)
47
50
  messages.set(messageId, toMessageRef(endpoint, platform, options, messageId));
48
- return messageId;
51
+ return messageId ?? null;
49
52
  }
50
- logger.error(`[${platform}] Activity feedback requires Adapter.sendMessage; endpoint ${endpoint.$id} has no outbound adapter`);
53
+ logger.error(`[${platform}] Activity feedback requires an outbound send port; endpoint ${endpoint.$id} has none`);
51
54
  return null;
52
55
  }
53
56
  catch (error) {
@@ -56,113 +59,112 @@ function createOutboundSendMessage(endpoint, platform, messages, outbound) {
56
59
  }
57
60
  };
58
61
  }
59
- function registerPlatformAdapters(manager, endpoint, platform, features, outbound) {
62
+ function registerPlatformAdapters(manager, endpoint, platform, outbound) {
60
63
  const messages = new Map();
61
64
  const sendMessage = createOutboundSendMessage(endpoint, platform, messages, outbound);
62
- if (features.supportsReaction && endpoint.control?.addReaction && endpoint.control.removeReaction) {
63
- manager.registerAdapter(new ReactionTypingIndicatorAdapter(platform, async (messageId, emoji, options) => {
64
- try {
65
- const message = toMessageRef(endpoint, platform, options, messageId);
66
- messages.set(messageId, message);
67
- return await endpoint.control.addReaction(message, emoji, {
68
- sceneType: options.sceneType,
69
- channelId: options.groupId,
65
+ manager.registerAdapter(new EndpointActivityFeedbackAdapter(platform, endpoint, messages, sendMessage));
66
+ }
67
+ /** One adapter selected from the concrete Endpoint control contract, not its platform name. */
68
+ class EndpointActivityFeedbackAdapter {
69
+ platform;
70
+ endpoint;
71
+ messages;
72
+ sendMessage;
73
+ supportedTypes;
74
+ constructor(platform, endpoint, messages, sendMessage) {
75
+ this.platform = platform;
76
+ this.endpoint = endpoint;
77
+ this.messages = messages;
78
+ this.sendMessage = sendMessage;
79
+ const types = [];
80
+ if (endpoint.control?.addReaction && endpoint.control.removeReaction)
81
+ types.push('reaction');
82
+ if (endpoint.control?.typing)
83
+ types.push('typing');
84
+ // Activity messages are transient state, so advertising them without a
85
+ // matching recall operation would leave permanent “processing” debris in IM.
86
+ if (endpoint.control?.recall)
87
+ types.push('message');
88
+ types.push('none');
89
+ this.supportedTypes = types;
90
+ }
91
+ createIndicator(options, config) {
92
+ if (config.type === 'reaction' && this.endpoint.control?.addReaction && this.endpoint.control.removeReaction) {
93
+ return new ReactionTypingIndicator(options, config, async (messageId, emoji, current) => {
94
+ const message = toMessageRef(this.endpoint, this.platform, current, messageId);
95
+ this.messages.set(messageId, message);
96
+ return this.endpoint.control.addReaction(message, emoji, {
97
+ sceneType: current.sceneType,
98
+ channelId: current.groupId,
70
99
  });
71
- }
72
- catch (error) {
73
- logger.error(`[${platform}] Failed to add reaction:`, error);
74
- return null;
75
- }
76
- }, async (messageId, reactionId) => {
77
- const message = messages.get(messageId);
78
- if (!message)
79
- return;
80
- void Promise.resolve(endpoint.control.removeReaction(message, reactionId)).catch((error) => {
81
- logger.warn(`[${platform}] Failed to remove reaction:`, error);
100
+ }, async (messageId, reactionId) => {
101
+ const message = this.messages.get(messageId);
102
+ if (message)
103
+ await this.endpoint.control.removeReaction(message, reactionId);
82
104
  });
83
- }, sendMessage, async (messageId) => {
84
- const message = messages.get(messageId);
85
- if (message)
86
- await endpoint.control?.recall?.(message);
87
- }, async (messageId, content) => {
88
- const editBot = endpoint;
89
- const message = messages.get(messageId);
90
- if (message && endpoint.control?.edit)
91
- await endpoint.control.edit(message, content);
92
- else if (typeof editBot.$updateMessage === 'function')
93
- await editBot.$updateMessage(messageId, content);
94
- }));
95
- return;
105
+ }
106
+ if (config.type === 'typing' && this.endpoint.control?.typing) {
107
+ return new NativeTypingIndicator(options, config, async (current) => this.endpoint.control.typing(toConversationRef(this.endpoint, this.platform, current), true), async (current) => this.endpoint.control.typing(toConversationRef(this.endpoint, this.platform, current), false));
108
+ }
109
+ if (config.type === 'message' && this.endpoint.control?.recall) {
110
+ return new MessageTypingIndicator(options, config, this.sendMessage, async (messageId) => {
111
+ const message = this.messages.get(messageId);
112
+ if (message)
113
+ await this.endpoint.control.recall(message);
114
+ }, async (messageId, content) => {
115
+ const message = this.messages.get(messageId);
116
+ if (message && this.endpoint.control?.edit)
117
+ await this.endpoint.control.edit(message, content);
118
+ });
119
+ }
120
+ return new NoneTypingIndicator();
96
121
  }
97
- manager.registerAdapter(new GenericTypingIndicatorAdapter(platform, sendMessage, async (messageId) => {
98
- const message = messages.get(messageId);
99
- if (message)
100
- await endpoint.control?.recall?.(message);
101
- }, async (messageId, content) => {
102
- const editBot = endpoint;
103
- const message = messages.get(messageId);
104
- if (message && endpoint.control?.edit)
105
- await endpoint.control.edit(message, content);
106
- else if (typeof editBot.$updateMessage === 'function')
107
- await editBot.$updateMessage(messageId, content);
108
- }));
109
122
  }
110
123
  function toMessageRef(endpoint, platform, options, id) {
111
- const target = resolveSendTarget(options);
112
124
  return {
113
- conversation: {
114
- endpoint: { id: endpoint.$id, adapter: platform },
115
- kind: options.sceneType,
116
- id: target.id,
117
- },
125
+ conversation: toConversationRef(endpoint, platform, options),
118
126
  id,
119
127
  };
120
128
  }
129
+ function toConversationRef(endpoint, platform, options) {
130
+ const target = resolveSendTarget(options);
131
+ return {
132
+ endpoint: { id: endpoint.$id, adapter: platform },
133
+ kind: options.sceneType,
134
+ id: target.id,
135
+ };
136
+ }
121
137
  export class AdapterActivityFeedbackManager {
122
138
  managers = new Map();
123
139
  enableForEndpoint(endpoint, platform, outbound) {
124
- const botKey = `${platform}:${endpoint.$id}`;
140
+ const botKey = JSON.stringify([platform, endpoint.$id]);
125
141
  if (this.managers.has(botKey)) {
126
142
  return this.managers.get(botKey);
127
143
  }
128
- const features = PLATFORM_FEATURES[platform] ?? {
129
- platform,
130
- supportsReaction: false,
131
- supportsEdit: false,
132
- supportsDelete: true,
133
- supportsTyping: false,
134
- defaultType: 'message',
135
- };
136
144
  const manager = new ActivityFeedbackManager();
137
- registerPlatformAdapters(manager, endpoint, platform, features, outbound);
145
+ registerPlatformAdapters(manager, endpoint, platform, outbound);
138
146
  this.managers.set(botKey, manager);
139
147
  endpoint.$activityFeedback = manager;
140
148
  return manager;
141
149
  }
142
150
  getManager(platform, endpointKey) {
143
- return this.managers.get(`${platform}:${endpointKey}`);
151
+ return this.managers.get(JSON.stringify([platform, endpointKey]));
144
152
  }
145
153
  async stopAll(platform, endpointKey) {
146
- await this.managers.get(`${platform}:${endpointKey}`)?.stopAll();
154
+ await this.managers.get(JSON.stringify([platform, endpointKey]))?.stopAll();
147
155
  }
148
156
  clearAll() {
149
157
  this.managers.clear();
150
158
  }
151
159
  }
152
- const adapterFeedbackStore = createGenerationStore('zhin.agent.adapter-activity-feedback');
153
- export function getAdapterActivityFeedbackManager() {
154
- return adapterFeedbackStore.tryUse() ?? new AdapterActivityFeedbackManager();
155
- }
156
- export function provideAdapterActivityFeedbackManager(context) {
157
- const manager = new AdapterActivityFeedbackManager();
158
- adapterFeedbackStore.provide(context, manager);
159
- context.lifecycle.add(() => manager.clearAll());
160
- return manager;
161
- }
162
- /** @deprecated 使用 provideAdapterActivityFeedbackManager 替代 */
163
- export const initAdapterActivityFeedbackManager = () => new AdapterActivityFeedbackManager();
164
160
  export function enableActivityFeedbackForBot(endpoint, platform, outbound) {
165
- return getAdapterActivityFeedbackManager().enableForEndpoint(endpoint, platform, outbound);
161
+ const existing = endpoint.$activityFeedback;
162
+ if (existing instanceof ActivityFeedbackManager)
163
+ return existing;
164
+ const manager = new ActivityFeedbackManager();
165
+ registerPlatformAdapters(manager, endpoint, platform, outbound);
166
+ endpoint.$activityFeedback = manager;
167
+ return manager;
166
168
  }
167
169
  export function isGenericActivityFeedbackManager(manager) {
168
170
  return manager instanceof ActivityFeedbackManager;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-integration.js","sourceRoot":"","sources":["../../src/activity-feedback/adapter-integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-integration.js","sourceRoot":"","sources":["../../src/activity-feedback/adapter-integration.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AIEventPayload } from '../ai-event-subscriber.js';
2
- type AIBusListener = (payload: AIEventPayload) => void;
2
+ type AIBusListener = (payload: AIEventPayload) => void | Promise<void>;
3
3
  /**
4
4
  * Module-level AI event bus for Plugin Runtime consumers that cannot use
5
5
  * Plugin ALS / `subscribeAIEvents(plugin, ...)`.
@@ -12,6 +12,7 @@ export declare class ActivityFeedbackAIBus {
12
12
  on(event: string, listener: AIBusListener): this;
13
13
  off(event: string, listener: AIBusListener): this;
14
14
  emit(event: string, payload: AIEventPayload): void;
15
+ dispatch(event: string, payload: AIEventPayload): Promise<void>;
15
16
  /** Test helper — clears all listeners. */
16
17
  clear(): void;
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-bus.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/ai-bus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAUhD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAiBlD,0CAA0C;IAC1C,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
1
+ {"version":3,"file":"ai-bus.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/ai-bus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAUhD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAI5C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrE,0CAA0C;IAC1C,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
@@ -23,6 +23,9 @@ export class ActivityFeedbackAIBus {
23
23
  return this;
24
24
  }
25
25
  emit(event, payload) {
26
+ void this.dispatch(event, payload);
27
+ }
28
+ async dispatch(event, payload) {
26
29
  const set = this.listeners.get(event);
27
30
  if (!set || set.size === 0) {
28
31
  // 零订阅 = activity-feedback 插件未加载,或运行时装了双份 @zhin.js/agent
@@ -30,14 +33,22 @@ export class ActivityFeedbackAIBus {
30
33
  logger.debug(formatCompact({ op: 'ai_bus_no_listener', event }));
31
34
  return;
32
35
  }
33
- for (const listener of set) {
36
+ // Snapshot before the first await: HMR may replace listeners while an old
37
+ // generation handler is still settling. A live Set iterator would then
38
+ // leak this in-flight event into the newly registered generation.
39
+ const listeners = [...set];
40
+ const pending = listeners.map((listener) => {
34
41
  try {
35
- listener(payload);
42
+ // Invoke every snapshot listener before awaiting. Generation admission
43
+ // must be sampled at dispatch ingress, not after an earlier listener settles.
44
+ return Promise.resolve(listener(payload)).catch(() => undefined);
36
45
  }
37
46
  catch {
38
47
  // Listener errors must not break the Agent emit path.
48
+ return Promise.resolve();
39
49
  }
40
- }
50
+ });
51
+ await Promise.all(pending);
41
52
  }
42
53
  /** Test helper — clears all listeners. */
43
54
  clear() {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-bus.js","sourceRoot":"","sources":["../../src/activity-feedback/ai-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAIlC;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IACf,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEnE,EAAE,CAAC,KAAa,EAAE,QAAuB;QACvC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,QAAuB;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,OAAuB;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,wDAAwD;YACxD,4CAA4C;YAC5C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"ai-bus.js","sourceRoot":"","sources":["../../src/activity-feedback/ai-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAIlC;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IACf,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEnE,EAAE,CAAC,KAAa,EAAE,QAAuB;QACvC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,QAAuB;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,OAAuB;QACzC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,OAAuB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,wDAAwD;YACxD,4CAA4C;YAC5C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,0EAA0E;QAC1E,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzC,IAAI,CAAC;gBACH,uEAAuE;gBACvE,8EAA8E;gBAC9E,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;gBACtD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,0CAA0C;IAC1C,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
@@ -5,8 +5,8 @@ export { isActivityFeedbackEnabled } from './schedule-guard.js';
5
5
  export type { ActivityFeedbackGatePhase } from './schedule-guard.js';
6
6
  export { toActivityFeedbackEventContext, resolveActivitySceneType, resolveActivityEventTargets, type ActivityFeedbackEventContext, } from './event-context.js';
7
7
  export { resolveSubagentActivityTag, formatSubagentActivityPrefix, withSubagentActivityPrefix, applySubagentActivityPrefixToConfig, resolveActivityFeedbackSessionId, } from './subagent-prefix.js';
8
- export { ActivityFeedbackManager, getActivityFeedbackManager, initActivityFeedbackManager, provideActivityFeedbackManager, } from './manager.js';
9
- export { PLATFORM_FEATURES, buildTypingSendContent, enableActivityFeedbackForBot, getAdapterActivityFeedbackManager, initAdapterActivityFeedbackManager, provideAdapterActivityFeedbackManager, isGenericActivityFeedbackManager, } from './adapter-integration.js';
10
- export type { PlatformFeatures, EndpointWithActivityFeedback, PlatformActivityFeedbackManager, PlatformActivityFeedbackStartOptions, BotActivityFeedbackManager, } from './adapter-integration.js';
8
+ export { ActivityFeedbackManager, } from './manager.js';
9
+ export { PLATFORM_FEATURES, buildTypingSendContent, enableActivityFeedbackForBot, isGenericActivityFeedbackManager, } from './adapter-integration.js';
10
+ export type { PlatformFeatures, EndpointWithActivityFeedback, ActivityFeedbackSendPort, PlatformActivityFeedbackManager, PlatformActivityFeedbackStartOptions, BotActivityFeedbackManager, } from './adapter-integration.js';
11
11
  export { activityFeedbackAiBus, ActivityFeedbackAIBus } from './ai-bus.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,mCAAmC,EACnC,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,qCAAqC,EACrC,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,mCAAmC,EACnC,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,oCAAoC,EACpC,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -3,7 +3,7 @@ export { resolveActivityFeedbackPhaseConfig, } from './config-resolver.js';
3
3
  export { isActivityFeedbackEnabled } from './schedule-guard.js';
4
4
  export { toActivityFeedbackEventContext, resolveActivitySceneType, resolveActivityEventTargets, } from './event-context.js';
5
5
  export { resolveSubagentActivityTag, formatSubagentActivityPrefix, withSubagentActivityPrefix, applySubagentActivityPrefixToConfig, resolveActivityFeedbackSessionId, } from './subagent-prefix.js';
6
- export { ActivityFeedbackManager, getActivityFeedbackManager, initActivityFeedbackManager, provideActivityFeedbackManager, } from './manager.js';
7
- export { PLATFORM_FEATURES, buildTypingSendContent, enableActivityFeedbackForBot, getAdapterActivityFeedbackManager, initAdapterActivityFeedbackManager, provideAdapterActivityFeedbackManager, isGenericActivityFeedbackManager, } from './adapter-integration.js';
6
+ export { ActivityFeedbackManager, } from './manager.js';
7
+ export { PLATFORM_FEATURES, buildTypingSendContent, enableActivityFeedbackForBot, isGenericActivityFeedbackManager, } from './adapter-integration.js';
8
8
  export { activityFeedbackAiBus, ActivityFeedbackAIBus } from './ai-bus.js';
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/activity-feedback/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,mCAAmC,EACnC,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EAClC,qCAAqC,EACrC,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/activity-feedback/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EACL,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,mCAAmC,EACnC,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { TypingIndicatorManager, type TypingIndicator, type TypingIndicatorOptions } from '../typing-indicator/index.js';
2
- import { type GenerationStoreContext } from '@zhin.js/plugin-runtime';
3
2
  import { type ActivityFeedbackPhase, type ResolvedActivityFeedbackPhaseConfig } from './types.js';
4
3
  export declare class ActivityFeedbackManager {
5
4
  private readonly inner;
@@ -11,8 +10,4 @@ export declare class ActivityFeedbackManager {
11
10
  stopAll(): Promise<void>;
12
11
  dispose(): Promise<void>;
13
12
  }
14
- export declare function getActivityFeedbackManager(): ActivityFeedbackManager;
15
- export declare function provideActivityFeedbackManager(context: GenerationStoreContext): ActivityFeedbackManager;
16
- /** @deprecated 使用 provideActivityFeedbackManager 替代 */
17
- export declare const initActivityFeedbackManager: () => ActivityFeedbackManager;
18
13
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,eAAe,EAEpB,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,KAAK,qBAAqB,EAA2B,KAAK,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAe3H,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI;IAIrF,UAAU,CAAC,QAAQ,EAAE,MAAM;IAIrB,KAAK,CACT,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,mCAAmC,GAC1C,OAAO,CAAC,eAAe,CAAC;IAIrB,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxF,kBAAkB,CAChB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,sBAAsB,GAC9B,eAAe,GAAG,SAAS;IAIxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAID,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,sBAAsB,GAAG,uBAAuB,CAKvG;AAED,uDAAuD;AACvD,eAAO,MAAM,2BAA2B,+BAAsC,CAAC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/activity-feedback/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,eAAe,EAEpB,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,qBAAqB,EAA2B,KAAK,mCAAmC,EAAE,MAAM,YAAY,CAAC;AA2B3H,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI;IAIrF,UAAU,CAAC,QAAQ,EAAE,MAAM;IAIrB,KAAK,CACT,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,mCAAmC,GAC1C,OAAO,CAAC,eAAe,CAAC;IAYrB,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxF,kBAAkB,CAChB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,sBAAsB,GAC9B,eAAe,GAAG,SAAS;IAOxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -1,13 +1,18 @@
1
1
  import { TypingIndicatorManager, } from '../typing-indicator/index.js';
2
- import { createGenerationStore } from '@zhin.js/plugin-runtime';
3
2
  import { toTypingIndicatorConfig } from './types.js';
4
3
  function phaseSessionId(sessionId, phase) {
5
4
  return `${sessionId}::phase:${phase}`;
6
5
  }
7
- function withPhase(options, phase) {
6
+ function reactionPhaseSessionId(sessionId, phase, messageId) {
7
+ return `${phaseSessionId(sessionId, phase)}::message:${messageId}`;
8
+ }
9
+ function withPhase(options, phase, messageScoped = false) {
10
+ const sessionId = options.sessionId ?? options.messageId ?? '';
8
11
  return {
9
12
  ...options,
10
- sessionId: phaseSessionId(options.sessionId ?? options.messageId ?? '', phase),
13
+ sessionId: messageScoped && options.messageId
14
+ ? reactionPhaseSessionId(sessionId, phase, options.messageId)
15
+ : phaseSessionId(sessionId, phase),
11
16
  };
12
17
  }
13
18
  export class ActivityFeedbackManager {
@@ -19,13 +24,24 @@ export class ActivityFeedbackManager {
19
24
  return this.inner.getAdapter(platform);
20
25
  }
21
26
  async start(phase, options, config) {
22
- return this.inner.start(withPhase(options, phase), toTypingIndicatorConfig(config));
27
+ const typingConfig = toTypingIndicatorConfig(config);
28
+ const adapter = this.inner.getAdapter(options.platform);
29
+ const resolvedType = adapter?.supportedTypes.includes(config.type)
30
+ ? config.type
31
+ : adapter?.supportedTypes[0];
32
+ return this.inner.start(withPhase(options, phase, resolvedType === 'reaction'), typingConfig);
23
33
  }
24
34
  async stop(phase, options) {
35
+ if (options.messageId) {
36
+ await this.inner.stop(withPhase(options, phase, true));
37
+ }
25
38
  return this.inner.stop(withPhase(options, phase));
26
39
  }
27
40
  getActiveIndicator(phase, options) {
28
- return this.inner.getActiveIndicator(withPhase(options, phase));
41
+ return (options.messageId
42
+ ? this.inner.getActiveIndicator(withPhase(options, phase, true))
43
+ : undefined)
44
+ ?? this.inner.getActiveIndicator(withPhase(options, phase));
29
45
  }
30
46
  async stopAll() {
31
47
  return this.inner.stopAll();
@@ -34,16 +50,4 @@ export class ActivityFeedbackManager {
34
50
  return this.inner.dispose();
35
51
  }
36
52
  }
37
- const feedbackStore = createGenerationStore('zhin.agent.activity-feedback');
38
- export function getActivityFeedbackManager() {
39
- return feedbackStore.tryUse() ?? new ActivityFeedbackManager();
40
- }
41
- export function provideActivityFeedbackManager(context) {
42
- const manager = new ActivityFeedbackManager();
43
- feedbackStore.provide(context, manager);
44
- context.lifecycle.add(() => manager.dispose());
45
- return manager;
46
- }
47
- /** @deprecated 使用 provideActivityFeedbackManager 替代 */
48
- export const initActivityFeedbackManager = () => new ActivityFeedbackManager();
49
53
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/activity-feedback/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAIvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAA+B,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAA8B,uBAAuB,EAA4C,MAAM,YAAY,CAAC;AAC3H,SAAS,cAAc,CAAC,SAAiB,EAAE,KAA4B;IACrE,OAAO,GAAG,SAAS,WAAW,KAAK,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAChB,OAA+B,EAC/B,KAA4B;IAE5B,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,uBAAuB;IACjB,KAAK,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAEtD,eAAe,CAAC,GAAG,IAA2D;QAC5E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,QAAgB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK,CACT,KAA4B,EAC5B,OAA+B,EAC/B,MAA2C;QAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA4B,EAAE,OAA+B;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,kBAAkB,CAChB,KAA4B,EAC5B,OAA+B;QAE/B,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,aAAa,GAAG,qBAAqB,CAA0B,8BAA8B,CAAC,CAAC;AAErG,MAAM,UAAU,0BAA0B;IACxC,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,uBAAuB,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,OAA+B;IAC5E,MAAM,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC9C,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,EAAE,CAAC,IAAI,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/activity-feedback/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { TurnEvent } from '../event/turn-event.js';
2
+ import type { AIEventName, AIEventPayload } from '../ai-event-subscriber.js';
3
+ export interface TurnActivityProjectorOptions {
4
+ readonly payload: AIEventPayload;
5
+ readonly publish: (event: AIEventName, payload: AIEventPayload) => void;
6
+ readonly thinkingPreview: boolean;
7
+ readonly thinkingMaxLength: number;
8
+ }
9
+ /** Projects canonical TurnEvents into the shared IM activity lifecycle. */
10
+ export declare function createTurnActivityProjector(options: TurnActivityProjectorOptions): (event: TurnEvent) => void;
11
+ //# sourceMappingURL=turn-event-projector.d.ts.map