@xyne/workflow-ui 1.3.10 → 1.3.12

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 (233) hide show
  1. package/dist/components/builder/AddStepButton.d.ts +6 -0
  2. package/dist/components/builder/AddStepButton.d.ts.map +1 -0
  3. package/dist/components/builder/AddStepButton.js +7 -0
  4. package/dist/components/builder/AddStepButton.js.map +1 -0
  5. package/dist/components/builder/BranchEdge.d.ts +3 -0
  6. package/dist/components/builder/BranchEdge.d.ts.map +1 -0
  7. package/dist/components/builder/BranchEdge.js +19 -0
  8. package/dist/components/builder/BranchEdge.js.map +1 -0
  9. package/dist/components/builder/BuilderToolbar.d.ts +10 -0
  10. package/dist/components/builder/BuilderToolbar.d.ts.map +1 -0
  11. package/dist/components/builder/BuilderToolbar.js +16 -0
  12. package/dist/components/builder/BuilderToolbar.js.map +1 -0
  13. package/dist/components/builder/StepConfigDrawer.d.ts +11 -0
  14. package/dist/components/builder/StepConfigDrawer.d.ts.map +1 -0
  15. package/dist/components/builder/StepConfigDrawer.js +21 -0
  16. package/dist/components/builder/StepConfigDrawer.js.map +1 -0
  17. package/dist/components/builder/StepNode.d.ts +15 -0
  18. package/dist/components/builder/StepNode.d.ts.map +1 -0
  19. package/dist/components/builder/StepNode.js +56 -0
  20. package/dist/components/builder/StepNode.js.map +1 -0
  21. package/dist/components/builder/StepPalette.d.ts +7 -0
  22. package/dist/components/builder/StepPalette.d.ts.map +1 -0
  23. package/dist/components/builder/StepPalette.js +83 -0
  24. package/dist/components/builder/StepPalette.js.map +1 -0
  25. package/dist/components/builder/StepPicker.d.ts +9 -0
  26. package/dist/components/builder/StepPicker.d.ts.map +1 -0
  27. package/dist/components/builder/StepPicker.js +95 -0
  28. package/dist/components/builder/StepPicker.js.map +1 -0
  29. package/dist/components/builder/TriggerConfigPanel.d.ts +10 -0
  30. package/dist/components/builder/TriggerConfigPanel.d.ts.map +1 -0
  31. package/dist/components/builder/TriggerConfigPanel.js +49 -0
  32. package/dist/components/builder/TriggerConfigPanel.js.map +1 -0
  33. package/dist/components/builder/TriggerNode.d.ts +9 -0
  34. package/dist/components/builder/TriggerNode.d.ts.map +1 -0
  35. package/dist/components/builder/TriggerNode.js +30 -0
  36. package/dist/components/builder/TriggerNode.js.map +1 -0
  37. package/dist/components/builder/TriggerPicker.d.ts +8 -0
  38. package/dist/components/builder/TriggerPicker.d.ts.map +1 -0
  39. package/dist/components/builder/TriggerPicker.js +61 -0
  40. package/dist/components/builder/TriggerPicker.js.map +1 -0
  41. package/dist/components/builder/WorkflowBuilder.d.ts +20 -0
  42. package/dist/components/builder/WorkflowBuilder.d.ts.map +1 -0
  43. package/dist/components/builder/WorkflowBuilder.js +157 -0
  44. package/dist/components/builder/WorkflowBuilder.js.map +1 -0
  45. package/dist/components/builder/edge-types.d.ts +3 -0
  46. package/dist/components/builder/edge-types.d.ts.map +1 -0
  47. package/dist/components/builder/edge-types.js +5 -0
  48. package/dist/components/builder/edge-types.js.map +1 -0
  49. package/dist/components/builder/node-types.d.ts +3 -0
  50. package/dist/components/builder/node-types.d.ts.map +1 -0
  51. package/dist/components/builder/node-types.js +11 -0
  52. package/dist/components/builder/node-types.js.map +1 -0
  53. package/dist/components/builder/v2/AddStepButton.d.ts +6 -0
  54. package/dist/components/builder/v2/AddStepButton.d.ts.map +1 -0
  55. package/dist/components/builder/v2/AddStepButton.js +6 -0
  56. package/dist/components/builder/v2/AddStepButton.js.map +1 -0
  57. package/dist/components/builder/v2/BranchEdge.d.ts +3 -0
  58. package/dist/components/builder/v2/BranchEdge.d.ts.map +1 -0
  59. package/dist/components/builder/v2/BranchEdge.js +46 -0
  60. package/dist/components/builder/v2/BranchEdge.js.map +1 -0
  61. package/dist/components/builder/v2/LoopBodyEdge.d.ts +7 -0
  62. package/dist/components/builder/v2/LoopBodyEdge.d.ts.map +1 -0
  63. package/dist/components/builder/v2/LoopBodyEdge.js +19 -0
  64. package/dist/components/builder/v2/LoopBodyEdge.js.map +1 -0
  65. package/dist/components/builder/v2/LoopbackEdge.d.ts +10 -0
  66. package/dist/components/builder/v2/LoopbackEdge.d.ts.map +1 -0
  67. package/dist/components/builder/v2/LoopbackEdge.js +26 -0
  68. package/dist/components/builder/v2/LoopbackEdge.js.map +1 -0
  69. package/dist/components/builder/v2/StepNode.d.ts +21 -0
  70. package/dist/components/builder/v2/StepNode.d.ts.map +1 -0
  71. package/dist/components/builder/v2/StepNode.js +36 -0
  72. package/dist/components/builder/v2/StepNode.js.map +1 -0
  73. package/dist/components/builder/v2/StepPicker.d.ts +8 -0
  74. package/dist/components/builder/v2/StepPicker.d.ts.map +1 -0
  75. package/dist/components/builder/v2/StepPicker.js +73 -0
  76. package/dist/components/builder/v2/StepPicker.js.map +1 -0
  77. package/dist/components/builder/v2/TerminalNode.d.ts +6 -0
  78. package/dist/components/builder/v2/TerminalNode.d.ts.map +1 -0
  79. package/dist/components/builder/v2/TerminalNode.js +7 -0
  80. package/dist/components/builder/v2/TerminalNode.js.map +1 -0
  81. package/dist/components/builder/v2/TriggerNode.d.ts +10 -0
  82. package/dist/components/builder/v2/TriggerNode.d.ts.map +1 -0
  83. package/dist/components/builder/v2/TriggerNode.js +20 -0
  84. package/dist/components/builder/v2/TriggerNode.js.map +1 -0
  85. package/dist/components/builder/v2/TriggerPicker.d.ts +7 -0
  86. package/dist/components/builder/v2/TriggerPicker.d.ts.map +1 -0
  87. package/dist/components/builder/v2/TriggerPicker.js +45 -0
  88. package/dist/components/builder/v2/TriggerPicker.js.map +1 -0
  89. package/dist/components/builder/v2/WorkflowBuilder.d.ts +14 -0
  90. package/dist/components/builder/v2/WorkflowBuilder.d.ts.map +1 -0
  91. package/dist/components/builder/v2/WorkflowBuilder.js +189 -0
  92. package/dist/components/builder/v2/WorkflowBuilder.js.map +1 -0
  93. package/dist/components/builder/v2/edge-types.d.ts +3 -0
  94. package/dist/components/builder/v2/edge-types.d.ts.map +1 -0
  95. package/dist/components/builder/v2/edge-types.js +9 -0
  96. package/dist/components/builder/v2/edge-types.js.map +1 -0
  97. package/dist/components/builder/v2/icons.d.ts +25 -0
  98. package/dist/components/builder/v2/icons.d.ts.map +1 -0
  99. package/dist/components/builder/v2/icons.js +43 -0
  100. package/dist/components/builder/v2/icons.js.map +1 -0
  101. package/dist/components/builder/v2/layout-engine.d.ts +76 -0
  102. package/dist/components/builder/v2/layout-engine.d.ts.map +1 -0
  103. package/dist/components/builder/v2/layout-engine.js +465 -0
  104. package/dist/components/builder/v2/layout-engine.js.map +1 -0
  105. package/dist/components/builder/v2/node-types.d.ts +3 -0
  106. package/dist/components/builder/v2/node-types.d.ts.map +1 -0
  107. package/dist/components/builder/v2/node-types.js +11 -0
  108. package/dist/components/builder/v2/node-types.js.map +1 -0
  109. package/dist/components/builder/v2/theme.d.ts +28 -0
  110. package/dist/components/builder/v2/theme.d.ts.map +1 -0
  111. package/dist/components/builder/v2/theme.js +63 -0
  112. package/dist/components/builder/v2/theme.js.map +1 -0
  113. package/dist/components/builder/v3/CitationEditor.d.ts.map +1 -1
  114. package/dist/components/builder/v3/CitationEditor.js +10 -1
  115. package/dist/components/builder/v3/CitationEditor.js.map +1 -1
  116. package/dist/components/builder/v3/VariablePickerPopover.d.ts +1 -1
  117. package/dist/components/builder/v3/VariablePickerPopover.d.ts.map +1 -1
  118. package/dist/components/builder/v3/VariablePickerPopover.js +3 -3
  119. package/dist/components/builder/v3/VariablePickerPopover.js.map +1 -1
  120. package/dist/components/dashboard/WorkflowSummaryEditor.d.ts +11 -0
  121. package/dist/components/dashboard/WorkflowSummaryEditor.d.ts.map +1 -0
  122. package/dist/components/dashboard/WorkflowSummaryEditor.js +46 -0
  123. package/dist/components/dashboard/WorkflowSummaryEditor.js.map +1 -0
  124. package/dist/components/execution/CitationSourcePanel.d.ts +23 -0
  125. package/dist/components/execution/CitationSourcePanel.d.ts.map +1 -0
  126. package/dist/components/execution/CitationSourcePanel.js +14 -0
  127. package/dist/components/execution/CitationSourcePanel.js.map +1 -0
  128. package/dist/components/execution/ExecutionEdge.d.ts +4 -0
  129. package/dist/components/execution/ExecutionEdge.d.ts.map +1 -0
  130. package/dist/components/execution/ExecutionEdge.js +27 -0
  131. package/dist/components/execution/ExecutionEdge.js.map +1 -0
  132. package/dist/components/execution/ExecutionStepNode.d.ts +14 -0
  133. package/dist/components/execution/ExecutionStepNode.d.ts.map +1 -0
  134. package/dist/components/execution/ExecutionStepNode.js +47 -0
  135. package/dist/components/execution/ExecutionStepNode.js.map +1 -0
  136. package/dist/components/execution/ExecutionTabs.d.ts.map +1 -1
  137. package/dist/components/execution/ExecutionTabs.js +37 -21
  138. package/dist/components/execution/ExecutionTabs.js.map +1 -1
  139. package/dist/components/execution/ExecutionTriggerNode.d.ts +9 -0
  140. package/dist/components/execution/ExecutionTriggerNode.d.ts.map +1 -0
  141. package/dist/components/execution/ExecutionTriggerNode.js +15 -0
  142. package/dist/components/execution/ExecutionTriggerNode.js.map +1 -0
  143. package/dist/components/execution/ExecutionViewer.d.ts.map +1 -1
  144. package/dist/components/execution/ExecutionViewer.js +38 -27
  145. package/dist/components/execution/ExecutionViewer.js.map +1 -1
  146. package/dist/components/execution/SchemaAwareRenderer.d.ts +7 -1
  147. package/dist/components/execution/SchemaAwareRenderer.d.ts.map +1 -1
  148. package/dist/components/execution/SchemaAwareRenderer.js +25 -18
  149. package/dist/components/execution/SchemaAwareRenderer.js.map +1 -1
  150. package/dist/components/execution/StepAgentPanels.d.ts +9 -0
  151. package/dist/components/execution/StepAgentPanels.d.ts.map +1 -0
  152. package/dist/components/execution/StepAgentPanels.js +133 -0
  153. package/dist/components/execution/StepAgentPanels.js.map +1 -0
  154. package/dist/components/execution/StepDetailPanel.d.ts.map +1 -1
  155. package/dist/components/execution/StepDetailPanel.js +6 -2
  156. package/dist/components/execution/StepDetailPanel.js.map +1 -1
  157. package/dist/components/execution/execution-layout.d.ts +31 -0
  158. package/dist/components/execution/execution-layout.d.ts.map +1 -0
  159. package/dist/components/execution/execution-layout.js +90 -0
  160. package/dist/components/execution/execution-layout.js.map +1 -0
  161. package/dist/components/execution/journey-model.d.ts.map +1 -1
  162. package/dist/components/execution/journey-model.js +11 -5
  163. package/dist/components/execution/journey-model.js.map +1 -1
  164. package/dist/components/execution/origin/OriginTrace.d.ts.map +1 -1
  165. package/dist/components/execution/origin/OriginTrace.js +66 -29
  166. package/dist/components/execution/origin/OriginTrace.js.map +1 -1
  167. package/dist/components/execution/origin/citation-resolver.d.ts +39 -0
  168. package/dist/components/execution/origin/citation-resolver.d.ts.map +1 -0
  169. package/dist/components/execution/origin/citation-resolver.js +94 -0
  170. package/dist/components/execution/origin/citation-resolver.js.map +1 -0
  171. package/dist/components/index.d.ts +2 -0
  172. package/dist/components/index.d.ts.map +1 -1
  173. package/dist/components/index.js +1 -0
  174. package/dist/components/index.js.map +1 -1
  175. package/dist/components/shared/AttachmentCard.d.ts +22 -0
  176. package/dist/components/shared/AttachmentCard.d.ts.map +1 -1
  177. package/dist/components/shared/AttachmentCard.js +93 -3
  178. package/dist/components/shared/AttachmentCard.js.map +1 -1
  179. package/dist/components/shared/CitationArrow.d.ts +37 -0
  180. package/dist/components/shared/CitationArrow.d.ts.map +1 -0
  181. package/dist/components/shared/CitationArrow.js +83 -0
  182. package/dist/components/shared/CitationArrow.js.map +1 -0
  183. package/dist/components/shared/DocumentViewer.d.ts +4 -2
  184. package/dist/components/shared/DocumentViewer.d.ts.map +1 -1
  185. package/dist/components/shared/DocumentViewer.js +8 -8
  186. package/dist/components/shared/DocumentViewer.js.map +1 -1
  187. package/dist/components/shared/JsonTreeViewer.d.ts +9 -0
  188. package/dist/components/shared/JsonTreeViewer.d.ts.map +1 -0
  189. package/dist/components/shared/JsonTreeViewer.js +46 -0
  190. package/dist/components/shared/JsonTreeViewer.js.map +1 -0
  191. package/dist/components/shared/MarkdownCitation.d.ts +25 -0
  192. package/dist/components/shared/MarkdownCitation.d.ts.map +1 -0
  193. package/dist/components/shared/MarkdownCitation.js +31 -0
  194. package/dist/components/shared/MarkdownCitation.js.map +1 -0
  195. package/dist/components/shared/MarkdownView.d.ts.map +1 -1
  196. package/dist/components/shared/MarkdownView.js +19 -2
  197. package/dist/components/shared/MarkdownView.js.map +1 -1
  198. package/dist/components/shared/citation-context.d.ts +35 -0
  199. package/dist/components/shared/citation-context.d.ts.map +1 -0
  200. package/dist/components/shared/citation-context.js +34 -0
  201. package/dist/components/shared/citation-context.js.map +1 -0
  202. package/dist/components/shared/citation.d.ts +55 -0
  203. package/dist/components/shared/citation.d.ts.map +1 -0
  204. package/dist/components/shared/citation.js +83 -0
  205. package/dist/components/shared/citation.js.map +1 -0
  206. package/dist/components/shared/markdown-citation-directive.d.ts +34 -0
  207. package/dist/components/shared/markdown-citation-directive.d.ts.map +1 -0
  208. package/dist/components/shared/markdown-citation-directive.js +110 -0
  209. package/dist/components/shared/markdown-citation-directive.js.map +1 -0
  210. package/dist/components/shared/viewers/PdfView.d.ts +38 -0
  211. package/dist/components/shared/viewers/PdfView.d.ts.map +1 -0
  212. package/dist/components/shared/viewers/PdfView.js +439 -0
  213. package/dist/components/shared/viewers/PdfView.js.map +1 -0
  214. package/dist/index.d.ts +2 -2
  215. package/dist/index.d.ts.map +1 -1
  216. package/dist/index.js +1 -1
  217. package/dist/index.js.map +1 -1
  218. package/dist/layout-engine/components.d.ts.map +1 -1
  219. package/dist/layout-engine/components.js +78 -23
  220. package/dist/layout-engine/components.js.map +1 -1
  221. package/dist/layout-engine/render.d.ts.map +1 -1
  222. package/dist/layout-engine/render.js +62 -1
  223. package/dist/layout-engine/render.js.map +1 -1
  224. package/dist/styles.css +8 -2
  225. package/package.json +5 -2
  226. package/dist/components/schema-form/AttachmentField.d.ts +0 -16
  227. package/dist/components/schema-form/AttachmentField.d.ts.map +0 -1
  228. package/dist/components/schema-form/AttachmentField.js +0 -139
  229. package/dist/components/schema-form/AttachmentField.js.map +0 -1
  230. package/dist/utils/map-lanes.d.ts +0 -35
  231. package/dist/utils/map-lanes.d.ts.map +0 -1
  232. package/dist/utils/map-lanes.js +0 -48
  233. package/dist/utils/map-lanes.js.map +0 -1
@@ -10,12 +10,20 @@ import { cn } from '../../shared/cn.js';
10
10
  export function CitationEditor({ config, atStepId, citations, onAdd, onRemove, onClose, className, }) {
11
11
  const [pickerOpen, setPickerOpen] = useState(false);
12
12
  const [draftRef, setDraftRef] = useState(null);
13
+ const [draftType, setDraftType] = useState(null);
13
14
  const [label, setLabel] = useState('');
14
15
  const [description, setDescription] = useState('');
16
+ const [pageNumber, setPageNumber] = useState('');
17
+ const [pagePickerOpen, setPagePickerOpen] = useState(false);
18
+ // The optional page-number field only applies to attachment (document) sources.
19
+ const isAttachment = draftType === 'attachment' || draftType === 'attachment[]';
15
20
  const resetDraft = () => {
16
21
  setDraftRef(null);
22
+ setDraftType(null);
17
23
  setLabel('');
18
24
  setDescription('');
25
+ setPageNumber('');
26
+ setPagePickerOpen(false);
19
27
  };
20
28
  const commit = () => {
21
29
  if (!draftRef)
@@ -24,9 +32,10 @@ export function CitationEditor({ config, atStepId, citations, onAdd, onRemove, o
24
32
  ref: draftRef,
25
33
  ...(label.trim() ? { label: label.trim() } : {}),
26
34
  ...(description.trim() ? { description: description.trim() } : {}),
35
+ ...(isAttachment && pageNumber.trim() ? { pageNumber: pageNumber.trim() } : {}),
27
36
  });
28
37
  resetDraft();
29
38
  };
30
- return (_jsxs("div", { className: cn('absolute right-0 top-full z-30 mt-1 w-80 rounded-lg border border-[var(--wui-border)] bg-[var(--wui-bg)] p-2.5 shadow-xl', 'animate-[wui-scale-in_150ms_ease-out]', className), onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-[var(--wui-fg-muted)]", children: "Sources" }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close", className: "grid h-5 w-5 place-items-center rounded text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)]", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) })] }), citations.length > 0 && (_jsx("ul", { className: "mb-2 space-y-1.5", children: citations.map((c, i) => (_jsxs("li", { className: "flex items-start gap-2 rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg-subtle)] px-2 py-1.5", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-[12px] font-medium text-[var(--wui-fg)]", children: c.label || c.ref }), c.label && _jsx("div", { className: "truncate font-mono text-[10px] text-[var(--wui-fg-muted)]", children: c.ref }), c.description && _jsx("div", { className: "mt-0.5 text-[11px] text-[var(--wui-fg-muted)]", children: c.description })] }), _jsx("button", { type: "button", onClick: () => onRemove(i), "aria-label": "Remove source", className: "shrink-0 rounded p-0.5 text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg)] hover:text-[var(--wui-status-failed)]", children: _jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polyline", { points: "3 6 5 6 21 6" }), _jsx("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })] }) })] }, `${c.ref}-${String(i)}`))) })), draftRef === null ? (_jsxs("div", { className: "relative", children: [_jsxs("button", { type: "button", onClick: () => setPickerOpen((o) => !o), className: "flex w-full items-center justify-center gap-1 rounded-md border border-dashed border-[var(--wui-border)] px-2 py-1.5 text-[12px] font-medium text-[var(--wui-fg-muted)] hover:border-[var(--wui-primary)] hover:text-[var(--wui-fg)]", children: [_jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", children: [_jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), _jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] }), "Add source"] }), pickerOpen && (_jsx(VariablePickerPopover, { config: config, atStepId: atStepId, onSelect: (ref) => { setDraftRef(ref); setPickerOpen(false); }, onClose: () => setPickerOpen(false) }))] })) : (_jsxs("div", { className: "space-y-1.5 rounded-md border border-[var(--wui-border)] p-2", children: [_jsx("div", { className: "truncate font-mono text-[10.5px] text-[var(--wui-fg-muted)]", title: draftRef, children: draftRef }), _jsx("input", { type: "text", value: label, onChange: (e) => setLabel(e.target.value), placeholder: "Label (optional)", className: "w-full rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg)] px-2 py-1 text-[12px] text-[var(--wui-fg)] outline-none focus:border-[var(--wui-primary)]" }), _jsx("textarea", { value: description, onChange: (e) => setDescription(e.target.value), placeholder: "Description (optional)", rows: 2, className: "w-full resize-y rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg)] px-2 py-1 text-[12px] text-[var(--wui-fg)] outline-none focus:border-[var(--wui-primary)]" }), _jsxs("div", { className: "flex justify-end gap-1.5", children: [_jsx("button", { type: "button", onClick: resetDraft, className: "rounded-md px-2 py-1 text-[12px] text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)]", children: "Cancel" }), _jsx("button", { type: "button", onClick: commit, className: "rounded-md bg-[var(--wui-status-completed)] px-2.5 py-1 text-[12px] font-medium text-white hover:opacity-90", children: "Add" })] })] }))] }));
39
+ return (_jsxs("div", { className: cn('absolute right-0 top-full z-30 mt-1 w-80 rounded-lg border border-[var(--wui-border)] bg-[var(--wui-bg)] p-2.5 shadow-xl', 'animate-[wui-scale-in_150ms_ease-out]', className), onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-[var(--wui-fg-muted)]", children: "Sources" }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close", className: "grid h-5 w-5 place-items-center rounded text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)]", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) })] }), citations.length > 0 && (_jsx("ul", { className: "mb-2 space-y-1.5", children: citations.map((c, i) => (_jsxs("li", { className: "flex items-start gap-2 rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg-subtle)] px-2 py-1.5", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-[12px] font-medium text-[var(--wui-fg)]", children: c.label || c.ref }), c.label && _jsx("div", { className: "truncate font-mono text-[10px] text-[var(--wui-fg-muted)]", children: c.ref }), c.pageNumber && _jsxs("div", { className: "truncate font-mono text-[10px] text-[var(--wui-fg-muted)]", children: ["page: ", c.pageNumber] }), c.description && _jsx("div", { className: "mt-0.5 text-[11px] text-[var(--wui-fg-muted)]", children: c.description })] }), _jsx("button", { type: "button", onClick: () => onRemove(i), "aria-label": "Remove source", className: "shrink-0 rounded p-0.5 text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg)] hover:text-[var(--wui-status-failed)]", children: _jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polyline", { points: "3 6 5 6 21 6" }), _jsx("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })] }) })] }, `${c.ref}-${String(i)}`))) })), draftRef === null ? (_jsxs("div", { className: "relative", children: [_jsxs("button", { type: "button", onClick: () => setPickerOpen((o) => !o), className: "flex w-full items-center justify-center gap-1 rounded-md border border-dashed border-[var(--wui-border)] px-2 py-1.5 text-[12px] font-medium text-[var(--wui-fg-muted)] hover:border-[var(--wui-primary)] hover:text-[var(--wui-fg)]", children: [_jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", children: [_jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), _jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] }), "Add source"] }), pickerOpen && (_jsx(VariablePickerPopover, { config: config, atStepId: atStepId, onSelect: (ref, schemaType) => { setDraftRef(ref); setDraftType(schemaType ?? null); setPickerOpen(false); }, onClose: () => setPickerOpen(false) }))] })) : (_jsxs("div", { className: "space-y-1.5 rounded-md border border-[var(--wui-border)] p-2", children: [_jsx("div", { className: "truncate font-mono text-[10.5px] text-[var(--wui-fg-muted)]", title: draftRef, children: draftRef }), _jsx("input", { type: "text", value: label, onChange: (e) => setLabel(e.target.value), placeholder: "Label (optional)", className: "w-full rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg)] px-2 py-1 text-[12px] text-[var(--wui-fg)] outline-none focus:border-[var(--wui-primary)]" }), _jsx("textarea", { value: description, onChange: (e) => setDescription(e.target.value), placeholder: "Description (optional)", rows: 2, className: "w-full resize-y rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg)] px-2 py-1 text-[12px] text-[var(--wui-fg)] outline-none focus:border-[var(--wui-primary)]" }), isAttachment && (_jsxs("div", { className: "relative flex items-center gap-1", children: [_jsx("input", { type: "text", value: pageNumber, onChange: (e) => setPageNumber(e.target.value), placeholder: "Page number (optional)", className: "w-full rounded-md border border-[var(--wui-border)] bg-[var(--wui-bg)] px-2 py-1 text-[12px] text-[var(--wui-fg)] outline-none focus:border-[var(--wui-primary)]" }), _jsx("button", { type: "button", onClick: () => setPagePickerOpen((o) => !o), "aria-label": "Link page number to a variable", title: "Link to a variable", className: "shrink-0 grid h-6 w-6 place-items-center rounded-md border border-[var(--wui-border)] text-[var(--wui-fg-muted)] hover:border-[var(--wui-primary)] hover:text-[var(--wui-fg)]", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }), _jsx("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })] }) }), pagePickerOpen && (_jsx(VariablePickerPopover, { config: config, atStepId: atStepId, onSelect: (ref) => { setPageNumber(ref); setPagePickerOpen(false); }, onClose: () => setPagePickerOpen(false) }))] })), _jsxs("div", { className: "flex justify-end gap-1.5", children: [_jsx("button", { type: "button", onClick: resetDraft, className: "rounded-md px-2 py-1 text-[12px] text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)]", children: "Cancel" }), _jsx("button", { type: "button", onClick: commit, className: "rounded-md bg-[var(--wui-status-completed)] px-2.5 py-1 text-[12px] font-medium text-white hover:opacity-90", children: "Add" })] })] }))] }));
31
40
  }
32
41
  //# sourceMappingURL=CitationEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CitationEditor.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/CitationEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CitationEditor.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/CitationEditor.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export interface VariablePickerPopoverProps {
4
4
  atStepId: string;
5
5
  /** Restrict suggestions to refs of this schema type. */
6
6
  filterType?: string | undefined;
7
- onSelect: (refString: string) => void;
7
+ onSelect: (refString: string, schemaType?: string) => void;
8
8
  onClose: () => void;
9
9
  }
10
10
  export declare function VariablePickerPopover({ config, atStepId, filterType, onSelect, onClose, }: VariablePickerPopoverProps): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"VariablePickerPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/VariablePickerPopover.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,4BAA4B,CAAC;AAMrF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA4FD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,GACR,EAAE,0BAA0B,+BAqG5B"}
1
+ {"version":3,"file":"VariablePickerPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/VariablePickerPopover.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,4BAA4B,CAAC;AAMrF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA4FD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,GACR,EAAE,0BAA0B,+BAqG5B"}
@@ -19,7 +19,7 @@ function TypeBadge({ type }) {
19
19
  function VariableTreeNode({ node, onSelect, depth = 0, }) {
20
20
  const [expanded, setExpanded] = useState(depth < 1);
21
21
  if (node.isLeaf) {
22
- return (_jsxs("button", { onClick: () => onSelect(node.refString), className: "flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-indigo-50 active:scale-[0.99]", style: { paddingLeft: `${8 + depth * 12}px` }, children: [_jsx("span", { className: "truncate text-[11px] font-mono text-slate-700", children: node.label }), _jsx(TypeBadge, { type: node.schemaType })] }));
22
+ return (_jsxs("button", { onClick: () => onSelect(node.refString, node.schemaType), className: "flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-indigo-50 active:scale-[0.99]", style: { paddingLeft: `${8 + depth * 12}px` }, children: [_jsx("span", { className: "truncate text-[11px] font-mono text-slate-700", children: node.label }), _jsx(TypeBadge, { type: node.schemaType })] }));
23
23
  }
24
24
  return (_jsxs("div", { children: [_jsxs("button", { onClick: () => setExpanded(!expanded), className: "flex w-full items-center gap-1.5 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-slate-50", style: { paddingLeft: `${8 + depth * 12}px` }, children: [_jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", className: cn('shrink-0 text-slate-400 transition-transform', expanded && 'rotate-90'), children: _jsx("path", { d: "m9 18 6-6-6-6" }) }), _jsx("span", { className: "truncate text-[11px] font-semibold text-slate-600", children: node.label }), _jsx(TypeBadge, { type: node.schemaType })] }), expanded && (_jsx("div", { children: node.children.map((child) => (_jsx(VariableTreeNode, { node: child, onSelect: onSelect, depth: depth + 1 }, child.path))) }))] }));
25
25
  }
@@ -72,8 +72,8 @@ export function VariablePickerPopover({ config, atStepId, filterType, onSelect,
72
72
  onClose();
73
73
  } }), _jsx("button", { onClick: onClose, className: "flex h-5 w-5 items-center justify-center rounded text-slate-400 hover:text-slate-600 transition-colors", children: _jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M18 6 6 18" }), _jsx("path", { d: "m6 6 12 12" })] }) })] }), _jsx("div", { className: "max-h-60 overflow-y-auto p-1.5", children: isLoading ? (_jsx("div", { className: "flex justify-center py-6", children: _jsx(LoadingSpinner, { size: "sm" }) })) : displayItems ? (
74
74
  // Search results (flat list)
75
- displayItems.length > 0 ? (displayItems.map((node) => (_jsxs("button", { onClick: () => { onSelect(node.refString); onClose(); }, className: "flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-indigo-50", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("span", { className: "block truncate text-[11px] font-medium text-slate-700", children: node.label }), _jsx("span", { className: "block truncate text-[9px] font-mono text-slate-400", children: node.path })] }), _jsx(TypeBadge, { type: node.schemaType })] }, node.path)))) : (_jsx("div", { className: "py-4 text-center text-[11px] text-slate-400", children: "No matching variables" }))) : variables.length > 0 ? (
75
+ displayItems.length > 0 ? (displayItems.map((node) => (_jsxs("button", { onClick: () => { onSelect(node.refString, node.schemaType); onClose(); }, className: "flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-indigo-50", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("span", { className: "block truncate text-[11px] font-medium text-slate-700", children: node.label }), _jsx("span", { className: "block truncate text-[9px] font-mono text-slate-400", children: node.path })] }), _jsx(TypeBadge, { type: node.schemaType })] }, node.path)))) : (_jsx("div", { className: "py-4 text-center text-[11px] text-slate-400", children: "No matching variables" }))) : variables.length > 0 ? (
76
76
  // Tree view
77
- variables.map((node) => (_jsx(VariableTreeNode, { node: node, onSelect: (ref) => { onSelect(ref); onClose(); } }, node.path)))) : (_jsx("div", { className: "py-4 text-center text-[11px] text-slate-400", children: "No variables available at this step" })) })] }));
77
+ variables.map((node) => (_jsx(VariableTreeNode, { node: node, onSelect: (ref, schemaType) => { onSelect(ref, schemaType); onClose(); } }, node.path)))) : (_jsx("div", { className: "py-4 text-center text-[11px] text-slate-400", children: "No variables available at this step" })) })] }));
78
78
  }
79
79
  //# sourceMappingURL=VariablePickerPopover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VariablePickerPopover.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/VariablePickerPopover.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VariablePickerPopover.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/VariablePickerPopover.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface WorkflowSummaryEditorProps {
2
+ workflowId: string;
3
+ className?: string | undefined;
4
+ }
5
+ /**
6
+ * Edits the workflow-level summary/readme — a first-class record column,
7
+ * independent of the builder config. Reads via `workflows.get`, saves via
8
+ * `workflows.update({ summary })`.
9
+ */
10
+ export declare function WorkflowSummaryEditor({ workflowId, className }: WorkflowSummaryEditorProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=WorkflowSummaryEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowSummaryEditor.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowSummaryEditor.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,0BAA0B,+BAgE1F"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
4
+ import { cn } from '../shared/cn.js';
5
+ /**
6
+ * Edits the workflow-level summary/readme — a first-class record column,
7
+ * independent of the builder config. Reads via `workflows.get`, saves via
8
+ * `workflows.update({ summary })`.
9
+ */
10
+ export function WorkflowSummaryEditor({ workflowId, className }) {
11
+ const client = useWorkflowClient();
12
+ const [summary, setSummary] = useState('');
13
+ const [loaded, setLoaded] = useState(false);
14
+ const [saving, setSaving] = useState(false);
15
+ const [savedAt, setSavedAt] = useState(false);
16
+ useEffect(() => {
17
+ let cancelled = false;
18
+ void (async () => {
19
+ try {
20
+ const wf = await client.workflows.get(workflowId);
21
+ if (!cancelled) {
22
+ setSummary(wf.summary ?? '');
23
+ setLoaded(true);
24
+ }
25
+ }
26
+ catch {
27
+ if (!cancelled)
28
+ setLoaded(true);
29
+ }
30
+ })();
31
+ return () => { cancelled = true; };
32
+ }, [client, workflowId]);
33
+ const save = async () => {
34
+ setSaving(true);
35
+ setSavedAt(false);
36
+ try {
37
+ await client.workflows.update(workflowId, { summary });
38
+ setSavedAt(true);
39
+ }
40
+ finally {
41
+ setSaving(false);
42
+ }
43
+ };
44
+ return (_jsxs("div", { className: cn('space-y-2', className), "data-testid": "workflow-summary-editor", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-[11px] font-bold uppercase tracking-widest text-slate-400", children: "Summary" }), _jsx("button", { type: "button", "data-testid": "summary-save", onClick: () => void save(), disabled: saving || !loaded, className: cn('rounded-md px-3 py-1 text-[12px] font-semibold text-white transition-colors', savedAt ? 'bg-emerald-500' : 'bg-indigo-500 hover:bg-indigo-600', (saving || !loaded) && 'opacity-50 cursor-not-allowed'), children: saving ? 'Saving…' : savedAt ? 'Saved' : 'Save summary' })] }), _jsx("textarea", { "data-testid": "summary-input", value: summary, onChange: (e) => { setSummary(e.target.value); setSavedAt(false); }, rows: 3, placeholder: "Describe what this workflow does\u2026", className: "w-full resize-y rounded-lg border border-slate-200 px-3 py-2 text-[13px] outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100" })] }));
45
+ }
46
+ //# sourceMappingURL=WorkflowSummaryEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowSummaryEditor.js","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowSummaryEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The cited source, opened beside the data rather than over it.
3
+ *
4
+ * Checking a citation means comparing a value against its evidence, so the two
5
+ * have to be on screen together — a modal would cover the thing you're verifying.
6
+ * This is a resizable column that pushes the run view over, the same shape the
7
+ * value-origin panel uses in the approvals view.
8
+ */
9
+ import type { Attachment } from '@xyne/workflow-sdk';
10
+ export interface CitationSourceDoc {
11
+ attachment: Attachment;
12
+ page?: number | undefined;
13
+ quote?: string | undefined;
14
+ }
15
+ export interface CitationSourcePanelProps {
16
+ doc: CitationSourceDoc | null;
17
+ onClose: () => void;
18
+ width?: number | undefined;
19
+ onWidthChange?: ((width: number) => void) | undefined;
20
+ className?: string | undefined;
21
+ }
22
+ export declare function CitationSourcePanel({ doc, onClose, width, onWidthChange, className, }: CitationSourcePanelProps): import("react").JSX.Element | null;
23
+ //# sourceMappingURL=CitationSourcePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CitationSourcePanel.d.ts","sourceRoot":"","sources":["../../../src/components/execution/CitationSourcePanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOrD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EACH,OAAO,EACP,KAAK,EACL,aAAa,EACb,SAAS,GACV,EAAE,wBAAwB,sCAyD1B"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SidePanelShell } from './SidePanelShell.js';
3
+ import { DocumentViewer } from '../shared/DocumentViewer.js';
4
+ import { FileTypeBadge } from '../shared/AttachmentCard.js';
5
+ import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
6
+ import { cn } from '../shared/cn.js';
7
+ export function CitationSourcePanel({ doc, onClose, width, onWidthChange, className, }) {
8
+ const client = useWorkflowClient();
9
+ if (!doc)
10
+ return null;
11
+ const { attachment, page, quote } = doc;
12
+ return (_jsxs(SidePanelShell, { accentClassName: "border-t-0", width: width, onWidthChange: onWidthChange, className: className, children: [_jsxs("div", { className: "flex shrink-0 items-center justify-between gap-3 border-b border-[var(--wui-border)] px-4", style: { minHeight: '53px' }, children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(FileTypeBadge, { name: attachment.name, size: "sm" }), _jsxs("div", { className: "min-w-0", children: [_jsxs("p", { className: "text-[10px] font-semibold uppercase tracking-wider text-[var(--wui-fg-muted)]", children: ["Source", page !== undefined ? ` · page ${String(page)}` : ''] }), _jsx("p", { className: "truncate text-[13px] font-semibold text-[var(--wui-fg)]", title: attachment.name, children: attachment.name })] })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close source", className: cn('grid h-7 w-7 shrink-0 place-items-center rounded-[var(--wui-radius-sm)]', 'text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)]'), children: _jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-auto bg-[var(--wui-bg-subtle)]", children: _jsx(DocumentViewer, { url: client.uploads.url(attachment), mimeType: attachment.mimeType, name: attachment.name, page: page, highlightQuery: quote }, `${attachment.data}#${String(page ?? '')}#${quote ?? ''}`) })] }));
13
+ }
14
+ //# sourceMappingURL=CitationSourcePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CitationSourcePanel.js","sourceRoot":"","sources":["../../../src/components/execution/CitationSourcePanel.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAgBrC,MAAM,UAAU,mBAAmB,CAAC,EAClC,GAAG,EACH,OAAO,EACP,KAAK,EACL,aAAa,EACb,SAAS,GACgB;IACzB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAExC,OAAO,CACL,MAAC,cAAc,IACb,eAAe,EAAC,YAAY,EAC5B,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,aAEpB,eACE,SAAS,EAAC,2FAA2F,EACrG,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAE5B,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,aAAa,IAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAC,IAAI,GAAG,EAClD,eAAK,SAAS,EAAC,SAAS,aACtB,aAAG,SAAS,EAAC,+EAA+E,uBACnF,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IACxD,EACJ,YAAG,SAAS,EAAC,yDAAyD,EAAC,KAAK,EAAE,UAAU,CAAC,IAAI,YAC1F,UAAU,CAAC,IAAI,GACd,IACA,IACF,EACN,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACL,cAAc,EACzB,SAAS,EAAE,EAAE,CACX,yEAAyE,EACzE,8EAA8E,CAC/E,YAED,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,CAAC,EAAE,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,aAC5I,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IACxE,GACC,IACL,EAEN,cAAK,SAAS,EAAC,wDAAwD,YAGrE,KAAC,cAAc,IAEb,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EACnC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,IAAI,EAAE,UAAU,CAAC,IAAI,EACrB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,KAAK,IALhB,GAAG,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAM9D,GACE,IACS,CAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type EdgeProps } from '@xyflow/react';
2
+ export type ExecutionEdgeStatus = 'completed' | 'active' | 'pending' | 'skipped';
3
+ export declare function ExecutionEdge({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, data, style, }: EdgeProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=ExecutionEdge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionEdge.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionEdge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AASjF,wBAAgB,aAAa,CAAC,EAC5B,EAAE,EACF,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,IAAI,EACJ,KAAK,GACN,EAAE,SAAS,+BAyBX"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { BaseEdge, getBezierPath } from '@xyflow/react';
3
+ const statusColors = {
4
+ completed: 'var(--wui-status-completed)',
5
+ active: 'var(--wui-status-running)',
6
+ pending: 'var(--wui-border)',
7
+ skipped: 'var(--wui-border)',
8
+ };
9
+ export function ExecutionEdge({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, data, style, }) {
10
+ const edgeStatus = data?.['status'] ?? 'pending';
11
+ const [edgePath] = getBezierPath({
12
+ sourceX,
13
+ sourceY,
14
+ sourcePosition,
15
+ targetX,
16
+ targetY,
17
+ targetPosition,
18
+ });
19
+ return (_jsx(BaseEdge, { id: id, path: edgePath, style: {
20
+ stroke: statusColors[edgeStatus],
21
+ strokeWidth: edgeStatus === 'active' ? 2 : 1.5,
22
+ strokeDasharray: edgeStatus === 'pending' || edgeStatus === 'skipped' ? '5 5' : undefined,
23
+ opacity: edgeStatus === 'skipped' ? 0.3 : 1,
24
+ ...style,
25
+ } }));
26
+ }
27
+ //# sourceMappingURL=ExecutionEdge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionEdge.js","sourceRoot":"","sources":["../../../src/components/execution/ExecutionEdge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAkB,MAAM,eAAe,CAAC;AAIxE,MAAM,YAAY,GAAwC;IACxD,SAAS,EAAE,6BAA6B;IACxC,MAAM,EAAE,2BAA2B;IACnC,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;CAC7B,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAC5B,EAAE,EACF,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,IAAI,EACJ,KAAK,GACK;IACV,MAAM,UAAU,GAAK,IAA4C,EAAE,CAAC,QAAQ,CAAqC,IAAI,SAAS,CAAC;IAE/H,MAAM,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;QAC/B,OAAO;QACP,OAAO;QACP,cAAc;QACd,OAAO;QACP,OAAO;QACP,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,QAAQ,IACP,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE;YACL,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC;YAChC,WAAW,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YAC9C,eAAe,EAAE,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzF,OAAO,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,GAAG,KAAK;SACT,GACD,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { NodeProps } from '@xyflow/react';
2
+ import type { WorkflowStepConfig } from '@xyne/workflow-sdk/builder';
3
+ export type ExecutionStepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'paused' | 'skipped';
4
+ export interface ExecutionStepNodeData {
5
+ stepConfig: WorkflowStepConfig;
6
+ label: string;
7
+ status: ExecutionStepStatus;
8
+ category?: string | undefined;
9
+ icon?: string | undefined;
10
+ isSelected?: boolean | undefined;
11
+ onSelect?: (() => void) | undefined;
12
+ }
13
+ export declare function ExecutionStepNode({ data }: NodeProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=ExecutionStepNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionStepNode.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionStepNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAKrE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExG,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACrC;AAsDD,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,+BA6EpD"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Handle, Position } from '@xyflow/react';
3
+ import { cn } from '../shared/cn.js';
4
+ import { getCategoryTheme } from '../builder/theme.js';
5
+ import { getStepIcon } from '../builder/icons.js';
6
+ // Small status indicator icons (SVG)
7
+ function StatusIcon({ status }) {
8
+ const size = 12;
9
+ switch (status) {
10
+ case 'completed':
11
+ return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }));
12
+ case 'failed':
13
+ return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }));
14
+ case 'running':
15
+ return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 2v4" }), _jsx("path", { d: "M12 18v4" }), _jsx("path", { d: "M4.93 4.93l2.83 2.83" }), _jsx("path", { d: "M16.24 16.24l2.83 2.83" }), _jsx("path", { d: "M2 12h4" }), _jsx("path", { d: "M18 12h4" }), _jsx("path", { d: "M4.93 19.07l2.83-2.83" }), _jsx("path", { d: "M16.24 7.76l2.83-2.83" })] }));
16
+ case 'paused':
17
+ return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "currentColor", children: [_jsx("rect", { x: "6", y: "4", width: "4", height: "16", rx: "1" }), _jsx("rect", { x: "14", y: "4", width: "4", height: "16", rx: "1" })] }));
18
+ case 'skipped':
19
+ return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: _jsx("path", { d: "M5 12h14" }) }));
20
+ default: // pending
21
+ return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: _jsx("circle", { cx: "12", cy: "12", r: "10" }) }));
22
+ }
23
+ }
24
+ const statusBadgeColors = {
25
+ pending: 'bg-slate-100 text-slate-400',
26
+ running: 'bg-blue-50 text-blue-500',
27
+ completed: 'bg-emerald-50 text-emerald-600',
28
+ failed: 'bg-red-50 text-red-500',
29
+ paused: 'bg-purple-50 text-purple-500',
30
+ skipped: 'bg-slate-100 text-slate-400',
31
+ };
32
+ export function ExecutionStepNode({ data }) {
33
+ const { label, status, category, icon, isSelected, onSelect } = data;
34
+ const theme = getCategoryTheme(category);
35
+ // Rejoin nodes (invisible merge)
36
+ if (!label) {
37
+ return (_jsxs("div", { className: "h-0 w-0", children: [_jsx(Handle, { type: "target", position: Position.Top, className: "opacity-0" }), _jsx(Handle, { type: "source", position: Position.Bottom, className: "opacity-0" })] }));
38
+ }
39
+ // Status-driven left border override for completed/failed
40
+ const statusAccent = status === 'completed' ? 'border-l-emerald-500'
41
+ : status === 'failed' ? 'border-l-red-500'
42
+ : theme.accent;
43
+ return (_jsxs("div", { onClick: onSelect, className: cn('group relative flex w-48 cursor-pointer items-center gap-3 rounded-lg border bg-white px-3 py-3 transition-all', `border-l-[3px] ${statusAccent}`, isSelected
44
+ ? `ring-2 ${theme.ring} shadow-md`
45
+ : 'border-slate-200 shadow-sm hover:shadow-md hover:-translate-y-px hover:border-slate-300', status === 'running' && 'shadow-md shadow-blue-100', status === 'paused' && 'shadow-md shadow-purple-100', status === 'skipped' && 'opacity-50 grayscale'), style: { animation: 'wui-scale-in 200ms ease-out' }, children: [_jsx(Handle, { type: "target", position: Position.Top, className: "!bg-transparent !border-0 !w-1 !h-1 !min-w-0 !min-h-0" }), _jsxs("div", { className: cn('relative flex h-8 w-8 shrink-0 items-center justify-center rounded-lg', theme.iconBg, theme.iconText), children: [getStepIcon(icon, { size: 16 }), status !== 'pending' && (_jsx("span", { className: cn('absolute -bottom-1 -right-1 flex h-4 w-4 items-center justify-center rounded-full ring-2 ring-white', statusBadgeColors[status], status === 'running' && 'animate-[wui-spin_1.5s_linear_infinite]'), children: _jsx(StatusIcon, { status: status }) }))] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: cn('truncate text-[13px] font-semibold leading-tight', status === 'skipped' ? 'text-slate-400 line-through' : 'text-slate-800'), children: label }), category && (_jsxs("div", { className: "mt-0.5 flex items-center gap-1.5", children: [_jsx("span", { className: cn('h-1.5 w-1.5 rounded-full', theme.dot) }), _jsx("span", { className: "text-[10px] text-slate-400 uppercase tracking-wide", children: category })] }))] }), _jsx(Handle, { type: "source", position: Position.Bottom, className: "!bg-transparent !border-0 !w-1 !h-1 !min-w-0 !min-h-0" })] }));
46
+ }
47
+ //# sourceMappingURL=ExecutionStepNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionStepNode.js","sourceRoot":"","sources":["../../../src/components/execution/ExecutionStepNode.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAclD,qCAAqC;AACrC,SAAS,UAAU,CAAC,EAAE,MAAM,EAAmC;IAC7D,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,CACL,cAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,YAChJ,mBAAU,MAAM,EAAC,gBAAgB,GAAG,GAChC,CACP,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,CACL,eAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,aACzH,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IACxE,CACP,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,eAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,aAC3H,eAAM,CAAC,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,UAAU,GAAG,EAAA,eAAM,CAAC,EAAC,sBAAsB,GAAG,EAAA,eAAM,CAAC,EAAC,wBAAwB,GAAG,EAAA,eAAM,CAAC,EAAC,SAAS,GAAG,EAAA,eAAM,CAAC,EAAC,UAAU,GAAG,EAAA,eAAM,CAAC,EAAC,uBAAuB,GAAG,EAAA,eAAM,CAAC,EAAC,uBAAuB,GAAG,IACtN,CACP,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,CACL,eAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,aACrE,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,EAAA,eAAM,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,IAC/F,CACP,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,cAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,YAC3H,eAAM,CAAC,EAAC,UAAU,GAAG,GACjB,CACP,CAAC;QACJ,SAAS,UAAU;YACjB,OAAO,CACL,cAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,YACzH,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,GAAG,GAC7B,CACP,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,GAAwC;IAC7D,OAAO,EAAE,6BAA6B;IACtC,OAAO,EAAE,0BAA0B;IACnC,SAAS,EAAE,gCAAgC;IAC3C,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,8BAA8B;IACtC,OAAO,EAAE,6BAA6B;CACvC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAa;IACnD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAwC,CAAC;IACzG,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEzC,iCAAiC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CACL,eAAK,SAAS,EAAC,SAAS,aACtB,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAC,WAAW,GAAG,EACtE,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAC,WAAW,GAAG,IACrE,CACP,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,MAAM,YAAY,GAChB,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,sBAAsB;QAC/C,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB;YAC1C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAEjB,OAAO,CACL,eACE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,EAAE,CACX,gHAAgH,EAChH,kBAAkB,YAAY,EAAE,EAChC,UAAU;YACR,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,YAAY;YAClC,CAAC,CAAC,yFAAyF,EAC7F,MAAM,KAAK,SAAS,IAAI,2BAA2B,EACnD,MAAM,KAAK,QAAQ,IAAI,6BAA6B,EACpD,MAAM,KAAK,SAAS,IAAI,sBAAsB,CAC/C,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,6BAA6B,EAAE,aAEnD,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAC,uDAAuD,GAAG,EAGlH,eAAK,SAAS,EAAE,EAAE,CAChB,uEAAuE,EACvE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAC7B,aACE,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAG/B,MAAM,KAAK,SAAS,IAAI,CACvB,eAAM,SAAS,EAAE,EAAE,CACjB,qGAAqG,EACrG,iBAAiB,CAAC,MAAM,CAAC,EACzB,MAAM,KAAK,SAAS,IAAI,yCAAyC,CAClE,YACC,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,GAAI,GACzB,CACR,IACG,EAGN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAE,EAAE,CAChB,kDAAkD,EAClD,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,gBAAgB,CACxE,YACE,KAAK,GACF,EACL,QAAQ,IAAI,CACX,eAAK,SAAS,EAAC,kCAAkC,aAC/C,eAAM,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,KAAK,CAAC,GAAG,CAAC,GAAI,EAC9D,eAAM,SAAS,EAAC,oDAAoD,YACjE,QAAQ,GACJ,IACH,CACP,IACG,EAEN,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAC,uDAAuD,GAAG,IACjH,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionTabs.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAYjE;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACtD,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AA8WD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAChF,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAC7D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAC9F,EAAE,kBAAkB,+BAwIpB"}
1
+ {"version":3,"file":"ExecutionTabs.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionTabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAcjE;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACtD,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAyYD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAChF,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAC7D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAC9F,EAAE,kBAAkB,+BAwIpB"}
@@ -1,9 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useMemo, useRef, useState } from 'react';
3
- import { rollup, resolveLevel, buildRows, findLivePath, membersOfGroup, } from './journey-model.js';
3
+ import { rollup, resolveLevel, buildRows, findLivePath, membersOfGroup, stepRow, } from './journey-model.js';
4
4
  import { StatusBadge } from '../shared/StatusBadge.js';
5
5
  import { DisplayValue, isAttachment, isAttachmentArray } from '../shared/AttachmentCard.js';
6
6
  import { MarkdownView } from '../shared/MarkdownView.js';
7
+ import { CitationMarks } from '../shared/CitationArrow.js';
8
+ import { isCitationRefArray, citeAt, unwrapResponse } from '../shared/citation.js';
7
9
  import { cn } from '../shared/cn.js';
8
10
  import { renderLayout } from '../../layout-engine/index.js';
9
11
  import { walkStepConfigs } from '../../utils/branch-detection.js';
@@ -89,11 +91,20 @@ function Sidebar({ sections, insideGroupId, atRoot, stepMeta, stepStates, groups
89
91
  // rendered in-order after the normal steps, and dropped from the nested tree via buildRows
90
92
  // so they aren't duplicated. Parent makes it path-aware, so a group's own drill still shows.
91
93
  const rootSteps = sections.flatMap((s) => s.steps);
94
+ // Pinned groups lifted to the Run level. A single-leaf pinned group adds no value as a
95
+ // folder — surface its one member directly under the group's (section) label, mirroring
96
+ // buildRows' flattening for nested single-member groups (which skips hoisted ones).
92
97
  const hoistedRows = atRoot
93
98
  ? (groups ?? [])
94
99
  .filter((g) => hoistedIds.has(g.id))
95
100
  .map((g) => ({ g, members: membersOfGroup(rootSteps, g.id, stepMeta, stepStates) }))
96
101
  .filter((p) => p.members.length > 0)
102
+ .map(({ g, members }) => {
103
+ const only = members.length === 1 ? members[0] : undefined;
104
+ return only && stepRow(only, stepMeta).kind === 'leaf'
105
+ ? ({ kind: 'leaf', g, member: only })
106
+ : ({ kind: 'group', g, members });
107
+ })
97
108
  : [];
98
109
  return (_jsx("div", { className: "flex w-[300px] shrink-0 flex-col border-r border-[var(--wui-border)] bg-[var(--wui-bg-subtle)]", children: _jsxs("div", { className: "min-h-0 flex-1 overflow-auto p-2", children: [atRoot && (_jsx(SidebarRow, { label: triggerLabel, status: triggerCompleted ? 'completed' : 'pending', active: isTriggerSelected, onClick: onOpenTrigger })), sections.map((sec, si) => {
99
110
  const st = sec.states ?? stepStates;
@@ -103,7 +114,7 @@ function Sidebar({ sections, insideGroupId, atRoot, stepMeta, stepStates, groups
103
114
  const info = rowInfo(row, st, stepMeta);
104
115
  return (_jsx(SidebarRow, { label: info.label, status: info.status, drillable: info.drillable, active: !info.drillable && !isTriggerSelected && selectedId === prefix + info.id, onClick: () => (info.drillable && info.descriptor ? onDrill(info.descriptor) : onOpenLeaf(prefix + info.id, info.label)) }, `${info.id}-${String(i)}`));
105
116
  }), rows.length === 0 && (_jsx("div", { className: "px-2.5 py-2 text-[12px] italic text-[var(--wui-fg-muted)]", children: "No steps" }))] }, si));
106
- }), hoistedRows.map(({ g, members }) => (_jsx(SidebarRow, { label: g.title, status: rollup(members, stepStates, stepMeta), drillable: true, onClick: () => onDrill({ kind: 'group', id: g.id, label: g.title }) }, `hoist-${g.id}`)))] }) }));
117
+ }), hoistedRows.map((h) => h.kind === 'leaf' ? (_jsx(SidebarRow, { label: h.g.title, status: stepStates.get(h.member.id)?.status ?? 'pending', active: !isTriggerSelected && selectedId === h.member.id, onClick: () => onOpenLeaf(h.member.id, h.g.title) }, `hoist-${h.g.id}`)) : (_jsx(SidebarRow, { label: h.g.title, status: rollup(h.members, stepStates, stepMeta), drillable: true, onClick: () => onDrill({ kind: 'group', id: h.g.id, label: h.g.title }) }, `hoist-${h.g.id}`)))] }) }));
107
118
  }
108
119
  function EditorTabStrip({ tabs, activeId, onActivate, onClose }) {
109
120
  if (tabs.length === 0)
@@ -116,61 +127,66 @@ function EditorTabStrip({ tabs, activeId, onActivate, onClose }) {
116
127
  }) }));
117
128
  }
118
129
  function deriveSections(state, meta) {
130
+ // A cited agent's output is `response: {value, citation}` — unwrap it, or this
131
+ // fallback would render the wrapper itself as a "Response" section.
132
+ const { data, citation } = unwrapResponse(state.output);
119
133
  const objectSections = [];
120
134
  const scalars = [];
121
- for (const [k, v] of Object.entries(state.output ?? {})) {
135
+ for (const [k, v] of Object.entries(data)) {
122
136
  if (isPlainObject(v))
123
- objectSections.push({ key: `o:${k}`, title: schemaTitleOf(meta?.outputSchema, k) ?? humanize(k), entries: Object.entries(v) });
137
+ objectSections.push({ key: `o:${k}`, title: schemaTitleOf(meta?.outputSchema, k) ?? humanize(k), entries: Object.entries(v), cite: citeAt(citation, k) });
124
138
  else
125
139
  scalars.push([k, v]);
126
140
  }
127
141
  const sections = [];
128
142
  if (scalars.length)
129
- sections.push({ key: 'result', title: objectSections.length ? 'Summary' : 'Result', entries: scalars });
143
+ sections.push({ key: 'result', title: objectSections.length ? 'Summary' : 'Result', entries: scalars, cite: citation });
130
144
  sections.push(...objectSections);
131
145
  const inEntries = Object.entries(state.input ?? {});
132
146
  if (inEntries.length)
133
147
  sections.push({ key: 'input', title: 'Input', entries: inEntries });
134
148
  return sections;
135
149
  }
136
- function ValueCell({ value }) {
150
+ function ValueCell({ value, cite }) {
151
+ const leaf = isCitationRefArray(cite) ? cite : undefined;
152
+ const mark = (node) => leaf ? _jsxs("span", { className: "inline-flex items-baseline gap-1", children: [node, _jsx(CitationMarks, { refs: leaf })] }) : node;
137
153
  if (value === null || value === undefined || value === '')
138
- return _jsx("span", { className: "text-[var(--wui-fg-muted)]", children: "\u2014" });
154
+ return mark(_jsx("span", { className: "text-[var(--wui-fg-muted)]", children: "\u2014" }));
139
155
  if (typeof value === 'boolean')
140
- return _jsx("span", { className: "font-medium text-[var(--wui-fg)]", children: value ? 'Yes' : 'No' });
156
+ return mark(_jsx("span", { className: "font-medium text-[var(--wui-fg)]", children: value ? 'Yes' : 'No' }));
141
157
  if (typeof value === 'number')
142
- return _jsx("span", { className: "font-medium tabular-nums text-[var(--wui-fg)]", children: value.toLocaleString() });
158
+ return mark(_jsx("span", { className: "font-medium tabular-nums text-[var(--wui-fg)]", children: value.toLocaleString() }));
143
159
  if (isAttachment(value) || isAttachmentArray(value))
144
- return _jsx(DisplayValue, { value: value });
160
+ return mark(_jsx(DisplayValue, { value: value }));
145
161
  if (Array.isArray(value)) {
146
162
  if (value.length === 0)
147
- return _jsx("span", { className: "text-[var(--wui-fg-muted)]", children: "None" });
163
+ return mark(_jsx("span", { className: "text-[var(--wui-fg-muted)]", children: "None" }));
148
164
  if (value.every((v) => !isPlainObject(v) && !Array.isArray(v))) {
149
- return (_jsx("div", { className: "flex flex-wrap gap-1.5", children: value.map((v, i) => (_jsx("span", { className: "rounded-md bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] px-2 py-0.5 text-[12px] text-[var(--wui-fg)]", children: String(v) }, i))) }));
165
+ return mark(_jsx("div", { className: "flex flex-wrap gap-1.5", children: value.map((v, i) => (_jsx("span", { className: "rounded-md bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)] px-2 py-0.5 text-[12px] text-[var(--wui-fg)]", children: String(v) }, i))) }));
150
166
  }
151
- return (_jsx("div", { className: "flex flex-col gap-2", children: value.map((v, i) => (_jsx("div", { className: "rounded-lg border border-[var(--wui-border)] p-3", children: isPlainObject(v) ? _jsx(MiniGrid, { entries: Object.entries(v) }) : _jsx(ValueCell, { value: v }) }, i))) }));
167
+ return (_jsx("div", { className: "flex flex-col gap-2", children: value.map((v, i) => (_jsx("div", { className: "rounded-lg border border-[var(--wui-border)] p-3", children: isPlainObject(v) ? _jsx(MiniGrid, { entries: Object.entries(v), cite: citeAt(cite, i) }) : _jsx(ValueCell, { value: v, cite: citeAt(cite, i) }) }, i))) }));
152
168
  }
153
169
  if (isPlainObject(value)) {
154
- return (_jsx("div", { className: "rounded-lg border border-[var(--wui-border)] p-3", children: _jsx(MiniGrid, { entries: Object.entries(value) }) }));
170
+ return (_jsx("div", { className: "rounded-lg border border-[var(--wui-border)] p-3", children: _jsx(MiniGrid, { entries: Object.entries(value), cite: cite }) }));
155
171
  }
156
172
  const str = String(value);
157
173
  if (str.length > 100 || str.includes('\n'))
158
- return _jsx(MarkdownView, { className: "text-[13px] text-[var(--wui-fg)]", children: str });
159
- return _jsx("span", { className: "text-[var(--wui-fg)]", children: str });
174
+ return mark(_jsx(MarkdownView, { className: "text-[13px] text-[var(--wui-fg)]", children: str }));
175
+ return mark(_jsx("span", { className: "text-[var(--wui-fg)]", children: str }));
160
176
  }
161
- function MiniGrid({ entries }) {
162
- return (_jsx("div", { className: "grid gap-x-6 gap-y-2 sm:grid-cols-2", children: entries.map(([k, v]) => (_jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx("span", { className: "text-[10.5px] font-semibold uppercase tracking-wide text-[var(--wui-fg-muted)]", children: humanize(k) }), _jsx("div", { className: "min-w-0 text-[13px]", children: _jsx(ValueCell, { value: v }) })] }, k))) }));
177
+ function MiniGrid({ entries, cite }) {
178
+ return (_jsx("div", { className: "grid gap-x-6 gap-y-2 sm:grid-cols-2", children: entries.map(([k, v]) => (_jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx("span", { className: "text-[10.5px] font-semibold uppercase tracking-wide text-[var(--wui-fg-muted)]", children: humanize(k) }), _jsx("div", { className: "min-w-0 text-[13px]", children: _jsx(ValueCell, { value: v, cite: citeAt(cite, k) }) })] }, k))) }));
163
179
  }
164
- function KeyValueGrid({ entries }) {
180
+ function KeyValueGrid({ entries, cite }) {
165
181
  if (entries.length === 0)
166
182
  return _jsx("div", { className: "px-1 py-3 text-[13px] italic text-[var(--wui-fg-muted)]", children: "No fields" });
167
- return (_jsx("div", { className: "grid gap-x-10 gap-y-4 lg:grid-cols-2", children: entries.map(([k, v]) => (_jsxs("div", { className: "flex min-w-0 gap-4", children: [_jsx("span", { className: "w-40 shrink-0 pt-0.5 text-right text-[12px] font-medium text-[var(--wui-fg-muted)]", children: humanize(k) }), _jsx("div", { className: "min-w-0 flex-1 text-[13.5px] leading-relaxed", children: _jsx(ValueCell, { value: v }) })] }, k))) }));
183
+ return (_jsx("div", { className: "grid gap-x-10 gap-y-4 lg:grid-cols-2", children: entries.map(([k, v]) => (_jsxs("div", { className: "flex min-w-0 gap-4", children: [_jsx("span", { className: "w-40 shrink-0 pt-0.5 text-right text-[12px] font-medium text-[var(--wui-fg-muted)]", children: humanize(k) }), _jsx("div", { className: "min-w-0 flex-1 text-[13.5px] leading-relaxed", children: _jsx(ValueCell, { value: v, cite: citeAt(cite, k) }) })] }, k))) }));
168
184
  }
169
185
  function NodeDetail({ state, meta, title, description, template }) {
170
186
  const status = state.status ?? 'pending';
171
187
  const rendered = useMemo(() => (template ? renderLayout(template, { input: state.input ?? {}, output: state.output ?? {}, status: state.status, error: state.error }) : null), [template, state]);
172
188
  const fallback = useMemo(() => deriveSections(state, meta), [state, meta]);
173
- return (_jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsxs("div", { className: "shrink-0 px-6 pt-5 pb-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2.5", children: [_jsx("span", { className: cn('h-2.5 w-2.5 rounded-full', DOT[status]) }), _jsx("h2", { className: "text-[16px] font-semibold text-[var(--wui-fg)]", children: title }), _jsx(StatusBadge, { status: status, className: "ml-0.5" })] }), description && _jsx("p", { className: "mt-1.5 max-w-3xl text-[13px] leading-relaxed text-[var(--wui-fg-muted)]", children: description })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-auto px-6 pb-6", children: rendered ? (rendered.ok ? (_jsx("div", { className: "flex flex-col gap-8", children: rendered.node })) : (_jsxs("div", { className: "rounded-lg border border-red-300 bg-[color-mix(in_srgb,#ef4444_8%,transparent)] p-3 text-[13px] text-red-700", children: ["Layout error: ", rendered.error] }))) : fallback.length === 0 ? (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-[var(--wui-fg-muted)]", children: "No data for this step." })) : (_jsx("div", { className: "flex flex-col gap-8", children: fallback.map((s) => (_jsxs("section", { children: [_jsxs("div", { className: "mb-3 flex items-center gap-3", children: [_jsx("h3", { className: "text-[12px] font-semibold uppercase tracking-wide text-[var(--wui-fg-muted)]", children: s.title }), _jsx("span", { className: "h-px flex-1 bg-[var(--wui-border)]" })] }), _jsx(KeyValueGrid, { entries: s.entries })] }, s.key))) })) })] }));
189
+ return (_jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsxs("div", { className: "shrink-0 px-6 pt-5 pb-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2.5", children: [_jsx("span", { className: cn('h-2.5 w-2.5 rounded-full', DOT[status]) }), _jsx("h2", { className: "text-[16px] font-semibold text-[var(--wui-fg)]", children: title }), _jsx(StatusBadge, { status: status, className: "ml-0.5" })] }), description && _jsx("p", { className: "mt-1.5 max-w-3xl text-[13px] leading-relaxed text-[var(--wui-fg-muted)]", children: description })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-auto px-6 pb-6", children: rendered ? (rendered.ok ? (_jsx("div", { className: "flex flex-col gap-8", children: rendered.node })) : (_jsxs("div", { className: "rounded-lg border border-red-300 bg-[color-mix(in_srgb,#ef4444_8%,transparent)] p-3 text-[13px] text-red-700", children: ["Layout error: ", rendered.error] }))) : fallback.length === 0 ? (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-[var(--wui-fg-muted)]", children: "No data for this step." })) : (_jsx("div", { className: "flex flex-col gap-8", children: fallback.map((s) => (_jsxs("section", { children: [_jsxs("div", { className: "mb-3 flex items-center gap-3", children: [_jsx("h3", { className: "text-[12px] font-semibold uppercase tracking-wide text-[var(--wui-fg-muted)]", children: s.title }), _jsx("span", { className: "h-px flex-1 bg-[var(--wui-border)]" })] }), _jsx(KeyValueGrid, { entries: s.entries, cite: s.cite })] }, s.key))) })) })] }));
174
190
  }
175
191
  // ─── The view ───
176
192
  export function ExecutionTabs({ steps, stepMeta, stepStates, executionSteps, groups, selectedStepId, onStepClick, selectedStepState, selectedStepTitle, selectedStepDescription, triggerLabel, triggerCompleted, isTriggerSelected, onTriggerClick, triggerData, triggerLayout, }) {