pin all CLI installations to explicit versions and use pro models by default (#283)

* pin all CLI installations to explicit versions and use pro models by default

- codex: pin @openai/codex to 0.101.0 (was "latest")
- opencode: pin opencode-ai to 1.1.56 (was "latest")
- gemini: pin gemini-cli to v0.28.2 via new tag param on installFromGithub
- cursor: pin to 2026.01.28-fd13201 via direct tarball download (replaces curl install script)
- add installFromDirectTarball to install.ts for versioned tarball URLs
- gemini auto effort now uses pro-preview instead of flash-preview
- test runner model overrides updated to use pro-preview consistently

Co-authored-by: Cursor <cursoragent@cursor.com>

* increase activity timeout

* fix delegation timeout

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
David Blass
2026-02-12 22:48:29 +00:00
committed by pullfrog[bot]
parent 9071c0ae6c
commit ceadb3120a
8 changed files with 163 additions and 65 deletions
+6 -1
View File
@@ -24,7 +24,7 @@ const geminiEffortConfig: Record<Effort, { model: string; thinkingLevel: string
// pass the model directly it works if we ever did need to do something like this,
// we could write to .gemini/settings.json
mini: { model: "gemini-3-flash-preview", thinkingLevel: "LOW" },
auto: { model: "gemini-3-flash-preview", thinkingLevel: "HIGH" },
auto: { model: "gemini-3-pro-preview", thinkingLevel: "HIGH" },
max: { model: "gemini-3-pro-preview", thinkingLevel: "HIGH" },
} as const;
@@ -85,6 +85,9 @@ type GeminiEvent =
| GeminiToolResultEvent
| GeminiResultEvent;
// pinned CLI version — gemini-cli is installed from GitHub releases, not npm
const GEMINI_CLI_VERSION = "v0.28.2";
// transient API error patterns that warrant a retry.
// these are server-side issues, not client errors.
const TRANSIENT_ERROR_PATTERNS = [
@@ -191,6 +194,7 @@ async function installGemini(githubInstallationToken?: string): Promise<string>
return await installFromGithub({
owner: "google-gemini",
repo: "gemini-cli",
tag: GEMINI_CLI_VERSION,
assetName: "gemini.js",
...(githubInstallationToken && { githubInstallationToken }),
});
@@ -231,6 +235,7 @@ export const gemini = agent({
cmd: "node",
args: [cliPath, ...args],
env: process.env,
activityTimeout: 0, // disabled: process-level timeout in main.ts handles this (subprocess timeout would kill orchestrator during delegation)
onStdout: async (chunk) => {
const text = chunk.toString();
finalOutput += text;