fix(cliproxy): clarify paid tier messaging to reference google account tier

Replace misleading "[Paid API]" and "API key" references with "[Paid Tier]"
and clarify that paid tier refers to a paid Google account (not free tier),
not an API key purchase. Updates model descriptions in both catalog and
configuration to accurately reflect the tier requirement.
This commit is contained in:
kaitranntt
2025-12-04 05:41:10 -05:00
parent 7937009665
commit 848fbf4686
2 changed files with 11 additions and 9 deletions
+4 -4
View File
@@ -15,7 +15,7 @@ export interface ModelEntry {
id: string;
/** Human-readable name for display */
name: string;
/** Access tier indicator - 'paid' means requires paid API tier (not model pricing) */
/** Access tier indicator - 'paid' means requires paid Google account (not free tier) */
tier?: 'free' | 'paid';
/** Optional description for the model */
description?: string;
@@ -61,7 +61,7 @@ export const MODEL_CATALOG: Partial<Record<CLIProxyProvider, ProviderCatalog>> =
id: 'gemini-3-pro-preview',
name: 'Gemini 3 Pro',
tier: 'paid',
description: 'Google latest, requires Paid API tier',
description: 'Google latest, requires paid Google account',
},
],
},
@@ -74,12 +74,12 @@ export const MODEL_CATALOG: Partial<Record<CLIProxyProvider, ProviderCatalog>> =
id: 'gemini-3-pro-preview',
name: 'Gemini 3 Pro',
tier: 'paid',
description: 'Latest model, requires Paid API tier',
description: 'Latest model, requires paid Google account',
},
{
id: 'gemini-2.5-pro',
name: 'Gemini 2.5 Pro',
description: 'Stable release, works with free tier',
description: 'Stable, works with free Google account',
},
],
},
+7 -5
View File
@@ -43,8 +43,8 @@ export function getCurrentModel(provider: CLIProxyProvider): string | undefined
* Format model entry for display in selection list
*/
function formatModelOption(model: ModelEntry): string {
// Tier badge: clarify that "paid" means API tier, not model pricing
const tierBadge = model.tier === 'paid' ? color(' [Paid API]', 'warning') : '';
// Tier badge: clarify that "paid" means paid Google account (not free tier)
const tierBadge = model.tier === 'paid' ? color(' [Paid Tier]', 'warning') : '';
return `${model.name}${tierBadge}`;
}
@@ -54,7 +54,7 @@ function formatModelOption(model: ModelEntry): string {
function formatModelDetailed(model: ModelEntry, isCurrent: boolean): string {
const marker = isCurrent ? color('>', 'success') : ' ';
const name = isCurrent ? bold(model.name) : model.name;
const tierBadge = model.tier === 'paid' ? color(' [Paid API]', 'warning') : '';
const tierBadge = model.tier === 'paid' ? color(' [Paid Tier]', 'warning') : '';
const desc = model.description ? dim(` - ${model.description}`) : '';
return ` ${marker} ${name}${tierBadge}${desc}`;
}
@@ -103,7 +103,9 @@ export async function configureProviderModel(
console.error(header(`Configure ${catalog.displayName} Model`));
console.error('');
console.error(dim(' Select which model to use for this provider.'));
console.error(dim(' Models marked [Paid API] require a paid Google AI Studio API key.'));
console.error(
dim(' Models marked [Paid Tier] require a paid Google account (not free tier).')
);
console.error('');
// Interactive selection
@@ -181,7 +183,7 @@ export async function showCurrentConfig(provider: CLIProxyProvider): Promise<voi
console.error('');
console.error(bold('Available models:'));
console.error(dim(' [Paid API] = Requires paid Google AI Studio API key'));
console.error(dim(' [Paid Tier] = Requires paid Google account (not free tier)'));
console.error('');
catalog.models.forEach((m) => {
const isCurrent = m.id === currentModel;