Skip to content

feat(providers): Agnes 3.0 Flash catalog, CN host, live /v1/models - #13120

Merged
diegosouzapw merged 3 commits into
diegosouzapw:release/v3.8.51from
HouMinXi:feat/agnes-30-flash
Sep 11, 2026
Merged

diegosouzapw merged 3 commits into
diegosouzapw:release/v3.8.51from
HouMinXi:feat/agnes-30-flash

Conversation

@HouMinXi

@HouMinXi HouMinXi commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Agnes wiki now marks agnes-1.5-flash deprecated. Live GET /v1/models (2026-09-09, apihub.agnes-ai.com) no longer lists it (503, no channel). agnes-3.0-flash on that list returned 200 stop with a pong probe. CN-region keys issued on agnes-ai.cn authenticate at https://api.agnes-ai.cn/v1 (8/10 accounts 200 on that host; 2 accounts only on the international hub).

Chat / image catalog

Live /v1/models discovery

Agnes was serving the static registry seed on sync (local_catalog / intentional: true) because it was not classified for live OpenAI-style /models fetch. The registry now advertises modelsUrl: https://apihub.agnes-ai.com/v1/models, and agnes is in the named OpenAI-style discovery set so a per-connection providerSpecificData.baseUrl (CN https://api.agnes-ai.cn/v1) is used to probe /v1/models instead 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 placeholder https://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 reads video_id / metadata.url.

Video 2.5 / 2.5-flash poll GET /v1/videos/{id} and read id / url. seconds is a string. Live 2.5-flash POST returned 200 queued.

Do not reuse the V2.0 preset. New agnes-video-2.5-job plus per-model jobPreset. Paid agnes-video-2.5 is 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.

@HouMinXi
HouMinXi force-pushed the feat/agnes-30-flash branch 2 times, most recently from 6a8dc65 to f631c06 Compare September 10, 2026 12:57
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 HouMinXi changed the title feat(providers): Agnes 3.0 Flash catalog, retire 1.5, Video 2.5 job feat(providers): Agnes 3.0 Flash catalog, CN host, live /v1/models Sep 11, 2026
@FitBBC FitBBC mentioned this pull request Sep 11, 2026
9 of 10 tasks
@HouMinXi

Copy link
Copy Markdown
Contributor Author

CI red on this PR matches current release/v3.8.51, not the unique files in the diff.

Measured on tip af49d4972 (#12925) against the HouMinXi open set:

  • Docs Gates: live provider modules 358 vs docs/SVG still saying 356; cli-tunnel skill dry-run out of date.
  • Fast Quality: open-sse/services/autoCombo/__tests__/autoCombo.test.ts TS2739 vs frozen baseline 0; pack-policy follows that.
  • ESLint: tests/unit/volcengine-plan-binding-upsert.test.ts @typescript-eslint/no-explicit-any (file is on tip).
  • Unit shards: chat-rate-limit-body-lock, antigravity-missing-project-chat, chat-rejects-image-only-model, stream-handler-public-error-boundary (and the glm GLM_STREAM_BUFFER_BYTES assert, which fix(stream): accept the buffer size glm.ts has been passing since #12179 #12925 already landed on tip).

Unique diff does not touch those files. Contributor-only; not merging.

@diegosouzapw
diegosouzapw merged commit 9b4210a into diegosouzapw:release/v3.8.51 Sep 11, 2026
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.
@HouMinXi
HouMinXi deleted the feat/agnes-30-flash branch September 16, 2026 12:44
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants