/**
 * ADR-0022 capacity dimensions.
 * The 23 pinned dimensions; exact numeric ceilings are open and calibrated by
 * capacity testing. This module is the single source of the dimension set shared
 * by the platform-ceiling config and the org capacity-policy service.
 */
export const CAPACITY_DIMENSIONS = [
  "requestRate",
  "requestBodySize",
  "agentConcurrency",
  "admissionQueueLength",
  "admissionQueueWait",
  "fileSize",
  "attachmentCount",
  "archiveExpansion",
  "projectStorage",
  "organizationStorage",
  "memberCount",
  "projectCount",
  "teamCount",
  "folderCount",
  "sessionCount",
  "runWallTime",
  "runTurns",
  "runToolCalls",
  "toolWallTime",
  "runOutputSize",
  "processMemory",
  "processCpu",
  "processCount",
] as const;

export type CapacityDimension = (typeof CAPACITY_DIMENSIONS)[number];

export const CAPACITY_DIMENSION_LABELS: Record<CapacityDimension, string> = {
  requestRate: "HTTP 请求速率",
  requestBodySize: "请求体大小",
  agentConcurrency: "智能体并发",
  admissionQueueLength: "接纳队列长度",
  admissionQueueWait: "接纳队列等待",
  fileSize: "单文件大小",
  attachmentCount: "每消息附件数",
  archiveExpansion: "归档展开",
  projectStorage: "项目存储",
  organizationStorage: "组织存储",
  memberCount: "成员数",
  projectCount: "项目数",
  teamCount: "团队数",
  folderCount: "文件夹数",
  sessionCount: "会话数",
  runWallTime: "单次运行墙钟",
  runTurns: "单次运行轮次",
  runToolCalls: "单次运行工具调用",
  toolWallTime: "工具墙钟",
  runOutputSize: "运行输出大小",
  processMemory: "进程内存",
  processCpu: "进程 CPU",
  processCount: "进程数",
};

export function isCapacityDimension(value: string): value is CapacityDimension {
  return (CAPACITY_DIMENSIONS as readonly string[]).includes(value);
}
