- Add Windows PowerShell/Command Prompt equivalents for port discovery
- Add hint about trying common ports (8080, 3000, 5000)
- Add alternative lsof command to list all listening processes
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Port Antigravity payload enhancements from CLIProxyAPI v6.6.89:
- Add systemInstruction with role 'user' and Antigravity identity text
- Add requestType: 'agent' to wrapped request body
- Add ANTIGRAVITY_SYSTEM_INSTRUCTION constant with full identity/guidelines
Reference: router-for-me/CLIProxyAPI@67985d8
- Wrap tools in functionDeclarations format for Gemini 3 API
- Flatten incoming functionDeclarations and convert parameters to proper schema
- Re-implement session-level thinking deduplication after partial revert
- Update README model names for clarity (Antigravity vs Gemini CLI)
- Fix model resolver to append default tier for Antigravity Gemini 3 models
The cross-request deduplication was hashing PARTIAL streaming chunks,
not complete thinking blocks. This caused 'Failed to process error
response' errors during streaming.
Within-request deduplication (delta extraction) still works correctly.
Merge conflict resolution and defaults per official API docs.
**Gemini 3** (https://cloud.google.com/vertex-ai/generative-ai/docs/thinking):
> HIGH: Allows the model to use more tokens for thinking... This is the
> default level for Gemini 3 Pro and Gemini 3 Flash.
- Default thinkingLevel: 'high' for both Pro and Flash
- Model-specific levels: Flash (minimal/low/medium/high), Pro (low/high only)
**Claude** (https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking):
> To turn on extended thinking, add a thinking object... and the
> budget_tokens to a specified token budget.
- budget_tokens is required when enabling extended thinking (no default)
- Default thinkingBudget: 32768 (max) for Claude thinking models without variant
**Additional changes per maintainer feedback:**
- Simplify Claude variants to 'low' and 'max' only (medium/high not much different)
- Update all README examples and config snippets
- Add 'minimal' to GEMINI_3_THINKING_LEVELS constant
- Change Pro default from 'medium' to 'high' (per Google API docs)
- Document model-specific level availability:
- Flash: minimal, low, medium, high
- Pro: low, high only
- Update README variant examples with correct levels per model
Addresses CodeRabbit review feedback on #131
Fixes#130
## Changes
### Model resolver (already in PR)
- Default thinkingLevel for base Gemini 3 models: Pro → 'medium', Flash → 'minimal'
### Native thinkingLevel support
- extractVariantThinkingConfig now extracts thinkingLevel string for Gemini 3
- Prefer native thinkingLevel when present
- Fall back to budget→level conversion with deprecation warning
### Correct variant config format (README)
- Remove providerOptions.google wrapper from all examples
- Gemini 3: use thinkingLevel string
- Claude: use thinkingConfig.thinkingBudget number
### Code cleanup
- Remove dead Anthropic/OpenRouter checks (all Antigravity routes through Google)
- Add deprecation warning for legacy thinkingBudget on Gemini 3
## Backward Compatibility
- Legacy thinkingBudget for Gemini 3 still works (deprecated)
- Tier-suffixed model names still work
Fixes#130
The skipAlias logic for Antigravity Gemini 3 models was bypassing
thinkingLevel assignment, causing empty responses from the API.
Changes:
- Remove skipAlias branch that skipped thinkingLevel
- All Gemini 3 models now get a default thinkingLevel:
- Pro models: 'medium'
- Flash models: 'minimal'
- Models with explicit tier suffix use the specified tier
Added delta-tracking to streaming transformer to extract only new portions
of thinking text, preventing duplicated blocks in UI.
- Added deduplicateThinkingText() function
- Added sentThinkingBuffer parameter to transformSseLine()
- Added 6 unit tests for deduplication logic