inspect-ai 0.3.104__py3-none-any.whl → 0.3.106__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.
- inspect_ai/_eval/context.py +5 -0
- inspect_ai/_eval/eval.py +113 -1
- inspect_ai/_eval/evalset.py +1 -1
- inspect_ai/_eval/task/run.py +64 -38
- inspect_ai/_util/eval_task_group.py +15 -0
- inspect_ai/_view/server.py +17 -0
- inspect_ai/_view/www/dist/assets/index.css +33 -29
- inspect_ai/_view/www/dist/assets/index.js +559 -247
- inspect_ai/_view/www/src/app/samples/chat/ChatMessage.module.css +4 -0
- inspect_ai/_view/www/src/app/samples/chat/ChatMessage.tsx +17 -0
- inspect_ai/_view/www/src/app/samples/sample-tools/filters.ts +26 -0
- inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/SampleFilter.tsx +14 -3
- inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/completions.ts +359 -7
- inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/language.ts +6 -0
- inspect_ai/_view/www/src/app/samples/transcript/outline/OutlineRow.tsx +1 -1
- inspect_ai/_view/www/src/client/api/api-browser.ts +25 -0
- inspect_ai/_view/www/src/client/api/api-http.ts +3 -0
- inspect_ai/_view/www/src/client/api/api-vscode.ts +6 -0
- inspect_ai/_view/www/src/client/api/client-api.ts +3 -0
- inspect_ai/_view/www/src/client/api/jsonrpc.ts +1 -0
- inspect_ai/_view/www/src/client/api/types.ts +3 -0
- inspect_ai/_view/www/src/state/samplePolling.ts +17 -1
- inspect_ai/agent/_handoff.py +5 -2
- inspect_ai/agent/_react.py +43 -20
- inspect_ai/dataset/_dataset.py +1 -1
- inspect_ai/log/_samples.py +5 -0
- inspect_ai/model/_call_tools.py +4 -4
- inspect_ai/model/_providers/_openai_web_search.py +1 -1
- inspect_ai/model/_providers/anthropic.py +23 -2
- inspect_ai/model/_providers/google.py +5 -1
- inspect_ai/model/_providers/groq.py +5 -0
- inspect_ai/model/_providers/perplexity.py +27 -1
- inspect_ai/model/_providers/providers.py +1 -1
- inspect_ai/tool/_tools/_web_search/_web_search.py +8 -3
- inspect_ai/util/__init__.py +8 -0
- inspect_ai/util/_background.py +64 -0
- inspect_ai/util/_limit.py +72 -5
- inspect_ai/util/_sandbox/__init__.py +2 -0
- inspect_ai/util/_sandbox/service.py +28 -7
- inspect_ai/util/_subprocess.py +51 -38
- {inspect_ai-0.3.104.dist-info → inspect_ai-0.3.106.dist-info}/METADATA +1 -1
- {inspect_ai-0.3.104.dist-info → inspect_ai-0.3.106.dist-info}/RECORD +46 -44
- {inspect_ai-0.3.104.dist-info → inspect_ai-0.3.106.dist-info}/WHEEL +0 -0
- {inspect_ai-0.3.104.dist-info → inspect_ai-0.3.106.dist-info}/entry_points.txt +0 -0
- {inspect_ai-0.3.104.dist-info → inspect_ai-0.3.106.dist-info}/licenses/LICENSE +0 -0
- {inspect_ai-0.3.104.dist-info → inspect_ai-0.3.106.dist-info}/top_level.txt +0 -0
inspect_ai/util/_limit.py
CHANGED
@@ -4,6 +4,7 @@ import abc
|
|
4
4
|
import logging
|
5
5
|
from contextlib import ExitStack, contextmanager
|
6
6
|
from contextvars import ContextVar
|
7
|
+
from dataclasses import dataclass
|
7
8
|
from types import TracebackType
|
8
9
|
from typing import TYPE_CHECKING, Generic, Iterator, Literal, TypeVar
|
9
10
|
|
@@ -88,12 +89,31 @@ class Limit(abc.ABC):
|
|
88
89
|
) -> None:
|
89
90
|
pass
|
90
91
|
|
92
|
+
@property
|
93
|
+
@abc.abstractmethod
|
94
|
+
def limit(self) -> float | None:
|
95
|
+
"""The value of the limit being applied.
|
96
|
+
|
97
|
+
Can be None which represents no limit.
|
98
|
+
"""
|
99
|
+
pass
|
100
|
+
|
91
101
|
@property
|
92
102
|
@abc.abstractmethod
|
93
103
|
def usage(self) -> float:
|
94
104
|
"""The current usage of the resource being limited."""
|
95
105
|
pass
|
96
106
|
|
107
|
+
@property
|
108
|
+
def remaining(self) -> float | None:
|
109
|
+
"""The remaining "unused" amount of the resource being limited.
|
110
|
+
|
111
|
+
Returns None if the limit is None.
|
112
|
+
"""
|
113
|
+
if self.limit is None:
|
114
|
+
return None
|
115
|
+
return self.limit - self.usage
|
116
|
+
|
97
117
|
def _check_reuse(self) -> None:
|
98
118
|
if self._entered:
|
99
119
|
raise RuntimeError(
|
@@ -152,6 +172,46 @@ class LimitScope:
|
|
152
172
|
self.limit_error: LimitExceededError | None = None
|
153
173
|
|
154
174
|
|
175
|
+
@dataclass
|
176
|
+
class SampleLimits:
|
177
|
+
"""Data class to hold the limits applied to a Sample.
|
178
|
+
|
179
|
+
This is used to return the limits from `sample_limits()`.
|
180
|
+
"""
|
181
|
+
|
182
|
+
token: Limit
|
183
|
+
"""Token limit."""
|
184
|
+
|
185
|
+
message: Limit
|
186
|
+
"""Message limit."""
|
187
|
+
|
188
|
+
working: Limit
|
189
|
+
"""Working limit."""
|
190
|
+
|
191
|
+
time: Limit
|
192
|
+
"""Time limit."""
|
193
|
+
|
194
|
+
|
195
|
+
def sample_limits() -> SampleLimits:
|
196
|
+
"""Get the top-level limits applied to the current `Sample`."""
|
197
|
+
|
198
|
+
def get_root_node(node: TNode | None, name: str) -> TNode:
|
199
|
+
if node is None:
|
200
|
+
raise RuntimeError(
|
201
|
+
f"No {name} limit node found. Is there a running sample?"
|
202
|
+
)
|
203
|
+
while node.parent is not None:
|
204
|
+
node = node.parent
|
205
|
+
return node
|
206
|
+
|
207
|
+
return SampleLimits(
|
208
|
+
token=get_root_node(token_limit_tree.get(), "token"),
|
209
|
+
message=get_root_node(message_limit_tree.get(), "message"),
|
210
|
+
working=get_root_node(working_limit_tree.get(), "working"),
|
211
|
+
time=get_root_node(time_limit_tree.get(), "time"),
|
212
|
+
)
|
213
|
+
|
214
|
+
|
155
215
|
def token_limit(limit: int | None) -> _TokenLimit:
|
156
216
|
"""Limits the total number of tokens which can be used.
|
157
217
|
|
@@ -319,10 +379,9 @@ class _Tree(Generic[TNode]):
|
|
319
379
|
|
320
380
|
|
321
381
|
token_limit_tree: _Tree[_TokenLimit] = _Tree("token_limit_tree")
|
322
|
-
# Store the message limit leaf node so that we know which limit to check in
|
323
|
-
# check_message_limit().
|
324
382
|
message_limit_tree: _Tree[_MessageLimit] = _Tree("message_limit_tree")
|
325
383
|
working_limit_tree: _Tree[_WorkingLimit] = _Tree("working_limit_tree")
|
384
|
+
time_limit_tree: _Tree[_TimeLimit] = _Tree("time_limit_tree")
|
326
385
|
|
327
386
|
|
328
387
|
class _Node:
|
@@ -497,7 +556,7 @@ class _MessageLimit(Limit, _Node):
|
|
497
556
|
)
|
498
557
|
|
499
558
|
|
500
|
-
class _TimeLimit(Limit):
|
559
|
+
class _TimeLimit(Limit, _Node):
|
501
560
|
def __init__(self, limit: float | None) -> None:
|
502
561
|
super().__init__()
|
503
562
|
_validate_time_limit("Time", limit)
|
@@ -507,8 +566,7 @@ class _TimeLimit(Limit):
|
|
507
566
|
|
508
567
|
def __enter__(self) -> Limit:
|
509
568
|
super()._check_reuse()
|
510
|
-
|
511
|
-
# of the state.
|
569
|
+
time_limit_tree.push(self)
|
512
570
|
self._cancel_scope = anyio.move_on_after(self._limit)
|
513
571
|
self._cancel_scope.__enter__()
|
514
572
|
self._start_time = anyio.current_time()
|
@@ -524,6 +582,7 @@ class _TimeLimit(Limit):
|
|
524
582
|
|
525
583
|
self._cancel_scope.__exit__(exc_type, exc_val, exc_tb)
|
526
584
|
self._end_time = anyio.current_time()
|
585
|
+
self._pop_and_check_identity(time_limit_tree)
|
527
586
|
if self._cancel_scope.cancel_called and self._limit is not None:
|
528
587
|
message = f"Time limit exceeded. limit: {self._limit} seconds"
|
529
588
|
assert self._start_time is not None
|
@@ -541,6 +600,10 @@ class _TimeLimit(Limit):
|
|
541
600
|
source=self,
|
542
601
|
) from exc_val
|
543
602
|
|
603
|
+
@property
|
604
|
+
def limit(self) -> float | None:
|
605
|
+
return self._limit
|
606
|
+
|
544
607
|
@property
|
545
608
|
def usage(self) -> float:
|
546
609
|
if self._start_time is None:
|
@@ -575,6 +638,10 @@ class _WorkingLimit(Limit, _Node):
|
|
575
638
|
self._end_time = anyio.current_time()
|
576
639
|
self._pop_and_check_identity(working_limit_tree)
|
577
640
|
|
641
|
+
@property
|
642
|
+
def limit(self) -> float | None:
|
643
|
+
return self._limit
|
644
|
+
|
578
645
|
@property
|
579
646
|
def usage(self) -> float:
|
580
647
|
if self._start_time is None:
|
@@ -13,6 +13,7 @@ from .environment import (
|
|
13
13
|
from .limits import OutputLimitExceededError, SandboxEnvironmentLimits
|
14
14
|
from .local import LocalSandboxEnvironment # noqa: F401
|
15
15
|
from .registry import sandboxenv
|
16
|
+
from .service import sandbox_service
|
16
17
|
|
17
18
|
__all__ = [
|
18
19
|
"OutputLimitExceededError",
|
@@ -27,4 +28,5 @@ __all__ = [
|
|
27
28
|
"sandbox",
|
28
29
|
"sandbox_with",
|
29
30
|
"sandbox_default",
|
31
|
+
"sandbox_service",
|
30
32
|
]
|
@@ -44,14 +44,35 @@ async def sandbox_service(
|
|
44
44
|
) -> None:
|
45
45
|
"""Run a service that is callable from within a sandbox.
|
46
46
|
|
47
|
+
The service makes available a set of methods to a sandbox
|
48
|
+
for calling back into the main Inspect process.
|
49
|
+
|
50
|
+
To use the service from within a sandbox, either add it to the sys path
|
51
|
+
or use importlib. For example, if the service is named 'foo':
|
52
|
+
|
53
|
+
```python
|
54
|
+
import sys
|
55
|
+
sys.path.append("/var/tmp/sandbox-services/foo")
|
56
|
+
import foo
|
57
|
+
```
|
58
|
+
|
59
|
+
Or:
|
60
|
+
|
61
|
+
```python
|
62
|
+
import importlib.util
|
63
|
+
spec = importlib.util.spec_from_file_location(
|
64
|
+
"foo", "/var/tmp/sandbox-services/foo/foo.py"
|
65
|
+
)
|
66
|
+
foo = importlib.util.module_from_spec(spec)
|
67
|
+
spec.loader.exec_module(foo)
|
68
|
+
```
|
69
|
+
|
47
70
|
Args:
|
48
|
-
name
|
49
|
-
methods
|
50
|
-
until
|
51
|
-
|
52
|
-
|
53
|
-
user (str | None): User to login as. Defaults to the sandbox environment's
|
54
|
-
default user.
|
71
|
+
name: Service name
|
72
|
+
methods: Service methods.
|
73
|
+
until: Function used to check whether the service should stop.
|
74
|
+
sandbox: Sandbox to publish service to.
|
75
|
+
user: User to login as. Defaults to the sandbox environment's default user.
|
55
76
|
"""
|
56
77
|
# setup and start service
|
57
78
|
service = SandboxService(name, sandbox, user)
|
inspect_ai/util/_subprocess.py
CHANGED
@@ -2,16 +2,15 @@ import functools
|
|
2
2
|
import io
|
3
3
|
import os
|
4
4
|
import shlex
|
5
|
-
from contextlib import aclosing
|
6
5
|
from contextvars import ContextVar
|
7
6
|
from dataclasses import dataclass
|
8
7
|
from logging import getLogger
|
9
8
|
from pathlib import Path
|
10
9
|
from subprocess import DEVNULL, PIPE
|
11
|
-
from typing import
|
10
|
+
from typing import Generic, Literal, TypeVar, Union, overload
|
12
11
|
|
13
12
|
import anyio
|
14
|
-
from anyio import open_process
|
13
|
+
from anyio import ClosedResourceError, create_task_group, open_process
|
15
14
|
from anyio.abc import ByteReceiveStream, Process
|
16
15
|
|
17
16
|
from inspect_ai._util._async import tg_collect
|
@@ -114,9 +113,7 @@ async def subprocess(
|
|
114
113
|
else None
|
115
114
|
)
|
116
115
|
|
117
|
-
async def run_command() ->
|
118
|
-
Union[Process, ExecResult[str], ExecResult[bytes]], None
|
119
|
-
]:
|
116
|
+
async def run_command() -> Union[ExecResult[str], ExecResult[bytes]]:
|
120
117
|
process = await open_process(
|
121
118
|
args,
|
122
119
|
stdin=PIPE if input else DEVNULL,
|
@@ -126,9 +123,6 @@ async def subprocess(
|
|
126
123
|
env={**os.environ, **env},
|
127
124
|
)
|
128
125
|
try:
|
129
|
-
# yield the process so the caller has a handle to it
|
130
|
-
yield process
|
131
|
-
|
132
126
|
# write to stdin (convert input to bytes)
|
133
127
|
if process.stdin and input:
|
134
128
|
await process.stdin.send(input)
|
@@ -161,19 +155,23 @@ async def subprocess(
|
|
161
155
|
returncode = await process.wait()
|
162
156
|
success = returncode == 0
|
163
157
|
if text:
|
164
|
-
|
158
|
+
return ExecResult[str](
|
165
159
|
success=success,
|
166
160
|
returncode=returncode,
|
167
161
|
stdout=stdout.decode() if capture_output else "",
|
168
162
|
stderr=stderr.decode() if capture_output else "",
|
169
163
|
)
|
170
164
|
else:
|
171
|
-
|
165
|
+
return ExecResult[bytes](
|
172
166
|
success=success,
|
173
167
|
returncode=returncode,
|
174
168
|
stdout=stdout if capture_output else bytes(),
|
175
169
|
stderr=stderr if capture_output else bytes(),
|
176
170
|
)
|
171
|
+
# Handle cancellation before aclose() is called to avoid deadlock.
|
172
|
+
except anyio.get_cancelled_exc_class():
|
173
|
+
await gracefully_terminate_cancelled_subprocess(process)
|
174
|
+
raise
|
177
175
|
finally:
|
178
176
|
try:
|
179
177
|
await process.aclose()
|
@@ -186,33 +184,13 @@ async def subprocess(
|
|
186
184
|
|
187
185
|
# wrapper for run command that implements timeout
|
188
186
|
async def run_command_timeout() -> Union[ExecResult[str], ExecResult[bytes]]:
|
189
|
-
#
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
with anyio.fail_after(timeout):
|
197
|
-
result = await anext(rc)
|
198
|
-
return cast(Union[ExecResult[str], ExecResult[bytes]], result)
|
199
|
-
except TimeoutError:
|
200
|
-
# terminate timed out process -- try for graceful termination
|
201
|
-
# then be more forceful if requied
|
202
|
-
with anyio.CancelScope(shield=True):
|
203
|
-
try:
|
204
|
-
proc.terminate()
|
205
|
-
await anyio.sleep(2)
|
206
|
-
if proc.returncode is None:
|
207
|
-
proc.kill()
|
208
|
-
except Exception:
|
209
|
-
pass
|
210
|
-
raise
|
211
|
-
|
212
|
-
# await result without timeout
|
213
|
-
else:
|
214
|
-
result = await anext(rc)
|
215
|
-
return cast(Union[ExecResult[str], ExecResult[bytes]], result)
|
187
|
+
# wrap in timeout handler if requested
|
188
|
+
if timeout is not None:
|
189
|
+
with anyio.fail_after(timeout):
|
190
|
+
# run_command() handles terminating the process if it is cancelled.
|
191
|
+
return await run_command()
|
192
|
+
else:
|
193
|
+
return await run_command()
|
216
194
|
|
217
195
|
# run command
|
218
196
|
async with concurrency("subprocesses", max_subprocesses_context_var.get()):
|
@@ -233,6 +211,41 @@ def default_max_subprocesses() -> int:
|
|
233
211
|
return cpus if cpus else 1
|
234
212
|
|
235
213
|
|
214
|
+
async def gracefully_terminate_cancelled_subprocess(process: Process) -> None:
|
215
|
+
with anyio.CancelScope(shield=True):
|
216
|
+
try:
|
217
|
+
# Terminate timed out process -- try for graceful termination then kill if
|
218
|
+
# required.
|
219
|
+
process.terminate()
|
220
|
+
await anyio.sleep(2)
|
221
|
+
if process.returncode is None:
|
222
|
+
process.kill()
|
223
|
+
# With anyio's asyncio backend, process.aclose() calls process.wait() which
|
224
|
+
# can deadlock if the process generates so much output that it blocks
|
225
|
+
# waiting for the OS pipe buffer to accept more data. See
|
226
|
+
# https://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.wait
|
227
|
+
# Therefore, we need to ensure that the process's stdout and stderr streams
|
228
|
+
# are drained before we call process.wait() in aclose().
|
229
|
+
async with create_task_group() as tg:
|
230
|
+
tg.start_soon(drain_stream, process.stdout)
|
231
|
+
tg.start_soon(drain_stream, process.stderr)
|
232
|
+
# Wait for the process to exit. Will be called again by aclose().
|
233
|
+
await process.wait()
|
234
|
+
# The process may have already exited, in which case we can ignore the error.
|
235
|
+
except ProcessLookupError:
|
236
|
+
pass
|
237
|
+
|
238
|
+
|
239
|
+
async def drain_stream(stream: ByteReceiveStream | None) -> None:
|
240
|
+
if stream is None:
|
241
|
+
return
|
242
|
+
try:
|
243
|
+
async for _ in stream:
|
244
|
+
pass
|
245
|
+
except ClosedResourceError:
|
246
|
+
pass
|
247
|
+
|
248
|
+
|
236
249
|
max_subprocesses_context_var = ContextVar[int](
|
237
250
|
"max_subprocesses", default=default_max_subprocesses()
|
238
251
|
)
|
@@ -46,9 +46,9 @@ inspect_ai/_display/textual/widgets/toggle.py,sha256=ToYs-S4n90yuxWcAW2OTg6AbRf0
|
|
46
46
|
inspect_ai/_display/textual/widgets/transcript.py,sha256=fmCJwe1EZ7bjeB6DXakQ2l3aoytEW_wdGTCN1Hea5uw,12558
|
47
47
|
inspect_ai/_display/textual/widgets/vscode.py,sha256=SAIPO8VOkT_CFIfnCP_XxKixojdYXxMNdYU3Z2mq5Ek,1298
|
48
48
|
inspect_ai/_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
|
-
inspect_ai/_eval/context.py,sha256=
|
50
|
-
inspect_ai/_eval/eval.py,sha256=
|
51
|
-
inspect_ai/_eval/evalset.py,sha256=
|
49
|
+
inspect_ai/_eval/context.py,sha256=vEOqPNG3eWdkspaLYEJJE59D_WxH_3ZPHc3tP0MjwHg,1584
|
50
|
+
inspect_ai/_eval/eval.py,sha256=DlDpqMWpF3JIgJ9Xeb0QJ9E99Dm1VW48viNEUwj6Lis,48279
|
51
|
+
inspect_ai/_eval/evalset.py,sha256=cGLAX6qnMMi-LTenLtu47wv0JJTjAvFLbE6zKfZbfTg,25112
|
52
52
|
inspect_ai/_eval/list.py,sha256=VbZ-2EI6MqrXvCN7VTz21TQSoU5K5_Q0hqhxmj5A_m0,3744
|
53
53
|
inspect_ai/_eval/loader.py,sha256=dafv4TlQDqdvzPyrQrBsNiCzhvqjwmcVQzweX-AL1os,24805
|
54
54
|
inspect_ai/_eval/registry.py,sha256=IMyF_Ru11DrqjFe1yZJvghQcJSfssQ08wQqTt_F38Ag,5570
|
@@ -63,7 +63,7 @@ inspect_ai/_eval/task/images.py,sha256=nTzHizlyuPYumPH7gAOBSrNkTwTbAmZ7tKdzN7d_R
|
|
63
63
|
inspect_ai/_eval/task/log.py,sha256=-9SRwJBINudIEVcsIyFEUY9ZSt2dC4hHN9NEuw0x9OU,12008
|
64
64
|
inspect_ai/_eval/task/resolved.py,sha256=LBVHEeq9N1fkRObmA2pnDE_l_EuH6n2Dg8-c8yCGT5U,1007
|
65
65
|
inspect_ai/_eval/task/results.py,sha256=x4weYRK2XGowfBG3f2msOeZQ_pxh230HTlw6kps33jw,17925
|
66
|
-
inspect_ai/_eval/task/run.py,sha256=
|
66
|
+
inspect_ai/_eval/task/run.py,sha256=CHEA25h-UdZmbfQ9o568hiahyna_voGvANMns4u9tW4,40244
|
67
67
|
inspect_ai/_eval/task/sandbox.py,sha256=x9GU-o2LtJQtdZjdmwRtAMJ5Mzd_te6hrm-DjiZB60g,7737
|
68
68
|
inspect_ai/_eval/task/task.py,sha256=EVdOKgC8UYadlTebkfnXtWawV0BQeGGEBzmlGTRbAfI,16314
|
69
69
|
inspect_ai/_eval/task/tasks.py,sha256=8fy5k070KgjYwaZQ_Nk6_r-38VTU6HB-qh7ixc4JzKI,727
|
@@ -86,6 +86,7 @@ inspect_ai/_util/dotenv.py,sha256=9KsPrGFYUVsBGDTnmDuvtptkiOuoxztVaIRdID58EuA,34
|
|
86
86
|
inspect_ai/_util/entrypoints.py,sha256=FnK32vIRvSFdH80l5H0o6oiJif837oeDrl5N10_P-xo,1260
|
87
87
|
inspect_ai/_util/environ.py,sha256=COdX6sqJIq3ikNQD2gR2nMT7yk0qW8x4EjlJwHS9A_M,1428
|
88
88
|
inspect_ai/_util/error.py,sha256=NIYCkOXGMUF1_zSHpeTBKzBb79_llQZvvf0TGYHO57Y,2333
|
89
|
+
inspect_ai/_util/eval_task_group.py,sha256=NBnvF-VuPT-foZ4_7ITjJ61LNQ29F0cuaTIh-y-FbVo,380
|
89
90
|
inspect_ai/_util/exception.py,sha256=coVT0bQy6sADWSvTUaVVDDKnb1XCzREfuVi9UOvx_S0,149
|
90
91
|
inspect_ai/_util/file.py,sha256=OqSe8RXF9OBWm8Rzvnsnu854ZqQWl-6aFlUrbjIVHoA,13432
|
91
92
|
inspect_ai/_util/format.py,sha256=4TQ1FE4-TDNlHcr0r6dfsjv84sV11C9ouTfi55W-yIs,3323
|
@@ -128,7 +129,7 @@ inspect_ai/_util/working.py,sha256=mJSexhxAA-OvYGZPMH6lVjnn_QC1aWm5lbdoUWRYEBo,8
|
|
128
129
|
inspect_ai/_view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
129
130
|
inspect_ai/_view/notify.py,sha256=w79p_o6mnL8NYKd7QgibnUdDGnUELfQO8fhhkjq7n4o,1433
|
130
131
|
inspect_ai/_view/schema.py,sha256=I1ih8jgM3d6t6lbLGgRgw2Lo5WMkZV-b8LWFM-OmBak,1658
|
131
|
-
inspect_ai/_view/server.py,sha256=
|
132
|
+
inspect_ai/_view/server.py,sha256=Du7lUXn44qIL1b-fJnUAHVwrx7eAaY-hBGPAa06kgFc,18161
|
132
133
|
inspect_ai/_view/view.py,sha256=7FkmirqOMpej-7YUG2rmPvpfVjzJzFZbTt_MtgXYpnU,3607
|
133
134
|
inspect_ai/_view/www/.gitignore,sha256=Qyau1UN5uAQB8cwjhokiMEMgJtQCReq-6ohBVCXV8ZQ,52
|
134
135
|
inspect_ai/_view/www/.prettierignore,sha256=SiJfow55o33Kh0KB2BJGQsjgyHNURdtmI097aY6kJzc,85
|
@@ -152,8 +153,8 @@ inspect_ai/_view/www/.vscode/extensions.json,sha256=E73RWLzcoyeluE_ijGxaNSOK9xC0
|
|
152
153
|
inspect_ai/_view/www/.vscode/settings.json,sha256=g5hrVnMaYxM06JpiJD2EuE2xjcbF6xNAtL2fuKgG1-8,200
|
153
154
|
inspect_ai/_view/www/dist/index.html,sha256=gpdu6SR-SOH9EWx15cCWHzujMZujnZR5tRlEfROJg2A,997
|
154
155
|
inspect_ai/_view/www/dist/assets/favicon.svg,sha256=b9AHYZaO2zBzeKH6G4PwXZMGGW_UxY0omKHam-c9MAs,1508
|
155
|
-
inspect_ai/_view/www/dist/assets/index.css,sha256=
|
156
|
-
inspect_ai/_view/www/dist/assets/index.js,sha256=
|
156
|
+
inspect_ai/_view/www/dist/assets/index.css,sha256=FJroagFAzsVsGrRFXiA26pTSdlKTUJSAAOn94c6gVZI,2378191
|
157
|
+
inspect_ai/_view/www/dist/assets/index.js,sha256=jfWOhyScMp6eIzbSKZY9IZFQ6xfS7w-ASiyXd0yTHeM,3549950
|
157
158
|
inspect_ai/_view/www/node_modules/flatted/python/flatted.py,sha256=UYburBDqkySaTfSpntPCUJRxiBGcplusJM7ECX8FEgA,3860
|
158
159
|
inspect_ai/_view/www/node_modules/katex/src/fonts/generate_fonts.py,sha256=BqZzWU-n22LypRvQ6sV7Uvkv853QJa3rz543de0V9hI,1559
|
159
160
|
inspect_ai/_view/www/node_modules/katex/src/metrics/extract_tfms.py,sha256=kuCyCirv4JZeZgBOBIge_OPi627676DS6DJ4vo5_Yi4,3329
|
@@ -251,8 +252,8 @@ inspect_ai/_view/www/src/app/samples/SampleSummaryView.tsx,sha256=Gkcr9H37vcwpBn
|
|
251
252
|
inspect_ai/_view/www/src/app/samples/SamplesTools.tsx,sha256=Cwhr4aCne2p4k281QQxuO5ujNRTanc0z12AVG3iBfAQ,1767
|
252
253
|
inspect_ai/_view/www/src/app/samples/sampleDataAdapter.ts,sha256=mdZ4DQSbvvOjCESq8guFzfBBbbytyRUdwn6KA08Eks0,936
|
253
254
|
inspect_ai/_view/www/src/app/samples/sampleLimit.ts,sha256=GLfSpwF3-zpCJa-4lQteztd9F7L6yUud_Fs-cTeXyQs,608
|
254
|
-
inspect_ai/_view/www/src/app/samples/chat/ChatMessage.module.css,sha256=
|
255
|
-
inspect_ai/_view/www/src/app/samples/chat/ChatMessage.tsx,sha256=
|
255
|
+
inspect_ai/_view/www/src/app/samples/chat/ChatMessage.module.css,sha256=HkDgq_KEw0ZRBHRzV8mbN1RPhlBXOwW1OcuAOjxj1dE,546
|
256
|
+
inspect_ai/_view/www/src/app/samples/chat/ChatMessage.tsx,sha256=H1pRDNYJ0oNAdPB9hwN5na9VAcI59hHtLEn4ShdBX88,2780
|
256
257
|
inspect_ai/_view/www/src/app/samples/chat/ChatMessageRenderer.tsx,sha256=DPRsu5sgDvJIJ5tirqFkoxBPacPYc4Ooy3-7qJRaPKo,1505
|
257
258
|
inspect_ai/_view/www/src/app/samples/chat/ChatMessageRow.module.css,sha256=SmA8NLCidpd3Kk4HZvhr1ttA2hmuIk7we3ob5qokxIw,274
|
258
259
|
inspect_ai/_view/www/src/app/samples/chat/ChatMessageRow.tsx,sha256=9A77goO1FGtXtwIoWkNynGaMcEsPCsqBhHhs4ktvyDk,2250
|
@@ -315,11 +316,11 @@ inspect_ai/_view/www/src/app/samples/sample-tools/SelectScorer.module.css,sha256
|
|
315
316
|
inspect_ai/_view/www/src/app/samples/sample-tools/SelectScorer.tsx,sha256=7nzO1WKH6-jTfdePc-QB98uKmBmKX9Twu1sK5nzoZEo,4371
|
316
317
|
inspect_ai/_view/www/src/app/samples/sample-tools/SortFilter.module.css,sha256=7uNUEoHtsNxN6P5WFZQvoEzd55n9rsgmfhWCicFh1_c,106
|
317
318
|
inspect_ai/_view/www/src/app/samples/sample-tools/SortFilter.tsx,sha256=qZ-Vuuiq_TZA9A3ugH41HTo-Ugy6xSlXmrJuqHn-_w4,4637
|
318
|
-
inspect_ai/_view/www/src/app/samples/sample-tools/filters.ts,sha256=
|
319
|
+
inspect_ai/_view/www/src/app/samples/sample-tools/filters.ts,sha256=s8O2WXf2WTpD0qB2-tyaGWVb9LKKmagwE7l4JpWMYU4,10636
|
319
320
|
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/SampleFilter.module.css,sha256=PPdynh09MuEz0BMhHSximTj_BLNNAEQQQB8TH4amd3A,199
|
320
|
-
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/SampleFilter.tsx,sha256=
|
321
|
-
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/completions.ts,sha256=
|
322
|
-
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/language.ts,sha256=
|
321
|
+
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/SampleFilter.tsx,sha256=pHe7FOYb7dilDLorl1M_eh7JCNYFVpjH3OuVk6xuUyY,8416
|
322
|
+
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/completions.ts,sha256=sW1Tk_x4WNG1UqrijL3ijfLPSzVJaHHKoTgySt3mHcQ,21026
|
323
|
+
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/language.ts,sha256=dhLtC_73CjXiNTLtfkr-JBXeunCpyTJZwZH7aO7Sy58,1253
|
323
324
|
inspect_ai/_view/www/src/app/samples/sample-tools/sample-filter/tokenize.ts,sha256=tD45vb1d-8XSV0RmGbdJijk92KuC555ksBsVD43uxCA,2802
|
324
325
|
inspect_ai/_view/www/src/app/samples/scores/SampleScores.module.css,sha256=jhwzLYwYRzEFhGqFZUYpzHOG3yDDY33rH14-ECgC9TQ,96
|
325
326
|
inspect_ai/_view/www/src/app/samples/scores/SampleScores.tsx,sha256=U8bYNmgW51aid6FrBemPeGOhmTg2Z59FKeBHcPgTDvE,586
|
@@ -371,7 +372,7 @@ inspect_ai/_view/www/src/app/samples/transcript/event/EventTimingPanel.module.cs
|
|
371
372
|
inspect_ai/_view/www/src/app/samples/transcript/event/EventTimingPanel.tsx,sha256=MLsmFru7o37ymoZZdFkt2jhS9t4pzYFCLLaqshd4v_A,2746
|
372
373
|
inspect_ai/_view/www/src/app/samples/transcript/event/utils.ts,sha256=fFnt2DSCymWFdbzdf1P7r5nA6r472pNlCzQlUThkX_Q,766
|
373
374
|
inspect_ai/_view/www/src/app/samples/transcript/outline/OutlineRow.module.css,sha256=aeOYelj5_F2cyN7z72VZuhEVrLV9iCPXWP-w7AOl9Mk,598
|
374
|
-
inspect_ai/_view/www/src/app/samples/transcript/outline/OutlineRow.tsx,sha256=
|
375
|
+
inspect_ai/_view/www/src/app/samples/transcript/outline/OutlineRow.tsx,sha256=yMW6mgvF-9Yr6AILSUfcKOPvb9sYOTerLctEWFTtiSo,6131
|
375
376
|
inspect_ai/_view/www/src/app/samples/transcript/outline/TranscriptOutline.module.css,sha256=SXBox9F9srdAG14qhXm8VWKoH2sQE6uGm2mNvhXh-oQ,146
|
376
377
|
inspect_ai/_view/www/src/app/samples/transcript/outline/TranscriptOutline.tsx,sha256=ufbASbpZGENEia0m87UhxUNsJsJ7WbdQK9zV-BVcdYs,7715
|
377
378
|
inspect_ai/_view/www/src/app/samples/transcript/outline/tree-visitors.ts,sha256=rsdu7RjayZt-XcmwG4m600TChJwFQPsEJvz34dpyv-U,4792
|
@@ -403,14 +404,14 @@ inspect_ai/_view/www/src/app/usage/TokenTable.module.css,sha256=VkwYeWCKK3frYZpa
|
|
403
404
|
inspect_ai/_view/www/src/app/usage/TokenTable.tsx,sha256=Gvn8_v1XDyRVV6w5JvcopgskRuawIyHYFuA4MxKVTBg,1844
|
404
405
|
inspect_ai/_view/www/src/app/usage/UsageCard.module.css,sha256=YehyCCKrQKXYWJb7JkqMjyBofG0-b5vFDXsApqEITSs,266
|
405
406
|
inspect_ai/_view/www/src/app/usage/UsageCard.tsx,sha256=KLwfynSoXTh1ROsO_DNIpF0VL5VXdvS0gp2vNZs94iw,793
|
406
|
-
inspect_ai/_view/www/src/client/api/api-browser.ts,sha256
|
407
|
-
inspect_ai/_view/www/src/client/api/api-http.ts,sha256=
|
407
|
+
inspect_ai/_view/www/src/client/api/api-browser.ts,sha256=bhikhdadKa5va4H9b_S5o8YCEKa4JDHlj8FY0U_J1YA,7825
|
408
|
+
inspect_ai/_view/www/src/client/api/api-http.ts,sha256=kyO7Tpiskv3X9Gt3b9uqLxWGItfs3pypmQabf4P4OnY,6408
|
408
409
|
inspect_ai/_view/www/src/client/api/api-shared.ts,sha256=F0qCU97BN8p4DjsdK62hwoRSlcJUahCY--WyacbMRz0,1524
|
409
|
-
inspect_ai/_view/www/src/client/api/api-vscode.ts,sha256=
|
410
|
-
inspect_ai/_view/www/src/client/api/client-api.ts,sha256=
|
410
|
+
inspect_ai/_view/www/src/client/api/api-vscode.ts,sha256=DeW4TyrMcmXZ88CpJDbiuyKHFe_Ki1ktPsPB0jNZA5A,4150
|
411
|
+
inspect_ai/_view/www/src/client/api/client-api.ts,sha256=YWmpiJKFHwBczz4zJ4b826-hbyVafuxny-TlP7c34_8,9774
|
411
412
|
inspect_ai/_view/www/src/client/api/index.ts,sha256=LkMZu6xHkcgd-YQT9iipbgjOtKnWQ9GxN88MDJhNDmc,1771
|
412
|
-
inspect_ai/_view/www/src/client/api/jsonrpc.ts,sha256=
|
413
|
-
inspect_ai/_view/www/src/client/api/types.ts,sha256=
|
413
|
+
inspect_ai/_view/www/src/client/api/jsonrpc.ts,sha256=pv3NCYsh4WFbKXTNmT63iDgdmhngpA57ML0pEuvH_S0,5832
|
414
|
+
inspect_ai/_view/www/src/client/api/types.ts,sha256=c15vohyFvWfM6koqTwh7ipcVTMVIIY0geZK_JD2MvUE,5475
|
414
415
|
inspect_ai/_view/www/src/client/remote/remoteLogFile.ts,sha256=RnU5BerxbLVPavOrZlXI69rNu-eSrl6PepfpP8x-Ru8,6160
|
415
416
|
inspect_ai/_view/www/src/client/remote/remoteZipFile.ts,sha256=0WfRV-PjCRGK4Mv6GKB62HIBFPcTKgruiDEK-LX5svI,13007
|
416
417
|
inspect_ai/_view/www/src/client/storage/index.ts,sha256=7al8eAsanynNAWazurfZmkenZquWUHtfsKc5CqjERwE,986
|
@@ -475,7 +476,7 @@ inspect_ai/_view/www/src/state/logPolling.ts,sha256=hn32ICGS0GnnDmoxbRnGOK7695_k
|
|
475
476
|
inspect_ai/_view/www/src/state/logSlice.ts,sha256=kmq_6U8ZB-fvqIOZfOky_pL4IOzorpohQXFEQwrWi4Q,6551
|
476
477
|
inspect_ai/_view/www/src/state/logsPolling.ts,sha256=PSOcqLpx4-Ohgz5v1WEG4iIsGtrxrYcq01vml-xNQe4,2988
|
477
478
|
inspect_ai/_view/www/src/state/logsSlice.ts,sha256=j2wWMcx35VRCBrLwYMKsDguexYMfSvh0gZEx4IREJrA,5582
|
478
|
-
inspect_ai/_view/www/src/state/samplePolling.ts,sha256=
|
479
|
+
inspect_ai/_view/www/src/state/samplePolling.ts,sha256=fBsNbEOfHMxnPUVQFjYRoCbGa-mjqmyu4zDfCfgzZVw,9728
|
479
480
|
inspect_ai/_view/www/src/state/sampleSlice.ts,sha256=6L0mnIJycnMEc4LDecvbe95yvl_h7Cf85KAy1gv9ZXI,9671
|
480
481
|
inspect_ai/_view/www/src/state/sampleUtils.ts,sha256=cIGExXuYSzG-U6Pcac9ekF1818ShvkRzRKEY_nfqmvg,754
|
481
482
|
inspect_ai/_view/www/src/state/scoring.ts,sha256=TW4BNhRD1n8rYshrcOMPE27uFSCW_0XbkUJWbMlsH8U,2122
|
@@ -518,8 +519,8 @@ inspect_ai/agent/_agent.py,sha256=ovgzc64lfLnT8wq_xAyiHVfegfJVgktGc3fWJLceVms,89
|
|
518
519
|
inspect_ai/agent/_as_solver.py,sha256=glOKzItIPsveWDGlk2igLfFDOix_NlEkAtyQ6YsWB2Q,2976
|
519
520
|
inspect_ai/agent/_as_tool.py,sha256=-NGZUFAEimvSpog0UmNtYDMlbbuKaWnIgwNnMd_fffM,4912
|
520
521
|
inspect_ai/agent/_filter.py,sha256=qnT0HbT4edpDi0MwXY3Q3It2pzNRkTRXZDOqfCwMY6M,1234
|
521
|
-
inspect_ai/agent/_handoff.py,sha256=
|
522
|
-
inspect_ai/agent/_react.py,sha256=
|
522
|
+
inspect_ai/agent/_handoff.py,sha256=fonoLtC9CxCt7Ya_EbhHU-1indqVpOaTJ2b8-9BoM_k,3848
|
523
|
+
inspect_ai/agent/_react.py,sha256=oFUy2w96d9nSYeLBoeqLv1GuBjAFh0glPaPJ8M8jOPE,20003
|
523
524
|
inspect_ai/agent/_run.py,sha256=wXAE26-w0W1Brn5KTEQH5Esl_ZrwH37Po18yX-EZQsI,3171
|
524
525
|
inspect_ai/agent/_types.py,sha256=UeXBI_p8VVgEeMqenJjFRfyAWqWBKugUvVS2eJoIIUw,4560
|
525
526
|
inspect_ai/agent/_bridge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -580,7 +581,7 @@ inspect_ai/approval/_human/manager.py,sha256=Igae35VS99TejSWUShNwFuVnmhwByK30H84
|
|
580
581
|
inspect_ai/approval/_human/panel.py,sha256=UaO309bn7zMDV1I5GJcrZThhU8c8D4gOW7bwPRPPdkc,7672
|
581
582
|
inspect_ai/approval/_human/util.py,sha256=DPxpA9_pzeoQyHpGtRE3hx8sGV7MyrlElCBvsh1FNgA,1996
|
582
583
|
inspect_ai/dataset/__init__.py,sha256=4uTSHpN_ccdtbZulUMDetSSP-dXRkFGYsa2FzA5mLEw,534
|
583
|
-
inspect_ai/dataset/_dataset.py,sha256=
|
584
|
+
inspect_ai/dataset/_dataset.py,sha256=FmKmSppKlxY1-DedilUCjrAExdNAkdz17lm54sUiXpY,11948
|
584
585
|
inspect_ai/dataset/_util.py,sha256=0sPupAhfMS7Cm5aQWEIt5ULjAv9E7PdLqdeBb4mqE60,8720
|
585
586
|
inspect_ai/dataset/_examples/bias_detection.jsonl,sha256=ufXUZMjsJhY2_lJ9j_iJ6w0fiuyw7TQmJeMFoOqKYzM,20756
|
586
587
|
inspect_ai/dataset/_examples/biology_qa.jsonl,sha256=Hfkr8XRT2x6Cgjd-zKbWGfFD-ZEfi566FqLX4w9USKs,2009
|
@@ -603,7 +604,7 @@ inspect_ai/log/_log.py,sha256=EViZsKBEh6RmtOy6FtzKy59p7qdXNzkBfiQ1pKo4Z_c,30251
|
|
603
604
|
inspect_ai/log/_message.py,sha256=QofM_JZF_x3k_5ta1uQzoN_VnMoUhXFnqWurIn9FXOY,1999
|
604
605
|
inspect_ai/log/_model.py,sha256=8tEhFZc1tBFgA6A_spXTqTBdvbzZP5t7ul7DiloHRWk,1698
|
605
606
|
inspect_ai/log/_retry.py,sha256=e7a2hjl3Ncl8b8sU7CsDpvK8DV0b1uSRLeokRX1mt34,2109
|
606
|
-
inspect_ai/log/_samples.py,sha256=
|
607
|
+
inspect_ai/log/_samples.py,sha256=9NCu1RSMBjswkFkc4gy9A00qfqBQi7CrUaNi9duEld4,4930
|
607
608
|
inspect_ai/log/_transcript.py,sha256=l902I3WDDCcw424xkHToMxy1HEUaBBaId8LJdXila5E,16937
|
608
609
|
inspect_ai/log/_tree.py,sha256=C817m_7-66ThyCX5K4nVA7AzYOgLXWlKMdTQ-ueNA-U,3232
|
609
610
|
inspect_ai/log/_util.py,sha256=0IYnqqmDtL73BcRFU9TLlUemQf3OUh343SN-0r_MLfI,1750
|
@@ -621,7 +622,7 @@ inspect_ai/log/_recorders/buffer/filestore.py,sha256=0RYD7VR61XoM9Gx8wpqQ8utNqGb
|
|
621
622
|
inspect_ai/log/_recorders/buffer/types.py,sha256=1cyKA_vrXCh2Q560qDSwLSgR7Mx45R2g4-8c76PontE,2054
|
622
623
|
inspect_ai/model/__init__.py,sha256=FlD6GS5kpn9v4xUEInK9xEMhHbOtIP5QQzDoQuqZzgM,2796
|
623
624
|
inspect_ai/model/_cache.py,sha256=Bl6WS9b1kJRVsGK0h7Fd1-mDAbrlxvNXMPK30P3aMuM,13736
|
624
|
-
inspect_ai/model/_call_tools.py,sha256=
|
625
|
+
inspect_ai/model/_call_tools.py,sha256=zCTaLDISbqGgf2VEDU2yLVlPGOvM2PeMpTAG0hdtTZ0,30809
|
625
626
|
inspect_ai/model/_chat_message.py,sha256=IDy3bPr9vbO35PgnycDNfyXiryrnCaCoGKhBAhj18y0,7515
|
626
627
|
inspect_ai/model/_conversation.py,sha256=J4zxb8mJdcpV5zLEDYS-ikQckONeaUZrqNReLLruUOE,374
|
627
628
|
inspect_ai/model/_display.py,sha256=0wb9tV4PItvwgUpqpxLCL60oWlg4lT1nVA6GKJV3rcU,3090
|
@@ -638,14 +639,14 @@ inspect_ai/model/_trim.py,sha256=y2bSok4y844spv7vdjUVGnxWG93WcslAsXyplWDoRqU,337
|
|
638
639
|
inspect_ai/model/_providers/_anthropic_citations.py,sha256=8Wub6F8vvup0-e-BKV3wcrT4n1_7q9Rimv0xnMQAEZM,5767
|
639
640
|
inspect_ai/model/_providers/_google_citations.py,sha256=KtqQdvUrWV1lGYfD7aLOIwUbIqZbVJDCoX-uCMHBZz8,3573
|
640
641
|
inspect_ai/model/_providers/_openai_computer_use.py,sha256=vbKkYLhqNuX16zuWfg5MaGp9H8URrPcLhKQ1pDsZtPo,5943
|
641
|
-
inspect_ai/model/_providers/_openai_web_search.py,sha256=
|
642
|
-
inspect_ai/model/_providers/anthropic.py,sha256=
|
642
|
+
inspect_ai/model/_providers/_openai_web_search.py,sha256=8hTUNmt7nYCWMn1RjxevWdeZL7FyLi6T2AWKOciNz3w,1228
|
643
|
+
inspect_ai/model/_providers/anthropic.py,sha256=Dzu_5nWH4Xx1XklARkjCP0jkIvt8Nf5SDmzgblPGsf4,42201
|
643
644
|
inspect_ai/model/_providers/azureai.py,sha256=KzgPYtUMsqEZZTHWYWYLnnRd6wh4qqlqqZL2JwvraLs,16738
|
644
645
|
inspect_ai/model/_providers/bedrock.py,sha256=G252v6gUXtT56M4JaLLY7tEw2AJVQFucjeFgv0okhgo,23999
|
645
646
|
inspect_ai/model/_providers/cloudflare.py,sha256=9yHfA5qbKWjzOfOzCJ_u8CZsH_U7AolAWLxvLBXKrhM,2375
|
646
|
-
inspect_ai/model/_providers/google.py,sha256=
|
647
|
+
inspect_ai/model/_providers/google.py,sha256=6omSismcBEFH_2lVhOhLF5A3ceMpuZiARxWD91n2R6E,35748
|
647
648
|
inspect_ai/model/_providers/grok.py,sha256=iAPXmZMR7VWPq6EIwRsoUJr_TR6b5kTt-Fkba1pogGQ,1267
|
648
|
-
inspect_ai/model/_providers/groq.py,sha256=
|
649
|
+
inspect_ai/model/_providers/groq.py,sha256=uPzH8gmJhBOwgXWAdiqtCYlBi79E051wr6-bxUrMUwA,12503
|
649
650
|
inspect_ai/model/_providers/hf.py,sha256=jyXi4qyq2hdsp1waB2ON5m8f9mpE2h1GFD7Tu_phCEo,19115
|
650
651
|
inspect_ai/model/_providers/llama_cpp_python.py,sha256=qVGpR7qnuP3wbYfFqSTkSc63sYsNnK1XC5IV-Ac0Uu4,618
|
651
652
|
inspect_ai/model/_providers/mistral.py,sha256=TNVrwS1gJ-ClxPvDnhGQBelLtEm6r4eF4t25H0pJwQw,18152
|
@@ -657,8 +658,8 @@ inspect_ai/model/_providers/openai_compatible.py,sha256=2dGx2pJSj6o0uJWKE3mimX47
|
|
657
658
|
inspect_ai/model/_providers/openai_o1.py,sha256=ahdXt2TFtPTdDvSGVQw7EaVindfbFbY2pLZrrB45rFg,13305
|
658
659
|
inspect_ai/model/_providers/openai_responses.py,sha256=eNDDCyIfBPCy_gTbpRDr5UicGR_8xkIq9TBTZT7wU7w,6685
|
659
660
|
inspect_ai/model/_providers/openrouter.py,sha256=sm-XlzcevoZfoR4C00jCxlfeL2NlnPVpJJA1mFFgkgw,4990
|
660
|
-
inspect_ai/model/_providers/perplexity.py,sha256=
|
661
|
-
inspect_ai/model/_providers/providers.py,sha256=
|
661
|
+
inspect_ai/model/_providers/perplexity.py,sha256=LUvy4kk_v4--zA08yqgQtPj4COecXP7Jym8ThtUxOGw,5954
|
662
|
+
inspect_ai/model/_providers/providers.py,sha256=w8QpVV0Hj_pQjOEC3W-bisJraSwe3QbovH8-sYBz2Cc,6806
|
662
663
|
inspect_ai/model/_providers/sglang.py,sha256=vmIIFC-wyltCAvewvgMVRs4jfp9wFSfinTuNo9TQxM8,8750
|
663
664
|
inspect_ai/model/_providers/together.py,sha256=EUNag5nraqo3GvzwKB1jukhZj-GACxsCGPrBC4VR2MU,9786
|
664
665
|
inspect_ai/model/_providers/vertex.py,sha256=_8wsThFHIpuwJ5Bvmx8PsEYKqauUYZ1v8B3dn41CtFw,17328
|
@@ -745,27 +746,28 @@ inspect_ai/tool/_tools/_web_search/_base_http_provider.py,sha256=ww9SbvrXa5MNxwR
|
|
745
746
|
inspect_ai/tool/_tools/_web_search/_exa.py,sha256=vH5aLLsWRYpTaSkk1jN6os3x-eE8uAqT_U5ToJaIoP8,2372
|
746
747
|
inspect_ai/tool/_tools/_web_search/_google.py,sha256=CD1ckTpw4prwkancWz6_aTWwGZ4xwKfbDcqAPiSLNS4,7239
|
747
748
|
inspect_ai/tool/_tools/_web_search/_tavily.py,sha256=4i9lqhWTgT_cD-cocDQjW-eJhRZZ6pjzlFfKYe1rfdg,3053
|
748
|
-
inspect_ai/tool/_tools/_web_search/_web_search.py,sha256=
|
749
|
+
inspect_ai/tool/_tools/_web_search/_web_search.py,sha256=qB6O-NAdt4FYFshf02r71nIOYETuSOdMpAUgEeHw4BE,11308
|
749
750
|
inspect_ai/tool/_tools/_web_search/_web_search_provider.py,sha256=SvbQd7l2wqz5cAdNk9zrXX8NqOoWd-FEtF-6zyLA7MA,208
|
750
|
-
inspect_ai/util/__init__.py,sha256=
|
751
|
+
inspect_ai/util/__init__.py,sha256=pYCxgPSDHdN9S2UtYhL8l_oUkiVFInQ_-waSFrD09x8,2281
|
751
752
|
inspect_ai/util/_anyio.py,sha256=ImV_Q9oJ0XT0Fy6qa68OHpCzcUbfxptbHAjYWre-m2U,1541
|
753
|
+
inspect_ai/util/_background.py,sha256=9W1h87f9lH_uCaaYG_FjSfJOYpFtMF-5UuBeAsXljpo,1559
|
752
754
|
inspect_ai/util/_collect.py,sha256=--eYTBln__H0DVx_xKd2Rc6buz4gFuNkMccrA6nmqU0,1456
|
753
755
|
inspect_ai/util/_concurrency.py,sha256=mmXAfizGQggMIeppcMNxtnfcOeFDz0SU2S1ICKTWDLo,2962
|
754
756
|
inspect_ai/util/_console.py,sha256=V1XkIoKcNZo0SgRUOv15zJAWz6-zV6267hC4Oldj8oY,1237
|
755
757
|
inspect_ai/util/_conversation.py,sha256=KzqvKfj1tB14cgARZjYyIVG2EpuE-EZKqLGAPIXv1Xs,784
|
756
758
|
inspect_ai/util/_display.py,sha256=Co-5U0ei98GLYPbwWqMoimWNmIIL8lv3D8oTSuT9DiA,2448
|
757
759
|
inspect_ai/util/_json.py,sha256=X6J1JKuxteP76mHaU3qDrFDYWizWt5xNjm65ag72_2E,6952
|
758
|
-
inspect_ai/util/_limit.py,sha256
|
760
|
+
inspect_ai/util/_limit.py,sha256=LlBjt1uhK59TeUnoeYxeIany3HQDvSylBnhB8JW7buA,22736
|
759
761
|
inspect_ai/util/_limited_conversation.py,sha256=rfM45soaVmtGrYTaUk_ibZxTe8rbP5bzGlIWJCYBWM8,1997
|
760
762
|
inspect_ai/util/_panel.py,sha256=MdZxOt0F01ddn_NsRfwn0es6UjQasK1_EKIQ6jtQyG8,3124
|
761
763
|
inspect_ai/util/_resource.py,sha256=X280aW_7VCkVTGk812tuU5qnZlGM5Qt1-kANr-DaGOs,3389
|
762
764
|
inspect_ai/util/_span.py,sha256=y1GOS8h-e9fujDyTJTWOaQIsey8Ldhu8osN-fYiAdlE,1680
|
763
765
|
inspect_ai/util/_store.py,sha256=QemJe2M-RK6zSFNcd07_92XFjvNtWKgHzBr5eT3KF1I,3786
|
764
766
|
inspect_ai/util/_store_model.py,sha256=PVXh0_Rtemu5WNLTs2bcnZnKFGj2pT_np-1dBnkldr8,5125
|
765
|
-
inspect_ai/util/_subprocess.py,sha256=
|
767
|
+
inspect_ai/util/_subprocess.py,sha256=H536zfPCFJPYyVjKoenDLpBfCj6YT6xufihrmUC8omw,8684
|
766
768
|
inspect_ai/util/_subtask.py,sha256=gj108R8mnSSJsXALYpuHf7Z6qA4TRfKtwj1y68og6Wc,5065
|
767
769
|
inspect_ai/util/_throttle.py,sha256=JczSG_y0v60m4gQCt28uw_WPjJTbHuq8gWcxY3-vFsc,855
|
768
|
-
inspect_ai/util/_sandbox/__init__.py,sha256=
|
770
|
+
inspect_ai/util/_sandbox/__init__.py,sha256=C8saQ-TPCGxBEdGqWF0PFwdH2JkGnNemx-sJ4gRQAjA,974
|
769
771
|
inspect_ai/util/_sandbox/context.py,sha256=CS-JS9lTDwaNclMXaT0ilaU-aIuHtV6HaV7_2-myZlM,10025
|
770
772
|
inspect_ai/util/_sandbox/environment.py,sha256=yxQAKJqXHzifoo1v_gRRizEmMTLDl1KtUAcT50VAjDI,14578
|
771
773
|
inspect_ai/util/_sandbox/events.py,sha256=NJ724uZnjxOHBdkrNkecEl2DMQ4q0PLOH1QCJOHllXw,5463
|
@@ -773,7 +775,7 @@ inspect_ai/util/_sandbox/limits.py,sha256=K-GjKfSugOq8KP0wW_oF6qFrXsOnMV0C88QUWk
|
|
773
775
|
inspect_ai/util/_sandbox/local.py,sha256=A_6kvAqoU483cKetKI5r-8fggM2uThFZeOY5Tz2_K0o,3538
|
774
776
|
inspect_ai/util/_sandbox/registry.py,sha256=mQwWwqzaCXF1FZ2fcVujpp3WMA35GWnh1w43SoIJAVM,2145
|
775
777
|
inspect_ai/util/_sandbox/self_check.py,sha256=iYdAzb_ufMgA0yDQQJ3v5RcKCFTkayp-nqO-A8DFhfI,23915
|
776
|
-
inspect_ai/util/_sandbox/service.py,sha256=
|
778
|
+
inspect_ai/util/_sandbox/service.py,sha256=pOQ-HU2m6rjtZE1tBDX9Wpy4IeIfBVyxoBNYGbgEjx4,12451
|
777
779
|
inspect_ai/util/_sandbox/docker/cleanup.py,sha256=pGYzgCviZqbrFcM1AASIHWCrYE1pS_g4OamcVWKrkMM,5257
|
778
780
|
inspect_ai/util/_sandbox/docker/compose.py,sha256=r7BtNv5JGJsL8IwQmW_DFSN7JFMRAjneC7WBtGkIagM,12292
|
779
781
|
inspect_ai/util/_sandbox/docker/config.py,sha256=5-YsouGJGxNXw8xNEZi1o4H0EaqaTLKoQhwYT2Iczb4,2925
|
@@ -782,9 +784,9 @@ inspect_ai/util/_sandbox/docker/internal.py,sha256=c8X8TLrBPOvsfnq5TkMlb_bzTALyc
|
|
782
784
|
inspect_ai/util/_sandbox/docker/prereqs.py,sha256=0j6_OauBBnVlpBleADcZavIAAQZy4WewVjbRn9c0stg,3355
|
783
785
|
inspect_ai/util/_sandbox/docker/service.py,sha256=hhHIWH1VDFLwehdGd19aUBD_VKfDO3GCPxpw1HSwVQk,2437
|
784
786
|
inspect_ai/util/_sandbox/docker/util.py,sha256=EeInihCNXgUWxaqZ4dNOJd719kXL2_jr63QCoXn68vA,3154
|
785
|
-
inspect_ai-0.3.
|
786
|
-
inspect_ai-0.3.
|
787
|
-
inspect_ai-0.3.
|
788
|
-
inspect_ai-0.3.
|
789
|
-
inspect_ai-0.3.
|
790
|
-
inspect_ai-0.3.
|
787
|
+
inspect_ai-0.3.106.dist-info/licenses/LICENSE,sha256=xZPCr8gTiFIerrA_DRpLAbw-UUftnLFsHxKeW-NTtq8,1081
|
788
|
+
inspect_ai-0.3.106.dist-info/METADATA,sha256=R9CGAToXOHjO1m2iMWBrH21ekfL-X7bOyM4cOsPM8Ik,5467
|
789
|
+
inspect_ai-0.3.106.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
790
|
+
inspect_ai-0.3.106.dist-info/entry_points.txt,sha256=WGGLmzTzDWLzYfiyovSY6oEKuf-gqzSDNOb5V-hk3fM,54
|
791
|
+
inspect_ai-0.3.106.dist-info/top_level.txt,sha256=Tp3za30CHXJEKLk8xLe9qGsW4pBzJpEIOMHOHNCXiVo,11
|
792
|
+
inspect_ai-0.3.106.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|