feat: surface codex app server governance summaries

This commit is contained in:
AI Bot
2026-06-03 09:59:06 +08:00
parent 88b028ad2b
commit c0c88444ec
11 changed files with 307 additions and 4 deletions

View File

@@ -75,6 +75,15 @@ function textFromMetadata(value: unknown) {
return typeof value === "string" && value.trim() ? value.trim() : "未发现";
}
function objectFromMetadata(value: unknown): Record<string, unknown> {
return value && typeof value === "object" && !Array.isArray(value) ? (value as Record<string, unknown>) : {};
}
function numberFromMetadata(value: unknown) {
const numeric = Number(value);
return Number.isFinite(numeric) ? Math.max(0, Math.round(numeric)) : 0;
}
export function buildDeviceWorkspaceDetailCards(workspace: DeviceWorkspaceView) {
const selectedDevice = workspace.selectedDevice;
const primaryPolicy = workspace.projectExecutionPolicies?.[0];
@@ -87,6 +96,11 @@ export function buildDeviceWorkspaceDetailCards(workspace: DeviceWorkspaceView)
const codexCollaborationModeCount = arrayLength(codexAppServerMetadata.collaborationModes);
const codexMcpServerCount = arrayLength(codexAppServerMetadata.mcpServers);
const codexPermissionProfileCount = arrayLength(codexAppServerMetadata.permissionProfiles);
const codexAccountSummary = objectFromMetadata(codexAppServerMetadata.accountSummary);
const codexRateLimitSummary = objectFromMetadata(codexAppServerMetadata.rateLimitSummary);
const codexAppConfigSummary = objectFromMetadata(codexAppServerMetadata.appConfigSummary);
const codexConfigRequirements = objectFromMetadata(codexAppServerMetadata.configRequirements);
const codexExternalAgentMigration = objectFromMetadata(codexAppServerMetadata.externalAgentMigration);
return {
capabilities: {
@@ -113,6 +127,14 @@ export function buildDeviceWorkspaceDetailCards(workspace: DeviceWorkspaceView)
: "模型:未发现",
codexExtensions: `扩展Skill ${codexSkillCount} 个 · Plugin ${codexPluginCount} 个 · App ${codexAppCount}`,
codexGovernance: `治理:实验特性 ${codexExperimentalFeatureCount} 个 · 协作模式 ${codexCollaborationModeCount} 个 · MCP ${codexMcpServerCount} 个 · 权限 ${codexPermissionProfileCount}`,
codexAccount: `账号:${textFromMetadata(codexAccountSummary.authMode)} · 套餐 ${textFromMetadata(
codexAccountSummary.planType,
)} · 额度 ${numberFromMetadata(codexRateLimitSummary.maxUsedPercent)}%`,
codexConfig: `配置App ${numberFromMetadata(codexAppConfigSummary.appCount)} 个 · 已启用 ${numberFromMetadata(
codexAppConfigSummary.enabledAppCount,
)} 个 · 托管要求 ${numberFromMetadata(codexConfigRequirements.requirementCount)} 个 · 外部迁移 ${numberFromMetadata(
codexExternalAgentMigration.itemCount,
)}`,
preferredExecutionMode: `默认执行模式:${
selectedDevice?.preferredExecutionMode === "gui"
? "GUI"
@@ -747,6 +769,12 @@ export function DeviceEditorCard({
<div className="rounded-2xl bg-[#F7F8FA] px-3 py-2">
{detailCards.capabilities.items.codexGovernance}
</div>
<div className="rounded-2xl bg-[#F7F8FA] px-3 py-2">
{detailCards.capabilities.items.codexAccount}
</div>
<div className="rounded-2xl bg-[#F7F8FA] px-3 py-2">
{detailCards.capabilities.items.codexConfig}
</div>
<div className="rounded-2xl bg-[#F7F8FA] px-3 py-2">
{detailCards.capabilities.items.preferredExecutionMode}
</div>