refactor(mcp): rename oauth/ to outbound_credentials/

The subdomain resolves every egress credential mode (api_key, none, aws_sigv4, passthrough),
not just OAuth grants, so outbound_credentials names it accurately. Pure rename: relative
imports are unaffected; the spike import, the absolute test imports, and the path mentions in
the module/README docstrings are updated. The RFC 8693 token-type URN is left untouched.
This commit is contained in:
Tin Chi Lo 2026-06-17 16:27:39 -07:00
parent 19e99248a0
commit 9be1f264e6
9 changed files with 8 additions and 8 deletions

View file

@ -6,7 +6,7 @@ security code is v2-shaped from line one instead of rewritten when the full S0 c
Phase 2. It imports nothing from v1; v1 will only ever reach it through a thin adapter built in
Phase 1.
Scope is deliberately small: the typed credential seam (`oauth/types.py`), the vendored `Result`
Scope is deliberately small: the typed credential seam (`outbound_credentials/types.py`), the vendored `Result`
(`result.py`), and the basedpyright match-exhaustiveness spike (`_spike_exhaustiveness.py`). No
transport, registry, CI gate, semgrep rules, import-linter layers, LOC caps, or composition root;
those land with the full S0 in Phase 2.

View file

@ -4,7 +4,7 @@ Written v2-native: nothing here imports from v1 (the rest of
`litellm.proxy._experimental.mcp_server.*`). v1 only ever reaches v2 through a thin
adapter built in Phase 1, never the other way round.
Phase 0 scope = the typed OAuth-credential seam only (`oauth/types.py`), the vendored
Phase 0 scope = the typed OAuth-credential seam only (`outbound_credentials/types.py`), the vendored
`Result` (`result.py`), and the basedpyright match-exhaustiveness spike
(`_spike_exhaustiveness.py`). No transport, registry, or CI/semgrep/composition-root
infrastructure those land in Phase 2 (S0).

View file

@ -6,7 +6,7 @@ the bet HOLDS, with two non-obvious rules taken from the sibling v2 package `lit
Two `match` shapes are exhaustiveness-checked and are the only ones we use:
(A) `match` over a closed `Enum` -> what `resolve()` dispatches on (`oauth/types.py`).
(A) `match` over a closed `Enum` -> what `resolve()` dispatches on (`outbound_credentials/types.py`).
(B) `match self.tag` over an Expression `@tagged_union` whose `tag` is a `Literal`
-> what `CredError` uses for its `summary`.
@ -25,7 +25,7 @@ from __future__ import annotations
from typing_extensions import assert_never
from .oauth.types import AuthSpecKind, CredError
from .outbound_credentials.types import AuthSpecKind, CredError
# (A) Enum dispatch — the load-bearing case (`resolve()` uses exactly this shape).

View file

@ -8,15 +8,15 @@ import httpx
import pytest
from pydantic import ValidationError
from litellm.proxy.gateway.mcp.oauth.credential_store import (
from litellm.proxy.gateway.mcp.outbound_credentials.credential_store import (
CredentialKey,
InMemoryCredentialStore,
)
from litellm.proxy.gateway.mcp.oauth.httpx_auth import (
from litellm.proxy.gateway.mcp.outbound_credentials.httpx_auth import (
NoOpAuth,
StaticHeaderAuth,
)
from litellm.proxy.gateway.mcp.oauth.types import (
from litellm.proxy.gateway.mcp.outbound_credentials.types import (
ApiKeyConfig,
AuthSpecKind,
NoneConfig,
@ -26,7 +26,7 @@ from litellm.proxy.gateway.mcp.oauth.types import (
SharedKey,
Subject,
)
from litellm.proxy.gateway.mcp.oauth.upstream_credentials import (
from litellm.proxy.gateway.mcp.outbound_credentials.upstream_credentials import (
UpstreamCredentialProvider,
)
from litellm.proxy.gateway.mcp.result import Error, Ok