@lumea-labs/orchestrator 0.1.0 → 0.1.1

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 (38) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/orchestrator-document.d.ts +2 -2
  3. package/dist/orchestrator-document.js +2 -1
  4. package/dist/plan-detail.d.ts +6 -6
  5. package/dist/plan-detail.js +214 -156
  6. package/dist/plan-graph.d.ts +2 -2
  7. package/dist/plan-graph.js +178 -119
  8. package/dist/plan-node-detail.d.ts +4 -4
  9. package/dist/plan-node-detail.js +177 -125
  10. package/dist/plan-task-detail.d.ts +2 -2
  11. package/dist/plan-task-detail.js +282 -172
  12. package/dist/run-kanban-filter-menu.d.ts +3 -2
  13. package/dist/run-kanban-filter-menu.js +96 -77
  14. package/dist/run-kanban.d.ts +3 -3
  15. package/dist/run-kanban.js +93 -79
  16. package/dist/swarm-agent-badge.d.ts +2 -2
  17. package/dist/swarm-agent-badge.js +21 -18
  18. package/dist/swarm-run-activity.d.ts +2 -2
  19. package/dist/swarm-run-activity.js +150 -95
  20. package/dist/swarm-run-card.d.ts +2 -2
  21. package/dist/swarm-run-card.js +76 -55
  22. package/dist/swarm-run-detail.d.ts +2 -2
  23. package/dist/swarm-run-detail.js +415 -310
  24. package/dist/swarm-run-list.d.ts +2 -2
  25. package/dist/swarm-run-list.js +37 -27
  26. package/dist/swarm-run-row.d.ts +2 -2
  27. package/dist/swarm-run-row.js +82 -72
  28. package/dist/swarm-skeletons.d.ts +3 -3
  29. package/dist/swarm-skeletons.js +65 -16
  30. package/dist/swarm-status-bar.d.ts +2 -2
  31. package/dist/swarm-status-bar.js +62 -44
  32. package/dist/swarm-status-pill.d.ts +2 -2
  33. package/dist/swarm-status-pill.js +14 -11
  34. package/dist/swarm-timeline.d.ts +2 -2
  35. package/dist/swarm-timeline.js +284 -225
  36. package/dist/task-workspace-sidebar.d.ts +2 -2
  37. package/dist/task-workspace-sidebar.js +145 -113
  38. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
3
  import { useEffect, useRef, useState } from "react";
3
4
  import { createPortal } from "react-dom";
4
5
  import { Check, ChevronDown, Filter } from "lucide-react";
@@ -62,90 +63,108 @@ function RunKanbanFilterMenu({
62
63
  };
63
64
  const setAll = () => onChange(new Set(allKeys));
64
65
  const clearAll = () => onChange(/* @__PURE__ */ new Set());
65
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
66
- "button",
67
- {
68
- ref: triggerRef,
69
- type: "button",
70
- onClick: () => setOpen((v) => !v),
71
- "aria-haspopup": "menu",
72
- "aria-expanded": open,
73
- className: [
74
- "inline-flex items-center gap-1.5 rounded-md border border-p-line bg-p-surface px-2.5 py-1 font-mono text-[10.5px] font-bold uppercase tracking-[0.16em] text-p-ink-2 transition-colors cursor-pointer hover:border-p-ink-3 hover:text-p-ink",
75
- open ? "border-p-ink-3 text-p-ink" : "",
76
- className || ""
77
- ].join(" ")
78
- },
79
- /* @__PURE__ */ React.createElement(Filter, { className: "size-3" }),
80
- /* @__PURE__ */ React.createElement("span", null, triggerLabel),
81
- /* @__PURE__ */ React.createElement("span", { className: "rounded-full bg-p-warm px-1.5 py-px font-mono text-[9.5px] tabular-nums text-p-ink" }, visibleCount, /* @__PURE__ */ React.createElement("span", { className: "text-p-ink-3" }, "/", allKeys.length)),
82
- /* @__PURE__ */ React.createElement(
83
- ChevronDown,
66
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
67
+ /* @__PURE__ */ jsxs(
68
+ "button",
84
69
  {
70
+ ref: triggerRef,
71
+ type: "button",
72
+ onClick: () => setOpen((v) => !v),
73
+ "aria-haspopup": "menu",
74
+ "aria-expanded": open,
85
75
  className: [
86
- "size-3 transition-transform",
87
- open ? "rotate-180" : ""
88
- ].join(" ")
89
- }
90
- )
91
- ), open && pos && typeof document !== "undefined" ? createPortal(
92
- /* @__PURE__ */ React.createElement(
93
- "div",
94
- {
95
- id: "run-kanban-filter-menu",
96
- role: "menu",
97
- style: { left: pos.left, top: pos.top, width: 220 },
98
- className: "fixed z-[120] overflow-hidden rounded-md border border-p-line bg-p-surface shadow-[0_12px_40px_-16px_rgba(0,0,0,0.25)]"
99
- },
100
- /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between border-b border-p-line px-2.5 py-1.5" }, /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[9.5px] font-bold uppercase tracking-[0.18em] text-p-ink-3" }, "show lanes"), /* @__PURE__ */ React.createElement(
101
- "button",
102
- {
103
- type: "button",
104
- onClick: allOn ? clearAll : setAll,
105
- className: "font-mono text-[9.5px] font-bold uppercase tracking-[0.16em] text-p-ink-3 transition-colors cursor-pointer hover:text-p-ink"
106
- },
107
- allOn ? "clear" : "all"
108
- )),
109
- /* @__PURE__ */ React.createElement("ul", { className: "max-h-[280px] overflow-y-auto py-1" }, visibleLanes.map((lane) => {
110
- const active = value.has(lane.key);
111
- return /* @__PURE__ */ React.createElement("li", { key: lane.key }, /* @__PURE__ */ React.createElement(
112
- "button",
113
- {
114
- type: "button",
115
- role: "menuitemcheckbox",
116
- "aria-checked": active,
117
- onClick: () => toggle(lane.key),
118
- className: "flex w-full items-center gap-2 border-0 bg-transparent px-2.5 py-1.5 text-left transition-colors cursor-pointer hover:bg-p-warm"
119
- },
120
- /* @__PURE__ */ React.createElement(
121
- "span",
122
- {
123
- "aria-hidden": true,
124
- className: [
125
- "grid size-4 shrink-0 place-items-center rounded border",
126
- active ? "border-p-ink bg-p-ink text-p-bg" : "border-p-line bg-p-surface text-transparent"
127
- ].join(" ")
128
- },
129
- /* @__PURE__ */ React.createElement(Check, { className: "size-3" })
130
- ),
131
- lane.dotClassName ? /* @__PURE__ */ React.createElement(
132
- "span",
76
+ "inline-flex items-center gap-1.5 rounded-md border border-p-line bg-p-surface px-2.5 py-1 font-mono text-[10.5px] font-bold uppercase tracking-[0.16em] text-p-ink-2 transition-colors cursor-pointer hover:border-p-ink-3 hover:text-p-ink",
77
+ open ? "border-p-ink-3 text-p-ink" : "",
78
+ className || ""
79
+ ].join(" "),
80
+ children: [
81
+ /* @__PURE__ */ jsx(Filter, { className: "size-3" }),
82
+ /* @__PURE__ */ jsx("span", { children: triggerLabel }),
83
+ /* @__PURE__ */ jsxs("span", { className: "rounded-full bg-p-warm px-1.5 py-px font-mono text-[9.5px] tabular-nums text-p-ink", children: [
84
+ visibleCount,
85
+ /* @__PURE__ */ jsxs("span", { className: "text-p-ink-3", children: [
86
+ "/",
87
+ allKeys.length
88
+ ] })
89
+ ] }),
90
+ /* @__PURE__ */ jsx(
91
+ ChevronDown,
133
92
  {
134
- "aria-hidden": true,
135
93
  className: [
136
- "size-1.5 shrink-0 rounded-full",
137
- lane.dotClassName,
138
- active ? "" : "opacity-50"
94
+ "size-3 transition-transform",
95
+ open ? "rotate-180" : ""
139
96
  ].join(" ")
140
97
  }
141
- ) : null,
142
- /* @__PURE__ */ React.createElement("span", { className: "min-w-0 flex-1 truncate font-body text-[12.5px] text-p-ink" }, lane.label),
143
- /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10px] tabular-nums text-p-ink-3" }, lane.count)
144
- ));
145
- }))
98
+ )
99
+ ]
100
+ }
146
101
  ),
147
- document.body
148
- ) : null);
102
+ open && pos && typeof document !== "undefined" ? createPortal(
103
+ /* @__PURE__ */ jsxs(
104
+ "div",
105
+ {
106
+ id: "run-kanban-filter-menu",
107
+ role: "menu",
108
+ style: { left: pos.left, top: pos.top, width: 220 },
109
+ className: "fixed z-[120] overflow-hidden rounded-md border border-p-line bg-p-surface shadow-[0_12px_40px_-16px_rgba(0,0,0,0.25)]",
110
+ children: [
111
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-p-line px-2.5 py-1.5", children: [
112
+ /* @__PURE__ */ jsx("span", { className: "font-mono text-[9.5px] font-bold uppercase tracking-[0.18em] text-p-ink-3", children: "show lanes" }),
113
+ /* @__PURE__ */ jsx(
114
+ "button",
115
+ {
116
+ type: "button",
117
+ onClick: allOn ? clearAll : setAll,
118
+ className: "font-mono text-[9.5px] font-bold uppercase tracking-[0.16em] text-p-ink-3 transition-colors cursor-pointer hover:text-p-ink",
119
+ children: allOn ? "clear" : "all"
120
+ }
121
+ )
122
+ ] }),
123
+ /* @__PURE__ */ jsx("ul", { className: "max-h-[280px] overflow-y-auto py-1", children: visibleLanes.map((lane) => {
124
+ const active = value.has(lane.key);
125
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
126
+ "button",
127
+ {
128
+ type: "button",
129
+ role: "menuitemcheckbox",
130
+ "aria-checked": active,
131
+ onClick: () => toggle(lane.key),
132
+ className: "flex w-full items-center gap-2 border-0 bg-transparent px-2.5 py-1.5 text-left transition-colors cursor-pointer hover:bg-p-warm",
133
+ children: [
134
+ /* @__PURE__ */ jsx(
135
+ "span",
136
+ {
137
+ "aria-hidden": true,
138
+ className: [
139
+ "grid size-4 shrink-0 place-items-center rounded border",
140
+ active ? "border-p-ink bg-p-ink text-p-bg" : "border-p-line bg-p-surface text-transparent"
141
+ ].join(" "),
142
+ children: /* @__PURE__ */ jsx(Check, { className: "size-3" })
143
+ }
144
+ ),
145
+ lane.dotClassName ? /* @__PURE__ */ jsx(
146
+ "span",
147
+ {
148
+ "aria-hidden": true,
149
+ className: [
150
+ "size-1.5 shrink-0 rounded-full",
151
+ lane.dotClassName,
152
+ active ? "" : "opacity-50"
153
+ ].join(" ")
154
+ }
155
+ ) : null,
156
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-body text-[12.5px] text-p-ink", children: lane.label }),
157
+ /* @__PURE__ */ jsx("span", { className: "font-mono text-[10px] tabular-nums text-p-ink-3", children: lane.count })
158
+ ]
159
+ }
160
+ ) }, lane.key);
161
+ }) })
162
+ ]
163
+ }
164
+ ),
165
+ document.body
166
+ ) : null
167
+ ] });
149
168
  }
150
169
  export {
151
170
  RunKanbanFilterMenu
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { RunKanbanLabels } from './plan-types.js';
4
4
  import { SwarmRun, SwarmRunStatus, SwarmLabels } from './types.js';
@@ -55,7 +55,7 @@ interface RunKanbanFiltersProps {
55
55
  * checkmark dot. Click toggles the lane's visibility in the kanban.
56
56
  * Pure UI; the consumer holds the visibility set.
57
57
  */
58
- declare function RunKanbanFilters({ lanes, value, onChange, hideEmpty, className, }: RunKanbanFiltersProps): react.JSX.Element;
59
- declare function RunKanban({ runs, groupBy, now, renderAvatar, onCancel, onRetry, onOpen, statusOrder, visibleKeys, labels, swarmLabels, className, }: RunKanbanProps): react.JSX.Element;
58
+ declare function RunKanbanFilters({ lanes, value, onChange, hideEmpty, className, }: RunKanbanFiltersProps): react_jsx_runtime.JSX.Element;
59
+ declare function RunKanban({ runs, groupBy, now, renderAvatar, onCancel, onRetry, onOpen, statusOrder, visibleKeys, labels, swarmLabels, className, }: RunKanbanProps): react_jsx_runtime.JSX.Element;
60
60
 
61
61
  export { RunKanban, RunKanbanFilters, type RunKanbanFiltersProps, type RunKanbanGroupBy, type RunKanbanLaneSummary, type RunKanbanProps, summariseRunKanbanLanes };
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import { useMemo } from "react";
3
4
  import {
4
5
  defaultRunKanbanLabels
@@ -55,52 +56,56 @@ function RunKanbanFilters({
55
56
  onChange(next);
56
57
  };
57
58
  const allVisible = visibleLanes.every((l) => value.has(l.key));
58
- return /* @__PURE__ */ React.createElement(
59
+ return /* @__PURE__ */ jsxs(
59
60
  "div",
60
61
  {
61
62
  className: [
62
63
  "flex flex-wrap items-center gap-1.5",
63
64
  className || ""
64
- ].join(" ")
65
- },
66
- /* @__PURE__ */ React.createElement(
67
- "button",
68
- {
69
- type: "button",
70
- onClick: () => onChange(allVisible ? /* @__PURE__ */ new Set() : new Set(visibleLanes.map((l) => l.key))),
71
- className: "inline-flex items-center gap-1 rounded-full border border-p-line bg-p-surface px-2 py-1 font-mono text-[9.5px] font-bold uppercase tracking-[0.16em] text-p-ink-3 transition-colors cursor-pointer hover:border-p-ink-3 hover:text-p-ink"
72
- },
73
- allVisible ? "clear" : "all"
74
- ),
75
- visibleLanes.map((lane) => {
76
- const active = value.has(lane.key);
77
- return /* @__PURE__ */ React.createElement(
78
- "button",
79
- {
80
- key: lane.key,
81
- type: "button",
82
- onClick: () => toggle(lane.key),
83
- "aria-pressed": active,
84
- className: [
85
- "inline-flex items-center gap-1.5 rounded-full border px-2 py-1 font-mono text-[10px] font-bold uppercase tracking-[0.14em] transition-colors cursor-pointer",
86
- active ? "border-p-ink/20 bg-p-warm text-p-ink" : "border-p-line bg-p-surface text-p-ink-3 hover:border-p-ink-3 hover:text-p-ink"
87
- ].join(" ")
88
- },
89
- lane.dotClassName ? /* @__PURE__ */ React.createElement(
90
- "span",
65
+ ].join(" "),
66
+ children: [
67
+ /* @__PURE__ */ jsx(
68
+ "button",
91
69
  {
92
- "aria-hidden": true,
93
- className: [
94
- "size-1.5 rounded-full",
95
- lane.dotClassName,
96
- active ? "" : "opacity-60"
97
- ].join(" ")
70
+ type: "button",
71
+ onClick: () => onChange(allVisible ? /* @__PURE__ */ new Set() : new Set(visibleLanes.map((l) => l.key))),
72
+ className: "inline-flex items-center gap-1 rounded-full border border-p-line bg-p-surface px-2 py-1 font-mono text-[9.5px] font-bold uppercase tracking-[0.16em] text-p-ink-3 transition-colors cursor-pointer hover:border-p-ink-3 hover:text-p-ink",
73
+ children: allVisible ? "clear" : "all"
98
74
  }
99
- ) : null,
100
- /* @__PURE__ */ React.createElement("span", null, lane.label),
101
- /* @__PURE__ */ React.createElement("span", { className: "tabular-nums opacity-70" }, lane.count)
102
- );
103
- })
75
+ ),
76
+ visibleLanes.map((lane) => {
77
+ const active = value.has(lane.key);
78
+ return /* @__PURE__ */ jsxs(
79
+ "button",
80
+ {
81
+ type: "button",
82
+ onClick: () => toggle(lane.key),
83
+ "aria-pressed": active,
84
+ className: [
85
+ "inline-flex items-center gap-1.5 rounded-full border px-2 py-1 font-mono text-[10px] font-bold uppercase tracking-[0.14em] transition-colors cursor-pointer",
86
+ active ? "border-p-ink/20 bg-p-warm text-p-ink" : "border-p-line bg-p-surface text-p-ink-3 hover:border-p-ink-3 hover:text-p-ink"
87
+ ].join(" "),
88
+ children: [
89
+ lane.dotClassName ? /* @__PURE__ */ jsx(
90
+ "span",
91
+ {
92
+ "aria-hidden": true,
93
+ className: [
94
+ "size-1.5 rounded-full",
95
+ lane.dotClassName,
96
+ active ? "" : "opacity-60"
97
+ ].join(" ")
98
+ }
99
+ ) : null,
100
+ /* @__PURE__ */ jsx("span", { children: lane.label }),
101
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums opacity-70", children: lane.count })
102
+ ]
103
+ },
104
+ lane.key
105
+ );
106
+ })
107
+ ]
108
+ }
104
109
  );
105
110
  }
106
111
  const DEFAULT_STATUS_ORDER = [
@@ -164,7 +169,7 @@ function RunKanban({
164
169
  }));
165
170
  }, [runs, groupBy, statusOrder, L.scheduled, L.pending, L.running, L.done, L.failed, L.cancelled]);
166
171
  const renderedLanes = visibleKeys ? lanes.filter((l) => visibleKeys.has(l.key)) : lanes;
167
- return /* @__PURE__ */ React.createElement(
172
+ return /* @__PURE__ */ jsx(
168
173
  "div",
169
174
  {
170
175
  className: [
@@ -173,22 +178,22 @@ function RunKanban({
173
178
  // control) and in normal flow (the parent caps the height).
174
179
  "flex h-full min-h-0 gap-3 overflow-x-auto pb-2",
175
180
  className || ""
176
- ].join(" ")
177
- },
178
- renderedLanes.map((lane) => /* @__PURE__ */ React.createElement(
179
- KanbanLane,
180
- {
181
- key: lane.key,
182
- lane,
183
- now,
184
- renderAvatar,
185
- onCancel,
186
- onRetry,
187
- onOpen,
188
- emptyLabel: L.emptyLane,
189
- swarmLabels
190
- }
191
- ))
181
+ ].join(" "),
182
+ children: renderedLanes.map((lane) => /* @__PURE__ */ jsx(
183
+ KanbanLane,
184
+ {
185
+ lane,
186
+ now,
187
+ renderAvatar,
188
+ onCancel,
189
+ onRetry,
190
+ onOpen,
191
+ emptyLabel: L.emptyLane,
192
+ swarmLabels
193
+ },
194
+ lane.key
195
+ ))
196
+ }
192
197
  );
193
198
  }
194
199
  function KanbanLane({
@@ -203,29 +208,38 @@ function KanbanLane({
203
208
  }) {
204
209
  const merged = { ...defaultSwarmLabels, ...swarmLabels };
205
210
  const dot = lane.dotClassName ?? (lane.runs[0]?.agent.color ? "" : "bg-p-ink-3");
206
- return /* @__PURE__ */ React.createElement("section", { className: "flex h-full min-h-0 w-[280px] shrink-0 flex-col rounded-2xl border border-p-line bg-p-bg/60" }, /* @__PURE__ */ React.createElement("header", { className: "flex shrink-0 items-center justify-between gap-2 px-3 py-2" }, /* @__PURE__ */ React.createElement("span", { className: "inline-flex items-center gap-2" }, lane.dotClassName ? /* @__PURE__ */ React.createElement(
207
- "span",
208
- {
209
- "aria-hidden": true,
210
- className: [
211
- "size-1.5 rounded-full",
212
- dot,
213
- lane.status === "running" ? "animate-pulse" : ""
214
- ].join(" ")
215
- }
216
- ) : null, /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10px] font-bold uppercase tracking-[0.22em] text-p-ink-2" }, lane.label)), /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10px] tabular-nums text-p-ink-3" }, String(lane.runs.length).padStart(2, "0"))), /* @__PURE__ */ React.createElement("div", { className: "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto px-2 pb-2" }, lane.runs.length === 0 ? /* @__PURE__ */ React.createElement("span", { className: "px-2 py-6 text-center font-mono text-[10.5px] uppercase tracking-[0.16em] text-p-ink-3" }, emptyLabel) : lane.runs.map((r) => /* @__PURE__ */ React.createElement(
217
- SwarmRunCard,
218
- {
219
- key: r.id,
220
- run: r,
221
- now,
222
- renderAvatar,
223
- onCancel,
224
- onRetry,
225
- onOpen,
226
- labels: merged
227
- }
228
- ))));
211
+ return /* @__PURE__ */ jsxs("section", { className: "flex h-full min-h-0 w-[280px] shrink-0 flex-col rounded-2xl border border-p-line bg-p-bg/60", children: [
212
+ /* @__PURE__ */ jsxs("header", { className: "flex shrink-0 items-center justify-between gap-2 px-3 py-2", children: [
213
+ /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
214
+ lane.dotClassName ? /* @__PURE__ */ jsx(
215
+ "span",
216
+ {
217
+ "aria-hidden": true,
218
+ className: [
219
+ "size-1.5 rounded-full",
220
+ dot,
221
+ lane.status === "running" ? "animate-pulse" : ""
222
+ ].join(" ")
223
+ }
224
+ ) : null,
225
+ /* @__PURE__ */ jsx("span", { className: "font-mono text-[10px] font-bold uppercase tracking-[0.22em] text-p-ink-2", children: lane.label })
226
+ ] }),
227
+ /* @__PURE__ */ jsx("span", { className: "font-mono text-[10px] tabular-nums text-p-ink-3", children: String(lane.runs.length).padStart(2, "0") })
228
+ ] }),
229
+ /* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto px-2 pb-2", children: lane.runs.length === 0 ? /* @__PURE__ */ jsx("span", { className: "px-2 py-6 text-center font-mono text-[10.5px] uppercase tracking-[0.16em] text-p-ink-3", children: emptyLabel }) : lane.runs.map((r) => /* @__PURE__ */ jsx(
230
+ SwarmRunCard,
231
+ {
232
+ run: r,
233
+ now,
234
+ renderAvatar,
235
+ onCancel,
236
+ onRetry,
237
+ onOpen,
238
+ labels: merged
239
+ },
240
+ r.id
241
+ )) })
242
+ ] });
229
243
  }
230
244
  export {
231
245
  RunKanban,
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { SwarmAgentRef } from './types.js';
4
4
 
@@ -10,6 +10,6 @@ interface SwarmAgentBadgeProps {
10
10
  showName?: boolean;
11
11
  className?: string;
12
12
  }
13
- declare function SwarmAgentBadge({ agent, avatar, size, showName, className, }: SwarmAgentBadgeProps): react.JSX.Element;
13
+ declare function SwarmAgentBadge({ agent, avatar, size, showName, className, }: SwarmAgentBadgeProps): react_jsx_runtime.JSX.Element;
14
14
 
15
15
  export { SwarmAgentBadge, type SwarmAgentBadgeProps };
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
2
3
  function SwarmAgentBadge({
3
4
  agent,
4
5
  avatar,
@@ -9,29 +10,31 @@ function SwarmAgentBadge({
9
10
  const px = size === "sm" ? 18 : 22;
10
11
  const txt = size === "sm" ? "text-[11px]" : "text-[12px]";
11
12
  const glyph = agent.glyph || (agent.displayName || agent.name).charAt(0).toUpperCase();
12
- return /* @__PURE__ */ React.createElement(
13
+ return /* @__PURE__ */ jsxs(
13
14
  "span",
14
15
  {
15
16
  className: [
16
17
  "inline-flex items-center gap-2",
17
18
  className || ""
18
- ].join(" ")
19
- },
20
- avatar ?? /* @__PURE__ */ React.createElement(
21
- "span",
22
- {
23
- "aria-hidden": true,
24
- className: "grid shrink-0 place-items-center rounded font-display font-bold text-white",
25
- style: {
26
- width: px,
27
- height: px,
28
- background: agent.color || "#999",
29
- fontSize: px <= 18 ? 10 : 11
30
- }
31
- },
32
- glyph
33
- ),
34
- showName ? /* @__PURE__ */ React.createElement("span", { className: [txt, "font-semibold text-p-ink truncate"].join(" ") }, agent.displayName || agent.name) : null
19
+ ].join(" "),
20
+ children: [
21
+ avatar ?? /* @__PURE__ */ jsx(
22
+ "span",
23
+ {
24
+ "aria-hidden": true,
25
+ className: "grid shrink-0 place-items-center rounded font-display font-bold text-white",
26
+ style: {
27
+ width: px,
28
+ height: px,
29
+ background: agent.color || "#999",
30
+ fontSize: px <= 18 ? 10 : 11
31
+ },
32
+ children: glyph
33
+ }
34
+ ),
35
+ showName ? /* @__PURE__ */ jsx("span", { className: [txt, "font-semibold text-p-ink truncate"].join(" "), children: agent.displayName || agent.name }) : null
36
+ ]
37
+ }
35
38
  );
36
39
  }
37
40
  export {
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
  import { SwarmRunEvent, SwarmRunActivity, SwarmAgentRef, SwarmRun } from './types.js';
4
4
 
@@ -34,6 +34,6 @@ interface SwarmRunActivityStreamProps {
34
34
  emptyLabel?: string;
35
35
  className?: string;
36
36
  }
37
- declare function SwarmRunActivityStream({ events, agents, renderToolCall, renderMarkdown, renderEvent, peek, emptyLabel, className, }: SwarmRunActivityStreamProps): react.JSX.Element;
37
+ declare function SwarmRunActivityStream({ events, agents, renderToolCall, renderMarkdown, renderEvent, peek, emptyLabel, className, }: SwarmRunActivityStreamProps): react_jsx_runtime.JSX.Element;
38
38
 
39
39
  export { type BuildSwarmRunActivityOptions, SwarmRunActivityStream, type SwarmRunActivityStreamProps, buildSwarmRunActivity };