Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
251 commits
Select commit Hold shift + click to select a range
34cb9f8
feat(providers): ✨ add Gemini 3 thoughtSignature handling and reasoni…
Mirrowel Nov 23, 2025
7c758a6
feat(providers): add Antigravity file logging, reasoning mapping and …
Mirrowel Nov 23, 2025
1495325
feat(providers): ✨ support gemini 2.5/3 reasoning configs and custom …
Mirrowel Nov 23, 2025
ff82739
feat(providers): ✨ add server-side thoughtSignature cache and preserv…
Mirrowel Nov 23, 2025
065d589
fix(providers): 🐛 ensure only first parallel tool call retains though…
Mirrowel Nov 23, 2025
fc70523
feat(providers): ✨ add claude-sonnet-4-5 models and remove unnecessar…
Mirrowel Nov 23, 2025
97f1950
feat(auth): extract GoogleOAuthBase and add antigravity provider
Mirrowel Nov 23, 2025
77bfd5f
feat(antigravity): ✨ add dynamic model discovery toggle and get_valid…
Mirrowel Nov 23, 2025
c6478ed
fix(providers): 🐛 fix antigravity provider compatibility and async cr…
Mirrowel Nov 23, 2025
264959a
fix(antigravity): 🐛 convert tool parameters to parametersJsonSchema a…
Mirrowel Nov 23, 2025
4ff1edf
fix(providers): 🐛 normalize JSON Schema types, clean Claude tool sche…
Mirrowel Nov 23, 2025
0970b56
fix(antigravity): 🐛 add function call id fields and restrict thoughtS…
Mirrowel Nov 24, 2025
6adac7a
fix(api): 🐛 override global temperature=0 via OVERRIDE_TEMPERATURE_ZERO
Mirrowel Nov 24, 2025
d7fa998
feat(antigravity): ✨ add Gemini 3 tool-fix (namespace, signature, sys…
Mirrowel Nov 24, 2025
946e5a0
feat(antigravity): ✨ add disk persistence for thoughtSignature cache
Mirrowel Nov 24, 2025
08736cc
feat(antigravity): ✨ add Claude support and parse double-encoded JSON…
Mirrowel Nov 27, 2025
78eef96
feat(antigravity): ✨ add Claude thinking caching and generalize Antig…
Mirrowel Nov 27, 2025
0ff233d
refactor(gemini): 🔨 implement official Gemini CLI discovery flow with…
Mirrowel Nov 27, 2025
afe6e70
refactor(antigravity): 🔨 restructure provider with comprehensive code…
Mirrowel Nov 27, 2025
9bc26b9
refactor(providers): 🔨 extract cache logic into shared ProviderCache …
Mirrowel Nov 27, 2025
e6a4ff2
refactor(antigravity): 🔨 simplify Claude model variant handling with …
Mirrowel Nov 27, 2025
ae56762
feat(gemini): ✨ implement Gemini 3 support with tool fixes and signat…
Mirrowel Nov 27, 2025
3298177
refactor(gemini): 🔨 remove redundant model and project fields from re…
Mirrowel Nov 27, 2025
868b7c9
refactor(logging): 🔨 adjust logging levels and improve schema cleanin…
Mirrowel Nov 27, 2025
74f9532
feat(antigravity): ✨ add thinking mode toggling for mid-conversation …
Mirrowel Nov 27, 2025
0ea3b2d
fix(proxy): 🐛 prevent role field concatenation in streaming responses
Mirrowel Nov 27, 2025
4d4a198
fix(antigravity): 🐛 handle malformed double-encoded JSON responses
Mirrowel Nov 27, 2025
8d69bcd
fix(client): 🐛 prevent provider initialization without configured cre…
Mirrowel Nov 27, 2025
8a839ed
refactor(antigravity): 🔨 remove thinking mode toggling feature
Mirrowel Nov 27, 2025
b5da45c
feat(client): ✨ add credential prioritization system for tier-based m…
Mirrowel Nov 27, 2025
f35e0e7
feat(rotation): ✨ add configurable weighted random credential selection
Mirrowel Nov 27, 2025
f5ccdf6
docs: 📚 add comprehensive documentation for new features and providers
Mirrowel Nov 27, 2025
7830a78
refactor(credential-tool): 🔨 add export submenu for credential manage…
Mirrowel Nov 27, 2025
62e7cf3
One huge ass bugfix i can't even list here. It's a mess i'll fix later
Mirrowel Nov 27, 2025
d4593e5
fix(gemini): 🐛 consolidate parallel tool responses and improve rate l…
Mirrowel Nov 27, 2025
087aab7
feat(antigravity): ✨ add thinking mode sanitization for Claude API co…
Mirrowel Nov 27, 2025
474826e
chore(antigravity): 🧹 update User-Agent header to version 1.11.9
Mirrowel Nov 27, 2025
6c4ca7c
feat(antigravity): ✨ add default safety settings to prevent content f…
Mirrowel Nov 27, 2025
5bc49f2
feat(auth): ✨ add environment variable-based OAuth credential support…
Mirrowel Nov 27, 2025
d94742e
fix(auth): 🐛 add exponential backoff and validation for token refresh…
Mirrowel Nov 27, 2025
f6dce02
fix(providers): 🐛 improve finish_reason handling and tool_calls initi…
Mirrowel Nov 27, 2025
2384d86
fix(proxy): 🐛 load environment variables before displaying PROXY_API_KEY
Mirrowel Nov 27, 2025
64859d9
feat(settings): ✨ add provider-specific settings management UI
Mirrowel Nov 27, 2025
0dbcf50
chore(build): 🧹 remove Windows launcher script (not supposed to be th…
Mirrowel Nov 27, 2025
efbd008
docs(readme): 📚 improve Antigravity provider feature documentation
Mirrowel Nov 27, 2025
6573de3
chore(config): 🧹 ignore environment files and increase default token …
Mirrowel Nov 27, 2025
bd8f638
feat(credentials): ✨ add support for environment-based credential loa…
Mirrowel Nov 27, 2025
b6a47c9
feat(api): ✨ add model pricing and capabilities enrichment service
Mirrowel Nov 27, 2025
6ed1677
fix(provider): 🐛 improve Gemini 3 tool schema handling and parameter …
Mirrowel Nov 27, 2025
f50cbff
feat(provider): ✨ add strict JSON schema enforcement for Gemini 3 too…
Mirrowel Nov 27, 2025
5a03c26
fix(provider): 🐛 expand JSON schema validation keyword filtering and …
Mirrowel Nov 27, 2025
eb3864b
debugging pass to try to unfuck deployment
Mirrowel Nov 27, 2025
a140a0d
refactor(logging): 🔨 remove debug print statements and add concise de…
Mirrowel Nov 27, 2025
29df294
fix(provider): 🐛 skip file operations for env:// credential paths
Mirrowel Nov 27, 2025
c264be0
refactor(api): 🔨 change is_ready from method to property access
Mirrowel Nov 28, 2025
1ce8eba
refactor(ui): 🔨 replace console.clear with cross-platform clear_scree…
Mirrowel Dec 3, 2025
aeb8eaf
fix(provider): 🐛 add automatic ID repair for mismatched tool call res…
Mirrowel Dec 3, 2025
e8e22c6
docs(deployment): 📚 add comprehensive VPS deployment guide for OAuth …
Mirrowel Dec 3, 2025
7cb148b
feat(core): ✨ add structured error accumulator and consistent error h…
Mirrowel Dec 3, 2025
d6e982e
refactor(provider): 🔨 replace hardcoded project generation with dynam…
Mirrowel Dec 3, 2025
d2adf05
feat(provider): ✨ implement Google Cloud onboarding flow with automat…
Mirrowel Dec 3, 2025
a1cc875
fix: improve error handling implementation based on code review
tiesworkman1025 Dec 4, 2025
71586c6
Merge pull request #14 from Mirrowel/Error-handling-consistency
Mirrowel Dec 4, 2025
956bdbb
fix(provider): 🐛 increase timeout for antigravity API requests from 1…
Mirrowel Dec 4, 2025
fce1762
fix(logging): preserve full credential filenames in logs
MasuRii Dec 4, 2025
0dd6d21
fix(rotator): prevent quota errors from global cooldown
MasuRii Dec 4, 2025
3269e93
Merge pull request #16 from MasuRii/fix/credential-logging-truncation
Mirrowel Dec 4, 2025
96e1b97
feat(provider): add support for Claude Opus 4.5 model
Mirrowel Dec 4, 2025
0889307
docs: 📚 update documentation for Claude Opus 4.5 support and fix giti…
Mirrowel Dec 4, 2025
5a29725
Merge branch 'Antigravity' of https://github.com/Mirrowel/LLM-API-Key…
MasuRii Dec 4, 2025
8aec88b
fix(provider): 🐛 ensure claude-opus-4-5 always uses thinking variant
Mirrowel Dec 4, 2025
1450294
refactor(antigravity-claude): refactor the claude sanitization logic …
Mirrowel Dec 5, 2025
bccb879
refactor(antigravity): 🔨 migrate thinking sanitization to gemini mess…
Mirrowel Dec 5, 2025
ba6dcaa
fix(antigravity): 🐛 improve function call response pairing with recov…
Mirrowel Dec 5, 2025
64f7fc0
docs: 📚 update documentation for enhanced claude thinking sanitizatio…
Mirrowel Dec 5, 2025
42bd5ae
fix(antigravity): 🐛 prevent unescaping of intentional quotes and back…
Mirrowel Dec 5, 2025
edef5b9
ci: Agent compliance check fix
Mirrowel Dec 5, 2025
cd3d0e6
typo fix
Mirrowel Dec 5, 2025
7d43e98
ci: Guess what? yet another fix
Mirrowel Dec 5, 2025
81e9ff5
fix(oauth): 🐛 escape rich markup in oauth authorization urls
Mirrowel Dec 5, 2025
36e6348
ci: Compliance check prompt update
Mirrowel Dec 5, 2025
d389837
feat(antigravity): ✨ implement credential prioritization for tier-bas…
Mirrowel Dec 5, 2025
df7a756
docs(antigravity): 📚 update documentation for credential prioritizati…
Mirrowel Dec 5, 2025
1d1a62b
docs: 📚 update documentation to reflect gemini 2.5 removal and claude…
Mirrowel Dec 5, 2025
465cc5f
Merge branch 'main' into Antigravity
Mirrowel Dec 5, 2025
d660421
Merge pull request #21 from MasuRii/fix/quota-exceeded-global-cooldown
Mirrowel Dec 5, 2025
8c2f222
Merge pull request #10 from Mirrowel/Antigravity
Mirrowel Dec 5, 2025
fa51b1a
fix(error-handler): 🐛 handle compound duration formats in retry-after…
Mirrowel Dec 5, 2025
cde9cb0
fix(antigravity-provider): handle multiple consecutive system message…
Mirrowel Dec 5, 2025
abdc406
fix(error-handler): 🔨 extract JSON retry parsing into dedicated function
Mirrowel Dec 5, 2025
f03c448
Merge branch 'Antigravity'
Mirrowel Dec 5, 2025
4dfb828
feat(providers): ✨ implement credential tier initialization and persi…
Mirrowel Dec 6, 2025
bd84d38
feat(rotation): ✨ add sequential rotation mode with provider-specific…
Mirrowel Dec 6, 2025
98f6823
feat(usage): ✨ add provider-specific rolling window usage tracking
Mirrowel Dec 6, 2025
0ca1651
feat(usage): ✨ implement per-model quota tracking with authoritative …
Mirrowel Dec 6, 2025
4bc7613
refactor(client): 🔨 initialize provider plugins before rotation mode …
Mirrowel Dec 6, 2025
fd01482
refactor(usage): 🔨 cache provider plugin instances to reduce redundan…
Mirrowel Dec 6, 2025
31c3d36
feat: add runtime resilience for file deletion survival
MasuRii Dec 6, 2025
3c52746
refactor(providers): 🔨 centralize tier and quota configuration in Pro…
Mirrowel Dec 7, 2025
5e42536
fix(resilience): complete circuit breaker patterns per PR review
MasuRii Dec 7, 2025
67e70d9
fix(google-oauth): prevent credentials from becoming permanently stuck
MasuRii Dec 7, 2025
4cdd261
feat(usage): ✨ add human-readable timestamp fields to usage data for …
Mirrowel Dec 7, 2025
136eb6c
fix - addressing review findings.
Mirrowel Dec 7, 2025
aefb706
feat(concurrency): ✨ add priority-based concurrency multipliers for c…
Mirrowel Dec 8, 2025
672c6bd
docs: 📚 document sequential rotation and per-model quota tracking fea…
Mirrowel Dec 8, 2025
d655ada
fix(settings): 🔨 improve provider detection and configuration loading
Mirrowel Dec 8, 2025
30caaef
Merge pull request #31 from Mirrowel/feature/sequential-rotation
Mirrowel Dec 8, 2025
c5716c1
feat(tui): 🔨 add warnings for changing the proxy settings, and add re…
Mirrowel Dec 8, 2025
a725feb
refactor(client): 🔨 add comprehensive error handling and retry logic …
Mirrowel Dec 8, 2025
640efbf
fix(providers): disable endpoint in antigravity provider
Mirrowel Dec 8, 2025
73a2395
refactor(providers): 🔨 improve error handling and reduce debug loggin…
Mirrowel Dec 8, 2025
219a7a9
feat(auth): ✨ implement global reauth coordinator to serialize intera…
Mirrowel Dec 8, 2025
1456ae3
fix(auth): 🐛 improve credential refresh detection and prevent queue p…
Mirrowel Dec 8, 2025
d76b29a
refactor(auth): 🔨 relocate attribute declarations in BackgroundRefresher
Mirrowel Dec 8, 2025
4ecfaba
refactor(proxy): 🔨 remove debug print statement for credentials
Mirrowel Dec 8, 2025
0af8a39
Fix to satisfy pylint
Mirrowel Dec 8, 2025
b7aa5d6
Merge branch 'main' into fix/antigravity-credential-stuck-unavailable
Mirrowel Dec 8, 2025
0c82aac
Merge pull request #34 from MasuRii/fix/antigravity-credential-stuck-…
Mirrowel Dec 8, 2025
01932f9
Merge origin/main into feat/runtime-resilience - Resolve conflict in …
Mirrowel Dec 8, 2025
7f148b3
feat(io): ✨ add fault-tolerant file operations with automatic recovery
Mirrowel Dec 8, 2025
ea1e9f1
feat(io): ✨ add shutdown flush mechanism for buffered writes
Mirrowel Dec 8, 2025
2ef272f
fix(auth): 🔨 prioritize file-based credential loading over environmen…
Mirrowel Dec 8, 2025
683c1c1
refactor(providers): 🔨 improve error handling and logging specificity
Mirrowel Dec 8, 2025
772abcf
Merge pull request #32 from MasuRii/feat/runtime-resilience
Mirrowel Dec 8, 2025
92211ea
feat(auth): ✨ add configurable OAuth callback ports for all providers
Mirrowel Dec 8, 2025
846ba25
feat(ui): ✨ add GUI for visual model filter configuration
Mirrowel Dec 8, 2025
e9dcbc0
perf(ui): ⚡️ implement virtual scrolling for model filter lists
Mirrowel Dec 8, 2025
e037e16
refactor(ui): 🔨 simplify virtual scroll implementation using native c…
Mirrowel Dec 8, 2025
24a4b19
perf(ui): ⚡️ replace widget-based rule list with virtual canvas rende…
Mirrowel Dec 8, 2025
2d9a112
style(ui): 💎 reduce spacing and font sizes for compact model filter l…
Mirrowel Dec 8, 2025
923eb65
refactor(ui): 🔨 restructure layout system with fixed height constrain…
Mirrowel Dec 8, 2025
ad2ed1a
docs: 📚 add comprehensive Model Filter GUI documentation
Mirrowel Dec 8, 2025
f439788
refactor(auth): 🔨 consolidate OAuth credential management into base c…
Mirrowel Dec 8, 2025
7f1d2c1
feat(ui): ✨ add smart pattern merge and import/export capabilities to…
Mirrowel Dec 9, 2025
5c4d30a
fix(auth): 🐛 handle wrapped iFlow API token refresh responses
Mirrowel Dec 10, 2025
3ff0b2d
fix(tools): 🐛 inject dummy parameter for tools with empty schemas
Mirrowel Dec 13, 2025
e9feba3
fix(logging): 🐛 handle StreamedAPIError wrapper in failure logger
Mirrowel Dec 13, 2025
633e634
fix(tools): 🐛 improve dummy parameter workaround for Gemini empty sch…
Mirrowel Dec 13, 2025
c5a61d9
fix(httpx): set custom timeout for all POST requests
Dec 13, 2025
e2f4e9e
refactor(timeout): 🔨 centralize HTTP timeout configuration across pro…
Mirrowel Dec 14, 2025
ae7ffce
docs(timeout): 📚 add comprehensive HTTP timeout configuration documen…
Mirrowel Dec 14, 2025
dd75c7f
Merge pull request #39 from kevincojean/fix/proxy-hangs-for-10-minute…
Mirrowel Dec 14, 2025
1c9e20d
refactor(auth): 🔨 implement dual-queue system for token refresh and r…
Mirrowel Dec 14, 2025
005972e
refactor(auth): 🔨 reduce debug logging noise in credential refresh sy…
Mirrowel Dec 14, 2025
ab3f77b
feat(auth): ✨ add automatic tier discovery for credentials missing pe…
Mirrowel Dec 14, 2025
bb86601
refactor(gemini): 🔨 switch to sequential rotation mode and adjust tie…
Mirrowel Dec 14, 2025
467f294
refactor(core): 🔨 centralize path management for PyInstaller compatib…
Mirrowel Dec 14, 2025
b9d9895
fix(antigravity): 🐛 add fallback retry logic for RESOURCE_EXHAUSTED e…
Mirrowel Dec 14, 2025
f925da4
fix(gemini): 🐛 add robust JSON parsing and tool response grouping for…
Mirrowel Dec 14, 2025
682bbea
fix(env): 🐛 use explicit .env path for PyInstaller compatibility
Mirrowel Dec 14, 2025
352d879
feat(settings): ✨ add real-time pending changes preview across all se…
Mirrowel Dec 14, 2025
b6116f7
refactor(startup): 🔨 reorganize import sequence to eliminate blocking…
Mirrowel Dec 14, 2025
e4bf852
docs: 📚 restructure README with quick start guide and improved naviga…
Mirrowel Dec 14, 2025
c745d73
refactor(antigravity): 🔨 inline JSON schema references before sanitiz…
Mirrowel Dec 14, 2025
b7df2fe
feat(filter): ✨ add full glob pattern support for model filtering
Mirrowel Dec 14, 2025
ed4dd55
Merge branch 'dev' into main
Mirrowel Dec 14, 2025
c4e297f
feat(model-info): ✨ add provider priority system and enhanced model m…
Mirrowel Dec 14, 2025
a68d8d0
fix(antigravity): 🐛 add platform/architecture to User-Agent header
Mirrowel Dec 14, 2025
8ed4f52
fix(oauth): 🐛 prevent deadlock and token desync for rotating refresh …
Mirrowel Dec 14, 2025
c5dfecd
feat(antigravity): ✨ add automatic retry logic for empty API responses
Mirrowel Dec 15, 2025
8eb4988
feat(credentials): ✨ add comprehensive credential management interface
Mirrowel Dec 15, 2025
ef8f78e
refactor(credentials): 🔨 separate view and manage credential menus
Mirrowel Dec 15, 2025
d5acbd4
refactor(tui): 🔨 enhance clear_screen with optional header display
Mirrowel Dec 15, 2025
3876001
refactor(antigravity): 🔨 clarify empty response retry configuration a…
Mirrowel Dec 15, 2025
9bfc01f
refactor(cache): 🔨 decouple memory cleanup from disk persistence life…
Mirrowel Dec 15, 2025
690ec60
refactor(iflow): 🔨 reorganize model registry and integrate new LLM op…
Mirrowel Dec 16, 2025
bb812a7
fix(retry): 🐛 parse millisecond durations and avoid immediate retry l…
Mirrowel Dec 16, 2025
0a45558
fix(timeout): 🐛 increase streaming read timeout to 5 minutes - 3 minu…
Mirrowel Dec 16, 2025
2be7535
feat(antigravity): ✨ add quota tracking with independent background jobs
Mirrowel Dec 16, 2025
543f871
feat(antigravity): ✨ add TransientQuotaError for bare 429 responses
Mirrowel Dec 16, 2025
818ba14
feat(antigravity): ✨ add credential availability tracking for models
Mirrowel Dec 16, 2025
09eea32
feat(antigravity): ✨ add parallel tool usage instruction injection fo…
Mirrowel Dec 16, 2025
2eb0cb6
docs(antigravity): 📚 document quota tracking, background jobs, and er…
Mirrowel Dec 16, 2025
d7c643f
docs(background): reduce default background job interval from 15min t…
Mirrowel Dec 16, 2025
f812e17
Merge pull request #41 from Mirrowel/antigravity-usage-tracking
Mirrowel Dec 16, 2025
846c165
feat(antigravity): ✨ add initial full quota baseline fetch on startup
Mirrowel Dec 16, 2025
8b4ff52
feat(quota-viewer): ✨ add quota and usage statistics viewer system
Mirrowel Dec 16, 2025
48b6b15
feat(usage): ✨ use request count for credential selection when failed…
Mirrowel Dec 16, 2025
65fe549
feat(quota-viewer): ✨ add intelligent URL scheme detection for local …
Mirrowel Dec 16, 2025
1ac7bd0
refactor(usage): 🔨 sync request_count across quota group models
Mirrowel Dec 16, 2025
1af1879
refactor(quota-viewer): 🔨 enhance credential sorting and cooldown dis…
Mirrowel Dec 16, 2025
06b3f7d
feat(quota): restructure quota aggregation with cumulative counts and…
Mirrowel Dec 16, 2025
90d4836
feat(quota): ✨ improve aggregation with tier priorities and fix doubl…
Mirrowel Dec 16, 2025
475234c
Merge branch 'quota-viewer' into main
Mirrowel Dec 16, 2025
cfa8697
Merge remote-tracking branch 'origin/feature/filtering-tool' into dev
Mirrowel Dec 17, 2025
740e192
fix(antigravity): 🐛 preserve property names matching validation keywords
Mirrowel Dec 17, 2025
1ec1463
refactor(antigravity): 🔨 improve additionalProperties handling in sch…
Mirrowel Dec 17, 2025
e4ee46f
fix(antigravity): 🐛 TLDR: Huge ass pass fixing things + Gemini 3 Flas…
Mirrowel Dec 17, 2025
50ee93b
fix(antigravity): 🐛 implement schema-aware JSON string parsing for tools
Mirrowel Dec 18, 2025
a9943e6
feat(antigravity): ✨Gemini auto-unfuck: implement auto-recovery for m…
Mirrowel Dec 18, 2025
9c5dbdf
fix(antigravity): 🐛 propagate usage stats in streaming auto-recovery
Mirrowel Dec 18, 2025
a6b15ce
feat: add docker compose support
FammasMaz Dec 4, 2025
a5917ee
feat: update to 8317 port
FammasMaz Dec 4, 2025
37eed41
Change exposed port from 8317 to 8000
FammasMaz Dec 4, 2025
a29d3d0
feat: add key_usage to docker
FammasMaz Dec 6, 2025
b4df352
feat(proxy): add Anthropic Messages API endpoint for Claude Code comp…
FammasMaz Dec 10, 2025
7e229f4
feat(anthropic): add extended thinking support to /v1/messages endpoint
FammasMaz Dec 12, 2025
7aea08e
feat(anthropic): force high thinking budget for Opus models by default
FammasMaz Dec 12, 2025
05d89a2
fix: ensure max_tokens exceeds thinking budget and improve error hand…
FammasMaz Dec 13, 2025
e35f3f0
fix(anthropic): properly close all content blocks in streaming wrapper
FammasMaz Dec 14, 2025
4ec92ec
fix(anthropic): add missing uuid import for /v1/messages endpoint
FammasMaz Dec 14, 2025
b70efdf
fix(anthropic): always set custom_reasoning_budget when thinking is e…
FammasMaz Dec 14, 2025
4bd879b
feat(openai): auto-enable full thinking budget for Opus
FammasMaz Dec 14, 2025
758b4b5
fix(anthropic): add missing JSONResponse import for non-streaming res…
FammasMaz Dec 14, 2025
f2d7288
fix(anthropic): ensure message_start is sent before message_stop in s…
FammasMaz Dec 15, 2025
de88557
feat: add /context endpoint for anthropic routes
FammasMaz Dec 16, 2025
beed0bc
Revert "feat(openai): auto-enable full thinking budget for Opus"
FammasMaz Dec 19, 2025
2c93a68
Revert "fix(anthropic): always set custom_reasoning_budget when think…
FammasMaz Dec 19, 2025
b19526c
refactor: Move Anthropic translation layer to rotator_library
FammasMaz Dec 20, 2025
d91f98b
fix(anthropic): improve model detection and document thinking budget
FammasMaz Dec 20, 2025
d9e3f68
Merge branch 'feature/docker-support' into server
FammasMaz Dec 20, 2025
060d272
feat(server): force full thinking budget for Opus on all routes
FammasMaz Dec 20, 2025
874e9e3
feat: add nginx support
FammasMaz Dec 21, 2025
a1c7046
Merge branch 'feature/docker-support' into server
FammasMaz Dec 21, 2025
59360cc
feat: add Telegram bot for remote quota monitoring
FammasMaz Dec 21, 2025
171a242
fix: proxy scheme fix
FammasMaz Dec 22, 2025
3538a15
feat: handle long messages
FammasMaz Dec 22, 2025
efec803
chore: remove workflows
FammasMaz Dec 22, 2025
a7f6509
feat(telegram): add LLM chat with session management and streaming re…
FammasMaz Dec 22, 2025
f13a968
fix(docker): copy prompts folder for system prompt
FammasMaz Dec 22, 2025
dcc88f3
fix(telegram): silence httpx polling logs to reduce noise
FammasMaz Dec 22, 2025
7cedfcb
feat: add log rotation to docker-compose services
FammasMaz Dec 22, 2025
2bbd86c
Merge branch 'feature/docker-support' into server
FammasMaz Dec 22, 2025
16c889f
fix(anthropic): handle images in tool results for Claude Code
FammasMaz Dec 22, 2025
33aeb3c
Merge branch 'feature/anthropic-endpoints' into server
FammasMaz Dec 22, 2025
2ed7582
feat(telegram): add inline buttons for quota refresh and navigation
FammasMaz Dec 23, 2025
92db52f
fix(antigravity): add propertyNames to incompatible schema keywords (…
mirrobot-agent[bot] Dec 24, 2025
0379d5d
Add CODEOWNERS file to require approval from @Mirrowel
Mirrowel Dec 24, 2025
bb3d31f
Add CODEOWNERS file for @Mirrowel
Mirrowel Dec 24, 2025
9dc64c4
fix(antigravity): 🐛 update quota costs for Claude and Gemini models
Mirrowel Dec 30, 2025
545d0d5
fix(anthropic): force Claude thinking budget and interleaved hint
FammasMaz Dec 31, 2025
57d731b
Merge origin/main into server
FammasMaz Dec 31, 2025
ac24b5f
Merge origin/dev into server
FammasMaz Dec 31, 2025
23d781a
Merge feature/anthropic-endpoints into server
FammasMaz Dec 31, 2025
765df7a
fix(anthropic): read thinking budget from client request
FammasMaz Dec 31, 2025
5af1f10
fix(anthropic): handle thinking toggle for text-only assistant messages
FammasMaz Jan 1, 2026
0bb8a52
fix(anthropic): strengthen interleaved thinking hint
FammasMaz Jan 1, 2026
90af1f4
Merge branch 'feature/anthropic-endpoints' into server
FammasMaz Jan 1, 2026
f345437
HARDCODE: FORCE: enable max thinking for claude models
FammasMaz Jan 1, 2026
991a8e3
fix(antigravity): remove unreachable is_claude condition in thinking …
FammasMaz Jan 1, 2026
354ac17
fix(antigravity): add debug logging for non-data URL images
FammasMaz Jan 1, 2026
79c1dae
Merge branch 'feature/anthropic-endpoints' into server
FammasMaz Jan 1, 2026
4c2202a
Merge branch 'feature/telegram-bot' into server
FammasMaz Jan 1, 2026
b81ca57
fix(anthropic): correct cache token handling in usage responses
FammasMaz Jan 2, 2026
6a13cae
Merge branch 'feature/anthropic-endpoints' into server
FammasMaz Jan 2, 2026
97ef2d1
feat(anthropic): add 5 translation improvements from reference
FammasMaz Jan 2, 2026
bad88dd
Merge branch 'feature/anthropic-endpoints' into server
FammasMaz Jan 2, 2026
dc19691
fix(antigravity): make interleaved thinking hint more explicit
FammasMaz Jan 2, 2026
962f5f1
Merge branch 'feature/anthropic-endpoints' into server
FammasMaz Jan 2, 2026
70888bc
feat(quota): add initial implementation of the quota dashboard
Jan 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Git
.git
.gitignore

# Python
__pycache__
*.py[cod]
*$py.class
*.so
.Python
.env
.venv
env/
venv/
ENV/

# IDE
.idea/
.vscode/
*.swp
*.swo

# Build
*.egg-info/
dist/
build/
.eggs/

# Logs (will be mounted as volume)
logs/

# OAuth credentials (will be mounted as volume)
oauth_creds/

# Documentation
*.md
!README.md

# GitHub
.github/

# Misc
.DS_Store
*.log
103 changes: 102 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,83 @@ MAX_CONCURRENT_REQUESTS_PER_KEY_GEMINI=1
MAX_CONCURRENT_REQUESTS_PER_KEY_ANTHROPIC=1
MAX_CONCURRENT_REQUESTS_PER_KEY_IFLOW=1

# --- Credential Rotation Mode ---
# Controls how credentials are rotated when multiple are available for a provider.
# This affects how the proxy selects the next credential to use for requests.
#
# Available modes:
# balanced - (Default) Rotate credentials evenly across requests to distribute load.
# Best for API keys with per-minute rate limits.
# sequential - Use one credential until it's exhausted (429 error), then switch to next.
# Best for credentials with daily/weekly quotas (e.g., free tier accounts).
# When a credential hits quota, it's put on cooldown based on the reset time
# parsed from the provider's error response.
#
# Format: ROTATION_MODE_<PROVIDER_NAME>=<mode>
#
# Provider Defaults:
# - antigravity: sequential (free tier accounts with daily quotas)
# - All others: balanced
#
# Example:
# ROTATION_MODE_GEMINI=sequential # Use Gemini keys until quota exhausted
# ROTATION_MODE_OPENAI=balanced # Distribute load across OpenAI keys (default)
# ROTATION_MODE_ANTIGRAVITY=balanced # Override Antigravity's sequential default
#
# ROTATION_MODE_GEMINI=balanced
# ROTATION_MODE_ANTIGRAVITY=sequential

# --- Priority-Based Concurrency Multipliers ---
# Credentials can be assigned to priority tiers (1=highest, 2, 3, etc.).
# Each tier can have a concurrency multiplier that increases the effective
# concurrent request limit for credentials in that tier.
#
# How it works:
# effective_concurrent_limit = MAX_CONCURRENT_REQUESTS_PER_KEY * tier_multiplier
#
# This allows paid/premium credentials to handle more concurrent requests than
# free tier credentials, regardless of rotation mode.
#
# Provider Defaults (built into provider classes):
# Antigravity:
# Priority 1: 5x (paid ultra tier)
# Priority 2: 3x (standard paid tier)
# Priority 3+: 2x (sequential mode) or 1x (balanced mode)
# Gemini CLI:
# Priority 1: 5x
# Priority 2: 3x
# Others: 1x (all modes)
#
# Format: CONCURRENCY_MULTIPLIER_<PROVIDER>_PRIORITY_<N>=<multiplier>
#
# Mode-specific overrides (optional):
# Format: CONCURRENCY_MULTIPLIER_<PROVIDER>_PRIORITY_<N>_<MODE>=<multiplier>
#
# Examples:
# CONCURRENCY_MULTIPLIER_ANTIGRAVITY_PRIORITY_1=10 # Override P1 to 10x
# CONCURRENCY_MULTIPLIER_ANTIGRAVITY_PRIORITY_3=1 # Override P3 to 1x
# CONCURRENCY_MULTIPLIER_ANTIGRAVITY_PRIORITY_2_BALANCED=1 # P2 = 1x in balanced mode only

# --- Model Quota Groups ---
# Models that share quota/cooldown timing. When one model in a group hits
# quota exhausted (429), all models in the group receive the same cooldown timestamp.
# They also reset (archive stats) together when the quota period expires.
#
# This is useful for providers where multiple model variants share the same
# underlying quota (e.g., Claude Sonnet and Opus on Antigravity).
#
# Format: QUOTA_GROUPS_<PROVIDER>_<GROUP>="model1,model2,model3"
#
# To DISABLE a default group, set it to empty string:
# QUOTA_GROUPS_ANTIGRAVITY_CLAUDE=""
#
# Default groups:
# ANTIGRAVITY.CLAUDE: claude-sonnet-4-5,claude-opus-4-5
#
# Examples:
# QUOTA_GROUPS_ANTIGRAVITY_CLAUDE="claude-sonnet-4-5,claude-opus-4-5"
# QUOTA_GROUPS_ANTIGRAVITY_GEMINI="gemini-3-pro-preview,gemini-3-pro-image-preview"

# ------------------------------------------------------------------------------
# | [ADVANCED] Proxy Configuration |
# ------------------------------------------------------------------------------
Expand All @@ -173,4 +250,28 @@ OAUTH_REFRESH_INTERVAL=600 # Default is 600 seconds (10 minutes)
# setup/validation flow on startup. This is highly recommended for non-interactive
# environments like Docker containers or automated scripts.
# Ensure your credentials in 'oauth_creds/' are valid before enabling this.
SKIP_OAUTH_INIT_CHECK=false
SKIP_OAUTH_INIT_CHECK=false


# ------------------------------------------------------------------------------
# | [TELEGRAM] Telegram Bot Configuration |
# ------------------------------------------------------------------------------
#
# Optional: Enable a Telegram bot to query quota stats from your phone.
#
# Setup:
# 1. Message @BotFather on Telegram and send /newbot
# 2. Follow the prompts to create your bot
# 3. Copy the token and paste it below
# 4. Message @userinfobot to get your Telegram user ID
# 5. Add your user ID to TELEGRAM_ALLOWED_USERS (comma-separated for multiple)
# 6. Run: python -m src.proxy_app.telegram_bot
#

# Bot token from @BotFather (required for Telegram bot)
TELEGRAM_BOT_TOKEN=""

# Comma-separated list of Telegram user IDs allowed to use the bot
# Get your ID by messaging @userinfobot on Telegram
# Example: TELEGRAM_ALLOWED_USERS="123456789,987654321"
TELEGRAM_ALLOWED_USERS=""
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# This ensures @Mirrowel must approve any change to any file
* @Mirrowel
Loading
Loading