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 committed 2025-12-04 05:41:10 -05:00
1 parent 7937009665
commit 848fbf4686
2 files changed
+11 -9

No files matched your search

+4 -4
View File
@@ -15,7 +15,7 @@ export interface ModelEntry {
id: string; id: string;
/** Human-readable name for display */ /** Human-readable name for display */
name: string; 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'; tier?: 'free' | 'paid';
/** Optional description for the model */ /** Optional description for the model */
description?: string; description?: string;
@@ -61,7 +61,7 @@ export const MODEL_CATALOG: Partial<Record<CLIProxyProvider, ProviderCatalog>> =
id: 'gemini-3-pro-preview', id: 'gemini-3-pro-preview',
name: 'Gemini 3 Pro', name: 'Gemini 3 Pro',
tier: 'paid', 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', id: 'gemini-3-pro-preview',
name: 'Gemini 3 Pro', name: 'Gemini 3 Pro',
tier: 'paid', tier: 'paid',
description: 'Latest model, requires Paid API tier', description: 'Latest model, requires paid Google account',
}, },
{ {
id: 'gemini-2.5-pro', id: 'gemini-2.5-pro',
name: '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 * Format model entry for display in selection list
*/ */
function formatModelOption(model: ModelEntry): string { function formatModelOption(model: ModelEntry): string {
// Tier badge: clarify that "paid" means API tier, not model pricing // Tier badge: clarify that "paid" means paid Google account (not free tier)
const tierBadge = model.tier === 'paid' ? color(' [Paid API]', 'warning') : ''; const tierBadge = model.tier === 'paid' ? color(' [Paid Tier]', 'warning') : '';
return `${model.name}${tierBadge}`; return `${model.name}${tierBadge}`;
} }
@@ -54,7 +54,7 @@ function formatModelOption(model: ModelEntry): string {
function formatModelDetailed(model: ModelEntry, isCurrent: boolean): string { function formatModelDetailed(model: ModelEntry, isCurrent: boolean): string {
const marker = isCurrent ? color('>', 'success') : ' '; const marker = isCurrent ? color('>', 'success') : ' ';
const name = isCurrent ? bold(model.name) : model.name; 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}`) : ''; const desc = model.description ? dim(` - ${model.description}`) : '';
return ` ${marker} ${name}${tierBadge}${desc}`; return ` ${marker} ${name}${tierBadge}${desc}`;
} }
@@ -103,7 +103,9 @@ export async function configureProviderModel(
console.error(header(`Configure ${catalog.displayName} Model`)); console.error(header(`Configure ${catalog.displayName} Model`));
console.error(''); console.error('');
console.error(dim(' Select which model to use for this provider.')); 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(''); console.error('');
// Interactive selection // Interactive selection
@@ -181,7 +183,7 @@ export async function showCurrentConfig(provider: CLIProxyProvider): Promise<voi
console.error(''); console.error('');
console.error(bold('Available models:')); 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(''); console.error('');
catalog.models.forEach((m) => { catalog.models.forEach((m) => {
const isCurrent = m.id === currentModel; const isCurrent = m.id === currentModel;