mirror of
https://github.com/tiennm99/ccs.git
synced 2026-08-06 00:22:23 +00:00
Merge remote-tracking branch 'origin/dev' into fix/review-cursor-variant-safety
This commit is contained in:
@@ -229,6 +229,15 @@ ccs cliproxy doctor # Check quota status for all agy accounts
|
||||
|
||||
**Auto-Failover**: When an Antigravity account runs out of quota, CCS automatically switches to another account with remaining capacity. Shared GCP project accounts are excluded (pooled quota).
|
||||
|
||||
### CLIProxy Lifecycle
|
||||
|
||||
```bash
|
||||
ccs cliproxy start # Start CLIProxy background service
|
||||
ccs cliproxy status # Check running status
|
||||
ccs cliproxy restart # Restart CLIProxy service
|
||||
ccs cliproxy stop # Stop running CLIProxy service
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
## Configuration
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kaitranntt/ccs",
|
||||
"version": "7.43.0-dev.15",
|
||||
"version": "7.43.0-dev.17",
|
||||
"description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6",
|
||||
"keywords": [
|
||||
"cli",
|
||||
|
||||
@@ -62,6 +62,16 @@ export async function startProxy(
|
||||
return ensureCliproxyService(port, verbose);
|
||||
}
|
||||
|
||||
/**
|
||||
* Start CLIProxy service (or reuse existing running instance)
|
||||
*/
|
||||
export async function startProxy(
|
||||
port: number = CLIPROXY_DEFAULT_PORT,
|
||||
verbose: boolean = false
|
||||
): Promise<StartProxyResult> {
|
||||
return ensureCliproxyService(port, verbose);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if proxy is currently running
|
||||
*/
|
||||
|
||||
@@ -76,6 +76,57 @@ export async function handleRestart(verbose = false): Promise<void> {
|
||||
console.log('');
|
||||
}
|
||||
|
||||
export async function handleStart(verbose = false): Promise<void> {
|
||||
await initUI();
|
||||
console.log(header('Start CLIProxy'));
|
||||
console.log('');
|
||||
|
||||
const result = await startProxy(CLIPROXY_DEFAULT_PORT, verbose);
|
||||
if (result.started) {
|
||||
if (result.alreadyRunning) {
|
||||
console.log(info(`CLIProxy already running on port ${result.port}`));
|
||||
if (result.configRegenerated) {
|
||||
console.log(warn('Config updated - restart CLIProxy to apply changes'));
|
||||
}
|
||||
} else {
|
||||
console.log(ok(`CLIProxy started on port ${result.port}`));
|
||||
}
|
||||
console.log(dim('To stop: ccs cliproxy stop'));
|
||||
} else {
|
||||
console.log(warn(result.error || 'Failed to start CLIProxy'));
|
||||
}
|
||||
console.log('');
|
||||
}
|
||||
|
||||
export async function handleRestart(verbose = false): Promise<void> {
|
||||
await initUI();
|
||||
console.log(header('Restart CLIProxy'));
|
||||
console.log('');
|
||||
|
||||
const stopResult = await stopProxy();
|
||||
if (stopResult.stopped) {
|
||||
console.log(ok(`CLIProxy stopped (PID ${stopResult.pid})`));
|
||||
} else if (stopResult.error === 'No active CLIProxy session found') {
|
||||
console.log(info('No active CLIProxy session found, starting a new instance'));
|
||||
} else {
|
||||
console.log(warn(stopResult.error || 'Failed to stop existing CLIProxy'));
|
||||
console.log(info('Attempting to start a fresh instance...'));
|
||||
}
|
||||
|
||||
const startResult = await startProxy(CLIPROXY_DEFAULT_PORT, verbose);
|
||||
if (startResult.started) {
|
||||
if (startResult.alreadyRunning) {
|
||||
console.log(info(`CLIProxy already running on port ${startResult.port}`));
|
||||
} else {
|
||||
console.log(ok(`CLIProxy started on port ${startResult.port}`));
|
||||
}
|
||||
} else {
|
||||
console.log(warn(startResult.error || 'Failed to restart CLIProxy'));
|
||||
}
|
||||
|
||||
console.log('');
|
||||
}
|
||||
|
||||
export async function handleProxyStatus(): Promise<void> {
|
||||
await initUI();
|
||||
console.log(header('CLIProxy Status'));
|
||||
|
||||
Reference in New Issue
Block a user