@railtownai/railtracks-visualizer 0.0.56 → 0.0.58

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.
package/dist/cjs/index.js CHANGED
@@ -113691,7 +113691,13 @@ const SessionDetails = ({ session, open, onClose })=>{
113691
113691
  // Get the active run for full screen display (use selected run or first run)
113692
113692
  const activeRun = session?.runs.find((r)=>r.run_id === selectedNodeInfo?.runId) || session?.runs?.[0];
113693
113693
  const extraButtonsIconSize = 24;
113694
- return /*#__PURE__*/ React.createElement(Drawer$2, {
113694
+ return /*#__PURE__*/ React.createElement(ConfigProvider, {
113695
+ theme: {
113696
+ token: {
113697
+ fontFamily: "inherit"
113698
+ }
113699
+ }
113700
+ }, /*#__PURE__*/ React.createElement(Drawer$2, {
113695
113701
  title: /*#__PURE__*/ React.createElement(React.Fragment, null, session?.name || "Unnamed Session", " -", " ", session?.start_time ? moment(session.start_time * 1000).fromNow() : "N/A"),
113696
113702
  placement: "right",
113697
113703
  size: isFullScreen ? "100%" : "70%",
@@ -113823,7 +113829,7 @@ const SessionDetails = ({ session, open, onClose })=>{
113823
113829
  selectedNode: selectedNodeInfo,
113824
113830
  session: session,
113825
113831
  isDarkMode: isDarkMode
113826
- }))));
113832
+ })))));
113827
113833
  };
113828
113834
 
113829
113835
  /**
@@ -114231,7 +114237,13 @@ const EvaluationsCompareView = ({ evaluations, evaluationId1, evaluationId2, onE
114231
114237
  ];
114232
114238
  const evaluation1Label = evaluation1 ? `${evaluation1.name || "Unnamed Evaluation"} (${evaluation1.agent_name})` : "Select evaluation 1";
114233
114239
  const evaluation2Label = evaluation2 ? `${evaluation2.name || "Unnamed Evaluation"} (${evaluation2.agent_name})` : "Select evaluation 2";
114234
- return /*#__PURE__*/ React.createElement(React.Fragment, null, backHref && /*#__PURE__*/ React.createElement("a", {
114240
+ return /*#__PURE__*/ React.createElement(ConfigProvider, {
114241
+ theme: {
114242
+ token: {
114243
+ fontFamily: "inherit"
114244
+ }
114245
+ }
114246
+ }, backHref && /*#__PURE__*/ React.createElement("a", {
114235
114247
  href: backHref,
114236
114248
  style: {
114237
114249
  display: "inline-flex",
@@ -114426,7 +114438,13 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114426
114438
  staticMethods.error("Failed to copy share link");
114427
114439
  }
114428
114440
  };
114429
- return /*#__PURE__*/ React.createElement(Drawer$2, {
114441
+ return /*#__PURE__*/ React.createElement(ConfigProvider, {
114442
+ theme: {
114443
+ token: {
114444
+ fontFamily: "inherit"
114445
+ }
114446
+ }
114447
+ }, /*#__PURE__*/ React.createElement(Drawer$2, {
114430
114448
  title: "Compare Evaluations",
114431
114449
  placement: "right",
114432
114450
  size: "60%",
@@ -114468,7 +114486,7 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114468
114486
  onEvaluationId1Change: onEvaluationId1Change,
114469
114487
  onEvaluationId2Change: onEvaluationId2Change,
114470
114488
  showEvaluationComparisonDropdowns: false
114471
- }));
114489
+ })));
114472
114490
  };
114473
114491
 
114474
114492
  const defaultGetEvaluatorResultsHref = (evaluationId, evaluatorId)=>`#/evaluations/${evaluationId}/results/${evaluatorId}`;
@@ -114494,7 +114512,13 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114494
114512
  const normalizedEvaluation = React.useMemo(()=>evaluation && isEvaluationDto(evaluation) ? transformEvaluation(evaluation) : evaluation, [
114495
114513
  evaluation
114496
114514
  ]);
114497
- return /*#__PURE__*/ React.createElement(Drawer$2, {
114515
+ return /*#__PURE__*/ React.createElement(ConfigProvider, {
114516
+ theme: {
114517
+ token: {
114518
+ fontFamily: "inherit"
114519
+ }
114520
+ }
114521
+ }, /*#__PURE__*/ React.createElement(Drawer$2, {
114498
114522
  title: normalizedEvaluation ? /*#__PURE__*/ React.createElement("div", {
114499
114523
  style: {
114500
114524
  display: "flex",
@@ -114699,10 +114723,55 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114699
114723
  getPopupContainer: ()=>document.body
114700
114724
  }, tag) : tag;
114701
114725
  })));
114702
- })))));
114726
+ }))))));
114703
114727
  };
114704
114728
 
114705
- const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefresh, onRowClick, onCompare, compareIdsFromUrl, onCompareUrlChange, showFilters = true, showCompare = true, emptyMessage, title, pagination: serverPagination, onFiltersChange, onFetchEvaluationsByIds })=>{
114729
+ const GITHUB_URL = "https://github.com/RailtownAI/railtracks/";
114730
+ const EvaluationsErrorCard = ({ error, onRetry })=>/*#__PURE__*/ React.createElement(ConfigProvider, {
114731
+ theme: {
114732
+ token: {
114733
+ fontFamily: "inherit"
114734
+ }
114735
+ }
114736
+ }, /*#__PURE__*/ React.createElement(Alert, {
114737
+ type: "error",
114738
+ title: "Error loading evaluations",
114739
+ description: /*#__PURE__*/ React.createElement("div", {
114740
+ style: {
114741
+ display: "flex",
114742
+ flexDirection: "column",
114743
+ gap: "8px"
114744
+ }
114745
+ }, /*#__PURE__*/ React.createElement("span", null, error), /*#__PURE__*/ React.createElement(Typography.Text, {
114746
+ type: "secondary",
114747
+ style: {
114748
+ fontSize: "13px"
114749
+ }
114750
+ }, "Need help?", " ", /*#__PURE__*/ React.createElement(Typography.Link, {
114751
+ href: GITHUB_URL,
114752
+ target: "_blank",
114753
+ rel: "noopener noreferrer"
114754
+ }, "GitHub"), " · ", /*#__PURE__*/ React.createElement(Typography.Link, {
114755
+ href: `${GITHUB_URL}discussions`,
114756
+ target: "_blank",
114757
+ rel: "noopener noreferrer"
114758
+ }, "Discussions"), " · ", /*#__PURE__*/ React.createElement(Typography.Link, {
114759
+ href: `${GITHUB_URL}issues`,
114760
+ target: "_blank",
114761
+ rel: "noopener noreferrer"
114762
+ }, "Report issue"))),
114763
+ action: onRetry ? /*#__PURE__*/ React.createElement(Button$1, {
114764
+ size: "small",
114765
+ danger: true,
114766
+ onClick: onRetry,
114767
+ icon: /*#__PURE__*/ React.createElement(RefreshCw, {
114768
+ size: 14
114769
+ })
114770
+ }, "Retry") : undefined,
114771
+ showIcon: true
114772
+ }));
114773
+
114774
+ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefresh, onRowClick, onCompare, compareIdsFromUrl, onCompareUrlChange, showFilters = true, showCompare = true, emptyMessage, title, pagination: serverPagination, onFiltersChange, onFetchEvaluationsByIds, errorRender })=>{
114706
114775
  const { theme } = useTheme$1();
114707
114776
  const [selectedAgents, setSelectedAgents] = React.useState([]);
114708
114777
  const [selectedRowKeys, setSelectedRowKeys] = React.useState([]);
@@ -114864,21 +114933,16 @@ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefres
114864
114933
  setSelectedEvaluation(null);
114865
114934
  };
114866
114935
  if (error) {
114867
- return /*#__PURE__*/ React.createElement("div", {
114868
- style: {
114869
- padding: "24px",
114870
- textAlign: "center"
114871
- }
114872
- }, /*#__PURE__*/ React.createElement("p", {
114873
- style: {
114874
- color: theme.colors.destructive
114875
- }
114876
- }, "Error loading evaluations: ", error), onRefresh && /*#__PURE__*/ React.createElement(Button$1, {
114877
- onClick: onRefresh,
114878
- icon: /*#__PURE__*/ React.createElement(RefreshCw, {
114879
- size: 14
114880
- })
114881
- }, "Retry"));
114936
+ if (errorRender) {
114937
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, errorRender({
114938
+ error,
114939
+ onRetry: onRefresh ?? undefined
114940
+ }));
114941
+ }
114942
+ return /*#__PURE__*/ React.createElement(EvaluationsErrorCard, {
114943
+ error: error,
114944
+ onRetry: onRefresh ?? undefined
114945
+ });
114882
114946
  }
114883
114947
  const columns = [
114884
114948
  {
@@ -114957,7 +115021,13 @@ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefres
114957
115021
  target: "_blank",
114958
115022
  rel: "noopener noreferrer"
114959
115023
  }, "view our documentation on how to create evaluations"), "."));
114960
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("div", {
115024
+ return /*#__PURE__*/ React.createElement(ConfigProvider, {
115025
+ theme: {
115026
+ token: {
115027
+ fontFamily: "inherit"
115028
+ }
115029
+ }
115030
+ }, /*#__PURE__*/ React.createElement("div", {
114961
115031
  style: {
114962
115032
  display: "flex",
114963
115033
  justifyContent: "space-between",
@@ -118265,7 +118335,13 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref })=>{
118265
118335
  const { completed_at } = evaluation;
118266
118336
  const agentName = deriveAgentName(evaluation);
118267
118337
  const runsCount = deriveRunsCount(evaluation);
118268
- return /*#__PURE__*/ React.createElement("div", {
118338
+ return /*#__PURE__*/ React.createElement(ConfigProvider, {
118339
+ theme: {
118340
+ token: {
118341
+ fontFamily: "inherit"
118342
+ }
118343
+ }
118344
+ }, /*#__PURE__*/ React.createElement("div", {
118269
118345
  style: {
118270
118346
  width: "100%",
118271
118347
  minWidth: 0
@@ -118383,7 +118459,7 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref })=>{
118383
118459
  aggregateResults: aggregateResults,
118384
118460
  agents: evaluation.agents,
118385
118461
  evaluatorName: evaluatorName
118386
- })));
118462
+ }))));
118387
118463
  };
118388
118464
 
118389
118465
  function __insertCSS(code) {
@@ -120387,6 +120463,7 @@ exports.EvaluationDetailsDrawer = EvaluationDetailsDrawer;
120387
120463
  exports.EvaluationsCompareDrawer = EvaluationsCompareDrawer;
120388
120464
  exports.EvaluationsComparePage = EvaluationsComparePage;
120389
120465
  exports.EvaluationsCompareView = EvaluationsCompareView;
120466
+ exports.EvaluationsErrorCard = EvaluationsErrorCard;
120390
120467
  exports.EvaluationsTable = EvaluationsTable;
120391
120468
  exports.EvaluatorResult = EvaluatorResult;
120392
120469
  exports.GlobalStyles = GlobalStyles;
package/dist/esm/index.js CHANGED
@@ -113671,7 +113671,13 @@ const SessionDetails = ({ session, open, onClose })=>{
113671
113671
  // Get the active run for full screen display (use selected run or first run)
113672
113672
  const activeRun = session?.runs.find((r)=>r.run_id === selectedNodeInfo?.runId) || session?.runs?.[0];
113673
113673
  const extraButtonsIconSize = 24;
113674
- return /*#__PURE__*/ React__default.createElement(Drawer$2, {
113674
+ return /*#__PURE__*/ React__default.createElement(ConfigProvider, {
113675
+ theme: {
113676
+ token: {
113677
+ fontFamily: "inherit"
113678
+ }
113679
+ }
113680
+ }, /*#__PURE__*/ React__default.createElement(Drawer$2, {
113675
113681
  title: /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, session?.name || "Unnamed Session", " -", " ", session?.start_time ? moment(session.start_time * 1000).fromNow() : "N/A"),
113676
113682
  placement: "right",
113677
113683
  size: isFullScreen ? "100%" : "70%",
@@ -113803,7 +113809,7 @@ const SessionDetails = ({ session, open, onClose })=>{
113803
113809
  selectedNode: selectedNodeInfo,
113804
113810
  session: session,
113805
113811
  isDarkMode: isDarkMode
113806
- }))));
113812
+ })))));
113807
113813
  };
113808
113814
 
113809
113815
  /**
@@ -114211,7 +114217,13 @@ const EvaluationsCompareView = ({ evaluations, evaluationId1, evaluationId2, onE
114211
114217
  ];
114212
114218
  const evaluation1Label = evaluation1 ? `${evaluation1.name || "Unnamed Evaluation"} (${evaluation1.agent_name})` : "Select evaluation 1";
114213
114219
  const evaluation2Label = evaluation2 ? `${evaluation2.name || "Unnamed Evaluation"} (${evaluation2.agent_name})` : "Select evaluation 2";
114214
- return /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, backHref && /*#__PURE__*/ React__default.createElement("a", {
114220
+ return /*#__PURE__*/ React__default.createElement(ConfigProvider, {
114221
+ theme: {
114222
+ token: {
114223
+ fontFamily: "inherit"
114224
+ }
114225
+ }
114226
+ }, backHref && /*#__PURE__*/ React__default.createElement("a", {
114215
114227
  href: backHref,
114216
114228
  style: {
114217
114229
  display: "inline-flex",
@@ -114406,7 +114418,13 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114406
114418
  staticMethods.error("Failed to copy share link");
114407
114419
  }
114408
114420
  };
114409
- return /*#__PURE__*/ React__default.createElement(Drawer$2, {
114421
+ return /*#__PURE__*/ React__default.createElement(ConfigProvider, {
114422
+ theme: {
114423
+ token: {
114424
+ fontFamily: "inherit"
114425
+ }
114426
+ }
114427
+ }, /*#__PURE__*/ React__default.createElement(Drawer$2, {
114410
114428
  title: "Compare Evaluations",
114411
114429
  placement: "right",
114412
114430
  size: "60%",
@@ -114448,7 +114466,7 @@ const EvaluationsCompareDrawer = ({ open, onClose, evaluationId1, evaluationId2,
114448
114466
  onEvaluationId1Change: onEvaluationId1Change,
114449
114467
  onEvaluationId2Change: onEvaluationId2Change,
114450
114468
  showEvaluationComparisonDropdowns: false
114451
- }));
114469
+ })));
114452
114470
  };
114453
114471
 
114454
114472
  const defaultGetEvaluatorResultsHref = (evaluationId, evaluatorId)=>`#/evaluations/${evaluationId}/results/${evaluatorId}`;
@@ -114474,7 +114492,13 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114474
114492
  const normalizedEvaluation = React__default.useMemo(()=>evaluation && isEvaluationDto(evaluation) ? transformEvaluation(evaluation) : evaluation, [
114475
114493
  evaluation
114476
114494
  ]);
114477
- return /*#__PURE__*/ React__default.createElement(Drawer$2, {
114495
+ return /*#__PURE__*/ React__default.createElement(ConfigProvider, {
114496
+ theme: {
114497
+ token: {
114498
+ fontFamily: "inherit"
114499
+ }
114500
+ }
114501
+ }, /*#__PURE__*/ React__default.createElement(Drawer$2, {
114478
114502
  title: normalizedEvaluation ? /*#__PURE__*/ React__default.createElement("div", {
114479
114503
  style: {
114480
114504
  display: "flex",
@@ -114679,10 +114703,55 @@ const EvaluationDetailsDrawer = ({ evaluation, open, onClose, getEvaluatorResult
114679
114703
  getPopupContainer: ()=>document.body
114680
114704
  }, tag) : tag;
114681
114705
  })));
114682
- })))));
114706
+ }))))));
114683
114707
  };
114684
114708
 
114685
- const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefresh, onRowClick, onCompare, compareIdsFromUrl, onCompareUrlChange, showFilters = true, showCompare = true, emptyMessage, title, pagination: serverPagination, onFiltersChange, onFetchEvaluationsByIds })=>{
114709
+ const GITHUB_URL = "https://github.com/RailtownAI/railtracks/";
114710
+ const EvaluationsErrorCard = ({ error, onRetry })=>/*#__PURE__*/ React__default.createElement(ConfigProvider, {
114711
+ theme: {
114712
+ token: {
114713
+ fontFamily: "inherit"
114714
+ }
114715
+ }
114716
+ }, /*#__PURE__*/ React__default.createElement(Alert, {
114717
+ type: "error",
114718
+ title: "Error loading evaluations",
114719
+ description: /*#__PURE__*/ React__default.createElement("div", {
114720
+ style: {
114721
+ display: "flex",
114722
+ flexDirection: "column",
114723
+ gap: "8px"
114724
+ }
114725
+ }, /*#__PURE__*/ React__default.createElement("span", null, error), /*#__PURE__*/ React__default.createElement(Typography.Text, {
114726
+ type: "secondary",
114727
+ style: {
114728
+ fontSize: "13px"
114729
+ }
114730
+ }, "Need help?", " ", /*#__PURE__*/ React__default.createElement(Typography.Link, {
114731
+ href: GITHUB_URL,
114732
+ target: "_blank",
114733
+ rel: "noopener noreferrer"
114734
+ }, "GitHub"), " · ", /*#__PURE__*/ React__default.createElement(Typography.Link, {
114735
+ href: `${GITHUB_URL}discussions`,
114736
+ target: "_blank",
114737
+ rel: "noopener noreferrer"
114738
+ }, "Discussions"), " · ", /*#__PURE__*/ React__default.createElement(Typography.Link, {
114739
+ href: `${GITHUB_URL}issues`,
114740
+ target: "_blank",
114741
+ rel: "noopener noreferrer"
114742
+ }, "Report issue"))),
114743
+ action: onRetry ? /*#__PURE__*/ React__default.createElement(Button$1, {
114744
+ size: "small",
114745
+ danger: true,
114746
+ onClick: onRetry,
114747
+ icon: /*#__PURE__*/ React__default.createElement(RefreshCw, {
114748
+ size: 14
114749
+ })
114750
+ }, "Retry") : undefined,
114751
+ showIcon: true
114752
+ }));
114753
+
114754
+ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefresh, onRowClick, onCompare, compareIdsFromUrl, onCompareUrlChange, showFilters = true, showCompare = true, emptyMessage, title, pagination: serverPagination, onFiltersChange, onFetchEvaluationsByIds, errorRender })=>{
114686
114755
  const { theme } = useTheme$1();
114687
114756
  const [selectedAgents, setSelectedAgents] = useState([]);
114688
114757
  const [selectedRowKeys, setSelectedRowKeys] = useState([]);
@@ -114844,21 +114913,16 @@ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefres
114844
114913
  setSelectedEvaluation(null);
114845
114914
  };
114846
114915
  if (error) {
114847
- return /*#__PURE__*/ React__default.createElement("div", {
114848
- style: {
114849
- padding: "24px",
114850
- textAlign: "center"
114851
- }
114852
- }, /*#__PURE__*/ React__default.createElement("p", {
114853
- style: {
114854
- color: theme.colors.destructive
114855
- }
114856
- }, "Error loading evaluations: ", error), onRefresh && /*#__PURE__*/ React__default.createElement(Button$1, {
114857
- onClick: onRefresh,
114858
- icon: /*#__PURE__*/ React__default.createElement(RefreshCw, {
114859
- size: 14
114860
- })
114861
- }, "Retry"));
114916
+ if (errorRender) {
114917
+ return /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, errorRender({
114918
+ error,
114919
+ onRetry: onRefresh ?? undefined
114920
+ }));
114921
+ }
114922
+ return /*#__PURE__*/ React__default.createElement(EvaluationsErrorCard, {
114923
+ error: error,
114924
+ onRetry: onRefresh ?? undefined
114925
+ });
114862
114926
  }
114863
114927
  const columns = [
114864
114928
  {
@@ -114937,7 +115001,13 @@ const EvaluationsTable = ({ evaluations, loading = false, error = null, onRefres
114937
115001
  target: "_blank",
114938
115002
  rel: "noopener noreferrer"
114939
115003
  }, "view our documentation on how to create evaluations"), "."));
114940
- return /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement("div", {
115004
+ return /*#__PURE__*/ React__default.createElement(ConfigProvider, {
115005
+ theme: {
115006
+ token: {
115007
+ fontFamily: "inherit"
115008
+ }
115009
+ }
115010
+ }, /*#__PURE__*/ React__default.createElement("div", {
114941
115011
  style: {
114942
115012
  display: "flex",
114943
115013
  justifyContent: "space-between",
@@ -118245,7 +118315,13 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref })=>{
118245
118315
  const { completed_at } = evaluation;
118246
118316
  const agentName = deriveAgentName(evaluation);
118247
118317
  const runsCount = deriveRunsCount(evaluation);
118248
- return /*#__PURE__*/ React__default.createElement("div", {
118318
+ return /*#__PURE__*/ React__default.createElement(ConfigProvider, {
118319
+ theme: {
118320
+ token: {
118321
+ fontFamily: "inherit"
118322
+ }
118323
+ }
118324
+ }, /*#__PURE__*/ React__default.createElement("div", {
118249
118325
  style: {
118250
118326
  width: "100%",
118251
118327
  minWidth: 0
@@ -118363,7 +118439,7 @@ const EvaluatorResult = ({ evaluation, evaluatorId, backHref })=>{
118363
118439
  aggregateResults: aggregateResults,
118364
118440
  agents: evaluation.agents,
118365
118441
  evaluatorName: evaluatorName
118366
- })));
118442
+ }))));
118367
118443
  };
118368
118444
 
118369
118445
  function __insertCSS(code) {
@@ -120357,4 +120433,4 @@ const GlobalStyles = ()=>{
120357
120433
  return getSafeColor(props.theme, path, fallback);
120358
120434
  };
120359
120435
 
120360
- export { AgenticFlowVisualizer, AnthropicIcon, AppleIcon, Badge, Drawer, Edge, EvaluationDetailsDrawer, EvaluationsCompareDrawer, EvaluationsComparePage, EvaluationsCompareView, EvaluationsTable, EvaluatorResult, GlobalStyles, GoogleIcon, JsonTreeViewer, Node$1 as Node, OllamaIcon, OpenAIIcon, SafeThemeProvider, SessionDetails, Sheet, ThemeProvider, Timeline, Visualizer, calculateAutoLayout, cn, conditionalStyle, createSafeTheme, darkTheme, defaultTheme$1 as defaultTheme, detectContentType, evaluationsHaveSameMetrics, formatCurrency, formatDateFriendly, formatDateRelative, formatDateShort, formatDuration, formatLatency, formatMetricValue$1 as formatMetricValue, formatNumberWithCommas, formatToolCalls, getColor, getSafeColor, getSafeSpacing, getSafeThemeValue, getSpacing, getStatusColor, isEvaluationDto, lightTheme, safeStyled, safeThemeColor, safeThemeSpacing, safeThemeValue, toTitleCase, transformEvaluation, truncateText, useComponentTheme, useSafeTheme, useTheme$1 as useTheme, useThemeValue };
120436
+ export { AgenticFlowVisualizer, AnthropicIcon, AppleIcon, Badge, Drawer, Edge, EvaluationDetailsDrawer, EvaluationsCompareDrawer, EvaluationsComparePage, EvaluationsCompareView, EvaluationsErrorCard, EvaluationsTable, EvaluatorResult, GlobalStyles, GoogleIcon, JsonTreeViewer, Node$1 as Node, OllamaIcon, OpenAIIcon, SafeThemeProvider, SessionDetails, Sheet, ThemeProvider, Timeline, Visualizer, calculateAutoLayout, cn, conditionalStyle, createSafeTheme, darkTheme, defaultTheme$1 as defaultTheme, detectContentType, evaluationsHaveSameMetrics, formatCurrency, formatDateFriendly, formatDateRelative, formatDateShort, formatDuration, formatLatency, formatMetricValue$1 as formatMetricValue, formatNumberWithCommas, formatToolCalls, getColor, getSafeColor, getSafeSpacing, getSafeThemeValue, getSpacing, getStatusColor, isEvaluationDto, lightTheme, safeStyled, safeThemeColor, safeThemeSpacing, safeThemeValue, toTitleCase, transformEvaluation, truncateText, useComponentTheme, useSafeTheme, useTheme$1 as useTheme, useThemeValue };
@@ -44,5 +44,10 @@ export interface EvaluationsTableProps {
44
44
  onFiltersChange?: (agents: string[], metricFilter: string | null) => void;
45
45
  /** When server pagination, fetch evaluations by ID for compare drawer (e.g. from URL). */
46
46
  onFetchEvaluationsByIds?: (ids: string[]) => Promise<(Evaluation | EvaluationDto)[]>;
47
+ /** Custom error UI. When provided, overrides the default EvaluationsErrorCard. */
48
+ errorRender?: (props: {
49
+ error: string;
50
+ onRetry?: () => void;
51
+ }) => React.ReactNode;
47
52
  }
48
53
  export declare const EvaluationsTable: React.FC<EvaluationsTableProps>;
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ /** Default error card shown when evaluations fail to load and no errorRender is provided. */
3
+ export interface EvaluationsErrorCardProps {
4
+ error: string;
5
+ onRetry?: () => void;
6
+ }
7
+ export declare const EvaluationsErrorCard: React.FC<EvaluationsErrorCardProps>;
@@ -3,6 +3,8 @@ export { default as Visualizer } from "./components/Visualizer";
3
3
  export { SessionDetails } from "./agenthub/pages/session-details";
4
4
  export { EvaluationsTable } from "./agenthub/components/EvaluationsTable";
5
5
  export type { EvaluationsTableProps, EvaluationsTablePagination } from "./agenthub/components/EvaluationsTable";
6
+ export { EvaluationsErrorCard } from "./agenthub/components/EvaluationsTableErrorCard";
7
+ export type { EvaluationsErrorCardProps } from "./agenthub/components/EvaluationsTableErrorCard";
6
8
  export { EvaluationsCompareView } from "./agenthub/components/EvaluationsCompareView";
7
9
  export type { EvaluationsCompareViewProps } from "./agenthub/components/EvaluationsCompareView";
8
10
  export { EvaluationsCompareDrawer } from "./agenthub/pages/evaluations-compare-drawer";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@railtownai/railtracks-visualizer",
3
- "version": "0.0.56",
3
+ "version": "0.0.58",
4
4
  "license": "MIT",
5
5
  "author": "Railtown AI",
6
6
  "description": "A visualizer for Railtracks agentic flows",