fix: make boss agent permissions match computer use minimum
This commit is contained in:
@@ -55,8 +55,8 @@ test("boss-agent status exposes unbound QR binding and local permission states",
|
||||
assert.equal(status.skills.syncOk, true);
|
||||
assert.equal(status.permissionReadiness.coreReady, false);
|
||||
assert.equal(status.permissionReadiness.fullControlReady, false);
|
||||
assert.match(status.permissionReadiness.summary, /完整接管/);
|
||||
assert.equal(status.permissionSetup.mode, "one_time_setup");
|
||||
assert.match(status.permissionReadiness.summary, /基础桌面控制/);
|
||||
assert.equal(status.permissionSetup.mode, "minimal_computer_use");
|
||||
assert.equal(status.permissionSetup.silentUseReady, false);
|
||||
assert.equal(status.permissionSetup.actions.some((action) => action.key === "fullDiskAccess"), true);
|
||||
assert.equal(
|
||||
@@ -80,6 +80,11 @@ test("boss-agent status exposes unbound QR binding and local permission states",
|
||||
[
|
||||
["accessibility", "granted"],
|
||||
["screenRecording", "missing"],
|
||||
],
|
||||
);
|
||||
assert.deepEqual(
|
||||
status.permissions.extendedItems.slice(0, 1).map((item) => [item.key, item.status]),
|
||||
[
|
||||
["automation", "unknown"],
|
||||
],
|
||||
);
|
||||
@@ -179,10 +184,11 @@ test("boss-agent permission and skill menu entries render as separate tab pages"
|
||||
|
||||
const permissionsHtml = renderBossAgentHtml(status, { activeTab: "permissions" });
|
||||
assert.match(permissionsHtml, /class="active" href="\/boss-agent\?tab=permissions"/);
|
||||
assert.match(permissionsHtml, /<h2>一次完整授权<\/h2>/);
|
||||
assert.match(permissionsHtml, /完整接管待补齐/);
|
||||
assert.match(permissionsHtml, /<h2>基础桌面控制授权<\/h2>/);
|
||||
assert.match(permissionsHtml, /基础桌面控制已可用/);
|
||||
assert.match(permissionsHtml, /扩展权限不会阻塞接管/);
|
||||
assert.match(permissionsHtml, /后续静默使用/);
|
||||
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=all&returnTab=permissions/);
|
||||
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=core&returnTab=permissions/);
|
||||
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=fullDiskAccess&returnTab=permissions/);
|
||||
assert.doesNotMatch(permissionsHtml, /<h2>Skill 部署情况<\/h2>/);
|
||||
|
||||
@@ -190,7 +196,45 @@ test("boss-agent permission and skill menu entries render as separate tab pages"
|
||||
assert.match(skillsHtml, /class="active" href="\/boss-agent\?tab=skills"/);
|
||||
assert.match(skillsHtml, /<h2>Skill 部署情况<\/h2>/);
|
||||
assert.match(skillsHtml, /bb-browser/);
|
||||
assert.doesNotMatch(skillsHtml, /<h2>一次完整授权<\/h2>/);
|
||||
assert.doesNotMatch(skillsHtml, /<h2>基础桌面控制授权<\/h2>/);
|
||||
});
|
||||
|
||||
test("boss-agent treats accessibility and screen recording as the minimal computer-use permission set", () => {
|
||||
const status = buildBossAgentStatus(
|
||||
{
|
||||
deviceId: "macbook-air",
|
||||
name: "MacBook Air",
|
||||
account: "krisolo",
|
||||
token: "boss-secret-token",
|
||||
},
|
||||
{
|
||||
lastHeartbeatOk: true,
|
||||
},
|
||||
{
|
||||
permissions: {
|
||||
accessibility: "granted",
|
||||
screenRecording: "granted",
|
||||
automation: "missing",
|
||||
fullDiskAccess: "missing",
|
||||
inputMonitoring: "missing",
|
||||
microphone: "missing",
|
||||
camera: "missing",
|
||||
localNetwork: "missing",
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
assert.equal(status.permissionReadiness.coreReady, true);
|
||||
assert.equal(status.permissionSetup.silentUseReady, true);
|
||||
assert.equal(status.permissionSetup.primaryAction.href, "/api/v1/boss-agent/permissions/open?target=core&returnTab=permissions");
|
||||
assert.match(status.permissionReadiness.summary, /基础桌面控制已可用/);
|
||||
assert.equal(status.permissionSetup.actions.find((action) => action.key === "automation")?.requiredForSilentControl, false);
|
||||
assert.equal(status.permissionSetup.actions.find((action) => action.key === "fullDiskAccess")?.requiredForSilentControl, false);
|
||||
assert.deepEqual(status.permissionSetup.missingRequiredKeys, []);
|
||||
assert.deepEqual(
|
||||
status.permissions.items.map((item) => item.key),
|
||||
["accessibility", "screenRecording"],
|
||||
);
|
||||
});
|
||||
|
||||
test("boss-agent native permission overrides update app-owned camera and microphone state", () => {
|
||||
@@ -255,6 +299,7 @@ test("boss-agent mac app intercepts permission links and triggers native app per
|
||||
assert.match(swiftSource, /handleGetUrlEvent/);
|
||||
assert.match(swiftSource, /--request-permission/);
|
||||
assert.match(swiftSource, /--return-tab/);
|
||||
assert.match(swiftSource, /target == "core"/);
|
||||
assert.match(swiftSource, /lastPermissionRequestTarget/);
|
||||
assert.match(swiftSource, /AXIsProcessTrustedWithOptions/);
|
||||
assert.match(swiftSource, /CGRequestScreenCaptureAccess/);
|
||||
|
||||
Reference in New Issue
Block a user