fix(cloud): restore running session active trace (#811)
Co-authored-by: Codex Agent <codex@hwlab.local>
This commit is contained in:
@@ -333,6 +333,8 @@ async function updateManualSessionWorkspace({ params = {}, options = {}, session
|
||||
? await store.getWorkspaceForUser?.({ workspaceId, ownerUserId: options.actor.id, actorRole: options.actor.role })
|
||||
: await store.getOrCreateDefaultWorkspace?.({ ownerUserId: options.actor.id, projectId });
|
||||
if (!current) return null;
|
||||
const selectedActiveTraceId = manualSessionSelectableActiveTraceId(session);
|
||||
const selectedLastTraceId = safeTraceId(session.lastTraceId) || selectedActiveTraceId || null;
|
||||
const updated = await store.updateWorkspace?.({
|
||||
workspaceId: current.id,
|
||||
ownerUserId: options.actor.id,
|
||||
@@ -343,13 +345,14 @@ async function updateManualSessionWorkspace({ params = {}, options = {}, session
|
||||
selectedConversationId: session.conversationId,
|
||||
selectedAgentSessionId: session.id,
|
||||
selectedDevicePodId: current.selectedDevicePodId,
|
||||
activeTraceId: null,
|
||||
activeTraceId: selectedActiveTraceId,
|
||||
providerProfile,
|
||||
patch: {
|
||||
...(current.workspace && typeof current.workspace === "object" ? current.workspace : {}),
|
||||
selectedConversationId: session.conversationId,
|
||||
selectedAgentSessionId: session.id,
|
||||
activeTraceId: null,
|
||||
activeTraceId: selectedActiveTraceId,
|
||||
...(selectedLastTraceId ? { lastTraceId: selectedLastTraceId } : {}),
|
||||
sessionStatus: session.status,
|
||||
threadId: safeOpaqueId(session.threadId) || null,
|
||||
providerProfile,
|
||||
@@ -368,6 +371,31 @@ async function updateManualSessionWorkspace({ params = {}, options = {}, session
|
||||
return updated ?? current;
|
||||
}
|
||||
|
||||
function manualSessionSelectableActiveTraceId(session = {}) {
|
||||
if (!manualSessionHasRunningTraceStatus(session)) return null;
|
||||
return safeTraceId(
|
||||
session.currentTraceId
|
||||
?? session.session?.currentTraceId
|
||||
?? session.session?.traceId
|
||||
?? session.session?.runnerTrace?.traceId
|
||||
?? session.session?.agentRun?.traceId
|
||||
) || safeTraceId(session.lastTraceId) || null;
|
||||
}
|
||||
|
||||
function manualSessionHasRunningTraceStatus(session = {}) {
|
||||
return [
|
||||
session.status,
|
||||
session.session?.sessionStatus,
|
||||
session.session?.lifecycleStatus,
|
||||
session.session?.runnerTrace?.sessionStatus,
|
||||
session.session?.runnerTrace?.status,
|
||||
session.session?.agentRun?.runStatus,
|
||||
session.session?.agentRun?.commandState,
|
||||
session.session?.agentRun?.terminalStatus
|
||||
].map((value) => String(value ?? "").trim().toLowerCase().replace(/_/gu, "-"))
|
||||
.some((value) => ["running", "busy", "pending", "creating"].includes(value));
|
||||
}
|
||||
|
||||
function publicManualAgentSession(session) {
|
||||
if (!session || typeof session !== "object") return null;
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user