inspect-ai 0.3.75__py3-none-any.whl → 0.3.77__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 (87) hide show
  1. inspect_ai/_cli/eval.py +16 -0
  2. inspect_ai/_display/core/results.py +6 -1
  3. inspect_ai/_eval/eval.py +8 -1
  4. inspect_ai/_eval/evalset.py +6 -2
  5. inspect_ai/_eval/registry.py +3 -5
  6. inspect_ai/_eval/run.py +7 -2
  7. inspect_ai/_eval/task/run.py +4 -0
  8. inspect_ai/_util/content.py +3 -0
  9. inspect_ai/_util/logger.py +3 -0
  10. inspect_ai/_view/www/dist/assets/index.css +28 -16
  11. inspect_ai/_view/www/dist/assets/index.js +4811 -4609
  12. inspect_ai/_view/www/log-schema.json +79 -9
  13. inspect_ai/_view/www/src/samples/chat/tools/ToolCallView.tsx +22 -4
  14. inspect_ai/_view/www/src/samples/chat/tools/ToolInput.tsx +1 -1
  15. inspect_ai/_view/www/src/samples/descriptor/score/CategoricalScoreDescriptor.tsx +1 -1
  16. inspect_ai/_view/www/src/samples/descriptor/score/NumericScoreDescriptor.tsx +2 -2
  17. inspect_ai/_view/www/src/samples/sample-tools/SortFilter.tsx +1 -1
  18. inspect_ai/_view/www/src/samples/transcript/ModelEventView.module.css +2 -2
  19. inspect_ai/_view/www/src/types/log.d.ts +11 -5
  20. inspect_ai/log/_recorders/json.py +8 -0
  21. inspect_ai/log/_transcript.py +13 -4
  22. inspect_ai/model/_call_tools.py +13 -4
  23. inspect_ai/model/_chat_message.py +3 -0
  24. inspect_ai/model/_model.py +5 -1
  25. inspect_ai/model/_model_output.py +6 -1
  26. inspect_ai/model/_openai.py +78 -10
  27. inspect_ai/model/_openai_responses.py +277 -0
  28. inspect_ai/model/_providers/anthropic.py +134 -75
  29. inspect_ai/model/_providers/azureai.py +2 -2
  30. inspect_ai/model/_providers/mistral.py +29 -13
  31. inspect_ai/model/_providers/openai.py +64 -57
  32. inspect_ai/model/_providers/openai_responses.py +177 -0
  33. inspect_ai/model/_providers/openrouter.py +52 -2
  34. inspect_ai/model/_providers/providers.py +1 -1
  35. inspect_ai/model/_providers/vertex.py +5 -2
  36. inspect_ai/tool/__init__.py +6 -0
  37. inspect_ai/tool/_tool.py +23 -3
  38. inspect_ai/tool/_tool_call.py +5 -2
  39. inspect_ai/tool/_tool_support_helpers.py +200 -0
  40. inspect_ai/tool/_tools/_bash_session.py +119 -0
  41. inspect_ai/tool/_tools/_computer/_computer.py +1 -1
  42. inspect_ai/tool/_tools/_text_editor.py +121 -0
  43. inspect_ai/tool/_tools/_think.py +48 -0
  44. inspect_ai/tool/_tools/_web_browser/_back_compat.py +150 -0
  45. inspect_ai/tool/_tools/_web_browser/_web_browser.py +75 -130
  46. inspect_ai/tool/_tools/_web_search.py +1 -1
  47. inspect_ai/util/_json.py +28 -0
  48. inspect_ai/util/_sandbox/context.py +16 -7
  49. inspect_ai/util/_sandbox/docker/config.py +1 -1
  50. inspect_ai/util/_sandbox/docker/internal.py +3 -3
  51. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.77.dist-info}/METADATA +5 -2
  52. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.77.dist-info}/RECORD +56 -80
  53. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.77.dist-info}/WHEEL +1 -1
  54. inspect_ai/model/_image.py +0 -15
  55. inspect_ai/tool/_tools/_web_browser/_resources/.pylintrc +0 -8
  56. inspect_ai/tool/_tools/_web_browser/_resources/.vscode/launch.json +0 -24
  57. inspect_ai/tool/_tools/_web_browser/_resources/.vscode/settings.json +0 -25
  58. inspect_ai/tool/_tools/_web_browser/_resources/Dockerfile +0 -22
  59. inspect_ai/tool/_tools/_web_browser/_resources/README.md +0 -63
  60. inspect_ai/tool/_tools/_web_browser/_resources/accessibility_tree.py +0 -71
  61. inspect_ai/tool/_tools/_web_browser/_resources/accessibility_tree_node.py +0 -323
  62. inspect_ai/tool/_tools/_web_browser/_resources/cdp/__init__.py +0 -5
  63. inspect_ai/tool/_tools/_web_browser/_resources/cdp/a11y.py +0 -279
  64. inspect_ai/tool/_tools/_web_browser/_resources/cdp/dom.py +0 -9
  65. inspect_ai/tool/_tools/_web_browser/_resources/cdp/dom_snapshot.py +0 -293
  66. inspect_ai/tool/_tools/_web_browser/_resources/cdp/page.py +0 -94
  67. inspect_ai/tool/_tools/_web_browser/_resources/constants.py +0 -2
  68. inspect_ai/tool/_tools/_web_browser/_resources/images/usage_diagram.svg +0 -2
  69. inspect_ai/tool/_tools/_web_browser/_resources/mock_environment.py +0 -45
  70. inspect_ai/tool/_tools/_web_browser/_resources/playwright_browser.py +0 -50
  71. inspect_ai/tool/_tools/_web_browser/_resources/playwright_crawler.py +0 -48
  72. inspect_ai/tool/_tools/_web_browser/_resources/playwright_page_crawler.py +0 -280
  73. inspect_ai/tool/_tools/_web_browser/_resources/pyproject.toml +0 -65
  74. inspect_ai/tool/_tools/_web_browser/_resources/rectangle.py +0 -64
  75. inspect_ai/tool/_tools/_web_browser/_resources/rpc_client_helpers.py +0 -146
  76. inspect_ai/tool/_tools/_web_browser/_resources/scale_factor.py +0 -64
  77. inspect_ai/tool/_tools/_web_browser/_resources/test_accessibility_tree_node.py +0 -180
  78. inspect_ai/tool/_tools/_web_browser/_resources/test_playwright_crawler.py +0 -99
  79. inspect_ai/tool/_tools/_web_browser/_resources/test_rectangle.py +0 -15
  80. inspect_ai/tool/_tools/_web_browser/_resources/test_web_client.py +0 -44
  81. inspect_ai/tool/_tools/_web_browser/_resources/web_browser_rpc_types.py +0 -39
  82. inspect_ai/tool/_tools/_web_browser/_resources/web_client.py +0 -214
  83. inspect_ai/tool/_tools/_web_browser/_resources/web_client_new_session.py +0 -35
  84. inspect_ai/tool/_tools/_web_browser/_resources/web_server.py +0 -192
  85. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.77.dist-info}/entry_points.txt +0 -0
  86. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.77.dist-info/licenses}/LICENSE +0 -0
  87. {inspect_ai-0.3.75.dist-info → inspect_ai-0.3.77.dist-info}/top_level.txt +0 -0
@@ -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.77
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
 
@@ -3,7 +3,7 @@ inspect_ai/__main__.py,sha256=oWX4YwDZDg3GS3-IG0yPGoSEOfSzWihELg7QmrUlxjM,67
3
3
  inspect_ai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  inspect_ai/_cli/cache.py,sha256=RVGuBYwwk3c45JfyfcSFJ419etSsv3-Z7AyfQE-Hul0,3912
5
5
  inspect_ai/_cli/common.py,sha256=v4ZRvj4fJSbCq61IbZukb-iR_ZGawrmYH4n8JP_piVg,3676
6
- inspect_ai/_cli/eval.py,sha256=Jv506NwbcgsU8D-JbeNFsvYSZc779zq1ljJq4sB-9BA,34732
6
+ inspect_ai/_cli/eval.py,sha256=76igFkS-c3uX8pPUcHWwSFlyF4ji_STZh6Ses8XHvlo,35233
7
7
  inspect_ai/_cli/info.py,sha256=QMxaTG9TmzW95EiLrOgkzubvavoR-VHxo3eV7ppmrzI,1789
8
8
  inspect_ai/_cli/list.py,sha256=M8mazI8Zuq8Hp99YWKnxQd9UWx1Qi87zfXRzZYAAakk,2459
9
9
  inspect_ai/_cli/log.py,sha256=O-w7GqsE7tLojPnEtpWXPSh0Vu2Hbrbxjneyc1BFfpk,5817
@@ -21,7 +21,7 @@ inspect_ai/_display/core/footer.py,sha256=_EI6yhv0TErl2Xku-mJBBSJXjiFnUJyvAp_TJR
21
21
  inspect_ai/_display/core/group.py,sha256=z8CIwQ-8Mm9adQ8JDuMjw94ih9GfymU5s-1qnbKoEPs,2871
22
22
  inspect_ai/_display/core/panel.py,sha256=gyGYnsqHurUkUC51MyVuh3oGAtUEaFtyRwewOB6pDts,3828
23
23
  inspect_ai/_display/core/progress.py,sha256=2dIRbpJGUx-Wz89ZABoACBGvJEGWJ3SDrFsuCrrpL7w,4198
24
- inspect_ai/_display/core/results.py,sha256=aFLmG1Ij0fxYk2848QgQlesfMeRdHVEg_W9esmeL_S0,7355
24
+ inspect_ai/_display/core/results.py,sha256=zWzHZsZAdkcBTB0ZFRPvkFFjiHP9ekkRcKLJl8qh4Uw,7548
25
25
  inspect_ai/_display/core/rich.py,sha256=GPzc-0PWZVOPWxnjfQmNSK66uZXc3x8joz4ethgv_4M,2729
26
26
  inspect_ai/_display/core/textual.py,sha256=kzMTt8ijrodwhDB5V50pP2IBhnUCusVbP86TytU_rA8,870
27
27
  inspect_ai/_display/plain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -45,12 +45,12 @@ inspect_ai/_display/textual/widgets/toggle.py,sha256=ToYs-S4n90yuxWcAW2OTg6AbRf0
45
45
  inspect_ai/_display/textual/widgets/transcript.py,sha256=zaxlDixT6Fie0acAWBM9Hltnk3Qf7G2awHGhK3vC4Nk,11752
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
- inspect_ai/_eval/eval.py,sha256=lmDIfrfx9hmlIOSYEUkH6QzpX1dDV6JUgEB_fo4GANg,37824
49
- inspect_ai/_eval/evalset.py,sha256=r4I3c_sAwKKfa_tbNpQ1H_K_xBu1LBNYXum7mvjxgKg,23472
48
+ inspect_ai/_eval/eval.py,sha256=yo5SFToYovoTxt7mvvuNEl_9b-ML125xHF8LvdIkgBg,38138
49
+ inspect_ai/_eval/evalset.py,sha256=HGrz0LkTMsBbYDPZEMVnZCmFi_pYegZtSoqRVYbRDiE,23682
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=9TtOp1vc18KclxstjvWhEL5VtcLBL3SRbRwsoRXaah8,19179
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
@@ -73,7 +73,7 @@ inspect_ai/_util/ansi.py,sha256=fMxOAn72Nl5NG_kdlY408nC62bKhsW29L__A5FwwMJQ,983
73
73
  inspect_ai/_util/appdirs.py,sha256=lhURbDS9xT2YBzWOe0jjxsdK4ZdiVAv_WwXQC83V_jw,563
74
74
  inspect_ai/_util/config.py,sha256=nuWVZbShE8IPnotDfRJx0uBZJxwbV36M0qKVYsQDEEI,848
75
75
  inspect_ai/_util/constants.py,sha256=ZkpYBs6qnulFNBRhEBVUgQhnNw_phpuCdViA6FQhe3c,1031
76
- inspect_ai/_util/content.py,sha256=RU3RIMIBWNumMI-bSWtdco5-oSUUmIfHrGS0EmNKFkY,2128
76
+ inspect_ai/_util/content.py,sha256=mYnN1m-VZ__leOyX8czbi1JRKukYCCxlQZgPwCk0aXE,2214
77
77
  inspect_ai/_util/datetime.py,sha256=WeQKSgT8VnmmJcHZbS-lWtVSDTPbQ4vO_V835wdTU7Y,270
78
78
  inspect_ai/_util/decorator.py,sha256=AEyOt-4VYMwXkEvMVyxMiB6xg_ZKQ89Q5gmJLf-dcpU,2595
79
79
  inspect_ai/_util/deprecation.py,sha256=Ng-_MXXf6zbsHa5FaFLTTvVeUMI5oQw7bl392hsiV1g,6670
@@ -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=-dI_BWa2w7TMj1_inAgHQmG4qq44oG_X2JM70W7DygY,2748559
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
@@ -247,9 +247,9 @@ inspect_ai/_view/www/src/samples/chat/MessageContent.tsx,sha256=9T_MjXhUPKXQHMws
247
247
  inspect_ai/_view/www/src/samples/chat/MessageContents.module.css,sha256=t9sk1CbuwDuYhwuBjWzWip7JPdN0PnzwzqNwdgVJCWU,35
248
248
  inspect_ai/_view/www/src/samples/chat/MessageContents.tsx,sha256=FMKAg7e_8OOqoIvrO_Bc_XLbfrnh7IL55VQByPknqVs,3338
249
249
  inspect_ai/_view/www/src/samples/chat/messages.ts,sha256=qm5AE2yQWtk1KbxDDSwgg_uvtU8-MStfhMpkTWSQ1DM,3070
250
- inspect_ai/_view/www/src/samples/chat/tools/ToolCallView.tsx,sha256=DdDHbVjRDZ4LD9tHBptMykO9mU8_pVk4zf7MwTvuQeQ,3261
250
+ inspect_ai/_view/www/src/samples/chat/tools/ToolCallView.tsx,sha256=FcEhHVa2LpJqH-QWHYPFVXgfTm8GfmxzePKEzHVSD6w,3651
251
251
  inspect_ai/_view/www/src/samples/chat/tools/ToolInput.module.css,sha256=apEfqHAe683GyFx803xDO6Wid3m3xn_3ftGSLa4uxVI,190
252
- inspect_ai/_view/www/src/samples/chat/tools/ToolInput.tsx,sha256=B7_R2_Y8k8POQ69mR807kQdq3izxyN3CuURLb_FpvcQ,2009
252
+ inspect_ai/_view/www/src/samples/chat/tools/ToolInput.tsx,sha256=MWVvXSRPER394f273p8OIPvHXYzqvJkkjd-WK41Hong,2041
253
253
  inspect_ai/_view/www/src/samples/chat/tools/ToolOutput.module.css,sha256=p8jLonoAawbhuaqNzFPzToD-KRa3tBwX9w4yVOf3xqo,266
254
254
  inspect_ai/_view/www/src/samples/chat/tools/ToolOutput.tsx,sha256=kOHkL97fnw1xwfgP_ys0JGl-9gd7rZDO_FVQzX8oQ9s,1616
255
255
  inspect_ai/_view/www/src/samples/chat/tools/ToolTitle.module.css,sha256=RhrswSho4BZcJLi_YXtfDu7Ea70Z11rkwzeMvzsYsrM,51
@@ -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,29 +443,29 @@ 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
- inspect_ai/model/_image.py,sha256=kpO2Bn_-c-dK80HuPOPH1eSNmcoc39kofwf4yTTiTFE,477
460
- inspect_ai/model/_model.py,sha256=5Eefi0X5aWaf-aGs7a8qY6aEEaDWJv7G1fhRHD1SUFI,48135
459
+ inspect_ai/model/_model.py,sha256=LaRXqKvM2fl9HGCQAdrOOkNryfYU970LZGsyOxk1o00,48304
461
460
  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
461
+ inspect_ai/model/_model_output.py,sha256=1picjX2Y0NSmEZ-vdQi42QAx3QvMcWVRn8pXP2wtmN8,7733
462
+ inspect_ai/model/_openai.py,sha256=3_lQ3u-WJ8BOY5bMLM49LvAePzCZAn57Vi2SNLrWPm4,19093
463
+ inspect_ai/model/_openai_responses.py,sha256=7xViQD1JZuoAkT_0znFT1-r-q57m2OvL-zaEoWP1FYM,9690
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
468
- inspect_ai/model/_providers/azureai.py,sha256=3phdDrrsKzinphLtGj39bet_jVLcKgtLcWr_uILO0cc,14225
467
+ inspect_ai/model/_providers/anthropic.py,sha256=qA6GOl64axTjuL5ciEakoYsRbUljfxM9SDZr13Kbjns,33396
468
+ inspect_ai/model/_providers/azureai.py,sha256=tDWuePLhnZBcpHLVzX7J3Wx8VRPhW8tmtjiwLPmJouU,14232
469
469
  inspect_ai/model/_providers/bedrock.py,sha256=mLeMW2JkG4lF0VQGEdku73ZL00EBy-hEvEcyCdjDUDo,24153
470
470
  inspect_ai/model/_providers/cloudflare.py,sha256=0e0HPas21cVC8N9mNJlZnSZyIt6FUB9lTIAqPXJDrtE,4586
471
471
  inspect_ai/model/_providers/goodfire.py,sha256=EzebC1woEjIXfHLP_ixpMR6G1hC-LxbSUxiilq1c-Is,8868
@@ -474,16 +474,17 @@ inspect_ai/model/_providers/grok.py,sha256=dS88ueXiD-kHAFr0jCoTpTGLGa2VsUlB_TFP8
474
474
  inspect_ai/model/_providers/groq.py,sha256=Fr4fy8NmqllmUW7jhnQ3W94zGlxyr276qaGFS_iDI3Q,11189
475
475
  inspect_ai/model/_providers/hf.py,sha256=EZRiiRSzIoRCdFYKj3Otn5ebsROdjzx5YSQ6CzqOJxk,17969
476
476
  inspect_ai/model/_providers/llama_cpp_python.py,sha256=i2I56Damgb8VDhMuPxPca24fVhlajDHzxCTYFnT41uI,702
477
- inspect_ai/model/_providers/mistral.py,sha256=pwBaO7VoW-ZsiZfNjF3-m7Zr44OkNasOlI5N3SEE1dc,17377
477
+ inspect_ai/model/_providers/mistral.py,sha256=TPJIB0AytktnFwwAlvg6Mz2hXarJK8m0G6ggJw5Cbqg,17774
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=Qg0MM2OftmzzZ8aio-hvg3GZv77-PyuuY0uk3wtIM60,15189
482
482
  inspect_ai/model/_providers/openai_o1.py,sha256=wURSSI7aCBxbZONQBaEOYPrQleBExL2c2uSIdJXLi1U,12763
483
- inspect_ai/model/_providers/openrouter.py,sha256=5G8qS8xA7Gy4IGodEJd04xwjsN-O_as4oeU8DTsKB5s,2932
484
- inspect_ai/model/_providers/providers.py,sha256=GI68ptXsLoEkzuLMZseJQ1_jI2f1uqfZwKy9y8IX-Yg,6508
483
+ inspect_ai/model/_providers/openai_responses.py,sha256=9mVdfcKgIULv6YpwCFKFUj63JVi7szvBzHczj12ZdOc,6096
484
+ inspect_ai/model/_providers/openrouter.py,sha256=pDimDmm_4FzS4GZx0n9z8z717mQf3IQlgEy30huzpc4,4730
485
+ inspect_ai/model/_providers/providers.py,sha256=TdRXKzNQmeWZyTaAWkalmxVylRHkft0O8LqGJ054EiI,6508
485
486
  inspect_ai/model/_providers/together.py,sha256=Hwg-5jlFR3K61Epp_NnmDR5lX-bHZ2QT77GjM9dQOKY,9461
486
- inspect_ai/model/_providers/vertex.py,sha256=7V8sAEktxRPZxnBrantMYXDHc5EEUCOQRA5yvgLZfkE,17122
487
+ inspect_ai/model/_providers/vertex.py,sha256=3PX3pVvzydA-IczZaEAeqQeiTtimBa3a6t418GAtjhY,17235
487
488
  inspect_ai/model/_providers/vllm.py,sha256=KNEjdu-oeCXH-vhpMeF1Pmnf8-mkLpQ5pbyFJMlaT9c,14172
488
489
  inspect_ai/model/_providers/util/__init__.py,sha256=d4T_qvXihTRd1zmQkNE3xUBlHCX8tOIbRK19EwU0fTs,717
489
490
  inspect_ai/model/_providers/util/chatapi.py,sha256=-HsY7kOOEab1RQEWEnTXJEYye4EyG6HuJLdWn8tBOzE,3239
@@ -544,23 +545,27 @@ inspect_ai/solver/_human_agent/commands/note.py,sha256=yOHXPkm3yFrXzf-CK-IS6B3M0
544
545
  inspect_ai/solver/_human_agent/commands/score.py,sha256=Pkcd3g-8BAYlxQnvJsMFKPZCnqWsFjUYAM7T4Dl5rtM,2207
545
546
  inspect_ai/solver/_human_agent/commands/status.py,sha256=uUO5M4skWDp29OS8sqVKAqZw0OcM3MSesBYQNbRypJ0,1934
546
547
  inspect_ai/solver/_human_agent/commands/submit.py,sha256=D2p1M2ApvAcaVZhbP3fFofG9ZsPVvmxivSLIF5xQxtA,6524
547
- inspect_ai/tool/__init__.py,sha256=LIUjgrpzeqvN0cYlklb5mJYUhtCJXm_a0RjMCRfNdok,2289
548
- inspect_ai/tool/_tool.py,sha256=e5a2fHtCg5_AObaDfJliV6s-bJZNfa6HEbj587MjDuM,6285
549
- inspect_ai/tool/_tool_call.py,sha256=2HfvuNFKNmmQ9utd5IvauiGnFwj__RNQqWEWIAwpjSM,2178
548
+ inspect_ai/tool/__init__.py,sha256=M1xR4GLN4LBCzWWbMbIGXE-XnagdvC9mK5_a4qK35Ew,2466
549
+ inspect_ai/tool/_tool.py,sha256=VjnbMnsXPLpNqglc6Oss7OK7cVHHG7W2qzWtjcOc5Us,7055
550
+ inspect_ai/tool/_tool_call.py,sha256=yCkcQBl5iSdESX2Mv6z54IOFytmo6spzIk6UWJo3s7g,2294
550
551
  inspect_ai/tool/_tool_choice.py,sha256=L8QNmcnSnilzKg2HU3G65W5aYaSngO09z4FQ0fQlATM,496
551
552
  inspect_ai/tool/_tool_def.py,sha256=wS6yX2_64-O6L4k1kMihUp52-OnGypMn11L3oXMNeQc,8191
552
553
  inspect_ai/tool/_tool_description.py,sha256=SZTQzehReNNKwQ0iUL6v4pPfEptgf3UOP4J888JV18M,524
553
554
  inspect_ai/tool/_tool_info.py,sha256=ivRrJVo1_iUkdSF0cD0ITmZyMnRhI0ouKUFRtKKTZZY,4905
554
555
  inspect_ai/tool/_tool_params.py,sha256=xcVun4guba-st3onDtDar-wOeceAXiWwS5uOkigsFfo,745
556
+ inspect_ai/tool/_tool_support_helpers.py,sha256=d8Ab27pGfiJXTWz91HNdtcYpDC-j9jzmAWW1aqgo0UY,6965
555
557
  inspect_ai/tool/_tool_transcript.py,sha256=rMibJoBN5Nn41RwInqk45h9RDPxZGu81saDf4SkpqTs,904
556
558
  inspect_ai/tool/_tool_with.py,sha256=CjFDYRSWOHRhfR14z5Sv6ys7V49GwDoWVcMQjY2K3xQ,2628
557
559
  inspect_ai/tool/beta.py,sha256=KQYntN2MLiIHp4Gf4GXv3QO3aYHBBaP-npkluTT-aDM,153
558
560
  inspect_ai/tool/_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
561
+ inspect_ai/tool/_tools/_bash_session.py,sha256=_5Y8e5qGX_WTtLsg4bCmj0WH_xNY2locCz4rQCOlvM8,3480
559
562
  inspect_ai/tool/_tools/_execute.py,sha256=SZdtVxxGoQNErWFtYaJgfTtLsZbBP28lnY112mt-VWQ,3435
560
- inspect_ai/tool/_tools/_web_search.py,sha256=RSJHDdy9zk7t44wk5TFON6M5L-uEj8QlTjYieHlg_wM,8003
563
+ inspect_ai/tool/_tools/_text_editor.py,sha256=9Z6vB4_sgwQw2OH22reA6FSw6LgFslbQ5X7ufvaVl5U,3939
564
+ inspect_ai/tool/_tools/_think.py,sha256=FndjEwPbkkdqEmxpVHpecEwRJo6DYWFJzwUnNNLmy9Y,1821
565
+ inspect_ai/tool/_tools/_web_search.py,sha256=GYkGasfmZWG3TY1XqBfa6yJnG7ysPtdGCVmPUJHQRSM,8012
561
566
  inspect_ai/tool/_tools/_computer/__init__.py,sha256=fq4BSM4aDhtEtE4279xm47NiO6vyiZHhhw7cq-azFzk,56
562
567
  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
568
+ inspect_ai/tool/_tools/_computer/_computer.py,sha256=kJxek02TfOqE7oIbXeN48d17jXLW-Y-Ql37OQVKO7ts,9140
564
569
  inspect_ai/tool/_tools/_computer/test_args.py,sha256=tgySEFbsI-jPK9LA75ickN3qI_bLev81XGaprgoKL5k,4234
565
570
  inspect_ai/tool/_tools/_computer/_resources/Dockerfile,sha256=DA1ZzOqO3vEySSfoDV9bCBl_iVmpzhiNz_s1Oyd1gO0,3568
566
571
  inspect_ai/tool/_tools/_computer/_resources/README.md,sha256=5JDNaGJ-Ebq6Io57ANFIqgjPoh11aGDSrrgrhyfiqxU,1657
@@ -590,43 +595,14 @@ inspect_ai/tool/_tools/_computer/_resources/tool/pyproject.toml,sha256=MCZ84Su8y
590
595
  inspect_ai/tool/_tools/_computer/_resources/tool/requirements.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
591
596
  inspect_ai/tool/_tools/_computer/_resources/tool/.vscode/settings.json,sha256=cfeAnDRwpgensIPY5LeICNh5P-o5Hw951sdmHtqI_LU,151
592
597
  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
598
+ inspect_ai/tool/_tools/_web_browser/_back_compat.py,sha256=oz5xt0_O1LpIXln1LIpypqealT0H1E4wBb_FIh8o6nA,5531
599
+ inspect_ai/tool/_tools/_web_browser/_web_browser.py,sha256=TkVWtCq03GgG78pav91mPZydamxA6pQ39OxPOBX607s,14013
624
600
  inspect_ai/util/__init__.py,sha256=GBt2_QMy1iumUYa5bRt9LzWsa0Uw5Y8Fa7WSc3Elk0c,1534
625
601
  inspect_ai/util/_concurrency.py,sha256=slo-W5X3XGwjbeXjpVxIYqHQsjoL0MHxcP2SR1epAX4,2408
626
602
  inspect_ai/util/_console.py,sha256=V1XkIoKcNZo0SgRUOv15zJAWz6-zV6267hC4Oldj8oY,1237
627
603
  inspect_ai/util/_conversation.py,sha256=KzqvKfj1tB14cgARZjYyIVG2EpuE-EZKqLGAPIXv1Xs,784
628
604
  inspect_ai/util/_display.py,sha256=cjSfvs_HXHUd3uYqHY4sTPpOcvrWdlGZm2YskfW49lM,2214
629
- inspect_ai/util/_json.py,sha256=uglJI073t72rEs2KsyiVkUrqbk4B3OrEYzi841QqiI8,5202
605
+ inspect_ai/util/_json.py,sha256=aNlO-Kw1NmmaQ-TG5_p_Qb9lL5wOTBvLtoyrsZHU8ic,6313
630
606
  inspect_ai/util/_panel.py,sha256=MdZxOt0F01ddn_NsRfwn0es6UjQasK1_EKIQ6jtQyG8,3124
631
607
  inspect_ai/util/_resource.py,sha256=X280aW_7VCkVTGk812tuU5qnZlGM5Qt1-kANr-DaGOs,3389
632
608
  inspect_ai/util/_store.py,sha256=QemJe2M-RK6zSFNcd07_92XFjvNtWKgHzBr5eT3KF1I,3786
@@ -635,7 +611,7 @@ inspect_ai/util/_subprocess.py,sha256=uW_6Syl1DleNpHDU3UXaUulcD-QFh3EDIt2Xla80xB
635
611
  inspect_ai/util/_subtask.py,sha256=zog37z3sa7yNlIDkt8TvgMdNYatMhtzl-eX1P1N1rW0,5138
636
612
  inspect_ai/util/_throttle.py,sha256=JczSG_y0v60m4gQCt28uw_WPjJTbHuq8gWcxY3-vFsc,855
637
613
  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
614
+ inspect_ai/util/_sandbox/context.py,sha256=PHPyGX48BV-tO225L8SVPbEoX8o1Olyj7kJCZxvx5bo,8942
639
615
  inspect_ai/util/_sandbox/environment.py,sha256=BGPzWM6FbMv7mTQF9NT84b4Y_Tc_zAIyRcG1VFEvQ7w,13333
640
616
  inspect_ai/util/_sandbox/events.py,sha256=ctSamOMR4idv3bs6lAXxaB4md4yuiayEPqzWCqk67kE,5346
641
617
  inspect_ai/util/_sandbox/limits.py,sha256=K-GjKfSugOq8KP0wW_oF6qFrXsOnMV0C88QUWkjPJ9o,2164
@@ -645,15 +621,15 @@ inspect_ai/util/_sandbox/self_check.py,sha256=iYdAzb_ufMgA0yDQQJ3v5RcKCFTkayp-nq
645
621
  inspect_ai/util/_sandbox/service.py,sha256=HegTC_JyXN9q7yNY2lO4YGFkDlzjZwztajvj8ullgfY,11583
646
622
  inspect_ai/util/_sandbox/docker/cleanup.py,sha256=G8UgQr1_YRK1NGNeXzTg6res1huPfJF9_uH-LFRg57w,5148
647
623
  inspect_ai/util/_sandbox/docker/compose.py,sha256=x5sr-feqGjP96KvsYlfhYBF6eOnv6otIu7zxa2oZv3I,11723
648
- inspect_ai/util/_sandbox/docker/config.py,sha256=I2sxkN2mTS3kXoAGtJ2w7yuhMoacECgkdxiXftlAvKA,2918
624
+ inspect_ai/util/_sandbox/docker/config.py,sha256=5-YsouGJGxNXw8xNEZi1o4H0EaqaTLKoQhwYT2Iczb4,2925
649
625
  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
626
+ inspect_ai/util/_sandbox/docker/internal.py,sha256=c8X8TLrBPOvsfnq5TkMlb_bzTALycfzFdDLmL4zdoYc,1479
651
627
  inspect_ai/util/_sandbox/docker/prereqs.py,sha256=0j6_OauBBnVlpBleADcZavIAAQZy4WewVjbRn9c0stg,3355
652
628
  inspect_ai/util/_sandbox/docker/service.py,sha256=hhHIWH1VDFLwehdGd19aUBD_VKfDO3GCPxpw1HSwVQk,2437
653
629
  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,,
630
+ inspect_ai-0.3.77.dist-info/licenses/LICENSE,sha256=xZPCr8gTiFIerrA_DRpLAbw-UUftnLFsHxKeW-NTtq8,1081
631
+ inspect_ai-0.3.77.dist-info/METADATA,sha256=7neEk8lnUwF8p-Snz7AFFvKCnxMsClI7B8cTJ2Tpo44,4997
632
+ inspect_ai-0.3.77.dist-info/WHEEL,sha256=DK49LOLCYiurdXXOXwGJm6U4DkHkg4lcxjhqwRa0CP4,91
633
+ inspect_ai-0.3.77.dist-info/entry_points.txt,sha256=WGGLmzTzDWLzYfiyovSY6oEKuf-gqzSDNOb5V-hk3fM,54
634
+ inspect_ai-0.3.77.dist-info/top_level.txt,sha256=Tp3za30CHXJEKLk8xLe9qGsW4pBzJpEIOMHOHNCXiVo,11
635
+ inspect_ai-0.3.77.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.1.0)
2
+ Generator: setuptools (78.0.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,15 +0,0 @@
1
- from copy import copy
2
-
3
- from pydantic import JsonValue
4
-
5
- from inspect_ai._util.constants import BASE_64_DATA_REMOVED
6
-
7
-
8
- def image_url_filter(key: JsonValue | None, value: JsonValue) -> JsonValue:
9
- # remove images from raw api call
10
- if key == "image_url" and isinstance(value, dict) and "url" in value:
11
- url = str(value.get("url"))
12
- if url.startswith("data:"):
13
- value = copy(value)
14
- value.update(url=BASE_64_DATA_REMOVED)
15
- return value
@@ -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.