inspect-ai 0.3.90__py3-none-any.whl → 0.3.92__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- inspect_ai/_cli/common.py +13 -0
- inspect_ai/_cli/eval.py +44 -0
- inspect_ai/_display/textual/widgets/samples.py +49 -4
- inspect_ai/_display/textual/widgets/vscode.py +4 -2
- inspect_ai/_eval/eval.py +41 -28
- inspect_ai/_eval/evalset.py +4 -0
- inspect_ai/_eval/loader.py +4 -5
- inspect_ai/_eval/registry.py +1 -1
- inspect_ai/_eval/run.py +6 -3
- inspect_ai/_eval/task/log.py +6 -0
- inspect_ai/_eval/task/run.py +108 -41
- inspect_ai/_eval/task/sandbox.py +19 -5
- inspect_ai/_util/_async.py +1 -1
- inspect_ai/_util/constants.py +1 -0
- inspect_ai/_util/environ.py +32 -0
- inspect_ai/_util/file.py +8 -1
- inspect_ai/_util/httpx.py +105 -22
- inspect_ai/_util/registry.py +83 -9
- inspect_ai/_util/text.py +81 -17
- inspect_ai/_util/transcript.py +9 -6
- inspect_ai/_util/vscode.py +7 -2
- inspect_ai/_view/schema.py +1 -1
- inspect_ai/_view/www/babel.config.js +11 -0
- inspect_ai/_view/www/dist/assets/index.css +3640 -3563
- inspect_ai/_view/www/dist/assets/index.js +59204 -52519
- inspect_ai/_view/www/eslint.config.mjs +10 -1
- inspect_ai/_view/www/jest.config.mjs +21 -0
- inspect_ai/_view/www/log-schema.json +111 -2
- inspect_ai/_view/www/package.json +19 -5
- inspect_ai/_view/www/src/{types → @types}/log.d.ts +95 -32
- inspect_ai/_view/www/{App.css → src/app/App.css} +22 -14
- inspect_ai/_view/www/src/app/App.tsx +168 -0
- inspect_ai/_view/www/src/{AppErrorBoundary.tsx → app/AppErrorBoundary.tsx} +1 -1
- inspect_ai/_view/www/src/{appearance → app/appearance}/icons.ts +1 -0
- inspect_ai/_view/www/src/{metadata → app/content}/RenderedContent.tsx +5 -5
- inspect_ai/_view/www/src/{workspace/WorkSpaceView.tsx → app/log-view/LogView.tsx} +59 -40
- inspect_ai/_view/www/src/app/log-view/LogViewContainer.tsx +159 -0
- inspect_ai/_view/www/src/app/log-view/LogViewLayout.tsx +109 -0
- inspect_ai/_view/www/src/{workspace → app/log-view}/error/TaskErrorPanel.tsx +3 -3
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ModelRolesView.tsx +1 -1
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/Navbar.tsx +4 -4
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/PrimaryBar.tsx +8 -8
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ResultsPanel.tsx +6 -6
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/RunningStatusPanel.tsx +1 -1
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ScoreGrid.tsx +1 -1
- inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/SecondaryBar.tsx +8 -8
- inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/InfoTab.tsx +35 -6
- inspect_ai/_view/www/src/app/log-view/tabs/JsonTab.tsx +136 -0
- inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/SamplesTab.tsx +82 -73
- inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/grouping.ts +3 -3
- inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/types.ts +1 -1
- inspect_ai/_view/www/src/{plan → app/plan}/DatasetDetailView.tsx +2 -2
- inspect_ai/_view/www/src/{plan → app/plan}/DetailStep.tsx +1 -1
- inspect_ai/_view/www/src/{plan → app/plan}/ModelCard.tsx +4 -4
- inspect_ai/_view/www/src/{plan → app/plan}/PlanCard.tsx +2 -2
- inspect_ai/_view/www/src/{plan → app/plan}/PlanDetailView.tsx +5 -5
- inspect_ai/_view/www/src/{plan → app/plan}/SolverDetailView.tsx +1 -1
- inspect_ai/_view/www/src/app/routing/AppRouter.tsx +58 -0
- inspect_ai/_view/www/src/app/routing/navigationHooks.ts +182 -0
- inspect_ai/_view/www/src/app/routing/url.ts +43 -0
- inspect_ai/_view/www/src/{samples → app/samples}/InlineSampleDisplay.tsx +11 -27
- inspect_ai/_view/www/src/{samples → app/samples}/SampleDialog.tsx +36 -40
- inspect_ai/_view/www/src/{samples → app/samples}/SampleDisplay.module.css +4 -0
- inspect_ai/_view/www/src/{samples → app/samples}/SampleDisplay.tsx +116 -49
- inspect_ai/_view/www/src/{samples → app/samples}/SampleSummaryView.module.css +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/SampleSummaryView.tsx +29 -26
- inspect_ai/_view/www/src/{samples → app/samples}/SamplesTools.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessage.module.css +5 -2
- inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessage.tsx +12 -4
- inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessageRenderer.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessageRow.tsx +6 -1
- inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatView.tsx +4 -2
- inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatViewVirtualList.tsx +5 -3
- inspect_ai/_view/www/src/app/samples/chat/MessageContent.module.css +12 -0
- inspect_ai/_view/www/src/{samples → app/samples}/chat/MessageContent.tsx +11 -10
- inspect_ai/_view/www/src/app/samples/chat/MessageContents.module.css +7 -0
- inspect_ai/_view/www/src/{samples → app/samples}/chat/MessageContents.tsx +14 -8
- inspect_ai/_view/www/src/{samples → app/samples}/chat/messages.ts +2 -2
- inspect_ai/_view/www/src/app/samples/chat/tools/ToolCallView.module.css +7 -0
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolCallView.tsx +26 -27
- inspect_ai/_view/www/src/app/samples/chat/tools/ToolInput.module.css +19 -0
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolInput.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolOutput.module.css +1 -0
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolOutput.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolTitle.module.css +4 -0
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/ToolTitle.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/chat/tools/tool.ts +1 -1
- inspect_ai/_view/www/src/app/samples/chat/types.ts +1 -0
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/samplesDescriptor.tsx +38 -15
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/BooleanScoreDescriptor.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/CategoricalScoreDescriptor.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/NumericScoreDescriptor.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/ObjectScoreDescriptor.tsx +4 -4
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/OtherScoreDescriptor.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/PassFailScoreDescriptor.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/ScoreDescriptor.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/descriptor/types.ts +4 -3
- inspect_ai/_view/www/src/{samples → app/samples}/error/SampleErrorView.module.css +2 -1
- inspect_ai/_view/www/src/{samples → app/samples}/list/SampleHeader.tsx +3 -0
- inspect_ai/_view/www/src/{samples → app/samples}/list/SampleList.tsx +47 -33
- inspect_ai/_view/www/src/{samples → app/samples}/list/SampleRow.module.css +16 -0
- inspect_ai/_view/www/src/{samples → app/samples}/list/SampleRow.tsx +47 -20
- inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SelectScorer.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SortFilter.tsx +4 -4
- inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/filters.ts +8 -6
- inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/SampleFilter.tsx +4 -3
- inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/completions.ts +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/language.ts +1 -0
- inspect_ai/_view/www/src/{samples → app/samples}/sampleDataAdapter.ts +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/sampleLimit.ts +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScores.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresGrid.tsx +12 -11
- inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresView.tsx +6 -6
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/ApprovalEventView.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/ErrorEventView.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/InfoEventView.tsx +4 -4
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/InputEventView.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/LoggerEventView.tsx +3 -3
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/ModelEventView.module.css +13 -7
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/ModelEventView.tsx +49 -21
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/SampleInitEventView.tsx +11 -9
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/SampleLimitEventView.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/SandboxEventView.tsx +8 -6
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/ScoreEventView.tsx +4 -4
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/StepEventView.tsx +11 -3
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/SubtaskEventView.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/ToolEventView.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptView.module.css +8 -7
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptView.tsx +32 -114
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptVirtualListComponent.module.css +6 -5
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/TranscriptVirtualListComponent.tsx +14 -2
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventPanel.tsx +2 -2
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventTimingPanel.tsx +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/utils.ts +1 -1
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventRenderers.tsx +23 -21
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventRenders.module.css +7 -0
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventView.tsx +2 -2
- inspect_ai/_view/www/src/app/samples/transcript/transform/fixups.ts +142 -0
- inspect_ai/_view/www/src/app/samples/transcript/transform/treeify.ts +39 -0
- inspect_ai/_view/www/src/{samples → app/samples}/transcript/types.ts +1 -1
- inspect_ai/_view/www/src/{workspace → app}/sidebar/EvalStatus.tsx +1 -1
- inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.module.css +16 -0
- inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.tsx +70 -0
- inspect_ai/_view/www/src/{workspace → app}/sidebar/Sidebar.module.css +8 -0
- inspect_ai/_view/www/src/{workspace → app}/sidebar/Sidebar.tsx +35 -17
- inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarLogEntry.tsx +1 -1
- inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoreView.tsx +2 -2
- inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoresView.tsx +2 -2
- inspect_ai/_view/www/src/{types.ts → app/types.ts} +18 -11
- inspect_ai/_view/www/src/{usage → app/usage}/ModelTokenTable.tsx +1 -1
- inspect_ai/_view/www/src/{usage → app/usage}/ModelUsagePanel.tsx +2 -2
- inspect_ai/_view/www/src/{usage → app/usage}/TokenTable.tsx +1 -1
- inspect_ai/_view/www/src/{usage → app/usage}/UsageCard.tsx +6 -6
- inspect_ai/_view/www/src/{api → client/api}/api-browser.ts +2 -2
- inspect_ai/_view/www/src/{api → client/api}/api-http.ts +3 -3
- inspect_ai/_view/www/src/{api → client/api}/api-vscode.ts +2 -2
- inspect_ai/_view/www/src/{api → client/api}/client-api.ts +6 -5
- inspect_ai/_view/www/src/{api → client/api}/index.ts +2 -2
- inspect_ai/_view/www/src/{api → client/api}/types.ts +4 -1
- inspect_ai/_view/www/src/{logfile → client/remote}/remoteLogFile.ts +3 -3
- inspect_ai/_view/www/src/{storage → client/storage}/index.ts +11 -5
- inspect_ai/_view/www/src/components/Card.tsx +1 -1
- inspect_ai/_view/www/src/components/CopyButton.tsx +1 -1
- inspect_ai/_view/www/src/components/DownloadButton.tsx +1 -1
- inspect_ai/_view/www/src/components/ErrorPanel.tsx +1 -1
- inspect_ai/_view/www/src/components/{ExpandablePanel.css → ExpandablePanel.module.css} +14 -11
- inspect_ai/_view/www/src/components/ExpandablePanel.tsx +16 -10
- inspect_ai/_view/www/src/components/FindBand.tsx +1 -1
- inspect_ai/_view/www/src/components/JsonPanel.css +2 -2
- inspect_ai/_view/www/src/components/LargeModal.tsx +12 -1
- inspect_ai/_view/www/src/components/LightboxCarousel.tsx +1 -1
- inspect_ai/_view/www/src/components/MarkdownDiv.tsx +3 -1
- inspect_ai/_view/www/src/components/MessageBand.tsx +1 -1
- inspect_ai/_view/www/src/components/NoContentsPanel.tsx +1 -1
- inspect_ai/_view/www/src/constants.ts +10 -9
- inspect_ai/_view/www/src/index.tsx +27 -11
- inspect_ai/_view/www/src/state/appSlice.ts +44 -5
- inspect_ai/_view/www/src/state/hooks.ts +30 -7
- inspect_ai/_view/www/src/state/logSlice.ts +7 -5
- inspect_ai/_view/www/src/state/logsPolling.ts +1 -1
- inspect_ai/_view/www/src/state/logsSlice.ts +18 -13
- inspect_ai/_view/www/src/state/samplePolling.ts +12 -12
- inspect_ai/_view/www/src/state/sampleSlice.ts +3 -5
- inspect_ai/_view/www/src/state/sampleUtils.ts +1 -1
- inspect_ai/_view/www/src/{scoring/utils.ts → state/scoring.ts} +2 -2
- inspect_ai/_view/www/src/state/store.ts +9 -7
- inspect_ai/_view/www/src/state/utils.ts +1 -1
- inspect_ai/_view/www/src/tests/README.md +49 -0
- inspect_ai/_view/www/src/tests/__mocks__/fileMock.js +1 -0
- inspect_ai/_view/www/src/tests/__mocks__/styleMock.js +1 -0
- inspect_ai/_view/www/src/tests/setupTests.mjs +1 -0
- inspect_ai/_view/www/src/tests/utils/base64.test.ts +23 -0
- inspect_ai/_view/www/src/tests/utils/format.test.ts +127 -0
- inspect_ai/_view/www/src/tests/utils/path.test.ts +54 -0
- inspect_ai/_view/www/src/utils/format.ts +8 -2
- inspect_ai/_view/www/src/utils/path.ts +14 -2
- inspect_ai/_view/www/src/utils/polling.ts +1 -2
- inspect_ai/_view/www/src/utils/uri.ts +32 -0
- inspect_ai/_view/www/yarn.lock +3310 -382
- inspect_ai/agent/_handoff.py +6 -3
- inspect_ai/agent/_human/agent.py +5 -3
- inspect_ai/agent/_human/install.py +16 -7
- inspect_ai/agent/_human/panel.py +14 -1
- inspect_ai/agent/_human/service.py +5 -1
- inspect_ai/agent/_react.py +161 -128
- inspect_ai/agent/_types.py +15 -4
- inspect_ai/approval/_policy.py +2 -2
- inspect_ai/log/_file.py +30 -11
- inspect_ai/log/_log.py +7 -1
- inspect_ai/log/_recorders/eval.py +3 -0
- inspect_ai/log/_recorders/types.py +1 -0
- inspect_ai/log/_samples.py +4 -0
- inspect_ai/model/_call_tools.py +33 -17
- inspect_ai/model/_generate_config.py +10 -2
- inspect_ai/model/_model.py +41 -21
- inspect_ai/model/_model_output.py +2 -1
- inspect_ai/model/_openai.py +10 -8
- inspect_ai/model/_openai_responses.py +95 -42
- inspect_ai/model/_providers/anthropic.py +14 -12
- inspect_ai/model/_providers/google.py +191 -95
- inspect_ai/model/_providers/hf.py +1 -1
- inspect_ai/model/_providers/mistral.py +2 -3
- inspect_ai/model/_providers/openai.py +54 -17
- inspect_ai/model/_providers/openai_o1.py +1 -1
- inspect_ai/model/_providers/openai_responses.py +28 -16
- inspect_ai/model/_providers/openrouter.py +14 -0
- inspect_ai/model/_providers/providers.py +2 -2
- inspect_ai/model/_providers/util/chatapi.py +17 -7
- inspect_ai/model/_providers/vllm.py +1 -1
- inspect_ai/scorer/_metric.py +17 -1
- inspect_ai/scorer/_model.py +51 -6
- inspect_ai/scorer/_scorer.py +1 -1
- inspect_ai/solver/_human_agent.py +3 -0
- inspect_ai/solver/_plan.py +1 -1
- inspect_ai/solver/_solver.py +1 -1
- inspect_ai/solver/_use_tools.py +14 -8
- inspect_ai/tool/__init__.py +16 -1
- inspect_ai/tool/_json_rpc_helpers.py +285 -0
- inspect_ai/tool/_mcp/__init__.py +13 -0
- inspect_ai/tool/_mcp/_context.py +14 -0
- inspect_ai/tool/_mcp/_mcp.py +293 -0
- inspect_ai/tool/_mcp/_sandbox.py +104 -0
- inspect_ai/tool/_mcp/_types.py +31 -0
- inspect_ai/tool/_mcp/connection.py +60 -0
- inspect_ai/tool/_mcp/sampling.py +118 -0
- inspect_ai/tool/_mcp/server.py +112 -0
- inspect_ai/tool/_mcp/tools.py +34 -0
- inspect_ai/tool/_tool.py +13 -0
- inspect_ai/tool/_tool_def.py +24 -7
- inspect_ai/tool/_tool_support_helpers.py +129 -153
- inspect_ai/tool/_tools/_bash_session.py +11 -11
- inspect_ai/tool/_tools/_text_editor.py +6 -6
- inspect_ai/tool/_tools/_web_browser/_web_browser.py +8 -8
- inspect_ai/util/_anyio.py +31 -20
- inspect_ai/util/_json.py +20 -2
- inspect_ai/util/_sandbox/context.py +18 -7
- inspect_ai/util/_sandbox/docker/compose.py +1 -1
- inspect_ai/util/_sandbox/docker/docker.py +92 -21
- inspect_ai/util/_sandbox/environment.py +33 -2
- inspect_ai/util/_sandbox/events.py +2 -2
- inspect_ai/util/_sandbox/service.py +13 -3
- {inspect_ai-0.3.90.dist-info → inspect_ai-0.3.92.dist-info}/METADATA +6 -2
- inspect_ai-0.3.92.dist-info/RECORD +732 -0
- {inspect_ai-0.3.90.dist-info → inspect_ai-0.3.92.dist-info}/WHEEL +1 -1
- inspect_ai/_view/www/src/App.tsx +0 -316
- inspect_ai/_view/www/src/samples/chat/MessageContent.module.css +0 -4
- inspect_ai/_view/www/src/samples/chat/MessageContents.module.css +0 -3
- inspect_ai/_view/www/src/samples/chat/tools/ToolCallView.module.css +0 -3
- inspect_ai/_view/www/src/samples/chat/tools/ToolInput.module.css +0 -14
- inspect_ai/_view/www/src/workspace/WorkSpace.tsx +0 -292
- inspect_ai/_view/www/src/workspace/sidebar/LogDirectoryTitleView.module.css +0 -5
- inspect_ai/_view/www/src/workspace/sidebar/LogDirectoryTitleView.tsx +0 -57
- inspect_ai/_view/www/src/workspace/tabs/JsonTab.tsx +0 -43
- inspect_ai-0.3.90.dist-info/RECORD +0 -705
- /inspect_ai/_view/www/src/{types → @types}/asciicinema-player.d.ts +0 -0
- /inspect_ai/_view/www/src/{types → @types}/jsondiffpatch.d.ts +0 -0
- /inspect_ai/_view/www/src/{types → @types}/markdown-it-katex.d.ts +0 -0
- /inspect_ai/_view/www/src/{types → @types}/prism.d.ts +0 -0
- /inspect_ai/_view/www/src/{appearance → app/appearance}/colors.ts +0 -0
- /inspect_ai/_view/www/src/{appearance → app/appearance}/fonts.ts +0 -0
- /inspect_ai/_view/www/src/{appearance → app/appearance}/styles.ts +0 -0
- /inspect_ai/_view/www/src/{metadata → app/content}/MetaDataGrid.tsx +0 -0
- /inspect_ai/_view/www/src/{metadata → app/content}/MetaDataView.module.css +0 -0
- /inspect_ai/_view/www/src/{metadata → app/content}/MetaDataView.tsx +0 -0
- /inspect_ai/_view/www/src/{metadata → app/content}/MetadataGrid.module.css +0 -0
- /inspect_ai/_view/www/src/{metadata → app/content}/RenderedContent.module.css +0 -0
- /inspect_ai/_view/www/src/{metadata → app/content}/types.ts +0 -0
- /inspect_ai/_view/www/src/{workspace/WorkSpaceView.module.css → app/log-view/LogView.module.css} +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/error/TaskErrorPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ModelRolesView.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/Navbar.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/PrimaryBar.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ResultsPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/RunningStatusPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/ScoreGrid.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/SecondaryBar.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/StatusPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/navbar/StatusPanel.tsx +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/InfoTab.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/JsonTab.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/RunningNoSamples.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/tabs/RunningNoSamples.tsx +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/types.ts +0 -0
- /inspect_ai/_view/www/src/{workspace → app/log-view}/utils.ts +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/DatasetDetailView.module.css +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/DetailStep.module.css +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/ModelCard.module.css +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/PlanDetailView.module.css +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/ScorerDetailView.module.css +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/ScorerDetailView.tsx +0 -0
- /inspect_ai/_view/www/src/{plan → app/plan}/SolverDetailView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/InlineSampleDisplay.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatMessageRow.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/chat/ChatViewVirtualList.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/BooleanScoreDescriptor.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/ObjectScoreDescriptor.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/descriptor/score/PassFailScoreDescriptor.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/error/FlatSampleErrorView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/error/FlatSampleErrorView.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/error/SampleErrorView.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/error/error.ts +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleFooter.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleFooter.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleHeader.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleList.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleSeparator.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/list/SampleSeparator.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/EpochFilter.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/EpochFilter.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SelectScorer.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/SortFilter.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/SampleFilter.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/tokenize.ts +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScores.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresGrid.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/scores/SampleScoresView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/InfoEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/LoggerEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/SampleInitEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/SandboxEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/ScoreEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/SubtaskEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/ToolEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNav.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNav.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNavs.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventNavs.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventProgressPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventProgressPanel.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventRow.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventRow.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventSection.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventSection.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/event/EventTimingPanel.module.css +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateDiffView.tsx +0 -0
- /inspect_ai/_view/www/src/{samples → app/samples}/transcript/state/StateEventView.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app}/sidebar/EvalStatus.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarLogEntry.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoreView.module.css +0 -0
- /inspect_ai/_view/www/src/{workspace → app}/sidebar/SidebarScoresView.module.css +0 -0
- /inspect_ai/_view/www/src/{usage → app/usage}/ModelUsagePanel.module.css +0 -0
- /inspect_ai/_view/www/src/{usage → app/usage}/TokenTable.module.css +0 -0
- /inspect_ai/_view/www/src/{usage → app/usage}/UsageCard.module.css +0 -0
- /inspect_ai/_view/www/src/{api → client/api}/api-shared.ts +0 -0
- /inspect_ai/_view/www/src/{api → client/api}/jsonrpc.ts +0 -0
- /inspect_ai/_view/www/src/{logfile → client/remote}/remoteZipFile.ts +0 -0
- {inspect_ai-0.3.90.dist-info → inspect_ai-0.3.92.dist-info}/entry_points.txt +0 -0
- {inspect_ai-0.3.90.dist-info → inspect_ai-0.3.92.dist-info}/licenses/LICENSE +0 -0
- {inspect_ai-0.3.90.dist-info → inspect_ai-0.3.92.dist-info}/top_level.txt +0 -0
@@ -9,17 +9,18 @@ import {
|
|
9
9
|
useRef,
|
10
10
|
} from "react";
|
11
11
|
import { Virtuoso, VirtuosoHandle } from "react-virtuoso";
|
12
|
-
import { MessageBand } from "
|
13
|
-
import { formatNoDecimal } from "
|
14
|
-
import { ListItem } from "../../
|
12
|
+
import { MessageBand } from "../../../components/MessageBand";
|
13
|
+
import { formatNoDecimal } from "../../../utils/format";
|
14
|
+
import { ListItem } from "../../log-view/tabs/types";
|
15
15
|
import { SamplesDescriptor } from "../descriptor/samplesDescriptor";
|
16
16
|
import { SampleRow } from "./SampleRow";
|
17
17
|
import { SampleSeparator } from "./SampleSeparator";
|
18
18
|
|
19
19
|
import clsx from "clsx";
|
20
|
-
import { useProperty, useSampleDescriptor } from "
|
21
|
-
import { useVirtuosoState } from "
|
22
|
-
import { useStore } from "
|
20
|
+
import { useProperty, useSampleDescriptor } from "../../../state/hooks";
|
21
|
+
import { useVirtuosoState } from "../../../state/scrolling";
|
22
|
+
import { useStore } from "../../../state/store";
|
23
|
+
import { useSampleNavigation } from "../../routing/navigationHooks";
|
23
24
|
import { SampleFooter } from "./SampleFooter";
|
24
25
|
import { SampleHeader } from "./SampleHeader";
|
25
26
|
import styles from "./SampleList.module.css";
|
@@ -31,9 +32,6 @@ interface SampleListProps {
|
|
31
32
|
items: ListItem[];
|
32
33
|
totalItemCount: number;
|
33
34
|
running: boolean;
|
34
|
-
nextSample: () => void;
|
35
|
-
prevSample: () => void;
|
36
|
-
showSample: (index: number) => void;
|
37
35
|
className?: string | string[];
|
38
36
|
listHandle: RefObject<VirtuosoHandle | null>;
|
39
37
|
}
|
@@ -41,22 +39,21 @@ interface SampleListProps {
|
|
41
39
|
export const kSampleFollowProp = "sample-list";
|
42
40
|
|
43
41
|
export const SampleList: FC<SampleListProps> = memo((props) => {
|
44
|
-
const {
|
45
|
-
items,
|
46
|
-
totalItemCount,
|
47
|
-
running,
|
48
|
-
nextSample,
|
49
|
-
prevSample,
|
50
|
-
showSample,
|
51
|
-
className,
|
52
|
-
listHandle,
|
53
|
-
} = props;
|
42
|
+
const { items, totalItemCount, running, className, listHandle } = props;
|
54
43
|
|
44
|
+
const selectedLogIndex = useStore((state) => state.logs.selectedLogIndex);
|
55
45
|
const { getRestoreState, isScrolling } = useVirtuosoState(
|
56
46
|
listHandle,
|
57
|
-
|
47
|
+
`sample-list-${selectedLogIndex}`,
|
58
48
|
);
|
59
49
|
|
50
|
+
useEffect(() => {
|
51
|
+
listHandle.current?.scrollTo({ top: 0, behavior: "instant" });
|
52
|
+
}, [selectedLogIndex]);
|
53
|
+
|
54
|
+
// Get sample navigation utilities
|
55
|
+
const sampleNavigation = useSampleNavigation();
|
56
|
+
|
60
57
|
const selectedSampleIndex = useStore(
|
61
58
|
(state) => state.log.selectedSampleIndex,
|
62
59
|
);
|
@@ -107,23 +104,28 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
107
104
|
(e: KeyboardEvent<HTMLDivElement>) => {
|
108
105
|
switch (e.key) {
|
109
106
|
case "ArrowUp":
|
110
|
-
|
107
|
+
sampleNavigation.previousSample();
|
111
108
|
e.preventDefault();
|
112
109
|
e.stopPropagation();
|
113
110
|
break;
|
114
111
|
case "ArrowDown":
|
115
|
-
nextSample();
|
112
|
+
sampleNavigation.nextSample();
|
116
113
|
e.preventDefault();
|
117
114
|
e.stopPropagation();
|
118
115
|
break;
|
119
116
|
case "Enter":
|
120
|
-
showSample(selectedSampleIndex);
|
117
|
+
sampleNavigation.showSample(selectedSampleIndex);
|
121
118
|
e.preventDefault();
|
122
119
|
e.stopPropagation();
|
123
120
|
break;
|
124
121
|
}
|
125
122
|
},
|
126
|
-
[
|
123
|
+
[
|
124
|
+
selectedSampleIndex,
|
125
|
+
sampleNavigation.nextSample,
|
126
|
+
sampleNavigation.previousSample,
|
127
|
+
sampleNavigation.showSample,
|
128
|
+
],
|
127
129
|
);
|
128
130
|
|
129
131
|
const gridColumnsTemplate = useMemo(() => {
|
@@ -143,7 +145,6 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
143
145
|
completed={item.completed}
|
144
146
|
scoreRendered={item.scoreRendered}
|
145
147
|
gridColumnsTemplate={gridColumnsTemplate}
|
146
|
-
showSample={showSample}
|
147
148
|
/>
|
148
149
|
);
|
149
150
|
} else if (item.type === "separator") {
|
@@ -158,10 +159,11 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
158
159
|
return null;
|
159
160
|
}
|
160
161
|
},
|
161
|
-
[
|
162
|
+
[gridColumnsTemplate],
|
162
163
|
);
|
163
164
|
|
164
|
-
const { input, limit, answer, target } =
|
165
|
+
const { input, limit, answer, target, retries } =
|
166
|
+
gridColumns(samplesDescriptor);
|
165
167
|
|
166
168
|
const sampleCount = items?.reduce((prev, current) => {
|
167
169
|
if (current.type === "sample") {
|
@@ -212,6 +214,7 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
212
214
|
target={target !== "0"}
|
213
215
|
answer={answer !== "0"}
|
214
216
|
limit={limit !== "0"}
|
217
|
+
retries={retries !== "0em"}
|
215
218
|
gridColumnsTemplate={gridColumnsTemplate}
|
216
219
|
/>
|
217
220
|
<Virtuoso
|
@@ -220,9 +223,13 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
220
223
|
data={items}
|
221
224
|
defaultItemHeight={50}
|
222
225
|
itemContent={renderRow}
|
223
|
-
followOutput={
|
224
|
-
|
225
|
-
|
226
|
+
followOutput={
|
227
|
+
running
|
228
|
+
? (_atBottom: boolean) => {
|
229
|
+
return followOutput;
|
230
|
+
}
|
231
|
+
: undefined
|
232
|
+
}
|
226
233
|
atBottomStateChange={handleAtBottomStateChange}
|
227
234
|
atBottomThreshold={30}
|
228
235
|
increaseViewportBy={{ top: 300, bottom: 300 }}
|
@@ -230,11 +237,12 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
230
237
|
main: 10,
|
231
238
|
reverse: 10,
|
232
239
|
}}
|
233
|
-
className={clsx(className)}
|
240
|
+
className={clsx(className, "samples-list")}
|
234
241
|
onKeyDown={onkeydown}
|
235
242
|
skipAnimationFrameInResizeObserver={true}
|
236
243
|
isScrolling={isScrolling}
|
237
244
|
restoreStateFrom={getRestoreState()}
|
245
|
+
tabIndex={0}
|
238
246
|
/>
|
239
247
|
<SampleFooter
|
240
248
|
sampleCount={sampleCount}
|
@@ -246,9 +254,9 @@ export const SampleList: FC<SampleListProps> = memo((props) => {
|
|
246
254
|
});
|
247
255
|
|
248
256
|
const gridColumnsValue = (sampleDescriptor?: SamplesDescriptor) => {
|
249
|
-
const { input, target, answer, limit, id, score } =
|
257
|
+
const { input, target, answer, limit, retries, id, score } =
|
250
258
|
gridColumns(sampleDescriptor);
|
251
|
-
return `${id} ${input} ${target} ${answer} ${limit} ${score}`;
|
259
|
+
return `${id} ${input} ${target} ${answer} ${limit} ${retries} ${score}`;
|
252
260
|
};
|
253
261
|
|
254
262
|
const gridColumns = (sampleDescriptor?: SamplesDescriptor) => {
|
@@ -268,6 +276,11 @@ const gridColumns = (sampleDescriptor?: SamplesDescriptor) => {
|
|
268
276
|
sampleDescriptor && sampleDescriptor.messageShape.normalized.limit > 0
|
269
277
|
? Math.max(0.15, sampleDescriptor.messageShape.normalized.limit)
|
270
278
|
: 0;
|
279
|
+
const retries =
|
280
|
+
sampleDescriptor && sampleDescriptor.messageShape.normalized.retries > 0
|
281
|
+
? 4
|
282
|
+
: 0;
|
283
|
+
|
271
284
|
const id = Math.max(
|
272
285
|
2,
|
273
286
|
Math.min(10, sampleDescriptor?.messageShape.raw.id || 0),
|
@@ -290,6 +303,7 @@ const gridColumns = (sampleDescriptor?: SamplesDescriptor) => {
|
|
290
303
|
target: frSize(target),
|
291
304
|
answer: frSize(answer),
|
292
305
|
limit: frSize(limit),
|
306
|
+
retries: `${retries}em`,
|
293
307
|
id: `${id}rem`,
|
294
308
|
score: `${score}rem`,
|
295
309
|
};
|
@@ -14,6 +14,17 @@
|
|
14
14
|
box-shadow: inset 0 0 0px 2px var(--bs-focus-ring-color);
|
15
15
|
}
|
16
16
|
|
17
|
+
.sampleRowLink {
|
18
|
+
text-decoration: none;
|
19
|
+
color: inherit;
|
20
|
+
display: block;
|
21
|
+
}
|
22
|
+
|
23
|
+
.disabled {
|
24
|
+
cursor: not-allowed;
|
25
|
+
opacity: 0.7;
|
26
|
+
}
|
27
|
+
|
17
28
|
.cell {
|
18
29
|
padding-left: 0;
|
19
30
|
padding-right: 0;
|
@@ -32,6 +43,11 @@
|
|
32
43
|
justify-self: center;
|
33
44
|
}
|
34
45
|
|
46
|
+
.centered {
|
47
|
+
display: flex;
|
48
|
+
justify-content: center;
|
49
|
+
}
|
50
|
+
|
35
51
|
.spinner {
|
36
52
|
height: 1.4em;
|
37
53
|
width: 1.4em;
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import clsx from "clsx";
|
2
|
-
import { FC, ReactNode
|
3
|
-
import { SampleSummary } from "
|
4
|
-
import { MarkdownDiv } from "
|
5
|
-
import { PulsingDots } from "
|
6
|
-
import { useStore } from "
|
7
|
-
import { arrayToString, inputString } from "
|
2
|
+
import { FC, ReactNode } from "react";
|
3
|
+
import { SampleSummary } from "../../../client/api/types";
|
4
|
+
import { MarkdownDiv } from "../../../components/MarkdownDiv";
|
5
|
+
import { PulsingDots } from "../../../components/PulsingDots";
|
6
|
+
import { useStore } from "../../../state/store";
|
7
|
+
import { arrayToString, inputString } from "../../../utils/format";
|
8
|
+
import { useSampleNavigation } from "../../routing/navigationHooks";
|
8
9
|
import { SampleErrorView } from "../error/SampleErrorView";
|
9
10
|
import styles from "./SampleRow.module.css";
|
10
11
|
|
@@ -17,7 +18,6 @@ interface SampleRowProps {
|
|
17
18
|
scoreRendered: ReactNode;
|
18
19
|
gridColumnsTemplate: string;
|
19
20
|
height: number;
|
20
|
-
showSample: (index: number) => void;
|
21
21
|
}
|
22
22
|
|
23
23
|
export const SampleRow: FC<SampleRowProps> = ({
|
@@ -29,7 +29,6 @@ export const SampleRow: FC<SampleRowProps> = ({
|
|
29
29
|
scoreRendered,
|
30
30
|
gridColumnsTemplate,
|
31
31
|
height,
|
32
|
-
showSample,
|
33
32
|
}) => {
|
34
33
|
const streamSampleData = useStore(
|
35
34
|
(state) => state.capabilities.streamSampleData,
|
@@ -37,20 +36,25 @@ export const SampleRow: FC<SampleRowProps> = ({
|
|
37
36
|
const selectedSampleIndex = useStore(
|
38
37
|
(state) => state.log.selectedSampleIndex,
|
39
38
|
);
|
40
|
-
|
41
|
-
|
42
|
-
showSample(index);
|
43
|
-
}
|
44
|
-
}, [index, showSample, completed]);
|
39
|
+
// Determine if this sample can be viewed (completed or streaming)
|
40
|
+
const isViewable = completed || streamSampleData;
|
45
41
|
|
46
|
-
|
42
|
+
// Get sample navigation utilities
|
43
|
+
const sampleNavigation = useSampleNavigation();
|
44
|
+
|
45
|
+
// Use sample navigation hook to get sample URL
|
46
|
+
const sampleUrl = isViewable
|
47
|
+
? sampleNavigation.getSampleUrl(sample.id, sample.epoch)
|
48
|
+
: undefined;
|
49
|
+
|
50
|
+
const rowContent = (
|
47
51
|
<div
|
48
52
|
id={`sample-${id}`}
|
49
|
-
onClick={handleClick}
|
50
53
|
className={clsx(
|
51
54
|
styles.grid,
|
52
55
|
"text-size-base",
|
53
56
|
selectedSampleIndex === index ? styles.selected : undefined,
|
57
|
+
!isViewable && !sampleUrl ? styles.disabled : undefined,
|
54
58
|
)}
|
55
59
|
style={{
|
56
60
|
height: `${height}px`,
|
@@ -72,10 +76,12 @@ export const SampleRow: FC<SampleRowProps> = ({
|
|
72
76
|
<MarkdownDiv markdown={inputString(sample.input).join(" ")} />
|
73
77
|
</div>
|
74
78
|
<div className={clsx("sample-target", "three-line-clamp", styles.cell)}>
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
+
{sample?.target ? (
|
80
|
+
<MarkdownDiv
|
81
|
+
markdown={arrayToString(sample.target)}
|
82
|
+
className={clsx("no-last-para-padding", styles.noLeft)}
|
83
|
+
/>
|
84
|
+
) : undefined}
|
79
85
|
</div>
|
80
86
|
<div className={clsx("sample-answer", "three-line-clamp", styles.cell)}>
|
81
87
|
{sample ? (
|
@@ -97,7 +103,17 @@ export const SampleRow: FC<SampleRowProps> = ({
|
|
97
103
|
>
|
98
104
|
{sample.limit}
|
99
105
|
</div>
|
100
|
-
|
106
|
+
<div
|
107
|
+
className={clsx(
|
108
|
+
"sample-retries",
|
109
|
+
"text-size-small",
|
110
|
+
"three-line-clamp",
|
111
|
+
styles.cell,
|
112
|
+
styles.centered,
|
113
|
+
)}
|
114
|
+
>
|
115
|
+
{sample.retries && sample.retries > 0 ? sample.retries : undefined}
|
116
|
+
</div>
|
101
117
|
<div className={clsx("text-size-small", styles.cell, styles.score)}>
|
102
118
|
{sample.error ? (
|
103
119
|
<SampleErrorView message={sample.error} />
|
@@ -109,4 +125,15 @@ export const SampleRow: FC<SampleRowProps> = ({
|
|
109
125
|
</div>
|
110
126
|
</div>
|
111
127
|
);
|
128
|
+
|
129
|
+
// Render the row content either as a link or directly
|
130
|
+
return (
|
131
|
+
<div
|
132
|
+
onClick={
|
133
|
+
isViewable ? () => sampleNavigation.showSample(index) : undefined
|
134
|
+
}
|
135
|
+
>
|
136
|
+
{rowContent}
|
137
|
+
</div>
|
138
|
+
);
|
112
139
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import clsx from "clsx";
|
2
2
|
import { ChangeEvent, FC, useCallback } from "react";
|
3
|
-
import { SampleSummary } from "
|
3
|
+
import { SampleSummary } from "../../../client/api/types";
|
4
4
|
import {
|
5
5
|
kEpochAscVal,
|
6
6
|
kEpochDescVal,
|
@@ -8,9 +8,9 @@ import {
|
|
8
8
|
kSampleDescVal,
|
9
9
|
kScoreAscVal,
|
10
10
|
kScoreDescVal,
|
11
|
-
} from "
|
12
|
-
import { ScoreLabel } from "
|
13
|
-
import { isNumeric } from "
|
11
|
+
} from "../../../constants";
|
12
|
+
import { ScoreLabel } from "../../../app/types";
|
13
|
+
import { isNumeric } from "../../../utils/type";
|
14
14
|
import { SamplesDescriptor } from "../descriptor/samplesDescriptor";
|
15
15
|
import styles from "./SortFilter.module.css";
|
16
16
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { compileExpression } from "filtrex";
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import { inputString } from "
|
2
|
+
import { Scores1 } from "../../../@types/log";
|
3
|
+
import { ScoreLabel } from "../../../app/types";
|
4
|
+
import { SampleSummary } from "../../../client/api/types";
|
5
|
+
import { kScoreTypeBoolean } from "../../../constants";
|
6
|
+
import { inputString } from "../../../utils/format";
|
7
7
|
import { EvalDescriptor, ScoreDescriptor } from "../descriptor/types";
|
8
8
|
|
9
9
|
export interface FilterError {
|
@@ -110,6 +110,7 @@ const scoreVariables = (
|
|
110
110
|
const sampleVariables = (sample: SampleSummary): Record<string, unknown> => {
|
111
111
|
return {
|
112
112
|
has_error: !!sample.error,
|
113
|
+
has_retries: sample.retries !== undefined && sample.retries > 0,
|
113
114
|
};
|
114
115
|
};
|
115
116
|
|
@@ -220,7 +221,8 @@ export const filterExpression = (
|
|
220
221
|
const resolveVariable = (name: string, get: (name: string) => any) => {
|
221
222
|
// Sample variables (like has_error) always exist.
|
222
223
|
if (name in mySampleVariables) {
|
223
|
-
|
224
|
+
const value = get(name);
|
225
|
+
return value;
|
224
226
|
}
|
225
227
|
// Score variables exist only if the sample completed successfully.
|
226
228
|
return sample.error ? undefined : get(name);
|
inspect_ai/_view/www/src/{samples → app/samples}/sample-tools/sample-filter/SampleFilter.tsx
RENAMED
@@ -16,9 +16,9 @@ import clsx from "clsx";
|
|
16
16
|
import { EditorView, minimalSetup } from "codemirror";
|
17
17
|
import { FC, useEffect, useMemo, useRef, useState } from "react";
|
18
18
|
|
19
|
-
import {
|
20
|
-
import {
|
21
|
-
import {
|
19
|
+
import { ScoreFilter } from "../../../../app/types";
|
20
|
+
import { SampleSummary } from "../../../../client/api/types";
|
21
|
+
import { useEvalDescriptor } from "../../../../state/hooks";
|
22
22
|
import { EvalDescriptor } from "../../descriptor/types";
|
23
23
|
import { FilterError, filterSamples, scoreFilterItems } from "../filters";
|
24
24
|
import { getCompletions } from "./completions";
|
@@ -43,6 +43,7 @@ Filter samples by:
|
|
43
43
|
• Scores
|
44
44
|
• Samples with errors: has_error
|
45
45
|
• Input, target and error regex search: input_contains, target_contains, error_contains
|
46
|
+
• Samples that have been retried: has_retries
|
46
47
|
|
47
48
|
Supported expressions:
|
48
49
|
• Arithmetic: +, -, *, /, mod, ^
|
@@ -15,6 +15,7 @@ export const MATH_FUNCTIONS: [string, string][] = [
|
|
15
15
|
|
16
16
|
export const SAMPLE_VARIABLES: [string, string][] = [
|
17
17
|
["has_error", "Checks if the sample has an error"],
|
18
|
+
["has_retries", "Checks if the sample has been retried"],
|
18
19
|
];
|
19
20
|
|
20
21
|
export const SAMPLE_FUNCTIONS: [string, string][] = [
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import { resolveAttachments } from "
|
1
|
+
import { Events } from "../../@types/log";
|
2
|
+
import { EventData, SampleData } from "../../client/api/types";
|
3
|
+
import { resolveAttachments } from "../../utils/attachments";
|
4
4
|
|
5
5
|
export const sampleDataAdapter = () => {
|
6
6
|
const attachments: Record<string, string> = {};
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import clsx from "clsx";
|
2
|
-
import { FC } from "react";
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
7
|
-
import {
|
2
|
+
import { FC, Fragment } from "react";
|
3
|
+
import { EvalSample } from "../../../@types/log";
|
4
|
+
import { SampleSummary } from "../../../client/api/types";
|
5
|
+
import { EmptyPanel } from "../../../components/EmptyPanel";
|
6
|
+
import { MarkdownDiv } from "../../../components/MarkdownDiv";
|
7
|
+
import { useEvalDescriptor } from "../../../state/hooks";
|
8
|
+
import { MetaDataGrid } from "../../content/MetaDataGrid";
|
8
9
|
import { SampleScores } from "./SampleScores";
|
9
10
|
import styles from "./SampleScoresGrid.module.css";
|
10
11
|
|
@@ -73,7 +74,7 @@ export const SampleScoresGrid: FC<SampleScoresGridProps> = ({
|
|
73
74
|
let metadata = scoreData.metadata || {};
|
74
75
|
|
75
76
|
return (
|
76
|
-
|
77
|
+
<Fragment key={`${scorer}-row`}>
|
77
78
|
<div className={clsx("text-size-base", styles.cell)}>{scorer}</div>
|
78
79
|
<div className={clsx(styles.cell, "text-size-base")}>{answer}</div>
|
79
80
|
<div className={clsx(styles.cell, "text-size-base")}>
|
@@ -83,11 +84,11 @@ export const SampleScoresGrid: FC<SampleScoresGridProps> = ({
|
|
83
84
|
/>
|
84
85
|
</div>
|
85
86
|
<div className={clsx("text-size-base", styles.cell)}>
|
86
|
-
{explanation}
|
87
|
+
<MarkdownDiv markdown={explanation} />
|
87
88
|
</div>
|
88
89
|
|
89
90
|
{Object.keys(metadata).length > 0 ? (
|
90
|
-
|
91
|
+
<Fragment key={`${scorer}-metadata`}>
|
91
92
|
<div
|
92
93
|
className={clsx(
|
93
94
|
"text-size-smaller",
|
@@ -108,9 +109,9 @@ export const SampleScoresGrid: FC<SampleScoresGridProps> = ({
|
|
108
109
|
styles.fullWidth,
|
109
110
|
)}
|
110
111
|
></div>
|
111
|
-
|
112
|
+
</Fragment>
|
112
113
|
) : undefined}
|
113
|
-
|
114
|
+
</Fragment>
|
114
115
|
);
|
115
116
|
})}
|
116
117
|
</div>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import clsx from "clsx";
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import { inputString } from "
|
2
|
+
import { EvalSample } from "../../../@types/log";
|
3
|
+
import { Card, CardBody } from "../../../components/Card";
|
4
|
+
import { MarkdownDiv } from "../../../components/MarkdownDiv";
|
5
|
+
import { inputString } from "../../../utils/format";
|
6
6
|
|
7
7
|
import { FC } from "react";
|
8
|
-
import ExpandablePanel from "
|
9
|
-
import { useEvalDescriptor } from "
|
8
|
+
import ExpandablePanel from "../../../components/ExpandablePanel";
|
9
|
+
import { useEvalDescriptor } from "../../../state/hooks";
|
10
10
|
import { SampleScoresGrid } from "./SampleScoresGrid";
|
11
11
|
import styles from "./SampleScoresView.module.css";
|
12
12
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { FC } from "react";
|
2
|
+
import { ApprovalEvent } from "../../../@types/log";
|
2
3
|
import { ApplicationIcons } from "../../appearance/icons";
|
3
|
-
import { ApprovalEvent } from "../../types/log";
|
4
4
|
import { EventRow } from "./event/EventRow";
|
5
5
|
|
6
6
|
interface ApprovalEventViewProps {
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { FC } from "react";
|
2
|
+
import { ErrorEvent } from "../../../@types/log";
|
3
|
+
import { ANSIDisplay } from "../../../components/AnsiDisplay";
|
4
|
+
import { formatDateTime } from "../../../utils/format";
|
2
5
|
import { ApplicationIcons } from "../../appearance/icons";
|
3
|
-
import { ANSIDisplay } from "../../components/AnsiDisplay";
|
4
|
-
import { ErrorEvent } from "../../types/log";
|
5
|
-
import { formatDateTime } from "../../utils/format";
|
6
6
|
import { EventPanel } from "./event/EventPanel";
|
7
7
|
|
8
8
|
interface ErrorEventViewProps {
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { FC } from "react";
|
2
|
+
import { InfoEvent } from "../../../@types/log";
|
3
|
+
import { JSONPanel } from "../../../components/JsonPanel";
|
4
|
+
import { MarkdownDiv } from "../../../components/MarkdownDiv";
|
5
|
+
import { formatDateTime } from "../../../utils/format";
|
2
6
|
import { ApplicationIcons } from "../../appearance/icons";
|
3
|
-
import { JSONPanel } from "../../components/JsonPanel";
|
4
|
-
import { MarkdownDiv } from "../../components/MarkdownDiv";
|
5
|
-
import { InfoEvent } from "../../types/log";
|
6
|
-
import { formatDateTime } from "../../utils/format";
|
7
7
|
import { EventPanel } from "./event/EventPanel";
|
8
8
|
import styles from "./InfoEventView.module.css";
|
9
9
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { FC } from "react";
|
2
|
+
import { InputEvent } from "../../../@types/log";
|
3
|
+
import { ANSIDisplay } from "../../../components/AnsiDisplay";
|
4
|
+
import { formatDateTime } from "../../../utils/format";
|
2
5
|
import { ApplicationIcons } from "../../appearance/icons";
|
3
|
-
import { ANSIDisplay } from "../../components/AnsiDisplay";
|
4
|
-
import { InputEvent } from "../../types/log";
|
5
|
-
import { formatDateTime } from "../../utils/format";
|
6
6
|
import { EventPanel } from "./event/EventPanel";
|
7
7
|
|
8
8
|
interface InputEventViewProps {
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import clsx from "clsx";
|
2
|
+
import { LoggerEvent } from "../../../@types/log";
|
2
3
|
import { ApplicationIcons } from "../../appearance/icons";
|
3
|
-
import { LoggerEvent } from "../../types/log";
|
4
4
|
import { EventRow } from "./event/EventRow";
|
5
5
|
|
6
6
|
import { FC } from "react";
|
7
|
-
import {
|
8
|
-
import {
|
7
|
+
import { parsedJson as maybeParseJson } from "../../../utils/json";
|
8
|
+
import { MetaDataGrid } from "../../content/MetaDataGrid";
|
9
9
|
import styles from "./LoggerEventView.module.css";
|
10
10
|
|
11
11
|
interface LoggerEventViewProps {
|
@@ -1,9 +1,5 @@
|
|
1
|
-
.output {
|
2
|
-
padding-top: 1em;
|
3
|
-
}
|
4
|
-
|
5
1
|
.container {
|
6
|
-
margin: 0.5em 0;
|
2
|
+
margin: 0.5em 0 0 0;
|
7
3
|
width: 100%;
|
8
4
|
}
|
9
5
|
|
@@ -35,13 +31,23 @@
|
|
35
31
|
word-wrap: anywhere !important;
|
36
32
|
}
|
37
33
|
|
34
|
+
.progress {
|
35
|
+
margin-left: 2em;
|
36
|
+
}
|
37
|
+
|
38
38
|
.toolConfig {
|
39
39
|
display: grid;
|
40
40
|
grid-template-columns: max-content auto;
|
41
41
|
column-gap: 1em;
|
42
42
|
row-gap: 0.5em;
|
43
|
+
padding-top: 0.5em;
|
43
44
|
}
|
44
45
|
|
45
|
-
.
|
46
|
-
|
46
|
+
.toolChoice {
|
47
|
+
border-top: solid var(--bs-light-border-subtle) 1px;
|
48
|
+
display: grid;
|
49
|
+
grid-template-columns: max-content auto;
|
50
|
+
column-gap: 1em;
|
51
|
+
margin-top: 0.5em;
|
52
|
+
padding-top: 0.5em;
|
47
53
|
}
|