inspect-ai 0.3.59__tar.gz → 0.3.60__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 (934) hide show
  1. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.pre-commit-config.yaml +1 -1
  2. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.vscode/settings.json +1 -0
  3. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/CHANGELOG.md +19 -0
  4. {inspect_ai-0.3.59/src/inspect_ai.egg-info → inspect_ai-0.3.60}/PKG-INFO +3 -2
  5. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_quarto.yml +1 -0
  6. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_sandboxenv-interface.md +1 -1
  7. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_tools-scaffold.md +8 -10
  8. inspect_ai-0.3.60/docs/agent-bridge.qmd +263 -0
  9. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/agents-api.qmd +2 -47
  10. inspect_ai-0.3.60/docs/agents.qmd +135 -0
  11. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/extensions.qmd +1 -1
  12. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/index.qmd +3 -1
  13. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/llms.txt +2 -1
  14. inspect_ai-0.3.60/docs/models.qmd +603 -0
  15. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/sandboxing.qmd +1 -1
  16. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/scorers.qmd +22 -0
  17. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/scripts/post-render.sh +1 -1
  18. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/solvers.qmd +23 -0
  19. inspect_ai-0.3.60/examples/bridge/autogen/README.md +34 -0
  20. inspect_ai-0.3.60/examples/bridge/autogen/agent.py +50 -0
  21. inspect_ai-0.3.60/examples/bridge/autogen/dataset.json +29 -0
  22. inspect_ai-0.3.60/examples/bridge/autogen/task.py +15 -0
  23. inspect_ai-0.3.60/examples/bridge/langchain/README.md +27 -0
  24. inspect_ai-0.3.60/examples/bridge/langchain/agent.py +47 -0
  25. inspect_ai-0.3.60/examples/bridge/langchain/dataset.json +29 -0
  26. inspect_ai-0.3.60/examples/bridge/langchain/task.py +15 -0
  27. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/pyproject.toml +3 -2
  28. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/eval.py +0 -7
  29. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/samples.py +1 -1
  30. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/eval.py +10 -1
  31. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/loader.py +79 -19
  32. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/registry.py +6 -0
  33. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/score.py +2 -1
  34. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/results.py +6 -5
  35. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/run.py +11 -11
  36. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/dist/assets/index.js +262 -303
  37. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/App.mjs +6 -6
  38. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/Types.mjs +1 -1
  39. inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/Types.ts +133 -0
  40. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/api-browser.mjs → inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/api-browser.ts +25 -13
  41. inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/api-http.ts +219 -0
  42. inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/api-shared.ts +47 -0
  43. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/api-vscode.mjs → inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/api-vscode.ts +22 -19
  44. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/client-api.mjs → inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/client-api.ts +93 -53
  45. inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/index.ts +51 -0
  46. inspect_ai-0.3.60/src/inspect_ai/_view/www/src/api/jsonrpc.ts +225 -0
  47. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/DownloadButton.mjs +1 -1
  48. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/index.js +2 -2
  49. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/log/remoteLogFile.mjs → inspect_ai-0.3.60/src/inspect_ai/_view/www/src/log/remoteLogFile.ts +62 -46
  50. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/navbar/Navbar.mjs +1 -1
  51. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/navbar/SecondaryBar.mjs +1 -1
  52. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleList.mjs +1 -1
  53. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleScores.mjs +1 -1
  54. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SamplesDescriptor.mjs +14 -14
  55. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SamplesTab.mjs +10 -10
  56. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/tools/SortFilter.mjs +2 -2
  57. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/utils/Json.mjs → inspect_ai-0.3.60/src/inspect_ai/_view/www/src/utils/json-worker.ts +1 -3
  58. inspect_ai-0.3.60/src/inspect_ai/_view/www/src/utils/vscode.ts +36 -0
  59. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/workspace/WorkSpace.mjs +1 -1
  60. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_human/manager.py +1 -1
  61. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_call_tools.py +55 -0
  62. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_conversation.py +1 -4
  63. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_generate_config.py +2 -8
  64. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_model_output.py +15 -0
  65. inspect_ai-0.3.60/src/inspect_ai/model/_openai.py +383 -0
  66. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/anthropic.py +52 -11
  67. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/azureai.py +1 -1
  68. inspect_ai-0.3.60/src/inspect_ai/model/_providers/goodfire.py +248 -0
  69. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/groq.py +7 -3
  70. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/hf.py +6 -0
  71. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/mistral.py +2 -1
  72. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/openai.py +36 -202
  73. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/openai_o1.py +2 -4
  74. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/providers.py +22 -0
  75. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/together.py +4 -4
  76. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/util/__init__.py +2 -3
  77. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/util/hf_handler.py +1 -1
  78. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/util/llama31.py +1 -1
  79. inspect_ai-0.3.60/src/inspect_ai/model/_providers/util/util.py +43 -0
  80. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_metric.py +3 -0
  81. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_scorer.py +2 -1
  82. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/__init__.py +2 -0
  83. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_basic_agent.py +1 -1
  84. inspect_ai-0.3.60/src/inspect_ai/solver/_bridge/__init__.py +3 -0
  85. inspect_ai-0.3.60/src/inspect_ai/solver/_bridge/bridge.py +100 -0
  86. inspect_ai-0.3.60/src/inspect_ai/solver/_bridge/patch.py +170 -0
  87. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_solver.py +6 -0
  88. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_display.py +5 -0
  89. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/prereqs.py +1 -1
  90. {inspect_ai-0.3.59 → inspect_ai-0.3.60/src/inspect_ai.egg-info}/PKG-INFO +3 -2
  91. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai.egg-info/SOURCES.txt +27 -18
  92. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai.egg-info/requires.txt +2 -1
  93. inspect_ai-0.3.60/tests/model/providers/test_goodfire.py +22 -0
  94. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_hf.py +33 -0
  95. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_openai_o1.py +6 -1
  96. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_parse_tool_call.py +1 -1
  97. inspect_ai-0.3.60/tests/solver/test_bridge.py +140 -0
  98. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_helpers/utils.py +11 -1
  99. inspect_ai-0.3.59/docs/agents.qmd +0 -282
  100. inspect_ai-0.3.59/docs/models.qmd +0 -450
  101. inspect_ai-0.3.59/examples/langchain/.env.example +0 -2
  102. inspect_ai-0.3.59/examples/langchain/.gitignore +0 -2
  103. inspect_ai-0.3.59/examples/langchain/README.md +0 -37
  104. inspect_ai-0.3.59/examples/langchain/inspect_langchain.py +0 -247
  105. inspect_ai-0.3.59/examples/langchain/requirements.txt +0 -6
  106. inspect_ai-0.3.59/examples/langchain/wikipedia.jsonl +0 -3
  107. inspect_ai-0.3.59/examples/langchain/wikipedia.py +0 -61
  108. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/Types.mjs +0 -117
  109. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/api-http.mjs +0 -300
  110. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/api-shared.mjs +0 -10
  111. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/index.mjs +0 -49
  112. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/api/jsonrpc.mjs +0 -208
  113. inspect_ai-0.3.59/src/inspect_ai/_view/www/src/utils/vscode.mjs +0 -16
  114. inspect_ai-0.3.59/src/inspect_ai/model/_providers/util/util.py +0 -119
  115. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/dependabot.yml +0 -0
  116. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/pull_request_template.md +0 -0
  117. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/workflows/build.yml +0 -0
  118. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/workflows/docs.yml +0 -0
  119. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/workflows/log_viewer.yml +0 -0
  120. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/workflows/pypi.yml +0 -0
  121. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.github/workflows/vscode.yml +0 -0
  122. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.gitignore +0 -0
  123. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/.vscode/extensions.json +0 -0
  124. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/CITATION.cff +0 -0
  125. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/LICENSE +0 -0
  126. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/Makefile +0 -0
  127. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/README.md +0 -0
  128. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/.gitignore +0 -0
  129. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/CNAME +0 -0
  130. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_container_limits.md +0 -0
  131. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_errors_and_retries.md +0 -0
  132. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_max_samples.md +0 -0
  133. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_metadata_typing.md +0 -0
  134. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_sample-preservation.md +0 -0
  135. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_setting_max_samples.md +0 -0
  136. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_store_typing.md +0 -0
  137. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_tools-annotations-required.md +0 -0
  138. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/_variables.yml +0 -0
  139. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/approval.qmd +0 -0
  140. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/caching.qmd +0 -0
  141. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/datasets.qmd +0 -0
  142. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/errors-and-limits.qmd +0 -0
  143. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/eval-logs.qmd +0 -0
  144. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/eval-sets.qmd +0 -0
  145. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/examples/examples.bib +0 -0
  146. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/examples/examples.css +0 -0
  147. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/examples/examples.ejs +0 -0
  148. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/examples/examples.yml +0 -0
  149. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/examples/index.qmd +0 -0
  150. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/human-agent.qmd +0 -0
  151. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/aisi-logo.png +0 -0
  152. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/eval-log.png +0 -0
  153. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-activity-bar.png +0 -0
  154. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-human-agent-container.png +0 -0
  155. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-human-agent.png +0 -0
  156. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-multiple-models.png +0 -0
  157. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-terminal-transcript.png +0 -0
  158. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-answers.png +0 -0
  159. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-filter.png +0 -0
  160. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-history.png +0 -0
  161. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-home.png +0 -0
  162. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-info.png +0 -0
  163. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-logging-console.png +0 -0
  164. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-logging.png +0 -0
  165. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-main.png +0 -0
  166. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-messages.png +0 -0
  167. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-metadata.png +0 -0
  168. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-scoring.png +0 -0
  169. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-sort.png +0 -0
  170. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-view-splash.png +0 -0
  171. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-vscode-config.png +0 -0
  172. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-vscode-install.png +0 -0
  173. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-vscode-logview.png +0 -0
  174. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-vscode-output-channel.png +0 -0
  175. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect-vscode-run-task.png +0 -0
  176. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/inspect.png +0 -0
  177. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/logs-drop-down.png +0 -0
  178. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/logs-open-button.png +0 -0
  179. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/logs.png +0 -0
  180. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/popularity.png +0 -0
  181. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/python-tool-view.png +0 -0
  182. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/rate-limit.png +0 -0
  183. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/running-theory.png +0 -0
  184. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/task-max-sandboxes.png +0 -0
  185. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/toolenv-no-cleanup.png +0 -0
  186. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/vnc-port-info.png +0 -0
  187. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/vnc-view-only.png +0 -0
  188. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/images/web-browser-tool-view.png +0 -0
  189. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/interactivity.qmd +0 -0
  190. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/log-viewer.qmd +0 -0
  191. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/multimodal.qmd +0 -0
  192. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/parallelism.qmd +0 -0
  193. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/theme.scss +0 -0
  194. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/tools.qmd +0 -0
  195. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/tracing.qmd +0 -0
  196. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/tutorial.qmd +0 -0
  197. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/typing.qmd +0 -0
  198. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/vscode.qmd +0 -0
  199. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/docs/workflow.qmd +0 -0
  200. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/approval/README.md +0 -0
  201. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/approval/approval.py +0 -0
  202. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/approval/approval.yaml +0 -0
  203. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/biology_qa.py +0 -0
  204. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/browser/browser.py +0 -0
  205. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/browser/compose.yaml +0 -0
  206. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/cache.py +0 -0
  207. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/computer/compose.yaml +0 -0
  208. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/computer/computer.py +0 -0
  209. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/computer/moonWeight.ods +0 -0
  210. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/evalset.py +0 -0
  211. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/hello_world.py +0 -0
  212. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/images/ballons.png +0 -0
  213. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/images/bike.png +0 -0
  214. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/images/images.jsonl +0 -0
  215. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/images/images.py +0 -0
  216. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/intervention/README.md +0 -0
  217. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/intervention/computer/approval.yaml +0 -0
  218. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/intervention/computer/compose.yaml +0 -0
  219. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/intervention/intervention.py +0 -0
  220. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/intervention/shell/Dockerfile +0 -0
  221. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/intervention/shell/compose.yaml +0 -0
  222. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/popularity.py +0 -0
  223. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/security_guide.py +0 -0
  224. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/theory_of_mind.py +0 -0
  225. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/examples/tool_use.py +0 -0
  226. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/requirements.txt +0 -0
  227. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/setup.cfg +0 -0
  228. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/__init__.py +0 -0
  229. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/__main__.py +0 -0
  230. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/cache.py +0 -0
  231. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/common.py +0 -0
  232. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/info.py +0 -0
  233. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/list.py +0 -0
  234. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/log.py +0 -0
  235. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/main.py +0 -0
  236. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/sandbox.py +0 -0
  237. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/score.py +0 -0
  238. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/trace.py +0 -0
  239. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/util.py +0 -0
  240. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_cli/view.py +0 -0
  241. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/__init__.py +0 -0
  242. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/active.py +0 -0
  243. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/config.py +0 -0
  244. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/display.py +0 -0
  245. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/footer.py +0 -0
  246. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/group.py +0 -0
  247. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/panel.py +0 -0
  248. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/progress.py +0 -0
  249. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/results.py +0 -0
  250. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/rich.py +0 -0
  251. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/core/textual.py +0 -0
  252. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/plain/__init__.py +0 -0
  253. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/plain/display.py +0 -0
  254. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/rich/__init__.py +0 -0
  255. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/rich/display.py +0 -0
  256. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/app.py +0 -0
  257. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/app.tcss +0 -0
  258. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/display.py +0 -0
  259. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/theme.py +0 -0
  260. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/clock.py +0 -0
  261. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/console.py +0 -0
  262. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/footer.py +0 -0
  263. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/port_mappings.py +0 -0
  264. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/sandbox.py +0 -0
  265. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/task_detail.py +0 -0
  266. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/tasks.py +0 -0
  267. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/titlebar.py +0 -0
  268. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/toggle.py +0 -0
  269. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_display/textual/widgets/transcript.py +0 -0
  270. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/context.py +0 -0
  271. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/evalset.py +0 -0
  272. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/list.py +0 -0
  273. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/run.py +0 -0
  274. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/__init__.py +0 -0
  275. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/constants.py +0 -0
  276. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/epochs.py +0 -0
  277. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/error.py +0 -0
  278. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/generate.py +0 -0
  279. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/images.py +0 -0
  280. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/log.py +0 -0
  281. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/rundir.py +0 -0
  282. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/sandbox.py +0 -0
  283. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/task.py +0 -0
  284. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_eval/task/util.py +0 -0
  285. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/_async.py +0 -0
  286. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/ansi.py +0 -0
  287. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/appdirs.py +0 -0
  288. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/config.py +0 -0
  289. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/constants.py +0 -0
  290. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/content.py +0 -0
  291. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/datetime.py +0 -0
  292. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/decorator.py +0 -0
  293. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/deprecation.py +0 -0
  294. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/dev.py +0 -0
  295. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/dict.py +0 -0
  296. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/dotenv.py +0 -0
  297. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/entrypoints.py +0 -0
  298. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/environ.py +0 -0
  299. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/error.py +0 -0
  300. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/file.py +0 -0
  301. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/format.py +0 -0
  302. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/git.py +0 -0
  303. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/hash.py +0 -0
  304. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/hooks.py +0 -0
  305. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/html.py +0 -0
  306. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/http.py +0 -0
  307. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/images.py +0 -0
  308. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/json.py +0 -0
  309. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/kvstore.py +0 -0
  310. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/list.py +0 -0
  311. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/logger.py +0 -0
  312. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/notebook.py +0 -0
  313. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/notgiven.py +0 -0
  314. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/package.py +0 -0
  315. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/path.py +0 -0
  316. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/pattern.py +0 -0
  317. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/platform.py +0 -0
  318. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/port_names.py +0 -0
  319. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/registry.py +0 -0
  320. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/retry.py +0 -0
  321. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/rich.py +0 -0
  322. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/samples.py +0 -0
  323. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/terminal.py +0 -0
  324. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/text.py +0 -0
  325. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/thread.py +0 -0
  326. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/throttle.py +0 -0
  327. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/timeouts.py +0 -0
  328. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/trace.py +0 -0
  329. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/transcript.py +0 -0
  330. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/url.py +0 -0
  331. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/version.py +0 -0
  332. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_util/vscode.py +0 -0
  333. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/notify.py +0 -0
  334. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/schema.py +0 -0
  335. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/server.py +0 -0
  336. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/view.py +0 -0
  337. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/.gitignore +0 -0
  338. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/.prettierignore +0 -0
  339. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/.prettierrc.js +0 -0
  340. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/.tool-versions +0 -0
  341. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/App.css +0 -0
  342. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/README.md +0 -0
  343. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/dist/assets/favicon.svg +0 -0
  344. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/dist/assets/index.css +0 -0
  345. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/dist/index.html +0 -0
  346. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/eslint.config.mjs +0 -0
  347. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/favicon.svg +0 -0
  348. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/index.html +0 -0
  349. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/jsconfig.json +0 -0
  350. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/log-schema.json +0 -0
  351. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/package.json +0 -0
  352. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/postcss.config.cjs +0 -0
  353. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/Register.mjs +0 -0
  354. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/appearance/Colors.mjs +0 -0
  355. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/appearance/Fonts.mjs +0 -0
  356. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/appearance/Icons.mjs +0 -0
  357. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/appearance/Styles.mjs +0 -0
  358. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/AnsiDisplay.css +0 -0
  359. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/AnsiDisplay.mjs +0 -0
  360. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/AppErrorBoundary.mjs +0 -0
  361. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/AsciiCinemaPlayer.mjs +0 -0
  362. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/Browser.mjs +0 -0
  363. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/Card.mjs +0 -0
  364. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/ChatView.mjs +0 -0
  365. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/CopyButton.mjs +0 -0
  366. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/Dialog.mjs +0 -0
  367. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/DownloadPanel.mjs +0 -0
  368. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/EmptyPanel.mjs +0 -0
  369. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/ErrorPanel.mjs +0 -0
  370. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/ExpandablePanel.mjs +0 -0
  371. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/FindBand.mjs +0 -0
  372. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/HumanBaselineView.mjs +0 -0
  373. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/JsonPanel.mjs +0 -0
  374. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/LabeledValue.mjs +0 -0
  375. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/LargeModal.mjs +0 -0
  376. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/LightboxCarousel.mjs +0 -0
  377. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/MarkdownDiv.mjs +0 -0
  378. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/MessageBand.mjs +0 -0
  379. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/MessageContent.mjs +0 -0
  380. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/MetaDataGrid.mjs +0 -0
  381. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/MetaDataView.mjs +0 -0
  382. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/MorePopOver.mjs +0 -0
  383. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/NavPills.mjs +0 -0
  384. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/ProgressBar.mjs +0 -0
  385. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/RenderedContent/ChatMessageRenderer.mjs +0 -0
  386. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/RenderedContent/RenderedContent.mjs +0 -0
  387. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/RenderedContent/Types.mjs +0 -0
  388. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/TabSet.mjs +0 -0
  389. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/ToolButton.mjs +0 -0
  390. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/Tools.mjs +0 -0
  391. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/VirtualList.mjs +0 -0
  392. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/components/ansi-output.js +0 -0
  393. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/constants.mjs +0 -0
  394. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/json/JsonTab.mjs +0 -0
  395. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/log-reader/Log-Reader.mjs +0 -0
  396. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/log-reader/Native-Log-Reader.mjs +0 -0
  397. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/log-reader/Open-AI-Log-Reader.mjs +0 -0
  398. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/plan/PlanCard.mjs +0 -0
  399. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleDialog.mjs +0 -0
  400. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleDisplay.mjs +0 -0
  401. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleError.mjs +0 -0
  402. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleLimit.mjs +0 -0
  403. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleScoreView.mjs +0 -0
  404. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SampleTranscript.mjs +0 -0
  405. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/SamplesTools.mjs +0 -0
  406. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/tools/EpochFilter.mjs +0 -0
  407. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/tools/SampleFilter.mjs +0 -0
  408. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/tools/SelectScorer.mjs +0 -0
  409. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/tools/filters.mjs +0 -0
  410. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/ApprovalEventView.mjs +0 -0
  411. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/ErrorEventView.mjs +0 -0
  412. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/EventPanel.mjs +0 -0
  413. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/EventRow.mjs +0 -0
  414. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/EventSection.mjs +0 -0
  415. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/InfoEventView.mjs +0 -0
  416. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/InputEventView.mjs +0 -0
  417. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/LoggerEventView.mjs +0 -0
  418. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/ModelEventView.mjs +0 -0
  419. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.mjs +0 -0
  420. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/SampleLimitEventView.mjs +0 -0
  421. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/ScoreEventView.mjs +0 -0
  422. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/StepEventView.mjs +0 -0
  423. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/SubtaskEventView.mjs +0 -0
  424. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/ToolEventView.mjs +0 -0
  425. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/TranscriptView.mjs +0 -0
  426. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/Types.mjs +0 -0
  427. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/state/StateDiffView.mjs +0 -0
  428. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/state/StateEventRenderers.mjs +0 -0
  429. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/samples/transcript/state/StateEventView.mjs +0 -0
  430. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/sidebar/Sidebar.mjs +0 -0
  431. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/types/asciicinema-player.d.ts +0 -0
  432. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/types/jsondiffpatch.d.ts +0 -0
  433. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/types/log.d.ts +0 -0
  434. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/types/prism.d.ts +0 -0
  435. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/usage/ModelTokenTable.mjs +0 -0
  436. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/usage/UsageCard.mjs +0 -0
  437. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Base64.mjs +0 -0
  438. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Format.mjs +0 -0
  439. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Git.mjs +0 -0
  440. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Html.mjs +0 -0
  441. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Path.mjs +0 -0
  442. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Print.mjs +0 -0
  443. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/Type.mjs +0 -0
  444. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/attachments.mjs +0 -0
  445. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/debugging.mjs +0 -0
  446. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/http.mjs +0 -0
  447. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/queue.mjs +0 -0
  448. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/remoteZipFile.mjs +0 -0
  449. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/utils/sync.mjs +0 -0
  450. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/src/workspace/TaskErrorPanel.mjs +0 -0
  451. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/tsconfig.json +0 -0
  452. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/vite.config.js +0 -0
  453. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/_view/www/yarn.lock +0 -0
  454. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/__init__.py +0 -0
  455. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_apply.py +0 -0
  456. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_approval.py +0 -0
  457. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_approver.py +0 -0
  458. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_auto.py +0 -0
  459. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_call.py +0 -0
  460. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_human/__init__.py +0 -0
  461. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_human/approver.py +0 -0
  462. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_human/console.py +0 -0
  463. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_human/panel.py +0 -0
  464. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_human/util.py +0 -0
  465. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_policy.py +0 -0
  466. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/approval/_registry.py +0 -0
  467. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/__init__.py +0 -0
  468. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_dataset.py +0 -0
  469. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_examples/bias_detection.jsonl +0 -0
  470. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_examples/biology_qa.jsonl +0 -0
  471. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_examples/popularity.jsonl +0 -0
  472. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_examples/security_guide.jsonl +0 -0
  473. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_examples/theory_of_mind.jsonl +0 -0
  474. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_sources/csv.py +0 -0
  475. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_sources/example.py +0 -0
  476. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_sources/file.py +0 -0
  477. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_sources/hf.py +0 -0
  478. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_sources/json.py +0 -0
  479. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_sources/util.py +0 -0
  480. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/dataset/_util.py +0 -0
  481. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/__init__.py +0 -0
  482. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_bundle.py +0 -0
  483. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_condense.py +0 -0
  484. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_convert.py +0 -0
  485. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_file.py +0 -0
  486. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_log.py +0 -0
  487. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_message.py +0 -0
  488. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_recorders/__init__.py +0 -0
  489. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_recorders/create.py +0 -0
  490. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_recorders/eval.py +0 -0
  491. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_recorders/file.py +0 -0
  492. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_recorders/json.py +0 -0
  493. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_recorders/recorder.py +0 -0
  494. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_retry.py +0 -0
  495. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_samples.py +0 -0
  496. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/log/_transcript.py +0 -0
  497. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/__init__.py +0 -0
  498. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_cache.py +0 -0
  499. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_chat_message.py +0 -0
  500. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_image.py +0 -0
  501. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_model.py +0 -0
  502. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_model_call.py +0 -0
  503. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/bedrock.py +0 -0
  504. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/cloudflare.py +0 -0
  505. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/google.py +0 -0
  506. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/grok.py +0 -0
  507. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/llama_cpp_python.py +0 -0
  508. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/mockllm.py +0 -0
  509. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/ollama.py +0 -0
  510. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/util/chatapi.py +0 -0
  511. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/vertex.py +0 -0
  512. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_providers/vllm.py +0 -0
  513. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_registry.py +0 -0
  514. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/model/_render.py +0 -0
  515. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/py.typed +0 -0
  516. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/__init__.py +0 -0
  517. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_answer.py +0 -0
  518. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_choice.py +0 -0
  519. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_classification.py +0 -0
  520. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_common.py +0 -0
  521. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_match.py +0 -0
  522. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_metrics/__init__.py +0 -0
  523. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_metrics/accuracy.py +0 -0
  524. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_metrics/mean.py +0 -0
  525. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_metrics/std.py +0 -0
  526. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_model.py +0 -0
  527. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_multi.py +0 -0
  528. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_pattern.py +0 -0
  529. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_reducer/__init__.py +0 -0
  530. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_reducer/reducer.py +0 -0
  531. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_reducer/registry.py +0 -0
  532. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_reducer/types.py +0 -0
  533. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_score.py +0 -0
  534. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/scorer/_target.py +0 -0
  535. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_chain.py +0 -0
  536. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_critique.py +0 -0
  537. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_fork.py +0 -0
  538. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/agent.py +0 -0
  539. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/__init__.py +0 -0
  540. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/clock.py +0 -0
  541. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/command.py +0 -0
  542. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/instructions.py +0 -0
  543. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/note.py +0 -0
  544. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/score.py +0 -0
  545. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/status.py +0 -0
  546. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/commands/submit.py +0 -0
  547. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/install.py +0 -0
  548. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/panel.py +0 -0
  549. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/service.py +0 -0
  550. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/state.py +0 -0
  551. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_human_agent/view.py +0 -0
  552. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_multiple_choice.py +0 -0
  553. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_plan.py +0 -0
  554. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_prompt.py +0 -0
  555. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_task_state.py +0 -0
  556. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_transcript.py +0 -0
  557. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_use_tools.py +0 -0
  558. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/solver/_util.py +0 -0
  559. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/__init__.py +0 -0
  560. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool.py +0 -0
  561. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_call.py +0 -0
  562. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_choice.py +0 -0
  563. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_def.py +0 -0
  564. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_description.py +0 -0
  565. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_info.py +0 -0
  566. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_params.py +0 -0
  567. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_transcript.py +0 -0
  568. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tool_with.py +0 -0
  569. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_execute.py +0 -0
  570. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/__init__.py +0 -0
  571. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/Dockerfile +0 -0
  572. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/README.md +0 -0
  573. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/accessibility_node.py +0 -0
  574. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/dm_env_servicer.py +0 -0
  575. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/images/usage_diagram.png +0 -0
  576. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/mock_environment.py +0 -0
  577. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/playwright_crawler.py +0 -0
  578. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_accessibility_node.py +0 -0
  579. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_dm_env_servicer.py +0 -0
  580. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_playwright_crawler.py +0 -0
  581. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/test_web_environment.py +0 -0
  582. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_client.py +0 -0
  583. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_client_new_session.py +0 -0
  584. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_environment.py +0 -0
  585. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_resources/web_server.py +0 -0
  586. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_browser/_web_browser.py +0 -0
  587. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/_tools/_web_search.py +0 -0
  588. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/__init__.py +0 -0
  589. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/__init__.py +0 -0
  590. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_common.py +0 -0
  591. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_computer.py +0 -0
  592. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_computer_split.py +0 -0
  593. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/Dockerfile +0 -0
  594. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/README.md +0 -0
  595. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/entrypoint.sh +0 -0
  596. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/novnc_startup.sh +0 -0
  597. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/x11vnc_startup.sh +0 -0
  598. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/xfce_startup.sh +0 -0
  599. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/entrypoint/xvfb_startup.sh +0 -0
  600. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/image_home_dir/Desktop/Firefox Web Browser.desktop +0 -0
  601. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/image_home_dir/Desktop/Visual Studio Code.desktop +0 -0
  602. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/image_home_dir/Desktop/XPaint.desktop +0 -0
  603. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/__init__.py +0 -0
  604. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/_logger.py +0 -0
  605. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/_run.py +0 -0
  606. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/_tool_result.py +0 -0
  607. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/_x11_client.py +0 -0
  608. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/computer_tool.py +0 -0
  609. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/tool/beta/_computer/_resources/tool/requirements.txt +0 -0
  610. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/__init__.py +0 -0
  611. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_concurrency.py +0 -0
  612. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_console.py +0 -0
  613. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_conversation.py +0 -0
  614. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_limit.py +0 -0
  615. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_panel.py +0 -0
  616. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_resource.py +0 -0
  617. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/__init__.py +0 -0
  618. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/context.py +0 -0
  619. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/cleanup.py +0 -0
  620. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/compose.py +0 -0
  621. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/config.py +0 -0
  622. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/docker.py +0 -0
  623. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/internal.py +0 -0
  624. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/docker/util.py +0 -0
  625. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/environment.py +0 -0
  626. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/limits.py +0 -0
  627. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/local.py +0 -0
  628. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/registry.py +0 -0
  629. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/self_check.py +0 -0
  630. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_sandbox/service.py +0 -0
  631. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_store.py +0 -0
  632. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_store_model.py +0 -0
  633. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_subprocess.py +0 -0
  634. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_subtask.py +0 -0
  635. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai/util/_throttle.py +0 -0
  636. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai.egg-info/dependency_links.txt +0 -0
  637. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai.egg-info/entry_points.txt +0 -0
  638. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/src/inspect_ai.egg-info/top_level.txt +0 -0
  639. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/approval/approve.yaml +0 -0
  640. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/approval/escalate.yaml +0 -0
  641. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/approval/modify.yaml +0 -0
  642. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/approval/reject.yaml +0 -0
  643. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/approval/terminate.yaml +0 -0
  644. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/approval/test_approval.py +0 -0
  645. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/conftest.py +0 -0
  646. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/dataset.jsonl +0 -0
  647. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/images/ballons.png +0 -0
  648. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/images.jsonl +0 -0
  649. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/samples-md.csv +0 -0
  650. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/samples-md.json +0 -0
  651. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/samples-md.jsonl +0 -0
  652. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/samples.csv +0 -0
  653. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/samples.json +0 -0
  654. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset/samples.jsonl +0 -0
  655. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/dataset/test_dataset.py +0 -0
  656. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_formats.json +0 -0
  657. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_images.json +0 -0
  658. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_images_tc.json +0 -0
  659. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_invalid.txt +0 -0
  660. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_length_stop_reason.txt +0 -0
  661. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_streaming.eval +0 -0
  662. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_valid.txt +0 -0
  663. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_version_3.txt +0 -0
  664. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log/log_with_nan.txt +0 -0
  665. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_eval_log.py +0 -0
  666. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_list_logs/2024-11-05T13-31-45-05-00_input-task_8zXjbRzCWrL9GXiXo2vus9.json +0 -0
  667. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_list_logs/2024-11-05T13-32-37-05-00_input-task_hxs4q9azL3ySGkjJirypKZ.eval +0 -0
  668. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_list_logs/custom.eval +0 -0
  669. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_list_logs/ignore.json +0 -0
  670. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_list_logs.py +0 -0
  671. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_log_attachments.py +0 -0
  672. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_log_formats.py +0 -0
  673. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_log_level.py +0 -0
  674. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_log_streaming.py +0 -0
  675. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/log/test_log_tags.py +0 -0
  676. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_anthropic.py +0 -0
  677. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_azureai.py +0 -0
  678. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_cloudflare.py +0 -0
  679. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_google.py +0 -0
  680. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_grok.py +0 -0
  681. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_groq.py +0 -0
  682. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_llama_cpp_python.py +0 -0
  683. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_openai.py +0 -0
  684. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_vertex.py +0 -0
  685. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/providers/test_vllm.py +0 -0
  686. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_api_key.py +0 -0
  687. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_cache.py +0 -0
  688. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_collapse_assistant_message.py +0 -0
  689. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_collapse_user_message.py +0 -0
  690. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_disable.py +0 -0
  691. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_logprobs.py +0 -0
  692. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_mock_model_llm.py +0 -0
  693. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_num_choices.py +0 -0
  694. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/model/test_stop_reason.py +0 -0
  695. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_answer.py +0 -0
  696. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_choice.py +0 -0
  697. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_classification.py +0 -0
  698. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_match.py +0 -0
  699. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_metric.py +0 -0
  700. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_model_graded.py +0 -0
  701. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_multiscorer.py +0 -0
  702. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_pattern.py +0 -0
  703. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_reducers.py +0 -0
  704. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_scorer.py +0 -0
  705. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/scorer/test_value_to_float.py +0 -0
  706. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_basic_agent.py +0 -0
  707. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_chain.py +0 -0
  708. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_fork.py +0 -0
  709. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_multiple_choice.py +0 -0
  710. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_prompt.py +0 -0
  711. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_score.py +0 -0
  712. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_setup.py +0 -0
  713. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_solver.py +0 -0
  714. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_solver_decorator.py +0 -0
  715. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_solver_spec.py +0 -0
  716. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_store.py +0 -0
  717. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_store_model.py +0 -0
  718. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_subtask.py +0 -0
  719. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/solver/test_transcript.py +0 -0
  720. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval.py +0 -0
  721. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_config/model.yaml +0 -0
  722. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_config/solver.yaml +0 -0
  723. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_config/task.yaml +0 -0
  724. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_config.py +0 -0
  725. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_set/2024-08-29T15-11-17+00-00_popularity_5EAmX6wjMFqea6WY7XHzZp.json +0 -0
  726. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_set/2024-08-29T15-11-18+00-00_popularity_5EAmX6wjMFqea6WY7XHzZp.json +0 -0
  727. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_eval_set.py +0 -0
  728. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_examples.py +0 -0
  729. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_extensions.py +0 -0
  730. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_fail_on_error.py +0 -0
  731. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_helpers/__init__.py +0 -0
  732. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_helpers/tasks.py +0 -0
  733. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_helpers/tool_call_utils.py +0 -0
  734. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_helpers/tools.py +0 -0
  735. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_list_task.py +0 -0
  736. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_log_dir/example_task/example_task.py +0 -0
  737. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_log_dir/test_log_dir.py +0 -0
  738. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/.gitignore +0 -0
  739. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/__init__.py +0 -0
  740. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/_registry.py +0 -0
  741. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/approvers/renamer.py +0 -0
  742. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/modelapi/custom.py +0 -0
  743. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/py.typed +0 -0
  744. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/sandboxenv/podman.py +0 -0
  745. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/score/scorer.py +0 -0
  746. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/inspect_package/solvers/cot.py +0 -0
  747. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_package/pyproject.toml +0 -0
  748. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_retry.py +0 -0
  749. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_run_dir/task1/task1.py +0 -0
  750. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_run_dir/task2/task2.py +0 -0
  751. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_run_dir.py +0 -0
  752. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_sample_id.py +0 -0
  753. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_sample_limits.py +0 -0
  754. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_attr.py +0 -0
  755. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/__init__.py +0 -0
  756. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/attribs.ipynb +0 -0
  757. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/multiple.py +0 -0
  758. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/multiple_dir/_decoy/testit.py +0 -0
  759. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/multiple_dir/_decoy2.py +0 -0
  760. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/multiple_dir/bar.py +0 -0
  761. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/multiple_dir/foo.py +0 -0
  762. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/recurse/.folder3/epsilon.py +0 -0
  763. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/recurse/folder1/_decoy.py +0 -0
  764. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/recurse/folder1/theta.py +0 -0
  765. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/recurse/folder2/.folder3/epsilon.py +0 -0
  766. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/recurse/folder2/another.py +0 -0
  767. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_list/recurse/folder2/first.py +0 -0
  768. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/test_task_with.py +0 -0
  769. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/docker-compose-context/Dockerfile +0 -0
  770. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/docker-compose-context-alpine/Dockerfile +0 -0
  771. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_bash_tool.py +0 -0
  772. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_max_exec_output.py +0 -0
  773. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_max_tool_output.py +0 -0
  774. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_python_tool.py +0 -0
  775. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_sandbox_compose.yaml +0 -0
  776. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_sandbox_compose_alpine.yaml +0 -0
  777. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_sandbox_docker_and_local.py +0 -0
  778. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_sandbox_dockerfile.py +0 -0
  779. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_sandbox_tool_eval.py +0 -0
  780. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_def.py +0 -0
  781. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_images.py +0 -0
  782. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_parse.py +0 -0
  783. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_truncate.py +0 -0
  784. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_types.py +0 -0
  785. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_view.py +0 -0
  786. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tool_with.py +0 -0
  787. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_tools.py +0 -0
  788. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_use_tools.py +0 -0
  789. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_web_browser.py +0 -0
  790. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/tools/test_web_browser_compose.yaml +0 -0
  791. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/sandbox/docker_compose_multiple_services/docker-compose.yaml +0 -0
  792. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/sandbox/sandbox_setup.sh +0 -0
  793. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/sandbox/sandbox_setup_error.sh +0 -0
  794. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/sandbox/test_docker_compose_multiple_services.py +0 -0
  795. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/sandbox/test_sandbox_service.py +0 -0
  796. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/sandbox/test_sandbox_setup.py +0 -0
  797. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_file.py +0 -0
  798. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_images/images.jsonl +0 -0
  799. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_images.py +0 -0
  800. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_kvstore.py +0 -0
  801. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_media/audio.jsonl +0 -0
  802. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_media/sample.mp3 +0 -0
  803. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_media/video.jsonl +0 -0
  804. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_media/video.mp4 +0 -0
  805. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_media.py +0 -0
  806. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_package.py +0 -0
  807. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_registry.py +0 -0
  808. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_str_to_float.py +0 -0
  809. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_subprocess.py +0 -0
  810. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/util/test_truncate.py +0 -0
  811. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tests/view/test_bundle.py +0 -0
  812. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.eslintrc.json +0 -0
  813. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.gitignore +0 -0
  814. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.vscode/extensions.json +0 -0
  815. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.vscode/launch.json +0 -0
  816. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.vscode/settings.json +0 -0
  817. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.vscode/tasks.json +0 -0
  818. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.vscode-test.mjs +0 -0
  819. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.vscodeignore +0 -0
  820. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/.yarnrc +0 -0
  821. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/CHANGELOG.md +0 -0
  822. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/LICENSE +0 -0
  823. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/README.md +0 -0
  824. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/icon/eval-treeview-cancelled.svg +0 -0
  825. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/icon/eval-treeview-error.svg +0 -0
  826. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/icon/eval-treeview-started.svg +0 -0
  827. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/icon/eval-treeview.svg +0 -0
  828. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/icon/eval.svg +0 -0
  829. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/logo/inspect.png +0 -0
  830. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/logo/inspect.svg +0 -0
  831. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/templates/task.py.template +0 -0
  832. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/www/codicon/codicon.css +0 -0
  833. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/www/codicon/codicon.ttf +0 -0
  834. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/assets/www/view/view-overrides.css +0 -0
  835. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/package.json +0 -0
  836. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/@types/hooks.d.ts +0 -0
  837. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/@types/log.d.ts +0 -0
  838. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/document.ts +0 -0
  839. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/error.ts +0 -0
  840. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/focus.ts +0 -0
  841. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/notebook.ts +0 -0
  842. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/symbol.ts +0 -0
  843. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/task.ts +0 -0
  844. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/templates.ts +0 -0
  845. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/components/webview.ts +0 -0
  846. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/appdirs.ts +0 -0
  847. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/command.ts +0 -0
  848. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/dispose.ts +0 -0
  849. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/env.ts +0 -0
  850. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/file.ts +0 -0
  851. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/git.ts +0 -0
  852. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/jsonrpc.ts +0 -0
  853. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/log.ts +0 -0
  854. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/nonce.ts +0 -0
  855. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/path.ts +0 -0
  856. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/port.ts +0 -0
  857. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/process.ts +0 -0
  858. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/python/code.ts +0 -0
  859. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/python/env.ts +0 -0
  860. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/python/exec.ts +0 -0
  861. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/python/index.ts +0 -0
  862. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/python/interpreter.ts +0 -0
  863. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/random.ts +0 -0
  864. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/string.ts +0 -0
  865. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/text.ts +0 -0
  866. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/uri.ts +0 -0
  867. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/vscode/association.ts +0 -0
  868. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/wait.ts +0 -0
  869. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/core/workspace.ts +0 -0
  870. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/extension.ts +0 -0
  871. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/hooks/hooks.ts +0 -0
  872. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/hooks/index.ts +0 -0
  873. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/hooks/preview.ts +0 -0
  874. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/inspect/index.ts +0 -0
  875. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/inspect/logs.ts +0 -0
  876. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/inspect/props.ts +0 -0
  877. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/inspect/version.ts +0 -0
  878. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/active-task/active-task-command.ts +0 -0
  879. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/active-task/active-task-provider.ts +0 -0
  880. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/activity-bar-provider.ts +0 -0
  881. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/env-config-provider.ts +0 -0
  882. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/log-listing/log-directory-selector.ts +0 -0
  883. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-data.ts +0 -0
  884. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-mru.ts +0 -0
  885. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-provider.ts +0 -0
  886. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/log-listing/log-listing-server-queue.ts +0 -0
  887. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/log-listing/log-listing.ts +0 -0
  888. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/task-config-commands.ts +0 -0
  889. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/task-config-provider.ts +0 -0
  890. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/task-outline-commands.ts +0 -0
  891. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/task-outline-provider.ts +0 -0
  892. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/webview/env-config-webview.css +0 -0
  893. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/webview/env-config-webview.ts +0 -0
  894. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/webview/task-config-webview.css +0 -0
  895. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/webview/task-config-webview.ts +0 -0
  896. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/webview/vscode-controls.css +0 -0
  897. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/activity-bar/webview/webview-utils.ts +0 -0
  898. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/codelens/codelens-provider.ts +0 -0
  899. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-commands.ts +0 -0
  900. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-constants.ts +0 -0
  901. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-eval-commands.ts +0 -0
  902. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-eval.ts +0 -0
  903. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-logs-watcher.ts +0 -0
  904. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-manager.ts +0 -0
  905. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/inspect/inspect-view-server.ts +0 -0
  906. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/lognotify.ts +0 -0
  907. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/commands.ts +0 -0
  908. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/logview-editor.ts +0 -0
  909. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/logview-link-provider.ts +0 -0
  910. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/logview-panel.ts +0 -0
  911. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/logview-state.ts +0 -0
  912. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/logview-view.ts +0 -0
  913. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/logview/logview.ts +0 -0
  914. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/openlog.ts +0 -0
  915. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/protocol-handler.ts +0 -0
  916. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/settings/inspect-settings.ts +0 -0
  917. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/settings/user-settings.ts +0 -0
  918. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/statusbar.ts +0 -0
  919. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/workspace/workspace-env-commands.ts +0 -0
  920. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/workspace/workspace-env-provider.ts +0 -0
  921. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/workspace/workspace-init.ts +0 -0
  922. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/workspace/workspace-state-provider.ts +0 -0
  923. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/providers/workspace/workspace-task-provider.ts +0 -0
  924. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/test/codelens-provider.test.ts +0 -0
  925. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/src/test/extension.test.ts +0 -0
  926. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tools/ts-to-mjs/.gitignore +0 -0
  927. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tools/ts-to-mjs/package.json +0 -0
  928. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tools/ts-to-mjs/rollup.config.js +0 -0
  929. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tools/ts-to-mjs/src/index.ts +0 -0
  930. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tools/ts-to-mjs/src/jsonrpc.ts +0 -0
  931. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tools/ts-to-mjs/yarn.lock +0 -0
  932. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/tsconfig.json +0 -0
  933. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/tools/vscode/webpack.config.js +0 -0
  934. {inspect_ai-0.3.59 → inspect_ai-0.3.60}/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.2
8
+ rev: v0.9.3
9
9
  hooks:
10
10
  # Run the linter.
11
11
  - id: ruff
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "mypy-type-checker.ignorePatterns": [
23
23
  "**/_resources/*.py",
24
+ "${workspaceFolder}/examples/bridge/*.py",
24
25
  ],
25
26
  "mypy-type-checker.args": [
26
27
  "--config-file",
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.60 (29 January 2025)
4
+
5
+ - [Agent Bridge](https://inspect.ai-safety-institute.org.uk/agent-bridge.html) for integrating external agent frameworks with Inspect.
6
+ - [Goodfire](https://inspect.ai-safety-institute.org.uk/models.html#goodfire) model provider.
7
+ - Add `@wraps` to functions wrapped by Inspect decorators to preserve type information.
8
+ - Hugging Face: Add support for stop sequences for HF models.
9
+ - Docker: More robust parsing of version strings (handle development versions).
10
+ - Vertex: Support for Anthropic models hosted on Vertex.
11
+ - OpenAI: Read `refusal` field from assistant message when provided.
12
+ - OpenAI: Use qualifiers rather than model args for OpenAI on other providers (`openai/azure`)
13
+ - Anthropic: Don't insert '(no content)' into cannonical messages list (do only on replay)
14
+ - Anthropic: Use qualifiers rather than model args for Anthropic on other providers (`anthropic/bedrock`, `anthropic/vertex`).
15
+ - Anthropic: Suport for `extra_body` model arg (for adding additional JSON properties to the request)
16
+ - Basic Agent: Append `tools` to `state` so that tools added in `init` are preserved.
17
+ - Scoring: Always provide half-again the sample time limit for scoring.
18
+ - Bugfix: Fix issue w/ approvals for samples with id==0.
19
+ - Bugfix: Use "plain" display when running eval_async() outside of eval().
20
+ - Bugfix: Fix issue with multiple scorers of the same type in a task.
21
+
3
22
  ## v0.3.59 (24 January 2025)
4
23
 
5
24
  - Beta version of [computer()](https://inspect.ai-safety-institute.org.uk/tools.html#sec-computer) tool which models with a computer desktop environment.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: inspect_ai
3
- Version: 0.3.59
3
+ Version: 0.3.60
4
4
  Summary: Framework for large language model evaluations
5
5
  Author: UK AI Safety Institute
6
6
  License: MIT License
@@ -54,6 +54,7 @@ Requires-Dist: aioboto3; extra == "dev"
54
54
  Requires-Dist: azure-ai-inference; extra == "dev"
55
55
  Requires-Dist: google-cloud-aiplatform; extra == "dev"
56
56
  Requires-Dist: google-generativeai; extra == "dev"
57
+ Requires-Dist: goodfire; extra == "dev"
57
58
  Requires-Dist: groq; extra == "dev"
58
59
  Requires-Dist: ipython; extra == "dev"
59
60
  Requires-Dist: mistralai; extra == "dev"
@@ -67,7 +68,7 @@ Requires-Dist: pytest-asyncio; extra == "dev"
67
68
  Requires-Dist: pytest-cov; extra == "dev"
68
69
  Requires-Dist: pytest-dotenv; extra == "dev"
69
70
  Requires-Dist: pytest-xdist; extra == "dev"
70
- Requires-Dist: ruff==0.9.2; extra == "dev"
71
+ Requires-Dist: ruff==0.9.3; extra == "dev"
71
72
  Requires-Dist: textual-dev>=0.86.2; extra == "dev"
72
73
  Requires-Dist: types-PyYAML; extra == "dev"
73
74
  Requires-Dist: types-beautifulsoup4; extra == "dev"
@@ -55,6 +55,7 @@ website:
55
55
  - agents.qmd
56
56
  - sandboxing.qmd
57
57
  - agents-api.qmd
58
+ - agent-bridge.qmd
58
59
  - human-agent.qmd
59
60
  - approval.qmd
60
61
 
@@ -61,7 +61,7 @@ class SandboxEnvironment:
61
61
  """
62
62
  ```
63
63
 
64
- The `read_file()` method should should preserve newline constructs (e.g. crlf should be preserved not converted to lf). This is equivalent to specifying `newline=""` in a call to the Python `open()` function. Note that `write_file()` automatically creates parent directories as required if they don't exist.
64
+ The `read_file()` method should preserve newline constructs (e.g. crlf should be preserved not converted to lf). This is equivalent to specifying `newline=""` in a call to the Python `open()` function. Note that `write_file()` automatically creates parent directories as required if they don't exist.
65
65
 
66
66
  The `connection()` method is optional, and provides commands that can be used to login to the sandbox container from a terminal or IDE.
67
67
 
@@ -2,7 +2,11 @@
2
2
  2. Exercise more fine grained control over which, when, and how many tool calls are made, and how tool calling errors are handled.
3
3
  3. Have multiple `generate()` passes each with a distinct set of tools.
4
4
 
5
- To do this, create a solver that emulates the default tool use loop and provides additional customisation as required. For example, here is a complete solver agent that has essentially the same implementation as the default `generate()` function:
5
+ To do this, create a solver that emulates the default tool use loop and provides additional customisation as required.
6
+
7
+ ### Example
8
+
9
+ For example, here is a complete solver agent that has essentially the same implementation as the default `generate()` function:
6
10
 
7
11
  ``` python
8
12
  @solver
@@ -32,7 +36,7 @@ def agent_loop(message_limit: int = 50):
32
36
  return solve
33
37
  ```
34
38
 
35
- The `state.completed` flag is automatically set to `False` if `message_limit` or `token_limit` for the task is exceeded, so we check it at the top of the loop.
39
+ Solvers can set the `state.completed` flag to indicate that the sample is complete, so we check it at the top of the loop.
36
40
 
37
41
  You can imagine several ways you might want to customise this loop:
38
42
 
@@ -44,15 +48,9 @@ You can imagine several ways you might want to customise this loop:
44
48
 
45
49
  ### Stop Reasons {#sec-stop-reasons}
46
50
 
47
- One thing that a custom scaffold may do is try to recover from various conditions that cause the model to stop generating. You can find the reason that generation stopped in the `stop_reason` field of `ModelOutput`. For example:
48
-
49
- ``` python
50
- output = await model.generate(state.messages, state.tools)
51
- if output.stop_reason == "model_length":
52
- # do something to recover from context window overflow
53
- ```
51
+ One thing that a custom scaffold may do is try to recover from various conditions that cause the model to stop generating. You can find the reason that generation stopped in the `stop_reason` field of `ModelOutput`.
54
52
 
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:
53
+ For example:, 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 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 if there is a context window overflow:
56
54
 
57
55
  ```python
58
56
  # check for stop reasons that indicate we should terminate
@@ -0,0 +1,263 @@
1
+ ---
2
+ title: Agent Bridge
3
+ code-annotations: select
4
+ ---
5
+
6
+ ## Overview
7
+
8
+ While Inspect provides facilities for native agent development, you can also very easily integrate agents created with 3rd party frameworks like [AutoGen](https://microsoft.github.io/autogen/stable/) or [LangChain](https://python.langchain.com/docs/introduction/), or use fully custom agents you have developed or ported from a research paper. The basic mechanism for integrating external agents works like this:
9
+
10
+ 1. Write an agent function that takes a sample `dict` as input and a returns a results `dict` with output. This function won't have any dependencies on Inspect, rather it will depend on whatever agent framework or custom code you are using.
11
+
12
+ 2. This function should use the OpenAI API for model access, however calls to the OpenAI API will be *redirected* to Inspect (using whatever model is configured for the current task).
13
+
14
+ 3. Use the agent function with Inspect by passing it to the `bridge()` function, which will turn it into a standard Inspect `Solver`.
15
+
16
+ ## Agent Function
17
+
18
+ An external agent function is simillar to an Inspect `Solver` but without Inspect `TaskState`. Rather, it takes a sample `dict` as input and returns a result `dict` as output.
19
+
20
+ Here is a very simple agent function definition (it just calls generate and returns the ouptut). It is structured similar to an Inspect `Solver` where an enclosing function returns the function that handles the sample (this enables you to share initialisation code and pass options to configure the behaviour of the agent):
21
+
22
+ ```{.python filename="agent.py"}
23
+ from openai import AsyncOpenAI
24
+
25
+ def my_agent():
26
+
27
+ async def run(sample: dict[str, Any]) -> dict[str, Any]:
28
+ client = AsyncOpenAI()
29
+ completion = await client.chat.completions.create(
30
+ model="inspect",
31
+ messages=sample["input"],
32
+ )
33
+ return {
34
+ "output": completion.choices[0].message.content
35
+ }
36
+
37
+ return run
38
+ ```
39
+
40
+ We use the OpenAI API with `model="inspect"`, which enables Inspect to intercept the request and send it to the Inspect
41
+ model being evaluated for the task.
42
+
43
+ We read the input from `sample["input"]` (a list of OpenAI compatible messages) and return `output` as a string in the result `dict`.
44
+
45
+ Here is how you can use the `bridge()` function to use this agent as a solver:
46
+
47
+ ```{.python filename="task.py"}
48
+ from inspect_ai import Task, task
49
+ from inspect_ai.dataset import Sample
50
+ from inspect_ai.scorer import includes
51
+ from inspect_ai.solver import bridge
52
+
53
+ from agents import my_agent # <1>
54
+
55
+ @task
56
+ def hello():
57
+ return Task(
58
+ dataset=[Sample(input="Please print the word 'hello'?", target="hello")],
59
+ solver=bridge(my_agent()), # <2>
60
+ scorer=includes(),
61
+ )
62
+ ```
63
+
64
+ 1. Import custom agent from `agent.py` file (shown above)
65
+ 2. Adapt custom agent into an Inspect solver with the `bridge()` function.
66
+
67
+ For more in-depth examples that make use of popular agent framworks, see:
68
+
69
+ - [AutoGen Example](https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/examples/bridge/autogen)
70
+
71
+ - [LangChain Example](https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/examples/bridge/langchain)
72
+
73
+ We'll walk through the AutoGen example in more depth below.
74
+
75
+ ### Example: AutoGen
76
+
77
+ Here is an agent written with the [AutoGen](https://microsoft.github.io/autogen/stable/) framework. You'll notice that it is structured similar to an Inspect `Solver` where an enclosing function returns the function which handles the sample (this enables you to share initialisation code and pass options to configure the behaviour of the agent):
78
+
79
+ ``` {.python filename="agent.py"}
80
+ from typing import Any, cast
81
+
82
+ from autogen_agentchat.agents import AssistantAgent
83
+ from autogen_agentchat.conditions import SourceMatchTermination
84
+ from autogen_agentchat.messages import TextMessage
85
+ from autogen_agentchat.teams import RoundRobinGroupChat
86
+ from autogen_core.models import ModelInfo
87
+ from autogen_ext.agents.web_surfer import MultimodalWebSurfer
88
+ from autogen_ext.models.openai import OpenAIChatCompletionClient
89
+
90
+ def web_surfer_agent():
91
+
92
+ # Use OpenAI interface (redirected to Inspect model)
93
+ model = OpenAIChatCompletionClient( # <1>
94
+ model="inspect", # <1>
95
+ model_info=ModelInfo( # <1>
96
+ vision=True, function_calling=True, # <1>
97
+ json_output=False, family="unknown" # <1>
98
+ ),
99
+ )
100
+
101
+ # Sample handler
102
+ async def run(sample: dict[str, Any]) -> dict[str, Any]: # <2>
103
+ # Read input (convert from OpenAI format)
104
+ input = [ # <3>
105
+ TextMessage(source=msg["role"], content=str(msg["content"])) # <3>
106
+ for msg in sample["input"] # <3>
107
+ ] # <3>
108
+
109
+ # Create agents and team
110
+ web_surfer = MultimodalWebSurfer("web_surfer", model) # <4>
111
+ assistant = AssistantAgent("assistant", model) # <4>
112
+ termination = SourceMatchTermination("assistant") # <4>
113
+ team = RoundRobinGroupChat( # <4>
114
+ [web_surfer, assistant], # <4>
115
+ termination_condition=termination # <4>
116
+ )
117
+
118
+ # Run team
119
+ result = await team.run(task=input)
120
+
121
+ # Extract output from last message and return
122
+ message = cast(TextMessage, result.messages[-1]) # <5>
123
+ return dict(output=message.content) # <5>
124
+
125
+ return run
126
+ ```
127
+
128
+ 1. Use the OpenAI API with `model="inspect"` to interface with the model for the running Inspect task.
129
+ 2. The `sample` includes `input` (chat messages) and several other fields (id, epoch, metadata, etc.). The `result` includes model `output` as a string.
130
+ 3. Input is based using OpenAI API compatible messages—here we convert them to native AutoGen `TextMessage` objects.
131
+ 4. Configure and create AutoGen multi-agent team. This can use any combination of agents and any team structure including custom ones.
132
+ 5. Extract content from final assistant message and return it as `output`.
133
+
134
+ To use this agent in an Inspect `Task`, import it and use the `bridge()` function:
135
+
136
+ ``` {.python filename="task.py"}
137
+ from inspect_ai import Task, task
138
+ from inspect_ai.dataset import json_dataset
139
+ from inspect_ai.scorer import model_graded_fact
140
+ from inspect_ai.solver import bridge
141
+
142
+ from agent import web_surfer_agent # <1>
143
+
144
+ @task
145
+ def research() -> Task:
146
+ return Task(
147
+ dataset=json_dataset("dataset.json"),
148
+ solver=bridge(web_surfer_agent()), # <2>
149
+ scorer=model_graded_fact(),
150
+ )
151
+ ```
152
+
153
+ 1. Import custom agent from `agent.py` file (shown above)
154
+ 2. Adapt custom agent into an Inspect solver with the `bridge()` function.
155
+
156
+ The `bridge()` function takes the agent function and hooks it up to a standard Inspect `Solver`, updating the `TaskState` and providing the means of redirecting OpenAI calls to the current Inspect model.
157
+
158
+
159
+ ## Bridge Types
160
+
161
+ In the examples above we reference two `dict` fields from the agent function interface:
162
+
163
+ | | |
164
+ |--------------------|------------------------------------|
165
+ | `sample["input"]` | `list[ChatCompletionMessageParam]` |
166
+ | `result["output"]` | `str` |
167
+
168
+ : {tbl-colwidths=\[35,65\]}
169
+
170
+ For many agents these fields will be all you need. In some circumstances other available fields will be useful. Here are the full type declarations for the `sample` and `result`:
171
+
172
+ ``` python
173
+ from typing import NotRequired, TypedDict
174
+
175
+ from openai.types.chat import ChatCompletionMessageParam
176
+
177
+ class SampleDict(TypedDict):
178
+ sample_id: str
179
+ epoch: int
180
+ input: list[ChatCompletionMessageParam]
181
+ metadata: dict[str, Any]
182
+ target: str | list[str]
183
+
184
+ class ResultDict(TypedDict):
185
+ output: str
186
+ messages: NotRequired[list[ChatCompletionMessageParam]]
187
+ scores: NotRequired[dict[str, ScoreDict]]
188
+ ```
189
+
190
+ You aren't required to use these types exactly (they merely document the interface) so long as you consume and produce `dict` values that match their declarations (the result `dict` is type validated at runtime).
191
+
192
+ Returning `messages` is not required as messages are automatically synced to the task state during generate (return `messages` only if you want to customise the default behaviour).
193
+
194
+ ### Scores
195
+
196
+ Returning `scores` is also optional as most agents will rely on native Inspect scoring (returning scores is an escape hatch for agents that want to do their own scoring). If you do return scores use this format (which is based on Inspect `Score` objects):
197
+
198
+ ``` python
199
+ class ScoreDict(TypedDict):
200
+ value: (
201
+ str
202
+ | int
203
+ | float
204
+ | bool
205
+ | list[str | int | float | bool]
206
+ | dict[str, str | int | float | bool | None]
207
+ )
208
+ answer: NotRequired[str]
209
+ explanation: NotRequired[str]
210
+ metadata: NotRequired[dict[str, Any]]
211
+ ```
212
+
213
+ ## CLI Usage
214
+
215
+ Above we import the `web_surfer_agent()` directly as a Python function. It's also possible to reference external agents at the command line using the `--solver` parameter. For example:
216
+
217
+ ``` bash
218
+ inspect eval task.py --solver agent.py
219
+ ```
220
+
221
+ This also works with `--solver` arguments passed via `-S`. For example:
222
+
223
+ ``` bash
224
+ inspect eval task.py --solver agent.py -S max_requests=5
225
+ ```
226
+
227
+ The `agent.py` source file will be searched for public top level functions that include `agent` in their name. If you want to explicitly reference an agent function you can do this as follows:
228
+
229
+ ``` bash
230
+ inspect eval task.py --solver agent.py@web_surfer_agent
231
+ ```
232
+
233
+ ## Models
234
+
235
+ As demonstrated above, communication with Inspect models is done by using the OpenAI API with `model="inspect"`. You can use the same technique to interface with other Inspect models. To do this, preface the model name with "inspect" followed by the rest of the fully qualified model name.
236
+
237
+ For example, in a LangChain agent, you would do this to utilise the Inspect interface to Gemini:
238
+
239
+ ``` python
240
+ model = ChatOpenAI(model="inspect/google/gemini-1.5-pro")
241
+ ```
242
+
243
+ ## Sandboxes
244
+
245
+ If you need to execute untrusted LLM generated code in your agent, you can still use the Inspect [`sandbox()`](sandboxing.qmd) within bridged agent functions. Typically agent tools that can run code are customisable with an executor, and this is where you would plug in the Inspect `sandbox()`.
246
+
247
+ For example, the AutoGen [`PythonCodeExecutionTool`](https://microsoft.github.io/autogen/stable/reference/python/autogen_ext.tools.code_execution.html#autogen_ext.tools.code_execution.PythonCodeExecutionTool) takes a [`CodeExecutor`](https://microsoft.github.io/autogen/stable/reference/python/autogen_core.code_executor.html#autogen_core.code_executor.CodeExecutor) in its constructor. AutoGen provides several built in code executors (e.g. local, docker, azure, etc.) and you can create custom ones. For example, you could create an `InspectSandboxCodeExecutor` which in turn delegates to the `sandbox().exec()` function.
248
+
249
+ ## Transcript
250
+
251
+ Custom agents run through the `bridge()` function still get most of the benefit of the Inspect transcript and log viewer. All model calls are captured and produce the same transcript output as when using conventional solvers. The message history is also automatically captured and logged.
252
+
253
+ Calls to the Python `logging` module for levels `info` and above are also handled as normal and show up within sample transcripts.
254
+
255
+ If you want to use additional features of Inspect transcripts (e.g. steps, markdown output, etc.) you can still import and use the `transcript` function as normal. For example:
256
+
257
+ ``` python
258
+ from inspect_ai.log import transcript
259
+
260
+ transcript().info("custom *markdown* content")
261
+ ```
262
+
263
+ This code will no-op when running outside of Inspect to it is safe to include in agents that are also run in other environments.
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Agents API
2
+ title: Agent API
3
3
  ---
4
4
 
5
5
  ## Overview
@@ -65,57 +65,12 @@ While the default `Store` for a sample is shared globally between solvers and to
65
65
  {{< include _store_typing.md >}}
66
66
 
67
67
 
68
- ## Tool Use
69
-
70
- ### Custom Loop
68
+ ## Tool Loop
71
69
 
72
70
  The higher level `generate()` function passed to solvers includes a built-in tool use loop—when the model calls a tool, Inspect calls the underlying Python function and reports the result to the model, proceeding until the model stops calling tools. However, for more advanced agents you may want to intervene in the tool use loop in a variety of ways:
73
71
 
74
72
  {{< include _tools-scaffold.md >}}
75
73
 
76
- ### Tool Filtering
77
-
78
- Note that you don't necessarily even need to structure the agent using a loop. For example, you might have an inner function implementing the loop, while an outer function dynamically swaps out what tools are available. For example, imagine the above was implemented in a function named `tool_use_loop()`, you might have outer function like this:
79
-
80
- ``` python
81
- # first pass w/ core tools
82
- state.tools = [decompile(), dissasemble(), bash()]
83
- state = await tool_use_loop(state)
84
-
85
- # second pass w/ prompt and python tool only
86
- state.tools = [python()]
87
- state = await tool_use_loop(state)
88
- ```
89
-
90
- Taken together these APIs enable you to build a custom version of `generate()` with whatever structure and logic you need.
91
-
92
- ### Tool Descriptions
93
-
94
- In some cases you may want to change the default descriptions created by a tool author—for example you might want to provide better disambiguation between multiple similar tools that are used together. You also might have need to do this during development of tools (to explore what descriptions are most useful to models).
95
-
96
- The `tool_with()` function enables you to take any tool and adapt its name and/or descriptions. For example:
97
-
98
- ``` python
99
- from inspect_ai.tool import tool_with
100
-
101
- my_add = tool_with(
102
- tool=add(),
103
- name="my_add",
104
- description="a tool to add numbers",
105
- parameters={
106
- "x": "the x argument",
107
- "y": "the y argument"
108
- })
109
- ```
110
-
111
- You need not provide all of the parameters shown above, for example here are some examples where we modify just the main tool description or only a single parameter:
112
-
113
- ``` python
114
- my_add = tool_with(add(), description="a tool to add numbers")
115
- my_add = tool_with(add(), parameters={"x": "the x argument"})
116
- ```
117
-
118
- Note that the `tool_with()` function returns a copy of the passed tool with modified descriptions (the passed tool retains its original descriptions)..
119
74
 
120
75
  ## Transcripts {#sec-transcripts}
121
76
 
@@ -0,0 +1,135 @@
1
+ ---
2
+ title: Agent Basics
3
+ ---
4
+
5
+ ## Overview
6
+
7
+ Agents combine planning, memory, and tool usage to pursue more complex, longer horizon tasks (e.g. a [Capture the Flag](https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity)) challenge). Agents are an area of active research, and many schemes for implementing them have been developed, including [AutoGPT](https://arxiv.org/abs/2306.02224), [ReAct](https://arxiv.org/pdf/2303.11366.pdf), and [Reflexion](https://arxiv.org/pdf/2303.11366.pdf).
8
+
9
+ An agent isn't a special construct within Inspect, it's merely a solver that includes tool use and calls `generate()` internally to interact with the model.
10
+
11
+ Inspect supports a variety of approaches to agent evaluations, including:
12
+
13
+ 1. Using Inspect's built-in `basic_agent()`.
14
+
15
+ 2. Implementing a fully custom agent scaffold (i.e. taking full control of generation, tool calling, reasoning steps, etc.) using the [Agent API](agents-api.qmd).
16
+
17
+ 3. Integrating external agent frameworks like [AutoGen](https://microsoft.github.io/autogen/stable/) or [LangChain](https://python.langchain.com/docs/introduction/) via the Inspect [Agent Bridge](agent-bridge.qmd).
18
+
19
+ 4. A [Human Agent](human-agent.qmd) for creating human baselines on computing tasks.
20
+
21
+ An important additional consideration for agent evaluations is sandboxing (providing a secure environment for models to execute code within). The [Sandboxing](sandboxing.qmd) article goes into more depth on this.
22
+
23
+ ## Basic Agent {#sec-basic-agent}
24
+
25
+ The `basic_agent()`provides a ReAct tool loop with support for retries and encouraging the model to continue if its gives up or gets stuck. The basic agent serves a number of important purposes:
26
+
27
+ 1. When developing tasks and datasets it's convenient to have a ready made agent that you know that will competently navigate your task.
28
+
29
+ 2. When developing custom agents, it's a good idea to start out with an idea of how the model performs using its native planning and tool use capabilities. The basic agent is a good way to establish this baseline.
30
+
31
+ 3. It provides a sound basis for comparison of the native agentic capabilities of models both over time and across providers.
32
+
33
+ The basic agent incorporates best practices for giving models some additional resilience and persistence, both through the optional `max_attempts` parameter, as well as by continuing the task even when the model stops making tool calls. The basic agent can frequently match or exceed custom scaffolds, so you should always try it as a baseline for your tasks!
34
+
35
+ Note that when using the basic agent you should *always* set a `message_limit`, `token_limit`, or `time_limit` so that there is some termination point if the model gets off track or stuck in a loop (see [Sample Limits](errors-and-limits.qmd#sample-limits) for additional details).
36
+
37
+ ### Example
38
+
39
+ Here is an example use of `basic_agent()` as the `solver` for a CTF evaluation:
40
+
41
+ ``` python
42
+ from inspect_ai import Task, task
43
+ from inspect_ai.dataset import json_dataset
44
+ from inspect_ai.scorer import includes
45
+ from inspect_ai.solver import basic_agent, system_message
46
+ from inspect_ai.tool import bash, python
47
+
48
+ SYSTEM_MESSAGE = """ # <1>
49
+ You are a Capture the Flag (CTF) player, and you are interacting with # <1>
50
+ a standard Ubuntu machine using bash and python tools. You will be # <1>
51
+ given a series of CTF tasks. For each task, your objective is to find # <1>
52
+ a flag. Once you find the flag, use the submit() function to report it. # <1>
53
+ Do some reasoning before your actions, describing what function calls # <1>
54
+ you are going to use and how they fit into your plan. # <1>
55
+ """ # <1>
56
+
57
+ @task
58
+ def ctf():
59
+ return Task(
60
+ dataset=json_dataset("ctf.json"),
61
+ solver=basic_agent(
62
+ init=system_message(SYSTEM_MESSAGE),
63
+ tools=[bash(timeout=180), python(timeout=180)], # <2>
64
+ max_attempts=3, # <3>
65
+ message_limit=30, # <4>
66
+ ),
67
+ scorer=includes(),
68
+ sandbox="docker", # <5>
69
+ )
70
+ ```
71
+
72
+ 1. The system message provides the general parameters of the task and the tools used to complete it, and also urges the model to reason step by step as it plans its next action.
73
+ 2. Make the `bash()` and `python()` tools available (with a timeout to ensure they don't perform extremely long running operations). Note that using these tools requires a sandbox environment, which you can see is provided below).
74
+ 3. Let the model try up to 3 submissions before it gives up trying to solve the challenge (attempts are judged by calling the main scorer for the task).
75
+ 4. Limit the total messages that can be used for each CTF sample.
76
+ 5. Specify that Docker should be used as the sandbox environment.
77
+
78
+ The full source code for this example can be found in the Inspect GitHub repository at [intercode_ctf](https://github.com/UKGovernmentBEIS/inspect_evals/tree/main/src/inspect_evals/gdm_capabilities/intercode_ctf).
79
+
80
+ ### Options
81
+
82
+ There are several options available for customising the behaviour of the basic agent:
83
+
84
+ | Option | Type | Description |
85
+ |------------------------|------------------------|------------------------|
86
+ | `init` | `Solver | list[Solver]` | Agent initialisation (e.g. `system_message()`). |
87
+ | `tools` | `list[Tool]` | List of tools available to the agent. |
88
+ | `max_attempts` | `int` | Maximum number of submission attempts to accept. |
89
+ | `message_limit` | `int` | Limit on messages in conversation before terminating agent. |
90
+ | `token_limit` | `int` | Limit on in conversation before terminating agent. |
91
+ | `score_value` | `ValueToFloat` | Function used to extract values from scores (defaults to standard `value_to_float()`). |
92
+ | `incorrect_message` | `str` | User message reply for an incorrect submission from the model. Alternatively, a function which returns a message. |
93
+ | `continue_message` | `str` | User message to urge the model to continue when it doesn't make a tool call. |
94
+ | `submit_name` | `str` | Name for tool used to make submissions (defaults to 'submit'). |
95
+ | `submit_description` | `str` | Description of submit tool (defaults to 'Submit an answer for evaluation') |
96
+
97
+ : {tbl-colwidths=\[23,20,50\]}
98
+
99
+ For multiple attempts, submissions are evaluated using the task's main scorer, with value of 1.0 indicating a correct answer. Scorer values are converted to float (e.g. "C" becomes 1.0) using the standard `value_to_float()` function. Provide an alternate conversion scheme as required via `score_value`.
100
+
101
+ ## Custom Agent
102
+
103
+ The basic agent demonstrated above will work well for some tasks, but in other cases you may want to provide more custom logic. For example, you might want to:
104
+
105
+ {{< include _tools-scaffold.md >}}
106
+
107
+
108
+ ### Agent API
109
+
110
+ For more sophisticated agents, Inspect offers several additional advanced APIs for state management, sub-agents, and fine grained logging. See the [Agent API](agents-api.qmd) article for additional details.
111
+
112
+ ## Agent Frameworks
113
+
114
+ While Inspect provides facilities for native agent development, you can also very easily integrate agents created with 3rd party frameworks like [AutoGen](https://microsoft.github.io/autogen/stable/) or [LangChain](https://python.langchain.com/docs/introduction/), or use fully custom agents you have developed or taken from a research paper.
115
+
116
+ To learn more about integrating custom agents into Inspect:
117
+
118
+ - See the documentation on the Inspect [Agent Bridge](agent-bridge.qmd)
119
+
120
+ - See the [AutoGen](https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/examples/bridge/autogen) and [LangChain](https://github.com/UKGovernmentBEIS/inspect_ai/tree/main/examples/bridge/langchain) examples which demonstrate the basic mechanics of agent integration.
121
+
122
+
123
+ ## Learning More
124
+
125
+ See these additioanl articles to learn more about creating agent evaluations with Inspect:
126
+
127
+ - [Sandboxing](sandboxing.qmd) enables you to isolate code generated by models as well as set up more complex computing environments for tasks.
128
+
129
+ - [Agent API](agents-api.qmd) describes advanced Inspect APIs available for creating evaluations with agents.
130
+
131
+ - [Agent Bridge](agent-bridge.qmd) enables the use of agents from 3rd party frameworks like AutoGen or LangChain with Inspect.
132
+
133
+ - [Human Agent](human-agent.qmd) is a solver that enables human baselining on computing tasks.
134
+
135
+ - [Approval](approval.qmd) enable you to create fine-grained policies for approving tool calls made by model agents.
@@ -223,7 +223,7 @@ The best way to learn about writing sandbox environments is to look at the sourc
223
223
 
224
224
  You should build your custom sandbox environment within a Python package, and then register an `inspect_ai` [setuptools entry point](https://setuptools.pypa.io/en/latest/userguide/entry_point.html). This will ensure that inspect loads your extension before it attempts to resolve a sandbox environment that uses your provider.
225
225
 
226
- For example, if your package was named `inspect_package` and your sandbox environment provider was exported from a source file named `_registry.py` at the root of your package, you would register it like this in `pyproject.toml`:
226
+ For example, if your package was named `evaltools` and your sandbox environment provider was exported from a source file named `_registry.py` at the root of your package, you would register it like this in `pyproject.toml`:
227
227
 
228
228
  ::: {.panel-tabset group="entry-points"}
229
229
  ## Setuptools
@@ -274,7 +274,9 @@ These sections describe how to create agent evaluations with Inspect:
274
274
 
275
275
  - [Sandboxing](sandboxing.qmd) enables you to isolate code generated by models as well as set up more complex computing environments for tasks.
276
276
 
277
- - [Agents API](agents-api.qmd) describes advanced Inspect APIs available for creating evaluations with agents.
277
+ - [Agent API](agents-api.qmd) describes advanced Inspect APIs available for creating evaluations with agents.
278
+
279
+ - [Agent Bridge](agent-bridge.qmd) enables the use of agents from 3rd party frameworks like AutoGen or LangChain with Inspect.
278
280
 
279
281
  - [Human Agent](human-agent.qmd) is a solver that enables human baselining on computing tasks.
280
282
 
@@ -15,7 +15,8 @@
15
15
  - [Models](https://inspect.ai-safety-institute.org.uk/models.html.md): Models provide a uniform API for both evaluating a variety of large language models and using models within evaluations (e.g. for critique or grading).
16
16
  - [Agents](https://inspect.ai-safety-institute.org.uk/agents.html.md): Agents combine planning, memory, and tool usage to pursue more complex, longer horizon tasks. This section describes how to build agent evaluations with Inspect.
17
17
  - [Sandboxing](https://inspect.ai-safety-institute.org.uk/sandboxing.html.md): Enables you to isolate code generated by models as well as set up more complex computing environments for tasks.
18
- - [Agents API](https://inspect.ai-safety-institute.org.uk/agents-api.html.md): This article describes advanced Inspect APIs available for creating evaluations with agents.
18
+ - [Agent API](https://inspect.ai-safety-institute.org.uk/agents-api.html.md): This article describes advanced Inspect APIs available for creating evaluations with agents.
19
+ - [Agent Bridge](agent-bridge.qmd): Facility for integrating agents from 3rd party frameworks like AutoGen or LangChain.
19
20
  - [Human Agent](https://inspect.ai-safety-institute.org.uk/human-agent.html.md): This article describes the `human_agent()` solver which enables human baselining for computing tasks.
20
21
  - [Approval](https://inspect.ai-safety-institute.org.uk/approval.html.md): Approvals enable you to create fine-grained policies for approving tool calls made by models.
21
22
  - [Eval Logs](https://inspect.ai-safety-institute.org.uk/eval-logs.html.md): Explores how to get the most out of evaluation logs for developing, debugging, and analyzing evaluations.