|
1 | 1 | import type { ModelInfo } from "../model.js" |
2 | 2 | import { anthropicModels } from "./anthropic.js" |
3 | 3 |
|
4 | | -// Utility function to convert model names for Vertex AI format |
| 4 | +// Regex pattern to match 8-digit date at the end of model names |
| 5 | +const VERTEX_DATE_PATTERN = /-(\d{8})$/ |
| 6 | + |
| 7 | +/** |
| 8 | + * Converts Claude model names from hyphen-date format to Vertex AI's @-date format. |
| 9 | + * |
| 10 | + * @param modelName - The original model name (e.g., "claude-sonnet-4-20250514") |
| 11 | + * @returns The converted model name for Vertex AI (e.g., "claude-sonnet-4@20250514") |
| 12 | + * |
| 13 | + * @example |
| 14 | + * convertModelNameForVertex("claude-sonnet-4-20250514") // returns "claude-sonnet-4@20250514" |
| 15 | + * convertModelNameForVertex("claude-model") // returns "claude-model" (no change) |
| 16 | + */ |
5 | 17 | export function convertModelNameForVertex(modelName: string): string { |
6 | 18 | // Convert hyphen-date format to @date format for Vertex AI |
7 | | - return modelName.replace(/-(\d{8})$/, "@$1") |
| 19 | + return modelName.replace(VERTEX_DATE_PATTERN, "@$1") |
8 | 20 | } |
9 | 21 |
|
10 | 22 | // Claude Code |
11 | 23 | export type ClaudeCodeModelId = keyof typeof claudeCodeModels |
12 | 24 | export const claudeCodeDefaultModelId: ClaudeCodeModelId = "claude-sonnet-4-20250514" |
13 | 25 | export const CLAUDE_CODE_DEFAULT_MAX_OUTPUT_TOKENS = 8000 |
14 | | -// Helper function to get model ID based on environment |
| 26 | + |
| 27 | +/** |
| 28 | + * Gets the appropriate model ID based on whether Vertex AI is being used. |
| 29 | + * |
| 30 | + * @param baseModelId - The base Claude Code model ID |
| 31 | + * @param useVertex - Whether to format the model ID for Vertex AI (default: false) |
| 32 | + * @returns The model ID, potentially formatted for Vertex AI |
| 33 | + * |
| 34 | + * @example |
| 35 | + * getClaudeCodeModelId("claude-sonnet-4-20250514", true) // returns "claude-sonnet-4@20250514" |
| 36 | + * getClaudeCodeModelId("claude-sonnet-4-20250514", false) // returns "claude-sonnet-4-20250514" |
| 37 | + */ |
15 | 38 | export function getClaudeCodeModelId(baseModelId: ClaudeCodeModelId, useVertex = false): string { |
16 | 39 | return useVertex ? convertModelNameForVertex(baseModelId) : baseModelId |
17 | 40 | } |
|
0 commit comments