inspect-ai 0.3.75__py3-none-any.whl → 0.3.76__py3-none-any.whl

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 (72) hide show
  1. inspect_ai/_eval/evalset.py +3 -2
  2. inspect_ai/_eval/registry.py +3 -5
  3. inspect_ai/_eval/run.py +4 -0
  4. inspect_ai/_eval/task/run.py +4 -0
  5. inspect_ai/_util/logger.py +3 -0
  6. inspect_ai/_view/www/dist/assets/index.css +28 -16
  7. inspect_ai/_view/www/dist/assets/index.js +4801 -4615
  8. inspect_ai/_view/www/log-schema.json +79 -9
  9. inspect_ai/_view/www/src/samples/descriptor/score/CategoricalScoreDescriptor.tsx +1 -1
  10. inspect_ai/_view/www/src/samples/descriptor/score/NumericScoreDescriptor.tsx +2 -2
  11. inspect_ai/_view/www/src/samples/sample-tools/SortFilter.tsx +1 -1
  12. inspect_ai/_view/www/src/samples/transcript/ModelEventView.module.css +2 -2
  13. inspect_ai/_view/www/src/types/log.d.ts +11 -5
  14. inspect_ai/log/_recorders/json.py +8 -0
  15. inspect_ai/log/_transcript.py +13 -4
  16. inspect_ai/model/_call_tools.py +13 -4
  17. inspect_ai/model/_chat_message.py +3 -0
  18. inspect_ai/model/_model.py +5 -1
  19. inspect_ai/model/_model_output.py +6 -1
  20. inspect_ai/model/_openai.py +11 -6
  21. inspect_ai/model/_providers/anthropic.py +133 -75
  22. inspect_ai/model/_providers/openai.py +11 -8
  23. inspect_ai/model/_providers/vertex.py +5 -2
  24. inspect_ai/tool/__init__.py +4 -0
  25. inspect_ai/tool/_tool_call.py +5 -2
  26. inspect_ai/tool/_tool_support_helpers.py +200 -0
  27. inspect_ai/tool/_tools/_bash_session.py +119 -0
  28. inspect_ai/tool/_tools/_computer/_computer.py +1 -1
  29. inspect_ai/tool/_tools/_text_editor.py +121 -0
  30. inspect_ai/tool/_tools/_web_browser/_back_compat.py +150 -0
  31. inspect_ai/tool/_tools/_web_browser/_web_browser.py +75 -130
  32. inspect_ai/tool/_tools/_web_search.py +1 -1
  33. inspect_ai/util/_json.py +28 -0
  34. inspect_ai/util/_sandbox/context.py +16 -7
  35. inspect_ai/util/_sandbox/docker/config.py +1 -1
  36. inspect_ai/util/_sandbox/docker/internal.py +3 -3
  37. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.76.dist-info}/METADATA +5 -2
  38. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.76.dist-info}/RECORD +42 -68
  39. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.76.dist-info}/WHEEL +1 -1
  40. inspect_ai/tool/_tools/_web_browser/_resources/.pylintrc +0 -8
  41. inspect_ai/tool/_tools/_web_browser/_resources/.vscode/launch.json +0 -24
  42. inspect_ai/tool/_tools/_web_browser/_resources/.vscode/settings.json +0 -25
  43. inspect_ai/tool/_tools/_web_browser/_resources/Dockerfile +0 -22
  44. inspect_ai/tool/_tools/_web_browser/_resources/README.md +0 -63
  45. inspect_ai/tool/_tools/_web_browser/_resources/accessibility_tree.py +0 -71
  46. inspect_ai/tool/_tools/_web_browser/_resources/accessibility_tree_node.py +0 -323
  47. inspect_ai/tool/_tools/_web_browser/_resources/cdp/__init__.py +0 -5
  48. inspect_ai/tool/_tools/_web_browser/_resources/cdp/a11y.py +0 -279
  49. inspect_ai/tool/_tools/_web_browser/_resources/cdp/dom.py +0 -9
  50. inspect_ai/tool/_tools/_web_browser/_resources/cdp/dom_snapshot.py +0 -293
  51. inspect_ai/tool/_tools/_web_browser/_resources/cdp/page.py +0 -94
  52. inspect_ai/tool/_tools/_web_browser/_resources/constants.py +0 -2
  53. inspect_ai/tool/_tools/_web_browser/_resources/images/usage_diagram.svg +0 -2
  54. inspect_ai/tool/_tools/_web_browser/_resources/mock_environment.py +0 -45
  55. inspect_ai/tool/_tools/_web_browser/_resources/playwright_browser.py +0 -50
  56. inspect_ai/tool/_tools/_web_browser/_resources/playwright_crawler.py +0 -48
  57. inspect_ai/tool/_tools/_web_browser/_resources/playwright_page_crawler.py +0 -280
  58. inspect_ai/tool/_tools/_web_browser/_resources/pyproject.toml +0 -65
  59. inspect_ai/tool/_tools/_web_browser/_resources/rectangle.py +0 -64
  60. inspect_ai/tool/_tools/_web_browser/_resources/rpc_client_helpers.py +0 -146
  61. inspect_ai/tool/_tools/_web_browser/_resources/scale_factor.py +0 -64
  62. inspect_ai/tool/_tools/_web_browser/_resources/test_accessibility_tree_node.py +0 -180
  63. inspect_ai/tool/_tools/_web_browser/_resources/test_playwright_crawler.py +0 -99
  64. inspect_ai/tool/_tools/_web_browser/_resources/test_rectangle.py +0 -15
  65. inspect_ai/tool/_tools/_web_browser/_resources/test_web_client.py +0 -44
  66. inspect_ai/tool/_tools/_web_browser/_resources/web_browser_rpc_types.py +0 -39
  67. inspect_ai/tool/_tools/_web_browser/_resources/web_client.py +0 -214
  68. inspect_ai/tool/_tools/_web_browser/_resources/web_client_new_session.py +0 -35
  69. inspect_ai/tool/_tools/_web_browser/_resources/web_server.py +0 -192
  70. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.76.dist-info}/entry_points.txt +0 -0
  71. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.76.dist-info/licenses}/LICENSE +0 -0
  72. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.76.dist-info}/top_level.txt +0 -0
@@ -52,7 +52,7 @@ def web_search(
52
52
  A web search is conducted using the specified provider, the results are parsed for relevance
53
53
  using the specified model, and the top 'num_results' relevant pages are returned.
54
54
 
55
- See further documentation at <https://inspect.aisi.org.uk/tools.html#sec-web-search>.
55
+ See further documentation at <https://inspect.aisi.org.uk/tools-standard.html#sec-web-search>.
56
56
 
57
57
  Args:
58
58
  provider: Search provider (defaults to "google", currently
inspect_ai/util/_json.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import types
2
2
  import typing
3
+ from copy import deepcopy
3
4
  from dataclasses import is_dataclass
4
5
  from typing import (
5
6
  Any,
@@ -10,6 +11,7 @@ from typing import (
10
11
  Tuple,
11
12
  Type,
12
13
  Union,
14
+ cast,
13
15
  get_args,
14
16
  get_origin,
15
17
  get_type_hints,
@@ -127,6 +129,7 @@ def cls_json_schema(cls: Type[Any]) -> JSONSchema:
127
129
  required.append(name)
128
130
  elif isinstance(cls, type) and issubclass(cls, BaseModel):
129
131
  schema = cls.model_json_schema()
132
+ schema = resolve_schema_references(schema)
130
133
  for name, prop in schema.get("properties", {}).items():
131
134
  properties[name] = JSONSchema(**prop)
132
135
  required = schema.get("required", [])
@@ -168,3 +171,28 @@ def python_type_to_json_type(python_type: str | None) -> JSONType:
168
171
  raise ValueError(
169
172
  f"Unsupported type: {python_type} for Python to JSON conversion."
170
173
  )
174
+
175
+
176
+ def resolve_schema_references(schema: dict[str, Any]) -> dict[str, Any]:
177
+ """Resolves all $ref references in a JSON schema by inlining the definitions."""
178
+ schema = deepcopy(schema)
179
+ definitions = schema.pop("$defs", {})
180
+
181
+ def _resolve_refs(obj: Any) -> Any:
182
+ if isinstance(obj, dict):
183
+ if "$ref" in obj and obj["$ref"].startswith("#/$defs/"):
184
+ ref_key = obj["$ref"].split("/")[-1]
185
+ if ref_key in definitions:
186
+ # Replace with a deep copy of the definition
187
+ resolved = deepcopy(definitions[ref_key])
188
+ # Process any nested references in the definition
189
+ return _resolve_refs(resolved)
190
+
191
+ # Process all entries in the dictionary
192
+ return {k: _resolve_refs(v) for k, v in obj.items()}
193
+ elif isinstance(obj, list):
194
+ return [_resolve_refs(item) for item in obj]
195
+ else:
196
+ return obj
197
+
198
+ return cast(dict[str, Any], _resolve_refs(schema))
@@ -49,11 +49,14 @@ def sandbox(name: str | None = None) -> SandboxEnvironment:
49
49
  return environment
50
50
 
51
51
 
52
- async def sandbox_with(file: str) -> SandboxEnvironment | None:
52
+ async def sandbox_with(file: str, on_path: bool = False) -> SandboxEnvironment | None:
53
53
  """Get the SandboxEnvironment for the current sample that has the specified file.
54
54
 
55
55
  Args:
56
- file (str): Path to file to check for.
56
+ file (str): Path to file to check for if on_path is False. If on_path is
57
+ True, file should be a filename that exists on the system path.
58
+ on_path (bool): If True, file is a filename to be verified using "which".
59
+ If False, file is a path to be checked within the sandbox environments.
57
60
 
58
61
  Return:
59
62
  SandboxEnvironment instance or None if no sandboxes had the file.
@@ -66,19 +69,25 @@ async def sandbox_with(file: str) -> SandboxEnvironment | None:
66
69
  if environments_with is None:
67
70
  raise_no_sandbox()
68
71
 
69
- # if we've already disovered the sandbox for this file then return it
70
- environment = environments_with.get(file, None)
72
+ # if we've already discovered the sandbox for this file then return it
73
+ environment_with_key = f"{file}:{on_path}"
74
+ environment = environments_with.get(environment_with_key, None)
71
75
  if environment is not None:
72
76
  return environment
73
77
 
74
78
  # look in each sandbox
75
79
  for _, environment in environments.items():
76
80
  try:
77
- # can we read the file?
78
- await environment.read_file(file)
81
+ if on_path:
82
+ # can we find the file on the path?
83
+ if not (await environment.exec(["which", file])).success:
84
+ continue
85
+ else:
86
+ # can we read the file?
87
+ await environment.read_file(file)
79
88
 
80
89
  # if so this is our environment, cache and return it
81
- environments_with[file] = environment
90
+ environments_with[environment_with_key] = environment
82
91
  return environment
83
92
 
84
93
  # allow exception types known to be raised from read_file
@@ -82,7 +82,7 @@ COMPOSE_COMMENT = """# inspect auto-generated docker compose file
82
82
  COMPOSE_GENERIC_YAML = f"""{COMPOSE_COMMENT}
83
83
  services:
84
84
  default:
85
- image: "python:3.12-bookworm"
85
+ image: "aisiuk/inspect-tool-support"
86
86
  command: "tail -f /dev/null"
87
87
  init: true
88
88
  network_mode: none
@@ -3,13 +3,13 @@ from inspect_ai._util.error import PrerequisiteError
3
3
  from inspect_ai.util._display import display_type
4
4
  from inspect_ai.util._subprocess import subprocess
5
5
 
6
- INSPECT_WEB_BROWSER_IMAGE_DOCKERHUB = "aisiuk/inspect-web-browser-tool"
6
+ INSPECT_WEB_BROWSER_IMAGE_DOCKERHUB_DEPRECATED = "aisiuk/inspect-web-browser-tool"
7
7
 
8
- INSPECT_WEB_BROWSER_IMAGE = "inspect_web_browser"
8
+ INSPECT_WEB_BROWSER_IMAGE_DEPRECATED = "inspect_web_browser"
9
9
  INSPECT_COMPUTER_IMAGE = "inspect-computer-tool"
10
10
 
11
11
  INTERNAL_IMAGES = {
12
- INSPECT_WEB_BROWSER_IMAGE: PKG_PATH
12
+ INSPECT_WEB_BROWSER_IMAGE_DEPRECATED: PKG_PATH
13
13
  / "tool"
14
14
  / "_tools"
15
15
  / "_web_browser"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: inspect_ai
3
- Version: 0.3.75
3
+ Version: 0.3.76
4
4
  Summary: Framework for large language model evaluations
5
5
  Author: UK AI Security Institute
6
6
  License: MIT License
@@ -60,11 +60,13 @@ Requires-Dist: goodfire; extra == "dev"
60
60
  Requires-Dist: griffe; extra == "dev"
61
61
  Requires-Dist: groq; extra == "dev"
62
62
  Requires-Dist: ipython; extra == "dev"
63
+ Requires-Dist: markdown; extra == "dev"
63
64
  Requires-Dist: mistralai; extra == "dev"
64
65
  Requires-Dist: moto[server]; extra == "dev"
65
66
  Requires-Dist: mypy; extra == "dev"
66
67
  Requires-Dist: nbformat; extra == "dev"
67
68
  Requires-Dist: openai; extra == "dev"
69
+ Requires-Dist: panflute; extra == "dev"
68
70
  Requires-Dist: pip; extra == "dev"
69
71
  Requires-Dist: pre-commit; extra == "dev"
70
72
  Requires-Dist: pylint; extra == "dev"
@@ -96,6 +98,7 @@ Requires-Dist: griffe; extra == "doc"
96
98
  Provides-Extra: dist
97
99
  Requires-Dist: twine; extra == "dist"
98
100
  Requires-Dist: build; extra == "dist"
101
+ Dynamic: license-file
99
102
 
100
103
  [<img width="295" src="https://inspect.aisi.org.uk/images/aisi-logo.svg" />](https://aisi.gov.uk/)
101
104
 
@@ -46,11 +46,11 @@ inspect_ai/_display/textual/widgets/transcript.py,sha256=zaxlDixT6Fie0acAWBM9Hlt
46
46
  inspect_ai/_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  inspect_ai/_eval/context.py,sha256=gWTjEEMVTJMJpCCKLRs4joZDkG00rzE7-HXZFyzSC_I,1283
48
48
  inspect_ai/_eval/eval.py,sha256=lmDIfrfx9hmlIOSYEUkH6QzpX1dDV6JUgEB_fo4GANg,37824
49
- inspect_ai/_eval/evalset.py,sha256=r4I3c_sAwKKfa_tbNpQ1H_K_xBu1LBNYXum7mvjxgKg,23472
49
+ inspect_ai/_eval/evalset.py,sha256=1N4sJ-gvGe-viZtIUIjJ4DcUCjAHxUrB6ZN0SYGp0-4,23541
50
50
  inspect_ai/_eval/list.py,sha256=VbZ-2EI6MqrXvCN7VTz21TQSoU5K5_Q0hqhxmj5A_m0,3744
51
51
  inspect_ai/_eval/loader.py,sha256=yOj8HqYBFQntx0_GY4Wxqm6jivlT4N4WiQ1T8J9uRVA,23606
52
- inspect_ai/_eval/registry.py,sha256=9IfnQJqFRzBdppfW64xTDDefMhx_axsZUznfmd1GPY4,5385
53
- inspect_ai/_eval/run.py,sha256=Mli3THniF34zL3Mv3LY_w0aCe09rrNw484zFVtbQGtE,18978
52
+ inspect_ai/_eval/registry.py,sha256=9Q-Re9uZagQ2nw-W7hA6zhrmCQFmo3KcxncTcG24EG8,5315
53
+ inspect_ai/_eval/run.py,sha256=1i-r9ha4afTyKKEwcA5PlMZ1SHZM80pt-N2MUKBzAk8,19093
54
54
  inspect_ai/_eval/score.py,sha256=qf9T8XwUmfE6A8QK1-D-jUbNlLETVM-HXhucPWZ0Ro0,9591
55
55
  inspect_ai/_eval/task/__init__.py,sha256=6FvojMW3yo36L7xDacppCHDxt6A8_tzj_ftg5bQ6eNk,199
56
56
  inspect_ai/_eval/task/constants.py,sha256=quAKMw-4-3xKd1T_KwXCZvHYoKRXt1ZGuaHbBcWJwnA,72
@@ -61,7 +61,7 @@ inspect_ai/_eval/task/images.py,sha256=nTzHizlyuPYumPH7gAOBSrNkTwTbAmZ7tKdzN7d_R
61
61
  inspect_ai/_eval/task/log.py,sha256=LJXKau99G-Qxu5UzODZKzo2HW70ST7kM9oUtHyrP6GI,9863
62
62
  inspect_ai/_eval/task/resolved.py,sha256=OCQc_0HmW_Vw8o1KisX0DCn-eOPkTbR1v_y_jEaAlhU,966
63
63
  inspect_ai/_eval/task/results.py,sha256=x4weYRK2XGowfBG3f2msOeZQ_pxh230HTlw6kps33jw,17925
64
- inspect_ai/_eval/task/run.py,sha256=Z3MfkcEYRM43t2Ic-cPkl39itbMTiiKE5QsmVyUy-EI,36768
64
+ inspect_ai/_eval/task/run.py,sha256=HWpJ-imvjvbjptuEWqoXwpttX0zAkUqHketr3rGphlc,36981
65
65
  inspect_ai/_eval/task/rundir.py,sha256=x1XTll6ACc68AOBOIOjMTjNpV-elCpgu26qo0LcXBjQ,2193
66
66
  inspect_ai/_eval/task/sandbox.py,sha256=A4OirmhKtXzg_Bu-g2yo-vC_vnXocpBevns5M07k-qE,7095
67
67
  inspect_ai/_eval/task/task.py,sha256=YFWbCxIAb6Oppg9CaT-s4alfKU0_OV8IAUPu1BbFllY,14838
@@ -97,7 +97,7 @@ inspect_ai/_util/interrupt.py,sha256=T30e5YaKSNmnO695p0lK0dquUWFq6dNNtdAFPmWGwME
97
97
  inspect_ai/_util/json.py,sha256=uNhVUFbGy6ZmPkqnpHT7h8oTdh1M66YexP79M-0PROw,2376
98
98
  inspect_ai/_util/kvstore.py,sha256=z2IXLWP4QqqGqsq5_MbYjBQPcEJqfWK4IyZXgV-kppA,2398
99
99
  inspect_ai/_util/list.py,sha256=6_5r5jI5RKK34kCmIqqVQ5hYG-G8v0F5H7L-DmQQ2E4,279
100
- inspect_ai/_util/logger.py,sha256=3MHOwnsZjN5izJmavIylBxW7RZ0sSPtseJ9LUNGW9Eo,6154
100
+ inspect_ai/_util/logger.py,sha256=XpGyoe8V7FIhNU1rnjTjwR07LVbshA9rRZn33sOitig,6230
101
101
  inspect_ai/_util/notebook.py,sha256=Mgz3J4uBh-MqVBRmpiJqDHRpn2hd7HIOBeJBwLG-bbk,2998
102
102
  inspect_ai/_util/notgiven.py,sha256=zkn6AYflKLf8YlnwTAMxPLQ-4LyIVmKpGcNcXf-Ssng,457
103
103
  inspect_ai/_util/package.py,sha256=2ntItRYaYBaVWI5eDaB4FdpI1IUBiBWNRxq7FChvk1I,2729
@@ -133,7 +133,7 @@ inspect_ai/_view/www/eslint.config.mjs,sha256=R4sb1miZ8_1wEgUu6o_xkvALcaSxKLh9xH
133
133
  inspect_ai/_view/www/favicon.svg,sha256=b9AHYZaO2zBzeKH6G4PwXZMGGW_UxY0omKHam-c9MAs,1508
134
134
  inspect_ai/_view/www/index.html,sha256=wqZHIn_9TODavPHnGyY9F1RH6JBIphoaqRIRgBQgrUE,910
135
135
  inspect_ai/_view/www/jsconfig.json,sha256=vt1gPPYezOFeV9nofA93CmVJAKGb1QeKGuyvEn1CXgk,383
136
- inspect_ai/_view/www/log-schema.json,sha256=SCHuojwC7I7iKPNRJ3h8AgwHvvdT039Hjh-VHXj8rCk,111155
136
+ inspect_ai/_view/www/log-schema.json,sha256=g_LH7ptR59nDtc_zP4of4m6s17zZEPg-umcgdMP5D3c,112552
137
137
  inspect_ai/_view/www/package.json,sha256=atT_c02Taz84pTimEAEUD5I3In7H3notXijv2I3JNo0,2065
138
138
  inspect_ai/_view/www/postcss.config.cjs,sha256=mwpiwZD1alr_ECeLVf7vIpX_5KiARNF8HbkpWWiqSac,324
139
139
  inspect_ai/_view/www/tsconfig.json,sha256=FbmQYpX8ta5Wyi8b8md2O_8CXkfQgr-Pe2yRyKXeqM0,619
@@ -143,8 +143,8 @@ inspect_ai/_view/www/.vscode/extensions.json,sha256=E73RWLzcoyeluE_ijGxaNSOK9xC0
143
143
  inspect_ai/_view/www/.vscode/settings.json,sha256=g5hrVnMaYxM06JpiJD2EuE2xjcbF6xNAtL2fuKgG1-8,200
144
144
  inspect_ai/_view/www/dist/index.html,sha256=gpdu6SR-SOH9EWx15cCWHzujMZujnZR5tRlEfROJg2A,997
145
145
  inspect_ai/_view/www/dist/assets/favicon.svg,sha256=b9AHYZaO2zBzeKH6G4PwXZMGGW_UxY0omKHam-c9MAs,1508
146
- inspect_ai/_view/www/dist/assets/index.css,sha256=U4BiB_KvLaITgwPp-BJUKg3HKHZkOFAuuSzwN7Qm1ws,895303
147
- inspect_ai/_view/www/dist/assets/index.js,sha256=BG9IAh-dA8mnv-vrQEF8F8YDDno8023vX0IgY160XAA,2741408
146
+ inspect_ai/_view/www/dist/assets/index.css,sha256=V0HHB6ss9UdKAlLKTmyHoYAZrstD6nvb-UhnWInyhQQ,895546
147
+ inspect_ai/_view/www/dist/assets/index.js,sha256=zcV5qvFRVPEBJkVclKSbtg91IX6L-T7dmO2M8yY9mZ4,2748105
148
148
  inspect_ai/_view/www/src/App.tsx,sha256=rhiZKs-f1y9amyX_OLay7aL4OXaQ_o0gNd04M3pZVuk,28852
149
149
  inspect_ai/_view/www/src/AppErrorBoundary.tsx,sha256=RyhZWbIMZj1QeUOUUXh9hUFvq6LoDEoHuTY0giswmL0,1169
150
150
  inspect_ai/_view/www/src/constants.ts,sha256=aLncMT1XjKzyphLF_jkXPZicsCJXMsBXcDomAC4EaIY,1228
@@ -259,8 +259,8 @@ inspect_ai/_view/www/src/samples/descriptor/samplesDescriptor.tsx,sha256=IFJ20qT
259
259
  inspect_ai/_view/www/src/samples/descriptor/types.ts,sha256=oHCAVEQSWeiVi2FUhPl2rymrbCr0zgdslhCWlDxsLSY,1378
260
260
  inspect_ai/_view/www/src/samples/descriptor/score/BooleanScoreDescriptor.module.css,sha256=3cWqjv4GQcw7z2ZNcnbxHGk7FM39oU8S8yRIVPN5XEk,417
261
261
  inspect_ai/_view/www/src/samples/descriptor/score/BooleanScoreDescriptor.tsx,sha256=CLAzCTaPNhtA43VrWHODGvkvu9MiE3PBJuJsHp_Bld4,671
262
- inspect_ai/_view/www/src/samples/descriptor/score/CategoricalScoreDescriptor.tsx,sha256=17we32TGRoqayxI4yw99MqlaJfLcJgtZXCtoHBznGOg,460
263
- inspect_ai/_view/www/src/samples/descriptor/score/NumericScoreDescriptor.tsx,sha256=SiiqqaodZPT1aMW1xBgFGSPQ6Z7OCbtx2n-9sewW7cM,836
262
+ inspect_ai/_view/www/src/samples/descriptor/score/CategoricalScoreDescriptor.tsx,sha256=E7oUxeFW5yzR5akYxUrH3wUtKRYqXYqgbzzZTTT1TW8,472
263
+ inspect_ai/_view/www/src/samples/descriptor/score/NumericScoreDescriptor.tsx,sha256=pUwjwGrojhMyzZZh-wtuppagwZECfJG0Xq76Wx6fD-8,860
264
264
  inspect_ai/_view/www/src/samples/descriptor/score/ObjectScoreDescriptor.module.css,sha256=lWNDBHma-aaeeKRRig5GUIYag95UISwcN1QuF46-zR8,202
265
265
  inspect_ai/_view/www/src/samples/descriptor/score/ObjectScoreDescriptor.tsx,sha256=mq-MFIu4AwEe7ZoQZuOCUUfaguAsgHrsVFG-qtFmfos,2024
266
266
  inspect_ai/_view/www/src/samples/descriptor/score/OtherScoreDescriptor.tsx,sha256=argRDR7qkZ--Sb6UnuMc1mYBbEY5CXVX0q1vfiTVYA8,511
@@ -287,7 +287,7 @@ inspect_ai/_view/www/src/samples/sample-tools/EpochFilter.tsx,sha256=xSgribOdqB2
287
287
  inspect_ai/_view/www/src/samples/sample-tools/SelectScorer.module.css,sha256=20RE0gRiZ0Xck05JpReHp3R1gO1wvuDrBafEo9pIbpk,160
288
288
  inspect_ai/_view/www/src/samples/sample-tools/SelectScorer.tsx,sha256=sj_K0yznmwn-16KXI7nUIKiewwyVwAjBhEQHPbRVgcQ,4310
289
289
  inspect_ai/_view/www/src/samples/sample-tools/SortFilter.module.css,sha256=7uNUEoHtsNxN6P5WFZQvoEzd55n9rsgmfhWCicFh1_c,106
290
- inspect_ai/_view/www/src/samples/sample-tools/SortFilter.tsx,sha256=DlHvJzBglbzbtOUmLcWpGEOuSQE8ObHv9Bjyf8D_wG8,4595
290
+ inspect_ai/_view/www/src/samples/sample-tools/SortFilter.tsx,sha256=GAJ_auD-kDn2eJWUHrjObvyt-qwJBiiOsSb6t1rCNqs,4595
291
291
  inspect_ai/_view/www/src/samples/sample-tools/filters.ts,sha256=5QiNwaZOuYSZKGOn0XeRYvWyLB7AM3lbMnDSkGfgpA4,9529
292
292
  inspect_ai/_view/www/src/samples/sample-tools/sample-filter/SampleFilter.module.css,sha256=PPdynh09MuEz0BMhHSximTj_BLNNAEQQQB8TH4amd3A,199
293
293
  inspect_ai/_view/www/src/samples/sample-tools/sample-filter/SampleFilter.tsx,sha256=KCJORRkBUPz1NOHARYdli7vE_WOUVRpQM7whV4dxqtc,8415
@@ -305,7 +305,7 @@ inspect_ai/_view/www/src/samples/transcript/InfoEventView.tsx,sha256=SKbfkY5f_Pw
305
305
  inspect_ai/_view/www/src/samples/transcript/InputEventView.tsx,sha256=XsWl7hACRUpJ_HJ91c-78MYU3gJiGWC5z-7kH4w145g,1345
306
306
  inspect_ai/_view/www/src/samples/transcript/LoggerEventView.module.css,sha256=r8LC8JiuXmB-yH9og39rNPoQ_OxxzJMX_78qfvVP1oE,144
307
307
  inspect_ai/_view/www/src/samples/transcript/LoggerEventView.tsx,sha256=2jDipmuFPfGfKJbehfZGgK7WFF_YTvARA_kQ-s35v1g,1327
308
- inspect_ai/_view/www/src/samples/transcript/ModelEventView.module.css,sha256=mjmGM7nzzrQYI0IOg4KivfLCjB3T1u8nrwt-cPutgnA,579
308
+ inspect_ai/_view/www/src/samples/transcript/ModelEventView.module.css,sha256=xH8I4rcQ8kb1iR80RBBRJ25ZC9CF5ekpwNYgOil0uyY,601
309
309
  inspect_ai/_view/www/src/samples/transcript/ModelEventView.tsx,sha256=26hO2XC6L7v7lIJ8lJWmpY1t_TZ4o55h5-_aMaJUoFM,6147
310
310
  inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.module.css,sha256=kB4a3g7RveznFGsPmQajJRuNWRrpDyK2DgztvUMIYZQ,275
311
311
  inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.tsx,sha256=7jhzBpS02v6wy02Sx4-8Ota12uYw4g4aB8fp4LR7fV0,3316
@@ -343,7 +343,7 @@ inspect_ai/_view/www/src/samples/transcript/state/StateEventView.module.css,sha2
343
343
  inspect_ai/_view/www/src/samples/transcript/state/StateEventView.tsx,sha256=r23qjQb-OiGLB3Dahm2XFJZROe5rvoNVarJadzysq2w,9678
344
344
  inspect_ai/_view/www/src/types/asciicinema-player.d.ts,sha256=PgM6swZ9P5pKXcdKfYfmd1dcZQDy105K60NvcQPFqVo,647
345
345
  inspect_ai/_view/www/src/types/jsondiffpatch.d.ts,sha256=QXTAwln2Z1vDiNuoG4b-VWoH0hKMJHSM1L2deXEV6ZQ,188
346
- inspect_ai/_view/www/src/types/log.d.ts,sha256=acFrWx0OTgXfq0NUbAjVQKluO9Zhofwp-8-VraAT3r8,32267
346
+ inspect_ai/_view/www/src/types/log.d.ts,sha256=MRW_kU80QnEsWCVw0ItGI7S9WIOVMDKGeiUJMjUP-4A,32514
347
347
  inspect_ai/_view/www/src/types/prism.d.ts,sha256=g0uL_2XdnxuCVS_XX6iD9PHIF9PWix_vPXHOVz_4vII,342
348
348
  inspect_ai/_view/www/src/usage/ModelTokenTable.tsx,sha256=UM9r2Zg7AUFmgXZlB-jL-McK6QLOSifGILhB8403J2I,623
349
349
  inspect_ai/_view/www/src/usage/ModelUsagePanel.module.css,sha256=LAIn2KaAp5gMb1kKBDtlCmzThXZMZK5hMq7nrfp0dzs,336
@@ -443,28 +443,28 @@ inspect_ai/log/_log.py,sha256=OfaP3gq6JPqNqApxXfSHbmOPm9K2BXSdpSvpkCP3zNg,24383
443
443
  inspect_ai/log/_message.py,sha256=QofM_JZF_x3k_5ta1uQzoN_VnMoUhXFnqWurIn9FXOY,1999
444
444
  inspect_ai/log/_retry.py,sha256=e7a2hjl3Ncl8b8sU7CsDpvK8DV0b1uSRLeokRX1mt34,2109
445
445
  inspect_ai/log/_samples.py,sha256=wPQlV1VR9djWaj37lLrjBprCabdAm4S2vFOsQTcd12U,4910
446
- inspect_ai/log/_transcript.py,sha256=Leo9MgSx8CEIGGfjDV7E47CLJ3rO2n1q51u2upWQwO4,14325
446
+ inspect_ai/log/_transcript.py,sha256=wsXfVlP0zL8YLNz3jc9n6yv8vSlvQ6DboGb6JDxOJPE,14618
447
447
  inspect_ai/log/_recorders/__init__.py,sha256=-ECELTfjeWwDuEIBSXO2oxEtJ6Dn0ZQYUxrEy0klN34,350
448
448
  inspect_ai/log/_recorders/create.py,sha256=WB-fms0dBDHlTtTa_a_r0fFc6UPRvQZKZT7d_Inp-EU,1103
449
449
  inspect_ai/log/_recorders/eval.py,sha256=rFw_-3PAK5QwPOWVSBfalk2y-6P1TYS1FXItmXniOLk,17641
450
450
  inspect_ai/log/_recorders/file.py,sha256=LYn0CxWfpnlb8cpkrWQb5PI9zmJejbedcRmQlV9hzMk,2558
451
- inspect_ai/log/_recorders/json.py,sha256=ZCh6cyIF_aCvH2cxbi2lnuSzVZ1qyUX_faiT8inWSQU,8456
451
+ inspect_ai/log/_recorders/json.py,sha256=sF4cc-_TrUgRxngHwj0p7Rsjy67XTbWSH_SRCEqz9RQ,8782
452
452
  inspect_ai/log/_recorders/recorder.py,sha256=zDDpl2tktPjb6xk5kd4TyEMxkXZiLgXXpPinJLrfF_o,1616
453
453
  inspect_ai/model/__init__.py,sha256=T8o-v2tkZ5YVZjpCrXLxrpZa45TwTZQ54XYesRlVe90,2249
454
454
  inspect_ai/model/_cache.py,sha256=Bl6WS9b1kJRVsGK0h7Fd1-mDAbrlxvNXMPK30P3aMuM,13736
455
- inspect_ai/model/_call_tools.py,sha256=g-sXTD2km9QfRBDaZ81yqrpBljLxM88h753wpCQ4ds4,19321
456
- inspect_ai/model/_chat_message.py,sha256=t4su4TksqZG2dPFRfyAKl2-qgx2tGcGtipHE3OB-6i4,7153
455
+ inspect_ai/model/_call_tools.py,sha256=XvPO-RrbDSIk3A6dCXrqHG2IYAfBart1a-uMKUydAVs,19864
456
+ inspect_ai/model/_chat_message.py,sha256=I2EPWuVFRZVwS9mqA80mZCXm37brsEvnD633cq99wM0,7249
457
457
  inspect_ai/model/_conversation.py,sha256=7KPqnCx5ETNkdhR1g1gsjV8sCrJlrOOPwlBz_Yoc9kg,2463
458
458
  inspect_ai/model/_generate_config.py,sha256=JMX_48p-zv7WW0dGm_PQPyGpyJoa4AuFXBaBXajWWpo,10973
459
459
  inspect_ai/model/_image.py,sha256=kpO2Bn_-c-dK80HuPOPH1eSNmcoc39kofwf4yTTiTFE,477
460
- inspect_ai/model/_model.py,sha256=5Eefi0X5aWaf-aGs7a8qY6aEEaDWJv7G1fhRHD1SUFI,48135
460
+ inspect_ai/model/_model.py,sha256=LaRXqKvM2fl9HGCQAdrOOkNryfYU970LZGsyOxk1o00,48304
461
461
  inspect_ai/model/_model_call.py,sha256=VJ8wnl9Y81JaiClBYM8eyt1jVb3n-yc6Dd88ofRiJDc,2234
462
- inspect_ai/model/_model_output.py,sha256=8BvvBRwdKlqzaS3le5eNJIIiaF0-QOCWtzwAUOVsE4s,7424
463
- inspect_ai/model/_openai.py,sha256=xxaoXw9RlES_ILYxrXxqvbibinXuM2EJtG_uHK-7VYU,16731
462
+ inspect_ai/model/_model_output.py,sha256=1picjX2Y0NSmEZ-vdQi42QAx3QvMcWVRn8pXP2wtmN8,7733
463
+ inspect_ai/model/_openai.py,sha256=VvEUg0lQdXCq0vV3iR7GfqW52WjHXNRA2QDslIjg9RY,16975
464
464
  inspect_ai/model/_reasoning.py,sha256=qmR8WT6t_cb7NIsJOQHPyFZh2eLV0HmYxKo2vtvteQ4,929
465
465
  inspect_ai/model/_registry.py,sha256=Cr2y32EqLnOqLbSWoXHVK4ivTTzCUhJuACxoTyPt8kY,2032
466
466
  inspect_ai/model/_render.py,sha256=rWypNUjgrH4NGp0r-ESAze9gZz7lYNjheEP438vRYZE,922
467
- inspect_ai/model/_providers/anthropic.py,sha256=nVCfyLfObeNO0Qjw0GJ154sRkTZT2UiUxWhC7R18TYU,30896
467
+ inspect_ai/model/_providers/anthropic.py,sha256=SuXXs-VmG4XzSyHin7N1HPAHJoy43jExqhio2OPNV0o,33369
468
468
  inspect_ai/model/_providers/azureai.py,sha256=3phdDrrsKzinphLtGj39bet_jVLcKgtLcWr_uILO0cc,14225
469
469
  inspect_ai/model/_providers/bedrock.py,sha256=mLeMW2JkG4lF0VQGEdku73ZL00EBy-hEvEcyCdjDUDo,24153
470
470
  inspect_ai/model/_providers/cloudflare.py,sha256=0e0HPas21cVC8N9mNJlZnSZyIt6FUB9lTIAqPXJDrtE,4586
@@ -478,12 +478,12 @@ inspect_ai/model/_providers/mistral.py,sha256=pwBaO7VoW-ZsiZfNjF3-m7Zr44OkNasOlI
478
478
  inspect_ai/model/_providers/mockllm.py,sha256=gL9f-f5TOdE4a0GVENr3cOIIp2kv8zVXWPZ608rouGk,2440
479
479
  inspect_ai/model/_providers/none.py,sha256=6qLbZpHSoEZaaxFO7luieFjqig2Ju8Fu00DlRngAry8,935
480
480
  inspect_ai/model/_providers/ollama.py,sha256=mBPSxaEkiH_RnlHKqOyFBlXObQhc2dfjL-rCKrea5u8,675
481
- inspect_ai/model/_providers/openai.py,sha256=n_WjP8AkEDfa8gbbPWMtTk3Bah5hSXz6zam9rCHcYF0,14846
481
+ inspect_ai/model/_providers/openai.py,sha256=9ze3TOLQ5ycRGquJ67bwCPOgfMPYwRZZbN-h2lN4Gys,15058
482
482
  inspect_ai/model/_providers/openai_o1.py,sha256=wURSSI7aCBxbZONQBaEOYPrQleBExL2c2uSIdJXLi1U,12763
483
483
  inspect_ai/model/_providers/openrouter.py,sha256=5G8qS8xA7Gy4IGodEJd04xwjsN-O_as4oeU8DTsKB5s,2932
484
484
  inspect_ai/model/_providers/providers.py,sha256=GI68ptXsLoEkzuLMZseJQ1_jI2f1uqfZwKy9y8IX-Yg,6508
485
485
  inspect_ai/model/_providers/together.py,sha256=Hwg-5jlFR3K61Epp_NnmDR5lX-bHZ2QT77GjM9dQOKY,9461
486
- inspect_ai/model/_providers/vertex.py,sha256=7V8sAEktxRPZxnBrantMYXDHc5EEUCOQRA5yvgLZfkE,17122
486
+ inspect_ai/model/_providers/vertex.py,sha256=3PX3pVvzydA-IczZaEAeqQeiTtimBa3a6t418GAtjhY,17235
487
487
  inspect_ai/model/_providers/vllm.py,sha256=KNEjdu-oeCXH-vhpMeF1Pmnf8-mkLpQ5pbyFJMlaT9c,14172
488
488
  inspect_ai/model/_providers/util/__init__.py,sha256=d4T_qvXihTRd1zmQkNE3xUBlHCX8tOIbRK19EwU0fTs,717
489
489
  inspect_ai/model/_providers/util/chatapi.py,sha256=-HsY7kOOEab1RQEWEnTXJEYye4EyG6HuJLdWn8tBOzE,3239
@@ -544,23 +544,26 @@ inspect_ai/solver/_human_agent/commands/note.py,sha256=yOHXPkm3yFrXzf-CK-IS6B3M0
544
544
  inspect_ai/solver/_human_agent/commands/score.py,sha256=Pkcd3g-8BAYlxQnvJsMFKPZCnqWsFjUYAM7T4Dl5rtM,2207
545
545
  inspect_ai/solver/_human_agent/commands/status.py,sha256=uUO5M4skWDp29OS8sqVKAqZw0OcM3MSesBYQNbRypJ0,1934
546
546
  inspect_ai/solver/_human_agent/commands/submit.py,sha256=D2p1M2ApvAcaVZhbP3fFofG9ZsPVvmxivSLIF5xQxtA,6524
547
- inspect_ai/tool/__init__.py,sha256=LIUjgrpzeqvN0cYlklb5mJYUhtCJXm_a0RjMCRfNdok,2289
547
+ inspect_ai/tool/__init__.py,sha256=krnJakKZ2A8hC_Lz1SyMKx5nEeLUGwgZL-vmBqUTVZM,2420
548
548
  inspect_ai/tool/_tool.py,sha256=e5a2fHtCg5_AObaDfJliV6s-bJZNfa6HEbj587MjDuM,6285
549
- inspect_ai/tool/_tool_call.py,sha256=2HfvuNFKNmmQ9utd5IvauiGnFwj__RNQqWEWIAwpjSM,2178
549
+ inspect_ai/tool/_tool_call.py,sha256=yCkcQBl5iSdESX2Mv6z54IOFytmo6spzIk6UWJo3s7g,2294
550
550
  inspect_ai/tool/_tool_choice.py,sha256=L8QNmcnSnilzKg2HU3G65W5aYaSngO09z4FQ0fQlATM,496
551
551
  inspect_ai/tool/_tool_def.py,sha256=wS6yX2_64-O6L4k1kMihUp52-OnGypMn11L3oXMNeQc,8191
552
552
  inspect_ai/tool/_tool_description.py,sha256=SZTQzehReNNKwQ0iUL6v4pPfEptgf3UOP4J888JV18M,524
553
553
  inspect_ai/tool/_tool_info.py,sha256=ivRrJVo1_iUkdSF0cD0ITmZyMnRhI0ouKUFRtKKTZZY,4905
554
554
  inspect_ai/tool/_tool_params.py,sha256=xcVun4guba-st3onDtDar-wOeceAXiWwS5uOkigsFfo,745
555
+ inspect_ai/tool/_tool_support_helpers.py,sha256=d8Ab27pGfiJXTWz91HNdtcYpDC-j9jzmAWW1aqgo0UY,6965
555
556
  inspect_ai/tool/_tool_transcript.py,sha256=rMibJoBN5Nn41RwInqk45h9RDPxZGu81saDf4SkpqTs,904
556
557
  inspect_ai/tool/_tool_with.py,sha256=CjFDYRSWOHRhfR14z5Sv6ys7V49GwDoWVcMQjY2K3xQ,2628
557
558
  inspect_ai/tool/beta.py,sha256=KQYntN2MLiIHp4Gf4GXv3QO3aYHBBaP-npkluTT-aDM,153
558
559
  inspect_ai/tool/_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
560
+ inspect_ai/tool/_tools/_bash_session.py,sha256=_5Y8e5qGX_WTtLsg4bCmj0WH_xNY2locCz4rQCOlvM8,3480
559
561
  inspect_ai/tool/_tools/_execute.py,sha256=SZdtVxxGoQNErWFtYaJgfTtLsZbBP28lnY112mt-VWQ,3435
560
- inspect_ai/tool/_tools/_web_search.py,sha256=RSJHDdy9zk7t44wk5TFON6M5L-uEj8QlTjYieHlg_wM,8003
562
+ inspect_ai/tool/_tools/_text_editor.py,sha256=9Z6vB4_sgwQw2OH22reA6FSw6LgFslbQ5X7ufvaVl5U,3939
563
+ inspect_ai/tool/_tools/_web_search.py,sha256=GYkGasfmZWG3TY1XqBfa6yJnG7ysPtdGCVmPUJHQRSM,8012
561
564
  inspect_ai/tool/_tools/_computer/__init__.py,sha256=fq4BSM4aDhtEtE4279xm47NiO6vyiZHhhw7cq-azFzk,56
562
565
  inspect_ai/tool/_tools/_computer/_common.py,sha256=nX8Cf9jagsnjwZb9f9eWADUjzETf6PSNRcFrzp0_KLg,5949
563
- inspect_ai/tool/_tools/_computer/_computer.py,sha256=blWBp9nj2yvsD1-M-J1u6TdvsKBmnpPox1v0MPaQ-a0,9131
566
+ inspect_ai/tool/_tools/_computer/_computer.py,sha256=kJxek02TfOqE7oIbXeN48d17jXLW-Y-Ql37OQVKO7ts,9140
564
567
  inspect_ai/tool/_tools/_computer/test_args.py,sha256=tgySEFbsI-jPK9LA75ickN3qI_bLev81XGaprgoKL5k,4234
565
568
  inspect_ai/tool/_tools/_computer/_resources/Dockerfile,sha256=DA1ZzOqO3vEySSfoDV9bCBl_iVmpzhiNz_s1Oyd1gO0,3568
566
569
  inspect_ai/tool/_tools/_computer/_resources/README.md,sha256=5JDNaGJ-Ebq6Io57ANFIqgjPoh11aGDSrrgrhyfiqxU,1657
@@ -590,43 +593,14 @@ inspect_ai/tool/_tools/_computer/_resources/tool/pyproject.toml,sha256=MCZ84Su8y
590
593
  inspect_ai/tool/_tools/_computer/_resources/tool/requirements.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
591
594
  inspect_ai/tool/_tools/_computer/_resources/tool/.vscode/settings.json,sha256=cfeAnDRwpgensIPY5LeICNh5P-o5Hw951sdmHtqI_LU,151
592
595
  inspect_ai/tool/_tools/_web_browser/__init__.py,sha256=dnnzy96pcvMvxD1OGg4hG-doL7Ru7WH0i25Sb9VIXwE,65
593
- inspect_ai/tool/_tools/_web_browser/_web_browser.py,sha256=d7oHOrhaWXnwAqFgOf-n1SVbJ2EQuSYn5CFGuZtfAz4,16360
594
- inspect_ai/tool/_tools/_web_browser/_resources/.pylintrc,sha256=btgbudy--y-aMrbvpfH9OluYm9MLaJgwlpdQzZVhqco,187
595
- inspect_ai/tool/_tools/_web_browser/_resources/Dockerfile,sha256=kSYqOWbA-oEKsv153zgrQvZBKQZF1Mz0ryN7xWgs6g0,455
596
- inspect_ai/tool/_tools/_web_browser/_resources/README.md,sha256=7rt1ZozFtBUddUVwZlrK8LmhTfgCFiXImqlJWwfP_Fs,2598
597
- inspect_ai/tool/_tools/_web_browser/_resources/accessibility_tree.py,sha256=JJugKGPmz_i5bjktlhYzXIY4AQiY3IVAvyyLlTXGYp0,2344
598
- inspect_ai/tool/_tools/_web_browser/_resources/accessibility_tree_node.py,sha256=DR2LENFPgEPbqnpH9r5YwpLNcHCZ-f9rnSOznTEJtZ0,11190
599
- inspect_ai/tool/_tools/_web_browser/_resources/constants.py,sha256=_yJKOjuVoJnh3Gs02OhkYHJ6VD4VkgE5T494SIvRnNM,55
600
- inspect_ai/tool/_tools/_web_browser/_resources/mock_environment.py,sha256=6OE3Xv0JGSXRHQQ6cvw2Ay5F9E6AeHw-gpzD6nenLKE,1482
601
- inspect_ai/tool/_tools/_web_browser/_resources/playwright_browser.py,sha256=zN8xh4erhuPMvedoRgy1KYoEkpHCUNZCvEfy9XIXYpA,1812
602
- inspect_ai/tool/_tools/_web_browser/_resources/playwright_crawler.py,sha256=6ylrbk9Q_XmhIgOzVZUf9PePXdzrjfhCoz19ppBAUPM,1614
603
- inspect_ai/tool/_tools/_web_browser/_resources/playwright_page_crawler.py,sha256=SEgRAKLnxlxL6keT8tS3mFdXHdLUVnBTz8mOz_AkaIA,10828
604
- inspect_ai/tool/_tools/_web_browser/_resources/pyproject.toml,sha256=MCZ84Su8yT5GniEM5Iq1onvKHfdND4jscn6jqPt9SMA,1441
605
- inspect_ai/tool/_tools/_web_browser/_resources/rectangle.py,sha256=A34z8-hHIVnFeCHNZDo1KT1iCu2kqf3MjpDjRYwvdD0,2154
606
- inspect_ai/tool/_tools/_web_browser/_resources/rpc_client_helpers.py,sha256=wKMAmirRuUlEAXLxGPWYeJpPiM59MoQYQMVdh7K4IN4,4434
607
- inspect_ai/tool/_tools/_web_browser/_resources/scale_factor.py,sha256=KtvWYXJWDts20JQo2w_M3bYKJbpJL37ifs-toxG37tY,2885
608
- inspect_ai/tool/_tools/_web_browser/_resources/test_accessibility_tree_node.py,sha256=QvLuihyDAjawsuePFp08EmUxD1j7upryWbS-KkNyEmg,6740
609
- inspect_ai/tool/_tools/_web_browser/_resources/test_playwright_crawler.py,sha256=lIeThHunClX7RWwmZKODjpORH_bWpAaiYbSLmbVeoXs,3519
610
- inspect_ai/tool/_tools/_web_browser/_resources/test_rectangle.py,sha256=O-lFW5Fw4KMm606XexmYP9PTnPo_AYi2qDNdPyFDNVM,390
611
- inspect_ai/tool/_tools/_web_browser/_resources/test_web_client.py,sha256=3sF0OhRbMpGMKsHPAa1nduWd9s76NejEZYQcpH2nq8s,1501
612
- inspect_ai/tool/_tools/_web_browser/_resources/web_browser_rpc_types.py,sha256=pMa2ZhOasdKLWahRVoB7_wZzKZKFgQu3ORRi_pdEkgE,629
613
- inspect_ai/tool/_tools/_web_browser/_resources/web_client.py,sha256=pxYLDN9bx5dtCSJL3hMJYNYiabgfBqk8U02SWIbWJfY,7032
614
- inspect_ai/tool/_tools/_web_browser/_resources/web_client_new_session.py,sha256=blePeJ2j9tM__aO8Ky3QpGn_v_hvfiejHeHJvr6ksDk,965
615
- inspect_ai/tool/_tools/_web_browser/_resources/web_server.py,sha256=0Pg7KeKSMO4SBfj_bXjieQ0_kpxEmRQKZHXWu-xe0gk,6197
616
- inspect_ai/tool/_tools/_web_browser/_resources/.vscode/launch.json,sha256=k8qHz9iUTER8m6trpTzDGXq_xZ7fYevTo4HTKoVkTno,572
617
- inspect_ai/tool/_tools/_web_browser/_resources/.vscode/settings.json,sha256=A1lJR8kYSwY9K_DQL0Fv1FfFmM3FSoaBs0P0zR1m-F0,427
618
- inspect_ai/tool/_tools/_web_browser/_resources/cdp/__init__.py,sha256=DsxX9x-4d_RncodQWCCAUBPV9V4N5iWA89wBtkXXi2g,136
619
- inspect_ai/tool/_tools/_web_browser/_resources/cdp/a11y.py,sha256=q2rOmSsJ2SlWDF7CS26FFfeM2VCvWX5rVZCFwtsALy8,8009
620
- inspect_ai/tool/_tools/_web_browser/_resources/cdp/dom.py,sha256=DcDI4I1RUyKG7EpFJEVY6Vp_Ak24oHJCjqseXio4NP0,212
621
- inspect_ai/tool/_tools/_web_browser/_resources/cdp/dom_snapshot.py,sha256=NjJiIKnZ-0iQI1xhBvl_uh3Gcsd9kmpWDOGLafOXsaA,12736
622
- inspect_ai/tool/_tools/_web_browser/_resources/cdp/page.py,sha256=btPwKIJLFaPp-BCZVEOdE34NkmrJWPrbQiO56zEV-bc,3309
623
- inspect_ai/tool/_tools/_web_browser/_resources/images/usage_diagram.svg,sha256=ekYMK4_9XwrhTuL1Grsd2E8_OI1K4mjM-pqYJXk0cX8,40100
596
+ inspect_ai/tool/_tools/_web_browser/_back_compat.py,sha256=oz5xt0_O1LpIXln1LIpypqealT0H1E4wBb_FIh8o6nA,5531
597
+ inspect_ai/tool/_tools/_web_browser/_web_browser.py,sha256=TkVWtCq03GgG78pav91mPZydamxA6pQ39OxPOBX607s,14013
624
598
  inspect_ai/util/__init__.py,sha256=GBt2_QMy1iumUYa5bRt9LzWsa0Uw5Y8Fa7WSc3Elk0c,1534
625
599
  inspect_ai/util/_concurrency.py,sha256=slo-W5X3XGwjbeXjpVxIYqHQsjoL0MHxcP2SR1epAX4,2408
626
600
  inspect_ai/util/_console.py,sha256=V1XkIoKcNZo0SgRUOv15zJAWz6-zV6267hC4Oldj8oY,1237
627
601
  inspect_ai/util/_conversation.py,sha256=KzqvKfj1tB14cgARZjYyIVG2EpuE-EZKqLGAPIXv1Xs,784
628
602
  inspect_ai/util/_display.py,sha256=cjSfvs_HXHUd3uYqHY4sTPpOcvrWdlGZm2YskfW49lM,2214
629
- inspect_ai/util/_json.py,sha256=uglJI073t72rEs2KsyiVkUrqbk4B3OrEYzi841QqiI8,5202
603
+ inspect_ai/util/_json.py,sha256=aNlO-Kw1NmmaQ-TG5_p_Qb9lL5wOTBvLtoyrsZHU8ic,6313
630
604
  inspect_ai/util/_panel.py,sha256=MdZxOt0F01ddn_NsRfwn0es6UjQasK1_EKIQ6jtQyG8,3124
631
605
  inspect_ai/util/_resource.py,sha256=X280aW_7VCkVTGk812tuU5qnZlGM5Qt1-kANr-DaGOs,3389
632
606
  inspect_ai/util/_store.py,sha256=QemJe2M-RK6zSFNcd07_92XFjvNtWKgHzBr5eT3KF1I,3786
@@ -635,7 +609,7 @@ inspect_ai/util/_subprocess.py,sha256=uW_6Syl1DleNpHDU3UXaUulcD-QFh3EDIt2Xla80xB
635
609
  inspect_ai/util/_subtask.py,sha256=zog37z3sa7yNlIDkt8TvgMdNYatMhtzl-eX1P1N1rW0,5138
636
610
  inspect_ai/util/_throttle.py,sha256=JczSG_y0v60m4gQCt28uw_WPjJTbHuq8gWcxY3-vFsc,855
637
611
  inspect_ai/util/_sandbox/__init__.py,sha256=08yrm-GWL-o7K-NltssDc9zATv2DY7fqAW8p7v6C3Cs,874
638
- inspect_ai/util/_sandbox/context.py,sha256=S-zooTits1TN0t-ggkZnXk67hWGPfPGLgU0_WvU7P7A,8368
612
+ inspect_ai/util/_sandbox/context.py,sha256=PHPyGX48BV-tO225L8SVPbEoX8o1Olyj7kJCZxvx5bo,8942
639
613
  inspect_ai/util/_sandbox/environment.py,sha256=BGPzWM6FbMv7mTQF9NT84b4Y_Tc_zAIyRcG1VFEvQ7w,13333
640
614
  inspect_ai/util/_sandbox/events.py,sha256=ctSamOMR4idv3bs6lAXxaB4md4yuiayEPqzWCqk67kE,5346
641
615
  inspect_ai/util/_sandbox/limits.py,sha256=K-GjKfSugOq8KP0wW_oF6qFrXsOnMV0C88QUWkjPJ9o,2164
@@ -645,15 +619,15 @@ inspect_ai/util/_sandbox/self_check.py,sha256=iYdAzb_ufMgA0yDQQJ3v5RcKCFTkayp-nq
645
619
  inspect_ai/util/_sandbox/service.py,sha256=HegTC_JyXN9q7yNY2lO4YGFkDlzjZwztajvj8ullgfY,11583
646
620
  inspect_ai/util/_sandbox/docker/cleanup.py,sha256=G8UgQr1_YRK1NGNeXzTg6res1huPfJF9_uH-LFRg57w,5148
647
621
  inspect_ai/util/_sandbox/docker/compose.py,sha256=x5sr-feqGjP96KvsYlfhYBF6eOnv6otIu7zxa2oZv3I,11723
648
- inspect_ai/util/_sandbox/docker/config.py,sha256=I2sxkN2mTS3kXoAGtJ2w7yuhMoacECgkdxiXftlAvKA,2918
622
+ inspect_ai/util/_sandbox/docker/config.py,sha256=5-YsouGJGxNXw8xNEZi1o4H0EaqaTLKoQhwYT2Iczb4,2925
649
623
  inspect_ai/util/_sandbox/docker/docker.py,sha256=oT-KoTnjtb7r6T5HORyN8qbiBil1Kn-sBYLcvzD4gPg,17802
650
- inspect_ai/util/_sandbox/docker/internal.py,sha256=fATyk2pdtjSl-D0VPT4dmkXV-gOc5HrPH0EQDW4IAJY,1446
624
+ inspect_ai/util/_sandbox/docker/internal.py,sha256=c8X8TLrBPOvsfnq5TkMlb_bzTALycfzFdDLmL4zdoYc,1479
651
625
  inspect_ai/util/_sandbox/docker/prereqs.py,sha256=0j6_OauBBnVlpBleADcZavIAAQZy4WewVjbRn9c0stg,3355
652
626
  inspect_ai/util/_sandbox/docker/service.py,sha256=hhHIWH1VDFLwehdGd19aUBD_VKfDO3GCPxpw1HSwVQk,2437
653
627
  inspect_ai/util/_sandbox/docker/util.py,sha256=EeInihCNXgUWxaqZ4dNOJd719kXL2_jr63QCoXn68vA,3154
654
- inspect_ai-0.3.75.dist-info/LICENSE,sha256=xZPCr8gTiFIerrA_DRpLAbw-UUftnLFsHxKeW-NTtq8,1081
655
- inspect_ai-0.3.75.dist-info/METADATA,sha256=rJgji6NApm9K5S0kMW8kB12qdot61-k7CwB-zTiHIvo,4895
656
- inspect_ai-0.3.75.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
657
- inspect_ai-0.3.75.dist-info/entry_points.txt,sha256=WGGLmzTzDWLzYfiyovSY6oEKuf-gqzSDNOb5V-hk3fM,54
658
- inspect_ai-0.3.75.dist-info/top_level.txt,sha256=Tp3za30CHXJEKLk8xLe9qGsW4pBzJpEIOMHOHNCXiVo,11
659
- inspect_ai-0.3.75.dist-info/RECORD,,
628
+ inspect_ai-0.3.76.dist-info/licenses/LICENSE,sha256=xZPCr8gTiFIerrA_DRpLAbw-UUftnLFsHxKeW-NTtq8,1081
629
+ inspect_ai-0.3.76.dist-info/METADATA,sha256=qQk_DES_FDFGm7FFo85Tz9LI3Vrkj9MnUb-EHIi-ym0,4997
630
+ inspect_ai-0.3.76.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
631
+ inspect_ai-0.3.76.dist-info/entry_points.txt,sha256=WGGLmzTzDWLzYfiyovSY6oEKuf-gqzSDNOb5V-hk3fM,54
632
+ inspect_ai-0.3.76.dist-info/top_level.txt,sha256=Tp3za30CHXJEKLk8xLe9qGsW4pBzJpEIOMHOHNCXiVo,11
633
+ inspect_ai-0.3.76.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.1.0)
2
+ Generator: setuptools (77.0.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,8 +0,0 @@
1
- [MASTER]
2
- ; R - Refactorings
3
- ; C - Convention
4
- ; W - Warning
5
- ; E - Error
6
- enable=C,R,W,E
7
- disable=R0903,C0114,C0115,C0116,C0301,C0411,C1804,C1805,W0120,W0511,E0401,E1101,E0611,E1128
8
- score=no
@@ -1,24 +0,0 @@
1
- {
2
- "version": "0.2.0",
3
- "configurations": [
4
- {
5
- "type": "debugpy",
6
- "request": "launch",
7
- "name": "Debug Web Server",
8
- "program": "${workspaceFolder}/web_server.py"
9
- },
10
- {
11
- "type": "debugpy",
12
- "request": "launch",
13
- "name": "Debug Web Client interactive mode",
14
- "program": "${workspaceFolder}/web_client.py"
15
- },
16
- {
17
- "type": "debugpy",
18
- "request": "launch",
19
- "name": "Debug Web Client w/arguments",
20
- "program": "${workspaceFolder}/web_client.py",
21
- "args": ["${command:pickArgs}"]
22
- }
23
- ]
24
- }
@@ -1,25 +0,0 @@
1
- {
2
- "cSpell.words": [
3
- "activedescendant",
4
- "describedby",
5
- "domcontentloaded",
6
- "figcaption",
7
- "flowto",
8
- "framenavigated",
9
- "headful",
10
- "idref",
11
- "jsonrpcclient",
12
- "jsonrpcserver",
13
- "keepalive",
14
- "keyshortcuts",
15
- "labelfor",
16
- "labelledby",
17
- "labelwrapped",
18
- "multiselectable",
19
- "Rects",
20
- "roledescription",
21
- "rubyannotation",
22
- "tablecaption",
23
- "valuetext"
24
- ]
25
- }
@@ -1,22 +0,0 @@
1
- # Base docker build file.
2
-
3
- FROM python:3.12-bookworm
4
-
5
- WORKDIR /app/web_browser
6
-
7
- RUN apt-get update
8
-
9
- RUN pip install --upgrade pip
10
-
11
- RUN pip install playwright jsonrpcclient jsonrpcserver httpx aiohttp pillow pydantic tenacity
12
-
13
- # Install playwright
14
- RUN playwright install
15
- RUN playwright install-deps
16
-
17
- # Copy Python files alongside the Dockerfile
18
- COPY . .
19
-
20
- # Run the server
21
- CMD ["python3", "/app/web_browser/web_server.py"]
22
- # CMD ["tail", "-f", "/dev/null"]
@@ -1,63 +0,0 @@
1
- ## Headless Browser Tool
2
-
3
- This directory contains an implementation for the Headless Browser Tool which can be used to test web browsing agents.
4
-
5
- ### Usage
6
-
7
- #### 1. Start the Docker container
8
-
9
- A web server with the headless browser will be launched automatically on starting of the docker container and will be ready to receive client requests.
10
-
11
- #### 2. Send the command
12
-
13
- Use the following format:
14
-
15
- ```
16
- # Inside the Docker container
17
- $ python web_client.py [COMMAND] [args]
18
- ```
19
-
20
- ###### Commands
21
-
22
- The following commands are available at the moment:
23
-
24
- * **web_go \<URL\>** - goes to the specified url.
25
- * **web_click \<ELEMENT_ID\>** - clicks on a given element.
26
- * **web_scroll \<up/down\>** - scrolls up or down one page.
27
- * **web_forward** - navigates forward a page.
28
- * **web_back** - navigates back a page.
29
- * **web_refresh** - reloads current page (F5).
30
- * **web_type \<ELEMENT_ID\> \<TEXT\>** - types the specified text into the input with the specified id.
31
- * **web_type_submit \<ELEMENT_ID\> \<TEXT\>** - types the specified text into the input with the specified id and presses ENTER to submit the form.
32
-
33
- #### 3. Read the resulting observations
34
-
35
- The result will be printed out in _stdout_ in the following format:
36
-
37
- ```
38
- # Inside the Docker container
39
- error: <an ERROR message if one occurred>
40
- info: <general info about the container>
41
- web_url: <the URL of the page the browser is currently at>
42
- web_at: <accessibility tree of the visible elements of the page>
43
- ```
44
-
45
- ### Design
46
-
47
- The following diagram describes the design and the intended usage of the tool:
48
-
49
- ![diagram](images/usage_diagram.svg)
50
-
51
- The tool consists of the following components:
52
-
53
- - [WebServer](web_server.py) - a server which launches a stateful session with the headless chromium browser and interacts with it through the [Playwright API](https://playwright.dev/python/docs/intro) upon receiving client commands. The server components are:
54
-
55
- - _dm_env_servicer.py_ - an implementation for the gRPC Service based on [dm_env_rpc protocol](https://github.com/google-deepmind/dm_env_rpc).
56
- - _web_environment.py_ - an environment which gets instantiated by the servicer and which launches the browser, stores its state and maps client commands to Playwright API.
57
- - _playwright_crawler.py_ - a wrapper over the sync Playwright API.
58
-
59
- - [WebClient](web_client.py) - a simple stateless client to interact with the server. When launched, the client:
60
- 1. creates a connection with the server;
61
- 2. sends user command to the server;
62
- 3. receives the response in the form of observations and prints them to stdout;
63
- 4. Destroys the connection.