From ea16ed6e04b8fff70de07bbee48349c3f472931a Mon Sep 17 00:00:00 2001 From: Brandon Martin Date: Wed, 8 Jul 2026 16:30:45 -0500 Subject: [PATCH 1/2] Expose Sonnet 5 in Pi catalog --- packages/pi/README.md | 2 +- packages/pi/src/index.ts | 9 ++++++ packages/pi/src/tests/index.test.ts | 46 +++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 packages/pi/src/tests/index.test.ts diff --git a/packages/pi/README.md b/packages/pi/README.md index dd6ef041..2802b5a1 100644 --- a/packages/pi/README.md +++ b/packages/pi/README.md @@ -2,7 +2,7 @@ Pi package for CortexKit Anthropic OAuth support. It overrides Pi's built-in `anthropic` provider with a CortexKit provider extension backed by the shared `@cortexkit/anthropic-auth-core` package. -The Pi provider catalog includes Claude Fable 5 (`claude-fable-5`), limited-access Claude Mythos 5 (`claude-mythos-5`), Claude Opus 4.8, Claude Opus 4.5, and Claude Sonnet 4.5. Fable/Mythos reasoning uses Anthropic adaptive thinking with `thinking.display: "summarized"` and `output_config.effort`; the package does not send rejected manual `thinking.budget_tokens` for those models. +The Pi provider catalog includes Claude Fable 5 (`claude-fable-5`), limited-access Claude Mythos 5 (`claude-mythos-5`), Claude Opus 4.8, Claude Opus 4.5, Claude Sonnet 4.5, and Claude Sonnet 5 (`claude-sonnet-5`). Fable/Mythos reasoning uses Anthropic adaptive thinking with `thinking.display: "summarized"` and `output_config.effort`; the package does not send rejected manual `thinking.budget_tokens` for those models. This package is part of the CortexKit Anthropic Auth monorepo, which supports both OpenCode (`@cortexkit/opencode-anthropic-auth`) and Pi (`@cortexkit/pi-anthropic-auth`) through the same shared core logic. diff --git a/packages/pi/src/index.ts b/packages/pi/src/index.ts index c2d53ef2..5023fc68 100644 --- a/packages/pi/src/index.ts +++ b/packages/pi/src/index.ts @@ -107,6 +107,15 @@ export default function cortexKitPiAnthropicAuth(pi: ExtensionAPI) { contextWindow: 200_000, maxTokens: 64_000, }, + { + id: 'claude-sonnet-5', + name: 'Claude Sonnet 5', + reasoning: true, + input: textImageInput(), + cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 }, + contextWindow: 1_000_000, + maxTokens: 128_000, + }, ], oauth: { name: 'Anthropic Claude Pro/Max (CortexKit)', diff --git a/packages/pi/src/tests/index.test.ts b/packages/pi/src/tests/index.test.ts new file mode 100644 index 00000000..8d6a77eb --- /dev/null +++ b/packages/pi/src/tests/index.test.ts @@ -0,0 +1,46 @@ +import { describe, expect, test } from 'bun:test' +import type { ExtensionAPI } from '@earendil-works/pi-coding-agent' + +import cortexKitPiAnthropicAuth from '../index' + +function mockPi() { + const providers = new Map< + string, + { models?: Array> } + >() + + const pi = { + registerCommand: () => {}, + registerProvider: ( + name: string, + config: { models?: Array> }, + ) => { + providers.set(name, config) + }, + } as unknown as ExtensionAPI + + return { pi, providers } +} + +describe('cortexKitPiAnthropicAuth provider registration', () => { + test('exposes Claude Sonnet 5 in the Pi Anthropic catalog', () => { + const { pi, providers } = mockPi() + + cortexKitPiAnthropicAuth(pi) + + const anthropic = providers.get('anthropic') + expect(anthropic).toBeDefined() + + const sonnet5 = anthropic?.models?.find( + (model) => model.id === 'claude-sonnet-5', + ) + expect(sonnet5).toMatchObject({ + id: 'claude-sonnet-5', + name: 'Claude Sonnet 5', + reasoning: true, + input: ['text', 'image'], + contextWindow: 1_000_000, + maxTokens: 128_000, + }) + }) +}) From f373d8a82cb490d78c3e936613e2b832d5303b1f Mon Sep 17 00:00:00 2001 From: Brandon Martin Date: Wed, 8 Jul 2026 16:46:55 -0500 Subject: [PATCH 2/2] Assert Sonnet 5 pricing in Pi catalog test --- packages/pi/src/tests/index.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pi/src/tests/index.test.ts b/packages/pi/src/tests/index.test.ts index 8d6a77eb..c6acf867 100644 --- a/packages/pi/src/tests/index.test.ts +++ b/packages/pi/src/tests/index.test.ts @@ -39,6 +39,7 @@ describe('cortexKitPiAnthropicAuth provider registration', () => { name: 'Claude Sonnet 5', reasoning: true, input: ['text', 'image'], + cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 }, contextWindow: 1_000_000, maxTokens: 128_000, })