Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions models/nace-ai/drex-v2.0.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Sources:
# - https://huggingface.co/nace-ai/drex-v2.0
# - https://github.com/nace-ai/drex-decision-models/blob/main/docs/context-length.md
# - https://console.nace.ai/docs/drex/reference/models
# Context is the model's maximum state-plus-one-question length, not the
# first-party API's smaller Drex 2.0 limit before fallback to Drex 1.5.
name = "Drex 2.0"
type = "decision"
description = "35B mixture-of-experts System One decision model with 3B active parameters, returning typed, calibrated probabilities over text or structured state without generating text"
release_date = "2026-10-06"
last_updated = "2026-10-12"
attachment = false
reasoning = false
temperature = false
tool_call = false
structured_output = true
open_weights = true
license = "Nace.AI Open RAIL-M"

[limit]
context = 131_072
output = 0

[modalities]
input = ["text"]
output = ["text"]

[[links]]
label = "Documentation"
url = "https://github.com/nace-ai/drex-decision-models"
type = "docs"

[[links]]
label = "License"
url = "https://huggingface.co/nace-ai/drex-v2.0/blob/main/LICENSE"
type = "license"

[[weights]]
url = "https://huggingface.co/nace-ai/drex-v2.0"
format = "safetensors"
5 changes: 3 additions & 2 deletions packages/core/src/sync/providers/openrouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,11 @@ export function buildOpenRouterModel(
const limit = {
context,
input: existing?.limit?.input,
output: OUTPUT_LIMIT_OVERRIDES[model.id]
// Decision models evaluate state without generating completion tokens.
output: decision ? 0 : (OUTPUT_LIMIT_OVERRIDES[model.id]
?? model.top_provider.max_completion_tokens
?? existing?.limit?.output
?? context,
?? context),
};
const canonical = existing?.base_model ?? baseModel ?? resolveCanonicalBaseModel(model.id);

Expand Down
22 changes: 22 additions & 0 deletions packages/core/test/sync.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5189,6 +5189,7 @@ test("syncs OpenRouter decision models with no supported parameters as decision
description: "Decision model for typed evaluation of shared state",
modalities: { input: ["text", "image"], output: ["text"] },
cost: { input: 0.15, output: 0 },
limit: { context: 65_536, output: 0 },
});
expect(openrouter.translateModel(openRouterModel(), {
existing: () => undefined,
Expand All @@ -5214,6 +5215,27 @@ test("factors OpenRouter decision models onto decision lab metadata without a ch
expect(translated?.model).toMatchObject({ base_model: "liquid/d1", cost: { input: 0.04, output: 0 } });
expect(translated?.model).not.toHaveProperty("type"); // inherited from lab metadata
expect(translated?.model).not.toHaveProperty("description");
expect(translated?.model).not.toHaveProperty("limit");
});

test("inherits canonical Drex2 metadata instead of retaining an OpenRouter completion limit", () => {
for (const existing of [undefined, { limit: { output: 117_964 } }]) {
const model = buildOpenRouterModel(openRouterModel({
id: "nace-ai/drex-v2.0",
name: "Nace AI: Drex v2.0",
knowledge_cutoff: null,
context_length: 131_072,
architecture: { input_modalities: ["text"], output_modalities: ["decisions"] },
pricing: { prompt: "0.00000006", completion: "0" },
top_provider: { context_length: 131_072, max_completion_tokens: 117_964 },
supported_parameters: [],
}), existing);

expect(model).toMatchObject({ base_model: "nace-ai/drex-v2.0", cost: { input: 0.06, output: 0 } });
for (const inherited of ["type", "description", "limit", "structured_output", "open_weights"]) {
expect(model).not.toHaveProperty(inherited);
}
}
});

test("parses nullable EmpirioLabs release dates", () => {
Expand Down
20 changes: 1 addition & 19 deletions providers/openrouter/models/nace-ai/drex-v2.0.toml
Original file line number Diff line number Diff line change
@@ -1,23 +1,5 @@
type = "decision"
name = "Drex v2.0"
description = "Decision model for typed evaluation of shared state"
release_date = "2026-10-12"
last_updated = "2026-10-12"
attachment = false
reasoning = false
temperature = false
tool_call = false
structured_output = false
open_weights = false
base_model = "nace-ai/drex-v2.0"

[cost]
input = 0.06
output = 0

[limit]
context = 131_072
output = 117_964

[modalities]
input = ["text"]
output = ["text"]
Loading