inspect-ai 0.3.62__py3-none-any.whl → 0.3.63__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 (415) hide show
  1. inspect_ai/_cli/main.py +1 -1
  2. inspect_ai/_cli/trace.py +8 -0
  3. inspect_ai/_display/core/active.py +2 -3
  4. inspect_ai/_eval/eval.py +4 -4
  5. inspect_ai/_eval/evalset.py +6 -6
  6. inspect_ai/_eval/task/run.py +3 -0
  7. inspect_ai/_util/hash.py +1 -1
  8. inspect_ai/_view/www/.vscode/extensions.json +3 -0
  9. inspect_ai/_view/www/.vscode/settings.json +8 -0
  10. inspect_ai/_view/www/App.css +92 -29
  11. inspect_ai/_view/www/dist/assets/index.css +16637 -14676
  12. inspect_ai/_view/www/dist/assets/index.js +58897 -51440
  13. inspect_ai/_view/www/dist/index.html +1 -1
  14. inspect_ai/_view/www/index.html +2 -2
  15. inspect_ai/_view/www/log-schema.json +1 -0
  16. inspect_ai/_view/www/package.json +22 -4
  17. inspect_ai/_view/www/postcss.config.cjs +8 -9
  18. inspect_ai/_view/www/src/{App.mjs → App.tsx} +355 -365
  19. inspect_ai/_view/www/src/AppErrorBoundary.tsx +47 -0
  20. inspect_ai/_view/www/src/api/api-browser.ts +2 -2
  21. inspect_ai/_view/www/src/api/api-http.ts +3 -5
  22. inspect_ai/_view/www/src/api/api-vscode.ts +6 -6
  23. inspect_ai/_view/www/src/api/client-api.ts +4 -4
  24. inspect_ai/_view/www/src/api/index.ts +4 -4
  25. inspect_ai/_view/www/src/api/{Types.ts → types.ts} +25 -9
  26. inspect_ai/_view/www/src/appearance/colors.ts +9 -0
  27. inspect_ai/_view/www/src/appearance/fonts.ts +39 -0
  28. inspect_ai/_view/www/src/appearance/icons.ts +100 -0
  29. inspect_ai/_view/www/src/appearance/{Styles.mjs → styles.ts} +2 -32
  30. inspect_ai/_view/www/src/components/AnsiDisplay.tsx +198 -0
  31. inspect_ai/_view/www/src/components/AsciinemaPlayer.tsx +86 -0
  32. inspect_ai/_view/www/src/components/Card.css +60 -0
  33. inspect_ai/_view/www/src/components/Card.tsx +109 -0
  34. inspect_ai/_view/www/src/components/CopyButton.module.css +11 -0
  35. inspect_ai/_view/www/src/components/CopyButton.tsx +58 -0
  36. inspect_ai/_view/www/src/components/DownloadButton.css +4 -0
  37. inspect_ai/_view/www/src/components/DownloadButton.tsx +25 -0
  38. inspect_ai/_view/www/src/components/DownloadPanel.css +10 -0
  39. inspect_ai/_view/www/src/components/DownloadPanel.tsx +30 -0
  40. inspect_ai/_view/www/src/components/EmptyPanel.css +12 -0
  41. inspect_ai/_view/www/src/components/EmptyPanel.tsx +15 -0
  42. inspect_ai/_view/www/src/components/ErrorPanel.css +37 -0
  43. inspect_ai/_view/www/src/components/ErrorPanel.tsx +39 -0
  44. inspect_ai/_view/www/src/components/ExpandablePanel.css +40 -0
  45. inspect_ai/_view/www/src/components/ExpandablePanel.tsx +115 -0
  46. inspect_ai/_view/www/src/components/FindBand.css +49 -0
  47. inspect_ai/_view/www/src/components/FindBand.tsx +130 -0
  48. inspect_ai/_view/www/src/components/HumanBaselineView.css +41 -0
  49. inspect_ai/_view/www/src/components/HumanBaselineView.tsx +162 -0
  50. inspect_ai/_view/www/src/components/JsonPanel.css +20 -0
  51. inspect_ai/_view/www/src/components/JsonPanel.tsx +82 -0
  52. inspect_ai/_view/www/src/components/LabeledValue.css +20 -0
  53. inspect_ai/_view/www/src/components/LabeledValue.tsx +41 -0
  54. inspect_ai/_view/www/src/components/LargeModal.module.css +54 -0
  55. inspect_ai/_view/www/src/components/LargeModal.tsx +199 -0
  56. inspect_ai/_view/www/src/components/LightboxCarousel.css +95 -0
  57. inspect_ai/_view/www/src/components/LightboxCarousel.tsx +132 -0
  58. inspect_ai/_view/www/src/components/MarkdownDiv.css +3 -0
  59. inspect_ai/_view/www/src/components/MarkdownDiv.tsx +133 -0
  60. inspect_ai/_view/www/src/components/MessageBand.css +43 -0
  61. inspect_ai/_view/www/src/components/MessageBand.tsx +39 -0
  62. inspect_ai/_view/www/src/components/MorePopOver.tsx +67 -0
  63. inspect_ai/_view/www/src/components/NavPills.module.css +18 -0
  64. inspect_ai/_view/www/src/components/NavPills.tsx +99 -0
  65. inspect_ai/_view/www/src/components/ProgressBar.module.css +37 -0
  66. inspect_ai/_view/www/src/components/ProgressBar.tsx +22 -0
  67. inspect_ai/_view/www/src/components/TabSet.module.css +40 -0
  68. inspect_ai/_view/www/src/components/TabSet.tsx +200 -0
  69. inspect_ai/_view/www/src/components/ToolButton.css +3 -0
  70. inspect_ai/_view/www/src/components/ToolButton.tsx +27 -0
  71. inspect_ai/_view/www/src/components/VirtualList.module.css +19 -0
  72. inspect_ai/_view/www/src/components/VirtualList.tsx +292 -0
  73. inspect_ai/_view/www/src/{index.js → index.tsx} +45 -19
  74. inspect_ai/_view/www/src/{log → logfile}/remoteLogFile.ts +3 -7
  75. inspect_ai/_view/www/src/{utils/remoteZipFile.mjs → logfile/remoteZipFile.ts} +86 -80
  76. inspect_ai/_view/www/src/metadata/MetaDataGrid.tsx +83 -0
  77. inspect_ai/_view/www/src/metadata/MetaDataView.module.css +35 -0
  78. inspect_ai/_view/www/src/metadata/MetaDataView.tsx +95 -0
  79. inspect_ai/_view/www/src/metadata/MetadataGrid.module.css +15 -0
  80. inspect_ai/_view/www/src/metadata/RenderedContent.module.css +12 -0
  81. inspect_ai/_view/www/src/{components/RenderedContent/RenderedContent.mjs → metadata/RenderedContent.tsx} +92 -73
  82. inspect_ai/_view/www/src/metadata/types.ts +18 -0
  83. inspect_ai/_view/www/src/plan/DatasetDetailView.module.css +3 -0
  84. inspect_ai/_view/www/src/plan/DatasetDetailView.tsx +37 -0
  85. inspect_ai/_view/www/src/plan/DetailStep.module.css +9 -0
  86. inspect_ai/_view/www/src/plan/DetailStep.tsx +31 -0
  87. inspect_ai/_view/www/src/plan/PlanCard.tsx +28 -0
  88. inspect_ai/_view/www/src/plan/PlanDetailView.module.css +48 -0
  89. inspect_ai/_view/www/src/plan/PlanDetailView.tsx +309 -0
  90. inspect_ai/_view/www/src/plan/ScorerDetailView.module.css +3 -0
  91. inspect_ai/_view/www/src/plan/ScorerDetailView.tsx +30 -0
  92. inspect_ai/_view/www/src/plan/SolverDetailView.module.css +15 -0
  93. inspect_ai/_view/www/src/plan/SolverDetailView.tsx +32 -0
  94. inspect_ai/_view/www/src/samples/InlineSampleDisplay.module.css +8 -0
  95. inspect_ai/_view/www/src/samples/InlineSampleDisplay.tsx +53 -0
  96. inspect_ai/_view/www/src/samples/SampleDialog.tsx +122 -0
  97. inspect_ai/_view/www/src/samples/SampleDisplay.module.css +29 -0
  98. inspect_ai/_view/www/src/samples/SampleDisplay.tsx +326 -0
  99. inspect_ai/_view/www/src/samples/SampleSummaryView.module.css +24 -0
  100. inspect_ai/_view/www/src/samples/SampleSummaryView.tsx +175 -0
  101. inspect_ai/_view/www/src/samples/SamplesTools.tsx +60 -0
  102. inspect_ai/_view/www/src/samples/chat/ChatMessage.module.css +29 -0
  103. inspect_ai/_view/www/src/samples/chat/ChatMessage.tsx +76 -0
  104. inspect_ai/_view/www/src/samples/chat/ChatMessageRenderer.tsx +60 -0
  105. inspect_ai/_view/www/src/samples/chat/ChatMessageRow.module.css +9 -0
  106. inspect_ai/_view/www/src/samples/chat/ChatMessageRow.tsx +57 -0
  107. inspect_ai/_view/www/src/samples/chat/ChatView.tsx +46 -0
  108. inspect_ai/_view/www/src/samples/chat/ChatViewVirtualList.module.css +4 -0
  109. inspect_ai/_view/www/src/samples/chat/ChatViewVirtualList.tsx +58 -0
  110. inspect_ai/_view/www/src/samples/chat/MessageContent.module.css +4 -0
  111. inspect_ai/_view/www/src/samples/chat/MessageContent.tsx +143 -0
  112. inspect_ai/_view/www/src/samples/chat/MessageContents.module.css +3 -0
  113. inspect_ai/_view/www/src/samples/chat/MessageContents.tsx +131 -0
  114. inspect_ai/_view/www/src/samples/chat/messages.ts +112 -0
  115. inspect_ai/_view/www/src/samples/chat/tools/ToolCallView.tsx +145 -0
  116. inspect_ai/_view/www/src/samples/chat/tools/ToolInput.module.css +14 -0
  117. inspect_ai/_view/www/src/samples/chat/tools/ToolInput.tsx +86 -0
  118. inspect_ai/_view/www/src/samples/chat/tools/ToolOutput.module.css +19 -0
  119. inspect_ai/_view/www/src/samples/chat/tools/ToolOutput.tsx +53 -0
  120. inspect_ai/_view/www/src/samples/chat/tools/ToolTitle.module.css +4 -0
  121. inspect_ai/_view/www/src/samples/chat/tools/ToolTitle.tsx +18 -0
  122. inspect_ai/_view/www/src/samples/chat/tools/tool.ts +107 -0
  123. inspect_ai/_view/www/src/samples/descriptor/samplesDescriptor.tsx +363 -0
  124. inspect_ai/_view/www/src/samples/descriptor/score/BooleanScoreDescriptor.module.css +22 -0
  125. inspect_ai/_view/www/src/samples/descriptor/score/BooleanScoreDescriptor.tsx +26 -0
  126. inspect_ai/_view/www/src/samples/descriptor/score/CategoricalScoreDescriptor.tsx +18 -0
  127. inspect_ai/_view/www/src/samples/descriptor/score/NumericScoreDescriptor.tsx +27 -0
  128. inspect_ai/_view/www/src/samples/descriptor/score/ObjectScoreDescriptor.module.css +18 -0
  129. inspect_ai/_view/www/src/samples/descriptor/score/ObjectScoreDescriptor.tsx +71 -0
  130. inspect_ai/_view/www/src/samples/descriptor/score/OtherScoreDescriptor.tsx +20 -0
  131. inspect_ai/_view/www/src/samples/descriptor/score/PassFailScoreDescriptor.module.css +28 -0
  132. inspect_ai/_view/www/src/samples/descriptor/score/PassFailScoreDescriptor.tsx +81 -0
  133. inspect_ai/_view/www/src/samples/descriptor/score/ScoreDescriptor.tsx +99 -0
  134. inspect_ai/_view/www/src/samples/descriptor/types.ts +55 -0
  135. inspect_ai/_view/www/src/samples/error/FlatSampleErrorView.module.css +19 -0
  136. inspect_ai/_view/www/src/samples/error/FlatSampleErrorView.tsx +22 -0
  137. inspect_ai/_view/www/src/samples/error/SampleErrorView.module.css +17 -0
  138. inspect_ai/_view/www/src/samples/error/SampleErrorView.tsx +31 -0
  139. inspect_ai/_view/www/src/samples/error/error.ts +15 -0
  140. inspect_ai/_view/www/src/samples/list/SampleFooter.module.css +9 -0
  141. inspect_ai/_view/www/src/samples/list/SampleFooter.tsx +14 -0
  142. inspect_ai/_view/www/src/samples/list/SampleHeader.module.css +13 -0
  143. inspect_ai/_view/www/src/samples/list/SampleHeader.tsx +36 -0
  144. inspect_ai/_view/www/src/samples/list/SampleList.module.css +11 -0
  145. inspect_ai/_view/www/src/samples/list/SampleList.tsx +247 -0
  146. inspect_ai/_view/www/src/samples/list/SampleRow.module.css +33 -0
  147. inspect_ai/_view/www/src/samples/list/SampleRow.tsx +98 -0
  148. inspect_ai/_view/www/src/samples/list/SampleSeparator.module.css +6 -0
  149. inspect_ai/_view/www/src/samples/list/SampleSeparator.tsx +24 -0
  150. inspect_ai/_view/www/src/samples/sample-tools/EpochFilter.module.css +9 -0
  151. inspect_ai/_view/www/src/samples/sample-tools/EpochFilter.tsx +51 -0
  152. inspect_ai/_view/www/src/samples/sample-tools/SelectScorer.module.css +16 -0
  153. inspect_ai/_view/www/src/samples/sample-tools/SelectScorer.tsx +173 -0
  154. inspect_ai/_view/www/src/samples/sample-tools/SortFilter.module.css +9 -0
  155. inspect_ai/_view/www/src/samples/sample-tools/SortFilter.tsx +182 -0
  156. inspect_ai/_view/www/src/samples/{tools/filters.mjs → sample-tools/filters.ts} +86 -81
  157. inspect_ai/_view/www/src/samples/sample-tools/sample-filter/SampleFilter.module.css +16 -0
  158. inspect_ai/_view/www/src/samples/sample-tools/sample-filter/SampleFilter.tsx +288 -0
  159. inspect_ai/_view/www/src/samples/sample-tools/sample-filter/completions.ts +346 -0
  160. inspect_ai/_view/www/src/samples/sample-tools/sample-filter/language.ts +19 -0
  161. inspect_ai/_view/www/src/samples/sample-tools/sample-filter/tokenize.ts +97 -0
  162. inspect_ai/_view/www/src/samples/{SampleLimit.mjs → sampleLimit.ts} +3 -6
  163. inspect_ai/_view/www/src/samples/scores/SampleScoreView.module.css +53 -0
  164. inspect_ai/_view/www/src/samples/scores/SampleScoreView.tsx +168 -0
  165. inspect_ai/_view/www/src/samples/scores/SampleScores.module.css +5 -0
  166. inspect_ai/_view/www/src/samples/scores/SampleScores.tsx +37 -0
  167. inspect_ai/_view/www/src/samples/transcript/ApprovalEventView.tsx +66 -0
  168. inspect_ai/_view/www/src/samples/transcript/ErrorEventView.tsx +51 -0
  169. inspect_ai/_view/www/src/samples/transcript/InfoEventView.module.css +3 -0
  170. inspect_ai/_view/www/src/samples/transcript/InfoEventView.tsx +54 -0
  171. inspect_ai/_view/www/src/samples/transcript/InputEventView.tsx +48 -0
  172. inspect_ai/_view/www/src/samples/transcript/LoggerEventView.module.css +6 -0
  173. inspect_ai/_view/www/src/samples/transcript/LoggerEventView.tsx +36 -0
  174. inspect_ai/_view/www/src/samples/transcript/ModelEventView.module.css +43 -0
  175. inspect_ai/_view/www/src/samples/transcript/ModelEventView.tsx +223 -0
  176. inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.module.css +23 -0
  177. inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.tsx +108 -0
  178. inspect_ai/_view/www/src/samples/transcript/SampleLimitEventView.tsx +75 -0
  179. inspect_ai/_view/www/src/samples/transcript/SampleTranscript.tsx +22 -0
  180. inspect_ai/_view/www/src/samples/transcript/ScoreEventView.module.css +15 -0
  181. inspect_ai/_view/www/src/samples/transcript/ScoreEventView.tsx +100 -0
  182. inspect_ai/_view/www/src/samples/transcript/StepEventView.tsx +171 -0
  183. inspect_ai/_view/www/src/samples/transcript/SubtaskEventView.module.css +19 -0
  184. inspect_ai/_view/www/src/samples/transcript/SubtaskEventView.tsx +133 -0
  185. inspect_ai/_view/www/src/samples/transcript/ToolEventView.module.css +10 -0
  186. inspect_ai/_view/www/src/samples/transcript/ToolEventView.tsx +91 -0
  187. inspect_ai/_view/www/src/samples/transcript/TranscriptView.module.css +49 -0
  188. inspect_ai/_view/www/src/samples/transcript/TranscriptView.tsx +449 -0
  189. inspect_ai/_view/www/src/samples/transcript/event/EventNav.module.css +5 -0
  190. inspect_ai/_view/www/src/samples/transcript/event/EventNav.tsx +43 -0
  191. inspect_ai/_view/www/src/samples/transcript/event/EventNavs.module.css +3 -0
  192. inspect_ai/_view/www/src/samples/transcript/event/EventNavs.tsx +38 -0
  193. inspect_ai/_view/www/src/samples/transcript/event/EventPanel.module.css +25 -0
  194. inspect_ai/_view/www/src/samples/transcript/event/EventPanel.tsx +190 -0
  195. inspect_ai/_view/www/src/samples/transcript/event/EventRow.module.css +13 -0
  196. inspect_ai/_view/www/src/samples/transcript/event/EventRow.tsx +32 -0
  197. inspect_ai/_view/www/src/samples/transcript/event/EventSection.module.css +8 -0
  198. inspect_ai/_view/www/src/samples/transcript/event/EventSection.tsx +29 -0
  199. inspect_ai/_view/www/src/samples/transcript/state/StateDiffView.tsx +67 -0
  200. inspect_ai/_view/www/src/samples/transcript/state/StateEventRenderers.tsx +274 -0
  201. inspect_ai/_view/www/src/samples/transcript/state/StateEventRenders.module.css +10 -0
  202. inspect_ai/_view/www/src/samples/transcript/state/StateEventView.module.css +9 -0
  203. inspect_ai/_view/www/src/samples/transcript/state/{StateEventView.mjs → StateEventView.tsx} +148 -110
  204. inspect_ai/_view/www/src/samples/transcript/types.ts +58 -0
  205. inspect_ai/_view/www/src/types/log.d.ts +1 -0
  206. inspect_ai/_view/www/src/types/prism.d.ts +11 -0
  207. inspect_ai/_view/www/src/types.ts +71 -0
  208. inspect_ai/_view/www/src/usage/ModelTokenTable.tsx +22 -0
  209. inspect_ai/_view/www/src/usage/ModelUsagePanel.module.css +24 -0
  210. inspect_ai/_view/www/src/usage/ModelUsagePanel.tsx +95 -0
  211. inspect_ai/_view/www/src/usage/TokenTable.module.css +17 -0
  212. inspect_ai/_view/www/src/usage/TokenTable.tsx +91 -0
  213. inspect_ai/_view/www/src/usage/UsageCard.module.css +15 -0
  214. inspect_ai/_view/www/src/usage/UsageCard.tsx +67 -0
  215. inspect_ai/_view/www/src/utils/attachments.ts +42 -0
  216. inspect_ai/_view/www/src/utils/{Base64.mjs → base64.ts} +1 -6
  217. inspect_ai/_view/www/src/{components/Browser.mjs → utils/browser.ts} +0 -1
  218. inspect_ai/_view/www/src/utils/debugging.ts +28 -0
  219. inspect_ai/_view/www/src/utils/dom.ts +30 -0
  220. inspect_ai/_view/www/src/utils/format.ts +194 -0
  221. inspect_ai/_view/www/src/utils/git.ts +7 -0
  222. inspect_ai/_view/www/src/utils/html.ts +6 -0
  223. inspect_ai/_view/www/src/utils/http.ts +14 -0
  224. inspect_ai/_view/www/src/utils/{Path.mjs → path.ts} +2 -9
  225. inspect_ai/_view/www/src/utils/{Print.mjs → print.ts} +34 -26
  226. inspect_ai/_view/www/src/utils/queue.ts +51 -0
  227. inspect_ai/_view/www/src/utils/sync.ts +114 -0
  228. inspect_ai/_view/www/src/utils/{Type.mjs → type.ts} +3 -6
  229. inspect_ai/_view/www/src/utils/vscode.ts +13 -0
  230. inspect_ai/_view/www/src/workspace/WorkSpace.tsx +324 -0
  231. inspect_ai/_view/www/src/workspace/WorkSpaceView.module.css +33 -0
  232. inspect_ai/_view/www/src/workspace/WorkSpaceView.tsx +160 -0
  233. inspect_ai/_view/www/src/workspace/error/TaskErrorPanel.module.css +3 -0
  234. inspect_ai/_view/www/src/workspace/error/TaskErrorPanel.tsx +28 -0
  235. inspect_ai/_view/www/src/workspace/navbar/Navbar.module.css +54 -0
  236. inspect_ai/_view/www/src/workspace/navbar/Navbar.tsx +68 -0
  237. inspect_ai/_view/www/src/workspace/navbar/PrimaryBar.module.css +52 -0
  238. inspect_ai/_view/www/src/workspace/navbar/PrimaryBar.tsx +113 -0
  239. inspect_ai/_view/www/src/workspace/navbar/ResultsPanel.module.css +67 -0
  240. inspect_ai/_view/www/src/workspace/navbar/ResultsPanel.tsx +156 -0
  241. inspect_ai/_view/www/src/workspace/navbar/SecondaryBar.module.css +28 -0
  242. inspect_ai/_view/www/src/workspace/navbar/SecondaryBar.tsx +222 -0
  243. inspect_ai/_view/www/src/workspace/navbar/StatusPanel.module.css +14 -0
  244. inspect_ai/_view/www/src/workspace/navbar/StatusPanel.tsx +61 -0
  245. inspect_ai/_view/www/src/workspace/sidebar/EvalStatus.module.css +15 -0
  246. inspect_ai/_view/www/src/workspace/sidebar/EvalStatus.tsx +71 -0
  247. inspect_ai/_view/www/src/workspace/sidebar/LogDirectoryTitleView.module.css +5 -0
  248. inspect_ai/_view/www/src/workspace/sidebar/LogDirectoryTitleView.tsx +56 -0
  249. inspect_ai/_view/www/src/workspace/sidebar/Sidebar.module.css +68 -0
  250. inspect_ai/_view/www/src/workspace/sidebar/Sidebar.tsx +85 -0
  251. inspect_ai/_view/www/src/workspace/sidebar/SidebarLogEntry.module.css +29 -0
  252. inspect_ai/_view/www/src/workspace/sidebar/SidebarLogEntry.tsx +95 -0
  253. inspect_ai/_view/www/src/workspace/sidebar/SidebarScoreView.module.css +23 -0
  254. inspect_ai/_view/www/src/workspace/sidebar/SidebarScoreView.tsx +41 -0
  255. inspect_ai/_view/www/src/workspace/sidebar/SidebarScoresView.module.css +35 -0
  256. inspect_ai/_view/www/src/workspace/sidebar/SidebarScoresView.tsx +61 -0
  257. inspect_ai/_view/www/src/workspace/tabs/InfoTab.tsx +80 -0
  258. inspect_ai/_view/www/src/workspace/tabs/JsonTab.module.css +5 -0
  259. inspect_ai/_view/www/src/workspace/tabs/JsonTab.tsx +46 -0
  260. inspect_ai/_view/www/src/workspace/tabs/SamplesTab.tsx +204 -0
  261. inspect_ai/_view/www/src/workspace/tabs/grouping.ts +195 -0
  262. inspect_ai/_view/www/src/workspace/tabs/types.ts +19 -0
  263. inspect_ai/_view/www/src/workspace/types.ts +10 -0
  264. inspect_ai/_view/www/tsconfig.json +23 -9
  265. inspect_ai/_view/www/vite.config.js +8 -17
  266. inspect_ai/_view/www/yarn.lock +627 -556
  267. inspect_ai/dataset/_dataset.py +36 -0
  268. inspect_ai/dataset/_sources/csv.py +8 -0
  269. inspect_ai/dataset/_sources/file.py +4 -0
  270. inspect_ai/dataset/_sources/hf.py +11 -1
  271. inspect_ai/dataset/_sources/json.py +8 -0
  272. inspect_ai/log/_log.py +3 -6
  273. inspect_ai/log/_message.py +1 -1
  274. inspect_ai/log/_recorders/json.py +5 -7
  275. inspect_ai/model/_call_tools.py +2 -1
  276. inspect_ai/model/_providers/anthropic.py +3 -3
  277. inspect_ai/model/_providers/openai_o1.py +3 -5
  278. inspect_ai/model/_providers/openrouter.py +86 -0
  279. inspect_ai/model/_providers/providers.py +11 -0
  280. inspect_ai/scorer/_answer.py +7 -7
  281. inspect_ai/scorer/_classification.py +34 -18
  282. inspect_ai/scorer/_common.py +2 -8
  283. inspect_ai/solver/_multiple_choice.py +24 -9
  284. inspect_ai/tool/__init__.py +2 -0
  285. inspect_ai/tool/{beta → _tools}/_computer/_computer.py +2 -5
  286. inspect_ai/tool/_tools/_computer/_resources/tool/__init__.py +0 -0
  287. inspect_ai/tool/{beta → _tools}/_computer/_resources/tool/_x11_client.py +1 -1
  288. inspect_ai/tool/_tools/_computer/_resources/tool/requirements.txt +0 -0
  289. inspect_ai/tool/_tools/_execute.py +8 -2
  290. inspect_ai/tool/beta.py +3 -0
  291. inspect_ai/util/_sandbox/docker/docker.py +32 -85
  292. inspect_ai/util/_sandbox/self_check.py +124 -16
  293. {inspect_ai-0.3.62.dist-info → inspect_ai-0.3.63.dist-info}/METADATA +2 -1
  294. inspect_ai-0.3.63.dist-info/RECORD +618 -0
  295. inspect_ai/_view/www/src/Register.mjs +0 -3
  296. inspect_ai/_view/www/src/Types.mjs +0 -38
  297. inspect_ai/_view/www/src/appearance/Colors.mjs +0 -27
  298. inspect_ai/_view/www/src/appearance/Fonts.mjs +0 -66
  299. inspect_ai/_view/www/src/appearance/Icons.mjs +0 -240
  300. inspect_ai/_view/www/src/components/AnsiDisplay.mjs +0 -184
  301. inspect_ai/_view/www/src/components/AppErrorBoundary.mjs +0 -34
  302. inspect_ai/_view/www/src/components/AsciiCinemaPlayer.mjs +0 -74
  303. inspect_ai/_view/www/src/components/Card.mjs +0 -126
  304. inspect_ai/_view/www/src/components/ChatView.mjs +0 -441
  305. inspect_ai/_view/www/src/components/CopyButton.mjs +0 -48
  306. inspect_ai/_view/www/src/components/Dialog.mjs +0 -61
  307. inspect_ai/_view/www/src/components/DownloadButton.mjs +0 -15
  308. inspect_ai/_view/www/src/components/DownloadPanel.mjs +0 -29
  309. inspect_ai/_view/www/src/components/EmptyPanel.mjs +0 -23
  310. inspect_ai/_view/www/src/components/ErrorPanel.mjs +0 -66
  311. inspect_ai/_view/www/src/components/ExpandablePanel.mjs +0 -136
  312. inspect_ai/_view/www/src/components/FindBand.mjs +0 -157
  313. inspect_ai/_view/www/src/components/HumanBaselineView.mjs +0 -168
  314. inspect_ai/_view/www/src/components/JsonPanel.mjs +0 -61
  315. inspect_ai/_view/www/src/components/LabeledValue.mjs +0 -32
  316. inspect_ai/_view/www/src/components/LargeModal.mjs +0 -190
  317. inspect_ai/_view/www/src/components/LightboxCarousel.mjs +0 -217
  318. inspect_ai/_view/www/src/components/MarkdownDiv.mjs +0 -118
  319. inspect_ai/_view/www/src/components/MessageBand.mjs +0 -48
  320. inspect_ai/_view/www/src/components/MessageContent.mjs +0 -111
  321. inspect_ai/_view/www/src/components/MetaDataGrid.mjs +0 -92
  322. inspect_ai/_view/www/src/components/MetaDataView.mjs +0 -109
  323. inspect_ai/_view/www/src/components/MorePopOver.mjs +0 -50
  324. inspect_ai/_view/www/src/components/NavPills.mjs +0 -63
  325. inspect_ai/_view/www/src/components/ProgressBar.mjs +0 -51
  326. inspect_ai/_view/www/src/components/RenderedContent/ChatMessageRenderer.mjs +0 -54
  327. inspect_ai/_view/www/src/components/RenderedContent/Types.mjs +0 -19
  328. inspect_ai/_view/www/src/components/TabSet.mjs +0 -184
  329. inspect_ai/_view/www/src/components/ToolButton.mjs +0 -16
  330. inspect_ai/_view/www/src/components/Tools.mjs +0 -376
  331. inspect_ai/_view/www/src/components/VirtualList.mjs +0 -280
  332. inspect_ai/_view/www/src/components/ansi-output.js +0 -932
  333. inspect_ai/_view/www/src/json/JsonTab.mjs +0 -48
  334. inspect_ai/_view/www/src/log-reader/Log-Reader.mjs +0 -25
  335. inspect_ai/_view/www/src/log-reader/Native-Log-Reader.mjs +0 -13
  336. inspect_ai/_view/www/src/log-reader/Open-AI-Log-Reader.mjs +0 -263
  337. inspect_ai/_view/www/src/navbar/Navbar.mjs +0 -418
  338. inspect_ai/_view/www/src/navbar/SecondaryBar.mjs +0 -175
  339. inspect_ai/_view/www/src/plan/PlanCard.mjs +0 -418
  340. inspect_ai/_view/www/src/samples/SampleDialog.mjs +0 -123
  341. inspect_ai/_view/www/src/samples/SampleDisplay.mjs +0 -516
  342. inspect_ai/_view/www/src/samples/SampleError.mjs +0 -99
  343. inspect_ai/_view/www/src/samples/SampleList.mjs +0 -427
  344. inspect_ai/_view/www/src/samples/SampleScoreView.mjs +0 -172
  345. inspect_ai/_view/www/src/samples/SampleScores.mjs +0 -34
  346. inspect_ai/_view/www/src/samples/SampleTranscript.mjs +0 -20
  347. inspect_ai/_view/www/src/samples/SamplesDescriptor.mjs +0 -771
  348. inspect_ai/_view/www/src/samples/SamplesTab.mjs +0 -399
  349. inspect_ai/_view/www/src/samples/SamplesTools.mjs +0 -64
  350. inspect_ai/_view/www/src/samples/tools/EpochFilter.mjs +0 -38
  351. inspect_ai/_view/www/src/samples/tools/SampleFilter.mjs +0 -756
  352. inspect_ai/_view/www/src/samples/tools/SelectScorer.mjs +0 -141
  353. inspect_ai/_view/www/src/samples/tools/SortFilter.mjs +0 -151
  354. inspect_ai/_view/www/src/samples/transcript/ApprovalEventView.mjs +0 -71
  355. inspect_ai/_view/www/src/samples/transcript/ErrorEventView.mjs +0 -44
  356. inspect_ai/_view/www/src/samples/transcript/EventPanel.mjs +0 -271
  357. inspect_ai/_view/www/src/samples/transcript/EventRow.mjs +0 -46
  358. inspect_ai/_view/www/src/samples/transcript/EventSection.mjs +0 -33
  359. inspect_ai/_view/www/src/samples/transcript/InfoEventView.mjs +0 -59
  360. inspect_ai/_view/www/src/samples/transcript/InputEventView.mjs +0 -44
  361. inspect_ai/_view/www/src/samples/transcript/LoggerEventView.mjs +0 -32
  362. inspect_ai/_view/www/src/samples/transcript/ModelEventView.mjs +0 -216
  363. inspect_ai/_view/www/src/samples/transcript/SampleInitEventView.mjs +0 -107
  364. inspect_ai/_view/www/src/samples/transcript/SampleLimitEventView.mjs +0 -74
  365. inspect_ai/_view/www/src/samples/transcript/ScoreEventView.mjs +0 -100
  366. inspect_ai/_view/www/src/samples/transcript/StepEventView.mjs +0 -187
  367. inspect_ai/_view/www/src/samples/transcript/SubtaskEventView.mjs +0 -133
  368. inspect_ai/_view/www/src/samples/transcript/ToolEventView.mjs +0 -88
  369. inspect_ai/_view/www/src/samples/transcript/TranscriptView.mjs +0 -459
  370. inspect_ai/_view/www/src/samples/transcript/Types.mjs +0 -44
  371. inspect_ai/_view/www/src/samples/transcript/state/StateDiffView.mjs +0 -53
  372. inspect_ai/_view/www/src/samples/transcript/state/StateEventRenderers.mjs +0 -254
  373. inspect_ai/_view/www/src/sidebar/Sidebar.mjs +0 -418
  374. inspect_ai/_view/www/src/usage/ModelTokenTable.mjs +0 -72
  375. inspect_ai/_view/www/src/usage/UsageCard.mjs +0 -159
  376. inspect_ai/_view/www/src/utils/Format.mjs +0 -260
  377. inspect_ai/_view/www/src/utils/Git.mjs +0 -12
  378. inspect_ai/_view/www/src/utils/Html.mjs +0 -21
  379. inspect_ai/_view/www/src/utils/attachments.mjs +0 -31
  380. inspect_ai/_view/www/src/utils/debugging.mjs +0 -23
  381. inspect_ai/_view/www/src/utils/http.mjs +0 -18
  382. inspect_ai/_view/www/src/utils/queue.mjs +0 -67
  383. inspect_ai/_view/www/src/utils/sync.mjs +0 -101
  384. inspect_ai/_view/www/src/workspace/TaskErrorPanel.mjs +0 -17
  385. inspect_ai/_view/www/src/workspace/WorkSpace.mjs +0 -516
  386. inspect_ai/tool/beta/__init__.py +0 -5
  387. inspect_ai-0.3.62.dist-info/RECORD +0 -481
  388. /inspect_ai/{tool/beta/_computer/_resources/tool/__init__.py → _view/www/src/components/MorePopOver.css} +0 -0
  389. /inspect_ai/_view/www/src/{constants.mjs → constants.ts} +0 -0
  390. /inspect_ai/{tool/beta/_computer/_resources/tool/requirements.txt → _view/www/src/workspace/tabs/InfoTab.module.css} +0 -0
  391. /inspect_ai/tool/{beta → _tools}/_computer/__init__.py +0 -0
  392. /inspect_ai/tool/{beta → _tools}/_computer/_common.py +0 -0
  393. /inspect_ai/tool/{beta → _tools}/_computer/_computer_split.py +0 -0
  394. /inspect_ai/tool/{beta → _tools}/_computer/_resources/Dockerfile +0 -0
  395. /inspect_ai/tool/{beta → _tools}/_computer/_resources/README.md +0 -0
  396. /inspect_ai/tool/{beta → _tools}/_computer/_resources/entrypoint/entrypoint.sh +0 -0
  397. /inspect_ai/tool/{beta → _tools}/_computer/_resources/entrypoint/novnc_startup.sh +0 -0
  398. /inspect_ai/tool/{beta → _tools}/_computer/_resources/entrypoint/x11vnc_startup.sh +0 -0
  399. /inspect_ai/tool/{beta → _tools}/_computer/_resources/entrypoint/xfce_startup.sh +0 -0
  400. /inspect_ai/tool/{beta → _tools}/_computer/_resources/entrypoint/xvfb_startup.sh +0 -0
  401. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/.config/Code/User/globalStorage/state.vscdb +0 -0
  402. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/.config/Code/User/settings.json +0 -0
  403. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +0 -0
  404. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml +0 -0
  405. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/Desktop/Firefox Web Browser.desktop +0 -0
  406. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/Desktop/Terminal.desktop +0 -0
  407. /inspect_ai/tool/{beta → _tools}/_computer/_resources/image_home_dir/Desktop/Visual Studio Code.desktop +0 -0
  408. /inspect_ai/tool/{beta → _tools}/_computer/_resources/tool/_logger.py +0 -0
  409. /inspect_ai/tool/{beta → _tools}/_computer/_resources/tool/_run.py +0 -0
  410. /inspect_ai/tool/{beta → _tools}/_computer/_resources/tool/_tool_result.py +0 -0
  411. /inspect_ai/tool/{beta → _tools}/_computer/_resources/tool/computer_tool.py +0 -0
  412. {inspect_ai-0.3.62.dist-info → inspect_ai-0.3.63.dist-info}/LICENSE +0 -0
  413. {inspect_ai-0.3.62.dist-info → inspect_ai-0.3.63.dist-info}/WHEEL +0 -0
  414. {inspect_ai-0.3.62.dist-info → inspect_ai-0.3.63.dist-info}/entry_points.txt +0 -0
  415. {inspect_ai-0.3.62.dist-info → inspect_ai-0.3.63.dist-info}/top_level.txt +0 -0
@@ -1,33 +1,43 @@
1
1
  // @ts-check
2
- import { html } from "htm/preact";
3
2
 
4
- import { EventPanel } from "../EventPanel.mjs";
3
+ import clsx from "clsx";
4
+ import {
5
+ Changes,
6
+ JsonChange,
7
+ Op,
8
+ StateEvent,
9
+ StoreEvent,
10
+ } from "../../../types/log";
11
+ import { formatDateTime } from "../../../utils/format";
12
+ import { EventPanel } from "../event/EventPanel";
13
+ import { TranscriptEventState } from "../types";
14
+ import { StateDiffView } from "./StateDiffView";
5
15
  import {
6
16
  RenderableChangeTypes,
7
17
  StoreSpecificRenderableTypes,
8
- } from "./StateEventRenderers.mjs";
9
- import { StateDiffView } from "./StateDiffView.mjs";
10
- import { formatDateTime } from "../../../utils/Format.mjs";
18
+ } from "./StateEventRenderers";
19
+
20
+ import styles from "./StateEventView.module.css";
21
+
22
+ interface StateEventViewProps {
23
+ id: string;
24
+ event: StateEvent | StoreEvent;
25
+ eventState: TranscriptEventState;
26
+ setEventState: (state: TranscriptEventState) => void;
27
+ isStore?: boolean;
28
+ className?: string | string[];
29
+ }
11
30
 
12
31
  /**
13
32
  * Renders the StateEventView component.
14
- *
15
- * @param {Object} props - The properties passed to the component.
16
- * @param { string } props.id - The id of this event.
17
- * @param {import("../../../types/log").StateEvent } props.event - The event object to display.
18
- * @param {import("./../Types.mjs").TranscriptEventState} props.eventState - The state for this event
19
- * @param {(state: import("./../Types.mjs").TranscriptEventState) => void} props.setEventState - Update the state for this event
20
- * @param { boolean } props.isStore - Whether this event view is rendering a storage (rather than a state)
21
- * @param { Object } props.style - The style of this event.
22
- * @returns {import("preact").JSX.Element} The component.
23
33
  */
24
- export const StateEventView = ({
34
+ export const StateEventView: React.FC<StateEventViewProps> = ({
25
35
  id,
26
36
  event,
27
37
  eventState,
28
38
  setEventState,
29
- isStore,
30
- style,
39
+ isStore = false,
40
+ className,
31
41
  }) => {
32
42
  const summary = summarizeChanges(event.changes);
33
43
 
@@ -35,14 +45,14 @@ export const StateEventView = ({
35
45
  const [before, after] = synthesizeComparable(event.changes);
36
46
 
37
47
  const tabs = [
38
- html`<${StateDiffView}
39
- before=${before}
40
- after=${after}
41
- name="Diff"
42
- style=${{ margin: "1em 0em" }}
43
- />`,
48
+ <StateDiffView
49
+ before={before}
50
+ after={after}
51
+ data-name="Diff"
52
+ className={clsx(styles.diff)}
53
+ />,
44
54
  ];
45
- // This clone is important since the state is used by preact as potential values that are rendered
55
+ // This clone is important since the state is used by react as potential values that are rendered
46
56
  // and as a result may be decorated with additional properties, etc..., resulting in DOM elements
47
57
  // appearing attached to state.
48
58
  const changePreview = generatePreview(
@@ -52,45 +62,45 @@ export const StateEventView = ({
52
62
  );
53
63
  if (changePreview) {
54
64
  tabs.unshift(
55
- html`<div name="Summary" style=${{ margin: "1em 0em", width: "100%" }}>
56
- ${changePreview}
57
- </div>`,
65
+ <div data-name="Summary" className={clsx(styles.summary)}>
66
+ {changePreview}
67
+ </div>,
58
68
  );
59
69
  }
60
70
 
61
71
  // Compute the title
62
72
  const title = event.event === "state" ? "State Updated" : "Store Updated";
63
73
 
64
- return html`
65
- <${EventPanel}
66
- id=${id}
67
- title="${title}"
68
- subTitle=${formatDateTime(new Date(event.timestamp))}
69
- text=${tabs.length === 1 ? summary : undefined}
70
- collapse=${changePreview === undefined ? true : undefined}
71
- style=${style}
72
- selectedNav=${eventState.selectedNav || ""}
73
- onSelectedNav=${(selectedNav) => {
74
- setEventState({ ...eventState, selectedNav });
75
- }}
76
- collapsed=${eventState.collapsed}
77
- onCollapsed=${(collapsed) => {
78
- setEventState({ ...eventState, collapsed });
79
- }}
80
- >
81
- ${tabs}
82
- </${EventPanel}>`;
74
+ return (
75
+ <EventPanel
76
+ id={id}
77
+ title={title}
78
+ className={className}
79
+ subTitle={formatDateTime(new Date(event.timestamp))}
80
+ text={tabs.length === 1 ? summary : undefined}
81
+ collapse={changePreview === undefined ? true : undefined}
82
+ selectedNav={eventState.selectedNav || ""}
83
+ setSelectedNav={(selectedNav) => {
84
+ setEventState({ ...eventState, selectedNav });
85
+ }}
86
+ collapsed={eventState.collapsed}
87
+ setCollapsed={(collapsed) => {
88
+ setEventState({ ...eventState, collapsed });
89
+ }}
90
+ >
91
+ {tabs}
92
+ </EventPanel>
93
+ );
83
94
  };
84
95
 
85
96
  /**
86
97
  * Renders the value of a change based on its type.
87
- *
88
- * @param {import("../../../types/log").JsonChange[]} changes - The change object containing the value.
89
- * @param {Object} resolvedState - The change object containing the value.
90
- * @param {boolean} isStore - Is this rendering a store event
91
- * @returns {import("preact").JSX.Element|Object|string|undefined} - The rendered HTML template if the value is an object with content and source, otherwise the value itself.
92
98
  */
93
- const generatePreview = (changes, resolvedState, isStore) => {
99
+ const generatePreview = (
100
+ changes: JsonChange[],
101
+ resolvedState: Record<string, unknown>,
102
+ isStore: boolean,
103
+ ) => {
94
104
  const results = [];
95
105
  for (const changeType of [
96
106
  ...RenderableChangeTypes,
@@ -105,15 +115,41 @@ const generatePreview = (changes, resolvedState, isStore) => {
105
115
  changeType.signature.add.length;
106
116
  let matchingOps = 0;
107
117
  for (const change of changes) {
108
- if (
109
- changeType.signature[change.op] &&
110
- changeType.signature[change.op].length > 0
111
- ) {
112
- changeType.signature[change.op].forEach((signature) => {
113
- if (change.path.match(signature)) {
114
- matchingOps++;
118
+ const op = change.op;
119
+ switch (op) {
120
+ case "add":
121
+ if (changeType.signature.add && changeType.signature.add.length > 0) {
122
+ changeType.signature.add.forEach((signature) => {
123
+ if (change.path.match(signature)) {
124
+ matchingOps++;
125
+ }
126
+ });
127
+ }
128
+ break;
129
+ case "remove":
130
+ if (
131
+ changeType.signature.remove &&
132
+ changeType.signature.remove.length > 0
133
+ ) {
134
+ changeType.signature.remove.forEach((signature) => {
135
+ if (change.path.match(signature)) {
136
+ matchingOps++;
137
+ }
138
+ });
115
139
  }
116
- });
140
+ break;
141
+ case "replace":
142
+ if (
143
+ changeType.signature.replace &&
144
+ changeType.signature.replace.length > 0
145
+ ) {
146
+ changeType.signature.replace.forEach((signature) => {
147
+ if (change.path.match(signature)) {
148
+ matchingOps++;
149
+ }
150
+ });
151
+ }
152
+ break;
117
153
  }
118
154
  }
119
155
  if (matchingOps === requiredMatchCount) {
@@ -129,12 +165,9 @@ const generatePreview = (changes, resolvedState, isStore) => {
129
165
 
130
166
  /**
131
167
  * Renders the value of a change based on its type.
132
- *
133
- * @param {import("../../../types/log").JsonChange[]} changes - The change object containing the value.
134
- * @returns {string} - A string summarizing the changes
135
168
  */
136
- const summarizeChanges = (changes) => {
137
- const changeMap = {
169
+ const summarizeChanges = (changes: JsonChange[]): string => {
170
+ const changeMap: Record<Op, string[]> = {
138
171
  add: [],
139
172
  copy: [],
140
173
  move: [],
@@ -143,24 +176,43 @@ const summarizeChanges = (changes) => {
143
176
  test: [],
144
177
  };
145
178
  for (const change of changes) {
146
- changeMap[change.op].push(change.path);
179
+ switch (change.op) {
180
+ case "add":
181
+ changeMap.add.push(change.path);
182
+ break;
183
+ case "copy":
184
+ changeMap.copy.push(change.path);
185
+ break;
186
+ case "move":
187
+ changeMap.move.push(change.path);
188
+ break;
189
+ case "replace":
190
+ changeMap.replace.push(change.path);
191
+ break;
192
+ case "remove":
193
+ changeMap.remove.push(change.path);
194
+ break;
195
+ case "test":
196
+ changeMap.test.push(change.path);
197
+ break;
198
+ }
147
199
  }
148
200
 
149
- const changeList = [];
201
+ const changeList: string[] = [];
150
202
  const totalOpCount = Object.keys(changeMap).reduce((prev, current) => {
151
- return prev + changeMap[current].length;
203
+ return prev + changeMap[current as Op].length;
152
204
  }, 0);
153
205
 
154
206
  if (totalOpCount > 2) {
155
207
  Object.keys(changeMap).forEach((key) => {
156
- const opChanges = changeMap[key];
208
+ const opChanges = changeMap[key as Op];
157
209
  if (opChanges.length > 0) {
158
210
  changeList.push(`${key} ${opChanges.length}`);
159
211
  }
160
212
  });
161
213
  } else {
162
214
  Object.keys(changeMap).forEach((key) => {
163
- const opChanges = changeMap[key];
215
+ const opChanges = changeMap[key as Op];
164
216
  if (opChanges.length > 0) {
165
217
  changeList.push(`${key} ${opChanges.join(", ")}`);
166
218
  }
@@ -171,11 +223,8 @@ const summarizeChanges = (changes) => {
171
223
 
172
224
  /**
173
225
  * Renders a view displaying a list of state changes.
174
- *
175
- * @param {import("../../../types/log").Changes} changes - The list of changes to be displayed.
176
- * @returns {[Object, Object]} The before and after objects
177
226
  */
178
- const synthesizeComparable = (changes) => {
227
+ const synthesizeComparable = (changes: Changes) => {
179
228
  const before = {};
180
229
  const after = {};
181
230
 
@@ -192,7 +241,7 @@ const synthesizeComparable = (changes) => {
192
241
  setPath(after, change.path, change.value);
193
242
  break;
194
243
  case "move":
195
- setPath(before, change.from, change.value);
244
+ setPath(before, change.from || "", change.value);
196
245
  setPath(after, change.path, change.value);
197
246
  break;
198
247
  case "remove":
@@ -211,15 +260,14 @@ const synthesizeComparable = (changes) => {
211
260
 
212
261
  /**
213
262
  * Sets a value at a path in an object
214
- *
215
- * @param {Object} target - The object into which to set the path
216
- * @param {string} path - The path of the value to set
217
- * @param {unknown} value - The value to set
218
- * @returns {Object} The mutated object
219
263
  */
220
- function setPath(target, path, value) {
264
+ function setPath(
265
+ target: Record<string, unknown>,
266
+ path: string,
267
+ value: unknown,
268
+ ): void {
221
269
  const keys = parsePath(path);
222
- let current = target;
270
+ let current: Record<string, unknown> = target;
223
271
 
224
272
  for (let i = 0; i < keys.length - 1; i++) {
225
273
  const key = keys[i];
@@ -227,7 +275,7 @@ function setPath(target, path, value) {
227
275
  // If the next key is a number, create an array, otherwise an object
228
276
  current[key] = isArrayIndex(keys[i + 1]) ? [] : {};
229
277
  }
230
- current = current[key];
278
+ current = current[key] as Record<string, unknown>;
231
279
  }
232
280
 
233
281
  const lastKey = keys[keys.length - 1];
@@ -236,62 +284,55 @@ function setPath(target, path, value) {
236
284
 
237
285
  /**
238
286
  * Places structure in an object (without placing values)
239
- *
240
- * @param {Object} target - The object into which to initialize the path
241
- * @param {string} path - The path of the value to set
242
- * @returns {Object} The mutated object
243
287
  */
244
- function initializeArrays(target, path) {
288
+ function initializeArrays(target: Record<string, unknown>, path: string): void {
245
289
  const keys = parsePath(path);
246
- let current = target;
290
+ let current: Record<string, unknown> = target;
247
291
 
248
292
  for (let i = 0; i < keys.length - 1; i++) {
249
293
  const key = keys[i];
250
294
  const nextKey = keys[i + 1];
251
295
 
252
296
  if (isArrayIndex(nextKey)) {
253
- current[key] = initializeArray(current[key], nextKey);
297
+ current[key] = initializeArray(
298
+ current[key] as string[] | undefined,
299
+ nextKey,
300
+ );
254
301
  } else {
255
- current[key] = initializeObject(current[key]);
302
+ current[key] = initializeObject(current[key] as object | undefined);
256
303
  }
257
304
 
258
- current = current[key];
305
+ current = current[key] as Record<string, unknown>;
259
306
  }
260
307
 
261
308
  const lastKey = keys[keys.length - 1];
262
309
  if (isArrayIndex(lastKey)) {
263
- initializeArray(current, lastKey);
310
+ const lastValue = current[lastKey] as string[] | undefined;
311
+ initializeArray(lastValue, lastKey);
264
312
  }
265
313
  }
266
314
 
267
315
  /**
268
316
  * Parses a path into an array of keys
269
- *
270
- * @param {string} path - The path to split
271
- * @returns {string[]} Array of keys
272
317
  */
273
- function parsePath(path) {
318
+ function parsePath(path: string): string[] {
274
319
  return path.split("/").filter(Boolean);
275
320
  }
276
321
 
277
322
  /**
278
323
  * Checks if a key represents an array index
279
- *
280
- * @param {string} key - The key to check
281
- * @returns {boolean} True if the key is a number
282
324
  */
283
- function isArrayIndex(key) {
325
+ function isArrayIndex(key: string): boolean {
284
326
  return /^\d+$/.test(key);
285
327
  }
286
328
 
287
329
  /**
288
330
  * Initializes an array at a given key, ensuring it is large enough
289
- *
290
- * @param {Array|undefined} current - The current array or undefined
291
- * @param {string} nextKey - The key of the next array index
292
- * @returns {Array} Initialized array
293
331
  */
294
- function initializeArray(current, nextKey) {
332
+ function initializeArray(
333
+ current: Array<string> | undefined,
334
+ nextKey: string,
335
+ ): Array<string> {
295
336
  if (!Array.isArray(current)) {
296
337
  current = [];
297
338
  }
@@ -304,10 +345,7 @@ function initializeArray(current, nextKey) {
304
345
 
305
346
  /**
306
347
  * Initializes an object at a given key if it doesn't exist
307
- *
308
- * @param {Object|undefined} current - The current object or undefined
309
- * @returns {Object} Initialized object
310
348
  */
311
- function initializeObject(current) {
349
+ function initializeObject(current?: Object): Object {
312
350
  return current ?? {};
313
351
  }
@@ -0,0 +1,58 @@
1
+ import {
2
+ ApprovalEvent,
3
+ Changes,
4
+ ErrorEvent,
5
+ InfoEvent,
6
+ InputEvent,
7
+ LoggerEvent,
8
+ ModelEvent,
9
+ SampleInitEvent,
10
+ SampleLimitEvent,
11
+ ScoreEvent,
12
+ StateEvent,
13
+ StepEvent,
14
+ StoreEvent,
15
+ SubtaskEvent,
16
+ ToolEvent,
17
+ } from "../../types/log";
18
+
19
+ export interface StateManager {
20
+ scope: string;
21
+ getState(): object;
22
+ initializeState(state: object): void;
23
+ applyChanges(changes: Changes): object;
24
+ }
25
+
26
+ export type EventType =
27
+ | SampleInitEvent
28
+ | SampleLimitEvent
29
+ | StateEvent
30
+ | StoreEvent
31
+ | ModelEvent
32
+ | LoggerEvent
33
+ | InfoEvent
34
+ | StepEvent
35
+ | SubtaskEvent
36
+ | ScoreEvent
37
+ | ToolEvent
38
+ | InputEvent
39
+ | ErrorEvent
40
+ | ApprovalEvent;
41
+
42
+ export class EventNode {
43
+ event: EventType;
44
+ children: EventNode[] = [];
45
+ depth: number;
46
+
47
+ constructor(event: EventType, depth: number) {
48
+ this.event = event;
49
+ this.depth = depth;
50
+ }
51
+ }
52
+
53
+ export interface TranscriptEventState {
54
+ selectedNav?: string;
55
+ collapsed?: boolean;
56
+ }
57
+
58
+ export type TranscriptState = Record<string, TranscriptEventState>;
@@ -324,6 +324,7 @@ export type Event10 = "logger";
324
324
  export type Name7 = string | null;
325
325
  export type Level =
326
326
  | "debug"
327
+ | "trace"
327
328
  | "http"
328
329
  | "sandbox"
329
330
  | "info"
@@ -1,4 +1,15 @@
1
1
  declare var Prism: {
2
2
  languages: any;
3
3
  highlight(contents: any, tokens: any, type: any): string;
4
+ highlightElement(
5
+ element: HTMLElement,
6
+ async?: boolean,
7
+ callback?: (element: HTMLElement) => void,
8
+ );
9
+
10
+ highlightAllUnder(
11
+ element: HTMLElement,
12
+ async?: boolean,
13
+ callback?: (element: HTMLElement) => void,
14
+ );
4
15
  };
@@ -0,0 +1,71 @@
1
+ import {
2
+ EvalLogHeader,
3
+ EvalSummary,
4
+ LogFiles,
5
+ SampleSummary,
6
+ } from "./api/types";
7
+ import { ContentImage, ContentText, EvalSample } from "./types/log";
8
+
9
+ export interface ApplicationState {
10
+ logs?: LogFiles;
11
+ selectedLogIndex?: number;
12
+ logHeaders?: Record<string, EvalLogHeader>;
13
+ headersLoading?: boolean;
14
+ selectedLog?: CurrentLog;
15
+ selectedWorkspaceTab?: string;
16
+ selectedSampleIndex?: number;
17
+ selectedSample?: EvalSample;
18
+ sampleStatus?: "loading" | "ok" | "error";
19
+ sampleError?: Error;
20
+ selectedSampleTab?: string;
21
+ sampleScrollPosition?: number;
22
+ showingSampleDialog?: boolean;
23
+ status?: AppStatus;
24
+ offcanvas?: boolean;
25
+ showFind?: boolean;
26
+ filter?: ScoreFilter;
27
+ epoch?: string;
28
+ sort?: string;
29
+ scores?: ScoreLabel[];
30
+ score?: ScoreLabel;
31
+ filteredSamples?: SampleSummary[];
32
+ groupBy?: "none" | "epoch" | "sample";
33
+ groupByOrder?: "asc" | "desc";
34
+ workspaceTabScrollPosition?: Record<string, number>;
35
+ }
36
+
37
+ export interface AppStatus {
38
+ loading: boolean;
39
+ error?: Error;
40
+ }
41
+
42
+ export interface Capabilities {
43
+ downloadFiles: boolean;
44
+ webWorkers: boolean;
45
+ }
46
+
47
+ export interface CurrentLog {
48
+ name: string;
49
+ contents: EvalSummary;
50
+ }
51
+
52
+ export interface Logs {
53
+ log_dir: string;
54
+ files: string[];
55
+ }
56
+
57
+ export interface ScoreLabel {
58
+ name: string;
59
+ scorer: string;
60
+ }
61
+
62
+ export interface ScoreFilter {
63
+ value?: string;
64
+ }
65
+
66
+ export type SampleMode = "none" | "single" | "many";
67
+
68
+ export interface ContentTool {
69
+ type: "tool";
70
+ content: (ContentImage | ContentText)[];
71
+ }
@@ -0,0 +1,22 @@
1
+ import { TokenHeader, TokenRow, TokenTable } from "./TokenTable";
2
+
3
+ interface ModelTokenTable {
4
+ model_usage: any;
5
+ className?: string | string[];
6
+ }
7
+
8
+ export const ModelTokenTable: React.FC<ModelTokenTable> = ({
9
+ model_usage,
10
+ className,
11
+ }) => {
12
+ return (
13
+ <TokenTable className={className}>
14
+ <TokenHeader />
15
+ <tbody>
16
+ {Object.keys(model_usage).map((key) => {
17
+ return <TokenRow model={key} usage={model_usage[key]} />;
18
+ })}
19
+ </tbody>
20
+ </TokenTable>
21
+ );
22
+ };
@@ -0,0 +1,24 @@
1
+ .wrapper {
2
+ display: grid;
3
+ grid-template-columns: 0 auto auto;
4
+ column-gap: 1.5em;
5
+ row-gap: 0.2em;
6
+ }
7
+
8
+ .col2 {
9
+ grid-column: 2;
10
+ }
11
+
12
+ .col1_3 {
13
+ grid-column: 1/3;
14
+ }
15
+
16
+ .col3 {
17
+ grid-column: 3;
18
+ }
19
+
20
+ .separator {
21
+ grid-column: -1/1;
22
+ height: 1px;
23
+ background-color: var(--bs-light-border-subtle);
24
+ }