| author | |
| committer | |
| log | 83f0cc9e31b8c38cc3ecd3c394f882ce9ee3714f |
| tree | 4ceae078780f5f2c244aa83af5399bb3c31bc851 |
| parent | e6330ead82319d2be53beb5de3aaf4eda0d91a70 |
| signature | Signed by PGP key B5690EEEBB952194 |
6 files changed, 149 insertions(+), 49 deletions(-)
apps/server/package.json+1-1| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | "test": "vitest run" |
| 24 | 24 | }, |
| 25 | 25 | "dependencies": { |
| 26 | "@anthropic-ai/claude-agent-sdk": "^0.2.111", | |
| 26 | "@anthropic-ai/claude-agent-sdk": "^0.3.154", | |
| 27 | 27 | "@effect/platform-bun": "catalog:", |
| 28 | 28 | "@effect/platform-node": "catalog:", |
| 29 | 29 | "@effect/platform-node-shared": "catalog:", |
apps/server/src/provider/Layers/ClaudeAdapter.ts+11-5| ... | ... | @@ -70,6 +70,7 @@ import { ServerConfig } from "../../config.ts"; |
| 70 | 70 | import { makeClaudeEnvironment } from "../Drivers/ClaudeHome.ts"; |
| 71 | 71 | import { |
| 72 | 72 | getClaudeModelCapabilities, |
| 73 | isClaudeUltracodeEffort, | |
| 73 | 74 | normalizeClaudeCliEffort, |
| 74 | 75 | resolveClaudeApiModelId, |
| 75 | 76 | resolveClaudeEffort, |
| ... | ... | @@ -255,8 +256,11 @@ function normalizeClaudeStreamMessages( |
| 255 | 256 | return squashed.length > 0 ? [squashed] : []; |
| 256 | 257 | } |
| 257 | 258 | |
| 258 | function getEffectiveClaudeAgentEffort(effort: string | null | undefined): ClaudeSdkEffort | null { | |
| 259 | const normalized = normalizeClaudeCliEffort(effort); | |
| 259 | function getEffectiveClaudeAgentEffort( | |
| 260 | effort: string | null | undefined, | |
| 261 | model: string | null | undefined, | |
| 262 | ): ClaudeSdkEffort | null { | |
| 263 | const normalized = normalizeClaudeCliEffort(effort, model); | |
| 260 | 264 | return normalized ? (normalized as ClaudeSdkEffort) : null; |
| 261 | 265 | } |
| 262 | 266 | |
| ... | ... | @@ -2908,7 +2912,8 @@ export const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* ( |
| 2908 | 2912 | const thinking = thinkingSupported |
| 2909 | 2913 | ? getModelSelectionBooleanOptionValue(modelSelection, "thinking") |
| 2910 | 2914 | : undefined; |
| 2911 | const effectiveEffort = getEffectiveClaudeAgentEffort(effort); | |
| 2915 | const ultracode = isClaudeUltracodeEffort(effort); | |
| 2916 | const effectiveEffort = getEffectiveClaudeAgentEffort(effort, modelSelection?.model); | |
| 2912 | 2917 | const runtimeModeToPermission: Record<string, PermissionMode> = { |
| 2913 | 2918 | "auto-accept-edits": "acceptEdits", |
| 2914 | 2919 | "full-access": "bypassPermissions", |
| ... | ... | @@ -2917,6 +2922,7 @@ export const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* ( |
| 2917 | 2922 | const settings = { |
| 2918 | 2923 | ...(typeof thinking === "boolean" ? { alwaysThinkingEnabled: thinking } : {}), |
| 2919 | 2924 | ...(fastMode ? { fastMode: true } : {}), |
| 2925 | ...(ultracode ? { ultracode: true } : {}), | |
| 2920 | 2926 | }; |
| 2921 | 2927 | const queryOptions: ClaudeQueryOptions = { |
| 2922 | 2928 | ...(input.cwd ? { cwd: input.cwd } : {}), |
| ... | ... | @@ -2924,8 +2930,8 @@ export const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* ( |
| 2924 | 2930 | pathToClaudeCodeExecutable: claudeBinaryPath, |
| 2925 | 2931 | systemPrompt: { type: "preset", preset: "claude_code" }, |
| 2926 | 2932 | settingSources: [...CLAUDE_SETTING_SOURCES], |
| 2927 | // The SDK type lags the CLI here: Opus 4.7 accepts `xhigh` even though | |
| 2928 | // the published `Options["effort"]` union currently stops at `max`. | |
| 2933 | // `ultracode` is a Claude Code setting, not an API effort level. It is | |
| 2934 | // normalized to `xhigh` above and paired with `settings.ultracode`. | |
| 2929 | 2935 | ...(effectiveEffort |
| 2930 | 2936 | ? { |
| 2931 | 2937 | effort: effectiveEffort as unknown as NonNullable<ClaudeQueryOptions["effort"]>, |
apps/server/src/provider/Layers/ClaudeProvider.ts+111-40| ... | ... | @@ -48,25 +48,83 @@ const CLAUDE_PRESENTATION = { |
| 48 | 48 | displayName: "Claude", |
| 49 | 49 | showInteractionModeToggle: true, |
| 50 | 50 | } as const; |
| 51 | const MINIMUM_CLAUDE_OPUS_4_8_VERSION = "2.1.154"; | |
| 51 | 52 | const MINIMUM_CLAUDE_OPUS_4_7_VERSION = "2.1.111"; |
| 53 | ||
| 54 | const CLAUDE_EFFORT_OPTIONS = { | |
| 55 | opus48: [ | |
| 56 | { value: "low", label: "Low" }, | |
| 57 | { value: "medium", label: "Medium" }, | |
| 58 | { value: "high", label: "High", isDefault: true }, | |
| 59 | { value: "xhigh", label: "Extra High" }, | |
| 60 | { value: "max", label: "Max" }, | |
| 61 | { value: "ultracode", label: "Ultracode" }, | |
| 62 | { value: "ultrathink", label: "Ultrathink" }, | |
| 63 | ], | |
| 64 | opus47: [ | |
| 65 | { value: "low", label: "Low" }, | |
| 66 | { value: "medium", label: "Medium" }, | |
| 67 | { value: "high", label: "High" }, | |
| 68 | { value: "xhigh", label: "Extra High", isDefault: true }, | |
| 69 | { value: "max", label: "Max" }, | |
| 70 | { value: "ultrathink", label: "Ultrathink" }, | |
| 71 | ], | |
| 72 | opus46: [ | |
| 73 | { value: "low", label: "Low" }, | |
| 74 | { value: "medium", label: "Medium" }, | |
| 75 | { value: "high", label: "High", isDefault: true }, | |
| 76 | { value: "max", label: "Max" }, | |
| 77 | { value: "ultrathink", label: "Ultrathink" }, | |
| 78 | ], | |
| 79 | sonnet46: [ | |
| 80 | { value: "low", label: "Low" }, | |
| 81 | { value: "medium", label: "Medium" }, | |
| 82 | { value: "high", label: "High", isDefault: true }, | |
| 83 | { value: "max", label: "Max" }, | |
| 84 | { value: "ultrathink", label: "Ultrathink" }, | |
| 85 | ], | |
| 86 | opus45: [ | |
| 87 | { value: "low", label: "Low" }, | |
| 88 | { value: "medium", label: "Medium" }, | |
| 89 | { value: "high", label: "High", isDefault: true }, | |
| 90 | { value: "max", label: "Max" }, | |
| 91 | ], | |
| 92 | } as const; | |
| 93 | ||
| 52 | 94 | const BUILT_IN_MODELS: ReadonlyArray<ServerProviderModel> = [ |
| 53 | 95 | { |
| 54 | slug: "claude-opus-4-7", | |
| 55 | name: "Claude Opus 4.7", | |
| 96 | slug: "claude-opus-4-8", | |
| 97 | name: "Claude Opus 4.8", | |
| 56 | 98 | isCustom: false, |
| 57 | 99 | capabilities: createModelCapabilities({ |
| 58 | 100 | optionDescriptors: [ |
| 59 | 101 | buildSelectOptionDescriptor({ |
| 60 | 102 | id: "effort", |
| 61 | 103 | label: "Reasoning", |
| 104 | options: CLAUDE_EFFORT_OPTIONS.opus48, | |
| 105 | promptInjectedValues: ["ultrathink"], | |
| 106 | }), | |
| 107 | buildSelectOptionDescriptor({ | |
| 108 | id: "contextWindow", | |
| 109 | label: "Context Window", | |
| 62 | 110 | options: [ |
| 63 | { value: "low", label: "Low" }, | |
| 64 | { value: "medium", label: "Medium" }, | |
| 65 | { value: "high", label: "High" }, | |
| 66 | { value: "xhigh", label: "Extra High", isDefault: true }, | |
| 67 | { value: "max", label: "Max" }, | |
| 68 | { value: "ultrathink", label: "Ultrathink" }, | |
| 111 | { value: "200k", label: "200k", isDefault: true }, | |
| 112 | { value: "1m", label: "1M" }, | |
| 69 | 113 | ], |
| 114 | }), | |
| 115 | ], | |
| 116 | }), | |
| 117 | }, | |
| 118 | { | |
| 119 | slug: "claude-opus-4-7", | |
| 120 | name: "Claude Opus 4.7", | |
| 121 | isCustom: false, | |
| 122 | capabilities: createModelCapabilities({ | |
| 123 | optionDescriptors: [ | |
| 124 | buildSelectOptionDescriptor({ | |
| 125 | id: "effort", | |
| 126 | label: "Reasoning", | |
| 127 | options: CLAUDE_EFFORT_OPTIONS.opus47, | |
| 70 | 128 | promptInjectedValues: ["ultrathink"], |
| 71 | 129 | }), |
| 72 | 130 | buildSelectOptionDescriptor({ |
| ... | ... | @@ -89,13 +147,7 @@ const BUILT_IN_MODELS: ReadonlyArray<ServerProviderModel> = [ |
| 89 | 147 | buildSelectOptionDescriptor({ |
| 90 | 148 | id: "effort", |
| 91 | 149 | label: "Reasoning", |
| 92 | options: [ | |
| 93 | { value: "low", label: "Low" }, | |
| 94 | { value: "medium", label: "Medium" }, | |
| 95 | { value: "high", label: "High", isDefault: true }, | |
| 96 | { value: "max", label: "Max" }, | |
| 97 | { value: "ultrathink", label: "Ultrathink" }, | |
| 98 | ], | |
| 150 | options: CLAUDE_EFFORT_OPTIONS.opus46, | |
| 99 | 151 | promptInjectedValues: ["ultrathink"], |
| 100 | 152 | }), |
| 101 | 153 | buildBooleanOptionDescriptor({ |
| ... | ... | @@ -122,12 +174,7 @@ const BUILT_IN_MODELS: ReadonlyArray<ServerProviderModel> = [ |
| 122 | 174 | buildSelectOptionDescriptor({ |
| 123 | 175 | id: "effort", |
| 124 | 176 | label: "Reasoning", |
| 125 | options: [ | |
| 126 | { value: "low", label: "Low" }, | |
| 127 | { value: "medium", label: "Medium" }, | |
| 128 | { value: "high", label: "High", isDefault: true }, | |
| 129 | { value: "max", label: "Max" }, | |
| 130 | ], | |
| 177 | options: CLAUDE_EFFORT_OPTIONS.opus45, | |
| 131 | 178 | }), |
| 132 | 179 | buildBooleanOptionDescriptor({ |
| 133 | 180 | id: "fastMode", |
| ... | ... | @@ -145,12 +192,7 @@ const BUILT_IN_MODELS: ReadonlyArray<ServerProviderModel> = [ |
| 145 | 192 | buildSelectOptionDescriptor({ |
| 146 | 193 | id: "effort", |
| 147 | 194 | label: "Reasoning", |
| 148 | options: [ | |
| 149 | { value: "low", label: "Low" }, | |
| 150 | { value: "medium", label: "Medium" }, | |
| 151 | { value: "high", label: "High", isDefault: true }, | |
| 152 | { value: "ultrathink", label: "Ultrathink" }, | |
| 153 | ], | |
| 195 | options: CLAUDE_EFFORT_OPTIONS.sonnet46, | |
| 154 | 196 | promptInjectedValues: ["ultrathink"], |
| 155 | 197 | }), |
| 156 | 198 | buildSelectOptionDescriptor({ |
| ... | ... | @@ -179,6 +221,10 @@ const BUILT_IN_MODELS: ReadonlyArray<ServerProviderModel> = [ |
| 179 | 221 | }, |
| 180 | 222 | ]; |
| 181 | 223 | |
| 224 | function supportsClaudeOpus48(version: string | null | undefined): boolean { | |
| 225 | return version ? compareSemverVersions(version, MINIMUM_CLAUDE_OPUS_4_8_VERSION) >= 0 : false; | |
| 226 | } | |
| 227 | ||
| 182 | 228 | function supportsClaudeOpus47(version: string | null | undefined): boolean { |
| 183 | 229 | return version ? compareSemverVersions(version, MINIMUM_CLAUDE_OPUS_4_7_VERSION) >= 0 : false; |
| 184 | 230 | } |
| ... | ... | @@ -186,10 +232,20 @@ function supportsClaudeOpus47(version: string | null | undefined): boolean { |
| 186 | 232 | function getBuiltInClaudeModelsForVersion( |
| 187 | 233 | version: string | null | undefined, |
| 188 | 234 | ): ReadonlyArray<ServerProviderModel> { |
| 189 | if (supportsClaudeOpus47(version)) { | |
| 190 | return BUILT_IN_MODELS; | |
| 191 | } | |
| 192 | return BUILT_IN_MODELS.filter((model) => model.slug !== "claude-opus-4-7"); | |
| 235 | return BUILT_IN_MODELS.filter((model) => { | |
| 236 | if (model.slug === "claude-opus-4-8") { | |
| 237 | return supportsClaudeOpus48(version); | |
| 238 | } | |
| 239 | if (model.slug === "claude-opus-4-7") { | |
| 240 | return supportsClaudeOpus47(version); | |
| 241 | } | |
| 242 | return true; | |
| 243 | }); | |
| 244 | } | |
| 245 | ||
| 246 | function formatClaudeOpus48UpgradeMessage(version: string | null): string { | |
| 247 | const versionLabel = version ? `v${version}` : "the installed version"; | |
| 248 | return `Claude Code ${versionLabel} is too old for Claude Opus 4.8. Upgrade to v${MINIMUM_CLAUDE_OPUS_4_8_VERSION} or newer to access it.`; | |
| 193 | 249 | } |
| 194 | 250 | |
| 195 | 251 | function formatClaudeOpus47UpgradeMessage(version: string | null): string { |
| ... | ... | @@ -223,21 +279,34 @@ export function resolveClaudeEffort( |
| 223 | 279 | * CLI's `--effort` flag. |
| 224 | 280 | * |
| 225 | 281 | * Mirrors the mapping used when invoking the Claude Agent SDK |
| 226 | * ({@link getEffectiveClaudeAgentEffort} in ClaudeAdapter): the Opus 4.7 | |
| 227 | * capability `"xhigh"` is rewritten to the accepted CLI value `"max"`, and | |
| 228 | * `"ultrathink"` is filtered out because it is a prompt-prefix mode rather | |
| 229 | * than a CLI-effort value. Returns `undefined` when no flag should be passed. | |
| 282 | * ({@link getEffectiveClaudeAgentEffort} in ClaudeAdapter): `ultracode` is a | |
| 283 | * Claude Code setting that pairs with `xhigh`, `ultrathink` is filtered out | |
| 284 | * because it is a prompt-prefix mode, and older model compatibility mappings | |
| 285 | * are preserved for current Claude Code behavior. | |
| 230 | 286 | */ |
| 231 | export function normalizeClaudeCliEffort(effort: string | null | undefined): string | undefined { | |
| 287 | export function normalizeClaudeCliEffort( | |
| 288 | effort: string | null | undefined, | |
| 289 | model: string | null | undefined, | |
| 290 | ): string | undefined { | |
| 232 | 291 | if (!effort || effort === "ultrathink") { |
| 233 | 292 | return undefined; |
| 234 | 293 | } |
| 235 | if (effort === "xhigh") { | |
| 294 | if (effort === "ultracode") { | |
| 295 | return "xhigh"; | |
| 296 | } | |
| 297 | if (effort === "xhigh" && model !== "claude-opus-4-8") { | |
| 236 | 298 | return "max"; |
| 237 | 299 | } |
| 300 | if (effort === "max" && model === "claude-sonnet-4-6") { | |
| 301 | return "high"; | |
| 302 | } | |
| 238 | 303 | return effort; |
| 239 | 304 | } |
| 240 | 305 | |
| 306 | export function isClaudeUltracodeEffort(effort: string | null | undefined): boolean { | |
| 307 | return effort === "ultracode"; | |
| 308 | } | |
| 309 | ||
| 241 | 310 | export function resolveClaudeApiModelId(modelSelection: ModelSelection): string { |
| 242 | 311 | switch (getModelSelectionStringOptionValue(modelSelection, "contextWindow")) { |
| 243 | 312 | case "1m": |
| ... | ... | @@ -617,9 +686,11 @@ export const checkClaudeProviderStatus = Effect.fn("checkClaudeProviderStatus")( |
| 617 | 686 | claudeSettings.customModels, |
| 618 | 687 | DEFAULT_CLAUDE_MODEL_CAPABILITIES, |
| 619 | 688 | ); |
| 620 | const opus47UpgradeMessage = supportsClaudeOpus47(parsedVersion) | |
| 689 | const versionUpgradeMessage = supportsClaudeOpus48(parsedVersion) | |
| 621 | 690 | ? undefined |
| 622 | : formatClaudeOpus47UpgradeMessage(parsedVersion); | |
| 691 | : supportsClaudeOpus47(parsedVersion) | |
| 692 | ? formatClaudeOpus48UpgradeMessage(parsedVersion) | |
| 693 | : formatClaudeOpus47UpgradeMessage(parsedVersion); | |
| 623 | 694 | |
| 624 | 695 | const capabilities = resolveCapabilities |
| 625 | 696 | ? yield* resolveCapabilities(claudeSettings).pipe(Effect.orElseSucceed(() => undefined)) |
| ... | ... | @@ -663,7 +734,7 @@ export const checkClaudeProviderStatus = Effect.fn("checkClaudeProviderStatus")( |
| 663 | 734 | ...(capabilities.email ? { email: capabilities.email } : {}), |
| 664 | 735 | ...(authMetadata ? authMetadata : {}), |
| 665 | 736 | }, |
| 666 | ...(opus47UpgradeMessage ? { message: opus47UpgradeMessage } : {}), | |
| 737 | ...(versionUpgradeMessage ? { message: versionUpgradeMessage } : {}), | |
| 667 | 738 | }, |
| 668 | 739 | }); |
| 669 | 740 | }); |
apps/server/src/textGeneration/ClaudeTextGeneration.ts+4-1| ... | ... | @@ -37,6 +37,7 @@ import { |
| 37 | 37 | } from "@t3tools/shared/model"; |
| 38 | 38 | import { |
| 39 | 39 | getClaudeModelCapabilities, |
| 40 | isClaudeUltracodeEffort, | |
| 40 | 41 | normalizeClaudeCliEffort, |
| 41 | 42 | resolveClaudeApiModelId, |
| 42 | 43 | resolveClaudeEffort, |
| ... | ... | @@ -132,7 +133,8 @@ export const makeClaudeTextGeneration = Effect.fn("makeClaudeTextGeneration")(fu |
| 132 | 133 | const findDescriptor = (id: string) => descriptors.find((descriptor) => descriptor.id === id); |
| 133 | 134 | const rawEffortSelection = getModelSelectionStringOptionValue(modelSelection, "effort"); |
| 134 | 135 | const resolvedEffort = resolveClaudeEffort(caps, rawEffortSelection); |
| 135 | const cliEffort = normalizeClaudeCliEffort(resolvedEffort); | |
| 136 | const cliEffort = normalizeClaudeCliEffort(resolvedEffort, modelSelection.model); | |
| 137 | const ultracode = isClaudeUltracodeEffort(resolvedEffort); | |
| 136 | 138 | const thinkingDescriptor = findDescriptor("thinking"); |
| 137 | 139 | const fastModeDescriptor = findDescriptor("fastMode"); |
| 138 | 140 | const thinking = |
| ... | ... | @@ -142,6 +144,7 @@ export const makeClaudeTextGeneration = Effect.fn("makeClaudeTextGeneration")(fu |
| 142 | 144 | const settings = { |
| 143 | 145 | ...(typeof thinking === "boolean" ? { alwaysThinkingEnabled: thinking } : {}), |
| 144 | 146 | ...(fastMode ? { fastMode: true } : {}), |
| 147 | ...(ultracode ? { ultracode: true } : {}), | |
| 145 | 148 | }; |
| 146 | 149 | const settingsJson = |
| 147 | 150 | Object.keys(settings).length > 0 |
bun.lock+19-1| ... | ... | @@ -55,7 +55,7 @@ |
| 55 | 55 | "t3": "./dist/bin.mjs", |
| 56 | 56 | }, |
| 57 | 57 | "dependencies": { |
| 58 | "@anthropic-ai/claude-agent-sdk": "^0.2.111", | |
| 58 | "@anthropic-ai/claude-agent-sdk": "^0.3.154", | |
| 59 | 59 | "@effect/platform-bun": "catalog:", |
| 60 | 60 | "@effect/platform-node": "catalog:", |
| 61 | 61 | "@effect/platform-node-shared": "catalog:", |
| ... | ... | @@ -304,6 +304,22 @@ |
| 304 | 304 | "packages": { |
| 305 | 305 | "@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.2.111", "", { "dependencies": { "@anthropic-ai/sdk": "^0.81.0", "@modelcontextprotocol/sdk": "^1.29.0" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "^0.34.2", "@img/sharp-darwin-x64": "^0.34.2", "@img/sharp-linux-arm": "^0.34.2", "@img/sharp-linux-arm64": "^0.34.2", "@img/sharp-linux-x64": "^0.34.2", "@img/sharp-linuxmusl-arm64": "^0.34.2", "@img/sharp-linuxmusl-x64": "^0.34.2", "@img/sharp-win32-arm64": "^0.34.2", "@img/sharp-win32-x64": "^0.34.2" }, "peerDependencies": { "zod": "^4.0.0" } }, "sha512-DwXyJpVL8JXB8L2toSw1by7uIt1p8hPGi0P+hqr5tL+Ae7DcK9O3tUd6XcGown3LZ49zNCUAIpqX3wDmOhqp0Q=="], |
| 306 | 306 | |
| 307 | "@anthropic-ai/claude-agent-sdk-darwin-arm64": ["@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.154", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oFW3LD5lYrKAU+AKu27Z8hrzqkrh362qQrwi/i3DxGcud9BXUycsXYjShpDj3D3JZu169UzZuSPhx1Wajmbiwg=="], | |
| 308 | ||
| 309 | "@anthropic-ai/claude-agent-sdk-darwin-x64": ["@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.154", "", { "os": "darwin", "cpu": "x64" }, "sha512-5BgWEueP+cqoctWjZYhCbyltuaV/N2DmKDXD3/69cKaVmJp8XL9OCzlq/HEirA/+Ssjskx6hDUBaOcpuZ3iwQA=="], | |
| 310 | ||
| 311 | "@anthropic-ai/claude-agent-sdk-linux-arm64": ["@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.154", "", { "os": "linux", "cpu": "arm64" }, "sha512-rRkW4SBL3W7zQvKscCIfIGlmoeuTbMV6dXFbPdmpRGvmYZIs79RpzO6xrGBnnhmm+B7znQ9oHAnffi/2FBgJbA=="], | |
| 312 | ||
| 313 | "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": ["@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.154", "", { "os": "linux", "cpu": "arm64" }, "sha512-o2bCQN4Xn3UqCLErC5m4T7u0yYArJYmgFCUFnA6K96DdW2RERvx+gTKXxWuHEBkDO+eMoHLHLxk0u2jGES00Ng=="], | |
| 314 | ||
| 315 | "@anthropic-ai/claude-agent-sdk-linux-x64": ["@anthropic-ai/claude-agent-sdk-linux-x64@0.3.154", "", { "os": "linux", "cpu": "x64" }, "sha512-GpiFF8Ez6PbM3m0gqtCo/FKM346qyRdP7VhbmJzdnbNKTiiUZ66vDQyEUPZPCG24ZkrG4m96KpRIUwY08rHiNg=="], | |
| 316 | ||
| 317 | "@anthropic-ai/claude-agent-sdk-linux-x64-musl": ["@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.154", "", { "os": "linux", "cpu": "x64" }, "sha512-zA7S8Lm6O4QBsUpbhiOht8BgiXHOBBFUIo8ZLK6r5wAatK3Q44syWVxICeyCnR6wqfnkf3cugCw27ycS6vVgaA=="], | |
| 318 | ||
| 319 | "@anthropic-ai/claude-agent-sdk-win32-arm64": ["@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.154", "", { "os": "win32", "cpu": "arm64" }, "sha512-cDW1YFbU/PJFlrGXhlAGcbkXt80sEO6WtnH8nN8YHXLn5NWduy2q7o/qC6i8XozgvRGf6t/eMoH7IasGIEDhDw=="], | |
| 320 | ||
| 321 | "@anthropic-ai/claude-agent-sdk-win32-x64": ["@anthropic-ai/claude-agent-sdk-win32-x64@0.3.154", "", { "os": "win32", "cpu": "x64" }, "sha512-tSKaIIpL72OPg3WfzZTCIl8OJgcbq4qieu8/fDWjsdeQuari9gQMIuEflFphk9HqNsxpSmDqKi8Sm5mW2V566Q=="], | |
| 322 | ||
| 307 | 323 | "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.81.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-D4K5PvEV6wPiRtVlVsJHIUhHAmOZ6IT/I9rKlTf84gR7GyyAurPJK7z9BOf/AZqC5d1DhYQGJNKRmV+q8dGhgw=="], |
| 308 | 324 | |
| 309 | 325 | "@astrojs/check": ["@astrojs/check@0.9.8", "", { "dependencies": { "@astrojs/language-server": "^2.16.5", "chokidar": "^4.0.3", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "astro-check": "bin/astro-check.js" } }, "sha512-LDng8446QLS5ToKjRHd3bgUdirvemVVExV7nRyJfW2wV36xuv7vDxwy5NWN9zqeSEDgg0Tv84sP+T3yEq+Zlkw=="], |
| ... | ... | @@ -2230,6 +2246,8 @@ |
| 2230 | 2246 | |
| 2231 | 2247 | "serialize-error/type-fest": ["type-fest@0.13.1", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="], |
| 2232 | 2248 | |
| 2249 | "t3/@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.3.154", "", { "optionalDependencies": { "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.154", "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.154", "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.154", "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.154", "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.154", "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.154", "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.154", "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.154" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.93.0", "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.0.0" } }, "sha512-iEn25urI2QrMPFIhId3h7v/7EG5gsmF7ooe+6EvsAosePeLmpVVerp5nXtHnlmBkMinLecurcPA+OddKw76jYw=="], | |
| 2250 | ||
| 2233 | 2251 | "tsx/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], |
| 2234 | 2252 | |
| 2235 | 2253 | "unrun/rolldown": ["rolldown@1.0.0-rc.9", "", { "dependencies": { "@oxc-project/types": "=0.115.0", "@rolldown/pluginutils": "1.0.0-rc.9" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.9", "@rolldown/binding-darwin-arm64": "1.0.0-rc.9", "@rolldown/binding-darwin-x64": "1.0.0-rc.9", "@rolldown/binding-freebsd-x64": "1.0.0-rc.9", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.9", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.9", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.9", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.9", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.9", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.9", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.9" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q=="], |
packages/contracts/src/model.ts+3-1| ... | ... | @@ -164,7 +164,9 @@ export const MODEL_SLUG_ALIASES_BY_PROVIDER: Partial< |
| 164 | 164 | "gpt-5.3-spark": "gpt-5.3-codex-spark", |
| 165 | 165 | }, |
| 166 | 166 | [CLAUDE_DRIVER_KIND]: { |
| 167 | opus: "claude-opus-4-7", | |
| 167 | opus: "claude-opus-4-8", | |
| 168 | "opus-4.8": "claude-opus-4-8", | |
| 169 | "claude-opus-4.8": "claude-opus-4-8", | |
| 168 | 170 | "opus-4.7": "claude-opus-4-7", |
| 169 | 171 | "claude-opus-4.7": "claude-opus-4-7", |
| 170 | 172 | "opus-4.6": "claude-opus-4-6", |