























@@ -2,6 +2,7 @@ import crypto from "node:crypto";
22import { parseReplyDirectives } from "../../auto-reply/reply/reply-directives.js";
33import { SILENT_REPLY_TOKEN } from "../../auto-reply/tokens.js";
44import type { OpenClawConfig } from "../../config/types.openclaw.js";
5+import { clearAgentRunContext, registerAgentRunContext } from "../../infra/agent-events.js";
56import { formatErrorMessage } from "../../infra/errors.js";
67import { createSubsystemLogger } from "../../logging/subsystem.js";
78import { parseAgentSessionKey } from "../../sessions/session-key-utils.js";
@@ -64,6 +65,13 @@ type WakeMediaGenerationTaskCompletionParams = {
6465statsLine?: string;
6566};
666768+function touchMediaGenerationTaskRunContext(handle: MediaGenerationTaskHandle) {
69+registerAgentRunContext(handle.runId, {
70+sessionKey: handle.requesterSessionKey,
71+lastActiveAt: Date.now(),
72+});
73+}
74+6775export function createMediaGenerationTaskRun(params: {
6876sessionKey?: string;
6977requesterOrigin?: DeliveryContext;
@@ -98,13 +106,15 @@ export function createMediaGenerationTaskRun(params: {
98106lastEventAt: Date.now(),
99107progressSummary: params.queuedProgressSummary,
100108});
101-return {
109+const handle = {
102110taskId: task.taskId,
103111 runId,
104112requesterSessionKey: sessionKey,
105113requesterOrigin: params.requesterOrigin,
106114taskLabel: params.prompt,
107115};
116+touchMediaGenerationTaskRunContext(handle);
117+return handle;
108118} catch (error) {
109119log.warn("Failed to create media generation task ledger record", {
110120 sessionKey,
@@ -124,6 +134,7 @@ export function recordMediaGenerationTaskProgress(params: {
124134if (!params.handle) {
125135return;
126136}
137+touchMediaGenerationTaskRunContext(params.handle);
127138recordTaskRunProgressByRunId({
128139runId: params.handle.runId,
129140runtime: "cli",
@@ -169,17 +180,21 @@ export function completeMediaGenerationTaskRun(params: {
169180if (!params.handle) {
170181return;
171182}
172-const endedAt = Date.now();
173-const target = params.count === 1 ? params.paths[0] : `${params.count} files`;
174-completeTaskRunByRunId({
175-runId: params.handle.runId,
176-runtime: "cli",
177-sessionKey: params.handle.requesterSessionKey,
178- endedAt,
179-lastEventAt: endedAt,
180-progressSummary: `Generated ${params.count} ${params.generatedLabel}${params.count === 1 ? "" : "s"}`,
181-terminalSummary: `Generated ${params.count} ${params.generatedLabel}${params.count === 1 ? "" : "s"} with ${params.provider}/${params.model}${target ? ` -> ${target}` : ""}.`,
182-});
183+try {
184+const endedAt = Date.now();
185+const target = params.count === 1 ? params.paths[0] : `${params.count} files`;
186+completeTaskRunByRunId({
187+runId: params.handle.runId,
188+runtime: "cli",
189+sessionKey: params.handle.requesterSessionKey,
190+ endedAt,
191+lastEventAt: endedAt,
192+progressSummary: `Generated ${params.count} ${params.generatedLabel}${params.count === 1 ? "" : "s"}`,
193+terminalSummary: `Generated ${params.count} ${params.generatedLabel}${params.count === 1 ? "" : "s"} with ${params.provider}/${params.model}${target ? ` -> ${target}` : ""}.`,
194+});
195+} finally {
196+clearAgentRunContext(params.handle.runId);
197+}
183198}
184199185200export function failMediaGenerationTaskRun(params: {
@@ -190,18 +205,22 @@ export function failMediaGenerationTaskRun(params: {
190205if (!params.handle) {
191206return;
192207}
193-const endedAt = Date.now();
194-const errorText = formatErrorMessage(params.error);
195-failTaskRunByRunId({
196-runId: params.handle.runId,
197-runtime: "cli",
198-sessionKey: params.handle.requesterSessionKey,
199- endedAt,
200-lastEventAt: endedAt,
201-error: errorText,
202-progressSummary: params.progressSummary,
203-terminalSummary: errorText,
204-});
208+try {
209+const endedAt = Date.now();
210+const errorText = formatErrorMessage(params.error);
211+failTaskRunByRunId({
212+runId: params.handle.runId,
213+runtime: "cli",
214+sessionKey: params.handle.requesterSessionKey,
215+ endedAt,
216+lastEventAt: endedAt,
217+error: errorText,
218+progressSummary: params.progressSummary,
219+terminalSummary: errorText,
220+});
221+} finally {
222+clearAgentRunContext(params.handle.runId);
223+}
205224}
206225207226function buildMediaGenerationReplyInstruction(params: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。