From 3f2039edfb7634565134205699a10d6d1270ed22 Mon Sep 17 00:00:00 2001 From: Nirupam Bhowmick <48842933+heydryft@users.noreply.github.com> Date: Sun, 8 Nov 2026 06:40:55 +0000 Subject: [PATCH] feat(providers): add Runcrate preset --- CHANGELOG.md | 1 + src/agent/providerPresets.js | 8 ++++++++ tests/provider-presets.test.mjs | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5166b2..2f6768e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Notable user-facing changes are recorded here. `main` may be ahead of tagged Git - Local ongoing-task observations, change-aware reporting, configurable stop conditions, and per-round budgets. - Autonomous scheduling and removal of follow-ups within the authorized goal. - English and Chinese project homepages, setup guides, documentation navigation, and community contribution/reporting files. +- Runcrate inference provider preset (OpenAI-compatible, `https://api.runcrate.ai/v1`). ### Changed diff --git a/src/agent/providerPresets.js b/src/agent/providerPresets.js index 1ca28d5..24a4777 100644 --- a/src/agent/providerPresets.js +++ b/src/agent/providerPresets.js @@ -251,6 +251,14 @@ export const PROVIDER_PRESETS = [ protocol: 'openai-compatible', apiKeyPlaceholder: '...' }, + { + id: 'runcrate', + name: 'Runcrate', + baseURL: 'https://api.runcrate.ai/v1', + model: 'Qwen/Qwen3-235B-A22B-Instruct-2507', + protocol: 'openai-compatible', + apiKeyPlaceholder: '...' + }, { id: 'featherless', name: 'Featherless', diff --git a/tests/provider-presets.test.mjs b/tests/provider-presets.test.mjs index 289a0ac..aa50566 100644 --- a/tests/provider-presets.test.mjs +++ b/tests/provider-presets.test.mjs @@ -32,6 +32,15 @@ test('openai-compatible custom preset keeps empty base and still has protocol', assert.equal(custom.protocol, 'openai-compatible'); }); +test('runcrate preset targets the OpenAI-compatible endpoint with a tool-calling default model', () => { + const runcrate = PROVIDER_PRESETS.find((p) => p.id === 'runcrate'); + assert.ok(runcrate); + assert.equal(runcrate.name, 'Runcrate'); + assert.equal(runcrate.baseURL, 'https://api.runcrate.ai/v1'); + assert.equal(runcrate.protocol, 'openai-compatible'); + assert.equal(runcrate.model, 'Qwen/Qwen3-235B-A22B-Instruct-2507'); +}); + test('custom preset stays in catalogs for apply, but not in template combobox options', () => { assert.ok(PROVIDER_PRESETS.some((p) => p.id === 'openai-compatible')); assert.ok(IMAGE_PROVIDER_PRESETS.some((p) => p.id === 'openai-compatible'));