@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
@@ -28,6 +28,95 @@ function formatBytes(n) {
28
28
  return `${(n / 1024).toFixed(1)} KB`;
29
29
  return `${(n / (1024 * 1024)).toFixed(1)} MB`;
30
30
  }
31
+ // Conventional file-type identity colors (PDF red, Office blue/green/orange).
32
+ // Deliberately fixed rather than theme tokens — they identify the format, the
33
+ // same way the formats' own icons do, and must not shift with the host theme.
34
+ const EXT_COLORS = {
35
+ pdf: '#e5484d',
36
+ doc: '#2563eb',
37
+ docx: '#2563eb',
38
+ xls: '#188038',
39
+ xlsx: '#188038',
40
+ csv: '#188038',
41
+ tsv: '#188038',
42
+ ppt: '#d97706',
43
+ pptx: '#d97706',
44
+ png: '#7c3aed',
45
+ jpg: '#7c3aed',
46
+ jpeg: '#7c3aed',
47
+ gif: '#7c3aed',
48
+ webp: '#7c3aed',
49
+ svg: '#7c3aed',
50
+ };
51
+ /** Small file-shaped chip carrying the extension — the "PDF logo" of the card.
52
+ * `sm` fits inside tab strips; `md` is the attachment-card row size. */
53
+ export function FileTypeBadge({ name, size = 'md' }) {
54
+ const ext = (name.split('.').pop() ?? '').toLowerCase();
55
+ const color = EXT_COLORS[ext] ?? 'var(--wui-fg-subtle)';
56
+ const label = (ext || 'file').slice(0, 4).toUpperCase();
57
+ const sm = size === 'sm';
58
+ return (_jsxs("span", { "aria-hidden": true, className: cn('relative grid shrink-0 place-items-center overflow-hidden', sm ? 'h-[18px] w-[15px] rounded-[3.5px]' : 'h-7 w-[24px] rounded-[5px]'), style: { backgroundColor: color }, children: [_jsx("span", { className: cn('absolute right-0 top-0 bg-white/30', sm ? 'h-[5px] w-[5px] rounded-bl-[2px]' : 'h-[7px] w-[7px] rounded-bl-[3px]') }), _jsx("span", { className: cn('font-bold tracking-tight text-white', sm ? 'text-[5.5px]' : 'text-[6.5px]'), children: label })] }));
59
+ }
60
+ /**
61
+ * First-page peek for a PDF: renders page 1 into a canvas strip (cropped to
62
+ * the top of the page) that opens the full preview on click. pdf.js is
63
+ * dynamically imported so non-PDF cards never pay for the library; the
64
+ * document is destroyed as soon as the thumbnail is painted. Hidden entirely
65
+ * if anything fails — the peek is best-effort chrome, not content.
66
+ */
67
+ function PdfPeek({ url, onOpen }) {
68
+ const canvasRef = useRef(null);
69
+ const wrapRef = useRef(null);
70
+ const [state, setState] = useState('loading');
71
+ useEffect(() => {
72
+ let cancelled = false;
73
+ let task = null;
74
+ void (async () => {
75
+ try {
76
+ const pdfjs = await import('pdfjs-dist');
77
+ pdfjs.GlobalWorkerOptions.workerSrc = '/pdf.worker.mjs';
78
+ const absUrl = /^https?:/i.test(url) ? url : `${window.location.origin}${url}`;
79
+ const t = pdfjs.getDocument({ url: absUrl, withCredentials: true });
80
+ task = t;
81
+ const doc = await t.promise;
82
+ if (cancelled)
83
+ return;
84
+ const page = await doc.getPage(1);
85
+ const canvas = canvasRef.current;
86
+ if (cancelled || !canvas)
87
+ return;
88
+ const cssW = Math.min(wrapRef.current?.clientWidth ?? 360, 480);
89
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
90
+ const base = page.getViewport({ scale: 1 });
91
+ const viewport = page.getViewport({ scale: (cssW / base.width) * dpr });
92
+ canvas.width = viewport.width;
93
+ canvas.height = viewport.height;
94
+ canvas.style.width = `${String(cssW)}px`;
95
+ await page.render({ canvas, viewport }).promise;
96
+ if (!cancelled)
97
+ setState('ready');
98
+ }
99
+ catch {
100
+ if (!cancelled)
101
+ setState('failed');
102
+ }
103
+ finally {
104
+ void task?.destroy().catch(() => undefined);
105
+ }
106
+ })();
107
+ return () => { cancelled = true; };
108
+ }, [url]);
109
+ if (state === 'failed')
110
+ return null;
111
+ return (_jsxs("button", { ref: wrapRef, type: "button", onClick: onOpen, title: "Preview", "aria-label": "Preview document", className: "relative block h-24 w-full overflow-hidden border-t border-[var(--wui-border)] bg-white", children: [state === 'loading' && _jsx("div", { className: "absolute inset-0 animate-pulse bg-[var(--wui-bg-muted)]" }), _jsx("canvas", { ref: canvasRef, className: "mx-auto block" }), _jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-6 bg-gradient-to-t from-black/10 to-transparent" })] }));
112
+ }
113
+ /** Image peek strip — same affordance as {@link PdfPeek} for image files. */
114
+ function ImagePeek({ url, onOpen }) {
115
+ const [ok, setOk] = useState(true);
116
+ if (!ok)
117
+ return null;
118
+ return (_jsx("button", { type: "button", onClick: onOpen, title: "Preview", "aria-label": "Preview image", className: "block w-full overflow-hidden border-t border-[var(--wui-border)]", children: _jsx("img", { src: url, alt: "", onError: () => setOk(false), className: "h-24 w-full object-cover object-top" }) }));
119
+ }
31
120
  /**
32
121
  * Renders a single {@link Attachment} as a download card with inline preview
33
122
  * for images / markdown / text. Generic — used wherever an attachment-typed
@@ -40,6 +129,7 @@ export function AttachmentCard({ attachment }) {
40
129
  const openAsTab = useDocPreview();
41
130
  const url = client.uploads.url(attachment);
42
131
  const isImage = attachment.mimeType.startsWith('image/');
132
+ const isPdf = attachment.mimeType === 'application/pdf' || attachment.name.toLowerCase().endsWith('.pdf');
43
133
  const isMarkdown = attachment.mimeType === 'text/markdown' || attachment.name.endsWith('.md');
44
134
  const isHtml = attachment.mimeType === 'text/html' || attachment.name.endsWith('.html') || attachment.name.endsWith('.htm');
45
135
  const isText = attachment.mimeType.startsWith('text/') && !isHtml;
@@ -60,7 +150,7 @@ export function AttachmentCard({ attachment }) {
60
150
  openAsTab(attachment);
61
151
  else
62
152
  setPreviewOpen(true); };
63
- return (_jsxs("div", { className: "rounded-lg border border-[var(--wui-border)] overflow-hidden", children: [_jsxs("div", { onClick: openPreview, className: "flex cursor-pointer items-center justify-between gap-2 px-3 py-2 bg-[var(--wui-bg-subtle)] transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)]", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", className: "shrink-0 text-[var(--wui-fg-muted)]", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z" }), _jsx("polyline", { points: "13 2 13 9 20 9" })] }), _jsx("span", { className: "text-[12px] font-medium text-[var(--wui-fg)] truncate", children: attachment.name }), attachment.size !== undefined && (_jsx("span", { className: "text-[10px] text-[var(--wui-fg-muted)] shrink-0", children: formatBytes(attachment.size) }))] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); openPreview(); }, title: "Preview", "aria-label": "Preview", className: "grid place-items-center rounded-md p-1.5 text-[var(--wui-fg-muted)] hover:bg-[color-mix(in_srgb,var(--wui-fg)_8%,transparent)] hover:text-[var(--wui-fg)] transition-colors", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7z" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] }) }), _jsx("a", { href: url, download: attachment.name, target: "_blank", rel: "noopener noreferrer", onClick: (e) => e.stopPropagation(), title: "Download", "aria-label": "Download", className: "grid place-items-center rounded-md p-1.5 text-[var(--wui-primary)] hover:bg-[color-mix(in_srgb,var(--wui-primary)_12%,transparent)] transition-colors", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "7 10 12 15 17 10" }), _jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] }) })] })] }), isMarkdown && preview !== null && (_jsx("div", { className: "px-3 py-2 max-h-64 overflow-y-auto", children: _jsx(MarkdownView, { children: preview }) })), !isMarkdown && isText && !isImage && preview !== null && (_jsx("pre", { className: "px-3 py-2 max-h-64 overflow-y-auto whitespace-pre-wrap font-mono text-[11px] text-[var(--wui-fg-muted)]", children: preview })), previewOpen && (_jsx(AttachmentPreviewModal, { attachment: attachment, url: url, onClose: () => setPreviewOpen(false) }))] }));
153
+ return (_jsxs("div", { className: "rounded-lg border border-[var(--wui-border)] overflow-hidden", children: [_jsxs("div", { onClick: openPreview, className: "flex cursor-pointer items-center justify-between gap-2 px-3 py-2 bg-[var(--wui-bg-subtle)] transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)]", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [_jsx(FileTypeBadge, { name: attachment.name }), _jsx("span", { className: "text-[12px] font-medium text-[var(--wui-fg)] truncate", children: attachment.name }), attachment.size !== undefined && (_jsx("span", { className: "text-[10px] text-[var(--wui-fg-muted)] shrink-0", children: formatBytes(attachment.size) }))] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); openPreview(); }, title: "Preview", "aria-label": "Preview", className: "grid place-items-center rounded-md p-1.5 text-[var(--wui-fg-muted)] hover:bg-[color-mix(in_srgb,var(--wui-fg)_8%,transparent)] hover:text-[var(--wui-fg)] transition-colors", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7z" }), _jsx("circle", { cx: "12", cy: "12", r: "3" })] }) }), _jsx("a", { href: url, download: attachment.name, target: "_blank", rel: "noopener noreferrer", onClick: (e) => e.stopPropagation(), title: "Download", "aria-label": "Download", className: "grid place-items-center rounded-md p-1.5 text-[var(--wui-primary)] hover:bg-[color-mix(in_srgb,var(--wui-primary)_12%,transparent)] transition-colors", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "7 10 12 15 17 10" }), _jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] }) })] })] }), isPdf && _jsx(PdfPeek, { url: url, onOpen: openPreview }), isImage && _jsx(ImagePeek, { url: url, onOpen: openPreview }), isMarkdown && preview !== null && (_jsx("div", { className: "px-3 py-2 max-h-64 overflow-y-auto", children: _jsx(MarkdownView, { children: preview }) })), !isMarkdown && isText && !isImage && preview !== null && (_jsx("pre", { className: "px-3 py-2 max-h-64 overflow-y-auto whitespace-pre-wrap font-mono text-[11px] text-[var(--wui-fg-muted)]", children: preview })), previewOpen && (_jsx(AttachmentPreviewModal, { attachment: attachment, url: url, onClose: () => setPreviewOpen(false) }))] }));
64
154
  }
65
155
  /**
66
156
  * Full-size, any-type document preview in a modal — the generic
@@ -69,7 +159,7 @@ export function AttachmentCard({ attachment }) {
69
159
  * appears (step outputs, the value-origin panel, WAIT display rows), so a single
70
160
  * viewer serves every attachment surface.
71
161
  */
72
- function AttachmentPreviewModal({ attachment, url, onClose, }) {
162
+ export function AttachmentPreviewModal({ attachment, url, page, highlightQuery, onClose, }) {
73
163
  useEffect(() => {
74
164
  const onKey = (e) => { if (e.key === 'Escape')
75
165
  onClose(); };
@@ -79,7 +169,7 @@ function AttachmentPreviewModal({ attachment, url, onClose, }) {
79
169
  return createPortal(
80
170
  // Portals mount on document.body — outside the [data-workflow-ui] theme scope —
81
171
  // so re-assert it here or every --wui-* token resolves to nothing.
82
- _jsxs("div", { "data-workflow-ui": "true", className: "fixed inset-0 z-50 flex items-center justify-center p-4", children: [_jsx("button", { type: "button", "aria-label": "Close preview", onClick: onClose, className: "absolute inset-0 cursor-default bg-black/40 backdrop-blur-sm" }), _jsxs("div", { className: "relative flex max-h-[88vh] w-full max-w-[920px] flex-col overflow-hidden rounded-2xl border border-[var(--wui-border)] bg-[var(--wui-bg)] shadow-2xl", role: "dialog", "aria-modal": "true", "aria-label": attachment.name, children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-[var(--wui-border)] px-4 py-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-[14px] font-semibold text-[var(--wui-fg)]", children: attachment.name }), _jsxs("p", { className: "truncate text-[12px] text-[var(--wui-fg-muted)]", children: [attachment.mimeType, attachment.size !== undefined ? ` · ${formatBytes(attachment.size)}` : ''] })] }), _jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer", title: "Open in new tab", className: "grid size-8 place-items-center rounded-lg text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)]", children: _jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }), _jsx("polyline", { points: "15 3 21 3 21 9" }), _jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })] }) }), _jsx("a", { href: url, download: attachment.name, title: "Download", className: "grid size-8 place-items-center rounded-lg text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)]", children: _jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "7 10 12 15 17 10" }), _jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] }) }), _jsx("button", { type: "button", onClick: onClose, title: "Close", className: "grid size-8 place-items-center rounded-lg text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)]", 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: url, mimeType: attachment.mimeType, name: attachment.name }) })] })] }), document.body);
172
+ _jsxs("div", { "data-workflow-ui": "true", className: "fixed inset-0 z-50 flex items-center justify-center p-4", children: [_jsx("button", { type: "button", "aria-label": "Close preview", onClick: onClose, className: "absolute inset-0 cursor-default bg-black/40 backdrop-blur-sm" }), _jsxs("div", { className: "relative flex max-h-[88vh] w-full max-w-[920px] flex-col overflow-hidden rounded-2xl border border-[var(--wui-border)] bg-[var(--wui-bg)] shadow-2xl", role: "dialog", "aria-modal": "true", "aria-label": attachment.name, children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-[var(--wui-border)] px-4 py-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-[14px] font-semibold text-[var(--wui-fg)]", children: attachment.name }), _jsxs("p", { className: "truncate text-[12px] text-[var(--wui-fg-muted)]", children: [attachment.mimeType, attachment.size !== undefined ? ` · ${formatBytes(attachment.size)}` : ''] })] }), _jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer", title: "Open in new tab", className: "grid size-8 place-items-center rounded-lg text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)]", children: _jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }), _jsx("polyline", { points: "15 3 21 3 21 9" }), _jsx("line", { x1: "10", y1: "14", x2: "21", y2: "3" })] }) }), _jsx("a", { href: url, download: attachment.name, title: "Download", className: "grid size-8 place-items-center rounded-lg text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)]", children: _jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), _jsx("polyline", { points: "7 10 12 15 17 10" }), _jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })] }) }), _jsx("button", { type: "button", onClick: onClose, title: "Close", className: "grid size-8 place-items-center rounded-lg text-[var(--wui-fg-muted)] transition-colors hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)]", 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: url, mimeType: attachment.mimeType, name: attachment.name, page: page, highlightQuery: highlightQuery }) })] })] }), document.body);
83
173
  }
84
174
  /** Render one attachment or a list of them. */
85
175
  export function AttachmentList({ attachments }) {
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentCard.js","sourceRoot":"","sources":["../../../src/components/shared/AttachmentCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AttachmentCard.js","sourceRoot":"","sources":["../../../src/components/shared/AttachmentCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The reader-facing citation affordance: a compact ↗ beside a data point that
3
+ * opens the source it came from.
4
+ *
5
+ * One marker per citation — a value backed by three sources shows three markers,
6
+ * each opening its own. No popover: every source stays one click away, and the
7
+ * count itself tells the reader how well-backed the value is.
8
+ */
9
+ import { type ReactNode } from 'react';
10
+ import type { CitationRef } from './citation.js';
11
+ export interface CitationArrowProps {
12
+ /** The citation this marker opens. */
13
+ citation: CitationRef;
14
+ /** 1-based position, rendered as a superscript when a value has several. */
15
+ index?: number | undefined;
16
+ className?: string | undefined;
17
+ }
18
+ /**
19
+ * A single citation marker. Clicking opens its source directly: a document at
20
+ * its cited page with the quoted passage highlighted, or an external link.
21
+ *
22
+ * Renders nothing outside a {@link CitationOriginContext} provider — without an
23
+ * execution in scope there's nothing to resolve against.
24
+ */
25
+ export declare function CitationArrow({ citation, index, className }: CitationArrowProps): import("react").JSX.Element | null;
26
+ export interface CitationMarksProps {
27
+ /** The citations for one data point. */
28
+ refs: CitationRef[] | undefined;
29
+ className?: string | undefined;
30
+ }
31
+ /**
32
+ * Every citation on one data point, as one marker each — numbered once there's
33
+ * more than one to tell apart. Renders nothing when uncited, so an uncited value
34
+ * looks exactly as it did before citations existed.
35
+ */
36
+ export declare function CitationMarks({ refs, className }: CitationMarksProps): ReactNode;
37
+ //# sourceMappingURL=CitationArrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CitationArrow.d.ts","sourceRoot":"","sources":["../../../src/components/shared/CitationArrow.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA8BjD,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,QAAQ,EAAE,WAAW,CAAC;IACtB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,kBAAkB,sCAyD/E;AAED,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,SAAS,CAwBhF"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * The reader-facing citation affordance: a compact ↗ beside a data point that
4
+ * opens the source it came from.
5
+ *
6
+ * One marker per citation — a value backed by three sources shows three markers,
7
+ * each opening its own. No popover: every source stays one click away, and the
8
+ * count itself tells the reader how well-backed the value is.
9
+ */
10
+ import { useState } from 'react';
11
+ import { cn } from './cn.js';
12
+ import { AttachmentPreviewModal } from './AttachmentCard.js';
13
+ import { useCitationOrigin, useCitationOpener } from './citation-context.js';
14
+ import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
15
+ import { resolveCitationRef, } from '../execution/origin/citation-resolver.js';
16
+ /** Beyond this many markers the row turns to noise; the rest collapse to "+k". */
17
+ const MAX_INLINE_MARKERS = 6;
18
+ function hostOf(url) {
19
+ try {
20
+ return new URL(url).host;
21
+ }
22
+ catch {
23
+ return url;
24
+ }
25
+ }
26
+ /** What the marker says on hover — enough to know where it goes before clicking. */
27
+ function titleFor(resolved, ref) {
28
+ if (!resolved) {
29
+ return ref.kind === 'ref' ? `Source: ${ref.ref} (no document)` : 'Source';
30
+ }
31
+ if (resolved.kind === 'url')
32
+ return `Source: ${resolved.title ?? hostOf(resolved.url)}`;
33
+ const page = resolved.page !== undefined ? `, p.${String(resolved.page)}` : '';
34
+ return `Source: ${resolved.attachment.name}${page}`;
35
+ }
36
+ /**
37
+ * A single citation marker. Clicking opens its source directly: a document at
38
+ * its cited page with the quoted passage highlighted, or an external link.
39
+ *
40
+ * Renders nothing outside a {@link CitationOriginContext} provider — without an
41
+ * execution in scope there's nothing to resolve against.
42
+ */
43
+ export function CitationArrow({ citation, index, className }) {
44
+ const client = useWorkflowClient();
45
+ const ctx = useCitationOrigin();
46
+ const openInPanel = useCitationOpener();
47
+ const [openDoc, setOpenDoc] = useState(null);
48
+ const resolved = ctx ? resolveCitationRef(citation, ctx) : undefined;
49
+ if (!ctx)
50
+ return null;
51
+ const open = () => {
52
+ if (!resolved)
53
+ return;
54
+ if (resolved.kind === 'url') {
55
+ window.open(resolved.url, '_blank', 'noopener,noreferrer');
56
+ return;
57
+ }
58
+ // Side-by-side where the surface can host it (the run view) — a modal would
59
+ // cover the very data you're checking. Modal only as a fallback.
60
+ if (openInPanel)
61
+ openInPanel(resolved);
62
+ else
63
+ setOpenDoc(resolved);
64
+ };
65
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", onClick: open, disabled: !resolved, title: titleFor(resolved, citation), className: cn('inline-flex shrink-0 items-center gap-px rounded-[var(--wui-radius-sm)] px-0.5 align-middle transition-colors', resolved
66
+ ? 'text-[var(--wui-fg-muted)] hover:bg-[color-mix(in_srgb,var(--wui-primary)_12%,transparent)] hover:text-[var(--wui-primary)]'
67
+ // A cited value whose source can't be opened still shows a marker —
68
+ // the agent claimed a source, and hiding that would read as uncited.
69
+ : 'cursor-default text-[var(--wui-border-strong)]', className), children: [_jsxs("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("line", { x1: "7", y1: "17", x2: "17", y2: "7" }), _jsx("polyline", { points: "7 7 17 7 17 17" })] }), index !== undefined && (_jsx("sup", { className: "text-[8px] font-semibold leading-none", children: index }))] }), openDoc && (_jsx(AttachmentPreviewModal, { attachment: openDoc.attachment, url: client.uploads.url(openDoc.attachment), page: openDoc.page, highlightQuery: openDoc.quote, onClose: () => { setOpenDoc(null); } }))] }));
70
+ }
71
+ /**
72
+ * Every citation on one data point, as one marker each — numbered once there's
73
+ * more than one to tell apart. Renders nothing when uncited, so an uncited value
74
+ * looks exactly as it did before citations existed.
75
+ */
76
+ export function CitationMarks({ refs, className }) {
77
+ if (!refs || refs.length === 0)
78
+ return null;
79
+ const shown = refs.slice(0, MAX_INLINE_MARKERS);
80
+ const overflow = refs.length - shown.length;
81
+ return (_jsxs("span", { className: cn('inline-flex shrink-0 items-center gap-px', className), children: [shown.map((ref, i) => (_jsx(CitationArrow, { citation: ref, index: refs.length > 1 ? i + 1 : undefined }, `${ref.kind}-${ref.kind === 'ref' ? ref.ref : ref.url}-${String(i)}`))), overflow > 0 && (_jsxs("span", { className: "text-[9px] font-semibold text-[var(--wui-fg-muted)]", title: `${String(overflow)} more source(s)`, children: ["+", overflow] }))] }));
82
+ }
83
+ //# sourceMappingURL=CitationArrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CitationArrow.js","sourceRoot":"","sources":["../../../src/components/shared/CitationArrow.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- export declare function DocumentViewer({ url, mimeType, name, page, }: {
1
+ export declare function DocumentViewer({ url, mimeType, name, page, highlightQuery, }: {
2
2
  url: string;
3
3
  mimeType: string;
4
4
  name: string;
5
- page?: number;
5
+ page?: number | undefined;
6
+ /** Text to search-and-highlight on open (PDF only). */
7
+ highlightQuery?: string | undefined;
6
8
  }): import("react").JSX.Element;
7
9
  //# sourceMappingURL=DocumentViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentViewer.d.ts","sourceRoot":"","sources":["../../../src/components/shared/DocumentViewer.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,GACL,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,+BAwCA"}
1
+ {"version":3,"file":"DocumentViewer.d.ts","sourceRoot":"","sources":["../../../src/components/shared/DocumentViewer.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,cAAc,GACf,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,+BAiCA"}
@@ -10,6 +10,8 @@ const SheetView = lazy(() => import('./viewers/SheetView.js'));
10
10
  const DocxView = lazy(() => import('./viewers/DocxView.js'));
11
11
  const TextView = lazy(() => import('./viewers/TextView.js'));
12
12
  const HtmlView = lazy(() => import('./viewers/HtmlView.js'));
13
+ // pdf.js is code-split so its sizable lib only loads when a PDF is opened.
14
+ const PdfView = lazy(() => import('./viewers/PdfView.js'));
13
15
  // Resolve a renderer kind from the MIME type, falling back to the file
14
16
  // extension (extraction/upload sources aren't always reliable about MIME).
15
17
  function kindOf(mimeType, name) {
@@ -39,19 +41,17 @@ function kindOf(mimeType, name) {
39
41
  return 'text';
40
42
  return 'unsupported';
41
43
  }
42
- // Generic, themeable document preview. Renders PDF (native iframe, #page
43
- // deep-link) and images inline; lazy-loads CSV / XLSX / DOCX / text / json /
44
- // markdown renderers; everything else (and any renderer failure) degrades to a
44
+ // Generic, themeable document preview. Renders images inline; lazy-loads the
45
+ // PDF (pdf.js viewer scrolls to `page` and pre-highlights `highlightQuery`
46
+ // via its Find controller) / CSV / XLSX / DOCX / text / json / markdown
47
+ // renderers; everything else (and any renderer failure) degrades to a
45
48
  // download link. `url` is the raw same-origin attachment URL (cookie auth).
46
- export function DocumentViewer({ url, mimeType, name, page, }) {
49
+ export function DocumentViewer({ url, mimeType, name, page, highlightQuery, }) {
47
50
  const kind = kindOf(mimeType, name);
48
- if (kind === 'pdf') {
49
- return (_jsx("iframe", { src: `${url}${page ? `#page=${String(page)}` : ''}`, title: name, className: "h-[72vh] w-full border-0" }));
50
- }
51
51
  if (kind === 'image') {
52
52
  return _jsx(ImageView, { url: url, name: name });
53
53
  }
54
- const view = kind === 'csv' ? (_jsx(CsvView, { url: url })) : kind === 'sheet' ? (_jsx(SheetView, { url: url })) : kind === 'docx' ? (_jsx(DocxView, { url: url })) : kind === 'html' ? (_jsx(HtmlView, { url: url })) : kind === 'markdown' ? (_jsx(TextView, { url: url, mode: "markdown" })) : kind === 'json' ? (_jsx(TextView, { url: url, mode: "json" })) : kind === 'text' ? (_jsx(TextView, { url: url, mode: "text" })) : null;
54
+ const view = kind === 'pdf' ? (_jsx(PdfView, { url: url, name: name, initialPage: page, highlightQuery: highlightQuery })) : kind === 'csv' ? (_jsx(CsvView, { url: url })) : kind === 'sheet' ? (_jsx(SheetView, { url: url })) : kind === 'docx' ? (_jsx(DocxView, { url: url })) : kind === 'html' ? (_jsx(HtmlView, { url: url })) : kind === 'markdown' ? (_jsx(TextView, { url: url, mode: "markdown" })) : kind === 'json' ? (_jsx(TextView, { url: url, mode: "json" })) : kind === 'text' ? (_jsx(TextView, { url: url, mode: "text" })) : null;
55
55
  if (!view)
56
56
  return _jsx(DownloadFallback, { url: url, name: name });
57
57
  return (_jsx(ViewerBoundary, { fallback: _jsx(DownloadFallback, { url: url, name: name }), children: _jsx(Suspense, { fallback: _jsx(ViewerLoading, {}), children: view }) }, `${kind}:${url}`));
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentViewer.js","sourceRoot":"","sources":["../../../src/components/shared/DocumentViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocumentViewer.js","sourceRoot":"","sources":["../../../src/components/shared/DocumentViewer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Collapsible JSON tree viewer. Extracted from StepDetailPanel so the run-view
3
+ * activity timeline (tool-call args/results) can reuse it.
4
+ */
5
+ export declare function JsonTreeViewer({ data, placeholder }: {
6
+ data?: unknown;
7
+ placeholder: string;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=JsonTreeViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonTreeViewer.d.ts","sourceRoot":"","sources":["../../../src/components/shared/JsonTreeViewer.tsx"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,+BAoB5F"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { cn } from './cn.js';
4
+ /**
5
+ * Collapsible JSON tree viewer. Extracted from StepDetailPanel so the run-view
6
+ * activity timeline (tool-call args/results) can reuse it.
7
+ */
8
+ export function JsonTreeViewer({ data, placeholder }) {
9
+ if (data === undefined || data === null || (typeof data === 'object' && Object.keys(data).length === 0)) {
10
+ return (_jsx("div", { className: "flex items-center justify-center py-8", children: _jsxs("div", { className: "text-center", children: [_jsxs("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", className: "mx-auto text-slate-300 mb-2", children: [_jsx("path", { d: "M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("polyline", { points: "13 2 13 9 20 9", strokeLinecap: "round", strokeLinejoin: "round" })] }), _jsx("div", { className: "text-[12px] text-slate-400", children: placeholder })] }) }));
11
+ }
12
+ return (_jsx("div", { className: "font-mono text-[12px] leading-[1.6]", children: _jsx(JsonNode, { value: data, depth: 0, isLast: true }) }));
13
+ }
14
+ function JsonNode({ value, depth, keyName, isLast }) {
15
+ const [collapsed, setCollapsed] = useState(depth > 2);
16
+ const indent = depth * 16;
17
+ if (value === null) {
18
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsx("span", { className: "text-slate-400 italic", children: "null" }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] }));
19
+ }
20
+ if (typeof value === 'boolean') {
21
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsx("span", { className: "text-violet-600", children: value ? 'true' : 'false' }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] }));
22
+ }
23
+ if (typeof value === 'number') {
24
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsx("span", { className: "text-blue-600", children: String(value) }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] }));
25
+ }
26
+ if (typeof value === 'string') {
27
+ const isLong = value.length > 80;
28
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "group/val flex items-start gap-1", children: [keyName !== undefined && _jsxs("span", { className: "shrink-0 text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsxs("span", { className: cn('text-emerald-700 break-all', isLong && 'block'), children: ["\"", value, "\""] }), !isLast && _jsx("span", { className: "text-slate-300 shrink-0", children: "," })] }));
29
+ }
30
+ if (Array.isArray(value)) {
31
+ if (value.length === 0) {
32
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsx("span", { className: "text-slate-400", children: "[]" }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] }));
33
+ }
34
+ return (_jsxs("div", { children: [_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1 cursor-pointer hover:bg-slate-50 rounded -mx-1 px-1 transition-colors", onClick: () => setCollapsed(!collapsed), children: [_jsx("span", { className: "text-slate-400 w-3 text-center shrink-0 select-none", children: collapsed ? '▶' : '▼' }), keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), collapsed ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-slate-400", children: "[" }), _jsxs("span", { className: "text-slate-400 text-[10px]", children: [value.length, " items"] }), _jsx("span", { className: "text-slate-400", children: "]" }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] })) : (_jsx("span", { className: "text-slate-400", children: "[" }))] }), !collapsed && (_jsxs(_Fragment, { children: [value.map((item, i) => (_jsx(JsonNode, { value: item, depth: depth + 1, keyName: String(i), isLast: i === value.length - 1 }, i))), _jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [_jsx("span", { className: "w-3 shrink-0" }), _jsx("span", { className: "text-slate-400", children: "]" }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] })] }))] }));
35
+ }
36
+ if (typeof value === 'object') {
37
+ const entries = Object.entries(value);
38
+ if (entries.length === 0) {
39
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsx("span", { className: "text-slate-400", children: '{}' }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] }));
40
+ }
41
+ return (_jsxs("div", { children: [_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1 cursor-pointer hover:bg-slate-50 rounded -mx-1 px-1 transition-colors", onClick: () => setCollapsed(!collapsed), children: [_jsx("span", { className: "text-slate-400 w-3 text-center shrink-0 select-none", children: collapsed ? '▶' : '▼' }), keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), collapsed ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-slate-400", children: '{' }), _jsxs("span", { className: "text-slate-400 text-[10px]", children: [entries.length, " keys"] }), _jsx("span", { className: "text-slate-400", children: '}' }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] })) : (_jsx("span", { className: "text-slate-400", children: '{' }))] }), !collapsed && (_jsxs(_Fragment, { children: [entries.map(([k, v], i) => (_jsx(JsonNode, { value: v, depth: depth + 1, keyName: k, isLast: i === entries.length - 1 }, k))), _jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [_jsx("span", { className: "w-3 shrink-0" }), _jsx("span", { className: "text-slate-400", children: '}' }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] })] }))] }));
42
+ }
43
+ // Fallback for unknown types
44
+ return (_jsxs("div", { style: { paddingLeft: indent }, className: "flex items-baseline gap-1", children: [keyName !== undefined && _jsxs("span", { className: "text-slate-500", children: [keyName, _jsx("span", { className: "text-slate-400", children: ": " })] }), _jsx("span", { className: "text-slate-600", children: String(value) }), !isLast && _jsx("span", { className: "text-slate-300", children: "," })] }));
45
+ }
46
+ //# sourceMappingURL=JsonTreeViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonTreeViewer.js","sourceRoot":"","sources":["../../../src/components/shared/JsonTreeViewer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Renders a `:::citation{…}` block: the statement as normal prose, trailed by a
3
+ * ↗ marker opening the source it came from.
4
+ *
5
+ * Named `MarkdownCitation`, not `Citation` — the SDK already has a `Citation`,
6
+ * the author-time overlay attached to a step's *config* in the builder. Same
7
+ * word, different concept; keeping the names apart keeps the two from being
8
+ * confused for one another.
9
+ */
10
+ import type { ReactNode } from 'react';
11
+ export interface MarkdownCitationProps {
12
+ /** Ref path into the workflow, as shown to the agent in a `[source: …]` label. */
13
+ ref?: string | undefined;
14
+ /** 1-based page within the resolved document. Arrives as a string from markdown. */
15
+ page?: string | undefined;
16
+ /** External source, as an alternative to `ref`. */
17
+ url?: string | undefined;
18
+ /** The exact source text, highlighted once the document opens. */
19
+ quote?: string | undefined;
20
+ /** Label for the url form. */
21
+ title?: string | undefined;
22
+ children?: ReactNode;
23
+ }
24
+ export declare function MarkdownCitation(props: MarkdownCitationProps): import("react").JSX.Element;
25
+ //# sourceMappingURL=MarkdownCitation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownCitation.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownCitation.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA2BD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,+BAQ5D"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CitationArrow } from './CitationArrow.js';
3
+ /** Directive attributes are always strings; a page must survive as a real number. */
4
+ function toPage(page) {
5
+ if (page === undefined)
6
+ return undefined;
7
+ const n = Number(page);
8
+ return Number.isInteger(n) && n >= 1 ? n : undefined;
9
+ }
10
+ function toCitation(props) {
11
+ // Checked here as well as in the sanitize schema: markdown reaches this
12
+ // component from an LLM, and a `javascript:` target must not become a link.
13
+ if (props.url !== undefined && /^https?:\/\//i.test(props.url)) {
14
+ return { kind: 'url', url: props.url, ...(props.title ? { title: props.title } : {}) };
15
+ }
16
+ if (props.ref !== undefined && props.ref !== '') {
17
+ const page = toPage(props.page);
18
+ return {
19
+ kind: 'ref',
20
+ ref: props.ref,
21
+ ...(page !== undefined ? { page } : {}),
22
+ ...(props.quote ? { quote: props.quote } : {}),
23
+ };
24
+ }
25
+ return undefined;
26
+ }
27
+ export function MarkdownCitation(props) {
28
+ const citation = toCitation(props);
29
+ return (_jsxs("span", { className: "wui-citation", children: [props.children, citation && _jsx(CitationArrow, { citation: citation })] }));
30
+ }
31
+ //# sourceMappingURL=MarkdownCitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownCitation.js","sourceRoot":"","sources":["../../../src/components/shared/MarkdownCitation.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgBnD,qFAAqF;AACrF,SAAS,MAAM,CAAC,IAAwB;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,KAA4B;IAC9C,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CACL,gBAAM,SAAS,EAAC,cAAc,aAC3B,KAAK,CAAC,QAAQ,EACd,QAAQ,IAAI,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,GAAI,IAC7C,CACR,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownView.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,iBAAiB,+BA4D5E"}
1
+ {"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownView.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,iBAAiB,+BAmE5E"}