eggpool 0.4.3__tar.gz → 0.4.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {eggpool-0.4.3 → eggpool-0.4.4}/CHANGELOG.md +8 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/PKG-INFO +1 -1
- {eggpool-0.4.3 → eggpool-0.4.4}/pyproject.toml +1 -1
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/proxy_request.py +2 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/app.py +2 -1
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/cache.py +13 -6
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/cli_full.py +23 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/request/coordinator.py +7 -1
- eggpool-0.4.4/src/eggpool/routing/config.py +21 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/uv.lock +1 -1
- {eggpool-0.4.3 → eggpool-0.4.4}/.env.example +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/.github/workflows/ci.yml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/.github/workflows/release.yml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/.gitignore +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/AGENTS.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/LICENSE +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/README.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/architecture/README.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/config-examples/claude-code.env +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/config-examples/opencode.jsonc +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/config.example.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/deploy/eggpool-logrotate.conf +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/deploy/eggpool.service +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/deploy/env.example +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/backup-restore.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/deployment.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/filesystem-layout.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/firewall.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/model-limits.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/network-diagnostics.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/providers.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/proxy.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/raspberry-pi.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/docs/transcoding.md +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/check_database.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/install.sh +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/install_prompt.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/smoke_test.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/validate_routing.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/scripts/verify_upstream_auth.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/__main__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/_share/.env.example +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/_share/config.example.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/accounts/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/accounts/registry.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/accounts/state.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/backoff.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/chat_completions.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/errors.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/messages.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/model_info.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/models.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/network.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/runtime.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/stats.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/api/update.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/auth.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/background/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/background/backup.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/background/cleanup.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/catalog_resolvers.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/fetcher.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/limits.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/normalizer.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/pricing.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/pricing_aliases.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/pricing_resolver.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/protocols.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/catalog/service.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/cli.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/config.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/config_utils.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/constants.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/cost_recompute.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/_resources.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/escape.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/render.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/routes.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/static/chart.umd.min.js +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/static/dashboard.css +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/static/dashboard.js +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/static/favicon.svg +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/theme.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Booberry.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Catppuccin Latte.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Catppuccin Macchiato.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Catppuccin Mocha.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Cyber Red.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Cyberpunk.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Dark Green.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Discord (80_ Saturation).toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Discord.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Dracula.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Ferra Light.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Flexor Dark.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Gruvbox.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Halcyon Dark.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/IntelliJ Light.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Kanagawa.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Macaw Dark.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Macaw Light.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Matrix.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Noctis Lilac.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Nord.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Nostromo Terminal.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/One Dark.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Oxocarbon.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Rose Pine Dawn.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Rose Pine Moon.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Rose Pine.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Solarized Dark.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Sonokai.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Tokyo Night Storm.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/VESPER.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/Zenburn.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/acton.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/bam.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/base16-atelier-forest-light.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/berlin.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/black but with important highlights.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/broc.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/cork.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/ferra.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/forest.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/lisbon.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/midnight.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/oslo.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/plum.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/portland.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/sunset.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/tofino.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/vanimo.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/vik.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/connection.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/migrations.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/repositories.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/rollup_repository.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0001_initial.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0002_indexes.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0003_request_attempts.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0004_integration_hardening.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0005_price_microdollars.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0006_correct_price_microdollars.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0007_price_cache_rates.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0008_proxy_request_identity.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0009_model_protocol_source.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0010_health_probe.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0011_model_resolution_status.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0012_drop_reservations_estimated_microdollars.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0013_request_attempts_account_id_index.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0014_bandwidth_tracking.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0015_multi_provider.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0016_requests_provider_id.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0017_price_snapshots_provider_id.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0018_provider_pings.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0019_client_ip.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0020_performance_indexes.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0021_provider_model_metadata.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0022_dashboard_indexes.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0023_deprecated_model_placeholder.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0024_account_backoffs.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0025_stale_request_index.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0026_attempt_observability.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0027_routing_decisions.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0028_operational_events.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0029_latency_phases.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0030_model_pricing_aliases.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0031_price_snapshot_provenance.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0032_usage_rollups.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0033_request_provider_local_cost.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0034_transcoding_daily.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0035_routing_decision_score_components.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0036_model_info.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0037_model_info_failure_count.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0038_model_info_phase5.sql +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/checksums.json +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/deploy/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/deploy_user.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/errors.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/fastcli.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/health/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/health/backoff.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/health/circuit_breaker.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/health/health_manager.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/aider.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/cline.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/codex.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/common.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/continue_dev.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/goose.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/kilo.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/opencode.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/openhands.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/qwen_code.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/integrations/roo_code.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/lifecycle/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/lifecycle/backup.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/lifecycle/uninstall.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/logging.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/metrics/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/metrics/buffer.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/dedup.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/identity.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/repository.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/scheduler.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/service.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/sources/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/sources/artificial_analysis.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/sources/base.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/sources/huggingface.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/sources/openrouter.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/sources/provider_catalog.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/model_info/types.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/models/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/models/api.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/models/config.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/models/database.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/models/domain.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/onboard.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/_templates.toml +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/auth.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/client_pool.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/connect.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/contract.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/dns_cache.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/outbound.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/providers/pproxy_transport.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/proxy/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/proxy/client.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/proxy/cost_reporting.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/proxy/sse_observer.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/proxy/usage.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/py.typed +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/quota/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/quota/audit.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/quota/estimation.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/quota/reservation.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/quota/scorer.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/request/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/request/attempt_finalizer.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/request/body.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/request/finalizer.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/request/limits.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/retry/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/retry/classification.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/routing/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/routing/eligibility.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/routing/fairness.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/routing/provider.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/routing/router.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/runtime.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/runtime_dispatch.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/runtime_metrics.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/runtime_paths.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/security/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/security/redaction.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/stats/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/stats/grouped_timeseries.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/stats/queries.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/stats/service.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/toml_edit.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/__init__.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/anthropic_to_openai.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/context.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/errors.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/ids.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/json_helpers.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/openai_to_anthropic.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/policy.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/protocol.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/static_headers.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/streaming.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/transcoder/usage.py +0 -0
- {eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/update_checker.py +0 -0
|
@@ -9,6 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
Nothing yet.
|
|
11
11
|
|
|
12
|
+
## [0.4.4] - 2026-06-30
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- **Provider-scoped transcodable protocol lookup**. `get_transcodable_protocols` and `count_eligible_accounts_for_protocol` on `ModelCatalogCache` now accept an optional `provider_id` filter so protocol inference and eligibility counting only consider accounts that belong to a specific provider. `_infer_upstream_protocol` in `proxy_request.py` and `RequestCoordinator._resolve_upstream_protocol` pass the selected account's `provider_id`, preventing cross-provider protocol leakage when the same model is served by providers with different protocol surfaces.
|
|
17
|
+
- **MiniMax token-plan contract warning**. `check-config` now emits a warning when a MiniMax provider entry targets `api.minimax.io` with `openai` protocol but does not use the `/anthropic` path — token-plan keys hitting the OpenAI `/v1/chat/completions` surface can return upstream `insufficient balance (1008)` errors.
|
|
18
|
+
- **`build_upstream_headers` now receives the upstream protocol**. The coordinator passes `context.upstream_protocol` to `build_upstream_headers` so protocol-specific auth header construction (e.g. `x-api-key` for Anthropic vs `Authorization: Bearer` for OpenAI) uses the correct upstream protocol instead of the client's protocol.
|
|
19
|
+
|
|
12
20
|
## [0.4.3] - 2026-06-30
|
|
13
21
|
|
|
14
22
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eggpool
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: A lightweight proxy that aggregates multiple LLM provider accounts behind one OpenAI-compatible endpoint
|
|
5
5
|
Project-URL: Homepage, https://github.com/eggstack/eggpool
|
|
6
6
|
Project-URL: Repository, https://github.com/eggstack/eggpool
|
|
@@ -147,6 +147,7 @@ def _infer_upstream_protocol(
|
|
|
147
147
|
candidates = catalog.cache.get_transcodable_protocols(
|
|
148
148
|
model_id,
|
|
149
149
|
client_protocol=client_protocol,
|
|
150
|
+
provider_id=provider_id,
|
|
150
151
|
)
|
|
151
152
|
if not candidates:
|
|
152
153
|
return None
|
|
@@ -155,6 +156,7 @@ def _infer_upstream_protocol(
|
|
|
155
156
|
p: catalog.cache.count_eligible_accounts_for_protocol(
|
|
156
157
|
model_id,
|
|
157
158
|
p,
|
|
159
|
+
provider_id=provider_id,
|
|
158
160
|
)
|
|
159
161
|
for p in candidates
|
|
160
162
|
}
|
|
@@ -67,6 +67,7 @@ from eggpool.providers.client_pool import ProviderClientPool
|
|
|
67
67
|
from eggpool.providers.dns_cache import DnsNetworkBackend
|
|
68
68
|
from eggpool.providers.outbound import OutboundClientManager, default_network_backend
|
|
69
69
|
from eggpool.request.coordinator import RequestCoordinator
|
|
70
|
+
from eggpool.routing.config import routing_stale_after_s
|
|
70
71
|
from eggpool.routing.router import Router
|
|
71
72
|
from eggpool.runtime_dispatch import DispatchOverheadRecorder
|
|
72
73
|
from eggpool.stats import StatsService
|
|
@@ -784,7 +785,7 @@ async def _lifespan_runtime(app: FastAPI) -> AsyncGenerator[None]:
|
|
|
784
785
|
registry,
|
|
785
786
|
catalog,
|
|
786
787
|
health_manager=health_manager,
|
|
787
|
-
stale_after_s=
|
|
788
|
+
stale_after_s=routing_stale_after_s(config),
|
|
788
789
|
local_quota_mode=config.routing.local_quota_mode,
|
|
789
790
|
fairness_mode=config.routing.fairness_mode,
|
|
790
791
|
fairness_epsilon=config.routing.fairness_epsilon,
|
|
@@ -789,6 +789,7 @@ class ModelCatalogCache:
|
|
|
789
789
|
model_id: str,
|
|
790
790
|
*,
|
|
791
791
|
client_protocol: str,
|
|
792
|
+
provider_id: str | None = None,
|
|
792
793
|
) -> set[str]:
|
|
793
794
|
"""Return the set of protocols a model can reach, minus the client protocol.
|
|
794
795
|
|
|
@@ -798,11 +799,13 @@ class ModelCatalogCache:
|
|
|
798
799
|
supporting = self.get_supporting_accounts(model_id)
|
|
799
800
|
protocols: set[str] = set()
|
|
800
801
|
for account_name in supporting:
|
|
801
|
-
|
|
802
|
-
if
|
|
802
|
+
account_provider_id = self._account_providers.get(account_name)
|
|
803
|
+
if account_provider_id is None:
|
|
804
|
+
continue
|
|
805
|
+
if provider_id is not None and account_provider_id != provider_id:
|
|
803
806
|
continue
|
|
804
807
|
if self._config is not None:
|
|
805
|
-
provider = self._config.providers.get(
|
|
808
|
+
provider = self._config.providers.get(account_provider_id)
|
|
806
809
|
if provider is not None:
|
|
807
810
|
for proto in provider.protocols:
|
|
808
811
|
protocols.add(proto)
|
|
@@ -813,17 +816,21 @@ class ModelCatalogCache:
|
|
|
813
816
|
self,
|
|
814
817
|
model_id: str,
|
|
815
818
|
protocol: str,
|
|
819
|
+
*,
|
|
820
|
+
provider_id: str | None = None,
|
|
816
821
|
) -> int:
|
|
817
822
|
"""Count enabled accounts whose provider supports *protocol* and
|
|
818
823
|
has the model in its catalogue."""
|
|
819
824
|
supporting = self.get_supporting_accounts(model_id)
|
|
820
825
|
n = 0
|
|
821
826
|
for account_name in supporting:
|
|
822
|
-
|
|
823
|
-
if
|
|
827
|
+
account_provider_id = self._account_providers.get(account_name)
|
|
828
|
+
if account_provider_id is None:
|
|
829
|
+
continue
|
|
830
|
+
if provider_id is not None and account_provider_id != provider_id:
|
|
824
831
|
continue
|
|
825
832
|
if self._config is not None:
|
|
826
|
-
provider = self._config.providers.get(
|
|
833
|
+
provider = self._config.providers.get(account_provider_id)
|
|
827
834
|
if provider is not None and protocol in provider.protocols:
|
|
828
835
|
n += 1
|
|
829
836
|
return n
|
|
@@ -11,6 +11,7 @@ import zipfile
|
|
|
11
11
|
from contextlib import suppress
|
|
12
12
|
from pathlib import Path
|
|
13
13
|
from typing import TYPE_CHECKING, Any, cast
|
|
14
|
+
from urllib.parse import urlsplit
|
|
14
15
|
|
|
15
16
|
if TYPE_CHECKING:
|
|
16
17
|
from collections.abc import Callable, Coroutine
|
|
@@ -599,6 +600,22 @@ def _check_stale_contracts(config: AppConfig, config_path: str) -> list[str]:
|
|
|
599
600
|
"in protocols; the field will be ignored"
|
|
600
601
|
)
|
|
601
602
|
|
|
603
|
+
parsed_base = urlsplit(provider.base_url)
|
|
604
|
+
if (
|
|
605
|
+
parsed_base.hostname == "api.minimax.io"
|
|
606
|
+
and "openai" in provider.protocols
|
|
607
|
+
and parsed_base.path.rstrip("/") != "/anthropic"
|
|
608
|
+
):
|
|
609
|
+
warnings.append(
|
|
610
|
+
f"[{provider.id}] api.minimax.io token-plan keys should use "
|
|
611
|
+
"the Anthropic-compatible MiniMax contract "
|
|
612
|
+
"(base_url='https://api.minimax.io/anthropic', "
|
|
613
|
+
"protocols=['anthropic'], anthropic_path='/v1/messages', "
|
|
614
|
+
"auth.header='x-api-key'); the OpenAI "
|
|
615
|
+
"/v1/chat/completions surface can return upstream "
|
|
616
|
+
"'insufficient balance (1008)' for token-plan keys"
|
|
617
|
+
)
|
|
618
|
+
|
|
602
619
|
if endpoint is not None:
|
|
603
620
|
try:
|
|
604
621
|
compose_provider_url(provider, endpoint.path)
|
|
@@ -3296,6 +3313,7 @@ def accounts_explain(
|
|
|
3296
3313
|
from eggpool.catalog.cache import ModelCatalogCache
|
|
3297
3314
|
from eggpool.models.config import AppConfig
|
|
3298
3315
|
from eggpool.quota.estimation import QuotaEstimator
|
|
3316
|
+
from eggpool.routing.config import routing_stale_after_s
|
|
3299
3317
|
from eggpool.routing.router import Router
|
|
3300
3318
|
|
|
3301
3319
|
config_path: str = ctx.obj["config_path"]
|
|
@@ -3342,6 +3360,11 @@ def accounts_explain(
|
|
|
3342
3360
|
registry,
|
|
3343
3361
|
catalog, # type: ignore[reportArgumentType]
|
|
3344
3362
|
quota_estimator=quota_estimator,
|
|
3363
|
+
stale_after_s=routing_stale_after_s(config),
|
|
3364
|
+
local_quota_mode=config.routing.local_quota_mode,
|
|
3365
|
+
fairness_mode=config.routing.fairness_mode,
|
|
3366
|
+
fairness_epsilon=config.routing.fairness_epsilon,
|
|
3367
|
+
fairness_scope=config.routing.fairness_scope,
|
|
3345
3368
|
)
|
|
3346
3369
|
rows = await router.explain_account_eligibility(
|
|
3347
3370
|
model_id=model_id,
|
|
@@ -1858,7 +1858,11 @@ class RequestCoordinator:
|
|
|
1858
1858
|
else None
|
|
1859
1859
|
)
|
|
1860
1860
|
if provider_cfg is not None:
|
|
1861
|
-
auth_headers = build_upstream_headers(
|
|
1861
|
+
auth_headers = build_upstream_headers(
|
|
1862
|
+
provider_cfg,
|
|
1863
|
+
selected.api_key,
|
|
1864
|
+
protocol=context.upstream_protocol,
|
|
1865
|
+
)
|
|
1862
1866
|
sanitized.update(auth_headers)
|
|
1863
1867
|
if logger.isEnabledFor(logging.DEBUG):
|
|
1864
1868
|
auth_shape = build_auth_headers(provider_cfg, selected.api_key)
|
|
@@ -2573,6 +2577,7 @@ class RequestCoordinator:
|
|
|
2573
2577
|
candidates = self._catalog.cache.get_transcodable_protocols(
|
|
2574
2578
|
context.model_id,
|
|
2575
2579
|
client_protocol=context.protocol,
|
|
2580
|
+
provider_id=context.provider_id,
|
|
2576
2581
|
)
|
|
2577
2582
|
if not candidates:
|
|
2578
2583
|
return None
|
|
@@ -2582,6 +2587,7 @@ class RequestCoordinator:
|
|
|
2582
2587
|
p: self._catalog.cache.count_eligible_accounts_for_protocol(
|
|
2583
2588
|
context.model_id,
|
|
2584
2589
|
p,
|
|
2590
|
+
provider_id=context.provider_id,
|
|
2585
2591
|
)
|
|
2586
2592
|
for p in candidates
|
|
2587
2593
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Routing configuration helpers."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from eggpool.models.config import AppConfig
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def routing_stale_after_s(config: AppConfig) -> float | None:
|
|
12
|
+
"""Return the per-account catalog stale gate for routing.
|
|
13
|
+
|
|
14
|
+
``allow_stale_catalog`` means EggPool may continue serving from
|
|
15
|
+
previously known catalog support when refreshes are uncertain. In
|
|
16
|
+
that mode, routing must not silently de-pool healthy sibling
|
|
17
|
+
accounts just because their per-account refresh timestamp aged out.
|
|
18
|
+
"""
|
|
19
|
+
if config.models.allow_stale_catalog:
|
|
20
|
+
return None
|
|
21
|
+
return float(config.models.stale_after_s)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/dashboard/themes/base16-atelier-forest-light.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{eggpool-0.4.3 → eggpool-0.4.4}/src/eggpool/db/schema/0013_request_attempts_account_id_index.sql
RENAMED
|
File without changes
|