Files
ccs/src/commands/cliproxy/auth-subcommand.ts
T
Tam Nhu Tran d2d1d599cd feat(cliproxy): add target support to subcommands
- add --target parsing and validation in create/edit/remove flows

- show target in list/remove/edit UX and usage examples

- document target option in cliproxy help output
2026-02-25 15:52:29 +07:00

65 lines
2.2 KiB
TypeScript

/**
* CLIProxy OAuth Authentication Operations
*
* Handles:
* - ccs cliproxy list
* - OAuth status display
* - Built-in profile authentication status
*/
import { getAllAuthStatus, getOAuthConfig } from '../../cliproxy/auth-handler';
import { listVariants } from '../../cliproxy/services';
import { initUI, header, subheader, color, dim, ok, warn, table } from '../../utils/ui';
export async function handleList(): Promise<void> {
await initUI();
console.log(header('CLIProxy Profiles'));
console.log('');
// Built-in profiles
console.log(subheader('Built-in Profiles'));
const authStatuses = getAllAuthStatus();
for (const status of authStatuses) {
const oauthConfig = getOAuthConfig(status.provider);
const icon = status.authenticated ? ok('') : warn('');
const authLabel = status.authenticated
? color('authenticated', 'success')
: dim('not authenticated');
const lastAuthStr = status.lastAuth ? dim(` (${status.lastAuth.toLocaleDateString()})`) : '';
console.log(
` ${icon} ${color(status.provider, 'command').padEnd(18)} ${oauthConfig.displayName.padEnd(16)} ${authLabel}${lastAuthStr}`
);
}
console.log('');
console.log(dim(' To authenticate: ccs <provider> --auth'));
console.log(dim(' To logout: ccs <provider> --logout'));
console.log('');
// Custom variants
const variants = listVariants();
const variantNames = Object.keys(variants);
if (variantNames.length > 0) {
console.log(subheader('Custom Variants'));
const rows = variantNames.map((name) => {
const variant = variants[name];
const providerDisplay = variant.type === 'composite' ? 'composite' : variant.provider;
const portStr = variant.port ? String(variant.port) : '-';
return [name, providerDisplay, variant.target || 'claude', portStr, variant.settings || '-'];
});
console.log(
table(rows, {
head: ['Variant', 'Provider', 'Target', 'Port', 'Settings'],
colWidths: [15, 12, 10, 8, 24],
})
);
console.log('');
console.log(dim(`Total: ${variantNames.length} custom variant(s)`));
console.log('');
}
console.log(dim('To create a custom variant:'));
console.log(` ${color('ccs cliproxy create', 'command')}`);
console.log('');
}