feat(providers): add Apertis preset - #812
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Ingwannu
left a comment
There was a problem hiding this comment.
The preset itself is potentially valuable and the implementation gets several important details right: fixed Bearer-authenticated /v1/models, openai-chat, liveModels, and preserveCustomDestination all match the intended registry contract. It is not mergeable yet for two concrete reasons:
- This branch is stale against current
dev. The docs change the catalog total to 61, while currentdevalready has 65 presets (54 key-based); Apertis would make that 66/55. The branch also conflicts in all five provider docs,registry.ts, the icon table, and registry parity because newer presets such as DeepInfra, Hyperbolic, and Volcengine landed after its base. Please rebase onto currentdev, preserve every existing entry, and regenerate the counts/parity expectation. - A canonical aggregator preset is a credential-destination change. The PR explicitly says provider-specific routing/resale authorization is non-public. The public product-page claim is not enough to independently verify the policy requirement. Please provide the contractual authorization confidentially to the project owner/maintainers and record only the maintainer verification outcome/date in the PR; do not post confidential terms or credentials here. If that evidence cannot be shared, the acceptable fallback is an inert free-directory row rather than a canonical registry entry.
Keep this draft until both points are resolved. After the rebase, rerun the focused provider/parity/discovery suite and the full cross-platform CI.
1922177 to
a01fafb
Compare
|
Rebased and pushed this PR onto current
This remains a draft. I will not post non-public contractual terms or credentials in the PR, and I have not marked the routing/resale requirement as verified. The underlying authorization needs to be supplied by an Apertis representative through a maintainer-designated private channel; please advise the preferred secure route. Once a maintainer confirms the review, I will record only the verification outcome and date here.
|
|
Maintainer triage update: the rebase concern is resolved, and the preset shape—including model discovery and localized documentation—looks useful. The remaining blocker is the provider-preset evidence bar for a credential-destination change under MAINTAINERS.md and the contributing guide. Please ensure the PR body contains citable evidence for:
Once that evidence is complete, this can proceed to security approval. If any contractual details are confidential, they may be shared privately with the maintainers; the public PR body can record the resulting verification outcome and date without exposing confidential terms. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a01fafb0d0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| note: "Serverless text and vision-language chat models only; Hyperbolic's separate image, audio, and GPU endpoints are out of scope.", | ||
| }, | ||
| { | ||
| id: "apertis", |
There was a problem hiding this comment.
Keep Apertis out of the canonical registry until verified
The commit's evidence table explicitly marks the aggregator's resale/routing authorization as pending, but this canonical entry immediately exposes Apertis through CLI/dashboard presets and sends users' API keys and traffic to it. MAINTAINERS.md requires that authorization before merging an aggregator preset and directs incomplete entries to the inert src/providers/free-directory.ts; move Apertis there until a maintainer verifies the confidential evidence and completes the required security review.
AGENTS.md reference: AGENTS.md:L150-L154
Useful? React with 👍 / 👎.
| xiaomi: "Xiaomi", | ||
| cursor: "Cursor", | ||
| deepseek: "DeepSeek", | ||
| apertis: "Apertis", |
There was a problem hiding this comment.
Preserve editing for same-named custom Apertis providers
When an existing configuration already has a custom provider named apertis, preserveCustomDestination correctly keeps its custom transport at runtime, but adding this display-name entry also inserts the ID into CATALOG_PROVIDER_IDS. ProviderSettings.tsx then determines isPreset solely from that name and disables the adapter, base URL, and authentication controls, so the dashboard can no longer edit the custom configuration this change explicitly promises to preserve. Determine canonicality by matching the configured transport to the preset, or expose the server-side transport-match result instead of classifying by ID alone.
AGENTS.md reference: gui/AGENTS.md:L7-L10
Useful? React with 👍 / 👎.
Summary
/v1/modelsand retain same-named custom provider configurations.Rebased onto
upstream/devate1fc0f21con 2026-08-01. The catalog now has 66 presets: 55 key-based, seven OAuth, three local, and one forward preset.Canonical-preset evidence
GET /v1/modelscontract and the key-scoped OpenAI-shaped model listContributor affiliation: @theQuert submits this contribution on behalf of Apertis / STIMA AI LLC.
Safety and scope
openai-chatadapter; no new auth flow or provider credential is added.Verification
bun test tests/apertis-provider.test.ts tests/provider-registry-parity.test.ts tests/provider-model-discovery-contract.test.ts— 56 passedbun run typecheckbun run privacy:scanbun run test— passed locally on the rebased headcd gui && bun test tests— 463 passedcd gui && bunx --bun eslint .cd gui && bun run buildcd docs-site && bun install --frozen-lockfile && bun run build— 146 pagesgit diff --check upstream/dev...HEADbun run lintinvokes the system Node ESLint launcher here, which cannot load the existing TypeScript config (.eslint/i18n-file-groups.ts); the same rules passed under Bun viabunx --bun eslint ..Checklist