@@ -63,6 +63,20 @@ export type MediaGenerateBackgroundScheduler = (work: () => Promise<void>) => vo
|
63 | 63 | /** Optional callback invoked when async media generation starts. */ |
64 | 64 | export type MediaGenerateAsyncStartCallback = (message: string) => Promise<void> | void; |
65 | 65 | |
| 66 | +function resolvePinnedMediaRequesterOrigin(params: { |
| 67 | +requesterOrigin?: DeliveryContext; |
| 68 | +sessionOrigin?: DeliveryContext; |
| 69 | +}): DeliveryContext | undefined { |
| 70 | +const requesterOrigin = normalizeDeliveryContext(params.requesterOrigin); |
| 71 | +const sessionOrigin = normalizeDeliveryContext(params.sessionOrigin); |
| 72 | +const accountsConflict = |
| 73 | +requesterOrigin?.channel === sessionOrigin?.channel && |
| 74 | +requesterOrigin?.accountId && |
| 75 | +sessionOrigin?.accountId && |
| 76 | +requesterOrigin.accountId !== sessionOrigin.accountId; |
| 77 | +return accountsConflict ? requesterOrigin : mergeDeliveryContext(requesterOrigin, sessionOrigin); |
| 78 | +} |
| 79 | + |
66 | 80 | /** Returns whether a media generation request should detach for a session. */ |
67 | 81 | export function shouldDetachMediaGenerationTask(sessionKey: string | undefined): boolean { |
68 | 82 | const normalizedSessionKey = sessionKey?.trim(); |
@@ -151,10 +165,10 @@ function createMediaGenerationTaskRun(params: {
|
151 | 165 | try { |
152 | 166 | // Pin the complete requester route when detached work starts. Completion-time |
153 | 167 | // session state can move to another peer while generation is still running. |
154 | | -const requesterOrigin = mergeDeliveryContext( |
155 | | -normalizeDeliveryContext(params.requesterOrigin), |
156 | | -deliveryContextFromSession(loadRequesterSessionEntry(sessionKey).entry), |
157 | | -); |
| 168 | +const requesterOrigin = resolvePinnedMediaRequesterOrigin({ |
| 169 | +requesterOrigin: params.requesterOrigin, |
| 170 | +sessionOrigin: deliveryContextFromSession(loadRequesterSessionEntry(sessionKey).entry), |
| 171 | +}); |
158 | 172 | const task = createRunningTaskRun({ |
159 | 173 | runtime: "cli", |
160 | 174 | taskKind: params.taskKind, |
|