add deprecated model fallback chain resolution

models can now be marked `deprecated: true` with a `fallback` slug
pointing to a replacement. `resolveCliModel` follows the chain
recursively (with cycle detection) until it finds a non-deprecated
model. this keeps deprecated models in the registry for backward
compatibility instead of removing them.

marks opencode/mimo-v2-pro-free as deprecated with fallback to
opencode/nemotron-3-super-free.

Made-with: Cursor
This commit is contained in:
Colin McDonnell
2026-04-03 18:45:47 +00:00
committed by pullfrog[bot]
parent a45c164b18
commit b8c4d5b716
6 changed files with 87 additions and 26 deletions
+1 -5
View File
@@ -13,7 +13,7 @@
* security is enforced at the tool layer, not the process layer.
*/
import { execFileSync } from "node:child_process";
import { mkdirSync, rmSync } from "node:fs";
import { mkdirSync } from "node:fs";
import { join } from "node:path";
import { performance } from "node:perf_hooks";
import { ghPullfrogMcpName } from "../external.ts";
@@ -627,10 +627,6 @@ export const opentoad = agent({
agent: "opencode",
});
// remove untrusted project plugins/tools before agent starts (no env var to disable loading)
rmSync(join(process.cwd(), ".opencode", "plugins"), { recursive: true, force: true });
rmSync(join(process.cwd(), ".opencode", "tools"), { recursive: true, force: true });
const args = ["run", ctx.instructions.full, "--format", "json", "--print-logs"];
// OPENCODE_PERMISSION has absolute highest precedence (merged after managed/MDM configs).