@motiadev/plugin-observability 0.17.2-beta.183 → 0.17.2-beta.184-469723

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/index.js CHANGED
@@ -12,24 +12,83 @@ import "react18-json-view/src/style.css";
12
12
  import { useVirtualizer } from "@tanstack/react-virtual";
13
13
  import { formatDistanceToNow } from "date-fns";
14
14
 
15
+ //#region src/hooks/use-derive-trace-group.ts
16
+ const deriveTraceGroup = (meta, traces) => {
17
+ const completedSteps = traces.filter((t) => t.status === "completed").length;
18
+ const failedCount = traces.filter((t) => t.status === "failed").length;
19
+ const runningCount = traces.filter((t) => t.status === "running").length;
20
+ const status = failedCount > 0 ? "failed" : runningCount > 0 ? "running" : "completed";
21
+ const endTimes = traces.filter((t) => t.endTime).map((t) => t.endTime);
22
+ const endTime = status === "completed" && endTimes.length > 0 ? Math.max(...endTimes) : void 0;
23
+ const lastActivity = Math.max(meta.startTime, ...traces.map((t) => t.endTime || t.startTime), ...traces.flatMap((t) => t.events.map((e) => e.timestamp)));
24
+ return {
25
+ ...meta,
26
+ status,
27
+ endTime,
28
+ lastActivity,
29
+ metadata: {
30
+ completedSteps,
31
+ activeSteps: runningCount,
32
+ totalSteps: traces.length
33
+ }
34
+ };
35
+ };
36
+
37
+ //#endregion
15
38
  //#region src/stores/use-observability-store.ts
16
- const useObservabilityStore = create()((set) => ({
17
- traceGroups: [],
39
+ const useObservabilityStore = create()((set, get) => ({
40
+ traceGroupMetas: [],
18
41
  traces: [],
42
+ tracesByGroupId: {},
19
43
  selectedTraceGroupId: "",
20
44
  selectedTraceId: void 0,
21
45
  search: "",
22
- setTraceGroups: (groups) => {
23
- set({ traceGroups: Array.isArray(groups) ? groups : [] });
46
+ setTraceGroupMetas: (metas) => {
47
+ set({ traceGroupMetas: Array.isArray(metas) ? metas : [] });
24
48
  },
25
49
  setTraces: (traces) => {
26
50
  set({ traces: Array.isArray(traces) ? traces : [] });
27
51
  },
28
- selectTraceGroupId: (groupId$1) => set({ selectedTraceGroupId: groupId$1 }),
52
+ setTracesForGroup: (groupId$1, traces) => {
53
+ const state = get();
54
+ const safeTraces = Array.isArray(traces) ? [...traces] : [];
55
+ set({
56
+ tracesByGroupId: {
57
+ ...state.tracesByGroupId,
58
+ [groupId$1]: safeTraces
59
+ },
60
+ traces: state.selectedTraceGroupId === groupId$1 ? safeTraces : state.traces
61
+ });
62
+ },
63
+ selectTraceGroupId: (groupId$1) => {
64
+ const state = get();
65
+ const traces = groupId$1 ? state.tracesByGroupId[groupId$1] || [] : [];
66
+ set({
67
+ selectedTraceGroupId: groupId$1 || "",
68
+ traces
69
+ });
70
+ },
29
71
  selectTraceId: (traceId) => set({ selectedTraceId: traceId }),
30
72
  setSearch: (search) => set({ search }),
31
73
  clearTraces: () => {
32
74
  fetch("/__motia/trace/clear", { method: "POST" });
75
+ },
76
+ getTraceGroups: () => {
77
+ const state = get();
78
+ return state.traceGroupMetas.map((meta) => {
79
+ const traces = state.tracesByGroupId[meta.id] || [];
80
+ if (traces.length === 0) return {
81
+ ...meta,
82
+ status: "running",
83
+ lastActivity: meta.startTime,
84
+ metadata: {
85
+ completedSteps: 0,
86
+ activeSteps: 0,
87
+ totalSteps: 0
88
+ }
89
+ };
90
+ return deriveTraceGroup(meta, traces);
91
+ });
33
92
  }
34
93
  }));
35
94
 
@@ -43,7 +102,7 @@ const SearchBar = memo(() => {
43
102
  }
44
103
  const search = useObservabilityStore(_temp$7);
45
104
  const setSearch = useObservabilityStore(_temp2$4);
46
- const clearTraces = useObservabilityStore(_temp3$1);
105
+ const clearTraces = useObservabilityStore(_temp3$3);
47
106
  let t0;
48
107
  if ($[1] !== setSearch) {
49
108
  t0 = (e) => setSearch(e.target.value);
@@ -146,7 +205,7 @@ function _temp$7(state) {
146
205
  function _temp2$4(state_0) {
147
206
  return state_0.setSearch;
148
207
  }
149
- function _temp3$1(state_1) {
208
+ function _temp3$3(state_1) {
150
209
  return state_1.clearTraces;
151
210
  }
152
211
 
@@ -224,25 +283,53 @@ const useGetEndTime = (group) => {
224
283
  //#region src/hooks/use-traces-stream.ts
225
284
  const streamName$1 = "motia-trace";
226
285
  const useTracesStream = () => {
227
- const $ = c(4);
228
- if ($[0] !== "bcd1cb2c3d5b881ae86f74bb18d93ab6669b2358da38d97af969437f8354452c") {
229
- for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
230
- $[0] = "bcd1cb2c3d5b881ae86f74bb18d93ab6669b2358da38d97af969437f8354452c";
286
+ const $ = c(10);
287
+ if ($[0] !== "812f0c24ae3cbbbcb9380336cb1996e09032dcef72ae69cf410c08f0825131a9") {
288
+ for (let $i = 0; $i < 10; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
289
+ $[0] = "812f0c24ae3cbbbcb9380336cb1996e09032dcef72ae69cf410c08f0825131a9";
231
290
  }
232
291
  const groupId$1 = useObservabilityStore(_temp$5);
233
292
  const setData = useObservabilityStore(_temp2$3);
293
+ const setTracesForGroup = useObservabilityStore(_temp3$2);
294
+ const groupIdRef = useRef(groupId$1);
234
295
  let t0;
235
- if ($[1] !== groupId$1 || $[2] !== setData) {
236
- t0 = {
296
+ let t1;
297
+ if ($[1] !== groupId$1) {
298
+ t0 = () => {
299
+ groupIdRef.current = groupId$1;
300
+ };
301
+ t1 = [groupId$1];
302
+ $[1] = groupId$1;
303
+ $[2] = t0;
304
+ $[3] = t1;
305
+ } else {
306
+ t0 = $[2];
307
+ t1 = $[3];
308
+ }
309
+ useEffect(t0, t1);
310
+ let t2;
311
+ if ($[4] !== setData || $[5] !== setTracesForGroup) {
312
+ t2 = (traces) => {
313
+ const currentGroupId = groupIdRef.current;
314
+ setData(traces);
315
+ if (currentGroupId) setTracesForGroup(currentGroupId, traces);
316
+ };
317
+ $[4] = setData;
318
+ $[5] = setTracesForGroup;
319
+ $[6] = t2;
320
+ } else t2 = $[6];
321
+ let t3;
322
+ if ($[7] !== groupId$1 || $[8] !== t2) {
323
+ t3 = {
237
324
  streamName: streamName$1,
238
325
  groupId: groupId$1,
239
- setData
326
+ setData: t2
240
327
  };
241
- $[1] = groupId$1;
242
- $[2] = setData;
243
- $[3] = t0;
244
- } else t0 = $[3];
245
- useStreamGroup(t0);
328
+ $[7] = groupId$1;
329
+ $[8] = t2;
330
+ $[9] = t3;
331
+ } else t3 = $[9];
332
+ useStreamGroup(t3);
246
333
  };
247
334
  function _temp$5(state) {
248
335
  return state.selectedTraceGroupId;
@@ -250,6 +337,9 @@ function _temp$5(state) {
250
337
  function _temp2$3(state_0) {
251
338
  return state_0.setTraces;
252
339
  }
340
+ function _temp3$2(state_1) {
341
+ return state_1.setTracesForGroup;
342
+ }
253
343
 
254
344
  //#endregion
255
345
  //#region src/lib/utils.ts
@@ -1382,9 +1472,9 @@ TraceItemDetail.displayName = "TraceItemDetail";
1382
1472
  //#region src/components/trace-timeline.tsx
1383
1473
  const TraceTimeline = memo(() => {
1384
1474
  const $ = c(3);
1385
- if ($[0] !== "8148f10395e8d4a4f6bf69c46ca41780936fccb5b43d5883c233f5bc10919674") {
1475
+ if ($[0] !== "0861cb6c9c7d40fb40c0b128d67452794264c9d58bd2fd2513753f1aaac123df") {
1386
1476
  for (let $i = 0; $i < 3; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1387
- $[0] = "8148f10395e8d4a4f6bf69c46ca41780936fccb5b43d5883c233f5bc10919674";
1477
+ $[0] = "0861cb6c9c7d40fb40c0b128d67452794264c9d58bd2fd2513753f1aaac123df";
1388
1478
  }
1389
1479
  const groupId$1 = useObservabilityStore(_temp$3);
1390
1480
  if (!groupId$1) return null;
@@ -1398,84 +1488,105 @@ const TraceTimeline = memo(() => {
1398
1488
  });
1399
1489
  TraceTimeline.displayName = "TraceTimeline";
1400
1490
  const TraceTimelineComponent = memo((t0) => {
1401
- const $ = c(83);
1402
- if ($[0] !== "8148f10395e8d4a4f6bf69c46ca41780936fccb5b43d5883c233f5bc10919674") {
1403
- for (let $i = 0; $i < 83; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1404
- $[0] = "8148f10395e8d4a4f6bf69c46ca41780936fccb5b43d5883c233f5bc10919674";
1491
+ const $ = c(84);
1492
+ if ($[0] !== "0861cb6c9c7d40fb40c0b128d67452794264c9d58bd2fd2513753f1aaac123df") {
1493
+ for (let $i = 0; $i < 84; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1494
+ $[0] = "0861cb6c9c7d40fb40c0b128d67452794264c9d58bd2fd2513753f1aaac123df";
1405
1495
  }
1406
1496
  const { groupId: groupId$1 } = t0;
1407
1497
  useTracesStream();
1408
- const traceGroups = useObservabilityStore(_temp2$1);
1409
- const traces = useObservabilityStore(_temp3);
1498
+ const traceGroupMetas = useObservabilityStore(_temp2$1);
1499
+ const traces = useObservabilityStore(_temp3$1);
1410
1500
  let t1;
1411
- if ($[1] !== groupId$1 || $[2] !== traceGroups) {
1412
- let t2$1;
1413
- if ($[4] !== groupId$1) {
1414
- t2$1 = (traceGroup) => traceGroup.id === groupId$1;
1415
- $[4] = groupId$1;
1416
- $[5] = t2$1;
1417
- } else t2$1 = $[5];
1418
- t1 = traceGroups.find(t2$1);
1501
+ if ($[1] !== groupId$1 || $[2] !== traceGroupMetas || $[3] !== traces) {
1502
+ bb0: {
1503
+ let t2$1;
1504
+ if ($[5] !== groupId$1) {
1505
+ t2$1 = (m) => m.id === groupId$1;
1506
+ $[5] = groupId$1;
1507
+ $[6] = t2$1;
1508
+ } else t2$1 = $[6];
1509
+ const meta = traceGroupMetas.find(t2$1);
1510
+ if (!meta) {
1511
+ t1 = null;
1512
+ break bb0;
1513
+ }
1514
+ if (traces.length === 0) {
1515
+ t1 = {
1516
+ ...meta,
1517
+ status: "running",
1518
+ lastActivity: meta.startTime,
1519
+ metadata: {
1520
+ completedSteps: 0,
1521
+ activeSteps: 0,
1522
+ totalSteps: 0
1523
+ }
1524
+ };
1525
+ break bb0;
1526
+ }
1527
+ t1 = deriveTraceGroup(meta, traces);
1528
+ }
1419
1529
  $[1] = groupId$1;
1420
- $[2] = traceGroups;
1421
- $[3] = t1;
1422
- } else t1 = $[3];
1530
+ $[2] = traceGroupMetas;
1531
+ $[3] = traces;
1532
+ $[4] = t1;
1533
+ } else t1 = $[4];
1423
1534
  const group = t1;
1424
1535
  const endTime = useGetEndTime(group);
1425
1536
  const [zoom, setZoom] = useState(100);
1426
1537
  const selectedTraceId = useObservabilityStore(_temp4);
1427
1538
  const selectTraceId = useObservabilityStore(_temp5);
1428
1539
  let t2;
1429
- if ($[6] !== selectedTraceId || $[7] !== traces) {
1540
+ if ($[7] !== selectedTraceId || $[8] !== traces) {
1430
1541
  let t3$1;
1431
- if ($[9] !== selectedTraceId) {
1542
+ if ($[10] !== selectedTraceId) {
1432
1543
  t3$1 = (trace) => trace.id === selectedTraceId;
1433
- $[9] = selectedTraceId;
1434
- $[10] = t3$1;
1435
- } else t3$1 = $[10];
1544
+ $[10] = selectedTraceId;
1545
+ $[11] = t3$1;
1546
+ } else t3$1 = $[11];
1436
1547
  t2 = traces.find(t3$1);
1437
- $[6] = selectedTraceId;
1438
- $[7] = traces;
1439
- $[8] = t2;
1440
- } else t2 = $[8];
1548
+ $[7] = selectedTraceId;
1549
+ $[8] = traces;
1550
+ $[9] = t2;
1551
+ } else t2 = $[9];
1441
1552
  const selectedTrace = t2;
1442
1553
  let t3;
1443
- if ($[11] !== zoom) {
1554
+ if ($[12] !== zoom) {
1444
1555
  t3 = () => zoom > 100 && setZoom(_temp6);
1445
- $[11] = zoom;
1446
- $[12] = t3;
1447
- } else t3 = $[12];
1556
+ $[12] = zoom;
1557
+ $[13] = t3;
1558
+ } else t3 = $[13];
1448
1559
  const zoomMinus = t3;
1449
1560
  let t4;
1450
- if ($[13] !== zoom) {
1561
+ if ($[14] !== zoom) {
1451
1562
  t4 = () => zoom < 200 && setZoom(_temp7);
1452
- $[13] = zoom;
1453
- $[14] = t4;
1454
- } else t4 = $[14];
1563
+ $[14] = zoom;
1564
+ $[15] = t4;
1565
+ } else t4 = $[15];
1455
1566
  const zoomPlus = t4;
1456
1567
  if (!group) return null;
1457
1568
  const t5 = `${zoom}%`;
1458
1569
  let t6;
1459
- if ($[15] !== t5) {
1570
+ if ($[16] !== t5) {
1460
1571
  t6 = { width: t5 };
1461
- $[15] = t5;
1462
- $[16] = t6;
1463
- } else t6 = $[16];
1572
+ $[16] = t5;
1573
+ $[17] = t6;
1574
+ } else t6 = $[17];
1464
1575
  const t7 = `${zoom}%`;
1465
1576
  let t8;
1466
- if ($[17] !== t7) {
1577
+ if ($[18] !== t7) {
1467
1578
  t8 = { width: t7 };
1468
- $[17] = t7;
1469
- $[18] = t8;
1470
- } else t8 = $[18];
1579
+ $[18] = t7;
1580
+ $[19] = t8;
1581
+ } else t8 = $[19];
1471
1582
  const t9 = zoom <= 100;
1472
1583
  let t10;
1473
- if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
1584
+ if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
1474
1585
  t10 = /* @__PURE__ */ jsx(Minus, { className: "w-4 h-4 cursor-pointer" });
1475
- $[19] = t10;
1476
- } else t10 = $[19];
1586
+ $[20] = t10;
1587
+ } else t10 = $[20];
1477
1588
  let t11;
1478
- if ($[20] !== t9 || $[21] !== zoomMinus) {
1589
+ if ($[21] !== t9 || $[22] !== zoomMinus) {
1479
1590
  t11 = /* @__PURE__ */ jsx(Button, {
1480
1591
  variant: "icon",
1481
1592
  size: "sm",
@@ -1484,27 +1595,27 @@ const TraceTimelineComponent = memo((t0) => {
1484
1595
  disabled: t9,
1485
1596
  children: t10
1486
1597
  });
1487
- $[20] = t9;
1488
- $[21] = zoomMinus;
1489
- $[22] = t11;
1490
- } else t11 = $[22];
1598
+ $[21] = t9;
1599
+ $[22] = zoomMinus;
1600
+ $[23] = t11;
1601
+ } else t11 = $[23];
1491
1602
  let t12;
1492
- if ($[23] !== zoom) {
1603
+ if ($[24] !== zoom) {
1493
1604
  t12 = /* @__PURE__ */ jsxs("span", {
1494
1605
  className: "min-w-12 text-center select-none text-sm font-bold text-muted-foreground",
1495
1606
  children: [zoom, "%"]
1496
1607
  });
1497
- $[23] = zoom;
1498
- $[24] = t12;
1499
- } else t12 = $[24];
1608
+ $[24] = zoom;
1609
+ $[25] = t12;
1610
+ } else t12 = $[25];
1500
1611
  const t13 = zoom >= 200;
1501
1612
  let t14;
1502
- if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
1613
+ if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
1503
1614
  t14 = /* @__PURE__ */ jsx(Plus, { className: "w-4 h-4 cursor-pointer" });
1504
- $[25] = t14;
1505
- } else t14 = $[25];
1615
+ $[26] = t14;
1616
+ } else t14 = $[26];
1506
1617
  let t15;
1507
- if ($[26] !== t13 || $[27] !== zoomPlus) {
1618
+ if ($[27] !== t13 || $[28] !== zoomPlus) {
1508
1619
  t15 = /* @__PURE__ */ jsx(Button, {
1509
1620
  variant: "icon",
1510
1621
  size: "sm",
@@ -1513,12 +1624,12 @@ const TraceTimelineComponent = memo((t0) => {
1513
1624
  disabled: t13,
1514
1625
  children: t14
1515
1626
  });
1516
- $[26] = t13;
1517
- $[27] = zoomPlus;
1518
- $[28] = t15;
1519
- } else t15 = $[28];
1627
+ $[27] = t13;
1628
+ $[28] = zoomPlus;
1629
+ $[29] = t15;
1630
+ } else t15 = $[29];
1520
1631
  let t16;
1521
- if ($[29] !== t11 || $[30] !== t12 || $[31] !== t15) {
1632
+ if ($[30] !== t11 || $[31] !== t12 || $[32] !== t15) {
1522
1633
  t16 = /* @__PURE__ */ jsxs("div", {
1523
1634
  className: "shrink-0 w-[200px] h-[37px] flex items-center justify-center gap-2 sticky left-0 top-0 z-10 bg-card backdrop-blur-xs backdrop-filter",
1524
1635
  children: [
@@ -1527,70 +1638,70 @@ const TraceTimelineComponent = memo((t0) => {
1527
1638
  t15
1528
1639
  ]
1529
1640
  });
1530
- $[29] = t11;
1531
- $[30] = t12;
1532
- $[31] = t15;
1533
- $[32] = t16;
1534
- } else t16 = $[32];
1641
+ $[30] = t11;
1642
+ $[31] = t12;
1643
+ $[32] = t15;
1644
+ $[33] = t16;
1645
+ } else t16 = $[33];
1535
1646
  let t17;
1536
- if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
1647
+ if ($[34] === Symbol.for("react.memo_cache_sentinel")) {
1537
1648
  t17 = /* @__PURE__ */ jsx("span", { children: "0ms" });
1538
- $[33] = t17;
1539
- } else t17 = $[33];
1649
+ $[34] = t17;
1650
+ } else t17 = $[34];
1540
1651
  const t18 = Math.floor((endTime - group.startTime) * .25);
1541
1652
  let t19;
1542
- if ($[34] !== t18) {
1653
+ if ($[35] !== t18) {
1543
1654
  t19 = formatDuration(t18);
1544
- $[34] = t18;
1545
- $[35] = t19;
1546
- } else t19 = $[35];
1655
+ $[35] = t18;
1656
+ $[36] = t19;
1657
+ } else t19 = $[36];
1547
1658
  let t20;
1548
- if ($[36] !== t19) {
1659
+ if ($[37] !== t19) {
1549
1660
  t20 = /* @__PURE__ */ jsx("span", { children: t19 });
1550
- $[36] = t19;
1551
- $[37] = t20;
1552
- } else t20 = $[37];
1661
+ $[37] = t19;
1662
+ $[38] = t20;
1663
+ } else t20 = $[38];
1553
1664
  const t21 = Math.floor((endTime - group.startTime) * .5);
1554
1665
  let t22;
1555
- if ($[38] !== t21) {
1666
+ if ($[39] !== t21) {
1556
1667
  t22 = formatDuration(t21);
1557
- $[38] = t21;
1558
- $[39] = t22;
1559
- } else t22 = $[39];
1668
+ $[39] = t21;
1669
+ $[40] = t22;
1670
+ } else t22 = $[40];
1560
1671
  let t23;
1561
- if ($[40] !== t22) {
1672
+ if ($[41] !== t22) {
1562
1673
  t23 = /* @__PURE__ */ jsx("span", { children: t22 });
1563
- $[40] = t22;
1564
- $[41] = t23;
1565
- } else t23 = $[41];
1674
+ $[41] = t22;
1675
+ $[42] = t23;
1676
+ } else t23 = $[42];
1566
1677
  const t24 = Math.floor((endTime - group.startTime) * .75);
1567
1678
  let t25;
1568
- if ($[42] !== t24) {
1679
+ if ($[43] !== t24) {
1569
1680
  t25 = formatDuration(t24);
1570
- $[42] = t24;
1571
- $[43] = t25;
1572
- } else t25 = $[43];
1681
+ $[43] = t24;
1682
+ $[44] = t25;
1683
+ } else t25 = $[44];
1573
1684
  let t26;
1574
- if ($[44] !== t25) {
1685
+ if ($[45] !== t25) {
1575
1686
  t26 = /* @__PURE__ */ jsx("span", { children: t25 });
1576
- $[44] = t25;
1577
- $[45] = t26;
1578
- } else t26 = $[45];
1687
+ $[45] = t25;
1688
+ $[46] = t26;
1689
+ } else t26 = $[46];
1579
1690
  const t27 = Math.floor(endTime - group.startTime);
1580
1691
  let t28;
1581
- if ($[46] !== t27) {
1692
+ if ($[47] !== t27) {
1582
1693
  t28 = formatDuration(t27);
1583
- $[46] = t27;
1584
- $[47] = t28;
1585
- } else t28 = $[47];
1694
+ $[47] = t27;
1695
+ $[48] = t28;
1696
+ } else t28 = $[48];
1586
1697
  let t29;
1587
- if ($[48] !== t28) {
1698
+ if ($[49] !== t28) {
1588
1699
  t29 = /* @__PURE__ */ jsx("span", { children: t28 });
1589
- $[48] = t28;
1590
- $[49] = t29;
1591
- } else t29 = $[49];
1700
+ $[49] = t28;
1701
+ $[50] = t29;
1702
+ } else t29 = $[50];
1592
1703
  let t30;
1593
- if ($[50] !== t20 || $[51] !== t23 || $[52] !== t26 || $[53] !== t29) {
1704
+ if ($[51] !== t20 || $[52] !== t23 || $[53] !== t26 || $[54] !== t29) {
1594
1705
  t30 = /* @__PURE__ */ jsxs("div", {
1595
1706
  className: "flex justify-between font-mono p-2 w-full text-xs text-muted-foreground bg-card",
1596
1707
  children: [
@@ -1601,35 +1712,35 @@ const TraceTimelineComponent = memo((t0) => {
1601
1712
  t29
1602
1713
  ]
1603
1714
  });
1604
- $[50] = t20;
1605
- $[51] = t23;
1606
- $[52] = t26;
1607
- $[53] = t29;
1608
- $[54] = t30;
1609
- } else t30 = $[54];
1715
+ $[51] = t20;
1716
+ $[52] = t23;
1717
+ $[53] = t26;
1718
+ $[54] = t29;
1719
+ $[55] = t30;
1720
+ } else t30 = $[55];
1610
1721
  let t31;
1611
- if ($[55] !== t16 || $[56] !== t30 || $[57] !== t8) {
1722
+ if ($[56] !== t16 || $[57] !== t30 || $[58] !== t8) {
1612
1723
  t31 = /* @__PURE__ */ jsxs("div", {
1613
1724
  className: "flex flex-1 bg-background",
1614
1725
  style: t8,
1615
1726
  children: [t16, t30]
1616
1727
  });
1617
- $[55] = t16;
1618
- $[56] = t30;
1619
- $[57] = t8;
1620
- $[58] = t31;
1621
- } else t31 = $[58];
1728
+ $[56] = t16;
1729
+ $[57] = t30;
1730
+ $[58] = t8;
1731
+ $[59] = t31;
1732
+ } else t31 = $[59];
1622
1733
  const t32 = `${zoom}%`;
1623
1734
  let t33;
1624
- if ($[59] !== t32) {
1735
+ if ($[60] !== t32) {
1625
1736
  t33 = { width: t32 };
1626
- $[59] = t32;
1627
- $[60] = t33;
1628
- } else t33 = $[60];
1737
+ $[60] = t32;
1738
+ $[61] = t33;
1739
+ } else t33 = $[61];
1629
1740
  let t34;
1630
- if ($[61] !== endTime || $[62] !== group.startTime || $[63] !== selectTraceId || $[64] !== traces) {
1741
+ if ($[62] !== endTime || $[63] !== group.startTime || $[64] !== selectTraceId || $[65] !== traces) {
1631
1742
  let t35$1;
1632
- if ($[66] !== endTime || $[67] !== group.startTime || $[68] !== selectTraceId) {
1743
+ if ($[67] !== endTime || $[68] !== group.startTime || $[69] !== selectTraceId) {
1633
1744
  t35$1 = (trace_0) => /* @__PURE__ */ jsx(TraceItem, {
1634
1745
  traceId: trace_0.id,
1635
1746
  traceName: trace_0.name,
@@ -1640,31 +1751,31 @@ const TraceTimelineComponent = memo((t0) => {
1640
1751
  groupEndTime: endTime,
1641
1752
  onExpand: selectTraceId
1642
1753
  }, trace_0.id);
1643
- $[66] = endTime;
1644
- $[67] = group.startTime;
1645
- $[68] = selectTraceId;
1646
- $[69] = t35$1;
1647
- } else t35$1 = $[69];
1754
+ $[67] = endTime;
1755
+ $[68] = group.startTime;
1756
+ $[69] = selectTraceId;
1757
+ $[70] = t35$1;
1758
+ } else t35$1 = $[70];
1648
1759
  t34 = traces.map(t35$1);
1649
- $[61] = endTime;
1650
- $[62] = group.startTime;
1651
- $[63] = selectTraceId;
1652
- $[64] = traces;
1653
- $[65] = t34;
1654
- } else t34 = $[65];
1760
+ $[62] = endTime;
1761
+ $[63] = group.startTime;
1762
+ $[64] = selectTraceId;
1763
+ $[65] = traces;
1764
+ $[66] = t34;
1765
+ } else t34 = $[66];
1655
1766
  let t35;
1656
- if ($[70] !== t33 || $[71] !== t34) {
1767
+ if ($[71] !== t33 || $[72] !== t34) {
1657
1768
  t35 = /* @__PURE__ */ jsx("div", {
1658
1769
  className: "flex flex-col h-full",
1659
1770
  style: t33,
1660
1771
  children: t34
1661
1772
  });
1662
- $[70] = t33;
1663
- $[71] = t34;
1664
- $[72] = t35;
1665
- } else t35 = $[72];
1773
+ $[71] = t33;
1774
+ $[72] = t34;
1775
+ $[73] = t35;
1776
+ } else t35 = $[73];
1666
1777
  let t36;
1667
- if ($[73] !== t31 || $[74] !== t35 || $[75] !== t6) {
1778
+ if ($[74] !== t31 || $[75] !== t35 || $[76] !== t6) {
1668
1779
  t36 = /* @__PURE__ */ jsx("div", {
1669
1780
  className: "flex flex-col flex-1 relative min-h-full min-w-[1000px]",
1670
1781
  children: /* @__PURE__ */ jsxs("div", {
@@ -1673,28 +1784,28 @@ const TraceTimelineComponent = memo((t0) => {
1673
1784
  children: [t31, t35]
1674
1785
  })
1675
1786
  });
1676
- $[73] = t31;
1677
- $[74] = t35;
1678
- $[75] = t6;
1679
- $[76] = t36;
1680
- } else t36 = $[76];
1787
+ $[74] = t31;
1788
+ $[75] = t35;
1789
+ $[76] = t6;
1790
+ $[77] = t36;
1791
+ } else t36 = $[77];
1681
1792
  let t37;
1682
- if ($[77] !== selectTraceId || $[78] !== selectedTrace) {
1793
+ if ($[78] !== selectTraceId || $[79] !== selectedTrace) {
1683
1794
  t37 = selectedTrace && /* @__PURE__ */ jsx(TraceItemDetail, {
1684
1795
  trace: selectedTrace,
1685
1796
  onClose: () => selectTraceId(void 0)
1686
1797
  });
1687
- $[77] = selectTraceId;
1688
- $[78] = selectedTrace;
1689
- $[79] = t37;
1690
- } else t37 = $[79];
1798
+ $[78] = selectTraceId;
1799
+ $[79] = selectedTrace;
1800
+ $[80] = t37;
1801
+ } else t37 = $[80];
1691
1802
  let t38;
1692
- if ($[80] !== t36 || $[81] !== t37) {
1803
+ if ($[81] !== t36 || $[82] !== t37) {
1693
1804
  t38 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t36, t37] });
1694
- $[80] = t36;
1695
- $[81] = t37;
1696
- $[82] = t38;
1697
- } else t38 = $[82];
1805
+ $[81] = t36;
1806
+ $[82] = t37;
1807
+ $[83] = t38;
1808
+ } else t38 = $[83];
1698
1809
  return t38;
1699
1810
  });
1700
1811
  TraceTimelineComponent.displayName = "TraceTimelineComponent";
@@ -1702,9 +1813,9 @@ function _temp$3(state) {
1702
1813
  return state.selectedTraceGroupId;
1703
1814
  }
1704
1815
  function _temp2$1(state) {
1705
- return state.traceGroups;
1816
+ return state.traceGroupMetas;
1706
1817
  }
1707
- function _temp3(state_0) {
1818
+ function _temp3$1(state_0) {
1708
1819
  return state_0.traces;
1709
1820
  }
1710
1821
  function _temp4(state_1) {
@@ -1723,33 +1834,58 @@ function _temp7(prevZoom_0) {
1723
1834
  //#endregion
1724
1835
  //#region src/hooks/use-filtered-trace-groups.ts
1725
1836
  const useFilteredTraceGroups = () => {
1726
- const $ = c(6);
1727
- if ($[0] !== "bb7b5a50ebd354ac1177c12afa033e3545018c14fe033f5ea4551df3bbda5965") {
1728
- for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1729
- $[0] = "bb7b5a50ebd354ac1177c12afa033e3545018c14fe033f5ea4551df3bbda5965";
1837
+ const $ = c(9);
1838
+ if ($[0] !== "ec346c037792c603f78bfd5665c2f837f63d92d06f90a3f8a121adc9dc036808") {
1839
+ for (let $i = 0; $i < 9; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1840
+ $[0] = "ec346c037792c603f78bfd5665c2f837f63d92d06f90a3f8a121adc9dc036808";
1730
1841
  }
1731
- const traceGroups = useObservabilityStore(_temp$2);
1732
- const search = useObservabilityStore(_temp2);
1842
+ const traceGroupMetas = useObservabilityStore(_temp$2);
1843
+ const tracesByGroupId = useObservabilityStore(_temp2);
1844
+ const search = useObservabilityStore(_temp3);
1733
1845
  let t0;
1734
- if ($[1] !== search || $[2] !== traceGroups) {
1846
+ if ($[1] !== search || $[2] !== traceGroupMetas || $[3] !== tracesByGroupId) {
1735
1847
  let t1;
1736
- if ($[4] !== search) {
1737
- t1 = (group) => group.name.toLowerCase().includes(search.toLowerCase()) || group.id.toLowerCase().includes(search.toLowerCase());
1738
- $[4] = search;
1739
- $[5] = t1;
1740
- } else t1 = $[5];
1741
- t0 = traceGroups.filter(t1);
1848
+ if ($[5] !== tracesByGroupId) {
1849
+ t1 = (meta) => {
1850
+ const traces = tracesByGroupId[meta.id] || [];
1851
+ if (traces.length === 0) return {
1852
+ ...meta,
1853
+ status: "running",
1854
+ lastActivity: meta.startTime,
1855
+ metadata: {
1856
+ completedSteps: 0,
1857
+ activeSteps: 0,
1858
+ totalSteps: 0
1859
+ }
1860
+ };
1861
+ return deriveTraceGroup(meta, traces);
1862
+ };
1863
+ $[5] = tracesByGroupId;
1864
+ $[6] = t1;
1865
+ } else t1 = $[6];
1866
+ const traceGroups = traceGroupMetas.map(t1);
1867
+ let t2;
1868
+ if ($[7] !== search) {
1869
+ t2 = (group) => group.name.toLowerCase().includes(search.toLowerCase()) || group.id.toLowerCase().includes(search.toLowerCase());
1870
+ $[7] = search;
1871
+ $[8] = t2;
1872
+ } else t2 = $[8];
1873
+ t0 = traceGroups.filter(t2);
1742
1874
  $[1] = search;
1743
- $[2] = traceGroups;
1744
- $[3] = t0;
1745
- } else t0 = $[3];
1875
+ $[2] = traceGroupMetas;
1876
+ $[3] = tracesByGroupId;
1877
+ $[4] = t0;
1878
+ } else t0 = $[4];
1746
1879
  return t0;
1747
1880
  };
1748
1881
  function _temp$2(state) {
1749
- return state.traceGroups;
1882
+ return state.traceGroupMetas;
1750
1883
  }
1751
1884
  function _temp2(state_0) {
1752
- return state_0.search;
1885
+ return state_0.tracesByGroupId;
1886
+ }
1887
+ function _temp3(state_1) {
1888
+ return state_1.search;
1753
1889
  }
1754
1890
 
1755
1891
  //#endregion
@@ -1758,9 +1894,9 @@ const streamName = "motia-trace-group";
1758
1894
  const groupId = "default";
1759
1895
  const useTraceGroupsStream = () => {
1760
1896
  const $ = c(3);
1761
- if ($[0] !== "29d24a963c5c777c79f8ec82ca3d5f2b5d6812171a1a0298772d1c34c99549aa") {
1897
+ if ($[0] !== "a55cc63ac3227553bdabe16419e817ac4d448fdd9e3663a994c2e53ebc24d222") {
1762
1898
  for (let $i = 0; $i < 3; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1763
- $[0] = "29d24a963c5c777c79f8ec82ca3d5f2b5d6812171a1a0298772d1c34c99549aa";
1899
+ $[0] = "a55cc63ac3227553bdabe16419e817ac4d448fdd9e3663a994c2e53ebc24d222";
1764
1900
  }
1765
1901
  const setData = useObservabilityStore(_temp$1);
1766
1902
  let t0;
@@ -1776,7 +1912,7 @@ const useTraceGroupsStream = () => {
1776
1912
  useStreamGroup(t0);
1777
1913
  };
1778
1914
  function _temp$1(state) {
1779
- return state.setTraceGroups;
1915
+ return state.setTraceGroupMetas;
1780
1916
  }
1781
1917
 
1782
1918
  //#endregion