@zhin.js/service-activity-feedback 1.0.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/executor.js CHANGED
@@ -1,15 +1,4 @@
1
1
  import { enableActivityFeedbackForBot, isGenericActivityFeedbackManager } from '@zhin.js/agent';
2
- export function createRootEndpointAccess(root) {
3
- return {
4
- resolve(platform, endpointId) {
5
- const adapter = root.injectAdapter(platform);
6
- const endpoint = adapter?.endpoints?.get(endpointId);
7
- if (!endpoint || !adapter)
8
- return undefined;
9
- return { endpoint, adapter };
10
- },
11
- };
12
- }
13
2
  /** Slice-2: no Adapter inject — executor start/stop no-op when resolve returns undefined. */
14
3
  export function createNoopEndpointAccess() {
15
4
  return {
@@ -43,82 +32,113 @@ function stringifySendContent(content) {
43
32
  * Plugin Runtime: resolve endpoints via OutboundHost → ImRuntime.sendEndpointMessage.
44
33
  * Typing/reaction text goes through the unified outbound chain (no legacy Adapter.inject).
45
34
  *
46
- * 按 platform:endpointId 缓存 { endpoint, adapter }:activity manager 挂在
35
+ * 按 platform:endpointKey 缓存 { endpoint, outbound }:activity manager 挂在
47
36
  * endpoint.$activityFeedback 上,start/stop 必须解析到同一个对象,否则
48
37
  * stop 时拿不到 manager,typing 指示器永远无法停止。
49
38
  */
50
39
  export function createOutboundEndpointAccess(outbound, logger) {
51
40
  const cache = new Map();
52
41
  return {
53
- resolve(platform, endpointId) {
54
- const key = `${platform}:${endpointId}`;
42
+ resolve(platform, endpointKey) {
43
+ const key = JSON.stringify([platform, endpointKey]);
55
44
  const cached = cache.get(key);
56
45
  if (cached)
57
46
  return cached;
47
+ const declared = outbound.capabilities?.({ adapter: platform, endpointKey })?.operations;
48
+ const supports = (operation) => declared?.includes(operation) === true;
49
+ const recall = outbound.recall;
50
+ const edit = outbound.edit;
51
+ const addReaction = outbound.addReaction;
52
+ const removeReaction = outbound.removeReaction;
53
+ const typing = outbound.typing;
58
54
  const endpoint = {
59
- $id: endpointId,
60
- // Prefer real OutboundHost.recall when available (icqq RECALL_MSG).
61
- $recallMessage: async (messageId) => {
62
- if (outbound.recall) {
63
- try {
64
- await outbound.recall({ adapter: platform, endpointId, messageId });
65
- return;
66
- }
67
- catch (error) {
68
- logger?.debug(`[ActivityFeedback] outbound recall failed (${key}):`, error instanceof Error ? error.message : String(error));
69
- return;
70
- }
71
- }
72
- logger?.debug(`[ActivityFeedback] recall not supported via OutboundHost (${key}, messageId=${messageId})`);
55
+ $id: endpointKey,
56
+ control: {
57
+ ...(recall && supports('recall') ? {
58
+ recall: async (message) => {
59
+ try {
60
+ await recall({ adapter: platform, endpointKey, message });
61
+ }
62
+ catch (error) {
63
+ logger?.debug(`[ActivityFeedback] outbound recall failed (${key}):`, error instanceof Error ? error.message : String(error));
64
+ }
65
+ },
66
+ } : {}),
67
+ ...(edit && supports('edit') ? {
68
+ edit: async (message, content) => {
69
+ try {
70
+ return await edit({ adapter: platform, endpointKey, message, content });
71
+ }
72
+ catch (error) {
73
+ logger?.debug(`[ActivityFeedback] outbound edit failed (${key}):`, error instanceof Error ? error.message : String(error));
74
+ return null;
75
+ }
76
+ },
77
+ } : {}),
78
+ ...(addReaction && supports('reaction') ? {
79
+ addReaction: async (message, emoji, hint) => {
80
+ try {
81
+ return await addReaction({
82
+ adapter: platform,
83
+ endpointKey,
84
+ message,
85
+ emoji,
86
+ sceneType: hint?.sceneType,
87
+ channelId: hint?.channelId,
88
+ });
89
+ }
90
+ catch (error) {
91
+ logger?.debug(`[ActivityFeedback] outbound addReaction failed (${key}):`, error instanceof Error ? error.message : String(error));
92
+ return null;
93
+ }
94
+ },
95
+ } : {}),
96
+ ...(removeReaction && supports('reaction') ? {
97
+ removeReaction: async (message, reactionId) => {
98
+ try {
99
+ await removeReaction({ adapter: platform, endpointKey, message, reactionId });
100
+ }
101
+ catch (error) {
102
+ logger?.debug(`[ActivityFeedback] outbound removeReaction failed (${key}):`, error instanceof Error ? error.message : String(error));
103
+ }
104
+ },
105
+ } : {}),
106
+ ...(typing && supports('typing') ? {
107
+ typing: async (conversation, active) => {
108
+ try {
109
+ await typing({ adapter: platform, endpointKey, conversation, active });
110
+ }
111
+ catch (error) {
112
+ logger?.debug(`[ActivityFeedback] outbound typing failed (${key}):`, error instanceof Error ? error.message : String(error));
113
+ }
114
+ },
115
+ } : {}),
73
116
  },
74
- $addReaction: outbound.addReaction
75
- ? async (messageId, emoji, hint) => outbound.addReaction({
76
- adapter: platform,
77
- endpointId,
78
- messageId,
79
- emoji,
80
- sceneType: hint?.sceneType,
81
- channelId: hint?.channelId,
82
- })
83
- : undefined,
84
- $removeReaction: outbound.removeReaction
85
- ? async (messageId, reactionId) => {
86
- await outbound.removeReaction({
87
- adapter: platform,
88
- endpointId,
89
- messageId,
90
- reactionId,
91
- });
92
- }
93
- : undefined,
94
117
  };
95
- const adapter = {
96
- sendMessage: async (options) => {
97
- const text = stringifySendContent(options.content);
98
- if (!text || !options.id)
118
+ const sendPort = {
119
+ send: async ({ conversation, content }) => {
120
+ const text = stringifySendContent(content);
121
+ if (!text || !conversation.id)
99
122
  return null;
100
123
  try {
101
124
  const messageId = await outbound.send({
102
125
  adapter: platform,
103
- endpointId,
104
- channelType: options.type || 'private',
105
- channelId: options.id,
126
+ endpointKey,
127
+ conversation: {
128
+ kind: conversation.kind,
129
+ id: conversation.id,
130
+ },
106
131
  content: text,
107
132
  });
108
- // Prefer real id; fall back to a sentinel so MessageTypingIndicator
109
- // keeps the phase active until stop (recall is a no-op here).
110
- return messageId || `outbound:${Date.now()}`;
133
+ return messageId || null;
111
134
  }
112
135
  catch (error) {
113
136
  logger?.debug(`[ActivityFeedback] outbound send failed (${key}):`, error instanceof Error ? error.message : String(error));
114
137
  return null;
115
138
  }
116
139
  },
117
- endpoints: {
118
- get: (id) => (id === endpointId ? endpoint : undefined),
119
- },
120
140
  };
121
- const resolved = { endpoint, adapter: adapter };
141
+ const resolved = { endpoint, outbound: sendPort };
122
142
  cache.set(key, resolved);
123
143
  return resolved;
124
144
  },
@@ -159,12 +179,12 @@ class PlatformPhaseDriver {
159
179
  class GenericPhaseDriver {
160
180
  endpoint;
161
181
  platform;
162
- adapter;
182
+ outbound;
163
183
  manager;
164
- constructor(endpoint, platform, adapter) {
184
+ constructor(endpoint, platform, outbound) {
165
185
  this.endpoint = endpoint;
166
186
  this.platform = platform;
167
- this.adapter = adapter;
187
+ this.outbound = outbound;
168
188
  }
169
189
  async ensureManager() {
170
190
  if (this.manager)
@@ -174,7 +194,7 @@ class GenericPhaseDriver {
174
194
  this.manager = existing;
175
195
  return existing;
176
196
  }
177
- this.manager = enableActivityFeedbackForBot(this.endpoint, this.platform, this.adapter);
197
+ this.manager = enableActivityFeedbackForBot(this.endpoint, this.platform, this.outbound);
178
198
  return this.manager;
179
199
  }
180
200
  async start(ctx, phase, phaseConfig) {
@@ -199,12 +219,12 @@ class GenericPhaseDriver {
199
219
  }
200
220
  }
201
221
  }
202
- function createPhaseDriver(endpoint, platform, adapter) {
222
+ function createPhaseDriver(endpoint, platform, outbound) {
203
223
  const manager = endpoint.$activityFeedback;
204
224
  if (manager && !isGenericActivityFeedbackManager(manager)) {
205
225
  return new PlatformPhaseDriver(manager);
206
226
  }
207
- return new GenericPhaseDriver(endpoint, platform, adapter);
227
+ return new GenericPhaseDriver(endpoint, platform, outbound);
208
228
  }
209
229
  export class ActivityFeedbackExecutor {
210
230
  access;
@@ -212,25 +232,36 @@ export class ActivityFeedbackExecutor {
212
232
  this.access = access;
213
233
  }
214
234
  async start(ctx, phase, phaseConfig) {
215
- const resolved = this.access.resolve(ctx.platform, ctx.endpointId);
235
+ const resolved = this.access.resolve(ctx.platform, ctx.endpointKey);
216
236
  if (!resolved)
217
237
  return;
218
- const driver = createPhaseDriver(resolved.endpoint, ctx.platform, resolved.adapter);
238
+ const driver = createPhaseDriver(resolved.endpoint, ctx.platform, resolved.outbound);
219
239
  await driver.start(ctx, phase, phaseConfig);
220
240
  }
221
241
  async stop(ctx, phase) {
222
- const resolved = this.access.resolve(ctx.platform, ctx.endpointId);
242
+ const resolved = this.access.resolve(ctx.platform, ctx.endpointKey);
223
243
  if (!resolved?.endpoint.$activityFeedback)
224
244
  return;
225
- const driver = createPhaseDriver(resolved.endpoint, ctx.platform, resolved.adapter);
245
+ const driver = createPhaseDriver(resolved.endpoint, ctx.platform, resolved.outbound);
226
246
  await driver.stop(ctx, phase);
227
247
  }
228
- async updateThinkingText(ctx, text) {
229
- const resolved = this.access.resolve(ctx.platform, ctx.endpointId);
248
+ async updateText(ctx, phase, text) {
249
+ const resolved = this.access.resolve(ctx.platform, ctx.endpointKey);
230
250
  if (!resolved)
231
251
  return;
232
- const driver = createPhaseDriver(resolved.endpoint, ctx.platform, resolved.adapter);
233
- await driver.updateThinkingText(ctx, text);
252
+ const driver = createPhaseDriver(resolved.endpoint, ctx.platform, resolved.outbound);
253
+ const manager = resolved.endpoint.$activityFeedback;
254
+ if (!manager || !isGenericActivityFeedbackManager(manager)) {
255
+ if (phase === 'thinking')
256
+ await driver.updateThinkingText(ctx, text);
257
+ return;
258
+ }
259
+ const indicator = manager.getActiveIndicator(phase, ctx.options);
260
+ if (indicator?.update)
261
+ await indicator.update(text);
262
+ }
263
+ async updateThinkingText(ctx, text) {
264
+ await this.updateText(ctx, 'thinking', text);
234
265
  }
235
266
  }
236
267
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -3,10 +3,10 @@
3
3
  *
4
4
  * Pure module exports. Plugin Runtime entry is `plugin.ts`.
5
5
  */
6
- export { bindActivityFeedbackToAIEvents, bindActivityFeedbackToAIEventBus, createActivityFeedbackAIEventHandlers, createActivityFeedbackOrchestrator, createActivityFeedbackOrchestratorFromPlugin, createActivityFeedbackOrchestratorForRuntime, mountActivityFeedbackService, } from './ai-event-binder.js';
6
+ export { bindActivityFeedbackToAIEventBus, createActivityFeedbackAIEventHandlers, createActivityFeedbackOrchestrator, createActivityFeedbackOrchestratorForRuntime, } from './ai-event-binder.js';
7
7
  export { ActivityFeedbackOrchestrator } from './orchestrator.js';
8
8
  export { ActivityFeedbackPolicy } from './policy.js';
9
- export { loadActivityFeedbackServiceConfig, resolveActivityFeedbackForTarget, type ActivityFeedbackServiceConfig, } from './config.js';
9
+ export { loadActivityFeedbackServiceConfig, type ActivityFeedbackServiceConfig, } from './config.js';
10
10
  export type { ActivityFeedbackEndpointAccess } from './executor.js';
11
- export { createNoopEndpointAccess, createOutboundEndpointAccess, createRootEndpointAccess, } from './executor.js';
11
+ export { createNoopEndpointAccess, createOutboundEndpointAccess, } from './executor.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,4CAA4C,EAC5C,4CAA4C,EAC5C,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,iCAAiC,EACjC,gCAAgC,EAChC,KAAK,6BAA6B,GACnC,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,4CAA4C,GAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,iCAAiC,EACjC,KAAK,6BAA6B,GACnC,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,eAAe,CAAC"}
package/lib/index.js CHANGED
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Pure module exports. Plugin Runtime entry is `plugin.ts`.
5
5
  */
6
- export { bindActivityFeedbackToAIEvents, bindActivityFeedbackToAIEventBus, createActivityFeedbackAIEventHandlers, createActivityFeedbackOrchestrator, createActivityFeedbackOrchestratorFromPlugin, createActivityFeedbackOrchestratorForRuntime, mountActivityFeedbackService, } from './ai-event-binder.js';
6
+ export { bindActivityFeedbackToAIEventBus, createActivityFeedbackAIEventHandlers, createActivityFeedbackOrchestrator, createActivityFeedbackOrchestratorForRuntime, } from './ai-event-binder.js';
7
7
  export { ActivityFeedbackOrchestrator } from './orchestrator.js';
8
8
  export { ActivityFeedbackPolicy } from './policy.js';
9
- export { loadActivityFeedbackServiceConfig, resolveActivityFeedbackForTarget, } from './config.js';
10
- export { createNoopEndpointAccess, createOutboundEndpointAccess, createRootEndpointAccess, } from './executor.js';
9
+ export { loadActivityFeedbackServiceConfig, } from './config.js';
10
+ export { createNoopEndpointAccess, createOutboundEndpointAccess, } from './executor.js';
11
11
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,4CAA4C,EAC5C,4CAA4C,EAC5C,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,iCAAiC,EACjC,gCAAgC,GAEjC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,gCAAgC,EAChC,qCAAqC,EACrC,kCAAkC,EAClC,4CAA4C,GAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,iCAAiC,GAElC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,eAAe,CAAC"}
@@ -9,10 +9,18 @@ export declare class ActivityFeedbackOrchestrator {
9
9
  private readonly policy;
10
10
  private readonly executor;
11
11
  private readonly log;
12
+ private readonly active;
13
+ private readonly transient;
14
+ private readonly pendingCleanup;
12
15
  constructor(policy: ActivityFeedbackPolicy, executor: ActivityFeedbackExecutor, log: Logger);
13
16
  startPhase(payload: AIEventPayload, phase: ActivityFeedbackPhase, reason: string): Promise<void>;
14
17
  stopPhase(payload: AIEventPayload, phase: ActivityFeedbackPhase, reason: string): Promise<void>;
15
18
  updateThinkingText(payload: AIEventPayload, text: string): Promise<void>;
19
+ updatePhaseText(payload: AIEventPayload, phase: ActivityFeedbackPhase, text: string): Promise<void>;
20
+ showTransientPhase(payload: AIEventPayload, phase: ActivityFeedbackPhase, reason: string): Promise<void>;
21
+ dispose(): Promise<void>;
22
+ private phaseKey;
23
+ private clearTransient;
16
24
  }
17
25
  export {};
18
26
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,CAAC;AAErH,qBAAa,4BAA4B;IAErC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,EAAE,wBAAwB,EAClC,GAAG,EAAE,MAAM;IAGxB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhG,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/F,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAU/E"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,CAAC;AAErH,qBAAa,4BAA4B;IAarC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAdtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGlB;IACL,OAAO,CAAC,QAAQ,CAAC,SAAS,CAIrB;IACL,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;gBAGxC,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,EAAE,wBAAwB,EAClC,GAAG,EAAE,MAAM;IAGxB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChG,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/F,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,eAAe,CACnB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,qBAAqB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAWV,kBAAkB,CACtB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAyBV,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,cAAc;CAMvB"}
@@ -1,8 +1,11 @@
1
- import { toActivityFeedbackEventContext, isActivityFeedbackEnabled, } from '@zhin.js/agent';
1
+ import { toActivityFeedbackEventContext, isActivityFeedbackEnabled, applySubagentActivityPrefixToConfig, withSubagentActivityPrefix, } from '@zhin.js/agent';
2
2
  export class ActivityFeedbackOrchestrator {
3
3
  policy;
4
4
  executor;
5
5
  log;
6
+ active = new Map();
7
+ transient = new Map();
8
+ pendingCleanup = new Set();
6
9
  constructor(policy, executor, log) {
7
10
  this.policy = policy;
8
11
  this.executor = executor;
@@ -10,17 +13,28 @@ export class ActivityFeedbackOrchestrator {
10
13
  }
11
14
  async startPhase(payload, phase, reason) {
12
15
  const gatePhase = phase;
13
- if (!isActivityFeedbackEnabled(payload, gatePhase))
16
+ if (!isActivityFeedbackEnabled(payload, gatePhase)) {
17
+ this.log.debug(`[ActivityFeedback] skip ${phase} (${reason}): gate closed`
18
+ + ` (eligible=${String(payload.hookContext?.activityFeedbackEligible)})`);
14
19
  return;
20
+ }
15
21
  const ctx = toActivityFeedbackEventContext(payload);
16
- if (!ctx)
22
+ if (!ctx) {
23
+ this.log.debug(`[ActivityFeedback] skip ${phase} (${reason}): unresolvable context`
24
+ + ` (platform=${String(payload.platform)} endpoint=${String(payload.endpointKey)})`);
17
25
  return;
26
+ }
18
27
  try {
19
- const resolution = this.policy.resolvePhase(ctx.platform, ctx.endpointId, phase, ctx.sceneType);
20
- if (resolution.kind !== 'active')
28
+ const resolution = this.policy.resolvePhase(ctx.platform, ctx.endpointKey, phase, ctx.sceneType);
29
+ if (resolution.kind !== 'active') {
30
+ this.log.debug(`[ActivityFeedback] skip ${phase} (${reason}): policy=${resolution.kind}`
31
+ + ` (${ctx.platform}:${ctx.endpointKey} ${ctx.sceneType})`);
21
32
  return;
33
+ }
34
+ const config = applySubagentActivityPrefixToConfig(resolution.config, payload);
22
35
  this.log.debug(`[ActivityFeedback] start ${phase} (${reason}) session=${ctx.sessionId}`);
23
- await this.executor.start(ctx, phase, resolution.config);
36
+ await this.executor.start(ctx, phase, config);
37
+ this.active.set(this.phaseKey(ctx, phase), { ctx, phase });
24
38
  }
25
39
  catch (error) {
26
40
  this.log.error(`[ActivityFeedback] start ${phase} failed (${reason}):`, error);
@@ -30,6 +44,9 @@ export class ActivityFeedbackOrchestrator {
30
44
  const ctx = toActivityFeedbackEventContext(payload);
31
45
  if (!ctx)
32
46
  return;
47
+ const key = this.phaseKey(ctx, phase);
48
+ this.clearTransient(key);
49
+ this.active.delete(key);
33
50
  try {
34
51
  this.log.debug(`[ActivityFeedback] stop ${phase} (${reason}) session=${ctx.sessionId}`);
35
52
  await this.executor.stop(ctx, phase);
@@ -39,15 +56,66 @@ export class ActivityFeedbackOrchestrator {
39
56
  }
40
57
  }
41
58
  async updateThinkingText(payload, text) {
59
+ await this.updatePhaseText(payload, 'thinking', text);
60
+ }
61
+ async updatePhaseText(payload, phase, text) {
42
62
  const ctx = toActivityFeedbackEventContext(payload);
43
63
  if (!ctx || !text)
44
64
  return;
45
65
  try {
46
- await this.executor.updateThinkingText(ctx, text);
66
+ await this.executor.updateText(ctx, phase, withSubagentActivityPrefix(text, payload));
47
67
  }
48
68
  catch (error) {
49
- this.log.error('[ActivityFeedback] thinking update failed:', error);
69
+ this.log.error(`[ActivityFeedback] ${phase} update failed:`, error);
50
70
  }
51
71
  }
72
+ async showTransientPhase(payload, phase, reason) {
73
+ await this.startPhase(payload, phase, reason);
74
+ const ctx = toActivityFeedbackEventContext(payload);
75
+ if (!ctx)
76
+ return;
77
+ const resolution = this.policy.resolvePhase(ctx.platform, ctx.endpointKey, phase, ctx.sceneType);
78
+ if (resolution.kind !== 'active')
79
+ return;
80
+ const delay = resolution.config.removeDelay ?? 3_000;
81
+ const key = this.phaseKey(ctx, phase);
82
+ this.clearTransient(key);
83
+ const timer = setTimeout(() => {
84
+ this.transient.delete(key);
85
+ this.active.delete(key);
86
+ const cleanup = this.executor.stop(ctx, phase)
87
+ .catch((error) => {
88
+ this.log.error(`[ActivityFeedback] transient ${phase} cleanup failed:`, error);
89
+ })
90
+ .finally(() => {
91
+ this.pendingCleanup.delete(cleanup);
92
+ });
93
+ this.pendingCleanup.add(cleanup);
94
+ }, Math.max(0, delay));
95
+ timer.unref?.();
96
+ this.transient.set(key, { timer, ctx, phase });
97
+ }
98
+ async dispose() {
99
+ const pending = [...this.active.values()];
100
+ const timers = [...this.transient.values()];
101
+ this.active.clear();
102
+ this.transient.clear();
103
+ for (const item of timers)
104
+ clearTimeout(item.timer);
105
+ await Promise.allSettled([
106
+ ...pending.map((item) => this.executor.stop(item.ctx, item.phase)),
107
+ ...this.pendingCleanup,
108
+ ]);
109
+ }
110
+ phaseKey(ctx, phase) {
111
+ return JSON.stringify([ctx.platform, ctx.endpointKey, ctx.sessionId, phase, ctx.messageId]);
112
+ }
113
+ clearTransient(key) {
114
+ const current = this.transient.get(key);
115
+ if (!current)
116
+ return;
117
+ clearTimeout(current.timer);
118
+ this.transient.delete(key);
119
+ }
52
120
  }
53
121
  //# sourceMappingURL=orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAG1B,MAAM,gBAAgB,CAAC;AAMxB,MAAM,OAAO,4BAA4B;IAEpB;IACA;IACA;IAHnB,YACmB,MAA8B,EAC9B,QAAkC,EAClC,GAAW;QAFX,WAAM,GAAN,MAAM,CAAwB;QAC9B,aAAQ,GAAR,QAAQ,CAA0B;QAClC,QAAG,GAAH,GAAG,CAAQ;IAC3B,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,OAAuB,EAAE,KAA4B,EAAE,MAAc;QACpF,MAAM,SAAS,GAAG,KAA2D,CAAC;QAC9E,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC;YAAE,OAAO;QAC3D,MAAM,GAAG,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAChG,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAEzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,KAAK,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACzF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,YAAY,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAuB,EAAE,KAA4B,EAAE,MAAc;QACnF,MAAM,GAAG,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,KAAK,KAAK,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACxF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,KAAK,YAAY,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAuB,EAAE,IAAY;QAC5D,MAAM,GAAG,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,OAAO;QAE1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
package/lib/policy.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type ActivityFeedbackPhase, type ActivitySceneType, type ResolvedActivityFeedbackPhaseConfig } from '@zhin.js/agent';
2
2
  import { type ActivityFeedbackServiceConfig } from './config.js';
3
3
  export type { ActivityFeedbackServiceConfig } from './config.js';
4
- export { loadActivityFeedbackServiceConfig, resolveActivityFeedbackForTarget } from './config.js';
4
+ export { loadActivityFeedbackServiceConfig } from './config.js';
5
5
  export type PhaseResolution = {
6
6
  kind: 'disabled';
7
7
  } | {
@@ -13,6 +13,6 @@ export type PhaseResolution = {
13
13
  export declare class ActivityFeedbackPolicy {
14
14
  private readonly service;
15
15
  constructor(service: ActivityFeedbackServiceConfig);
16
- resolvePhase(platform: string, endpointId: string, phase: ActivityFeedbackPhase, sceneType: ActivitySceneType): PhaseResolution;
16
+ resolvePhase(platform: string, endpointKey: string, phase: ActivityFeedbackPhase, sceneType: ActivitySceneType): PhaseResolution;
17
17
  }
18
18
  //# sourceMappingURL=policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mCAAmC,EACzC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,6BAA6B,EAGnC,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAElG,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,mCAAmC,CAAA;CAAE,CAAC;AAEpE,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,6BAA6B;IAEnE,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,iBAAiB,GAC3B,eAAe;CAsBnB"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mCAAmC,EACzC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,6BAA6B,EAGnC,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,mCAAmC,CAAA;CAAE,CAAC;AAEpE,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,6BAA6B;IAEnE,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,iBAAiB,GAC3B,eAAe;CAuBnB"}
package/lib/policy.js CHANGED
@@ -1,16 +1,16 @@
1
1
  import { resolveActivityFeedbackPhaseConfig, } from '@zhin.js/agent';
2
2
  import { mergeActivityFeedbackLayers, } from './config.js';
3
- export { loadActivityFeedbackServiceConfig, resolveActivityFeedbackForTarget } from './config.js';
3
+ export { loadActivityFeedbackServiceConfig } from './config.js';
4
4
  export class ActivityFeedbackPolicy {
5
5
  service;
6
6
  constructor(service) {
7
7
  this.service = service;
8
8
  }
9
- resolvePhase(platform, endpointId, phase, sceneType) {
9
+ resolvePhase(platform, endpointKey, phase, sceneType) {
10
10
  if (this.service.enabled === false) {
11
11
  return { kind: 'disabled' };
12
12
  }
13
- const policy = mergeActivityFeedbackLayers(this.service.defaults, this.service.platforms?.[platform], this.service.endpoints?.[`${platform}:${endpointId}`]);
13
+ const policy = mergeActivityFeedbackLayers(this.service.defaults, this.service.platforms?.[platform], this.service.endpoints?.[`${platform}:${endpointKey}`], schedulePhaseLayer(this.service, phase));
14
14
  if (policy?.enabled === false) {
15
15
  return { kind: 'disabled' };
16
16
  }
@@ -21,4 +21,15 @@ export class ActivityFeedbackPolicy {
21
21
  return { kind: 'active', config };
22
22
  }
23
23
  }
24
+ function schedulePhaseLayer(service, phase) {
25
+ const scheduleKey = phase === 'schedule_start'
26
+ ? 'start'
27
+ : phase === 'schedule_finish'
28
+ ? 'finish'
29
+ : phase === 'schedule_error'
30
+ ? 'error'
31
+ : undefined;
32
+ const scenes = scheduleKey ? service.schedule?.phases?.[scheduleKey] : undefined;
33
+ return scenes ? { phases: { [phase]: scenes } } : undefined;
34
+ }
24
35
  //# sourceMappingURL=policy.js.map
package/lib/policy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,GAInC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,2BAA2B,GAE5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iCAAiC,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAOlG,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;IAAG,CAAC;IAEvE,YAAY,CACV,QAAgB,EAChB,UAAkB,EAClB,KAA4B,EAC5B,SAA4B;QAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,2BAA2B,CACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAClC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CACtD,CAAC;QAEF,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,kCAAkC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,GAInC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,2BAA2B,GAE5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAOhE,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;IAAG,CAAC;IAEvE,YAAY,CACV,QAAgB,EAChB,WAAmB,EACnB,KAA4B,EAC5B,SAA4B;QAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,2BAA2B,CACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAClC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC,EACtD,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CACxC,CAAC;QAEF,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,kCAAkC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;CACF;AAED,SAAS,kBAAkB,CACzB,OAAsC,EACtC,KAA4B;IAE5B,MAAM,WAAW,GAAG,KAAK,KAAK,gBAAgB;QAC5C,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK,KAAK,iBAAiB;YAC3B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,KAAK,KAAK,gBAAgB;gBAC1B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC"}