diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index de924672..00000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: docker-image - -on: - push: - tags: - - v* - -env: - APP_NAME: CLIProxyAPI - DOCKERHUB_REPO: eceasy/cli-proxy-api-plus - -jobs: - docker: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Login to DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Generate Build Metadata - run: | - echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV - echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV - echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV - - name: Build and push - uses: docker/build-push-action@v6 - with: - context: . - platforms: | - linux/amd64 - linux/arm64 - push: true - build-args: | - VERSION=${{ env.VERSION }} - COMMIT=${{ env.COMMIT }} - BUILD_DATE=${{ env.BUILD_DATE }} - tags: | - ${{ env.DOCKERHUB_REPO }}:latest - ${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }} diff --git a/config.example.yaml b/config.example.yaml index 19e8e129..7a56f325 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -215,7 +215,7 @@ ws-auth: false # Global OAuth model name mappings (per channel) # These mappings rename model IDs for both model listing and request routing. -# Supported channels: gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow, kiro. +# Supported channels: gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow, kiro, github-copilot. # NOTE: Mappings do not apply to gemini-api-key, codex-api-key, claude-api-key, openai-compatibility, vertex-api-key, or ampcode. # oauth-model-mappings: # gemini-cli: @@ -246,8 +246,12 @@ ws-auth: false # kiro: # - name: "kiro-claude-opus-4-5" # alias: "op45" +# github-copilot: +# - name: "gpt-5" +# alias: "copilot-gpt5" # OAuth provider excluded models +# Supported channels: gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow, kiro, github-copilot. # oauth-excluded-models: # gemini-cli: # - "gemini-2.5-pro" # exclude specific models (exact match) @@ -268,6 +272,10 @@ ws-auth: false # - "vision-model" # iflow: # - "tstars2.0" +# kiro: +# - "kiro-claude-haiku-4-5" +# github-copilot: +# - "raptor-mini" # Optional payload configuration # payload: diff --git a/internal/cmd/login.go b/internal/cmd/login.go index 3bb0b9a5..221e1467 100644 --- a/internal/cmd/login.go +++ b/internal/cmd/login.go @@ -259,7 +259,8 @@ func performGeminiCLISetup(ctx context.Context, httpClient *http.Client, storage finalProjectID := projectID if responseProjectID != "" { if explicitProject && !strings.EqualFold(responseProjectID, projectID) { - log.Warnf("Gemini onboarding returned project %s instead of requested %s; keeping requested project ID.", responseProjectID, projectID) + log.Warnf("Gemini onboarding returned project %s instead of requested %s; using response project ID.", responseProjectID, projectID) + finalProjectID = responseProjectID } else { finalProjectID = responseProjectID } diff --git a/internal/config/config.go b/internal/config/config.go index 0cd89dc4..83bc6744 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -96,11 +96,12 @@ type Config struct { AmpCode AmpCode `yaml:"ampcode" json:"ampcode"` // OAuthExcludedModels defines per-provider global model exclusions applied to OAuth/file-backed auth entries. + // Supported channels: gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow, kiro, github-copilot. OAuthExcludedModels map[string][]string `yaml:"oauth-excluded-models,omitempty" json:"oauth-excluded-models,omitempty"` // OAuthModelMappings defines global model name mappings for OAuth/file-backed auth channels. // These mappings affect both model listing and model routing for supported channels: - // gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow. + // gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow, kiro, github-copilot. // // NOTE: This does not apply to existing per-credential model alias features under: // gemini-api-key, codex-api-key, claude-api-key, openai-compatibility, vertex-api-key, and ampcode. diff --git a/sdk/cliproxy/auth/model_name_mappings.go b/sdk/cliproxy/auth/model_name_mappings.go index d4200671..5bbab098 100644 --- a/sdk/cliproxy/auth/model_name_mappings.go +++ b/sdk/cliproxy/auth/model_name_mappings.go @@ -139,7 +139,7 @@ func modelMappingChannel(auth *Auth) string { // and auth kind. Returns empty string if the provider/authKind combination doesn't support // OAuth model mappings (e.g., API key authentication). // -// Supported channels: gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow. +// Supported channels: gemini-cli, vertex, aistudio, antigravity, claude, codex, qwen, iflow, kiro, github-copilot. func OAuthModelMappingChannel(provider, authKind string) string { provider = strings.ToLower(strings.TrimSpace(provider)) authKind = strings.ToLower(strings.TrimSpace(authKind)) @@ -165,7 +165,7 @@ func OAuthModelMappingChannel(provider, authKind string) string { return "codex" case "gemini-cli", "aistudio", "antigravity", "qwen", "iflow": return provider - case "kiro": + case "kiro", "github-copilot": return provider default: return "" diff --git a/sdk/cliproxy/service.go b/sdk/cliproxy/service.go index 9c094c8c..a85b8149 100644 --- a/sdk/cliproxy/service.go +++ b/sdk/cliproxy/service.go @@ -769,6 +769,7 @@ func (s *Service) registerModelsForAuth(a *coreauth.Auth) { models = applyExcludedModels(models, excluded) case "iflow": models = registry.GetIFlowModels() + models = applyExcludedModels(models, excluded) case "github-copilot": models = registry.GetGitHubCopilotModels() models = applyExcludedModels(models, excluded)