feat(providers): Agnes 3.0 Flash catalog, CN host, live /v1/models - #13120
Merged
diegosouzapw merged 3 commits intoSep 11, 2026
Merged
Conversation
HouMinXi
force-pushed
the
feat/agnes-30-flash
branch
2 times, most recently
from
September 10, 2026 12:57
6a8dc65 to
f631c06
Compare
Wiki marks 1.5 deprecated; live GET /v1/models no longer serves it (503 no channel). Catalog now ships 2.0/2.5/3.0 flash, Image 2.0/2.5, and forwards agnes-1.5-flash to agnes-3.0-flash. Signed-off-by: Minxi Hou <houminxi@gmail.com>
Video 2.5 / 2.5-flash poll GET /v1/videos/{id} and return url.
Do not reuse the V2.0 video_id + /agnesapi preset. seconds is a string.
Signed-off-by: Minxi Hou <houminxi@gmail.com>
Agnes CN keys live on api.agnes-ai.cn, not the international apihub.agnes-ai.com default. Classify agnes as a named OpenAI-style provider so sync-models hits /v1/models instead of the static seed. Fill 3.0 Flash contextLength from the wiki (512K / 65536). Expose the existing base-URL field so Add-connection can point at the CN host; default stays international. Signed-off-by: Minxi Hou <houminxi@gmail.com>
HouMinXi
force-pushed
the
feat/agnes-30-flash
branch
from
September 11, 2026 02:59
f631c06 to
c331cd9
Compare
9 of 10 tasks
Contributor
Author
|
CI red on this PR matches current Measured on tip
Unique diff does not touch those files. Contributor-only; not merging. |
diegosouzapw
merged commit Sep 11, 2026
9b4210a
into
diegosouzapw:release/v3.8.51
8 of 16 checks passed
gonisulaimann
added a commit
to gonisulaimann/OmniRoute
that referenced
this pull request
Sep 15, 2026
…als (diegosouzapw#12704) Modal is bring-your-own-deploy, so every connection needs its own app URL, and the server-side validator already required providerSpecificData.baseUrl. The add/edit connection form never rendered the field, so a Modal connection could not be validated or saved at all. Adding the id to CONFIGURABLE_BASE_URL_PROVIDERS reuses the same always-on Base URL field as the kimi/moonshot case (diegosouzapw#7447). The placeholder switch is folded into a record lookup in the same commit so the function stays under the complexity cap as ids are added; the record was checked against the switch for every pre-existing id and only "modal" changes behaviour. Rebased onto the current release tip, which now carries diegosouzapw#13120's own entry in the same set.
Githab-capibara
added a commit
to Githab-capibara/OmniRoute
that referenced
this pull request
Sep 17, 2026
…iegosouzapw#13120) Live-verified end to end: 1.5 gone from `GET /v1/models` with a 503, 3.0 answering 200 on a pong probe, and the CN-region host difference across 10 accounts. Aliasing 1.5 to 3.0 through `BUILT_IN_ALIASES` rather than leaving a dead id is the right retirement path, and noting that the diegosouzapw#11503 as-is guard must not skip the rewrite is the detail that makes it work. --- Validated in one consolidated worktree cut from `release/v3.8.51`, boarded with the other 19 PRs of this batch. Two in-batch conflicts, both additive and resolved by keeping each side: the `ENVIRONMENT.md` table (diegosouzapw#13035 + diegosouzapw#13011) and the `chatHelpers.ts` import block (diegosouzapw#12975 on the tip + diegosouzapw#13017). - `typecheck:core` clean; `check:dashboard-typecheck` OK (206 pre-existing, within baseline); `check:changelog-integrity` OK; `check:docs-counts` migrations ✓ - complexity 2816 / baseline 3218 and cognitive-complexity 1271 / baseline 1437 — both under baseline - 531 of 532 focused assertions green across the batch's 46 test files - `check-file-size` rebaselined for the batch's real growth (annotation `_rebaseline_2026_09_11_mergebatch_v3851_houminxi`, landed on diegosouzapw#13038), attributed per PR The single red is **not this batch**: `tests/unit/combo/quota-weighted-strategy.test.ts` → "A/B isolation: 7 hard-empty + 2 at 0.5% + 1 at 40%, floor=1" asserts an order between two connections of identical weight and flakes on the pure tip too — 2 failures in 4 runs at `origin/release/v3.8.51` with nothing from this batch applied.⚠️ base-red inherited: diegosouzapw#12732 — `Docs Gates`, `Merge integrity`, `No new ESLint warnings`, `Unit Tests fast-path` and `Fast Quality Gates` reproduce on the pure tip (provider count 356 vs the 358 the modules define, SKILL.md drift, and `open-sse/utils/stream.ts` at 3115 > frozen 3098, untouched here). Thanks @HouMinXi — the live evidence on these (X500 logs, `storage.sqlite` state, real `/v1/models` probes, the 36-minute outage write-up) is what let a 20-PR batch be reviewed as a unit.
diegosouzapw
pushed a commit
that referenced
this pull request
Sep 18, 2026
…als (#12704) (#12736) Modal is bring-your-own-deploy, so every connection needs its own app URL, and the server-side validator already required providerSpecificData.baseUrl. The add/edit connection form never rendered the field, so a Modal connection could not be validated or saved at all. Adding the id to CONFIGURABLE_BASE_URL_PROVIDERS reuses the same always-on Base URL field as the kimi/moonshot case (#7447). The placeholder switch is folded into a record lookup in the same commit so the function stays under the complexity cap as ids are added; the record was checked against the switch for every pre-existing id and only "modal" changes behaviour. Rebased onto the current release tip, which now carries #13120's own entry in the same set. Co-authored-by: Goni Sulaiman <gonisulaimann@users.noreply.github.com>
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…iegosouzapw#13120) Live-verified end to end: 1.5 gone from `GET /v1/models` with a 503, 3.0 answering 200 on a pong probe, and the CN-region host difference across 10 accounts. Aliasing 1.5 to 3.0 through `BUILT_IN_ALIASES` rather than leaving a dead id is the right retirement path, and noting that the diegosouzapw#11503 as-is guard must not skip the rewrite is the detail that makes it work. --- Validated in one consolidated worktree cut from `release/v3.8.51`, boarded with the other 19 PRs of this batch. Two in-batch conflicts, both additive and resolved by keeping each side: the `ENVIRONMENT.md` table (diegosouzapw#13035 + diegosouzapw#13011) and the `chatHelpers.ts` import block (diegosouzapw#12975 on the tip + diegosouzapw#13017). - `typecheck:core` clean; `check:dashboard-typecheck` OK (206 pre-existing, within baseline); `check:changelog-integrity` OK; `check:docs-counts` migrations ✓ - complexity 2816 / baseline 3218 and cognitive-complexity 1271 / baseline 1437 — both under baseline - 531 of 532 focused assertions green across the batch's 46 test files - `check-file-size` rebaselined for the batch's real growth (annotation `_rebaseline_2026_09_11_mergebatch_v3851_houminxi`, landed on diegosouzapw#13038), attributed per PR The single red is **not this batch**: `tests/unit/combo/quota-weighted-strategy.test.ts` → "A/B isolation: 7 hard-empty + 2 at 0.5% + 1 at 40%, floor=1" asserts an order between two connections of identical weight and flakes on the pure tip too — 2 failures in 4 runs at `origin/release/v3.8.51` with nothing from this batch applied.⚠️ base-red inherited: diegosouzapw#12732 — `Docs Gates`, `Merge integrity`, `No new ESLint warnings`, `Unit Tests fast-path` and `Fast Quality Gates` reproduce on the pure tip (provider count 356 vs the 358 the modules define, SKILL.md drift, and `open-sse/utils/stream.ts` at 3115 > frozen 3098, untouched here). Thanks @HouMinXi — the live evidence on these (X500 logs, `storage.sqlite` state, real `/v1/models` probes, the 36-minute outage write-up) is what let a 20-PR batch be reviewed as a unit.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…als (diegosouzapw#12704) (diegosouzapw#12736) Modal is bring-your-own-deploy, so every connection needs its own app URL, and the server-side validator already required providerSpecificData.baseUrl. The add/edit connection form never rendered the field, so a Modal connection could not be validated or saved at all. Adding the id to CONFIGURABLE_BASE_URL_PROVIDERS reuses the same always-on Base URL field as the kimi/moonshot case (diegosouzapw#7447). The placeholder switch is folded into a record lookup in the same commit so the function stays under the complexity cap as ids are added; the record was checked against the switch for every pre-existing id and only "modal" changes behaviour. Rebased onto the current release tip, which now carries diegosouzapw#13120's own entry in the same set. Co-authored-by: Goni Sulaiman <gonisulaimann@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Agnes wiki now marks
agnes-1.5-flashdeprecated. LiveGET /v1/models(2026-09-09,apihub.agnes-ai.com) no longer lists it (503, no channel).agnes-3.0-flashon that list returned 200stopwith a pong probe. CN-region keys issued onagnes-ai.cnauthenticate athttps://api.agnes-ai.cn/v1(8/10 accounts 200 on that host; 2 accounts only on the international hub).Chat / image catalog
agnes-2.0-flash,agnes-2.5-flash,agnes-3.0-flash.contextLength: 524288on 3.0.agnes-1.5-flashforwards toagnes-3.0-flashviaBUILT_IN_ALIASES. The provider does not serve 1.5; the fix(backend): catalog hygiene — FITNESS_TABLE ranks retired models at 0.98 and BUILT_IN_ALIASES forwards retired Claude ids to other retired ids #11503 as-is guard must not skip the rewrite.agnes-image-2.0-flashandagnes-image-2.5-flash(pricing page current $0; live 200 URL).Live
/v1/modelsdiscoveryAgnes was serving the static registry seed on sync (
local_catalog/intentional: true) because it was not classified for live OpenAI-style/modelsfetch. The registry now advertisesmodelsUrl: https://apihub.agnes-ai.com/v1/models, andagnesis in the named OpenAI-style discovery set so a per-connectionproviderSpecificData.baseUrl(CNhttps://api.agnes-ai.cn/v1) is used to probe/v1/modelsinstead of the seed. The static registry remains the offline fallback.CN host
The international default stays
apihub.agnes-ai.com. CN keys use the existing per-connection base-URL field (same pattern as Kimi/Moonshot #7447): Add-connection placeholderhttps://api.agnes-ai.cn/v1. Chat already honored that override; discovery did not, which is what this change fixes.Video 2.5
V2.0 polls
GET /agnesapi?video_id=and readsvideo_id/metadata.url.Video 2.5 / 2.5-flash poll
GET /v1/videos/{id}and readid/url.secondsis a string. Live 2.5-flash POST returned 200 queued.Do not reuse the V2.0 preset. New
agnes-video-2.5-jobplus per-modeljobPreset. Paidagnes-video-2.5is listed so routing works; this PR does not generate a paid clip.Tests
tests/unit/agnes-provider.test.ts: 17/17. Related discovery / base-URL helpers: 58/58.