Saoud Rizwan 1 месяц назад
Родитель
Сommit
a017f3dfd3

+ 4 - 0
CHANGELOG.md

@@ -1,5 +1,9 @@
 # Changelog
 
+## [3.38.2]
+
+- Add Claude Opus 4.5
+
 ## [3.38.1]
 
 ### Fixed

+ 1 - 0
docs/provider-config/anthropic.mdx

@@ -17,6 +17,7 @@ description: "Learn how to configure and use Anthropic Claude models with Cline.
 Cline supports the following Anthropic Claude models:
 
 -   `claude-haiku-4-5-20251001`
+-   `claude-opus-4-5-20251101`
 -   `claude-opus-4-1-20250805`
 -   `claude-opus-4-20250514`
 -   `anthropic/claude-sonnet-4.5` (Recommended)

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
 	"name": "claude-dev",
-	"version": "3.38.1",
+	"version": "3.38.2",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "claude-dev",
-			"version": "3.38.1",
+			"version": "3.38.2",
 			"license": "Apache-2.0",
 			"dependencies": {
 				"@anthropic-ai/sdk": "^0.37.0",

+ 1 - 1
package.json

@@ -2,7 +2,7 @@
 	"name": "claude-dev",
 	"displayName": "Cline",
 	"description": "Autonomous coding agent right in your IDE, capable of creating/editing files, running commands, using the browser, and more with your permission every step of the way.",
-	"version": "3.38.1",
+	"version": "3.38.2",
 	"icon": "assets/icons/icon.png",
 	"engines": {
 		"vscode": "^1.84.0"

+ 1 - 0
src/core/api/providers/anthropic.ts

@@ -70,6 +70,7 @@ export class AnthropicHandler implements ApiHandler {
 			case "claude-3-7-sonnet-20250219":
 			case "claude-3-5-sonnet-20241022":
 			case "claude-3-5-haiku-20241022":
+			case "claude-opus-4-5-20251101":
 			case "claude-opus-4-20250514":
 			case "claude-opus-4-1-20250805":
 			case "claude-3-opus-20240229":

+ 1 - 0
src/core/api/providers/vertex.ts

@@ -95,6 +95,7 @@ export class VertexHandler implements ApiHandler {
 			case "claude-haiku-4-5@20251001":
 			case "claude-sonnet-4-5@20250929":
 			case "claude-sonnet-4@20250514":
+			case "claude-opus-4-5@20251101":
 			case "claude-opus-4-1@20250805":
 			case "claude-opus-4@20250514":
 			case "claude-3-7-sonnet@20250219":

+ 3 - 0
src/core/api/transform/openrouter-stream.ts

@@ -44,6 +44,7 @@ export async function createOpenRouterStream(
 		case "anthropic/claude-sonnet-4.5":
 		case "anthropic/claude-4.5-sonnet": // OpenRouter accidentally included this in model list for a brief moment, and users may be using this model id. And to support prompt caching, we need to add it here.
 		case "anthropic/claude-sonnet-4":
+		case "anthropic/claude-opus-4.5":
 		case "anthropic/claude-opus-4.1":
 		case "anthropic/claude-opus-4":
 		case "anthropic/claude-3.7-sonnet":
@@ -107,6 +108,7 @@ export async function createOpenRouterStream(
 		case "anthropic/claude-sonnet-4.5":
 		case "anthropic/claude-4.5-sonnet":
 		case "anthropic/claude-sonnet-4":
+		case "anthropic/claude-opus-4.5":
 		case "anthropic/claude-opus-4.1":
 		case "anthropic/claude-opus-4":
 		case "anthropic/claude-3.7-sonnet":
@@ -151,6 +153,7 @@ export async function createOpenRouterStream(
 		case "anthropic/claude-sonnet-4.5":
 		case "anthropic/claude-4.5-sonnet":
 		case "anthropic/claude-sonnet-4":
+		case "anthropic/claude-opus-4.5":
 		case "anthropic/claude-opus-4.1":
 		case "anthropic/claude-opus-4":
 		case "anthropic/claude-3.7-sonnet":

+ 5 - 0
src/core/controller/models/refreshOpenRouterModels.ts

@@ -134,6 +134,11 @@ export async function refreshOpenRouterModels(controller: Controller): Promise<R
 						modelInfo.cacheWritesPrice = 3.75
 						modelInfo.cacheReadsPrice = 0.3
 						break
+					case "anthropic/claude-opus-4.5":
+						modelInfo.supportsPromptCache = true
+						modelInfo.cacheWritesPrice = 6.25
+						modelInfo.cacheReadsPrice = 0.5
+						break
 					case "anthropic/claude-opus-4.1":
 					case "anthropic/claude-opus-4":
 						modelInfo.supportsPromptCache = true

+ 35 - 0
src/shared/api.ts

@@ -362,6 +362,16 @@ export const anthropicModels = {
 		cacheReadsPrice: 0.3,
 		tiers: CLAUDE_SONNET_1M_TIERS,
 	},
+	"claude-opus-4-5-20251101": {
+		maxTokens: 8192,
+		contextWindow: 200_000,
+		supportsImages: true,
+		supportsPromptCache: true,
+		inputPrice: 5.0,
+		outputPrice: 25.0,
+		cacheWritesPrice: 6.25,
+		cacheReadsPrice: 0.5,
+	},
 	"claude-opus-4-1-20250805": {
 		maxTokens: 8192,
 		contextWindow: 200_000,
@@ -465,6 +475,11 @@ export const claudeCodeModels = {
 		supportsImages: false,
 		supportsPromptCache: false,
 	},
+	"claude-opus-4-5-20251101": {
+		...anthropicModels["claude-opus-4-5-20251101"],
+		supportsImages: false,
+		supportsPromptCache: false,
+	},
 	"claude-opus-4-1-20250805": {
 		...anthropicModels["claude-opus-4-1-20250805"],
 		supportsImages: false,
@@ -548,6 +563,16 @@ export const bedrockModels = {
 		cacheReadsPrice: 0.3,
 		tiers: CLAUDE_SONNET_1M_TIERS,
 	},
+	"anthropic.claude-opus-4-5-20251101-v1:0": {
+		maxTokens: 8192,
+		contextWindow: 200_000,
+		supportsImages: true,
+		supportsPromptCache: true,
+		inputPrice: 5.0,
+		outputPrice: 25.0,
+		cacheWritesPrice: 6.25,
+		cacheReadsPrice: 0.5,
+	},
 	"anthropic.claude-opus-4-20250514-v1:0": {
 		maxTokens: 8192,
 		contextWindow: 200_000,
@@ -878,6 +903,16 @@ export const vertexModels = {
 		cacheWritesPrice: 1.25,
 		cacheReadsPrice: 0.1,
 	},
+	"claude-opus-4-5@20251101": {
+		maxTokens: 8192,
+		contextWindow: 200_000,
+		supportsImages: true,
+		supportsPromptCache: true,
+		inputPrice: 5.0,
+		outputPrice: 25.0,
+		cacheWritesPrice: 6.25,
+		cacheReadsPrice: 0.5,
+	},
 	"claude-opus-4-1@20250805": {
 		maxTokens: 8192,
 		contextWindow: 200_000,

+ 4 - 3
webview-ui/src/components/chat/chat-view/components/layout/WelcomeSection.tsx

@@ -2,6 +2,7 @@ import React from "react"
 import Announcement from "@/components/chat/Announcement"
 import CliInstallBanner, { CURRENT_CLI_BANNER_VERSION } from "@/components/common/CliInstallBanner"
 import InfoBanner, { CURRENT_INFO_BANNER_VERSION } from "@/components/common/InfoBanner"
+import NewModelBanner, { CURRENT_MODEL_BANNER_VERSION } from "@/components/common/NewModelBanner"
 import HistoryPreview from "@/components/history/HistoryPreview"
 import HomeHeader from "@/components/welcome/HomeHeader"
 import { SuggestedTasks } from "@/components/welcome/SuggestedTasks"
@@ -22,10 +23,10 @@ export const WelcomeSection: React.FC<WelcomeSectionProps> = ({
 	taskHistory,
 	shouldShowQuickWins,
 }) => {
-	const { lastDismissedInfoBannerVersion, lastDismissedCliBannerVersion } = useExtensionState()
+	const { lastDismissedInfoBannerVersion, lastDismissedCliBannerVersion, lastDismissedModelBannerVersion } = useExtensionState()
 
 	const shouldShowInfoBanner = lastDismissedInfoBannerVersion < CURRENT_INFO_BANNER_VERSION
-	// const shouldShowNewModelBanner = lastDismissedModelBannerVersion < CURRENT_MODEL_BANNER_VERSION
+	const shouldShowNewModelBanner = lastDismissedModelBannerVersion < CURRENT_MODEL_BANNER_VERSION
 
 	// Show CLI banner if not dismissed and platform is VSCode (not JetBrains/standalone)
 	const shouldShowCliBanner =
@@ -38,7 +39,7 @@ export const WelcomeSection: React.FC<WelcomeSectionProps> = ({
 			<div className="overflow-y-auto flex flex-col pb-2.5">
 				{shouldShowInfoBanner && <InfoBanner />}
 				{showAnnouncement && <Announcement hideAnnouncement={hideAnnouncement} version={version} />}
-				{/* {shouldShowNewModelBanner && <NewModelBanner />} */}
+				{shouldShowNewModelBanner && <NewModelBanner />}
 				{shouldShowCliBanner && <CliInstallBanner />}
 				<HomeHeader shouldShowQuickWins={shouldShowQuickWins} />
 				{!shouldShowQuickWins && taskHistory.length > 0 && <HistoryPreview showHistoryView={showHistoryView} />}

+ 4 - 4
webview-ui/src/components/common/NewModelBanner.tsx

@@ -9,7 +9,7 @@ import { AccountServiceClient, StateServiceClient } from "@/services/grpc-client
 import { getAsVar, VSC_INACTIVE_SELECTION_BACKGROUND } from "@/utils/vscStyles"
 import { useApiConfigurationHandlers } from "../settings/utils/useApiConfigurationHandlers"
 
-export const CURRENT_MODEL_BANNER_VERSION = 2
+export const CURRENT_MODEL_BANNER_VERSION = 3
 
 export const NewModelBanner: React.FC = () => {
 	const { clineUser } = useClineAuth()
@@ -31,7 +31,7 @@ export const NewModelBanner: React.FC = () => {
 	}, [])
 
 	const setNewModel = () => {
-		const modelId = "anthropic/claude-haiku-4.5"
+		const modelId = "anthropic/claude-opus-4.5"
 		// set both plan and act modes to use new model
 		handleFieldsChange({
 			planModeOpenRouterModelId: modelId,
@@ -74,10 +74,10 @@ export const NewModelBanner: React.FC = () => {
 			}}>
 			<h4 className="m-0 flex items-center gap-2">
 				<Megaphone className="w-4 h-4" />
-				Claude Haiku 4.5
+				Claude Opus 4.5
 			</h4>
 			<p className="m-0">
-				Anthropic's fastest model with frontier-level coding intelligence at a fraction of the cost.{" "}
+				Anthropic's latest model with SOTA performance at 3x lower cost than Opus 4.1.{" "}
 				<span className="text-link cursor-pointer">{user ? "Try new model" : "Try with Cline account"} →</span>
 			</p>
 

+ 5 - 10
webview-ui/src/components/settings/OpenRouterModelPicker.tsx

@@ -52,21 +52,15 @@ const featuredModels = [
 		label: "Best",
 	},
 	{
-		id: "google/gemini-3-pro-preview",
-		description: "Google's latest reasoning model with 1M context window",
+		id: "anthropic/claude-opus-4.5",
+		description: "SOTA performance on coding at 3x lower cost than Opus 4.1",
 		label: "New",
 	},
 	{
-		id: "openai/gpt-5.1",
-		description: "Latest flagship model from OpenAI with enhanced coding capabilities",
+		id: "google/gemini-3-pro-preview",
+		description: "Google's latest reasoning model with 1M context window",
 		label: "Trending",
 	},
-	{
-		id: "minimax/minimax-m2",
-		description: "Compact, high-efficiency model optimized for coding and agentic workflows",
-		label: "Free",
-		isFree: true,
-	},
 	{
 		id: "x-ai/grok-code-fast-1",
 		description: "Advanced model with 262K context for complex coding",
@@ -269,6 +263,7 @@ const OpenRouterModelPicker: React.FC<OpenRouterModelPickerProps> = ({ isPopup,
 			selectedModelId?.toLowerCase().includes("claude-sonnet-4") ||
 			selectedModelId?.toLowerCase().includes("claude-opus-4.1") ||
 			selectedModelId?.toLowerCase().includes("claude-opus-4") ||
+			selectedModelId?.toLowerCase().includes("claude-opus-4.5") ||
 			selectedModelId?.toLowerCase().includes("claude-3-7-sonnet") ||
 			selectedModelId?.toLowerCase().includes("claude-3.7-sonnet") ||
 			selectedModelId?.toLowerCase().includes("claude-3.7-sonnet:thinking")

+ 1 - 0
webview-ui/src/components/settings/providers/AnthropicProvider.tsx

@@ -15,6 +15,7 @@ export const SUPPORTED_ANTHROPIC_THINKING_MODELS = [
 	"claude-3-7-sonnet-20250219",
 	"claude-sonnet-4-20250514",
 	`claude-sonnet-4-20250514${CLAUDE_SONNET_1M_SUFFIX}`,
+	"claude-opus-4-5-20251101",
 	"claude-opus-4-20250514",
 	"claude-opus-4-1-20250805",
 	"claude-sonnet-4-5-20250929",

+ 1 - 0
webview-ui/src/components/settings/providers/BedrockProvider.tsx

@@ -18,6 +18,7 @@ const CLAUDE_MODELS = [
 	"anthropic.claude-sonnet-4-5-20250929-v1:0",
 	`anthropic.claude-sonnet-4-20250514-v1:0${CLAUDE_SONNET_1M_SUFFIX}`,
 	`anthropic.claude-sonnet-4-5-20250929-v1:0${CLAUDE_SONNET_1M_SUFFIX}`,
+	"anthropic.claude-opus-4-5-20251101-v1:0",
 	"anthropic.claude-opus-4-1-20250805-v1:0",
 	"anthropic.claude-opus-4-20250514-v1:0",
 	"anthropic.claude-haiku-4-5-20251001-v1:0",

+ 1 - 0
webview-ui/src/components/settings/providers/VertexProvider.tsx

@@ -26,6 +26,7 @@ const SUPPORTED_THINKING_MODELS = [
 	"claude-sonnet-4-5@20250929",
 	"claude-3-7-sonnet@20250219",
 	"claude-sonnet-4@20250514",
+	"claude-opus-4-5@20251101",
 	"claude-opus-4@20250514",
 	"claude-opus-4-1@20250805",
 	"gemini-2.5-flash",