verifiers 0.2.2.dev17__tar.gz → 0.2.2.dev18__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 (406) hide show
  1. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/PKG-INFO +1 -1
  2. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_e2e.py +8 -6
  3. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harness.py +36 -0
  4. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/bash/harness.py +1 -0
  5. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/claude_code/harness.py +4 -1
  6. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/codex/harness.py +3 -0
  7. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/kimi_code/harness.py +3 -0
  8. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/null/harness.py +1 -0
  9. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pi/harness.py +12 -0
  10. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pool/harness.py +3 -0
  11. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/rlm/harness.py +9 -5
  12. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/harness.py +2 -10
  13. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/compile.py +12 -0
  14. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/.gitignore +0 -0
  15. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/LICENSE +0 -0
  16. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/README.md +0 -0
  17. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/pyproject.toml +0 -0
  18. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/__init__.py +0 -0
  19. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/conftest.py +0 -0
  20. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_browser_env.py +0 -0
  21. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_build_script.py +0 -0
  22. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_cli_agent_env.py +0 -0
  23. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_client_auth_errors.py +0 -0
  24. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_client_config.py +0 -0
  25. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_client_multimodal_types.py +0 -0
  26. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_composable_env.py +0 -0
  27. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_context_token_metrics.py +0 -0
  28. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_decorator_ranks.py +0 -0
  29. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_endpoint_registry.py +0 -0
  30. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_env_group.py +0 -0
  31. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_env_server.py +0 -0
  32. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_environment.py +0 -0
  33. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_environment_extra.py +0 -0
  34. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_error_chain.py +0 -0
  35. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_eval_display.py +0 -0
  36. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_eval_utils.py +0 -0
  37. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_gepa_cli.py +0 -0
  38. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_gepa_utils.py +0 -0
  39. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_gym_env.py +0 -0
  40. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_harbor_env_mcp.py +0 -0
  41. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_imports.py +0 -0
  42. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_init_script.py +0 -0
  43. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_install_utils.py +0 -0
  44. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_interception_utils.py +0 -0
  45. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_logging.py +0 -0
  46. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_math_rubric.py +0 -0
  47. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_maybe_think_parser.py +0 -0
  48. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_message_utils.py +0 -0
  49. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_message_utils_multimodal.py +0 -0
  50. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_multiturn_env.py +0 -0
  51. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_nemorl_client.py +0 -0
  52. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_openai_chat_completions_token_client.py +0 -0
  53. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_openai_responses_client.py +0 -0
  54. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_opencode_rlm_env.py +0 -0
  55. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_openenv_client.py +0 -0
  56. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_parser.py +0 -0
  57. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_path_utils.py +0 -0
  58. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_per_turn_timing.py +0 -0
  59. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_pricing_utils.py +0 -0
  60. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_prime_plugin.py +0 -0
  61. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_renderer_client.py +0 -0
  62. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_renderer_e2e.py +0 -0
  63. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_rlm_composable_env.py +0 -0
  64. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_rubric.py +0 -0
  65. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_rubric_group.py +0 -0
  66. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_sandbox_debug_env.py +0 -0
  67. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_sandbox_env.py +0 -0
  68. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_sandbox_mixin.py +0 -0
  69. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_save_utils.py +0 -0
  70. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_setup_script.py +0 -0
  71. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_singleturn_env.py +0 -0
  72. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_stateful_tool_env.py +0 -0
  73. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_think_parser.py +0 -0
  74. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_tool_env.py +0 -0
  75. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_tool_utils.py +0 -0
  76. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_trajectory_processing.py +0 -0
  77. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_tui_info_formatting.py +0 -0
  78. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_types.py +0 -0
  79. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/test_xml_parser.py +0 -0
  80. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/conftest.py +0 -0
  81. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  82. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/duet_v1.py +0 -0
  83. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  84. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  85. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  86. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  87. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_v0.py +0 -0
  88. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/echo_v1.py +0 -0
  89. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/pyproject.toml +0 -0
  90. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  91. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_color_codeword_tasks.py +0 -0
  92. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_configs.py +0 -0
  93. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_envs.py +0 -0
  94. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_graph.py +0 -0
  95. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_judges.py +0 -0
  96. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_legacy.py +0 -0
  97. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_scoring.py +0 -0
  98. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_taskset.py +0 -0
  99. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/tests/v1/test_trace.py +0 -0
  100. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/__init__.py +0 -0
  101. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/__init__.py +0 -0
  102. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/__init__.py +0 -0
  103. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/build.py +0 -0
  104. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/eval.py +0 -0
  105. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/gepa.py +0 -0
  106. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/init.py +0 -0
  107. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/install.py +0 -0
  108. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/commands/setup.py +0 -0
  109. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/plugins/__init__.py +0 -0
  110. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/plugins/prime.py +0 -0
  111. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/cli/tui.py +0 -0
  112. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/__init__.py +0 -0
  113. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/anthropic_messages_client.py +0 -0
  114. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/client.py +0 -0
  115. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  116. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_chat_completions_client.py +0 -0
  117. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  118. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_completions_client.py +0 -0
  119. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/openai_responses_client.py +0 -0
  120. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/clients/renderer_client.py +0 -0
  121. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/decorators.py +0 -0
  122. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/__init__.py +0 -0
  123. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/env_group.py +0 -0
  124. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/environment.py +0 -0
  125. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/README.md +0 -0
  126. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/__init__.py +0 -0
  127. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  128. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/README.md +0 -0
  129. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/__init__.py +0 -0
  130. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/_filter.py +0 -0
  131. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  132. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harness.py +0 -0
  133. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  134. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  135. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  136. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  137. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  138. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  139. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  140. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/task.py +0 -0
  141. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  142. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  143. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  144. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  145. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  146. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  147. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  148. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  149. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  150. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  151. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  152. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  153. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  154. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  155. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  156. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  157. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  158. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  159. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  160. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  161. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  162. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  163. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  164. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  165. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  166. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  167. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  168. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  169. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  170. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  171. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  172. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  173. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  174. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  175. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/gym_env.py +0 -0
  176. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  177. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  178. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  179. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/mcp_env.py +0 -0
  180. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/opencode_env.py +0 -0
  181. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  182. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  183. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  184. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/utils/__init__.py +0 -0
  185. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  186. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  187. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/README.md +0 -0
  188. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/__init__.py +0 -0
  189. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/README.md +0 -0
  190. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  191. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  192. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  193. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  194. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  195. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  196. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/openenv_env.py +0 -0
  197. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  198. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/integrations/textarena_env.py +0 -0
  199. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/multiturn_env.py +0 -0
  200. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/python_env.py +0 -0
  201. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/sandbox_env.py +0 -0
  202. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/singleturn_env.py +0 -0
  203. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/stateful_tool_env.py +0 -0
  204. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/envs/tool_env.py +0 -0
  205. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/errors.py +0 -0
  206. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/__init__.py +0 -0
  207. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/adapter.py +0 -0
  208. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/config.py +0 -0
  209. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/display.py +0 -0
  210. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/gepa/gepa_utils.py +0 -0
  211. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/__init__.py +0 -0
  212. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/maybe_think_parser.py +0 -0
  213. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/parser.py +0 -0
  214. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/think_parser.py +0 -0
  215. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/parsers/xml_parser.py +0 -0
  216. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/__init__.py +0 -0
  217. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  218. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/judge_rubric.py +0 -0
  219. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/math_rubric.py +0 -0
  220. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/rubric.py +0 -0
  221. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/rubrics/rubric_group.py +0 -0
  222. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/__init__.py +0 -0
  223. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/build.py +0 -0
  224. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/eval.py +0 -0
  225. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/gepa.py +0 -0
  226. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/init.py +0 -0
  227. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/install.py +0 -0
  228. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/setup.py +0 -0
  229. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/scripts/tui.py +0 -0
  230. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/__init__.py +0 -0
  231. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/client/env_client.py +0 -0
  232. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/client/zmq_env_client.py +0 -0
  233. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/__init__.py +0 -0
  234. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/env_router.py +0 -0
  235. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/env_server.py +0 -0
  236. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/env_worker.py +0 -0
  237. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/server/zmq_env_server.py +0 -0
  238. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/serve/types.py +0 -0
  239. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/types.py +0 -0
  240. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/__init__.py +0 -0
  241. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/async_utils.py +0 -0
  242. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/client_utils.py +0 -0
  243. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/config_utils.py +0 -0
  244. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/data_utils.py +0 -0
  245. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/display_utils.py +0 -0
  246. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/env_config_utils.py +0 -0
  247. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/env_utils.py +0 -0
  248. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/error_utils.py +0 -0
  249. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/eval_display.py +0 -0
  250. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/eval_utils.py +0 -0
  251. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/heartbeat.py +0 -0
  252. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/import_utils.py +0 -0
  253. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/install_utils.py +0 -0
  254. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/interception_utils.py +0 -0
  255. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/logging_utils.py +0 -0
  256. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/message_utils.py +0 -0
  257. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/metric_utils.py +0 -0
  258. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/path_utils.py +0 -0
  259. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/pricing_utils.py +0 -0
  260. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/process_utils.py +0 -0
  261. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/response_utils.py +0 -0
  262. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/save_utils.py +0 -0
  263. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/serve_utils.py +0 -0
  264. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/thread_utils.py +0 -0
  265. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/threaded_sandbox_client.py +0 -0
  266. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/tool_utils.py +0 -0
  267. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/usage_utils.py +0 -0
  268. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/utils/version_utils.py +0 -0
  269. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/__init__.py +0 -0
  270. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/agent.py +0 -0
  271. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/__init__.py +0 -0
  272. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  273. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/base.py +0 -0
  274. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/eval.py +0 -0
  275. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/replay.py +0 -0
  276. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/dashboard/validate.py +0 -0
  277. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/debug.py +0 -0
  278. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/__init__.py +0 -0
  279. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/main.py +0 -0
  280. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/resume.py +0 -0
  281. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/eval/runner.py +0 -0
  282. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/gepa.py +0 -0
  283. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/init.py +0 -0
  284. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/output.py +0 -0
  285. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/replay.py +0 -0
  286. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/resolve.py +0 -0
  287. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/serve.py +0 -0
  288. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/cli/validate.py +0 -0
  289. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/__init__.py +0 -0
  290. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/client.py +0 -0
  291. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/config.py +0 -0
  292. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/eval.py +0 -0
  293. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/clients/train.py +0 -0
  294. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/__init__.py +0 -0
  295. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/debug.py +0 -0
  296. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/env.py +0 -0
  297. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/eval.py +0 -0
  298. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/init.py +0 -0
  299. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/replay.py +0 -0
  300. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/serve.py +0 -0
  301. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/configs/validate.py +0 -0
  302. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/decorators.py +0 -0
  303. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/__init__.py +0 -0
  304. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/anthropic.py +0 -0
  305. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/base.py +0 -0
  306. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/chat.py +0 -0
  307. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/dialects/responses.py +0 -0
  308. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/env.py +0 -0
  309. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/__init__.py +0 -0
  310. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  311. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  312. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  313. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/best_of_n/env.py +0 -0
  314. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  315. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/envs/single_agent/env.py +0 -0
  316. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/episode.py +0 -0
  317. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/errors.py +0 -0
  318. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/__init__.py +0 -0
  319. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/adapter.py +0 -0
  320. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/config.py +0 -0
  321. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/dataset.py +0 -0
  322. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/reflection.py +0 -0
  323. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/gepa/runner.py +0 -0
  324. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/graph.py +0 -0
  325. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/__init__.py +0 -0
  326. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  327. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/bash/program.py +0 -0
  328. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  329. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  330. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  331. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  332. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  333. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  334. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/null/__init__.py +0 -0
  335. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/null/program.py +0 -0
  336. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  337. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  338. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  339. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  340. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  341. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/__init__.py +0 -0
  342. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/base.py +0 -0
  343. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/pool.py +0 -0
  344. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/server.py +0 -0
  345. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  346. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/base.py +0 -0
  347. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/custom.py +0 -0
  348. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/interception/tunnel/prime.py +0 -0
  349. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judge.py +0 -0
  350. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/__init__.py +0 -0
  351. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/reference.py +0 -0
  352. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/reference.txt +0 -0
  353. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/rubric.py +0 -0
  354. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/judges/rubric.txt +0 -0
  355. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/legacy.py +0 -0
  356. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/loaders.py +0 -0
  357. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/__init__.py +0 -0
  358. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/launch.py +0 -0
  359. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/server.py +0 -0
  360. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/toolset.py +0 -0
  361. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/mcp/user.py +0 -0
  362. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/push.py +0 -0
  363. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/retries.py +0 -0
  364. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/rollout.py +0 -0
  365. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/__init__.py +0 -0
  366. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/base.py +0 -0
  367. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  368. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/docker/egress.py +0 -0
  369. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/limiters.py +0 -0
  370. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/modal.py +0 -0
  371. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/prime.py +0 -0
  372. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/runtimes/subprocess.py +0 -0
  373. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/scoring.py +0 -0
  374. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/__init__.py +0 -0
  375. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/client.py +0 -0
  376. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/pool.py +0 -0
  377. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/server.py +0 -0
  378. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/serve/types.py +0 -0
  379. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/session.py +0 -0
  380. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/state.py +0 -0
  381. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/task.py +0 -0
  382. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/taskset.py +0 -0
  383. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/__init__.py +0 -0
  384. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  385. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  386. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  387. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  388. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  389. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  390. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  391. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  392. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  393. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/trace.py +0 -0
  394. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/types.py +0 -0
  395. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/__init__.py +0 -0
  396. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/aio.py +0 -0
  397. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/format.py +0 -0
  398. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/generic.py +0 -0
  399. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/git.py +0 -0
  400. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/image.py +0 -0
  401. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/install.py +0 -0
  402. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/interrupt.py +0 -0
  403. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/logging.py +0 -0
  404. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/memory.py +0 -0
  405. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/sampling.py +0 -0
  406. {verifiers-0.2.2.dev17 → verifiers-0.2.2.dev18}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.2.2.dev17
3
+ Version: 0.2.2.dev18
4
4
  Summary: Verifiers: Environments for LLM Reinforcement Learning
5
5
  Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
6
6
  Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
@@ -15,26 +15,28 @@ def _pair(a: str, b: str, id: str, *extra_marks):
15
15
  return pytest.param(a, b, marks=[*marks, *extra_marks], id=id)
16
16
 
17
17
 
18
- # harness x harness runtime: every harness once, both local runtimes hit, one remote row
19
- # per provider. codex/claude-code are excluded here (unreliable on a no-op echo chat
18
+ # harness x harness runtime: every harness once, both local runtimes hit (subprocess
19
+ # only carries the in-house loops the rest NEEDS_CONTAINER), one remote row per
20
+ # provider. codex/claude-code are excluded here (unreliable on a no-op echo chat
20
21
  # task) — test_agentic covers them.
21
22
  CHAT_PLACEMENTS = [
22
23
  _pair("null", "subprocess", "null-harness-in-subprocess"),
23
24
  _pair("bash", "docker", "bash-harness-in-docker"),
24
- _pair("rlm", "subprocess", "rlm-harness-in-subprocess"),
25
+ _pair("rlm", "docker", "rlm-harness-in-docker"),
25
26
  _pair("kimi-code", "docker", "kimi-code-harness-in-docker"),
26
27
  _pair("bash", "prime", "bash-harness-in-prime"),
27
28
  _pair("bash", "modal", "bash-harness-in-modal"),
28
29
  ]
29
30
 
30
31
  # harness x harness runtime for the shell task: every coding agent once (null is a chat
31
- # loop with no shell), both local runtimes hit, one remote row per provider.
32
+ # loop with no shell), both local runtimes hit (subprocess only carries bash), one
33
+ # remote row per provider.
32
34
  AGENTIC_PLACEMENTS = [
33
35
  _pair("bash", "subprocess", "bash-harness-in-subprocess"),
34
36
  _pair("rlm", "docker", "rlm-harness-in-docker"),
35
- _pair("kimi-code", "subprocess", "kimi-code-harness-in-subprocess"),
37
+ _pair("kimi-code", "docker", "kimi-code-harness-in-docker"),
36
38
  _pair("codex", "docker", "codex-harness-in-docker"),
37
- _pair("claude-code", "subprocess", "claude-code-harness-in-subprocess"),
39
+ _pair("claude-code", "docker", "claude-code-harness-in-docker"),
38
40
  _pair("bash", "prime", "bash-harness-in-prime"),
39
41
  _pair("bash", "modal", "bash-harness-in-modal"),
40
42
  ]
@@ -4,6 +4,7 @@ import logging
4
4
  import os
5
5
  from abc import ABC, abstractmethod
6
6
  from collections.abc import Mapping
7
+ from pathlib import Path
7
8
  from typing import TYPE_CHECKING, ClassVar, Generic, TypeVar
8
9
 
9
10
  from pydantic import Field
@@ -41,6 +42,10 @@ class HarnessConfig(BaseConfig):
41
42
  forward_env: list[str] = Field(default_factory=list)
42
43
  """Host variables to forward without writing secrets into config; explicit `env` wins."""
43
44
  disabled_tools: list[str] | None = None
45
+ skills: list[Path] = Field(default_factory=list)
46
+ """Skill folders to upload into the program's skill discovery directory — each
47
+ lands at `<skills dir>/<folder name>`. Only harnesses whose program discovers
48
+ skills natively (`SUPPORTS_SKILLS`) accept them."""
44
49
 
45
50
  @property
46
51
  def name(self) -> str:
@@ -66,6 +71,15 @@ class Harness(ABC, Generic[ConfigT]):
66
71
  every real harness; the tool-less chat loops (`null`) override to False. Read
67
72
  where model-directed execution changes the rules: the subprocess-on-host
68
73
  warning, the judge env's sandbox requirement."""
74
+ SUPPORTS_SKILLS: ClassVar[bool] = False
75
+ """Whether the program discovers SKILL.md skills — its `setup` calls
76
+ `install_skills` with the program's fixed discovery location; configuring
77
+ `skills` on a harness without support is rejected up front."""
78
+ NEEDS_CONTAINER: ClassVar[bool] = True
79
+ """Whether the program must run in a container runtime: True for every harness
80
+ that installs and drives a third-party program — on the host (subprocess) it
81
+ leaks host state (auth, config, processes) both ways. Only the minimal
82
+ in-house loops (`bash`, `null`) override to False."""
69
83
 
70
84
  def __init__(self, config: ConfigT) -> None:
71
85
  self.config = config
@@ -102,6 +116,28 @@ class Harness(ABC, Generic[ConfigT]):
102
116
  async def setup(self, runtime: Runtime) -> None:
103
117
  """Provision this harness in `runtime` before its execution timeout starts."""
104
118
 
119
+ async def install_skills(self, runtime: Runtime, dest: str) -> None:
120
+ """Upload each `config.skills` folder into `runtime` at `dest/<folder name>` —
121
+ the program's fixed skill discovery location, which a supporting harness's
122
+ `setup` passes."""
123
+ for skill in self.config.skills:
124
+ # Resolve so `.`/`..` entries get their real folder name (and can't
125
+ # place files outside `dest`).
126
+ skill = skill.resolve()
127
+ if not skill.is_dir():
128
+ raise ValueError(f"skill {str(skill)!r} is not a folder")
129
+ executables = []
130
+ for file in sorted(skill.rglob("*")):
131
+ if not file.is_file():
132
+ continue
133
+ target = f"{dest}/{skill.name}/{file.relative_to(skill).as_posix()}"
134
+ await runtime.write(target, file.read_bytes())
135
+ if os.access(file, os.X_OK):
136
+ executables.append(target)
137
+ if executables:
138
+ # `write` moves bytes, not modes; restore the execute bits scripts need.
139
+ await runtime.run(["chmod", "+x", *executables], {})
140
+
105
141
  async def run(
106
142
  self,
107
143
  ctx: ModelContext,
@@ -41,6 +41,7 @@ class BashHarness(Harness[BashHarnessConfig]):
41
41
  SUPPORTS_MCP = True
42
42
  SUPPORTS_USER_SIM = True
43
43
  SUPPORTS_MESSAGE_PROMPT = True
44
+ NEEDS_CONTAINER = False
44
45
 
45
46
  async def setup(self, runtime: Runtime) -> None:
46
47
  await runtime.prepare_uv_script(PROGRAM_SOURCE, self.config.resolved_env)
@@ -13,6 +13,7 @@ from verifiers.v1.trace import Trace
13
13
  CLAUDE_HOME = "/tmp/vf-claude-code-{version}"
14
14
  CLAUDE_BIN = f"{CLAUDE_HOME}/.local/bin/claude"
15
15
  CLAUDE_CONFIG_DIR = ".vf-claude"
16
+ SKILLS_DIR = f"{CLAUDE_CONFIG_DIR}/skills"
16
17
  INSTALL = """
17
18
  set -e
18
19
  command -v curl >/dev/null || (apt-get update -qq && apt-get install -y -qq curl ca-certificates >/dev/null)
@@ -30,8 +31,10 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
30
31
  SUPPORTS_MCP = True
31
32
  # images would require streaming inputs
32
33
  SUPPORTS_MESSAGE_PROMPT = False
34
+ SUPPORTS_SKILLS = True
33
35
 
34
36
  async def setup(self, runtime: Runtime) -> None:
37
+ await self.install_skills(runtime, SKILLS_DIR)
35
38
  home = CLAUDE_HOME.format(version=self.config.version)
36
39
  binary = CLAUDE_BIN.format(version=self.config.version)
37
40
  script = INSTALL.format(version=self.config.version, home=home)
@@ -66,13 +69,13 @@ class ClaudeCodeHarness(Harness[ClaudeCodeHarnessConfig]):
66
69
  "ANTHROPIC_BASE_URL": endpoint.removesuffix("/v1"),
67
70
  "ANTHROPIC_API_KEY": secret,
68
71
  "CLAUDE_CONFIG_DIR": CLAUDE_CONFIG_DIR,
72
+ "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
69
73
  "DISABLE_AUTOUPDATER": "1",
70
74
  "IS_SANDBOX": "1",
71
75
  }
72
76
  argv = [
73
77
  CLAUDE_BIN.format(version=self.config.version),
74
78
  "--print",
75
- "--bare",
76
79
  "--dangerously-skip-permissions",
77
80
  "--no-session-persistence",
78
81
  "--model",
@@ -23,6 +23,7 @@ KEY_VAR = "CODEX_INTERCEPT_KEY"
23
23
 
24
24
  CODEX_DIR = "/tmp/vf-codex"
25
25
  CODEX_BIN = f"{CODEX_DIR}/bin/codex"
26
+ SKILLS_DIR = ".agents/skills"
26
27
  INSTALL = r"""
27
28
  set -e
28
29
  mkdir -p {dir}/bin
@@ -46,8 +47,10 @@ class CodexHarness(Harness[CodexHarnessConfig]):
46
47
  APPENDS_SYSTEM_PROMPT = False # TODO
47
48
  SUPPORTS_MCP = False # TODO
48
49
  SUPPORTS_MESSAGE_PROMPT = True
50
+ SUPPORTS_SKILLS = True
49
51
 
50
52
  async def setup(self, runtime: Runtime) -> None:
53
+ await self.install_skills(runtime, SKILLS_DIR)
51
54
  logger.info("codex: ensuring codex %s is installed", self.config.version)
52
55
  script = (
53
56
  INSTALL.replace("{version}", self.config.version)
@@ -13,6 +13,7 @@ logger = logging.getLogger(__name__)
13
13
 
14
14
  BINARY = "/tmp/vf-kimi-code/bin/kimi"
15
15
  KIMI_HOME = ".vf-kimi-code"
16
+ SKILLS_DIR = f"{KIMI_HOME}/skills"
16
17
 
17
18
  INSTALL = r"""
18
19
  set -e
@@ -39,8 +40,10 @@ class KimiCodeHarnessConfig(HarnessConfig):
39
40
  class KimiCodeHarness(Harness[KimiCodeHarnessConfig]):
40
41
  APPENDS_SYSTEM_PROMPT = False
41
42
  SUPPORTS_MCP = True
43
+ SUPPORTS_SKILLS = True
42
44
 
43
45
  async def setup(self, runtime: Runtime) -> None:
46
+ await self.install_skills(runtime, SKILLS_DIR)
44
47
  logger.info(
45
48
  "kimi-code: ensuring Kimi Code %s is installed", self.config.version
46
49
  )
@@ -20,6 +20,7 @@ class NullHarness(Harness[NullHarnessConfig]):
20
20
  SUPPORTS_USER_SIM = True
21
21
  SUPPORTS_MESSAGE_PROMPT = True
22
22
  EXECUTES_CODE = False
23
+ NEEDS_CONTAINER = False
23
24
 
24
25
  async def setup(self, runtime: Runtime) -> None:
25
26
  await runtime.prepare_uv_script(PROGRAM_SOURCE, self.config.resolved_env)
@@ -26,6 +26,7 @@ HOME_VAR = "VF_PI_ORIGINAL_HOME"
26
26
 
27
27
  PI_DIR = "/tmp/vf-pi"
28
28
  PI_BIN = f"{PI_DIR}/pi"
29
+ SKILLS_DIR = ".agents/skills"
29
30
  MCP_VERSION = "2.11.0"
30
31
  MCP_ADAPTER = f"{PI_DIR}/mcp/node_modules/pi-mcp-adapter/index.ts"
31
32
 
@@ -95,8 +96,12 @@ class PiHarness(Harness[PiHarnessConfig]):
95
96
  APPENDS_SYSTEM_PROMPT = True
96
97
  SUPPORTS_MCP = True
97
98
  SUPPORTS_MESSAGE_PROMPT = True
99
+ # Pi's project skill discovery is trust-gated (a prompt print mode can't answer),
100
+ # so the installed skills are passed explicitly via `--skill` at launch.
101
+ SUPPORTS_SKILLS = True
98
102
 
99
103
  async def setup(self, runtime: Runtime) -> None:
104
+ await self.install_skills(runtime, SKILLS_DIR)
100
105
  logger.info(
101
106
  "pi: ensuring Pi %s and pi-mcp-adapter %s are installed",
102
107
  self.config.version,
@@ -234,6 +239,12 @@ class PiHarness(Harness[PiHarnessConfig]):
234
239
  if self.config.disabled_tools
235
240
  else []
236
241
  )
242
+ skill_args = [
243
+ arg
244
+ for skill in self.config.skills
245
+ # Resolve like `install_skills` so the path matches what it wrote.
246
+ for arg in ("--skill", f"{SKILLS_DIR}/{skill.resolve().name}")
247
+ ]
237
248
  system_args = ["--append-system-prompt", system_prompt] if system_prompt else []
238
249
  argv = [
239
250
  "sh",
@@ -252,6 +263,7 @@ class PiHarness(Harness[PiHarnessConfig]):
252
263
  ctx.model,
253
264
  *mcp_args,
254
265
  *tool_args,
266
+ *skill_args,
255
267
  *system_args,
256
268
  *image_args,
257
269
  ]
@@ -13,6 +13,7 @@ from verifiers.v1.types import SystemMessage, TextContentPart, UserMessage
13
13
 
14
14
  POOL_DIR = "/tmp/vf-pool-{version}"
15
15
  SETTINGS_PATH = ".poolside/settings.local.yaml"
16
+ SKILLS_DIR = ".poolside/skills"
16
17
  INSTALL = r"""
17
18
  set -e
18
19
  command -v curl >/dev/null || (apt-get update -qq && apt-get install -y -qq curl ca-certificates >/dev/null)
@@ -35,8 +36,10 @@ class PoolHarness(Harness[PoolHarnessConfig]):
35
36
  APPENDS_SYSTEM_PROMPT = True
36
37
  SUPPORTS_MCP = True
37
38
  SUPPORTS_MESSAGE_PROMPT = True
39
+ SUPPORTS_SKILLS = True
38
40
 
39
41
  async def setup(self, runtime: Runtime) -> None:
42
+ await self.install_skills(runtime, SKILLS_DIR)
40
43
  directory = POOL_DIR.format(version=self.config.version)
41
44
  binary = f"{directory}/pool"
42
45
  script = INSTALL.replace("{version}", self.config.version).replace(
@@ -24,6 +24,7 @@ RLM_REPO = "github.com/PrimeIntellect-ai/rlm.git"
24
24
  RLM_HOME = ".rlm"
25
25
  RLM_DIR = "/tmp/vf-rlm"
26
26
  RLM_BIN = f"{RLM_DIR}/bin/rlm"
27
+ SKILLS_DIR = "/task/rlm-skills"
27
28
 
28
29
 
29
30
  class RLMHarnessConfig(HarnessConfig):
@@ -31,9 +32,9 @@ class RLMHarnessConfig(HarnessConfig):
31
32
  """Git ref (branch, tag, or commit) of rlm to install."""
32
33
  max_depth: int = 0
33
34
  """Recursion depth rlm may spawn sub-harnesses to (RLM_MAX_DEPTH)."""
34
- skills: list[BuiltinSkill] = []
35
+ builtin_skills: list[BuiltinSkill] = []
35
36
  """Built-in rlm skills to enable (RLM_SKILLS), e.g. `["edit"]`; empty enables none.
36
- The tool set is fixed (ipython); only built-in skills are selectable."""
37
+ The tool set is fixed (ipython); the base `skills` field takes SKILL.md paths."""
37
38
  summarize_at_tokens: int | tuple[int, int] | None = None
38
39
  """Auto-compaction threshold (RLM_SUMMARIZE_AT_TOKENS): compact the context once it grows
39
40
  past this many tokens. An int is a fixed threshold; a `(lo, hi)` pair draws a per-group
@@ -63,7 +64,7 @@ class RLMHarnessConfig(HarnessConfig):
63
64
  if self.disabled_tools:
64
65
  raise ValueError(
65
66
  "the rlm harness has a fixed tool set (ipython) and does not support "
66
- "`disabled_tools`; use `skills` to enable built-in skills instead."
67
+ "`disabled_tools`; use `builtin_skills` to enable built-in skills instead."
67
68
  )
68
69
  return self
69
70
 
@@ -71,8 +72,11 @@ class RLMHarnessConfig(HarnessConfig):
71
72
  class RLMHarness(Harness[RLMHarnessConfig]):
72
73
  APPENDS_SYSTEM_PROMPT = True
73
74
  SUPPORTS_MCP = True
75
+ SUPPORTS_SKILLS = True
74
76
 
75
77
  async def setup(self, runtime: Runtime) -> None:
78
+ # Before the installer: install.sh packages the skills it finds.
79
+ await self.install_skills(runtime, SKILLS_DIR)
76
80
  # install.sh fetches curl/uv itself; add git only when the image lacks it.
77
81
  install = (
78
82
  "command -v git >/dev/null 2>&1 || "
@@ -123,8 +127,8 @@ class RLMHarness(Harness[RLMHarnessConfig]):
123
127
  }
124
128
  if system_prompt is not None:
125
129
  env["RLM_APPEND_TO_SYSTEM_PROMPT"] = system_prompt
126
- if self.config.skills:
127
- env["RLM_SKILLS"] = ",".join(self.config.skills)
130
+ if self.config.builtin_skills:
131
+ env["RLM_SKILLS"] = ",".join(self.config.builtin_skills)
128
132
  if mcp_urls:
129
133
  env["RLM_MCP_CONFIG"] = json.dumps(
130
134
  {"mcpServers": {name: {"url": url} for name, url in mcp_urls.items()}}
@@ -18,18 +18,10 @@ class Terminus2HarnessConfig(HarnessConfig):
18
18
  class Terminus2Harness(Harness[Terminus2HarnessConfig]):
19
19
  APPENDS_SYSTEM_PROMPT = True
20
20
  SUPPORTS_MCP = False
21
+ # Beyond the usual host leaks, Terminus drives tmux: on the host its tmux server —
22
+ # and the `tmux kill-server` cleanup in `launch` — would share the user's own.
21
23
 
22
24
  async def setup(self, runtime: Runtime) -> None:
23
- # TODO: Terminus drives tmux; on the host (subprocess) runtime its tmux server — and the
24
- # `tmux kill-server` cleanup in `launch` — share the host's tmux, so a host run can kill
25
- # the user's own tmux session. Until tmux is isolated (a dedicated `tmux -L` socket + a
26
- # created, private TMUX_TMPDIR), refuse the host runtime; run Terminus 2 in a container.
27
- if runtime.type == "subprocess":
28
- raise RuntimeError(
29
- "Terminus 2 drives tmux and is unsafe on the subprocess (host) runtime — its tmux "
30
- "cleanup can kill the host's tmux server. Run it in a container runtime "
31
- "(--env.agent.harness.runtime.type docker|prime|modal)."
32
- )
33
25
  source = PROGRAM_SOURCE.replace("{version}", self.config.version)
34
26
  await runtime.prepare_uv_script(source, self.config.resolved_env)
35
27
 
@@ -95,6 +95,18 @@ def validate_pairing(
95
95
  f"{task_cls.__name__} exposes tool servers (MCP). Run it with a harness that "
96
96
  f"supports MCP (e.g. --env.agent.harness.id bash), or use tasks without tools."
97
97
  )
98
+ if not harness.SUPPORTS_SKILLS and harness.config.skills:
99
+ raise ValueError(
100
+ f"Harness {harness.config.id!r} has no native skill support, but "
101
+ "`skills` is set. Run them with a harness whose program discovers "
102
+ "skills (e.g. --env.agent.harness.id claude-code)."
103
+ )
104
+ if harness.NEEDS_CONTAINER and isinstance(runtime_config, SubprocessConfig):
105
+ raise ValueError(
106
+ f"Harness {harness.config.id!r} needs a container runtime "
107
+ "(NEEDS_CONTAINER), but this run resolves to the subprocess runtime; "
108
+ "use --env.agent.harness.runtime.type docker or prime."
109
+ )
98
110
  if not harness.SUPPORTS_USER_SIM and task_cls.user is not None:
99
111
  raise ValueError(
100
112
  f"Harness {harness.config.id!r} does not drive a user simulator, but "
File without changes