inspect-ai 0.3.89__py3-none-any.whl → 0.3.91__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 (370) hide show
  1. inspect_ai/_cli/common.py +13 -0
  2. inspect_ai/_cli/eval.py +40 -0
  3. inspect_ai/_display/textual/widgets/samples.py +49 -4
  4. inspect_ai/_display/textual/widgets/vscode.py +4 -2
  5. inspect_ai/_eval/eval.py +41 -28
  6. inspect_ai/_eval/evalset.py +4 -0
  7. inspect_ai/_eval/loader.py +4 -5
  8. inspect_ai/_eval/registry.py +1 -1
  9. inspect_ai/_eval/run.py +6 -3
  10. inspect_ai/_eval/task/log.py +6 -0
  11. inspect_ai/_eval/task/run.py +108 -53
  12. inspect_ai/_eval/task/sandbox.py +19 -5
  13. inspect_ai/_util/_async.py +1 -1
  14. inspect_ai/_util/constants.py +1 -0
  15. inspect_ai/_util/environ.py +32 -0
  16. inspect_ai/_util/file.py +8 -1
  17. inspect_ai/_util/httpx.py +105 -22
  18. inspect_ai/_util/registry.py +83 -9
  19. inspect_ai/_util/text.py +81 -17
  20. inspect_ai/_util/transcript.py +9 -6
  21. inspect_ai/_util/vscode.py +7 -2
  22. inspect_ai/_view/schema.py +1 -1
  23. inspect_ai/_view/www/babel.config.js +11 -0
  24. inspect_ai/_view/www/dist/assets/index.css +3583 -3508
  25. inspect_ai/_view/www/dist/assets/index.js +59212 -52521
  26. inspect_ai/_view/www/eslint.config.mjs +10 -1
  27. inspect_ai/_view/www/jest.config.mjs +21 -0
  28. inspect_ai/_view/www/log-schema.json +111 -2
  29. inspect_ai/_view/www/package.json +19 -5
  30. inspect_ai/_view/www/src/{types → @types}/log.d.ts +95 -32
  31. inspect_ai/_view/www/{App.css → src/app/App.css} +22 -14
  32. inspect_ai/_view/www/src/app/App.tsx +168 -0
  33. inspect_ai/_view/www/src/{AppErrorBoundary.tsx → app/AppErrorBoundary.tsx} +1 -1
  34. inspect_ai/_view/www/src/{appearance → app/appearance}/icons.ts +1 -0
  35. inspect_ai/_view/www/src/{metadata → app/content}/RenderedContent.tsx +5 -5
  36. inspect_ai/_view/www/src/{workspace/WorkSpaceView.tsx → app/log-view/LogView.tsx} +59 -40
  37. inspect_ai/_view/www/src/app/log-view/LogViewContainer.tsx +159 -0
  38. inspect_ai/_view/www/src/app/log-view/LogViewLayout.tsx +109 -0
  39. inspect_ai/_view/www/src/{workspace → app/log-view}/error/TaskErrorPanel.tsx +3 -3
  40. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ModelRolesView.tsx +1 -1
  41. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/Navbar.tsx +4 -4
  42. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/PrimaryBar.tsx +8 -8
  43. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ResultsPanel.tsx +6 -6
  44. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/RunningStatusPanel.tsx +1 -1
  45. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ScoreGrid.tsx +1 -1
  46. inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/SecondaryBar.tsx +8 -8
  47. inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/InfoTab.tsx +35 -6
  48. inspect_ai/_view/www/src/app/log-view/tabs/JsonTab.tsx +136 -0
  49. inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/SamplesTab.tsx +82 -73
  50. inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/grouping.ts +3 -3
  51. inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/types.ts +1 -1
  52. inspect_ai/_view/www/src/{plan → app/plan}/DatasetDetailView.tsx +2 -2
  53. inspect_ai/_view/www/src/{plan → app/plan}/DetailStep.tsx +1 -1
  54. inspect_ai/_view/www/src/{plan → app/plan}/ModelCard.tsx +4 -4
  55. inspect_ai/_view/www/src/{plan → app/plan}/PlanCard.tsx +2 -2
  56. inspect_ai/_view/www/src/{plan → app/plan}/PlanDetailView.tsx +5 -5
  57. inspect_ai/_view/www/src/{plan → app/plan}/SolverDetailView.tsx +1 -1
  58. inspect_ai/_view/www/src/app/routing/AppRouter.tsx +58 -0
  59. inspect_ai/_view/www/src/app/routing/navigationHooks.ts +182 -0
  60. inspect_ai/_view/www/src/app/routing/url.ts +43 -0
  61. inspect_ai/_view/www/src/{samples → app/samples}/InlineSampleDisplay.tsx +11 -27
  62. inspect_ai/_view/www/src/{samples → app/samples}/SampleDialog.tsx +36 -40
  63. inspect_ai/_view/www/src/{samples → app/samples}/SampleDisplay.module.css +4 -0
  64. inspect_ai/_view/www/src/{samples → app/samples}/SampleDisplay.tsx +116 -49
  65. inspect_ai/_view/www/src/{samples → app/samples}/SampleSummaryView.module.css +1 -1
  66. inspect_ai/_view/www/src/{samples → app/samples}/SampleSummaryView.tsx +29 -26
  67. inspect_ai/_view/www/src/{samples → app/samples}/SamplesTools.tsx +3 -3
  68. inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessage.module.css +5 -2
  69. inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessage.tsx +13 -5
  70. inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessageRenderer.tsx +3 -3
  71. inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessageRow.tsx +6 -1
  72. inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatView.tsx +4 -2
  73. inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatViewVirtualList.tsx +5 -3
  74. inspect_ai/_view/www/src/app/samples/chat/MessageContent.module.css +12 -0
  75. inspect_ai/_view/www/src/{samples → app/samples}/chat/MessageContent.tsx +11 -10
  76. inspect_ai/_view/www/src/app/samples/chat/MessageContents.module.css +7 -0
  77. inspect_ai/_view/www/src/{samples → app/samples}/chat/MessageContents.tsx +14 -8
  78. inspect_ai/_view/www/src/{samples → app/samples}/chat/messages.ts +2 -2
  79. inspect_ai/_view/www/src/app/samples/chat/tools/ToolCallView.module.css +7 -0
  80. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolCallView.tsx +26 -27
  81. inspect_ai/_view/www/src/app/samples/chat/tools/ToolInput.module.css +19 -0
  82. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolInput.tsx +3 -3
  83. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolOutput.module.css +1 -0
  84. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolOutput.tsx +1 -1
  85. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolTitle.module.css +4 -0
  86. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolTitle.tsx +2 -2
  87. inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/tool.ts +1 -1
  88. inspect_ai/_view/www/src/app/samples/chat/types.ts +1 -0
  89. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/samplesDescriptor.tsx +38 -15
  90. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/BooleanScoreDescriptor.tsx +1 -1
  91. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/CategoricalScoreDescriptor.tsx +2 -2
  92. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/NumericScoreDescriptor.tsx +3 -3
  93. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/ObjectScoreDescriptor.tsx +4 -4
  94. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/OtherScoreDescriptor.tsx +2 -2
  95. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/PassFailScoreDescriptor.tsx +2 -2
  96. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/ScoreDescriptor.tsx +1 -1
  97. inspect_ai/_view/www/src/{samples → app/samples}/descriptor/types.ts +4 -3
  98. inspect_ai/_view/www/src/{samples → app/samples}/error/SampleErrorView.module.css +2 -1
  99. inspect_ai/_view/www/src/{samples → app/samples}/list/SampleHeader.tsx +3 -0
  100. inspect_ai/_view/www/src/{samples → app/samples}/list/SampleList.tsx +47 -33
  101. inspect_ai/_view/www/src/{samples → app/samples}/list/SampleRow.module.css +16 -0
  102. inspect_ai/_view/www/src/{samples → app/samples}/list/SampleRow.tsx +47 -20
  103. inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SelectScorer.tsx +1 -1
  104. inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SortFilter.tsx +4 -4
  105. inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/filters.ts +8 -6
  106. inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/SampleFilter.tsx +4 -3
  107. inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/completions.ts +1 -1
  108. inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/language.ts +1 -0
  109. inspect_ai/_view/www/src/{samples → app/samples}/sampleDataAdapter.ts +3 -3
  110. inspect_ai/_view/www/src/{samples → app/samples}/sampleLimit.ts +1 -1
  111. inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScores.tsx +1 -1
  112. inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresGrid.tsx +12 -11
  113. inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresView.tsx +6 -6
  114. inspect_ai/_view/www/src/{samples → app/samples}/transcript/ApprovalEventView.tsx +1 -1
  115. inspect_ai/_view/www/src/{samples → app/samples}/transcript/ErrorEventView.tsx +3 -3
  116. inspect_ai/_view/www/src/{samples → app/samples}/transcript/InfoEventView.tsx +4 -4
  117. inspect_ai/_view/www/src/{samples → app/samples}/transcript/InputEventView.tsx +3 -3
  118. inspect_ai/_view/www/src/{samples → app/samples}/transcript/LoggerEventView.tsx +3 -3
  119. inspect_ai/_view/www/src/{samples → app/samples}/transcript/ModelEventView.module.css +13 -7
  120. inspect_ai/_view/www/src/{samples → app/samples}/transcript/ModelEventView.tsx +49 -21
  121. inspect_ai/_view/www/src/{samples → app/samples}/transcript/SampleInitEventView.tsx +11 -9
  122. inspect_ai/_view/www/src/{samples → app/samples}/transcript/SampleLimitEventView.tsx +1 -1
  123. inspect_ai/_view/www/src/{samples → app/samples}/transcript/SandboxEventView.tsx +8 -6
  124. inspect_ai/_view/www/src/{samples → app/samples}/transcript/ScoreEventView.tsx +4 -4
  125. inspect_ai/_view/www/src/{samples → app/samples}/transcript/StepEventView.tsx +22 -8
  126. inspect_ai/_view/www/src/{samples → app/samples}/transcript/SubtaskEventView.tsx +2 -2
  127. inspect_ai/_view/www/src/{samples → app/samples}/transcript/ToolEventView.tsx +2 -2
  128. inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptView.module.css +8 -9
  129. inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptView.tsx +32 -114
  130. inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptVirtualListComponent.module.css +6 -5
  131. inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptVirtualListComponent.tsx +14 -2
  132. inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventPanel.tsx +2 -2
  133. inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventTimingPanel.tsx +1 -1
  134. inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/utils.ts +1 -1
  135. inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventRenderers.tsx +23 -21
  136. inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventRenders.module.css +7 -0
  137. inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventView.tsx +2 -2
  138. inspect_ai/_view/www/src/app/samples/transcript/transform/fixups.ts +142 -0
  139. inspect_ai/_view/www/src/app/samples/transcript/transform/treeify.ts +39 -0
  140. inspect_ai/_view/www/src/{samples → app/samples}/transcript/types.ts +1 -1
  141. inspect_ai/_view/www/src/{workspace → app}/sidebar/EvalStatus.tsx +1 -1
  142. inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.module.css +16 -0
  143. inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.tsx +70 -0
  144. inspect_ai/_view/www/src/{workspace → app}/sidebar/Sidebar.module.css +8 -0
  145. inspect_ai/_view/www/src/{workspace → app}/sidebar/Sidebar.tsx +35 -17
  146. inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarLogEntry.tsx +1 -1
  147. inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoreView.tsx +2 -2
  148. inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoresView.tsx +2 -2
  149. inspect_ai/_view/www/src/{types.ts → app/types.ts} +18 -11
  150. inspect_ai/_view/www/src/{usage → app/usage}/ModelTokenTable.tsx +1 -1
  151. inspect_ai/_view/www/src/{usage → app/usage}/ModelUsagePanel.tsx +2 -2
  152. inspect_ai/_view/www/src/{usage → app/usage}/TokenTable.tsx +1 -1
  153. inspect_ai/_view/www/src/{usage → app/usage}/UsageCard.tsx +6 -6
  154. inspect_ai/_view/www/src/{api → client/api}/api-browser.ts +2 -2
  155. inspect_ai/_view/www/src/{api → client/api}/api-http.ts +3 -3
  156. inspect_ai/_view/www/src/{api → client/api}/api-vscode.ts +2 -2
  157. inspect_ai/_view/www/src/{api → client/api}/client-api.ts +6 -5
  158. inspect_ai/_view/www/src/{api → client/api}/index.ts +2 -2
  159. inspect_ai/_view/www/src/{api → client/api}/types.ts +4 -1
  160. inspect_ai/_view/www/src/{logfile → client/remote}/remoteLogFile.ts +3 -3
  161. inspect_ai/_view/www/src/{storage → client/storage}/index.ts +11 -5
  162. inspect_ai/_view/www/src/components/Card.tsx +1 -1
  163. inspect_ai/_view/www/src/components/CopyButton.tsx +1 -1
  164. inspect_ai/_view/www/src/components/DownloadButton.tsx +1 -1
  165. inspect_ai/_view/www/src/components/ErrorPanel.tsx +1 -1
  166. inspect_ai/_view/www/src/components/{ExpandablePanel.css → ExpandablePanel.module.css} +14 -11
  167. inspect_ai/_view/www/src/components/ExpandablePanel.tsx +16 -10
  168. inspect_ai/_view/www/src/components/FindBand.tsx +1 -1
  169. inspect_ai/_view/www/src/components/JsonPanel.css +2 -2
  170. inspect_ai/_view/www/src/components/LargeModal.tsx +12 -1
  171. inspect_ai/_view/www/src/components/LightboxCarousel.tsx +1 -1
  172. inspect_ai/_view/www/src/components/MarkdownDiv.tsx +3 -1
  173. inspect_ai/_view/www/src/components/MessageBand.tsx +1 -1
  174. inspect_ai/_view/www/src/components/NoContentsPanel.tsx +1 -1
  175. inspect_ai/_view/www/src/constants.ts +10 -9
  176. inspect_ai/_view/www/src/index.tsx +27 -11
  177. inspect_ai/_view/www/src/state/appSlice.ts +44 -5
  178. inspect_ai/_view/www/src/state/hooks.ts +30 -7
  179. inspect_ai/_view/www/src/state/logSlice.ts +7 -5
  180. inspect_ai/_view/www/src/state/logsPolling.ts +1 -1
  181. inspect_ai/_view/www/src/state/logsSlice.ts +18 -13
  182. inspect_ai/_view/www/src/state/samplePolling.ts +12 -12
  183. inspect_ai/_view/www/src/state/sampleSlice.ts +3 -5
  184. inspect_ai/_view/www/src/state/sampleUtils.ts +1 -1
  185. inspect_ai/_view/www/src/{scoring/utils.ts → state/scoring.ts} +2 -2
  186. inspect_ai/_view/www/src/state/store.ts +9 -7
  187. inspect_ai/_view/www/src/state/utils.ts +1 -1
  188. inspect_ai/_view/www/src/tests/README.md +49 -0
  189. inspect_ai/_view/www/src/tests/__mocks__/fileMock.js +1 -0
  190. inspect_ai/_view/www/src/tests/__mocks__/styleMock.js +1 -0
  191. inspect_ai/_view/www/src/tests/setupTests.mjs +1 -0
  192. inspect_ai/_view/www/src/tests/utils/base64.test.ts +23 -0
  193. inspect_ai/_view/www/src/tests/utils/format.test.ts +127 -0
  194. inspect_ai/_view/www/src/tests/utils/path.test.ts +54 -0
  195. inspect_ai/_view/www/src/utils/format.ts +8 -2
  196. inspect_ai/_view/www/src/utils/path.ts +14 -2
  197. inspect_ai/_view/www/src/utils/polling.ts +1 -2
  198. inspect_ai/_view/www/src/utils/uri.ts +32 -0
  199. inspect_ai/_view/www/yarn.lock +3310 -382
  200. inspect_ai/agent/_handoff.py +6 -3
  201. inspect_ai/agent/_human/agent.py +5 -3
  202. inspect_ai/agent/_human/install.py +16 -7
  203. inspect_ai/agent/_human/panel.py +14 -1
  204. inspect_ai/agent/_human/service.py +5 -1
  205. inspect_ai/agent/_react.py +161 -128
  206. inspect_ai/agent/_types.py +15 -4
  207. inspect_ai/approval/_policy.py +2 -2
  208. inspect_ai/log/_file.py +30 -11
  209. inspect_ai/log/_log.py +7 -1
  210. inspect_ai/log/_recorders/eval.py +3 -0
  211. inspect_ai/log/_recorders/types.py +1 -0
  212. inspect_ai/log/_samples.py +4 -0
  213. inspect_ai/model/_call_tools.py +33 -17
  214. inspect_ai/model/_generate_config.py +10 -2
  215. inspect_ai/model/_model.py +41 -21
  216. inspect_ai/model/_model_output.py +2 -1
  217. inspect_ai/model/_openai.py +10 -8
  218. inspect_ai/model/_openai_responses.py +83 -42
  219. inspect_ai/model/_providers/anthropic.py +14 -12
  220. inspect_ai/model/_providers/google.py +191 -95
  221. inspect_ai/model/_providers/hf.py +1 -1
  222. inspect_ai/model/_providers/mistral.py +2 -3
  223. inspect_ai/model/_providers/openai.py +54 -17
  224. inspect_ai/model/_providers/openai_o1.py +1 -1
  225. inspect_ai/model/_providers/openai_responses.py +28 -16
  226. inspect_ai/model/_providers/openrouter.py +14 -0
  227. inspect_ai/model/_providers/providers.py +2 -2
  228. inspect_ai/model/_providers/util/chatapi.py +17 -7
  229. inspect_ai/model/_providers/vllm.py +1 -1
  230. inspect_ai/scorer/_metric.py +17 -1
  231. inspect_ai/scorer/_model.py +51 -6
  232. inspect_ai/scorer/_scorer.py +1 -1
  233. inspect_ai/solver/_human_agent.py +3 -0
  234. inspect_ai/solver/_plan.py +1 -1
  235. inspect_ai/solver/_solver.py +1 -1
  236. inspect_ai/solver/_use_tools.py +14 -8
  237. inspect_ai/tool/__init__.py +16 -1
  238. inspect_ai/tool/_json_rpc_helpers.py +285 -0
  239. inspect_ai/tool/_mcp/__init__.py +13 -0
  240. inspect_ai/tool/_mcp/_context.py +14 -0
  241. inspect_ai/tool/_mcp/_mcp.py +293 -0
  242. inspect_ai/tool/_mcp/_sandbox.py +104 -0
  243. inspect_ai/tool/_mcp/_types.py +31 -0
  244. inspect_ai/tool/_mcp/connection.py +60 -0
  245. inspect_ai/tool/_mcp/sampling.py +118 -0
  246. inspect_ai/tool/_mcp/server.py +112 -0
  247. inspect_ai/tool/_mcp/tools.py +34 -0
  248. inspect_ai/tool/_tool.py +13 -0
  249. inspect_ai/tool/_tool_def.py +24 -7
  250. inspect_ai/tool/_tool_support_helpers.py +129 -153
  251. inspect_ai/tool/_tools/_bash_session.py +11 -11
  252. inspect_ai/tool/_tools/_text_editor.py +6 -6
  253. inspect_ai/tool/_tools/_web_browser/_web_browser.py +8 -8
  254. inspect_ai/util/_anyio.py +31 -20
  255. inspect_ai/util/_json.py +20 -2
  256. inspect_ai/util/_sandbox/context.py +18 -7
  257. inspect_ai/util/_sandbox/docker/compose.py +1 -1
  258. inspect_ai/util/_sandbox/docker/docker.py +92 -21
  259. inspect_ai/util/_sandbox/environment.py +33 -2
  260. inspect_ai/util/_sandbox/events.py +2 -2
  261. inspect_ai/util/_sandbox/service.py +13 -3
  262. {inspect_ai-0.3.89.dist-info → inspect_ai-0.3.91.dist-info}/METADATA +6 -2
  263. inspect_ai-0.3.91.dist-info/RECORD +732 -0
  264. {inspect_ai-0.3.89.dist-info → inspect_ai-0.3.91.dist-info}/WHEEL +1 -1
  265. inspect_ai/_view/www/src/App.tsx +0 -316
  266. inspect_ai/_view/www/src/samples/chat/MessageContent.module.css +0 -4
  267. inspect_ai/_view/www/src/samples/chat/MessageContents.module.css +0 -3
  268. inspect_ai/_view/www/src/samples/chat/tools/ToolCallView.module.css +0 -3
  269. inspect_ai/_view/www/src/samples/chat/tools/ToolInput.module.css +0 -14
  270. inspect_ai/_view/www/src/workspace/WorkSpace.tsx +0 -292
  271. inspect_ai/_view/www/src/workspace/sidebar/LogDirectoryTitleView.module.css +0 -5
  272. inspect_ai/_view/www/src/workspace/sidebar/LogDirectoryTitleView.tsx +0 -57
  273. inspect_ai/_view/www/src/workspace/tabs/JsonTab.tsx +0 -43
  274. inspect_ai-0.3.89.dist-info/RECORD +0 -705
  275. /inspect_ai/_view/www/src/{types → @types}/asciicinema-player.d.ts +0 -0
  276. /inspect_ai/_view/www/src/{types → @types}/jsondiffpatch.d.ts +0 -0
  277. /inspect_ai/_view/www/src/{types → @types}/markdown-it-katex.d.ts +0 -0
  278. /inspect_ai/_view/www/src/{types → @types}/prism.d.ts +0 -0
  279. /inspect_ai/_view/www/src/{appearance → app/appearance}/colors.ts +0 -0
  280. /inspect_ai/_view/www/src/{appearance → app/appearance}/fonts.ts +0 -0
  281. /inspect_ai/_view/www/src/{appearance → app/appearance}/styles.ts +0 -0
  282. /inspect_ai/_view/www/src/{metadata → app/content}/MetaDataGrid.tsx +0 -0
  283. /inspect_ai/_view/www/src/{metadata → app/content}/MetaDataView.module.css +0 -0
  284. /inspect_ai/_view/www/src/{metadata → app/content}/MetaDataView.tsx +0 -0
  285. /inspect_ai/_view/www/src/{metadata → app/content}/MetadataGrid.module.css +0 -0
  286. /inspect_ai/_view/www/src/{metadata → app/content}/RenderedContent.module.css +0 -0
  287. /inspect_ai/_view/www/src/{metadata → app/content}/types.ts +0 -0
  288. /inspect_ai/_view/www/src/{workspace/WorkSpaceView.module.css → app/log-view/LogView.module.css} +0 -0
  289. /inspect_ai/_view/www/src/{workspace → app/log-view}/error/TaskErrorPanel.module.css +0 -0
  290. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ModelRolesView.module.css +0 -0
  291. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/Navbar.module.css +0 -0
  292. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/PrimaryBar.module.css +0 -0
  293. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ResultsPanel.module.css +0 -0
  294. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/RunningStatusPanel.module.css +0 -0
  295. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ScoreGrid.module.css +0 -0
  296. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/SecondaryBar.module.css +0 -0
  297. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/StatusPanel.module.css +0 -0
  298. /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/StatusPanel.tsx +0 -0
  299. /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/InfoTab.module.css +0 -0
  300. /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/JsonTab.module.css +0 -0
  301. /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/RunningNoSamples.module.css +0 -0
  302. /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/RunningNoSamples.tsx +0 -0
  303. /inspect_ai/_view/www/src/{workspace → app/log-view}/types.ts +0 -0
  304. /inspect_ai/_view/www/src/{workspace → app/log-view}/utils.ts +0 -0
  305. /inspect_ai/_view/www/src/{plan → app/plan}/DatasetDetailView.module.css +0 -0
  306. /inspect_ai/_view/www/src/{plan → app/plan}/DetailStep.module.css +0 -0
  307. /inspect_ai/_view/www/src/{plan → app/plan}/ModelCard.module.css +0 -0
  308. /inspect_ai/_view/www/src/{plan → app/plan}/PlanDetailView.module.css +0 -0
  309. /inspect_ai/_view/www/src/{plan → app/plan}/ScorerDetailView.module.css +0 -0
  310. /inspect_ai/_view/www/src/{plan → app/plan}/ScorerDetailView.tsx +0 -0
  311. /inspect_ai/_view/www/src/{plan → app/plan}/SolverDetailView.module.css +0 -0
  312. /inspect_ai/_view/www/src/{samples → app/samples}/InlineSampleDisplay.module.css +0 -0
  313. /inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessageRow.module.css +0 -0
  314. /inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatViewVirtualList.module.css +0 -0
  315. /inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/BooleanScoreDescriptor.module.css +0 -0
  316. /inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/ObjectScoreDescriptor.module.css +0 -0
  317. /inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/PassFailScoreDescriptor.module.css +0 -0
  318. /inspect_ai/_view/www/src/{samples → app/samples}/error/FlatSampleErrorView.module.css +0 -0
  319. /inspect_ai/_view/www/src/{samples → app/samples}/error/FlatSampleErrorView.tsx +0 -0
  320. /inspect_ai/_view/www/src/{samples → app/samples}/error/SampleErrorView.tsx +0 -0
  321. /inspect_ai/_view/www/src/{samples → app/samples}/error/error.ts +0 -0
  322. /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleFooter.module.css +0 -0
  323. /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleFooter.tsx +0 -0
  324. /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleHeader.module.css +0 -0
  325. /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleList.module.css +0 -0
  326. /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleSeparator.module.css +0 -0
  327. /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleSeparator.tsx +0 -0
  328. /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/EpochFilter.module.css +0 -0
  329. /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/EpochFilter.tsx +0 -0
  330. /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SelectScorer.module.css +0 -0
  331. /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SortFilter.module.css +0 -0
  332. /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/SampleFilter.module.css +0 -0
  333. /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/tokenize.ts +0 -0
  334. /inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScores.module.css +0 -0
  335. /inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresGrid.module.css +0 -0
  336. /inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresView.module.css +0 -0
  337. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/InfoEventView.module.css +0 -0
  338. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/LoggerEventView.module.css +0 -0
  339. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/SampleInitEventView.module.css +0 -0
  340. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/SandboxEventView.module.css +0 -0
  341. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/ScoreEventView.module.css +0 -0
  342. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/SubtaskEventView.module.css +0 -0
  343. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/ToolEventView.module.css +0 -0
  344. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNav.module.css +0 -0
  345. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNav.tsx +0 -0
  346. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNavs.module.css +0 -0
  347. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNavs.tsx +0 -0
  348. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventPanel.module.css +0 -0
  349. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventProgressPanel.module.css +0 -0
  350. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventProgressPanel.tsx +0 -0
  351. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventRow.module.css +0 -0
  352. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventRow.tsx +0 -0
  353. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventSection.module.css +0 -0
  354. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventSection.tsx +0 -0
  355. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventTimingPanel.module.css +0 -0
  356. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateDiffView.tsx +0 -0
  357. /inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventView.module.css +0 -0
  358. /inspect_ai/_view/www/src/{workspace → app}/sidebar/EvalStatus.module.css +0 -0
  359. /inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarLogEntry.module.css +0 -0
  360. /inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoreView.module.css +0 -0
  361. /inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoresView.module.css +0 -0
  362. /inspect_ai/_view/www/src/{usage → app/usage}/ModelUsagePanel.module.css +0 -0
  363. /inspect_ai/_view/www/src/{usage → app/usage}/TokenTable.module.css +0 -0
  364. /inspect_ai/_view/www/src/{usage → app/usage}/UsageCard.module.css +0 -0
  365. /inspect_ai/_view/www/src/{api → client/api}/api-shared.ts +0 -0
  366. /inspect_ai/_view/www/src/{api → client/api}/jsonrpc.ts +0 -0
  367. /inspect_ai/_view/www/src/{logfile → client/remote}/remoteZipFile.ts +0 -0
  368. {inspect_ai-0.3.89.dist-info → inspect_ai-0.3.91.dist-info}/entry_points.txt +0 -0
  369. {inspect_ai-0.3.89.dist-info → inspect_ai-0.3.91.dist-info}/licenses/LICENSE +0 -0
  370. {inspect_ai-0.3.89.dist-info → inspect_ai-0.3.91.dist-info}/top_level.txt +0 -0
@@ -1,17 +1,18 @@
1
1
  import clsx from "clsx";
2
- import { FC, Fragment, ReactNode } from "react";
3
- import ExpandablePanel from "../../components/ExpandablePanel";
4
- import { MarkdownDiv } from "../../components/MarkdownDiv";
5
- import { ContentTool } from "../../types";
2
+
3
+ import { FC, ReactNode } from "react";
6
4
  import {
7
5
  ContentAudio,
8
6
  ContentImage,
9
7
  ContentReasoning,
10
8
  ContentText,
11
9
  ContentVideo,
12
- Format,
13
10
  Format1,
14
- } from "../../types/log";
11
+ Format2,
12
+ } from "../../../@types/log";
13
+ import { ContentTool } from "../../../app/types";
14
+ import ExpandablePanel from "../../../components/ExpandablePanel";
15
+ import { MarkdownDiv } from "../../../components/MarkdownDiv";
15
16
  import styles from "./MessageContent.module.css";
16
17
  import { ToolOutput } from "./tools/ToolOutput";
17
18
 
@@ -97,7 +98,7 @@ const messageRenderers: Record<string, MessageRenderer> = {
97
98
  return (
98
99
  <MarkdownDiv
99
100
  key={key}
100
- markdown={c.text}
101
+ markdown={c.text || ""}
101
102
  className={isLast ? "no-last-para-padding" : ""}
102
103
  />
103
104
  );
@@ -110,7 +111,7 @@ const messageRenderers: Record<string, MessageRenderer> = {
110
111
  return undefined;
111
112
  }
112
113
  return (
113
- <Fragment key={key}>
114
+ <div key={key} className={clsx(styles.reasoning, "text-size-small")}>
114
115
  <div
115
116
  className={clsx(
116
117
  "text-style-label",
@@ -129,7 +130,7 @@ const messageRenderers: Record<string, MessageRenderer> = {
129
130
  }
130
131
  />
131
132
  </ExpandablePanel>
132
- </Fragment>
133
+ </div>
133
134
  );
134
135
  },
135
136
  },
@@ -175,7 +176,7 @@ const messageRenderers: Record<string, MessageRenderer> = {
175
176
  * Renders message content based on its type.
176
177
  * Supports rendering strings, images, and tools using specific renderers.
177
178
  */
178
- const mimeTypeForFormat = (format: Format | Format1): string => {
179
+ const mimeTypeForFormat = (format: Format1 | Format2): string => {
179
180
  switch (format) {
180
181
  case "mov":
181
182
  return "video/quicktime";
@@ -0,0 +1,7 @@
1
+ .content {
2
+ margin-bottom: 1em;
3
+ }
4
+
5
+ .codeCompact {
6
+ color: unset !important;
7
+ }
@@ -3,20 +3,22 @@ import {
3
3
  ChatMessageSystem,
4
4
  ChatMessageTool,
5
5
  ChatMessageUser,
6
- } from "../../types/log";
6
+ } from "../../../@types/log";
7
7
  import { MessageContent } from "./MessageContent";
8
8
  import { resolveToolInput } from "./tools/tool";
9
9
  import { ToolCallView } from "./tools/ToolCallView";
10
10
 
11
+ import clsx from "clsx";
11
12
  import { FC, Fragment } from "react";
12
- import { ContentTool } from "../../types";
13
+ import { ContentTool } from "../../../app/types";
13
14
  import styles from "./MessageContents.module.css";
15
+ import { ChatViewToolCallStyle } from "./types";
14
16
 
15
17
  interface MessageContentsProps {
16
18
  id: string;
17
19
  message: ChatMessageAssistant | ChatMessageSystem | ChatMessageUser;
18
20
  toolMessages: ChatMessageTool[];
19
- toolCallStyle: "compact" | "complete";
21
+ toolCallStyle: ChatViewToolCallStyle;
20
22
  }
21
23
 
22
24
  export const MessageContents: FC<MessageContentsProps> = ({
@@ -52,9 +54,13 @@ export const MessageContents: FC<MessageContentsProps> = ({
52
54
  if (toolCallStyle === "compact") {
53
55
  return (
54
56
  <div key={`tool-call-${idx}`}>
55
- <code>tool: {functionCall}</code>
57
+ <code className={clsx(styles.codeCompact)}>
58
+ tool: {functionCall}
59
+ </code>
56
60
  </div>
57
61
  );
62
+ } else if (toolCallStyle === "omit") {
63
+ return undefined;
58
64
  } else {
59
65
  return (
60
66
  <ToolCallView
@@ -71,11 +77,11 @@ export const MessageContents: FC<MessageContentsProps> = ({
71
77
 
72
78
  return (
73
79
  <Fragment>
74
- <div className={styles.content}>
75
- {message.content ? (
80
+ {message.content && (
81
+ <div className={styles.content}>
76
82
  <MessageContent contents={message.content} />
77
- ) : undefined}
78
- </div>
83
+ </div>
84
+ )}
79
85
  {toolCalls}
80
86
  </Fragment>
81
87
  );
@@ -1,4 +1,3 @@
1
- import { ApplicationIcons } from "../../appearance/icons";
2
1
  import {
3
2
  ChatMessageAssistant,
4
3
  ChatMessageSystem,
@@ -11,7 +10,8 @@ import {
11
10
  ContentVideo,
12
11
  Events,
13
12
  Messages,
14
- } from "../../types/log";
13
+ } from "../../../@types/log";
14
+ import { ApplicationIcons } from "../../appearance/icons";
15
15
 
16
16
  export interface ResolvedMessage {
17
17
  message: ChatMessageAssistant | ChatMessageSystem | ChatMessageUser;
@@ -0,0 +1,7 @@
1
+ .output {
2
+ }
3
+
4
+ .toolCallView {
5
+ display: grid;
6
+ row-gap: 1em;
7
+ }
@@ -1,6 +1,5 @@
1
+ import clsx from "clsx";
1
2
  import { FC, useMemo } from "react";
2
- import ExpandablePanel from "../../../components/ExpandablePanel";
3
- import { ContentTool } from "../../../types";
4
3
  import {
5
4
  ContentAudio,
6
5
  ContentImage,
@@ -8,7 +7,9 @@ import {
8
7
  ContentText,
9
8
  ContentVideo,
10
9
  ToolCallContent,
11
- } from "../../../types/log";
10
+ } from "../../../../@types/log";
11
+ import { ContentTool } from "../../../../app/types";
12
+ import ExpandablePanel from "../../../../components/ExpandablePanel";
12
13
  import { MessageContent } from "../MessageContent";
13
14
  import styles from "./ToolCallView.module.css";
14
15
  import { ToolInput } from "./ToolInput";
@@ -105,32 +106,30 @@ export const ToolCallView: FC<ToolCallViewProps> = ({
105
106
 
106
107
  const contents = mode !== "compact" ? input : input || functionCall;
107
108
  return (
108
- <div>
109
- {mode !== "compact" && (!view || view.title) ? (
110
- <ToolTitle title={view?.title || functionCall} />
111
- ) : (
112
- ""
113
- )}
109
+ <div className={clsx(styles.toolCallView)}>
114
110
  <div>
115
- <div>
116
- <ToolInput
117
- highlightLanguage={highlightLanguage}
118
- contents={contents}
119
- toolCallView={view}
120
- />
121
- {hasContent ? (
122
- <ExpandablePanel
123
- id={`${id}-tool-input`}
124
- collapse={collapse}
125
- border={true}
126
- lines={15}
127
- className={styles.output}
128
- >
129
- <MessageContent contents={normalizedContent} />
130
- </ExpandablePanel>
131
- ) : undefined}
132
- </div>
111
+ {mode !== "compact" && (!view || view.title) ? (
112
+ <ToolTitle title={view?.title || functionCall} />
113
+ ) : (
114
+ ""
115
+ )}
116
+ <ToolInput
117
+ highlightLanguage={highlightLanguage}
118
+ contents={contents}
119
+ toolCallView={view}
120
+ />
133
121
  </div>
122
+ {hasContent ? (
123
+ <ExpandablePanel
124
+ id={`${id}-tool-input`}
125
+ collapse={collapse}
126
+ border={true}
127
+ lines={15}
128
+ className={styles.output}
129
+ >
130
+ <MessageContent contents={normalizedContent} />
131
+ </ExpandablePanel>
132
+ ) : undefined}
134
133
  </div>
135
134
  );
136
135
  };
@@ -0,0 +1,19 @@
1
+ .outputPre {
2
+ padding: 0.5em;
3
+ margin-top: 0.25em;
4
+ margin-bottom: 0;
5
+ }
6
+
7
+ .toolView {
8
+ margin-top: 0.25em;
9
+ }
10
+
11
+ .toolView pre[class*="language-"] {
12
+ padding: 0.5em !important;
13
+ }
14
+
15
+ .outputCode {
16
+ font-size: 0.8rem !important;
17
+ overflow-wrap: anywhere !important;
18
+ white-space: pre-wrap !important;
19
+ }
@@ -1,8 +1,8 @@
1
1
  import clsx from "clsx";
2
2
  import { FC } from "react";
3
- import { MarkdownDiv } from "../../../components/MarkdownDiv";
3
+ import { MarkdownDiv } from "../../../../components/MarkdownDiv";
4
4
 
5
- import { usePrismHighlight } from "../../../state/hooks";
5
+ import { usePrismHighlight } from "../../../../state/hooks";
6
6
  import styles from "./ToolInput.module.css";
7
7
 
8
8
  interface ToolInputProps {
@@ -22,7 +22,7 @@ export const ToolInput: FC<ToolInputProps> = (props) => {
22
22
  <MarkdownDiv
23
23
  markdown={toolCallView.content}
24
24
  ref={prismParentRef}
25
- className={clsx(styles.bottomPadding, "text-size-small", "tool-output")}
25
+ className={clsx("tool-output", styles.toolView)}
26
26
  />
27
27
  );
28
28
  }
@@ -12,6 +12,7 @@
12
12
  padding: 0.5em 0.5em 0.5em 0.5em;
13
13
  white-space: pre-wrap;
14
14
  margin-bottom: 0;
15
+ font-size: 1em !important;
15
16
  }
16
17
 
17
18
  .textCode {
@@ -1,6 +1,6 @@
1
1
  import clsx from "clsx";
2
2
  import { FC } from "react";
3
- import { ContentImage, ContentText } from "../../../types/log";
3
+ import { ContentImage, ContentText } from "../../../../@types/log";
4
4
  import styles from "./ToolOutput.module.css";
5
5
 
6
6
  interface ToolOutputProps {
@@ -2,3 +2,7 @@
2
2
  margin-right: 0.2rem;
3
3
  opacity: 0.4;
4
4
  }
5
+
6
+ .toolTitle {
7
+ color: unset !important;
8
+ }
@@ -11,8 +11,8 @@ interface ToolTitleProps {
11
11
  export const ToolTitle: FC<ToolTitleProps> = ({ title }) => {
12
12
  return (
13
13
  <Fragment>
14
- <i className={clsx("bi", "bi-tools", styles.styles)} />
15
- <code className={"text-size-small"}>{title}</code>
14
+ <i className={clsx("bi", "bi-tools", styles.image)} />
15
+ <code className={clsx("text-size-small", styles.toolTitle)}>{title}</code>
16
16
  </Fragment>
17
17
  );
18
18
  };
@@ -2,7 +2,7 @@ import "prismjs/components/prism-bash";
2
2
  import "prismjs/components/prism-json";
3
3
  import "prismjs/components/prism-python";
4
4
 
5
- import { Arguments } from "../../../types/log";
5
+ import { Arguments } from "../../../../@types/log";
6
6
 
7
7
  export interface ToolCallResult {
8
8
  functionCall: string;
@@ -0,0 +1 @@
1
+ export type ChatViewToolCallStyle = "compact" | "complete" | "omit";
@@ -1,8 +1,8 @@
1
1
  import { ReactNode } from "react";
2
- import { BasicSampleData, SampleSummary } from "../../api/types";
3
- import { ScoreLabel } from "../../types";
4
- import { Value2 } from "../../types/log";
5
- import { arrayToString, inputString } from "../../utils/format";
2
+ import { Value2 } from "../../../@types/log";
3
+ import { ScoreLabel } from "../../../app/types";
4
+ import { BasicSampleData, SampleSummary } from "../../../client/api/types";
5
+ import { arrayToString, inputString } from "../../../utils/format";
6
6
  import { getScoreDescriptorForValues } from "./score/ScoreDescriptor";
7
7
  import {
8
8
  EvalDescriptor,
@@ -298,11 +298,12 @@ export const createSamplesDescriptor = (
298
298
  : current.error
299
299
  ? String(current.error)
300
300
  : "";
301
- previous[0] = Math.min(Math.max(previous[0], text.length), 300);
301
+ previous[0] = Math.min(Math.max(previous[0], text.length), 200);
302
302
  previous[1] = Math.min(
303
303
  Math.max(previous[1], arrayToString(current.target).length),
304
304
  300,
305
305
  );
306
+
306
307
  previous[2] = Math.min(
307
308
  Math.max(
308
309
  previous[2],
@@ -317,14 +318,21 @@ export const createSamplesDescriptor = (
317
318
  50,
318
319
  );
319
320
  previous[4] = Math.min(
320
- Math.max(previous[4], String(current.id).length),
321
+ Math.max(
322
+ previous[4],
323
+ current.retries ? String(current.retries).length : 0,
324
+ ),
325
+ 50,
326
+ );
327
+ previous[5] = Math.min(
328
+ Math.max(previous[5], String(current.id).length),
321
329
  10,
322
330
  );
323
- previous[5] = Math.min(Math.max(previous[5], scoreText.length), 30);
331
+ previous[6] = Math.min(Math.max(previous[6], scoreText.length), 30);
324
332
 
325
333
  return previous;
326
334
  },
327
- [0, 0, 0, 0, 0, 0],
335
+ [0, 0, 0, 0, 0, 0, 0],
328
336
  );
329
337
 
330
338
  // normalize to base 1
@@ -333,30 +341,45 @@ export const createSamplesDescriptor = (
333
341
  target: Math.min(sizes[1], 300),
334
342
  answer: Math.min(sizes[2], 300),
335
343
  limit: Math.min(sizes[3], 50),
336
- id: Math.min(sizes[4], 10),
337
- score: Math.min(sizes[5], 30),
344
+ retries: Math.min(sizes[4], 50),
345
+ id: Math.min(sizes[5], 10),
346
+ score: Math.min(sizes[6], 30),
338
347
  };
339
348
  const base =
340
349
  maxSizes.input +
341
350
  maxSizes.target +
342
351
  maxSizes.answer +
343
352
  maxSizes.limit +
353
+ maxSizes.retries +
344
354
  maxSizes.id +
345
355
  maxSizes.score || 1;
356
+
357
+ const inputNormalized = maxSizes.input / base;
358
+ const targetNormalized =
359
+ maxSizes.target / base > 0
360
+ ? Math.max(maxSizes.target / base, inputNormalized / 10)
361
+ : 0;
362
+ const answerNormalized =
363
+ maxSizes.answer / base > 0
364
+ ? Math.max(maxSizes.answer / base, inputNormalized / 10)
365
+ : 0;
366
+
346
367
  const messageShape = {
347
368
  raw: {
348
369
  input: sizes[0],
349
370
  target: sizes[1],
350
371
  answer: sizes[2],
351
372
  limit: sizes[3],
352
- id: sizes[4],
353
- score: sizes[5],
373
+ retries: sizes[4],
374
+ id: sizes[5],
375
+ score: sizes[6],
354
376
  },
355
377
  normalized: {
356
- input: maxSizes.input / base,
357
- target: maxSizes.target / base,
358
- answer: maxSizes.answer / base,
378
+ input: inputNormalized,
379
+ target: targetNormalized,
380
+ answer: answerNormalized,
359
381
  limit: maxSizes.limit / base,
382
+ retries: maxSizes.retries / base,
360
383
  id: maxSizes.id / base,
361
384
  score: maxSizes.score / base,
362
385
  },
@@ -1,5 +1,5 @@
1
1
  import clsx from "clsx";
2
- import { Value2 } from "../../../types/log";
2
+ import { Value2 } from "../../../../@types/log";
3
3
  import { ScoreDescriptor, SelectedScore } from "../types";
4
4
  import styles from "./BooleanScoreDescriptor.module.css";
5
5
 
@@ -1,5 +1,5 @@
1
- import { kScoreTypeCategorical } from "../../../constants";
2
- import { Value2 } from "../../../types/log";
1
+ import { Value2 } from "../../../../@types/log";
2
+ import { kScoreTypeCategorical } from "../../../../constants";
3
3
  import { ScoreDescriptor } from "../types";
4
4
 
5
5
  export const categoricalScoreDescriptor = (
@@ -1,6 +1,6 @@
1
- import { kScoreTypeNumeric } from "../../../constants";
2
- import { Value2 } from "../../../types/log";
3
- import { formatDecimalNoTrailingZeroes } from "../../../utils/format";
1
+ import { Value2 } from "../../../../@types/log";
2
+ import { kScoreTypeNumeric } from "../../../../constants";
3
+ import { formatDecimalNoTrailingZeroes } from "../../../../utils/format";
4
4
  import { ScoreDescriptor } from "../types";
5
5
 
6
6
  export const numericScoreDescriptor = (values: Value2[]): ScoreDescriptor => {
@@ -1,9 +1,9 @@
1
1
  import clsx from "clsx";
2
2
  import { JSX } from "react";
3
- import { kScoreTypeObject } from "../../../constants";
4
- import { Value2 } from "../../../types/log";
5
- import { formatPrettyDecimal } from "../../../utils/format";
6
- import { isNumeric } from "../../../utils/type";
3
+ import { Value2 } from "../../../../@types/log";
4
+ import { kScoreTypeObject } from "../../../../constants";
5
+ import { formatPrettyDecimal } from "../../../../utils/format";
6
+ import { isNumeric } from "../../../../utils/type";
7
7
  import { ScoreDescriptor } from "../types";
8
8
  import styles from "./ObjectScoreDescriptor.module.css";
9
9
 
@@ -1,5 +1,5 @@
1
- import { kScoreTypeOther } from "../../../constants";
2
- import { RenderedContent } from "../../../metadata/RenderedContent";
1
+ import { kScoreTypeOther } from "../../../../constants";
2
+ import { RenderedContent } from "../../../content/RenderedContent";
3
3
  import { ScoreDescriptor } from "../types";
4
4
 
5
5
  export const otherScoreDescriptor = (): ScoreDescriptor => {
@@ -1,6 +1,6 @@
1
1
  import clsx from "clsx";
2
- import { kScoreTypePassFail } from "../../../constants";
3
- import { Value2 } from "../../../types/log";
2
+ import { Value2 } from "../../../../@types/log";
3
+ import { kScoreTypePassFail } from "../../../../constants";
4
4
  import { ScoreDescriptor, SelectedScore } from "../types";
5
5
  import styles from "./PassFailScoreDescriptor.module.css";
6
6
 
@@ -1,4 +1,4 @@
1
- import { Value2 } from "../../../types/log";
1
+ import { Value2 } from "../../../../@types/log";
2
2
  import { ScoreDescriptor } from "../types";
3
3
  import { booleanScoreDescriptor } from "./BooleanScoreDescriptor";
4
4
  import { categoricalScoreDescriptor } from "./CategoricalScoreDescriptor";
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from "react";
2
- import { BasicSampleData } from "../../api/types";
3
- import { ScoreLabel } from "../../types";
4
- import { Value2 } from "../../types/log";
2
+ import { Value2 } from "../../../@types/log";
3
+ import { ScoreLabel } from "../../../app/types";
4
+ import { BasicSampleData } from "../../../client/api/types";
5
5
 
6
6
  export interface EvalDescriptor {
7
7
  scores: ScoreLabel[];
@@ -52,5 +52,6 @@ export interface MessageShapeData {
52
52
  target: number;
53
53
  answer: number;
54
54
  limit: number;
55
+ retries: number;
55
56
  score: number;
56
57
  }
@@ -2,7 +2,7 @@
2
2
  color: var(--bs-danger);
3
3
  display: grid;
4
4
  grid-template-columns: 1fr;
5
- align-content: align;
5
+ align-content: baseline;
6
6
  justify-items: center;
7
7
  }
8
8
 
@@ -13,5 +13,6 @@
13
13
  }
14
14
 
15
15
  .message {
16
+ text-align: center;
16
17
  width: 300px;
17
18
  }
@@ -3,6 +3,7 @@ interface SampleHeaderProps {
3
3
  target?: boolean;
4
4
  answer?: boolean;
5
5
  limit?: boolean;
6
+ retries?: boolean;
6
7
  score?: boolean;
7
8
  gridColumnsTemplate: string;
8
9
  }
@@ -15,6 +16,7 @@ export const SampleHeader: FC<SampleHeaderProps> = ({
15
16
  target = true,
16
17
  answer = true,
17
18
  limit = true,
19
+ retries = false,
18
20
  score = true,
19
21
  gridColumnsTemplate,
20
22
  }) => (
@@ -32,6 +34,7 @@ export const SampleHeader: FC<SampleHeaderProps> = ({
32
34
  <div>{target ? "Target" : ""}</div>
33
35
  <div>{answer ? "Answer" : ""}</div>
34
36
  <div>{limit ? "Limit" : ""}</div>
37
+ <div>{retries ? "Retries" : ""}</div>
35
38
  <div className={styles.center}>{score ? "Score" : ""}</div>
36
39
  </div>
37
40
  );