eval-protocol 0.3.29__tar.gz → 0.3.31__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 (481) hide show
  1. {eval_protocol-0.3.29/eval_protocol.egg-info → eval_protocol-0.3.31}/PKG-INFO +2 -1
  2. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/_version.py +3 -3
  3. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/fireworks_tracing.py +74 -1
  4. eval_protocol-0.3.31/eval_protocol/adapters/lp_deserializer.py +41 -0
  5. eval_protocol-0.3.31/eval_protocol/adapters/r3_deserializer.py +41 -0
  6. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/remote_rollout_processor.py +44 -37
  7. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/tracing_utils.py +67 -6
  8. eval_protocol-0.3.31/eval_protocol/tracing/__init__.py +31 -0
  9. eval_protocol-0.3.31/eval_protocol/tracing/logprobs.py +126 -0
  10. eval_protocol-0.3.31/eval_protocol/tracing/prompt_token_ids.py +34 -0
  11. eval_protocol-0.3.31/eval_protocol/tracing/registry.py +88 -0
  12. eval_protocol-0.3.31/eval_protocol/tracing/router_replay.py +202 -0
  13. eval_protocol-0.3.31/eval_protocol/tracing/types.py +41 -0
  14. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/types/remote_rollout_processor.py +1 -0
  15. {eval_protocol-0.3.29 → eval_protocol-0.3.31/eval_protocol.egg-info}/PKG-INFO +2 -1
  16. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol.egg-info/SOURCES.txt +8 -0
  17. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol.egg-info/requires.txt +1 -0
  18. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/pyproject.toml +1 -0
  19. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/LICENSE +0 -0
  20. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/README.md +0 -0
  21. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/development/__init__.py +0 -0
  22. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/development/normalize_sandbox_fusion.py +0 -0
  23. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/development/utils/__init__.py +0 -0
  24. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/development/utils/generate_api_key.py +0 -0
  25. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/development/utils/subprocess_manager.py +0 -0
  26. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/__init__.py +0 -0
  27. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/__main__.py +0 -0
  28. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/__init__.py +0 -0
  29. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/base.py +0 -0
  30. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/bigquery.py +0 -0
  31. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/braintrust.py +0 -0
  32. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/dataframe.py +0 -0
  33. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/huggingface.py +0 -0
  34. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/langchain.py +0 -0
  35. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/langfuse.py +0 -0
  36. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/langsmith.py +0 -0
  37. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/openai_responses.py +0 -0
  38. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/trl.py +0 -0
  39. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/utils.py +0 -0
  40. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/adapters/weave.py +0 -0
  41. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/__init__.py +0 -0
  42. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/models.py +0 -0
  43. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/orchestrator.py +0 -0
  44. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resource_abc.py +0 -0
  45. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resource_pool.py +0 -0
  46. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/__init__.py +0 -0
  47. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/bfcl_envs/__init__.py +0 -0
  48. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/bfcl_envs/gorilla_file_system.py +0 -0
  49. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/bfcl_envs/math_api.py +0 -0
  50. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/bfcl_envs/posting_api.py +0 -0
  51. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/bfcl_sim_api_resource.py +0 -0
  52. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/docker_resource.py +0 -0
  53. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/filesystem_resource.py +0 -0
  54. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/python_state_resource.py +0 -0
  55. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/resources/sql_resource.py +0 -0
  56. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/task_manager.py +0 -0
  57. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/agent/tool_registry.py +0 -0
  58. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/auth.py +0 -0
  59. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/__init__.py +0 -0
  60. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/data/airline_dataset.jsonl +0 -0
  61. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/data/retail_dataset.jsonl +0 -0
  62. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_aime25.py +0 -0
  63. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_frozen_lake.py +0 -0
  64. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_glm_streaming_compliance.py +0 -0
  65. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_gpqa.py +0 -0
  66. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_livebench_data_analysis.py +0 -0
  67. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_tau_bench_airline.py +0 -0
  68. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/benchmarks/test_tau_bench_retail.py +0 -0
  69. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli.py +0 -0
  70. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/__init__.py +0 -0
  71. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/agent_eval_cmd.py +0 -0
  72. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/common.py +0 -0
  73. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/create_rft.py +0 -0
  74. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/export_docs.py +0 -0
  75. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/local_test.py +0 -0
  76. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/logs.py +0 -0
  77. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/run_eval_cmd.py +0 -0
  78. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/upload.py +0 -0
  79. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/cli_commands/utils.py +0 -0
  80. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/common_utils.py +0 -0
  81. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/config.py +0 -0
  82. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/data_loader/__init__.py +0 -0
  83. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/data_loader/dynamic_data_loader.py +0 -0
  84. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/data_loader/factory_data_loader.py +0 -0
  85. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/data_loader/inline_data_loader.py +0 -0
  86. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/data_loader/jsonl_data_loader.py +0 -0
  87. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/data_loader/models.py +0 -0
  88. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/dataset_logger/__init__.py +0 -0
  89. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/dataset_logger/dataset_logger.py +0 -0
  90. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/dataset_logger/local_fs_dataset_logger_adapter.py +0 -0
  91. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/dataset_logger/sqlite_dataset_logger_adapter.py +0 -0
  92. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/dataset_logger/sqlite_evaluation_row_store.py +0 -0
  93. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/datasets/__init__.py +0 -0
  94. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/datasets/loader.py +0 -0
  95. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/directory_utils.py +0 -0
  96. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/evaluation.py +0 -0
  97. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/event_bus/__init__.py +0 -0
  98. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/event_bus/event_bus.py +0 -0
  99. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/event_bus/logger.py +0 -0
  100. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/event_bus/sqlite_event_bus.py +0 -0
  101. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/event_bus/sqlite_event_bus_database.py +0 -0
  102. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/exceptions.py +0 -0
  103. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/execution/__init__.py +0 -0
  104. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/execution/pipeline.py +0 -0
  105. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/fireworks_rft.py +0 -0
  106. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/gcp_tools.py +0 -0
  107. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/generation/cache.py +0 -0
  108. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/generation/clients/base.py +0 -0
  109. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/generation/clients.py +0 -0
  110. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/generic_server.py +0 -0
  111. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/get_pep440_version.py +0 -0
  112. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/human_id/__init__.py +0 -0
  113. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/human_id/dictionary.py +0 -0
  114. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/__init__.py +0 -0
  115. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/deepeval.py +0 -0
  116. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/fireworks_v1_completions_client.py +0 -0
  117. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/openai_rft.py +0 -0
  118. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/openeval.py +0 -0
  119. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/tinker_cookbook.py +0 -0
  120. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/tinker_rollout_processor.py +0 -0
  121. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/integrations/trl.py +0 -0
  122. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/__init__.py +0 -0
  123. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/elasticsearch_client.py +0 -0
  124. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/elasticsearch_direct_http_handler.py +0 -0
  125. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/elasticsearch_index_manager.py +0 -0
  126. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/fireworks_tracing_http_handler.py +0 -0
  127. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/init.py +0 -0
  128. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/rollout_context.py +0 -0
  129. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/rollout_id_filter.py +0 -0
  130. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/log_utils/util.py +0 -0
  131. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/logging_utils.py +0 -0
  132. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/__init__.py +0 -0
  133. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/adapter.py +0 -0
  134. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/client/__init__.py +0 -0
  135. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/client/connection.py +0 -0
  136. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/clients.py +0 -0
  137. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/execution/__init__.py +0 -0
  138. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/execution/base_policy.py +0 -0
  139. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/execution/manager.py +0 -0
  140. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/execution/policy.py +0 -0
  141. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/execution/vllm_policy.py +0 -0
  142. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/grid_renderer.py +0 -0
  143. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/mcp_multi_client.py +0 -0
  144. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/mcpgym.py +0 -0
  145. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/process_manager.py +0 -0
  146. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/session/__init__.py +0 -0
  147. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/session/manager.py +0 -0
  148. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/simple_process_manager.py +0 -0
  149. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp/simulation_server.py +0 -0
  150. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/__init__.py +0 -0
  151. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/config.py +0 -0
  152. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/main.py +0 -0
  153. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/orchestration/__init__.py +0 -0
  154. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/orchestration/base_client.py +0 -0
  155. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/orchestration/local_docker_client.py +0 -0
  156. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_agent/orchestration/stdio_mcp_client_helper.py +0 -0
  157. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_env.py +0 -0
  158. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/__init__.py +0 -0
  159. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/frozen_lake/frozen_lake_adapter.py +0 -0
  160. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/frozen_lake/frozen_lake_mcp.py +0 -0
  161. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/frozen_lake/server.py +0 -0
  162. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/README.md +0 -0
  163. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/__init__.py +0 -0
  164. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/airplane_environment/airline_environment.py +0 -0
  165. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/mock_environment/mock_environment.py +0 -0
  166. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/retail_environment/retail_environment.py +0 -0
  167. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/server.py +0 -0
  168. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/tau2_mcp.py +0 -0
  169. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/tests/system_prompts/airline_agent_system_prompt.md +0 -0
  170. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/tests/system_prompts/mock_agent_system_prompt.md +0 -0
  171. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/tests/system_prompts/retail_agent_system_prompt.md +0 -0
  172. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/mcp_servers/tau2/tests/test_tau2_e2e.py +0 -0
  173. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/models.py +0 -0
  174. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/packaging.py +0 -0
  175. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/platform_api.py +0 -0
  176. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/playback_policy.py +0 -0
  177. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/__init__.py +0 -0
  178. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/__init__.py +0 -0
  179. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/app.py +0 -0
  180. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/auth.py +0 -0
  181. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/langfuse.py +0 -0
  182. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/litellm.py +0 -0
  183. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/main.py +0 -0
  184. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/models.py +0 -0
  185. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/proxy/proxy_core/redis_utils.py +0 -0
  186. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/__init__.py +0 -0
  187. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/buffer.py +0 -0
  188. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_agent_rollout_processor.py +0 -0
  189. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_dataset_adapter.py +0 -0
  190. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_klavis_sandbox_rollout_processor.py +0 -0
  191. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_langchain_rollout_processor.py +0 -0
  192. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_mcp_gym_rollout_processor.py +0 -0
  193. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_no_op_rollout_processor.py +0 -0
  194. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_pydantic_ai_rollout_processor.py +0 -0
  195. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/default_single_turn_rollout_process.py +0 -0
  196. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/dual_mode_wrapper.py +0 -0
  197. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/elasticsearch_setup.py +0 -0
  198. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/evaluation_test.py +0 -0
  199. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/evaluation_test_postprocess.py +0 -0
  200. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/evaluation_test_utils.py +0 -0
  201. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/exception_config.py +0 -0
  202. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/execution.py +0 -0
  203. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/generate_parameter_combinations.py +0 -0
  204. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/github_action_rollout_processor.py +0 -0
  205. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/handle_persist_flow.py +0 -0
  206. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/integrations/openenv_trl_vllm.py +0 -0
  207. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/openenv_rollout_processor.py +0 -0
  208. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/parameterize.py +0 -0
  209. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/plugin.py +0 -0
  210. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/priority_scheduler.py +0 -0
  211. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/rollout_processor.py +0 -0
  212. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/rollout_result_post_processor.py +0 -0
  213. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/store_experiment_link.py +0 -0
  214. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/store_results_url.py +0 -0
  215. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/types.py +0 -0
  216. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/utils.py +0 -0
  217. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/pytest/validate_signature.py +0 -0
  218. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/__init__.py +0 -0
  219. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/__init__.py +0 -0
  220. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/llm_judge.py +0 -0
  221. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/llm_judge_braintrust.py +0 -0
  222. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/llm_judge_langfuse.py +0 -0
  223. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/llm_judge_langsmith.py +0 -0
  224. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/llm_judge_openai_responses.py +0 -0
  225. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/aha_judge/utils.py +0 -0
  226. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/llm_judge.py +0 -0
  227. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/llm_judge_braintrust.py +0 -0
  228. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/svg_agent/evaluator/test_svgagent.py +0 -0
  229. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/svg_agent/evaluator/utils.py +0 -0
  230. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/svg_agent/vercel_svg_server/api/init.py +0 -0
  231. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/quickstart/utils.py +0 -0
  232. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/resources.py +0 -0
  233. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/reward_function.py +0 -0
  234. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/__init__.py +0 -0
  235. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/accuracy.py +0 -0
  236. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/accuracy_length.py +0 -0
  237. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/apps_coding_reward.py +0 -0
  238. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/apps_execution_utils.py +0 -0
  239. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/apps_testing_util.py +0 -0
  240. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/bfcl_reward.py +0 -0
  241. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/code_execution.py +0 -0
  242. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/code_execution_utils.py +0 -0
  243. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/cpp_code.py +0 -0
  244. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/deepcoder_reward.py +0 -0
  245. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/format.py +0 -0
  246. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/function_calling.py +0 -0
  247. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/json_schema.py +0 -0
  248. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/language_consistency.py +0 -0
  249. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/lean_prover.py +0 -0
  250. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/length.py +0 -0
  251. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/list_comparison_math_reward.py +0 -0
  252. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/math.py +0 -0
  253. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/multiple_choice_math_reward.py +0 -0
  254. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/reasoning_steps.py +0 -0
  255. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/repetition.py +0 -0
  256. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rewards/tag_count.py +0 -0
  257. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/rl_processing.py +0 -0
  258. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/server.py +0 -0
  259. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/stats/__init__.py +0 -0
  260. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/stats/confidence_intervals.py +0 -0
  261. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/training/__init__.py +0 -0
  262. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/training/gepa_trainer.py +0 -0
  263. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/training/gepa_utils.py +0 -0
  264. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/training/trainer.py +0 -0
  265. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/training/utils.py +0 -0
  266. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/typed_interface.py +0 -0
  267. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/types/__init__.py +0 -0
  268. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/types/errors.py +0 -0
  269. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/types/types.py +0 -0
  270. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/__init__.py +0 -0
  271. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/batch_evaluation.py +0 -0
  272. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/batch_transformation.py +0 -0
  273. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/browser_utils.py +0 -0
  274. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/check_server_status.py +0 -0
  275. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/dataset_helpers.py +0 -0
  276. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/evaluation_row_utils.py +0 -0
  277. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/logs_models.py +0 -0
  278. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/logs_server.py +0 -0
  279. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/module_loader.py +0 -0
  280. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/packaging_utils.py +0 -0
  281. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/show_results_url.py +0 -0
  282. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/static_policy.py +0 -0
  283. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/subprocess_utils.py +0 -0
  284. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol/utils/vite_server.py +0 -0
  285. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol.egg-info/dependency_links.txt +0 -0
  286. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol.egg-info/entry_points.txt +0 -0
  287. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/eval_protocol.egg-info/top_level.txt +0 -0
  288. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/setup.cfg +0 -0
  289. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/setup.py +0 -0
  290. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_accuracy.py +0 -0
  291. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_accuracy_length.py +0 -0
  292. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_adapters_e2e.py +0 -0
  293. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_agent_orchestrator.py +0 -0
  294. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_agent_resources.py +0 -0
  295. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_auth.py +0 -0
  296. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_batch_evaluation.py +0 -0
  297. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_cli_agent.py +0 -0
  298. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_cli_args.py +0 -0
  299. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_cli_create_rft.py +0 -0
  300. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_cli_local_test.py +0 -0
  301. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_cli_startup_benchmark.py +0 -0
  302. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_code_execution.py +0 -0
  303. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_config.py +0 -0
  304. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_control_plane_separation.py +0 -0
  305. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_cpp_code.py +0 -0
  306. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_data_driven_task_manager.py +0 -0
  307. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_deepcoder_reward.py +0 -0
  308. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_deepeval_integration.py +0 -0
  309. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_directory_utils.py +0 -0
  310. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_e2b_integration.py +0 -0
  311. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_e2b_js_integration.py +0 -0
  312. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_edge_cases.py +0 -0
  313. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_ep_upload_e2e.py +0 -0
  314. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_eval_protocol_import.py +0 -0
  315. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_evaluation.py +0 -0
  316. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_evaluation_postprocess.py +0 -0
  317. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_event_bus.py +0 -0
  318. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_event_bus_helper.py +0 -0
  319. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_examples_end_to_end.py +0 -0
  320. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_exception_config.py +0 -0
  321. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_exceptions.py +0 -0
  322. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_fireworks_api.py +0 -0
  323. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_fireworks_v1_completions_client.py +0 -0
  324. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_format.py +0 -0
  325. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_fractional_code.py +0 -0
  326. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_function_calling.py +0 -0
  327. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_gcp_tools.py +0 -0
  328. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_generic_server.py +0 -0
  329. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_human_id.py +0 -0
  330. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_integration.py +0 -0
  331. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_json_schema.py +0 -0
  332. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_kwargs_validation.py +0 -0
  333. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_language_consistency.py +0 -0
  334. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_lean_prover.py +0 -0
  335. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_lean_prover_runner.py +0 -0
  336. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_length.py +0 -0
  337. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_list_comparison_math_reward.py +0 -0
  338. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_litellm_policy_provider_fields.py +0 -0
  339. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_logs_server.py +0 -0
  340. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_logs_server_simple.py +0 -0
  341. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_math.py +0 -0
  342. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_message_field_filtering.py +0 -0
  343. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_minimal.py +0 -0
  344. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_models.py +0 -0
  345. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_models_rl.py +0 -0
  346. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_multiple_choice_math_reward.py +0 -0
  347. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_n_variant_batch_integration.py +0 -0
  348. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_n_variant_integration.py +0 -0
  349. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_no_implicit_dotenv.py +0 -0
  350. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_openai_compatibility.py +0 -0
  351. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_openai_rft_integration.py +0 -0
  352. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_openeval_integration.py +0 -0
  353. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_packaging.py +0 -0
  354. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_parallel_rollouts.py +0 -0
  355. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_platform_api.py +0 -0
  356. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_priority_scheduler.py +0 -0
  357. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_quickstart_utils.py +0 -0
  358. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_readiness.py +0 -0
  359. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_reasoning_steps.py +0 -0
  360. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_repetition.py +0 -0
  361. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_repetition_debug.py +0 -0
  362. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_retry_mechanism.py +0 -0
  363. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_reward_function.py +0 -0
  364. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_reward_protocol_import.py +0 -0
  365. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_rl_processing.py +0 -0
  366. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_rollout_control_plane_integration.py +0 -0
  367. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_rollout_logprobs.py +0 -0
  368. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_server.py +0 -0
  369. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_show_results_url.py +0 -0
  370. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_sqlite_hardening.py +0 -0
  371. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_status_migration_changes.py +0 -0
  372. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_status_migration_integration.py +0 -0
  373. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_status_model.py +0 -0
  374. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_tag_count.py +0 -0
  375. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_tau_bench_airline_smoke.py +0 -0
  376. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_training_utils.py +0 -0
  377. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_typed_interface.py +0 -0
  378. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_typed_interface_rl.py +0 -0
  379. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_upload_entrypoint.py +0 -0
  380. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_url_handling.py +0 -0
  381. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/tests/test_vite_server.py +0 -0
  382. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/__init__.py +0 -0
  383. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/agent/__init__.py +0 -0
  384. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/agent/base.py +0 -0
  385. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/agent/llm_agent.py +0 -0
  386. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/api_service/__init__.py +0 -0
  387. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/api_service/api_config.py +0 -0
  388. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/api_service/data_model.py +0 -0
  389. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/api_service/simulation_service.py +0 -0
  390. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/cli.py +0 -0
  391. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/config.py +0 -0
  392. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/airline/policy.md +0 -0
  393. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/mock/policy.md +0 -0
  394. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/mock/policy_solo.md +0 -0
  395. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/retail/policy.md +0 -0
  396. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/telecom/main_policy.md +0 -0
  397. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/telecom/main_policy_solo.md +0 -0
  398. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/telecom/tech_support_manual.md +0 -0
  399. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/telecom/tech_support_workflow.md +0 -0
  400. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/domains/telecom/tech_support_workflow_solo.md +0 -0
  401. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/user_simulator/simulation_guidelines.md +0 -0
  402. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data/user_simulator/simulation_guidelines_tools.md +0 -0
  403. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data_model/__init__.py +0 -0
  404. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data_model/message.py +0 -0
  405. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data_model/simulation.py +0 -0
  406. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/data_model/tasks.py +0 -0
  407. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/__init__.py +0 -0
  408. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/airline/__init__.py +0 -0
  409. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/airline/data_model.py +0 -0
  410. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/airline/environment.py +0 -0
  411. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/airline/tools.py +0 -0
  412. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/airline/utils.py +0 -0
  413. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/mock/__init__.py +0 -0
  414. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/mock/data_model.py +0 -0
  415. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/mock/environment.py +0 -0
  416. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/mock/tools.py +0 -0
  417. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/mock/utils.py +0 -0
  418. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/retail/__init__.py +0 -0
  419. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/retail/data_model.py +0 -0
  420. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/retail/environment.py +0 -0
  421. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/retail/tools.py +0 -0
  422. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/retail/utils.py +0 -0
  423. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/__init__.py +0 -0
  424. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/data_model.py +0 -0
  425. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/environment.py +0 -0
  426. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/__init__.py +0 -0
  427. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/const.py +0 -0
  428. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/create_tasks.py +0 -0
  429. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/manager.py +0 -0
  430. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/mms_issues.py +0 -0
  431. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/mobile_data_issues.py +0 -0
  432. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/service_issues.py +0 -0
  433. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tasks/utils.py +0 -0
  434. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/tools.py +0 -0
  435. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/user_data_model.py +0 -0
  436. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/user_tools.py +0 -0
  437. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/domains/telecom/utils.py +0 -0
  438. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/__init__.py +0 -0
  439. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/db.py +0 -0
  440. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/environment.py +0 -0
  441. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/server.py +0 -0
  442. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/tool.py +0 -0
  443. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/toolkit.py +0 -0
  444. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/environment/utils/interface_agent.py +0 -0
  445. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/__init__.py +0 -0
  446. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/evaluator.py +0 -0
  447. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/evaluator_action.py +0 -0
  448. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/evaluator_base.py +0 -0
  449. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/evaluator_communicate.py +0 -0
  450. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/evaluator_env.py +0 -0
  451. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/evaluator/evaluator_nl_assertions.py +0 -0
  452. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/metrics/__init__.py +0 -0
  453. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/metrics/agent_metrics.py +0 -0
  454. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/metrics/break_down_metrics.py +0 -0
  455. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/orchestrator/__init__.py +0 -0
  456. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/orchestrator/environment_manager.py +0 -0
  457. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/orchestrator/orchestrator.py +0 -0
  458. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/orchestrator/utils.py +0 -0
  459. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/registry.py +0 -0
  460. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/run.py +0 -0
  461. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/scripts/__init__.py +0 -0
  462. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/scripts/check_data.py +0 -0
  463. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/scripts/show_domain_doc.py +0 -0
  464. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/scripts/start_servers.py +0 -0
  465. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/scripts/view_simulations.py +0 -0
  466. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/user/__init__.py +0 -0
  467. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/user/base.py +0 -0
  468. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/user/user_simulator.py +0 -0
  469. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/utils/__init__.py +0 -0
  470. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/utils/display.py +0 -0
  471. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/utils/io_utils.py +0 -0
  472. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/utils/llm_utils.py +0 -0
  473. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/utils/pydantic_utils.py +0 -0
  474. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vendor/tau2/utils/utils.py +0 -0
  475. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/versioneer.py +0 -0
  476. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vite-app/dist/assets/favicon-BkAAWQga.png +0 -0
  477. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vite-app/dist/assets/index-DFeF7AG_.js +0 -0
  478. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vite-app/dist/assets/index-DFeF7AG_.js.map +0 -0
  479. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vite-app/dist/assets/index-DvKW7FQL.css +0 -0
  480. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/vite-app/dist/assets/logo-light-BprIBJQW.png +0 -0
  481. {eval_protocol-0.3.29 → eval_protocol-0.3.31}/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.3.29
3
+ Version: 0.3.31
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
@@ -40,6 +40,7 @@ Requires-Dist: addict>=2.4.0
40
40
  Requires-Dist: deepdiff>=6.0.0
41
41
  Requires-Dist: websockets>=15.0.1
42
42
  Requires-Dist: fastapi>=0.116.1
43
+ Requires-Dist: zstandard>=0.19.0
43
44
  Provides-Extra: dev
44
45
  Requires-Dist: build; extra == "dev"
45
46
  Requires-Dist: twine; extra == "dev"
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-04-28T20:17:42-0700",
11
+ "date": "2026-06-19T13:02:26-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "6b9bea9979400c7e0d2eec9f4f167a98d4a2a057",
15
- "version": "0.3.29"
14
+ "full-revisionid": "08e9b85f0315f420f5977c04549b56a406a826d5",
15
+ "version": "0.3.31"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -15,6 +15,7 @@ from typing import Any, Dict, List, Optional, Protocol
15
15
  import os
16
16
 
17
17
  from eval_protocol.models import EvaluationRow, InputMetadata, ExecutionMetadata, Message
18
+ from eval_protocol.tracing import PayloadType, decode_payloads
18
19
  from .base import BaseAdapter
19
20
  from .utils import extract_messages_from_data
20
21
  from ..common_utils import get_user_agent
@@ -100,13 +101,50 @@ def convert_trace_dict_to_evaluation_row(
100
101
  ):
101
102
  break # Break early if we've found all the metadata we need
102
103
 
104
+ # Decoding lives in eval_protocol.tracing; here we only map results onto the row.
105
+ payloads = trace.get("payloads")
106
+ if isinstance(payloads, dict):
107
+ decoded = decode_payloads(
108
+ payloads,
109
+ on_error=lambda pt, e: logger.warning(
110
+ "Failed to decode %s payload for trace %s: %s", pt.value, trace.get("id"), e
111
+ ),
112
+ )
113
+ if decoded and execution_metadata.extra is None:
114
+ execution_metadata.extra = {}
115
+
116
+ if (dp := decoded.get(PayloadType.ROUTER_REPLAY)) is not None:
117
+ execution_metadata.extra["routing_matrices"] = dp.value
118
+ execution_metadata.extra["routing_metadata"] = dp.metadata
119
+
120
+ if (dp := decoded.get(PayloadType.LOGPROBS)) is not None:
121
+ logprobs = dp.value
122
+ token_ids = dp.token_ids
123
+ execution_metadata.extra["completion_logprobs"] = logprobs
124
+ if token_ids is not None:
125
+ execution_metadata.extra["completion_token_ids"] = token_ids
126
+ execution_metadata.extra["logprobs_metadata"] = dp.metadata
127
+
128
+ for i in range(len(messages) - 1, -1, -1):
129
+ if messages[i].role == "assistant":
130
+ content_entries = [{"logprob": lp} for lp in logprobs]
131
+ if token_ids is not None:
132
+ for entry, tid in zip(content_entries, token_ids):
133
+ entry["token_id"] = tid
134
+ messages[i].logprobs = {"content": content_entries}
135
+ break
136
+
137
+ if (dp := decoded.get(PayloadType.PROMPT_TOKEN_IDS)) is not None:
138
+ execution_metadata.extra["prompt_token_ids"] = dp.value
139
+ execution_metadata.extra["prompt_token_ids_metadata"] = dp.metadata
140
+
103
141
  return EvaluationRow(
104
142
  messages=messages,
105
143
  tools=tools,
106
144
  input_metadata=InputMetadata(
107
145
  row_id=row_id,
108
146
  session_data={
109
- "langfuse_trace_id": trace.get("id"), # Store the trace ID here
147
+ "langfuse_trace_id": trace.get("id"),
110
148
  },
111
149
  ),
112
150
  execution_metadata=execution_metadata,
@@ -375,6 +413,37 @@ class FireworksTracingAdapter(BaseAdapter):
375
413
  )
376
414
  return results
377
415
 
416
+ async def async_get_status(self, session: aiohttp.ClientSession, rollout_id: str) -> Optional[Dict[str, Any]]:
417
+ """Fetch rollout status from the lightweight /status endpoint.
418
+
419
+ Returns the parsed JSON response or None if the status is not yet available.
420
+ Response shape: {"rollout_id": "...", "status": {"code": ...} | null, "extras": {...} | null}
421
+ """
422
+ headers = {
423
+ "Authorization": f"Bearer {self._get_api_key()}",
424
+ "User-Agent": get_user_agent(),
425
+ }
426
+ params: Dict[str, Any] = {"rollout_id": rollout_id}
427
+ timeout = aiohttp.ClientTimeout(total=self.timeout)
428
+
429
+ urls_to_try = [f"{self.base_url}/v1/status", f"{self.base_url}/status"]
430
+ last_error: Optional[str] = None
431
+ for url in urls_to_try:
432
+ try:
433
+ async with session.get(url, params=params, headers=headers, timeout=timeout) as resp:
434
+ if resp.status == 404:
435
+ last_error = f"404 for {url}"
436
+ continue
437
+ resp.raise_for_status()
438
+ return (await resp.json(content_type=None)) or {}
439
+ except (aiohttp.ClientError, asyncio.TimeoutError, json.JSONDecodeError) as e:
440
+ last_error = str(e)
441
+ continue
442
+
443
+ if last_error:
444
+ logger.error("Failed to fetch status from Fireworks (tried %s): %s", urls_to_try, last_error)
445
+ return None
446
+
378
447
  def get_evaluation_rows(
379
448
  self,
380
449
  tags: List[str],
@@ -395,6 +464,7 @@ class FireworksTracingAdapter(BaseAdapter):
395
464
  max_retries: int = 3,
396
465
  span_name: Optional[str] = None,
397
466
  converter: Optional[TraceDictConverter] = None,
467
+ include_payloads: bool = False,
398
468
  ) -> List[EvaluationRow]:
399
469
  """Pull traces from Langfuse via proxy and convert to EvaluationRow format.
400
470
 
@@ -418,6 +488,8 @@ class FireworksTracingAdapter(BaseAdapter):
418
488
  max_retries: Max retry attempts used by proxy (default: 3)
419
489
  converter: Optional custom converter implementing TraceDictConverter protocol.
420
490
  If provided, this will be used instead of the default conversion logic.
491
+ include_payloads: If True, request payload data (e.g., router replay)
492
+ from the gateway and decompress it into the returned EvaluationRows.
421
493
 
422
494
  Returns:
423
495
  List[EvaluationRow]: Converted evaluation rows
@@ -448,6 +520,7 @@ class FireworksTracingAdapter(BaseAdapter):
448
520
  "to_timestamp": to_timestamp.isoformat() if to_timestamp else None,
449
521
  "sleep_between_gets": sleep_between_gets,
450
522
  "max_retries": max_retries,
523
+ "include_payloads": include_payloads if include_payloads else None,
451
524
  }
452
525
 
453
526
  # Remove None values
@@ -0,0 +1,41 @@
1
+ """Deprecated compatibility shim for ``eval_protocol.tracing.logprobs``.
2
+
3
+ Import from ``eval_protocol.tracing.logprobs`` (or ``decode_payloads`` from
4
+ ``eval_protocol.tracing``) instead. This module re-exports the LP/v1 helpers
5
+ that lived here before the tracing package refactor.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import warnings
11
+
12
+ warnings.warn(
13
+ "eval_protocol.adapters.lp_deserializer is deprecated; "
14
+ "import from eval_protocol.tracing.logprobs instead.",
15
+ DeprecationWarning,
16
+ stacklevel=2,
17
+ )
18
+
19
+ from eval_protocol.tracing.logprobs import ( # noqa: E402
20
+ ENTRY_FORMAT,
21
+ ENTRY_SIZE,
22
+ HEADER_FORMAT,
23
+ HEADER_SIZE,
24
+ HEADER_VERSION,
25
+ MAGIC,
26
+ MISSING_TOKEN_ID,
27
+ decompress_and_parse_lp,
28
+ parse_logprobs,
29
+ )
30
+
31
+ __all__ = [
32
+ "ENTRY_FORMAT",
33
+ "ENTRY_SIZE",
34
+ "HEADER_FORMAT",
35
+ "HEADER_SIZE",
36
+ "HEADER_VERSION",
37
+ "MAGIC",
38
+ "MISSING_TOKEN_ID",
39
+ "decompress_and_parse_lp",
40
+ "parse_logprobs",
41
+ ]
@@ -0,0 +1,41 @@
1
+ """Deprecated compatibility shim for ``eval_protocol.tracing.router_replay``.
2
+
3
+ Import from ``eval_protocol.tracing.router_replay`` (or ``decode_payloads`` from
4
+ ``eval_protocol.tracing``) instead. This module re-exports the R3/v1 helpers
5
+ that lived here before the tracing package refactor.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import warnings
11
+
12
+ warnings.warn(
13
+ "eval_protocol.adapters.r3_deserializer is deprecated; "
14
+ "import from eval_protocol.tracing.router_replay instead.",
15
+ DeprecationWarning,
16
+ stacklevel=2,
17
+ )
18
+
19
+ from eval_protocol.tracing.router_replay import ( # noqa: E402
20
+ BITS_PER_BYTE,
21
+ HEADER_FORMAT,
22
+ HEADER_SIZE,
23
+ MAGIC,
24
+ _RoutingDtype,
25
+ _SelectorMode,
26
+ _parse_header,
27
+ _read_bitmap_positions,
28
+ decompress_and_parse_r3,
29
+ )
30
+
31
+ __all__ = [
32
+ "BITS_PER_BYTE",
33
+ "HEADER_FORMAT",
34
+ "HEADER_SIZE",
35
+ "MAGIC",
36
+ "_RoutingDtype",
37
+ "_SelectorMode",
38
+ "_parse_header",
39
+ "_read_bitmap_positions",
40
+ "decompress_and_parse_r3",
41
+ ]
@@ -35,11 +35,13 @@ class RemoteRolloutProcessor(RolloutProcessor):
35
35
  model_base_url: str = "https://tracing.fireworks.ai",
36
36
  poll_interval: float = 1.0,
37
37
  timeout_seconds: float = 120.0,
38
+ include_payloads: bool = False,
38
39
  ):
39
40
  # Prefer constructor-provided configuration. These can be overridden via
40
41
  # config.kwargs at call time for backward compatibility.
41
42
  self._remote_base_url = remote_base_url
42
43
  self._model_base_url = model_base_url
44
+ self._include_payloads = include_payloads
43
45
  if os.getenv("EP_REMOTE_ROLLOUT_PROCESSOR_BASE_URL"):
44
46
  self._remote_base_url = os.getenv("EP_REMOTE_ROLLOUT_PROCESSOR_BASE_URL")
45
47
  _ep_model_base_url = os.getenv("EP_MODEL_BASE_URL")
@@ -122,45 +124,46 @@ class RemoteRolloutProcessor(RolloutProcessor):
122
124
 
123
125
  while time.time() < deadline:
124
126
  session = self._get_or_create_session()
125
- completed_logs = await self._tracing_adapter.async_search_logs(
126
- session, tags=[f"rollout_id:{row.execution_metadata.rollout_id}"]
127
+ status_result = await self._tracing_adapter.async_get_status(
128
+ session,
129
+ rollout_id=row.execution_metadata.rollout_id,
127
130
  )
128
- # Filter for logs that actually have status information
129
- status_logs = []
130
- for log in completed_logs:
131
- status_dict = log.get("status")
132
- if status_dict and isinstance(status_dict, dict) and "code" in status_dict:
133
- status_logs.append(log)
134
-
135
- if status_logs:
136
- if len(status_logs) > 1:
137
- logger.warning(
138
- "Found %s status logs for rollout %s; expected at most 1. Using the first one: %s",
139
- len(status_logs),
140
- row.execution_metadata.rollout_id,
141
- status_logs[0],
142
- )
143
- # Use the first log with status information
144
- status_log = status_logs[0]
145
- status_dict = status_log.get("status")
146
- raw_extras = status_log.get("extras") or {}
147
- status_extras = {
148
- k: v for k, v in raw_extras.items() if k not in ("logger_name", "level", "timestamp")
149
- }
131
+ status = (status_result or {}).get("status")
132
+ if isinstance(status, dict) and "code" in status:
133
+ status_code = status["code"]
134
+ if status_code == Status.Code.RUNNING:
135
+ await asyncio.sleep(poll_interval)
136
+ continue
150
137
 
151
138
  logger.info(
152
- f"Found status log for rollout {row.execution_metadata.rollout_id}: {status_log.get('message', '')}"
139
+ "Found status for rollout %s with code %s",
140
+ row.execution_metadata.rollout_id,
141
+ status_code,
153
142
  )
154
143
 
155
- status_code = status_dict.get("code")
156
- status_message = status_dict.get("message", "")
157
- status_details = status_dict.get("details", [])
158
-
159
- logger.info(
160
- f"Found Fireworks log for rollout {row.execution_metadata.rollout_id} with status code {status_code}"
144
+ # /status only returns the code; backfill message/details/extras from Logs once.
145
+ status_message: str = ""
146
+ status_details: list = []
147
+ status_extras: dict = {}
148
+ completed_logs = await self._tracing_adapter.async_search_logs(
149
+ session, tags=[f"rollout_id:{row.execution_metadata.rollout_id}"]
161
150
  )
151
+ # Pick the log row whose status code matches the terminal
152
+ # code from /status, so intermediate RUNNING checkpoints
153
+ # don't poison the backfill.
154
+ for log in completed_logs:
155
+ sd = log.get("status")
156
+ if isinstance(sd, dict) and sd.get("code") == status_code:
157
+ status_message = sd.get("message", "") or ""
158
+ status_details = sd.get("details", []) or []
159
+ raw_extras = log.get("extras") or {}
160
+ status_extras = {
161
+ k: v
162
+ for k, v in raw_extras.items()
163
+ if k not in ("logger_name", "level", "timestamp")
164
+ }
165
+ break
162
166
 
163
- # Create and raise exception if appropriate, preserving original message
164
167
  exception = exception_for_status_code(status_code, status_message)
165
168
  if exception is not None:
166
169
  raise exception
@@ -171,10 +174,11 @@ class RemoteRolloutProcessor(RolloutProcessor):
171
174
  details=status_details,
172
175
  )
173
176
 
174
- if row.execution_metadata.extra:
175
- row.execution_metadata.extra.update(status_extras)
176
- else:
177
- row.execution_metadata.extra = status_extras
177
+ if status_extras:
178
+ if row.execution_metadata.extra:
179
+ row.execution_metadata.extra.update(status_extras)
180
+ else:
181
+ row.execution_metadata.extra = status_extras
178
182
 
179
183
  logger.info("Stopping polling for rollout %s", row.execution_metadata.rollout_id)
180
184
  break
@@ -192,7 +196,10 @@ class RemoteRolloutProcessor(RolloutProcessor):
192
196
  row.execution_metadata.rollout_duration_seconds = time.perf_counter() - start_time
193
197
 
194
198
  def _update_with_trace() -> None:
195
- return update_row_with_remote_trace(row, default_fireworks_output_data_loader, model_base_url)
199
+ return update_row_with_remote_trace(
200
+ row, default_fireworks_output_data_loader, model_base_url,
201
+ include_payloads=self._include_payloads,
202
+ )
196
203
 
197
204
  await asyncio.to_thread(_update_with_trace) # Update row with remote trace in-place
198
205
  return row
@@ -22,9 +22,63 @@ def default_fireworks_output_data_loader(config: DataLoaderConfig) -> DynamicDat
22
22
  # Use EP_REMOTE_API_KEY for fetching remote traces, falling back to FIREWORKS_API_KEY
23
23
  api_key = os.environ.get("EP_REMOTE_API_KEY") or os.environ.get("FIREWORKS_API_KEY")
24
24
  adapter = FireworksTracingAdapter(base_url=base_url, api_key=api_key)
25
- return adapter.get_evaluation_rows(tags=[f"rollout_id:{config.rollout_id}"], max_retries=5)
25
+ return adapter.get_evaluation_rows(
26
+ tags=[f"rollout_id:{config.rollout_id}"],
27
+ max_retries=5,
28
+ include_payloads=config.include_payloads,
29
+ )
26
30
 
27
- return DynamicDataLoader(generators=[fetch_traces], preprocess_fn=filter_longest_conversation)
31
+ def preprocess_traces(rows: List[EvaluationRow]) -> List[EvaluationRow]:
32
+ filtered_rows = filter_longest_conversation(rows)
33
+ if config.include_payloads and filtered_rows:
34
+ _merge_payloads_into_longest_row(filtered_rows[0], rows)
35
+ return filtered_rows
36
+
37
+ return DynamicDataLoader(generators=[fetch_traces], preprocess_fn=preprocess_traces)
38
+
39
+
40
+ def _merge_payloads_into_longest_row(longest_row: EvaluationRow, rows: List[EvaluationRow]) -> None:
41
+ """
42
+ Preserve per-turn payload-derived metadata after selecting the longest trace row.
43
+
44
+ Each trace row carries payloads for its final assistant turn. The longest row
45
+ keeps the full conversation, while its top-level execution metadata remains
46
+ the payload metadata for the final completion for backward compatibility.
47
+ """
48
+ target_assistants = longest_row.get_assistant_messages()
49
+ assistant_turn_payloads = []
50
+
51
+ for row in sorted(rows, key=lambda item: len(item.messages)):
52
+ source = row.last_assistant_message()
53
+ source_turn_index = len(row.get_assistant_messages()) - 1
54
+ if source_turn_index < 0 or source_turn_index >= len(target_assistants):
55
+ continue
56
+
57
+ if source and source.logprobs and not target_assistants[source_turn_index].logprobs:
58
+ target_assistants[source_turn_index].logprobs = source.logprobs
59
+
60
+ extra = row.execution_metadata.extra or {}
61
+ turn_payload = {
62
+ key: extra[key]
63
+ for key in (
64
+ "completion_logprobs",
65
+ "completion_token_ids",
66
+ "prompt_token_ids",
67
+ "prompt_token_ids_metadata",
68
+ "logprobs_metadata",
69
+ "routing_matrices",
70
+ "routing_metadata",
71
+ )
72
+ if key in extra
73
+ }
74
+ if turn_payload:
75
+ turn_payload["assistant_turn_index"] = source_turn_index
76
+ assistant_turn_payloads.append(turn_payload)
77
+
78
+ if assistant_turn_payloads:
79
+ if longest_row.execution_metadata.extra is None:
80
+ longest_row.execution_metadata.extra = {}
81
+ longest_row.execution_metadata.extra["assistant_turn_payloads"] = assistant_turn_payloads
28
82
 
29
83
 
30
84
  def build_fireworks_tracing_url(
@@ -99,7 +153,7 @@ def build_init_request(
99
153
  if not completion_params_dict.get("model"):
100
154
  raise ValueError("Model must be provided in completion_params")
101
155
 
102
- # Extract base_url from completion_params
156
+ # Extract base_url from completion_params for tracing-gateway URL encoding
103
157
  completion_params_base_url: Optional[str] = completion_params_dict.get("base_url")
104
158
 
105
159
  # Strip non-OpenAI fields from messages
@@ -129,7 +183,7 @@ def build_init_request(
129
183
 
130
184
  # Build final model base URL with tracing metadata
131
185
  final_model_base_url = model_base_url
132
- if model_base_url and ("tracing.fireworks.ai" in model_base_url or model_base_url.startswith("http://localhost")):
186
+ if model_base_url and ("tracing.fireworks.ai" in model_base_url or model_base_url.startswith("http://localhost") or "litellm-gateway" in model_base_url):
133
187
  final_model_base_url = build_fireworks_tracing_url(model_base_url, meta, completion_params_base_url)
134
188
 
135
189
  # Extract API key from environment or completion_params
@@ -148,13 +202,20 @@ def build_init_request(
148
202
 
149
203
 
150
204
  def update_row_with_remote_trace(
151
- row: EvaluationRow, output_data_loader: Callable[[DataLoaderConfig], DynamicDataLoader], model_base_url: str
205
+ row: EvaluationRow,
206
+ output_data_loader: Callable[[DataLoaderConfig], DynamicDataLoader],
207
+ model_base_url: str,
208
+ include_payloads: bool = False,
152
209
  ) -> None:
153
210
  """Update row with remote trace data using output_data_loader (shared logic)."""
154
211
  if not row.execution_metadata.rollout_id:
155
212
  return None
156
213
 
157
- loader_config = DataLoaderConfig(rollout_id=row.execution_metadata.rollout_id, model_base_url=model_base_url)
214
+ loader_config = DataLoaderConfig(
215
+ rollout_id=row.execution_metadata.rollout_id,
216
+ model_base_url=model_base_url,
217
+ include_payloads=include_payloads,
218
+ )
158
219
  data_loader = output_data_loader(loader_config)
159
220
  results = data_loader.load()
160
221
  output_rows: List[EvaluationRow] = [r for result in results for r in result.rows]
@@ -0,0 +1,31 @@
1
+ """Decode Fireworks tracing-gateway payloads.
2
+
3
+ Standalone, dependency-light helpers (stdlib + ``zstandard`` only) for turning
4
+ the binary/JSON ``payloads`` returned by the Fireworks tracing gateway
5
+ (``GET /traces?include_payloads=true``) into Python values. No EvaluationRow or
6
+ rollout machinery required -- usable on its own.
7
+
8
+ Typical use::
9
+
10
+ from eval_protocol.tracing import decode_payloads, PayloadType
11
+
12
+ decoded = decode_payloads(trace["payloads"])
13
+ decoded[PayloadType.PROMPT_TOKEN_IDS].value # List[int]
14
+ decoded[PayloadType.LOGPROBS].value # List[float]
15
+ decoded[PayloadType.ROUTER_REPLAY].value # List[Optional[str]]
16
+
17
+ See ``README.md`` in this package for details.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ from .registry import decode_payload, decode_payloads, decode_trace
23
+ from .types import DecodedPayload, PayloadType
24
+
25
+ __all__ = [
26
+ "PayloadType",
27
+ "DecodedPayload",
28
+ "decode_payloads",
29
+ "decode_payload",
30
+ "decode_trace",
31
+ ]
@@ -0,0 +1,126 @@
1
+ """LP/v1 binary deserializer for per-token logprobs payloads.
2
+
3
+ Implements the inverse of the tracing gateway's ``logprobs_serializer.serialize_logprobs``.
4
+ See that module for the full header specification.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import base64
10
+ import struct
11
+ from typing import Any, Dict, List, Optional, Tuple
12
+
13
+ import zstandard as zstd
14
+
15
+ from .types import DecodedPayload, PayloadType
16
+
17
+ MAGIC = b"LP01"
18
+ HEADER_VERSION = 1
19
+ MISSING_TOKEN_ID = -1
20
+ ENTRY_FORMAT = "<if"
21
+ ENTRY_SIZE = struct.calcsize(ENTRY_FORMAT) # 8 bytes
22
+ HEADER_FORMAT = "<4sBBHIIQ"
23
+ HEADER_SIZE = struct.calcsize(HEADER_FORMAT) # 24 bytes
24
+
25
+
26
+ def _parse_header(raw: bytes) -> Dict[str, Any]:
27
+ if len(raw) < HEADER_SIZE:
28
+ raise ValueError(f"Payload too short for lp/v1 header: {len(raw)} < {HEADER_SIZE}")
29
+
30
+ (
31
+ magic,
32
+ version,
33
+ flags,
34
+ reserved_u16,
35
+ token_count,
36
+ body_byte_length,
37
+ reserved_u64,
38
+ ) = struct.unpack(HEADER_FORMAT, raw[:HEADER_SIZE])
39
+
40
+ if magic != MAGIC:
41
+ raise ValueError(f"Bad LP/v1 magic: {magic!r}")
42
+ if version != HEADER_VERSION:
43
+ raise ValueError(f"Unsupported lp/v1 header version: {version}")
44
+
45
+ return {
46
+ "flags": flags,
47
+ "reserved_u16": reserved_u16,
48
+ "token_count": token_count,
49
+ "body_byte_length": body_byte_length,
50
+ "reserved_u64": reserved_u64,
51
+ }
52
+
53
+
54
+ def parse_logprobs(raw: bytes) -> Tuple[List[float], Optional[List[int]], Dict[str, Any]]:
55
+ """Parse uncompressed LP/v1 bytes into logprobs, optional token ids, and metadata."""
56
+ header = _parse_header(raw)
57
+ token_count = header["token_count"]
58
+ body_byte_length = header["body_byte_length"]
59
+
60
+ if token_count == 0:
61
+ raise ValueError("LP/v1 token_count must be > 0")
62
+ if body_byte_length != token_count * ENTRY_SIZE:
63
+ raise ValueError(
64
+ f"body_byte_length ({body_byte_length}) != token_count * {ENTRY_SIZE} "
65
+ f"({token_count * ENTRY_SIZE})"
66
+ )
67
+
68
+ expected_len = HEADER_SIZE + body_byte_length
69
+ if len(raw) != expected_len:
70
+ raise ValueError(f"LP/v1 payload length mismatch: {len(raw)} != {expected_len}")
71
+
72
+ logprobs: List[float] = []
73
+ token_ids: List[int] = []
74
+ all_token_ids_valid = True
75
+ offset = HEADER_SIZE
76
+ for _ in range(token_count):
77
+ wire_id, logprob = struct.unpack(ENTRY_FORMAT, raw[offset : offset + ENTRY_SIZE])
78
+ offset += ENTRY_SIZE
79
+ logprobs.append(logprob)
80
+ if wire_id == MISSING_TOKEN_ID:
81
+ all_token_ids_valid = False
82
+ token_ids.append(wire_id)
83
+ else:
84
+ token_ids.append(wire_id)
85
+
86
+ metadata: Dict[str, Any] = {
87
+ "scope": "completion_only",
88
+ "completion_token_count": token_count,
89
+ "all_token_ids_valid": all_token_ids_valid,
90
+ }
91
+ header.update(metadata)
92
+ ids_out: Optional[List[int]] = token_ids if all_token_ids_valid else None
93
+ return logprobs, ids_out, header
94
+
95
+
96
+ def decompress_and_parse_lp(data_b64: str) -> Tuple[List[float], Optional[List[int]], Dict[str, Any]]:
97
+ """Decompress and unpack an LP/v1 payload into completion logprobs and token ids.
98
+
99
+ Args:
100
+ data_b64: Base64-encoded zstd-compressed LP binary blob from
101
+ ``payloads.logprobs.data``.
102
+
103
+ Returns:
104
+ ``(logprobs, token_ids, metadata)`` where ``logprobs`` is per-completion-token
105
+ scalars, ``token_ids`` is ``None`` if any wire id was ``MISSING_TOKEN_ID``,
106
+ and ``metadata`` includes ``all_token_ids_valid`` and ``completion_token_count``.
107
+ """
108
+ compressed = base64.b64decode(data_b64)
109
+ decompressor = zstd.ZstdDecompressor()
110
+ raw = decompressor.decompress(compressed)
111
+ return parse_logprobs(raw)
112
+
113
+
114
+ def decode_logprobs(data_b64: str) -> DecodedPayload:
115
+ """Decode a gateway ``payloads.logprobs.data`` blob into a ``DecodedPayload``.
116
+
117
+ ``value`` is the per-completion-token logprob list; per-token ids (when all
118
+ valid) are available under ``token_ids``.
119
+ """
120
+ logprobs, token_ids, metadata = decompress_and_parse_lp(data_b64)
121
+ return DecodedPayload(
122
+ payload_type=PayloadType.LOGPROBS,
123
+ value=logprobs,
124
+ metadata=metadata,
125
+ token_ids=token_ids,
126
+ )
@@ -0,0 +1,34 @@
1
+ """``pti/v1`` decoder for prompt token ID payloads.
2
+
3
+ Inverse of the tracing gateway's ``serialize_prompt_token_ids``: the gateway
4
+ stores prompt token IDs as ``base64(zstd(json.dumps(token_ids)))`` -- a compact
5
+ JSON int array, no bespoke binary header.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import base64
11
+ import json
12
+ from typing import Any, Dict, List, Tuple
13
+
14
+ import zstandard as zstd
15
+
16
+ from .types import DecodedPayload, PayloadType
17
+
18
+
19
+ def parse_prompt_token_ids(raw: bytes) -> Tuple[List[int], Dict[str, Any]]:
20
+ """Parse uncompressed ``pti/v1`` bytes (a JSON int array) into ids + metadata."""
21
+ token_ids = json.loads(raw)
22
+ metadata: Dict[str, Any] = {"scope": "prompt_only", "token_count": len(token_ids)}
23
+ return token_ids, metadata
24
+
25
+
26
+ def decode_prompt_token_ids(data_b64: str) -> DecodedPayload:
27
+ """Decode a gateway ``payloads.prompt_token_ids.data`` blob."""
28
+ raw = zstd.ZstdDecompressor().decompress(base64.b64decode(data_b64))
29
+ token_ids, metadata = parse_prompt_token_ids(raw)
30
+ return DecodedPayload(
31
+ payload_type=PayloadType.PROMPT_TOKEN_IDS,
32
+ value=token_ids,
33
+ metadata=metadata,
34
+ )