You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #345 (which added NVIDIA to rust-adk.md by hand) and the generator work in #339.
Onboarding a provider today is a single task generate for the gateway pages (supported-providers.md, configuration.md), but the two ADK pages carry a hand-maintained "Switching providers and models" table that the generator never touches:
rust-adk.md:213
typescript-adk.md:1092
Because they are hand-authored, they drift:
typescript-adk.md predates NVIDIA, MiniMax, and Moonshot - none appear in its table.
Goal: onboarding a provider should be schema + scripts/provider-overrides.json + task generate, with zero hand-editing of the ADK tables.
The table to generate
Both ADK pages share the same 4-column shape:
Column
Source
Provider
displayName override (this also fixes the Nvidia -> NVIDIA casing divergence)
A2A_AGENT_CLIENT_PROVIDER
provider id from the schema Provider enum
Example A2A_AGENT_CLIENT_MODEL
display-only, NOT modeled in the schema -> new field in provider-overrides.json
API key env var
{ENVUPPER}_API_KEY, with the auth_type: none (Ollama) row rendered as its "none (...)" note
Tasks
Add a display-only field (e.g. adkExampleModel) per provider to scripts/provider-overrides.json. Backfill from the current tables (gpt-5-mini, claude-opus-4-8, nvidia/meta/llama-3.1-8b-instruct, ...). Providers absent from today's ADK tables (ollama_cloud, minimax, moonshot) need an example chosen.
Add a renderAdkProviderTable(providers) renderer in scripts/generate-provider-docs.mjs, following the padded-markdown-table pattern already used by renderProvidersTable.
Add <!-- GENERATED:adk-provider-table START/END (do not edit - run: task generate) --> markers around the table in bothrust-adk.md and typescript-adk.md, and wire two new updateFile(...) calls in main().
Handle the auth_type: none (local Ollama) row: its API-key cell is none (set A2A_AGENT_CLIENT_BASE_URL to your Ollama), not a *_API_KEY. Decide whether to derive that from the auth type or carry it as an override field (e.g. adkKeyNote).
Extend the fixture test (scripts/generate-provider-docs.test.mjs) with an adk-provider-table case asserting a byte-for-byte match against both committed files (mirrors the existing five region tests).
Update the GENERATED_FILES var in Taskfile.yml (line 6) to add rust-adk.md typescript-adk.md, so both the prettier --write step and the generate:check drift guard cover the new files.
Update CLAUDE.md: the generator now manages four files / seven regions (add adk-provider-table in each ADK page), not "two files / five regions".
Design decisions to settle
Row order. The canonical order in provider-overrides.json (openai, deepseek, anthropic, cohere, groq, cloudflare, ollama, ollama_cloud, google, mistral, minimax, moonshot, nvidia) differs from the current curated ADK order (OpenAI, Anthropic, Groq, DeepSeek, ...). Generating adopts the canonical order - a visible but harmless reordering. Recommend accepting it for consistency with the other generated regions.
Display name for Ollama. The tables say "Local Ollama"; the displayName override is "Ollama". Either accept "Ollama" or add an ADK-specific label override.
New providers now appear in both tables.ollama_cloud, minimax, moonshot (and nvidia in the TS page) will render for the first time. That is the intended anti-drift outcome, but it is where the TS table visibly grows.
Per-provider prose stays hand-authored. The NVIDIA paragraph under the rust-adk.md table is editorial, not tabular - leave it (and any future per-provider note) outside the markers. Only the table is generated.
Acceptance criteria
task generate rewrites both ADK tables; on a clean tree task generate:check passes (no drift).
bun test covers the new region for both ADK files.
Adding a hypothetical provider to the schema + overrides, then running task generate, updates supported-providers.md, configuration.md, rust-adk.md, and typescript-adk.md in one shot - no hand edits.
Out of scope
The illustrative (e.g. openai, nvidia, ollama, groq) hint in the env-var reference table (rust-adk.md:971) - it is a non-exhaustive example, not a full enumeration, so it does not need generating.
Context
Follow-up to #345 (which added NVIDIA to
rust-adk.mdby hand) and the generator work in #339.Onboarding a provider today is a single
task generatefor the gateway pages (supported-providers.md,configuration.md), but the two ADK pages carry a hand-maintained "Switching providers and models" table that the generator never touches:rust-adk.md:213typescript-adk.md:1092Because they are hand-authored, they drift:
typescript-adk.mdpredates NVIDIA, MiniMax, and Moonshot - none appear in its table.Nvidia, while the generated gateway docs renderNVIDIA(from thedisplayNameoverride). Same provider, two spellings.Goal: onboarding a provider should be schema +
scripts/provider-overrides.json+task generate, with zero hand-editing of the ADK tables.The table to generate
Both ADK pages share the same 4-column shape:
ProviderdisplayNameoverride (this also fixes theNvidia->NVIDIAcasing divergence)A2A_AGENT_CLIENT_PROVIDERidfrom the schemaProviderenumA2A_AGENT_CLIENT_MODELprovider-overrides.json{ENVUPPER}_API_KEY, with theauth_type: none(Ollama) row rendered as its "none (...)" noteTasks
adkExampleModel) per provider toscripts/provider-overrides.json. Backfill from the current tables (gpt-5-mini,claude-opus-4-8,nvidia/meta/llama-3.1-8b-instruct, ...). Providers absent from today's ADK tables (ollama_cloud,minimax,moonshot) need an example chosen.renderAdkProviderTable(providers)renderer inscripts/generate-provider-docs.mjs, following the padded-markdown-table pattern already used byrenderProvidersTable.<!-- GENERATED:adk-provider-table START/END (do not edit - run: task generate) -->markers around the table in bothrust-adk.mdandtypescript-adk.md, and wire two newupdateFile(...)calls inmain().auth_type: none(local Ollama) row: its API-key cell isnone (set A2A_AGENT_CLIENT_BASE_URL to your Ollama), not a*_API_KEY. Decide whether to derive that from the auth type or carry it as an override field (e.g.adkKeyNote).scripts/generate-provider-docs.test.mjs) with anadk-provider-tablecase asserting a byte-for-byte match against both committed files (mirrors the existing five region tests).GENERATED_FILESvar inTaskfile.yml(line 6) to addrust-adk.md typescript-adk.md, so both theprettier --writestep and thegenerate:checkdrift guard cover the new files.CLAUDE.md: the generator now manages four files / seven regions (addadk-provider-tablein each ADK page), not "two files / five regions".Design decisions to settle
provider-overrides.json(openai, deepseek, anthropic, cohere, groq, cloudflare, ollama, ollama_cloud, google, mistral, minimax, moonshot, nvidia) differs from the current curated ADK order (OpenAI, Anthropic, Groq, DeepSeek, ...). Generating adopts the canonical order - a visible but harmless reordering. Recommend accepting it for consistency with the other generated regions.displayNameoverride is "Ollama". Either accept "Ollama" or add an ADK-specific label override.ollama_cloud,minimax,moonshot(andnvidiain the TS page) will render for the first time. That is the intended anti-drift outcome, but it is where the TS table visibly grows.rust-adk.mdtable is editorial, not tabular - leave it (and any future per-provider note) outside the markers. Only the table is generated.Acceptance criteria
task generaterewrites both ADK tables; on a clean treetask generate:checkpasses (no drift).bun testcovers the new region for both ADK files.task generate, updatessupported-providers.md,configuration.md,rust-adk.md, andtypescript-adk.mdin one shot - no hand edits.Out of scope
(e.g. openai, nvidia, ollama, groq)hint in the env-var reference table (rust-adk.md:971) - it is a non-exhaustive example, not a full enumeration, so it does not need generating.