@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 { useMemo } from "react";
3
4
  import {
4
5
  ArrowRight,
@@ -28,30 +29,38 @@ function PlanCheckpointDetail({
28
29
  const L = useMergedLabels(labels);
29
30
  const after = checkpoint.afterTasks ?? [];
30
31
  const blocks = checkpoint.blocksTasks ?? [];
31
- return /* @__PURE__ */ React.createElement(
32
+ return /* @__PURE__ */ jsxs(
32
33
  Frame,
33
34
  {
34
35
  tone: CHECKPOINT_TONE,
35
36
  kind: L.checkpoint,
36
- icon: /* @__PURE__ */ React.createElement(Hourglass, { className: "size-3.5", "aria-hidden": true }),
37
+ icon: /* @__PURE__ */ jsx(Hourglass, { className: "size-3.5", "aria-hidden": true }),
37
38
  name: checkpoint.name,
38
39
  headerTrailing,
39
40
  actionsSlot,
40
- className
41
- },
42
- checkpoint.message ? /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Kicker, null, "review prompt"), /* @__PURE__ */ React.createElement("p", { className: "mt-1 font-body text-[13px] leading-[1.55] text-p-ink-2" }, checkpoint.message)) : null,
43
- /* @__PURE__ */ React.createElement(MetaGrid, null, /* @__PURE__ */ React.createElement(Cell, { label: "kind" }, /* @__PURE__ */ React.createElement(ChipText, { tone: CHECKPOINT_TONE }, L.checkpoint)), /* @__PURE__ */ React.createElement(Cell, { label: "gates" }, /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.14em] text-p-ink" }, "human review"))),
44
- /* @__PURE__ */ React.createElement(
45
- RelatedSections,
46
- {
47
- after,
48
- blocks,
49
- runtimeByTitle,
50
- plan,
51
- onOpenRelated,
52
- L
53
- }
54
- )
41
+ className,
42
+ children: [
43
+ checkpoint.message ? /* @__PURE__ */ jsxs(Section, { children: [
44
+ /* @__PURE__ */ jsx(Kicker, { children: "review prompt" }),
45
+ /* @__PURE__ */ jsx("p", { className: "mt-1 font-body text-[13px] leading-[1.55] text-p-ink-2", children: checkpoint.message })
46
+ ] }) : null,
47
+ /* @__PURE__ */ jsxs(MetaGrid, { children: [
48
+ /* @__PURE__ */ jsx(Cell, { label: "kind", children: /* @__PURE__ */ jsx(ChipText, { tone: CHECKPOINT_TONE, children: L.checkpoint }) }),
49
+ /* @__PURE__ */ jsx(Cell, { label: "gates", children: /* @__PURE__ */ jsx("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.14em] text-p-ink", children: "human review" }) })
50
+ ] }),
51
+ /* @__PURE__ */ jsx(
52
+ RelatedSections,
53
+ {
54
+ after,
55
+ blocks,
56
+ runtimeByTitle,
57
+ plan,
58
+ onOpenRelated,
59
+ L
60
+ }
61
+ )
62
+ ]
63
+ }
55
64
  );
56
65
  }
57
66
  function PlanQualityGateDetail({
@@ -67,30 +76,41 @@ function PlanQualityGateDetail({
67
76
  const L = useMergedLabels(labels);
68
77
  const after = gate.afterTasks ?? [];
69
78
  const blocks = gate.blocksTasks ?? [];
70
- return /* @__PURE__ */ React.createElement(
79
+ return /* @__PURE__ */ jsxs(
71
80
  Frame,
72
81
  {
73
82
  tone: GATE_TONE,
74
83
  kind: L.qualityGate,
75
- icon: /* @__PURE__ */ React.createElement(ShieldCheck, { className: "size-3.5", "aria-hidden": true }),
84
+ icon: /* @__PURE__ */ jsx(ShieldCheck, { className: "size-3.5", "aria-hidden": true }),
76
85
  name: gate.name,
77
86
  headerTrailing,
78
87
  actionsSlot,
79
- className
80
- },
81
- gate.condition ? /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Kicker, null, "condition"), /* @__PURE__ */ React.createElement("p", { className: "mt-1 font-body text-[13px] leading-[1.55] text-p-ink-2" }, gate.condition)) : null,
82
- /* @__PURE__ */ React.createElement(MetaGrid, null, /* @__PURE__ */ React.createElement(Cell, { label: L.qualityMinScore }, typeof gate.minScore === "number" ? /* @__PURE__ */ React.createElement("span", { className: "font-display text-[16px] font-bold tabular-nums text-p-ink" }, gate.minScore, /* @__PURE__ */ React.createElement("span", { className: "ml-0.5 font-mono text-[10px] font-bold uppercase tracking-[0.14em] text-p-ink-3" }, "/10")) : /* @__PURE__ */ React.createElement(Dash, null)), /* @__PURE__ */ React.createElement(Cell, { label: L.qualityRequireAll }, /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10.5px] font-bold uppercase tracking-[0.14em] text-p-ink" }, gate.requireAllPassed ? "yes" : "no"))),
83
- /* @__PURE__ */ React.createElement(
84
- RelatedSections,
85
- {
86
- after,
87
- blocks,
88
- runtimeByTitle,
89
- plan,
90
- onOpenRelated,
91
- L
92
- }
93
- )
88
+ className,
89
+ children: [
90
+ gate.condition ? /* @__PURE__ */ jsxs(Section, { children: [
91
+ /* @__PURE__ */ jsx(Kicker, { children: "condition" }),
92
+ /* @__PURE__ */ jsx("p", { className: "mt-1 font-body text-[13px] leading-[1.55] text-p-ink-2", children: gate.condition })
93
+ ] }) : null,
94
+ /* @__PURE__ */ jsxs(MetaGrid, { children: [
95
+ /* @__PURE__ */ jsx(Cell, { label: L.qualityMinScore, children: typeof gate.minScore === "number" ? /* @__PURE__ */ jsxs("span", { className: "font-display text-[16px] font-bold tabular-nums text-p-ink", children: [
96
+ gate.minScore,
97
+ /* @__PURE__ */ jsx("span", { className: "ml-0.5 font-mono text-[10px] font-bold uppercase tracking-[0.14em] text-p-ink-3", children: "/10" })
98
+ ] }) : /* @__PURE__ */ jsx(Dash, {}) }),
99
+ /* @__PURE__ */ jsx(Cell, { label: L.qualityRequireAll, children: /* @__PURE__ */ jsx("span", { className: "font-mono text-[10.5px] font-bold uppercase tracking-[0.14em] text-p-ink", children: gate.requireAllPassed ? "yes" : "no" }) })
100
+ ] }),
101
+ /* @__PURE__ */ jsx(
102
+ RelatedSections,
103
+ {
104
+ after,
105
+ blocks,
106
+ runtimeByTitle,
107
+ plan,
108
+ onOpenRelated,
109
+ L
110
+ }
111
+ )
112
+ ]
113
+ }
94
114
  );
95
115
  }
96
116
  function PlanDelayDetail({
@@ -107,30 +127,38 @@ function PlanDelayDetail({
107
127
  const after = delay.afterTasks ?? [];
108
128
  const blocks = delay.blocksTasks ?? [];
109
129
  const human = useMemo(() => parseIsoDuration(delay.duration), [delay.duration]);
110
- return /* @__PURE__ */ React.createElement(
130
+ return /* @__PURE__ */ jsxs(
111
131
  Frame,
112
132
  {
113
133
  tone: DELAY_TONE,
114
134
  kind: L.delay,
115
- icon: /* @__PURE__ */ React.createElement(Clock, { className: "size-3.5", "aria-hidden": true }),
135
+ icon: /* @__PURE__ */ jsx(Clock, { className: "size-3.5", "aria-hidden": true }),
116
136
  name: delay.name,
117
137
  headerTrailing,
118
138
  actionsSlot,
119
- className
120
- },
121
- delay.message ? /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Kicker, null, "note"), /* @__PURE__ */ React.createElement("p", { className: "mt-1 font-body text-[13px] leading-[1.55] text-p-ink-2" }, delay.message)) : null,
122
- /* @__PURE__ */ React.createElement(MetaGrid, null, /* @__PURE__ */ React.createElement(Cell, { label: "duration" }, /* @__PURE__ */ React.createElement("span", { className: "font-display text-[18px] font-bold tabular-nums text-p-ink" }, human)), /* @__PURE__ */ React.createElement(Cell, { label: "iso" }, /* @__PURE__ */ React.createElement("code", { className: "font-mono text-[11px] tracking-[0.04em] text-p-ink-2" }, delay.duration))),
123
- /* @__PURE__ */ React.createElement(
124
- RelatedSections,
125
- {
126
- after,
127
- blocks,
128
- runtimeByTitle,
129
- plan,
130
- onOpenRelated,
131
- L
132
- }
133
- )
139
+ className,
140
+ children: [
141
+ delay.message ? /* @__PURE__ */ jsxs(Section, { children: [
142
+ /* @__PURE__ */ jsx(Kicker, { children: "note" }),
143
+ /* @__PURE__ */ jsx("p", { className: "mt-1 font-body text-[13px] leading-[1.55] text-p-ink-2", children: delay.message })
144
+ ] }) : null,
145
+ /* @__PURE__ */ jsxs(MetaGrid, { children: [
146
+ /* @__PURE__ */ jsx(Cell, { label: "duration", children: /* @__PURE__ */ jsx("span", { className: "font-display text-[18px] font-bold tabular-nums text-p-ink", children: human }) }),
147
+ /* @__PURE__ */ jsx(Cell, { label: "iso", children: /* @__PURE__ */ jsx("code", { className: "font-mono text-[11px] tracking-[0.04em] text-p-ink-2", children: delay.duration }) })
148
+ ] }),
149
+ /* @__PURE__ */ jsx(
150
+ RelatedSections,
151
+ {
152
+ after,
153
+ blocks,
154
+ runtimeByTitle,
155
+ plan,
156
+ onOpenRelated,
157
+ L
158
+ }
159
+ )
160
+ ]
161
+ }
134
162
  );
135
163
  }
136
164
  const CHECKPOINT_TONE = {
@@ -164,41 +192,48 @@ function Frame({
164
192
  actionsSlot,
165
193
  className
166
194
  }) {
167
- return /* @__PURE__ */ React.createElement(
195
+ return /* @__PURE__ */ jsxs(
168
196
  "article",
169
197
  {
170
198
  className: [
171
199
  "flex h-full min-h-0 flex-col overflow-hidden bg-p-surface",
172
200
  className || ""
173
- ].join(" ")
174
- },
175
- /* @__PURE__ */ React.createElement(
176
- "header",
177
- {
178
- className: "flex shrink-0 items-start gap-3 border-b border-p-line px-5 py-4",
179
- style: { background: tone.bg }
180
- },
181
- /* @__PURE__ */ React.createElement(
182
- "span",
183
- {
184
- "aria-hidden": true,
185
- className: "mt-0.5 grid size-7 shrink-0 place-items-center rounded-full bg-p-surface ring-1",
186
- style: { color: tone.fg, boxShadow: `inset 0 0 0 1px ${tone.border}` }
187
- },
188
- icon
189
- ),
190
- /* @__PURE__ */ React.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React.createElement(
191
- "div",
192
- {
193
- className: "font-mono text-[10px] font-bold uppercase tracking-[0.22em]",
194
- style: { color: tone.fg }
195
- },
196
- kind
197
- ), /* @__PURE__ */ React.createElement("h3", { className: "mt-1 font-display text-[18px] font-bold leading-tight tracking-[-0.01em] text-p-ink" }, name)),
198
- headerTrailing
199
- ),
200
- /* @__PURE__ */ React.createElement("div", { className: "flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-5 py-4" }, children),
201
- actionsSlot ? /* @__PURE__ */ React.createElement("footer", { className: "flex shrink-0 items-center justify-end gap-2 border-t border-p-line bg-p-bg/50 px-5 py-3" }, actionsSlot) : null
201
+ ].join(" "),
202
+ children: [
203
+ /* @__PURE__ */ jsxs(
204
+ "header",
205
+ {
206
+ className: "flex shrink-0 items-start gap-3 border-b border-p-line px-5 py-4",
207
+ style: { background: tone.bg },
208
+ children: [
209
+ /* @__PURE__ */ jsx(
210
+ "span",
211
+ {
212
+ "aria-hidden": true,
213
+ className: "mt-0.5 grid size-7 shrink-0 place-items-center rounded-full bg-p-surface ring-1",
214
+ style: { color: tone.fg, boxShadow: `inset 0 0 0 1px ${tone.border}` },
215
+ children: icon
216
+ }
217
+ ),
218
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
219
+ /* @__PURE__ */ jsx(
220
+ "div",
221
+ {
222
+ className: "font-mono text-[10px] font-bold uppercase tracking-[0.22em]",
223
+ style: { color: tone.fg },
224
+ children: kind
225
+ }
226
+ ),
227
+ /* @__PURE__ */ jsx("h3", { className: "mt-1 font-display text-[18px] font-bold leading-tight tracking-[-0.01em] text-p-ink", children: name })
228
+ ] }),
229
+ headerTrailing
230
+ ]
231
+ }
232
+ ),
233
+ /* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-5 py-4", children }),
234
+ actionsSlot ? /* @__PURE__ */ jsx("footer", { className: "flex shrink-0 items-center justify-end gap-2 border-t border-p-line bg-p-bg/50 px-5 py-3", children: actionsSlot }) : null
235
+ ]
236
+ }
202
237
  );
203
238
  }
204
239
  const STATUS_ICON = {
@@ -224,34 +259,40 @@ function useMergedLabels(labels) {
224
259
  );
225
260
  }
226
261
  function Section({ children }) {
227
- return /* @__PURE__ */ React.createElement("section", null, children);
262
+ return /* @__PURE__ */ jsx("section", { children });
228
263
  }
229
264
  function MetaGrid({ children }) {
230
- return /* @__PURE__ */ React.createElement("section", { className: "grid grid-cols-2 gap-px overflow-hidden rounded-md border border-p-line bg-p-line text-[11px]" }, children);
265
+ return /* @__PURE__ */ jsx("section", { className: "grid grid-cols-2 gap-px overflow-hidden rounded-md border border-p-line bg-p-line text-[11px]", children });
231
266
  }
232
267
  function Cell({ label, children }) {
233
- return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-1 bg-p-surface px-3 py-2" }, /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[9.5px] font-bold uppercase tracking-[0.18em] text-p-ink-3" }, label), /* @__PURE__ */ React.createElement("span", { className: "min-h-[18px]" }, children));
268
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 bg-p-surface px-3 py-2", children: [
269
+ /* @__PURE__ */ jsx("span", { className: "font-mono text-[9.5px] font-bold uppercase tracking-[0.18em] text-p-ink-3", children: label }),
270
+ /* @__PURE__ */ jsx("span", { className: "min-h-[18px]", children })
271
+ ] });
234
272
  }
235
273
  function Kicker({
236
274
  children,
237
275
  icon
238
276
  }) {
239
- return /* @__PURE__ */ React.createElement("span", { className: "inline-flex items-center gap-1.5 font-mono text-[10px] font-bold uppercase tracking-[0.22em] text-p-ink-3" }, icon, children);
277
+ return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 font-mono text-[10px] font-bold uppercase tracking-[0.22em] text-p-ink-3", children: [
278
+ icon,
279
+ children
280
+ ] });
240
281
  }
241
282
  function Dash() {
242
- return /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.14em] text-p-ink-3" }, "\u2014");
283
+ return /* @__PURE__ */ jsx("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.14em] text-p-ink-3", children: "\u2014" });
243
284
  }
244
285
  function ChipText({
245
286
  tone,
246
287
  children
247
288
  }) {
248
- return /* @__PURE__ */ React.createElement(
289
+ return /* @__PURE__ */ jsx(
249
290
  "span",
250
291
  {
251
292
  className: "inline-flex items-center rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-bold uppercase tracking-[0.16em]",
252
- style: { background: tone.chipBg, color: tone.chipFg }
253
- },
254
- children
293
+ style: { background: tone.chipBg, color: tone.chipFg },
294
+ children
295
+ }
255
296
  );
256
297
  }
257
298
  function RelatedSections({
@@ -270,27 +311,36 @@ function RelatedSections({
270
311
  const safeAfter = filterValid(after);
271
312
  const safeBlocks = filterValid(blocks);
272
313
  if (safeAfter.length === 0 && safeBlocks.length === 0) {
273
- return /* @__PURE__ */ React.createElement("section", { className: "flex flex-col items-center gap-2 rounded-md border border-dashed border-p-line bg-p-bg p-6 text-center" }, /* @__PURE__ */ React.createElement("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.16em] text-p-ink-3" }, "standalone \u2014 not gating any task"));
314
+ return /* @__PURE__ */ jsx("section", { className: "flex flex-col items-center gap-2 rounded-md border border-dashed border-p-line bg-p-bg p-6 text-center", children: /* @__PURE__ */ jsx("span", { className: "font-mono text-[10.5px] uppercase tracking-[0.16em] text-p-ink-3", children: "standalone \u2014 not gating any task" }) });
274
315
  }
275
- return /* @__PURE__ */ React.createElement(React.Fragment, null, safeAfter.length > 0 ? /* @__PURE__ */ React.createElement("section", null, /* @__PURE__ */ React.createElement(Kicker, { icon: /* @__PURE__ */ React.createElement(ArrowRight, { className: "size-2.5 rotate-180" }) }, "after"), /* @__PURE__ */ React.createElement("ol", { className: "mt-1 flex flex-col gap-0.5" }, safeAfter.map((title) => /* @__PURE__ */ React.createElement(
276
- RelatedRow,
277
- {
278
- key: title,
279
- title,
280
- runtime: runtimeByTitle?.get(title),
281
- onOpen: onOpenRelated,
282
- L
283
- }
284
- )))) : null, safeBlocks.length > 0 ? /* @__PURE__ */ React.createElement("section", null, /* @__PURE__ */ React.createElement(Kicker, { icon: /* @__PURE__ */ React.createElement(ArrowRight, { className: "size-2.5" }) }, "blocks"), /* @__PURE__ */ React.createElement("ol", { className: "mt-1 flex flex-col gap-0.5" }, safeBlocks.map((title) => /* @__PURE__ */ React.createElement(
285
- RelatedRow,
286
- {
287
- key: title,
288
- title,
289
- runtime: runtimeByTitle?.get(title),
290
- onOpen: onOpenRelated,
291
- L
292
- }
293
- )))) : null);
316
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
317
+ safeAfter.length > 0 ? /* @__PURE__ */ jsxs("section", { children: [
318
+ /* @__PURE__ */ jsx(Kicker, { icon: /* @__PURE__ */ jsx(ArrowRight, { className: "size-2.5 rotate-180" }), children: "after" }),
319
+ /* @__PURE__ */ jsx("ol", { className: "mt-1 flex flex-col gap-0.5", children: safeAfter.map((title) => /* @__PURE__ */ jsx(
320
+ RelatedRow,
321
+ {
322
+ title,
323
+ runtime: runtimeByTitle?.get(title),
324
+ onOpen: onOpenRelated,
325
+ L
326
+ },
327
+ title
328
+ )) })
329
+ ] }) : null,
330
+ safeBlocks.length > 0 ? /* @__PURE__ */ jsxs("section", { children: [
331
+ /* @__PURE__ */ jsx(Kicker, { icon: /* @__PURE__ */ jsx(ArrowRight, { className: "size-2.5" }), children: "blocks" }),
332
+ /* @__PURE__ */ jsx("ol", { className: "mt-1 flex flex-col gap-0.5", children: safeBlocks.map((title) => /* @__PURE__ */ jsx(
333
+ RelatedRow,
334
+ {
335
+ title,
336
+ runtime: runtimeByTitle?.get(title),
337
+ onOpen: onOpenRelated,
338
+ L
339
+ },
340
+ title
341
+ )) })
342
+ ] }) : null
343
+ ] });
294
344
  }
295
345
  function RelatedRow({
296
346
  title,
@@ -303,7 +353,7 @@ function RelatedRow({
303
353
  const tone = STATUS_TONE[status];
304
354
  const interactive = !!onOpen;
305
355
  const Wrapper = interactive ? "button" : "div";
306
- return /* @__PURE__ */ React.createElement(
356
+ return /* @__PURE__ */ jsxs(
307
357
  Wrapper,
308
358
  {
309
359
  type: interactive ? "button" : void 0,
@@ -311,20 +361,22 @@ function RelatedRow({
311
361
  className: [
312
362
  "group flex items-center gap-2 rounded-md border border-p-line bg-p-surface px-2.5 py-1.5 text-left transition-colors",
313
363
  interactive ? "cursor-pointer hover:border-p-ink-3 hover:bg-p-warm/40" : ""
314
- ].join(" ")
315
- },
316
- /* @__PURE__ */ React.createElement(Icon, { className: ["size-3 shrink-0", tone].join(" "), "aria-hidden": true }),
317
- /* @__PURE__ */ React.createElement("span", { className: "min-w-0 flex-1 truncate font-display text-[12.5px] font-semibold text-p-ink" }, title),
318
- /* @__PURE__ */ React.createElement(
319
- "span",
320
- {
321
- className: [
322
- "shrink-0 font-mono text-[9.5px] font-bold uppercase tracking-[0.16em]",
323
- tone
324
- ].join(" ")
325
- },
326
- L.status[status]
327
- )
364
+ ].join(" "),
365
+ children: [
366
+ /* @__PURE__ */ jsx(Icon, { className: ["size-3 shrink-0", tone].join(" "), "aria-hidden": true }),
367
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-display text-[12.5px] font-semibold text-p-ink", children: title }),
368
+ /* @__PURE__ */ jsx(
369
+ "span",
370
+ {
371
+ className: [
372
+ "shrink-0 font-mono text-[9.5px] font-bold uppercase tracking-[0.16em]",
373
+ tone
374
+ ].join(" "),
375
+ children: L.status[status]
376
+ }
377
+ )
378
+ ]
379
+ }
328
380
  );
329
381
  }
330
382
  function parseIsoDuration(iso) {
@@ -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 { PlanTask, Plan, PlanTaskRuntime, PlanGraphLabels } from './plan-types.js';
4
4
  import { SwarmAgentRef } from './types.js';
@@ -71,6 +71,6 @@ interface PlanTaskDetailProps {
71
71
  labels?: Partial<PlanGraphLabels>;
72
72
  className?: string;
73
73
  }
74
- declare function PlanTaskDetail({ task, plan, runtimeByTitle, agents, variant, headerTrailing, actionsSlot, actions, confirm, onOpenRelated, renderMarkdown, labels, className, }: PlanTaskDetailProps): react.JSX.Element;
74
+ declare function PlanTaskDetail({ task, plan, runtimeByTitle, agents, variant, headerTrailing, actionsSlot, actions, confirm, onOpenRelated, renderMarkdown, labels, className, }: PlanTaskDetailProps): react_jsx_runtime.JSX.Element;
75
75
 
76
76
  export { type PlanTaskActionConfig, type PlanTaskActions, type PlanTaskConfirmFn, PlanTaskDetail, type PlanTaskDetailProps, type PlanTaskDetailVariant };