fix(workbench): reset thread on provider switch (#2037)
This commit is contained in:
@@ -442,7 +442,7 @@ export async function submitAgentRunChatTurn({ params = {}, options = {}, traceI
|
|||||||
}, backendProfile));
|
}, backendProfile));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const profileThreadId = agentRunSessionThreadIdFromEnsure(ensuredSession);
|
const profileThreadId = agentRunSessionThreadIdFromEnsure(ensuredSession, backendProfile);
|
||||||
const dispatchParams = paramsWithAgentRunSessionThread(attemptParams, profileThreadId);
|
const dispatchParams = paramsWithAgentRunSessionThread(attemptParams, profileThreadId);
|
||||||
if (safeOpaqueId(attemptParams.threadId) && !profileThreadId) {
|
if (safeOpaqueId(attemptParams.threadId) && !profileThreadId) {
|
||||||
traceStore.append(traceId, agentRunTraceEvent({
|
traceStore.append(traceId, agentRunTraceEvent({
|
||||||
@@ -1263,9 +1263,11 @@ function agentRunSessionRecordFromEnsure(value = null) {
|
|||||||
return session && typeof session === "object" ? session : null;
|
return session && typeof session === "object" ? session : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function agentRunSessionThreadIdFromEnsure(value = null) {
|
function agentRunSessionThreadIdFromEnsure(value = null, backendProfile = null) {
|
||||||
const record = agentRunSessionRecordFromEnsure(value);
|
const record = agentRunSessionRecordFromEnsure(value);
|
||||||
if (agentRunSessionThreadInvalidated(record)) return null;
|
if (agentRunSessionThreadInvalidated(record)) return null;
|
||||||
|
const existingProfile = firstNonEmpty(record?.backendProfile, record?.metadata?.agentRunSessionProfile);
|
||||||
|
if (existingProfile && backendProfile && existingProfile !== backendProfile) return null;
|
||||||
return safeOpaqueId(record?.threadId) || null;
|
return safeOpaqueId(record?.threadId) || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1881,6 +1881,7 @@ test("cloud api AgentRun adapter keeps AgentRun sessions scoped to HWLAB session
|
|||||||
if (request.method === "POST" && url.pathname === "/api/v1/runs") {
|
if (request.method === "POST" && url.pathname === "/api/v1/runs") {
|
||||||
assert.equal(body.backendProfile, "minimax-m3");
|
assert.equal(body.backendProfile, "minimax-m3");
|
||||||
assert.equal(body.sessionRef.sessionId, minimaxSessionId);
|
assert.equal(body.sessionRef.sessionId, minimaxSessionId);
|
||||||
|
assert.equal(body.sessionRef.threadId, undefined);
|
||||||
assert.equal(body.sessionRef.metadata.hwlabSessionId, hwlabSessionId);
|
assert.equal(body.sessionRef.metadata.hwlabSessionId, hwlabSessionId);
|
||||||
assert.equal(body.sessionRef.metadata.agentRunSessionProfile, "minimax-m3");
|
assert.equal(body.sessionRef.metadata.agentRunSessionProfile, "minimax-m3");
|
||||||
return send({ id: "run_hwlab_profile_switch_m3", status: "pending", backendProfile: "minimax-m3", sessionRef: body.sessionRef, resourceBundleRef: body.resourceBundleRef });
|
return send({ id: "run_hwlab_profile_switch_m3", status: "pending", backendProfile: "minimax-m3", sessionRef: body.sessionRef, resourceBundleRef: body.resourceBundleRef });
|
||||||
@@ -1889,6 +1890,7 @@ test("cloud api AgentRun adapter keeps AgentRun sessions scoped to HWLAB session
|
|||||||
assert.equal(body.payload.providerProfile, "minimax-m3");
|
assert.equal(body.payload.providerProfile, "minimax-m3");
|
||||||
assert.equal(body.payload.sessionId, minimaxSessionId);
|
assert.equal(body.payload.sessionId, minimaxSessionId);
|
||||||
assert.equal(body.payload.hwlabSessionId, hwlabSessionId);
|
assert.equal(body.payload.hwlabSessionId, hwlabSessionId);
|
||||||
|
assert.equal(body.payload.threadId, null);
|
||||||
return send({ id: "cmd_hwlab_profile_switch_m3", runId: "run_hwlab_profile_switch_m3", state: "pending", type: "turn", seq: 1 });
|
return send({ id: "cmd_hwlab_profile_switch_m3", runId: "run_hwlab_profile_switch_m3", state: "pending", type: "turn", seq: 1 });
|
||||||
}
|
}
|
||||||
if (request.method === "GET" && url.pathname === "/api/v1/runs/run_hwlab_profile_switch_m3/commands") {
|
if (request.method === "GET" && url.pathname === "/api/v1/runs/run_hwlab_profile_switch_m3/commands") {
|
||||||
|
|||||||
Reference in New Issue
Block a user