inspect-ai 0.3.107__py3-none-any.whl → 0.3.109__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 (142) hide show
  1. inspect_ai/_eval/task/log.py +1 -1
  2. inspect_ai/_eval/task/run.py +1 -1
  3. inspect_ai/_util/dateutil.py +40 -0
  4. inspect_ai/_view/schema.py +11 -0
  5. inspect_ai/_view/www/CLAUDE.md +1 -1
  6. inspect_ai/_view/www/dist/assets/index.css +2068 -1796
  7. inspect_ai/_view/www/dist/assets/index.js +7951 -3643
  8. inspect_ai/_view/www/package.json +3 -2
  9. inspect_ai/_view/www/src/@types/log.d.ts +5 -5
  10. inspect_ai/_view/www/src/app/App.css +71 -4
  11. inspect_ai/_view/www/src/app/App.tsx +7 -0
  12. inspect_ai/_view/www/src/app/appearance/icons.ts +18 -2
  13. inspect_ai/_view/www/src/app/content/RenderedContent.tsx +7 -9
  14. inspect_ai/_view/www/src/app/log-list/LogItem.ts +18 -0
  15. inspect_ai/_view/www/src/app/log-list/LogListFooter.module.css +55 -0
  16. inspect_ai/_view/www/src/app/log-list/LogListFooter.tsx +67 -0
  17. inspect_ai/_view/www/src/app/log-list/LogPager.module.css +29 -0
  18. inspect_ai/_view/www/src/app/log-list/LogPager.tsx +134 -0
  19. inspect_ai/_view/www/src/app/log-list/LogsFilterInput.module.css +5 -0
  20. inspect_ai/_view/www/src/app/log-list/LogsFilterInput.tsx +31 -0
  21. inspect_ai/_view/www/src/app/log-list/LogsPanel.module.css +12 -0
  22. inspect_ai/_view/www/src/app/log-list/LogsPanel.tsx +178 -0
  23. inspect_ai/_view/www/src/app/log-list/grid/LogListGrid.module.css +115 -0
  24. inspect_ai/_view/www/src/app/log-list/grid/LogListGrid.tsx +304 -0
  25. inspect_ai/_view/www/src/app/log-list/grid/columns/CompletedDate.module.css +6 -0
  26. inspect_ai/_view/www/src/app/log-list/grid/columns/CompletedDate.tsx +64 -0
  27. inspect_ai/_view/www/src/app/log-list/grid/columns/EmptyCell.module.css +3 -0
  28. inspect_ai/_view/www/src/app/log-list/grid/columns/EmptyCell.tsx +7 -0
  29. inspect_ai/_view/www/src/app/log-list/grid/columns/FileName.module.css +20 -0
  30. inspect_ai/_view/www/src/app/log-list/grid/columns/FileName.tsx +52 -0
  31. inspect_ai/_view/www/src/app/log-list/grid/columns/Icon.module.css +11 -0
  32. inspect_ai/_view/www/src/app/log-list/grid/columns/Icon.tsx +35 -0
  33. inspect_ai/_view/www/src/app/log-list/grid/columns/Model.module.css +6 -0
  34. inspect_ai/_view/www/src/app/log-list/grid/columns/Model.tsx +34 -0
  35. inspect_ai/_view/www/src/app/log-list/grid/columns/Score.module.css +6 -0
  36. inspect_ai/_view/www/src/app/log-list/grid/columns/Score.tsx +61 -0
  37. inspect_ai/_view/www/src/app/log-list/grid/columns/Status.module.css +15 -0
  38. inspect_ai/_view/www/src/app/log-list/grid/columns/Status.tsx +95 -0
  39. inspect_ai/_view/www/src/app/log-list/grid/columns/Task.module.css +20 -0
  40. inspect_ai/_view/www/src/app/log-list/grid/columns/Task.tsx +50 -0
  41. inspect_ai/_view/www/src/app/log-list/grid/columns/columns.ts +27 -0
  42. inspect_ai/_view/www/src/app/log-view/LogView.tsx +2 -5
  43. inspect_ai/_view/www/src/app/log-view/LogViewContainer.tsx +4 -30
  44. inspect_ai/_view/www/src/app/log-view/LogViewLayout.tsx +5 -30
  45. inspect_ai/_view/www/src/app/log-view/tabs/TaskTab.tsx +4 -7
  46. inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/PrimaryBar.module.css +2 -0
  47. inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/PrimaryBar.tsx +3 -31
  48. inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ResultsPanel.tsx +7 -57
  49. inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ScoreGrid.tsx +2 -2
  50. inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/SecondaryBar.tsx +7 -1
  51. inspect_ai/_view/www/src/app/log-view/{navbar/Navbar.tsx → title-view/TitleView.tsx} +3 -6
  52. inspect_ai/_view/www/src/app/navbar/Navbar.module.css +57 -0
  53. inspect_ai/_view/www/src/app/navbar/Navbar.tsx +117 -0
  54. inspect_ai/_view/www/src/app/navbar/useBreadcrumbTruncation.ts +128 -0
  55. inspect_ai/_view/www/src/app/plan/DatasetDetailView.tsx +3 -3
  56. inspect_ai/_view/www/src/app/plan/DetailStep.tsx +6 -6
  57. inspect_ai/_view/www/src/app/plan/PlanDetailView.module.css +1 -0
  58. inspect_ai/_view/www/src/app/plan/ScorerDetailView.tsx +1 -1
  59. inspect_ai/_view/www/src/app/routing/AppRouter.tsx +28 -4
  60. inspect_ai/_view/www/src/app/routing/RouteDispatcher.tsx +28 -0
  61. inspect_ai/_view/www/src/app/routing/sampleNavigation.ts +76 -7
  62. inspect_ai/_view/www/src/app/routing/url.ts +193 -20
  63. inspect_ai/_view/www/src/app/samples/SampleDisplay.tsx +3 -17
  64. inspect_ai/_view/www/src/app/samples/descriptor/score/ScoreDescriptor.tsx +1 -1
  65. inspect_ai/_view/www/src/app/samples/transcript/SubtaskEventView.tsx +2 -2
  66. inspect_ai/_view/www/src/app/samples/transcript/TranscriptPanel.tsx +2 -2
  67. inspect_ai/_view/www/src/app/samples/transcript/outline/tree-visitors.ts +5 -0
  68. inspect_ai/_view/www/src/app/samples/transcript/transform/treeify.ts +26 -10
  69. inspect_ai/_view/www/src/app/types.ts +21 -1
  70. inspect_ai/_view/www/src/client/api/api-http.ts +2 -1
  71. inspect_ai/_view/www/src/client/api/api-shared.ts +0 -32
  72. inspect_ai/_view/www/src/client/api/client-api.ts +1 -1
  73. inspect_ai/_view/www/src/client/remote/remoteLogFile.ts +38 -6
  74. inspect_ai/_view/www/src/components/TextInput.module.css +45 -0
  75. inspect_ai/_view/www/src/components/TextInput.tsx +52 -0
  76. inspect_ai/_view/www/src/constants.ts +18 -0
  77. inspect_ai/_view/www/src/img/inspect-16.svg +10 -0
  78. inspect_ai/_view/www/src/img/inspect-back.svg +5 -0
  79. inspect_ai/_view/www/src/img/inspect-file.svg +26 -0
  80. inspect_ai/_view/www/src/img/inspect-forward.svg +7 -0
  81. inspect_ai/_view/www/src/img/inspect-home.svg +18 -0
  82. inspect_ai/_view/www/src/scoring/metrics.ts +75 -0
  83. inspect_ai/_view/www/src/scoring/scores.ts +19 -0
  84. inspect_ai/_view/www/src/scoring/types.ts +11 -0
  85. inspect_ai/_view/www/src/state/appSlice.ts +27 -7
  86. inspect_ai/_view/www/src/state/clientEvents.ts +73 -0
  87. inspect_ai/_view/www/src/state/clientEventsService.ts +105 -0
  88. inspect_ai/_view/www/src/state/hooks.ts +118 -1
  89. inspect_ai/_view/www/src/state/log.ts +19 -0
  90. inspect_ai/_view/www/src/state/logPolling.ts +3 -1
  91. inspect_ai/_view/www/src/state/logSlice.ts +9 -0
  92. inspect_ai/_view/www/src/state/logsSlice.ts +157 -15
  93. inspect_ai/_view/www/src/state/samplePolling.ts +4 -2
  94. inspect_ai/_view/www/src/tests/utils/path.test.ts +3 -3
  95. inspect_ai/_view/www/src/utils/evallog.ts +31 -0
  96. inspect_ai/_view/www/src/utils/path.ts +28 -0
  97. inspect_ai/_view/www/src/utils/uri.ts +49 -0
  98. inspect_ai/_view/www/yarn.lock +54 -17
  99. inspect_ai/analysis/beta/_dataframe/util.py +106 -10
  100. inspect_ai/log/_recorders/buffer/database.py +55 -16
  101. inspect_ai/model/_model.py +1 -1
  102. inspect_ai/model/_providers/_anthropic_citations.py +1 -4
  103. inspect_ai/model/_providers/providers.py +2 -2
  104. inspect_ai/model/_providers/vertex.py +3 -0
  105. inspect_ai/tool/_mcp/_mcp.py +6 -1
  106. inspect_ai/tool/_mcp/sampling.py +8 -1
  107. inspect_ai/tool/_tools/_bash_session.py +3 -6
  108. inspect_ai/tool/_tools/_web_browser/_web_browser.py +3 -8
  109. inspect_ai/util/_anyio.py +12 -3
  110. {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/METADATA +2 -2
  111. {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/RECORD +125 -95
  112. inspect_ai/_util/datetime.py +0 -10
  113. inspect_ai/_view/www/src/app/content/MetaDataView.module.css +0 -35
  114. inspect_ai/_view/www/src/app/content/MetaDataView.tsx +0 -101
  115. inspect_ai/_view/www/src/app/log-view/utils.ts +0 -34
  116. inspect_ai/_view/www/src/app/sidebar/EvalStatus.module.css +0 -15
  117. inspect_ai/_view/www/src/app/sidebar/EvalStatus.tsx +0 -72
  118. inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.module.css +0 -16
  119. inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.tsx +0 -70
  120. inspect_ai/_view/www/src/app/sidebar/Sidebar.module.css +0 -77
  121. inspect_ai/_view/www/src/app/sidebar/Sidebar.tsx +0 -119
  122. inspect_ai/_view/www/src/app/sidebar/SidebarLogEntry.module.css +0 -29
  123. inspect_ai/_view/www/src/app/sidebar/SidebarLogEntry.tsx +0 -96
  124. inspect_ai/_view/www/src/app/sidebar/SidebarScoreView.module.css +0 -23
  125. inspect_ai/_view/www/src/app/sidebar/SidebarScoreView.tsx +0 -44
  126. inspect_ai/_view/www/src/app/sidebar/SidebarScoresView.module.css +0 -35
  127. inspect_ai/_view/www/src/app/sidebar/SidebarScoresView.tsx +0 -63
  128. inspect_ai/_view/www/src/state/logsPolling.ts +0 -118
  129. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ModelRolesView.module.css +0 -0
  130. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ModelRolesView.tsx +0 -0
  131. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ResultsPanel.module.css +0 -0
  132. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/RunningStatusPanel.module.css +0 -0
  133. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/RunningStatusPanel.tsx +0 -0
  134. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ScoreGrid.module.css +0 -0
  135. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/SecondaryBar.module.css +0 -0
  136. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/StatusPanel.module.css +0 -0
  137. /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/StatusPanel.tsx +0 -0
  138. /inspect_ai/_view/www/src/app/log-view/{navbar/Navbar.module.css → title-view/TitleView.module.css} +0 -0
  139. {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/WHEEL +0 -0
  140. {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/entry_points.txt +0 -0
  141. {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/licenses/LICENSE +0 -0
  142. {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@ from shortuuid import uuid
6
6
  from inspect_ai._display.core.display import TaskDisplayMetric
7
7
  from inspect_ai._eval.task.util import slice_dataset
8
8
  from inspect_ai._util.constants import PKG_NAME
9
- from inspect_ai._util.datetime import iso_now
9
+ from inspect_ai._util.dateutil import iso_now
10
10
  from inspect_ai._util.git import git_context
11
11
  from inspect_ai._util.path import cwd_relative_path
12
12
  from inspect_ai._util.registry import (
@@ -26,7 +26,7 @@ from inspect_ai._util.constants import (
26
26
  DEFAULT_EPOCHS,
27
27
  DEFAULT_MAX_CONNECTIONS,
28
28
  )
29
- from inspect_ai._util.datetime import iso_now
29
+ from inspect_ai._util.dateutil import iso_now
30
30
  from inspect_ai._util.error import exception_message
31
31
  from inspect_ai._util.exception import TerminateSampleError
32
32
  from inspect_ai._util.hooks import send_telemetry
@@ -0,0 +1,40 @@
1
+ import datetime
2
+ from logging import getLogger
3
+ from pathlib import Path
4
+ from typing import Literal
5
+
6
+
7
+ def iso_now(
8
+ timespec: Literal[
9
+ "auto", "hours", "minutes", "seconds", "milliseconds", "microseconds"
10
+ ] = "seconds",
11
+ ) -> str:
12
+ return datetime.datetime.now().astimezone().isoformat(timespec=timespec)
13
+
14
+
15
+ logger = getLogger(__name__)
16
+
17
+
18
+ def is_file_older_than(
19
+ path: str | Path, delta: datetime.timedelta, *, default: bool
20
+ ) -> bool:
21
+ """Check if a file's modification time is older than a given time delta.
22
+
23
+ Args:
24
+ path: Path to the file to check
25
+ delta: Time delta to compare against
26
+ default: Value to return if file doesn't exist or isn't accessible
27
+
28
+ Returns:
29
+ True if file was last modified before (now - delta), False otherwise.
30
+ """
31
+ try:
32
+ path = Path(path)
33
+ mtime = path.lstat().st_mtime
34
+ path_mtime = datetime.datetime.fromtimestamp(mtime, tz=datetime.timezone.utc)
35
+ cutoff_time = datetime.datetime.now(datetime.timezone.utc) - delta
36
+ return path_mtime < cutoff_time
37
+ # OSError is expected in cases where the file doesn't exist or
38
+ # for some reason isn't accessible (e.g. due to permissions)
39
+ except OSError:
40
+ return default
@@ -8,6 +8,15 @@ from inspect_ai.log import EvalLog
8
8
 
9
9
  WWW_DIR = os.path.abspath((Path(__file__).parent / "www").as_posix())
10
10
 
11
+ BANNER = """
12
+ /*
13
+ * This file is automatically generated by schema.py
14
+ * DO NOT MODIFY IT BY HAND.
15
+ * To regenerate, run: python -m ../schema.py from within the
16
+ * src/inspect_ai/_view/www directory.
17
+ */
18
+ """
19
+
11
20
 
12
21
  def sync_view_schema() -> None:
13
22
  """Generate a JSON schema and Typescript types for EvalLog.
@@ -39,6 +48,8 @@ def sync_view_schema() -> None:
39
48
  types_path,
40
49
  "--additionalProperties",
41
50
  "false",
51
+ "--bannerComment",
52
+ BANNER,
42
53
  ],
43
54
  cwd=WWW_DIR,
44
55
  check=True,
@@ -12,4 +12,4 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
12
12
  ## Other Information
13
13
 
14
14
  - The code in this project is typescript, learn more about the configuration by inspecting package.json.
15
- - Respect existing code patterns when modifying files. Run linting before committing changes.
15
+ - Respect existing code patterns when modifying files. Run linting before committing changes.