free-claude-code 6.2.69__tar.gz → 6.2.70__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.
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/actions/ci-environment/action.yml +5 -2
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/workflows/post-merge.yml +3 -1
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/CONTRIBUTING.md +2 -3
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/PKG-INFO +2 -2
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_progressive_startup.py +10 -1
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/pyproject.toml +1 -1
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/install.ps1 +1 -1
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/install.sh +1 -1
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_uv_policy.py +74 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/test_installers.py +3 -3
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/uv.lock +4 -102
- free_claude_code-6.2.69/.python-version +0 -1
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.gitattributes +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/dependabot.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/workflows/tests.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/workflows/validate-bug-report-version.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/workflows/version-policy.yml +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/.gitignore +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/LICENSE +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/README.md +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/admin-messaging.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/admin-page.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/browser-code-session.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/cc-model-picker.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/codex-model-picker.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/codex.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/free-claude-code-wordmark-dark.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/free-claude-code-wordmark-light.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/how-it-works.mmd +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/how-it-works.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/package-manager-uv.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/pic.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/code_support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/form_support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/provider_support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_admin_apply.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_admin_assets.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_admin_integrations.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_admin_models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_admin_providers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_claude_desktop_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_code_sessions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_connected_accounts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_integration_notices.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_jetbrains_acp_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_provider_modals.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/test_tool_schema_patterns.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/e2e/thread_diagnostics.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/check_version_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/ci.ps1 +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/ci.sh +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/install-muse.ps1 +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/publish_release.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/uninstall-muse.ps1 +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/uninstall.ps1 +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/uninstall.sh +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/update/fcc-update +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/update/fcc-update.cmd +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/scripts/validate_release.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/README.md +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/assets/vision-fcc.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/capabilities.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/features.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/child_process.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/claude_cli_matrix.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/e2e.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/http.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/local_providers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/outcomes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/report.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/report_summary.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/server.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/lib/skips.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_api_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_auth_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_cli_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_client_shapes_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_local_provider_endpoints_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_messaging_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_provider_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_tools_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/prereq/test_voice_prereq_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_api_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_auth_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_cli_package_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_client_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_codex_modes_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_config_extensibility_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_live_platform_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_local_provider_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_messaging_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_model_fallback_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_nvidia_nim_cli_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_nvidia_nim_vision_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_openrouter_free_cli_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_provider_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_runtime_ownership_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/smoke/product/test_voice_product_live.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_cache.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_routes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_security.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/admin.css +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/admin.js +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/code_sessions.css +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/code_sessions.js +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/form_controls.js +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/index.html +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/model_combobox.js +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/LICENSE-llamacpp.txt +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/LICENSE-lobe-icons.txt +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/SOURCES.md +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/agnesai.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/azure-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/bedrock-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/cerebras-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/cheaperinference.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/chutes.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/cline.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/cloudflare-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/cohere-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/deepinfra-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/deepseek-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/experiential.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/featherless-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/fireworks-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/gemini-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/githubcopilot.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/groq.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/huggingface-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/kilocode.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/kimi-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/lightning.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/llamacpp.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/llm7.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/lmstudio.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/minimax-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/mistral-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/nararoute.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/nebius.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/novita-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/nvidia-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/ollama.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/openai.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/opencode.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/openrouter.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/poolside-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/qwen-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/sambanova-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/scaleway.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/siliconcloud-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/together-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/tokenrouter.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/vercel.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/vertexai-color.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/wafer.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/wandb.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/xai.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/zai.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/providers/zenmux.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/session_layout.css +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/admin_static/session_ui.js +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/app.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/code_sessions_routes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/command_utils.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/dependencies.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/detection.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/handlers/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/handlers/classifier_response.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/handlers/messages.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/handlers/responses.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/handlers/token_count.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/markdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/model_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/optimization_handlers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/ports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/request_errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/request_ids.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/request_lifetime.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/response_streams.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/routes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/api/validation_log.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/code_sessions/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/code_sessions/models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/code_sessions/ports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/code_sessions/service.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/code_sessions/state.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/connected_accounts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/execution.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/model_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/model_metadata.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/ports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/readiness.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/routing.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/session_events.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/web_tools/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/web_tools/ports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/web_tools/request.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/application/web_tools/service.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/assets/app-icon.icns +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/assets/app-icon.ico +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/assets/app-icon.png +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/assets/app-icon.svg +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/commands.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/desktop.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/desktop_assets.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/desktop_entrypoint.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/desktop_tray.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/entrypoints.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/aider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/aider_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/catalog_http.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/claude.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/cline.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/cline_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/codex.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/common.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/dsh.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/dsh_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/grok.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/hermes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/hermes_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/muse.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/opencode.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/opencode_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/pi.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/pi_extension.ts +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/launchers/runner.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/local_http.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/managed/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/managed/claude.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/managed/diagnostics.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/managed/manager.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/managed/session.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/process_registry.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/server_socket.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/cli/uvicorn_server.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/manifest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/persistence.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/provider_manifest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/specs.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/state.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/status.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/validation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/admin/values.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/constants.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/env_files.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/env_migrations.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/loader.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/logging_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/model_refs.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/nim.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/paths.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/provider_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/provider_proxies.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/server_urls.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/config/settings.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/content.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/conversion.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/image_sources.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/native.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/native_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/request_serialization.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/request_snapshot.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/server_tool_sse.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/server_tool_types.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/sse_aggregation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/stream_contracts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/streaming/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/streaming/decoder.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/streaming/emitter.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/streaming/ledger.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/streaming/recovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/thinking.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/tokens.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/tool_results.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/tool_schema.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/tools.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/usage.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/anthropic/utils.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/async_iterators.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/async_tasks.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/data/README.md +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/data/TIKTOKEN-LICENSE +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/data/cl100k_base.tiktoken +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/diagnostics.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/failures.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/gateway_model_ids.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/history_replay.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/interprocess_lock.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/json_types.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/model_capabilities.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_chat.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/chat_request.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/events.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/ids.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/items.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/messages_request.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/messages_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/native.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/provider_input.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/provider_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/streaming/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/streaming/blocks.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/streaming/completion.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/streaming/error_mapping.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/streaming/event_builders.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/streaming/ledger.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/tokens.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/tool_adaptation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/tool_search.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_responses/tools.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/openai_tool_names.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/rate_limit.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/token_estimation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/tool_schema_patterns.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/trace.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/version.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/web_tools.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/core/windows_dpi.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/claude.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/claude_desktop_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/claude_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/codex.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/codex_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/codex_model_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/config_file.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/environment.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/jetbrains_acp_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/launch.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/harnesses/resources.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/cli_event_constants.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/command_context.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/command_dispatcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/commands.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/event_parser.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/limiter.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/managed_protocols.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/node_event_pipeline.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/node_runner.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/discord.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/discord_inbound.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/discord_io.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/factory.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/outbox.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/ports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/telegram.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/telegram_inbound.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/telegram_io.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/platforms/voice_flow.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/rendering/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/rendering/discord_markdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/rendering/markdown_tables.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/rendering/profiles.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/rendering/telegram_markdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/safe_diagnostics.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/session/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/session/managed_message_log.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/session/persistence.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/session/store.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcript/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcript/buffer.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcript/context.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcript/renderer.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcript/segments.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcript/subagents.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/transcription.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/graph.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/identity.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/manager.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/node.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/processor.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/queue.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/repository.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/runtime.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/snapshot.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/trees/transitions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/turn_intake.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/ui_updates.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/voice.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/messaging/workflow.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/admission.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/anthropic_messages/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/anthropic_messages/request_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/anthropic_messages/transport.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/base.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/cloudflare/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/cloudflare/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/credential_validation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/deepseek/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/deepseek/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/deepseek/compat.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/endpoint.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/endpoint_types.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/failure_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/gemini/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/gemini/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/auth.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/broker.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/lifecycle.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/login.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/native_cli.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/request_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/responses_events.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/sdk.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/github_copilot/types.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/google_openai/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/google_openai/provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/google_openai/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/google_openai/thought_signatures.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/groq/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/groq/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/groq/tpm.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/history_replay.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/http.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/kilo/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/kilo/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/kilo/models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/lmstudio/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/lmstudio/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/mistral/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/mistral/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/mistral/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/model_listing.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/native_tool_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/request_options.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/retry.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/tool_schema.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/nvidia_nim/voice.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/open_router/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/open_router/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_api/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_api/provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/base_url.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/behavior.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/extra_body.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/output_cap.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/profiles.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/reasoning_details.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/request_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/stream_output.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/tool_calls.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/transport.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_chat/usage.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_codex/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_codex/auth.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_codex/endpoint.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_codex/login.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_codex/provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_responses/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_responses/presentation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_responses/transport.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/openai_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/opencode/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/opencode/catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/opencode/provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/reasoning_compatibility.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/request_recovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/runtime/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/runtime/config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/runtime/discovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/runtime/factory.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/runtime/model_cache.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/runtime/runtime.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/stream_recovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/vertex/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/vertex/auth.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/vertex/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/vertex/endpoint.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/providers/vertex/models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/application.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/asgi.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/bootstrap.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/code_sessions_sqlite.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/codex_app_server.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/codex_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/codex_protocol.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/configuration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/folder_picker.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/native_folder_dialog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/provider_manager.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/retired_chat.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/web_tools/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/web_tools/client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/web_tools/constants.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/web_tools/egress.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/src/free_claude_code/runtime/web_tools/parsers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/model_fallback_support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_admin.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_admin_configuration_io.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_api.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_api_handlers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_app_lifespan_and_errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_app_version.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_auth.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_classifier_provider_compatibility.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_classifier_response.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_claude_desktop_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_code_sessions_routes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_codex_integration_routes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_dependencies.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_detection.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_execution_failure_contract.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_groq_token_limits.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_jetbrains_acp_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_managed_proxy_token.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_markdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_model_fallback.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_model_listing.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_openai_codex_compatibility.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_openai_responses.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_opencode_session_headers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_openrouter_image_errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_optimization_handlers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_ordinary_error_phases.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_request_ids.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_request_lifetime.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_request_utils.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_request_utils_filepaths_and_suggestions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_response_streams.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_routes_optimizations.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_runtime_safe_logging.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_safe_logging.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_validation_log.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_vscode_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/api/test_web_server_tools.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_code_sessions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_code_sessions_state.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_connected_accounts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_execution.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_model_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_model_metadata.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_request_conversion.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_routing.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_session_events.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/application/test_web_tools.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_aider_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_aider_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_catalog_http.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_claude_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_cli.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_cli_manager_edge_cases.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_cli_ownership.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_cline_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_codex_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_codex_model_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_config_restart_lifecycle.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_desktop.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_desktop_assets.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_dsh_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_dsh_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_entrypoints.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_grok_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_hermes_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_hermes_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_launcher_checks.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_launcher_environment.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_launcher_resources.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_launcher_workflow.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_local_http.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_managed_claude.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_managed_session_shutdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_model_catalog_decoder.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_muse_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_opencode_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_pi_extension.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_pi_launcher.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_process_registry.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_progressive_launch.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_server_shutdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/cli/test_update_wrapper.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/code_sessions_support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_admin_credential_changes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_admin_status.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_env_migrations.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_fixed_cloud_endpoints.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_logging_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/config/test_provider_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_admin_provider_manifest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_capability_map.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_feature_manifest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_import_boundaries.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_issue_form_version_validation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_issue_forms.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_local_provider_smoke.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_nvidia_nim_cli_matrix.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_offline_startup.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_packaging_contracts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_protocol_matrix.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_provider_catalog_order.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_smoke_child_process.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_smoke_config.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_smoke_tiers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_startup_import_boundaries.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/contracts/test_stream_contracts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_image_sources.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_native_messages.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_native_messages_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_native_sse_framing.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_openai_tool_names.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_request_serialization.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_response_models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_server_tool_sse.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_sse_decoder.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_stream_ledger.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_stream_repair.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_text_tools.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_tool_results.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/anthropic/test_usage.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_chat_request.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_client_tool_discovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_messages_request.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_native.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_openai_responses_models.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_provider_input.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_provider_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_reasoning_replay.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_responses_from_messages_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_tokens.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_tool_adaptation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/openai_responses/test_tool_search.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_async_iterators.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_desktop_model_ids.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_diagnostics.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_failure_protocol_mapping.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_failures.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_history_replay.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_history_switching.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_openai_chat.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_protocol_model_ownership.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_strict_sliding_window.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_token_estimation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_tool_schema_patterns.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_trace.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_version.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/core/test_windows_dpi.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/__init__.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_claude_desktop_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_claude_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_codex_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_codex_model_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_environment.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_integration_refresh.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/harnesses/test_jetbrains_acp_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/AGENTS.md +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/_pty_runner.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/fixtures/.gitattributes +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/fixtures/README.md +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/fixtures/rtk-LICENSE +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/fixtures/rtk-opencode-v1.ts +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/test_muse_windows_lifecycle.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/test_powershell_cache.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/installers/test_uninstallers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_discord_markdown.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_discord_platform.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_event_parser.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_extract_text.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_handler.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_handler_context_isolation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_handler_format.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_handler_integration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_handler_markdown_and_status_edges.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_limiter.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_message_tree_transitions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_messaging.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_messaging_factory.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_platform_outbox.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_platform_voice_flow.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_reliability.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_rendering_profiles.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_restart_reply_restore.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_robust_formatting.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_session_store_edge_cases.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_stream_transcript_contract.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_telegram.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_telegram_edge_cases.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_transcript.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_transcription.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_transcription_nim.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_tree_concurrency.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_tree_customer_regressions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_tree_ownership_concurrency.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_tree_processor.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_tree_queue.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_tree_repository.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_voice_handlers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/messaging/test_voice_services.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/provider_request_mocks.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/copilot_support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/fixtures/copilot_responses_changing_ids.json +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/request_factory.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/support.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_agnes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_anthropic_messages_transport.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_azure_openai.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_bedrock.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_cerebras.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_cheaperinference.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_chutes.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_cline_pass.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_cloudflare.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_codestral.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_cohere.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_converter.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_credential_validation.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_deepinfra.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_deepseek.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_endpoint_context_transports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_execution_failure_boundary.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_experiential.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_failure_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_featherless.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_fireworks.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_gemini.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_github_copilot_auth.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_github_copilot_broker.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_github_copilot_login.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_github_copilot_provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_github_copilot_responses_identity.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_github_copilot_sdk.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_groq.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_groq_reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_groq_tpm.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_history_corrections.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_history_transports.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_huggingface.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_kilo.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_kimi.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_kimi_code.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_lightning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_llamacpp.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_llm7.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_lmstudio.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_messages_request_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_minimax.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_mistral.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_model_discovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_model_token_limit_profiles.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nararoute.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nebius.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nim_request_clone.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_novita.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nvidia_nim.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nvidia_nim_degraded_retry.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nvidia_nim_native_tool_stream.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_nvidia_nim_request.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_ollama.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_open_router.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_api_provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_api_sampling.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_chat_output_cap.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_chat_reasoning.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_chat_stream_output.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_chat_tool_names.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_chat_transport.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_chat_usage.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_codex_auth.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_codex_provider.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_compat_5xx_retry.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_model_listing_filters.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_openai_responses_transport.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_opencode.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_parsers.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_poolside.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_provider_admission.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_provider_client_tool_discovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_provider_runtime.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_provider_transport_logging.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_qwencloud.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_qwencloud_coding.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_reasoning_capabilities.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_reasoning_compatibility.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_request_recovery_transitions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_sambanova.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_scaleway.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_sdk_stream_lifecycle.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_siliconflow.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_stream_recovery.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_stream_startup_contract.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_streaming_errors.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_subagent_interception.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_together.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_vercel.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_vertex.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_wafer.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_wandb.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_xai.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_zai.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/providers/test_zenmux.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/codex_fake_process.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_application_runtime.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_code_sessions_sqlite.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_codex_app_server.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_codex_catalog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_codex_protocol.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_config_startup.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_config_transactions.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_configuration.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_folder_picker.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_integration_startup.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_model_cache.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_native_folder_dialog.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_progressive_startup.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_provider_manager.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_retired_chat.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/runtime/test_web_tools_client.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/scripts/conftest.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/scripts/test_ci_scripts.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/scripts/test_publish_release.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/scripts/test_release_package.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/scripts/test_release_workflow.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/scripts/test_version_policy.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/test_thread_diagnostics.py +0 -0
- {free_claude_code-6.2.69 → free_claude_code-6.2.70}/tests/web_tools_support.py +0 -0
{free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/actions/ci-environment/action.yml
RENAMED
|
@@ -19,6 +19,9 @@ inputs:
|
|
|
19
19
|
default: "false"
|
|
20
20
|
|
|
21
21
|
outputs:
|
|
22
|
+
python-version:
|
|
23
|
+
description: Exact Python version required by the project
|
|
24
|
+
value: ${{ steps.identity.outputs.python-version }}
|
|
22
25
|
python-path:
|
|
23
26
|
description: Managed Python cache directory
|
|
24
27
|
value: ${{ steps.identity.outputs.python-path }}
|
|
@@ -62,8 +65,8 @@ runs:
|
|
|
62
65
|
CI_UV: ${{ inputs.uv-version }}
|
|
63
66
|
run: |
|
|
64
67
|
set -euo pipefail
|
|
65
|
-
version="$(
|
|
66
|
-
|
|
68
|
+
version="$(python -c 'import pathlib, tomllib; print(tomllib.loads(pathlib.Path("pyproject.toml").read_text(encoding="utf-8"))["project"]["requires-python"].removeprefix("=="))')"
|
|
69
|
+
[[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo 'Expected an exact requires-python pin in pyproject.toml' >&2; exit 1; }
|
|
67
70
|
cache_root="${CI_TEMP//\\//}"
|
|
68
71
|
identity="$CI_RUNNER-$CI_OS-$CI_ARCH-py-$version-uv-$CI_UV"
|
|
69
72
|
{
|
|
@@ -95,6 +95,7 @@ jobs:
|
|
|
95
95
|
fetch-depth: 0
|
|
96
96
|
|
|
97
97
|
- name: Set up CI environment
|
|
98
|
+
id: environment
|
|
98
99
|
uses: ./.github/actions/ci-environment
|
|
99
100
|
with:
|
|
100
101
|
uv-version: ${{ env.CI_UV_VERSION }}
|
|
@@ -107,6 +108,7 @@ jobs:
|
|
|
107
108
|
GH_TOKEN: ${{ github.token }}
|
|
108
109
|
RELEASE_REPOSITORY: ${{ github.repository }}
|
|
109
110
|
RELEASE_COMMIT: ${{ inputs.release_commit || github.sha }}
|
|
111
|
+
CI_PYTHON: ${{ steps.environment.outputs.python-version }}
|
|
110
112
|
run: |
|
|
111
|
-
uv run --no-project --python "$
|
|
113
|
+
uv run --no-project --python "$CI_PYTHON" python -m scripts.publish_release \
|
|
112
114
|
--repository "$RELEASE_REPOSITORY" --commit "$RELEASE_COMMIT"
|
|
@@ -11,18 +11,17 @@ Thanks for helping improve Free Claude Code. Keep changes focused, test the beha
|
|
|
11
11
|
|
|
12
12
|
## Pull Request Titles
|
|
13
13
|
|
|
14
|
-
Changes to `assets/`, `scripts/`, `src/`,
|
|
14
|
+
Changes to `assets/`, `scripts/`, `src/`, `pyproject.toml`, or `uv.lock` require a title starting with `patch: `, `minor: `, or `major: ` followed by a description. Use exactly one space after the colon.
|
|
15
15
|
|
|
16
16
|
PRs without changes to those paths must not use a release prefix. Do not edit version numbers. Publishing calculates the version after merge, creates its Git tag, and publishes to PyPI and GitHub Releases.
|
|
17
17
|
|
|
18
18
|
## Development Setup
|
|
19
19
|
|
|
20
|
-
Install [uv](https://docs.astral.sh/uv/)
|
|
20
|
+
Install [uv](https://docs.astral.sh/uv/), then run directly from the checkout. uv automatically installs the Python version required by the project.
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
git clone https://github.com/Alishahryar1/free-claude-code.git
|
|
24
24
|
cd free-claude-code
|
|
25
|
-
uv python install 3.14.0
|
|
26
25
|
uv run fcc-server
|
|
27
26
|
```
|
|
28
27
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: free-claude-code
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.70
|
|
4
4
|
Summary: Local proxy connecting coding agents to OpenAI-compatible AI providers
|
|
5
5
|
License-Expression: AGPL-3.0-only
|
|
6
6
|
License-File: LICENSE
|
|
7
|
-
Requires-Python:
|
|
7
|
+
Requires-Python: ==3.14.7
|
|
8
8
|
Requires-Dist: aiohttp>=3.14.3
|
|
9
9
|
Requires-Dist: anyio>=4.15.1
|
|
10
10
|
Requires-Dist: discord-py>=2.7.1
|
|
@@ -73,7 +73,16 @@ def test_codex_connect_waits_for_catalog_and_recovers_from_publication_error(
|
|
|
73
73
|
route.fulfill(json=data)
|
|
74
74
|
|
|
75
75
|
page.route("**/admin/api/status", status)
|
|
76
|
-
|
|
76
|
+
with (
|
|
77
|
+
page.expect_response(
|
|
78
|
+
"**/admin/api/integrations/claude-vscode"
|
|
79
|
+
) as claude_status,
|
|
80
|
+
page.expect_response("**/admin/api/integrations/codex") as codex_status,
|
|
81
|
+
):
|
|
82
|
+
page.goto(f"{admin_base_url}/admin/integrations")
|
|
83
|
+
claude_status.value.finished()
|
|
84
|
+
codex_status.value.finished()
|
|
85
|
+
page.wait_for_function("state.startup?.startup?.catalog_file === 'starting'")
|
|
77
86
|
connect = page.locator("#openCodexIntegration")
|
|
78
87
|
expect(connect).to_be_disabled()
|
|
79
88
|
expect(connect).to_have_attribute("aria-busy", "true")
|
|
@@ -9,7 +9,7 @@ description = "Local proxy connecting coding agents to OpenAI-compatible AI prov
|
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "AGPL-3.0-only"
|
|
11
11
|
license-files = ["LICENSE"]
|
|
12
|
-
requires-python = "
|
|
12
|
+
requires-python = "==3.14.7"
|
|
13
13
|
dependencies = [
|
|
14
14
|
"anyio>=4.15.1",
|
|
15
15
|
"fastapi[standard]>=0.141.1",
|
|
@@ -13,7 +13,7 @@ $ErrorActionPreference = "Stop"
|
|
|
13
13
|
$ProgressPreference = "SilentlyContinue"
|
|
14
14
|
|
|
15
15
|
# Windows on ARM emulates x64, whose Python package ecosystem has broader wheel support.
|
|
16
|
-
$PythonRequest = "cpython-3.14.
|
|
16
|
+
$PythonRequest = "cpython-3.14.7-windows-x86_64-none"
|
|
17
17
|
$MinUvVersion = "0.12.13"
|
|
18
18
|
$ClaudeInstallUrl = "https://claude.ai/install.ps1"
|
|
19
19
|
$CodexInstallUrl = "https://chatgpt.com/codex/install.ps1"
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
import shutil
|
|
4
|
+
import subprocess
|
|
5
|
+
import sys
|
|
1
6
|
import tomllib
|
|
2
7
|
from pathlib import Path
|
|
3
8
|
|
|
@@ -18,6 +23,75 @@ REQUIRED_TEST_RUNNERS = {
|
|
|
18
23
|
}
|
|
19
24
|
|
|
20
25
|
|
|
26
|
+
@pytest.mark.parametrize(
|
|
27
|
+
"requirement, valid",
|
|
28
|
+
[
|
|
29
|
+
('"==3.14.7"', True),
|
|
30
|
+
("'==3.14.7'", True),
|
|
31
|
+
('"==3.14.7" # Python runtime', True),
|
|
32
|
+
('">=3.14.7"', False),
|
|
33
|
+
],
|
|
34
|
+
)
|
|
35
|
+
def test_ci_python_identity_parses_toml(
|
|
36
|
+
tmp_path: Path, requirement: str, valid: bool
|
|
37
|
+
) -> None:
|
|
38
|
+
setup = yaml.safe_load(CI_SETUP.read_text(encoding="utf-8"))
|
|
39
|
+
step = next(step for step in setup["runs"]["steps"] if step.get("id") == "identity")
|
|
40
|
+
(tmp_path / "pyproject.toml").write_text(
|
|
41
|
+
f"[project]\nrequires-python = {requirement}\n", encoding="utf-8"
|
|
42
|
+
)
|
|
43
|
+
bash = shutil.which("bash")
|
|
44
|
+
if sys.platform == "win32":
|
|
45
|
+
git = shutil.which("git")
|
|
46
|
+
assert git is not None
|
|
47
|
+
bash = str(Path(git).resolve().parent.parent / "bin" / "bash.exe")
|
|
48
|
+
assert bash is not None
|
|
49
|
+
env = {
|
|
50
|
+
**os.environ,
|
|
51
|
+
"PATH": str(Path(sys.executable).parent) + os.pathsep + os.environ["PATH"],
|
|
52
|
+
"CI_TEMP": tmp_path.as_posix(),
|
|
53
|
+
"CI_RUNNER": "test-runner",
|
|
54
|
+
"CI_OS": "test-os",
|
|
55
|
+
"CI_ARCH": "X64",
|
|
56
|
+
"CI_UV": UV_MINIMUM,
|
|
57
|
+
"GITHUB_ENV": "github-env",
|
|
58
|
+
"GITHUB_OUTPUT": "github-output",
|
|
59
|
+
}
|
|
60
|
+
result = subprocess.run(
|
|
61
|
+
[bash, "-c", step["run"]],
|
|
62
|
+
cwd=tmp_path,
|
|
63
|
+
env=env,
|
|
64
|
+
capture_output=True,
|
|
65
|
+
text=True,
|
|
66
|
+
timeout=30,
|
|
67
|
+
)
|
|
68
|
+
if valid:
|
|
69
|
+
assert result.returncode == 0, result.stderr
|
|
70
|
+
output = (tmp_path / "github-output").read_text(encoding="utf-8")
|
|
71
|
+
assert "python-version=3.14.7\n" in output
|
|
72
|
+
assert f"py-3.14.7-uv-{UV_MINIMUM}" in output
|
|
73
|
+
else:
|
|
74
|
+
assert result.returncode != 0
|
|
75
|
+
assert not (tmp_path / "github-output").exists()
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_installer_python_requests_match_package_requirement() -> None:
|
|
79
|
+
project = tomllib.loads(Path("pyproject.toml").read_text(encoding="utf-8"))
|
|
80
|
+
requirement = project["project"]["requires-python"]
|
|
81
|
+
match = re.fullmatch(r"==([0-9]+\.[0-9]+\.[0-9]+)", requirement)
|
|
82
|
+
assert match is not None
|
|
83
|
+
version = match[1]
|
|
84
|
+
shell = Path("scripts/install.sh").read_text(encoding="utf-8")
|
|
85
|
+
powershell = Path("scripts/install.ps1").read_text(encoding="utf-8")
|
|
86
|
+
shell_pin = re.search(r'^PYTHON_VERSION="([^"]+)"', shell, re.MULTILINE)
|
|
87
|
+
windows_pin = re.search(r'^\$PythonRequest = "([^"]+)"', powershell, re.MULTILINE)
|
|
88
|
+
assert shell_pin is not None and windows_pin is not None
|
|
89
|
+
assert shell_pin[1] == version
|
|
90
|
+
assert windows_pin[1] == f"cpython-{version}-windows-x86_64-none"
|
|
91
|
+
lock = tomllib.loads(Path("uv.lock").read_text(encoding="utf-8"))
|
|
92
|
+
assert lock["requires-python"] == requirement
|
|
93
|
+
|
|
94
|
+
|
|
21
95
|
def _assert_required_test_matrix(workflow: dict, suite: str) -> None:
|
|
22
96
|
job = workflow["jobs"][suite]
|
|
23
97
|
assert job["name"] == f"{suite} (${{{{ matrix.os }}}})"
|
|
@@ -838,7 +838,7 @@ def test_install_sh_fresh_install_is_verified(posix_harness: PosixHarness) -> No
|
|
|
838
838
|
assert any(
|
|
839
839
|
call.startswith(
|
|
840
840
|
"uv:tool install --force --refresh-package free-claude-code "
|
|
841
|
-
"--python 3.14.
|
|
841
|
+
"--python 3.14.7 free-claude-code"
|
|
842
842
|
)
|
|
843
843
|
for call in calls
|
|
844
844
|
)
|
|
@@ -3186,7 +3186,7 @@ def test_install_ps1_fresh_install_is_verified(
|
|
|
3186
3186
|
assert any(
|
|
3187
3187
|
call.startswith(
|
|
3188
3188
|
"uv:tool install --force --refresh-package free-claude-code "
|
|
3189
|
-
"--python cpython-3.14.
|
|
3189
|
+
"--python cpython-3.14.7-windows-x86_64-none "
|
|
3190
3190
|
"free-claude-code"
|
|
3191
3191
|
)
|
|
3192
3192
|
for call in calls
|
|
@@ -4237,7 +4237,7 @@ def test_installers_use_native_clients_and_single_python_selection() -> None:
|
|
|
4237
4237
|
def test_install_ps1_uses_x64_python_for_windows_arm_compatibility() -> None:
|
|
4238
4238
|
powershell = (_repo_root() / "scripts" / "install.ps1").read_text(encoding="utf-8")
|
|
4239
4239
|
|
|
4240
|
-
assert '$PythonRequest = "cpython-3.14.
|
|
4240
|
+
assert '$PythonRequest = "cpython-3.14.7-windows-x86_64-none"' in powershell
|
|
4241
4241
|
|
|
4242
4242
|
|
|
4243
4243
|
@pytest.mark.parametrize("powershell", _powershells())
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
version = 1
|
|
2
2
|
revision = 3
|
|
3
|
-
requires-python = "
|
|
3
|
+
requires-python = "==3.14.7"
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
6
|
name = "accelerate"
|
|
@@ -123,7 +123,7 @@ version = "4.15.1"
|
|
|
123
123
|
source = { registry = "https://pypi.org/simple" }
|
|
124
124
|
dependencies = [
|
|
125
125
|
{ name = "idna" },
|
|
126
|
-
{ name = "typing-extensions"
|
|
126
|
+
{ name = "typing-extensions" },
|
|
127
127
|
]
|
|
128
128
|
sdist = { url = "https://files.pythonhosted.org/packages/a9/d2/f4d173e22df740bc37b1db102b386ba719b66e95b0f0d751f556b387e6d2/anyio-4.15.1.tar.gz", hash = "sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94", size = 276966, upload-time = "2026-09-05T10:42:39.44Z" }
|
|
129
129
|
wheels = [
|
|
@@ -804,26 +804,6 @@ wheels = [
|
|
|
804
804
|
{ url = "https://files.pythonhosted.org/packages/a3/e9/b88bbf5b29970cb84172dc2c32aa3e5e579ceb94c808e81c826454138850/greenlet-3.5.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d246c0db9a2513cd45f019ba178ea4d4d4705bd210ee465e2c15d76a1ab13874", size = 1637320, upload-time = "2026-08-10T14:15:09.317Z" },
|
|
805
805
|
{ url = "https://files.pythonhosted.org/packages/6d/8c/7631ed29cc6f0392f11830076e172ce4885e70b0bc2c1bce1731176d4b4e/greenlet-3.5.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:72507285b5caa1d17904a3f7c322ca780823a54170a0e04ec3f37bcc60d4db71", size = 1697412, upload-time = "2026-08-10T13:40:34.924Z" },
|
|
806
806
|
{ url = "https://files.pythonhosted.org/packages/da/0f/f7dd935f9c4cb1be49098770587f54d8a78518e55c89bce86c4fb4109057/greenlet-3.5.5-cp314-cp314t-win_amd64.whl", hash = "sha256:7805655781fb8f28a55d05fe57ed61f5f10f1892fb587673e3bb5264f28041f0", size = 331514, upload-time = "2026-08-10T13:29:20.611Z" },
|
|
807
|
-
{ url = "https://files.pythonhosted.org/packages/b7/e5/681b01f8fbc1b55232822f99e8f8afeb78a55a7c76a7bf9dbdc7ccb03a6d/greenlet-3.5.5-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:c0db80fcd5b8aece93f66c64f78a786bbb6b96c5fe63ef5a5a4581ecf8bab206", size = 295975, upload-time = "2026-08-10T13:28:45.985Z" },
|
|
808
|
-
{ url = "https://files.pythonhosted.org/packages/11/f2/69b488cd9e7267bf4b0fe8cdebf25d8d6df680d21bdf41150d23e23d6652/greenlet-3.5.5-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b241c32f912ada659808d68e308c568baf577eebf757d15471472de0c18cfad", size = 666823, upload-time = "2026-08-10T14:14:40.222Z" },
|
|
809
|
-
{ url = "https://files.pythonhosted.org/packages/84/d4/d5bc2fdebbdda0c94555925ba79948b8395d75a7f6a36cc85dce5bab9f11/greenlet-3.5.5-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ef6a08349401d8eaf3cb12688ac8557de95788556b8631ef17555a4a173022c0", size = 677613, upload-time = "2026-08-10T14:27:31.543Z" },
|
|
810
|
-
{ url = "https://files.pythonhosted.org/packages/65/53/4e13642efc4d7ad6554ecb2242a5be42666b2e1a067323e88dfc0124a04b/greenlet-3.5.5-cp315-cp315-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37faa97daccb6d9f4c2141ce3118d023c3c5506864a7d8bdf726f665018c1f76", size = 681436, upload-time = "2026-08-10T14:30:14.839Z" },
|
|
811
|
-
{ url = "https://files.pythonhosted.org/packages/bd/93/542d8a3a90f3b35c6ad8bf7e56a03010287f2cafa289a5b7985b5207db39/greenlet-3.5.5-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f2e3d061b8e13aec2f0441689b3c71b244a20e5d274a52cb0f7e31bd1d139552", size = 675930, upload-time = "2026-08-10T13:40:54.205Z" },
|
|
812
|
-
{ url = "https://files.pythonhosted.org/packages/cd/32/188447c9a468d6977d2989397226b0c6b65ab6f4cf943f931643328512fc/greenlet-3.5.5-cp315-cp315-manylinux_2_39_riscv64.whl", hash = "sha256:b18007dc2473a7942fd157366b55f01da6fed7ce85318591005b419e0a439474", size = 487404, upload-time = "2026-08-10T14:30:08.903Z" },
|
|
813
|
-
{ url = "https://files.pythonhosted.org/packages/52/b5/89c9f2e8460d71101037d47a1feed11928615a5edd42370be290e0657eeb/greenlet-3.5.5-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:9ab5f5b93655e77fe0d6c2dfd22b5eac751bb1f876d8ec21761b7c1fb9266007", size = 1633878, upload-time = "2026-08-10T14:15:10.693Z" },
|
|
814
|
-
{ url = "https://files.pythonhosted.org/packages/b8/60/297de93f3b02ac78a5e04d32bb8bbe3080f4a73d8ed95016561463b70618/greenlet-3.5.5-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:f0e5a21bd4452a88cf032fc43c4a5b307ab1380eacb63b5988f9c0317885e773", size = 1696597, upload-time = "2026-08-10T13:40:36.252Z" },
|
|
815
|
-
{ url = "https://files.pythonhosted.org/packages/18/25/54c6eaff4f337fb670215e89eb2d00d9499487b658e709d4b477be4a342e/greenlet-3.5.5-cp315-cp315-win_amd64.whl", hash = "sha256:469dbb0a78625642f4a626cfd0c6e8bccc0385b5e49189b6308bbe849ec88a8e", size = 327700, upload-time = "2026-08-10T13:28:06.752Z" },
|
|
816
|
-
{ url = "https://files.pythonhosted.org/packages/67/67/857e88a36301caa0e029870132c2478bd55d896630321432afab03a3115f/greenlet-3.5.5-cp315-cp315-win_arm64.whl", hash = "sha256:2d57406c3efd32d7a81e17a674314e8bd00792cdab49ea3228a49aa1bfb2e769", size = 311750, upload-time = "2026-08-10T13:34:08.815Z" },
|
|
817
|
-
{ url = "https://files.pythonhosted.org/packages/10/e2/3144c0a116067ac1e30457b0139a94d60d1d36a86e015de68e9ac87cb3bc/greenlet-3.5.5-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:68184dfcf50ccaa8e864770fe0633a7e27250ea9329f8192ef47ee9ecfd78e1c", size = 306387, upload-time = "2026-08-10T13:27:00.897Z" },
|
|
818
|
-
{ url = "https://files.pythonhosted.org/packages/5c/a1/cb4223a7e9b9f43b8807e8eb212358bfe2dfaa174a9ea2889eb1714dcba2/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ec0dc0e59dc9c61af5c47348365ccbbd7addfafe0a93b00336ff3da2907bdc6", size = 676472, upload-time = "2026-08-10T14:14:41.417Z" },
|
|
819
|
-
{ url = "https://files.pythonhosted.org/packages/9e/cd/a154b4498e5d8f12ada291cfb3b8d596eadde2177f5bf09a9be699d2a446/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e604f58e35833fc46ef20302bcb314dddbfd3fcf33a4f936216d51dd678d63ae", size = 684238, upload-time = "2026-08-10T14:27:32.946Z" },
|
|
820
|
-
{ url = "https://files.pythonhosted.org/packages/ce/f4/e450a68a152f819491d8c7df6a8254e761d87e6a78759268961f8c5bd4dd/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2888a3a38bc5ee5bb6c438372197152e815837e4fab7ed7a1f86ef18ffd58ad1", size = 686022, upload-time = "2026-08-10T14:30:15.96Z" },
|
|
821
|
-
{ url = "https://files.pythonhosted.org/packages/bf/bb/b0031d260c2968a3c87deebc51d80c64e499377f993aafe06ee3b7488cc2/greenlet-3.5.5-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:40239b5384f96da3963585cc6d7eaa9b56f8ae67e8d92cc82dd9e202fc847de3", size = 681246, upload-time = "2026-08-10T13:40:55.402Z" },
|
|
822
|
-
{ url = "https://files.pythonhosted.org/packages/18/23/17e63d6bf3b9c9b9dbea981b7f643a71f79603bdfb4f1c3a9cf353e22aed/greenlet-3.5.5-cp315-cp315t-manylinux_2_39_riscv64.whl", hash = "sha256:1e8d9391fe77f15649589a907cef972dbbd6352ef7ff7dc0492f658c0c26495f", size = 516951, upload-time = "2026-08-10T14:30:10.907Z" },
|
|
823
|
-
{ url = "https://files.pythonhosted.org/packages/9a/07/da554b71ab88e649da146e1065d86a48a5c5d92e50ab74ef41b504aa7f56/greenlet-3.5.5-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:a1eaccf5c3a1d3e46dead602c72e6836731e8e245c9de6a27764567b6b62d4c0", size = 1642735, upload-time = "2026-08-10T14:15:11.92Z" },
|
|
824
|
-
{ url = "https://files.pythonhosted.org/packages/78/76/26a3782a051677668af9d92beaa47cd87ba9dd5072f762961144a03dd4c6/greenlet-3.5.5-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:19e4e026fe20691f333b8eb1a3bc9625eceba8c3f9d62ec5a6f8581afbc6b5a5", size = 1700925, upload-time = "2026-08-10T13:40:37.656Z" },
|
|
825
|
-
{ url = "https://files.pythonhosted.org/packages/28/d9/fe7baf4190c2ae71f267efb9de21b3172bb35bc0ed1ef53dd6027d658e33/greenlet-3.5.5-cp315-cp315t-win_amd64.whl", hash = "sha256:712aee154f648bde84634654bb38bb78c69ac640c37a45c9effed800735049d8", size = 331829, upload-time = "2026-08-10T13:26:48.851Z" },
|
|
826
|
-
{ url = "https://files.pythonhosted.org/packages/df/af/419a4e383bd600858a9b67e9b280a60fdc383ee3f2fe5b6c0c1ef04e74d1/greenlet-3.5.5-cp315-cp315t-win_arm64.whl", hash = "sha256:7f049911ee81a16a03c33d5450d8d5867d27f596ca5fb201b86f4524e874468b", size = 315093, upload-time = "2026-08-10T13:29:34.949Z" },
|
|
827
807
|
]
|
|
828
808
|
|
|
829
809
|
[[package]]
|
|
@@ -845,16 +825,6 @@ wheels = [
|
|
|
845
825
|
{ url = "https://files.pythonhosted.org/packages/de/c4/3e1c3d6155c16b8737cc31d5b477d6cf1fc7cdd10d58320cf0ec9b446f42/grpcio-1.84.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c5559b492007dc09b4de9b95dab05f0b5e53547aad230cf07e46c7dd017a3be5", size = 8123299, upload-time = "2026-09-14T06:58:54.332Z" },
|
|
846
826
|
{ url = "https://files.pythonhosted.org/packages/56/fe/f4864de5b815e5ba18858771f99381a398fac14117f89ef5291ed43d3c4e/grpcio-1.84.0-cp314-cp314-win32.whl", hash = "sha256:2c024da73b296f040b8360e60bd73a659b230093684a438da0e1260f34cc724e", size = 4562560, upload-time = "2026-09-14T06:58:56.894Z" },
|
|
847
827
|
{ url = "https://files.pythonhosted.org/packages/44/03/640811d4d8c84f5e603995c5a9bab725223aa472cad9ca4286c3bbf1c3e3/grpcio-1.84.0-cp314-cp314-win_amd64.whl", hash = "sha256:800b7e00d92553313c0463c200087930aa78678ec1d528193aeb50906f55989b", size = 5394092, upload-time = "2026-09-14T06:58:59.61Z" },
|
|
848
|
-
{ url = "https://files.pythonhosted.org/packages/4a/1a/9e3d2c9f005f680f03308fa894b1db91d4ab3f0fe65ff630c69561e91e95/grpcio-1.84.0-cp315-cp315-linux_armv7l.whl", hash = "sha256:47ecf0d9b81d981f07b61bd89eced9d2582f5eaacc3aaa36ad27f81aef70a27f", size = 6428252, upload-time = "2026-09-14T06:59:02.597Z" },
|
|
849
|
-
{ url = "https://files.pythonhosted.org/packages/77/34/0bc9f52ebf091311651eeab3a452fb557985604a3088cb5406f4d6df85d3/grpcio-1.84.0-cp315-cp315-macosx_10_15_universal2.whl", hash = "sha256:61386101ecaa096b694d0dd278caf99a56aeec78440cc17e918eef0b50f2d567", size = 12359488, upload-time = "2026-09-14T06:59:05.646Z" },
|
|
850
|
-
{ url = "https://files.pythonhosted.org/packages/93/0e/c31052712f241cb6ecae9c226fabd519b7f8c64a7a40bac27e9ca0405b78/grpcio-1.84.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f6d178ba6dc8e82976c184b65fddde172d054c17237993a3e083efe4f134d55b", size = 7019339, upload-time = "2026-09-14T06:59:08.76Z" },
|
|
851
|
-
{ url = "https://files.pythonhosted.org/packages/55/b9/b9b33ea4f1eb4cad28833cade604febf357385b5ebb0c9c7562d020e167a/grpcio-1.84.0-cp315-cp315-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:15bb76489e337fc492685c9758e2fd4d4ab516b901ad830dc5a91987decf00be", size = 7107974, upload-time = "2026-09-14T06:59:11.568Z" },
|
|
852
|
-
{ url = "https://files.pythonhosted.org/packages/0e/9e/799d4c45db91bbdcd8c54b3982932dbcf3d059f7ce67dca3e8540faa1ece/grpcio-1.84.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82da34ae4f639c73ac46e521e00c0a49bf86f717b9fb1f405f133e98731e38dc", size = 7200036, upload-time = "2026-09-14T06:59:14.401Z" },
|
|
853
|
-
{ url = "https://files.pythonhosted.org/packages/45/dc/dcfdd13ada41aff9098f0c2c6f260eb7debbc88b84b7e5fcbd085165427d/grpcio-1.84.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:9b73836ba0e16fcbb57c31cf6cbc2907c8d8c790b83679df454b74bd15e0be04", size = 7742281, upload-time = "2026-09-14T06:59:17.348Z" },
|
|
854
|
-
{ url = "https://files.pythonhosted.org/packages/55/31/75eab2ec77b80804bc5e21cec99b57598e726fca6484cd3e8920a97639d5/grpcio-1.84.0-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:42959bd50dd660ffc3f2a9bec15a6da4f9aaa0dda555d59ff2d2e80b908456a8", size = 8113629, upload-time = "2026-09-14T06:59:20.584Z" },
|
|
855
|
-
{ url = "https://files.pythonhosted.org/packages/34/f0/fdcf6bdc1df9ca11679a1187bef8e6b81df31a2baae69497e17344f05ea3/grpcio-1.84.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:659728f20fc7a0933ed7b1945435e31014b97ab8a5a7edcbaa70da4794aeb191", size = 8152972, upload-time = "2026-09-14T06:59:24.523Z" },
|
|
856
|
-
{ url = "https://files.pythonhosted.org/packages/5c/cf/6720e720bfa80fcb1ace873f66724eb3c8b03bba2fa078a30c12cab3212e/grpcio-1.84.0-cp315-cp315-win32.whl", hash = "sha256:edb6f87fc60ff438557291501b3e16c7a77c3b01a52d782cf276dccc7c5dd89c", size = 4561981, upload-time = "2026-09-14T06:59:27.275Z" },
|
|
857
|
-
{ url = "https://files.pythonhosted.org/packages/7f/b9/69d8a709df225bc2e06e028e9465166b174c24b3da07cc72d9a5ddc63194/grpcio-1.84.0-cp315-cp315-win_amd64.whl", hash = "sha256:4119efa6519871719ad81f33bc95ab87857dcb1c5801f30a6e592f2c41164169", size = 5394757, upload-time = "2026-09-14T06:59:30.118Z" },
|
|
858
828
|
]
|
|
859
829
|
|
|
860
830
|
[[package]]
|
|
@@ -1598,19 +1568,6 @@ wheels = [
|
|
|
1598
1568
|
{ url = "https://files.pythonhosted.org/packages/23/26/fcb2f6e37175b04f53570b59937867e2b80ee1685e744023153028fc14f9/pillow-12.3.0-cp314-cp314t-win32.whl", hash = "sha256:4b0a7fe987b14c31ebda6083f74f22b561fd3739bc0ac51e019622e3d72668c7", size = 6474125, upload-time = "2026-07-01T11:55:30.956Z" },
|
|
1599
1569
|
{ url = "https://files.pythonhosted.org/packages/90/de/3634abee5f1c9e13c56787b7d5517b0ba8d6de51700b95578cf338349c9f/pillow-12.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:962864dc93511324d51ddbb5b9f8731bf71675b93ca612a07441896f4688fb8c", size = 7242939, upload-time = "2026-07-01T11:55:34.044Z" },
|
|
1600
1570
|
{ url = "https://files.pythonhosted.org/packages/ce/2a/fd13f8eb24de5714a6eb444a3d67e2842c6c576e159a43793adf23051351/pillow-12.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45", size = 2567506, upload-time = "2026-07-01T11:55:35.988Z" },
|
|
1601
|
-
{ url = "https://files.pythonhosted.org/packages/5d/dc/8fdce34ec725a33c81c6ba122b904d6b9024e50ea9ac7bede62fab54506c/pillow-12.3.0-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0feb2e9d6ad6c9e3c06effe9d00f3f1e618a6643273576b016f591e9315a7139", size = 4162063, upload-time = "2026-07-01T11:55:37.941Z" },
|
|
1602
|
-
{ url = "https://files.pythonhosted.org/packages/76/66/2044b9a63d3b84ff048228dfcb7cd9bf0df983e8470971bf7d4c57b693de/pillow-12.3.0-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:9e881fca225083806662a5c43d627d215f258ff43c890f831966c7d7ba9c7402", size = 4255549, upload-time = "2026-07-01T11:55:40.022Z" },
|
|
1603
|
-
{ url = "https://files.pythonhosted.org/packages/52/7e/1f67e6f4ece6b582ee4b539decbcc9f848dc245a93ed8cd7338bafef72f1/pillow-12.3.0-cp315-cp315-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:4998562bf62a445225f22e07c896bb04b35b1b1f2eb6d760584c9c51d7a5f78c", size = 3696331, upload-time = "2026-07-01T11:55:41.98Z" },
|
|
1604
|
-
{ url = "https://files.pythonhosted.org/packages/12/40/d306fc2c8e4d45d7f175c77edca7063be7b86fe7fe6e68f4353bf71d808c/pillow-12.3.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:dc624f6bc473dacdf7ef7eb8678d0d08edf15cd94fad6ae5c7d6cc67a4e4902f", size = 5350370, upload-time = "2026-07-01T11:55:44.028Z" },
|
|
1605
|
-
{ url = "https://files.pythonhosted.org/packages/dd/44/668fb1437e8ce420f62d6106eb66e44a5971602a4d794615bdf79315d82d/pillow-12.3.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:71d6097b330eea8fd15097780c8e89cb1a8ce7838669f48c5bacd6f663dd4701", size = 4780147, upload-time = "2026-07-01T11:55:46.073Z" },
|
|
1606
|
-
{ url = "https://files.pythonhosted.org/packages/54/76/a09cc3ccc8d773a7283d34c38bec1708f9e3cc932093cbc4c5e71ac4060b/pillow-12.3.0-cp315-cp315-win32.whl", hash = "sha256:57b3d78c95ba9059768b10e28b813002261d3f3dfc55cc48b0c988f625175827", size = 6467375, upload-time = "2026-07-01T11:55:57.769Z" },
|
|
1607
|
-
{ url = "https://files.pythonhosted.org/packages/3e/03/1846c49ba3b1d5550392a4bbd06d6fb4578e1cd91a803198b5c90f5f7d53/pillow-12.3.0-cp315-cp315-win_amd64.whl", hash = "sha256:fa4ecea169a355be7a3ade2c783e2ed12f0e40d2c5621cda8b3297faf7fbb9f5", size = 7237048, upload-time = "2026-07-01T11:55:59.975Z" },
|
|
1608
|
-
{ url = "https://files.pythonhosted.org/packages/fb/bb/89f35dcc79610423f9f195504d7def7f0d1416a711541b42867e25fe3412/pillow-12.3.0-cp315-cp315-win_arm64.whl", hash = "sha256:877c3f311ff35410f690861c4409e7ccbf0cd2f878e50628a28e5a0bb689e658", size = 2566006, upload-time = "2026-07-01T11:56:02.143Z" },
|
|
1609
|
-
{ url = "https://files.pythonhosted.org/packages/30/88/707027ba09942dfa2c28759b5c222d769290a41c6d20ea60ec250801941f/pillow-12.3.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:e9871b1ffbfa9656b60aeee92ed5136a5742696006fa322b29ea3d8da0ecc9cf", size = 5352509, upload-time = "2026-07-01T11:56:04.2Z" },
|
|
1610
|
-
{ url = "https://files.pythonhosted.org/packages/b0/6d/00352fa25332c2569cd387851f568cc5a4b75a9adbfb37ac4fbce4c02eec/pillow-12.3.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:53aa02d20d10c3d814d536aa4e5ac9b84ca0ff5a88377963b085ad6822f93e64", size = 4783167, upload-time = "2026-07-01T11:56:06.631Z" },
|
|
1611
|
-
{ url = "https://files.pythonhosted.org/packages/18/f0/a5595c1e8c3ae44b9828cb2f0fa8155e5095ef04d6327b8f61cf44a3df85/pillow-12.3.0-cp315-cp315t-win32.whl", hash = "sha256:1657923d2d45afb66526e5b933e5b3052e6bdea196c90d3abb2424e18c77dae8", size = 6474384, upload-time = "2026-07-01T11:56:18.855Z" },
|
|
1612
|
-
{ url = "https://files.pythonhosted.org/packages/e4/04/62bcd9f844984c5938d3b05264a61d797a29d3e0812341a8204af70bbdee/pillow-12.3.0-cp315-cp315t-win_amd64.whl", hash = "sha256:8cd2f7bdda092d99c9fc2fb7391354f306d01443d22785d0cbfafa2e2c8bb418", size = 7243537, upload-time = "2026-07-01T11:56:21.214Z" },
|
|
1613
|
-
{ url = "https://files.pythonhosted.org/packages/3d/68/1f3066acedf37673694a7141381d8f811ae97f30d34413d236abe7d489f1/pillow-12.3.0-cp315-cp315t-win_arm64.whl", hash = "sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59", size = 2567491, upload-time = "2026-07-01T11:56:23.506Z" },
|
|
1614
1571
|
]
|
|
1615
1572
|
|
|
1616
1573
|
[[package]]
|
|
@@ -1887,8 +1844,6 @@ sdist = { url = "https://files.pythonhosted.org/packages/b4/b1/729f7458a63758bd2
|
|
|
1887
1844
|
wheels = [
|
|
1888
1845
|
{ url = "https://files.pythonhosted.org/packages/bd/8a/cfa4f56939d554dbb342ec6e5226a441e2f552bc2002a0ddf7705bb11bef/pyobjc_core-12.2.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:2b8fc0531c27277325e113ac00b8a72a82e6145f0a88175b9425d8de814ff69a", size = 6429289, upload-time = "2026-06-19T16:05:02.191Z" },
|
|
1889
1846
|
{ url = "https://files.pythonhosted.org/packages/42/74/446c89bc18103aaa4a00d1fb85ff8acace9a0dc3f362d9678ebf7571e275/pyobjc_core-12.2.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9bef500f979e22d54f9da3aaebf6a48f873234b324858bd69256055a318955c7", size = 6690181, upload-time = "2026-06-19T16:05:06.201Z" },
|
|
1890
|
-
{ url = "https://files.pythonhosted.org/packages/99/c7/0121ee4c616af07ad2de8cd1a286f6978dc9a227eb58b7c2e875cb68a1df/pyobjc_core-12.2.1-cp315-cp315-macosx_10_15_universal2.whl", hash = "sha256:047c226eeb58a2993ace5e8904e71cc9426ee20d064c617f8fbf32717d37093e", size = 6487078, upload-time = "2026-06-19T16:05:10.093Z" },
|
|
1891
|
-
{ url = "https://files.pythonhosted.org/packages/b5/a8/cb9fcc150f97d0bf22a2028f88b24cc35949beb1bcc7b8bc5c17d4401677/pyobjc_core-12.2.1-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:1188613805336270279570467e4455b74cb6c0f60913ac74c917ee1c37cfaecb", size = 6733064, upload-time = "2026-06-19T16:05:14.313Z" },
|
|
1892
1847
|
]
|
|
1893
1848
|
|
|
1894
1849
|
[[package]]
|
|
@@ -1902,8 +1857,6 @@ sdist = { url = "https://files.pythonhosted.org/packages/51/34/fbe38a204643aa4e1
|
|
|
1902
1857
|
wheels = [
|
|
1903
1858
|
{ url = "https://files.pythonhosted.org/packages/ec/c8/b90baa8f3592eded79b4be98fb59d2b8dc16b62361e34292bd95806ebd9f/pyobjc_framework_cocoa-12.2.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:b386c324d64ae565c1f6b7dfb77be68f640a1c7c23caa6966ab661131f519561", size = 388357, upload-time = "2026-06-19T16:07:43.364Z" },
|
|
1904
1859
|
{ url = "https://files.pythonhosted.org/packages/98/d8/64a94651b9294702d55e748d94de30e25bc59d0784526be7643f4467eccd/pyobjc_framework_cocoa-12.2.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a6c584e2af0813cb2f6103b184e632665a26f58c1bd5b08ffd6e95a19c617f7b", size = 392404, upload-time = "2026-06-19T16:07:44.955Z" },
|
|
1905
|
-
{ url = "https://files.pythonhosted.org/packages/5c/cc/26e8a7bf1f5e8caa38b7f80d486296f9fd3c97e71ad7e5444ef22e802758/pyobjc_framework_cocoa-12.2.1-cp315-cp315-macosx_10_15_universal2.whl", hash = "sha256:b6023657b8d6cc049a21bd6b4752425f2f53c42f9f0b02d64c7608cc484bf103", size = 388589, upload-time = "2026-06-19T16:07:46.276Z" },
|
|
1906
|
-
{ url = "https://files.pythonhosted.org/packages/b6/f3/eedf743a303ea742b8e082afe3613fb4d6618bc1a48cf2568b004ce906f7/pyobjc_framework_cocoa-12.2.1-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:c685ccd8e266a07cf912a2c5a13b1f2eff2a868a1aff163b4801b4687bd425e1", size = 392691, upload-time = "2026-06-19T16:07:47.477Z" },
|
|
1907
1860
|
]
|
|
1908
1861
|
|
|
1909
1862
|
[[package]]
|
|
@@ -1918,8 +1871,6 @@ sdist = { url = "https://files.pythonhosted.org/packages/3b/f6/2a8b84dbf1fe7c04d
|
|
|
1918
1871
|
wheels = [
|
|
1919
1872
|
{ url = "https://files.pythonhosted.org/packages/8b/5d/85ffd9d433989205d572a50d625c63b29c05e0c5235a725f15ae1023672c/pyobjc_framework_quartz-12.2.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:ceb56939c337b36d9d81185ade31f77dc52c85cf79bb16e53e9b32f54b6bb3f5", size = 219769, upload-time = "2026-06-19T16:16:08.814Z" },
|
|
1920
1873
|
{ url = "https://files.pythonhosted.org/packages/e2/d6/b917e4b63d72ea84a27121076f3033f23f6497c0e6ce8d304766c899897f/pyobjc_framework_quartz-12.2.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:8105c98b798f2bf81c05c54bddeeadbf62f0b5dfec13bd6e719dd2cdf7e1cddf", size = 224717, upload-time = "2026-06-19T16:16:10.215Z" },
|
|
1921
|
-
{ url = "https://files.pythonhosted.org/packages/04/e2/f3c1ed3228f7430ef5ade23db6f1fcbae99290f177ce5653348fd9e05f4d/pyobjc_framework_quartz-12.2.1-cp315-cp315-macosx_10_15_universal2.whl", hash = "sha256:bbc214f1a216b5d3651bc832d0ac4589f029f3f37cd6cbb370aac12a7c77942c", size = 219825, upload-time = "2026-06-19T16:16:11.433Z" },
|
|
1922
|
-
{ url = "https://files.pythonhosted.org/packages/66/2a/2c99a5ad2fe0a11600ea123b8e9a08ff138fcb2ad1e13e376f4bd4aa1d96/pyobjc_framework_quartz-12.2.1-cp315-cp315t-macosx_10_15_universal2.whl", hash = "sha256:ca61624a0b0e6286d8a0f97f47eb9011e4e81e9a339db436d48af527e7065bb1", size = 224770, upload-time = "2026-06-19T16:16:13.035Z" },
|
|
1923
1874
|
]
|
|
1924
1875
|
|
|
1925
1876
|
[[package]]
|
|
@@ -2281,35 +2232,6 @@ wheels = [
|
|
|
2281
2232
|
{ url = "https://files.pythonhosted.org/packages/f3/d7/afb49b49d7f2be8b7ba1a9f0977fa5168003437b93086726f066544e8351/rpds_py-2026.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:62ae3853454fe9ef283a03c96c2d835d39e84b14643a9d62c82ef0fb87d702ca", size = 581916, upload-time = "2026-05-28T12:01:02.22Z" },
|
|
2282
2233
|
{ url = "https://files.pythonhosted.org/packages/25/d1/dbef8c1f8a10f07beb62b5f054e20099fd9924b3ec001b8f0b6ac7813a85/rpds_py-2026.5.1-cp314-cp314t-win32.whl", hash = "sha256:6c3d771a46ec18b12af06ce36243a9a80b07a5d0515236332d90863ca8bb326a", size = 207855, upload-time = "2026-05-28T12:01:03.821Z" },
|
|
2283
2234
|
{ url = "https://files.pythonhosted.org/packages/2a/72/bfa4e61ab8e7dc1c8adf397e05e6cbdd4239357bd72b248d3de662f23915/rpds_py-2026.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c93c629be4636cf54337bd5f06c104d55e42ced54d681f6fe21ae510a65116f6", size = 225422, upload-time = "2026-05-28T12:01:05.194Z" },
|
|
2284
|
-
{ url = "https://files.pythonhosted.org/packages/27/3a/7b5da92b640f67b6717ccafc83cdd06bfa7ff2395c3685c68922bb54d703/rpds_py-2026.5.1-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:3574b55c604b8f75dacb007136508bbc0db406e626301778096a133327e7f2fb", size = 349576, upload-time = "2026-05-28T12:01:06.722Z" },
|
|
2285
|
-
{ url = "https://files.pythonhosted.org/packages/d7/8a/2aafd7ad355a1bd48ca76e2262b74b15e6432b5a1efe150efd4d779cd55d/rpds_py-2026.5.1-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:94068eb3ae6d43f5a786b7db96a406a34e6d5c24489feef32fd6e8946ea7b291", size = 343640, upload-time = "2026-05-28T12:01:08.441Z" },
|
|
2286
|
-
{ url = "https://files.pythonhosted.org/packages/f7/7d/6c9523c1abbe840a1b7fba3c516d48e1d3487cc80fea4366c4071cf56784/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a5b10e8ce894825f380a8f1b6444cf73c294dfea62afbb2d13e3a9e630cec1", size = 375322, upload-time = "2026-05-28T12:01:09.934Z" },
|
|
2287
|
-
{ url = "https://files.pythonhosted.org/packages/5a/5d/0b7b03fb1dc509321f01de3149784ab773e34c8573022029af8076afcb9c/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fc09f82e63d4bcd58149572f857a431bae851dc747e313c3b5bdf7abb907fda8", size = 379066, upload-time = "2026-05-28T12:01:11.48Z" },
|
|
2288
|
-
{ url = "https://files.pythonhosted.org/packages/d7/e2/8ef6012999ebf1cb1c22f876d9ce5e63d960fd4631d2af3202d3f480aa25/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e10464d17df3b582745c25cec695cb9558bca2cb6ddb631aee1787fc72c767b2", size = 494586, upload-time = "2026-05-28T12:01:13.051Z" },
|
|
2289
|
-
{ url = "https://files.pythonhosted.org/packages/80/af/1eeb029bec67582c226b7809172207cd005073af4ebd906e65ff494f4983/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba05adbf15d994c38ec0b7ab32e858e5110c21e9009a00a86545fd220f84e038", size = 388415, upload-time = "2026-05-28T12:01:14.631Z" },
|
|
2290
|
-
{ url = "https://files.pythonhosted.org/packages/18/23/ffbe10711c4d766c1cab0557d6906c074f795814863c67b351355d29354a/rpds_py-2026.5.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77c004fdc7b891967106f78ddfd7b076bfe6813c6139c6fff6aed3bcaa960b26", size = 372427, upload-time = "2026-05-28T12:01:16.153Z" },
|
|
2291
|
-
{ url = "https://files.pythonhosted.org/packages/bd/3a/30ba4a6ad457e5b070c18d742a33fb77d8d922b565cc881f8a5313d63bfe/rpds_py-2026.5.1-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:83bcf894486c9d78dd290d3c0124ff6dd8875d3025e2090a8ec49fcc37c55fdd", size = 383615, upload-time = "2026-05-28T12:01:17.809Z" },
|
|
2292
|
-
{ url = "https://files.pythonhosted.org/packages/d3/69/62e242b53ce39c0814bd24e1a6e6eba6c92be716277745f317f9540a2e7b/rpds_py-2026.5.1-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3df104083952a0e0c6f10de33e440eabe98fb6317d23e1a58c68f6df08d01b9", size = 402786, upload-time = "2026-05-28T12:01:19.419Z" },
|
|
2293
|
-
{ url = "https://files.pythonhosted.org/packages/38/c1/a770b9c186928a1ed0f7e6d7ae50e7f3950ed23e3f9e366dbc8e38cb55de/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:980450826cf22e133c57e0835070bdd0dd3f73b9b708c3ce223def2cb9469e14", size = 551583, upload-time = "2026-05-28T12:01:21.013Z" },
|
|
2294
|
-
{ url = "https://files.pythonhosted.org/packages/21/7c/68e8579b95375b70d2a963103c42e705856cdb98569258bd807f4423891c/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:205dde846f24332ab0c1188699a043b8d165b79bb84529ce272c45048ff6be01", size = 616941, upload-time = "2026-05-28T12:01:22.548Z" },
|
|
2295
|
-
{ url = "https://files.pythonhosted.org/packages/70/a1/a6135aed5730ff03ab957182259987ac11e55fb392a28dc6f0592048a280/rpds_py-2026.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:3966b82dd563176396df030f3dd52a6e54cb69b718e95e78bd555ed3d1e0185d", size = 578349, upload-time = "2026-05-28T12:01:24.118Z" },
|
|
2296
|
-
{ url = "https://files.pythonhosted.org/packages/09/6e/f24201a76a84e6c49d0bdfdfcb735210e21701e9b21c5bfc0ba497dd62f6/rpds_py-2026.5.1-cp315-cp315-win32.whl", hash = "sha256:7818f8d0a415be74d2be3590b0a1c1f463a642f4d0217e7d10602dceef5b79aa", size = 209922, upload-time = "2026-05-28T12:01:25.522Z" },
|
|
2297
|
-
{ url = "https://files.pythonhosted.org/packages/9e/e4/966bc240bb0485fc265278f6de44d05834bf0b3618886e0b22e33d54c49a/rpds_py-2026.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:b3cc20c0d800af78fd0fac68086e28c1856cec51ea528bb81ea851aa40d39325", size = 226003, upload-time = "2026-05-28T12:01:27.062Z" },
|
|
2298
|
-
{ url = "https://files.pythonhosted.org/packages/5c/5c/a15a59269cd5e74472734516c73795c15eccfc841b3d4b0228c3f53f19d0/rpds_py-2026.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:3609e9939a8a76cd904cf98a3f1f13b5dc7e150adeaee89e0ea09652ea213e16", size = 221245, upload-time = "2026-05-28T12:01:28.51Z" },
|
|
2299
|
-
{ url = "https://files.pythonhosted.org/packages/e0/22/135ce03804e179a71ceb13be095deda4a279bc88f7a6b8fa161c5ad44e12/rpds_py-2026.5.1-cp315-cp315t-macosx_10_12_x86_64.whl", hash = "sha256:5d333a7127d4b307601ac37792bee01bb95c867cbfacf21b6375b804d6bbd723", size = 352015, upload-time = "2026-05-28T12:01:30.214Z" },
|
|
2300
|
-
{ url = "https://files.pythonhosted.org/packages/3b/5f/f1f6d2652eb9d848f6eb369d8db83a2da6249bb49ad2c2a48f45d54538d3/rpds_py-2026.5.1-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:b5f077b44a4f7808520f66dae234988d867deb9aed9be5da057ce9ba831b2a41", size = 345016, upload-time = "2026-05-28T12:01:31.656Z" },
|
|
2301
|
-
{ url = "https://files.pythonhosted.org/packages/88/66/b74182775691ea2290c99e52ac8d5db844e56fbec90ce421f107658c8314/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d8f9b7b78c9538fc9e04e82ec0e888ff0c3cffcfad152c77e57cd09351a98a", size = 374775, upload-time = "2026-05-28T12:01:33.136Z" },
|
|
2302
|
-
{ url = "https://files.pythonhosted.org/packages/ff/8f/15e5a61d9f0a43902d36561d4f07cae6ae9f4716be825159fd72717f33af/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e3a8ae58895ac107ed934a6bf51e5846f95c53b9b940c2c6d310838fd5846358", size = 380270, upload-time = "2026-05-28T12:01:34.574Z" },
|
|
2303
|
-
{ url = "https://files.pythonhosted.org/packages/02/c3/f859b12763a80540cdf2af0f15b19904cf756a71d7bdd3f82ff3e5b1bbf9/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0957cf3c2b8632ec7aaebffebea8005b353cc2a237b6e2ae3c2cac0820704cfb", size = 495285, upload-time = "2026-05-28T12:01:36.127Z" },
|
|
2304
|
-
{ url = "https://files.pythonhosted.org/packages/1c/c7/ff27c2ac8411d30b03b1829fd88cae8dad1a4d0da48dd25e57c4038042e6/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c396c1304de421050b3681ea70f371874b54d41b0151e96109758144c231e30b", size = 389581, upload-time = "2026-05-28T12:01:37.635Z" },
|
|
2305
|
-
{ url = "https://files.pythonhosted.org/packages/6e/67/fe92ee32a6cc05c77228a2f8b1762e7124f386ec20ff83d0757b762d58d0/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad1bff7f666b9598e573815affd666aac6a13a585dde336f843e33350c7fadc", size = 376041, upload-time = "2026-05-28T12:01:39.307Z" },
|
|
2306
|
-
{ url = "https://files.pythonhosted.org/packages/f8/91/b4d6685c27aba55bd82f25b278be8237038117d05f9659a6213ad3408130/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_31_riscv64.whl", hash = "sha256:656a042550878f12d45752452d47094b7cfe5ad1e9d7b87b5a22ad3ae5ff8015", size = 383946, upload-time = "2026-05-28T12:01:41.043Z" },
|
|
2307
|
-
{ url = "https://files.pythonhosted.org/packages/bd/79/2c1d832a53c8e0f8e98fc970ec257b950fecd4f62be2ab7182b500a0cbc8/rpds_py-2026.5.1-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c4bd4f70294737b5206a3e8e30ccadbf8a60301831c8ea23eec5dbeea1ecfa", size = 405526, upload-time = "2026-05-28T12:01:43.032Z" },
|
|
2308
|
-
{ url = "https://files.pythonhosted.org/packages/78/c4/c98117b03c6a8581ab2c2dfccfe9a5ad82bd8128a3c28b46a6ad2d97c393/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:43bca78665423cabae77146f2fe7ce55272b6c8d55d82cca83effd42c7e13972", size = 551165, upload-time = "2026-05-28T12:01:44.648Z" },
|
|
2309
|
-
{ url = "https://files.pythonhosted.org/packages/3b/c1/bc479ca069200af730881b1bd525e3114b2b391a351509fcb1b772f28086/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:42d0f20e85e549c870749d0e247f0c10d318a45b7e9676d575d2dcb04a1b2e66", size = 618778, upload-time = "2026-05-28T12:01:46.337Z" },
|
|
2310
|
-
{ url = "https://files.pythonhosted.org/packages/77/65/38ab2f90df44c2febfb63cc10ced40763d9b4bc94d173e734528663fe7f5/rpds_py-2026.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:b1be5c35683684d5331b93600c210e8367c254683d8a6df6bd21bd2da3a334fb", size = 581839, upload-time = "2026-05-28T12:01:48.109Z" },
|
|
2311
|
-
{ url = "https://files.pythonhosted.org/packages/15/2d/ce1f605fe036aadd460e5822e578c6c7ec3a860936cca37d6e0f299daa77/rpds_py-2026.5.1-cp315-cp315t-win32.whl", hash = "sha256:75808f6c38ce7749bb68cc2770161aae5045e6c6f6781a9782e74b93304399df", size = 207866, upload-time = "2026-05-28T12:01:49.648Z" },
|
|
2312
|
-
{ url = "https://files.pythonhosted.org/packages/79/cb/966040123eb102371559746908ef2c9471f4d43e17ec9a645a2258dab64b/rpds_py-2026.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:90bd6630002a1c7f09e7843dd79f0d24f3d2897cc25a753480917865d14f15b3", size = 225441, upload-time = "2026-05-28T12:01:51.408Z" },
|
|
2313
2235
|
]
|
|
2314
2236
|
|
|
2315
2237
|
[[package]]
|
|
@@ -2613,20 +2535,6 @@ wheels = [
|
|
|
2613
2535
|
{ url = "https://files.pythonhosted.org/packages/29/ce/af8964c38bc8226dd8950305b7a255fa33345d5572f78af7275a313d28e0/tiktoken-0.14.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2fc834fbe3f6a0736905c36ab709537e6840dbd63b982dc9e0216ae7d305ba1a", size = 1250932, upload-time = "2026-08-17T19:49:19.28Z" },
|
|
2614
2536
|
{ url = "https://files.pythonhosted.org/packages/1d/4b/323631116fc986d9cc5bbeb2b8223c7c85e61a8bb94ea5ab4951023b149b/tiktoken-0.14.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ca4db6ff5c5bf600f9b7761a0070ed44dfe5797a76bd432fb978bc480ef40c58", size = 1315190, upload-time = "2026-08-17T19:49:20.467Z" },
|
|
2615
2537
|
{ url = "https://files.pythonhosted.org/packages/18/8b/ba48a73729c9270989b36f37ab2ed5525e52690d715097c9fa791aaa5d05/tiktoken-0.14.0-cp314-cp314t-win_amd64.whl", hash = "sha256:7aab286a020660a039097912a088236b985d18a3090d73f136c4413d29d37ca0", size = 987717, upload-time = "2026-08-17T19:49:21.704Z" },
|
|
2616
|
-
{ url = "https://files.pythonhosted.org/packages/1d/10/b73b7e319179e0f60b32475f783b044f9cece872c53b6662664e9084b0d0/tiktoken-0.14.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:14b47e3674f2624803a8acc8fb367b7e24fc53055f9df3296482fe9a3a34a232", size = 1096280, upload-time = "2026-08-17T19:49:22.779Z" },
|
|
2617
|
-
{ url = "https://files.pythonhosted.org/packages/c2/6b/09999a9bf1d559670d1680e8f8e419ac0e2c5f6aac82e9bfdf70f260b30a/tiktoken-0.14.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:19d643d701fdaa70e5b9c7f8f96abcaffe77ca5e482a3a1a7dde46feb4284695", size = 1040433, upload-time = "2026-08-17T19:49:23.998Z" },
|
|
2618
|
-
{ url = "https://files.pythonhosted.org/packages/cd/7b/8537be0836f3df99b2a636b44399bfa43cd757f2b8b4097dacb794cf24a7/tiktoken-0.14.0-cp315-cp315-manylinux_2_28_aarch64.whl", hash = "sha256:e4ddf863b59347deaa92302dcd90e5eb003cdc9be06ec2b692c38d1bdd9efd49", size = 1186989, upload-time = "2026-08-17T19:49:25.021Z" },
|
|
2619
|
-
{ url = "https://files.pythonhosted.org/packages/7c/9d/f9c56d7a943a4468abf9ef37661bb9b8e0cd3aa8aa87368c7146cc3f3222/tiktoken-0.14.0-cp315-cp315-manylinux_2_28_x86_64.whl", hash = "sha256:60c47ca69ddda0dea8256fffd12e1b86f4b59734a20e4a70c61f63cc5f021df4", size = 1204615, upload-time = "2026-08-17T19:49:26.37Z" },
|
|
2620
|
-
{ url = "https://files.pythonhosted.org/packages/4b/d2/98a38579db25c4a8a84e31dd95d9072ec5f21f7e70de591da0412e29b25b/tiktoken-0.14.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:728303a072163130c5b477b1f20d6211895569c1d5302c24ffc93a3009160871", size = 1251828, upload-time = "2026-08-17T19:49:27.423Z" },
|
|
2621
|
-
{ url = "https://files.pythonhosted.org/packages/0c/83/467be424746c039c5493c0f4102feab16b9b48eb6f5c089b2a2438e3cde2/tiktoken-0.14.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:3c5349c9f916283bba32bec8af69b763e4faa304dc004d0eaaea66a3cf004c1f", size = 1316260, upload-time = "2026-08-17T19:49:29.101Z" },
|
|
2622
|
-
{ url = "https://files.pythonhosted.org/packages/02/ee/ddf46ca78e371f5890e96b6e7d089a85b3536432be219851eb0481786ca8/tiktoken-0.14.0-cp315-cp315-win_amd64.whl", hash = "sha256:1b6e4adcfd285c44502aed51df98aaaca4f0fea028165dbf8a9e857b9f98d8ea", size = 988230, upload-time = "2026-08-17T19:49:30.246Z" },
|
|
2623
|
-
{ url = "https://files.pythonhosted.org/packages/2a/00/5162e90c851a28da18ed382d34898b79a8022548e5619a64e14c03ce7c3d/tiktoken-0.14.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:11d8211b290855d2721334ff17dd9b3a17bfb26872be01f25d73612ef7ece890", size = 1096186, upload-time = "2026-08-17T19:49:31.656Z" },
|
|
2624
|
-
{ url = "https://files.pythonhosted.org/packages/65/97/a5a7bfccf25b1bb65e82bae8edff11ac3c9c041c374b7b4a823d60c38133/tiktoken-0.14.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:d0781223705199b289faa59601bb9c2441712d4c600dd13c43d8fd6a33d22cd5", size = 1039947, upload-time = "2026-08-17T19:49:32.848Z" },
|
|
2625
|
-
{ url = "https://files.pythonhosted.org/packages/fb/ba/ef427fc638f1439181c5e12dd26b70e881861f89c007aa7e5b36300f8342/tiktoken-0.14.0-cp315-cp315t-manylinux_2_28_aarch64.whl", hash = "sha256:2ea70afba6b9eddbf22c165142e5f0a2ad7aa36a452873c48b57bb2aeb8492ae", size = 1186997, upload-time = "2026-08-17T19:49:34.121Z" },
|
|
2626
|
-
{ url = "https://files.pythonhosted.org/packages/3e/88/2f3f85a968cdc514152129af0a060ebcccb067005a2f29b0d5ef3c838514/tiktoken-0.14.0-cp315-cp315t-manylinux_2_28_x86_64.whl", hash = "sha256:78571efc311c30b73f31eb949a921d6dac39a5d9dc42d1cfa8f8db157b3447b1", size = 1205211, upload-time = "2026-08-17T19:49:35.284Z" },
|
|
2627
|
-
{ url = "https://files.pythonhosted.org/packages/4e/f6/80760e98a08e6649d2d68afb6035af713121dfb615acce8c4f73810ec438/tiktoken-0.14.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:86f66c85e796f5d05d5c4a60ec1d40cbfebc47a32464053528c797163fa9ab89", size = 1251479, upload-time = "2026-08-17T19:49:36.419Z" },
|
|
2628
|
-
{ url = "https://files.pythonhosted.org/packages/c5/84/50966fb6918a0fb9b32721277e5342bf729a2d74350074d662fbedf9772e/tiktoken-0.14.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:149d97453c4c98c04b081d64a85e635921269b532710d6faf81e9e82b790e7d3", size = 1316673, upload-time = "2026-08-17T19:49:37.756Z" },
|
|
2629
|
-
{ url = "https://files.pythonhosted.org/packages/35/5e/9b01afd037bfa22a0033963fa091e0f75b6fb15cd85bffb42ff86e697323/tiktoken-0.14.0-cp315-cp315t-win_amd64.whl", hash = "sha256:561e7580f84a79859af1ef6f676968e9030fcc3fe195700b15235bca64f009c9", size = 987929, upload-time = "2026-08-17T19:49:38.947Z" },
|
|
2630
2538
|
]
|
|
2631
2539
|
|
|
2632
2540
|
[[package]]
|
|
@@ -2670,7 +2578,7 @@ name = "torch"
|
|
|
2670
2578
|
version = "2.14.0+cu130"
|
|
2671
2579
|
source = { registry = "https://download.pytorch.org/whl/cu130" }
|
|
2672
2580
|
dependencies = [
|
|
2673
|
-
{ name = "cuda-bindings", marker = "
|
|
2581
|
+
{ name = "cuda-bindings", marker = "sys_platform == 'linux'" },
|
|
2674
2582
|
{ name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" },
|
|
2675
2583
|
{ name = "filelock" },
|
|
2676
2584
|
{ name = "fsspec" },
|
|
@@ -2682,7 +2590,7 @@ dependencies = [
|
|
|
2682
2590
|
{ name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" },
|
|
2683
2591
|
{ name = "setuptools" },
|
|
2684
2592
|
{ name = "sympy" },
|
|
2685
|
-
{ name = "triton", marker = "
|
|
2593
|
+
{ name = "triton", marker = "sys_platform == 'linux'" },
|
|
2686
2594
|
{ name = "typing-extensions" },
|
|
2687
2595
|
]
|
|
2688
2596
|
wheels = [
|
|
@@ -2692,12 +2600,6 @@ wheels = [
|
|
|
2692
2600
|
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:6c6f734dc5bd126316a9e6320cff848b0e21afc1702118dd504fa45512c0d2d5", upload-time = "2026-09-02T18:55:47Z" },
|
|
2693
2601
|
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:9a5dfdca3375869ae89803ae79d44531b706af9352a77066b8bdf134de0e09d4", upload-time = "2026-09-02T18:56:03Z" },
|
|
2694
2602
|
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp314-cp314t-win_amd64.whl", hash = "sha256:7db94ac0c41f1e0c10efd532ab43150c681edfc823cd5332c307644573403840", upload-time = "2026-09-02T18:56:39Z" },
|
|
2695
|
-
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp315-cp315-manylinux_2_28_aarch64.whl", hash = "sha256:b82c5857f2c397a285027b65093dc8c89c7b45a69535786a69dae462bf67fd07", upload-time = "2026-09-02T18:57:13Z" },
|
|
2696
|
-
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp315-cp315-manylinux_2_28_x86_64.whl", hash = "sha256:9e91cca5c03701158d783fb91fc1c5651469f466a3a3bcb4df5bcbff36cfd371", upload-time = "2026-09-02T18:57:26Z" },
|
|
2697
|
-
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp315-cp315-win_amd64.whl", hash = "sha256:fca94b3181939ca5bdfc1f7d108a79888dec750f3683f922bda40dc4e78d6eaa", upload-time = "2026-09-02T18:57:59Z" },
|
|
2698
|
-
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp315-cp315t-manylinux_2_28_aarch64.whl", hash = "sha256:16171adcc338c0827fbc28e448b96071638f4733743ee144b9692ec43477d821", upload-time = "2026-09-02T18:58:34Z" },
|
|
2699
|
-
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp315-cp315t-manylinux_2_28_x86_64.whl", hash = "sha256:9e68cd6d619325acf1d94fc0c0a819e7a19dd95d226744be20acf7b7aff3ac8a", upload-time = "2026-09-02T18:58:46Z" },
|
|
2700
|
-
{ url = "https://download-r2.pytorch.org/whl/cu130/torch-2.14.0%2Bcu130-cp315-cp315t-win_amd64.whl", hash = "sha256:c9d9ebc6c552c9e1b1779838b3c236f22e34fac2bcd441c1db8c939dd15f6fff", upload-time = "2026-09-02T18:59:19Z" },
|
|
2701
2603
|
]
|
|
2702
2604
|
|
|
2703
2605
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.14.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{free_claude_code-6.2.69 → free_claude_code-6.2.70}/.github/ISSUE_TEMPLATE/feature-request.yml
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
|
{free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/free-claude-code-wordmark-dark.svg
RENAMED
|
File without changes
|
{free_claude_code-6.2.69 → free_claude_code-6.2.70}/assets/free-claude-code-wordmark-light.svg
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
|