diff --git a/package-lock.json b/package-lock.json index a4287086..5fec18c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5782,13 +5782,14 @@ "version": "0.6.0", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent": "^0.5.44", - "@mariozechner/pi-ai": "^0.5.44", + "@mariozechner/pi-agent": "^0.6.0", + "@mariozechner/pi-ai": "^0.6.0", "chalk": "^5.5.0", "glob": "^11.0.3" }, "bin": { - "coding-agent": "dist/cli.js" + "coding-agent": "dist/cli.js", + "pi": "dist/cli.js" }, "devDependencies": { "@types/node": "^24.3.0", @@ -5799,39 +5800,6 @@ "node": ">=20.0.0" } }, - "packages/coding-agent/node_modules/@mariozechner/pi-agent": { - "version": "0.5.48", - "resolved": "https://registry.npmjs.org/@mariozechner/pi-agent/-/pi-agent-0.5.48.tgz", - "integrity": "sha512-8o3iHwmdMGdKmpvQQaYWoNnwdI8ywTQM52zXw1+Gu3qDHG4psKR9P+ZhQa87hW0QPLrNMFhbDStnuY2ySv4Acg==", - "license": "MIT", - "dependencies": { - "@mariozechner/pi-ai": "^0.5.44", - "@mariozechner/pi-tui": "^0.5.48" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "packages/coding-agent/node_modules/@mariozechner/pi-ai": { - "version": "0.5.48", - "resolved": "https://registry.npmjs.org/@mariozechner/pi-ai/-/pi-ai-0.5.48.tgz", - "integrity": "sha512-EbasC5UKLYD9S9jyurU0mWLIxt5crQJ6Gt73mdV1jB5pCpLre9ixSwTMraBhQYRm3oN0gHGuGf+lWxgKA1QQtQ==", - "license": "MIT", - "dependencies": { - "@anthropic-ai/sdk": "^0.61.0", - "@google/genai": "^1.17.0", - "@sinclair/typebox": "^0.34.41", - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "chalk": "^5.6.2", - "openai": "5.21.0", - "partial-json": "^0.1.7", - "zod-to-json-schema": "^3.24.6" - }, - "engines": { - "node": ">=20.0.0" - } - }, "packages/coding-agent/node_modules/@mariozechner/pi-tui": { "version": "0.5.48", "resolved": "https://registry.npmjs.org/@mariozechner/pi-tui/-/pi-tui-0.5.48.tgz", diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 2b86ceeb..1d0f65cc 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -2193,7 +2193,7 @@ export const MODELS = { cacheWrite: 0, }, contextWindow: 262144, - maxTokens: 32768, + maxTokens: 4096, } satisfies Model<"openai-completions">, "openai/gpt-5-pro": { id: "openai/gpt-5-pro", @@ -2346,7 +2346,7 @@ export const MODELS = { cacheWrite: 0, }, contextWindow: 262144, - maxTokens: 32768, + maxTokens: 4096, } satisfies Model<"openai-completions">, "qwen/qwen3-max": { id: "qwen/qwen3-max", diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 713dbd3e..70309dfc 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -21,8 +21,8 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-agent": "^0.5.44", - "@mariozechner/pi-ai": "^0.5.44", + "@mariozechner/pi-agent": "^0.6.0", + "@mariozechner/pi-ai": "^0.6.0", "chalk": "^5.5.0", "glob": "^11.0.3" }, diff --git a/packages/coding-agent/src/main.ts b/packages/coding-agent/src/main.ts index f5ad2be2..fb4066c8 100644 --- a/packages/coding-agent/src/main.ts +++ b/packages/coding-agent/src/main.ts @@ -1,5 +1,5 @@ import { Agent, ProviderTransport, type ThinkingLevel } from "@mariozechner/pi-agent"; -import { getModel } from "@mariozechner/pi-ai"; +import { getModel, type KnownProvider } from "@mariozechner/pi-ai"; import { ProcessTerminal, TUI } from "@mariozechner/pi-tui"; import chalk from "chalk"; import { readFileSync } from "fs"; @@ -16,6 +16,17 @@ const __dirname = dirname(__filename); const packageJson = JSON.parse(readFileSync(join(__dirname, "../package.json"), "utf-8")); const VERSION = packageJson.version; +const envApiKeyMap: Record = { + google: ["GEMINI_API_KEY"], + openai: ["OPENAI_API_KEY"], + anthropic: ["ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_API_KEY"], + xai: ["XAI_API_KEY"], + groq: ["GROQ_API_KEY"], + cerebras: ["CEREBRAS_API_KEY"], + openrouter: ["OPENROUTER_API_KEY"], + zai: ["ZAI_API_KEY"], +}; + interface Args { provider?: string; model?: string; @@ -235,18 +246,7 @@ export async function main(args: string[]) { return parsed.apiKey; } - const envVarMap: Record = { - google: ["GEMINI_API_KEY"], - openai: ["OPENAI_API_KEY"], - anthropic: ["ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_API_KEY"], - xai: ["XAI_API_KEY"], - groq: ["GROQ_API_KEY"], - cerebras: ["CEREBRAS_API_KEY"], - zai: ["ZAI_API_KEY"], - moonshotai: ["MOONSHOT_API_KEY"], - }; - - const envVars = envVarMap[providerName] || [`${providerName.toUpperCase()}_API_KEY`]; + const envVars = envApiKeyMap[providerName as KnownProvider]; // Check each environment variable in priority order for (const envVar of envVars) { @@ -262,17 +262,7 @@ export async function main(args: string[]) { // Get initial API key const initialApiKey = getApiKeyForProvider(provider); if (!initialApiKey) { - const envVarMap: Record = { - google: ["GEMINI_API_KEY"], - openai: ["OPENAI_API_KEY"], - anthropic: ["ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_API_KEY"], - xai: ["XAI_API_KEY"], - groq: ["GROQ_API_KEY"], - cerebras: ["CEREBRAS_API_KEY"], - zai: ["ZAI_API_KEY"], - moonshotai: ["MOONSHOT_API_KEY"], - }; - const envVars = envVarMap[provider] || [`${provider.toUpperCase()}_API_KEY`]; + const envVars = envApiKeyMap[provider as KnownProvider]; const envVarList = envVars.join(" or "); console.error(chalk.red(`Error: No API key found for provider "${provider}"`)); console.error(chalk.dim(`Set ${envVarList} environment variable or use --api-key flag`));