fix: split agent permission and skill tabs

This commit is contained in:
AI Bot
2026-05-12 23:39:13 +08:00
parent 29740f35c7
commit 8d3f68cebe
3 changed files with 216 additions and 102 deletions

View File

@@ -120,23 +120,66 @@ test("boss-agent status treats token-backed devices as bound and renders enterpr
assert.match(html, /boss-agent/);
assert.match(html, /企业电脑接入端/);
assert.match(html, /本机权限获取/);
assert.match(html, /完整接管待补齐/);
assert.match(html, /一次完整授权/);
assert.match(html, /后续静默使用/);
assert.match(html, /href="#permissions"><span>本机权限获取<\/span>/);
assert.match(html, /href="#skills"><span>Skill<\/span>/);
assert.match(html, /href="\/boss-agent\?tab=permissions"><span>本机权限获取<\/span>/);
assert.match(html, /href="\/boss-agent\?tab=skills"><span>Skill<\/span>/);
assert.match(html, /class="active" href="\/boss-agent\?tab=overview"/);
assert.doesNotMatch(html, /<section class="sidebar-card">/);
assert.doesNotMatch(html, /<div class="sidebar-title">本机权限获取<\/div>/);
assert.match(html, /api\/v1\/boss-agent\/permissions\/open\?target=all/);
assert.match(html, /api\/v1\/boss-agent\/permissions\/open\?target=fullDiskAccess/);
assert.match(html, /Skill/);
assert.match(html, /bb-browser/);
assert.match(html, /DeepSeek V4/);
assert.match(html, /默认公司/);
assert.doesNotMatch(html, /boss-secret-token/);
assert.doesNotMatch(html, /<h2>本机电脑权限状态<\/h2>/);
});
test("boss-agent permission and skill menu entries render as separate tab pages", () => {
const status = buildBossAgentStatus(
{
deviceId: "mac-studio",
name: "Mac Studio",
avatar: "M",
account: "krisolo",
controlPlaneUrl: "https://boss.hyzq.net",
token: "boss-secret-token",
primaryApiLabel: "DeepSeek V4",
license: {
enterpriseName: "默认公司",
status: "valid",
},
},
{
lastHeartbeatOk: true,
lastSkills: [
{ name: "bb-browser", category: "MacBook Air", path: "/Users/jas/.codex/skills/bb-browser/SKILL.md" },
],
lastSkillSyncOk: true,
},
{
permissions: {
accessibility: "granted",
screenRecording: "granted",
automation: "granted",
fullDiskAccess: "missing",
},
},
);
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, /后续静默使用/);
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=all/);
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=fullDiskAccess/);
assert.doesNotMatch(permissionsHtml, /<h2>Skill 部署情况<\/h2>/);
const skillsHtml = renderBossAgentHtml(status, { activeTab: "skills" });
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>/);
});
test("boss-agent unbound HTML renders a real scannable QR image when qrcode is available", async () => {
const status = buildBossAgentStatus(
{