eval-protocol 0.2.46__tar.gz → 0.2.46.dev0__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 (426) hide show
  1. {eval_protocol-0.2.46/eval_protocol.egg-info → eval_protocol-0.2.46.dev0}/PKG-INFO +1 -1
  2. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/__init__.py +10 -0
  3. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/_version.py +3 -3
  4. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/fireworks_tracing.py +4 -2
  5. eval_protocol-0.2.46.dev0/eval_protocol/proxy/__init__.py +17 -0
  6. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/__init__.py +12 -0
  7. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/app.py +284 -0
  8. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/auth.py +18 -0
  9. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/langfuse.py +364 -0
  10. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/litellm.py +171 -0
  11. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/main.py +10 -0
  12. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/models.py +92 -0
  13. eval_protocol-0.2.46.dev0/eval_protocol/proxy/proxy_core/redis_utils.py +48 -0
  14. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/evaluation_test.py +1 -22
  15. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/logs_server.py +1 -9
  16. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0/eval_protocol.egg-info}/PKG-INFO +1 -1
  17. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol.egg-info/SOURCES.txt +9 -1
  18. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_show_results_url.py +0 -141
  19. eval_protocol-0.2.46/eval_protocol/utils/browser_utils.py +0 -114
  20. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/LICENSE +0 -0
  21. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/README.md +0 -0
  22. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/development/__init__.py +0 -0
  23. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/development/normalize_sandbox_fusion.py +0 -0
  24. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/development/utils/__init__.py +0 -0
  25. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/development/utils/generate_api_key.py +0 -0
  26. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/development/utils/subprocess_manager.py +0 -0
  27. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/__main__.py +0 -0
  28. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/__init__.py +0 -0
  29. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/base.py +0 -0
  30. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/bigquery.py +0 -0
  31. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/braintrust.py +0 -0
  32. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/huggingface.py +0 -0
  33. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/langchain.py +0 -0
  34. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/langfuse.py +0 -0
  35. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/langsmith.py +0 -0
  36. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/openai_responses.py +0 -0
  37. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/trl.py +0 -0
  38. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/utils.py +0 -0
  39. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/adapters/weave.py +0 -0
  40. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/__init__.py +0 -0
  41. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/models.py +0 -0
  42. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/orchestrator.py +0 -0
  43. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resource_abc.py +0 -0
  44. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resource_pool.py +0 -0
  45. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/__init__.py +0 -0
  46. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/bfcl_envs/__init__.py +0 -0
  47. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/bfcl_envs/gorilla_file_system.py +0 -0
  48. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/bfcl_envs/math_api.py +0 -0
  49. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/bfcl_envs/posting_api.py +0 -0
  50. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/bfcl_sim_api_resource.py +0 -0
  51. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/docker_resource.py +0 -0
  52. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/filesystem_resource.py +0 -0
  53. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/python_state_resource.py +0 -0
  54. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/resources/sql_resource.py +0 -0
  55. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/task_manager.py +0 -0
  56. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/agent/tool_registry.py +0 -0
  57. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/auth.py +0 -0
  58. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/__init__.py +0 -0
  59. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/data/airline_dataset.jsonl +0 -0
  60. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/data/retail_dataset.jsonl +0 -0
  61. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/test_aime25.py +0 -0
  62. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/test_frozen_lake.py +0 -0
  63. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/test_gpqa.py +0 -0
  64. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/test_livebench_data_analysis.py +0 -0
  65. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/test_tau_bench_airline.py +0 -0
  66. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/benchmarks/test_tau_bench_retail.py +0 -0
  67. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli.py +0 -0
  68. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/__init__.py +0 -0
  69. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/agent_eval_cmd.py +0 -0
  70. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/common.py +0 -0
  71. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/deploy.py +0 -0
  72. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/deploy_mcp.py +0 -0
  73. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/logs.py +0 -0
  74. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/preview.py +0 -0
  75. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/run_eval_cmd.py +0 -0
  76. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/cli_commands/upload.py +0 -0
  77. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/common_utils.py +0 -0
  78. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/config.py +0 -0
  79. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/data_loader/__init__.py +0 -0
  80. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/data_loader/dynamic_data_loader.py +0 -0
  81. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/data_loader/factory_data_loader.py +0 -0
  82. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/data_loader/inline_data_loader.py +0 -0
  83. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/data_loader/models.py +0 -0
  84. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/dataset_logger/__init__.py +0 -0
  85. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/dataset_logger/dataset_logger.py +0 -0
  86. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/dataset_logger/local_fs_dataset_logger_adapter.py +0 -0
  87. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/dataset_logger/sqlite_dataset_logger_adapter.py +0 -0
  88. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/dataset_logger/sqlite_evaluation_row_store.py +0 -0
  89. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/datasets/__init__.py +0 -0
  90. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/datasets/loader.py +0 -0
  91. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/directory_utils.py +0 -0
  92. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/evaluation.py +0 -0
  93. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/event_bus/__init__.py +0 -0
  94. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/event_bus/event_bus.py +0 -0
  95. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/event_bus/logger.py +0 -0
  96. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/event_bus/sqlite_event_bus.py +0 -0
  97. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/event_bus/sqlite_event_bus_database.py +0 -0
  98. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/execution/__init__.py +0 -0
  99. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/execution/pipeline.py +0 -0
  100. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/gcp_tools.py +0 -0
  101. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/generation/cache.py +0 -0
  102. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/generation/clients/base.py +0 -0
  103. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/generation/clients.py +0 -0
  104. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/generic_server.py +0 -0
  105. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/get_pep440_version.py +0 -0
  106. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/human_id/__init__.py +0 -0
  107. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/human_id/dictionary.py +0 -0
  108. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/integrations/__init__.py +0 -0
  109. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/integrations/deepeval.py +0 -0
  110. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/integrations/openeval.py +0 -0
  111. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/integrations/trl.py +0 -0
  112. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/log_utils/__init__.py +0 -0
  113. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/log_utils/elasticsearch_client.py +0 -0
  114. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/log_utils/elasticsearch_direct_http_handler.py +0 -0
  115. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/log_utils/elasticsearch_index_manager.py +0 -0
  116. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/log_utils/rollout_id_filter.py +0 -0
  117. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/log_utils/util.py +0 -0
  118. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/logging_utils.py +0 -0
  119. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/__init__.py +0 -0
  120. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/adapter.py +0 -0
  121. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/client/__init__.py +0 -0
  122. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/client/connection.py +0 -0
  123. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/clients.py +0 -0
  124. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/execution/__init__.py +0 -0
  125. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/execution/base_policy.py +0 -0
  126. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/execution/manager.py +0 -0
  127. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/execution/policy.py +0 -0
  128. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/grid_renderer.py +0 -0
  129. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/mcp_multi_client.py +0 -0
  130. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/mcpgym.py +0 -0
  131. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/process_manager.py +0 -0
  132. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/session/__init__.py +0 -0
  133. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/session/manager.py +0 -0
  134. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/simple_process_manager.py +0 -0
  135. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp/simulation_server.py +0 -0
  136. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/__init__.py +0 -0
  137. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/config.py +0 -0
  138. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/main.py +0 -0
  139. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/orchestration/__init__.py +0 -0
  140. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/orchestration/base_client.py +0 -0
  141. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/orchestration/local_docker_client.py +0 -0
  142. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_agent/orchestration/stdio_mcp_client_helper.py +0 -0
  143. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_env.py +0 -0
  144. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/__init__.py +0 -0
  145. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/frozen_lake/frozen_lake_adapter.py +0 -0
  146. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/frozen_lake/frozen_lake_mcp.py +0 -0
  147. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/frozen_lake/server.py +0 -0
  148. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/README.md +0 -0
  149. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/__init__.py +0 -0
  150. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/airplane_environment/airline_environment.py +0 -0
  151. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/mock_environment/mock_environment.py +0 -0
  152. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/retail_environment/retail_environment.py +0 -0
  153. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/server.py +0 -0
  154. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/tau2_mcp.py +0 -0
  155. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/tests/system_prompts/airline_agent_system_prompt.md +0 -0
  156. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/tests/system_prompts/mock_agent_system_prompt.md +0 -0
  157. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/tests/system_prompts/retail_agent_system_prompt.md +0 -0
  158. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/mcp_servers/tau2/tests/test_tau2_e2e.py +0 -0
  159. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/models.py +0 -0
  160. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/packaging.py +0 -0
  161. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/platform_api.py +0 -0
  162. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/playback_policy.py +0 -0
  163. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/__init__.py +0 -0
  164. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_agent_rollout_processor.py +0 -0
  165. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_dataset_adapter.py +0 -0
  166. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_langchain_rollout_processor.py +0 -0
  167. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_mcp_gym_rollout_processor.py +0 -0
  168. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_no_op_rollout_processor.py +0 -0
  169. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_pydantic_ai_rollout_processor.py +0 -0
  170. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/default_single_turn_rollout_process.py +0 -0
  171. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/dual_mode_wrapper.py +0 -0
  172. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/elasticsearch_setup.py +0 -0
  173. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/evaluation_test_postprocess.py +0 -0
  174. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/exception_config.py +0 -0
  175. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/execution.py +0 -0
  176. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/generate_parameter_combinations.py +0 -0
  177. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/handle_persist_flow.py +0 -0
  178. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/parameterize.py +0 -0
  179. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/plugin.py +0 -0
  180. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/remote_rollout_processor.py +0 -0
  181. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/rollout_processor.py +0 -0
  182. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/store_experiment_link.py +0 -0
  183. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/store_results_url.py +0 -0
  184. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/types.py +0 -0
  185. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/utils.py +0 -0
  186. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/pytest/validate_signature.py +0 -0
  187. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/__init__.py +0 -0
  188. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/llm_judge.py +0 -0
  189. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/llm_judge_braintrust.py +0 -0
  190. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/llm_judge_langfuse.py +0 -0
  191. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/llm_judge_langsmith.py +0 -0
  192. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/llm_judge_openai_responses.py +0 -0
  193. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/quickstart/utils.py +0 -0
  194. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/resources.py +0 -0
  195. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/reward_function.py +0 -0
  196. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/__init__.py +0 -0
  197. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/accuracy.py +0 -0
  198. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/accuracy_length.py +0 -0
  199. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/apps_coding_reward.py +0 -0
  200. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/apps_execution_utils.py +0 -0
  201. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/apps_testing_util.py +0 -0
  202. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/bfcl_reward.py +0 -0
  203. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/code_execution.py +0 -0
  204. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/code_execution_utils.py +0 -0
  205. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/cpp_code.py +0 -0
  206. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/deepcoder_reward.py +0 -0
  207. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/format.py +0 -0
  208. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/function_calling.py +0 -0
  209. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/json_schema.py +0 -0
  210. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/language_consistency.py +0 -0
  211. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/lean_prover.py +0 -0
  212. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/length.py +0 -0
  213. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/list_comparison_math_reward.py +0 -0
  214. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/math.py +0 -0
  215. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/multiple_choice_math_reward.py +0 -0
  216. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/reasoning_steps.py +0 -0
  217. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/repetition.py +0 -0
  218. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rewards/tag_count.py +0 -0
  219. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/rl_processing.py +0 -0
  220. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/server.py +0 -0
  221. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/stats/__init__.py +0 -0
  222. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/stats/confidence_intervals.py +0 -0
  223. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/typed_interface.py +0 -0
  224. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/types/__init__.py +0 -0
  225. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/types/errors.py +0 -0
  226. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/types/remote_rollout_processor.py +0 -0
  227. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/types/types.py +0 -0
  228. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/__init__.py +0 -0
  229. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/batch_evaluation.py +0 -0
  230. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/batch_transformation.py +0 -0
  231. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/check_server_status.py +0 -0
  232. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/dataset_helpers.py +0 -0
  233. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/logs_models.py +0 -0
  234. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/module_loader.py +0 -0
  235. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/packaging_utils.py +0 -0
  236. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/show_results_url.py +0 -0
  237. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/static_policy.py +0 -0
  238. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/subprocess_utils.py +0 -0
  239. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol/utils/vite_server.py +0 -0
  240. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol.egg-info/dependency_links.txt +0 -0
  241. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol.egg-info/entry_points.txt +0 -0
  242. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol.egg-info/requires.txt +0 -0
  243. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/eval_protocol.egg-info/top_level.txt +0 -0
  244. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/pyproject.toml +0 -0
  245. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/setup.cfg +0 -0
  246. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/setup.py +0 -0
  247. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_accuracy.py +0 -0
  248. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_accuracy_length.py +0 -0
  249. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_adapters_e2e.py +0 -0
  250. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_agent_orchestrator.py +0 -0
  251. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_agent_resources.py +0 -0
  252. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_auth.py +0 -0
  253. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_batch_evaluation.py +0 -0
  254. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_cli.py +0 -0
  255. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_cli_agent.py +0 -0
  256. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_cli_args.py +0 -0
  257. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_code_execution.py +0 -0
  258. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_config.py +0 -0
  259. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_control_plane_separation.py +0 -0
  260. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_cpp_code.py +0 -0
  261. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_data_driven_task_manager.py +0 -0
  262. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_deepcoder_reward.py +0 -0
  263. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_deepeval_integration.py +0 -0
  264. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_deploy_integration.py +0 -0
  265. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_directory_utils.py +0 -0
  266. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_e2b_integration.py +0 -0
  267. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_e2b_js_integration.py +0 -0
  268. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_edge_cases.py +0 -0
  269. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_eval_protocol_import.py +0 -0
  270. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_evaluation.py +0 -0
  271. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_evaluation_integration.py +0 -0
  272. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_evaluation_postprocess.py +0 -0
  273. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_evaluation_preview_integration.py +0 -0
  274. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_event_bus.py +0 -0
  275. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_event_bus_helper.py +0 -0
  276. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_examples_end_to_end.py +0 -0
  277. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_fireworks_api.py +0 -0
  278. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_format.py +0 -0
  279. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_fractional_code.py +0 -0
  280. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_function_calling.py +0 -0
  281. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_gcp_tools.py +0 -0
  282. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_generic_server.py +0 -0
  283. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_human_id.py +0 -0
  284. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_integration.py +0 -0
  285. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_json_schema.py +0 -0
  286. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_kwargs_validation.py +0 -0
  287. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_language_consistency.py +0 -0
  288. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_lean_prover.py +0 -0
  289. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_lean_prover_runner.py +0 -0
  290. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_length.py +0 -0
  291. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_list_comparison_math_reward.py +0 -0
  292. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_logs_server.py +0 -0
  293. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_logs_server_simple.py +0 -0
  294. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_math.py +0 -0
  295. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_minimal.py +0 -0
  296. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_models.py +0 -0
  297. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_models_rl.py +0 -0
  298. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_multiple_choice_math_reward.py +0 -0
  299. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_n_variant_batch_integration.py +0 -0
  300. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_n_variant_integration.py +0 -0
  301. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_openai_compatibility.py +0 -0
  302. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_openeval_integration.py +0 -0
  303. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_packaging.py +0 -0
  304. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_parallel_rollouts.py +0 -0
  305. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_platform_api.py +0 -0
  306. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_quickstart_utils.py +0 -0
  307. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_readiness.py +0 -0
  308. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_reasoning_steps.py +0 -0
  309. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_repetition.py +0 -0
  310. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_repetition_debug.py +0 -0
  311. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_retry_mechanism.py +0 -0
  312. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_reward_function.py +0 -0
  313. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_reward_protocol_import.py +0 -0
  314. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_rl_processing.py +0 -0
  315. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_rollout_control_plane_integration.py +0 -0
  316. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_server.py +0 -0
  317. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_status_migration_changes.py +0 -0
  318. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_status_migration_integration.py +0 -0
  319. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_status_model.py +0 -0
  320. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_tag_count.py +0 -0
  321. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_tau_bench_airline_smoke.py +0 -0
  322. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_typed_interface.py +0 -0
  323. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_typed_interface_rl.py +0 -0
  324. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_upload_entrypoint.py +0 -0
  325. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_url_handling.py +0 -0
  326. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/tests/test_vite_server.py +0 -0
  327. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/__init__.py +0 -0
  328. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/agent/__init__.py +0 -0
  329. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/agent/base.py +0 -0
  330. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/agent/llm_agent.py +0 -0
  331. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/api_service/__init__.py +0 -0
  332. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/api_service/api_config.py +0 -0
  333. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/api_service/data_model.py +0 -0
  334. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/api_service/simulation_service.py +0 -0
  335. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/cli.py +0 -0
  336. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/config.py +0 -0
  337. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/airline/policy.md +0 -0
  338. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/mock/policy.md +0 -0
  339. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/mock/policy_solo.md +0 -0
  340. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/retail/policy.md +0 -0
  341. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/telecom/main_policy.md +0 -0
  342. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/telecom/main_policy_solo.md +0 -0
  343. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/telecom/tech_support_manual.md +0 -0
  344. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/telecom/tech_support_workflow.md +0 -0
  345. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/domains/telecom/tech_support_workflow_solo.md +0 -0
  346. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/user_simulator/simulation_guidelines.md +0 -0
  347. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data/user_simulator/simulation_guidelines_tools.md +0 -0
  348. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data_model/__init__.py +0 -0
  349. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data_model/message.py +0 -0
  350. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data_model/simulation.py +0 -0
  351. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/data_model/tasks.py +0 -0
  352. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/__init__.py +0 -0
  353. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/airline/__init__.py +0 -0
  354. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/airline/data_model.py +0 -0
  355. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/airline/environment.py +0 -0
  356. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/airline/tools.py +0 -0
  357. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/airline/utils.py +0 -0
  358. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/mock/__init__.py +0 -0
  359. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/mock/data_model.py +0 -0
  360. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/mock/environment.py +0 -0
  361. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/mock/tools.py +0 -0
  362. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/mock/utils.py +0 -0
  363. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/retail/__init__.py +0 -0
  364. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/retail/data_model.py +0 -0
  365. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/retail/environment.py +0 -0
  366. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/retail/tools.py +0 -0
  367. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/retail/utils.py +0 -0
  368. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/__init__.py +0 -0
  369. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/data_model.py +0 -0
  370. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/environment.py +0 -0
  371. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/__init__.py +0 -0
  372. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/const.py +0 -0
  373. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/create_tasks.py +0 -0
  374. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/manager.py +0 -0
  375. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/mms_issues.py +0 -0
  376. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/mobile_data_issues.py +0 -0
  377. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/service_issues.py +0 -0
  378. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tasks/utils.py +0 -0
  379. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/tools.py +0 -0
  380. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/user_data_model.py +0 -0
  381. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/user_tools.py +0 -0
  382. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/domains/telecom/utils.py +0 -0
  383. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/__init__.py +0 -0
  384. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/db.py +0 -0
  385. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/environment.py +0 -0
  386. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/server.py +0 -0
  387. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/tool.py +0 -0
  388. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/toolkit.py +0 -0
  389. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/environment/utils/interface_agent.py +0 -0
  390. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/__init__.py +0 -0
  391. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/evaluator.py +0 -0
  392. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/evaluator_action.py +0 -0
  393. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/evaluator_base.py +0 -0
  394. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/evaluator_communicate.py +0 -0
  395. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/evaluator_env.py +0 -0
  396. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/evaluator/evaluator_nl_assertions.py +0 -0
  397. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/metrics/__init__.py +0 -0
  398. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/metrics/agent_metrics.py +0 -0
  399. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/metrics/break_down_metrics.py +0 -0
  400. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/orchestrator/__init__.py +0 -0
  401. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/orchestrator/environment_manager.py +0 -0
  402. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/orchestrator/orchestrator.py +0 -0
  403. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/orchestrator/utils.py +0 -0
  404. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/registry.py +0 -0
  405. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/run.py +0 -0
  406. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/scripts/__init__.py +0 -0
  407. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/scripts/check_data.py +0 -0
  408. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/scripts/show_domain_doc.py +0 -0
  409. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/scripts/start_servers.py +0 -0
  410. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/scripts/view_simulations.py +0 -0
  411. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/user/__init__.py +0 -0
  412. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/user/base.py +0 -0
  413. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/user/user_simulator.py +0 -0
  414. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/utils/__init__.py +0 -0
  415. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/utils/display.py +0 -0
  416. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/utils/io_utils.py +0 -0
  417. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/utils/llm_utils.py +0 -0
  418. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/utils/pydantic_utils.py +0 -0
  419. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vendor/tau2/utils/utils.py +0 -0
  420. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/versioneer.py +0 -0
  421. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vite-app/dist/assets/favicon-BkAAWQga.png +0 -0
  422. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vite-app/dist/assets/index-C81y9r9l.js +0 -0
  423. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vite-app/dist/assets/index-C81y9r9l.js.map +0 -0
  424. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vite-app/dist/assets/index-DpYZaoAr.css +0 -0
  425. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vite-app/dist/assets/logo-light-BprIBJQW.png +0 -0
  426. {eval_protocol-0.2.46 → eval_protocol-0.2.46.dev0}/vite-app/dist/index.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eval-protocol
3
- Version: 0.2.46
3
+ Version: 0.2.46.dev0
4
4
  Summary: The official Python SDK for Eval Protocol (EP.) EP is an open protocol that standardizes how developers author evals for large language model (LLM) applications.
5
5
  Author-email: Fireworks AI <info@fireworks.ai>
6
6
  License-Expression: MIT
@@ -70,6 +70,13 @@ try:
70
70
  except ImportError:
71
71
  WeaveAdapter = None
72
72
 
73
+ try:
74
+ from .proxy import create_app, AuthProvider
75
+ except ImportError:
76
+ create_app = None
77
+ AuthProvider = None
78
+
79
+
73
80
  warnings.filterwarnings("default", category=DeprecationWarning, module="eval_protocol")
74
81
 
75
82
  __all__ = [
@@ -130,6 +137,9 @@ __all__ = [
130
137
  "RolloutMetadata",
131
138
  "StatusResponse",
132
139
  "create_langfuse_config_tags",
140
+ # Proxy
141
+ "create_app",
142
+ "AuthProvider",
133
143
  ]
134
144
 
135
145
  from . import _version
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-10-09T13:58:14-0700",
11
+ "date": "2025-10-10T00:24:47-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "e066febd15f9056f74c40c8f4c34d3c68768fd59",
15
- "version": "0.2.46"
14
+ "full-revisionid": "98d81a75608e700f91e697f88c149641328d9507",
15
+ "version": "0.2.46-dev"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -7,9 +7,9 @@ to pull data from Langfuse deployments with simplified retry logic handling.
7
7
  from __future__ import annotations
8
8
  import logging
9
9
  import requests
10
- import time
11
10
  from datetime import datetime
12
11
  from typing import Any, Dict, List, Optional, Protocol
12
+ import os
13
13
 
14
14
  from eval_protocol.models import EvaluationRow, InputMetadata, ExecutionMetadata, Message
15
15
  from .base import BaseAdapter
@@ -349,9 +349,11 @@ class FireworksTracingAdapter(BaseAdapter):
349
349
  else:
350
350
  url = f"{self.base_url}/v1/traces"
351
351
 
352
+ headers = {"Authorization": f"Bearer {os.environ.get('FIREWORKS_API_KEY')}"}
353
+
352
354
  result = None
353
355
  try:
354
- response = requests.get(url, params=params, timeout=self.timeout)
356
+ response = requests.get(url, params=params, timeout=self.timeout, headers=headers)
355
357
  response.raise_for_status()
356
358
  result = response.json()
357
359
  except requests.exceptions.HTTPError as e:
@@ -0,0 +1,17 @@
1
+ """
2
+ LiteLLM Metadata Extraction Gateway
3
+
4
+ A proxy service for extracting evaluation metadata from URL paths and managing
5
+ Langfuse tracing for distributed evaluation workflows.
6
+ """
7
+
8
+ from .proxy_core import create_app, AuthProvider, NoAuthProvider, ProxyConfig, ChatParams, TracesParams
9
+
10
+ __all__ = [
11
+ "create_app",
12
+ "AuthProvider",
13
+ "NoAuthProvider",
14
+ "ProxyConfig",
15
+ "ChatParams",
16
+ "TracesParams",
17
+ ]
@@ -0,0 +1,12 @@
1
+ from .models import ProxyConfig, ChatParams, TracesParams
2
+ from .app import create_app
3
+ from .auth import AuthProvider, NoAuthProvider
4
+
5
+ __all__ = [
6
+ "ProxyConfig",
7
+ "ChatParams",
8
+ "TracesParams",
9
+ "create_app",
10
+ "AuthProvider",
11
+ "NoAuthProvider",
12
+ ]
@@ -0,0 +1,284 @@
1
+ """
2
+ Metadata Extraction Gateway
3
+ A FastAPI service that sits in front of LiteLLM and extracts metadata from URL paths.
4
+ """
5
+
6
+ from fastapi import FastAPI, Depends, HTTPException, Request, Query
7
+ from typing import Optional, Callable, Dict, Any, List
8
+ import os
9
+ import redis
10
+ import logging
11
+ import yaml
12
+ from pathlib import Path
13
+ import sys
14
+ from contextlib import asynccontextmanager
15
+
16
+ from .models import ProxyConfig, LangfuseTracesResponse, TracesParams, ChatParams, ChatRequestHook, TracesRequestHook
17
+ from .auth import AuthProvider, NoAuthProvider
18
+ from .litellm import handle_chat_completion, proxy_to_litellm
19
+ from .langfuse import fetch_langfuse_traces
20
+
21
+ # Configure logging before any other imports (so all modules inherit this config)
22
+ log_level = os.getenv("LOG_LEVEL", "INFO").upper()
23
+ if not logging.getLogger().hasHandlers():
24
+ logging.basicConfig(
25
+ level=getattr(logging, log_level),
26
+ format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
27
+ handlers=[logging.StreamHandler(sys.stdout)],
28
+ )
29
+
30
+ logger = logging.getLogger(__name__)
31
+
32
+
33
+ def build_proxy_config(
34
+ preprocess_chat_request: Optional[ChatRequestHook] = None,
35
+ preprocess_traces_request: Optional[TracesRequestHook] = None,
36
+ ) -> ProxyConfig:
37
+ """Load environment and secrets, and build ProxyConfig"""
38
+ # Env
39
+ litellm_url = os.getenv("LITELLM_URL")
40
+ if not litellm_url:
41
+ raise ValueError("LITELLM_URL environment variable must be set")
42
+ request_timeout = float(os.getenv("REQUEST_TIMEOUT", "300.0"))
43
+ langfuse_host = os.getenv("LANGFUSE_HOST", "https://cloud.langfuse.com")
44
+
45
+ # Secrets - use SECRETS_PATH env var if set, otherwise default to proxy/secrets.yaml
46
+ secrets_path_str = os.getenv("SECRETS_PATH")
47
+ if secrets_path_str:
48
+ secrets_path = Path(secrets_path_str)
49
+ else:
50
+ secrets_path = Path(__file__).parent / "secrets.yaml"
51
+ if not secrets_path.exists():
52
+ raise ValueError(
53
+ "Secrets file not found! Please create it from secrets.yaml.example:\n"
54
+ " cp eval_protocol/proxy/proxy_core/secrets.yaml.example eval_protocol/proxy/proxy_core/secrets.yaml\n"
55
+ "Then add your Langfuse API keys to the secrets file"
56
+ )
57
+ try:
58
+ with open(secrets_path, "r") as f:
59
+ secrets_config = yaml.safe_load(f)
60
+ langfuse_keys = secrets_config["langfuse_keys"]
61
+ default_project_id = secrets_config["default_project_id"]
62
+ logger.info(f"Loaded {len(langfuse_keys)} Langfuse project(s) from {secrets_path.name}")
63
+ except KeyError as e:
64
+ raise ValueError(f"Missing required key in secrets file: {e}")
65
+ except yaml.YAMLError as e:
66
+ raise ValueError(f"Invalid format in secrets file {secrets_path.name}: {e}")
67
+
68
+ return ProxyConfig(
69
+ litellm_url=litellm_url,
70
+ request_timeout=request_timeout,
71
+ langfuse_host=langfuse_host,
72
+ langfuse_keys=langfuse_keys,
73
+ default_project_id=default_project_id,
74
+ preprocess_chat_request=preprocess_chat_request,
75
+ preprocess_traces_request=preprocess_traces_request,
76
+ )
77
+
78
+
79
+ def init_redis() -> redis.Redis:
80
+ """Initialize and return a Redis client from environment variables."""
81
+ redis_host = os.getenv("REDIS_HOST")
82
+ if not redis_host:
83
+ raise ValueError("REDIS_HOST environment variable must be set")
84
+ redis_port = int(os.getenv("REDIS_PORT", "6379"))
85
+ redis_password = os.getenv("REDIS_PASSWORD")
86
+
87
+ try:
88
+ client = redis.Redis(
89
+ host=redis_host,
90
+ port=redis_port,
91
+ password=redis_password if redis_password else None,
92
+ decode_responses=True,
93
+ socket_connect_timeout=5,
94
+ socket_timeout=5,
95
+ retry_on_timeout=True,
96
+ )
97
+ client.ping()
98
+ logger.info(f"Connected to Redis at {redis_host}:{redis_port}")
99
+ return client
100
+ except Exception as e:
101
+ raise ConnectionError(f"Failed to connect to Redis at {redis_host}:{redis_port}: {e}")
102
+
103
+
104
+ def create_app(
105
+ auth_provider: AuthProvider = NoAuthProvider(),
106
+ preprocess_chat_request: Optional[ChatRequestHook] = None,
107
+ preprocess_traces_request: Optional[TracesRequestHook] = None,
108
+ ) -> FastAPI:
109
+ @asynccontextmanager
110
+ async def lifespan(app: FastAPI):
111
+ # Build runtime on startup
112
+ app.state.config = build_proxy_config(preprocess_chat_request, preprocess_traces_request)
113
+ app.state.redis = init_redis()
114
+
115
+ try:
116
+ yield
117
+ finally:
118
+ try:
119
+ app.state.redis.close()
120
+ except Exception:
121
+ pass
122
+
123
+ app = FastAPI(title="LiteLLM Metadata Proxy", lifespan=lifespan)
124
+
125
+ def get_config(request: Request) -> ProxyConfig:
126
+ return request.app.state.config
127
+
128
+ def get_redis(request: Request) -> redis.Redis:
129
+ return request.app.state.redis
130
+
131
+ def get_traces_params(
132
+ tags: Optional[List[str]] = Query(default=None),
133
+ project_id: Optional[str] = None,
134
+ limit: int = 100,
135
+ sample_size: Optional[int] = None,
136
+ user_id: Optional[str] = None,
137
+ session_id: Optional[str] = None,
138
+ name: Optional[str] = None,
139
+ environment: Optional[str] = None,
140
+ version: Optional[str] = None,
141
+ release: Optional[str] = None,
142
+ fields: Optional[str] = None,
143
+ hours_back: Optional[int] = None,
144
+ from_timestamp: Optional[str] = None,
145
+ to_timestamp: Optional[str] = None,
146
+ sleep_between_gets: float = 2.5,
147
+ max_retries: int = 3,
148
+ ) -> TracesParams:
149
+ return TracesParams(
150
+ tags=tags,
151
+ project_id=project_id,
152
+ limit=limit,
153
+ sample_size=sample_size,
154
+ user_id=user_id,
155
+ session_id=session_id,
156
+ name=name,
157
+ environment=environment,
158
+ version=version,
159
+ release=release,
160
+ fields=fields,
161
+ hours_back=hours_back,
162
+ from_timestamp=from_timestamp,
163
+ to_timestamp=to_timestamp,
164
+ sleep_between_gets=sleep_between_gets,
165
+ max_retries=max_retries,
166
+ )
167
+
168
+ async def require_auth(request: Request) -> None:
169
+ account_id = auth_provider.validate_and_return_account_id(request)
170
+ request.state.account_id = account_id
171
+ return None
172
+
173
+ # =====================
174
+ # Chat completion routes
175
+ # =====================
176
+ @app.post(
177
+ "/project_id/{project_id}/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/chat/completions"
178
+ )
179
+ @app.post(
180
+ "/v1/project_id/{project_id}/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/chat/completions"
181
+ )
182
+ @app.post(
183
+ "/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/chat/completions"
184
+ )
185
+ @app.post(
186
+ "/v1/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/chat/completions"
187
+ )
188
+ @app.post(
189
+ "/project_id/{project_id}/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/encoded_base_url/{encoded_base_url}/chat/completions"
190
+ )
191
+ @app.post(
192
+ "/v1/project_id/{project_id}/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/encoded_base_url/{encoded_base_url}/chat/completions"
193
+ )
194
+ @app.post(
195
+ "/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/encoded_base_url/{encoded_base_url}/chat/completions"
196
+ )
197
+ @app.post(
198
+ "/v1/rollout_id/{rollout_id}/invocation_id/{invocation_id}/experiment_id/{experiment_id}/run_id/{run_id}/row_id/{row_id}/encoded_base_url/{encoded_base_url}/chat/completions"
199
+ )
200
+ async def chat_completion_with_full_metadata(
201
+ rollout_id: str,
202
+ invocation_id: str,
203
+ experiment_id: str,
204
+ run_id: str,
205
+ row_id: str,
206
+ request: Request,
207
+ project_id: Optional[str] = None,
208
+ encoded_base_url: Optional[str] = None,
209
+ config: ProxyConfig = Depends(get_config),
210
+ redis_client: redis.Redis = Depends(get_redis),
211
+ _: None = Depends(require_auth),
212
+ ):
213
+ params = ChatParams(
214
+ project_id=project_id,
215
+ rollout_id=rollout_id,
216
+ invocation_id=invocation_id,
217
+ experiment_id=experiment_id,
218
+ run_id=run_id,
219
+ row_id=row_id,
220
+ encoded_base_url=encoded_base_url,
221
+ )
222
+ return await handle_chat_completion(
223
+ config=config,
224
+ redis_client=redis_client,
225
+ request=request,
226
+ params=params,
227
+ )
228
+
229
+ @app.post("/project_id/{project_id}/chat/completions")
230
+ @app.post("/v1/project_id/{project_id}/chat/completions")
231
+ async def chat_completion_with_project_only(
232
+ project_id: str,
233
+ request: Request,
234
+ config: ProxyConfig = Depends(get_config),
235
+ redis_client: redis.Redis = Depends(get_redis),
236
+ _: None = Depends(require_auth),
237
+ ):
238
+ params = ChatParams(project_id=project_id)
239
+ return await handle_chat_completion(
240
+ config=config,
241
+ redis_client=redis_client,
242
+ request=request,
243
+ params=params,
244
+ )
245
+
246
+ # ===============
247
+ # Traces routes
248
+ # ===============
249
+ @app.get("/traces", response_model=LangfuseTracesResponse)
250
+ @app.get("/v1/traces", response_model=LangfuseTracesResponse)
251
+ @app.get("/project_id/{project_id}/traces", response_model=LangfuseTracesResponse)
252
+ @app.get("/v1/project_id/{project_id}/traces", response_model=LangfuseTracesResponse)
253
+ async def get_langfuse_traces(
254
+ request: Request,
255
+ params: TracesParams = Depends(get_traces_params),
256
+ project_id: Optional[str] = None,
257
+ config: ProxyConfig = Depends(get_config),
258
+ redis_client: redis.Redis = Depends(get_redis),
259
+ _: None = Depends(require_auth),
260
+ ) -> LangfuseTracesResponse:
261
+ if project_id is not None:
262
+ params.project_id = project_id
263
+ return await fetch_langfuse_traces(
264
+ config=config,
265
+ redis_client=redis_client,
266
+ request=request,
267
+ params=params,
268
+ )
269
+
270
+ # Health
271
+ @app.get("/health")
272
+ async def health():
273
+ return {"status": "healthy", "service": "metadata-proxy"}
274
+
275
+ # Catch-all
276
+ @app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH"])
277
+ async def catch_all_proxy(
278
+ path: str,
279
+ request: Request,
280
+ config: ProxyConfig = Depends(get_config),
281
+ ):
282
+ return await proxy_to_litellm(config, path, request)
283
+
284
+ return app
@@ -0,0 +1,18 @@
1
+ from abc import ABC, abstractmethod
2
+ import logging
3
+ from fastapi import Request
4
+ from fastapi import HTTPException
5
+ import httpx
6
+ from typing import Optional
7
+
8
+ logger = logging.getLogger(__name__)
9
+
10
+
11
+ class AuthProvider(ABC):
12
+ @abstractmethod
13
+ def validate_and_return_account_id(self, request: Request) -> Optional[str]: ...
14
+
15
+
16
+ class NoAuthProvider(AuthProvider):
17
+ def validate_and_return_account_id(self, request: Request) -> Optional[str]:
18
+ return None