diff --git a/bun.lock b/bun.lock index 7615aae9c..f824a1e6e 100644 --- a/bun.lock +++ b/bun.lock @@ -5,13 +5,13 @@ "": { "name": "omp-monorepo", "devDependencies": { - "@biomejs/biome": "^2", + "@biomejs/biome": "^2.4", "@bufbuild/protoc-gen-es": "^2.11", "@types/bun": "^1.3", - "@typescript/native-preview": "^7.0.0-dev.20260222.1", - "lint-staged": "^16.2", + "@typescript/native-preview": "^7.0.0-dev.20260302.1", + "lint-staged": "^16.3", "prettier": "^3.8", - "rustup": "1.0.10", + "rustup": "^1.0", }, }, "packages/agent": { @@ -33,8 +33,8 @@ "pi-ai": "./src/cli.ts", }, "dependencies": { - "@anthropic-ai/sdk": "^0.77.0", - "@aws-sdk/client-bedrock-runtime": "^3.998", + "@anthropic-ai/sdk": "^0.78", + "@aws-sdk/client-bedrock-runtime": "^3.1000", "@bufbuild/protobuf": "^2.11", "@google/genai": "^1.43", "@oh-my-pi/pi-utils": "workspace:*", @@ -44,7 +44,7 @@ "ajv-formats": "^3.0", "openai": "^6.25", "partial-json": "^0.1", - "zod": "4.3.5", + "zod": "^4.3", }, "devDependencies": { "@types/bun": "^1.3", @@ -120,10 +120,10 @@ "dependencies": { "@oh-my-pi/pi-ai": "workspace:*", "@oh-my-pi/pi-utils": "workspace:*", - "@tailwindcss/node": "4", + "@tailwindcss/node": "^4.2", "chart.js": "^4.5", "date-fns": "^4.1", - "lucide-react": "^0.575", + "lucide-react": "^0.576", "react": "^19.2", "react-chartjs-2": "^5.3", "react-dom": "^19.2", @@ -133,7 +133,7 @@ "@types/react": "^19.2", "@types/react-dom": "^19.2", "postcss": "^8.5", - "tailwindcss": "4", + "tailwindcss": "^4.2", }, }, "packages/swarm-extension": { @@ -166,7 +166,7 @@ "name": "@oh-my-pi/pi-utils", "version": "13.6.0", "dependencies": { - "beautiful-mermaid": "1.1.3", + "beautiful-mermaid": "^1.1", "winston": "^3.19", "winston-daily-rotate-file": "^5.0", }, @@ -176,7 +176,7 @@ }, }, "packages": { - "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.77.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-TivlT6nfidz3sOyMF72T2x5AkmHrpT7JgL2e/0HNdh7b24v7JC8cR+rCY/42jA68xIsjmiGQ5IKMsH9feEKh3A=="], + "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.78.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-PzQhR715td/m1UaaN5hHXjYB8Gl2lF9UVhrrGrZeysiF6Rb74Wc9GCB8hzLdzmQtBd1qe89F9OptgB9Za1Ib5w=="], "@aws-crypto/crc32": ["@aws-crypto/crc32@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg=="], @@ -778,7 +778,7 @@ "lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], - "lucide-react": ["lucide-react@0.575.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-VuXgKZrk0uiDlWjGGXmKV6MSk9Yy4l10qgVvzGn2AWBx1Ylt0iBexKOAoA6I7JO3m+M9oeovJd3yYENfkUbOeg=="], + "lucide-react": ["lucide-react@0.576.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-koNxU14BXrxUfZQ9cUaP0ES1uyPZKYDjk31FQZB6dQ/x+tXk979sVAn9ppZ/pVeJJyOxVM8j1E+8QEuSc02Vug=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], diff --git a/package.json b/package.json index b874595da..3dff07769 100644 --- a/package.json +++ b/package.json @@ -41,13 +41,13 @@ "mermaid-build": "bun scripts/mermaid-build.ts" }, "devDependencies": { - "@biomejs/biome": "^2", + "@biomejs/biome": "^2.4", "@bufbuild/protoc-gen-es": "^2.11", "@types/bun": "^1.3", - "@typescript/native-preview": "^7.0.0-dev.20260222.1", - "lint-staged": "^16.2", + "@typescript/native-preview": "^7.0.0-dev.20260302.1", + "lint-staged": "^16.3", "prettier": "^3.8", - "rustup": "1.0.10" + "rustup": "^1.0" }, "lint-staged": { "*.{js,ts,jsx,tsx,json,jsonc,css}": "biome check --write --no-errors-on-unmatched" diff --git a/packages/ai/package.json b/packages/ai/package.json index dfbd78058..14697ca6a 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -37,8 +37,8 @@ "test": "bun test" }, "dependencies": { - "@anthropic-ai/sdk": "^0.77.0", - "@aws-sdk/client-bedrock-runtime": "^3.998", + "@anthropic-ai/sdk": "^0.78", + "@aws-sdk/client-bedrock-runtime": "^3.1000", "@bufbuild/protobuf": "^2.11", "@google/genai": "^1.43", "@oh-my-pi/pi-utils": "workspace:*", @@ -48,7 +48,7 @@ "ajv-formats": "^3.0", "openai": "^6.25", "partial-json": "^0.1", - "zod": "4.3.5" + "zod": "^4.3" }, "devDependencies": { "@types/bun": "^1.3" diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index d5764bb8d..5333f349d 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -1,5 +1,13 @@ #!/usr/bin/env bun +// Copilot model premium request multipliers by model identifier. +const COPILOT_PREMIUM_MULTIPLIERS: Record = { + "github-copilot/claude-haiku-4.5": 0.33, + "github-copilot/claude-opus-4.6": 3, + "github-copilot/gpt-4o": 0, + "github-copilot/grok-code-fast-1": 0.25, +}; + import * as path from "node:path"; import { $env } from "@oh-my-pi/pi-utils"; import { createModelManager } from "../src/model-manager"; @@ -144,6 +152,22 @@ function applyGlobalModelsDevFallback(models: readonly Model[], modelsDevModels: }); } + +function applyPremiumMultiplierOverrides(models: readonly Model[]): Model[] { + return models.map(model => { + const premiumMultiplier = COPILOT_PREMIUM_MULTIPLIERS[`${model.provider}/${model.id}`]; + if (premiumMultiplier === undefined) { + return model; + } + if (model.premiumMultiplier === premiumMultiplier) { + return model; + } + return { + ...model, + premiumMultiplier, + }; + }); + } const ANTIGRAVITY_ENDPOINT = "https://daily-cloudcode-pa.sandbox.googleapis.com"; async function getOAuthCredentialsFromStorage(provider: OAuthProvider): Promise { @@ -299,6 +323,7 @@ async function generateModels() { } allModels = applyGlobalModelsDevFallback(allModels, modelsDevModels); + allModels = applyPremiumMultiplierOverrides(allModels); // Group by provider and sort each provider's models const providers: Record> = {}; diff --git a/packages/ai/src/models.json b/packages/ai/src/models.json index 903f04a6a..13660aea2 100644 --- a/packages/ai/src/models.json +++ b/packages/ai/src/models.json @@ -3227,7 +3227,6 @@ "name": "Claude Haiku 4.5", "api": "anthropic-messages", "provider": "github-copilot", - "premiumMultiplier": 0.33, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3247,14 +3246,14 @@ "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" - } + }, + "premiumMultiplier": 0.33 }, "claude-opus-4.5": { "id": "claude-opus-4.5", "name": "Claude Opus 4.5", "api": "anthropic-messages", "provider": "github-copilot", - "premiumMultiplier": 3, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3281,7 +3280,6 @@ "name": "Claude Opus 4.6", "api": "anthropic-messages", "provider": "github-copilot", - "premiumMultiplier": 3, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3301,14 +3299,14 @@ "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" - } + }, + "premiumMultiplier": 3 }, "claude-sonnet-4": { "id": "claude-sonnet-4", "name": "Claude Sonnet 4", "api": "anthropic-messages", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3335,7 +3333,6 @@ "name": "Claude Sonnet 4.5", "api": "anthropic-messages", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3362,7 +3359,6 @@ "name": "Claude Sonnet 4.6", "api": "anthropic-messages", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3389,7 +3385,6 @@ "name": "Gemini 2.5 Pro", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": false, "input": [ @@ -3421,7 +3416,6 @@ "name": "Gemini 3 Flash", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 0.33, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3453,7 +3447,6 @@ "name": "Gemini 3 Pro Preview", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3485,7 +3478,6 @@ "name": "Gemini 3.1 Pro Preview", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3517,7 +3509,6 @@ "name": "GPT-4.1", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 0, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": false, "input": [ @@ -3549,7 +3540,6 @@ "name": "GPT-4o", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 0, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": false, "input": [ @@ -3574,14 +3564,14 @@ "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false - } + }, + "premiumMultiplier": 0 }, "gpt-5": { "id": "gpt-5", "name": "GPT-5", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3608,7 +3598,6 @@ "name": "GPT-5-mini", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 0, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3635,7 +3624,6 @@ "name": "GPT-5.1", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3662,7 +3650,6 @@ "name": "GPT-5.1-Codex", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3689,7 +3676,6 @@ "name": "GPT-5.1-Codex-max", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3716,7 +3702,6 @@ "name": "GPT-5.1-Codex-mini", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 0.33, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3743,7 +3728,6 @@ "name": "GPT-5.2", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3770,7 +3754,6 @@ "name": "GPT-5.2-Codex", "api": "openai-responses", "provider": "github-copilot", - "premiumMultiplier": 1, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3794,7 +3777,7 @@ }, "gpt-5.3-codex": { "id": "gpt-5.3-codex", - "name": "GPT-5.3-Codex", + "name": "GPT-5.3 Codex", "api": "openai-responses", "provider": "github-copilot", "premiumMultiplier": 1, @@ -3824,7 +3807,6 @@ "name": "Grok Code Fast 1", "api": "openai-completions", "provider": "github-copilot", - "premiumMultiplier": 0.25, "baseUrl": "https://api.individual.githubcopilot.com", "reasoning": true, "input": [ @@ -3848,7 +3830,8 @@ "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false - } + }, + "premiumMultiplier": 0.25 } }, "mistral": { @@ -19742,7 +19725,7 @@ "cacheWrite": 0 }, "contextWindow": 163840, - "maxTokens": 163840 + "maxTokens": 65536 }, "deepseek/deepseek-v3.2-exp": { "id": "deepseek/deepseek-v3.2-exp", @@ -19763,6 +19746,25 @@ "contextWindow": 163840, "maxTokens": 65536 }, + "essentialai/rnj-1-instruct": { + "id": "essentialai/rnj-1-instruct", + "name": "EssentialAI: Rnj 1 Instruct", + "api": "openai-completions", + "provider": "openrouter", + "baseUrl": "https://openrouter.ai/api/v1", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0.15, + "output": 0.15, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 32768, + "maxTokens": 8888 + }, "google/gemini-2.0-flash-001": { "id": "google/gemini-2.0-flash-001", "name": "Google: Gemini 2.0 Flash", @@ -19861,7 +19863,7 @@ "cacheWrite": 0.08333333333333334 }, "contextWindow": 1048576, - "maxTokens": 65535 + "maxTokens": 65536 }, "google/gemini-2.5-flash-preview-09-2025": { "id": "google/gemini-2.5-flash-preview-09-2025", @@ -19961,7 +19963,7 @@ "cacheWrite": 0.08333333333333334 }, "contextWindow": 1048576, - "maxTokens": 65535 + "maxTokens": 65536 }, "google/gemini-3-pro-preview": { "id": "google/gemini-3-pro-preview", @@ -20137,7 +20139,7 @@ "cacheWrite": 0 }, "contextWindow": 131072, - "maxTokens": 32768 + "maxTokens": 131072 }, "meta-llama/llama-3-8b-instruct": { "id": "meta-llama/llama-3-8b-instruct", @@ -20329,7 +20331,7 @@ "cacheWrite": 0 }, "contextWindow": 196608, - "maxTokens": 65536 + "maxTokens": 196608 }, "minimax/minimax-m2.1": { "id": "minimax/minimax-m2.1", @@ -22987,12 +22989,12 @@ ], "cost": { "input": 0.25, - "output": 2, + "output": 1, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 262144, - "maxTokens": 65536 + "maxTokens": 262144 }, "qwen/qwen3.5-397b-a17b": { "id": "qwen/qwen3.5-397b-a17b", @@ -23250,6 +23252,25 @@ "contextWindow": 163840, "maxTokens": 65536 }, + "upstage/solar-pro-3": { + "id": "upstage/solar-pro-3", + "name": "Upstage: Solar Pro 3", + "api": "openai-completions", + "provider": "openrouter", + "baseUrl": "https://openrouter.ai/api/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.15, + "output": 0.6, + "cacheRead": 0.015, + "cacheWrite": 0 + }, + "contextWindow": 128000, + "maxTokens": 8888 + }, "upstage/solar-pro-3:free": { "id": "upstage/solar-pro-3:free", "name": "Upstage: Solar Pro 3 (free)", @@ -23646,13 +23667,13 @@ "text" ], "cost": { - "input": 0.95, - "output": 2.5500000000000003, - "cacheRead": 0.19999999999999998, + "input": 0.7999999999999999, + "output": 2.56, + "cacheRead": 0.16, "cacheWrite": 0 }, - "contextWindow": 204800, - "maxTokens": 131072 + "contextWindow": 202752, + "maxTokens": 8888 } }, "kilo": { @@ -29547,6 +29568,25 @@ "contextWindow": 222222, "maxTokens": 8888 }, + "upstage/solar-pro-3": { + "id": "upstage/solar-pro-3", + "name": "Upstage: Solar Pro 3", + "api": "openai-completions", + "provider": "kilo", + "baseUrl": "https://api.kilo.ai/api/gateway", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 222222, + "maxTokens": 8888 + }, "writer/palmyra-x5": { "id": "writer/palmyra-x5", "name": "Writer: Palmyra X5", @@ -36819,8 +36859,8 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 1000000, - "maxTokens": 65000 + "contextWindow": 1048576, + "maxTokens": 65536 } }, "google-vertex": { diff --git a/packages/natives/package.json b/packages/natives/package.json index 8ae41f588..2e87e81ee 100644 --- a/packages/natives/package.json +++ b/packages/natives/package.json @@ -60,6 +60,14 @@ "types": "./src/*.ts", "import": "./src/*.ts" }, + "./appearance": { + "types": "./src/appearance/index.ts", + "import": "./src/appearance/index.ts" + }, + "./appearance/*": { + "types": "./src/appearance/*.ts", + "import": "./src/appearance/*.ts" + }, "./ast": { "types": "./src/ast/index.ts", "import": "./src/ast/index.ts" @@ -124,6 +132,14 @@ "types": "./src/keys/*.ts", "import": "./src/keys/*.ts" }, + "./projfs": { + "types": "./src/projfs/index.ts", + "import": "./src/projfs/index.ts" + }, + "./projfs/*": { + "types": "./src/projfs/*.ts", + "import": "./src/projfs/*.ts" + }, "./ps": { "types": "./src/ps/index.ts", "import": "./src/ps/index.ts" diff --git a/packages/stats/package.json b/packages/stats/package.json index e01924c31..a5ec3c61d 100644 --- a/packages/stats/package.json +++ b/packages/stats/package.json @@ -35,10 +35,10 @@ "dependencies": { "@oh-my-pi/pi-ai": "workspace:*", "@oh-my-pi/pi-utils": "workspace:*", - "@tailwindcss/node": "4", + "@tailwindcss/node": "^4.2", "chart.js": "^4.5", "date-fns": "^4.1", - "lucide-react": "^0.575", + "lucide-react": "^0.576", "react": "^19.2", "react-chartjs-2": "^5.3", "react-dom": "^19.2" @@ -48,7 +48,7 @@ "@types/react": "^19.2", "@types/react-dom": "^19.2", "postcss": "^8.5", - "tailwindcss": "4" + "tailwindcss": "^4.2" }, "engines": { "bun": ">=1.3.7" diff --git a/packages/swarm-extension/package.json b/packages/swarm-extension/package.json index a289888cf..7b9488fff 100644 --- a/packages/swarm-extension/package.json +++ b/packages/swarm-extension/package.json @@ -28,7 +28,7 @@ "@types/bun": "^1.3" }, "peerDependencies": { - "@oh-my-pi/pi-coding-agent": "^11" + "@oh-my-pi/pi-coding-agent": "^13" }, "engines": { "bun": ">=1.3.7" diff --git a/packages/utils/package.json b/packages/utils/package.json index eaf86e033..5f9b7a3d3 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -27,7 +27,7 @@ "test": "bun test" }, "dependencies": { - "beautiful-mermaid": "1.1.3", + "beautiful-mermaid": "^1.1", "winston": "^3.19", "winston-daily-rotate-file": "^5.0" },