inspect-ai 0.3.107__py3-none-any.whl → 0.3.109__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- inspect_ai/_eval/task/log.py +1 -1
- inspect_ai/_eval/task/run.py +1 -1
- inspect_ai/_util/dateutil.py +40 -0
- inspect_ai/_view/schema.py +11 -0
- inspect_ai/_view/www/CLAUDE.md +1 -1
- inspect_ai/_view/www/dist/assets/index.css +2068 -1796
- inspect_ai/_view/www/dist/assets/index.js +7951 -3643
- inspect_ai/_view/www/package.json +3 -2
- inspect_ai/_view/www/src/@types/log.d.ts +5 -5
- inspect_ai/_view/www/src/app/App.css +71 -4
- inspect_ai/_view/www/src/app/App.tsx +7 -0
- inspect_ai/_view/www/src/app/appearance/icons.ts +18 -2
- inspect_ai/_view/www/src/app/content/RenderedContent.tsx +7 -9
- inspect_ai/_view/www/src/app/log-list/LogItem.ts +18 -0
- inspect_ai/_view/www/src/app/log-list/LogListFooter.module.css +55 -0
- inspect_ai/_view/www/src/app/log-list/LogListFooter.tsx +67 -0
- inspect_ai/_view/www/src/app/log-list/LogPager.module.css +29 -0
- inspect_ai/_view/www/src/app/log-list/LogPager.tsx +134 -0
- inspect_ai/_view/www/src/app/log-list/LogsFilterInput.module.css +5 -0
- inspect_ai/_view/www/src/app/log-list/LogsFilterInput.tsx +31 -0
- inspect_ai/_view/www/src/app/log-list/LogsPanel.module.css +12 -0
- inspect_ai/_view/www/src/app/log-list/LogsPanel.tsx +178 -0
- inspect_ai/_view/www/src/app/log-list/grid/LogListGrid.module.css +115 -0
- inspect_ai/_view/www/src/app/log-list/grid/LogListGrid.tsx +304 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/CompletedDate.module.css +6 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/CompletedDate.tsx +64 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/EmptyCell.module.css +3 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/EmptyCell.tsx +7 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/FileName.module.css +20 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/FileName.tsx +52 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Icon.module.css +11 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Icon.tsx +35 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Model.module.css +6 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Model.tsx +34 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Score.module.css +6 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Score.tsx +61 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Status.module.css +15 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Status.tsx +95 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Task.module.css +20 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/Task.tsx +50 -0
- inspect_ai/_view/www/src/app/log-list/grid/columns/columns.ts +27 -0
- inspect_ai/_view/www/src/app/log-view/LogView.tsx +2 -5
- inspect_ai/_view/www/src/app/log-view/LogViewContainer.tsx +4 -30
- inspect_ai/_view/www/src/app/log-view/LogViewLayout.tsx +5 -30
- inspect_ai/_view/www/src/app/log-view/tabs/TaskTab.tsx +4 -7
- inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/PrimaryBar.module.css +2 -0
- inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/PrimaryBar.tsx +3 -31
- inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ResultsPanel.tsx +7 -57
- inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ScoreGrid.tsx +2 -2
- inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/SecondaryBar.tsx +7 -1
- inspect_ai/_view/www/src/app/log-view/{navbar/Navbar.tsx → title-view/TitleView.tsx} +3 -6
- inspect_ai/_view/www/src/app/navbar/Navbar.module.css +57 -0
- inspect_ai/_view/www/src/app/navbar/Navbar.tsx +117 -0
- inspect_ai/_view/www/src/app/navbar/useBreadcrumbTruncation.ts +128 -0
- inspect_ai/_view/www/src/app/plan/DatasetDetailView.tsx +3 -3
- inspect_ai/_view/www/src/app/plan/DetailStep.tsx +6 -6
- inspect_ai/_view/www/src/app/plan/PlanDetailView.module.css +1 -0
- inspect_ai/_view/www/src/app/plan/ScorerDetailView.tsx +1 -1
- inspect_ai/_view/www/src/app/routing/AppRouter.tsx +28 -4
- inspect_ai/_view/www/src/app/routing/RouteDispatcher.tsx +28 -0
- inspect_ai/_view/www/src/app/routing/sampleNavigation.ts +76 -7
- inspect_ai/_view/www/src/app/routing/url.ts +193 -20
- inspect_ai/_view/www/src/app/samples/SampleDisplay.tsx +3 -17
- inspect_ai/_view/www/src/app/samples/descriptor/score/ScoreDescriptor.tsx +1 -1
- inspect_ai/_view/www/src/app/samples/transcript/SubtaskEventView.tsx +2 -2
- inspect_ai/_view/www/src/app/samples/transcript/TranscriptPanel.tsx +2 -2
- inspect_ai/_view/www/src/app/samples/transcript/outline/tree-visitors.ts +5 -0
- inspect_ai/_view/www/src/app/samples/transcript/transform/treeify.ts +26 -10
- inspect_ai/_view/www/src/app/types.ts +21 -1
- inspect_ai/_view/www/src/client/api/api-http.ts +2 -1
- inspect_ai/_view/www/src/client/api/api-shared.ts +0 -32
- inspect_ai/_view/www/src/client/api/client-api.ts +1 -1
- inspect_ai/_view/www/src/client/remote/remoteLogFile.ts +38 -6
- inspect_ai/_view/www/src/components/TextInput.module.css +45 -0
- inspect_ai/_view/www/src/components/TextInput.tsx +52 -0
- inspect_ai/_view/www/src/constants.ts +18 -0
- inspect_ai/_view/www/src/img/inspect-16.svg +10 -0
- inspect_ai/_view/www/src/img/inspect-back.svg +5 -0
- inspect_ai/_view/www/src/img/inspect-file.svg +26 -0
- inspect_ai/_view/www/src/img/inspect-forward.svg +7 -0
- inspect_ai/_view/www/src/img/inspect-home.svg +18 -0
- inspect_ai/_view/www/src/scoring/metrics.ts +75 -0
- inspect_ai/_view/www/src/scoring/scores.ts +19 -0
- inspect_ai/_view/www/src/scoring/types.ts +11 -0
- inspect_ai/_view/www/src/state/appSlice.ts +27 -7
- inspect_ai/_view/www/src/state/clientEvents.ts +73 -0
- inspect_ai/_view/www/src/state/clientEventsService.ts +105 -0
- inspect_ai/_view/www/src/state/hooks.ts +118 -1
- inspect_ai/_view/www/src/state/log.ts +19 -0
- inspect_ai/_view/www/src/state/logPolling.ts +3 -1
- inspect_ai/_view/www/src/state/logSlice.ts +9 -0
- inspect_ai/_view/www/src/state/logsSlice.ts +157 -15
- inspect_ai/_view/www/src/state/samplePolling.ts +4 -2
- inspect_ai/_view/www/src/tests/utils/path.test.ts +3 -3
- inspect_ai/_view/www/src/utils/evallog.ts +31 -0
- inspect_ai/_view/www/src/utils/path.ts +28 -0
- inspect_ai/_view/www/src/utils/uri.ts +49 -0
- inspect_ai/_view/www/yarn.lock +54 -17
- inspect_ai/analysis/beta/_dataframe/util.py +106 -10
- inspect_ai/log/_recorders/buffer/database.py +55 -16
- inspect_ai/model/_model.py +1 -1
- inspect_ai/model/_providers/_anthropic_citations.py +1 -4
- inspect_ai/model/_providers/providers.py +2 -2
- inspect_ai/model/_providers/vertex.py +3 -0
- inspect_ai/tool/_mcp/_mcp.py +6 -1
- inspect_ai/tool/_mcp/sampling.py +8 -1
- inspect_ai/tool/_tools/_bash_session.py +3 -6
- inspect_ai/tool/_tools/_web_browser/_web_browser.py +3 -8
- inspect_ai/util/_anyio.py +12 -3
- {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/METADATA +2 -2
- {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/RECORD +125 -95
- inspect_ai/_util/datetime.py +0 -10
- inspect_ai/_view/www/src/app/content/MetaDataView.module.css +0 -35
- inspect_ai/_view/www/src/app/content/MetaDataView.tsx +0 -101
- inspect_ai/_view/www/src/app/log-view/utils.ts +0 -34
- inspect_ai/_view/www/src/app/sidebar/EvalStatus.module.css +0 -15
- inspect_ai/_view/www/src/app/sidebar/EvalStatus.tsx +0 -72
- inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.module.css +0 -16
- inspect_ai/_view/www/src/app/sidebar/LogDirectoryTitleView.tsx +0 -70
- inspect_ai/_view/www/src/app/sidebar/Sidebar.module.css +0 -77
- inspect_ai/_view/www/src/app/sidebar/Sidebar.tsx +0 -119
- inspect_ai/_view/www/src/app/sidebar/SidebarLogEntry.module.css +0 -29
- inspect_ai/_view/www/src/app/sidebar/SidebarLogEntry.tsx +0 -96
- inspect_ai/_view/www/src/app/sidebar/SidebarScoreView.module.css +0 -23
- inspect_ai/_view/www/src/app/sidebar/SidebarScoreView.tsx +0 -44
- inspect_ai/_view/www/src/app/sidebar/SidebarScoresView.module.css +0 -35
- inspect_ai/_view/www/src/app/sidebar/SidebarScoresView.tsx +0 -63
- inspect_ai/_view/www/src/state/logsPolling.ts +0 -118
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ModelRolesView.module.css +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ModelRolesView.tsx +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ResultsPanel.module.css +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/RunningStatusPanel.module.css +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/RunningStatusPanel.tsx +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/ScoreGrid.module.css +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/SecondaryBar.module.css +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/StatusPanel.module.css +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar → title-view}/StatusPanel.tsx +0 -0
- /inspect_ai/_view/www/src/app/log-view/{navbar/Navbar.module.css → title-view/TitleView.module.css} +0 -0
- {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/WHEEL +0 -0
- {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/entry_points.txt +0 -0
- {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/licenses/LICENSE +0 -0
- {inspect_ai-0.3.107.dist-info → inspect_ai-0.3.109.dist-info}/top_level.txt +0 -0
@@ -1,35 +0,0 @@
|
|
1
|
-
.container {
|
2
|
-
display: flex;
|
3
|
-
flex-direction: row;
|
4
|
-
flex-wrap: wrap;
|
5
|
-
justify-content: flex-end;
|
6
|
-
row-gap: 1em;
|
7
|
-
}
|
8
|
-
|
9
|
-
.scoreWrapper {
|
10
|
-
display: flex;
|
11
|
-
flex-direction: column;
|
12
|
-
align-items: center;
|
13
|
-
margin-left: 1em;
|
14
|
-
}
|
15
|
-
|
16
|
-
.metricName {
|
17
|
-
width: 100%;
|
18
|
-
font-weight: 300;
|
19
|
-
border-bottom: solid var(--bs-border-color) 1px;
|
20
|
-
}
|
21
|
-
|
22
|
-
.metricReducer {
|
23
|
-
width: 100%;
|
24
|
-
font-weight: 300;
|
25
|
-
}
|
26
|
-
|
27
|
-
.metricValues {
|
28
|
-
display: grid;
|
29
|
-
grid-template-columns: max-content max-content;
|
30
|
-
grid-gap: 0 0.3rem;
|
31
|
-
}
|
32
|
-
|
33
|
-
.metricValue {
|
34
|
-
font-weight: 600;
|
35
|
-
}
|
@@ -1,63 +0,0 @@
|
|
1
|
-
import clsx from "clsx";
|
2
|
-
import { FC, Fragment } from "react";
|
3
|
-
import { Scores } from "../../@types/log";
|
4
|
-
import { formatPrettyDecimal } from "../../utils/format";
|
5
|
-
import { metricDisplayName } from "../log-view/utils";
|
6
|
-
import styles from "./SidebarScoresView.module.css";
|
7
|
-
|
8
|
-
interface SidebarScoresProps {
|
9
|
-
scores: Scores;
|
10
|
-
}
|
11
|
-
|
12
|
-
export const SidebarScoresView: FC<SidebarScoresProps> = ({ scores }) => {
|
13
|
-
const showReducer = scores.findIndex((score) => !!score.reducer) !== -1;
|
14
|
-
return (
|
15
|
-
<div className={styles.container}>
|
16
|
-
{scores.map((score, idx) => {
|
17
|
-
const name = score.name;
|
18
|
-
const reducer = score.reducer;
|
19
|
-
return (
|
20
|
-
<div className={styles.scoreWrapper} key={`scorer-${name}-${idx}`}>
|
21
|
-
<div
|
22
|
-
className={clsx(
|
23
|
-
"text-style-secondary",
|
24
|
-
"text-style-label",
|
25
|
-
"text-size-small",
|
26
|
-
styles.metricName,
|
27
|
-
)}
|
28
|
-
>
|
29
|
-
{name}
|
30
|
-
</div>
|
31
|
-
{showReducer ? (
|
32
|
-
<div
|
33
|
-
className={clsx(
|
34
|
-
"text-size-small",
|
35
|
-
"text-style-label",
|
36
|
-
"text-style-secondary",
|
37
|
-
styles.metricReducer,
|
38
|
-
)}
|
39
|
-
>
|
40
|
-
{reducer || "default"}
|
41
|
-
</div>
|
42
|
-
) : (
|
43
|
-
""
|
44
|
-
)}
|
45
|
-
<div className={clsx("text-size-small", styles.metricValues)}>
|
46
|
-
{Object.keys(score.metrics).map((key) => {
|
47
|
-
const metric = score.metrics[key];
|
48
|
-
return (
|
49
|
-
<Fragment key={key}>
|
50
|
-
<div className={clsx()}>{metricDisplayName(metric)}</div>
|
51
|
-
<div className={styles.metricValue}>
|
52
|
-
{formatPrettyDecimal(metric.value)}
|
53
|
-
</div>
|
54
|
-
</Fragment>
|
55
|
-
);
|
56
|
-
})}
|
57
|
-
</div>
|
58
|
-
</div>
|
59
|
-
);
|
60
|
-
})}
|
61
|
-
</div>
|
62
|
-
);
|
63
|
-
};
|
@@ -1,118 +0,0 @@
|
|
1
|
-
import { EvalLogHeader, LogFiles } from "../client/api/types";
|
2
|
-
import { createLogger } from "../utils/logger";
|
3
|
-
import { createPolling } from "../utils/polling";
|
4
|
-
import { StoreState } from "./store";
|
5
|
-
|
6
|
-
// The logger
|
7
|
-
const log = createLogger("logsPolling");
|
8
|
-
|
9
|
-
export function createLogsPolling(
|
10
|
-
get: () => StoreState,
|
11
|
-
_set: (fn: (state: StoreState) => void) => void,
|
12
|
-
) {
|
13
|
-
// Tracks the currently polling instance
|
14
|
-
let currentPolling: ReturnType<typeof createPolling> | null = null;
|
15
|
-
|
16
|
-
// Are we active
|
17
|
-
let isActive = true;
|
18
|
-
|
19
|
-
// Function to start polling for a specific log file
|
20
|
-
const startPolling = (logFiles: LogFiles) => {
|
21
|
-
// Get the api
|
22
|
-
const api = get().api;
|
23
|
-
if (!api) {
|
24
|
-
throw new Error("Failed to start polling - no API");
|
25
|
-
}
|
26
|
-
|
27
|
-
// Stop any existing polling
|
28
|
-
if (currentPolling) {
|
29
|
-
currentPolling.stop();
|
30
|
-
}
|
31
|
-
|
32
|
-
// note that we're active
|
33
|
-
isActive = true;
|
34
|
-
|
35
|
-
log.debug("LOADING HEADERS");
|
36
|
-
get().logsActions.setHeadersLoading(true);
|
37
|
-
|
38
|
-
// Group into chunks
|
39
|
-
const chunkSize = 8;
|
40
|
-
const fileLists: string[][] = [];
|
41
|
-
|
42
|
-
for (let i = 0; i < logFiles.files.length; i += chunkSize) {
|
43
|
-
const chunk = logFiles.files
|
44
|
-
.slice(i, i + chunkSize)
|
45
|
-
.map((logFile) => logFile.name);
|
46
|
-
fileLists.push(chunk);
|
47
|
-
}
|
48
|
-
const totalLen = fileLists.length;
|
49
|
-
|
50
|
-
// Create a new polling instance
|
51
|
-
currentPolling = createPolling(
|
52
|
-
`LogHeaders`,
|
53
|
-
async () => {
|
54
|
-
if (!isActive) {
|
55
|
-
get().logsActions.setHeadersLoading(false);
|
56
|
-
return false; // Stop polling
|
57
|
-
}
|
58
|
-
|
59
|
-
log.debug(`POLL HEADERS`);
|
60
|
-
|
61
|
-
const currentFileList = fileLists.shift();
|
62
|
-
if (currentFileList) {
|
63
|
-
log.debug(
|
64
|
-
`LOADING ${totalLen - fileLists.length} of ${totalLen} CHUNKS`,
|
65
|
-
);
|
66
|
-
const headers = await api.get_log_headers(currentFileList);
|
67
|
-
const updatedHeaders: Record<string, EvalLogHeader> = {};
|
68
|
-
|
69
|
-
headers.forEach((header, index) => {
|
70
|
-
const logFile = currentFileList[index];
|
71
|
-
updatedHeaders[logFile] = header as EvalLogHeader;
|
72
|
-
});
|
73
|
-
get().logsActions.updateLogHeaders(updatedHeaders);
|
74
|
-
} else {
|
75
|
-
// Stop polling
|
76
|
-
get().logsActions.setHeadersLoading(false);
|
77
|
-
return false;
|
78
|
-
}
|
79
|
-
|
80
|
-
if (!isActive) {
|
81
|
-
get().logsActions.setHeadersLoading(false);
|
82
|
-
return false; // Stop polling
|
83
|
-
}
|
84
|
-
|
85
|
-
// Continue polling by default
|
86
|
-
return true;
|
87
|
-
},
|
88
|
-
{
|
89
|
-
maxRetries: 10,
|
90
|
-
interval: 5,
|
91
|
-
},
|
92
|
-
);
|
93
|
-
|
94
|
-
// Start the polling
|
95
|
-
currentPolling.start();
|
96
|
-
};
|
97
|
-
|
98
|
-
// Stop polling
|
99
|
-
const stopPolling = () => {
|
100
|
-
if (currentPolling) {
|
101
|
-
currentPolling.stop();
|
102
|
-
currentPolling = null;
|
103
|
-
}
|
104
|
-
};
|
105
|
-
|
106
|
-
// Method to call when component unmounts
|
107
|
-
const cleanup = () => {
|
108
|
-
log.debug(`CLEANUP`);
|
109
|
-
isActive = false;
|
110
|
-
stopPolling();
|
111
|
-
};
|
112
|
-
|
113
|
-
return {
|
114
|
-
startPolling,
|
115
|
-
stopPolling,
|
116
|
-
cleanup,
|
117
|
-
};
|
118
|
-
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/inspect_ai/_view/www/src/app/log-view/{navbar/Navbar.module.css → title-view/TitleView.module.css}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|