






















@@ -7,7 +7,7 @@ import {
77type SessionActivity = {
88sessionId?: string;
99sessionKey?: string;
10-activeEmbeddedRun: boolean;
10+activeEmbeddedRuns: Set<string>;
1111activeTools: Map<string, ActiveTool>;
1212activeModelCalls: Set<string>;
1313lastProgressAt: number;
@@ -81,7 +81,9 @@ function replaceSessionActivityReferences(source: SessionActivity, target: Sessi
8181function mergeSessionActivity(target: SessionActivity, source: SessionActivity): void {
8282target.sessionId ??= source.sessionId;
8383target.sessionKey ??= source.sessionKey;
84-target.activeEmbeddedRun ||= source.activeEmbeddedRun;
84+for (const key of source.activeEmbeddedRuns) {
85+target.activeEmbeddedRuns.add(key);
86+}
8587for (const [key, tool] of source.activeTools) {
8688target.activeTools.set(key, tool);
8789}
@@ -133,7 +135,7 @@ function resolveSessionActivity(params: {
133135const created: SessionActivity = {
134136sessionId: params.sessionId,
135137sessionKey: params.sessionKey,
136-activeEmbeddedRun: false,
138+activeEmbeddedRuns: new Set(),
137139activeTools: new Map(),
138140activeModelCalls: new Set(),
139141lastProgressAt: Date.now(),
@@ -232,36 +234,45 @@ function recordRunCompleted(
232234activityByRunId.delete(event.runId);
233235activity.activeTools.clear();
234236activity.activeModelCalls.clear();
235-activity.activeEmbeddedRun = false;
237+activity.activeEmbeddedRuns.clear();
236238touchSessionActivity(activity, "run:completed");
237239}
238240239241export function markDiagnosticEmbeddedRunStarted(params: {
240242sessionId: string;
241243sessionKey?: string;
244+workKey?: string;
242245}): void {
243246const activity = resolveSessionActivity({ ...params, create: true });
244247if (!activity) {
245248return;
246249}
247-activity.activeEmbeddedRun = true;
250+activity.activeEmbeddedRuns.add(resolveEmbeddedRunWorkKey(params));
248251touchSessionActivity(activity, "embedded_run:started");
249252}
250253251254export function markDiagnosticEmbeddedRunEnded(params: {
252255sessionId: string;
253256sessionKey?: string;
257+workKey?: string;
258+clearRunActivity?: boolean;
254259}): void {
255260const activity = resolveSessionActivity(params);
256261if (!activity) {
257262return;
258263}
259-activity.activeEmbeddedRun = false;
260-activity.activeTools.clear();
261-activity.activeModelCalls.clear();
264+activity.activeEmbeddedRuns.delete(resolveEmbeddedRunWorkKey(params));
265+if (params.clearRunActivity !== false) {
266+activity.activeTools.clear();
267+activity.activeModelCalls.clear();
268+}
262269touchSessionActivity(activity, "embedded_run:ended");
263270}
264271272+function resolveEmbeddedRunWorkKey(params: { sessionId: string; workKey?: string }): string {
273+return params.workKey ?? params.sessionId;
274+}
275+265276export function getDiagnosticSessionActivitySnapshot(
266277params: { sessionId?: string; sessionKey?: string },
267278now = Date.now(),
@@ -276,7 +287,7 @@ export function getDiagnosticSessionActivitySnapshot(
276287activeWorkKind = "tool_call";
277288} else if (activity.activeModelCalls.size > 0) {
278289activeWorkKind = "model_call";
279-} else if (activity.activeEmbeddedRun) {
290+} else if (activity.activeEmbeddedRuns.size > 0) {
280291activeWorkKind = "embedded_run";
281292}
282293此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。