inspect-ai 0.3.58__tar.gz → 0.3.59__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 (916) hide show
  1. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.pre-commit-config.yaml +1 -1
  2. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/CHANGELOG.md +19 -1
  3. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/PKG-INFO +2 -2
  4. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_tools-scaffold.md +11 -0
  5. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/approval.qmd +22 -3
  6. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/errors-and-limits.qmd +13 -10
  7. inspect_ai-0.3.59/docs/images/vnc-port-info.png +0 -0
  8. inspect_ai-0.3.59/docs/images/vnc-view-only.png +0 -0
  9. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/models.qmd +1 -1
  10. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/solvers.qmd +61 -39
  11. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/tools.qmd +177 -10
  12. inspect_ai-0.3.59/examples/computer/compose.yaml +17 -0
  13. inspect_ai-0.3.59/examples/computer/computer.py +50 -0
  14. inspect_ai-0.3.59/examples/computer/moonWeight.ods +0 -0
  15. inspect_ai-0.3.59/examples/intervention/README.md +47 -0
  16. inspect_ai-0.3.59/examples/intervention/computer/approval.yaml +10 -0
  17. inspect_ai-0.3.59/examples/intervention/computer/compose.yaml +8 -0
  18. inspect_ai-0.3.59/examples/intervention/intervention.py +135 -0
  19. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/pyproject.toml +1 -1
  20. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/common.py +3 -1
  21. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/eval.py +15 -2
  22. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/active.py +4 -1
  23. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/config.py +3 -3
  24. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/panel.py +7 -3
  25. inspect_ai-0.3.59/src/inspect_ai/_display/plain/display.py +203 -0
  26. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/rich/display.py +0 -5
  27. inspect_ai-0.3.59/src/inspect_ai/_display/textual/widgets/port_mappings.py +110 -0
  28. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/samples.py +78 -11
  29. inspect_ai-0.3.59/src/inspect_ai/_display/textual/widgets/sandbox.py +37 -0
  30. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/score.py +1 -0
  31. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/results.py +50 -22
  32. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/run.py +41 -7
  33. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/sandbox.py +10 -5
  34. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/constants.py +1 -0
  35. inspect_ai-0.3.59/src/inspect_ai/_util/port_names.py +61 -0
  36. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/text.py +23 -0
  37. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/App.css +31 -1
  38. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/dist/assets/index.css +31 -1
  39. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/dist/assets/index.js +25344 -1849
  40. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/log-schema.json +32 -2
  41. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/package.json +2 -0
  42. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/App.mjs +8 -10
  43. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/Types.mjs +0 -1
  44. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/ChatView.mjs +133 -43
  45. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/ExpandablePanel.mjs +0 -4
  46. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/LargeModal.mjs +19 -20
  47. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/TabSet.mjs +3 -1
  48. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/components/VirtualList.mjs +280 -0
  49. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/index.js +101 -0
  50. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/navbar/Navbar.mjs +3 -0
  51. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/navbar/SecondaryBar.mjs +18 -9
  52. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleDialog.mjs +5 -1
  53. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleDisplay.mjs +23 -15
  54. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleList.mjs +18 -48
  55. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleTranscript.mjs +8 -3
  56. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SamplesDescriptor.mjs +24 -12
  57. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SamplesTab.mjs +4 -1
  58. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SamplesTools.mjs +8 -8
  59. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/samples/tools/SampleFilter.mjs +756 -0
  60. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/samples/tools/filters.mjs +287 -0
  61. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/ErrorEventView.mjs +24 -2
  62. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/EventPanel.mjs +29 -24
  63. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/EventRow.mjs +1 -1
  64. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/InfoEventView.mjs +24 -2
  65. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/InputEventView.mjs +24 -2
  66. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/ModelEventView.mjs +31 -10
  67. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.mjs +24 -2
  68. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/SampleLimitEventView.mjs +23 -2
  69. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/ScoreEventView.mjs +24 -2
  70. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/StepEventView.mjs +33 -3
  71. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/SubtaskEventView.mjs +25 -2
  72. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/ToolEventView.mjs +25 -2
  73. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/TranscriptView.mjs +193 -11
  74. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/Types.mjs +10 -0
  75. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/state/StateEventView.mjs +26 -2
  76. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/types/log.d.ts +13 -2
  77. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Format.mjs +10 -3
  78. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Json.mjs +12 -6
  79. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/workspace/WorkSpace.mjs +10 -4
  80. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/vite.config.js +7 -0
  81. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/yarn.lock +116 -0
  82. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_policy.py +12 -6
  83. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_log.py +1 -1
  84. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_samples.py +16 -0
  85. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_transcript.py +4 -1
  86. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_call_tools.py +4 -0
  87. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_conversation.py +20 -8
  88. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_generate_config.py +10 -4
  89. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_model.py +117 -18
  90. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_model_output.py +7 -2
  91. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/anthropic.py +100 -44
  92. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/azureai.py +20 -20
  93. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/bedrock.py +37 -40
  94. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/google.py +46 -54
  95. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/mistral.py +11 -11
  96. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/openai.py +15 -16
  97. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/openai_o1.py +9 -8
  98. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/providers.py +1 -1
  99. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/together.py +8 -8
  100. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/vertex.py +1 -4
  101. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_reducer/reducer.py +1 -1
  102. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_scorer.py +2 -2
  103. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/__init__.py +2 -5
  104. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_prompt.py +35 -5
  105. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_task_state.py +80 -38
  106. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/__init__.py +2 -0
  107. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool.py +12 -1
  108. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_call.py +10 -0
  109. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_def.py +16 -5
  110. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_with.py +21 -4
  111. inspect_ai-0.3.59/src/inspect_ai/tool/beta/__init__.py +5 -0
  112. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/__init__.py +3 -0
  113. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_common.py +133 -0
  114. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_computer.py +155 -0
  115. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_computer_split.py +198 -0
  116. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/Dockerfile +100 -0
  117. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/README.md +30 -0
  118. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/entrypoint.sh +18 -0
  119. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/novnc_startup.sh +20 -0
  120. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/x11vnc_startup.sh +48 -0
  121. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/xfce_startup.sh +13 -0
  122. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/xvfb_startup.sh +48 -0
  123. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/image_home_dir/Desktop/Firefox Web Browser.desktop +10 -0
  124. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/image_home_dir/Desktop/Visual Studio Code.desktop +10 -0
  125. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/image_home_dir/Desktop/XPaint.desktop +10 -0
  126. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/_logger.py +22 -0
  127. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/_run.py +42 -0
  128. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/_tool_result.py +33 -0
  129. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/_x11_client.py +262 -0
  130. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/computer_tool.py +85 -0
  131. inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/requirements.txt +0 -0
  132. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/__init__.py +2 -0
  133. inspect_ai-0.3.59/src/inspect_ai/util/_limit.py +26 -0
  134. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/docker.py +64 -1
  135. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/internal.py +3 -1
  136. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/environment.py +14 -0
  137. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai.egg-info/PKG-INFO +2 -2
  138. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai.egg-info/SOURCES.txt +40 -3
  139. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai.egg-info/requires.txt +1 -1
  140. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_prompt.py +20 -5
  141. inspect_ai-0.3.59/tests/solver/test_score.py +45 -0
  142. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_solver.py +0 -1
  143. inspect_ai-0.3.59/tests/test_helpers/__init__.py +0 -0
  144. inspect_ai-0.3.59/tests/test_package/inspect_package/py.typed +0 -0
  145. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_sample_limits.py +42 -3
  146. inspect_ai-0.3.59/tests/test_task_list/__init__.py +0 -0
  147. inspect_ai-0.3.59/tests/util/test_truncate.py +21 -0
  148. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/CHANGELOG.md +4 -0
  149. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/package.json +1 -1
  150. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/@types/log.d.ts +13 -2
  151. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-eval.ts +1 -1
  152. inspect_ai-0.3.58/examples/intervention/README.md +0 -164
  153. inspect_ai-0.3.58/examples/intervention/intervention.py +0 -110
  154. inspect_ai-0.3.58/src/inspect_ai/_view/www/src/components/VirtualList.mjs +0 -98
  155. inspect_ai-0.3.58/src/inspect_ai/_view/www/src/index.js +0 -28
  156. inspect_ai-0.3.58/src/inspect_ai/_view/www/src/samples/tools/SampleFilter.mjs +0 -133
  157. inspect_ai-0.3.58/src/inspect_ai/_view/www/src/samples/tools/filters.mjs +0 -114
  158. inspect_ai-0.3.58/src/inspect_ai/_view/www/src/samples/transcript/TranscriptState.mjs +0 -70
  159. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/dependabot.yml +0 -0
  160. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/pull_request_template.md +0 -0
  161. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/workflows/build.yml +0 -0
  162. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/workflows/docs.yml +0 -0
  163. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/workflows/log_viewer.yml +0 -0
  164. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/workflows/pypi.yml +0 -0
  165. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.github/workflows/vscode.yml +0 -0
  166. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.gitignore +0 -0
  167. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.vscode/extensions.json +0 -0
  168. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/.vscode/settings.json +0 -0
  169. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/CITATION.cff +0 -0
  170. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/LICENSE +0 -0
  171. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/Makefile +0 -0
  172. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/README.md +0 -0
  173. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/.gitignore +0 -0
  174. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/CNAME +0 -0
  175. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_container_limits.md +0 -0
  176. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_errors_and_retries.md +0 -0
  177. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_max_samples.md +0 -0
  178. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_metadata_typing.md +0 -0
  179. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_quarto.yml +0 -0
  180. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_sample-preservation.md +0 -0
  181. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_sandboxenv-interface.md +0 -0
  182. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_setting_max_samples.md +0 -0
  183. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_store_typing.md +0 -0
  184. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_tools-annotations-required.md +0 -0
  185. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/_variables.yml +0 -0
  186. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/agents-api.qmd +0 -0
  187. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/agents.qmd +0 -0
  188. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/caching.qmd +0 -0
  189. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/datasets.qmd +0 -0
  190. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/eval-logs.qmd +0 -0
  191. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/eval-sets.qmd +0 -0
  192. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/examples/examples.bib +0 -0
  193. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/examples/examples.css +0 -0
  194. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/examples/examples.ejs +0 -0
  195. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/examples/examples.yml +0 -0
  196. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/examples/index.qmd +0 -0
  197. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/extensions.qmd +0 -0
  198. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/human-agent.qmd +0 -0
  199. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/aisi-logo.png +0 -0
  200. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/eval-log.png +0 -0
  201. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-activity-bar.png +0 -0
  202. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-human-agent-container.png +0 -0
  203. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-human-agent.png +0 -0
  204. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-multiple-models.png +0 -0
  205. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-terminal-transcript.png +0 -0
  206. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-answers.png +0 -0
  207. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-filter.png +0 -0
  208. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-history.png +0 -0
  209. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-home.png +0 -0
  210. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-info.png +0 -0
  211. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-logging-console.png +0 -0
  212. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-logging.png +0 -0
  213. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-main.png +0 -0
  214. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-messages.png +0 -0
  215. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-metadata.png +0 -0
  216. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-scoring.png +0 -0
  217. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-sort.png +0 -0
  218. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-view-splash.png +0 -0
  219. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-vscode-config.png +0 -0
  220. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-vscode-install.png +0 -0
  221. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-vscode-logview.png +0 -0
  222. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-vscode-output-channel.png +0 -0
  223. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect-vscode-run-task.png +0 -0
  224. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/inspect.png +0 -0
  225. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/logs-drop-down.png +0 -0
  226. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/logs-open-button.png +0 -0
  227. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/logs.png +0 -0
  228. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/popularity.png +0 -0
  229. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/python-tool-view.png +0 -0
  230. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/rate-limit.png +0 -0
  231. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/running-theory.png +0 -0
  232. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/task-max-sandboxes.png +0 -0
  233. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/toolenv-no-cleanup.png +0 -0
  234. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/images/web-browser-tool-view.png +0 -0
  235. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/index.qmd +0 -0
  236. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/interactivity.qmd +0 -0
  237. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/llms.txt +0 -0
  238. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/log-viewer.qmd +0 -0
  239. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/multimodal.qmd +0 -0
  240. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/parallelism.qmd +0 -0
  241. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/sandboxing.qmd +0 -0
  242. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/scorers.qmd +0 -0
  243. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/scripts/post-render.sh +0 -0
  244. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/theme.scss +0 -0
  245. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/tracing.qmd +0 -0
  246. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/tutorial.qmd +0 -0
  247. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/typing.qmd +0 -0
  248. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/vscode.qmd +0 -0
  249. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/docs/workflow.qmd +0 -0
  250. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/approval/README.md +0 -0
  251. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/approval/approval.py +0 -0
  252. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/approval/approval.yaml +0 -0
  253. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/biology_qa.py +0 -0
  254. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/browser/browser.py +0 -0
  255. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/browser/compose.yaml +0 -0
  256. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/cache.py +0 -0
  257. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/evalset.py +0 -0
  258. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/hello_world.py +0 -0
  259. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/images/ballons.png +0 -0
  260. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/images/bike.png +0 -0
  261. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/images/images.jsonl +0 -0
  262. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/images/images.py +0 -0
  263. {inspect_ai-0.3.58/examples/intervention → inspect_ai-0.3.59/examples/intervention/shell}/Dockerfile +0 -0
  264. {inspect_ai-0.3.58/examples/intervention → inspect_ai-0.3.59/examples/intervention/shell}/compose.yaml +0 -0
  265. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/.env.example +0 -0
  266. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/.gitignore +0 -0
  267. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/README.md +0 -0
  268. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/inspect_langchain.py +0 -0
  269. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/requirements.txt +0 -0
  270. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/wikipedia.jsonl +0 -0
  271. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/langchain/wikipedia.py +0 -0
  272. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/popularity.py +0 -0
  273. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/security_guide.py +0 -0
  274. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/theory_of_mind.py +0 -0
  275. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/examples/tool_use.py +0 -0
  276. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/requirements.txt +0 -0
  277. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/setup.cfg +0 -0
  278. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/__init__.py +0 -0
  279. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/__main__.py +0 -0
  280. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/cache.py +0 -0
  281. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/info.py +0 -0
  282. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/list.py +0 -0
  283. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/log.py +0 -0
  284. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/main.py +0 -0
  285. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/sandbox.py +0 -0
  286. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/score.py +0 -0
  287. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/trace.py +0 -0
  288. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/util.py +0 -0
  289. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_cli/view.py +0 -0
  290. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/__init__.py +0 -0
  291. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/display.py +0 -0
  292. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/footer.py +0 -0
  293. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/group.py +0 -0
  294. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/progress.py +0 -0
  295. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/results.py +0 -0
  296. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/rich.py +0 -0
  297. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/core/textual.py +0 -0
  298. {inspect_ai-0.3.58/src/inspect_ai/_display/rich → inspect_ai-0.3.59/src/inspect_ai/_display/plain}/__init__.py +0 -0
  299. {inspect_ai-0.3.58/tests/test_helpers → inspect_ai-0.3.59/src/inspect_ai/_display/rich}/__init__.py +0 -0
  300. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/app.py +0 -0
  301. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/app.tcss +0 -0
  302. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/display.py +0 -0
  303. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/theme.py +0 -0
  304. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/clock.py +0 -0
  305. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/console.py +0 -0
  306. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/footer.py +0 -0
  307. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/task_detail.py +0 -0
  308. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/tasks.py +0 -0
  309. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/titlebar.py +0 -0
  310. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/toggle.py +0 -0
  311. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_display/textual/widgets/transcript.py +0 -0
  312. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/context.py +0 -0
  313. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/eval.py +0 -0
  314. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/evalset.py +0 -0
  315. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/list.py +0 -0
  316. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/loader.py +0 -0
  317. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/registry.py +0 -0
  318. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/run.py +0 -0
  319. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/__init__.py +0 -0
  320. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/constants.py +0 -0
  321. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/epochs.py +0 -0
  322. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/error.py +0 -0
  323. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/generate.py +0 -0
  324. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/images.py +0 -0
  325. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/log.py +0 -0
  326. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/rundir.py +0 -0
  327. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/task.py +0 -0
  328. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_eval/task/util.py +0 -0
  329. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/_async.py +0 -0
  330. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/ansi.py +0 -0
  331. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/appdirs.py +0 -0
  332. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/config.py +0 -0
  333. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/content.py +0 -0
  334. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/datetime.py +0 -0
  335. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/decorator.py +0 -0
  336. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/deprecation.py +0 -0
  337. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/dev.py +0 -0
  338. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/dict.py +0 -0
  339. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/dotenv.py +0 -0
  340. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/entrypoints.py +0 -0
  341. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/environ.py +0 -0
  342. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/error.py +0 -0
  343. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/file.py +0 -0
  344. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/format.py +0 -0
  345. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/git.py +0 -0
  346. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/hash.py +0 -0
  347. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/hooks.py +0 -0
  348. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/html.py +0 -0
  349. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/http.py +0 -0
  350. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/images.py +0 -0
  351. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/json.py +0 -0
  352. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/kvstore.py +0 -0
  353. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/list.py +0 -0
  354. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/logger.py +0 -0
  355. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/notebook.py +0 -0
  356. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/notgiven.py +0 -0
  357. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/package.py +0 -0
  358. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/path.py +0 -0
  359. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/pattern.py +0 -0
  360. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/platform.py +0 -0
  361. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/registry.py +0 -0
  362. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/retry.py +0 -0
  363. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/rich.py +0 -0
  364. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/samples.py +0 -0
  365. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/terminal.py +0 -0
  366. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/thread.py +0 -0
  367. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/throttle.py +0 -0
  368. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/timeouts.py +0 -0
  369. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/trace.py +0 -0
  370. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/transcript.py +0 -0
  371. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/url.py +0 -0
  372. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/version.py +0 -0
  373. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_util/vscode.py +0 -0
  374. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/notify.py +0 -0
  375. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/schema.py +0 -0
  376. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/server.py +0 -0
  377. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/view.py +0 -0
  378. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/.gitignore +0 -0
  379. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/.prettierignore +0 -0
  380. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/.prettierrc.js +0 -0
  381. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/.tool-versions +0 -0
  382. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/README.md +0 -0
  383. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/dist/assets/favicon.svg +0 -0
  384. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/dist/index.html +0 -0
  385. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/eslint.config.mjs +0 -0
  386. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/favicon.svg +0 -0
  387. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/index.html +0 -0
  388. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/jsconfig.json +0 -0
  389. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/postcss.config.cjs +0 -0
  390. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/Register.mjs +0 -0
  391. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/Types.mjs +0 -0
  392. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/api-browser.mjs +0 -0
  393. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/api-http.mjs +0 -0
  394. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/api-shared.mjs +0 -0
  395. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/api-vscode.mjs +0 -0
  396. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/client-api.mjs +0 -0
  397. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/index.mjs +0 -0
  398. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/api/jsonrpc.mjs +0 -0
  399. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/appearance/Colors.mjs +0 -0
  400. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/appearance/Fonts.mjs +0 -0
  401. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/appearance/Icons.mjs +0 -0
  402. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/appearance/Styles.mjs +0 -0
  403. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/AnsiDisplay.css +0 -0
  404. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/AnsiDisplay.mjs +0 -0
  405. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/AppErrorBoundary.mjs +0 -0
  406. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/AsciiCinemaPlayer.mjs +0 -0
  407. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/Browser.mjs +0 -0
  408. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/Card.mjs +0 -0
  409. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/CopyButton.mjs +0 -0
  410. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/Dialog.mjs +0 -0
  411. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/DownloadButton.mjs +0 -0
  412. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/DownloadPanel.mjs +0 -0
  413. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/EmptyPanel.mjs +0 -0
  414. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/ErrorPanel.mjs +0 -0
  415. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/FindBand.mjs +0 -0
  416. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/HumanBaselineView.mjs +0 -0
  417. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/JsonPanel.mjs +0 -0
  418. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/LabeledValue.mjs +0 -0
  419. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/LightboxCarousel.mjs +0 -0
  420. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/MarkdownDiv.mjs +0 -0
  421. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/MessageBand.mjs +0 -0
  422. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/MessageContent.mjs +0 -0
  423. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/MetaDataGrid.mjs +0 -0
  424. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/MetaDataView.mjs +0 -0
  425. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/MorePopOver.mjs +0 -0
  426. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/NavPills.mjs +0 -0
  427. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/ProgressBar.mjs +0 -0
  428. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/RenderedContent/ChatMessageRenderer.mjs +0 -0
  429. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/RenderedContent/RenderedContent.mjs +0 -0
  430. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/RenderedContent/Types.mjs +0 -0
  431. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/ToolButton.mjs +0 -0
  432. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/Tools.mjs +0 -0
  433. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/components/ansi-output.js +0 -0
  434. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/constants.mjs +0 -0
  435. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/json/JsonTab.mjs +0 -0
  436. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/log/remoteLogFile.mjs +0 -0
  437. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/log-reader/Log-Reader.mjs +0 -0
  438. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/log-reader/Native-Log-Reader.mjs +0 -0
  439. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/log-reader/Open-AI-Log-Reader.mjs +0 -0
  440. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/plan/PlanCard.mjs +0 -0
  441. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleError.mjs +0 -0
  442. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleLimit.mjs +0 -0
  443. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleScoreView.mjs +0 -0
  444. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/SampleScores.mjs +0 -0
  445. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/tools/EpochFilter.mjs +0 -0
  446. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/tools/SelectScorer.mjs +0 -0
  447. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/tools/SortFilter.mjs +0 -0
  448. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/ApprovalEventView.mjs +0 -0
  449. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/EventSection.mjs +0 -0
  450. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/LoggerEventView.mjs +0 -0
  451. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/state/StateDiffView.mjs +0 -0
  452. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/samples/transcript/state/StateEventRenderers.mjs +0 -0
  453. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/sidebar/Sidebar.mjs +0 -0
  454. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/types/asciicinema-player.d.ts +0 -0
  455. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/types/jsondiffpatch.d.ts +0 -0
  456. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/types/prism.d.ts +0 -0
  457. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/usage/ModelTokenTable.mjs +0 -0
  458. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/usage/UsageCard.mjs +0 -0
  459. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Base64.mjs +0 -0
  460. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Git.mjs +0 -0
  461. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Html.mjs +0 -0
  462. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Path.mjs +0 -0
  463. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Print.mjs +0 -0
  464. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/Type.mjs +0 -0
  465. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/attachments.mjs +0 -0
  466. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/debugging.mjs +0 -0
  467. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/http.mjs +0 -0
  468. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/queue.mjs +0 -0
  469. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/remoteZipFile.mjs +0 -0
  470. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/sync.mjs +0 -0
  471. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/utils/vscode.mjs +0 -0
  472. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/src/workspace/TaskErrorPanel.mjs +0 -0
  473. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/_view/www/tsconfig.json +0 -0
  474. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/__init__.py +0 -0
  475. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_apply.py +0 -0
  476. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_approval.py +0 -0
  477. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_approver.py +0 -0
  478. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_auto.py +0 -0
  479. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_call.py +0 -0
  480. {inspect_ai-0.3.58/tests/test_task_list → inspect_ai-0.3.59/src/inspect_ai/approval/_human}/__init__.py +0 -0
  481. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_human/approver.py +0 -0
  482. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_human/console.py +0 -0
  483. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_human/manager.py +0 -0
  484. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_human/panel.py +0 -0
  485. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_human/util.py +0 -0
  486. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/approval/_registry.py +0 -0
  487. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/__init__.py +0 -0
  488. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_dataset.py +0 -0
  489. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_examples/bias_detection.jsonl +0 -0
  490. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_examples/biology_qa.jsonl +0 -0
  491. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_examples/popularity.jsonl +0 -0
  492. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_examples/security_guide.jsonl +0 -0
  493. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_examples/theory_of_mind.jsonl +0 -0
  494. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_sources/csv.py +0 -0
  495. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_sources/example.py +0 -0
  496. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_sources/file.py +0 -0
  497. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_sources/hf.py +0 -0
  498. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_sources/json.py +0 -0
  499. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_sources/util.py +0 -0
  500. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/dataset/_util.py +0 -0
  501. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/__init__.py +0 -0
  502. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_bundle.py +0 -0
  503. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_condense.py +0 -0
  504. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_convert.py +0 -0
  505. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_file.py +0 -0
  506. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_message.py +0 -0
  507. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_recorders/__init__.py +0 -0
  508. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_recorders/create.py +0 -0
  509. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_recorders/eval.py +0 -0
  510. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_recorders/file.py +0 -0
  511. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_recorders/json.py +0 -0
  512. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_recorders/recorder.py +0 -0
  513. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/log/_retry.py +0 -0
  514. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/__init__.py +0 -0
  515. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_cache.py +0 -0
  516. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_chat_message.py +0 -0
  517. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_image.py +0 -0
  518. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_model_call.py +0 -0
  519. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/cloudflare.py +0 -0
  520. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/grok.py +0 -0
  521. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/groq.py +0 -0
  522. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/hf.py +0 -0
  523. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/llama_cpp_python.py +0 -0
  524. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/mockllm.py +0 -0
  525. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/ollama.py +0 -0
  526. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/util/__init__.py +0 -0
  527. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/util/chatapi.py +0 -0
  528. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/util/hf_handler.py +0 -0
  529. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/util/llama31.py +0 -0
  530. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/util/util.py +0 -0
  531. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_providers/vllm.py +0 -0
  532. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_registry.py +0 -0
  533. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/model/_render.py +0 -0
  534. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/py.typed +0 -0
  535. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/__init__.py +0 -0
  536. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_answer.py +0 -0
  537. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_choice.py +0 -0
  538. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_classification.py +0 -0
  539. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_common.py +0 -0
  540. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_match.py +0 -0
  541. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_metric.py +0 -0
  542. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_metrics/__init__.py +0 -0
  543. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_metrics/accuracy.py +0 -0
  544. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_metrics/mean.py +0 -0
  545. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_metrics/std.py +0 -0
  546. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_model.py +0 -0
  547. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_multi.py +0 -0
  548. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_pattern.py +0 -0
  549. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_reducer/__init__.py +0 -0
  550. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_reducer/registry.py +0 -0
  551. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_reducer/types.py +0 -0
  552. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_score.py +0 -0
  553. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/scorer/_target.py +0 -0
  554. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_basic_agent.py +0 -0
  555. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_chain.py +0 -0
  556. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_critique.py +0 -0
  557. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_fork.py +0 -0
  558. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/agent.py +0 -0
  559. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/__init__.py +0 -0
  560. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/clock.py +0 -0
  561. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/command.py +0 -0
  562. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/instructions.py +0 -0
  563. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/note.py +0 -0
  564. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/score.py +0 -0
  565. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/status.py +0 -0
  566. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/commands/submit.py +0 -0
  567. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/install.py +0 -0
  568. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/panel.py +0 -0
  569. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/service.py +0 -0
  570. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/state.py +0 -0
  571. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_human_agent/view.py +0 -0
  572. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_multiple_choice.py +0 -0
  573. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_plan.py +0 -0
  574. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_solver.py +0 -0
  575. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_transcript.py +0 -0
  576. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_use_tools.py +0 -0
  577. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/solver/_util.py +0 -0
  578. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_choice.py +0 -0
  579. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_description.py +0 -0
  580. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_info.py +0 -0
  581. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_params.py +0 -0
  582. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tool_transcript.py +0 -0
  583. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_execute.py +0 -0
  584. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/__init__.py +0 -0
  585. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/Dockerfile +0 -0
  586. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/README.md +0 -0
  587. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/accessibility_node.py +0 -0
  588. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/dm_env_servicer.py +0 -0
  589. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/images/usage_diagram.png +0 -0
  590. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/mock_environment.py +0 -0
  591. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/playwright_crawler.py +0 -0
  592. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_accessibility_node.py +0 -0
  593. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_dm_env_servicer.py +0 -0
  594. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_playwright_crawler.py +0 -0
  595. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_web_environment.py +0 -0
  596. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_client.py +0 -0
  597. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_client_new_session.py +0 -0
  598. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_environment.py +0 -0
  599. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_server.py +0 -0
  600. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_browser/_web_browser.py +0 -0
  601. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/tool/_tools/_web_search.py +0 -0
  602. /inspect_ai-0.3.58/tests/test_package/inspect_package/py.typed → /inspect_ai-0.3.59/src/inspect_ai/tool/beta/_computer/_resources/tool/__init__.py +0 -0
  603. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_concurrency.py +0 -0
  604. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_console.py +0 -0
  605. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_conversation.py +0 -0
  606. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_display.py +0 -0
  607. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_panel.py +0 -0
  608. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_resource.py +0 -0
  609. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/__init__.py +0 -0
  610. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/context.py +0 -0
  611. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/cleanup.py +0 -0
  612. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/compose.py +0 -0
  613. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/config.py +0 -0
  614. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/prereqs.py +0 -0
  615. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/docker/util.py +0 -0
  616. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/limits.py +0 -0
  617. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/local.py +0 -0
  618. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/registry.py +0 -0
  619. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/self_check.py +0 -0
  620. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_sandbox/service.py +0 -0
  621. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_store.py +0 -0
  622. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_store_model.py +0 -0
  623. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_subprocess.py +0 -0
  624. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_subtask.py +0 -0
  625. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai/util/_throttle.py +0 -0
  626. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai.egg-info/dependency_links.txt +0 -0
  627. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai.egg-info/entry_points.txt +0 -0
  628. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/src/inspect_ai.egg-info/top_level.txt +0 -0
  629. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/approval/approve.yaml +0 -0
  630. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/approval/escalate.yaml +0 -0
  631. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/approval/modify.yaml +0 -0
  632. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/approval/reject.yaml +0 -0
  633. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/approval/terminate.yaml +0 -0
  634. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/approval/test_approval.py +0 -0
  635. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/conftest.py +0 -0
  636. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/dataset.jsonl +0 -0
  637. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/images/ballons.png +0 -0
  638. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/images.jsonl +0 -0
  639. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/samples-md.csv +0 -0
  640. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/samples-md.json +0 -0
  641. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/samples-md.jsonl +0 -0
  642. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/samples.csv +0 -0
  643. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/samples.json +0 -0
  644. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset/samples.jsonl +0 -0
  645. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/dataset/test_dataset.py +0 -0
  646. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_formats.json +0 -0
  647. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_images.json +0 -0
  648. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_images_tc.json +0 -0
  649. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_invalid.txt +0 -0
  650. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_length_stop_reason.txt +0 -0
  651. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_streaming.eval +0 -0
  652. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_valid.txt +0 -0
  653. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_version_3.txt +0 -0
  654. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log/log_with_nan.txt +0 -0
  655. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_eval_log.py +0 -0
  656. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_list_logs/2024-11-05T13-31-45-05-00_input-task_8zXjbRzCWrL9GXiXo2vus9.json +0 -0
  657. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_list_logs/2024-11-05T13-32-37-05-00_input-task_hxs4q9azL3ySGkjJirypKZ.eval +0 -0
  658. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_list_logs/custom.eval +0 -0
  659. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_list_logs/ignore.json +0 -0
  660. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_list_logs.py +0 -0
  661. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_log_attachments.py +0 -0
  662. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_log_formats.py +0 -0
  663. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_log_level.py +0 -0
  664. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_log_streaming.py +0 -0
  665. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/log/test_log_tags.py +0 -0
  666. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_anthropic.py +0 -0
  667. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_azureai.py +0 -0
  668. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_cloudflare.py +0 -0
  669. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_google.py +0 -0
  670. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_grok.py +0 -0
  671. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_groq.py +0 -0
  672. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_hf.py +0 -0
  673. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_llama_cpp_python.py +0 -0
  674. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_openai.py +0 -0
  675. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_openai_o1.py +0 -0
  676. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_vertex.py +0 -0
  677. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/providers/test_vllm.py +0 -0
  678. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_api_key.py +0 -0
  679. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_cache.py +0 -0
  680. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_collapse_assistant_message.py +0 -0
  681. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_collapse_user_message.py +0 -0
  682. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_disable.py +0 -0
  683. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_logprobs.py +0 -0
  684. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_mock_model_llm.py +0 -0
  685. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_num_choices.py +0 -0
  686. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_parse_tool_call.py +0 -0
  687. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/model/test_stop_reason.py +0 -0
  688. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_answer.py +0 -0
  689. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_choice.py +0 -0
  690. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_classification.py +0 -0
  691. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_match.py +0 -0
  692. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_metric.py +0 -0
  693. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_model_graded.py +0 -0
  694. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_multiscorer.py +0 -0
  695. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_pattern.py +0 -0
  696. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_reducers.py +0 -0
  697. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_scorer.py +0 -0
  698. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/scorer/test_value_to_float.py +0 -0
  699. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_basic_agent.py +0 -0
  700. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_chain.py +0 -0
  701. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_fork.py +0 -0
  702. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_multiple_choice.py +0 -0
  703. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_setup.py +0 -0
  704. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_solver_decorator.py +0 -0
  705. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_solver_spec.py +0 -0
  706. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_store.py +0 -0
  707. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_store_model.py +0 -0
  708. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_subtask.py +0 -0
  709. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/solver/test_transcript.py +0 -0
  710. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval.py +0 -0
  711. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_config/model.yaml +0 -0
  712. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_config/solver.yaml +0 -0
  713. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_config/task.yaml +0 -0
  714. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_config.py +0 -0
  715. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_set/2024-08-29T15-11-17+00-00_popularity_5EAmX6wjMFqea6WY7XHzZp.json +0 -0
  716. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_set/2024-08-29T15-11-18+00-00_popularity_5EAmX6wjMFqea6WY7XHzZp.json +0 -0
  717. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_eval_set.py +0 -0
  718. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_examples.py +0 -0
  719. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_extensions.py +0 -0
  720. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_fail_on_error.py +0 -0
  721. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_helpers/tasks.py +0 -0
  722. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_helpers/tool_call_utils.py +0 -0
  723. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_helpers/tools.py +0 -0
  724. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_helpers/utils.py +0 -0
  725. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_list_task.py +0 -0
  726. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_log_dir/example_task/example_task.py +0 -0
  727. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_log_dir/test_log_dir.py +0 -0
  728. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/.gitignore +0 -0
  729. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/__init__.py +0 -0
  730. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/_registry.py +0 -0
  731. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/approvers/renamer.py +0 -0
  732. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/modelapi/custom.py +0 -0
  733. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/sandboxenv/podman.py +0 -0
  734. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/score/scorer.py +0 -0
  735. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/inspect_package/solvers/cot.py +0 -0
  736. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_package/pyproject.toml +0 -0
  737. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_retry.py +0 -0
  738. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_run_dir/task1/task1.py +0 -0
  739. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_run_dir/task2/task2.py +0 -0
  740. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_run_dir.py +0 -0
  741. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_sample_id.py +0 -0
  742. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_attr.py +0 -0
  743. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/attribs.ipynb +0 -0
  744. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/multiple.py +0 -0
  745. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/multiple_dir/_decoy/testit.py +0 -0
  746. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/multiple_dir/_decoy2.py +0 -0
  747. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/multiple_dir/bar.py +0 -0
  748. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/multiple_dir/foo.py +0 -0
  749. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/recurse/.folder3/epsilon.py +0 -0
  750. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/recurse/folder1/_decoy.py +0 -0
  751. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/recurse/folder1/theta.py +0 -0
  752. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/recurse/folder2/.folder3/epsilon.py +0 -0
  753. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/recurse/folder2/another.py +0 -0
  754. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_list/recurse/folder2/first.py +0 -0
  755. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/test_task_with.py +0 -0
  756. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/docker-compose-context/Dockerfile +0 -0
  757. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/docker-compose-context-alpine/Dockerfile +0 -0
  758. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_bash_tool.py +0 -0
  759. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_max_exec_output.py +0 -0
  760. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_max_tool_output.py +0 -0
  761. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_python_tool.py +0 -0
  762. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_sandbox_compose.yaml +0 -0
  763. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_sandbox_compose_alpine.yaml +0 -0
  764. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_sandbox_docker_and_local.py +0 -0
  765. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_sandbox_dockerfile.py +0 -0
  766. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_sandbox_tool_eval.py +0 -0
  767. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_def.py +0 -0
  768. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_images.py +0 -0
  769. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_parse.py +0 -0
  770. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_truncate.py +0 -0
  771. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_types.py +0 -0
  772. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_view.py +0 -0
  773. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tool_with.py +0 -0
  774. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_tools.py +0 -0
  775. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_use_tools.py +0 -0
  776. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_web_browser.py +0 -0
  777. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/tools/test_web_browser_compose.yaml +0 -0
  778. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/sandbox/docker_compose_multiple_services/docker-compose.yaml +0 -0
  779. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/sandbox/sandbox_setup.sh +0 -0
  780. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/sandbox/sandbox_setup_error.sh +0 -0
  781. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/sandbox/test_docker_compose_multiple_services.py +0 -0
  782. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/sandbox/test_sandbox_service.py +0 -0
  783. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/sandbox/test_sandbox_setup.py +0 -0
  784. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_file.py +0 -0
  785. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_images/images.jsonl +0 -0
  786. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_images.py +0 -0
  787. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_kvstore.py +0 -0
  788. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_media/audio.jsonl +0 -0
  789. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_media/sample.mp3 +0 -0
  790. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_media/video.jsonl +0 -0
  791. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_media/video.mp4 +0 -0
  792. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_media.py +0 -0
  793. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_package.py +0 -0
  794. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_registry.py +0 -0
  795. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_str_to_float.py +0 -0
  796. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/util/test_subprocess.py +0 -0
  797. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tests/view/test_bundle.py +0 -0
  798. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.eslintrc.json +0 -0
  799. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.gitignore +0 -0
  800. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.vscode/extensions.json +0 -0
  801. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.vscode/launch.json +0 -0
  802. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.vscode/settings.json +0 -0
  803. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.vscode/tasks.json +0 -0
  804. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.vscode-test.mjs +0 -0
  805. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.vscodeignore +0 -0
  806. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/.yarnrc +0 -0
  807. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/LICENSE +0 -0
  808. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/README.md +0 -0
  809. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/icon/eval-treeview-cancelled.svg +0 -0
  810. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/icon/eval-treeview-error.svg +0 -0
  811. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/icon/eval-treeview-started.svg +0 -0
  812. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/icon/eval-treeview.svg +0 -0
  813. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/icon/eval.svg +0 -0
  814. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/logo/inspect.png +0 -0
  815. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/logo/inspect.svg +0 -0
  816. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/templates/task.py.template +0 -0
  817. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/www/codicon/codicon.css +0 -0
  818. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/www/codicon/codicon.ttf +0 -0
  819. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/assets/www/view/view-overrides.css +0 -0
  820. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/@types/hooks.d.ts +0 -0
  821. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/document.ts +0 -0
  822. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/error.ts +0 -0
  823. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/focus.ts +0 -0
  824. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/notebook.ts +0 -0
  825. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/symbol.ts +0 -0
  826. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/task.ts +0 -0
  827. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/templates.ts +0 -0
  828. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/components/webview.ts +0 -0
  829. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/appdirs.ts +0 -0
  830. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/command.ts +0 -0
  831. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/dispose.ts +0 -0
  832. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/env.ts +0 -0
  833. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/file.ts +0 -0
  834. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/git.ts +0 -0
  835. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/jsonrpc.ts +0 -0
  836. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/log.ts +0 -0
  837. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/nonce.ts +0 -0
  838. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/path.ts +0 -0
  839. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/port.ts +0 -0
  840. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/process.ts +0 -0
  841. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/python/code.ts +0 -0
  842. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/python/env.ts +0 -0
  843. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/python/exec.ts +0 -0
  844. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/python/index.ts +0 -0
  845. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/python/interpreter.ts +0 -0
  846. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/random.ts +0 -0
  847. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/string.ts +0 -0
  848. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/text.ts +0 -0
  849. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/uri.ts +0 -0
  850. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/vscode/association.ts +0 -0
  851. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/wait.ts +0 -0
  852. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/core/workspace.ts +0 -0
  853. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/extension.ts +0 -0
  854. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/hooks/hooks.ts +0 -0
  855. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/hooks/index.ts +0 -0
  856. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/hooks/preview.ts +0 -0
  857. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/inspect/index.ts +0 -0
  858. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/inspect/logs.ts +0 -0
  859. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/inspect/props.ts +0 -0
  860. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/inspect/version.ts +0 -0
  861. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/active-task/active-task-command.ts +0 -0
  862. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/active-task/active-task-provider.ts +0 -0
  863. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/activity-bar-provider.ts +0 -0
  864. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/env-config-provider.ts +0 -0
  865. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/log-listing/log-directory-selector.ts +0 -0
  866. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-data.ts +0 -0
  867. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-mru.ts +0 -0
  868. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-provider.ts +0 -0
  869. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-server-queue.ts +0 -0
  870. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/log-listing/log-listing.ts +0 -0
  871. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/task-config-commands.ts +0 -0
  872. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/task-config-provider.ts +0 -0
  873. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/task-outline-commands.ts +0 -0
  874. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/task-outline-provider.ts +0 -0
  875. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/webview/env-config-webview.css +0 -0
  876. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/webview/env-config-webview.ts +0 -0
  877. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/webview/task-config-webview.css +0 -0
  878. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/webview/task-config-webview.ts +0 -0
  879. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/webview/vscode-controls.css +0 -0
  880. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/activity-bar/webview/webview-utils.ts +0 -0
  881. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/codelens/codelens-provider.ts +0 -0
  882. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-commands.ts +0 -0
  883. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-constants.ts +0 -0
  884. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-eval-commands.ts +0 -0
  885. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-logs-watcher.ts +0 -0
  886. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-manager.ts +0 -0
  887. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/inspect/inspect-view-server.ts +0 -0
  888. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/lognotify.ts +0 -0
  889. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/commands.ts +0 -0
  890. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/logview-editor.ts +0 -0
  891. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/logview-link-provider.ts +0 -0
  892. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/logview-panel.ts +0 -0
  893. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/logview-state.ts +0 -0
  894. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/logview-view.ts +0 -0
  895. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/logview/logview.ts +0 -0
  896. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/openlog.ts +0 -0
  897. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/protocol-handler.ts +0 -0
  898. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/settings/inspect-settings.ts +0 -0
  899. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/settings/user-settings.ts +0 -0
  900. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/statusbar.ts +0 -0
  901. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/workspace/workspace-env-commands.ts +0 -0
  902. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/workspace/workspace-env-provider.ts +0 -0
  903. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/workspace/workspace-init.ts +0 -0
  904. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/workspace/workspace-state-provider.ts +0 -0
  905. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/providers/workspace/workspace-task-provider.ts +0 -0
  906. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/test/codelens-provider.test.ts +0 -0
  907. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/src/test/extension.test.ts +0 -0
  908. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tools/ts-to-mjs/.gitignore +0 -0
  909. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tools/ts-to-mjs/package.json +0 -0
  910. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tools/ts-to-mjs/rollup.config.js +0 -0
  911. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tools/ts-to-mjs/src/index.ts +0 -0
  912. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tools/ts-to-mjs/src/jsonrpc.ts +0 -0
  913. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tools/ts-to-mjs/yarn.lock +0 -0
  914. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/tsconfig.json +0 -0
  915. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/webpack.config.js +0 -0
  916. {inspect_ai-0.3.58 → inspect_ai-0.3.59}/tools/vscode/yarn.lock +0 -0
@@ -5,7 +5,7 @@ default_language_version:
5
5
  python: python3.11
6
6
  repos:
7
7
  - repo: https://github.com/astral-sh/ruff-pre-commit
8
- rev: v0.9.1
8
+ rev: v0.9.2
9
9
  hooks:
10
10
  # Run the linter.
11
11
  - id: ruff
@@ -1,8 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.59 (24 January 2025)
4
+
5
+ - Beta version of [computer()](https://inspect.ai-safety-institute.org.uk/tools.html#sec-computer) tool which models with a computer desktop environment.
6
+ - `user_message()` solver for appending parameterised user messages.
7
+ - `prompt_template()`, `system_message()` and `user_message()` solver now also include the sample `store` in substitution parameters.
8
+ - Limits: Enforce token and message limit at lower level (not longer required to check `state.completed` for limit enforcement).
9
+ - Limits: Enforce [custom limits](https://inspect.ai-safety-institute.org.uk/errors-and-limits.html#custom-limit) for samples by raising `SampleLimitExceededError`.
10
+ - Tasks: Optional ability for solvers to [yield scores](https://inspect.ai-safety-institute.org.uk/solvers.html#sec-scoring-in-solvers) for a task.
11
+ - Model API: Log model calls that result in bad request errors.
12
+ - Tools: `model_input` option that determines how tool call result content is played back to the model.
13
+ - Tools: Don't attempt to marshall arguments of dynamic `ToolDef` with `**kwargs: Any` (just pass them through).
14
+ - Log warning when a non-fatal sample error occurs (i.e. errors permitted by the `fail_on_error` option)
15
+ - Inspect View: allow filtering samples by compound expressions including multiple scorers. (thanks @andrei-apollo)
16
+ - Inspect View: improve rendering performance and stability for the viewer when viewing very large eval logs or samples with a large number of steps.
17
+ - Task display: Improved `plain` mode with periodic updates on progress, metrics, etc.
18
+ - Google: Update to v0.8.4 of google-generativeai (py.typed support and removal of logprobs generation options)
19
+ - Google: Support for string enums (e.g. `Literal["a", "b", "c"])`) in tool function declarations.
20
+
3
21
  ## v0.3.58 (16 January 2025)
4
22
 
5
- - Support for [audio and video](https://github.com/UKGovernmentBEIS/inspect_ai/pull/1102) inputs for Open AI and Google Gemini models.
23
+ - Support for [audio and video](https://inspect.ai-safety-institute.org.uk/multimodal.html) inputs for Open AI and Google Gemini models.
6
24
  - Task display: Added Timeout Tool button for manually timing out a tool call.
7
25
  - Task display: Automatically switch to "plain" mode when running in a background thread
8
26
  - Sandboxes: Setup and initialisation errors are now handled at the sample level.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: inspect_ai
3
- Version: 0.3.58
3
+ Version: 0.3.59
4
4
  Summary: Framework for large language model evaluations
5
5
  Author: UK AI Safety Institute
6
6
  License: MIT License
@@ -67,7 +67,7 @@ Requires-Dist: pytest-asyncio; extra == "dev"
67
67
  Requires-Dist: pytest-cov; extra == "dev"
68
68
  Requires-Dist: pytest-dotenv; extra == "dev"
69
69
  Requires-Dist: pytest-xdist; extra == "dev"
70
- Requires-Dist: ruff==0.9.1; extra == "dev"
70
+ Requires-Dist: ruff==0.9.2; extra == "dev"
71
71
  Requires-Dist: textual-dev>=0.86.2; extra == "dev"
72
72
  Requires-Dist: types-PyYAML; extra == "dev"
73
73
  Requires-Dist: types-beautifulsoup4; extra == "dev"
@@ -52,6 +52,17 @@ if output.stop_reason == "model_length":
52
52
  # do something to recover from context window overflow
53
53
  ```
54
54
 
55
+ If you have written a scaffold loop that continues calling the model even after it stops calling tools, there may be values of `stop_reason` that indicate that the the loop should terminate anyway (because the error will just keep repeating on subsequent calls to the model). For example, the [basic agent](agents.qmd#sec-basic-agent) checks for `stop_reason` and exits under the following conditions:
56
+
57
+ ```python
58
+ # check for stop reasons that indicate we should terminate
59
+ if state.output.stop_reason == "model_length":
60
+ transcript().info(
61
+ f"Agent terminated (reason: {state.output.stop_reason})"
62
+ )
63
+ break
64
+ ```
65
+
55
66
  Here are the possible values for `StopReason` :
56
67
 
57
68
  | Stop Reason | Description |
@@ -33,13 +33,14 @@ You can chain to together the `human` and `auto` approvers in an *approval polic
33
33
  ``` yaml
34
34
  approvers:
35
35
  - name: human
36
- tools: ["web_browser_click", "web_browser_type*"]
36
+ tools: ["web_browser_click", "web_browser_type"]
37
37
 
38
38
  - name: auto
39
39
  tools: "*"
40
40
  ```
41
41
 
42
- Navigational web browser tool calls (e.g. `web_browser_go`) are approved automatically via the catch-all `auto` approver at the end of the chain. Note that when listing an approver in a policy you indicate which tools it should handle using a glob or list of globs.
42
+
43
+ Navigational web browser tool calls (e.g. `web_browser_go`) are approved automatically via the catch-all `auto` approver at the end of the chain. Note that when listing an approver in a policy you indicate which tools it should handle using a glob or list of globs. These globs are prefix matched so the `web_browser_type` glob matches both `web_browser_type` and `web_browser_type_submit`.
43
44
 
44
45
  To use this policy, pass the path to the policy YAML file as the approver. For example:
45
46
 
@@ -47,6 +48,24 @@ To use this policy, pass the path to the policy YAML file as the approver. For e
47
48
  inspect eval browser.py --approval approval.yaml
48
49
  ```
49
50
 
51
+ You can also match on tool arguments (for tools that dispatch many action types). For example, here is an approval policy for the [Computer Tool](tools.qmd#sec-computer) which allows typing and mouse movement but requires approval for key combos (e.g. Enter or a shortcut) and typing:
52
+
53
+
54
+ ```{.yaml filename="approval.yaml"}
55
+ approvers:
56
+ - name: human
57
+ tools:
58
+ - computer(action='key'
59
+ - computer(action='left_click'
60
+ - computer(action='middle_click'
61
+ - computer(action='double_click'
62
+
63
+ - name: auto
64
+ tools: "*"
65
+ ```
66
+
67
+ Note that since this is a prefix match and there could be other arguments, we don't end the tool match pattern with a parentheses.
68
+
50
69
  ## Approvers in Code
51
70
 
52
71
  We've demonstrated configuring approvers via a YAML approval policy file—you can also provide a policy directly in code (useful if it needs to be more dynamic). Here's a pure Python version of the example from the previous section:
@@ -152,7 +171,7 @@ Assuming we have properly [registered our approver](extensions.qmd#sec-extension
152
171
  ``` yaml
153
172
  approvers:
154
173
  - name: evaltools/bash_allowlist
155
- tools: "*bash*"
174
+ tools: "bash"
156
175
  allowed_commands: ["ls", "echo", "cat"]
157
176
 
158
177
  - name: human
@@ -126,6 +126,8 @@ def agent_loop(message_limit: int = 50):
126
126
  ...
127
127
  ```
128
128
 
129
+ Message limits are checked whenever you call `generate()` on the main model being evaluated. The `message_limit` is comparted to the number of messages passed in `input` parameter to `generate()`.
130
+
129
131
  ### Token Limit
130
132
 
131
133
  Here we set a `token_limit` of 500K for each sample within a task:
@@ -163,16 +165,17 @@ def agent_loop(token_limit: int = (1024 * 500)) -> Solver:
163
165
  It's important to note that the `token_limit` is for all tokens used within the execution of a sample. If you want to limit the number of tokens that can be yielded from a single call to the model you should use the `max_tokens` generation option.
164
166
  :::
165
167
 
166
- ### Limit Checking
168
+ ### Custom Limit
167
169
 
168
- How and when are sample limits checked? Time limits are handled automatically by the code that runs the sample. Message and token limits are checked automatically when you access the `completed` property of `TaskState`. For example, most agents will use `state.completed` as their main loop condition:
170
+ When limits are exceeded, a `SampleLimitExceededError` is raised and caught by the main Inspect sample execution logic. If you want to create custom limit types, you can enforce them by raising a `SampleLimitExceededError` as follows:
169
171
 
170
- ``` python
171
- while not state.completed:
172
- # call model
173
- output = await model.generate(state.messages, state.tools)
174
-
175
- ...
176
- ```
172
+ ```python
173
+ from inspect_ai.util import SampleLimitExceededError
177
174
 
178
- If you are writing an agent loop you should check `state.completed` so that message and token limits can be enforced. Library code that calls a series of solvers in succession should also check `state.completed` (note that this is done automatically by the `chain()` function that is used to compose together lists of solvers).
175
+ raise SampleLimitExceededError(
176
+ "custom",
177
+ value=value,
178
+ limit=limit,
179
+ message=f"A custom limit was exceeded: {value}"
180
+ )
181
+ ```
@@ -4,7 +4,7 @@ title: Models
4
4
 
5
5
  ## Overview
6
6
 
7
- Inspect has built in support for a variety of language model API providers and can be extended to support arbitrary additions ones. Built-in model API providers, their dependencies, and environment variables required to use them are as follows:
7
+ Inspect has built in support for a variety of language model API providers and can be extended to support arbitrary additional ones. Built-in model API providers, their dependencies, and environment variables required to use them are as follows:
8
8
 
9
9
  | Model API | Dependencies | Environment Variables |
10
10
  |---------------|--------------------|--------------------------------------|
@@ -14,11 +14,11 @@ Solvers are the heart of Inspect evaluations and can serve a wide variety of pur
14
14
  5. Multi-turn dialog
15
15
  6. Running an agent scaffold
16
16
 
17
- Tasks have a single top-level solver that defines an execution plan. This solver could be implemented with arbitrary Python code (calling the model as required) or could consist of a set of other solvers composed together. Solvers can therefore play two differnet roles:
17
+ Tasks have a single top-level solver that defines an execution plan. This solver could be implemented with arbitrary Python code (calling the model as required) or could consist of a set of other solvers composed together. Solvers can therefore play two differnet roles:
18
18
 
19
- 1. _Composite_ specifications for task execution; and
19
+ 1. *Composite* specifications for task execution; and
20
20
 
21
- 2. _Components_ that can be chained together.
21
+ 2. *Components* that can be chained together.
22
22
 
23
23
  ### Example
24
24
 
@@ -99,7 +99,7 @@ The `generate` function passed to solvers is a convenience function that takes a
99
99
 
100
100
  Here are what some of the built-in solvers do with the `TaskState`:
101
101
 
102
- 1. The `system_message()` solver inserts a system message into the chat history.
102
+ 1. The `system_message()` and `user_message()` solvers insert messages into the chat history.
103
103
 
104
104
  2. The `chain_of_thought()` solver takes the original user prompt and re-writes it to ask the model to use chain of thought reasoning to come up with its answer.
105
105
 
@@ -117,14 +117,19 @@ You can also imagine solvers that call other models to help come up with a bette
117
117
  ## Built-In Solvers
118
118
 
119
119
  Inspect has a number of built-in solvers, each of which can be customised in some fashion. Built in solvers can be imported from the `inspect_ai.solver` module. Below is a summary of these solvers. There is not (yet) reference documentation on these functions so the best way to learn about how they can be customised, etc. is to use the **Go to Definition** command in your source editor.
120
+ - `prompt_template()`
121
+
122
+ Modify the user prompt by substituting the current prompt into the `{prompt}` placeholder within the specified template. Also automatically substitutes any variables defined in sample `metadata` as well as any other custom named paramters passed in `params`.
123
+
120
124
 
121
125
  - `system_message()`
122
126
 
123
- Prepend role="system" `message` to the list of messages (will follow any other system messages it finds in the message stream). Also automatically substitutes any variables defined in sample `metadata` as well as any other custom named paramters passed in `params`.
127
+ Prepend role="system" `message` to the list of messages (will follow any other system messages it finds in the message stream). Also automatically substitutes any variables defined in sample `metadata` and `store`, as well as any other custom named paramters passed in `params`.
124
128
 
125
- - `prompt_template()`
129
+ - `user_message()`
130
+
131
+ Append role="user" `message` to the list of messages. Also automatically substitutes any variables defined in sample `metadata` and `store`, as well as any other custom named paramters passed in `params`.
126
132
 
127
- Modify the user prompt by substituting the current prompt into the `{prompt}` placeholder within the specified template. Also automatically substitutes any variables defined in sample `metadata` as well as any other custom named paramters passed in `params`.
128
133
 
129
134
  - `chain_of_thought()`
130
135
 
@@ -173,10 +178,10 @@ We'll present an example and then discuss the various options below (in most cas
173
178
 
174
179
  Below is a full example of reading a dataset for use with `multiple choice()` and using it in an evaluation task. The underlying data in `mmlu.csv` has the following form:
175
180
 
176
- | Question | A | B | C | D | Answer |
181
+ | Question | A | B | C | D | Answer |
177
182
  |------------|------------|------------|------------|------------|:----------:|
178
- | Find the degree for the given field extension Q(sqrt(2), sqrt(3), sqrt(18)) over Q. | 0 | 4 | 2 | 6 | B |
179
- | Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the index of \<p\> in S_5. | 8 | 2 | 24 | 120 | C |
183
+ | Find the degree for the given field extension Q(sqrt(2), sqrt(3), sqrt(18)) over Q. | 0 | 4 | 2 | 6 | B |
184
+ | Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the index of \<p\> in S_5. | 8 | 2 | 24 | 120 | C |
180
185
 
181
186
  : {tbl-colwidths=\[50,10,10,10,10,10\]}
182
187
 
@@ -217,13 +222,12 @@ We use the `record_to_sample()` function to read the `choices` along with the `t
217
222
 
218
223
  The following options are available for further customisation of the multiple choice solver:
219
224
 
220
- | Option | Description |
225
+ | Option | Description |
221
226
  |------------------------------------|------------------------------------|
222
- | `template` | Use `template` to provide an alternate prompt template (note that if you do this your template should handle prompting for `multiple_correct` directly if required). You can access the built in templates using the `MultipleChoiceTemplate` enum. |
223
- | `cot` | Whether the solver should perform chain-of-thought reasoning before answering (defaults to `False`). NOTE: this has no effect if you provide a custom template. |
224
- | `multiple_correct` | By default, multiple choice questions have a single correct answer. Set `multiple_correct=True` if your target has defined multiple correct answers (for example, a `target` of `["B", "C"]`). In this case the model is prompted to provide one or more answers, and the sample is scored correct only if each of these answers are provided. NOTE: this has no effect if you provide a custom template. |
225
- | `shuffle` | If you specify `shuffle=True`, then the order of the answers presented to the model will be randomised (this may or may not affect results, depending on the nature of the questions and the model being evaluated). |
226
-
227
+ | `template` | Use `template` to provide an alternate prompt template (note that if you do this your template should handle prompting for `multiple_correct` directly if required). You can access the built in templates using the `MultipleChoiceTemplate` enum. |
228
+ | `cot` | Whether the solver should perform chain-of-thought reasoning before answering (defaults to `False`). NOTE: this has no effect if you provide a custom template. |
229
+ | `multiple_correct` | By default, multiple choice questions have a single correct answer. Set `multiple_correct=True` if your target has defined multiple correct answers (for example, a `target` of `["B", "C"]`). In this case the model is prompted to provide one or more answers, and the sample is scored correct only if each of these answers are provided. NOTE: this has no effect if you provide a custom template. |
230
+ | `shuffle` | If you specify `shuffle=True`, then the order of the answers presented to the model will be randomised (this may or may not affect results, depending on the nature of the questions and the model being evaluated). |
227
231
 
228
232
  : {tbl-colwidths=\[35,65\]}
229
233
 
@@ -260,40 +264,34 @@ Typically solvers can be customised with parameters (e.g. `template` for prompt
260
264
 
261
265
  Before presenting the examples we'll take a more in-depth look at the `TaskState` class. Task states consist of both lower level data members (e.g. `messages`, `output`) as well as a number of convenience properties. The core members of `TaskState` that are *modified* by solvers are `messages` / `user_prompt` and `output`:
262
266
 
263
- | Member | Type | Description |
267
+ | Member | Type | Description |
264
268
  |-------------------|-------------------|----------------------------------|
265
- | `messages` | list\[ChatMessage\] | Chat conversation history for sample. It is automatically appended to by the `generate()` solver, and is often manipulated by other solvers (e.g. for prompt engineering or elicitation). |
266
- | `user_prompt` | ChatMessageUser | Convenience property for accessing the first user message in the message history (commonly used for prompt engineering). |
267
- | `output` | ModelOutput | The 'final' model output once we've completed all solving. This field is automatically updated with the last "assistant" message by the `generate()` solver. |
269
+ | `messages` | list\[ChatMessage\] | Chat conversation history for sample. It is automatically appended to by the `generate()` solver, and is often manipulated by other solvers (e.g. for prompt engineering or elicitation). |
270
+ | `user_prompt` | ChatMessageUser | Convenience property for accessing the first user message in the message history (commonly used for prompt engineering). |
271
+ | `output` | ModelOutput | The 'final' model output once we've completed all solving. This field is automatically updated with the last "assistant" message by the `generate()` solver. |
268
272
 
269
273
  ::: {.callout-note appearance="simple"}
270
274
  Note that the `generate()` solver automatically updates both the `messages` and `output` fields. For very simple evaluations modifying the `user_prompt` and then calling `generate()` encompasses all of the required interaction with `TaskState`.
271
275
  :::
272
276
 
273
- There are two additional fields that solvers might modify (but they are typically for more advanced use cases):
274
-
275
- | Member | Type | Description |
276
- |-------------------|-------------------|----------------------------------|
277
- | `metadata` | dict | Original metadata from `Sample`, as well as any other custom metadata that solvers choose to write (typically used to coordinate between solvers and/or for custom logging). |
278
- | `completed` | bool | Solvers can set `completed = True` to cause the task to exit the sample immediately. |
279
-
280
- Sometimes its import to have access to the *original* prompt input for the task (as other solvers may have re-written or even removed it entirely). This is available using the `input` and `input_text` properties:
277
+ Sometimes its important to have access to the *original* prompt input for the task (as other solvers may have re-written or even removed it entirely). This is available using the `input` and `input_text` properties:
281
278
 
282
- | Member | Type | Description |
279
+ | Member | Type | Description |
283
280
  |-------------------|-------------------|----------------------------------|
284
- | `input` | str \| list\[ChatMessage\] | Original `Sample` input. |
285
- | `input_text` | str | Convenience function for accessing the initial input from the `Sample` as a string. |
281
+ | `input` | str \| list\[ChatMessage\] | Original `Sample` input. |
282
+ | `input_text` | str | Convenience function for accessing the initial input from the `Sample` as a string. |
286
283
 
287
284
  There are several other fields used to provide contextual data from either the task sample or evaluation:
288
285
 
289
- | Member | Type | Description |
286
+ | Member | Type | Description |
290
287
  |-------------------|-------------------|----------------------------------|
291
- | `sample_id` | int \| str | Unique ID for sample. |
292
- | `epoch` | int | Epoch for sample. |
293
- | `choices` | list\[str\] \| None | Choices from sample (used only in multiple-choice evals). |
294
- | `model` | ModelName | Name of model currently being evaluated. |
288
+ | `sample_id` | int \| str | Unique ID for sample. |
289
+ | `epoch` | int | Epoch for sample. |
290
+ | `metadata` | dict | Original metadata from `Sample` |
291
+ | `choices` | list\[str\] \| None | Choices from sample (used only in multiple-choice evals). |
292
+ | `model` | ModelName | Name of model currently being evaluated. |
295
293
 
296
- Finally, task states also include available tools as well as guidance for the model on which tools to use (if you haven't yet encountered the concept of tool use in language models, don't worry about understanding these fields, the [Tools](tools.qmd) article provides a more in-depth treatment):
294
+ Task states also include available tools as well as guidance for the model on which tools to use (if you haven't yet encountered the concept of tool use in language models, don't worry about understanding these fields, the [Tools](tools.qmd) article provides a more in-depth treatment):
297
295
 
298
296
  | Member | Type | Description |
299
297
  |---------------|--------------|------------------------------|
@@ -422,7 +420,31 @@ Note that calls to `generate()` (for both the critique model and the model being
422
420
 
423
421
  ### Scoring in Solvers {#sec-scoring-in-solvers}
424
422
 
425
- In some cases it is useful for a solver to score a task directly to assist in deciding whether or how to continue. You can do this using the `score()` function:
423
+ Typically, solvers don't score samples but rather leave that to externally specified [scorers](scorers.qmd). However, in some cases it is more convenient to have solvers also do scoring (e.g. when there is high coupling between the solver and scoring). The following two task state fields can be used for scoring:
424
+
425
+ | Member | Type | Description |
426
+ |----------|--------------------|------------------------------|
427
+ | `target` | Target | Scoring target from `Sample` |
428
+ | `scores` | dict\[str, Score\] | Optional scores. |
429
+
430
+
431
+ Here is a trivial example of the code that might be used to yield scores from a solver:
432
+
433
+ ``` python
434
+ async def solve(state: TaskState, generate: Generate):
435
+ # ...perform solver work
436
+
437
+ # score
438
+ correct = state.output.completion == state.target.text
439
+ state.scores = { "correct": Score(value=correct) }
440
+ return state
441
+ ```
442
+
443
+ Note that scores yielded by a `Solver` are combined with scores from the normal scoring provided by the scorer(s) defined for a `Task`.
444
+
445
+ ### Intermediate Scoring
446
+
447
+ In some cases it is useful for a solver to score a task directly to generate an intermediate score or assist in deciding whether or how to continue. You can do this using the `score()` function:
426
448
 
427
449
  ``` python
428
450
  from inspect_ai.scorer import score
@@ -463,4 +485,4 @@ Early termination might also occur if you specify the `message_limit` option and
463
485
  ``` python
464
486
  # could terminate early
465
487
  eval(my_task, message_limit = 10)
466
- ```
488
+ ```
@@ -6,7 +6,7 @@ title: Tools
6
6
 
7
7
  Many models now have the ability to interact with client-side Python functions in order to expand their capabilities. This enables you to equip models with your own set of custom tools so they can perform a wider variety of tasks.
8
8
 
9
- Inspect natively supports registering Python functions as tools and providing these tools to models that support them (currently OpenAI, Claude 3, Google Gemini, and Mistral). Inspect also includes several built-in tools ([bash](#sec-bash-and-python), [python](#sec-bash-and-python), and [web_search](#sec-web-search)).
9
+ Inspect natively supports registering Python functions as tools and providing these tools to models that support them (currently OpenAI, Claude 3, Google Gemini, and Mistral). Inspect also includes several built-in tools ([bash](#sec-bash-and-python), [python](#sec-bash-and-python), [computer](#sec-computer), [web browser](#sec-web-browser), and [web_search](#sec-web-search)).
10
10
 
11
11
  ::: callout-note
12
12
  ### Tools and Agents
@@ -22,6 +22,8 @@ Inspect has several built-in tools, including:
22
22
 
23
23
  - [Web Browser](#sec-web-browser), which provides the model with a headless Chromium web browser that supports navigation, history, and mouse/keyboard interactions.
24
24
 
25
+ - [Computer](#sec-computer), which provides the model with a desktop computer (viewed through screenshots) that supports mouse and keyboard interaction.
26
+
25
27
  - [Web Search](#sec-web-search), which uses the Google Search API to execute and summarise web searches.
26
28
 
27
29
  If you are only interested in using the built-in tools, check out their respective documentation links above. To learn more about creating your own tools read on immediately below.
@@ -371,16 +373,16 @@ Note that unlike some other tool functions like `bash()`, the `web_browser()` fu
371
373
 
372
374
  If you review the transcripts of a sample with access to the web browser tool, you'll notice that there are several distinct tools made available for control of the web browser. These tools include:
373
375
 
374
- | Tool | Description |
376
+ | Tool | Description |
375
377
  |------------------------------------|------------------------------------|
376
- | `web_browser_go(url)` | Navigate the web browser to a URL. |
377
- | `web_browser_click(element_id)` | Click an element on the page currently displayed by the web browser. |
378
- | `web_browser_type(element_id)` | Type text into an input on a web browser page. |
378
+ | `web_browser_go(url)` | Navigate the web browser to a URL. |
379
+ | `web_browser_click(element_id)` | Click an element on the page currently displayed by the web browser. |
380
+ | `web_browser_type(element_id)` | Type text into an input on a web browser page. |
379
381
  | `web_browser_type_submit(element_id, text)` | Type text into a form input on a web browser page and press ENTER to submit the form. |
380
- | `web_browser_scroll(direction)` | Scroll the web browser up or down by one page. |
381
- | `web_browser_forward()` | Navigate the web browser forward in the browser history. |
382
- | `web_browser_back()` | Navigate the web browser back in the browser history. |
383
- | `web_browser_refresh()` | Refresh the current page of the web browser. |
382
+ | `web_browser_scroll(direction)` | Scroll the web browser up or down by one page. |
383
+ | `web_browser_forward()` | Navigate the web browser forward in the browser history. |
384
+ | `web_browser_back()` | Navigate the web browser back in the browser history. |
385
+ | `web_browser_refresh()` | Refresh the current page of the web browser. |
384
386
 
385
387
  : {tbl-colwidths=\[35,65\]}
386
388
 
@@ -420,6 +422,171 @@ CMD ["python3", "/app/web_browser/web_server.py"]
420
422
 
421
423
  Note that all of the Python files in the [\_resources](https://github.com/UKGovernmentBEIS/inspect_ai/blob/main/src/inspect_ai/tool/_tools/_web_browser/_resources/) directory alongside the `Dockerfile` need to be available for copying when building the container.
422
424
 
425
+ ## Computer (Beta) {#sec-computer}
426
+
427
+
428
+ The `computer()` tool provides models with a computer desktop environment along with the ability to view the screen and perform mouse and keyboard gestures. The computer tool is based on the Anthropic [Computer Use Beta](https://docs.anthropic.com/en/docs/build-with-claude/computer-use) reference implementation and works with any model that supports image input.
429
+
430
+ The current release of the computer tool is a beta version (exported from the `inspect_ai.tool.beta` module). We expect to finalise the interface and move it into the main `inspect_ai.tool` module over the next several weeks.
431
+
432
+ ### Configuration
433
+
434
+ The `computer()` tool runs within a Docker container. To use it with a task you need to reference the `aisiuk/inspect-computer-tool:latest-beta` image in your Docker compose file. For example:
435
+
436
+ ``` {.yaml filename="compose.yaml"}
437
+ services:
438
+ default:
439
+ image: aisiuk/inspect-computer-tool:latest-beta
440
+ ```
441
+
442
+ You can configure the container to not have Internet access as follows:
443
+
444
+ ``` {.yaml filename="compose.yaml"}
445
+ services:
446
+ default:
447
+ image: aisiuk/inspect-computer-tool:latest-beta
448
+ network_mode: none
449
+ ```
450
+
451
+ Note that if you'd like to be able to view the model's interactions with the computer desktop in realtime, you will need to also do some port mapping to enable a VNC connection with the container. See the [VNC Client](#vnc-client) section below for details on how to do this.
452
+
453
+ The `aisiuk/inspect-computer-tool:latest-beta` image is based on the [ubuntu:22.04](https://hub.docker.com/layers/library/ubuntu/22.04/images/sha256-965fbcae990b0467ed5657caceaec165018ef44a4d2d46c7cdea80a9dff0d1ea?context=explore) image and includes the following additional applications pre-installed:
454
+
455
+ - Firefox
456
+ - VS Code
457
+ - Xpdf
458
+ - Xpaint
459
+ - galculator
460
+
461
+ ### Task Setup
462
+
463
+ A task configured to use the computer tool might look like this:
464
+
465
+ ``` python
466
+ from inspect_ai import Task, task
467
+ from inspect_ai.scorer import match
468
+ from inspect_ai.solver import generate, use_tools
469
+ from inspect_ai.tool.beta import computer
470
+
471
+ @task
472
+ def computer_task():
473
+ return Task(
474
+ dataset=read_dataset(),
475
+ solver=[
476
+ use_tools([computer()]),
477
+ generate(),
478
+ ],
479
+ scorer=match(),
480
+ sandbox=("docker", "compose.yaml"),
481
+ )
482
+ ```
483
+
484
+ #### Options
485
+
486
+ The computer tool supports the following options:
487
+
488
+ | Option | Description |
489
+ |-------------------|-----------------------------------------------------------------------------------------------------------------------|
490
+ | `max_screenshots` | The maximum number of screenshots to play back to the model as input. Defaults to 1 (set to `None` to have no limit). |
491
+ | `timeout` | Timeout in seconds for computer tool actions. Defaults to 180 (set to `None` for no timeout). |
492
+
493
+ For example:
494
+
495
+ ``` python
496
+ solver=[
497
+ use_tools([computer(max_screenshots=2, timeout=300)]),
498
+ generate()
499
+ ]
500
+ ```
501
+
502
+ #### Examples
503
+
504
+ Two of the Inspect examples demonstrate basic computer use:
505
+
506
+ - [computer](https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/examples/computer/computer.py) — Three simple computing tasks as a minimal demonstration of computer use.
507
+
508
+ ``` bash
509
+ inspect eval examples/computer
510
+ ```
511
+
512
+ - [intervention](https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/examples/intervention/intervention.py) — Computer task driven interactively by a human operator.
513
+
514
+ ``` bash
515
+ inspect eval examples/intervention -T mode=computer --display conversation
516
+ ```
517
+
518
+ ### VNC Client {#vnc-client}
519
+
520
+ You can use a [VNC](https://en.wikipedia.org/wiki/VNC) connection to the container to watch computer use in real-time. This requires some additional port-mapping in the Docker compose file. You can define dynamic port ranges for VNC (5900) and a browser based noVNC client (6080) with the following `ports` entries:
521
+
522
+ ``` {.yaml filename="compose.yaml"}
523
+ services:
524
+ default:
525
+ image: aisiuk/inspect-computer-tool:latest-beta
526
+ ports:
527
+ - "5900"
528
+ - "6080"
529
+ ```
530
+
531
+ To connect to the container for a given sample, locate the sample in the **Running Samples** UI and expand the sample info panel at the top:
532
+
533
+ ![](images/vnc-port-info.png){.lightbox width="958"}
534
+
535
+ Click on the link for the noVNC browser client, or use a native VNC client to connect to the VNC port. Note that the VNC server will take a few seconds to start up so you should give it some time and attempt to reconnect as required if the first connection fails.
536
+
537
+ The browser based client provides a view-only interface. If you use a native VNC client you should also set it to "view only" so as to not interfere with the model's use of the computer. For example, for Real VNC Viewer:
538
+
539
+ ![](images/vnc-view-only.png){width="549"}
540
+
541
+ ### Approval
542
+
543
+ If the container you are using is connected to the Internet, you may want to configure human approval for a subset of computer tool actions. Here are the possible actions (specified using the `action` parameter to the `computer` tool):
544
+
545
+ - `key`: Press a key or key-combination on the keyboard.
546
+ - `type`: Type a string of text on the keyboard.
547
+ - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen.
548
+ - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen.
549
+ - Example: execute(action="mouse_move", coordinate=(100, 200))
550
+ - `left_click`: Click the left mouse button.
551
+ - `left_click_drag`: Click and drag the cursor to a specified (x, y) pixel coordinate on the screen.
552
+ - `right_click`: Click the right mouse button.
553
+ - `middle_click`: Click the middle mouse button.
554
+ - `double_click`: Double-click the left mouse button.
555
+ - `screenshot`: Take a screenshot.
556
+
557
+ Here is an approval policy that requires approval for key combos (e.g. `Enter` or a shortcut) and mouse clicks:
558
+
559
+ ``` {.yaml filename="approval.yaml"}
560
+ approvers:
561
+ - name: human
562
+ tools:
563
+ - computer(action='key'
564
+ - computer(action='left_click'
565
+ - computer(action='middle_click'
566
+ - computer(action='double_click'
567
+
568
+ - name: auto
569
+ tools: "*"
570
+ ```
571
+
572
+ Note that since this is a prefix match and there could be other arguments, we don't end the tool match pattern with a parentheses.
573
+
574
+ You can apply this policy using the `--approval` commmand line option:
575
+
576
+ ``` bash
577
+ inspect eval computer.py --approval approval.yaml
578
+ ```
579
+
580
+ ### Tool Binding
581
+
582
+ The computer tool's schema is based on the standard Anthropoic [computer tool-type](https://docs.anthropic.com/en/docs/build-with-claude/computer-use#computer-tool). When using Claude 3.5 the coputer tool will automatically bind to the native Claude computer tool definition. This presumably provides improved performance due to fine tuning on the use of the tool but we have not verified this.
583
+
584
+ If you want to experiement with bypassing the native Claude computer tool type and just register the computer tool as a normal function based tool then specify the `--no-internal-tools` generation option as follows:
585
+
586
+ ``` bash
587
+ inspect eval computer.py --no-internal-tools
588
+ ```
589
+
423
590
  ## Web Search {#sec-web-search}
424
591
 
425
592
  The `web_search()` tool provides models the ability to enhance their context window by performing a search. By default web searches retrieve 10 results from a provider, uses a model to determine if the contents is relevant then returns the top 3 relevant search results to the main model. Here is the definition of the `web_search()` function:
@@ -464,4 +631,4 @@ The `web_search()` tool uses [Google Programmable Search Engine](https://program
464
631
 
465
632
  - `GOOGLE_CSE_ID` — Google Custom Search Engine ID
466
633
 
467
- - `GOOGLE_CSE_API_KEY` — Google API key used to enable the Search API
634
+ - `GOOGLE_CSE_API_KEY` — Google API key used to enable the Search API
@@ -0,0 +1,17 @@
1
+ services:
2
+ default:
3
+ image: aisiuk/inspect-computer-tool:latest-beta
4
+ init: true
5
+
6
+ # You can vnc into each container by using the following port mapping which will
7
+ # dynamically bind to host ports. The specific bindings can be found by using
8
+ # `docker inspect <container_id_or_name>`. This info is included in Running Samples
9
+ # tab. The output will look something like:
10
+ #
11
+ # service container host url
12
+ # VNC 5900 61029 vnc://localhost:61029
13
+ # noVNC 6080 61030 http://localhost:61030?view_only=true&autoconnect=true
14
+
15
+ ports:
16
+ - "5900"
17
+ - "6080"