Skip to content

feat(providers): add DigitalOcean and Scaleway presets - #872

Draft
olddonkey wants to merge 2 commits into
lidge-jun:devfrom
olddonkey:codex/572-digitalocean-scaleway-model-apis
Draft

feat(providers): add DigitalOcean and Scaleway presets#872
olddonkey wants to merge 2 commits into
lidge-jun:devfrom
olddonkey:codex/572-digitalocean-scaleway-model-apis

Conversation

@olddonkey

@olddonkey olddonkey commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add canonical API-key presets for DigitalOcean Serverless Inference and Scaleway Generative APIs.
  • Discover only docs-backed shared Chat Completions models by intersecting each authenticated live catalog with a registry-owned allowlist.
  • Bound discovery before parsing/caching and preserve older same-named custom destinations and adapters.
  • Promote Scaleway's documented free tier in the free-provider directory and sync the provider catalog across English, Japanese, Korean, Russian, and Simplified Chinese docs.

Relates to #572. This PR intentionally does not close the umbrella issue.

Canonical preset evidence

Provider Shared API and model evidence Contracting entity / routing authorization
DigitalOcean Official Serverless Inference API reference, model catalog, model access key guide, and Chat Completions guide establish https://inference.do-ai.run/v1, Bearer-authenticated /models, and the shared chat endpoint. DigitalOcean Terms of Service identify DigitalOcean, LLC and contemplate customer applications and end users; the service-specific terms and Serverless Inference prepayment terms cover this service.
Scaleway Official Generative APIs guide, supported-model table, API reference, and function-calling guide establish https://api.scaleway.ai/v1, Bearer authentication, and the shared serverless API. Scaleway's AI-specific terms identify Scaleway S.A.S. (RCS Paris 433 115 904) and describe Generative APIs as shared AI models exposed to customers through an API with OpenAI SDK compatibility; the general terms govern the service relationship.

Maintenance owner: @olddonkey. I am not affiliated with either provider.

Verification date: 2026-08-02.

Scope and safety

  • DigitalOcean is limited to the fixed shared Serverless Inference host. Agent-specific, dedicated, Responses-only, embedding, and media-generation surfaces remain out of scope. The service requires a prepaid balance, so the preset does not claim a free tier.
  • Scaleway is limited to the default Project shared serverless host. Project-qualified and dedicated deployment hosts remain custom-provider territory. The preset records the documented free tier.
  • Both /models schemas expose only generic OpenAI-shaped rows, so discovery fails closed: a live row must also match the current first-party chat-model allowlist. Unknown rows are not promoted automatically.
  • Discovery caps are 256 KiB / 256 raw rows for DigitalOcean and 128 KiB / 128 raw rows for Scaleway.
  • preserveCustomDestination prevents registry promotion from retargeting keys already stored under a same-named custom provider. Discovery policy remains registry-only and is never serialized into user config or key-login metadata.
  • Key validation refuses redirects, and the shared model-discovery contract keeps credentials on the canonical destination.
  • Parallel tool calls are not advertised provider-wide because neither provider documents universal support across the eligible catalog.

Because this changes canonical credential destinations, explicit maintainer security review is requested.

Sequencing

This PR remains Draft until #870 lands. It is currently restacked onto dev and its standalone registry/docs totals are 71 presets / 60 key presets; after #870 merges, a final restack will regenerate those totals as 73 / 62.

Verification

  • bun run typecheck
  • bun test tests/digitalocean-scaleway-provider.test.ts tests/provider-model-discovery-contract.test.ts tests/provider-registry-parity.test.ts — 57 pass, 0 fail
  • bun run test — 7596 pass, 8 skip, 0 fail
  • bun run privacy:scan
  • cd docs-site && bun run build — 216 pages
  • git diff --check

Summary by CodeRabbit

  • New Features

    • Added DigitalOcean Serverless Inference and Scaleway Generative APIs as supported providers.
    • Added authenticated model discovery with allowlists and endpoint support.
    • Marked Scaleway as offering a free tier.
    • Added routing support for models with slash-containing names.
  • Documentation

    • Updated provider catalogs and quickstarts across supported languages.
    • Updated the documented standalone branch total to 71 built-in provider presets.

@github-actions github-actions Bot added the enhancement New feature or request label Aug 2, 2026
@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds DigitalOcean Serverless Inference and Scaleway Generative APIs as provider presets. It adds bounded, allowlisted model discovery, routing and parity tests, Scaleway directory metadata, and updates English and localized documentation.

Changes

Provider integrations

Layer / File(s) Summary
Registry entries and discovery rules
src/providers/registry.ts, src/providers/free-directory.ts
Adds DigitalOcean and Scaleway allowlists and registry entries with authenticated discovery, response limits, fixed endpoints, preserved model routing, and disabled parallel tool calls. Marks Scaleway as a supported free-tier provider with live metadata.
Provider behavior and routing validation
tests/digitalocean-scaleway-provider.test.ts, tests/fixtures/*, tests/provider-registry-parity.test.ts
Tests metadata, presets, authentication, model validation, allowlist filtering, routing, tool requests, custom-provider preservation, fixtures, and registry parity.
Localized provider documentation
docs-site/src/content/docs/**
Updates preset counts and documents the new providers, endpoints, discovery filters, response limits, and custom-provider requirements in five languages.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant ProviderRegistry
  participant ModelsEndpoint
  participant ModelRouter
  Client->>ProviderRegistry: select provider preset
  ProviderRegistry->>ModelsEndpoint: request authenticated model list
  ModelsEndpoint-->>ProviderRegistry: return bounded model response
  ProviderRegistry->>ProviderRegistry: apply provider allowlist
  ProviderRegistry-->>Client: expose compatible models
  Client->>ModelRouter: send model request
  ModelRouter->>ModelsEndpoint: route to fixed chat-completions endpoint
Loading

Possibly related issues

  • lidge-jun/opencodex#572 — Covers the DigitalOcean and Scaleway provider promotions implemented by this PR.

Possibly related PRs

Suggested reviewers: ingwannu, lidge-jun

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the addition of DigitalOcean and Scaleway provider presets, which is the primary change.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs-site/src/content/docs/guides/providers.md`:
- Around line 269-273: Synchronize the Scaleway discovery sections in
docs-site/src/content/docs/guides/providers.md:269-273,
docs-site/src/content/docs/ja/guides/providers.md:192-195,
docs-site/src/content/docs/ko/guides/providers.md:191-194,
docs-site/src/content/docs/ru/guides/providers.md:202-206, and
docs-site/src/content/docs/zh-cn/guides/providers.md:180-183. In each locale,
identify the documented Chat Completions allowlist, authenticated-model
intersection, bounded discovery, and fail-closed exclusion of unknown,
Responses-only, embeddings, transcription, and other media models; additionally
update the Korean section to state that Project-qualified URLs and dedicated
deployments require a custom provider.

In `@src/providers/registry.ts`:
- Around line 586-598: Remove "gpt-oss-120b" from the
SCALEWAY_SERVERLESS_CHAT_MODELS catalog in src/providers/registry.ts. Update the
mixed-catalog discovery assertion in
tests/digitalocean-scaleway-provider.test.ts to verify that this model is
excluded while preserving the existing supported-model assertions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 84fd0f19-db85-41cb-bed6-8e27ea1a55c0

📥 Commits

Reviewing files that changed from the base of the PR and between 6ac6bea and e5f1512.

📒 Files selected for processing (16)
  • docs-site/src/content/docs/getting-started/quickstart.md
  • docs-site/src/content/docs/guides/providers.md
  • docs-site/src/content/docs/ja/getting-started/quickstart.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ko/getting-started/quickstart.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ru/getting-started/quickstart.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/zh-cn/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • src/providers/free-directory.ts
  • src/providers/registry.ts
  • tests/digitalocean-scaleway-provider.test.ts
  • tests/fixtures/digitalocean-models.json
  • tests/fixtures/scaleway-models.json
  • tests/provider-registry-parity.test.ts

Comment thread docs-site/src/content/docs/guides/providers.md Outdated
Comment thread src/providers/registry.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e5f151216d

ℹ️ 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".

Comment thread src/providers/registry.ts
Comment thread src/providers/registry.ts
@olddonkey
olddonkey force-pushed the codex/572-digitalocean-scaleway-model-apis branch from e5f1512 to 5afec20 Compare August 2, 2026 17:37
@Wibias
Wibias marked this pull request as draft August 2, 2026 21:08
@olddonkey
olddonkey force-pushed the codex/572-digitalocean-scaleway-model-apis branch from 5afec20 to fc7222f Compare August 3, 2026 08:09

Copy link
Copy Markdown
Contributor Author

Author update — current head fc7222f7

All review feedback received through this revision has been addressed:

  • Restacked onto current dev while preserving the upstream Command Code preset.
  • Scaleway's gpt-oss-120b row is excluded from the tool-capable Chat Completions catalog.
  • Pixtral advertises text + image input.
  • DigitalOcean and Scaleway use conservative reasoningEfforts: [] defaults, with a request regression proving reasoning_effort is not sent.
  • Localized discovery scope and fail-closed exclusions are synchronized.
  • Every review thread is resolved.

Validation: bun run typecheck; 57 focused tests; full suite 7596 pass / 8 skip / 0 fail; privacy scan; 216-page docs build; git diff --check.

This PR intentionally remains Draft until #870 lands. I will perform the final sequential restack and regenerate the 73 / 62 provider totals before marking it Ready. It relates to #572 and does not close the umbrella issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant