@meridianlabs/log-viewer 0.3.263 → 0.3.264

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 (49) hide show
  1. package/lib/e2e/fixtures/log-list-scenario.d.ts +73 -0
  2. package/lib/e2e/fixtures/log-list-scenario.d.ts.map +1 -1
  3. package/lib/index.js +3093 -2010
  4. package/lib/index.js.map +1 -1
  5. package/lib/src/app/App.d.ts.map +1 -1
  6. package/lib/src/app/log-view/tabs/InfoTab.d.ts +15 -0
  7. package/lib/src/app/log-view/tabs/InfoTab.d.ts.map +1 -1
  8. package/lib/src/app/log-view/tabs/ModelsTab.d.ts +14 -0
  9. package/lib/src/app/log-view/tabs/ModelsTab.d.ts.map +1 -1
  10. package/lib/src/app/log-view/tabs/TaskTab.d.ts +14 -0
  11. package/lib/src/app/log-view/tabs/TaskTab.d.ts.map +1 -1
  12. package/lib/src/app/log-view/tabs/timeline/TimelineTab.d.ts +14 -0
  13. package/lib/src/app/log-view/tabs/timeline/TimelineTab.d.ts.map +1 -1
  14. package/lib/src/app/plan/PlanDetailView.d.ts.map +1 -1
  15. package/lib/src/app/routing/loaders/SampleLoadController.d.ts.map +1 -1
  16. package/lib/src/app/routing/url.d.ts +5 -1
  17. package/lib/src/app/routing/url.d.ts.map +1 -1
  18. package/lib/src/app/samples/SampleDisplay.d.ts.map +1 -1
  19. package/lib/src/app/samples/event/SampleEventView.d.ts.map +1 -1
  20. package/lib/src/app/samples/print/SamplePrintView.d.ts +3 -0
  21. package/lib/src/app/samples/print/SamplePrintView.d.ts.map +1 -1
  22. package/lib/src/app/samples/scans/scanReferencePreviews.d.ts +6 -1
  23. package/lib/src/app/samples/scans/scanReferencePreviews.d.ts.map +1 -1
  24. package/lib/src/app/samples/scans/scanReferences.d.ts +2 -2
  25. package/lib/src/app/samples/scans/scanReferences.d.ts.map +1 -1
  26. package/lib/src/app/samples/transcript/TranscriptPanel.d.ts +2 -0
  27. package/lib/src/app/samples/transcript/TranscriptPanel.d.ts.map +1 -1
  28. package/lib/src/app/samples/transcript/hooks.d.ts.map +1 -1
  29. package/lib/src/app/types.d.ts +12 -2
  30. package/lib/src/app/types.d.ts.map +1 -1
  31. package/lib/src/client/api/types.d.ts +2 -2
  32. package/lib/src/client/api/types.d.ts.map +1 -1
  33. package/lib/src/log_data/chunked/format.d.ts +5 -1
  34. package/lib/src/log_data/chunked/format.d.ts.map +1 -1
  35. package/lib/src/log_data/chunked/skeletonIndex.d.ts.map +1 -1
  36. package/lib/src/log_data/chunked/types.d.ts +1 -1
  37. package/lib/src/log_data/chunked/types.d.ts.map +1 -1
  38. package/lib/src/state/appSlice.d.ts.map +1 -1
  39. package/lib/src/state/componentStateAdapter.d.ts.map +1 -1
  40. package/lib/src/state/hooks.d.ts +14 -0
  41. package/lib/src/state/hooks.d.ts.map +1 -1
  42. package/lib/src/state/sampleSlice.d.ts +10 -1
  43. package/lib/src/state/sampleSlice.d.ts.map +1 -1
  44. package/lib/src/utils/attachments.d.ts +2 -1
  45. package/lib/src/utils/attachments.d.ts.map +1 -1
  46. package/lib/src/utils/evalModel.d.ts +5 -6
  47. package/lib/src/utils/evalModel.d.ts.map +1 -1
  48. package/lib/styles/index.css +150 -49
  49. package/package.json +11 -11
@@ -91,6 +91,17 @@ export declare const useEvalSpec: () => {
91
91
  message_limit?: number | null;
92
92
  notification?: boolean | string | null;
93
93
  retry_on_error?: number | null;
94
+ review?: {
95
+ reviewers: ({
96
+ name: string;
97
+ params: {
98
+ [key: string]: unknown;
99
+ };
100
+ tools: string | string[];
101
+ } & {
102
+ [key: string]: unknown;
103
+ })[];
104
+ } | null;
94
105
  sample_id?: string | number | string[] | number[] | (string | number)[] | null;
95
106
  sample_shuffle?: boolean | number | null;
96
107
  sandbox_cleanup?: boolean | null;
@@ -181,6 +192,7 @@ export declare const useEvalSpec: () => {
181
192
  extra_headers?: {
182
193
  [key: string]: string;
183
194
  } | null;
195
+ fail_on_refusal?: boolean | null;
184
196
  fallback_models?: string[] | null;
185
197
  frequency_penalty?: number | null;
186
198
  internal_tools?: boolean | null;
@@ -284,6 +296,7 @@ export declare const useEvalSpec: () => {
284
296
  extra_headers?: {
285
297
  [key: string]: string;
286
298
  } | null;
299
+ fail_on_refusal?: boolean | null;
287
300
  fallback_models?: string[] | null;
288
301
  frequency_penalty?: number | null;
289
302
  internal_tools?: boolean | null;
@@ -387,6 +400,7 @@ export declare const useEvalSpec: () => {
387
400
  extra_headers?: {
388
401
  [key: string]: string;
389
402
  } | null;
403
+ fail_on_refusal?: boolean | null;
390
404
  fallback_models?: string[] | null;
391
405
  frequency_penalty?: number | null;
392
406
  internal_tools?: boolean | null;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/state/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/state/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SampleState } from '../app/types';
1
+ import { SampleHandle, SampleState } from '../app/types';
2
2
  import { StoreState } from './store';
3
3
  export interface SampleSlice {
4
4
  sample: SampleState;
@@ -16,10 +16,19 @@ export interface SampleSlice {
16
16
  clearVisiblePopover: () => void;
17
17
  setSelectedOutlineId: (id: string) => void;
18
18
  clearSelectedOutlineId: () => void;
19
+ /** Turn the mode on/off for the sample tab `key`; a different key starts
20
+ * from an empty selection. */
21
+ setEventSelectionActive: (key: string, active: boolean) => void;
22
+ setEventSelection: (key: string, selectedIds: string[], lastToggledId: string | null) => void;
23
+ /** Drop the selected events; the mode toggle is left as is. */
24
+ clearEventSelection: () => void;
25
+ resetEventSelection: () => void;
19
26
  setTimelineSelected: (selected: string | null) => void;
20
27
  setActiveTimelineIndex: (index: number) => void;
21
28
  };
22
29
  }
30
+ /** Key of the evidence selection for a sample tab. */
31
+ export declare const eventSelectionKey: (handle: SampleHandle | undefined, tabId: string) => string;
23
32
  export declare const createSampleSlice: (set: (fn: (state: StoreState) => void) => void, _get: () => StoreState, _store: unknown) => SampleSlice;
24
33
  export declare const initializeSampleSlice: (set: (fn: (state: StoreState) => void) => void) => void;
25
34
  //# sourceMappingURL=sampleSlice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sampleSlice.d.ts","sourceRoot":"","sources":["../../../src/state/sampleSlice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE;QACb,mBAAmB,EAAE,MAAM,IAAI,CAAC;QAEhC,kBAAkB,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,IAAI,CAAC;QACV,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;QACvE,oBAAoB,EAAE,MAAM,IAAI,CAAC;QAEjC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;QACxE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;QAClE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACzC,gBAAgB,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;QAElE,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;QAExD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,mBAAmB,EAAE,MAAM,IAAI,CAAC;QAEhC,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C,sBAAsB,EAAE,MAAM,IAAI,CAAC;QAEnC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;QACvD,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACjD,CAAC;CACH;AAoBD,eAAO,MAAM,iBAAiB,GAC5B,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,EAC9C,MAAM,MAAM,UAAU,EACtB,QAAQ,OAAO,KACd,WAoHF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,SAQ/C,CAAC"}
1
+ {"version":3,"file":"sampleSlice.d.ts","sourceRoot":"","sources":["../../../src/state/sampleSlice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE;QACb,mBAAmB,EAAE,MAAM,IAAI,CAAC;QAEhC,kBAAkB,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,IAAI,CAAC;QACV,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;QACvE,oBAAoB,EAAE,MAAM,IAAI,CAAC;QAEjC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;QACxE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;QAClE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACzC,gBAAgB,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;QAElE,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;QAExD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,mBAAmB,EAAE,MAAM,IAAI,CAAC;QAEhC,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C,sBAAsB,EAAE,MAAM,IAAI,CAAC;QAEnC;uCAC+B;QAC/B,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAChE,iBAAiB,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,KACzB,IAAI,CAAC;QACV,+DAA+D;QAC/D,mBAAmB,EAAE,MAAM,IAAI,CAAC;QAChC,mBAAmB,EAAE,MAAM,IAAI,CAAC;QAEhC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;QACvD,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACjD,CAAC;CACH;AASD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,YAAY,GAAG,SAAS,EAChC,OAAO,MAAM,KACZ,MAC6E,CAAC;AAsBjF,eAAO,MAAM,iBAAiB,GAC5B,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,EAC9C,MAAM,MAAM,UAAU,EACtB,QAAQ,OAAO,KACd,WAqJF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,SAQ/C,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * their content, leaving the value's shape untouched. TypeScript can't
4
4
  * express "same type, strings substituted", so the walk works in `unknown`
5
5
  * and this is where the shape is handed back.
6
+ * Attachment values are untrusted; only own string entries resolve.
6
7
  */
7
- export declare const resolveAttachments: <T>(value: T, attachments: Record<string, string>, onFailedResolve?: (attachmentId: string) => void) => T;
8
+ export declare const resolveAttachments: <T>(value: T, attachments: Readonly<Record<string, unknown>>, onFailedResolve?: (attachmentId: string) => void) => T;
8
9
  //# sourceMappingURL=attachments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/utils/attachments.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAClC,OAAO,CAAC,EACR,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,kBAAkB,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,KAC/C,CAEqD,CAAC"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/utils/attachments.ts"],"names":[],"mappings":"AAuEA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAClC,OAAO,CAAC,EACR,aAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,kBAAkB,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,KAC/C,CAEqD,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import { EvalSpec } from '@tsmono/inspect-common/types';
2
2
  /**
3
- * Resolve the model display string for an EvalSpec.
3
+ * Format the primary model first, then the named roles.
4
4
  *
5
- * - If `model_roles` is populated, formats it as `role: model[; role: model]…`
6
- * (`;` between roles, since a list-valued role already uses `,` between its
7
- * models).
8
- * - Otherwise falls back to `eval.model`, ignoring the placeholder `none/none`.
9
- * - Returns `undefined` if neither source has anything meaningful.
5
+ * Separate entries with `;` since list-valued roles already use `,`.
6
+ * Omits the `none/none` placeholder and returns `undefined` if both are empty.
10
7
  */
11
8
  export declare const formatModelText: (evalSpec?: EvalSpec) => string | undefined;
9
+ /** Format the primary model followed by parenthesized roles for a title. */
10
+ export declare const formatModelTitle: (evalSpec?: EvalSpec) => string | undefined;
12
11
  //# sourceMappingURL=evalModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evalModel.d.ts","sourceRoot":"","sources":["../../../src/utils/evalModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKxD;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,WAAW,QAAQ,KAAG,MAAM,GAAG,SAY9D,CAAC"}
1
+ {"version":3,"file":"evalModel.d.ts","sourceRoot":"","sources":["../../../src/utils/evalModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKxD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,WAAW,QAAQ,KAAG,MAAM,GAAG,SAG9D,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,GAAI,WAAW,QAAQ,KAAG,MAAM,GAAG,SAM/D,CAAC"}
@@ -17892,29 +17892,29 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
17892
17892
  ._hidden_hqi3c_47 {
17893
17893
  opacity: 0 !important;
17894
17894
  }
17895
- .btn._toolButton_1swkv_1 {
17895
+ .btn._toolButton_3h5lc_1 {
17896
17896
  background-color: var(--bs-light-border-subtle);
17897
17897
  }
17898
17898
 
17899
- .btn._toolButton_1swkv_1._bodyColor_1swkv_5 {
17899
+ .btn._toolButton_3h5lc_1._bodyColor_3h5lc_5 {
17900
17900
  background-color: var(--bs-light);
17901
17901
  }
17902
17902
 
17903
- ._toolButton_1swkv_1 {
17903
+ ._toolButton_3h5lc_1 {
17904
17904
  white-space: nowrap;
17905
17905
  }
17906
17906
 
17907
- ._toolButton_1swkv_1 i {
17907
+ ._toolButton_3h5lc_1 i {
17908
17908
  margin-right: 0.5em;
17909
17909
  }
17910
17910
 
17911
- ._toolButton_1swkv_1 ._chevron_1swkv_17 {
17911
+ ._toolButton_3h5lc_1 ._chevron_3h5lc_17 {
17912
17912
  margin-left: 0.5em;
17913
17913
  margin-right: 0;
17914
17914
  font-size: 0.75em;
17915
17915
  }
17916
17916
 
17917
- ._toolButton_1swkv_1:focus {
17917
+ ._toolButton_3h5lc_1:focus {
17918
17918
  outline: none;
17919
17919
  box-shadow:
17920
17920
  0 0 0 2px rgba(var(--bs-primary-rgb), 0.5),
@@ -17922,7 +17922,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
17922
17922
  inset 0 1px 2px rgba(0, 0, 0, 0.1);
17923
17923
  }
17924
17924
 
17925
- ._backdrop_1swkv_31 {
17925
+ ._backdrop_3h5lc_31 {
17926
17926
  position: fixed;
17927
17927
  top: 0;
17928
17928
  left: 0;
@@ -17932,7 +17932,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
17932
17932
  z-index: 1049;
17933
17933
  }
17934
17934
 
17935
- ._dropdownMenu_1swkv_41 {
17935
+ ._dropdownMenu_3h5lc_41 {
17936
17936
  position: fixed;
17937
17937
  background: var(--bs-body-bg);
17938
17938
  border: 1px solid var(--bs-border-color);
@@ -17943,7 +17943,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
17943
17943
  overflow: hidden;
17944
17944
  }
17945
17945
 
17946
- ._dropdownItem_1swkv_52 {
17946
+ ._dropdownItem_3h5lc_52 {
17947
17947
  display: block;
17948
17948
  width: 100%;
17949
17949
  padding: 0.25rem 0.75rem;
@@ -17956,13 +17956,38 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
17956
17956
  transition: background-color 0.15s ease-in-out;
17957
17957
  }
17958
17958
 
17959
- ._dropdownItem_1swkv_52:hover {
17959
+ ._dropdownItem_3h5lc_52:hover {
17960
17960
  background-color: var(--bs-tertiary-bg);
17961
17961
  }
17962
17962
 
17963
- ._dropdownItem_1swkv_52:active {
17963
+ ._dropdownItem_3h5lc_52:active {
17964
17964
  background-color: var(--bs-secondary-bg);
17965
17965
  }
17966
+
17967
+ ._dropdownHeading_3h5lc_73 {
17968
+ padding: 0.15rem 0.75rem 0.1rem;
17969
+ font-size: 0.65rem;
17970
+ text-transform: uppercase;
17971
+ letter-spacing: 0.04em;
17972
+ color: var(--bs-secondary-color);
17973
+ white-space: nowrap;
17974
+ }
17975
+
17976
+ ._dropdownDivider_3h5lc_82 {
17977
+ border-top: 1px solid var(--bs-border-color);
17978
+ margin: 0.25rem 0;
17979
+ }
17980
+
17981
+ ._dropdownFooter_3h5lc_87 {
17982
+ display: flex;
17983
+ align-items: center;
17984
+ gap: 0.5em;
17985
+ color: var(--bs-secondary-color);
17986
+ }
17987
+
17988
+ ._dropdownFooter_3h5lc_87 i {
17989
+ font-size: 0.85em;
17990
+ }
17966
17991
  ._visible_tm52u_1 {
17967
17992
  display: block;
17968
17993
  }
@@ -18870,7 +18895,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18870
18895
  }
18871
18896
  ._jsonMessage_oxf8d_1 {
18872
18897
  }
18873
- ._citations_1ggvf_1 {
18898
+ ._citations_1gzkd_1 {
18874
18899
  margin-top: 1em;
18875
18900
  margin-bottom: 1em;
18876
18901
  display: grid;
@@ -18878,12 +18903,12 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18878
18903
  column-gap: 0.5em;
18879
18904
  }
18880
18905
 
18881
- a._citationLink_1ggvf_9 {
18906
+ ._citationLink_1gzkd_9 {
18882
18907
  display: block;
18883
18908
  color: var(--bs-body-color);
18884
18909
  text-decoration: none;
18885
18910
  }
18886
- a._citationLink_1ggvf_9:hover {
18911
+ a._citationLink_1gzkd_9:hover {
18887
18912
  text-decoration: underline;
18888
18913
  }
18889
18914
  ._contentImage_a1z7v_1 {
@@ -21566,20 +21591,65 @@ a._citationLink_1ggvf_9:hover {
21566
21591
  ._dropdownItemActive_djjmp_74 {
21567
21592
  font-weight: 600;
21568
21593
  }
21569
- ._title_xefxk_1 {
21594
+ ._selectBox_19rqv_1 {
21595
+ display: inline-flex;
21596
+ align-items: center;
21597
+ justify-content: center;
21598
+ width: 1em;
21599
+ height: 1em;
21600
+ padding: 0;
21601
+ margin-right: 0.15em;
21602
+ border: 1px solid var(--bs-border-color);
21603
+ border-radius: 0.25em;
21604
+ background-color: var(--bs-body-bg);
21605
+ color: #fff;
21606
+ font-size: 0.9rem;
21607
+ line-height: 1;
21608
+ opacity: 0.85;
21609
+ cursor: pointer;
21610
+ }
21611
+
21612
+ ._selectBox_19rqv_1._selectBoxChecked_19rqv_19 {
21613
+ opacity: 1;
21614
+ background-color: var(--bs-primary);
21615
+ border-color: var(--bs-primary);
21616
+ }
21617
+
21618
+ ._selectBox_19rqv_1:focus-visible {
21619
+ outline: 2px solid var(--bs-primary);
21620
+ outline-offset: 1px;
21621
+ }
21622
+
21623
+ ._selectBox_19rqv_1 i {
21624
+ font-size: 0.75em;
21625
+ line-height: 1;
21626
+ }
21627
+ ._title_9b4ex_1 {
21570
21628
  display: grid;
21571
21629
  grid-template-columns: max-content max-content minmax(0, 1fr);
21572
21630
  column-gap: 0.3em;
21573
21631
  }
21574
21632
 
21575
- ._contents_xefxk_7 {
21633
+ ._title_9b4ex_1._selectable_9b4ex_7 {
21634
+ grid-template-columns: max-content max-content max-content minmax(0, 1fr);
21635
+ align-items: center;
21636
+ }
21637
+
21638
+ /* Selected for export — EventPanel's edge + tint; margin absorbs the border. */
21639
+ ._contents_9b4ex_13._selected_9b4ex_13 {
21640
+ border-left: 3px solid var(--inspect-jump-target-ring-color);
21641
+ margin-left: -2px;
21642
+ background-color: rgba(77, 126, 191, 0.05);
21643
+ }
21644
+
21645
+ ._contents_9b4ex_13 {
21576
21646
  padding: 0.4em;
21577
21647
  margin-bottom: 0;
21578
21648
  border: solid 1px var(--bs-light-border-subtle);
21579
21649
  border-radius: var(--bs-border-radius);
21580
21650
  }
21581
21651
 
21582
- ._below_xefxk_14 {
21652
+ ._below_9b4ex_26 {
21583
21653
  margin-top: 0.4em;
21584
21654
  }
21585
21655
  ._headline_1l22a_1 {
@@ -21717,7 +21787,7 @@ a._citationLink_1ggvf_9:hover {
21717
21787
  background-color: var(--bs-primary);
21718
21788
  filter: brightness(1.05);
21719
21789
  }
21720
- ._stickyWrapper_1v3k0_1 {
21790
+ ._stickyWrapper_loteg_1 {
21721
21791
  position: sticky;
21722
21792
  /* `top` is set inline from StickyScrollContext (the chrome offset). */
21723
21793
  /* Full-bleed: cancel the parent card's padding so the sticky bar
@@ -21732,12 +21802,12 @@ a._citationLink_1ggvf_9:hover {
21732
21802
  }
21733
21803
 
21734
21804
  /* Header pinned at its sticky offset (attribute toggled by useStickyStuck). */
21735
- ._stickyWrapper_1v3k0_1[data-sticky-stuck] {
21805
+ ._stickyWrapper_loteg_1[data-sticky-stuck] {
21736
21806
  background-color: var(--bs-light);
21737
21807
  border-bottom-color: var(--bs-light-border-subtle);
21738
21808
  }
21739
21809
 
21740
- ._label_1v3k0_21 {
21810
+ ._label_loteg_21 {
21741
21811
  margin-right: 0.2em;
21742
21812
  justify-self: end;
21743
21813
  }
@@ -21746,7 +21816,7 @@ a._citationLink_1ggvf_9:hover {
21746
21816
  grid track shrinks this cell (via `minmax(0, max-content)`) whenever the
21747
21817
  turnNav cluster and/or tab picker need the room, and a wrapped second line
21748
21818
  would grow the sticky header's height instead of just losing title text. */
21749
- ._title_1v3k0_30 {
21819
+ ._title_loteg_30 {
21750
21820
  min-width: 0;
21751
21821
  line-height: 1.6;
21752
21822
  white-space: nowrap;
@@ -21754,21 +21824,21 @@ a._citationLink_1ggvf_9:hover {
21754
21824
  text-overflow: ellipsis;
21755
21825
  }
21756
21826
 
21757
- ._titleExtra_1v3k0_38 {
21827
+ ._titleExtra_loteg_38 {
21758
21828
  display: inline-flex;
21759
21829
  align-items: center;
21760
21830
  vertical-align: middle;
21761
21831
  margin-left: 0.5em;
21762
21832
  }
21763
21833
 
21764
- ._navs_1v3k0_45 {
21834
+ ._navs_loteg_45 {
21765
21835
  display: flex;
21766
21836
  align-items: baseline;
21767
21837
  justify-content: flex-end;
21768
21838
  min-width: 0;
21769
21839
  }
21770
21840
 
21771
- ._turnLabel_1v3k0_52 {
21841
+ ._turnLabel_loteg_52 {
21772
21842
  margin-left: 1rem;
21773
21843
  margin-top: 0.2rem;
21774
21844
  opacity: 0.5;
@@ -21776,14 +21846,14 @@ a._citationLink_1ggvf_9:hover {
21776
21846
  white-space: nowrap;
21777
21847
  }
21778
21848
 
21779
- ._turnNav_1v3k0_60 {
21849
+ ._turnNav_loteg_60 {
21780
21850
  display: inline-flex;
21781
21851
  align-items: center;
21782
21852
  margin-left: 1rem;
21783
21853
  cursor: default;
21784
21854
  }
21785
21855
 
21786
- ._turnNav_1v3k0_60 ._turnLabel_1v3k0_52 {
21856
+ ._turnNav_loteg_60 ._turnLabel_loteg_52 {
21787
21857
  margin-left: 0;
21788
21858
  margin-top: 0;
21789
21859
  }
@@ -21791,15 +21861,15 @@ a._citationLink_1ggvf_9:hover {
21791
21861
  /* Non-capstone headers of a turn hide their cluster while the capstone is on
21792
21862
  screen, revealing it only when this header is pinned. `visibility` (not
21793
21863
  `display`) so the grid column keeps its width and nothing reflows. */
21794
- ._turnNavFollower_1v3k0_75 {
21864
+ ._turnNavFollower_loteg_75 {
21795
21865
  visibility: hidden;
21796
21866
  }
21797
21867
 
21798
- ._stickyWrapper_1v3k0_1[data-sticky-stuck] ._turnNavFollower_1v3k0_75 {
21868
+ ._stickyWrapper_loteg_1[data-sticky-stuck] ._turnNavFollower_loteg_75 {
21799
21869
  visibility: visible;
21800
21870
  }
21801
21871
 
21802
- ._turnLabelButton_1v3k0_83 {
21872
+ ._turnLabelButton_loteg_83 {
21803
21873
  border: none;
21804
21874
  background: none;
21805
21875
  font: inherit;
@@ -21811,12 +21881,12 @@ a._citationLink_1ggvf_9:hover {
21811
21881
 
21812
21882
  /* Link-like text highlight, matching the sibling chevron/focus buttons —
21813
21883
  deliberately no pill hover; no other header button has a pill treatment. */
21814
- ._turnLabelButton_1v3k0_83:hover {
21884
+ ._turnLabelButton_loteg_83:hover {
21815
21885
  color: var(--bs-body-color);
21816
21886
  opacity: 1;
21817
21887
  }
21818
21888
 
21819
- ._turnButton_1v3k0_100 {
21889
+ ._turnButton_loteg_100 {
21820
21890
  display: inline-flex;
21821
21891
  align-items: center;
21822
21892
  justify-content: center;
@@ -21830,25 +21900,25 @@ a._citationLink_1ggvf_9:hover {
21830
21900
  font-size: var(--inspect-font-size-smallest);
21831
21901
  }
21832
21902
 
21833
- ._turnButton_1v3k0_100:hover:not(:disabled) {
21903
+ ._turnButton_loteg_100:hover:not(:disabled) {
21834
21904
  color: var(--bs-body-color);
21835
21905
  }
21836
21906
 
21837
- ._turnButton_1v3k0_100:focus-visible {
21907
+ ._turnButton_loteg_100:focus-visible {
21838
21908
  outline: 2px solid currentColor;
21839
21909
  outline-offset: 2px;
21840
21910
  }
21841
21911
 
21842
- ._turnButton_1v3k0_100:disabled {
21912
+ ._turnButton_loteg_100:disabled {
21843
21913
  opacity: 0.3;
21844
21914
  cursor: default;
21845
21915
  }
21846
21916
 
21847
- a._turnButton_1v3k0_100 {
21917
+ a._turnButton_loteg_100 {
21848
21918
  padding: 0 0.4em;
21849
21919
  }
21850
21920
 
21851
- ._card_1v3k0_132 {
21921
+ ._card_loteg_132 {
21852
21922
  position: relative;
21853
21923
  background-color: var(--bs-body-bg);
21854
21924
  padding: 0.625rem;
@@ -21857,25 +21927,32 @@ a._turnButton_1v3k0_100 {
21857
21927
  }
21858
21928
 
21859
21929
  /* Landing target of the latest go-to-turn jump — persistent selection ring. */
21860
- ._card_1v3k0_132._jumpTarget_1v3k0_141 {
21930
+ ._card_loteg_132._jumpTarget_loteg_141 {
21861
21931
  outline: 2px solid var(--inspect-jump-target-ring-color);
21862
21932
  outline-offset: 2px;
21863
21933
  }
21864
21934
 
21865
- ._cardContent_1v3k0_146 {
21935
+ /* Selected for export; compounded to outrank .depthRoot, margin absorbs the border like .expanded. */
21936
+ ._card_loteg_132._selected_loteg_147 {
21937
+ border-left: 3px solid var(--inspect-jump-target-ring-color);
21938
+ margin-left: -2px;
21939
+ background-color: rgba(77, 126, 191, 0.05);
21940
+ }
21941
+
21942
+ ._cardContent_loteg_153 {
21866
21943
  padding: 0;
21867
21944
  display: inherit;
21868
21945
  }
21869
21946
 
21870
- ._cardContent_1v3k0_146._hidden_1v3k0_151 {
21947
+ ._cardContent_loteg_153._hidden_loteg_158 {
21871
21948
  display: none;
21872
21949
  }
21873
21950
 
21874
- ._hidden_1v3k0_151 {
21951
+ ._hidden_loteg_158 {
21875
21952
  display: none;
21876
21953
  }
21877
21954
 
21878
- ._copyLink_1v3k0_159 {
21955
+ ._copyLink_loteg_166 {
21879
21956
  font-size: 1.2em;
21880
21957
  opacity: 0;
21881
21958
  padding-left: 0.2em;
@@ -21885,16 +21962,16 @@ a._turnButton_1v3k0_100 {
21885
21962
  margin-left: 0.25em;
21886
21963
  }
21887
21964
 
21888
- ._hover_1v3k0_169 ._copyLink_1v3k0_159 {
21965
+ ._hover_loteg_176 ._copyLink_loteg_166 {
21889
21966
  opacity: 0.75;
21890
21967
  }
21891
21968
 
21892
21969
  /* Extra air between the turn label and the event-number pill. */
21893
- ._eventLabel_1v3k0_174 {
21970
+ ._eventLabel_loteg_181 {
21894
21971
  margin-left: 0.5em;
21895
21972
  }
21896
21973
 
21897
- ._root_1v3k0_178 {
21974
+ ._root_loteg_185 {
21898
21975
  background-color: var(--bs-light-bg-subtle);
21899
21976
  border-radius: unset;
21900
21977
  }
@@ -21905,14 +21982,14 @@ a._turnButton_1v3k0_100 {
21905
21982
  default 1px border so widening it doesn't shift the card. Compounded with
21906
21983
  .card so it outranks .depthRoot's `border-right: none`, keeping the gutter on
21907
21984
  depth-0 / lane-scoped events. */
21908
- ._card_1v3k0_132._expanded_1v3k0_189 {
21985
+ ._card_loteg_132._expanded_loteg_146 {
21909
21986
  border-right: 3px solid var(--bs-secondary);
21910
21987
  margin-right: -2px;
21911
21988
  }
21912
21989
 
21913
21990
  /* The chevron button is styled down to the bare glyph — the surrounding
21914
21991
  header cells supply the visual affordance. */
21915
- ._collapseToggle_1v3k0_196 {
21992
+ ._collapseToggle_loteg_203 {
21916
21993
  display: flex;
21917
21994
  align-items: center;
21918
21995
  padding: 0;
@@ -21923,7 +22000,7 @@ a._turnButton_1v3k0_100 {
21923
22000
  cursor: pointer;
21924
22001
  }
21925
22002
 
21926
- ._bottomDongle_1v3k0_207 {
22003
+ ._bottomDongle_loteg_214 {
21927
22004
  display: block;
21928
22005
  font-family: inherit;
21929
22006
  font-weight: inherit;
@@ -21941,12 +22018,12 @@ a._turnButton_1v3k0_100 {
21941
22018
  cursor: pointer;
21942
22019
  }
21943
22020
 
21944
- ._dongleIcon_1v3k0_225 {
22021
+ ._dongleIcon_loteg_232 {
21945
22022
  padding-right: 0.3em;
21946
22023
  }
21947
22024
 
21948
22025
  @media print {
21949
- ._card_1v3k0_132 {
22026
+ ._card_loteg_132 {
21950
22027
  break-inside: avoid;
21951
22028
  }
21952
22029
  }
@@ -23722,6 +23799,30 @@ a._turnButton_1v3k0_100 {
23722
23799
  break-inside: avoid;
23723
23800
  }
23724
23801
  }
23802
+ ._group_1cexi_1 {
23803
+ display: inline-flex;
23804
+ align-items: stretch;
23805
+ }
23806
+
23807
+ .btn._splitMain_1cexi_6 {
23808
+ border-top-right-radius: 0;
23809
+ border-bottom-right-radius: 0;
23810
+ }
23811
+
23812
+ /* Icon-only segment: flex-centre the glyph and stretch to the text segment's
23813
+ height so the two segments read as one split button. */
23814
+ .btn._splitClear_1cexi_13 {
23815
+ display: inline-flex;
23816
+ align-items: center;
23817
+ border-left: 0;
23818
+ border-top-left-radius: 0;
23819
+ border-bottom-left-radius: 0;
23820
+ padding: 0.1em 0.45em;
23821
+ }
23822
+
23823
+ ._splitClear_1cexi_13 i {
23824
+ font-size: 0.85em;
23825
+ }
23725
23826
  ._card_fxgye_1 {
23726
23827
  position: relative;
23727
23828
  background-color: var(--bs-secondary-bg);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridianlabs/log-viewer",
3
- "version": "0.3.263",
3
+ "version": "0.3.264",
4
4
  "description": "Log viewer for inspect_ai logs.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,10 +53,10 @@
53
53
  "@playwright/test": "^1.62.1",
54
54
  "@swc/core": "^1.16.1",
55
55
  "@tanstack/react-devtools": "^0.10.12",
56
- "@tanstack/react-query-devtools": "^5.102.3",
56
+ "@tanstack/react-query-devtools": "^5.102.8",
57
57
  "@testing-library/dom": "^10.4.1",
58
58
  "@testing-library/jest-dom": "^7.0.1",
59
- "@testing-library/react": "^16.3.1",
59
+ "@testing-library/react": "^16.3.3",
60
60
  "@tsmono/eslint-config": "workspace:*",
61
61
  "@tsmono/inspect-common": "workspace:*",
62
62
  "@tsmono/inspect-components": "workspace:*",
@@ -67,7 +67,7 @@
67
67
  "@tsmono/util": "workspace:*",
68
68
  "@tsmono/zustand-devtools": "workspace:*",
69
69
  "@types/bootstrap": "^5.2.11",
70
- "@types/node": "^26.3.0",
70
+ "@types/node": "^26.4.0",
71
71
  "@types/prismjs": "^1.26.5",
72
72
  "@types/react": "^19.2.18",
73
73
  "@types/react-dom": "^19.2.5",
@@ -84,19 +84,19 @@
84
84
  "postcss": "^8.5.26",
85
85
  "prettier": "^3.9.6",
86
86
  "typescript": "npm:@typescript/typescript6@^6.0.2",
87
- "typescript-eslint": "^8.68.0",
87
+ "typescript-eslint": "^8.69.0",
88
88
  "vite": "^8.2.2",
89
89
  "vite-plugin-dts": "^5.0.3",
90
- "vitest": "^4.1.11"
90
+ "vitest": "^5.0.0"
91
91
  },
92
92
  "dependencies": {
93
93
  "@codemirror/autocomplete": "^6.20.3",
94
94
  "@codemirror/language": "^6.12.4",
95
95
  "@codemirror/lint": "^6.9.7",
96
- "@codemirror/state": "^6.7.1",
97
- "@codemirror/view": "^6.43.9",
96
+ "@codemirror/state": "^6.7.2",
97
+ "@codemirror/view": "^6.43.10",
98
98
  "@lezer/highlight": "^1.2.2",
99
- "@tanstack/react-query": "^5.102.3",
99
+ "@tanstack/react-query": "^5.102.8",
100
100
  "@tanstack/react-table": "^9.1.2",
101
101
  "@tanstack/react-virtual": "^3.14.10",
102
102
  "@vscode-elements/react-elements": "^2.4.0",
@@ -113,12 +113,12 @@
113
113
  "immer": "^11.1.18",
114
114
  "json5": "^2.2.3",
115
115
  "jsondiffpatch": "^0.7.6",
116
- "markdown-it": "^15.0.0",
116
+ "markdown-it": "^15.0.1",
117
117
  "postcss-url": "^10.1.4",
118
118
  "prismjs": "^1.30.0",
119
119
  "react": "^19.2.8",
120
120
  "react-dom": "^19.2.8",
121
- "react-router": "^8.3.0",
121
+ "react-router": "^8.3.1",
122
122
  "use-sync-external-store": "^1.6.0",
123
123
  "zustand": "^5.0.15"
124
124
  },