diff --git a/src/config/groups.ts b/src/config/groups.ts index c336f3a..2417b6f 100644 --- a/src/config/groups.ts +++ b/src/config/groups.ts @@ -9,20 +9,163 @@ import { defineGroups } from './utils'; // Groups are created on all platforms (GitHub and Google) by default. // To limit a group to specific platforms, set the onlyOnPlatforms array (e.g., onlyOnPlatforms: ['google']). export const GROUPS = defineGroups([ + // MCP Organization Structure { - name: 'test-parent', - description: 'All maintainers. Users should not be added directly to this group.', + name: 'steering-committee', + description: 'MCP Steering Committee', + onlyOnPlatforms: ['github'], }, { - name: 'test-child', - description: 'Registry maintainers', - memberOf: ['test-parent'], + name: 'core', + description: 'Core team', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], }, { - name: 'test-email-group', - description: 'Example email group that accepts external emails', - isEmailGroup: true, + name: 'core-maintainers', + description: 'Core maintainers', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], + }, + { + name: 'moderators', + description: 'Community moderators', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], }, + { + name: 'docs-maintaners', + description: 'MCP docs maintainers', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], + }, + + // SDK Maintainers + { + name: 'sdk-maintainers', + description: 'Authors and maintainers of official MCP SDKs', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], + }, + { + name: 'csharp-sdk', + description: 'Official C# SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'go-sdk', + description: 'The Go SDK Team', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'java-sdk', + description: 'Official Java SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'kotlin-sdk', + description: 'Official Kotlin SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'php-sdk', + description: 'Official PHP SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'python-sdk', + description: 'Official Python SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'python-sdk-auth', + description: 'Auth related owners', + memberOf: ['python-sdk'], + onlyOnPlatforms: ['github'], + }, + { + name: 'ruby-sdk', + description: 'Official Ruby SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'rust-sdk', + description: 'Official Rust SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'swift-sdk', + description: 'Official Swift SDK maintainers', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'typescript-sdk', + description: 'Official TypeScript SDK', + memberOf: ['sdk-maintainers'], + onlyOnPlatforms: ['github'], + }, + { + name: 'typescript-sdk-auth', + description: 'Code owners for auth in Typescript SDK', + memberOf: ['typescript-sdk'], + onlyOnPlatforms: ['github'], + }, + + // Working Groups + { + name: 'working-groups', + description: 'MCP Working Groups', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], + }, + { + name: 'auth-wg', + description: 'Authentication Working Group', + memberOf: ['working-groups'], + onlyOnPlatforms: ['github'], + }, + { + name: 'registry-wg', + description: 'Official registry builders and maintainers', + memberOf: ['working-groups'], + }, + { + name: 'security-wg', + description: 'Security Working Group', + memberOf: ['working-groups'], + onlyOnPlatforms: ['github'], + }, + { + name: 'transport-wg', + description: 'Transport Working Group', + memberOf: ['working-groups'], + onlyOnPlatforms: ['github'], + }, + + // Interest Groups + { + name: 'interest-groups', + description: 'Interest Groups', + memberOf: ['steering-committee'], + onlyOnPlatforms: ['github'], + }, + { + name: 'ig-financial-services', + description: 'Financial Services Interest Group', + memberOf: ['interest-groups'], + onlyOnPlatforms: ['github'], + }, + + // Email-only groups { name: 'antitrust', description: 'Antitrust compliance contacts', diff --git a/src/config/repoAccess.ts b/src/config/repoAccess.ts new file mode 100644 index 0000000..d6d348a --- /dev/null +++ b/src/config/repoAccess.ts @@ -0,0 +1,329 @@ +// Repository access configuration +// Each repository lists all teams and users that should have access and their permission level + +export interface RepositoryAccess { + repository: string; + teams?: Array<{ + team: string; // Team slug + permission: 'pull' | 'triage' | 'push' | 'maintain' | 'admin'; + }>; + users?: Array<{ + username: string; // GitHub username + permission: 'pull' | 'triage' | 'push' | 'maintain' | 'admin'; + }>; +} + +export const REPOSITORY_ACCESS: RepositoryAccess[] = [ + { + repository: 'docs', + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + ], + teams: [ + { team: 'auth-wg', permission: 'push' }, + { team: 'core', permission: 'maintain' }, + { team: 'core-maintainers', permission: 'push' }, + { team: 'csharp-sdk', permission: 'push' }, + { team: 'docs-maintaners', permission: 'push' }, + { team: 'go-sdk', permission: 'push' }, + { team: 'ig-financial-services', permission: 'push' }, + { team: 'interest-groups', permission: 'push' }, + { team: 'java-sdk', permission: 'push' }, + { team: 'kotlin-sdk', permission: 'push' }, + { team: 'moderators', permission: 'push' }, + { team: 'php-sdk', permission: 'push' }, + { team: 'python-sdk', permission: 'push' }, + { team: 'python-sdk-auth', permission: 'push' }, + { team: 'registry-wg', permission: 'push' }, + { team: 'ruby-sdk', permission: 'push' }, + { team: 'rust-sdk', permission: 'push' }, + { team: 'sdk-maintainers', permission: 'push' }, + { team: 'security-wg', permission: 'admin' }, + { team: 'steering-committee', permission: 'push' }, + { team: 'swift-sdk', permission: 'push' }, + { team: 'transport-wg', permission: 'push' }, + { team: 'typescript-sdk', permission: 'push' }, + { team: 'typescript-sdk-auth', permission: 'push' }, + { team: 'working-groups', permission: 'push' }, + ], + }, + { + repository: '.github', + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + ], + teams: [ + { team: 'auth-wg', permission: 'triage' }, + { team: 'core', permission: 'maintain' }, + { team: 'core-maintainers', permission: 'push' }, + { team: 'csharp-sdk', permission: 'triage' }, + { team: 'docs-maintaners', permission: 'triage' }, + { team: 'go-sdk', permission: 'triage' }, + { team: 'ig-financial-services', permission: 'triage' }, + { team: 'interest-groups', permission: 'triage' }, + { team: 'java-sdk', permission: 'triage' }, + { team: 'kotlin-sdk', permission: 'triage' }, + { team: 'moderators', permission: 'push' }, + { team: 'php-sdk', permission: 'triage' }, + { team: 'python-sdk', permission: 'triage' }, + { team: 'python-sdk-auth', permission: 'triage' }, + { team: 'registry-wg', permission: 'triage' }, + { team: 'ruby-sdk', permission: 'triage' }, + { team: 'rust-sdk', permission: 'triage' }, + { team: 'sdk-maintainers', permission: 'triage' }, + { team: 'security-wg', permission: 'admin' }, + { team: 'steering-committee', permission: 'triage' }, + { team: 'swift-sdk', permission: 'triage' }, + { team: 'transport-wg', permission: 'triage' }, + { team: 'typescript-sdk', permission: 'triage' }, + { team: 'typescript-sdk-auth', permission: 'triage' }, + { team: 'working-groups', permission: 'triage' }, + ], + }, + { + repository: 'inspector', + users: [ + { username: 'richardkmichael', permission: 'triage' }, + { username: 'jspahrsummers', permission: 'admin' }, + { username: 'olaservo', permission: 'push' }, + { username: 'an-dustin', permission: 'admin' }, + { username: 'ashwin-ant', permission: 'admin' }, + ], + teams: [ + { team: 'auth-wg', permission: 'push' }, + { team: 'core', permission: 'maintain' }, + { team: 'core-maintainers', permission: 'push' }, + { team: 'csharp-sdk', permission: 'push' }, + { team: 'docs-maintaners', permission: 'push' }, + { team: 'go-sdk', permission: 'push' }, + { team: 'ig-financial-services', permission: 'push' }, + { team: 'interest-groups', permission: 'push' }, + { team: 'java-sdk', permission: 'push' }, + { team: 'kotlin-sdk', permission: 'push' }, + { team: 'moderators', permission: 'push' }, + { team: 'php-sdk', permission: 'push' }, + { team: 'python-sdk', permission: 'push' }, + { team: 'python-sdk-auth', permission: 'push' }, + { team: 'registry-wg', permission: 'push' }, + { team: 'ruby-sdk', permission: 'push' }, + { team: 'rust-sdk', permission: 'push' }, + { team: 'sdk-maintainers', permission: 'push' }, + { team: 'security-wg', permission: 'admin' }, + { team: 'steering-committee', permission: 'push' }, + { team: 'swift-sdk', permission: 'push' }, + { team: 'transport-wg', permission: 'push' }, + { team: 'typescript-sdk', permission: 'push' }, + { team: 'typescript-sdk-auth', permission: 'push' }, + { team: 'working-groups', permission: 'push' }, + ], + }, + { + repository: 'modelcontextprotocol', + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + ], + teams: [ + { team: 'auth-wg', permission: 'push' }, + { team: 'core', permission: 'maintain' }, + { team: 'core-maintainers', permission: 'push' }, + { team: 'csharp-sdk', permission: 'triage' }, + { team: 'docs-maintaners', permission: 'push' }, + { team: 'go-sdk', permission: 'triage' }, + { team: 'ig-financial-services', permission: 'triage' }, + { team: 'interest-groups', permission: 'triage' }, + { team: 'java-sdk', permission: 'triage' }, + { team: 'kotlin-sdk', permission: 'triage' }, + { team: 'moderators', permission: 'triage' }, + { team: 'php-sdk', permission: 'triage' }, + { team: 'python-sdk', permission: 'triage' }, + { team: 'python-sdk-auth', permission: 'triage' }, + { team: 'registry-wg', permission: 'triage' }, + { team: 'ruby-sdk', permission: 'triage' }, + { team: 'rust-sdk', permission: 'triage' }, + { team: 'sdk-maintainers', permission: 'triage' }, + { team: 'security-wg', permission: 'admin' }, + { team: 'steering-committee', permission: 'triage' }, + { team: 'swift-sdk', permission: 'triage' }, + { team: 'transport-wg', permission: 'triage' }, + { team: 'typescript-sdk', permission: 'triage' }, + { team: 'typescript-sdk-auth', permission: 'triage' }, + { team: 'working-groups', permission: 'triage' }, + ], + }, + { + repository: 'quickstart-resources', + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + ], + teams: [ + { team: 'auth-wg', permission: 'push' }, + { team: 'core', permission: 'maintain' }, + { team: 'core-maintainers', permission: 'push' }, + { team: 'csharp-sdk', permission: 'push' }, + { team: 'docs-maintaners', permission: 'push' }, + { team: 'go-sdk', permission: 'push' }, + { team: 'ig-financial-services', permission: 'push' }, + { team: 'interest-groups', permission: 'push' }, + { team: 'java-sdk', permission: 'push' }, + { team: 'kotlin-sdk', permission: 'push' }, + { team: 'moderators', permission: 'push' }, + { team: 'php-sdk', permission: 'push' }, + { team: 'python-sdk', permission: 'push' }, + { team: 'python-sdk-auth', permission: 'push' }, + { team: 'registry-wg', permission: 'push' }, + { team: 'ruby-sdk', permission: 'push' }, + { team: 'rust-sdk', permission: 'push' }, + { team: 'sdk-maintainers', permission: 'push' }, + { team: 'security-wg', permission: 'admin' }, + { team: 'steering-committee', permission: 'push' }, + { team: 'swift-sdk', permission: 'push' }, + { team: 'transport-wg', permission: 'push' }, + { team: 'typescript-sdk', permission: 'push' }, + { team: 'typescript-sdk-auth', permission: 'push' }, + { team: 'working-groups', permission: 'push' }, + ], + }, + { + repository: 'servers', + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + { username: 'slimslenderslacks', permission: 'push' }, + ], + teams: [ + { team: 'auth-wg', permission: 'push' }, + { team: 'core', permission: 'admin' }, + { team: 'core-maintainers', permission: 'push' }, + { team: 'csharp-sdk', permission: 'push' }, + { team: 'docs-maintaners', permission: 'push' }, + { team: 'go-sdk', permission: 'push' }, + { team: 'ig-financial-services', permission: 'push' }, + { team: 'interest-groups', permission: 'push' }, + { team: 'java-sdk', permission: 'push' }, + { team: 'kotlin-sdk', permission: 'push' }, + { team: 'moderators', permission: 'push' }, + { team: 'php-sdk', permission: 'push' }, + { team: 'python-sdk', permission: 'push' }, + { team: 'python-sdk-auth', permission: 'push' }, + { team: 'registry-wg', permission: 'push' }, + { team: 'ruby-sdk', permission: 'push' }, + { team: 'rust-sdk', permission: 'push' }, + { team: 'sdk-maintainers', permission: 'push' }, + { team: 'security-wg', permission: 'admin' }, + { team: 'steering-committee', permission: 'push' }, + { team: 'swift-sdk', permission: 'push' }, + { team: 'transport-wg', permission: 'push' }, + { team: 'typescript-sdk', permission: 'push' }, + { team: 'typescript-sdk-auth', permission: 'push' }, + { team: 'working-groups', permission: 'push' }, + ], + }, + { + repository: 'csharp-sdk', + teams: [{ team: 'csharp-sdk', permission: 'admin' }], + users: [ + { username: 'jeffhandley', permission: 'admin' }, + { username: 'MackinnonBuck', permission: 'admin' }, + { username: 'jozkee', permission: 'admin' }, + { username: 'localden', permission: 'admin' }, + { username: 'PederHP', permission: 'triage' }, + ], + }, + { + repository: 'go-sdk', + teams: [{ team: 'go-sdk', permission: 'admin' }], + users: [ + { username: 'neild', permission: 'push' }, + { username: 'rsc', permission: 'push' }, + { username: 'rolandshoemaker', permission: 'push' }, + { username: 'h9jiang', permission: 'maintain' }, + ], + }, + { + repository: 'java-sdk', + teams: [{ team: 'java-sdk', permission: 'admin' }], + }, + { + repository: 'kotlin-sdk', + teams: [{ team: 'kotlin-sdk', permission: 'admin' }], + }, + { + repository: 'php-sdk', + teams: [{ team: 'php-sdk', permission: 'admin' }], + }, + { + repository: 'python-sdk', + teams: [ + { team: 'python-sdk', permission: 'admin' }, + { team: 'python-sdk-auth', permission: 'admin' }, + ], + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + ], + }, + { + repository: 'ruby-sdk', + teams: [{ team: 'ruby-sdk', permission: 'admin' }], + }, + { + repository: 'rust-sdk', + teams: [{ team: 'rust-sdk', permission: 'admin' }], + users: [ + { username: 'jamadeo', permission: 'admin' }, + { username: 'jokemanfire', permission: 'push' }, + { username: '4t145', permission: 'push' }, + ], + }, + { + repository: 'swift-sdk', + teams: [{ team: 'swift-sdk', permission: 'admin' }], + }, + { + repository: 'typescript-sdk', + teams: [ + { team: 'typescript-sdk', permission: 'admin' }, + { team: 'typescript-sdk-auth', permission: 'admin' }, + ], + users: [ + { username: 'jspahrsummers', permission: 'admin' }, + ], + }, + { + repository: 'create-python-server', + teams: [ + { team: 'python-sdk', permission: 'admin' }, + { team: 'python-sdk-auth', permission: 'admin' }, + ], + }, + { + repository: 'create-typescript-server', + teams: [ + { team: 'typescript-sdk', permission: 'admin' }, + { team: 'typescript-sdk-auth', permission: 'admin' }, + ], + }, + { + repository: 'registry', + teams: [{ team: 'registry-wg', permission: 'admin' }], + users: [ + { username: 'rdimitrov', permission: 'admin' }, + ], + }, + { + repository: 'static', + teams: [{ team: 'registry-wg', permission: 'push' }], + }, + { + repository: 'financial-services-interest-group', + teams: [{ team: 'ig-financial-services', permission: 'admin' }], + users: [ + { username: 'aniabot', permission: 'pull' }, + { username: 'imfing', permission: 'triage' }, + { username: 'sambhav', permission: 'admin' }, + { username: 'KengoA', permission: 'triage' }, + { username: 'nitsanh', permission: 'pull' }, + ], + }, +]; + +// GitHub Projects V2 permissions are NOT managed by Pulumi - no support yet +// See: https://github.com/pulumi/pulumi-github/issues/1006 diff --git a/src/config/users.ts b/src/config/users.ts index 7eb78c4..3cec6e9 100644 --- a/src/config/users.ts +++ b/src/config/users.ts @@ -1,10 +1,279 @@ import type { Member } from './utils'; export const MEMBERS: readonly Member[] = [ + { + github: '000-000-000-000-000', + memberOf: ['core-maintainers', 'steering-committee'], + }, + { + github: 'CodeWithKyrian', + memberOf: ['php-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'D-McAdams', + memberOf: ['auth-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'Kehrlann', + memberOf: ['java-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'Kludex', + memberOf: ['python-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'Nyholm', + memberOf: ['php-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'Ololoshechkin', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'aaronpk', + memberOf: ['auth-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'alexhancock', + memberOf: ['rust-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'an-dustin', + memberOf: ['security-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'ansaba', + memberOf: ['go-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'atesgoral', + memberOf: ['ruby-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'baxen', + memberOf: ['rust-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'bhosmer-ant', + memberOf: ['core', 'core-maintainers', 'docs-maintaners', 'moderators', 'steering-committee'], + }, + { + github: 'carlpeaslee', + memberOf: ['sdk-maintainers', 'steering-committee', 'swift-sdk'], + }, + { + github: 'chemicL', + memberOf: ['java-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'chr-hertel', + memberOf: ['php-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'cliffhall', + memberOf: ['moderators', 'steering-committee'], + }, + { + github: 'crondinini-ant', + memberOf: ['core', 'steering-committee'], + }, + { + github: 'dend', + memberOf: ['csharp-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'devcrocod', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, { github: 'domdomegg', email: 'adam@modelcontextprotocol.io', - memberOf: ['test-child'], + memberOf: ['core', 'registry-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'dsp-ant', + email: 'david@modelcontextprotocol.io', + memberOf: ['auth-wg', 'core', 'core-maintainers', 'docs-maintaners', 'go-sdk', 'ig-financial-services', 'interest-groups', 'moderators', 'php-sdk', 'python-sdk', 'sdk-maintainers', 'security-wg', 'steering-committee', 'transport-wg', 'typescript-sdk', 'working-groups'], + }, + { + github: 'e5l', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'eiriktsarpalis', + memberOf: ['csharp-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'evalstate', + memberOf: ['moderators', 'steering-committee'], + }, + { + github: 'fabpot', + memberOf: ['php-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'felixweinberger', + memberOf: ['core', 'python-sdk', 'sdk-maintainers', 'security-wg', 'steering-committee', 'typescript-sdk', 'working-groups'], + }, + { + github: 'findleyr', + memberOf: ['go-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'halter73', + memberOf: ['csharp-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'ignatov', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'ihrpr', + memberOf: ['core', 'core-maintainers', 'docs-maintaners', 'python-sdk', 'sdk-maintainers', 'steering-committee', 'typescript-sdk'], + }, + { + github: 'jamadeo', + memberOf: ['rust-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'jba', + memberOf: ['go-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'jenn-newton', + memberOf: ['security-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'jerome3o-anthropic', + memberOf: ['core', 'moderators', 'steering-committee'], + }, + { + github: 'jonathanhefner', + memberOf: ['docs-maintaners', 'moderators', 'steering-committee'], + }, + { + github: 'jspahrsummers', + email: 'justin@modelcontextprotocol.io', + memberOf: ['core-maintainers', 'steering-committee'], + }, + { + github: 'koic', + memberOf: ['ruby-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'kpavlov', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'kurtisvg', + memberOf: ['steering-committee', 'transport-wg', 'working-groups'], + }, + { + github: 'localden', + memberOf: ['auth-wg', 'core-maintainers', 'steering-committee', 'working-groups'], + }, + { + github: 'maheshmurag', + memberOf: ['core', 'moderators', 'steering-committee'], + }, + { + github: 'markpollack', + memberOf: ['java-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'mattt', + memberOf: ['sdk-maintainers', 'steering-committee', 'swift-sdk'], + }, + { + github: 'maxisbey', + memberOf: ['core', 'steering-committee'], + }, + { + github: 'michaelneale', + memberOf: ['rust-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'mikekistler', + memberOf: ['csharp-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'nickcoai', + memberOf: ['core-maintainers', 'steering-committee'], + }, + { + github: 'nicolas-grekas', + memberOf: ['php-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'ochafik', + memberOf: ['core', 'python-sdk', 'python-sdk-auth', 'sdk-maintainers', 'steering-committee', 'typescript-sdk', 'typescript-sdk-auth'], + }, + { + github: 'og-ant', + memberOf: ['security-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'olaservo', + memberOf: ['docs-maintaners', 'moderators', 'steering-committee'], + }, + { + github: 'pcarleton', + memberOf: ['core-maintainers', 'python-sdk', 'python-sdk-auth', 'sdk-maintainers', 'steering-committee', 'typescript-sdk', 'typescript-sdk-auth'], + }, + { + github: 'petery-ant', + memberOf: ['security-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'pronskiy', + memberOf: ['php-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'pwwpche', + memberOf: ['core-maintainers', 'steering-committee'], + }, + { + github: 'rdimitrov', + email: 'radoslav@modelcontextprotocol.io', + memberOf: ['registry-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'sambhav', + memberOf: ['ig-financial-services', 'interest-groups', 'steering-committee'], + }, + { + github: 'samthanawalla', + memberOf: ['go-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'sdubov', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'stephentoub', + memberOf: ['csharp-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'tadasant', + email: 'tadas@modelcontextprotocol.io', + memberOf: ['moderators', 'registry-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'tiginamaria', + memberOf: ['kotlin-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'toby', + email: 'toby@modelcontextprotocol.io', + memberOf: ['registry-wg', 'steering-committee', 'working-groups'], + }, + { + github: 'topherbullock', + memberOf: ['ruby-sdk', 'sdk-maintainers', 'steering-committee'], + }, + { + github: 'tzolov', + memberOf: ['docs-maintaners', 'java-sdk', 'sdk-maintainers', 'steering-committee'], }, { email: 'adamj@anthropic.com', @@ -22,4 +291,4 @@ export const MEMBERS: readonly Member[] = [ email: 'davideramian@anthropic.com', memberOf: ['antitrust'], }, -] as const; \ No newline at end of file +] as const; diff --git a/src/github.ts b/src/github.ts index 6ec40be..d398bf6 100644 --- a/src/github.ts +++ b/src/github.ts @@ -1,5 +1,6 @@ import * as github from '@pulumi/github'; import { GROUPS } from './config/groups'; +import { REPOSITORY_ACCESS } from './config/repoAccess'; import type { Group } from './config/utils'; import { MEMBERS } from './config/users'; @@ -28,3 +29,17 @@ MEMBERS.forEach((member) => { }); }); }); + +REPOSITORY_ACCESS.forEach((repo) => { + new github.RepositoryCollaborators(`repo-${repo.repository}`, { + repository: repo.repository, + teams: repo.teams?.map((t) => ({ + teamId: teams[t.team].id, + permission: t.permission, + })), + users: repo.users?.map((u) => ({ + username: u.username, + permission: u.permission, + })), + }); +});