@zhin.js/agent 1.0.9 → 1.1.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 (196) hide show
  1. package/README.md +46 -11
  2. package/lib/aop/index.d.ts +0 -2
  3. package/lib/aop/index.d.ts.map +1 -1
  4. package/lib/aop/index.js +0 -1
  5. package/lib/aop/index.js.map +1 -1
  6. package/lib/builtin/analyze-media-tool.d.ts.map +1 -1
  7. package/lib/builtin/analyze-media-tool.js +9 -8
  8. package/lib/builtin/analyze-media-tool.js.map +1 -1
  9. package/lib/collaboration/{inbound-turn-pipeline.d.ts → inbound-turn-compat.d.ts} +10 -6
  10. package/lib/collaboration/inbound-turn-compat.d.ts.map +1 -0
  11. package/lib/collaboration/inbound-turn-compat.js +30 -0
  12. package/lib/collaboration/inbound-turn-compat.js.map +1 -0
  13. package/lib/collaboration/index.d.ts +2 -5
  14. package/lib/collaboration/index.d.ts.map +1 -1
  15. package/lib/collaboration/index.js +1 -4
  16. package/lib/collaboration/index.js.map +1 -1
  17. package/lib/config/agent-interfaces.d.ts +3 -3
  18. package/lib/config/agent-interfaces.d.ts.map +1 -1
  19. package/lib/config/validate-ai-config.js +1 -1
  20. package/lib/config/validate-ai-config.js.map +1 -1
  21. package/lib/core/agent-core-run.d.ts +13 -0
  22. package/lib/core/agent-core-run.d.ts.map +1 -1
  23. package/lib/core/agent-core-run.js +38 -2
  24. package/lib/core/agent-core-run.js.map +1 -1
  25. package/lib/core/agent-loop-standalone.d.ts +3 -2
  26. package/lib/core/agent-loop-standalone.d.ts.map +1 -1
  27. package/lib/core/agent-loop-standalone.js +14 -7
  28. package/lib/core/agent-loop-standalone.js.map +1 -1
  29. package/lib/event/publish-agent-stream.d.ts +2 -2
  30. package/lib/event/publish-agent-stream.d.ts.map +1 -1
  31. package/lib/event/publish-agent-stream.js +2 -2
  32. package/lib/event/publish-agent-stream.js.map +1 -1
  33. package/lib/event/turn-event.d.ts +9 -1
  34. package/lib/event/turn-event.d.ts.map +1 -1
  35. package/lib/event/turn-event.js +3 -1
  36. package/lib/event/turn-event.js.map +1 -1
  37. package/lib/event/turn-to-agent-stream.d.ts +2 -1
  38. package/lib/event/turn-to-agent-stream.d.ts.map +1 -1
  39. package/lib/event/turn-to-agent-stream.js +29 -15
  40. package/lib/event/turn-to-agent-stream.js.map +1 -1
  41. package/lib/index.d.ts +4 -1
  42. package/lib/index.d.ts.map +1 -1
  43. package/lib/index.js +2 -1
  44. package/lib/index.js.map +1 -1
  45. package/lib/init/output-renderer.d.ts +3 -3
  46. package/lib/init/output-renderer.d.ts.map +1 -1
  47. package/lib/init/output-renderer.js +1 -1
  48. package/lib/init/output-renderer.js.map +1 -1
  49. package/lib/init.d.ts +0 -1
  50. package/lib/init.d.ts.map +1 -1
  51. package/lib/init.js +0 -3
  52. package/lib/init.js.map +1 -1
  53. package/lib/internal/agent-host.d.ts +3 -0
  54. package/lib/internal/agent-host.d.ts.map +1 -1
  55. package/lib/internal/host-types.d.ts +1 -0
  56. package/lib/internal/host-types.d.ts.map +1 -1
  57. package/lib/media/inbound-refs.d.ts +9 -0
  58. package/lib/media/inbound-refs.d.ts.map +1 -0
  59. package/lib/media/inbound-refs.js +18 -0
  60. package/lib/media/inbound-refs.js.map +1 -0
  61. package/lib/media/index.d.ts +1 -0
  62. package/lib/media/index.d.ts.map +1 -1
  63. package/lib/media/index.js +1 -0
  64. package/lib/media/index.js.map +1 -1
  65. package/lib/media/media-normalize.d.ts +15 -4
  66. package/lib/media/media-normalize.d.ts.map +1 -1
  67. package/lib/media/media-normalize.js +92 -88
  68. package/lib/media/media-normalize.js.map +1 -1
  69. package/lib/media/media-publisher.d.ts +3 -3
  70. package/lib/media/media-publisher.d.ts.map +1 -1
  71. package/lib/media/media-publisher.js +25 -27
  72. package/lib/media/media-publisher.js.map +1 -1
  73. package/lib/media/media-router.d.ts +5 -3
  74. package/lib/media/media-router.d.ts.map +1 -1
  75. package/lib/media/media-router.js +14 -5
  76. package/lib/media/media-router.js.map +1 -1
  77. package/lib/media/media-types.d.ts +8 -2
  78. package/lib/media/media-types.d.ts.map +1 -1
  79. package/lib/media/media-types.js.map +1 -1
  80. package/lib/media/subagent-inbound.d.ts +5 -4
  81. package/lib/media/subagent-inbound.d.ts.map +1 -1
  82. package/lib/media/subagent-inbound.js +10 -5
  83. package/lib/media/subagent-inbound.js.map +1 -1
  84. package/lib/orchestrator/bootstrap-executors.d.ts.map +1 -1
  85. package/lib/orchestrator/bootstrap-executors.js +5 -5
  86. package/lib/orchestrator/bootstrap-executors.js.map +1 -1
  87. package/lib/routing/match-rules.d.ts +4 -0
  88. package/lib/routing/match-rules.d.ts.map +1 -0
  89. package/lib/routing/match-rules.js +29 -0
  90. package/lib/routing/match-rules.js.map +1 -0
  91. package/lib/routing/route-matcher.d.ts +1 -2
  92. package/lib/routing/route-matcher.d.ts.map +1 -1
  93. package/lib/routing/route-matcher.js +2 -58
  94. package/lib/routing/route-matcher.js.map +1 -1
  95. package/lib/service.d.ts +4 -3
  96. package/lib/service.d.ts.map +1 -1
  97. package/lib/service.js.map +1 -1
  98. package/lib/session/resolve-session-interaction-port.d.ts +2 -2
  99. package/lib/session/resolve-session-interaction-port.d.ts.map +1 -1
  100. package/lib/session/resolve-session-interaction-port.js +5 -1
  101. package/lib/session/resolve-session-interaction-port.js.map +1 -1
  102. package/lib/session/session-interaction-port.d.ts +7 -2
  103. package/lib/session/session-interaction-port.d.ts.map +1 -1
  104. package/lib/session/session-interaction-port.js +3 -1
  105. package/lib/session/session-interaction-port.js.map +1 -1
  106. package/lib/subagent/subagent-runtime.d.ts +4 -3
  107. package/lib/subagent/subagent-runtime.d.ts.map +1 -1
  108. package/lib/subagent/subagent-runtime.js +8 -2
  109. package/lib/subagent/subagent-runtime.js.map +1 -1
  110. package/lib/tool/tool-approval-gate.d.ts +9 -4
  111. package/lib/tool/tool-approval-gate.d.ts.map +1 -1
  112. package/lib/tool/tool-approval-gate.js +19 -8
  113. package/lib/tool/tool-approval-gate.js.map +1 -1
  114. package/lib/turn/agent-turn-context.d.ts +13 -0
  115. package/lib/turn/agent-turn-context.d.ts.map +1 -0
  116. package/lib/turn/agent-turn-context.js +13 -0
  117. package/lib/turn/agent-turn-context.js.map +1 -0
  118. package/lib/turn/inbound-media.d.ts +26 -0
  119. package/lib/turn/inbound-media.d.ts.map +1 -0
  120. package/lib/turn/inbound-media.js +128 -0
  121. package/lib/turn/inbound-media.js.map +1 -0
  122. package/lib/turn/inbound-queue-runtime.d.ts +1 -0
  123. package/lib/turn/inbound-queue-runtime.d.ts.map +1 -1
  124. package/lib/turn/inbound-queue-runtime.js +1 -0
  125. package/lib/turn/inbound-queue-runtime.js.map +1 -1
  126. package/lib/turn/inbound-turn-queue.d.ts +5 -0
  127. package/lib/turn/inbound-turn-queue.d.ts.map +1 -1
  128. package/lib/turn/inbound-turn-queue.js +46 -1
  129. package/lib/turn/inbound-turn-queue.js.map +1 -1
  130. package/lib/turn/index.d.ts +4 -5
  131. package/lib/turn/index.d.ts.map +1 -1
  132. package/lib/turn/index.js +4 -5
  133. package/lib/turn/index.js.map +1 -1
  134. package/lib/turn/process-stream.d.ts.map +1 -1
  135. package/lib/turn/process-stream.js +21 -13
  136. package/lib/turn/process-stream.js.map +1 -1
  137. package/lib/turn/prompt-api.d.ts +2 -2
  138. package/lib/turn/prompt-api.d.ts.map +1 -1
  139. package/lib/turn/prompt-api.js +1 -1
  140. package/lib/turn/prompt-api.js.map +1 -1
  141. package/lib/turn/prompt-controller.d.ts +7 -0
  142. package/lib/turn/prompt-controller.d.ts.map +1 -1
  143. package/lib/turn/prompt-controller.js +52 -7
  144. package/lib/turn/prompt-controller.js.map +1 -1
  145. package/lib/turn/prompt-input.d.ts +2 -2
  146. package/lib/turn/prompt-input.d.ts.map +1 -1
  147. package/lib/turn/prompt-input.js +2 -2
  148. package/lib/turn/prompt-input.js.map +1 -1
  149. package/lib/turn/turn-context-bridge.d.ts +6 -1
  150. package/lib/turn/turn-context-bridge.d.ts.map +1 -1
  151. package/lib/turn/turn-context-bridge.js +8 -5
  152. package/lib/turn/turn-context-bridge.js.map +1 -1
  153. package/lib/turn/turn-pipeline.d.ts +8 -2
  154. package/lib/turn/turn-pipeline.d.ts.map +1 -1
  155. package/lib/turn/turn-pipeline.js +13 -101
  156. package/lib/turn/turn-pipeline.js.map +1 -1
  157. package/lib/turn/turn-terminal.d.ts +14 -0
  158. package/lib/turn/turn-terminal.d.ts.map +1 -0
  159. package/lib/turn/turn-terminal.js +44 -0
  160. package/lib/turn/turn-terminal.js.map +1 -0
  161. package/lib/zhin-agent/index.d.ts +30 -5
  162. package/lib/zhin-agent/index.d.ts.map +1 -1
  163. package/lib/zhin-agent/index.js +61 -9
  164. package/lib/zhin-agent/index.js.map +1 -1
  165. package/package.json +8 -8
  166. package/lib/collaboration/inbound-turn-enrich.d.ts +0 -25
  167. package/lib/collaboration/inbound-turn-enrich.d.ts.map +0 -1
  168. package/lib/collaboration/inbound-turn-enrich.js +0 -51
  169. package/lib/collaboration/inbound-turn-enrich.js.map +0 -1
  170. package/lib/collaboration/inbound-turn-execute.d.ts +0 -33
  171. package/lib/collaboration/inbound-turn-execute.d.ts.map +0 -1
  172. package/lib/collaboration/inbound-turn-execute.js +0 -73
  173. package/lib/collaboration/inbound-turn-execute.js.map +0 -1
  174. package/lib/collaboration/inbound-turn-outbound-stage.d.ts +0 -27
  175. package/lib/collaboration/inbound-turn-outbound-stage.d.ts.map +0 -1
  176. package/lib/collaboration/inbound-turn-outbound-stage.js +0 -74
  177. package/lib/collaboration/inbound-turn-outbound-stage.js.map +0 -1
  178. package/lib/collaboration/inbound-turn-pipeline.d.ts.map +0 -1
  179. package/lib/collaboration/inbound-turn-pipeline.js +0 -202
  180. package/lib/collaboration/inbound-turn-pipeline.js.map +0 -1
  181. package/lib/collaboration/inbound-turn-route.d.ts +0 -42
  182. package/lib/collaboration/inbound-turn-route.d.ts.map +0 -1
  183. package/lib/collaboration/inbound-turn-route.js +0 -107
  184. package/lib/collaboration/inbound-turn-route.js.map +0 -1
  185. package/lib/init/message-media.d.ts +0 -11
  186. package/lib/init/message-media.d.ts.map +0 -1
  187. package/lib/init/message-media.js +0 -107
  188. package/lib/init/message-media.js.map +0 -1
  189. package/lib/init/register-ai-trigger.d.ts +0 -7
  190. package/lib/init/register-ai-trigger.d.ts.map +0 -1
  191. package/lib/init/register-ai-trigger.js +0 -72
  192. package/lib/init/register-ai-trigger.js.map +0 -1
  193. package/lib/turn/multimodal-message.d.ts +0 -9
  194. package/lib/turn/multimodal-message.d.ts.map +0 -1
  195. package/lib/turn/multimodal-message.js +0 -72
  196. package/lib/turn/multimodal-message.js.map +0 -1
@@ -9,6 +9,15 @@ export class TurnSupersededError extends Error {
9
9
  this.sessionKey = sessionKey;
10
10
  }
11
11
  }
12
+ /** A caller cancelled a turn explicitly (for example, an IM trigger timeout). */
13
+ export class TurnCancelledError extends Error {
14
+ sessionKey;
15
+ constructor(sessionKey, reason) {
16
+ super(`Turn cancelled on session ${sessionKey}`, reason === undefined ? undefined : { cause: reason });
17
+ this.name = 'TurnCancelledError';
18
+ this.sessionKey = sessionKey;
19
+ }
20
+ }
12
21
  export class PromptController {
13
22
  steeringMode;
14
23
  followUpMode;
@@ -61,7 +70,7 @@ export class PromptController {
61
70
  for (const turn of this.activeTurns.values()) {
62
71
  if (sessionKey && turn.sessionKey !== sessionKey)
63
72
  continue;
64
- turn.abortController.abort();
73
+ turn.abortController.abort(new TurnCancelledError(turn.sessionKey));
65
74
  }
66
75
  }
67
76
  clearSteeringQueue(sessionKey) {
@@ -96,7 +105,11 @@ export class PromptController {
96
105
  }
97
106
  /** 同 session 串行:新 turn 开始前 abort 仍在执行的旧 turn,避免过期回复污染群上下文。 */
98
107
  schedule(request) {
99
- this.abort(request.sessionKey);
108
+ for (const turn of this.activeTurns.values()) {
109
+ if (turn.sessionKey !== request.sessionKey)
110
+ continue;
111
+ turn.abortController.abort(new TurnSupersededError(request.sessionKey));
112
+ }
100
113
  return this.runTurn(request);
101
114
  }
102
115
  resolveLatestTurn(sessionKey) {
@@ -136,6 +149,13 @@ export class PromptController {
136
149
  const turnId = randomUUID();
137
150
  const abortController = new AbortController();
138
151
  const signal = abortController.signal;
152
+ const abortFromCaller = () => {
153
+ abortController.abort(request.signal?.reason ?? new TurnCancelledError(request.sessionKey));
154
+ };
155
+ if (request.signal?.aborted)
156
+ abortFromCaller();
157
+ else
158
+ request.signal?.addEventListener('abort', abortFromCaller, { once: true });
139
159
  const queue = new SessionMessageQueue(this.steeringMode, this.followUpMode);
140
160
  const activeTurn = {
141
161
  turnId,
@@ -148,19 +168,31 @@ export class PromptController {
148
168
  this.promoteLatestTurn(request.sessionKey, turnId);
149
169
  let lastResult = null;
150
170
  try {
171
+ throwIfAborted(signal, request.sessionKey);
151
172
  await this.emitEvent({ type: 'agent_start' }, signal);
173
+ throwIfAborted(signal, request.sessionKey);
152
174
  const hooks = {
153
175
  getSteeringMessages: async () => queue.drainSteering(),
154
176
  getFollowUpMessages: async () => queue.drainFollowUp(),
155
177
  };
156
- lastResult = await request.execute(request.userMessages, hooks, signal, turnId);
178
+ try {
179
+ lastResult = await request.execute(request.userMessages, hooks, signal, turnId);
180
+ }
181
+ catch (error) {
182
+ throwIfAborted(signal, request.sessionKey);
183
+ throw error;
184
+ }
157
185
  while (queue.hasFollowUp() && !signal.aborted) {
158
186
  const batch = queue.drainFollowUp();
159
- lastResult = await request.execute(batch, hooks, signal, turnId);
160
- }
161
- if (signal.aborted) {
162
- throw new TurnSupersededError(request.sessionKey);
187
+ try {
188
+ lastResult = await request.execute(batch, hooks, signal, turnId);
189
+ }
190
+ catch (error) {
191
+ throwIfAborted(signal, request.sessionKey);
192
+ throw error;
193
+ }
163
194
  }
195
+ throwIfAborted(signal, request.sessionKey);
164
196
  await this.emitEvent({ type: 'agent_end', messages: request.userMessages }, signal);
165
197
  if (!lastResult) {
166
198
  throw new Error('Prompt turn produced no result');
@@ -169,6 +201,7 @@ export class PromptController {
169
201
  return lastResult;
170
202
  }
171
203
  finally {
204
+ request.signal?.removeEventListener('abort', abortFromCaller);
172
205
  this.activeTurns.delete(turnId);
173
206
  this.demoteLatestTurn(request.sessionKey, turnId);
174
207
  this.notifyIdle();
@@ -187,4 +220,16 @@ export class PromptController {
187
220
  this.lastResult = null;
188
221
  }
189
222
  }
223
+ function throwIfAborted(signal, sessionKey) {
224
+ if (!signal.aborted)
225
+ return;
226
+ throw turnAbortReason(sessionKey, signal.reason);
227
+ }
228
+ function turnAbortReason(sessionKey, reason) {
229
+ // AbortController.abort() without a reason produces DOMException AbortError.
230
+ // Normalize it, but retain deliberate errors such as TriggerTimeoutError.
231
+ if (reason instanceof Error && reason.name !== 'AbortError')
232
+ return reason;
233
+ return new TurnCancelledError(sessionKey, reason);
234
+ }
190
235
  //# sourceMappingURL=prompt-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-controller.js","sourceRoot":"","sources":["../../src/turn/prompt-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-controller.js","sourceRoot":"","sources":["../../src/turn/prompt-controller.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type AgentMessage, type ImageContent } from '@zhin.js/ai';
2
- export declare function normalizePromptMessages(input: string | AgentMessage | AgentMessage[], images?: ImageContent[]): AgentMessage[];
1
+ import { type AgentMessage, type MediaContentBlock } from '@zhin.js/ai';
2
+ export declare function normalizePromptMessages(input: string | AgentMessage | AgentMessage[], media?: MediaContentBlock[]): AgentMessage[];
3
3
  //# sourceMappingURL=prompt-input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-input.d.ts","sourceRoot":"","sources":["../../src/turn/prompt-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAqB,MAAM,aAAa,CAAC;AACtF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,EAAE,EAC7C,MAAM,CAAC,EAAE,YAAY,EAAE,GACtB,YAAY,EAAE,CAKhB"}
1
+ {"version":3,"file":"prompt-input.d.ts","sourceRoot":"","sources":["../../src/turn/prompt-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAC3F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,EAAE,EAC7C,KAAK,CAAC,EAAE,iBAAiB,EAAE,GAC1B,YAAY,EAAE,CAKhB"}
@@ -1,7 +1,7 @@
1
1
  import { createUserMessage } from '@zhin.js/ai';
2
- export function normalizePromptMessages(input, images) {
2
+ export function normalizePromptMessages(input, media) {
3
3
  if (typeof input === 'string') {
4
- return [createUserMessage(input, images)];
4
+ return [createUserMessage(input, media)];
5
5
  }
6
6
  return Array.isArray(input) ? input : [input];
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-input.js","sourceRoot":"","sources":["../../src/turn/prompt-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtF,MAAM,UAAU,uBAAuB,CACrC,KAA6C,EAC7C,MAAuB;IAEvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"prompt-input.js","sourceRoot":"","sources":["../../src/turn/prompt-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3F,MAAM,UAAU,uBAAuB,CACrC,KAA6C,EAC7C,KAA2B;IAE3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
@@ -5,9 +5,14 @@ export interface TurnContextBridgeState {
5
5
  pendingActivityFeedbackEligible?: boolean;
6
6
  alwaysSkillsBaseline: string;
7
7
  }
8
+ /** Explicit turn state used by concurrency-safe entry points. */
9
+ export interface TurnContextRunOptions {
10
+ readonly scheduleContext?: ScheduleTurnContext;
11
+ readonly activityFeedbackEligible?: boolean;
12
+ }
8
13
  export declare function initScheduleTurnContext(state: TurnContextBridgeState, ctx: ScheduleTurnContext): void;
9
14
  export declare function initInboundTurnContext(state: TurnContextBridgeState): void;
10
15
  export declare function getTurnActiveSkills(state: TurnContextBridgeState): string;
11
- export declare function runInTurnContext<T>(state: TurnContextBridgeState, config: Required<ZhinAgentConfig>, turnId: string, fn: () => Promise<T>): Promise<T>;
16
+ export declare function runInTurnContext<T>(state: TurnContextBridgeState, config: Required<ZhinAgentConfig>, turnId: string, fn: () => Promise<T>, options?: TurnContextRunOptions): Promise<T>;
12
17
  export declare function appendActiveSkills(fragment: string): void;
13
18
  //# sourceMappingURL=turn-context-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"turn-context-bridge.d.ts","sourceRoot":"","sources":["../../src/turn/turn-context-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAmG,MAAM,6BAA6B,CAAC;AAExK,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,MAAM,WAAW,sBAAsB;IACrC,0BAA0B,CAAC,EAAE,mBAAmB,CAAC;IACjD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAGrG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAG1E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAIzE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEzD"}
1
+ {"version":3,"file":"turn-context-bridge.d.ts","sourceRoot":"","sources":["../../src/turn/turn-context-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAmG,MAAM,6BAA6B,CAAC;AAExK,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,MAAM,WAAW,sBAAsB;IACrC,0BAA0B,CAAC,EAAE,mBAAmB,CAAC;IACjD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAC7C;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAGrG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAG1E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAIzE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEzD"}
@@ -14,12 +14,15 @@ export function getTurnActiveSkills(state) {
14
14
  return fromTurn;
15
15
  return state.alwaysSkillsBaseline;
16
16
  }
17
- export function runInTurnContext(state, config, turnId, fn) {
17
+ export function runInTurnContext(state, config, turnId, fn, options) {
18
18
  const tracker = new TurnTracker(config.subagentTurnWaitMs);
19
- const scheduleContext = state.pendingScheduleTurnContext;
20
- const activityFeedbackEligible = state.pendingActivityFeedbackEligible;
21
- state.pendingScheduleTurnContext = undefined;
22
- state.pendingActivityFeedbackEligible = undefined;
19
+ const scheduleContext = options?.scheduleContext ?? state.pendingScheduleTurnContext;
20
+ const activityFeedbackEligible = options?.activityFeedbackEligible
21
+ ?? state.pendingActivityFeedbackEligible;
22
+ if (options?.scheduleContext === undefined)
23
+ state.pendingScheduleTurnContext = undefined;
24
+ if (options?.activityFeedbackEligible === undefined)
25
+ state.pendingActivityFeedbackEligible = undefined;
23
26
  const init = {};
24
27
  if (scheduleContext)
25
28
  init.scheduleContext = scheduleContext;
@@ -1 +1 @@
1
- {"version":3,"file":"turn-context-bridge.js","sourceRoot":"","sources":["../../src/turn/turn-context-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,sBAAsB,EAAE,8BAA8B,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACxK,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,MAAM,UAAU,uBAAuB,CAAC,KAA6B,EAAE,GAAwB;IAC7F,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC;IACvC,KAAK,CAAC,+BAA+B,GAAG,KAAK,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA6B;IAClE,KAAK,CAAC,+BAA+B,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,0BAA0B,GAAG,SAAS,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA6B;IAC/D,MAAM,QAAQ,GAAG,8BAA8B,EAAE,CAAC;IAClD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,KAAK,CAAC,oBAAoB,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAA6B,EAC7B,MAAiC,EACjC,MAAc,EACd,EAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,KAAK,CAAC,0BAA0B,CAAC;IACzD,MAAM,wBAAwB,GAAG,KAAK,CAAC,+BAA+B,CAAC;IACvE,KAAK,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAC7C,KAAK,CAAC,+BAA+B,GAAG,SAAS,CAAC;IAClD,MAAM,IAAI,GAA0H,EAAE,CAAC;IACvI,IAAI,eAAe;QAAE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC5D,IAAI,wBAAwB;QAAE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACnE,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"turn-context-bridge.js","sourceRoot":"","sources":["../../src/turn/turn-context-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,sBAAsB,EAAE,8BAA8B,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACxK,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAchD,MAAM,UAAU,uBAAuB,CAAC,KAA6B,EAAE,GAAwB;IAC7F,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC;IACvC,KAAK,CAAC,+BAA+B,GAAG,KAAK,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA6B;IAClE,KAAK,CAAC,+BAA+B,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,0BAA0B,GAAG,SAAS,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA6B;IAC/D,MAAM,QAAQ,GAAG,8BAA8B,EAAE,CAAC;IAClD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,KAAK,CAAC,oBAAoB,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAA6B,EAC7B,MAAiC,EACjC,MAAc,EACd,EAAoB,EACpB,OAA+B;IAE/B,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,KAAK,CAAC,0BAA0B,CAAC;IACrF,MAAM,wBAAwB,GAAG,OAAO,EAAE,wBAAwB;WAC7D,KAAK,CAAC,+BAA+B,CAAC;IAC3C,IAAI,OAAO,EAAE,eAAe,KAAK,SAAS;QAAE,KAAK,CAAC,0BAA0B,GAAG,SAAS,CAAC;IACzF,IAAI,OAAO,EAAE,wBAAwB,KAAK,SAAS;QAAE,KAAK,CAAC,+BAA+B,GAAG,SAAS,CAAC;IACvG,MAAM,IAAI,GAA0H,EAAE,CAAC;IACvI,IAAI,eAAe;QAAE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC5D,IAAI,wBAAwB;QAAE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACnE,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
@@ -1,4 +1,5 @@
1
- import { type ContentPart } from '@zhin.js/ai';
1
+ import { type AgentRunJournal } from '@zhin.js/ai/agent-stream';
2
+ import { type MediaContentBlock } from '@zhin.js/ai';
2
3
  import type { TurnEvent } from '../event/turn-event.js';
3
4
  import type { ZhinAgentPrivate, OnChunkCallback, OutputElement, Tool } from '../internal/agent-host.js';
4
5
  import type { Message } from '@zhin.js/core';
@@ -8,7 +9,12 @@ export interface ProcessTextTurnOptions {
8
9
  deferredAutoContinue?: boolean;
9
10
  /** Tap AgentCore.runText TurnEvent stream (processMessageStream) */
10
11
  onTurnEvent?: (event: TurnEvent) => void;
12
+ /** Ordered wire-event journal owned by processTextTurnStream. */
13
+ journal?: AgentRunJournal;
14
+ /** Compatibility media supplied by ZhinAgent.processMultimodal. */
15
+ mediaBlocks?: readonly MediaContentBlock[];
16
+ /** Per-turn cancellation from an ingress owner such as the IM trigger host. */
17
+ signal?: AbortSignal;
11
18
  }
12
19
  export declare function processTextTurn(host: ZhinAgentPrivate, content: string, commMessage: Message, externalTools?: Tool[], onChunk?: OnChunkCallback, extras?: ProcessTextTurnOptions): Promise<OutputElement[]>;
13
- export declare function processMultimodalTurn(host: ZhinAgentPrivate, parts: ContentPart[], commMessage: Message, onChunk?: OnChunkCallback): Promise<OutputElement[]>;
14
20
  //# sourceMappingURL=turn-pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"turn-pipeline.d.ts","sourceRoot":"","sources":["../../src/turn/turn-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAalF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMxD,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,IAAI,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmB7C,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,EAAE,CAAC;IACxD,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,aAAa,GAAE,IAAI,EAAO,EAC1B,OAAO,CAAC,EAAE,eAAe,EACzB,MAAM,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC,CAmJ1B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,WAAW,EAAE,EACpB,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,EAAE,CAAC,CA6G1B"}
1
+ {"version":3,"file":"turn-pipeline.d.ts","sourceRoot":"","sources":["../../src/turn/turn-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAalE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMxD,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,IAAI,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmB7C,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,EAAE,CAAC;IACxD,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,iEAAiE;IACjE,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,mEAAmE;IACnE,WAAW,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3C,+EAA+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,aAAa,GAAE,IAAI,EAAO,EAC1B,OAAO,CAAC,EAAE,eAAe,EACzB,MAAM,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC,CA8J1B"}
@@ -2,14 +2,11 @@ import { formatCompact, getLogger } from '@zhin.js/logger';
2
2
  import { AgentStreamEventType } from '@zhin.js/ai/agent-stream';
3
3
  import { publishAgentStream } from '../event/publish-agent-stream.js';
4
4
  import { readHttpSessionId } from '../session/resolve-session-interaction-port.js';
5
- import { userMessagePlainText, parseOutput } from '@zhin.js/ai';
6
- import { providerSupportsVision } from '../media/vision-capability.js';
7
- import { buildMultimodalVisionSystemPrompt } from '../prompt/assembly.js';
5
+ import { parseOutput } from '@zhin.js/ai';
8
6
  import { TurnSupersededError } from './prompt-controller.js';
9
- import { buildVisionUserMessage, summarizeMultimodalParts } from './multimodal-message.js';
7
+ import { applyInboundMediaInjection, resolveInboundMediaInjection, } from './inbound-media.js';
10
8
  import { EMPTY_USAGE } from './turn-metrics.js';
11
9
  import { logPhase } from '../internal/phase-trace.js';
12
- import { DEFAULT_MULTIMODAL_CONFIG } from '../media/media-types.js';
13
10
  import { prepareTurnTools } from '../tool/prepare-turn-tools.js';
14
11
  import { defaultAgentCore } from '../core/agent-core.js';
15
12
  import { buildTextTurnOutbound, finalizeTurnAfterAgentLoop, handleTurnSuperseded, } from './turn-complete.js';
@@ -89,6 +86,13 @@ export async function processTextTurn(host, content, commMessage, externalTools
89
86
  tool_search: true,
90
87
  names: resolvedTools.map(t => t.name).join(',') || '(none)',
91
88
  }));
89
+ const resolvedInboundMedia = await resolveInboundMediaInjection(commMessage);
90
+ const inboundMedia = extras?.mediaBlocks?.length
91
+ ? {
92
+ blocks: [...resolvedInboundMedia.blocks, ...extras.mediaBlocks],
93
+ textAppends: resolvedInboundMedia.textAppends,
94
+ }
95
+ : resolvedInboundMedia;
92
96
  const turnCtx = await requireContextSystem(host).buildTextTurnContext({
93
97
  host,
94
98
  commMessage,
@@ -96,7 +100,9 @@ export async function processTextTurn(host, content, commMessage, externalTools
96
100
  turnUser,
97
101
  deferredStats,
98
102
  prebuiltMessages: extras?.prebuiltMessages,
103
+ mode: inboundMedia.blocks.length > 0 ? 'vision' : undefined,
99
104
  });
105
+ turnCtx.userMessages = applyInboundMediaInjection(turnCtx.userMessages, inboundMedia);
100
106
  const { userMessages, personaEnhanced: personaForChat, modelCandidates: chatCandidates, modelId, } = turnCtx;
101
107
  logPhase(host.phaseConfig, 'path.agent_loop', sessionId, {
102
108
  toolCount: resolvedTools.length,
@@ -109,6 +115,7 @@ export async function processTextTurn(host, content, commMessage, externalTools
109
115
  userMessages,
110
116
  commMessage,
111
117
  onChunk,
118
+ signal: extras?.signal,
112
119
  execute: (initialMessages, hooks, signal, _turnId) => (host.agentCore ?? defaultAgentCore).runTextTurn({
113
120
  host,
114
121
  sessionId,
@@ -127,6 +134,7 @@ export async function processTextTurn(host, content, commMessage, externalTools
127
134
  signal,
128
135
  deferredStats,
129
136
  onTurnEvent: extras?.onTurnEvent,
137
+ journal: extras?.journal,
130
138
  }),
131
139
  });
132
140
  }
@@ -152,100 +160,4 @@ export async function processTextTurn(host, content, commMessage, externalTools
152
160
  });
153
161
  return buildTextTurnOutbound(reply, loopResult);
154
162
  }
155
- export async function processMultimodalTurn(host, parts, commMessage, onChunk) {
156
- const sessionSystem = requireSessionSystem(host);
157
- const textContent = summarizeMultimodalParts(parts, providerSupportsVision(host.getTurnProvider()));
158
- const prep = await sessionSystem.prepareTextTurn(host, commMessage, textContent);
159
- const { sessionKey, userId, sessionId, isNewSession, turnUser } = prep;
160
- await host.emitter.dispatch('ai.processing.start', host.emitter.createPayload(sessionId, commMessage, 'multimodal'));
161
- const rateCheck = host.rateLimiter.check(userId);
162
- if (!rateCheck.allowed) {
163
- await host.emitter.dispatch('ai.processing.finish', host.emitter.createPayload(sessionId, commMessage, 'multimodal', {
164
- path: 'rate_limited',
165
- reply: rateCheck.message || '请稍后再试',
166
- reason: 'rate_limited',
167
- }));
168
- await host.finalizeActiveTurn({ usage: EMPTY_USAGE, path: 'rate_limited' });
169
- return parseOutput(rateCheck.message || '请稍后再试');
170
- }
171
- host.emitter.emit('ai.typing.start', host.emitter.createPayload(sessionId, commMessage, 'multimodal', {
172
- reason: 'processing',
173
- }));
174
- host.beginActiveTurn();
175
- const supportsVision = providerSupportsVision(host.getTurnProvider());
176
- const personaForVision = host.buildDisciplinedPrompt(host.config.persona);
177
- const visionSystemPrompt = await buildMultimodalVisionSystemPrompt(host, {
178
- commMessage,
179
- sessionId,
180
- textContent,
181
- personaEnhanced: personaForVision,
182
- });
183
- const turnCtx = await requireContextSystem(host).buildTextTurnContext({
184
- host,
185
- commMessage,
186
- content: textContent,
187
- turnUser,
188
- mode: 'vision',
189
- });
190
- const { modelCandidates: visionCandidates } = turnCtx;
191
- logPhase(host.phaseConfig, 'path.agent_loop', sessionId, { mode: 'multimodal' });
192
- const firstPrompt = turnUser.promptMessages[0];
193
- const userMessage = await buildVisionUserMessage(firstPrompt ? userMessagePlainText(firstPrompt) : textContent, parts, supportsVision, DEFAULT_MULTIMODAL_CONFIG.maxFileBytes);
194
- const { userMessages } = await requireContextSystem(host).buildTextTurnContext({
195
- host,
196
- commMessage,
197
- content: textContent,
198
- turnUser,
199
- mode: 'vision',
200
- prebuiltMessages: [userMessage],
201
- });
202
- let loopResult;
203
- try {
204
- loopResult = await host.promptController.schedule({
205
- sessionKey,
206
- sessionId,
207
- userMessages,
208
- commMessage,
209
- onChunk,
210
- execute: (initialMessages, hooks, signal, _turnId) => (host.agentCore ?? defaultAgentCore).runVisionTurn({
211
- host,
212
- sessionId,
213
- commMessage,
214
- visionSystemPrompt,
215
- userMessages: initialMessages,
216
- modelCandidates: visionCandidates,
217
- onChunk,
218
- promptHooks: hooks,
219
- signal,
220
- }),
221
- });
222
- }
223
- catch (err) {
224
- if (err instanceof TurnSupersededError) {
225
- return handleTurnSuperseded(host, sessionId, commMessage, 'multimodal', err);
226
- }
227
- loopResult = {
228
- reply: '抱歉,我无法理解这条消息。',
229
- usage: EMPTY_USAGE,
230
- path: 'multimodal',
231
- iterations: 0,
232
- model: visionCandidates[0] || '',
233
- toolCalls: [],
234
- };
235
- }
236
- const reply = loopResult.reply;
237
- await finalizeTurnAfterAgentLoop({
238
- host,
239
- sessionSystem,
240
- sessionId,
241
- commMessage,
242
- mode: 'multimodal',
243
- loopResult,
244
- isNewSession,
245
- rawContent: turnUser.rawContent,
246
- reply,
247
- finishPath: 'multimodal',
248
- });
249
- return parseOutput(reply);
250
- }
251
163
  //# sourceMappingURL=turn-pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"turn-pipeline.js","sourceRoot":"","sources":["../../src/turn/turn-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-pipeline.js","sourceRoot":"","sources":["../../src/turn/turn-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAwB,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,WAAW,EAA0B,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAS5B,SAAS,oBAAoB,CAAC,IAAsB;IAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAsB;IAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC;AAED,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AACtC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAgBpC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAsB,EACtB,OAAe,EACf,WAAoB,EACpB,gBAAwB,EAAE,EAC1B,OAAyB,EACzB,MAA+B;IAE7B,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;QAC3E,oBAAoB,EAAE,MAAM,EAAE,oBAAoB;KACnD,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvE,MAAM,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,kBAAkB,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,oBAAoB,CAAC,eAAe;YAC1C,IAAI,EAAE,EAAE,SAAS,EAAE;SACpB,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;QAC5G,OAAO;KACR,CAAC,CAAC,CAAC;IACJ,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE;QAClD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,SAAS,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;gBAC7G,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,SAAS,CAAC,OAAO,IAAI,OAAO;gBACnC,MAAM,EAAE,cAAc;aACvB,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5E,OAAO,WAAW,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;QAC9F,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,eAAe,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;IACvC,MAAM,cAAc,GAAG,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;IAErD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE;QAC7C,OAAO;QACP,WAAW;QACX,aAAa;QACb,SAAS;QACT,MAAM;QACN,cAAc;KACf,CAAC,CAAC;IACH,MAAM,EACJ,eAAe,EACf,QAAQ,EACR,aAAa,EACb,aAAa,GACd,GAAG,SAAS,CAAC;IAEd,kBAAkB,CAAC,IAAI,EAAE;QACvB,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;QAC3C,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;KAC3B,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1F,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;QACzB,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ;KAC5D,CAAC,CAAC,CAAC;IAEJ,MAAM,oBAAoB,GAAG,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM;QAC9C,CAAC,CAAC;YACA,MAAM,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;YAC/D,WAAW,EAAE,oBAAoB,CAAC,WAAW;SAC9C;QACD,CAAC,CAAC,oBAAoB,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;QACpE,IAAI;QACJ,WAAW;QACX,OAAO;QACP,QAAQ;QACR,aAAa;QACb,gBAAgB,EAAE,MAAM,EAAE,gBAAgB;QAC1C,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,GAAG,0BAA0B,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACtF,MAAM,EACJ,YAAY,EACZ,eAAe,EAAE,cAAc,EAC/B,eAAe,EAAE,cAAc,EAC/B,OAAO,GACR,GAAG,OAAO,CAAC;IAEZ,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE;QACvD,SAAS,EAAE,aAAa,CAAC,MAAM;KAChC,CAAC,CAAC;IACH,IAAI,UAA+B,CAAC;IACpC,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAChD,UAAU;YACV,SAAS;YACT,YAAY;YACd,WAAW;YACX,OAAO;YACP,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,OAAO,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC,WAAW,CAAC;gBACnG,IAAI;gBACJ,SAAS;gBACT,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,WAAW;gBACX,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,eAAe,EAAE,cAAc;gBAC/B,OAAO;gBACP,eAAe,EAAE,cAAc;gBAC/B,OAAO;gBACP,eAAe;gBACf,WAAW,EAAE,KAAK;gBAClB,MAAM;gBACN,aAAa;gBACb,WAAW,EAAE,MAAM,EAAE,WAAW;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO;aACzB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,MAAM,0BAA0B,CAAC;QAC/B,IAAI;QACJ,aAAa;QACb,SAAS;QACT,WAAW;QACX,IAAI,EAAE,MAAM;QACZ,UAAU;QACV,YAAY;QACZ,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,KAAK;QACL,QAAQ;QACR,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type TurnCancelledEvent, type TurnEvent, type TurnTerminalEvent } from '../event/turn-event.js';
2
+ /**
3
+ * Enforces the public invariant that one turn has one and only one terminal
4
+ * event. Late chunks or a duplicate terminal from a cancelled worker are not
5
+ * observable after the first terminal has been accepted.
6
+ */
7
+ export declare class TurnTerminalGate {
8
+ #private;
9
+ accept(event: TurnEvent): boolean;
10
+ get terminal(): TurnTerminalEvent | undefined;
11
+ }
12
+ export declare function turnCancelledEvent(error: unknown): TurnCancelledEvent;
13
+ export declare function isTurnCancellation(error: unknown): boolean;
14
+ //# sourceMappingURL=turn-terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-terminal.d.ts","sourceRoot":"","sources":["../../src/turn/turn-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE9H;;;;GAIG;AACH,qBAAa,gBAAgB;;IAG3B,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAMjC,IAAI,QAAQ,IAAI,iBAAiB,GAAG,SAAS,CAE5C;CACF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAarE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ1D"}
@@ -0,0 +1,44 @@
1
+ import { isTurnTerminalEvent } from '../event/turn-event.js';
2
+ /**
3
+ * Enforces the public invariant that one turn has one and only one terminal
4
+ * event. Late chunks or a duplicate terminal from a cancelled worker are not
5
+ * observable after the first terminal has been accepted.
6
+ */
7
+ export class TurnTerminalGate {
8
+ #terminal;
9
+ accept(event) {
10
+ if (this.#terminal)
11
+ return false;
12
+ if (isTurnTerminalEvent(event))
13
+ this.#terminal = event;
14
+ return true;
15
+ }
16
+ get terminal() {
17
+ return this.#terminal;
18
+ }
19
+ }
20
+ export function turnCancelledEvent(error) {
21
+ const name = error instanceof Error ? error.name : '';
22
+ const reason = error instanceof Error ? error.message : String(error);
23
+ if (name === 'TurnSupersededError') {
24
+ return { type: 'turn_cancelled', code: 'superseded', reason };
25
+ }
26
+ if (name === 'TriggerTimeoutError' || name === 'InboundTurnExpiredError') {
27
+ return { type: 'turn_cancelled', code: 'timeout', reason };
28
+ }
29
+ if (name === 'InboundTurnQueueDisposedError' || reason === 'InboundTurnQueue disposed') {
30
+ return { type: 'turn_cancelled', code: 'disposed', reason };
31
+ }
32
+ return { type: 'turn_cancelled', code: 'cancelled', reason };
33
+ }
34
+ export function isTurnCancellation(error) {
35
+ if (!(error instanceof Error))
36
+ return false;
37
+ return error.name === 'TurnCancelledError'
38
+ || error.name === 'TurnSupersededError'
39
+ || error.name === 'InboundTurnCancelledError'
40
+ || error.name === 'InboundTurnExpiredError'
41
+ || error.name === 'TriggerTimeoutError'
42
+ || error.name === 'AbortError';
43
+ }
44
+ //# sourceMappingURL=turn-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-terminal.js","sourceRoot":"","sources":["../../src/turn/turn-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmE,MAAM,wBAAwB,CAAC;AAE9H;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,SAAS,CAAgC;IAEzC,MAAM,CAAC,KAAgB;QACrB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,mBAAmB,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACzE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,IAAI,KAAK,+BAA+B,IAAI,MAAM,KAAK,2BAA2B,EAAE,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,IAAI,KAAK,oBAAoB;WACrC,KAAK,CAAC,IAAI,KAAK,qBAAqB;WACpC,KAAK,CAAC,IAAI,KAAK,2BAA2B;WAC1C,KAAK,CAAC,IAAI,KAAK,yBAAyB;WACxC,KAAK,CAAC,IAAI,KAAK,qBAAqB;WACpC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AACnC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AIProvider, type AgentTool, type AgentMessage, type ContentPart, type ImageContent, type AgentEvent, type OutputElement, type ImTranscriptStore, type ImTranscriptWriteInput } from '@zhin.js/ai';
1
+ import { type AIProvider, type AgentTool, type AgentMessage, type ContentPart, type MediaContentBlock, type AgentEvent, type OutputElement, type ImTranscriptStore, type ImTranscriptWriteInput } from '@zhin.js/ai';
2
2
  import type { Tool, Message } from '../orchestrator/types.js';
3
3
  import type { SkillRegistry } from '../orchestrator/skill-registry.js';
4
4
  import type { SkillSystem } from '../skill/skill-system.js';
@@ -20,20 +20,35 @@ import type { CollaborationScene } from '../collaboration/types.js';
20
20
  import { type ScheduleTurnContext } from '../internal/turn-context.js';
21
21
  import type { ResolvedAgentBinding } from '../config/types.js';
22
22
  import type { DeferredWorkerResult } from '../deferred-worker-runner.js';
23
+ import { type AgentTurnConfiguration } from '../turn/agent-turn-context.js';
24
+ import { type TurnContextRunOptions } from '../turn/turn-context-bridge.js';
23
25
  import type { TurnEvent } from '../event/turn-event.js';
24
26
  import type { IAgentTurnProcessor, IAgentSessionManager, IAgentDiagnostics, IAgentConfigurator } from '../config/agent-interfaces.js';
25
27
  export type { ZhinAgentConfig, OnChunkCallback } from '../config/index.js';
26
28
  export type { IAgentTurnProcessor, IAgentSessionManager, IAgentDiagnostics, IAgentConfigurator, } from '../config/agent-interfaces.js';
27
29
  export type { ZhinAgentTurnMetrics, ZhinAgentTurnPath } from '../turn/turn-metrics.js';
28
30
  export { PromptAccessDeniedError } from '../turn/prompt-access.js';
31
+ export type { AgentTurnConfiguration } from '../turn/agent-turn-context.js';
29
32
  export { formatAiHandlerCompleteLog, formatAiHandlerTurnTable, formatZhinAgentTurnUsage } from '../turn/turn-metrics.js';
30
33
  export * from '../prompt/prompt-builder.js';
31
34
  export * from '../prompt/templates.js';
32
35
  export * from '../turn/task-continuation.js';
36
+ export interface AgentTurnRequest {
37
+ readonly content: string;
38
+ readonly message: Message;
39
+ readonly tools?: readonly Tool[];
40
+ readonly onChunk?: OnChunkCallback;
41
+ /** Cancels only this turn; the signal reaches queueing, model IO, and tools. */
42
+ readonly signal?: AbortSignal;
43
+ /** Enables IM activity feedback only for an actual inbound user message. */
44
+ readonly activityFeedbackEligible?: boolean;
45
+ /** Per-message routing state. Never call configure() for these values. */
46
+ readonly configuration?: AgentTurnConfiguration;
47
+ }
33
48
  export declare class ZhinAgent implements IAgentTurnProcessor, IAgentSessionManager, IAgentDiagnostics, IAgentConfigurator {
34
49
  private provider;
35
50
  private providerResolver;
36
- private activeBinding;
51
+ private configuredActiveBinding;
37
52
  private config;
38
53
  /** ideal 模块槽位;经 getter/setter 供 configure 与 asPrivate(host) 读写 */
39
54
  private readonly runtimeModules;
@@ -46,7 +61,7 @@ export declare class ZhinAgent implements IAgentTurnProcessor, IAgentSessionMana
46
61
  private userProfiles;
47
62
  private rateLimiter;
48
63
  private subagentSystem;
49
- private bootstrapContext;
64
+ private configuredBootstrapContext;
50
65
  private alwaysSkillsBaseline;
51
66
  private skillsSummaryXML;
52
67
  private modelRegistry;
@@ -72,6 +87,10 @@ export declare class ZhinAgent implements IAgentTurnProcessor, IAgentSessionMana
72
87
  set skillSystem(value: SkillSystem | null);
73
88
  get orchestrator(): AgentOrchestrator | null;
74
89
  set orchestrator(value: AgentOrchestrator | null);
90
+ get activeBinding(): ResolvedAgentBinding | null;
91
+ set activeBinding(value: ResolvedAgentBinding | null);
92
+ get bootstrapContext(): string;
93
+ set bootstrapContext(value: string);
75
94
  get agentCore(): AgentCore | null;
76
95
  set agentCore(value: AgentCore | null);
77
96
  get toolSystem(): ToolSystem | null;
@@ -123,7 +142,7 @@ export declare class ZhinAgent implements IAgentTurnProcessor, IAgentSessionMana
123
142
  continueAfterDeferredWorker(commMessage: Message, taskId: string, goal: string, result: DeferredWorkerResult): Promise<void>;
124
143
  continueAfterSubagent(payload: SubagentCompletePayload): Promise<void>;
125
144
  getActiveTurnTracker(): TurnTracker | undefined;
126
- runInTurnContext<T>(turnId: string, fn: () => Promise<T>): Promise<T>;
145
+ runInTurnContext<T>(turnId: string, fn: () => Promise<T>, options?: TurnContextRunOptions): Promise<T>;
127
146
  getSubagentSystem(): SubagentSystem | null;
128
147
  buildParentContextSnapshotForSubagent(origin: SubagentOrigin): Promise<string | undefined>;
129
148
  getEventEmitter(): ZhinAgentEventEmitter;
@@ -154,7 +173,7 @@ export declare class ZhinAgent implements IAgentTurnProcessor, IAgentSessionMana
154
173
  steer(message: AgentMessage, commMessage: Message): void;
155
174
  followUp(message: AgentMessage, commMessage: Message): void;
156
175
  prompt(input: string | AgentMessage | AgentMessage[], commMessage: Message, options?: {
157
- images?: ImageContent[];
176
+ media?: MediaContentBlock[];
158
177
  onChunk?: OnChunkCallback;
159
178
  }): Promise<OutputElement[]>;
160
179
  appendPassiveGroupChatter(_commMessage: Message, _rawContent: string): Promise<void>;
@@ -165,7 +184,13 @@ export declare class ZhinAgent implements IAgentTurnProcessor, IAgentSessionMana
165
184
  }>;
166
185
  private requireSessionSystem;
167
186
  process(content: string, commMessage: Message, externalTools?: Tool[], onChunk?: OnChunkCallback): Promise<OutputElement[]>;
187
+ /**
188
+ * Executes one immutable, generation-owned Agent turn. This prevents two
189
+ * concurrent IM messages from overwriting activeBinding/bootstrapContext.
190
+ */
191
+ processTurn(request: AgentTurnRequest): Promise<OutputElement[]>;
168
192
  processStream(content: string, commMessage: Message, externalTools?: Tool[]): AsyncGenerator<TurnEvent, void, undefined>;
193
+ /** Compatibility entry: translate legacy ContentPart[] into canonical media blocks. */
169
194
  processMultimodal(parts: ContentPart[], commMessage: Message, onChunk?: OnChunkCallback): Promise<OutputElement[]>;
170
195
  isReady(): boolean;
171
196
  dispose(): void;