feat: v2.0.0 + v2.1.0 – Shell parity, OAuth, local workers, observability#201
Merged
Conversation
- Shell parity and intelligence: CLI deep-links, suggestions, config workflows - Local worker auto-discovery CLI (faigate-config discover) - Complete provider coverage: all LLM AI Router custom endpoints now in catalog - Added missing providers: xAI, Z.AI, Mistral, Groq, HuggingFace, MoonshotAI, MiniMax, Volcano Engine, BytePlus, Qwen, OpenAI Codex, OpenCode Zen, Cerebras, GitHub Copilot, Synthetic, Kimi Coding, Vercel AI Gateway - KiloCode model-level access: individual catalog entries for kilo-auto/frontier, kilo-auto/balanced, kilo-auto/free - Enhanced provider catalog: 43 curated provider entries (up from 17) - Local worker examples and generic provider templates in config.yaml - Updated roadmap and changelog for v2.0.0 release - GitHub issues created for v2.1.0 OAuth wrapper functionality
- Token store with encrypted JSON storage - Generic OAuth backend wrapping existing providers - Provider factory integration (backend=oauth) - CLI helper stub with Google ADC support - Config.yaml examples for qwen‑portal, claude‑code, openai‑codex - Optional dependencies for OAuth (requests, google‑auth) - Updated roadmap and changelog
…v2.1.0) - Add google-antigravity provider to registry, catalog, and lane registry with ag/ model family (Claude Opus/Sonnet 4.6, Gemini 3.x variants) - Rename google-vertex → google-gemini-cli in registry and catalog - Implement claude_code_oauth() reading token from ~/.config/claude/settings.json - Add google_oauth_device_flow() for interactive OAuth flows (Gemini, Antigravity) - Add antigravity provider config example to config.yaml Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…dentials
- Replace placeholder Qwen device flow with real implementation:
- Correct endpoints: chat.qwen.ai/api/v1/oauth2/{device/code,token}
- Official client_id from qwen-code source (f0304373...)
- Scope: openid profile email model.completion
- New qwen_oauth(): reads ~/.qwen/oauth_creds.json (shared with qwen-code CLI)
- Dynamic base_url from resource_url field (portal.qwen.ai → compatible-mode/v1)
- Expiry warning with refresh guidance
- Fallback to dashscope.aliyuncs.com if no resource_url
- New qwen_refresh(): refresh token flow, writes back to ~/.qwen/oauth_creds.json
- qwen_device_code_flow(): stores token to shared ~/.qwen/oauth_creds.json (mode 0o600)
- CLI: faigate-auth qwen-portal reads existing creds or starts device flow;
--refresh flag triggers token refresh
- Update registry: correct base_url, base_url_env, model (coder-model)
- Update provider_catalog: correct model, source URL, notes
- Update config.yaml: accurate setup instructions replacing placeholder comments
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tegration - Extract real OAuth parameters from LLM AI Router connect URL: client_id: 1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com scopes: cloud-platform, userinfo.email, userinfo.profile, cclog, experimentsandconfigs - antigravity_oauth(): reads ~/.gemini/oauth_creds.json (shared with Antigravity IDE) - Expiry warning with refresh guidance - base_url from ANTIGRAVITY_BASE_URL env var (requires network discovery) - antigravity_refresh(): token refresh via oauth2.googleapis.com, preserves existing fields - antigravity_login(): full Authorization Code + PKCE flow - Generates code_verifier + S256 code_challenge - Opens browser to Google consent screen - Local HTTP server on :8080 captures callback - State parameter validated (CSRF protection) - Writes credentials to ~/.gemini/oauth_creds.json (mode 0o600) - CLI: faigate-auth google-antigravity reads existing creds or starts browser login; --refresh flag triggers token refresh without browser - Update registry: base_url_env=ANTIGRAVITY_BASE_URL, document pending discovery - Update catalog: real client_id, correct signup_url, observed evidence_level - Update config.yaml: accurate setup instructions, document endpoint discovery process Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Network discovery confirmed: Antigravity's client interface is a local ephemeral gRPC language server (127.0.0.1:<port>/exa.language_server_pb .LanguageServerService/…), not a remote inference endpoint. The Google OAuth token grants direct access to the Google Generative Language API. - registry.py: set base_url to generativelanguage.googleapis.com/v1beta/openai - config.yaml: same default, document gRPC LS discovery finding - oauth/cli.py: remove "unknown endpoint" warning, use default base_url - provider_catalog.py: document gRPC LS fact, update recommended_model Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ution lane_registry.py, local_discovery.py, provider_catalog.py and registry.py all had content removed by overly broad HEAD-always conflict resolution. Restore each file to origin/main state (which already contains the v2.1.0 additions that were previously merged via CI fix PRs). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
faigate-authCLI/api/ps, vLLM/metrics), dynamic model enumerationcost_limit_usd_day/cost_limit_usd_month, HTTP 429 enforcementMetricsStore.get_anomalies(),GET /api/alertsendpointag/model familyTest plan
faigate-auth google-antigravity,faigate-auth qwenGET /api/alerts🤖 Generated with Claude Code