free-claude-code/api
Ali Khokhar 51157f91bd
Refactor admin config into catalog-driven package (#926)
## Problem

Admin config was a single responsibility hub with manually duplicated
provider metadata. Provider labels, fields, template loading,
validation, persistence, and status lived in one place.

## Changes

| Before | After |
| --- | --- |
| Admin config lived in one large `api/admin_config.py` module. | Admin
config lives in package modules for manifest, sources, values,
validation, persistence, and status. |
| Provider admin fields and UI labels were manually duplicated. |
Provider admin fields and display names derive from `PROVIDER_CATALOG`
with admin-only help overrides. |
| `fcc-init` and Admin UI loaded `.env.example` separately. | `fcc-init`
and Admin UI use shared `config.env_template` loading. |
| Architecture docs pointed to the old admin config module. |
Architecture docs describe the package owners and catalog-driven
provider manifest. |

<!-- greptile_comment -->

<details open><summary><h3>Greptile Summary</h3></summary>

This PR refactors admin configuration into a catalog-driven package. The
main changes are:

- Split the former monolithic `api/admin_config.py` into manifest,
source loading, value presentation, validation, persistence, and
provider status modules.
- Generate provider admin fields and display names from
`PROVIDER_CATALOG` with admin-specific help overrides.
- Share `.env.example` loading between `fcc-init` and Admin UI defaults
through `config.env_template`.
- Update admin routes, Admin UI provider labels, architecture docs,
version metadata, and contract/API tests for the new module layout.
</details>

<h3>Confidence Score: 5/5</h3>

The refactor appears merge-safe with no code issues identified in the
reviewed changes.

The package split, catalog-driven provider metadata, shared environment
template loading, route updates, and tests/docs changes are cohesive and
covered by corresponding contract/API/CLI test updates.

<details><summary><h3><a href="https://www.greptile.com/trex"><img
alt="T-Rex"
src="https://greptile-static-assets.s3.amazonaws.com/trex/trex_green.svg"
height="20" align="absmiddle"></a> T-Rex Logs</h3></summary>

**What T-Rex did**
- T-Rex ran manifest validation for catalog provider before and after
routes, capturing base and head responses and catalog-alignment checks,
and confirmed the validation completed successfully.
- T-Rex evaluated the shared-env-template scenarios, observing the
before run with no config.env\_template module and the after run with
the module present, with patched loader values and all consistency
checks passing, and the run exited with code 0.
- T-Rex executed the package-admin-workflow validation, verifying the
base and after import paths, the load/validate/write workflow produced
matching outputs, and the run completed with exit code 0.

<a
href="https://app.greptile.com/trex/runs/12529845/artifacts"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/ViewAllArtifactsDark.svg?v=1"><source
media="(prefers-color-scheme: light)"
srcset="https://greptile-static-assets.s3.amazonaws.com/badges/ViewAllArtifacts.svg?v=1"><img
alt="View all artifacts"
src="https://greptile-static-assets.s3.amazonaws.com/badges/ViewAllArtifacts.svg?v=1"
height="32"></picture></a>

<sub><a href="https://www.greptile.com/trex"><img alt="T-Rex"
src="https://greptile-static-assets.s3.amazonaws.com/trex/trex_green.svg"
height="14" align="absmiddle"></a> Ran code and verified through
T-Rex</sub>
</details>

<sub>Reviews (1): Last reviewed commit: ["Refactor admin config into
catalog-drive..."](d6239d7953)
| [Re-trigger
Greptile](https://app.greptile.com/api/retrigger?id=40315222)</sub>

<!-- /greptile_comment -->
2026-06-27 15:37:29 -07:00
..
admin_config Refactor admin config into catalog-driven package (#926) 2026-06-27 15:37:29 -07:00
admin_static Refactor admin config into catalog-driven package (#926) 2026-06-27 15:37:29 -07:00
handlers Split API request handling by product surface (#923) 2026-06-27 13:13:32 -07:00
models Add Codex support (#691) 2026-06-16 16:32:43 -07:00
web_tools Refactor provider stream engine (#883) 2026-06-27 07:24:27 -07:00
__init__.py Major refactor: API, providers, messaging, and Anthropic protocol 2026-04-26 03:01:14 -07:00
admin_routes.py Refactor admin config into catalog-driven package (#926) 2026-06-27 15:37:29 -07:00
admin_urls.py log urls at startup 2026-05-10 01:45:04 -07:00
app.py Add Codex support (#691) 2026-06-16 16:32:43 -07:00
command_utils.py fix: only strip valid env assignments in command parsing (#229) 2026-04-27 18:34:48 -07:00
dependencies.py Refactor provider runtime ownership (#925) 2026-06-27 15:04:34 -07:00
detection.py Fix Claude auto-mode classifier thinking policy (#865) 2026-06-19 12:24:56 -07:00
gateway_model_ids.py Add no-thinking model picker variants 2026-04-30 21:27:23 -07:00
model_catalog.py Refactor provider runtime ownership (#925) 2026-06-27 15:04:34 -07:00
model_router.py Add no-thinking model picker variants 2026-04-30 21:27:23 -07:00
optimization_handlers.py refactor: remove OpenRouter rollback, shims, and redundant layers 2026-04-24 21:08:38 -07:00
provider_execution.py Split API request handling by product surface (#923) 2026-06-27 13:13:32 -07:00
request_errors.py Split API request handling by product surface (#923) 2026-06-27 13:13:32 -07:00
response_streams.py Split API request handling by product surface (#923) 2026-06-27 13:13:32 -07:00
routes.py Refactor provider runtime ownership (#925) 2026-06-27 15:04:34 -07:00
runtime.py Refactor provider runtime ownership (#925) 2026-06-27 15:04:34 -07:00
validation_log.py Major refactor: API, providers, messaging, and Anthropic protocol 2026-04-26 03:01:14 -07:00
web_server_tools.py Major refactor: API, providers, messaging, and Anthropic protocol 2026-04-26 03:01:14 -07:00