@post-print/agent-test 2.0.10 → 2.1.0

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 (59) hide show
  1. package/README.md +10 -9
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/sdk/cli.d.ts +10 -0
  7. package/dist/sdk/cli.d.ts.map +1 -1
  8. package/dist/sdk/cli.js +27 -2
  9. package/dist/sdk/cli.js.map +1 -1
  10. package/dist/sdk/expect.d.ts +6 -4
  11. package/dist/sdk/expect.d.ts.map +1 -1
  12. package/dist/sdk/expect.js +90 -26
  13. package/dist/sdk/expect.js.map +1 -1
  14. package/dist/sdk/judge.d.ts +1 -0
  15. package/dist/sdk/judge.d.ts.map +1 -1
  16. package/dist/sdk/judge.js +9 -5
  17. package/dist/sdk/judge.js.map +1 -1
  18. package/dist/sdk/run-command.d.ts +19 -0
  19. package/dist/sdk/run-command.d.ts.map +1 -0
  20. package/dist/sdk/run-command.js +33 -0
  21. package/dist/sdk/run-command.js.map +1 -0
  22. package/dist/sdk/runtime.d.ts +3 -0
  23. package/dist/sdk/runtime.d.ts.map +1 -1
  24. package/dist/sdk/runtime.js +11 -8
  25. package/dist/sdk/runtime.js.map +1 -1
  26. package/dist/sdk/stored-value.d.ts.map +1 -1
  27. package/dist/sdk/stored-value.js +11 -0
  28. package/dist/sdk/stored-value.js.map +1 -1
  29. package/dist/sdk/workspace.d.ts +5 -0
  30. package/dist/sdk/workspace.d.ts.map +1 -1
  31. package/dist/sdk/workspace.js +26 -1
  32. package/dist/sdk/workspace.js.map +1 -1
  33. package/dist/viewer/client-entry.js +21 -20
  34. package/dist/viewer/main.js +16 -4
  35. package/dist/viewer/main.js.map +1 -1
  36. package/dist/viewer/presentation.d.ts +20 -2
  37. package/dist/viewer/presentation.d.ts.map +1 -1
  38. package/dist/viewer/presentation.js +64 -2
  39. package/dist/viewer/presentation.js.map +1 -1
  40. package/dist/viewer/run-inbox.d.ts +7 -0
  41. package/dist/viewer/run-inbox.d.ts.map +1 -0
  42. package/dist/viewer/run-inbox.js +335 -0
  43. package/dist/viewer/run-inbox.js.map +1 -0
  44. package/dist/viewer/styles.d.ts.map +1 -1
  45. package/dist/viewer/styles.js +5 -0
  46. package/dist/viewer/styles.js.map +1 -1
  47. package/dist/viewer/stylex.css +230 -2
  48. package/dist/viewer/tool-images.d.ts +13 -0
  49. package/dist/viewer/tool-images.d.ts.map +1 -0
  50. package/dist/viewer/tool-images.js +77 -0
  51. package/dist/viewer/tool-images.js.map +1 -0
  52. package/dist/viewer/v2-client.d.ts.map +1 -1
  53. package/dist/viewer/v2-client.js +300 -172
  54. package/dist/viewer/v2-client.js.map +1 -1
  55. package/dist/viewer/viewer-queries.d.ts +26 -0
  56. package/dist/viewer/viewer-queries.d.ts.map +1 -0
  57. package/dist/viewer/viewer-queries.js +31 -0
  58. package/dist/viewer/viewer-queries.js.map +1 -0
  59. package/package.json +2 -2
@@ -29,11 +29,23 @@ function applyLiveEvent(message) {
29
29
  function applyExecutionHistory(executions) {
30
30
  const previous = queryClient.getQueryData(["execution-history"]);
31
31
  queryClient.setQueryData(["execution-history"], executions);
32
- const executionId = newlyRunningExecution(previous, executions);
33
- if (executionId && !pageShowsExecution(executionId))
32
+ const started = newlyRunningExecution(previous, executions);
33
+ if (started && !pageShowsExecution(started.id))
34
+ showStartedExecution(started);
35
+ }
36
+ /** A single-test run opens on its test page; a batch opens on the run inbox. */
37
+ function showStartedExecution(execution) {
38
+ const [testId, ...others] = execution.testIds ?? [];
39
+ if (testId && others.length === 0)
40
+ void viewerRouter.navigate({
41
+ to: "/tests/$testId",
42
+ params: { testId },
43
+ search: { execution: execution.id },
44
+ });
45
+ else
34
46
  void viewerRouter.navigate({
35
47
  to: "/executions/$executionId",
36
- params: { executionId },
48
+ params: { executionId: execution.id },
37
49
  });
38
50
  }
39
51
  function pageShowsExecution(executionId) {
@@ -43,7 +55,7 @@ function pageShowsExecution(executionId) {
43
55
  }
44
56
  function newlyRunningExecution(previous, executions) {
45
57
  const known = new Set(previous?.map(({ id }) => id) ?? []);
46
- return executions.find(({ id, status }) => status === "running" && !known.has(id))?.id;
58
+ return executions.find(({ id, status }) => status === "running" && !known.has(id));
47
59
  }
48
60
  function connectExecutionSync(bootstrap) {
49
61
  const socket = bootstrap.capabilities.socket;
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/viewer/main.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/viewer/main.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,30 @@
1
1
  export declare function stripAnsi(value: string): string;
2
2
  export declare function conversationPlaceholder(status: string): string;
3
- export declare function preferredExecutionId(executions: Array<{
3
+ /** One date style for runs everywhere: "Thu, Sep 17, 4:23 PM". */
4
+ export declare function formatRunDate(value: string): string;
5
+ export type TestRunStatus = "queued" | "running" | "passed" | "failed" | "skipped" | "interrupted";
6
+ export type RunSummary = {
4
7
  id: string;
5
8
  status: string;
6
- }>): string | undefined;
9
+ testIds?: string[];
10
+ testStatuses?: Record<string, TestRunStatus>;
11
+ };
12
+ /** Severity order for a run inbox: what needs attention comes first. */
13
+ export declare const TEST_RUN_STATUS_ORDER: TestRunStatus[];
14
+ /** One test's outcome inside a run. A batch status never replaces a recorded test status. */
15
+ export declare function testRunStatus(run: RunSummary, testId: string): TestRunStatus;
16
+ /** Prefer the run where this test is active, then the newest run that actually ran it. */
17
+ export declare function preferredTestExecutionId(runs: RunSummary[], testId: string): string | undefined;
18
+ export declare function runStatusCounts(run: RunSummary): Map<TestRunStatus, number>;
19
+ /** Test ids ordered by severity, keeping run order within one status. */
20
+ export declare function testIdsBySeverity(run: RunSummary): string[];
7
21
  export type AssertionComparison = {
8
22
  expected: string;
9
23
  received: string;
10
24
  };
11
25
  export declare function assertionComparison(value: string): AssertionComparison | undefined;
26
+ /** Middle value, or the mean of the two middle values; undefined for no values. */
27
+ export declare function median(values: number[]): number | undefined;
28
+ /** `/bin/zsh -lc "bun test"` reads as `bun test`; the wrapper is host plumbing. */
29
+ export declare function unwrapShellCommand(command: string): string;
12
30
  //# sourceMappingURL=presentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/viewer/presentation.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe/C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,MAAM,GAAG,SAAS,CAEpB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAgBlF"}
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/viewer/presentation.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAe/C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9D;AAUD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;AACnG,MAAM,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC7C,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,EAAE,aAAa,EAOhD,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAM5E;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/F;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAS3E;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,EAAE,CAG3D;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAgBlF;AAED,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAM3D;AAID,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -22,8 +22,56 @@ export function conversationPlaceholder(status) {
22
22
  ? "Waiting for the first agent event…"
23
23
  : "No conversation was captured.";
24
24
  }
25
- export function preferredExecutionId(executions) {
26
- return executions.find((execution) => execution.status === "running")?.id ?? executions[0]?.id;
25
+ const RUN_DATE = new Intl.DateTimeFormat(undefined, {
26
+ weekday: "short",
27
+ month: "short",
28
+ day: "numeric",
29
+ hour: "numeric",
30
+ minute: "2-digit",
31
+ });
32
+ /** One date style for runs everywhere: "Thu, Sep 17, 4:23 PM". */
33
+ export function formatRunDate(value) {
34
+ return RUN_DATE.format(new Date(value));
35
+ }
36
+ /** Severity order for a run inbox: what needs attention comes first. */
37
+ export const TEST_RUN_STATUS_ORDER = [
38
+ "failed",
39
+ "interrupted",
40
+ "running",
41
+ "queued",
42
+ "passed",
43
+ "skipped",
44
+ ];
45
+ /** One test's outcome inside a run. A batch status never replaces a recorded test status. */
46
+ export function testRunStatus(run, testId) {
47
+ const recorded = run.testStatuses?.[testId];
48
+ if (recorded)
49
+ return recorded;
50
+ if (run.status === "running")
51
+ return "queued";
52
+ if (run.status === "passed" || run.status === "failed")
53
+ return run.status;
54
+ return "interrupted";
55
+ }
56
+ /** Prefer the run where this test is active, then the newest run that actually ran it. */
57
+ export function preferredTestExecutionId(runs, testId) {
58
+ const statuses = runs.map((run) => ({ id: run.id, status: testRunStatus(run, testId) }));
59
+ const active = statuses.find(({ status }) => status === "running" || status === "queued");
60
+ const ran = statuses.find(({ status }) => status !== "skipped");
61
+ return active?.id ?? ran?.id ?? statuses[0]?.id;
62
+ }
63
+ export function runStatusCounts(run) {
64
+ const counts = new Map();
65
+ for (const testId of run.testIds ?? []) {
66
+ const status = testRunStatus(run, testId);
67
+ counts.set(status, (counts.get(status) ?? 0) + 1);
68
+ }
69
+ return new Map(TEST_RUN_STATUS_ORDER.filter((s) => counts.has(s)).map((s) => [s, counts.get(s) ?? 0]));
70
+ }
71
+ /** Test ids ordered by severity, keeping run order within one status. */
72
+ export function testIdsBySeverity(run) {
73
+ const rank = (testId) => TEST_RUN_STATUS_ORDER.indexOf(testRunStatus(run, testId));
74
+ return [...(run.testIds ?? [])].sort((left, right) => rank(left) - rank(right));
27
75
  }
28
76
  export function assertionComparison(value) {
29
77
  const lines = stripAnsi(value).split("\n");
@@ -45,4 +93,18 @@ export function assertionComparison(value) {
45
93
  }
46
94
  return { expected: expected.join("\n"), received: received.join("\n") };
47
95
  }
96
+ /** Middle value, or the mean of the two middle values; undefined for no values. */
97
+ export function median(values) {
98
+ if (!values.length)
99
+ return undefined;
100
+ const sorted = [...values].sort((left, right) => left - right);
101
+ const middle = Math.floor(sorted.length / 2);
102
+ const upper = sorted[middle] ?? 0;
103
+ return sorted.length % 2 ? upper : ((sorted[middle - 1] ?? upper) + upper) / 2;
104
+ }
105
+ const SHELL_WRAPPER = /^(?:\S*\/)?(?:ba|z)?sh\s+-l?c\s+(["'])([\s\S]*)\1$/;
106
+ /** `/bin/zsh -lc "bun test"` reads as `bun test`; the wrapper is host plumbing. */
107
+ export function unwrapShellCommand(command) {
108
+ return SHELL_WRAPPER.exec(command.trim())?.[2] ?? command;
109
+ }
48
110
  //# sourceMappingURL=presentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/viewer/presentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/viewer/presentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Home: the run that needs attention now, then earlier runs. */
2
+ export declare function RunInboxPage(): import("react").JSX.Element;
3
+ /** One saved or live run, addressed by id. Falls back to the record when history is trimmed. */
4
+ export declare function RunPage({ executionId }: {
5
+ executionId: string;
6
+ }): import("react").JSX.Element;
7
+ //# sourceMappingURL=run-inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-inbox.d.ts","sourceRoot":"","sources":["../../src/viewer/run-inbox.tsx"],"names":[],"mappings":"AA+BA,iEAAiE;AACjE,wBAAgB,YAAY,gCAe3B;AAED,gGAAgG;AAChG,wBAAgB,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,+BAa/D"}
@@ -0,0 +1,335 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as stylex from "@stylexjs/stylex";
3
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
4
+ import { Link } from "@tanstack/react-router";
5
+ import { useState } from "react";
6
+ import { formatRunDate, runStatusCounts, stripAnsi, testIdsBySeverity, testRunStatus, } from "./presentation.js";
7
+ import { cancelExecution, fetchExecution, useCatalog, useExecutionHistory, } from "./viewer-queries.js";
8
+ const EARLIER_RUN_LIMIT = 20;
9
+ const STARTED_STATUSES = new Set(["running", "passed", "failed"]);
10
+ const ERROR_EXCERPT_LENGTH = 180;
11
+ /** Home: the run that needs attention now, then earlier runs. */
12
+ export function RunInboxPage() {
13
+ const history = useExecutionHistory();
14
+ if (history.isPending)
15
+ return _jsx("p", { ...stylex.props(styles.empty), children: "Loading runs\u2026" });
16
+ if (history.isError)
17
+ return _jsx("p", { role: "alert", children: "Run history is unavailable." });
18
+ const latest = history.data.find((run) => run.status === "running") ?? history.data[0];
19
+ if (!latest)
20
+ return _jsx(FirstRunInvitation, {});
21
+ return (_jsxs("div", { ...stylex.props(styles.page), children: [_jsx(RunOverview, { run: latest, eyebrow: latest.status === "running" ? "Running now" : "Latest run" }), _jsx(EarlierRuns, { runs: history.data.filter((run) => run.id !== latest.id) })] }));
22
+ }
23
+ /** One saved or live run, addressed by id. Falls back to the record when history is trimmed. */
24
+ export function RunPage({ executionId }) {
25
+ const history = useExecutionHistory();
26
+ const summary = history.data?.find((run) => run.id === executionId);
27
+ const record = useQuery({
28
+ queryKey: ["execution", executionId],
29
+ queryFn: () => fetchExecution(executionId),
30
+ enabled: !history.isPending && summary === undefined,
31
+ });
32
+ const run = summary ?? record.data;
33
+ if (run)
34
+ return _jsx(RunOverview, { run: run, eyebrow: "Run" });
35
+ if (history.isPending || record.isPending)
36
+ return _jsx("p", { ...stylex.props(styles.empty), children: "Loading run\u2026" });
37
+ return _jsx("p", { role: "alert", children: "This run is unavailable. It may have been removed from history." });
38
+ }
39
+ function RunOverview({ run, eyebrow }) {
40
+ const [filter, setFilter] = useState("all");
41
+ const counts = runStatusCounts(run);
42
+ const detail = useRunDetail(run, counts);
43
+ const testIds = testIdsBySeverity(run).filter((testId) => filter === "all" || testRunStatus(run, testId) === filter);
44
+ return (_jsxs("section", { "aria-labelledby": `run-${run.id}`, ...stylex.props(styles.page), children: [_jsx(RunHeader, { run: run, eyebrow: eyebrow, detail: detail }), _jsx(StatusFilters, { total: run.testIds?.length ?? 0, counts: counts, active: filter, onChange: setFilter }), _jsx(RunTestList, { run: run, testIds: testIds, detail: detail })] }));
45
+ }
46
+ /** Failure excerpts and the stop control need the full record; passing runs skip that fetch. */
47
+ function useRunDetail(run, counts) {
48
+ const needsDetail = run.status === "running" || counts.has("failed") || counts.has("interrupted");
49
+ const detail = useQuery({
50
+ queryKey: ["execution", run.id],
51
+ queryFn: () => fetchExecution(run.id),
52
+ enabled: needsDetail,
53
+ });
54
+ return detail.data;
55
+ }
56
+ function RunHeader({ run, eyebrow, detail, }) {
57
+ const count = run.testIds?.length ?? 0;
58
+ const duration = runDuration(run);
59
+ return (_jsxs("header", { ...stylex.props(styles.header), children: [_jsxs("div", { ...stylex.props(styles.headerCopy), children: [_jsx("span", { ...stylex.props(styles.eyebrow), children: eyebrow }), _jsx("h2", { id: `run-${run.id}`, ...stylex.props(styles.title), children: formatRunDate(run.startedAt) }), _jsx(RunNotice, { run: run }), _jsxs("p", { ...stylex.props(styles.meta), children: [count, " ", count === 1 ? "test" : "tests", duration ? ` · ${duration}` : "", " \u00B7", " ", _jsx("span", { ...stylex.props(styles.mono), children: run.id.slice(0, 8) })] })] }), _jsxs("div", { ...stylex.props(styles.headerActions), children: [run.status === "running" && detail?.cancellable ? _jsx(StopRunButton, { run: run }) : null, _jsx(StatusPill, { status: runOutcome(run) })] })] }));
60
+ }
61
+ /** Explains a run that has no test outcome yet, or never got one. */
62
+ function RunNotice({ run }) {
63
+ const statuses = (run.testIds ?? []).map((testId) => testRunStatus(run, testId));
64
+ if (statuses.some((status) => STARTED_STATUSES.has(status)))
65
+ return null;
66
+ const count = statuses.length;
67
+ if (run.status === "running")
68
+ return (_jsx("p", { role: "status", ...stylex.props(styles.meta), children: count ? `Starting ${count} ${count === 1 ? "test" : "tests"}…` : "Starting the test run…" }));
69
+ if (run.status === "interrupted")
70
+ return _jsx("p", { ...stylex.props(styles.meta), children: "Run stopped before the first test started." });
71
+ if (run.status === "failed")
72
+ return _jsx("p", { ...stylex.props(styles.meta), children: "Run failed before the first test started." });
73
+ return null;
74
+ }
75
+ function StopRunButton({ run }) {
76
+ const client = useQueryClient();
77
+ const cancel = useMutation({
78
+ mutationFn: () => cancelExecution(run.id),
79
+ onSuccess: () => client.invalidateQueries({ queryKey: ["execution", run.id] }),
80
+ });
81
+ const stopping = cancel.isPending || cancel.isSuccess;
82
+ return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", ...stylex.props(styles.buttonReset, styles.secondaryButton), onClick: () => cancel.mutate(), disabled: stopping, children: stopping
83
+ ? "Stopping…"
84
+ : (run.testIds?.length ?? 0) > 1
85
+ ? "Stop suite run"
86
+ : "Stop this run" }), cancel.isError ? _jsx("p", { role: "alert", children: "The run could not be stopped." }) : null] }));
87
+ }
88
+ function StatusFilters({ total, counts, active, onChange, }) {
89
+ const options = [["all", total], ...counts];
90
+ return (_jsxs("fieldset", { ...stylex.props(styles.filters), children: [_jsx("legend", { ...stylex.props(styles.visuallyHidden), children: "Show tests by result" }), options.map(([status, count]) => (_jsxs("button", { type: "button", "aria-pressed": active === status, ...stylex.props(styles.buttonReset, styles.filter, active === status && styles.filterActive), onClick: () => onChange(active === status ? "all" : status), children: [status !== "all" ? _jsx(StatusDot, { status: status, inline: true }) : null, _jsx("span", { children: status === "all" ? "All" : capitalize(status) }), _jsx("span", { ...stylex.props(styles.filterCount), children: count })] }, status)))] }));
91
+ }
92
+ function RunTestList({ run, testIds, detail, }) {
93
+ const catalog = useCatalog();
94
+ const tests = new Map(catalog.data?.tests.map((test) => [test.id, test]));
95
+ if (testIds.length === 0)
96
+ return _jsx("p", { ...stylex.props(styles.empty), children: "No tests match this result." });
97
+ return (_jsx("ol", { ...stylex.props(styles.testList), children: testIds.map((testId) => (_jsx("li", { children: _jsx(RunTestRow, { runId: run.id, status: testRunStatus(run, testId), test: tests.get(testId) ?? missingTest(testId), error: firstErrorLine(detail, testId) }) }, testId))) }));
98
+ }
99
+ function RunTestRow({ runId, status, test, error, }) {
100
+ const group = test.title.slice(0, -1).join(" › ");
101
+ return (_jsxs(Link, { to: "/tests/$testId", params: { testId: test.id }, search: { execution: runId }, ...stylex.props(styles.testRow, status === "failed" && styles.testRowFailed), children: [_jsx(StatusDot, { status: status }), _jsxs("span", { ...stylex.props(styles.testCopy), children: [_jsx("span", { ...stylex.props(styles.testTitle), children: test.title.at(-1) }), group ? _jsx("span", { ...stylex.props(styles.testGroup), children: group }) : null, error ? _jsx("span", { ...stylex.props(styles.testError), children: error }) : null] }), _jsx("span", { ...stylex.props(styles.rowStatus), children: status })] }));
102
+ }
103
+ function EarlierRuns({ runs }) {
104
+ if (runs.length === 0)
105
+ return null;
106
+ return (_jsxs("section", { "aria-labelledby": "earlier-runs", ...stylex.props(styles.earlier), children: [_jsx("h3", { id: "earlier-runs", ...stylex.props(styles.sectionTitle), children: "Earlier runs" }), _jsx("ol", { ...stylex.props(styles.testList), children: runs.slice(0, EARLIER_RUN_LIMIT).map((run) => (_jsx("li", { children: _jsx(EarlierRunRow, { run: run }) }, run.id))) })] }));
107
+ }
108
+ /** A single-test run opens that test; a batch opens its own inbox. */
109
+ function EarlierRunRow({ run }) {
110
+ const catalog = useCatalog();
111
+ const [onlyTestId, ...others] = run.testIds ?? [];
112
+ const onlyTest = others.length === 0 ? catalog.data?.tests.find((test) => test.id === onlyTestId) : undefined;
113
+ const when = formatRunDate(run.startedAt);
114
+ const body = (_jsxs(_Fragment, { children: [_jsx(StatusDot, { status: runOutcome(run) }), _jsxs("span", { ...stylex.props(styles.testCopy), children: [_jsx("span", { ...stylex.props(styles.testTitle), children: onlyTest?.title.at(-1) ?? when }), _jsx("span", { ...stylex.props(styles.testGroup), children: onlyTest ? when : `${run.testIds?.length ?? 0} tests · ${countSummary(run)}` })] }), _jsx("span", { ...stylex.props(styles.rowStatus), children: runOutcome(run) })] }));
115
+ return onlyTest ? (_jsx(Link, { to: "/tests/$testId", params: { testId: onlyTest.id }, search: { execution: run.id }, ...stylex.props(styles.testRow), children: body })) : (_jsx(Link, { to: "/executions/$executionId", params: { executionId: run.id }, ...stylex.props(styles.testRow), children: body }));
116
+ }
117
+ function FirstRunInvitation() {
118
+ return (_jsxs("section", { ...stylex.props(styles.header, styles.invitation), children: [_jsx("span", { ...stylex.props(styles.eyebrow), children: "Runs" }), _jsx("h2", { ...stylex.props(styles.title), children: "Run your first test" }), _jsxs("p", { ...stylex.props(styles.meta), children: ["Choose a test in the sidebar or select Run all tests. Runs started with", " ", _jsx("code", { ...stylex.props(styles.mono), children: "agent-test test" }), " also appear here while they stream."] })] }));
119
+ }
120
+ function StatusPill({ status }) {
121
+ return (_jsx("span", { ...stylex.props(styles.pill, status === "passed" && styles.pillPass, status === "failed" && styles.pillFail, (status === "running" || status === "queued") && styles.pillRunning), children: status }));
122
+ }
123
+ function StatusDot({ status, inline = false }) {
124
+ return (_jsx("span", { "aria-hidden": "true", ...stylex.props(styles.dot, inline && styles.dotInline, status === "passed" && styles.dotPass, status === "failed" && styles.dotFail, (status === "running" || status === "queued") && styles.dotRunning, status === "skipped" && styles.dotSkipped) }));
125
+ }
126
+ /** The most severe test outcome; a batch with nothing run is not "passed". */
127
+ function runOutcome(run) {
128
+ if (run.status === "running")
129
+ return "running";
130
+ const worst = runStatusCounts(run).keys().next().value ?? "passed";
131
+ if (run.status === "interrupted" && (worst === "passed" || worst === "skipped"))
132
+ return "interrupted";
133
+ return worst;
134
+ }
135
+ function capitalize(value) {
136
+ return value.charAt(0).toUpperCase() + value.slice(1);
137
+ }
138
+ function countSummary(run) {
139
+ const parts = [...runStatusCounts(run)].map(([status, count]) => `${count} ${status}`);
140
+ return parts.join(" · ") || "No tests recorded";
141
+ }
142
+ function runDuration(run) {
143
+ if (!run.finishedAt)
144
+ return undefined;
145
+ const seconds = Math.round((Date.parse(run.finishedAt) - Date.parse(run.startedAt)) / 1000);
146
+ if (!Number.isFinite(seconds) || seconds < 0)
147
+ return undefined;
148
+ return seconds < 60 ? `${seconds}s` : `${Math.floor(seconds / 60)}m ${seconds % 60}s`;
149
+ }
150
+ function firstErrorLine(detail, testId) {
151
+ const message = detail?.attempts
152
+ .filter((attempt) => attempt.testId === testId)
153
+ .flatMap((attempt) => attempt.errors)
154
+ .find((error) => error.message)?.message;
155
+ const line = message
156
+ ? stripAnsi(message)
157
+ .split("\n")
158
+ .find((text) => text.trim())
159
+ : undefined;
160
+ return line && line.length > ERROR_EXCERPT_LENGTH
161
+ ? `${line.slice(0, ERROR_EXCERPT_LENGTH)}…`
162
+ : line?.trim();
163
+ }
164
+ function missingTest(testId) {
165
+ return { id: testId, title: ["Test no longer in the catalog"], file: "", project: "" };
166
+ }
167
+ const styles = stylex.create({
168
+ page: { display: "grid", gap: "1rem" },
169
+ buttonReset: { appearance: "none", font: "inherit", borderWidth: 0 },
170
+ header: {
171
+ display: "flex",
172
+ flexWrap: "wrap",
173
+ alignItems: "flex-start",
174
+ justifyContent: "space-between",
175
+ gap: "1rem",
176
+ padding: { default: "1.1rem 1.25rem", "@media (max-width: 620px)": "1rem" },
177
+ border: "1px solid var(--border)",
178
+ borderRadius: 12,
179
+ backgroundColor: "var(--panel)",
180
+ },
181
+ invitation: { display: "grid", justifyContent: "stretch" },
182
+ headerCopy: { display: "grid", gap: "0.3rem", minWidth: 0 },
183
+ headerActions: { display: "flex", alignItems: "center", gap: "0.6rem" },
184
+ eyebrow: {
185
+ color: "var(--accent)",
186
+ fontSize: "0.66rem",
187
+ fontWeight: 750,
188
+ letterSpacing: "0.11em",
189
+ textTransform: "uppercase",
190
+ },
191
+ title: {
192
+ margin: 0,
193
+ fontSize: { default: "clamp(1.08rem, 1.5vw, 1.3rem)", "@media (max-width: 620px)": "1.08rem" },
194
+ lineHeight: 1.18,
195
+ letterSpacing: "-0.025em",
196
+ fontWeight: 720,
197
+ },
198
+ sectionTitle: { margin: 0, fontSize: "0.92rem", letterSpacing: "-0.01em" },
199
+ meta: { color: "var(--muted)", fontSize: "0.82rem", lineHeight: 1.5 },
200
+ mono: { fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontSize: "0.92em" },
201
+ secondaryButton: {
202
+ minHeight: "2.25rem",
203
+ padding: "0.45rem 0.8rem",
204
+ borderWidth: 1,
205
+ borderStyle: "solid",
206
+ borderColor: "var(--border-strong)",
207
+ borderRadius: 9,
208
+ backgroundColor: { default: "var(--panel-2)", ":hover": "var(--panel-3)" },
209
+ color: "var(--text)",
210
+ fontSize: "0.8rem",
211
+ fontWeight: 650,
212
+ cursor: "pointer",
213
+ },
214
+ filters: {
215
+ display: "flex",
216
+ flexWrap: "wrap",
217
+ gap: "0.45rem",
218
+ margin: 0,
219
+ padding: 0,
220
+ borderWidth: 0,
221
+ minWidth: 0,
222
+ },
223
+ visuallyHidden: {
224
+ position: "absolute",
225
+ width: 1,
226
+ height: 1,
227
+ overflow: "hidden",
228
+ clipPath: "inset(50%)",
229
+ whiteSpace: "nowrap",
230
+ },
231
+ filter: {
232
+ display: "inline-flex",
233
+ alignItems: "center",
234
+ gap: "0.4rem",
235
+ minHeight: "2.25rem",
236
+ padding: "0.35rem 0.75rem",
237
+ borderWidth: 1,
238
+ borderStyle: "solid",
239
+ borderColor: { default: "var(--border)", ":hover": "var(--border-strong)" },
240
+ borderRadius: 999,
241
+ backgroundColor: "var(--panel)",
242
+ color: "var(--muted)",
243
+ fontSize: "0.78rem",
244
+ fontWeight: 650,
245
+ fontVariantNumeric: "tabular-nums",
246
+ cursor: "pointer",
247
+ },
248
+ filterCount: { color: "var(--subtle)" },
249
+ filterActive: {
250
+ borderColor: "var(--accent)",
251
+ backgroundColor: "var(--accent-soft)",
252
+ color: "var(--text)",
253
+ },
254
+ testList: { display: "grid", gap: "0.4rem", margin: 0, padding: 0, listStyle: "none" },
255
+ testRow: {
256
+ display: "grid",
257
+ gridTemplateColumns: "0.7rem minmax(0, 1fr) auto",
258
+ alignItems: "start",
259
+ gap: "0.75rem",
260
+ padding: "0.7rem 0.9rem",
261
+ borderWidth: 1,
262
+ borderStyle: "solid",
263
+ borderColor: { default: "var(--border)", ":hover": "var(--border-strong)" },
264
+ borderRadius: 10,
265
+ backgroundColor: { default: "var(--panel)", ":hover": "var(--panel-2)" },
266
+ color: "var(--text)",
267
+ textDecoration: "none",
268
+ },
269
+ testRowFailed: {
270
+ borderColor: { default: "oklch(0.73 0.18 25 / 0.45)", ":hover": "var(--fail)" },
271
+ },
272
+ testCopy: { display: "grid", gap: "0.2rem", minWidth: 0 },
273
+ testTitle: { fontSize: "0.86rem", fontWeight: 600, lineHeight: 1.35 },
274
+ testGroup: { color: "var(--subtle)", fontSize: "0.72rem" },
275
+ testError: {
276
+ color: "oklch(0.86 0.08 25)",
277
+ fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
278
+ fontSize: "0.72rem",
279
+ lineHeight: 1.45,
280
+ overflowWrap: "anywhere",
281
+ },
282
+ rowStatus: {
283
+ color: "var(--muted)",
284
+ fontSize: "0.68rem",
285
+ fontWeight: 750,
286
+ letterSpacing: "0.06em",
287
+ textTransform: "uppercase",
288
+ },
289
+ earlier: { display: "grid", gap: "0.65rem", marginTop: "0.75rem" },
290
+ pill: {
291
+ fontSize: "0.68rem",
292
+ fontWeight: 750,
293
+ letterSpacing: "0.06em",
294
+ textTransform: "uppercase",
295
+ padding: "0.2rem 0.55rem",
296
+ borderRadius: 999,
297
+ border: "1px solid var(--border)",
298
+ color: "var(--muted)",
299
+ },
300
+ pillPass: {
301
+ color: "var(--pass)",
302
+ borderColor: "var(--pass)",
303
+ backgroundColor: "var(--pass-soft)",
304
+ },
305
+ pillFail: {
306
+ color: "var(--fail)",
307
+ borderColor: "var(--fail)",
308
+ backgroundColor: "var(--fail-soft)",
309
+ },
310
+ pillRunning: {
311
+ color: "var(--skip)",
312
+ borderColor: "var(--skip)",
313
+ backgroundColor: "var(--skip-soft)",
314
+ },
315
+ dot: {
316
+ alignSelf: "start",
317
+ marginTop: "0.38rem",
318
+ width: 8,
319
+ height: 8,
320
+ borderRadius: 999,
321
+ backgroundColor: "var(--muted)",
322
+ },
323
+ dotInline: { alignSelf: "center", marginTop: 0 },
324
+ dotPass: { backgroundColor: "var(--pass)" },
325
+ dotFail: { backgroundColor: "var(--fail)" },
326
+ dotRunning: { backgroundColor: "var(--skip)", boxShadow: "0 0 0 3px var(--skip-soft)" },
327
+ dotSkipped: {
328
+ backgroundColor: "transparent",
329
+ borderWidth: 1.5,
330
+ borderStyle: "solid",
331
+ borderColor: "var(--subtle)",
332
+ },
333
+ empty: { color: "var(--muted)", fontStyle: "italic", padding: "1rem 0" },
334
+ });
335
+ //# sourceMappingURL=run-inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-inbox.js","sourceRoot":"","sources":["../../src/viewer/run-inbox.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/viewer/styles.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,MAAM,CAkHlC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/viewer/styles.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,MAAM,CAuHlC"}
@@ -34,6 +34,11 @@ export function viewerCss() {
34
34
  -webkit-font-smoothing: antialiased;
35
35
  }
36
36
  h1, h2, h3, p { margin-block: 0; }
37
+ .message-markdown { white-space: normal; }
38
+ details[data-disclosure] > summary { list-style: none; }
39
+ details[data-disclosure] > summary::-webkit-details-marker { display: none; }
40
+ details[data-disclosure] > summary::before { content: "▸"; display: inline-block; width: 1em; }
41
+ details[data-disclosure][open] > summary::before { content: "▾"; }
37
42
  .message-markdown > :first-child { margin-block-start: 0; }
38
43
  .message-markdown > :last-child { margin-block-end: 0; }
39
44
  .message-markdown p {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/viewer/styles.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/viewer/styles.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqHL,CAAC;AACJ,CAAC"}