| /** | |
| * Model Helper Utility | |
| * | |
| * Provides utilities for parsing vendor-prefixed model names. | |
| * Supports parsing model strings like "ccr,model_name" to extract vendor type and base model. | |
| */ | |
| /** | |
| * Parse vendor-prefixed model string | |
| * @param {string} modelStr - Model string, potentially with vendor prefix (e.g., "ccr,gemini-2.5-pro") | |
| * @returns {{vendor: string|null, baseModel: string}} - Parsed vendor and base model | |
| */ | |
| function parseVendorPrefixedModel(modelStr) { | |
| if (!modelStr || typeof modelStr !== 'string') { | |
| return { vendor: null, baseModel: modelStr || '' } | |
| } | |
| // Trim whitespace and convert to lowercase for comparison | |
| const trimmed = modelStr.trim() | |
| const lowerTrimmed = trimmed.toLowerCase() | |
| // Check for ccr prefix (case insensitive) | |
| if (lowerTrimmed.startsWith('ccr,')) { | |
| const parts = trimmed.split(',') | |
| if (parts.length >= 2) { | |
| // Extract base model (everything after the first comma, rejoined in case model name contains commas) | |
| const baseModel = parts.slice(1).join(',').trim() | |
| return { | |
| vendor: 'ccr', | |
| baseModel | |
| } | |
| } | |
| } | |
| // No recognized vendor prefix found | |
| return { | |
| vendor: null, | |
| baseModel: trimmed | |
| } | |
| } | |
| /** | |
| * Check if a model string has a vendor prefix | |
| * @param {string} modelStr - Model string to check | |
| * @returns {boolean} - True if the model has a vendor prefix | |
| */ | |
| function hasVendorPrefix(modelStr) { | |
| const { vendor } = parseVendorPrefixedModel(modelStr) | |
| return vendor !== null | |
| } | |
| /** | |
| * Get the effective model name for scheduling and processing | |
| * This removes vendor prefixes to get the actual model name used for API calls | |
| * @param {string} modelStr - Original model string | |
| * @returns {string} - Effective model name without vendor prefix | |
| */ | |
| function getEffectiveModel(modelStr) { | |
| const { baseModel } = parseVendorPrefixedModel(modelStr) | |
| return baseModel | |
| } | |
| /** | |
| * Get the vendor type from a model string | |
| * @param {string} modelStr - Model string to parse | |
| * @returns {string|null} - Vendor type ('ccr') or null if no prefix | |
| */ | |
| function getVendorType(modelStr) { | |
| const { vendor } = parseVendorPrefixedModel(modelStr) | |
| return vendor | |
| } | |
| module.exports = { | |
| parseVendorPrefixedModel, | |
| hasVendorPrefix, | |
| getEffectiveModel, | |
| getVendorType | |
| } | |