Commit graph

170 commits

Author SHA1 Message Date
David Soria Parra
c193ff654b
Self-heal Discord role sync on refresh
When a member wasn't in the guild at create() time (or drifted afterwards),
read() only reported the drift. Pulumi would not trigger update() because
the inputs hadn't changed, so the member stayed permanently out of sync.

Call syncMemberRoles() directly from read() when drift is detected so roles
are applied on the next refresh without needing an input change.
2026-04-21 14:44:56 +01:00
Sam Morrow
183e9db575
feat: add Google Workspace account for SamMorrowDrums (#101)
Add firstName, lastName, and googleEmailPrefix fields to provision
sam@modelcontextprotocol.io Google Workspace account.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-20 22:50:43 +01:00
David Soria Parra
68c99319af
Add server-card-wg and make SamMorrowDrums a maintainer
Adds SERVER_CARD_WG working group with GitHub team and Discord role.
Adds Sam to MAINTAINERS and SERVER_CARD_WG, and adds tadasant and dsp-ant
to SERVER_CARD_WG.
2026-04-14 14:07:56 +01:00
Peter Alexander
ccf0ecec24
Grant triggers-events-wg access to experimental-ext-triggers-events (#97) 2026-04-11 07:57:10 -07:00
Maciej Kisiel
c1fb6a1ca5
Add yarolegovich and guglielmo-san to Go SDK team (#92)
* Add yarolegovich to Go SDK team

Yaroslav is part of our team that maintains the SDK repository.

* Add Guglielmo
2026-04-08 16:33:12 +01:00
David Soria Parra
5baac7ca7e
Add Den to lead maintainers 2026-04-07 19:43:03 +01:00
Clare Liguori
161910e80b
Add Clare to core maintainers (#96) 2026-04-06 17:11:38 -07:00
David Soria Parra
5120a8fe7a
Add Discord ID for halter73 2026-03-31 00:06:13 +01:00
David Soria Parra
73a3d2af17
Add Clare Liguori to Triggers & Events WG and maintainers 2026-03-30 11:56:03 +01:00
David Soria Parra
8b82530a5c
Add moderators@ Google Workspace group with user provisioning 2026-03-27 19:31:56 +00:00
David Soria Parra
ea91b4e994
Remove jerome3o-anthropic and maheshmurag from moderators 2026-03-27 19:28:12 +00:00
David Soria Parra
17df1703ce
Add community-moderators repo restricted to moderators and core-maintainers 2026-03-27 19:14:11 +00:00
Peter Alexander
bd085c64fa
Add Triggers & Events Working Group (#90) 2026-03-25 15:12:12 -07:00
Den Delimarsky
a0dd148d65
Add typescript-sdk-collaborators team with push access to TS SDK repo (#89)
- New GitHub team typescript-sdk-collaborators (child of typescript-sdk)
- Grant push permission on modelcontextprotocol/typescript-sdk
- Add poteat as initial member

🏠 Remote-Dev: homespace
2026-03-24 13:27:35 -07:00
Den Delimarsky
e014aa7c4e
Add reference-servers-maintainers GitHub team with admin on servers repo (#88)
- Expand REFERENCE_SERVERS_MAINTAINERS role (previously Discord-only) to
  create a GitHub team
- Grant the team admin permission on modelcontextprotocol/servers
- Add tobinsouth as a new member

Existing members cliffhall and olaservo will also be added to the new
GitHub team.

🏠 Remote-Dev: homespace
2026-03-24 12:33:55 -07:00
Den Delimarsky
40c29e305a
Retry Discord API 5xx errors and handle non-JSON error bodies (#87)
Cloudflare edge errors (5xx, edge-level 429s) return plain-text bodies
like "upstream connect error..." or "error code: 1015" that crash a
naive response.json() call. Add a tryParseJson helper and use it for
all error paths so we surface the actual HTTP status/body instead of a
JSON parse exception.

Also add exponential backoff retry for 5xx responses, matching the
existing 429 retry behavior.

🏠 Remote-Dev: homespace
2026-03-23 15:53:17 -07:00
Jeff Handley
a2a41b4b76
Upgrade csharp-sdk team permission to maintain on csharp-sdk repo (#85)
The csharp-sdk team only had push permission, which was insufficient for
members to push to protected branches, edit/assign issues, or have their
PR approvals count toward merge requirements. Upgrading to maintain grants
these capabilities without admin access.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Den Delimarsky <53200638+localden@users.noreply.github.com>
2026-03-23 09:52:21 -07:00
David Soria Parra
9c7f6f3051
fix(discord): widen rate-limit jitter to de-sync parallel retries
The 250ms jitter was too narrow for ~68 parallel refresh reads — all
retries clustered after the same retry_after and collided again. Scale
jitter linearly with attempt number so the herd progressively spreads
out across attempts.
2026-03-21 21:34:26 +00:00
David Soria Parra
ffa85f0109
fix(ci): reserialize dynamic providers before refresh
Split `make up` into two phases: a plain `pulumi up` first, then
`pulumi up --refresh`. Dynamic providers serialize their implementation
into state at create/update time. During refresh, the serialized `read()`
runs — so any provider-code change (like the Discord 429 retry logic)
doesn't take effect until a successful update writes the new `__provider`
to state. Running refresh first used the stale serialized code from the
last successful deploy, which had no rate-limit handling, failing on
parallel Discord member lookups.

Also bump discordFetch maxRetries from 5 to 10 for headroom against ~68
parallel refresh reads.
2026-03-21 20:41:55 +00:00
Den Delimarsky
3a06068d55
Add Discord API rate limit handling and bump @pulumi/github (#84)
- Handle 429 responses from Discord API with automatic retry based on
  retry_after, preventing transient failures during role sync
- Surface underlying error details in role and member role read failures
  to make debugging easier
- Bump @pulumi/github to ^6.11.0 (resolves 6.12.1)

🏠 Remote-Dev: homespace
2026-03-20 01:08:13 -07:00
Den Delimarsky
f8d6ec117c
Enable --refresh on pulumi up to detect drift (#83)
GitHub org invitations expire after 7 days if not accepted. When that
happens, Pulumi state still shows the TeamMembership as healthy and
reports 'unchanged' on every deploy, so the user silently stays out of
the team forever.

Adding --refresh makes pulumi read actual GitHub state before diffing,
so expired memberships are detected and recreated (resending the invite).

Currently affected: liady, antonpk1, keithagroves all have expired
invites and are missing from their configured teams.

🏠 Remote-Dev: homespace
2026-03-19 11:34:35 +00:00
Nick Cooper
7a449ff28c
Add nickcoai Google info (#82)
* Add nickcoai Google info

As above

* Update src/config/users.ts

---------

Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com>
2026-03-18 19:01:46 +00:00
Ola Hungerford
0dcdf88a57
Add pja-ant to Skills over MCP interest group (#81)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 13:23:46 +00:00
Ola Hungerford
1e9e17ca7e
Add Tool Annotations Interest Group and enable Discord sync (#79)
* Add evalstate and cliffhall to docs-maintaners team

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Add Tool Annotations Interest Group and enable Discord sync

Add rreichel3, mattzcarey, and SamMorrowDrums as facilitators
for the new Tool Annotations IG. Create GitHub team and Discord
role sync. Add Discord IDs for rreichel3 and mattzcarey.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add experimental-ext-tool-annotations repo for Tool Annotations IG

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-17 11:01:44 +00:00
David Soria Parra
f4f2b70e42
Grant moderators maintain access for Discussion category management
Moderators need maintain permission to create, edit, and delete GitHub
Discussion categories. Previously they had push or triage, which only
allows managing individual discussions but not categories.
2026-03-16 17:12:44 +00:00
Ola Hungerford
57d06350e5
Add sunishsheth2009 to Skills over MCP IG and enable Discord sync (#78)
- Add sunishsheth2009 as a new member of the skills-over-mcp-ig group
- Enable Discord role sync for the Skills over MCP Interest Group
- Add Discord IDs for erain, JAORMX, kaxil, and keithagroves

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:53:42 +00:00
Christopher Hertel
afbdcad027
Add soyuka to PHP SDK maintainers (#80) 2026-03-16 13:47:46 +00:00
Den Delimarsky
c52a415fde
Add MODERATORS, ADMINISTRATORS, DOCS_MAINTAINERS roles to pcarleton (#77)
Grants Paul Carleton moderator (GitHub + Discord), Discord administrator,
and docs-maintainers access alongside his existing core-maintainers role.

🏠 Remote-Dev: homespace
2026-03-13 13:52:08 +00:00
Jeff Handley
f830732261
Update csharp-sdk repo access to use team assignments (#76)
* Add csharp-sdk-admin team and split csharp-sdk repo permissions

Introduce a csharp-sdk-admin team for admin access to the csharp-sdk repo,
while the existing csharp-sdk team is changed to push (write) access. This
separates admin privileges from general write access.

- Add CSHARP_SDK_ADMIN role to roleIds.ts and roles.ts
- Update repoAccess.ts: csharp-sdk-admin (admin), csharp-sdk (push), PederHP (triage)
- Add jeffhandley, ericstj, jozkee, tarekgh as new members in users.ts
- Move dend/localden from csharp-sdk to csharp-sdk-admin team
- Add csharp-sdk-admin membership for halter73, mikekistler, stephentoub
- Remove MackinnonBuck (admin) direct access per request

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix alphabetical ordering of new users in users.ts

Move ericstj after erain and jeffhandley before jenn-newton to satisfy
the case-insensitive alphabetical sort check in validate-config.ts.

🏠 Remote-Dev: homespace

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Den Delimarsky <den@anthropic.com>
2026-03-13 13:39:56 +00:00
Sambhav Kothari
6ce914c5d5
Enable sambhav for Google workspace (#75) 2026-03-11 13:04:22 +00:00
David Soria Parra
8b74f20a07
add konstantinov to maintainers 2026-03-09 17:40:36 +00:00
Konstantin Konstantinov
1465ade63c
add firstName, lastName, googleEmailPrefix in users.ts (#74)
* add firstName, lastName, googleEmailPrefix in users.ts

* prettier fix
2026-03-09 16:17:12 +00:00
shaun smith
cd546092a6
add my details for google workspace (#73) 2026-03-09 16:06:38 +00:00
David Soria Parra
d024641022
fix: resolve GWS user creation timeout in Deploy workflow
The hashicorp/googleworkspace provider has a known eventual-consistency
bug (issue #387): after creating a user, it polls for 4 consecutive
identical API etags before marking the resource created. Google's API
frequently flip-flops etags, so the check never passes and the 300s
default timeout trips — even though the user was actually created.

This caused cliff@ creation to timeout, leaving the user in GWS but not
in Pulumi state; subsequent runs fail with 409 Entity already exists.

Two changes:
- Mark cliff as existingGWSUser so Pulumi stops trying to create him
  (matches the pattern used for other stranded users).
- Switch to the SamuZad/googleworkspace fork (v0.11.1), which lowers
  numConsistent from 4 to 2, preventing the timeout for future user
  creations. The upstream provider has been unmaintained for 2+ years.
2026-03-09 10:24:14 +00:00
Ola Hungerford
e090d8c8fa
Add org email details for Ola Hungerford and Luca Chang (#72)
* Add evalstate and cliffhall to docs-maintaners team

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Add org email details for Ola Hungerford and Luca Chang

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com>
2026-03-09 10:11:55 +00:00
cliffhall
d3181e829a In users.ts
- add firstName, lastName, and googleEmailPrefix to Cliff Hall's entry as per DSP
2026-03-09 10:26:36 +01:00
David Soria Parra
9ecc452da6
Enable opt-in Google Workspace accounts for maintainers
Adds a google config with provisionUser to the MAINTAINERS role. Runtime
provisioning already gates on firstName/lastName/googleEmailPrefix, so
maintainers opt in by sending a PR adding those fields to their entry in
users.ts. Missing fields means no account is created.

Relaxes the validator and tests to treat missing GWS fields as implicit
opt-out rather than a hard error, so existing maintainers do not need
skipGoogleUserProvisioning set up front.

Also documents the opt-in flow in the README.
2026-03-07 22:44:59 +00:00
Den Delimarsky
c96a52bb95
Add personal account with the right access level (#70) 2026-03-02 20:17:17 -08:00
Maksym Mova
f4bae082ee
Update swift-sdk maintainers (#65)
- movetz Maksym Mova (MacPaw) - discord id added
- carlpeaslee - removed
- mattt - removed

Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com>
2026-02-28 14:57:37 +00:00
David Soria Parra
2eebd26803
add nick and caitie to gwp users 2026-02-23 14:24:38 +00:00
David Soria Parra
ec18773746 fix: stop importing existing GWS users into Pulumi state
The GWS provider validates email types during import, but GWS itself
returns empty types for primary/alias emails. This causes unrecoverable
validation errors on every new user import. Instead, skip managing
existing users entirely and let group memberships be created directly.

Also marks den as existingGWSUser.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:55:09 +00:00
David Soria Parra
bfa4a115dd fix: mark pja as existingGWSUser to import instead of create
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:47:45 +00:00
David Soria Parra
520ccc7bd8 fix: ignoreChanges on all user-managed fields for GWS users
After creation/import we only care that the user exists and is in the
right groups. All profile settings (name, recovery info, password,
org unit, etc.) are left to users and admins to manage directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:22:17 +00:00
David Soria Parra
f916271ed9 fix: ignore recoveryEmail and recoveryPhone on imported GWS users
These are user-managed fields that shouldn't be touched by IaC.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:20:06 +00:00
David Soria Parra
56ccba8a79 fix: only ignoreChanges on description, parentOrgUnitPath is required by provider
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:11:52 +00:00
David Soria Parra
09bc0fc0b8 fix: add ignoreChanges and match existing description to prevent OrgUnit update
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:09:53 +00:00
David Soria Parra
48904bb454 fix: add back parentOrgUnitPath (required by provider)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:05:51 +00:00
David Soria Parra
9d8906075d fix: drop parentOrgUnitPath and description from OrgUnit to avoid update after import
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 00:04:08 +00:00
David Soria Parra
dca636df65 fix: import existing OrgUnit by ID 03ph8a2z0nc6rsr
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:59:44 +00:00
David Soria Parra
9fe97a1d2a fix: create OrgUnit resource before provisioning GWS users
The orgUnitPath '/Model Context Protocol' was hardcoded but the OU
didn't exist in Pulumi state, causing INVALID_OU_ID errors for all
user creates/updates. Create it as a Pulumi resource and wire up
dependsOn so users are provisioned after the OU exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:41:53 +00:00