@dxos/react-ui-trace 0.11.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/index.mjs +1722 -561
  3. package/dist/lib/index.mjs.map +1 -1
  4. package/dist/lib/testing.mjs +3 -3
  5. package/dist/lib/testing.mjs.map +1 -1
  6. package/dist/lib/translations.mjs +5 -0
  7. package/dist/lib/translations.mjs.map +1 -1
  8. package/dist/types/src/components/Gantt/Gantt.d.ts +109 -24
  9. package/dist/types/src/components/Gantt/Gantt.d.ts.map +1 -1
  10. package/dist/types/src/components/Gantt/Gantt.stories.d.ts +73 -3
  11. package/dist/types/src/components/Gantt/Gantt.stories.d.ts.map +1 -1
  12. package/dist/types/src/components/Gantt/gantt-rows.d.ts +26 -0
  13. package/dist/types/src/components/Gantt/gantt-rows.d.ts.map +1 -0
  14. package/dist/types/src/components/Gantt/gantt-rows.test.d.ts +2 -0
  15. package/dist/types/src/components/Gantt/gantt-rows.test.d.ts.map +1 -0
  16. package/dist/types/src/components/Gantt/gantt-scale.d.ts +57 -0
  17. package/dist/types/src/components/Gantt/gantt-scale.d.ts.map +1 -0
  18. package/dist/types/src/components/Gantt/gantt-scale.test.d.ts +2 -0
  19. package/dist/types/src/components/Gantt/gantt-scale.test.d.ts.map +1 -0
  20. package/dist/types/src/components/Gantt/index.d.ts +2 -0
  21. package/dist/types/src/components/Gantt/index.d.ts.map +1 -1
  22. package/dist/types/src/components/Gantt/useEnter.d.ts +13 -0
  23. package/dist/types/src/components/Gantt/useEnter.d.ts.map +1 -0
  24. package/dist/types/src/components/Gantt/useRangeTween.d.ts +12 -0
  25. package/dist/types/src/components/Gantt/useRangeTween.d.ts.map +1 -0
  26. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +3 -3
  27. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  28. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Timeline/Timeline.d.ts +10 -2
  30. package/dist/types/src/components/Timeline/Timeline.d.ts.map +1 -1
  31. package/dist/types/src/components/Timeline/Timeline.stories.d.ts +8 -4
  32. package/dist/types/src/components/Timeline/Timeline.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Timeline/timeline-layout.d.ts +35 -0
  34. package/dist/types/src/components/Timeline/timeline-layout.d.ts.map +1 -0
  35. package/dist/types/src/components/Timeline/timeline-layout.test.d.ts +2 -0
  36. package/dist/types/src/components/Timeline/timeline-layout.test.d.ts.map +1 -0
  37. package/dist/types/src/components/TracePanel/SpanTreeView.d.ts +15 -0
  38. package/dist/types/src/components/TracePanel/SpanTreeView.d.ts.map +1 -0
  39. package/dist/types/src/components/TracePanel/TracePanel.d.ts +3 -3
  40. package/dist/types/src/components/TracePanel/TracePanel.d.ts.map +1 -1
  41. package/dist/types/src/components/TracePanel/TracePanel.stories.d.ts +46 -0
  42. package/dist/types/src/components/TracePanel/TracePanel.stories.d.ts.map +1 -0
  43. package/dist/types/src/components/TracePanel/trace-filter.d.ts +7 -2
  44. package/dist/types/src/components/TracePanel/trace-filter.d.ts.map +1 -1
  45. package/dist/types/src/components/TracePanel/useTraceMenu.d.ts.map +1 -1
  46. package/dist/types/src/execution-graph/execution-graph.d.ts +1 -1
  47. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  48. package/dist/types/src/hooks/useExecutionGraph.d.ts +2 -2
  49. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -1
  50. package/dist/types/src/hooks/useSessionTimeline.d.ts +1 -1
  51. package/dist/types/src/hooks/useSessionTimeline.d.ts.map +1 -1
  52. package/dist/types/src/hooks/useTraceMessages.d.ts +1 -1
  53. package/dist/types/src/hooks/useTraceMessages.d.ts.map +1 -1
  54. package/dist/types/src/session-timeline/TaskHistory.stories.d.ts +12 -0
  55. package/dist/types/src/session-timeline/TaskHistory.stories.d.ts.map +1 -0
  56. package/dist/types/src/session-timeline/gantt-mapping.d.ts +14 -0
  57. package/dist/types/src/session-timeline/gantt-mapping.d.ts.map +1 -0
  58. package/dist/types/src/session-timeline/gantt-mapping.test.d.ts +2 -0
  59. package/dist/types/src/session-timeline/gantt-mapping.test.d.ts.map +1 -0
  60. package/dist/types/src/session-timeline/index.d.ts +1 -0
  61. package/dist/types/src/session-timeline/index.d.ts.map +1 -1
  62. package/dist/types/src/session-timeline/session-timeline.d.ts +17 -2
  63. package/dist/types/src/session-timeline/session-timeline.d.ts.map +1 -1
  64. package/dist/types/src/session-timeline/types.d.ts +32 -0
  65. package/dist/types/src/session-timeline/types.d.ts.map +1 -1
  66. package/dist/types/src/testing/simulated-agent.d.ts +3 -2
  67. package/dist/types/src/testing/simulated-agent.d.ts.map +1 -1
  68. package/dist/types/src/testing/test-trace.d.ts +2 -2
  69. package/dist/types/src/testing/test-trace.d.ts.map +1 -1
  70. package/dist/types/src/translations.d.ts +5 -0
  71. package/dist/types/src/translations.d.ts.map +1 -1
  72. package/dist/types/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +30 -26
  74. package/src/components/Gantt/Gantt.stories.tsx +914 -96
  75. package/src/components/Gantt/Gantt.tsx +964 -261
  76. package/src/components/Gantt/gantt-rows.test.ts +123 -0
  77. package/src/components/Gantt/gantt-rows.ts +71 -0
  78. package/src/components/Gantt/gantt-scale.test.ts +105 -0
  79. package/src/components/Gantt/gantt-scale.ts +143 -0
  80. package/src/components/Gantt/index.ts +2 -0
  81. package/src/components/Gantt/useEnter.ts +33 -0
  82. package/src/components/Gantt/useRangeTween.ts +61 -0
  83. package/src/components/ProcessTree/ProcessTree.stories.tsx +2 -3
  84. package/src/components/ProcessTree/ProcessTree.tsx +99 -90
  85. package/src/components/Timeline/Timeline.stories.tsx +110 -22
  86. package/src/components/Timeline/Timeline.tsx +319 -271
  87. package/src/components/Timeline/timeline-layout.test.ts +177 -0
  88. package/src/components/Timeline/timeline-layout.ts +153 -0
  89. package/src/components/TracePanel/SpanTreeView.tsx +39 -0
  90. package/src/components/TracePanel/TracePanel.stories.tsx +106 -0
  91. package/src/components/TracePanel/TracePanel.tsx +113 -106
  92. package/src/components/TracePanel/trace-filter.test.ts +31 -2
  93. package/src/components/TracePanel/trace-filter.ts +28 -3
  94. package/src/components/TracePanel/useTraceMenu.ts +0 -1
  95. package/src/execution-graph/SPEC.md +10 -10
  96. package/src/execution-graph/execution-graph.test.ts +5 -6
  97. package/src/execution-graph/execution-graph.ts +108 -60
  98. package/src/execution-graph/pending-block-status.ts +1 -1
  99. package/src/execution-graph/sub-agent-delegation.test.ts +1 -1
  100. package/src/hooks/useExecutionGraph.ts +14 -11
  101. package/src/hooks/useSessionTimeline.ts +35 -9
  102. package/src/hooks/useTraceMessages.ts +1 -1
  103. package/src/session-timeline/TaskHistory.stories.tsx +142 -0
  104. package/src/session-timeline/gantt-mapping.test.ts +118 -0
  105. package/src/session-timeline/gantt-mapping.ts +158 -0
  106. package/src/session-timeline/index.ts +1 -0
  107. package/src/session-timeline/session-timeline.test.ts +567 -19
  108. package/src/session-timeline/session-timeline.ts +433 -62
  109. package/src/session-timeline/types.ts +14 -0
  110. package/src/testing/simulated-agent.ts +3 -2
  111. package/src/testing/test-trace.ts +2 -2
  112. package/src/translations.ts +8 -2
  113. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts +0 -2
  114. package/dist/types/src/execution-graph/remote-snapshot.test.d.ts.map +0 -1
  115. package/src/execution-graph/remote-snapshot.test.ts +0 -116
@@ -1,16 +1,39 @@
1
1
  import { type StoryObj } from '@storybook/react-vite';
2
2
  import React from 'react';
3
- import { type GanttData, type GanttLane, type GanttMarker } from './Gantt.tsx';
4
- type StoryArgs = GanttData & {
3
+ import { type GanttData, type GanttGroup, type GanttLane, type GanttMarker } from './Gantt.tsx';
4
+ type EventStreamOptions = {
5
+ /** How often an event arrives, in milliseconds. The stream is static without it. */
6
+ interval?: number;
7
+ /** The supervisor lane: what spawns the first children, and what they report back to. */
8
+ laneId: string;
9
+ /** How far each arrival advances the clock — the axis reads the instant, `interval` is real time. */
10
+ step: number;
11
+ /** The supervisor opens another child every so many arrivals. */
12
+ spawnEvery?: number;
13
+ /** How many events of its own a lane runs before it is finished, inclusive. */
14
+ childEvents?: readonly [number, number];
15
+ /** Percent chance a direct child delegates rather than works; halved at each level below it. */
16
+ nestedChance?: number;
17
+ /**
18
+ * How many lanes may be opened at each depth, deepest last. This is what makes the run finite: the
19
+ * budget is spent, everything in flight reports back, and the chart comes to rest — a demo that
20
+ * grows for as long as it is left open never shows what finishing looks like.
21
+ */
22
+ maxSpawns?: readonly number[];
23
+ };
24
+ type StoryArgs = GanttData & Partial<EventStreamOptions> & {
5
25
  /** Render the drawing alone, as a host that already lists the lanes does. */
6
26
  chartOnly?: boolean;
27
+ /** Show the data the chart was drawn from beneath it. */
28
+ inspect?: boolean;
7
29
  };
8
- declare const DefaultStory: (props: StoryArgs) => React.JSX.Element;
30
+ declare const DefaultStory: ({ chartOnly, inspect, interval, laneId, step, spawnEvery, childEvents, nestedChance, maxSpawns, ...data }: StoryArgs) => React.JSX.Element;
9
31
  declare const meta: {
10
32
  title: string;
11
33
  render: typeof DefaultStory;
12
34
  decorators: import("@storybook/react").Decorator[];
13
35
  args: {
36
+ groups: GanttGroup[];
14
37
  lanes: GanttLane[];
15
38
  markers: GanttMarker[];
16
39
  now: number;
@@ -18,6 +41,7 @@ declare const meta: {
18
41
  start: number;
19
42
  end: number;
20
43
  };
44
+ inspect: true;
21
45
  onLaneSelect: (lane: GanttLane) => void;
22
46
  onMarkerSelect: (marker: GanttMarker) => void;
23
47
  };
@@ -26,5 +50,51 @@ export default meta;
26
50
  type Story = StoryObj<typeof meta>;
27
51
  export declare const Default: Story;
28
52
  export declare const ChartOnly: Story;
53
+ /** The time axis under a stream: every arrival widens the range, so the whole history shifts left. */
29
54
  export declare const Live: Story;
55
+ /** The same run on the fitted axis, for contrast with {@link Live}: gaps argue for space by duration. */
56
+ export declare const TimeAxis: Story;
57
+ /** The primitives alone: one lane, one event a second, each opening out of the one before it. */
58
+ export declare const SingleLane: Story;
59
+ /**
60
+ * The supervisor fans out: every third arrival opens another child, and a child may delegate again
61
+ * rather than work — less likely the deeper it already is. Each lane runs a handful of events,
62
+ * reports back into a node of its own, and waits on anything it opened before it does.
63
+ *
64
+ * The run finishes: `maxSpawns` bounds how many lanes each depth may open, so the branches unwind
65
+ * from the leaves up, the supervisor closes its own span, and the chart comes to rest.
66
+ */
67
+ export declare const Delegation: Story;
68
+ /** One band, one lane, six events. */
69
+ export declare const OneLane: Story;
70
+ /** One band, four lanes over different spans — one worked twice, one still open. */
71
+ export declare const ManyLanes: Story;
72
+ /** A chart wider than its viewport opens scrolled to its newest events, not to the start of the history. */
73
+ export declare const TestOpensAtNewest: Story;
74
+ /** Beside the legend column the chart takes the remaining width, rather than collapsing to nothing. */
75
+ export declare const TestChartFillsRow: Story;
76
+ /**
77
+ * The legend's toggle switches its column between the lanes' titles and their stats, and hovering a
78
+ * title shows the stats it is not showing.
79
+ *
80
+ * 1. Hover the first lane's title: its card shows the lane's token count.
81
+ * 2. Press the legend toggle: the column shows stats instead of titles.
82
+ * 3. Press it again: the titles are back.
83
+ */
84
+ export declare const TestLegendStats: Story;
85
+ /** In a host taller than its lanes the chart fills it, so the horizontal scroll bar is at the host's foot. */
86
+ export declare const TestScrollerAtFoot: Story;
87
+ /**
88
+ * The drawing is one keyboard stop that walks its nodes.
89
+ *
90
+ * 1. Click the first node of the second lane: the chart takes focus and that node is current.
91
+ * 2. ArrowRight: the next node along the same lane.
92
+ * 3. ArrowDown: the nearest node on the lane below.
93
+ * 4. Space opens the current node's card; Space again closes it.
94
+ */
95
+ export declare const TestKeyboardNodes: Story;
96
+ /** One band whose lanes branch off one another: `parentId` indents, `openedFrom` and `closedInto` connect. */
97
+ export declare const Branching: Story;
98
+ /** Four bands: two nested under the first, one unrelated. */
99
+ export declare const ManyGroups: Story;
30
100
  //# sourceMappingURL=Gantt.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Gantt.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/Gantt.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAA8C,MAAM,OAAO,CAAC;AAMnE,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAuJtF,KAAK,SAAS,GAAG,SAAS,GAAG;IAC3B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAUF,QAAA,MAAM,YAAY,UAAW,SAAS,sBAKrC,CAAC;AAkCF,QAAA,MAAM,IAAI;;;;;;;;;YAQG,KAAK;YAAM,GAAG;;6BACF,SAAS;iCACL,WAAW;;CAEH,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC"}
1
+ {"version":3,"file":"Gantt.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/Gantt.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAA8C,MAAM,OAAO,CAAC;AAOnE,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAqYvG,KAAK,kBAAkB,GAAG;IACxB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AAsQF,KAAK,SAAS,GAAG,SAAS,GACxB,OAAO,CAAC,kBAAkB,CAAC,GAAG;IAC5B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAKJ,QAAA,MAAM,YAAY,8GAWf,SAAS,sBAyCX,CAAC;AAEF,QAAA,MAAM,IAAI;;;;;;;;;;YASG,KAAK;YAAM,GAAG;;;6BAEF,SAAS;iCACL,WAAW;;CAEH,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,UAAU,EAAE,KAcxB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,KAUxB,CAAC;AAMF,sCAAsC;AACtC,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,SAAS,EAAE,KASvB,CAAC;AAEF,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,KAuB/B,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,EAAE,KAe/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,KAoC7B,CAAC;AAEF,8GAA8G;AAC9G,eAAO,MAAM,kBAAkB,EAAE,KAqChC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAyC/B,CAAC;AAEF,8GAA8G;AAC9G,eAAO,MAAM,SAAS,EAAE,KASvB,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,UAAU,EAAE,KASxB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type GanttGroup, type GanttLane } from './Gantt.tsx';
2
+ export type Row = {
3
+ lane: GanttLane;
4
+ depth: number;
5
+ index: number;
6
+ groupId: string | undefined;
7
+ };
8
+ /** A group's rows, contiguous — which is what lets one rectangle enclose them. */
9
+ export type Band = {
10
+ group: GanttGroup;
11
+ first: number;
12
+ last: number;
13
+ };
14
+ /**
15
+ * Rows in reading order: the ungrouped lanes, then each group's band, a nested group's band directly
16
+ * after its parent's. Within a band the lanes come in the order given, each nested under its
17
+ * `parentId`.
18
+ *
19
+ * A band is contiguous by construction, which is the whole reason the order is settled here rather
20
+ * than left to the caller: one rectangle can only enclose a run of adjacent rows.
21
+ */
22
+ export declare const orderRows: (groups: readonly GanttGroup[], lanes: readonly GanttLane[]) => {
23
+ rows: Row[];
24
+ bands: Band[];
25
+ };
26
+ //# sourceMappingURL=gantt-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gantt-rows.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/gantt-rows.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,WACZ,SAAS,UAAU,EAAE,SACtB,SAAS,SAAS,EAAE,KAC1B;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAoC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gantt-rows.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gantt-rows.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/gantt-rows.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * What the horizontal axis measures.
3
+ * - `time` — real duration, fitted to the width available: an idle gap is as wide as it was long.
4
+ * - `unit` — one fixed step per event: a burst and a lull read alike, and the drawing grows to the
5
+ * right instead of compressing, so an event already placed never moves again. That is what makes a
6
+ * live chart watchable — on a fitted axis every arrival shifts the whole history left.
7
+ */
8
+ export type GanttAxis = 'time' | 'unit';
9
+ /** A labelled gridline, positioned in the same pixels as `GanttScale.at`. */
10
+ export type GanttTick = {
11
+ at: number;
12
+ label: string;
13
+ };
14
+ /** The mapping every part of the drawing shares: an instant to a horizontal offset in pixels. */
15
+ export type GanttScale = {
16
+ at: (time: number) => number;
17
+ /** The drawing's width: the time axis takes what it is given, the unit axis states its own. */
18
+ width: number;
19
+ /** The labelled gridlines, as many as fit — the label's own width decides, so the scale owns this. */
20
+ ticks: GanttTick[];
21
+ };
22
+ /**
23
+ * Elapsed time since the start of the axis. The span picks the form for every tick alike, so a
24
+ * run's labels read as one unit: `0.2s` below a second's step, `45s` below a minute, `1:05` below an
25
+ * hour, `1:02:05` beyond.
26
+ */
27
+ export declare const formatElapsed: (elapsed: number, { span, step }: {
28
+ span: number;
29
+ step: number;
30
+ }) => string;
31
+ export type TimeScaleOptions = {
32
+ range: {
33
+ start: number;
34
+ end: number;
35
+ };
36
+ /** The width the range is fitted into. */
37
+ width: number;
38
+ /** Clearance at each end, so a bar's cap and the first tick's label stay inside the drawing. */
39
+ pad: number;
40
+ };
41
+ /** Duration against width, labelled with the time elapsed since the start of the range. */
42
+ export declare const timeScale: ({ range, width, pad }: TimeScaleOptions) => GanttScale;
43
+ export type UnitScaleOptions = {
44
+ /** Every event's instant; order and duplicates do not matter. */
45
+ times: readonly number[];
46
+ /** Pixels per event — the axis's one unit. */
47
+ step: number;
48
+ /** Clearance at each end, which also keeps the newest node off the edge. */
49
+ pad: number;
50
+ };
51
+ /**
52
+ * One step per event, in the order they happened. Ordinals are global rather than per lane: a
53
+ * delegation drops from a parent's node to its child's first node, and only a shared ordering keeps
54
+ * those two at the same offset.
55
+ */
56
+ export declare const unitScale: ({ times, step, pad }: UnitScaleOptions) => GanttScale;
57
+ //# sourceMappingURL=gantt-scale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gantt-scale.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/gantt-scale.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,iGAAiG;AACjG,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAcF;;;;GAIG;AACH,eAAO,MAAM,aAAa,YAAa,MAAM,kBAAkB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MAY/F,CAAC;AAKF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,SAAS,0BAA2B,gBAAgB,KAAG,UAanE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,yBAA0B,gBAAgB,KAAG,UA6ClE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gantt-scale.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gantt-scale.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/gantt-scale.test.ts"],"names":[],"mappings":""}
@@ -1,2 +1,4 @@
1
1
  export * from './Gantt.tsx';
2
+ export * from './gantt-rows.ts';
3
+ export * from './gantt-scale.ts';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Which of `ids` arrived since the last frame.
3
+ *
4
+ * A caller draws an entering element at the place it came from — the event before it, the node that
5
+ * spawned its lane — and the next frame draws it where it belongs, leaving a CSS transition to carry
6
+ * it the rest of the way. That is all the bookkeeping an enter animation needs: everything else in
7
+ * the drawing animates from its own previous value, which the browser already has.
8
+ *
9
+ * Nothing present on mount ever counts as entering — a chart that animates its whole history open on
10
+ * first paint is noise, since the reader was not there to see it arrive.
11
+ */
12
+ export declare const useEnter: (ids: readonly string[]) => ((id: string) => boolean);
13
+ //# sourceMappingURL=useEnter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEnter.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/useEnter.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,QAAS,SAAS,MAAM,EAAE,KAAG,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAezE,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type TimeRange = {
2
+ start: number;
3
+ end: number;
4
+ };
5
+ /**
6
+ * The range to draw with: `target`, reached over a short ease rather than in one step, so a
7
+ * time axis whose bounds move (a new event, `now` advancing) slides every span, node and tick to
8
+ * its new place together instead of jumping. A new target mid-flight eases on from wherever the
9
+ * drawing is, so a stream of updates reads as one continuous motion.
10
+ */
11
+ export declare const useRangeTween: (target: TimeRange, enabled: boolean) => TimeRange;
12
+ //# sourceMappingURL=useRangeTween.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRangeTween.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/useRangeTween.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAavD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,SAAS,WAAW,OAAO,KAAG,SAmCnE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import * as Process from '@dxos/compute/Process';
3
3
  export type ProcessTreeProps = {
4
- processes: readonly Process.Info[];
4
+ processes: readonly Process.Process[];
5
5
  /**
6
6
  * Maximum nesting depth from the root (1 = top-level processes only).
7
7
  *
@@ -14,12 +14,12 @@ export type ProcessTreeProps = {
14
14
  *
15
15
  * Must be referentially stable — `ProcessTree` is memoized on its props.
16
16
  */
17
- resolveLabel?: (process: Process.Info) => string | undefined;
17
+ resolveLabel?: (process: Process.Process) => string | undefined;
18
18
  /** Pids drawn as selected; the tree is controlled, so a click reports through `onSelectedChange`. */
19
19
  selected?: readonly string[];
20
20
  /** The selection after a click: the clicked pid alone, or toggled among the others on a meta-click. */
21
21
  onSelectedChange?: (selected: string[]) => void;
22
- onProcessTerminate?: (process: Process.Info) => void;
22
+ onProcessTerminate?: (process: Process.Process) => void;
23
23
  };
24
24
  /**
25
25
  * The agent's running processes as a tree, one row per process with its status glyph and metrics
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessTree.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProcessTree/ProcessTree.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAcjD,MAAM,MAAM,gBAAgB,GAAG;IAE7B,SAAS,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7D,qGAAqG;IACrG,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;CACtD,CAAC;AAeF;;;;GAIG;AACH,eAAO,MAAM,WAAW;;6GAkFvB,CAAC"}
1
+ {"version":3,"file":"ProcessTree.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProcessTree/ProcessTree.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAgBjD,MAAM,MAAM,gBAAgB,GAAG;IAE7B,SAAS,EAAE,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IAChE,qGAAqG;IACrG,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;CACzD,CAAC;AAeF;;;;GAIG;AACH,eAAO,MAAM,WAAW;;6GAkFvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessTree.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProcessTree/ProcessTree.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUjE,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAuDvE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAKC,CAAC;eAEtB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAKhC,CAAC"}
1
+ {"version":3,"file":"ProcessTree.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ProcessTree/ProcessTree.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AASjE,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAuDvE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAKC,CAAC;eAEtB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAKhC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { LogLevel } from '@dxos/log';
3
- import { type ThemedClassName } from '@dxos/react-ui';
3
+ import * as Util from '@dxos/react-ui/Util';
4
4
  import { type TimelineOptions } from './timeline-options.ts';
5
5
  /**
6
6
  * Mercurial-style Commit.
@@ -17,7 +17,7 @@ export type Commit = {
17
17
  /** DXN link for navigation to referenced objects. */
18
18
  link?: string;
19
19
  };
20
- export type TimelineProps = ThemedClassName<{
20
+ export type TimelineProps = Util.ThemedClassName<{
21
21
  /** Optional whitelist. */
22
22
  branches?: string[];
23
23
  /**
@@ -31,6 +31,11 @@ export type TimelineProps = ThemedClassName<{
31
31
  compact?: boolean;
32
32
  options?: TimelineOptions;
33
33
  debug?: boolean;
34
+ /**
35
+ * The element the rows are windowed against, which the host owns: a `ScrollArea.Viewport` or a
36
+ * `ScrollContainer.Viewport`, as `MessageList` binds to. Rows mount once it exists.
37
+ */
38
+ scroller: HTMLElement | null;
34
39
  onChange?: (props: {
35
40
  current?: number;
36
41
  commit?: Commit;
@@ -43,6 +48,9 @@ export type TimelineProps = ThemedClassName<{
43
48
  }>;
44
49
  /**
45
50
  * GitGraph-style timeline.
51
+ *
52
+ * Rows are windowed by `useWindow`, so rendering costs the viewport rather than the history. The
53
+ * layout is still computed over the whole history, so a windowed row draws every lane crossing it.
46
54
  */
47
55
  export declare const Timeline: React.NamedExoticComponent<Omit<TimelineProps, "className"> & {
48
56
  classNames?: import("@dxos/ui-types").ClassNameValue;
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../../src/components/Timeline/Timeline.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAQ,KAAK,eAAe,EAAkD,MAAM,gBAAgB,CAAC;AAQ5G,OAAO,EAAE,KAAK,eAAe,EAAkC,MAAM,uBAAuB,CAAC;AAE7F;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;IAC1C,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClE;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACjD,CAAC,CAAC;AAEH;;GAEG;AAEH,eAAO,MAAM,QAAQ;;6GAoTpB,CAAC"}
1
+ {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../../../src/components/Timeline/Timeline.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkE,MAAM,OAAO,CAAC;AAGvF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKrC,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAC;AAM5C,OAAO,EAAE,KAAK,eAAe,EAAkC,MAAM,uBAAuB,CAAC;AAE7F;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;IAC/C,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClE;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACjD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;;6GA4LpB,CAAC"}
@@ -1,12 +1,9 @@
1
1
  import { type StoryObj } from '@storybook/react-vite';
2
2
  import React from 'react';
3
3
  import { TimelineProps } from './Timeline.tsx';
4
- declare const DefaultStory: (props: TimelineProps) => React.JSX.Element;
4
+ declare const DefaultStory: (props: Omit<TimelineProps, 'scroller'>) => React.JSX.Element;
5
5
  declare const meta: {
6
6
  title: string;
7
- component: React.NamedExoticComponent<Omit<TimelineProps, "className"> & {
8
- classNames?: import("@dxos/ui-types").ClassNameValue;
9
- } & Pick<React.HTMLAttributes<Element>, "children" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
10
7
  render: typeof DefaultStory;
11
8
  decorators: import("@storybook/react").Decorator[];
12
9
  };
@@ -20,5 +17,12 @@ export declare const Linear: Story;
20
17
  export declare const Empty: Story;
21
18
  export declare const Random: Story;
22
19
  export declare const Compact: Story;
20
+ export declare const Large: Story;
21
+ /**
22
+ * Windowing must not cost the graph: a row deep in the history still draws every lane crossing it,
23
+ * because the spans it reads are computed over the whole history, not over the mounted rows.
24
+ */
25
+ export declare const Branching: Story;
26
+ export declare const Keyboard: Story;
23
27
  export declare const Streaming: Story;
24
28
  //# sourceMappingURL=Timeline.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Timeline/Timeline.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAA2B,MAAM,OAAO,CAAC;AAQhD,OAAO,EAAyB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAuHtE,QAAA,MAAM,YAAY,UAAW,aAAa,sBAQzC,CAAC;AAEF,QAAA,MAAM,IAAI;;;;;;;CAKuB,CAAC;eAEnB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAUpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KA4BvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAenB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAUpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAU,CAAC;AAE/B,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAqEvB,CAAC"}
1
+ {"version":3,"file":"Timeline.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Timeline/Timeline.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAA2B,MAAM,OAAO,CAAC;AAchD,OAAO,EAAyB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAuHtE,QAAA,MAAM,YAAY,UAAW,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,sBAU3D,CAAC;AAEF,QAAA,MAAM,IAAI;;;;CAI2B,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAUpB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KA4BvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAenB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAUpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAU,CAAC;AAE/B,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAuBF,eAAO,MAAM,KAAK,EAAE,KAanB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,KAqBvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAetB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAsEvB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { type Commit } from './Timeline.tsx';
2
+ /** The row range a branch's line covers, in commit indices. */
3
+ export type TimelineSpan = {
4
+ start: number;
5
+ end: number;
6
+ };
7
+ export type TimelineRow = {
8
+ commit: Commit;
9
+ /** Index into the commit list the layout was built from; `spans` share these coordinates. */
10
+ index: number;
11
+ };
12
+ export type TimelineLayout = {
13
+ /** One row per commit on a whitelisted branch, in commit order. */
14
+ rows: TimelineRow[];
15
+ /** Lane per branch; a branch outside the whitelist gets none, and so gets no rows. */
16
+ branchLane: Map<string, number>;
17
+ /** Lanes the row graphic has to be wide enough for. */
18
+ laneCount: number;
19
+ /** The span each branch's line covers. */
20
+ spans: Map<string, TimelineSpan>;
21
+ /** Row index per commit index — the keyboard navigates in commit indices but scrolls rows. */
22
+ rowByCommitIndex: Map<number, number>;
23
+ /** Commit index per commit id — a click names a commit, everything else speaks in indices. */
24
+ commitIndexById: Map<string, number>;
25
+ };
26
+ /**
27
+ * Lays a commit graph out into rows: which lane each branch draws in, how far each branch's line
28
+ * runs, and which commits get a row at all.
29
+ *
30
+ * Pure and linear in the number of commits: every lookup a commit makes about a parent, and every
31
+ * lane release, is served from an index built in one pass. Commits are assumed to be in topological
32
+ * order — a parent always precedes its children.
33
+ */
34
+ export declare const layoutTimeline: (commits: readonly Commit[], branches: readonly string[]) => TimelineLayout;
35
+ //# sourceMappingURL=timeline-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-layout.d.ts","sourceRoot":"","sources":["../../../../../src/components/Timeline/timeline-layout.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,+DAA+D;AAC/D,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,mEAAmE;IACnE,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,sFAAsF;IACtF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,8FAA8F;IAC9F,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,8FAA8F;IAC9F,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,YAAa,SAAS,MAAM,EAAE,YAAY,SAAS,MAAM,EAAE,KAAG,cA+GxF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=timeline-layout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline-layout.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/Timeline/timeline-layout.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type * as Util from '@dxos/react-ui/Util';
3
+ export type SpanTreeViewProps = Util.ThemedClassName<{
4
+ spanTree: unknown;
5
+ }>;
6
+ /**
7
+ * The trace's span tree as read-only JSON.
8
+ *
9
+ * CodeMirror puts only the lines in view into the DOM and parses the rest in time-sliced chunks, so
10
+ * showing a tree stops costing what the tree is worth — a highlighter renders every one of its lines
11
+ * in one synchronous pass. `TextEditor` rather than `Editor.View`: this pane has no toolbar, so the
12
+ * compound component's context would only be wiring nothing reads.
13
+ */
14
+ export declare const SpanTreeView: ({ classNames, spanTree }: SpanTreeViewProps) => React.JSX.Element;
15
+ //# sourceMappingURL=SpanTreeView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanTreeView.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/SpanTreeView.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,KAAK,IAAI,MAAM,qBAAqB,CAAC;AAIjD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;IACnD,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,6BAA8B,iBAAiB,sBAcvE,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import type * as Process from '@dxos/compute/Process';
3
- import { type ThemedClassName } from '@dxos/react-ui';
3
+ import * as Util from '@dxos/react-ui/Util';
4
4
  import { type ExecutionGraph } from '../../execution-graph/index.ts';
5
5
  import { type ProcessTreeProps } from '../ProcessTree/index.ts';
6
6
  import { type ProcessEnvironment } from './trace-filter.ts';
7
- export type TracePanelProps = ThemedClassName<Pick<ProcessTreeProps, 'resolveLabel' | 'selected' | 'onSelectedChange' | 'onProcessTerminate'> & {
7
+ export type TracePanelProps = Util.ThemedClassName<Pick<ProcessTreeProps, 'resolveLabel' | 'selected' | 'onSelectedChange' | 'onProcessTerminate'> & {
8
8
  /** The live process tree; narrowed here by `environments`. */
9
- processes: readonly Process.Info[];
9
+ processes: readonly Process.Process[];
10
10
  /** The trace as a commit graph, built by `useExecutionGraph` (already narrowed to `selected`). */
11
11
  graph: ExecutionGraph;
12
12
  /** Process environments shown; the toolbar's funnel edits it. */
@@ -1 +1 @@
1
- {"version":3,"file":"TracePanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/TracePanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAEhF,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAIL,KAAK,eAAe,EAIrB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG7E,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,mBAAmB,CAAC;AAG7E,MAAM,MAAM,eAAe,GAAG,eAAe,CAC3C,IAAI,CAAC,gBAAgB,EAAE,cAAc,GAAG,UAAU,GAAG,kBAAkB,GAAG,oBAAoB,CAAC,GAAG;IAChG,8DAA8D;IAC9D,SAAS,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC;IACnC,kGAAkG;IAClG,KAAK,EAAE,cAAc,CAAC;IACtB,iEAAiE;IACjE,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,oBAAoB,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACnE,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iGAAiG;IACjG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CACF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU;;6GAuJtB,CAAC"}
1
+ {"version":3,"file":"TracePanel.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/TracePanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAEhF,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAOtD,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAC;AAG5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG7E,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,mBAAmB,CAAC;AAG7E,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAChD,IAAI,CAAC,gBAAgB,EAAE,cAAc,GAAG,UAAU,GAAG,kBAAkB,GAAG,oBAAoB,CAAC,GAAG;IAChG,8DAA8D;IAC9D,SAAS,EAAE,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,kGAAkG;IAClG,KAAK,EAAE,cAAc,CAAC;IACtB,iEAAiE;IACjE,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,oBAAoB,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACnE,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iGAAiG;IACjG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CACF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU;;6GAkKtB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type StoryObj } from '@storybook/react-vite';
2
+ import React from 'react';
3
+ import { type TracePanelProps } from './TracePanel.tsx';
4
+ type StoryProps = Pick<TracePanelProps, 'debug'>;
5
+ /** The story holds what the app's container would: the selection, the environment filter, the graph. */
6
+ declare const DefaultStory: ({ debug }: StoryProps) => React.JSX.Element;
7
+ declare const meta: {
8
+ title: string;
9
+ component: typeof DefaultStory;
10
+ decorators: import("@storybook/react").Decorator[];
11
+ parameters: {
12
+ layout: string;
13
+ translations: [{
14
+ readonly 'en-US': {
15
+ readonly "@dxos/react-ui-trace": {
16
+ readonly 'no-commits.message': 'No events yet';
17
+ readonly 'gantt-axis-time.label': 'Fit to time';
18
+ readonly 'gantt-axis-unit.label': 'One step per event';
19
+ readonly 'gantt-legend-stats.label': 'Show usage';
20
+ readonly 'gantt-legend-title.label': 'Show titles';
21
+ readonly 'gantt-chart.label': 'Timeline';
22
+ readonly 'trace.label': 'Trace';
23
+ readonly 'trace-processes.label': 'Processes';
24
+ readonly 'trace-details.label': 'Details';
25
+ readonly 'trace-filter.menu': 'Filter processes';
26
+ readonly 'trace-clear-selection.label': 'Clear process selection';
27
+ readonly 'trace-filter-all.label': 'Show all';
28
+ readonly 'trace-filter-none.label': 'Hide all';
29
+ readonly 'trace-environment-app.label': 'App';
30
+ readonly 'trace-environment-space.label': 'Space';
31
+ readonly 'trace-environment-conversation.label': 'Conversation';
32
+ };
33
+ };
34
+ }];
35
+ };
36
+ };
37
+ export default meta;
38
+ type Story = StoryObj<typeof meta>;
39
+ /**
40
+ * A captured sub-agent delegation: the supervisor, its tool calls and the spawned sub-agent, as the
41
+ * process tree and the commit graph. Click a process to narrow the trace to it; ⌘-click adds one.
42
+ */
43
+ export declare const Default: Story;
44
+ /** The span tree the graph was built from, in place of the timeline. */
45
+ export declare const Debug: Story;
46
+ //# sourceMappingURL=TracePanel.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TracePanel.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/TracePanel.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAA4B,MAAM,OAAO,CAAC;AAYjD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAqCpE,KAAK,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAEjD,wGAAwG;AACxG,QAAA,MAAM,YAAY,cAAe,UAAU,sBAyB1C,CAAC;AAEF,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKkB,CAAC;eAEd,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAAoB,CAAC;AAE3C,wEAAwE;AACxE,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC"}
@@ -20,8 +20,8 @@ export declare const ALL_PROCESS_ENVIRONMENTS: readonly ProcessEnvironment[];
20
20
  export declare const DEFAULT_PROCESS_ENVIRONMENTS: readonly ProcessEnvironment[];
21
21
  export declare const environmentIcon: (environment: ProcessEnvironment) => string;
22
22
  /** `conversation` outranks `space`, since a conversation always runs inside one. */
23
- export declare const processEnvironment: (process: Process.Info) => ProcessEnvironment;
24
- export declare const filterProcesses: (processes: readonly Process.Info[], selected: readonly ProcessEnvironment[]) => readonly Process.Info[];
23
+ export declare const processEnvironment: (process: Process.Process) => ProcessEnvironment;
24
+ export declare const filterProcesses: (processes: readonly Process.Process[], selected: readonly ProcessEnvironment[]) => readonly Process.Process[];
25
25
  /** Toggles an environment, preserving the canonical order. */
26
26
  export declare const toggleProcessEnvironment: (selected: readonly ProcessEnvironment[], environment: ProcessEnvironment) => ProcessEnvironment[];
27
27
  /**
@@ -35,5 +35,10 @@ export declare const parseProcessEnvironments: (selected: readonly string[] | un
35
35
  * runs as a child of the process it serves, so its events are that process's work. An empty
36
36
  * selection is no filter.
37
37
  */
38
+ /**
39
+ * Narrows the process tree to the selected processes and their descendants, the process-side twin of
40
+ * {@link filterTraceMessages}: a running child of a picked process is that process's live work.
41
+ */
42
+ export declare const filterProcessesBySelection: (processes: readonly Process.Process[], selected: readonly string[]) => readonly Process.Process[];
38
43
  export declare const filterTraceMessages: (messages: readonly Trace.Message[], selected: readonly string[]) => readonly Trace.Message[];
39
44
  //# sourceMappingURL=trace-filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace-filter.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/trace-filter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;IAC7B,sFAAsF;aACtF,GAAG,EAAE,KAAK;IACV,8DAA8D;aAC9D,KAAK,EAAE,OAAO;IACd,6EAA6E;aAC7E,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE9F,sGAAsG;AACtG,eAAO,MAAM,wBAAwB,EAAE,SAAS,kBAAkB,EAIjE,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,4BAA4B,EAAE,SAAS,kBAAkB,EAGrE,CAAC;AAQF,eAAO,MAAM,eAAe,gBAAiB,kBAAkB,KAAG,MAAwC,CAAC;AAE3G,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,YAAa,OAAO,CAAC,IAAI,KAAG,kBAQ1D,CAAC;AAEF,eAAO,MAAM,eAAe,cACf,SAAS,OAAO,CAAC,IAAI,EAAE,YACxB,SAAS,kBAAkB,EAAE,KACtC,SAAS,OAAO,CAAC,IAAI,EAOvB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,aACzB,SAAS,kBAAkB,EAAE,eAC1B,kBAAkB,KAC9B,kBAAkB,EAGlB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,aAAc,SAAS,MAAM,EAAE,GAAG,SAAS,KAAG,SAAS,kBAAkB,EAGxB,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aACpB,SAAS,KAAK,CAAC,OAAO,EAAE,YACxB,SAAS,MAAM,EAAE,KAC1B,SAAS,KAAK,CAAC,OAAO,EAyBxB,CAAC"}
1
+ {"version":3,"file":"trace-filter.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/trace-filter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAElD;;;;GAIG;AAEH,eAAO,MAAM,kBAAkB;IAC7B,sFAAsF;aACtF,GAAG,EAAE,KAAK;IACV,8DAA8D;aAC9D,KAAK,EAAE,OAAO;IACd,6EAA6E;aAC7E,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE9F,sGAAsG;AACtG,eAAO,MAAM,wBAAwB,EAAE,SAAS,kBAAkB,EAIjE,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,4BAA4B,EAAE,SAAS,kBAAkB,EAGrE,CAAC;AAQF,eAAO,MAAM,eAAe,gBAAiB,kBAAkB,KAAG,MAAwC,CAAC;AAE3G,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,YAAa,OAAO,CAAC,OAAO,KAAG,kBAQ7D,CAAC;AAEF,eAAO,MAAM,eAAe,cACf,SAAS,OAAO,CAAC,OAAO,EAAE,YAC3B,SAAS,kBAAkB,EAAE,KACtC,SAAS,OAAO,CAAC,OAAO,EAO1B,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,aACzB,SAAS,kBAAkB,EAAE,eAC1B,kBAAkB,KAC9B,kBAAkB,EAGlB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,aAAc,SAAS,MAAM,EAAE,GAAG,SAAS,KAAG,SAAS,kBAAkB,EAGxB,CAAC;AAEvF;;;;GAIG;AACH;;;GAGG;AACH,eAAO,MAAM,0BAA0B,cAC1B,SAAS,OAAO,CAAC,OAAO,EAAE,YAC3B,SAAS,MAAM,EAAE,KAC1B,SAAS,OAAO,CAAC,OAAO,EAe1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,aACpB,SAAS,KAAK,CAAC,OAAO,EAAE,YACxB,SAAS,MAAM,EAAE,KAC1B,SAAS,KAAK,CAAC,OAAO,EAyBxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTraceMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/useTraceMenu.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAAG;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,gBAAgB,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC/D,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,sEAKtB,mBAAmB,8CA2DrB,CAAC"}
1
+ {"version":3,"file":"useTraceMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/TracePanel/useTraceMenu.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAAG;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,gBAAgB,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC/D,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,sEAKtB,mBAAmB,8CA2DrB,CAAC"}
@@ -5,7 +5,7 @@ import { type Commit } from '../components/Timeline/index.ts';
5
5
  import { type Span } from './span-tree.ts';
6
6
  export interface BuildExecutionGraphParams {
7
7
  traceMessages: readonly Trace.Message[];
8
- activeProcesses?: readonly Process.Info[];
8
+ activeProcesses?: readonly Process.Process[];
9
9
  collapseCompletedSpans?: boolean;
10
10
  eventLimit?: number;
11
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"execution-graph.d.ts","sourceRoot":"","sources":["../../../../src/execution-graph/execution-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-graph.d.ts","sourceRoot":"","sources":["../../../../src/execution-graph/execution-graph.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as Atom from 'effect/unstable/reactivity/Atom';
1
+ import * as Atom from 'effect/reactivity/Atom';
2
2
  import * as Process from '@dxos/compute/Process';
3
3
  import { type Space } from '@dxos/react-client/echo';
4
4
  import { type ExecutionGraph } from '../execution-graph/index.ts';
@@ -13,5 +13,5 @@ export type UseExecutionGraphOptions = {
13
13
  * `processesAtom` is the host's live process tree (a running agent draws a spinner commit); without
14
14
  * it the graph is the durable trace alone.
15
15
  */
16
- export declare const useExecutionGraph: (space: Space, processesAtom: Atom.Atom<readonly Process.Info[]> | undefined, { collapseCompletedSpans, eventLimit, selectedPids }?: UseExecutionGraphOptions) => ExecutionGraph;
16
+ export declare const useExecutionGraph: (space: Space, processesAtom: Atom.Atom<readonly Process.Process[]> | undefined, { collapseCompletedSpans, eventLimit, selectedPids }?: UseExecutionGraphOptions) => ExecutionGraph;
17
17
  //# sourceMappingURL=useExecutionGraph.d.ts.map