Menu

#64 feat(#62): DRY OAuth support for all providers in provision_auth

closed
nobody
None
2026-04-05
2026-04-05
Anonymous
No

Originally created by: kumaakh

Summary

  • Extends ProviderAdapter with oauthCredentialFiles(), oauthSettingsMerge(), and oauthEnvVarsToUnset() — provider-generic OAuth interface
  • Gemini: copies 3 OAuth files, deep-merges settings.json (no overwrite), unsets GEMINI_API_KEY from remote shell profiles
  • Claude: migrated to new interface (behavior unchanged)
  • Codex/Copilot: stubs returning null/[]
  • provision_auth: branching is now api_key → provisionApiKey, oauthCredentialFiles() → provisionOAuthCopy, else collectOobApiKey — zero hardcoded provider paths
  • remove_member: loops provider.oauthCredentialFiles() for cleanup
  • deepMergeJson / readRemoteJson helpers in os-commands.ts
  • member_detail / list_members: auth mode shows oauth, api-key, or warning when both present

Test plan

  • [ ] CI passes (build + 613 tests)
  • [ ] provision_auth on Gemini member (no api_key) copies all 3 OAuth files and merges settings.json
  • [ ] provision_auth on Claude member unchanged
  • [ ] remove_member cleans up OAuth files for any provider
  • [ ] member_detail shows correct auth mode

Closes [#62]

🤖 Generated with Claude Code

Related

Tickets: #62

Discussion

  • Anonymous

    Anonymous - 2026-04-05

    Originally posted by: kumaakh

    Merged into integration/schema-oauth

     
  • Anonymous

    Anonymous - 2026-04-05

    Ticket changed by: kumaakh

    • status: open --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB