coderouter-cli 2.7.1__tar.gz → 2.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/.gitignore +4 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/CHANGELOG.md +54 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/PKG-INFO +1 -1
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/tool_repair.py +633 -9
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/pyproject.toml +1 -1
- coderouter_cli-2.7.2/tests/test_tool_repair_r4.py +511 -0
- coderouter_cli-2.7.2/tests/test_toolrepair_bench.py +86 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/LICENSE +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/README.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/README.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/__main__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/anthropic_native.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/base.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/openai_compat.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/registry.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/cli.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/cli_stats.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/capability_registry.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/env_file.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/loader.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/schemas.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/cost.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/data/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/data/model-capabilities.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/doctor.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/doctor_apply.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/env_security.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/errors.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/gguf_introspect.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/_fingerprint.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/backend_health.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/context_budget.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/continuous_probe.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/drift_actions.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/drift_detection.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/memory_budget.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/memory_pressure.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/self_healing.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/tool_loop.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/hardware.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/anthropic_routes.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/app.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/dashboard_routes.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/launcher_routes.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/metrics_routes.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/openai_routes.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/language_tax.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/logging.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/metrics/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/metrics/collector.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/metrics/prometheus.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/output_filters.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/base.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/loader.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/registry.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/adaptive.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/auto_router.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/budget.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/capability.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/fallback.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/audit_log.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/replay.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/request_log.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/store.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/suggest_rules.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/token_estimation.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/token_estimation_accurate.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/anthropic.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/convert.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/README.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/assets/dashboard-demo.png +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/claude-code-llamacpp-vllm.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/gguf_dl.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/hf-ollama-models.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/install-backends.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/install-backends.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/launcher-quickstart.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/launcher.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/llamacpp-direct.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/llamacpp-direct.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/lmstudio-direct.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/lmstudio-direct.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/verify-ollama-0.23.1.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/architecture.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/context-budget.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/continuous-probing.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/drift-detection.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/partial-stitch.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/designs/v1.5-dashboard-mockup.html +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/designs/v1.6-auto-router-verification.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/designs/v1.6-auto-router.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/free-tier-guide.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/free-tier-guide.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/language-tax.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/language-tax.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/security.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/security.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/troubleshooting.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/troubleshooting.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/usage-guide.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/usage-guide.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/low-memory-integration.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/openrouter-roster/CHANGES.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/openrouter-roster/README.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/openrouter-roster/latest.json +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.4.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.5-verify.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.5.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.6.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.7.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v1.0-verify.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v1.0.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/quickstart.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/quickstart.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/when-do-i-need-coderouter.en.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/when-do-i-need-coderouter.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/.env.example +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/README.md +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers-multiagent.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.context-budget-test.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.llamacpp-vllm.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.nvidia-nim.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.ollama-auto-custom.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.ollama-auto.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.ollama-free-chain.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.raspberrypi.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/demo_traffic.sh +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/openrouter_roster_diff.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/smoke_v2_2.sh +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify-providers.yaml +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify_ollama_0_23.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify_v0_5.sh +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify_v1_0.sh +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/__init__.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/conftest.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_adapter_anthropic.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_audit_log.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_auto_router.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_auto_router_cjk.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_backend_health.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_budget.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_degraded_payload.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_registry.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_registry_cache_control.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_tool_choice.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_claude_code_suitability.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_cli.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_cli_stats.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_config.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_config_shim_actions.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_context_budget.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_continuous_probe.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_dashboard_endpoint.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_doctor.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_doctor_apply.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_doctor_cache_probe.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_drift_actions.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_drift_detection.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_drift_detection_integration.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_env_file.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_env_security.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_errors.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_examples_yaml.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_anthropic.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_cache_control.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_cache_observed.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_cache_strip.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_misconfig_warn.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_paid_gate.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_thinking.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_tool_choice_emulate.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h1_prometheus_drift.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h2_h6_translation.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h3_client_reuse.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h4_h5_guards.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h7_probe_restore.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h8_launcher_auth.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mA_routing.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mB_adapters.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mC_convert.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mD_logging_metrics.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mE_config_validation.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mF_ingress.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_gguf_introspect.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_guards_tool_loop.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_hardware.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_ingress_anthropic.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_ingress_count_tokens.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_ingress_profile.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_language_tax.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_language_tax_integration.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_memory_budget.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_memory_pressure.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_cache.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_collector.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_cost.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_endpoint.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_jsonl.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_prometheus.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_prometheus_cache.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_openai_compat.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_openrouter_roster_diff.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_output_filters.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_output_filters_adapters.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_partial_stitch.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_plugins_integration.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_plugins_loader.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_plugins_registry.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_reasoning_strip.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_repair_byte_fallback.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_request_log.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_role_normalization.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_routing_adaptive.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_self_healing.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_setup_sh.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_state_store.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_token_estimation.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_token_estimation_accurate.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_tokens_saved_metric.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_tool_repair.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_tool_repair_lenient.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_translation_anthropic.py +0 -0
- {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_translation_reverse.py +0 -0
|
@@ -6,6 +6,60 @@ versioning follows [SemVer](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [v2.7.2] — 2026-07-05 (R4 tool-call repair: nested-XML / JSON-envelope / call-syntax forms)
|
|
10
|
+
|
|
11
|
+
Single feature PR **#43**, driven by the 2026-07-05 L3 live benchmark
|
|
12
|
+
(6 local models × 2 wire paths × repairer-version A/B on an M3 Max). Closes
|
|
13
|
+
the three text-tool-call gap classes the bench measured in the wild. Fully
|
|
14
|
+
backward compatible: no config-schema changes, no signature changes,
|
|
15
|
+
no new dependencies (repairer stays stdlib-only).
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **R4a — nested-XML name-attribute forms.** The tool name lives in a
|
|
20
|
+
`name` attribute rather than the tag itself:
|
|
21
|
+
`<tools><function name="echo" arguments='{...}'/></tools>`, bare
|
|
22
|
+
`<function .../>`, `<tool ... args='{...}'/>`. Fixed known tag set;
|
|
23
|
+
`name` must be allow-listed; attribute values are delegated to the R1
|
|
24
|
+
lenient-JSON pipe. (PR #43)
|
|
25
|
+
- **R4b — JSON envelope forms.** Models sometimes echo the response wrapper
|
|
26
|
+
verbatim into the text body: `{"tool_calls": [...]}` and legacy
|
|
27
|
+
`{"function_call": {"name": ..., "arguments": "<JSON string>"}}` (string
|
|
28
|
+
arguments double-parsed). All-or-nothing allow-list validation: one
|
|
29
|
+
non-allow-listed inner call rejects the whole envelope. (PR #43)
|
|
30
|
+
- **R4c — call-syntax family.** One extractor for the "name + parens + args"
|
|
31
|
+
idiom observed independently across three model families (Gemma, Mistral,
|
|
32
|
+
phi4): `print(default_api.echo(message="probe"))`, `echo(message="probe")`,
|
|
33
|
+
`echo(message: 'demo')` (colon kwargs), `write_note({JSON})`. Recognised
|
|
34
|
+
only inside a fence or on a standalone line, never inline in prose. The
|
|
35
|
+
argument list must parse completely — a corrupted inner JSON is left
|
|
36
|
+
alone rather than executed with broken args. (PR #43)
|
|
37
|
+
- **50 new unit tests** (`tests/test_tool_repair_r4.py`) and **29 new bench
|
|
38
|
+
corpus cases** (55 → 84), including 10 adversarial-review counterexamples
|
|
39
|
+
locked in as negatives (blank-line cue variants among them). (PR #43)
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- **Prose-cue false-positive guard hardened** after two adversarial review
|
|
44
|
+
rounds: expanded cue vocabulary (`as follows` / `convention` / `format` /
|
|
45
|
+
`sample` / `payload` / ...), 200-char window with whole-previous-line
|
|
46
|
+
matching (two blank-line window bugs fixed), and a colon-ended lead-in
|
|
47
|
+
rule (full-width `:` U+FF1A included). The colon rule deliberately
|
|
48
|
+
over-suppresses genuine "I'll call it now:" lead-ins — FP-zero-first is
|
|
49
|
+
documented in the module docstring as a design decision. (PR #43)
|
|
50
|
+
|
|
51
|
+
### Results
|
|
52
|
+
|
|
53
|
+
- L1 offline bench: recall **78.0% → 100%** (59/59), false positives
|
|
54
|
+
**0/25** maintained, existing 70 cases regression-free.
|
|
55
|
+
- L2/L3 live (temperature 0, 100 requests per path, zero errors):
|
|
56
|
+
mistral:7b via router **80% → 100%** (third 0→100 model after
|
|
57
|
+
qwen2.5-coder 1.5b/7b); phi4-mini **40% → 80%**, with the remaining 20%
|
|
58
|
+
being exactly the semantically-corrupted case the repairer refuses by
|
|
59
|
+
design.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
9
63
|
## [v2.7.1] — 2026-07-04 (Native-endpoint shims + benchmarked tool-repair upgrade)
|
|
10
64
|
|
|
11
65
|
Two feature PRs driven by the 2026-07-04 competitive re-survey and the new
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: coderouter-cli
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.2
|
|
4
4
|
Summary: Local-first, free-first, fallback-built-in LLM router. Claude Code / OpenAI compatible.
|
|
5
5
|
Project-URL: Homepage, https://github.com/zephel01/CodeRouter
|
|
6
6
|
Project-URL: Repository, https://github.com/zephel01/CodeRouter
|