test: harden remote control stress flow
This commit is contained in:
69
tests/local-agent-master-task-completion.test.mjs
Normal file
69
tests/local-agent-master-task-completion.test.mjs
Normal file
@@ -0,0 +1,69 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import {
|
||||
buildComputerUseCompletionPayload,
|
||||
buildMasterAgentTaskCompletionRequestBody,
|
||||
buildRemoteExecutionCompletionPayload,
|
||||
} from "../local-agent/master-task-completion.mjs";
|
||||
|
||||
test("computer use needs_user_action is preserved for server dialog guard completion", () => {
|
||||
const task = {
|
||||
taskId: "desktop-task-dialog",
|
||||
taskType: "desktop_control",
|
||||
projectId: "master-agent",
|
||||
targetThreadId: "thread-1",
|
||||
dispatchExecutionId: "dispatch-1",
|
||||
};
|
||||
const runtimeResult = {
|
||||
status: "needs_user_action",
|
||||
requestId: "runtime-request-1",
|
||||
kind: "dialog_intervention_required",
|
||||
dialogId: "dialog-permission-1",
|
||||
appName: "System Settings",
|
||||
platform: "darwin",
|
||||
risk: "high",
|
||||
summary: "System Settings 弹窗需要用户确认。",
|
||||
recommendedAction: "handled_on_device",
|
||||
availableActions: ["handled_on_device", "cancel_task"],
|
||||
};
|
||||
|
||||
const completion = buildComputerUseCompletionPayload(task, runtimeResult);
|
||||
|
||||
assert.equal(completion.status, "needs_user_action");
|
||||
assert.equal(completion.taskId, "desktop-task-dialog");
|
||||
assert.equal(completion.kind, "dialog_intervention_required");
|
||||
assert.equal(completion.dialogId, "dialog-permission-1");
|
||||
assert.equal(completion.summary, "System Settings 弹窗需要用户确认。");
|
||||
assert.deepEqual(completion.availableActions, ["handled_on_device", "cancel_task"]);
|
||||
|
||||
const requestBody = buildMasterAgentTaskCompletionRequestBody(
|
||||
{ deviceId: "mac-studio" },
|
||||
completion,
|
||||
);
|
||||
|
||||
assert.equal(requestBody.deviceId, "mac-studio");
|
||||
assert.equal(requestBody.status, "needs_user_action");
|
||||
assert.equal(requestBody.kind, "dialog_intervention_required");
|
||||
assert.equal(requestBody.dialogId, "dialog-permission-1");
|
||||
assert.equal(requestBody.appName, "System Settings");
|
||||
assert.equal(requestBody.platform, "darwin");
|
||||
assert.equal(requestBody.risk, "high");
|
||||
assert.deepEqual(requestBody.availableActions, ["handled_on_device", "cancel_task"]);
|
||||
});
|
||||
|
||||
test("remote execution completion payload does not coerce waiting state into completed", () => {
|
||||
const payload = buildRemoteExecutionCompletionPayload(
|
||||
{ taskId: "desktop-task-dialog" },
|
||||
{
|
||||
status: "needs_user_action",
|
||||
requestId: "runtime-request-2",
|
||||
kind: "dialog_intervention_required",
|
||||
dialogId: "dialog-2",
|
||||
summary: "需要确认。",
|
||||
},
|
||||
);
|
||||
|
||||
assert.equal(payload.status, "needs_user_action");
|
||||
assert.equal(payload.kind, "dialog_intervention_required");
|
||||
assert.equal(payload.dialogId, "dialog-2");
|
||||
});
|
||||
Reference in New Issue
Block a user