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.
Files changed (235) hide show
  1. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/.gitignore +4 -0
  2. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/CHANGELOG.md +54 -0
  3. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/PKG-INFO +1 -1
  4. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/tool_repair.py +633 -9
  5. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/pyproject.toml +1 -1
  6. coderouter_cli-2.7.2/tests/test_tool_repair_r4.py +511 -0
  7. coderouter_cli-2.7.2/tests/test_toolrepair_bench.py +86 -0
  8. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/LICENSE +0 -0
  9. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/README.en.md +0 -0
  10. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/README.md +0 -0
  11. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/__init__.py +0 -0
  12. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/__main__.py +0 -0
  13. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/__init__.py +0 -0
  14. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/anthropic_native.py +0 -0
  15. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/base.py +0 -0
  16. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/openai_compat.py +0 -0
  17. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/adapters/registry.py +0 -0
  18. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/cli.py +0 -0
  19. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/cli_stats.py +0 -0
  20. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/__init__.py +0 -0
  21. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/capability_registry.py +0 -0
  22. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/env_file.py +0 -0
  23. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/loader.py +0 -0
  24. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/config/schemas.py +0 -0
  25. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/cost.py +0 -0
  26. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/data/__init__.py +0 -0
  27. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/data/model-capabilities.yaml +0 -0
  28. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/doctor.py +0 -0
  29. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/doctor_apply.py +0 -0
  30. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/env_security.py +0 -0
  31. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/errors.py +0 -0
  32. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/gguf_introspect.py +0 -0
  33. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/__init__.py +0 -0
  34. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/_fingerprint.py +0 -0
  35. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/backend_health.py +0 -0
  36. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/context_budget.py +0 -0
  37. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/continuous_probe.py +0 -0
  38. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/drift_actions.py +0 -0
  39. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/drift_detection.py +0 -0
  40. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/memory_budget.py +0 -0
  41. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/memory_pressure.py +0 -0
  42. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/self_healing.py +0 -0
  43. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/guards/tool_loop.py +0 -0
  44. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/hardware.py +0 -0
  45. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/__init__.py +0 -0
  46. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/anthropic_routes.py +0 -0
  47. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/app.py +0 -0
  48. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/dashboard_routes.py +0 -0
  49. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/launcher_routes.py +0 -0
  50. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/metrics_routes.py +0 -0
  51. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/ingress/openai_routes.py +0 -0
  52. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/language_tax.py +0 -0
  53. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/logging.py +0 -0
  54. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/metrics/__init__.py +0 -0
  55. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/metrics/collector.py +0 -0
  56. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/metrics/prometheus.py +0 -0
  57. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/output_filters.py +0 -0
  58. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/__init__.py +0 -0
  59. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/base.py +0 -0
  60. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/loader.py +0 -0
  61. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/plugins/registry.py +0 -0
  62. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/__init__.py +0 -0
  63. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/adaptive.py +0 -0
  64. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/auto_router.py +0 -0
  65. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/budget.py +0 -0
  66. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/capability.py +0 -0
  67. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/routing/fallback.py +0 -0
  68. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/__init__.py +0 -0
  69. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/audit_log.py +0 -0
  70. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/replay.py +0 -0
  71. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/request_log.py +0 -0
  72. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/store.py +0 -0
  73. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/state/suggest_rules.py +0 -0
  74. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/token_estimation.py +0 -0
  75. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/token_estimation_accurate.py +0 -0
  76. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/__init__.py +0 -0
  77. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/anthropic.py +0 -0
  78. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/coderouter/translation/convert.py +0 -0
  79. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/README.md +0 -0
  80. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/assets/dashboard-demo.png +0 -0
  81. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/claude-code-llamacpp-vllm.md +0 -0
  82. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/gguf_dl.md +0 -0
  83. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/hf-ollama-models.md +0 -0
  84. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/install-backends.en.md +0 -0
  85. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/install-backends.md +0 -0
  86. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/launcher-quickstart.md +0 -0
  87. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/launcher.md +0 -0
  88. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/llamacpp-direct.en.md +0 -0
  89. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/llamacpp-direct.md +0 -0
  90. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/lmstudio-direct.en.md +0 -0
  91. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/lmstudio-direct.md +0 -0
  92. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/backends/verify-ollama-0.23.1.md +0 -0
  93. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/architecture.md +0 -0
  94. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/context-budget.md +0 -0
  95. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/continuous-probing.md +0 -0
  96. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/drift-detection.md +0 -0
  97. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/concepts/partial-stitch.md +0 -0
  98. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/designs/v1.5-dashboard-mockup.html +0 -0
  99. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/designs/v1.6-auto-router-verification.md +0 -0
  100. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/designs/v1.6-auto-router.md +0 -0
  101. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/free-tier-guide.en.md +0 -0
  102. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/free-tier-guide.md +0 -0
  103. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/language-tax.en.md +0 -0
  104. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/language-tax.md +0 -0
  105. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/security.en.md +0 -0
  106. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/security.md +0 -0
  107. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/troubleshooting.en.md +0 -0
  108. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/troubleshooting.md +0 -0
  109. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/usage-guide.en.md +0 -0
  110. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/guides/usage-guide.md +0 -0
  111. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/low-memory-integration.md +0 -0
  112. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/openrouter-roster/CHANGES.md +0 -0
  113. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/openrouter-roster/README.md +0 -0
  114. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/openrouter-roster/latest.json +0 -0
  115. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.4.md +0 -0
  116. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.5-verify.md +0 -0
  117. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.5.md +0 -0
  118. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.6.md +0 -0
  119. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v0.7.md +0 -0
  120. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v1.0-verify.md +0 -0
  121. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/retrospectives/v1.0.md +0 -0
  122. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/quickstart.en.md +0 -0
  123. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/quickstart.md +0 -0
  124. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/when-do-i-need-coderouter.en.md +0 -0
  125. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/docs/start/when-do-i-need-coderouter.md +0 -0
  126. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/.env.example +0 -0
  127. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/README.md +0 -0
  128. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers-multiagent.yaml +0 -0
  129. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.context-budget-test.yaml +0 -0
  130. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.llamacpp-vllm.yaml +0 -0
  131. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.nvidia-nim.yaml +0 -0
  132. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.ollama-auto-custom.yaml +0 -0
  133. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.ollama-auto.yaml +0 -0
  134. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.ollama-free-chain.yaml +0 -0
  135. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.raspberrypi.yaml +0 -0
  136. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/examples/providers.yaml +0 -0
  137. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/demo_traffic.sh +0 -0
  138. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/openrouter_roster_diff.py +0 -0
  139. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/smoke_v2_2.sh +0 -0
  140. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify-providers.yaml +0 -0
  141. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify_ollama_0_23.py +0 -0
  142. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify_v0_5.sh +0 -0
  143. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/scripts/verify_v1_0.sh +0 -0
  144. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/__init__.py +0 -0
  145. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/conftest.py +0 -0
  146. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_adapter_anthropic.py +0 -0
  147. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_audit_log.py +0 -0
  148. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_auto_router.py +0 -0
  149. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_auto_router_cjk.py +0 -0
  150. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_backend_health.py +0 -0
  151. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_budget.py +0 -0
  152. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability.py +0 -0
  153. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_degraded_payload.py +0 -0
  154. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_registry.py +0 -0
  155. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_registry_cache_control.py +0 -0
  156. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_capability_tool_choice.py +0 -0
  157. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_claude_code_suitability.py +0 -0
  158. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_cli.py +0 -0
  159. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_cli_stats.py +0 -0
  160. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_config.py +0 -0
  161. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_config_shim_actions.py +0 -0
  162. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_context_budget.py +0 -0
  163. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_continuous_probe.py +0 -0
  164. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_dashboard_endpoint.py +0 -0
  165. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_doctor.py +0 -0
  166. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_doctor_apply.py +0 -0
  167. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_doctor_cache_probe.py +0 -0
  168. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_drift_actions.py +0 -0
  169. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_drift_detection.py +0 -0
  170. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_drift_detection_integration.py +0 -0
  171. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_env_file.py +0 -0
  172. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_env_security.py +0 -0
  173. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_errors.py +0 -0
  174. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_examples_yaml.py +0 -0
  175. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback.py +0 -0
  176. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_anthropic.py +0 -0
  177. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_cache_control.py +0 -0
  178. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_cache_observed.py +0 -0
  179. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_cache_strip.py +0 -0
  180. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_misconfig_warn.py +0 -0
  181. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_paid_gate.py +0 -0
  182. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_thinking.py +0 -0
  183. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fallback_tool_choice_emulate.py +0 -0
  184. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h1_prometheus_drift.py +0 -0
  185. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h2_h6_translation.py +0 -0
  186. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h3_client_reuse.py +0 -0
  187. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h4_h5_guards.py +0 -0
  188. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h7_probe_restore.py +0 -0
  189. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_h8_launcher_auth.py +0 -0
  190. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mA_routing.py +0 -0
  191. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mB_adapters.py +0 -0
  192. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mC_convert.py +0 -0
  193. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mD_logging_metrics.py +0 -0
  194. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mE_config_validation.py +0 -0
  195. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_fix_mF_ingress.py +0 -0
  196. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_gguf_introspect.py +0 -0
  197. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_guards_tool_loop.py +0 -0
  198. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_hardware.py +0 -0
  199. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_ingress_anthropic.py +0 -0
  200. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_ingress_count_tokens.py +0 -0
  201. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_ingress_profile.py +0 -0
  202. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_language_tax.py +0 -0
  203. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_language_tax_integration.py +0 -0
  204. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_memory_budget.py +0 -0
  205. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_memory_pressure.py +0 -0
  206. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_cache.py +0 -0
  207. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_collector.py +0 -0
  208. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_cost.py +0 -0
  209. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_endpoint.py +0 -0
  210. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_jsonl.py +0 -0
  211. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_prometheus.py +0 -0
  212. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_metrics_prometheus_cache.py +0 -0
  213. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_openai_compat.py +0 -0
  214. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_openrouter_roster_diff.py +0 -0
  215. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_output_filters.py +0 -0
  216. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_output_filters_adapters.py +0 -0
  217. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_partial_stitch.py +0 -0
  218. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_plugins_integration.py +0 -0
  219. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_plugins_loader.py +0 -0
  220. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_plugins_registry.py +0 -0
  221. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_reasoning_strip.py +0 -0
  222. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_repair_byte_fallback.py +0 -0
  223. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_request_log.py +0 -0
  224. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_role_normalization.py +0 -0
  225. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_routing_adaptive.py +0 -0
  226. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_self_healing.py +0 -0
  227. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_setup_sh.py +0 -0
  228. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_state_store.py +0 -0
  229. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_token_estimation.py +0 -0
  230. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_token_estimation_accurate.py +0 -0
  231. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_tokens_saved_metric.py +0 -0
  232. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_tool_repair.py +0 -0
  233. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_tool_repair_lenient.py +0 -0
  234. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_translation_anthropic.py +0 -0
  235. {coderouter_cli-2.7.1 → coderouter_cli-2.7.2}/tests/test_translation_reverse.py +0 -0
@@ -93,3 +93,7 @@ docs/articles/
93
93
 
94
94
  # FUSE / virtiofs artifacts
95
95
  .fuse_hidden*
96
+
97
+ # tool-repair bench: locally generated results (curated evidence lives in results/)
98
+ benchmarks/tool-repair/results_*.json
99
+ benchmarks/tool-repair/results_*.md
@@ -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.1
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