diff --git a/package-lock.json b/package-lock.json index ea9e7057..39c1e71e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5975,11 +5975,11 @@ }, "packages/agent": { "name": "@mariozechner/pi-agent-core", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { - "@mariozechner/pi-ai": "^0.12.8", - "@mariozechner/pi-tui": "^0.12.8" + "@mariozechner/pi-ai": "^0.12.9", + "@mariozechner/pi-tui": "^0.12.9" }, "devDependencies": { "@types/node": "^24.3.0", @@ -6009,7 +6009,7 @@ }, "packages/ai": { "name": "@mariozechner/pi-ai", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "^0.61.0", @@ -6050,12 +6050,12 @@ }, "packages/coding-agent": { "name": "@mariozechner/pi-coding-agent", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent-core": "^0.12.8", - "@mariozechner/pi-ai": "^0.12.8", - "@mariozechner/pi-tui": "^0.12.8", + "@mariozechner/pi-agent-core": "^0.12.9", + "@mariozechner/pi-ai": "^0.12.9", + "@mariozechner/pi-tui": "^0.12.9", "chalk": "^5.5.0", "diff": "^8.0.2", "glob": "^11.0.3" @@ -6092,12 +6092,12 @@ }, "packages/mom": { "name": "@mariozechner/pi-mom", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.16", - "@mariozechner/pi-agent-core": "^0.12.8", - "@mariozechner/pi-ai": "^0.12.8", + "@mariozechner/pi-agent-core": "^0.12.9", + "@mariozechner/pi-ai": "^0.12.9", "@sinclair/typebox": "^0.34.0", "@slack/socket-mode": "^2.0.0", "@slack/web-api": "^7.0.0", @@ -6135,10 +6135,10 @@ }, "packages/pods": { "name": "@mariozechner/pi", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent-core": "^0.12.8", + "@mariozechner/pi-agent-core": "^0.12.9", "chalk": "^5.5.0" }, "bin": { @@ -6151,7 +6151,7 @@ }, "packages/proxy": { "name": "@mariozechner/pi-proxy", - "version": "0.12.9", + "version": "0.12.10", "dependencies": { "@hono/node-server": "^1.14.0", "hono": "^4.6.16" @@ -6167,7 +6167,7 @@ }, "packages/tui": { "name": "@mariozechner/pi-tui", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { "@types/mime-types": "^2.1.4", @@ -6211,12 +6211,12 @@ }, "packages/web-ui": { "name": "@mariozechner/pi-web-ui", - "version": "0.12.9", + "version": "0.12.10", "license": "MIT", "dependencies": { "@lmstudio/sdk": "^1.5.0", - "@mariozechner/pi-ai": "^0.12.8", - "@mariozechner/pi-tui": "^0.12.8", + "@mariozechner/pi-ai": "^0.12.9", + "@mariozechner/pi-tui": "^0.12.9", "docx-preview": "^0.3.7", "jszip": "^3.10.1", "lucide": "^0.544.0", @@ -6237,7 +6237,7 @@ }, "packages/web-ui/example": { "name": "pi-web-ui-example", - "version": "1.0.5", + "version": "1.0.6", "dependencies": { "@mariozechner/mini-lit": "^0.2.0", "@mariozechner/pi-ai": "file:../../ai", diff --git a/packages/agent/package.json b/packages/agent/package.json index 711cc531..9b9506af 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-agent-core", - "version": "0.12.9", + "version": "0.12.10", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", @@ -18,8 +18,8 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-ai": "^0.12.9", - "@mariozechner/pi-tui": "^0.12.9" + "@mariozechner/pi-ai": "^0.12.10", + "@mariozechner/pi-tui": "^0.12.10" }, "keywords": [ "ai", diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 378d6ea7..61da782e 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] +## [0.12.10] - 2025-12-04 + +### Added + +- Added `gpt-5.1-codex-max` model support + ### Fixed - **OpenAI Token Counting**: Fixed `usage.input` to exclude cached tokens for OpenAI providers. Previously, `input` included cached tokens, causing double-counting when calculating total context size via `input + cacheRead`. Now `input` represents non-cached input tokens across all providers, making `input + output + cacheRead + cacheWrite` the correct formula for total context size. diff --git a/packages/ai/package.json b/packages/ai/package.json index 915398a1..91d9a951 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-ai", - "version": "0.12.9", + "version": "0.12.10", "description": "Unified LLM API with automatic model discovery and provider configuration", "type": "module", "main": "./dist/index.js", diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index c1e06ec9..d5908d9c 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -344,6 +344,26 @@ async function generateModels() { }); } + if (!allModels.some(m => m.provider === "openai" && m.id === "gpt-5.1-codex-max")) { + allModels.push({ + id: "gpt-5.1-codex-max", + name: "GPT-5.1 Codex Max", + api: "openai-responses", + baseUrl: "https://api.openai.com/v1", + provider: "openai", + reasoning: true, + input: ["text", "image"], + cost: { + input: 1.25, + output: 10, + cacheRead: 0.125, + cacheWrite: 0, + }, + contextWindow: 400000, + maxTokens: 128000, + }); + } + // Add missing Grok models if (!allModels.some(m => m.provider === "xai" && m.id === "grok-code-fast-1")) { allModels.push({ diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 106f38df..416afaac 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -1199,6 +1199,23 @@ export const MODELS = { contextWindow: 128000, maxTokens: 16384, } satisfies Model<"openai-responses">, + "gpt-5.1-codex-max": { + id: "gpt-5.1-codex-max", + name: "GPT-5.1 Codex Max", + api: "openai-responses", + provider: "openai", + baseUrl: "https://api.openai.com/v1", + reasoning: true, + input: ["text", "image"], + cost: { + input: 1.25, + output: 10, + cacheRead: 0.125, + cacheWrite: 0, + }, + contextWindow: 400000, + maxTokens: 128000, + } satisfies Model<"openai-responses">, }, groq: { "llama-3.1-8b-instant": { @@ -3861,23 +3878,6 @@ export const MODELS = { contextWindow: 131072, maxTokens: 4096, } satisfies Model<"openai-completions">, - "mistralai/magistral-small-2506": { - id: "mistralai/magistral-small-2506", - name: "Mistral: Magistral Small 2506", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text"], - cost: { - input: 0.5, - output: 1.5, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 40000, - maxTokens: 40000, - } satisfies Model<"openai-completions">, "mistralai/magistral-medium-2506:thinking": { id: "mistralai/magistral-medium-2506:thinking", name: "Mistral: Magistral Medium 2506 (thinking)", @@ -3895,23 +3895,6 @@ export const MODELS = { contextWindow: 40960, maxTokens: 40000, } satisfies Model<"openai-completions">, - "mistralai/magistral-medium-2506": { - id: "mistralai/magistral-medium-2506", - name: "Mistral: Magistral Medium 2506", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text"], - cost: { - input: 2, - output: 5, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 40960, - maxTokens: 40000, - } satisfies Model<"openai-completions">, "google/gemini-2.5-pro-preview": { id: "google/gemini-2.5-pro-preview", name: "Google: Gemini 2.5 Pro Preview 06-05", @@ -3980,23 +3963,6 @@ export const MODELS = { contextWindow: 1000000, maxTokens: 64000, } satisfies Model<"openai-completions">, - "mistralai/devstral-small-2505": { - id: "mistralai/devstral-small-2505", - name: "Mistral: Devstral Small 2505", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 0.06, - output: 0.12, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 128000, - maxTokens: 4096, - } satisfies Model<"openai-completions">, "openai/codex-mini": { id: "openai/codex-mini", name: "OpenAI: Codex Mini", @@ -4397,13 +4363,13 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.19999999999999998, - output: 0.88, - cacheRead: 0.106, + input: 0.15, + output: 0.7, + cacheRead: 0, cacheWrite: 0, }, - contextWindow: 163840, - maxTokens: 4096, + contextWindow: 8192, + maxTokens: 7168, } satisfies Model<"openai-completions">, "mistralai/mistral-small-3.1-24b-instruct:free": { id: "mistralai/mistral-small-3.1-24b-instruct:free", @@ -4711,23 +4677,6 @@ export const MODELS = { contextWindow: 163840, maxTokens: 4096, } satisfies Model<"openai-completions">, - "mistralai/codestral-2501": { - id: "mistralai/codestral-2501", - name: "Mistral: Codestral 2501", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 0.3, - output: 0.8999999999999999, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 256000, - maxTokens: 4096, - } satisfies Model<"openai-completions">, "deepseek/deepseek-chat": { id: "deepseek/deepseek-chat", name: "DeepSeek: DeepSeek V3", @@ -5595,23 +5544,6 @@ export const MODELS = { contextWindow: 128000, maxTokens: 4096, } satisfies Model<"openai-completions">, - "mistralai/mistral-small": { - id: "mistralai/mistral-small", - name: "Mistral Small", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text"], - cost: { - input: 0.19999999999999998, - output: 0.6, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 32768, - maxTokens: 4096, - } satisfies Model<"openai-completions">, "mistralai/mistral-tiny": { id: "mistralai/mistral-tiny", name: "Mistral Tiny", diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index e17b2349..cbb917f7 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] +## [0.12.10] - 2025-12-04 + +### Added + +- Added `gpt-5.1-codex-max` model support + ## [0.12.9] - 2025-12-04 ### Added diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 4982d04e..9f2a4d20 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-coding-agent", - "version": "0.12.9", + "version": "0.12.10", "description": "Coding agent CLI with read, bash, edit, write tools and session management", "type": "module", "piConfig": { @@ -28,9 +28,9 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-agent-core": "^0.12.9", - "@mariozechner/pi-ai": "^0.12.9", - "@mariozechner/pi-tui": "^0.12.9", + "@mariozechner/pi-agent-core": "^0.12.10", + "@mariozechner/pi-ai": "^0.12.10", + "@mariozechner/pi-tui": "^0.12.10", "chalk": "^5.5.0", "diff": "^8.0.2", "glob": "^11.0.3" diff --git a/packages/mom/package.json b/packages/mom/package.json index e5467fb7..1f822de2 100644 --- a/packages/mom/package.json +++ b/packages/mom/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-mom", - "version": "0.12.9", + "version": "0.12.10", "description": "Slack bot that delegates messages to the pi coding agent", "type": "module", "bin": { @@ -21,8 +21,8 @@ }, "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.16", - "@mariozechner/pi-agent-core": "^0.12.9", - "@mariozechner/pi-ai": "^0.12.9", + "@mariozechner/pi-agent-core": "^0.12.10", + "@mariozechner/pi-ai": "^0.12.10", "@sinclair/typebox": "^0.34.0", "@slack/socket-mode": "^2.0.0", "@slack/web-api": "^7.0.0", diff --git a/packages/mom/src/agent.ts b/packages/mom/src/agent.ts index fa04f383..e6bbaa54 100644 --- a/packages/mom/src/agent.ts +++ b/packages/mom/src/agent.ts @@ -249,6 +249,15 @@ Update when you learn something important or when asked to remember something. ### Current Memory ${memory} +## System Configuration Log +Maintain ${workspacePath}/SYSTEM.md to log all environment modifications: +- Installed packages (apk add, npm install, pip install) +- Environment variables set +- Config files modified (~/.gitconfig, cron jobs, etc.) +- Skill dependencies installed + +Update this file whenever you modify the environment. On fresh container, read it first to restore your setup. + ## Log Queries (CRITICAL: limit output to avoid context overflow) Format: \`{"date":"...","ts":"...","user":"...","userName":"...","text":"...","isBot":false}\` The log contains user messages AND your tool calls/results. Filter appropriately. diff --git a/packages/pods/package.json b/packages/pods/package.json index 65c7f476..29fc87ce 100644 --- a/packages/pods/package.json +++ b/packages/pods/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi", - "version": "0.12.9", + "version": "0.12.10", "description": "CLI tool for managing vLLM deployments on GPU pods", "type": "module", "bin": { @@ -34,7 +34,7 @@ "node": ">=20.0.0" }, "dependencies": { - "@mariozechner/pi-agent-core": "^0.12.9", + "@mariozechner/pi-agent-core": "^0.12.10", "chalk": "^5.5.0" }, "devDependencies": {} diff --git a/packages/proxy/package.json b/packages/proxy/package.json index 5bd7887d..55325e31 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-proxy", - "version": "0.12.9", + "version": "0.12.10", "type": "module", "description": "CORS and authentication proxy for pi-ai", "main": "dist/index.js", diff --git a/packages/tui/package.json b/packages/tui/package.json index 1f2c6635..fa751aa9 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-tui", - "version": "0.12.9", + "version": "0.12.10", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js", diff --git a/packages/web-ui/example/package.json b/packages/web-ui/example/package.json index 2da04b36..36a3d1ff 100644 --- a/packages/web-ui/example/package.json +++ b/packages/web-ui/example/package.json @@ -1,6 +1,6 @@ { "name": "pi-web-ui-example", - "version": "1.0.5", + "version": "1.0.6", "private": true, "type": "module", "scripts": { diff --git a/packages/web-ui/package.json b/packages/web-ui/package.json index f9b8a277..31e51b5c 100644 --- a/packages/web-ui/package.json +++ b/packages/web-ui/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-web-ui", - "version": "0.12.9", + "version": "0.12.10", "description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai", "type": "module", "main": "dist/index.js", @@ -18,8 +18,8 @@ }, "dependencies": { "@lmstudio/sdk": "^1.5.0", - "@mariozechner/pi-ai": "^0.12.9", - "@mariozechner/pi-tui": "^0.12.9", + "@mariozechner/pi-ai": "^0.12.10", + "@mariozechner/pi-tui": "^0.12.10", "docx-preview": "^0.3.7", "jszip": "^3.10.1", "lucide": "^0.544.0",