fix: isolate agentrun runner sessions
This commit is contained in:
@@ -20,6 +20,7 @@ const DEFAULT_RUNNER_NAMESPACE = "agentrun-v01";
|
||||
const DEFAULT_TIMEOUT_MS = 1_200_000;
|
||||
const AGENTRUN_BACKENDS = Object.freeze(["codex", "deepseek"]);
|
||||
const THREAD_CONTINUITY_POLICY = "hwlab-agentrun-v01-new-runner-thread";
|
||||
const SESSION_POLICY_RUN_LOCAL = "hwlab-agentrun-v01-run-local-session";
|
||||
|
||||
export function codeAgentAgentRunAdapterEnabled(env = process.env) {
|
||||
const value = String(env.HWLAB_CODE_AGENT_ADAPTER ?? env.HWLAB_CODE_AGENT_PROVIDER ?? "").trim().toLowerCase();
|
||||
@@ -36,7 +37,7 @@ export function initialAgentRunChatResult({ params = {}, options = {}, traceId }
|
||||
shortConnection: true,
|
||||
traceId,
|
||||
conversationId: safeConversationId(params.conversationId) || null,
|
||||
sessionId: agentRunSessionId(params, traceId),
|
||||
sessionId: safeSessionId(params.sessionId) || agentRunSessionId(traceId),
|
||||
threadId: safeOpaqueId(params.threadId) || null,
|
||||
messageId: `msg_${safeTraceId(traceId)?.slice(4) || randomUUID()}`,
|
||||
createdAt: timestamp,
|
||||
@@ -324,14 +325,16 @@ function buildAgentRunCreateRunInput({ params, env, traceId, backendProfile }) {
|
||||
valuesPrinted: false
|
||||
},
|
||||
sessionRef: {
|
||||
sessionId: agentRunSessionId(params, traceId),
|
||||
sessionId: agentRunSessionId(traceId),
|
||||
...(safeConversationId(params.conversationId) ? { conversationId: safeConversationId(params.conversationId) } : {}),
|
||||
metadata: {
|
||||
adapter: ADAPTER_ID,
|
||||
hwlabTraceId: traceId,
|
||||
hwlabApi: "/v1/agent/chat",
|
||||
hwlabSessionId: safeSessionId(params.sessionId) || null,
|
||||
requestedThreadId: safeOpaqueId(params.threadId) || null,
|
||||
threadContinuityPolicy: THREAD_CONTINUITY_POLICY,
|
||||
sessionPolicy: SESSION_POLICY_RUN_LOCAL,
|
||||
valuesPrinted: false
|
||||
}
|
||||
},
|
||||
@@ -367,10 +370,12 @@ function buildAgentRunCommandInput({ params, traceId, backendProfile }) {
|
||||
message: prompt,
|
||||
traceId,
|
||||
conversationId: safeConversationId(params.conversationId) || null,
|
||||
sessionId: agentRunSessionId(params, traceId),
|
||||
sessionId: agentRunSessionId(traceId),
|
||||
hwlabSessionId: safeSessionId(params.sessionId) || null,
|
||||
threadId: null,
|
||||
requestedThreadId: safeOpaqueId(params.threadId) || null,
|
||||
threadContinuityPolicy: THREAD_CONTINUITY_POLICY,
|
||||
sessionPolicy: SESSION_POLICY_RUN_LOCAL,
|
||||
providerProfile: backendProfile,
|
||||
source: "hwlab-cloud-api",
|
||||
valuesPrinted: false
|
||||
@@ -655,8 +660,8 @@ function agentRunResultRefs(result = {}) {
|
||||
return refs;
|
||||
}
|
||||
|
||||
function agentRunSessionId(params, traceId) {
|
||||
return safeSessionId(params.sessionId) || `ses_agentrun_${String(safeTraceId(traceId) || `trc_${randomUUID()}`).slice(4)}`;
|
||||
function agentRunSessionId(traceId) {
|
||||
return `ses_agentrun_${String(safeTraceId(traceId) || `trc_${randomUUID()}`).slice(4)}`;
|
||||
}
|
||||
|
||||
function agentRunSessionSummary(base, status) {
|
||||
|
||||
@@ -155,16 +155,23 @@ test("cloud api /v1/agent/chat delegates v0.2 turns to AgentRun v0.1 over adapte
|
||||
assert.equal(body.resourceBundleRef.repoUrl, "http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git");
|
||||
assert.equal(body.resourceBundleRef.commitId, "0123456789abcdef0123456789abcdef01234567");
|
||||
assert.equal(Object.hasOwn(body.sessionRef, "threadId"), false);
|
||||
assert.equal(body.sessionRef.sessionId, "ses_agentrun_server-test-agentrun-adapter");
|
||||
assert.notEqual(body.sessionRef.sessionId, "ses_server-test-agentrun");
|
||||
assert.equal(body.sessionRef.metadata.hwlabSessionId, "ses_server-test-agentrun");
|
||||
assert.equal(body.sessionRef.metadata.requestedThreadId, "019e8078-db67-7750-a5d9-1a99f3abd445");
|
||||
assert.equal(body.sessionRef.metadata.threadContinuityPolicy, "hwlab-agentrun-v01-new-runner-thread");
|
||||
assert.equal(body.sessionRef.metadata.sessionPolicy, "hwlab-agentrun-v01-run-local-session");
|
||||
return send({ id: "run_hwlab_adapter", status: "pending", backendProfile: "deepseek", sessionRef: body.sessionRef, resourceBundleRef: body.resourceBundleRef });
|
||||
}
|
||||
if (request.method === "POST" && url.pathname === "/api/v1/runs/run_hwlab_adapter/commands") {
|
||||
assert.equal(body.type, "turn");
|
||||
assert.match(body.payload.prompt, /AgentRun adapter/u);
|
||||
assert.equal(body.payload.sessionId, "ses_agentrun_server-test-agentrun-adapter");
|
||||
assert.equal(body.payload.hwlabSessionId, "ses_server-test-agentrun");
|
||||
assert.equal(body.payload.threadId, null);
|
||||
assert.equal(body.payload.requestedThreadId, "019e8078-db67-7750-a5d9-1a99f3abd445");
|
||||
assert.equal(body.payload.threadContinuityPolicy, "hwlab-agentrun-v01-new-runner-thread");
|
||||
assert.equal(body.payload.sessionPolicy, "hwlab-agentrun-v01-run-local-session");
|
||||
return send({ id: "cmd_hwlab_adapter", runId: "run_hwlab_adapter", state: "pending", type: "turn", seq: 1 });
|
||||
}
|
||||
if (request.method === "POST" && url.pathname === "/api/v1/runs/run_hwlab_adapter/runner-jobs") {
|
||||
|
||||
Reference in New Issue
Block a user