eggpool 0.7.1__tar.gz → 0.7.2__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.7.1 → eggpool-0.7.2}/PKG-INFO +1 -1
- {eggpool-0.7.1 → eggpool-0.7.2}/config.example.toml +7 -1
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/thinking.md +12 -8
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/transcoding.md +2 -2
- {eggpool-0.7.1 → eggpool-0.7.2}/pyproject.toml +1 -1
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/_share/config.example.toml +7 -2
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/models_dev.py +28 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/models/config.py +47 -14
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/provider_bound_request.py +22 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/builtin_contracts.py +44 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/policy.py +13 -10
- {eggpool-0.7.1 → eggpool-0.7.2}/uv.lock +1 -1
- {eggpool-0.7.1 → eggpool-0.7.2}/.env.example +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/.github/workflows/ci.yml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/.gitignore +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/AGENTS.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/CHANGELOG.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/LICENSE +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/README.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/README.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-background.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-catalog.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-control.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-core.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-dashboard.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-database.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-deployment.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-health.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-integrations.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-lifecycle.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-metrics.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-model-info.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-models.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-observability.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-providers.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-request-lifecycle.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-retry.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-routing.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-runtime.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-security.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/deep-dive-transcoder.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/architecture/overview.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/artifacts/plan-019-evidence.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/artifacts/plan-020-evidence.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/artifacts/plan-021-evidence.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/artifacts/plan-023-baseline.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/artifacts/plan-030-exact-head-evidence.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/config-examples/claude-code.env +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/config-examples/opencode.jsonc +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/config.sbc.example.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/deploy/eggpool-logrotate.conf +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/deploy/eggpool.service +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/deploy/env.example +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/agent-configuration.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/api-reference.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/backup-restore.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/config-profiles.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/deployment.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/filesystem-layout.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/firewall.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/live-config-rehash.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/model-info-openrouter-debug.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/model-limits.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/network-diagnostics.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/opencode-stream-stability.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/operations/dispatch-stability.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/providers.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/proxy.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/raspberry-pi.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/releasing.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/runbooks/database-recovery.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/docs/stateless-responses.md +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/admission_race_stress.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/bench_sqlite_writepath.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/check_database.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/debug_model_info_openrouter.sh +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/install.sh +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/install_prompt.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/repro_high_concurrency_streams.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/run_tests_with_timeout.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/smoke_test.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/test_model_info_identity.sh +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/validate_routing.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/scripts/verify_upstream_auth.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/__main__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/_share/.env.example +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/_share/config.sbc.example.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/accounts/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/accounts/registry.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/accounts/state.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/backoff.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/chat_completions.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/errors.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/messages.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/model_info.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/models.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/network.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/proxy_request.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/responses.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/runtime.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/stats.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/api/update.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/app.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/auth.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/background/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/background/backup.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/background/cleanup.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/background/maintenance.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/_time.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/cache.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/capabilities.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/catalog_resolvers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/fetcher.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/limits.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/normalizer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/pricing.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/pricing_aliases.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/pricing_resolver.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/protocols.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/catalog/service.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cli.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cli_exit_codes.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cli_full.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cli_rehash_format.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cli_rehash_helper.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/config.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/config_reload_policy.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/config_utils.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/config_validation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/constants.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/control/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/control/accepted_finalization.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/control/client.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/control/reload_manager.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/control/server.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cost_recompute.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/cost_repair.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/_resources.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/escape.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/render.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/routes.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/static/chart.umd.min.js +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/static/dashboard.css +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/static/dashboard.js +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/static/favicon.svg +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/telemetry.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/theme.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Booberry.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Catppuccin Latte.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Catppuccin Macchiato.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Catppuccin Mocha.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Cyber Red.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Cyberpunk.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Dark Green.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Discord (80_ Saturation).toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Discord.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Dracula.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Ferra Light.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Flexor Dark.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Gruvbox.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Halcyon Dark.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/IntelliJ Light.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Kanagawa.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Macaw Dark.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Macaw Light.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Matrix.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Noctis Lilac.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Nord.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Nostromo Terminal.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/One Dark.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Oxocarbon.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Rose Pine Dawn.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Rose Pine Moon.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Rose Pine.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Solarized Dark.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Sonokai.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Tokyo Night Storm.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/VESPER.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/Zenburn.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/acton.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/bam.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/base16-atelier-forest-light.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/berlin.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/black but with important highlights.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/broc.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/cork.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/ferra.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/forest.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/lisbon.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/midnight.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/oslo.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/plum.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/portland.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/sunset.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/tofino.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/vanimo.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/themes/vik.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/dashboard/timeseries_buckets.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/connection.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/migrations.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/repositories.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/rollup_repository.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0001_initial.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0002_indexes.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0003_request_attempts.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0004_integration_hardening.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0005_price_microdollars.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0006_correct_price_microdollars.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0007_price_cache_rates.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0008_proxy_request_identity.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0009_model_protocol_source.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0010_health_probe.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0011_model_resolution_status.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0012_drop_reservations_estimated_microdollars.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0013_request_attempts_account_id_index.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0014_bandwidth_tracking.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0015_multi_provider.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0016_requests_provider_id.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0017_price_snapshots_provider_id.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0018_provider_pings.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0019_client_ip.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0020_performance_indexes.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0021_provider_model_metadata.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0022_dashboard_indexes.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0023_deprecated_model_placeholder.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0024_account_backoffs.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0025_stale_request_index.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0026_attempt_observability.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0027_routing_decisions.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0028_operational_events.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0029_latency_phases.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0030_model_pricing_aliases.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0031_price_snapshot_provenance.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0032_usage_rollups.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0033_request_provider_local_cost.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0034_transcoding_daily.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0035_routing_decision_score_components.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0036_model_info.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0037_model_info_failure_count.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0038_model_info_phase5.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0039_thinking_observability.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0040_cache_token_observability.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0041_canonical_request_segmentation.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0042_observe_mode_compression_accounting.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0043_safe_suffix_compression.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0044_compression_policy_resolver.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0045_synthetic_cache_controls.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0046_closed_loop_threshold_tuning.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0047_normalize_rollup_bucket_start.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0048_request_cost_repairs.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0049_model_info_match_evidence.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0050_routing_decisions_retention_index.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0051_model_quarantine.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0052_catalog_refresh_state.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0053_remove_attempt_status_analytics_index.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/0054_model_quarantine_null_identity.sql +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/db/schema/checksums.json +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/deploy/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/deploy_user.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/errors.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/event_loop_lag.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/applier.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/classifier.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/effects.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/observation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/quarantine.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/signal.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/failure/signal_extract.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/fastcli.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/generation_factory.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/health/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/health/backoff.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/health/circuit_breaker.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/health/health_manager.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/health/writable_probe.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/aider.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/cline.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/codex.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/common.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/continue_dev.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/goose.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/kilo.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/opencode.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/openhands.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/qwen_code.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/integrations/roo_code.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/jsonx.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/lifecycle/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/lifecycle/backup.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/lifecycle/uninstall.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/logging.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/metrics/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/metrics/buffer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/metrics/failure_effects.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/metrics/thinking.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/dedup.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/identity.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/matching.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/normalization.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/presentation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/repository.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/scheduler.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/service.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/sources/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/sources/artificial_analysis.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/sources/base.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/sources/huggingface.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/sources/openrouter.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/sources/provider_catalog.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/model_info/types.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/models/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/models/api.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/models/database.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/models/domain.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/observability/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/observability/routing_trace_writer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/onboard.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/_templates.toml +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/auth.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/client_pool.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/connect.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/contract.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/outbound.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/providers/pproxy_transport.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/client.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/cost_reporting.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/normalized_usage.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/sse.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/sse_observer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/proxy/usage.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/py.typed +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/quota/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/quota/audit.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/quota/estimation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/quota/reservation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/quota/scorer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/reload_diagnostics.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/reload_transaction.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/attempt_finalizer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/backoff_persistence.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/body.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/claim_lifecycle.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/coordinator.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/failure_helpers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/finalization_job.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/finalizer.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/limits.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/parsed_payload.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/parsed_upstream_response.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/payload_utils.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/response_handoff.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/routing_helpers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/routing_trace_guard.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/selection_claim_diagnostics.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/static_helpers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/stream_completion.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/stream_diagnostics.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/terminal_status.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/thinking_adaptation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/transform_pipeline.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/upstream_execution.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/upstream_helpers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/request/usage_helpers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/retry/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/retry/classification.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/routing/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/routing/config.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/routing/eligibility.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/routing/fairness.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/routing/provider.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/routing/router.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime_dispatch.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime_manager.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime_metrics.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime_paths.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime_task_inventory.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/runtime_tasks.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/security/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/security/redaction.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/cache_metrics.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/dashboard_explain.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/grouped_timeseries.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/queries.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/segmentation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/service.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/stats/transcoding.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/toml_edit.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/__init__.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/anthropic_to_openai.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/budget_resolver.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/cache_stability.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/cache_translation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/context.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/errors.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/ids.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/json_helpers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/openai_to_anthropic.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/prepared.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/protocol.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/provider_adaptation.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/sensitive_media.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/static_headers.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/streaming.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/transcoder/usage.py +0 -0
- {eggpool-0.7.1 → eggpool-0.7.2}/src/eggpool/update_checker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: eggpool
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
4
4
|
Summary: A lightweight proxy that aggregates multiple LLM provider accounts behind an OpenAI Chat Completions-compatible endpoint
|
|
5
5
|
Project-URL: Homepage, https://github.com/eggstack/eggpool
|
|
6
6
|
Project-URL: Repository, https://github.com/eggstack/eggpool
|
|
@@ -109,6 +109,11 @@ catalog_withdrawal_policy = "preserve_until_health"
|
|
|
109
109
|
loss_policy = "warn" # "warn" or "reject" for loss-of-information
|
|
110
110
|
prefer_native = true # prefer native-protocol accounts in routing
|
|
111
111
|
|
|
112
|
+
# Thinking/reasoning transcoding is enabled by default. Set this to false to
|
|
113
|
+
# drop thinking controls and content instead of translating them.
|
|
114
|
+
# [transcoder.features]
|
|
115
|
+
# thinking = false
|
|
116
|
+
|
|
112
117
|
# Global effort→budget token mapping for thinking/reasoning.
|
|
113
118
|
# Values are used when the model's capability does not carry a
|
|
114
119
|
# per-model effort_to_budget_tokens mapping.
|
|
@@ -449,7 +454,8 @@ enabled = false
|
|
|
449
454
|
# header = "Authorization"
|
|
450
455
|
# scheme = "Bearer"
|
|
451
456
|
#
|
|
452
|
-
# # OpenCode Go exposes low/medium/high thinking controls for mimo-v2.5
|
|
457
|
+
# # OpenCode Go exposes low/medium/high thinking controls for mimo-v2.5 and
|
|
458
|
+
# # minimal/low/medium/high/xhigh for muse-spark-1.2-contributor.
|
|
453
459
|
# [providers.opencode-go.model_capabilities."mimo-v2.5".thinking]
|
|
454
460
|
# status = "supported"
|
|
455
461
|
# source = "provider_catalog"
|
|
@@ -28,16 +28,19 @@ Status values (`CapabilityStatus`):
|
|
|
28
28
|
|
|
29
29
|
Source: `src/eggpool/catalog/capabilities.py:36-44`
|
|
30
30
|
|
|
31
|
-
## 2.
|
|
31
|
+
## 2. Thinking Transcoding
|
|
32
32
|
|
|
33
|
-
Thinking transcoding is **
|
|
33
|
+
Thinking transcoding is **enabled by default**. No configuration is required.
|
|
34
|
+
To disable it, set the feature gate in `[transcoder.features]`:
|
|
34
35
|
|
|
35
36
|
```toml
|
|
36
37
|
[transcoder.features]
|
|
37
|
-
thinking =
|
|
38
|
+
thinking = false
|
|
38
39
|
```
|
|
39
40
|
|
|
40
|
-
When `thinking = false
|
|
41
|
+
When `thinking = false`, the transcoder **drops** thinking-related fields with a
|
|
42
|
+
structured `reasoning_content_dropped` warning rather than forwarding them.
|
|
43
|
+
Specifically:
|
|
41
44
|
|
|
42
45
|
- **OpenAI → Anthropic**: `reasoning_content` in assistant messages is dropped.
|
|
43
46
|
- **Anthropic → OpenAI**: `thinking` content blocks are dropped.
|
|
@@ -63,7 +66,7 @@ Source: `src/eggpool/transcoder/policy.py:217-225`
|
|
|
63
66
|
|
|
64
67
|
```toml
|
|
65
68
|
[transcoder.features]
|
|
66
|
-
thinking = true # Enable thinking/reasoning transcoding (default:
|
|
69
|
+
thinking = true # Enable thinking/reasoning transcoding (default: true)
|
|
67
70
|
```
|
|
68
71
|
|
|
69
72
|
### Budget Defaults
|
|
@@ -500,9 +503,10 @@ Source: `src/eggpool/metrics/thinking.py`, `src/eggpool/api/stats.py:452-463`, `
|
|
|
500
503
|
|
|
501
504
|
**Symptoms:** Client sends `reasoning_effort` but the upstream receives no thinking controls.
|
|
502
505
|
|
|
503
|
-
**Cause:** Thinking transcoding
|
|
506
|
+
**Cause:** Thinking transcoding was explicitly disabled with
|
|
507
|
+
`[transcoder.features].thinking = false`.
|
|
504
508
|
|
|
505
|
-
**Fix:**
|
|
509
|
+
**Fix:** Remove the override or enable the feature:
|
|
506
510
|
|
|
507
511
|
```toml
|
|
508
512
|
[transcoder.features]
|
|
@@ -562,7 +566,7 @@ native_protocols = ["anthropic"]
|
|
|
562
566
|
|
|
563
567
|
**Cause:** Thinking transcoding is likely disabled for streaming. The feature gate affects both streaming and non-streaming paths.
|
|
564
568
|
|
|
565
|
-
**Fix:**
|
|
569
|
+
**Fix:** Remove the disabling override or ensure `[transcoder.features] thinking = true` is set. Check `[transcoder.openai_reasoning_fields]` to verify the streaming delta field name matches your client's expectations (default: `"reasoning"`).
|
|
566
570
|
|
|
567
571
|
---
|
|
568
572
|
|
|
@@ -59,8 +59,8 @@ prefer_native = true
|
|
|
59
59
|
tools = true
|
|
60
60
|
# Image / document content parts (default: false)
|
|
61
61
|
vision = false
|
|
62
|
-
# Extended thinking blocks ↔ reasoning_content (default:
|
|
63
|
-
thinking =
|
|
62
|
+
# Extended thinking blocks ↔ reasoning_content (default: true)
|
|
63
|
+
thinking = true
|
|
64
64
|
# OpenAI response_format / json_schema coercion (default: false)
|
|
65
65
|
structured_outputs = false
|
|
66
66
|
# Anthropic-only primitives explicit handling (default: false)
|
|
@@ -104,6 +104,11 @@ catalog_withdrawal_policy = "preserve_until_health"
|
|
|
104
104
|
loss_policy = "warn" # "warn" or "reject" for loss-of-information
|
|
105
105
|
prefer_native = true # prefer native-protocol accounts in routing
|
|
106
106
|
|
|
107
|
+
# Thinking/reasoning transcoding is enabled by default. Set this to false to
|
|
108
|
+
# drop thinking controls and content instead of translating them.
|
|
109
|
+
# [transcoder.features]
|
|
110
|
+
# thinking = false
|
|
111
|
+
|
|
107
112
|
# Global effort→budget token mapping for thinking/reasoning.
|
|
108
113
|
# Values are used when the model's capability does not carry a
|
|
109
114
|
# per-model effort_to_budget_tokens mapping.
|
|
@@ -435,7 +440,8 @@ enabled = false
|
|
|
435
440
|
# header = "Authorization"
|
|
436
441
|
# scheme = "Bearer"
|
|
437
442
|
#
|
|
438
|
-
# # OpenCode Go exposes low/medium/high thinking controls for mimo-v2.5
|
|
443
|
+
# # OpenCode Go exposes low/medium/high thinking controls for mimo-v2.5 and
|
|
444
|
+
# # minimal/low/medium/high/xhigh for muse-spark-1.2-contributor.
|
|
439
445
|
# [providers.opencode-go.model_capabilities."mimo-v2.5".thinking]
|
|
440
446
|
# status = "supported"
|
|
441
447
|
# source = "provider_catalog"
|
|
@@ -914,4 +920,3 @@ protocol = "anthropic"
|
|
|
914
920
|
|
|
915
921
|
[model_overrides."claude-sonnet-4"]
|
|
916
922
|
protocol = "anthropic"
|
|
917
|
-
|
|
@@ -21,6 +21,7 @@ MODELS_DEV_BASE_URL = "https://models.dev"
|
|
|
21
21
|
OPENCODE_GO_MODELS_DEV_PROVIDER_ID = "opencode-go"
|
|
22
22
|
OPENCODE_COMPATIBLE_EFFORTS = ["low", "medium", "high"]
|
|
23
23
|
_EFFORT_BUDGET_DEFAULTS = {
|
|
24
|
+
"minimal": 1024,
|
|
24
25
|
"low": 1024,
|
|
25
26
|
"medium": 4096,
|
|
26
27
|
"high": 16384,
|
|
@@ -116,6 +117,33 @@ def derive_opencode_go_supported_efforts(
|
|
|
116
117
|
"""
|
|
117
118
|
if metadata.get("reasoning") is not True:
|
|
118
119
|
return []
|
|
120
|
+
|
|
121
|
+
# models.dev mirrors OpenCode's provider catalog and can carry the exact
|
|
122
|
+
# effort set for newer models. Prefer it when present so newly released
|
|
123
|
+
# levels (for example Muse Spark's ``xhigh``) are not silently dropped.
|
|
124
|
+
reasoning_options = metadata.get("reasoning_options")
|
|
125
|
+
if isinstance(reasoning_options, list):
|
|
126
|
+
efforts: list[str] = []
|
|
127
|
+
for option in cast("list[object]", reasoning_options):
|
|
128
|
+
if not isinstance(option, dict):
|
|
129
|
+
continue
|
|
130
|
+
option_dict = cast("dict[str, object]", option)
|
|
131
|
+
if option_dict.get("type") != "effort":
|
|
132
|
+
continue
|
|
133
|
+
values = option_dict.get("values")
|
|
134
|
+
if not isinstance(values, list):
|
|
135
|
+
continue
|
|
136
|
+
for value in cast("list[object]", values):
|
|
137
|
+
if not isinstance(value, str):
|
|
138
|
+
continue
|
|
139
|
+
effort = value.strip().lower()
|
|
140
|
+
if effort == "med":
|
|
141
|
+
effort = "medium"
|
|
142
|
+
if effort and effort not in efforts:
|
|
143
|
+
efforts.append(effort)
|
|
144
|
+
if efforts:
|
|
145
|
+
return efforts
|
|
146
|
+
|
|
119
147
|
lowered = model_id.lower()
|
|
120
148
|
if "deepseek-v4" in lowered:
|
|
121
149
|
return [*OPENCODE_COMPATIBLE_EFFORTS, "max"]
|
|
@@ -1174,31 +1174,64 @@ class ModelCapabilitiesOverrideConfig(BaseModel):
|
|
|
1174
1174
|
|
|
1175
1175
|
|
|
1176
1176
|
_OPENCODE_GO_BASE_URL = "https://opencode.ai/zen/go/v1"
|
|
1177
|
-
_OPENCODE_GO_THINKING_MODELS: frozenset[str] = frozenset(
|
|
1177
|
+
_OPENCODE_GO_THINKING_MODELS: frozenset[str] = frozenset(
|
|
1178
|
+
{"mimo-v2.5", "minimax-m3", "muse-spark-1.2-contributor"}
|
|
1179
|
+
)
|
|
1180
|
+
_OPENCODE_GO_THINKING_EFFORTS: dict[str, list[str]] = {
|
|
1181
|
+
"muse-spark-1.2-contributor": ["minimal", "low", "medium", "high", "xhigh"],
|
|
1182
|
+
}
|
|
1183
|
+
_OPENCODE_GO_EFFORT_BUDGETS: dict[str, int] = {
|
|
1184
|
+
"minimal": 1024,
|
|
1185
|
+
"low": 1024,
|
|
1186
|
+
"med": 4096,
|
|
1187
|
+
"medium": 4096,
|
|
1188
|
+
"high": 16384,
|
|
1189
|
+
"xhigh": 24576,
|
|
1190
|
+
}
|
|
1178
1191
|
|
|
1179
1192
|
|
|
1180
1193
|
def _default_opencode_go_thinking_capabilities() -> dict[
|
|
1181
1194
|
str, ModelCapabilitiesOverrideConfig
|
|
1182
1195
|
]:
|
|
1183
1196
|
"""Return built-in capability metadata for the canonical OpenCode Go host."""
|
|
1184
|
-
|
|
1185
|
-
model_id:
|
|
1197
|
+
model_efforts = {
|
|
1198
|
+
model_id: _OPENCODE_GO_THINKING_EFFORTS.get(
|
|
1199
|
+
model_id,
|
|
1200
|
+
["low", "medium", "high"],
|
|
1201
|
+
)
|
|
1202
|
+
for model_id in _OPENCODE_GO_THINKING_MODELS
|
|
1203
|
+
}
|
|
1204
|
+
result: dict[str, ModelCapabilitiesOverrideConfig] = {}
|
|
1205
|
+
for model_id, efforts in model_efforts.items():
|
|
1206
|
+
effort_to_budget = {
|
|
1207
|
+
effort: _OPENCODE_GO_EFFORT_BUDGETS[effort]
|
|
1208
|
+
for effort in efforts
|
|
1209
|
+
if effort in _OPENCODE_GO_EFFORT_BUDGETS
|
|
1210
|
+
}
|
|
1211
|
+
# Keep the historical ``med`` alias for the original built-in
|
|
1212
|
+
# contracts. Muse's advertised set uses the canonical ``medium``.
|
|
1213
|
+
if model_id != "muse-spark-1.2-contributor":
|
|
1214
|
+
effort_to_budget["med"] = _OPENCODE_GO_EFFORT_BUDGETS["med"]
|
|
1215
|
+
result[model_id] = ModelCapabilitiesOverrideConfig(
|
|
1186
1216
|
thinking=ThinkingCapabilityOverrideConfig(
|
|
1187
1217
|
status="supported",
|
|
1188
1218
|
source="provider_catalog",
|
|
1189
|
-
native_protocols=
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
"
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1219
|
+
native_protocols=(
|
|
1220
|
+
["anthropic"]
|
|
1221
|
+
if model_id == "muse-spark-1.2-contributor"
|
|
1222
|
+
else ["openai", "anthropic"]
|
|
1223
|
+
),
|
|
1224
|
+
supported_efforts=efforts,
|
|
1225
|
+
effort_to_budget_tokens=effort_to_budget,
|
|
1226
|
+
notes=(
|
|
1227
|
+
"OpenCode Go exposes minimal/low/medium/high/xhigh thinking "
|
|
1228
|
+
"controls."
|
|
1229
|
+
if model_id == "muse-spark-1.2-contributor"
|
|
1230
|
+
else "OpenCode Go exposes low/medium/high thinking controls."
|
|
1231
|
+
),
|
|
1198
1232
|
)
|
|
1199
1233
|
)
|
|
1200
|
-
|
|
1201
|
-
}
|
|
1234
|
+
return result
|
|
1202
1235
|
|
|
1203
1236
|
|
|
1204
1237
|
def _provider_is_canonical_opencode_go(provider: ProviderConfig) -> bool:
|
|
@@ -162,6 +162,28 @@ class ProviderBoundRequest:
|
|
|
162
162
|
_serialized_generation: int | None = field(default=None, repr=False)
|
|
163
163
|
_frozen: bool = field(default=False, repr=False)
|
|
164
164
|
|
|
165
|
+
def __post_init__(self) -> None:
|
|
166
|
+
"""Normalize EggPool's provider namespace out of the model field.
|
|
167
|
+
|
|
168
|
+
The public ``/v1/models`` surface exposes provider-scoped IDs such as
|
|
169
|
+
``minimax-m3/opencode-go``. That suffix belongs to EggPool's routing
|
|
170
|
+
namespace; upstream providers only receive the base model ID. Keep
|
|
171
|
+
this invariant on the shared provider-bound object so native requests
|
|
172
|
+
(which do not run a transcode preflight) are protected as well as
|
|
173
|
+
translated and legacy requests.
|
|
174
|
+
|
|
175
|
+
``client_payload`` remains untouched so the original client request
|
|
176
|
+
is still available for diagnostics and response adaptation.
|
|
177
|
+
"""
|
|
178
|
+
model_value = self.client_payload.get("model")
|
|
179
|
+
if not isinstance(model_value, str) or not self.model_id:
|
|
180
|
+
return
|
|
181
|
+
if not model_value.startswith(f"{self.model_id}/"):
|
|
182
|
+
return
|
|
183
|
+
normalized = dict(self.client_payload)
|
|
184
|
+
normalized["model"] = self.model_id
|
|
185
|
+
self.set_provider_payload(normalized, increment_generation=False)
|
|
186
|
+
|
|
165
187
|
@property
|
|
166
188
|
def provider_payload(self) -> Mapping[str, Any]:
|
|
167
189
|
"""Return the decoded provider-bound payload.
|
|
@@ -61,6 +61,48 @@ class BuiltinProviderContract:
|
|
|
61
61
|
contract: ThinkingControlContract
|
|
62
62
|
|
|
63
63
|
|
|
64
|
+
# ---------------------------------------------------------------------------
|
|
65
|
+
# OpenCode Go Muse Spark 1.2 Contributor contract
|
|
66
|
+
# ---------------------------------------------------------------------------
|
|
67
|
+
# The OpenCode Go model list does not include capability metadata, so this
|
|
68
|
+
# endpoint needs a curated contract for the Anthropic Messages path. The
|
|
69
|
+
# effort vocabulary is mirrored from the current models.dev/OpenCode model
|
|
70
|
+
# record, including the newer ``minimal`` and ``xhigh`` levels.
|
|
71
|
+
_OPENCODE_GO_MUSE_CONTRACT = BuiltinProviderContract(
|
|
72
|
+
key=ProviderContractKey(
|
|
73
|
+
provider_id_pattern=r"^opencode-go$",
|
|
74
|
+
model_id_pattern=r"^muse-spark-1\.2-contributor$",
|
|
75
|
+
protocol="anthropic",
|
|
76
|
+
priority=10,
|
|
77
|
+
),
|
|
78
|
+
contract=ThinkingControlContract(
|
|
79
|
+
mode="effort_or_budget",
|
|
80
|
+
request_fields=["thinking", "reasoning_effort"],
|
|
81
|
+
accepted_efforts=["minimal", "low", "medium", "high", "xhigh"],
|
|
82
|
+
effort_to_budget_tokens={
|
|
83
|
+
"minimal": 1024,
|
|
84
|
+
"low": 1024,
|
|
85
|
+
"medium": 4096,
|
|
86
|
+
"high": 16384,
|
|
87
|
+
"xhigh": 24576,
|
|
88
|
+
},
|
|
89
|
+
explicit_budget_min=1024,
|
|
90
|
+
explicit_budget_max=131072,
|
|
91
|
+
historical_reasoning_content="accepted",
|
|
92
|
+
source="provider_catalog",
|
|
93
|
+
),
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
_OPENCODE_GO_MUSE_URL_COMPAT_CONTRACT = BuiltinProviderContract(
|
|
97
|
+
key=ProviderContractKey(
|
|
98
|
+
provider_base_url_pattern=r".*opencode\.ai/zen/go/v1.*",
|
|
99
|
+
model_id_pattern=r"^muse-spark-1\.2-contributor$",
|
|
100
|
+
protocol="anthropic",
|
|
101
|
+
priority=10,
|
|
102
|
+
),
|
|
103
|
+
contract=_OPENCODE_GO_MUSE_CONTRACT.contract,
|
|
104
|
+
)
|
|
105
|
+
|
|
64
106
|
# ---------------------------------------------------------------------------
|
|
65
107
|
# OpenCode Go MiniMax-M3 contract
|
|
66
108
|
# ---------------------------------------------------------------------------
|
|
@@ -171,6 +213,8 @@ _OPENAI_NATIVE_CONTRACT = BuiltinProviderContract(
|
|
|
171
213
|
|
|
172
214
|
# All built-in contracts, in declaration order (used for iteration).
|
|
173
215
|
BUILTIN_CONTRACTS: tuple[BuiltinProviderContract, ...] = (
|
|
216
|
+
_OPENCODE_GO_MUSE_CONTRACT,
|
|
217
|
+
_OPENCODE_GO_MUSE_URL_COMPAT_CONTRACT,
|
|
174
218
|
_OPENCODE_GO_MINIMAX_CONTRACT,
|
|
175
219
|
_MINIMAX_NATIVE_CONTRACT,
|
|
176
220
|
_OPENCODE_GO_URL_COMPAT_CONTRACT,
|
|
@@ -97,12 +97,14 @@ class CapabilityPolicy(BaseModel):
|
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
class TranscoderFeatures(BaseModel):
|
|
100
|
-
"""Per-feature
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
100
|
+
"""Per-feature flags for Phase 6 sub-phases.
|
|
101
|
+
|
|
102
|
+
Thinking is enabled by default because it is part of the supported
|
|
103
|
+
cross-protocol reasoning path. Other optional semantic extensions remain
|
|
104
|
+
off by default. Tool calling is baseline protocol compatibility and is
|
|
105
|
+
always translated when a cross-protocol request is selected; its legacy
|
|
106
|
+
``tools`` switch is kept only so old configuration files continue to
|
|
107
|
+
parse.
|
|
106
108
|
"""
|
|
107
109
|
|
|
108
110
|
model_config = ConfigDict(extra="forbid")
|
|
@@ -123,11 +125,12 @@ class TranscoderFeatures(BaseModel):
|
|
|
123
125
|
),
|
|
124
126
|
)
|
|
125
127
|
thinking: bool = Field(
|
|
126
|
-
default=
|
|
128
|
+
default=True,
|
|
127
129
|
description=(
|
|
128
130
|
"Extended thinking / reasoning blocks. When enabled, Anthropic "
|
|
129
131
|
"thinking blocks are translated to OpenAI reasoning_content and "
|
|
130
|
-
"vice versa."
|
|
132
|
+
"vice versa. Enabled by default; set false to drop thinking "
|
|
133
|
+
"controls and content."
|
|
131
134
|
),
|
|
132
135
|
)
|
|
133
136
|
structured_outputs: bool = Field(
|
|
@@ -277,8 +280,8 @@ class TranscoderPolicy(BaseModel):
|
|
|
277
280
|
features: TranscoderFeatures = Field(
|
|
278
281
|
default_factory=TranscoderFeatures,
|
|
279
282
|
description=(
|
|
280
|
-
"Per-feature
|
|
281
|
-
"
|
|
283
|
+
"Per-feature flags for Phase 6 sub-phases. Thinking is enabled "
|
|
284
|
+
"by default; other optional features remain opt-in."
|
|
282
285
|
),
|
|
283
286
|
)
|
|
284
287
|
|
|
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
|