mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-17 22:16:38 +00:00
* fix(cliproxy): migrate deprecated gemini-claude-* model names to upstream claude-* names CLIProxyAPI registry no longer recognizes the gemini-claude-* prefix convention. Model names in catalog, base config, and user settings are migrated to upstream claude-* names. Auto-migration in env-builder rewrites existing user settings on load and persists the change. Closes #513 * fix: address code review feedback — sync UI layer and add migration tests - Sync UI isNativeGeminiModel() with backend (remove gemini-claude- exclusion) - Update UI model catalog agy entries from gemini-claude-* to claude-* - Update CI/CD workflow and code-reviewer default model names - Add unit tests for migrateDeprecatedModelNames() logic
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
/**
|
|
* Extended Context Utilities
|
|
* Shared utilities for extended context (1M token window) feature.
|
|
*/
|
|
|
|
/** The suffix that enables 1M token context in Claude Code */
|
|
export const EXTENDED_CONTEXT_SUFFIX = '[1m]';
|
|
|
|
/**
|
|
* Check if model is a native Gemini model (auto-enabled behavior).
|
|
* Native Gemini models have the gemini-* prefix.
|
|
*
|
|
* NOTE: This function is intentionally duplicated from src/cliproxy/model-catalog.ts
|
|
* to avoid bundling backend code in the UI. Keep both in sync.
|
|
*/
|
|
export function isNativeGeminiModel(modelId: string): boolean {
|
|
const lower = modelId.toLowerCase();
|
|
return lower.startsWith('gemini-');
|
|
}
|
|
|
|
/**
|
|
* Check if model string already has [1m] suffix
|
|
*/
|
|
export function hasExtendedContextSuffix(model: string): boolean {
|
|
return model.toLowerCase().endsWith(EXTENDED_CONTEXT_SUFFIX.toLowerCase());
|
|
}
|
|
|
|
/**
|
|
* Apply [1m] suffix to model string if not already present
|
|
*/
|
|
export function applyExtendedContextSuffix(model: string): string {
|
|
if (!model) return model;
|
|
if (hasExtendedContextSuffix(model)) return model;
|
|
return `${model}${EXTENDED_CONTEXT_SUFFIX}`;
|
|
}
|
|
|
|
/**
|
|
* Strip [1m] suffix from model string
|
|
*/
|
|
export function stripExtendedContextSuffix(model: string): string {
|
|
if (!model) return model;
|
|
if (hasExtendedContextSuffix(model)) {
|
|
return model.slice(0, -EXTENDED_CONTEXT_SUFFIX.length);
|
|
}
|
|
return model;
|
|
}
|