access/src/config/roleIds.ts
2026-03-25 15:12:12 -07:00

90 lines
2.8 KiB
TypeScript

/**
* Role ID constants for type-safe role references.
* Using constants prevents typos and enables autocomplete.
*/
export const ROLE_IDS = {
// ===================
// Organization Structure
// ===================
STEERING_COMMITTEE: 'steering-committee',
CORE_MAINTAINERS: 'core-maintainers',
LEAD_MAINTAINERS: 'lead-maintainers',
MODERATORS: 'moderators',
ADMINISTRATORS: 'administrators', // Discord only
COMMUNITY_MANAGERS: 'community-managers', // Discord only
// ===================
// Maintainer Groups
// ===================
MAINTAINERS: 'maintainers',
DOCS_MAINTAINERS: 'docs-maintainers',
INSPECTOR_MAINTAINERS: 'inspector-maintainers',
MCPB_MAINTAINERS: 'mcpb-maintainers',
REFERENCE_SERVERS_MAINTAINERS: 'reference-servers-maintainers',
REGISTRY_MAINTAINERS: 'registry-maintainers',
USE_MCP_MAINTAINERS: 'use-mcp-maintainers',
// ===================
// SDK Maintainers
// ===================
SDK_MAINTAINERS: 'sdk-maintainers',
CSHARP_SDK: 'csharp-sdk',
CSHARP_SDK_ADMIN: 'csharp-sdk-admin',
GO_SDK: 'go-sdk',
JAVA_SDK: 'java-sdk',
KOTLIN_SDK: 'kotlin-sdk',
MCP_APPS_SDK: 'mcp-apps-sdk',
PHP_SDK: 'php-sdk',
PYTHON_SDK: 'python-sdk',
PYTHON_SDK_AUTH: 'python-sdk-auth', // GitHub only (CODEOWNERS)
RUBY_SDK: 'ruby-sdk',
RUST_SDK: 'rust-sdk',
SWIFT_SDK: 'swift-sdk',
TYPESCRIPT_SDK: 'typescript-sdk',
TYPESCRIPT_SDK_AUTH: 'typescript-sdk-auth', // GitHub only (CODEOWNERS)
TYPESCRIPT_SDK_COLLABORATORS: 'typescript-sdk-collaborators', // GitHub only
// ===================
// Working Groups
// ===================
WORKING_GROUPS: 'working-groups',
AUTH_MAINTAINERS: 'auth-maintainers',
SECURITY_WG: 'security-wg',
SERVER_IDENTITY_WG: 'server-identity-wg',
TRANSPORT_WG: 'transport-wg',
TRIGGERS_EVENTS_WG: 'triggers-events-wg',
MCP_APPS_WG: 'mcp-apps-wg',
// ===================
// Interest Groups
// ===================
INTEREST_GROUPS: 'interest-groups',
AGENTS_IG: 'agents-ig',
AUTH_IG: 'auth-ig',
CLIENT_IMPLEMENTOR_IG: 'client-implementor-ig',
FINANCIAL_SERVICES_IG: 'financial-services-ig',
GATEWAYS_IG: 'gateways-ig',
PRIMITIVE_GROUPING_IG: 'primitive-grouping-ig',
SKILLS_OVER_MCP_IG: 'skills-over-mcp-ig',
TOOL_ANNOTATIONS_IG: 'tool-annotations-ig',
// ===================
// WG/IG Facilitators (Discord only)
// ===================
WG_IG_FACILITATORS: 'wg-ig-facilitators',
// ===================
// Email Groups (Google only)
// ===================
ANTITRUST: 'antitrust',
CATCH_ALL: 'catch-all',
} as const;
export type RoleId = (typeof ROLE_IDS)[keyof typeof ROLE_IDS];
/**
* Helper to check if a string is a valid RoleId at runtime.
*/
export function isValidRoleId(id: string): id is RoleId {
return Object.values(ROLE_IDS).includes(id as RoleId);
}