gitextract_9oqd9is2/ ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ └── workflows/ │ ├── docker-image.yml │ ├── pr-path-guard.yml │ ├── pr-test-build.yml │ └── release.yaml ├── .gitignore ├── .goreleaser.yml ├── Dockerfile ├── LICENSE ├── README.md ├── README_CN.md ├── auths/ │ └── .gitkeep ├── cmd/ │ ├── fetch_antigravity_models/ │ │ └── main.go │ └── server/ │ └── main.go ├── config.example.yaml ├── docker-build.ps1 ├── docker-build.sh ├── docker-compose.yml ├── examples/ │ ├── custom-provider/ │ │ └── main.go │ ├── http-request/ │ │ └── main.go │ └── translator/ │ └── main.go ├── go.mod ├── go.sum ├── internal/ │ ├── access/ │ │ ├── config_access/ │ │ │ └── provider.go │ │ └── reconcile.go │ ├── api/ │ │ ├── handlers/ │ │ │ └── management/ │ │ │ ├── api_tools.go │ │ │ ├── api_tools_test.go │ │ │ ├── auth_files.go │ │ │ ├── auth_files_delete_test.go │ │ │ ├── config_basic.go │ │ │ ├── config_lists.go │ │ │ ├── handler.go │ │ │ ├── logs.go │ │ │ ├── model_definitions.go │ │ │ ├── oauth_callback.go │ │ │ ├── oauth_sessions.go │ │ │ ├── quota.go │ │ │ ├── test_store_test.go │ │ │ ├── usage.go │ │ │ └── vertex_import.go │ │ ├── middleware/ │ │ │ ├── request_logging.go │ │ │ ├── request_logging_test.go │ │ │ ├── response_writer.go │ │ │ └── response_writer_test.go │ │ ├── modules/ │ │ │ ├── amp/ │ │ │ │ ├── amp.go │ │ │ │ ├── amp_test.go │ │ │ │ ├── fallback_handlers.go │ │ │ │ ├── fallback_handlers_test.go │ │ │ │ ├── gemini_bridge.go │ │ │ │ ├── gemini_bridge_test.go │ │ │ │ ├── model_mapping.go │ │ │ │ ├── model_mapping_test.go │ │ │ │ ├── proxy.go │ │ │ │ ├── proxy_test.go │ │ │ │ ├── response_rewriter.go │ │ │ │ ├── response_rewriter_test.go │ │ │ │ ├── routes.go │ │ │ │ ├── routes_test.go │ │ │ │ ├── secret.go │ │ │ │ └── secret_test.go │ │ │ └── modules.go │ │ ├── server.go │ │ └── server_test.go │ ├── auth/ │ │ ├── antigravity/ │ │ │ ├── auth.go │ │ │ ├── constants.go │ │ │ └── filename.go │ │ ├── claude/ │ │ │ ├── anthropic.go │ │ │ ├── anthropic_auth.go │ │ │ ├── errors.go │ │ │ ├── html_templates.go │ │ │ ├── oauth_server.go │ │ │ ├── pkce.go │ │ │ ├── token.go │ │ │ └── utls_transport.go │ │ ├── codex/ │ │ │ ├── errors.go │ │ │ ├── filename.go │ │ │ ├── html_templates.go │ │ │ ├── jwt_parser.go │ │ │ ├── oauth_server.go │ │ │ ├── openai.go │ │ │ ├── openai_auth.go │ │ │ ├── openai_auth_test.go │ │ │ ├── pkce.go │ │ │ └── token.go │ │ ├── empty/ │ │ │ └── token.go │ │ ├── gemini/ │ │ │ ├── gemini_auth.go │ │ │ └── gemini_token.go │ │ ├── iflow/ │ │ │ ├── cookie_helpers.go │ │ │ ├── iflow_auth.go │ │ │ ├── iflow_token.go │ │ │ └── oauth_server.go │ │ ├── kimi/ │ │ │ ├── kimi.go │ │ │ └── token.go │ │ ├── models.go │ │ ├── qwen/ │ │ │ ├── qwen_auth.go │ │ │ └── qwen_token.go │ │ └── vertex/ │ │ ├── keyutil.go │ │ └── vertex_credentials.go │ ├── browser/ │ │ └── browser.go │ ├── buildinfo/ │ │ └── buildinfo.go │ ├── cache/ │ │ ├── signature_cache.go │ │ └── signature_cache_test.go │ ├── cmd/ │ │ ├── anthropic_login.go │ │ ├── antigravity_login.go │ │ ├── auth_manager.go │ │ ├── iflow_cookie.go │ │ ├── iflow_login.go │ │ ├── kimi_login.go │ │ ├── login.go │ │ ├── openai_device_login.go │ │ ├── openai_login.go │ │ ├── qwen_login.go │ │ ├── run.go │ │ └── vertex_import.go │ ├── config/ │ │ ├── codex_websocket_header_defaults_test.go │ │ ├── config.go │ │ ├── oauth_model_alias_test.go │ │ ├── sdk_config.go │ │ └── vertex_compat.go │ ├── constant/ │ │ └── constant.go │ ├── interfaces/ │ │ ├── api_handler.go │ │ ├── client_models.go │ │ ├── error_message.go │ │ └── types.go │ ├── logging/ │ │ ├── gin_logger.go │ │ ├── gin_logger_test.go │ │ ├── global_logger.go │ │ ├── log_dir_cleaner.go │ │ ├── log_dir_cleaner_test.go │ │ ├── request_logger.go │ │ └── requestid.go │ ├── managementasset/ │ │ └── updater.go │ ├── misc/ │ │ ├── claude_code_instructions.go │ │ ├── claude_code_instructions.txt │ │ ├── copy-example-config.go │ │ ├── credentials.go │ │ ├── header_utils.go │ │ ├── mime-type.go │ │ └── oauth.go │ ├── registry/ │ │ ├── model_definitions.go │ │ ├── model_registry.go │ │ ├── model_registry_cache_test.go │ │ ├── model_registry_hook_test.go │ │ ├── model_registry_safety_test.go │ │ ├── model_updater.go │ │ └── models/ │ │ └── models.json │ ├── runtime/ │ │ ├── executor/ │ │ │ ├── aistudio_executor.go │ │ │ ├── antigravity_executor.go │ │ │ ├── antigravity_executor_buildrequest_test.go │ │ │ ├── cache_helpers.go │ │ │ ├── caching_verify_test.go │ │ │ ├── claude_executor.go │ │ │ ├── claude_executor_test.go │ │ │ ├── cloak_obfuscate.go │ │ │ ├── cloak_utils.go │ │ │ ├── codex_executor.go │ │ │ ├── codex_executor_cache_test.go │ │ │ ├── codex_executor_retry_test.go │ │ │ ├── codex_websockets_executor.go │ │ │ ├── codex_websockets_executor_test.go │ │ │ ├── gemini_cli_executor.go │ │ │ ├── gemini_executor.go │ │ │ ├── gemini_vertex_executor.go │ │ │ ├── iflow_executor.go │ │ │ ├── iflow_executor_test.go │ │ │ ├── kimi_executor.go │ │ │ ├── kimi_executor_test.go │ │ │ ├── logging_helpers.go │ │ │ ├── openai_compat_executor.go │ │ │ ├── openai_compat_executor_compact_test.go │ │ │ ├── payload_helpers.go │ │ │ ├── proxy_helpers.go │ │ │ ├── proxy_helpers_test.go │ │ │ ├── qwen_executor.go │ │ │ ├── qwen_executor_test.go │ │ │ ├── thinking_providers.go │ │ │ ├── token_helpers.go │ │ │ ├── usage_helpers.go │ │ │ ├── usage_helpers_test.go │ │ │ ├── user_id_cache.go │ │ │ └── user_id_cache_test.go │ │ └── geminicli/ │ │ └── state.go │ ├── store/ │ │ ├── gitstore.go │ │ ├── objectstore.go │ │ └── postgresstore.go │ ├── thinking/ │ │ ├── apply.go │ │ ├── apply_user_defined_test.go │ │ ├── convert.go │ │ ├── errors.go │ │ ├── provider/ │ │ │ ├── antigravity/ │ │ │ │ └── apply.go │ │ │ ├── claude/ │ │ │ │ └── apply.go │ │ │ ├── codex/ │ │ │ │ └── apply.go │ │ │ ├── gemini/ │ │ │ │ └── apply.go │ │ │ ├── geminicli/ │ │ │ │ └── apply.go │ │ │ ├── iflow/ │ │ │ │ └── apply.go │ │ │ ├── kimi/ │ │ │ │ ├── apply.go │ │ │ │ └── apply_test.go │ │ │ └── openai/ │ │ │ └── apply.go │ │ ├── strip.go │ │ ├── suffix.go │ │ ├── text.go │ │ ├── types.go │ │ └── validate.go │ ├── translator/ │ │ ├── antigravity/ │ │ │ ├── claude/ │ │ │ │ ├── antigravity_claude_request.go │ │ │ │ ├── antigravity_claude_request_test.go │ │ │ │ ├── antigravity_claude_response.go │ │ │ │ ├── antigravity_claude_response_test.go │ │ │ │ └── init.go │ │ │ ├── gemini/ │ │ │ │ ├── antigravity_gemini_request.go │ │ │ │ ├── antigravity_gemini_request_test.go │ │ │ │ ├── antigravity_gemini_response.go │ │ │ │ ├── antigravity_gemini_response_test.go │ │ │ │ └── init.go │ │ │ └── openai/ │ │ │ ├── chat-completions/ │ │ │ │ ├── antigravity_openai_request.go │ │ │ │ ├── antigravity_openai_response.go │ │ │ │ ├── antigravity_openai_response_test.go │ │ │ │ └── init.go │ │ │ └── responses/ │ │ │ ├── antigravity_openai-responses_request.go │ │ │ ├── antigravity_openai-responses_response.go │ │ │ └── init.go │ │ ├── claude/ │ │ │ ├── gemini/ │ │ │ │ ├── claude_gemini_request.go │ │ │ │ ├── claude_gemini_response.go │ │ │ │ └── init.go │ │ │ ├── gemini-cli/ │ │ │ │ ├── claude_gemini-cli_request.go │ │ │ │ ├── claude_gemini-cli_response.go │ │ │ │ └── init.go │ │ │ └── openai/ │ │ │ ├── chat-completions/ │ │ │ │ ├── claude_openai_request.go │ │ │ │ ├── claude_openai_request_test.go │ │ │ │ ├── claude_openai_response.go │ │ │ │ └── init.go │ │ │ └── responses/ │ │ │ ├── claude_openai-responses_request.go │ │ │ ├── claude_openai-responses_response.go │ │ │ └── init.go │ │ ├── codex/ │ │ │ ├── claude/ │ │ │ │ ├── codex_claude_request.go │ │ │ │ ├── codex_claude_request_test.go │ │ │ │ ├── codex_claude_response.go │ │ │ │ └── init.go │ │ │ ├── gemini/ │ │ │ │ ├── codex_gemini_request.go │ │ │ │ ├── codex_gemini_response.go │ │ │ │ └── init.go │ │ │ ├── gemini-cli/ │ │ │ │ ├── codex_gemini-cli_request.go │ │ │ │ ├── codex_gemini-cli_response.go │ │ │ │ └── init.go │ │ │ └── openai/ │ │ │ ├── chat-completions/ │ │ │ │ ├── codex_openai_request.go │ │ │ │ ├── codex_openai_request_test.go │ │ │ │ ├── codex_openai_response.go │ │ │ │ ├── codex_openai_response_test.go │ │ │ │ └── init.go │ │ │ └── responses/ │ │ │ ├── codex_openai-responses_request.go │ │ │ ├── codex_openai-responses_request_test.go │ │ │ ├── codex_openai-responses_response.go │ │ │ └── init.go │ │ ├── gemini/ │ │ │ ├── claude/ │ │ │ │ ├── gemini_claude_request.go │ │ │ │ ├── gemini_claude_request_test.go │ │ │ │ ├── gemini_claude_response.go │ │ │ │ └── init.go │ │ │ ├── common/ │ │ │ │ └── safety.go │ │ │ ├── gemini/ │ │ │ │ ├── gemini_gemini_request.go │ │ │ │ ├── gemini_gemini_request_test.go │ │ │ │ ├── gemini_gemini_response.go │ │ │ │ └── init.go │ │ │ ├── gemini-cli/ │ │ │ │ ├── gemini_gemini-cli_request.go │ │ │ │ ├── gemini_gemini-cli_response.go │ │ │ │ └── init.go │ │ │ └── openai/ │ │ │ ├── chat-completions/ │ │ │ │ ├── gemini_openai_request.go │ │ │ │ ├── gemini_openai_response.go │ │ │ │ └── init.go │ │ │ └── responses/ │ │ │ ├── gemini_openai-responses_request.go │ │ │ ├── gemini_openai-responses_response.go │ │ │ ├── gemini_openai-responses_response_test.go │ │ │ └── init.go │ │ ├── gemini-cli/ │ │ │ ├── claude/ │ │ │ │ ├── gemini-cli_claude_request.go │ │ │ │ ├── gemini-cli_claude_request_test.go │ │ │ │ ├── gemini-cli_claude_response.go │ │ │ │ └── init.go │ │ │ ├── gemini/ │ │ │ │ ├── gemini-cli_gemini_request.go │ │ │ │ ├── gemini-cli_gemini_response.go │ │ │ │ └── init.go │ │ │ └── openai/ │ │ │ ├── chat-completions/ │ │ │ │ ├── gemini-cli_openai_request.go │ │ │ │ ├── gemini-cli_openai_response.go │ │ │ │ └── init.go │ │ │ └── responses/ │ │ │ ├── gemini-cli_openai-responses_request.go │ │ │ ├── gemini-cli_openai-responses_response.go │ │ │ └── init.go │ │ ├── init.go │ │ ├── openai/ │ │ │ ├── claude/ │ │ │ │ ├── init.go │ │ │ │ ├── openai_claude_request.go │ │ │ │ ├── openai_claude_request_test.go │ │ │ │ └── openai_claude_response.go │ │ │ ├── gemini/ │ │ │ │ ├── init.go │ │ │ │ ├── openai_gemini_request.go │ │ │ │ └── openai_gemini_response.go │ │ │ ├── gemini-cli/ │ │ │ │ ├── init.go │ │ │ │ ├── openai_gemini_request.go │ │ │ │ └── openai_gemini_response.go │ │ │ └── openai/ │ │ │ ├── chat-completions/ │ │ │ │ ├── init.go │ │ │ │ ├── openai_openai_request.go │ │ │ │ └── openai_openai_response.go │ │ │ └── responses/ │ │ │ ├── init.go │ │ │ ├── openai_openai-responses_request.go │ │ │ └── openai_openai-responses_response.go │ │ └── translator/ │ │ └── translator.go │ ├── tui/ │ │ ├── app.go │ │ ├── auth_tab.go │ │ ├── browser.go │ │ ├── client.go │ │ ├── config_tab.go │ │ ├── dashboard.go │ │ ├── i18n.go │ │ ├── keys_tab.go │ │ ├── loghook.go │ │ ├── logs_tab.go │ │ ├── oauth_tab.go │ │ ├── styles.go │ │ └── usage_tab.go │ ├── usage/ │ │ └── logger_plugin.go │ ├── util/ │ │ ├── claude_model.go │ │ ├── claude_model_test.go │ │ ├── claude_tool_id.go │ │ ├── gemini_schema.go │ │ ├── gemini_schema_test.go │ │ ├── header_helpers.go │ │ ├── image.go │ │ ├── provider.go │ │ ├── proxy.go │ │ ├── sanitize_test.go │ │ ├── ssh_helper.go │ │ ├── translator.go │ │ └── util.go │ ├── watcher/ │ │ ├── clients.go │ │ ├── config_reload.go │ │ ├── diff/ │ │ │ ├── auth_diff.go │ │ │ ├── config_diff.go │ │ │ ├── config_diff_test.go │ │ │ ├── model_hash.go │ │ │ ├── model_hash_test.go │ │ │ ├── models_summary.go │ │ │ ├── oauth_excluded.go │ │ │ ├── oauth_excluded_test.go │ │ │ ├── oauth_model_alias.go │ │ │ ├── openai_compat.go │ │ │ └── openai_compat_test.go │ │ ├── dispatcher.go │ │ ├── events.go │ │ ├── synthesizer/ │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── context.go │ │ │ ├── file.go │ │ │ ├── file_test.go │ │ │ ├── helpers.go │ │ │ ├── helpers_test.go │ │ │ └── interface.go │ │ ├── watcher.go │ │ └── watcher_test.go │ └── wsrelay/ │ ├── http.go │ ├── manager.go │ ├── message.go │ └── session.go ├── sdk/ │ ├── access/ │ │ ├── errors.go │ │ ├── manager.go │ │ ├── registry.go │ │ └── types.go │ ├── api/ │ │ ├── handlers/ │ │ │ ├── claude/ │ │ │ │ └── code_handlers.go │ │ │ ├── gemini/ │ │ │ │ ├── gemini-cli_handlers.go │ │ │ │ └── gemini_handlers.go │ │ │ ├── handlers.go │ │ │ ├── handlers_error_response_test.go │ │ │ ├── handlers_request_details_test.go │ │ │ ├── handlers_stream_bootstrap_test.go │ │ │ ├── header_filter.go │ │ │ ├── header_filter_test.go │ │ │ ├── openai/ │ │ │ │ ├── openai_handlers.go │ │ │ │ ├── openai_responses_compact_test.go │ │ │ │ ├── openai_responses_handlers.go │ │ │ │ ├── openai_responses_handlers_stream_error_test.go │ │ │ │ ├── openai_responses_websocket.go │ │ │ │ └── openai_responses_websocket_test.go │ │ │ ├── openai_responses_stream_error.go │ │ │ ├── openai_responses_stream_error_test.go │ │ │ └── stream_forwarder.go │ │ ├── management.go │ │ └── options.go │ ├── auth/ │ │ ├── antigravity.go │ │ ├── claude.go │ │ ├── codex.go │ │ ├── codex_device.go │ │ ├── errors.go │ │ ├── filestore.go │ │ ├── filestore_test.go │ │ ├── gemini.go │ │ ├── iflow.go │ │ ├── interfaces.go │ │ ├── kimi.go │ │ ├── manager.go │ │ ├── qwen.go │ │ ├── refresh_registry.go │ │ └── store_registry.go │ ├── cliproxy/ │ │ ├── auth/ │ │ │ ├── api_key_model_alias_test.go │ │ │ ├── conductor.go │ │ │ ├── conductor_availability_test.go │ │ │ ├── conductor_executor_replace_test.go │ │ │ ├── conductor_overrides_test.go │ │ │ ├── conductor_scheduler_refresh_test.go │ │ │ ├── conductor_update_test.go │ │ │ ├── errors.go │ │ │ ├── oauth_model_alias.go │ │ │ ├── oauth_model_alias_test.go │ │ │ ├── openai_compat_pool_test.go │ │ │ ├── persist_policy.go │ │ │ ├── persist_policy_test.go │ │ │ ├── scheduler.go │ │ │ ├── scheduler_benchmark_test.go │ │ │ ├── scheduler_test.go │ │ │ ├── selector.go │ │ │ ├── selector_test.go │ │ │ ├── status.go │ │ │ ├── store.go │ │ │ ├── types.go │ │ │ └── types_test.go │ │ ├── builder.go │ │ ├── executor/ │ │ │ ├── context.go │ │ │ └── types.go │ │ ├── model_registry.go │ │ ├── pipeline/ │ │ │ └── context.go │ │ ├── pprof_server.go │ │ ├── providers.go │ │ ├── rtprovider.go │ │ ├── rtprovider_test.go │ │ ├── service.go │ │ ├── service_codex_executor_binding_test.go │ │ ├── service_excluded_models_test.go │ │ ├── service_oauth_model_alias_test.go │ │ ├── types.go │ │ ├── usage/ │ │ │ └── manager.go │ │ └── watcher.go │ ├── config/ │ │ └── config.go │ ├── logging/ │ │ └── request_logger.go │ ├── proxyutil/ │ │ ├── proxy.go │ │ └── proxy_test.go │ └── translator/ │ ├── builtin/ │ │ └── builtin.go │ ├── format.go │ ├── formats.go │ ├── helpers.go │ ├── pipeline.go │ ├── registry.go │ └── types.go └── test/ ├── amp_management_test.go ├── builtin_tools_translation_test.go └── thinking_conversion_test.go