mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-11 03:13:12 +00:00
feat: deprecate GitHub Copilot compatibility surfaces (#1196)
This commit is contained in:
1 parent
e2974ede44
commit
19a50a8dd8
15 files changed
+87
-35
No files matched your search
@@ -26,7 +26,8 @@ CCS gives you one stable command surface while letting you switch between:
|
|||||||
|
|
||||||
- multiple runtimes such as Claude Code, Factory Droid, and Codex CLI
|
- multiple runtimes such as Claude Code, Factory Droid, and Codex CLI
|
||||||
- multiple Claude subscriptions and isolated account contexts
|
- multiple Claude subscriptions and isolated account contexts
|
||||||
- OAuth providers like Codex, Copilot, Kiro, Claude, Qwen, Kimi, and more
|
- OAuth providers like Codex, Kiro, Claude, Qwen, Kimi, and more, with legacy
|
||||||
|
Copilot compatibility for existing setups
|
||||||
- API and local-model profiles like GLM, Kimi, OpenRouter, Ollama, llama.cpp,
|
- API and local-model profiles like GLM, Kimi, OpenRouter, Ollama, llama.cpp,
|
||||||
Novita, and Alibaba Coding Plan
|
Novita, and Alibaba Coding Plan
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# CCS Product Development Requirements (PDR)
|
# CCS Product Development Requirements (PDR)
|
||||||
|
|
||||||
Last Updated: 2026-04-08
|
Last Updated: 2026-05-07
|
||||||
|
|
||||||
## Product Overview
|
## Product Overview
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ Developers using Claude Code face these challenges:
|
|||||||
CCS provides:
|
CCS provides:
|
||||||
|
|
||||||
1. **Multi-Account Claude**: Isolated instances via `CLAUDE_CONFIG_DIR`
|
1. **Multi-Account Claude**: Isolated instances via `CLAUDE_CONFIG_DIR`
|
||||||
2. **OAuth Providers**: Zero-config Gemini, Codex, Antigravity, Copilot, Kiro (ghcp) integration
|
2. **OAuth Providers**: Zero-config Gemini, Codex, Antigravity, Kiro, and other active OAuth integrations, with deprecated Copilot compatibility for existing setups
|
||||||
3. **AI Providers**: Dedicated CLIProxy dashboard for Gemini, Codex, Claude, Vertex, and OpenAI-compatible API-key families
|
3. **AI Providers**: Dedicated CLIProxy dashboard for Gemini, Codex, Claude, Vertex, and OpenAI-compatible API-key families
|
||||||
4. **API Profiles**: GLM, Kimi, OpenRouter, any Anthropic-compatible API
|
4. **API Profiles**: GLM, Kimi, OpenRouter, any Anthropic-compatible API
|
||||||
5. **Visual Dashboard**: React SPA for configuration management
|
5. **Visual Dashboard**: React SPA for configuration management
|
||||||
@@ -68,8 +68,8 @@ CCS provides:
|
|||||||
- Share commands, skills, agents across accounts
|
- Share commands, skills, agents across accounts
|
||||||
|
|
||||||
### FR-003: OAuth Provider Integration
|
### FR-003: OAuth Provider Integration
|
||||||
- Support Gemini, Codex, Antigravity, Copilot, Kiro (ghcp) OAuth flows
|
- Support Gemini, Codex, Antigravity, Kiro, and deprecated Copilot compatibility OAuth flows
|
||||||
- Browser-based authentication (Authorization Code flow for most, Device Code for ghcp)
|
- Browser-based authentication (Authorization Code flow for most, Device Code for ghcp compatibility)
|
||||||
- Token caching and refresh
|
- Token caching and refresh
|
||||||
|
|
||||||
### FR-004: API Profile Management
|
### FR-004: API Profile Management
|
||||||
@@ -273,7 +273,7 @@ CCS provides:
|
|||||||
|
|
||||||
### v7.2 Release (Complete)
|
### v7.2 Release (Complete)
|
||||||
- [x] Kiro (AWS) OAuth provider support via CLIProxyAPIPlus
|
- [x] Kiro (AWS) OAuth provider support via CLIProxyAPIPlus
|
||||||
- [x] GitHub Copilot (ghcp) OAuth provider via Device Code flow
|
- [x] GitHub Copilot (ghcp) OAuth provider via Device Code flow (deprecated compatibility)
|
||||||
- [x] Authorization Code flow for Kiro (port 9876)
|
- [x] Authorization Code flow for Kiro (port 9876)
|
||||||
- [x] Device Code flow for ghcp (no local port needed)
|
- [x] Device Code flow for ghcp (no local port needed)
|
||||||
|
|
||||||
@@ -334,8 +334,8 @@ CCS provides:
|
|||||||
### External Services
|
### External Services
|
||||||
- Anthropic Claude API
|
- Anthropic Claude API
|
||||||
- Google Gemini API
|
- Google Gemini API
|
||||||
- GitHub Codex/Copilot API
|
- GitHub Codex API
|
||||||
- GitHub Copilot (ghcp - Device Code OAuth)
|
- GitHub Copilot (ghcp - deprecated Device Code OAuth compatibility)
|
||||||
- AWS Kiro (Authorization Code OAuth)
|
- AWS Kiro (Authorization Code OAuth)
|
||||||
- Z.AI GLM API
|
- Z.AI GLM API
|
||||||
- OpenRouter API
|
- OpenRouter API
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ All major modularization work is complete. The codebase evolved from monolithic
|
|||||||
| 8 | Auth Monitor | `monitoring/auth-monitor/` (465->8 files) |
|
| 8 | Auth Monitor | `monitoring/auth-monitor/` (465->8 files) |
|
||||||
| 9 | Test Infrastructure | 1407 tests, 90% coverage |
|
| 9 | Test Infrastructure | 1407 tests, 90% coverage |
|
||||||
| 10 | Remote CLIProxy | `proxy-config-resolver.ts`, `remote-proxy-client.ts` |
|
| 10 | Remote CLIProxy | `proxy-config-resolver.ts`, `remote-proxy-client.ts` |
|
||||||
| 11 | Kiro + ghcp Providers | OAuth support via CLIProxyAPIPlus (v7.2) |
|
| 11 | Kiro + legacy ghcp Providers | OAuth support via CLIProxyAPIPlus (v7.2) |
|
||||||
| 12 | Hybrid Quota Management | `quota-manager.ts`, `quota-fetcher.ts` (v7.14) |
|
| 12 | Hybrid Quota Management | `quota-manager.ts`, `quota-fetcher.ts` (v7.14) |
|
||||||
| 13 | Docker Support | `docker/` directory with Dockerfile, Compose, entrypoint |
|
| 13 | Docker Support | `docker/` directory with Dockerfile, Compose, entrypoint |
|
||||||
| 14 | Image Analysis Hook | Vision proxying via CLIProxy transformers (v7.34) |
|
| 14 | Image Analysis Hook | Vision proxying via CLIProxy transformers (v7.34) |
|
||||||
@@ -41,6 +41,7 @@ All major modularization work is complete. The codebase evolved from monolithic
|
|||||||
|
|
||||||
### Recent Fixes
|
### Recent Fixes
|
||||||
|
|
||||||
|
- **2026-05-07**: **#1103** GitHub Copilot is now treated as a deprecated compatibility bridge. The dashboard moves Copilot out of the active Identity & Access section and into Deprecated, quick setup no longer offers `ghcp` for new onboarding, CLI/help/config copy marks Copilot as deprecated, and existing `ccs copilot` / `ghcp` compatibility paths remain available for current setups.
|
||||||
- **2026-05-07**: **#1189** Headless settings-profile delegation now preserves native Claude passthrough args without a Claude flag allowlist. Explicit `--channels` values reach Claude Code, future native flags can carry multiple adjacent values, malformed CCS-owned flags no longer swallow the next native flag, and `--prompt=<text>` routes through headless delegation consistently with `--prompt <text>`.
|
- **2026-05-07**: **#1189** Headless settings-profile delegation now preserves native Claude passthrough args without a Claude flag allowlist. Explicit `--channels` values reach Claude Code, future native flags can carry multiple adjacent values, malformed CCS-owned flags no longer swallow the next native flag, and `--prompt=<text>` routes through headless delegation consistently with `--prompt <text>`.
|
||||||
- **2026-05-03**: **#1172** Local CLIProxy config generation now keeps the CPAMC management dashboard aligned with backend selection. `backend: original` points to the upstream dashboard, `backend: plus` points to the CCS-maintained CPAMC fork, `cliproxy.management_panel_repository` lets advanced users override the panel repository, and stale generated configs are regenerated when the expected panel source changes.
|
- **2026-05-03**: **#1172** Local CLIProxy config generation now keeps the CPAMC management dashboard aligned with backend selection. `backend: original` points to the upstream dashboard, `backend: plus` points to the CCS-maintained CPAMC fork, `cliproxy.management_panel_repository` lets advanced users override the panel repository, and stale generated configs are regenerated when the expected panel source changes.
|
||||||
- **2026-04-30**: **#1153** Native Claude launches now accept session-scoped `--effort low|medium|high|xhigh|max` overrides through CCS without mutating global Claude settings. CCS validates invalid or missing effort values before spawning Claude, normalizes accepted values, keeps default headless `-p/--prompt` launches on native Claude instead of delegation parsing, and preserves CLIProxy/Codex/Droid effort aliases.
|
- **2026-04-30**: **#1153** Native Claude launches now accept session-scoped `--effort low|medium|high|xhigh|max` overrides through CCS without mutating global Claude settings. CCS validates invalid or missing effort values before spawning Claude, normalizes accepted values, keeps default headless `-p/--prompt` launches on native Claude instead of delegation parsing, and preserves CLIProxy/Codex/Droid effort aliases.
|
||||||
@@ -214,7 +215,7 @@ worktrees:
|
|||||||
|
|
||||||
- **#158**: Fix AGY OAuth flow
|
- **#158**: Fix AGY OAuth flow
|
||||||
- **#157**: ~~Add Kiro auth support from CLIProxyAPIPlus~~ **COMPLETE** (v7.2)
|
- **#157**: ~~Add Kiro auth support from CLIProxyAPIPlus~~ **COMPLETE** (v7.2)
|
||||||
- GitHub Copilot (ghcp) Device Code flow **COMPLETE** (v7.2)
|
- GitHub Copilot (ghcp) Device Code flow **COMPLETE** (v7.2, now deprecated compatibility)
|
||||||
- Hybrid quota management **COMPLETE** (v7.14)
|
- Hybrid quota management **COMPLETE** (v7.14)
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -225,7 +226,7 @@ worktrees:
|
|||||||
|-----------|--------|--------|
|
|-----------|--------|--------|
|
||||||
| Modularization (Phases 1-9) | COMPLETE | - |
|
| Modularization (Phases 1-9) | COMPLETE | - |
|
||||||
| Remote CLIProxy Support (#142) | COMPLETE | v7.1 |
|
| Remote CLIProxy Support (#142) | COMPLETE | v7.1 |
|
||||||
| Kiro + GitHub Copilot OAuth (#157) | COMPLETE | v7.2 |
|
| Kiro + GitHub Copilot OAuth (#157) | COMPLETE, Copilot now deprecated compatibility | v7.2 |
|
||||||
| Hybrid Quota Management | COMPLETE | v7.14 |
|
| Hybrid Quota Management | COMPLETE | v7.14 |
|
||||||
| Docker Support (PR #345) | COMPLETE | v7.23 |
|
| Docker Support (PR #345) | COMPLETE | v7.23 |
|
||||||
| Image Analysis Hook | COMPLETE | v7.34 |
|
| Image Analysis Hook | COMPLETE | v7.34 |
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ CLIProxyAPI is a local OAuth proxy binary that enables seamless integration with
|
|||||||
|
|
||||||
### Local Backend Choice
|
### Local Backend Choice
|
||||||
|
|
||||||
CCS defaults to the original `router-for-me/CLIProxyAPI` backend because it is the stable MIT upstream. The `plus` backend is an explicit opt-in path that downloads the community-maintained `kaitranntt/CLIProxyAPIPlus` fork for providers that still require Plus-only support, such as Kiro, GitHub Copilot, Cursor, GitLab, CodeBuddy, and Kilo. CCS does not silently downgrade `backend: plus` to `original`; users choose that backend deliberately when they need those providers.
|
CCS defaults to the original `router-for-me/CLIProxyAPI` backend because it is the stable MIT upstream. The `plus` backend is an explicit opt-in path that downloads the community-maintained `kaitranntt/CLIProxyAPIPlus` fork for providers that still require Plus-only support, such as Kiro, Cursor, GitLab, CodeBuddy, Kilo, and deprecated GitHub Copilot compatibility. CCS does not silently downgrade `backend: plus` to `original`; users choose that backend deliberately when they need those providers.
|
||||||
|
|
||||||
Generated local CLIProxy configs also keep the management dashboard aligned with the selected backend. `backend: original` uses upstream CPAMC (`router-for-me/Cli-Proxy-API-Management-Center`), while `backend: plus` uses the CCS-maintained dashboard fork (`kaitranntt/Cli-Proxy-API-Management-Center`). Advanced users can override the generated `remote-management.panel-github-repository` value by setting `cliproxy.management_panel_repository` in `~/.ccs/config.yaml`; CCS will regenerate stale local CLIProxy configs when the expected dashboard repository changes.
|
Generated local CLIProxy configs also keep the management dashboard aligned with the selected backend. `backend: original` uses upstream CPAMC (`router-for-me/Cli-Proxy-API-Management-Center`), while `backend: plus` uses the CCS-maintained dashboard fork (`kaitranntt/Cli-Proxy-API-Management-Center`). Advanced users can override the generated `remote-management.panel-github-repository` value by setting `cliproxy.management_panel_repository` in `~/.ccs/config.yaml`; CCS will regenerate stale local CLIProxy configs when the expected dashboard repository changes.
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ Generated local CLIProxy configs also keep the management dashboard aligned with
|
|||||||
| | - Callback to localhost:PORT
|
| | - Callback to localhost:PORT
|
||||||
| |
|
| |
|
||||||
| +---> Device Code Flow (no port needed)
|
| +---> Device Code Flow (no port needed)
|
||||||
| - GitHub Copilot (ghcp)
|
| - GitHub Copilot (ghcp, deprecated compatibility)
|
||||||
| - User enters code at github.com/login/device
|
| - User enters code at github.com/login/device
|
||||||
| - Polls for token completion
|
| - Polls for token completion
|
||||||
| |
|
| |
|
||||||
@@ -73,7 +73,7 @@ Generated local CLIProxy configs also keep the management dashboard aligned with
|
|||||||
+---> GitHub (Codex)
|
+---> GitHub (Codex)
|
||||||
+---> Antigravity (AGY)
|
+---> Antigravity (AGY)
|
||||||
+---> AWS Kiro (Claude-powered)
|
+---> AWS Kiro (Claude-powered)
|
||||||
+---> GitHub Copilot (ghcp)
|
+---> GitHub Copilot (ghcp, deprecated compatibility)
|
||||||
+---> OpenAI-compatible endpoints
|
+---> OpenAI-compatible endpoints
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ Generated local CLIProxy configs also keep the management dashboard aligned with
|
|||||||
| Codex | `codex` | Authorization Code | 9876 | CLIProxyAPI |
|
| Codex | `codex` | Authorization Code | 9876 | CLIProxyAPI |
|
||||||
| Antigravity | `agy` | Authorization Code | 9876 | CLIProxyAPI |
|
| Antigravity | `agy` | Authorization Code | 9876 | CLIProxyAPI |
|
||||||
| Kiro (AWS) | `kiro` | Method-aware (default: Device Code) | 9876 | CLIProxyAPIPlus fork |
|
| Kiro (AWS) | `kiro` | Method-aware (default: Device Code) | 9876 | CLIProxyAPIPlus fork |
|
||||||
| GitHub Copilot | `ghcp` | Device Code | none | CLIProxyAPIPlus fork |
|
| GitHub Copilot (deprecated) | `ghcp` | Device Code | none | CLIProxyAPIPlus fork |
|
||||||
| Cursor | `cursor` | Browser URL polling | none | CLIProxyAPIPlus fork |
|
| Cursor | `cursor` | Browser URL polling | none | CLIProxyAPIPlus fork |
|
||||||
|
|
||||||
### Codex Duplicate-Email Account Identity
|
### Codex Duplicate-Email Account Identity
|
||||||
@@ -299,7 +299,7 @@ When CCS detects exhaustion and a healthy fallback exists, it temporarily pauses
|
|||||||
| | - Claude: policy limits endpoint
|
| | - Claude: policy limits endpoint
|
||||||
| | - Codex: ChatGPT usage windows
|
| | - Codex: ChatGPT usage windows
|
||||||
| | - Gemini CLI: Code Assist quota buckets
|
| | - Gemini CLI: Code Assist quota buckets
|
||||||
| | - GitHub Copilot: copilot_internal/user snapshots
|
| | - GitHub Copilot: copilot_internal/user snapshots (deprecated compatibility)
|
||||||
| |
|
| |
|
||||||
| +---> Detect tier (free/paid/unknown)
|
| +---> Detect tier (free/paid/unknown)
|
||||||
| |
|
| |
|
||||||
@@ -391,7 +391,7 @@ function selectBestAccount(accounts: AccountInfo[]): AccountInfo | null {
|
|||||||
|
|
||||||
### OAuth Providers - Device Code Flow
|
### OAuth Providers - Device Code Flow
|
||||||
|
|
||||||
**Providers**: GitHub Copilot (ghcp)
|
**Providers**: GitHub Copilot (ghcp, deprecated compatibility)
|
||||||
|
|
||||||
Provider identity note:
|
Provider identity note:
|
||||||
- Providers that do not expose a reliable email no longer require a manual nickname during first auth.
|
- Providers that do not expose a reliable email no longer require a manual nickname during first auth.
|
||||||
@@ -591,7 +591,7 @@ Image Analysis Hook enables vision model proxying through CLIProxy with automati
|
|||||||
| Codex | ✓ | Via CCS ImageAnalysis provider route |
|
| Codex | ✓ | Via CCS ImageAnalysis provider route |
|
||||||
| Antigravity | ✓ | Via CCS ImageAnalysis provider route |
|
| Antigravity | ✓ | Via CCS ImageAnalysis provider route |
|
||||||
| Kiro | ✓ | Via mapped CCS provider route when configured |
|
| Kiro | ✓ | Via mapped CCS provider route when configured |
|
||||||
| Copilot | ✓ | Via mapped ghcp provider route |
|
| Copilot | ✓ | Deprecated compatibility route via mapped ghcp provider |
|
||||||
| GLM/Kimi | ✓ | Via explicit or fallback backend mapping |
|
| GLM/Kimi | ✓ | Via explicit or fallback backend mapping |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ export const PROVIDER_CAPABILITIES: Record<CLIProxyProvider, ProviderCapabilitie
|
|||||||
},
|
},
|
||||||
ghcp: {
|
ghcp: {
|
||||||
displayName: 'GitHub Copilot (OAuth)',
|
displayName: 'GitHub Copilot (OAuth)',
|
||||||
description: 'GitHub Copilot via OAuth',
|
description: 'Deprecated GitHub Copilot compatibility via OAuth',
|
||||||
oauthFlow: 'device_code',
|
oauthFlow: 'device_code',
|
||||||
callbackPort: null,
|
callbackPort: null,
|
||||||
callbackProviderName: 'copilot',
|
callbackProviderName: 'copilot',
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ export const ROOT_COMMAND_CATALOG: readonly RootCommandEntry[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'copilot',
|
name: 'copilot',
|
||||||
summary: 'Run or manage the GitHub Copilot bridge',
|
summary: 'Run or manage the deprecated GitHub Copilot bridge',
|
||||||
group: 'runtime',
|
group: 'runtime',
|
||||||
visibility: 'public',
|
visibility: 'public',
|
||||||
},
|
},
|
||||||
@@ -198,7 +198,7 @@ export const BUILTIN_PROVIDER_SHORTCUTS: readonly ShortcutEntry[] = CLIPROXY_PRO
|
|||||||
qwen: 'Qwen Code via CLIProxy OAuth',
|
qwen: 'Qwen Code via CLIProxy OAuth',
|
||||||
iflow: 'iFlow via CLIProxy OAuth',
|
iflow: 'iFlow via CLIProxy OAuth',
|
||||||
kiro: 'Kiro via CLIProxy OAuth',
|
kiro: 'Kiro via CLIProxy OAuth',
|
||||||
ghcp: 'GitHub Copilot via CLIProxy OAuth',
|
ghcp: 'Deprecated GitHub Copilot via CLIProxy OAuth',
|
||||||
claude: 'Claude via CLIProxy OAuth',
|
claude: 'Claude via CLIProxy OAuth',
|
||||||
kimi: 'Kimi via CLIProxy OAuth',
|
kimi: 'Kimi via CLIProxy OAuth',
|
||||||
cursor: 'Cursor via CLIProxy OAuth',
|
cursor: 'Cursor via CLIProxy OAuth',
|
||||||
|
|||||||
@@ -73,7 +73,13 @@ function printCopilotWarnings(messages: string[]): void {
|
|||||||
* Show help for copilot commands.
|
* Show help for copilot commands.
|
||||||
*/
|
*/
|
||||||
function handleHelp(): number {
|
function handleHelp(): number {
|
||||||
console.log('GitHub Copilot Integration');
|
console.log('GitHub Copilot Integration (deprecated)');
|
||||||
|
console.log('');
|
||||||
|
console.log(
|
||||||
|
warn(
|
||||||
|
'Deprecated: GitHub usage-based Copilot billing begins June 1, 2026. Existing local setups remain available for compatibility; prefer Codex or another active provider for new work.'
|
||||||
|
)
|
||||||
|
);
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log('Usage: ccs copilot <subcommand>');
|
console.log('Usage: ccs copilot <subcommand>');
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|||||||
@@ -290,7 +290,7 @@ export async function handleHelpCommand(writeLine: HelpWriter = console.log): Pr
|
|||||||
{ name: 'ccs proxy --help', summary: 'Deep help for the OpenAI-compatible local proxy' },
|
{ name: 'ccs proxy --help', summary: 'Deep help for the OpenAI-compatible local proxy' },
|
||||||
{ name: 'ccs docker --help', summary: 'Deep help for Docker deployment commands' },
|
{ name: 'ccs docker --help', summary: 'Deep help for Docker deployment commands' },
|
||||||
{ name: 'ccs cursor --help', summary: 'Deep help for Cursor runtime/admin commands' },
|
{ name: 'ccs cursor --help', summary: 'Deep help for Cursor runtime/admin commands' },
|
||||||
{ name: 'ccs copilot --help', summary: 'Deep help for GitHub Copilot commands' },
|
{ name: 'ccs copilot --help', summary: 'Deep help for deprecated GitHub Copilot commands' },
|
||||||
],
|
],
|
||||||
writeLine
|
writeLine
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -162,11 +162,14 @@ export function generateYamlWithComments(config: UnifiedConfig): string {
|
|||||||
lines.push('');
|
lines.push('');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copilot section (GitHub Copilot proxy)
|
// Copilot section (deprecated GitHub Copilot compatibility bridge)
|
||||||
if (config.copilot) {
|
if (config.copilot) {
|
||||||
lines.push('# ----------------------------------------------------------------------------');
|
lines.push('# ----------------------------------------------------------------------------');
|
||||||
lines.push('# Copilot: GitHub Copilot API proxy (via copilot-api)');
|
lines.push('# Copilot: Deprecated GitHub Copilot compatibility bridge (via copilot-api)');
|
||||||
lines.push('# Uses your existing GitHub Copilot subscription with Claude Code.');
|
lines.push(
|
||||||
|
'# Existing local setups remain available, but prefer Codex or another active provider.'
|
||||||
|
);
|
||||||
|
lines.push('# GitHub usage-based Copilot billing begins June 1, 2026.');
|
||||||
lines.push('#');
|
lines.push('#');
|
||||||
lines.push('# !! DISCLAIMER - USE AT YOUR OWN RISK !!');
|
lines.push('# !! DISCLAIMER - USE AT YOUR OWN RISK !!');
|
||||||
lines.push('# This uses an UNOFFICIAL reverse-engineered API.');
|
lines.push('# This uses an UNOFFICIAL reverse-engineered API.');
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* Copilot and Cursor IDE integration configuration types and defaults.
|
* Copilot and Cursor IDE integration configuration types and defaults.
|
||||||
*
|
*
|
||||||
* Covers:
|
* Covers:
|
||||||
* - CopilotConfig: GitHub Copilot proxy integration (strictly opt-in)
|
* - CopilotConfig: deprecated GitHub Copilot proxy compatibility (strictly opt-in)
|
||||||
* - CursorConfig: Cursor IDE proxy daemon
|
* - CursorConfig: Cursor IDE proxy daemon
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ export type CopilotAccountType = 'individual' | 'business' | 'enterprise';
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Copilot API configuration.
|
* Copilot API configuration.
|
||||||
* Enables GitHub Copilot subscription usage via copilot-api proxy.
|
* Enables deprecated GitHub Copilot compatibility via copilot-api proxy.
|
||||||
* Strictly opt-in - disabled by default.
|
* Strictly opt-in - disabled by default.
|
||||||
*
|
*
|
||||||
* !! DISCLAIMER - USE AT YOUR OWN RISK !!
|
* !! DISCLAIMER - USE AT YOUR OWN RISK !!
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ export interface UnifiedConfig {
|
|||||||
global_env?: GlobalEnvConfig;
|
global_env?: GlobalEnvConfig;
|
||||||
/** Cross-profile continuity inheritance mapping */
|
/** Cross-profile continuity inheritance mapping */
|
||||||
continuity?: ContinuityConfig;
|
continuity?: ContinuityConfig;
|
||||||
/** Copilot API configuration (GitHub Copilot proxy) */
|
/** Copilot API configuration (deprecated GitHub Copilot compatibility bridge) */
|
||||||
copilot?: CopilotConfig;
|
copilot?: CopilotConfig;
|
||||||
/** Cursor IDE configuration (Cursor proxy daemon) */
|
/** Cursor IDE configuration (Cursor proxy daemon) */
|
||||||
cursor?: CursorConfig;
|
cursor?: CursorConfig;
|
||||||
|
|||||||
@@ -102,7 +102,6 @@ function buildNavGroups(t: (key: string) => string): SidebarGroupDef[] {
|
|||||||
{ path: '/cliproxy/control-panel', icon: Gauge, label: t('nav.controlPanel') },
|
{ path: '/cliproxy/control-panel', icon: Gauge, label: t('nav.controlPanel') },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{ path: '/copilot', icon: Github, label: t('nav.githubCopilot') },
|
|
||||||
{
|
{
|
||||||
path: '/accounts',
|
path: '/accounts',
|
||||||
icon: Users,
|
icon: Users,
|
||||||
@@ -126,6 +125,11 @@ function buildNavGroups(t: (key: string) => string): SidebarGroupDef[] {
|
|||||||
{
|
{
|
||||||
title: t('nav.deprecated'),
|
title: t('nav.deprecated'),
|
||||||
items: [
|
items: [
|
||||||
|
{
|
||||||
|
path: '/copilot',
|
||||||
|
icon: Github,
|
||||||
|
label: `${t('nav.githubCopilot')} (${t('nav.deprecated')})`,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/legacy/cursor',
|
path: '/legacy/cursor',
|
||||||
iconSrc: '/assets/sidebar/cursor.svg',
|
iconSrc: '/assets/sidebar/cursor.svg',
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ const WIZARD_PROVIDER_ORDER: CLIProxyProvider[] = [
|
|||||||
'iflow',
|
'iflow',
|
||||||
'kilo',
|
'kilo',
|
||||||
'kiro',
|
'kiro',
|
||||||
'ghcp',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export const PROVIDERS: ProviderOption[] = WIZARD_PROVIDER_ORDER.map((id) => ({
|
export const PROVIDERS: ProviderOption[] = WIZARD_PROVIDER_ORDER.map((id) => ({
|
||||||
|
|||||||
+24
-4
@@ -1278,7 +1278,12 @@ const resources = {
|
|||||||
},
|
},
|
||||||
copilotPage: {
|
copilotPage: {
|
||||||
title: 'Copilot',
|
title: 'Copilot',
|
||||||
subtitle: 'GitHub Copilot proxy',
|
subtitle: 'Deprecated GitHub Copilot compatibility bridge',
|
||||||
|
deprecatedBadge: 'Deprecated',
|
||||||
|
deprecationTitle: 'Deprecated compatibility bridge',
|
||||||
|
deprecationItem1: 'GitHub usage-based Copilot billing begins June 1, 2026',
|
||||||
|
deprecationItem2: 'Existing local setups remain available for compatibility',
|
||||||
|
deprecationItem3: 'Prefer Codex or another active provider for new work',
|
||||||
setup: 'Setup',
|
setup: 'Setup',
|
||||||
auth: 'Auth',
|
auth: 'Auth',
|
||||||
daemon: 'Daemon',
|
daemon: 'Daemon',
|
||||||
@@ -3813,7 +3818,12 @@ const resources = {
|
|||||||
},
|
},
|
||||||
copilotPage: {
|
copilotPage: {
|
||||||
title: 'Copilot',
|
title: 'Copilot',
|
||||||
subtitle: 'GitHub Copilot 代理',
|
subtitle: '已弃用的 GitHub Copilot 兼容桥接',
|
||||||
|
deprecatedBadge: '已弃用',
|
||||||
|
deprecationTitle: '已弃用的兼容桥接',
|
||||||
|
deprecationItem1: 'GitHub Copilot 用量计费将于 2026 年 6 月 1 日开始',
|
||||||
|
deprecationItem2: '现有本地配置仍可作为兼容路径继续使用',
|
||||||
|
deprecationItem3: '新的配置请优先使用 Codex 或其他活跃提供商',
|
||||||
setup: '安装',
|
setup: '安装',
|
||||||
auth: '认证',
|
auth: '认证',
|
||||||
daemon: '守护进程',
|
daemon: '守护进程',
|
||||||
@@ -6396,7 +6406,12 @@ const resources = {
|
|||||||
},
|
},
|
||||||
copilotPage: {
|
copilotPage: {
|
||||||
title: 'Copilot',
|
title: 'Copilot',
|
||||||
subtitle: 'Proxy GitHub Copilot',
|
subtitle: 'Cầu nối tương thích GitHub Copilot đã ngừng ưu tiên',
|
||||||
|
deprecatedBadge: 'Đã ngừng ưu tiên',
|
||||||
|
deprecationTitle: 'Cầu nối tương thích đã ngừng ưu tiên',
|
||||||
|
deprecationItem1: 'GitHub Copilot bắt đầu tính phí theo mức dùng từ 2026-06-01',
|
||||||
|
deprecationItem2: 'Thiết lập cục bộ hiện có vẫn được giữ cho tương thích',
|
||||||
|
deprecationItem3: 'Thiết lập mới nên dùng Codex hoặc nhà cung cấp còn hoạt động',
|
||||||
setup: 'Cài đặt',
|
setup: 'Cài đặt',
|
||||||
auth: 'Xác thực',
|
auth: 'Xác thực',
|
||||||
daemon: 'Daemon',
|
daemon: 'Daemon',
|
||||||
@@ -9004,7 +9019,12 @@ const resources = {
|
|||||||
},
|
},
|
||||||
copilotPage: {
|
copilotPage: {
|
||||||
title: 'Copilot',
|
title: 'Copilot',
|
||||||
subtitle: 'GitHub Copilot プロキシ',
|
subtitle: '非推奨の GitHub Copilot 互換ブリッジ',
|
||||||
|
deprecatedBadge: '非推奨',
|
||||||
|
deprecationTitle: '非推奨の互換ブリッジ',
|
||||||
|
deprecationItem1: 'GitHub Copilot の従量課金は 2026-06-01 に開始されます',
|
||||||
|
deprecationItem2: '既存のローカル設定は互換用として引き続き利用できます',
|
||||||
|
deprecationItem3: '新規設定では Codex または他の有効なプロバイダーを優先してください',
|
||||||
setup: 'セットアップ',
|
setup: 'セットアップ',
|
||||||
auth: '認証',
|
auth: '認証',
|
||||||
daemon: 'デーモン',
|
daemon: 'デーモン',
|
||||||
|
|||||||
@@ -125,6 +125,9 @@ export function CopilotPage() {
|
|||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<Github className="w-5 h-5 text-primary" />
|
<Github className="w-5 h-5 text-primary" />
|
||||||
<h1 className="font-semibold">{t('copilotPage.title')}</h1>
|
<h1 className="font-semibold">{t('copilotPage.title')}</h1>
|
||||||
|
<span className="rounded border border-amber-300 bg-amber-100 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-amber-800 dark:border-amber-900/60 dark:bg-amber-950/40 dark:text-amber-200">
|
||||||
|
{t('copilotPage.deprecatedBadge')}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
@@ -145,6 +148,21 @@ export function CopilotPage() {
|
|||||||
<LoadingSidebar />
|
<LoadingSidebar />
|
||||||
) : (
|
) : (
|
||||||
<div className="p-3 space-y-4">
|
<div className="p-3 space-y-4">
|
||||||
|
{/* Deprecation Banner */}
|
||||||
|
<div className="rounded-md border border-amber-500/50 bg-amber-500/15 p-3 space-y-1.5">
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<AlertTriangle className="h-4 w-4 text-amber-600 dark:text-amber-400 shrink-0" />
|
||||||
|
<span className="text-xs font-semibold text-amber-800 dark:text-amber-200">
|
||||||
|
{t('copilotPage.deprecationTitle')}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<ul className="text-[11px] text-amber-700 dark:text-amber-300 space-y-0.5 pl-6 list-disc">
|
||||||
|
<li>{t('copilotPage.deprecationItem1')}</li>
|
||||||
|
<li>{t('copilotPage.deprecationItem2')}</li>
|
||||||
|
<li>{t('copilotPage.deprecationItem3')}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Warning Banner - Disclaimer */}
|
{/* Warning Banner - Disclaimer */}
|
||||||
<div className="rounded-md border border-yellow-500/50 bg-yellow-500/15 p-3 space-y-1.5">
|
<div className="rounded-md border border-yellow-500/50 bg-yellow-500/15 p-3 space-y-1.5">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
|
|||||||
Reference in new issue
Block a user