fix(nous-research): correct baseUrl to include /chat/completions (#2826) (#2835)

Integrated into release/v3.8.6.
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-05-29 00:59:54 -03:00
committed by GitHub
parent 0a101b95b3
commit 283c05d3d0
3 changed files with 38 additions and 1 deletions

View File

@@ -14,6 +14,7 @@
### 🔧 Bug Fixes
- **nous-research:** append /chat/completions to provider baseUrl so DefaultExecutor's default URL builder hits the correct endpoint instead of returning 404 ([#2826])
- **fix(quota):** honor explicit per-connection `quotaPreflightEnabled: false` even when the provider has global window defaults — adds early-return guard before the AND-of-negations gate in auth.ts ([#2831])
- **api:** include noAuth providers (opencode, etc.) in `/v1/models` active aliases so their models surface without a DB connection row (#2798)
- **opencode-go:** route Qwen3.x via Claude messages format and repair `fixMissingToolResponses` helper for Claude-shape upstreams (#2791 — thanks @jeferssonlemes)

View File

@@ -3955,7 +3955,7 @@ export const REGISTRY: Record<string, RegistryEntry> = {
alias: "nous",
format: "openai",
executor: "default",
baseUrl: "https://inference-api.nousresearch.com/v1",
baseUrl: "https://inference-api.nousresearch.com/v1/chat/completions",
authType: "apikey",
authHeader: "bearer",
models: [

View File

@@ -0,0 +1,36 @@
/**
* Regression test for #2826 — NOUS-RESEARCH provider always returns 404 Not Found
*
* `nous-research` uses `executor: "default"`. `DefaultExecutor.buildUrl()`'s default
* switch case returns `config.baseUrl` verbatim. Without `/chat/completions` appended
* every outbound request hits `/v1` and gets a 404.
*
* Fix: set `baseUrl` in providerRegistry.ts to include `/chat/completions`.
*/
import test from "node:test";
import assert from "node:assert/strict";
import { DefaultExecutor } from "../../open-sse/executors/default.ts";
test("nous-research DefaultExecutor.buildUrl() returns a URL ending with /chat/completions", () => {
const executor = new DefaultExecutor("nous-research");
const url = executor.buildUrl("Hermes-4-405B", true, 0, null);
assert.match(
url,
/\/chat\/completions$/,
`Expected URL to end with /chat/completions, got: ${url}`
);
});
test("nous-research DefaultExecutor.buildUrl() targets the correct inference endpoint", () => {
const executor = new DefaultExecutor("nous-research");
const url = executor.buildUrl("Hermes-4-70B", false, 0, null);
assert.equal(
url,
"https://inference-api.nousresearch.com/v1/chat/completions"
);
});