@meridianlabs/log-viewer 0.3.258 → 0.3.259

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.
@@ -1 +1 @@
1
- {"version":3,"file":"SampleDisplay.d.ts","sourceRoot":"","sources":["../../../../src/app/samples/SampleDisplay.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,EAAE,EAIF,SAAS,EAMV,MAAM,OAAO,CAAC;AAwGf,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA86BhD,CAAC"}
1
+ {"version":3,"file":"SampleDisplay.d.ts","sourceRoot":"","sources":["../../../../src/app/samples/SampleDisplay.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,EAAE,EAIF,SAAS,EAMV,MAAM,OAAO,CAAC;AAwGf,UAAU,kBAAkB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAm7BhD,CAAC"}
@@ -12,6 +12,7 @@ export { resolvedEventsReader } from './chunkedAttachments';
12
12
  export { kDefaultMessageRowOptions } from './messageRows';
13
13
  export { useMessagesExport } from './messagesExport';
14
14
  export { useSampleMessages } from './sampleMessages';
15
+ export type { MessageRowsFeed } from './messageRowsQuery';
15
16
  export { useChunkedSample, type ChunkedSampleData } from './chunkedSampleQuery';
16
17
  export { useSampleSummaries } from './sampleSummaries';
17
18
  export { type ScorerMap, scorerMetricKey, useScoreSchema } from './scoreSchema';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/log_data/index.ts"],"names":[],"mappings":"AA6FA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,KAAK,cAAc,EACnB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,OAAO,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/log_data/index.ts"],"names":[],"mappings":"AA6FA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,KAAK,cAAc,EACnB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,OAAO,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -2,20 +2,51 @@ import { MessageRow } from '@tsmono/inspect-components/chat';
2
2
  import { AsyncData } from '@tsmono/util';
3
3
  import { SampleHandle } from '../app/types';
4
4
  import { EvalSampleData } from './sampleData';
5
+ /** Rows per page of a chunked sample's settled conversation read. */
6
+ export declare const kMessageRowsPageSize = 100;
5
7
  /**
6
- * The settled conversation's rows for a sample, held in react-query.
7
- * Which feed backs them — inline monolith messages or the windowed source
8
- * over a chunked sample's conversation — is selected behind the
9
- * SampleMessagesData seam (`sampleMessagesSource`). This stage reads the
10
- * whole row space in one getRows call (the chat list renders prebuilt
11
- * rows); everything below the seam — scanning, chunk fetches, folding —
12
- * serves that request the same way it will serve real pages when the
13
- * list virtualizes over them.
8
+ * The settled conversation as a loaded prefix of rows plus the controls to
9
+ * extend it — what the Messages tab consumes. `rows.data` is every row
10
+ * loaded so far (pages flattened); `hasMore` marks it a prefix; `loadMore`
11
+ * requests the next page and no-ops while one is in flight, so scroll
12
+ * handlers may call it freely.
13
+ */
14
+ export interface MessageRowsFeed {
15
+ rows: AsyncData<MessageRow[]>;
16
+ hasMore: boolean;
17
+ loadMore: () => void;
18
+ }
19
+ /** A feed over rows that are already everything there is. */
20
+ export declare const unpagedFeed: (rows: AsyncData<MessageRow[]>) => MessageRowsFeed;
21
+ /**
22
+ * The settled conversation's rows for a sample, read through react-query's
23
+ * infinite query. Which feed backs them — inline monolith messages or the
24
+ * windowed source over a chunked sample's conversation — is selected behind
25
+ * the SampleMessagesData seam (`sampleMessagesSource`). Chunked samples
26
+ * read in kMessageRowsPageSize pages, so the tab's first paint costs one
27
+ * page even on a huge conversation and scrolling extends the loaded prefix
28
+ * page by page; monolith samples serve the whole row space in one read,
29
+ * exactly like the pre-paging feed — a TEMPORARY gate, because behaviors
30
+ * built on a fully loaded list (find scope, the live-finish row swap)
31
+ * aren't paging-aware yet and customers' non-chunked evals must not lose
32
+ * them. Once those work over a paged prefix, the gate can drop. Pages are
33
+ * forward-contiguous from row 0 (offset cursors); there is deliberately no
34
+ * eviction — `maxPages` would punch holes in the flattened prefix the list
35
+ * renders.
14
36
  *
15
37
  * Returns undefined while there is no settled conversation to read (a
16
38
  * live streaming sample, a sample still fetching, the Messages tab never
17
- * activated); loading while one is materializing; the caller owns what
18
- * covers those states (streaming rows, waiting/loading affordances).
39
+ * activated); a loading feed while the first page is materializing; the
40
+ * caller owns what covers those states (streaming rows, waiting/loading
41
+ * affordances).
42
+ *
43
+ * `targetMessageId` is a `?message=` deep link's target: pages drain in
44
+ * serially until a loaded row renders that message (or the conversation
45
+ * is exhausted), and the feed reports loading until then — the list
46
+ * honors its initial scroll index at mount, so it must mount with the
47
+ * target resident. The prefix cost is deliberate: pages are
48
+ * forward-contiguous, so the covering prefix is the minimum the list can
49
+ * render anyway.
19
50
  */
20
- export declare const useMessageRows: (handle: SampleHandle | undefined, sampleData: EvalSampleData, activated: boolean) => AsyncData<MessageRow[]> | undefined;
51
+ export declare const useMessageRows: (handle: SampleHandle | undefined, sampleData: EvalSampleData, activated: boolean, targetMessageId?: string | null) => MessageRowsFeed | undefined;
21
52
  //# sourceMappingURL=messageRowsQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageRowsQuery.d.ts","sourceRoot":"","sources":["../../../src/log_data/messageRowsQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,YAAY,GAAG,SAAS,EAChC,YAAY,cAAc,EAC1B,WAAW,OAAO,KACjB,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,SA4C5B,CAAC"}
1
+ {"version":3,"file":"messageRowsQuery.d.ts","sourceRoot":"","sources":["../../../src/log_data/messageRowsQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,6DAA6D;AAC7D,eAAO,MAAM,WAAW,GACtB,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC,KAC5B,eAID,CAAC;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,YAAY,GAAG,SAAS,EAChC,YAAY,cAAc,EAC1B,WAAW,OAAO,EAClB,kBAAkB,MAAM,GAAG,IAAI,KAC9B,eAAe,GAAG,SAmHpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"replicationControl.d.ts","sourceRoot":"","sources":["../../../src/log_data/replicationControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAgB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUrD,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,KACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAUrC,CAAC;AA2GF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,KAAG,IAIvD,CAAC;AAEF;;;cAGc;AACd,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAsCF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GACnB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,OAAO;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC5C,OAAO,CAAC,IAAI,CASd,CAAC;AAsCF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,SAAS,EAAE,CAMlE,CAAC"}
1
+ {"version":3,"file":"replicationControl.d.ts","sourceRoot":"","sources":["../../../src/log_data/replicationControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAgB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUrD,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,KACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAUrC,CAAC;AAkIF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,KAAG,IAIvD,CAAC;AAEF;;;cAGc;AACd,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAsCF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GACnB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,OAAO;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC5C,OAAO,CAAC,IAAI,CASd,CAAC;AAsCF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,SAAS,EAAE,CAMlE,CAAC"}
@@ -1,21 +1,27 @@
1
- import { MessageRow } from '@tsmono/inspect-components/chat';
2
- import { AsyncData } from '@tsmono/util';
3
1
  import { SampleHandle } from '../app/types';
2
+ import { MessageRowsFeed } from './messageRowsQuery';
4
3
  import { EvalSampleData } from './sampleData';
5
4
  /**
6
5
  * The Messages tab's one entry point: the settled conversation's rows read
7
- * through `useMessageRows`, with the live event stream serving rows until
6
+ * through `useMessageRows` — a paged feed whose loaded prefix the list
7
+ * extends by scrolling — with the live event stream serving rows until
8
8
  * a settled feed exists. The view consumes the result and reports two
9
9
  * gates it owns: `active` (the tab is open — the settled read and chunked
10
10
  * hydration are activation-latched on it, so neither is ever paid at
11
11
  * sample open) and `running` (live samples surface "waiting", not
12
12
  * "loading", before their first poll lands).
13
13
  *
14
- * `data` is the rows to render (settled, streaming, or an empty settled
15
- * conversation); `loading` means data that will produce messages is still
16
- * in flight (monolith fetch, chunked hydration, rows materialization);
17
- * `error` means the conversation failed to materialize. On loading and
18
- * error the view renders that affordance, never "No messages".
14
+ * `rows.data` is the rows to render (a settled prefix, streaming rows, or
15
+ * an empty settled conversation); `rows.loading` means data that will
16
+ * produce messages is still in flight (monolith fetch, chunked hydration,
17
+ * first-page materialization); `rows.error` means the conversation failed
18
+ * to materialize. On loading and error the view renders that affordance,
19
+ * never "No messages". Streaming rows are never paged (`hasMore` false):
20
+ * the event feed always renders whole.
21
+ *
22
+ * `targetMessageId` (a `?message=` deep link) keeps the settled feed on
23
+ * loading until the target's covering page prefix is resident — see
24
+ * `useMessageRows`.
19
25
  */
20
- export declare const useSampleMessages: (handle: SampleHandle | undefined, sampleData: EvalSampleData, active: boolean, running: boolean) => AsyncData<MessageRow[]>;
26
+ export declare const useSampleMessages: (handle: SampleHandle | undefined, sampleData: EvalSampleData, active: boolean, running: boolean, targetMessageId?: string | null) => MessageRowsFeed;
21
27
  //# sourceMappingURL=sampleMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sampleMessages.d.ts","sourceRoot":"","sources":["../../../src/log_data/sampleMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAyDnD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,YAAY,GAAG,SAAS,EAChC,YAAY,cAAc,EAC1B,QAAQ,OAAO,EACf,SAAS,OAAO,KACf,SAAS,CAAC,UAAU,EAAE,CAmDxB,CAAC"}
1
+ {"version":3,"file":"sampleMessages.d.ts","sourceRoot":"","sources":["../../../src/log_data/sampleMessages.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAyDnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,YAAY,GAAG,SAAS,EAChC,YAAY,cAAc,EAC1B,QAAQ,OAAO,EACf,SAAS,OAAO,EAChB,kBAAkB,MAAM,GAAG,IAAI,KAC9B,eAqDF,CAAC"}
@@ -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":"AAEA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AAOvD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGhE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAWrB,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC3D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC;CACrB;AAMD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,CACnC,SAAS,GAAG,SAAS,EACrB,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAiB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,SAAS,GAAG,SAAS,EAC7B,aAAa,SAAS,GAAG,SAAS,EAClC,OAAO,MAAM,KACZ,SAAqE,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,CACnC,mBAAmB,GAAG,SAAS,EAC/B,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAiBpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,mBAAmB,GAAG,SAAS,EACvC,aAAa,mBAAmB,GAAG,SAAS,KAC3C,mBAAsE,CAAC;AAM1E,eAAO,MAAM,sBAAsB,GACjC,OACE;IAAE,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,KAC3E,SAAS,GAAG,SAAuD,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAO,SAAS,GAAG,SAGlD,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAO,mBAAmB,GAAG,SAS9D,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAO,SAAS,GAAG,SAIpD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAEvB,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,QAAO,YAAY,EAAE,GAAG,SAEpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAO,UAAU,GAAG,SAQtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAO,SAAS,CACpD,aAAa,EAAE,GAAG,SAAS,CAK5B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC;4DACwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,sEAAsE;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAAO,iBAWvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAO,SAAS,CAAC,aAAa,EAAE,CAItE,CAAC;AAWF,eAAO,MAAM,mBAAmB,cAK/B,CAAC;AAKF,eAAO,MAAM,iBAAiB,iCAa7B,CAAC;AAKF,eAAO,MAAM,SAAS,iCAYrB,CAAC;AAGF,eAAO,MAAM,iBAAiB,mFAM7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,2FAS/B,CAAC;AAKF,eAAO,MAAM,cAAc,GAAI,GAAG,aAAa,EAAE,GAAG,aAAa,KAAG,MAWnE,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAAI,SAAS,aAAa,EAAE,KAAG,OAIxD,CAAC;AAGL,eAAO,MAAM,kBAAkB,uBA+C9B,CAAC;AAGF,eAAO,MAAM,wBAAwB,QAAO,aAAa,GAAG,SAe3D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAO,cAI5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QACxC,UAAU,CAAC,cAAc,CAAC,GAAG,SAEa,CAAC;AAE7C,eAAO,MAAM,eAAe;;;;CAY3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,EACb,IAAI,MAAM,KACT,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAYxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,IAAI,MAAM,EACV,OAAO,QAAQ,GAAG,MAAM,KACvB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAkDtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,IAAI,MAAM;;;6BA6Cd,OAAO;;CASnC,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAgB1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/utils/markdown.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAY,EACvB,QAAQ,GAAE,MAAc,GACvB,MAAM,CA+ER;AAyID;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAY,EACvB,QAAQ,GAAE,MAAc,GACvB,MAAM,CAgBR"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/utils/markdown.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAY,EACvB,QAAQ,GAAE,MAAc,GACvB,MAAM,CA+ER;AAyID;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAY,EACvB,QAAQ,GAAE,MAAc,GACvB,MAAM,CAgBR"}
@@ -18064,27 +18064,36 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18064
18064
  font-size: var(--inspect-font-size-smallest);
18065
18065
  padding: 0.1em 0.5em;
18066
18066
  }
18067
- ._outer_1ml7m_1 {
18067
+ ._outer_1ylmn_1 {
18068
18068
  /* Positioned so the block-left sticky toggle's containing block is this
18069
18069
  wrapper — keeps sticky behavior scoped to the panel instead of leaking
18070
18070
  to some arbitrary positioned ancestor up the tree. */
18071
18071
  position: relative;
18072
+ /* Fill the row when the panel is a flex item: event-panel tab panes are
18073
+ row flex containers (`.tab-content > .active { display: flex }` in the
18074
+ theme), so without this the panel shrink-wraps to narrow content (e.g. a
18075
+ column of images) and the inline-right "more…" toggle lands on top of
18076
+ that content instead of at the card's right edge. `flex-grow` rather
18077
+ than `width: 100%` because it is inert in block flow — callers that pass
18078
+ horizontal margins via `className` (e.g. RetryAttemptCard's errorPanel)
18079
+ would overflow their container under an explicit 100% width. */
18080
+ flex-grow: 1;
18072
18081
  }
18073
18082
 
18074
- ._expandablePanel_1ml7m_8 {
18083
+ ._expandablePanel_1ylmn_17 {
18075
18084
  position: relative;
18076
18085
  }
18077
18086
 
18078
- ._expandableBordered_1ml7m_12 {
18087
+ ._expandableBordered_1ylmn_21 {
18079
18088
  border: solid var(--bs-light-border-subtle) 1px;
18080
18089
  padding: 0.5em;
18081
18090
  }
18082
18091
 
18083
- ._expandableTogglable_1ml7m_17 {
18092
+ ._expandableTogglable_1ylmn_26 {
18084
18093
  margin-bottom: 1em;
18085
18094
  }
18086
18095
 
18087
- ._expandableContents_1ml7m_21 {
18096
+ ._expandableContents_1ylmn_30 {
18088
18097
  font-size: var(--inspect-font-size-base);
18089
18098
  }
18090
18099
 
@@ -18100,7 +18109,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18100
18109
  gradient) so the affordance works on any surface, regardless of the
18101
18110
  panel's bg. The inline-right toggle is a sibling of this wrapper, so it
18102
18111
  stays fully opaque. */
18103
- ._expandableTruncated_1ml7m_37 {
18112
+ ._expandableTruncated_1ylmn_46 {
18104
18113
  -webkit-mask-image: linear-gradient(
18105
18114
  to bottom,
18106
18115
  black calc(100% - 3rem),
@@ -18109,7 +18118,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18109
18118
  mask-image: linear-gradient(to bottom, black calc(100% - 3rem), transparent);
18110
18119
  }
18111
18120
 
18112
- ._moreToggle_1ml7m_46 {
18121
+ ._moreToggle_1ylmn_55 {
18113
18122
  display: flex;
18114
18123
  margin-top: 0;
18115
18124
  height: 20px;
@@ -18119,14 +18128,14 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18119
18128
  color: var(--bs-link-color);
18120
18129
  }
18121
18130
 
18122
- ._moreToggle_1ml7m_46._bordered_1ml7m_56 {
18131
+ ._moreToggle_1ylmn_55._bordered_1ylmn_65 {
18123
18132
  border-top: solid var(--bs-light-border-subtle) 1px;
18124
18133
  }
18125
18134
 
18126
18135
  /* Double class beats Bootstrap's `.btn` regardless of stylesheet order —
18127
18136
  in scout, Bootstrap loads after this module and its 6px 12px padding
18128
18137
  overflowed the fixed-height toggle bar. */
18129
- ._moreToggle_1ml7m_46 ._moreToggleButton_1ml7m_63 {
18138
+ ._moreToggle_1ylmn_55 ._moreToggleButton_1ylmn_72 {
18130
18139
  font-size: var(--inspect-font-size-smaller);
18131
18140
  border: none;
18132
18141
  padding: 0rem 0.5rem;
@@ -18137,7 +18146,7 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18137
18146
  /* Fills the panel so its sticky child is bounded by the panel's rect.
18138
18147
  pointer-events: none lets clicks pass through to the content behind;
18139
18148
  the sticky child re-enables pointer events on itself. */
18140
- ._inlineToggleHolder_1ml7m_74 {
18149
+ ._inlineToggleHolder_1ylmn_83 {
18141
18150
  position: absolute;
18142
18151
  inset: 0;
18143
18152
  display: flex;
@@ -18149,13 +18158,13 @@ button._segment_1d1i3_10._disabled_1d1i3_41:hover {
18149
18158
  z-index: 2;
18150
18159
  }
18151
18160
 
18152
- ._inlineToggleSticky_1ml7m_86 {
18161
+ ._inlineToggleSticky_1ylmn_95 {
18153
18162
  position: sticky;
18154
18163
  bottom: 0.25em;
18155
18164
  pointer-events: auto;
18156
18165
  }
18157
18166
 
18158
- ._moreToggle_1ml7m_46._blockLeft_1ml7m_92 {
18167
+ ._moreToggle_1ylmn_55._blockLeft_1ylmn_101 {
18159
18168
  width: fit-content;
18160
18169
  margin-top: 0.2em;
18161
18170
  margin-bottom: 0.5em;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridianlabs/log-viewer",
3
- "version": "0.3.258",
3
+ "version": "0.3.259",
4
4
  "description": "Log viewer for inspect_ai logs.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -50,7 +50,7 @@
50
50
  "devDependencies": {
51
51
  "@eslint/js": "^10.0.1",
52
52
  "@msw/playwright": "^0.6.7",
53
- "@playwright/test": "^1.62.0",
53
+ "@playwright/test": "^1.62.1",
54
54
  "@tanstack/react-devtools": "^0.10.9",
55
55
  "@tanstack/react-query-devtools": "^5.101.4",
56
56
  "@testing-library/dom": "^10.4.1",
@@ -67,29 +67,28 @@
67
67
  "@tsmono/zustand-devtools": "workspace:*",
68
68
  "@types/bootstrap": "^5.2.11",
69
69
  "@types/clipboard": "^2.0.10",
70
- "@types/codemirror": "^5.60.15",
70
+ "@types/codemirror": "^5.60.18",
71
71
  "@types/css-modules": "^1.0.5",
72
- "@types/markdown-it": "^14.1.2",
73
72
  "@types/node": "^26.1.2",
74
73
  "@types/prismjs": "^1.26.5",
75
- "@types/react": "^19.2.17",
76
- "@types/react-dom": "^19.2.3",
74
+ "@types/react": "^19.2.18",
75
+ "@types/react-dom": "^19.2.4",
77
76
  "@typescript/native": "npm:typescript@^7.0.2",
78
- "@vitejs/plugin-react": "^6.0.4",
77
+ "@vitejs/plugin-react": "^6.0.5",
79
78
  "cross-env": "^10.1.0",
80
79
  "eslint": "^10.7.0",
81
80
  "eslint-plugin-react-hooks": "^7.1.1",
82
81
  "fake-indexeddb": "^6.2.2",
83
- "globals": "^17.8.0",
82
+ "globals": "^17.9.0",
84
83
  "markdown-it-mathjax3": "^5.2.0",
85
84
  "mathjax-full": "^3.2.2",
86
85
  "msw": "^2.15.0",
87
86
  "picocolors": "^1.1.1",
88
- "postcss": "^8.5.24",
87
+ "postcss": "^8.5.25",
89
88
  "prettier": "^3.9.6",
90
89
  "typescript": "npm:@typescript/typescript6@^6.0.2",
91
- "typescript-eslint": "^8.65.0",
92
- "vite": "^8.1.5",
90
+ "typescript-eslint": "^8.66.0",
91
+ "vite": "^8.2.0",
93
92
  "vite-plugin-dts": "^5.0.3",
94
93
  "vitest": "^4.1.10"
95
94
  },
@@ -103,7 +102,7 @@
103
102
  "@popperjs/core": "^2.11.8",
104
103
  "@tanstack/react-query": "^5.101.4",
105
104
  "@tanstack/react-table": "^8.21.3",
106
- "@tanstack/react-virtual": "^3.14.8",
105
+ "@tanstack/react-virtual": "^3.14.9",
107
106
  "@vscode-elements/react-elements": "^2.4.0",
108
107
  "@vscode/codicons": "^0.0.45",
109
108
  "asciinema-player": "^3.17.0",
@@ -119,7 +118,7 @@
119
118
  "immer": "^11.1.15",
120
119
  "json5": "^2.2.3",
121
120
  "jsondiffpatch": "^0.7.6",
122
- "markdown-it": "^14.3.0",
121
+ "markdown-it": "^15.0.0",
123
122
  "postcss-url": "^10.1.4",
124
123
  "prismjs": "^1.30.0",
125
124
  "react": "^19.2.8",