@workflow/web-shared 5.0.0-beta.1 → 5.0.0-beta.3

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 (194) hide show
  1. package/README.md +1 -1
  2. package/dist/components/error-boundary.js.map +1 -1
  3. package/dist/components/event-list-view.d.ts +3 -1
  4. package/dist/components/event-list-view.d.ts.map +1 -1
  5. package/dist/components/event-list-view.js +53 -53
  6. package/dist/components/event-list-view.js.map +1 -1
  7. package/dist/components/hook-actions.js.map +1 -1
  8. package/dist/components/index.d.ts +3 -1
  9. package/dist/components/index.d.ts.map +1 -1
  10. package/dist/components/index.js +3 -1
  11. package/dist/components/index.js.map +1 -1
  12. package/dist/components/new-trace-viewer/components/copy-button.d.ts +9 -0
  13. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +1 -0
  14. package/dist/components/new-trace-viewer/components/copy-button.js +27 -0
  15. package/dist/components/new-trace-viewer/components/copy-button.js.map +1 -0
  16. package/dist/components/new-trace-viewer/components/event-list.d.ts +8 -0
  17. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -0
  18. package/dist/components/new-trace-viewer/components/event-list.js +35 -0
  19. package/dist/components/new-trace-viewer/components/event-list.js.map +1 -0
  20. package/dist/components/new-trace-viewer/components/split-pane.d.ts +14 -0
  21. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -0
  22. package/dist/components/new-trace-viewer/components/split-pane.js +100 -0
  23. package/dist/components/new-trace-viewer/components/split-pane.js.map +1 -0
  24. package/dist/components/new-trace-viewer/components/timeline.d.ts +32 -0
  25. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -0
  26. package/dist/components/new-trace-viewer/components/timeline.js +134 -0
  27. package/dist/components/new-trace-viewer/components/timeline.js.map +1 -0
  28. package/dist/components/new-trace-viewer/context.d.ts +15 -0
  29. package/dist/components/new-trace-viewer/context.d.ts.map +1 -0
  30. package/dist/components/new-trace-viewer/context.js +49 -0
  31. package/dist/components/new-trace-viewer/context.js.map +1 -0
  32. package/dist/components/new-trace-viewer/detail-panel.d.ts +10 -0
  33. package/dist/components/new-trace-viewer/detail-panel.d.ts.map +1 -0
  34. package/dist/components/new-trace-viewer/detail-panel.js +11 -0
  35. package/dist/components/new-trace-viewer/detail-panel.js.map +1 -0
  36. package/dist/components/new-trace-viewer/icons.d.ts +6 -0
  37. package/dist/components/new-trace-viewer/icons.d.ts.map +1 -0
  38. package/dist/components/new-trace-viewer/icons.js +15 -0
  39. package/dist/components/new-trace-viewer/icons.js.map +1 -0
  40. package/dist/components/new-trace-viewer/trace-viewer.d.ts +8 -0
  41. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -0
  42. package/dist/components/new-trace-viewer/trace-viewer.js +329 -0
  43. package/dist/components/new-trace-viewer/trace-viewer.js.map +1 -0
  44. package/dist/components/new-trace-viewer/types.d.ts +1 -0
  45. package/dist/components/new-trace-viewer/types.d.ts.map +1 -0
  46. package/dist/components/new-trace-viewer/types.js +2 -0
  47. package/dist/components/new-trace-viewer/types.js.map +1 -0
  48. package/dist/components/new-trace-viewer/util/constants.d.ts +1 -0
  49. package/dist/components/new-trace-viewer/util/constants.d.ts.map +1 -0
  50. package/dist/components/new-trace-viewer/util/constants.js +2 -0
  51. package/dist/components/new-trace-viewer/util/constants.js.map +1 -0
  52. package/dist/components/new-trace-viewer/utils.d.ts +47 -0
  53. package/dist/components/new-trace-viewer/utils.d.ts.map +1 -0
  54. package/dist/components/new-trace-viewer/utils.js +358 -0
  55. package/dist/components/new-trace-viewer/utils.js.map +1 -0
  56. package/dist/components/run-trace-view.d.ts +2 -1
  57. package/dist/components/run-trace-view.d.ts.map +1 -1
  58. package/dist/components/run-trace-view.js +2 -2
  59. package/dist/components/run-trace-view.js.map +1 -1
  60. package/dist/components/sidebar/attribute-panel.d.ts +7 -1
  61. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  62. package/dist/components/sidebar/attribute-panel.js +76 -47
  63. package/dist/components/sidebar/attribute-panel.js.map +1 -1
  64. package/dist/components/sidebar/conversation-view.js.map +1 -1
  65. package/dist/components/sidebar/copyable-data-block.js +1 -1
  66. package/dist/components/sidebar/copyable-data-block.js.map +1 -1
  67. package/dist/components/sidebar/detail-card.d.ts.map +1 -1
  68. package/dist/components/sidebar/detail-card.js +1 -1
  69. package/dist/components/sidebar/detail-card.js.map +1 -1
  70. package/dist/components/sidebar/entity-detail-panel.d.ts +3 -1
  71. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  72. package/dist/components/sidebar/entity-detail-panel.js +16 -36
  73. package/dist/components/sidebar/entity-detail-panel.js.map +1 -1
  74. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  75. package/dist/components/sidebar/events-list.js +2 -2
  76. package/dist/components/sidebar/events-list.js.map +1 -1
  77. package/dist/components/sidebar/resolve-hook-modal.js.map +1 -1
  78. package/dist/components/sidebar/sidebar-data-context.d.ts +29 -0
  79. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -0
  80. package/dist/components/sidebar/sidebar-data-context.js +19 -0
  81. package/dist/components/sidebar/sidebar-data-context.js.map +1 -0
  82. package/dist/components/stream-viewer.d.ts +1 -1
  83. package/dist/components/stream-viewer.d.ts.map +1 -1
  84. package/dist/components/stream-viewer.js +2 -26
  85. package/dist/components/stream-viewer.js.map +1 -1
  86. package/dist/components/trace-viewer/components/map.js.map +1 -1
  87. package/dist/components/trace-viewer/components/markers.js.map +1 -1
  88. package/dist/components/trace-viewer/components/node.js.map +1 -1
  89. package/dist/components/trace-viewer/components/search-input.js.map +1 -1
  90. package/dist/components/trace-viewer/components/search.js.map +1 -1
  91. package/dist/components/trace-viewer/components/span-content.js.map +1 -1
  92. package/dist/components/trace-viewer/components/span-detail-panel.js.map +1 -1
  93. package/dist/components/trace-viewer/components/span-segments.js.map +1 -1
  94. package/dist/components/trace-viewer/components/span-strategies.js.map +1 -1
  95. package/dist/components/trace-viewer/components/ui.js.map +1 -1
  96. package/dist/components/trace-viewer/components/zoom-button.js.map +1 -1
  97. package/dist/components/trace-viewer/components/zoom-icons.js.map +1 -1
  98. package/dist/components/trace-viewer/context.js.map +1 -1
  99. package/dist/components/trace-viewer/index.js.map +1 -1
  100. package/dist/components/trace-viewer/trace-viewer.js.map +1 -1
  101. package/dist/components/trace-viewer/types.js.map +1 -1
  102. package/dist/components/trace-viewer/util/constants.js.map +1 -1
  103. package/dist/components/trace-viewer/util/scrollbar-width.js.map +1 -1
  104. package/dist/components/trace-viewer/util/timing.js.map +1 -1
  105. package/dist/components/trace-viewer/util/tree.js.map +1 -1
  106. package/dist/components/trace-viewer/util/use-immediate-style.js.map +1 -1
  107. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +1 -1
  108. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +1 -1
  109. package/dist/components/trace-viewer/worker.js.map +1 -1
  110. package/dist/components/trace-viewer-new.d.ts +10 -0
  111. package/dist/components/trace-viewer-new.d.ts.map +1 -0
  112. package/dist/components/trace-viewer-new.js +23 -0
  113. package/dist/components/trace-viewer-new.js.map +1 -0
  114. package/dist/components/ui/alert.js.map +1 -1
  115. package/dist/components/ui/card.js.map +1 -1
  116. package/dist/components/ui/data-inspector.d.ts +38 -1
  117. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  118. package/dist/components/ui/data-inspector.js +211 -21
  119. package/dist/components/ui/data-inspector.js.map +1 -1
  120. package/dist/components/ui/decrypt-button.js.map +1 -1
  121. package/dist/components/ui/error-card.js.map +1 -1
  122. package/dist/components/ui/error-stack-block.js.map +1 -1
  123. package/dist/components/ui/inspector-theme.d.ts +9 -10
  124. package/dist/components/ui/inspector-theme.d.ts.map +1 -1
  125. package/dist/components/ui/inspector-theme.js +38 -71
  126. package/dist/components/ui/inspector-theme.js.map +1 -1
  127. package/dist/components/ui/load-more-button.js.map +1 -1
  128. package/dist/components/ui/menu-dropdown.js.map +1 -1
  129. package/dist/components/ui/skeleton.js.map +1 -1
  130. package/dist/components/ui/spinner.js.map +1 -1
  131. package/dist/components/ui/timestamp-tooltip.js.map +1 -1
  132. package/dist/components/workflow-trace-view.d.ts +3 -1
  133. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  134. package/dist/components/workflow-trace-view.js +9 -4
  135. package/dist/components/workflow-trace-view.js.map +1 -1
  136. package/dist/components/workflow-traces/event-colors.js.map +1 -1
  137. package/dist/components/workflow-traces/trace-colors.js.map +1 -1
  138. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  139. package/dist/components/workflow-traces/trace-span-construction.js.map +1 -1
  140. package/dist/components/workflow-traces/trace-time-utils.js.map +1 -1
  141. package/dist/hooks/use-dark-mode.js.map +1 -1
  142. package/dist/index.d.ts +2 -1
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +1 -1
  145. package/dist/index.js.map +1 -1
  146. package/dist/lib/event-analysis.js.map +1 -1
  147. package/dist/lib/event-materialization.js.map +1 -1
  148. package/dist/lib/hydration.d.ts +8 -1
  149. package/dist/lib/hydration.d.ts.map +1 -1
  150. package/dist/lib/hydration.js +32 -2
  151. package/dist/lib/hydration.js.map +1 -1
  152. package/dist/lib/stream-display.d.ts +18 -0
  153. package/dist/lib/stream-display.d.ts.map +1 -0
  154. package/dist/lib/stream-display.js +30 -0
  155. package/dist/lib/stream-display.js.map +1 -0
  156. package/dist/lib/toast.js.map +1 -1
  157. package/dist/lib/trace-builder.js.map +1 -1
  158. package/dist/lib/utils.d.ts +7 -9
  159. package/dist/lib/utils.d.ts.map +1 -1
  160. package/dist/lib/utils.js +17 -22
  161. package/dist/lib/utils.js.map +1 -1
  162. package/dist/styles.css +470 -1
  163. package/package.json +4 -3
  164. package/src/components/event-list-view.tsx +181 -173
  165. package/src/components/index.ts +11 -1
  166. package/src/components/new-trace-viewer/components/copy-button.tsx +68 -0
  167. package/src/components/new-trace-viewer/components/event-list.tsx +109 -0
  168. package/src/components/new-trace-viewer/components/split-pane.tsx +186 -0
  169. package/src/components/new-trace-viewer/components/timeline.tsx +378 -0
  170. package/src/components/new-trace-viewer/context.tsx +94 -0
  171. package/src/components/new-trace-viewer/detail-panel.tsx +57 -0
  172. package/src/components/new-trace-viewer/icons.tsx +79 -0
  173. package/src/components/new-trace-viewer/trace-viewer.tsx +585 -0
  174. package/src/components/new-trace-viewer/types.ts +0 -0
  175. package/src/components/new-trace-viewer/util/constants.ts +0 -0
  176. package/src/components/new-trace-viewer/utils.ts +524 -0
  177. package/src/components/run-trace-view.tsx +3 -0
  178. package/src/components/sidebar/attribute-panel.tsx +200 -138
  179. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  180. package/src/components/sidebar/detail-card.tsx +1 -19
  181. package/src/components/sidebar/entity-detail-panel.tsx +91 -147
  182. package/src/components/sidebar/events-list.tsx +9 -6
  183. package/src/components/sidebar/sidebar-data-context.tsx +62 -0
  184. package/src/components/stream-viewer.tsx +18 -40
  185. package/src/components/trace-viewer-new.tsx +49 -0
  186. package/src/components/ui/data-inspector.tsx +436 -31
  187. package/src/components/ui/inspector-theme.ts +39 -81
  188. package/src/components/workflow-trace-view.tsx +12 -2
  189. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  190. package/src/index.ts +2 -0
  191. package/src/lib/hydration.ts +37 -0
  192. package/src/lib/stream-display.ts +48 -0
  193. package/src/lib/utils.ts +18 -23
  194. package/src/styles.css +470 -1
@@ -2,14 +2,15 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';
4
4
  import { Lock } from 'lucide-react';
5
- import { useCallback, useMemo, useState } from 'react';
5
+ import { useCallback, useContext, useMemo, useState } from 'react';
6
6
  import { isEncryptedMarker, isExpiredMarker } from '../../lib/hydration';
7
7
  import { useToast } from '../../lib/toast';
8
8
  import { extractConversation, isDoStreamStep } from '../../lib/utils';
9
- import { StreamClickContext } from '../ui/data-inspector';
9
+ import { DecryptClickContext, RunClickContext, StreamClickContext, } from '../ui/data-inspector';
10
10
  import { ErrorCard } from '../ui/error-card';
11
11
  import { ErrorStackBlock, isStructuredErrorWithStack, } from '../ui/error-stack-block';
12
12
  import { Skeleton } from '../ui/skeleton';
13
+ import { Spinner } from '../ui/spinner';
13
14
  import { TimestampTooltip } from '../ui/timestamp-tooltip';
14
15
  import { ConversationView } from './conversation-view';
15
16
  import { CopyableDataBlock } from './copyable-data-block';
@@ -78,7 +79,16 @@ function ConversationWithTabs({ conversation, args, }) {
78
79
  * with the lucide Lock icon matching the title bar Decrypt button.
79
80
  */
80
81
  function EncryptedFieldBlock() {
81
- return (_jsxs("div", { className: "flex items-center gap-1.5 rounded-md border px-3 py-2 text-xs", style: {
82
+ const ctx = useContext(DecryptClickContext);
83
+ if (ctx) {
84
+ return (_jsxs("button", { type: "button", onClick: ctx.onDecrypt, disabled: ctx.isDecrypting, className: "flex w-full items-center justify-center gap-1.5 rounded-md border px-3 py-2 text-xs cursor-pointer transition-colors", style: {
85
+ borderColor: 'var(--ds-gray-400)',
86
+ backgroundColor: 'var(--ds-gray-100)',
87
+ color: 'var(--ds-gray-700)',
88
+ opacity: ctx.isDecrypting ? 0.6 : 1,
89
+ }, title: "Click to decrypt", children: [ctx.isDecrypting ? (_jsx(Spinner, { size: 12 })) : (_jsx(Lock, { className: "h-3 w-3" })), _jsx("span", { className: "font-medium", children: ctx.isDecrypting ? 'Decrypting…' : 'Decrypt' })] }));
90
+ }
91
+ return (_jsxs("div", { className: "flex w-full items-center justify-center gap-1.5 rounded-md border px-3 py-2 text-xs", style: {
82
92
  borderColor: 'var(--ds-gray-300)',
83
93
  backgroundColor: 'var(--ds-gray-100)',
84
94
  color: 'var(--ds-gray-700)',
@@ -153,8 +163,29 @@ const sortByAttributeOrder = (a, b) => {
153
163
  * Display names for attributes that should render differently from their key.
154
164
  */
155
165
  const attributeDisplayNames = {
166
+ moduleSpecifier: 'Module',
167
+ workflowName: 'Workflow Name',
168
+ stepName: 'Step Name',
169
+ stepId: 'Step ID',
170
+ hookId: 'Hook ID',
171
+ attempt: 'Attempts',
172
+ eventId: 'Event ID',
173
+ runId: 'Run ID',
174
+ eventType: 'Event Type',
175
+ correlationId: 'Correlation ID',
176
+ deploymentId: 'Deployment ID',
177
+ specVersion: 'Spec Version',
156
178
  workflowCoreVersion: '@workflow/core version',
157
- receivedCount: 'times resolved',
179
+ createdAt: 'Created',
180
+ startedAt: 'Started',
181
+ updatedAt: 'Updated',
182
+ completedAt: 'Completed',
183
+ expiredAt: 'Expired',
184
+ retryAfter: 'Retry After',
185
+ resumeAt: 'Resume',
186
+ lastReceivedAt: 'Last Received',
187
+ disposedAt: 'Disposed',
188
+ receivedCount: 'Times Resolved',
158
189
  };
159
190
  /**
160
191
  * Get the display name for an attribute key.
@@ -219,16 +250,16 @@ const timestampWithTooltipOrNull = (value) => {
219
250
  };
220
251
  const attributeToDisplayFn = {
221
252
  // Names that need pretty-printing
222
- workflowName: (value) => parseWorkflowName(String(value))?.shortName ?? '?',
253
+ workflowName: (_value) => null,
223
254
  moduleSpecifier: (value) => getModuleSpecifierFromName(value),
224
- stepName: (value) => parseStepName(String(value))?.shortName ?? '?',
255
+ stepName: (_value) => null,
225
256
  // IDs
226
- runId: (value) => String(value),
227
- stepId: (value) => String(value),
257
+ runId: (_value) => null,
258
+ stepId: (_value) => null,
228
259
  hookId: (value) => String(value),
229
260
  eventId: (value) => String(value),
230
261
  // Run/step details
231
- status: (value) => String(value),
262
+ status: (_value) => null,
232
263
  attempt: (value) => String(value),
233
264
  // Hook details
234
265
  token: (value) => String(value),
@@ -251,9 +282,9 @@ const attributeToDisplayFn = {
251
282
  // Dates — wrapped with TimestampTooltip showing UTC/local + relative time
252
283
  createdAt: timestampWithTooltipOrNull,
253
284
  startedAt: timestampWithTooltipOrNull,
254
- updatedAt: timestampWithTooltipOrNull,
285
+ updatedAt: (_value) => null,
255
286
  completedAt: timestampWithTooltipOrNull,
256
- expiredAt: timestampWithTooltipOrNull,
287
+ expiredAt: (_value) => null,
257
288
  retryAfter: timestampWithTooltipOrNull,
258
289
  resumeAt: timestampWithTooltipOrNull,
259
290
  // Resolved attributes, won't actually use this function
@@ -288,9 +319,9 @@ const attributeToDisplayFn = {
288
319
  }
289
320
  // Don't render an empty "Input (0 arguments)" card when no input exists.
290
321
  if (!hasArgs && !hasClosureVars && !hasThisVal) {
291
- return (_jsx(DetailCard, { summary: "Input (no data)", disabled: true, summaryClassName: "text-base py-2" }));
322
+ return (_jsx(DetailCard, { summary: "Input (no data)", disabled: true, summaryClassName: "text-label-14 font-medium py-2" }));
292
323
  }
293
- return (_jsxs(_Fragment, { children: [_jsx(DetailCard, { summary: `Input (${argCount} ${argLabel})`, summaryClassName: "text-base py-2", contentClassName: "mt-0", children: Array.isArray(args)
324
+ return (_jsxs(_Fragment, { children: [_jsx(DetailCard, { summary: `Input (${argCount} ${argLabel})`, summaryClassName: "text-label-14 font-medium py-2", contentClassName: "mt-0", children: Array.isArray(args)
294
325
  ? args.map((v, i) => (_jsx("div", { className: "mt-2 first:mt-0", children: JsonBlock(v) }, i)))
295
326
  : JsonBlock(args) }), hasClosureVars && (_jsx(DetailCard, { summary: "Closure Variables", children: JsonBlock(closureVars) })), hasThisVal && (_jsx(DetailCard, { summary: "this", children: JsonBlock(thisVal) }))] }));
296
327
  }
@@ -298,9 +329,9 @@ const attributeToDisplayFn = {
298
329
  const argCount = Array.isArray(value) ? value.length : 0;
299
330
  const argLabel = argCount === 1 ? 'argument' : 'arguments';
300
331
  if (!hasDisplayContent(value)) {
301
- return (_jsx(DetailCard, { summary: "Input (no data)", disabled: true, summaryClassName: "text-base py-2" }));
332
+ return (_jsx(DetailCard, { summary: "Input (no data)", disabled: true, summaryClassName: "text-label-14 font-medium py-2" }));
302
333
  }
303
- return (_jsx(DetailCard, { summary: `Input (${argCount} ${argLabel})`, summaryClassName: "text-base py-2", contentClassName: "mt-0", children: Array.isArray(value)
334
+ return (_jsx(DetailCard, { summary: `Input (${argCount} ${argLabel})`, summaryClassName: "text-label-14 font-medium py-2", contentClassName: "mt-0", children: Array.isArray(value)
304
335
  ? value.map((v, i) => (_jsx("div", { className: "mt-2 first:mt-0", children: JsonBlock(v) }, i)))
305
336
  : JsonBlock(value) }));
306
337
  },
@@ -311,7 +342,7 @@ const attributeToDisplayFn = {
311
342
  return _jsx(EncryptedFieldBlock, {});
312
343
  if (isExpiredMarker(value))
313
344
  return _jsx(ExpiredFieldBlock, {});
314
- return (_jsx(DetailCard, { summary: "Output", summaryClassName: "text-base py-2", contentClassName: "mt-0", children: JsonBlock(value) }));
345
+ return (_jsx(DetailCard, { summary: "Output", summaryClassName: "text-label-14 font-medium py-2", contentClassName: "mt-0", children: JsonBlock(value) }));
315
346
  },
316
347
  error: (value) => {
317
348
  if (isEncryptedMarker(value))
@@ -323,9 +354,9 @@ const attributeToDisplayFn = {
323
354
  // If the error object has a `stack` field, render it as readable
324
355
  // pre-formatted text. Otherwise fall back to the raw JSON viewer.
325
356
  if (isStructuredErrorWithStack(value)) {
326
- return (_jsx(DetailCard, { summary: "Error", summaryClassName: "text-base py-2", contentClassName: "mt-0", children: _jsx(ErrorStackBlock, { value: value }) }));
357
+ return (_jsx(DetailCard, { summary: "Error", summaryClassName: "text-label-14 font-medium py-2", contentClassName: "mt-0", children: _jsx(ErrorStackBlock, { value: value }) }));
327
358
  }
328
- return (_jsx(DetailCard, { summary: "Error", summaryClassName: "text-base py-2", contentClassName: "mt-0", children: JsonBlock(value) }));
359
+ return (_jsx(DetailCard, { summary: "Error", summaryClassName: "text-label-14 font-medium py-2", contentClassName: "mt-0", children: JsonBlock(value) }));
329
360
  },
330
361
  eventData: (value) => {
331
362
  if (isEncryptedMarker(value))
@@ -350,11 +381,9 @@ const ExpiredDataMessage = () => (_jsx("div", { className: "text-copy-12 rounded
350
381
  color: 'var(--ds-gray-700)',
351
382
  }, children: _jsx("span", { children: "The data for this run has expired and is no longer available." }) }));
352
383
  export const AttributeBlock = ({ attribute, value, isLoading, inline = false, context, }) => {
353
- const isExpandableLoadingTarget = attribute === 'input' ||
354
- attribute === 'output' ||
355
- attribute === 'eventData';
384
+ const isExpandableLoadingTarget = attribute === 'input' || attribute === 'eventData';
356
385
  if (isLoading && isExpandableLoadingTarget && !hasDisplayContent(value)) {
357
- return (_jsxs("div", { className: `my-2 flex flex-col ${attribute === 'input' || attribute === 'output' ? 'gap-2 my-3.5' : 'gap-0'}`, children: [_jsx("span", { className: `${attribute === 'input' || attribute === 'output' ? 'text-base' : 'text-xs'} font-medium first-letter:uppercase`, style: { color: 'var(--ds-gray-700)' }, children: attribute }), _jsx(Skeleton, { className: "h-9 w-full rounded-md" })] }));
386
+ return (_jsxs("div", { className: `my-2 flex flex-col ${attribute === 'input' ? 'gap-2 my-3.5' : 'gap-0'}`, children: [_jsx("span", { className: "text-label-14 text-gray-1000 font-medium first-letter:uppercase", children: attribute }), _jsx(Skeleton, { className: "h-9 w-full rounded-md" })] }));
358
387
  }
359
388
  const displayFn = attributeToDisplayFn[attribute];
360
389
  if (!displayFn) {
@@ -367,9 +396,9 @@ export const AttributeBlock = ({ attribute, value, isLoading, inline = false, co
367
396
  if (inline) {
368
397
  return (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "text-[11px] font-medium", style: { color: 'var(--ds-gray-700)' }, children: attribute }), _jsx("span", { className: "text-[11px]", style: { color: 'var(--ds-gray-1000)' }, children: displayValue })] }));
369
398
  }
370
- return (_jsxs("div", { className: "relative", children: [typeof isLoading === 'boolean' && isLoading && (_jsx("div", { className: "absolute top-9 right-4", children: _jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2", style: { borderColor: 'var(--ds-gray-900)' } }) })), _jsxs("div", { className: `my-2 flex flex-col ${attribute === 'input' || attribute === 'output' || attribute === 'error' ? 'gap-2 my-3.5' : 'gap-0'}`, children: [_jsx("span", { className: `${attribute === 'input' || attribute === 'output' || attribute === 'error' ? 'text-base' : 'text-xs'} font-medium first-letter:uppercase`, style: { color: 'var(--ds-gray-700)' }, children: attribute }), _jsx("span", { className: "text-xs", style: { color: 'var(--ds-gray-1000)' }, children: displayValue })] }, attribute)] }));
399
+ return (_jsxs("div", { className: "relative", children: [typeof isLoading === 'boolean' && isLoading && (_jsx("div", { className: "absolute top-9 right-4", children: _jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2", style: { borderColor: 'var(--ds-gray-900)' } }) })), _jsxs("div", { className: `my-2 flex flex-col ${attribute === 'input' || attribute === 'output' || attribute === 'error' ? 'gap-2 my-3.5' : 'gap-0'}`, children: [_jsx("span", { className: "text-label-14 text-gray-1000 font-medium first-letter:uppercase", children: attribute }), _jsx("span", { className: "text-xs", style: { color: 'var(--ds-gray-1000)' }, children: displayValue })] }, attribute)] }));
371
400
  };
372
- export const AttributePanel = ({ data, moduleSpecifier, isLoading, error, expiredAt, onStreamClick, resource, }) => {
401
+ export const AttributePanel = ({ data, moduleSpecifier, isLoading, error, expiredAt, onStreamClick, onRunClick, onDecrypt, isDecrypting = false, resource, }) => {
373
402
  const toast = useToast();
374
403
  // Extract workflowCoreVersion from executionContext for display
375
404
  const displayData = useMemo(() => {
@@ -399,9 +428,9 @@ export const AttributePanel = ({ data, moduleSpecifier, isLoading, error, expire
399
428
  .sort(sortByAttributeOrder);
400
429
  if (!isLoading)
401
430
  return present;
402
- // During loading, ensure input/output appear so their skeletons render
431
+ // During loading, ensure input appears so its skeleton renders
403
432
  // in the correct position (above the events section).
404
- const loadingDefaults = ['input', 'output'];
433
+ const loadingDefaults = ['input'];
405
434
  for (const key of loadingDefaults) {
406
435
  if (!present.includes(key)) {
407
436
  present.push(key);
@@ -452,26 +481,26 @@ export const AttributePanel = ({ data, moduleSpecifier, isLoading, error, expire
452
481
  toast.error('Failed to copy moduleSpecifier');
453
482
  });
454
483
  }, []);
455
- return (_jsx(StreamClickContext.Provider, { value: onStreamClick, children: _jsxs("div", { children: [visibleBasicAttributes.length > 0 && (_jsxs("div", { className: "mb-3 flex flex-col overflow-hidden rounded-lg border", style: {
456
- borderColor: 'var(--ds-gray-300)',
457
- }, children: [orderedBasicAttributes.map((attribute, index) => {
458
- const displayValue = attributeToDisplayFn[attribute]?.(displayData[attribute]);
459
- const isModuleSpecifier = attribute === 'moduleSpecifier';
460
- const moduleSpecifierValue = typeof displayValue === 'string'
461
- ? displayValue
462
- : String(displayValue ?? displayData.moduleSpecifier ?? '');
463
- const shouldCapitalizeLabel = attribute !== 'workflowCoreVersion';
464
- const showResumeAtSkeleton = isLoading && resource === 'sleep' && !displayData.resumeAt;
465
- const showDivider = index < orderedBasicAttributes.length - 1 ||
466
- showResumeAtSkeleton;
467
- return (_jsxs("div", { className: "py-1", children: [_jsxs("div", { className: "flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1", children: [_jsx("span", { className: shouldCapitalizeLabel
468
- ? 'text-[14px] first-letter:uppercase'
469
- : 'text-[14px]', style: { color: 'var(--ds-gray-700)' }, children: getAttributeDisplayName(attribute) }), isModuleSpecifier ? (_jsx("button", { type: "button", className: "min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono", style: {
470
- color: 'var(--ds-gray-1000)',
471
- background: 'transparent',
472
- border: 'none',
473
- padding: 0,
474
- }, title: moduleSpecifierValue, onClick: () => handleCopyModuleSpecifier(moduleSpecifierValue), children: moduleSpecifierValue })) : (_jsx("span", { className: "min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono", style: { color: 'var(--ds-gray-1000)' }, children: displayValue }))] }), showDivider ? (_jsx("div", { className: "mx-2.5 border-b", style: { borderColor: 'var(--ds-gray-300)' } })) : null] }, attribute));
475
- }), isLoading && resource === 'sleep' && !displayData.resumeAt && (_jsx("div", { className: "py-1", children: _jsxs("div", { className: "flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1", children: [_jsx("span", { className: "text-[14px] first-letter:uppercase", style: { color: 'var(--ds-gray-700)' }, children: "resumeAt" }), _jsx(Skeleton, { className: "h-4 w-[55%]" })] }) }))] })), error ? (_jsx(ErrorCard, { title: "Failed to load resource details", details: error.message, className: "my-4" })) : hasExpired ? (_jsx(ExpiredDataMessage, {})) : (_jsx(_Fragment, { children: resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute], context: displayContext }, attribute))) }))] }) }));
484
+ return (_jsx(RunClickContext.Provider, { value: onRunClick, children: _jsx(StreamClickContext.Provider, { value: onStreamClick, children: _jsx(DecryptClickContext.Provider, { value: onDecrypt ? { onDecrypt, isDecrypting } : undefined, children: _jsxs("div", { children: [visibleBasicAttributes.length > 0 && (_jsxs("div", { className: "mb-3 flex flex-col overflow-hidden rounded-md border", style: {
485
+ borderColor: 'var(--ds-gray-300)',
486
+ }, children: [orderedBasicAttributes.map((attribute, index) => {
487
+ const displayValue = attributeToDisplayFn[attribute]?.(displayData[attribute]);
488
+ const isModuleSpecifier = attribute === 'moduleSpecifier';
489
+ const moduleSpecifierValue = typeof displayValue === 'string'
490
+ ? displayValue
491
+ : String(displayValue ?? displayData.moduleSpecifier ?? '');
492
+ const shouldCapitalizeLabel = attribute !== 'workflowCoreVersion';
493
+ const showResumeAtSkeleton = isLoading && resource === 'sleep' && !displayData.resumeAt;
494
+ const showDivider = index < orderedBasicAttributes.length - 1 ||
495
+ showResumeAtSkeleton;
496
+ return (_jsxs("div", { className: "py-1", children: [_jsxs("div", { className: "flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1", children: [_jsx("span", { className: shouldCapitalizeLabel
497
+ ? 'text-[14px] first-letter:uppercase'
498
+ : 'text-[14px]', style: { color: 'var(--ds-gray-700)' }, children: getAttributeDisplayName(attribute) }), isModuleSpecifier ? (_jsx("button", { type: "button", className: "min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono", style: {
499
+ color: 'var(--ds-gray-1000)',
500
+ background: 'transparent',
501
+ border: 'none',
502
+ padding: 0,
503
+ }, title: moduleSpecifierValue, onClick: () => handleCopyModuleSpecifier(moduleSpecifierValue), children: moduleSpecifierValue })) : (_jsx("span", { className: "min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono", style: { color: 'var(--ds-gray-1000)' }, children: displayValue }))] }), showDivider ? (_jsx("div", { className: "mx-2.5 border-b", style: { borderColor: 'var(--ds-gray-300)' } })) : null] }, attribute));
504
+ }), isLoading && resource === 'sleep' && !displayData.resumeAt && (_jsx("div", { className: "py-1", children: _jsxs("div", { className: "flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1", children: [_jsx("span", { className: "text-[14px] first-letter:uppercase", style: { color: 'var(--ds-gray-700)' }, children: "resumeAt" }), _jsx(Skeleton, { className: "h-4 w-[55%]" })] }) }))] })), error ? (_jsx(ErrorCard, { title: "Failed to load resource details", details: error.message, className: "my-4" })) : hasExpired ? (_jsx(ExpiredDataMessage, {})) : (_jsx(_Fragment, { children: resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute], context: displayContext }, attribute))) }))] }) }) }) }));
476
505
  };
477
506
  //# sourceMappingURL=attribute-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-panel.js","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attribute-panel.js","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';\nimport type { Event, Hook, Step, WorkflowRun } from '@workflow/world';\nimport type { ModelMessage } from 'ai';\nimport { Lock } from 'lucide-react';\nimport type { KeyboardEvent, ReactNode } from 'react';\nimport { useCallback, useContext, useMemo, useState } from 'react';\nimport { isEncryptedMarker, isExpiredMarker } from '../../lib/hydration';\nimport { useToast } from '../../lib/toast';\nimport { extractConversation, isDoStreamStep } from '../../lib/utils';\nimport {\n DecryptClickContext,\n RunClickContext,\n StreamClickContext,\n} from '../ui/data-inspector';\nimport { ErrorCard } from '../ui/error-card';\nimport {\n ErrorStackBlock,\n isStructuredErrorWithStack,\n} from '../ui/error-stack-block';\nimport { Skeleton } from '../ui/skeleton';\nimport { Spinner } from '../ui/spinner';\nimport { TimestampTooltip } from '../ui/timestamp-tooltip';\nimport { ConversationView } from './conversation-view';\nimport { CopyableDataBlock } from './copyable-data-block';\nimport { DetailCard } from './detail-card';\n\n/**\n * Tab button for conversation/JSON toggle\n */\nfunction TabButton({\n active,\n onClick,\n children,\n}: {\n active: boolean;\n onClick: () => void;\n children: ReactNode;\n}) {\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n tabIndex={active ? 0 : -1}\n onClick={onClick}\n className=\"px-3 py-1.5 text-[11px] font-medium transition-colors -mb-px\"\n style={{\n // Explicit styles to prevent app-level button overrides when web-shared\n // is embedded in a self-hosted app.\n backgroundColor: 'transparent',\n borderTop: 'none',\n borderLeft: 'none',\n borderRight: 'none',\n borderBottom: `2px solid ${active ? 'var(--ds-blue-600)' : 'transparent'}`,\n borderRadius: 0,\n outline: 'none',\n boxShadow: 'none',\n cursor: 'pointer',\n color: active ? 'var(--ds-gray-1000)' : 'var(--ds-gray-600)',\n }}\n >\n {children}\n </button>\n );\n}\n\n/**\n * Shared tabbed container with accessible ARIA roles and keyboard navigation.\n * Used by ConversationWithTabs for the conversation/JSON toggle.\n */\nfunction TabbedContainer<T extends string>({\n tabs,\n activeTab,\n onTabChange,\n ariaLabel,\n children,\n}: {\n tabs: { id: T; label: string }[];\n activeTab: T;\n onTabChange: (tab: T) => void;\n ariaLabel: string;\n children: ReactNode;\n}) {\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft') return;\n event.preventDefault();\n const currentIndex = tabs.findIndex((t) => t.id === activeTab);\n const nextIndex =\n event.key === 'ArrowRight'\n ? (currentIndex + 1) % tabs.length\n : (currentIndex - 1 + tabs.length) % tabs.length;\n onTabChange(tabs[nextIndex].id);\n },\n [tabs, activeTab, onTabChange]\n );\n\n return (\n <div\n className=\"rounded-md border\"\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'transparent',\n }}\n >\n <div\n className=\"flex gap-1 border-b\"\n role=\"tablist\"\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'transparent',\n }}\n >\n {tabs.map((tab) => (\n <TabButton\n key={tab.id}\n active={activeTab === tab.id}\n onClick={() => onTabChange(tab.id)}\n >\n {tab.label}\n </TabButton>\n ))}\n </div>\n\n <div role=\"tabpanel\">{children}</div>\n </div>\n );\n}\n\nconst conversationTabs = [\n { id: 'conversation' as const, label: 'Conversation' },\n { id: 'json' as const, label: 'Raw JSON' },\n];\n\n/**\n * Tabbed view for conversation and raw JSON\n */\nfunction ConversationWithTabs({\n conversation,\n args,\n}: {\n conversation: ModelMessage[];\n args: unknown[];\n}) {\n const [activeTab, setActiveTab] = useState<'conversation' | 'json'>(\n 'conversation'\n );\n\n return (\n <DetailCard summary={`Input (${conversation.length} messages)`}>\n <TabbedContainer\n tabs={conversationTabs}\n activeTab={activeTab}\n onTabChange={setActiveTab}\n ariaLabel=\"Conversation view\"\n >\n {activeTab === 'conversation' ? (\n <ConversationView messages={conversation} />\n ) : (\n <div className=\"p-3\">\n {Array.isArray(args)\n ? args.map((v, i) => (\n <div className=\"mt-2 first:mt-0\" key={i}>\n {JsonBlock(v)}\n </div>\n ))\n : JsonBlock(args)}\n </div>\n )}\n </TabbedContainer>\n </DetailCard>\n );\n}\n\n/**\n * Render a value with the shared DataInspector (ObjectInspector with\n * custom theming, nodeRenderer for StreamRef/ClassInstanceRef, etc.)\n */\n/**\n * Inline display for an encrypted field — no expand, just a flat label\n * with the lucide Lock icon matching the title bar Decrypt button.\n */\nfunction EncryptedFieldBlock() {\n const ctx = useContext(DecryptClickContext);\n if (ctx) {\n return (\n <button\n type=\"button\"\n onClick={ctx.onDecrypt}\n disabled={ctx.isDecrypting}\n className=\"flex w-full items-center justify-center gap-1.5 rounded-md border px-3 py-2 text-xs cursor-pointer transition-colors\"\n style={{\n borderColor: 'var(--ds-gray-400)',\n backgroundColor: 'var(--ds-gray-100)',\n color: 'var(--ds-gray-700)',\n opacity: ctx.isDecrypting ? 0.6 : 1,\n }}\n title=\"Click to decrypt\"\n >\n {ctx.isDecrypting ? (\n <Spinner size={12} />\n ) : (\n <Lock className=\"h-3 w-3\" />\n )}\n <span className=\"font-medium\">\n {ctx.isDecrypting ? 'Decrypting…' : 'Decrypt'}\n </span>\n </button>\n );\n }\n return (\n <div\n className=\"flex w-full items-center justify-center gap-1.5 rounded-md border px-3 py-2 text-xs\"\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'var(--ds-gray-100)',\n color: 'var(--ds-gray-700)',\n }}\n >\n <Lock className=\"h-3 w-3\" />\n <span className=\"font-medium\">Encrypted</span>\n </div>\n );\n}\n\n/**\n * Inline display for an expired field — flat label indicating data is no longer available.\n */\nfunction ExpiredFieldBlock() {\n return (\n <div\n className=\"flex items-center gap-1.5 rounded-md border px-3 py-2 text-xs\"\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'var(--ds-gray-100)',\n color: 'var(--ds-gray-700)',\n }}\n >\n <span className=\"font-medium\">Data expired</span>\n </div>\n );\n}\n\nfunction JsonBlock(value: unknown) {\n return <CopyableDataBlock data={value} />;\n}\n\nconst hasDisplayContent = (value: unknown): boolean => {\n if (value == null) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') return Object.keys(value).length > 0;\n return true;\n};\n\ntype AttributeKey =\n | keyof Step\n | keyof WorkflowRun\n | keyof Hook\n | keyof Event\n | 'moduleSpecifier'\n | 'eventData'\n | 'resumeAt'\n | 'expiredAt'\n | 'workflowCoreVersion'\n | 'receivedCount'\n | 'lastReceivedAt'\n | 'disposedAt';\n\nconst attributeOrder: AttributeKey[] = [\n 'workflowName',\n 'moduleSpecifier',\n 'stepName',\n 'status',\n 'stepId',\n 'hookId',\n 'eventId',\n 'runId',\n 'attempt',\n 'token',\n 'receivedCount',\n 'lastReceivedAt',\n 'disposedAt',\n 'correlationId',\n 'eventType',\n 'deploymentId',\n 'specVersion',\n 'workflowCoreVersion',\n 'ownerId',\n 'projectId',\n 'environment',\n 'executionContext',\n 'createdAt',\n 'startedAt',\n 'updatedAt',\n 'completedAt',\n 'expiredAt',\n 'retryAfter',\n 'error',\n 'metadata',\n 'eventData',\n 'input',\n 'output',\n 'resumeAt',\n];\n\nconst sortByAttributeOrder = (a: string, b: string): number => {\n const aIndex = attributeOrder.indexOf(a as AttributeKey) || 0;\n const bIndex = attributeOrder.indexOf(b as AttributeKey) || 0;\n return aIndex - bIndex;\n};\n\n/**\n * Display names for attributes that should render differently from their key.\n */\nconst attributeDisplayNames: Partial<Record<AttributeKey, string>> = {\n moduleSpecifier: 'Module',\n workflowName: 'Workflow Name',\n stepName: 'Step Name',\n stepId: 'Step ID',\n hookId: 'Hook ID',\n attempt: 'Attempts',\n eventId: 'Event ID',\n runId: 'Run ID',\n eventType: 'Event Type',\n correlationId: 'Correlation ID',\n deploymentId: 'Deployment ID',\n specVersion: 'Spec Version',\n workflowCoreVersion: '@workflow/core version',\n createdAt: 'Created',\n startedAt: 'Started',\n updatedAt: 'Updated',\n completedAt: 'Completed',\n expiredAt: 'Expired',\n retryAfter: 'Retry After',\n resumeAt: 'Resume',\n lastReceivedAt: 'Last Received',\n disposedAt: 'Disposed',\n receivedCount: 'Times Resolved',\n};\n\n/**\n * Get the display name for an attribute key.\n */\nconst getAttributeDisplayName = (attribute: string): string => {\n return attributeDisplayNames[attribute as AttributeKey] ?? attribute;\n};\n\nconst getModuleSpecifierFromName = (value: unknown): string => {\n const raw = String(value);\n const parsedStep = parseStepName(raw);\n if (parsedStep) {\n return parsedStep.moduleSpecifier;\n }\n const parsedWorkflow = parseWorkflowName(raw);\n if (parsedWorkflow) {\n return parsedWorkflow.moduleSpecifier;\n }\n return raw;\n};\n\nconst parseDateValue = (value: unknown): Date | null => {\n if (value == null) {\n return null;\n }\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n if (typeof value === 'string' && value.trim().length === 0) {\n return null;\n }\n\n const date =\n typeof value === 'number' ? new Date(value) : new Date(String(value));\n return Number.isNaN(date.getTime()) ? null : date;\n};\n\nconst formatLocalMillisecondTime = (date: Date): string =>\n date.toLocaleString(undefined, {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n fractionalSecondDigits: 3,\n });\n\nexport const localMillisecondTime = (value: unknown): string => {\n const date = parseDateValue(value);\n if (!date) {\n return '-';\n }\n\n // e.g. 12/17/2025, 9:08:55.182 AM\n return formatLocalMillisecondTime(date);\n};\n\nconst localMillisecondTimeOrNull = (value: unknown): string | null => {\n const date = parseDateValue(value);\n if (!date) {\n return null;\n }\n return formatLocalMillisecondTime(date);\n};\n\nconst timestampWithTooltipOrNull = (value: unknown): ReactNode | null => {\n const date = parseDateValue(value);\n if (!date) return null;\n return (\n <TimestampTooltip date={date}>\n <span>{formatLocalMillisecondTime(date)}</span>\n </TimestampTooltip>\n );\n};\n\ninterface DisplayContext {\n stepName?: string;\n}\n\nconst attributeToDisplayFn: Record<\n AttributeKey,\n (value: unknown, context?: DisplayContext) => null | string | ReactNode\n> = {\n // Names that need pretty-printing\n workflowName: (_value: unknown) => null,\n moduleSpecifier: (value: unknown) => getModuleSpecifierFromName(value),\n stepName: (_value: unknown) => null,\n // IDs\n runId: (_value: unknown) => null,\n stepId: (_value: unknown) => null,\n hookId: (value: unknown) => String(value),\n eventId: (value: unknown) => String(value),\n // Run/step details\n status: (_value: unknown) => null,\n attempt: (value: unknown) => String(value),\n // Hook details\n token: (value: unknown) => String(value),\n isWebhook: (value: unknown) => String(value),\n receivedCount: (value: unknown) => String(value),\n lastReceivedAt: localMillisecondTimeOrNull,\n disposedAt: localMillisecondTimeOrNull,\n // Event details\n eventType: (value: unknown) => String(value),\n correlationId: (value: unknown) => String(value),\n // Project details\n deploymentId: (value: unknown) => String(value),\n specVersion: (value: unknown) => String(value),\n workflowCoreVersion: (value: unknown) => String(value),\n // Tenancy (we don't show these)\n ownerId: (_value: unknown) => null,\n projectId: (_value: unknown) => null,\n environment: (_value: unknown) => null,\n executionContext: (_value: unknown) => null,\n // Dates — wrapped with TimestampTooltip showing UTC/local + relative time\n createdAt: timestampWithTooltipOrNull,\n startedAt: timestampWithTooltipOrNull,\n updatedAt: (_value: unknown) => null,\n completedAt: timestampWithTooltipOrNull,\n expiredAt: (_value: unknown) => null,\n retryAfter: timestampWithTooltipOrNull,\n resumeAt: timestampWithTooltipOrNull,\n // Resolved attributes, won't actually use this function\n metadata: (value: unknown) => {\n if (!hasDisplayContent(value)) return null;\n if (isEncryptedMarker(value)) return <EncryptedFieldBlock />;\n if (isExpiredMarker(value)) return <ExpiredFieldBlock />;\n return JsonBlock(value);\n },\n input: (value: unknown, context?: DisplayContext) => {\n if (isEncryptedMarker(value)) return <EncryptedFieldBlock />;\n if (isExpiredMarker(value)) return <ExpiredFieldBlock />;\n // Check if input has args + closure vars structure\n if (value && typeof value === 'object' && 'args' in value) {\n const { args, closureVars, thisVal } = value as {\n args: unknown[];\n closureVars?: Record<string, unknown>;\n thisVal?: unknown;\n };\n const argCount = Array.isArray(args) ? args.length : 0;\n const argLabel = argCount === 1 ? 'argument' : 'arguments';\n const hasClosureVars = hasDisplayContent(closureVars);\n const hasThisVal = hasDisplayContent(thisVal);\n const hasArgs = hasDisplayContent(args);\n\n // Check if this is a doStreamStep - show conversation view with tabs\n if (context?.stepName && isDoStreamStep(context.stepName)) {\n const conversation = extractConversation(args);\n if (conversation && conversation.length > 0) {\n return (\n <>\n <ConversationWithTabs conversation={conversation} args={args} />\n {hasClosureVars && (\n <DetailCard summary=\"Closure Variables\">\n {JsonBlock(closureVars)}\n </DetailCard>\n )}\n {hasThisVal && (\n <DetailCard summary=\"This Value\">\n {JsonBlock(thisVal)}\n </DetailCard>\n )}\n </>\n );\n }\n }\n\n // Don't render an empty \"Input (0 arguments)\" card when no input exists.\n if (!hasArgs && !hasClosureVars && !hasThisVal) {\n return (\n <DetailCard\n summary=\"Input (no data)\"\n disabled\n summaryClassName=\"text-label-14 font-medium py-2\"\n />\n );\n }\n\n return (\n <>\n <DetailCard\n summary={`Input (${argCount} ${argLabel})`}\n summaryClassName=\"text-label-14 font-medium py-2\"\n contentClassName=\"mt-0\"\n >\n {Array.isArray(args)\n ? args.map((v, i) => (\n <div className=\"mt-2 first:mt-0\" key={i}>\n {JsonBlock(v)}\n </div>\n ))\n : JsonBlock(args)}\n </DetailCard>\n {hasClosureVars && (\n <DetailCard summary=\"Closure Variables\">\n {JsonBlock(closureVars)}\n </DetailCard>\n )}\n {hasThisVal && (\n <DetailCard summary=\"this\">{JsonBlock(thisVal)}</DetailCard>\n )}\n </>\n );\n }\n\n // Fallback: treat as plain array or object\n const argCount = Array.isArray(value) ? value.length : 0;\n const argLabel = argCount === 1 ? 'argument' : 'arguments';\n if (!hasDisplayContent(value)) {\n return (\n <DetailCard\n summary=\"Input (no data)\"\n disabled\n summaryClassName=\"text-label-14 font-medium py-2\"\n />\n );\n }\n return (\n <DetailCard\n summary={`Input (${argCount} ${argLabel})`}\n summaryClassName=\"text-label-14 font-medium py-2\"\n contentClassName=\"mt-0\"\n >\n {Array.isArray(value)\n ? value.map((v, i) => (\n <div className=\"mt-2 first:mt-0\" key={i}>\n {JsonBlock(v)}\n </div>\n ))\n : JsonBlock(value)}\n </DetailCard>\n );\n },\n output: (value: unknown) => {\n if (!hasDisplayContent(value)) return null;\n if (isEncryptedMarker(value)) return <EncryptedFieldBlock />;\n if (isExpiredMarker(value)) return <ExpiredFieldBlock />;\n return (\n <DetailCard\n summary=\"Output\"\n summaryClassName=\"text-label-14 font-medium py-2\"\n contentClassName=\"mt-0\"\n >\n {JsonBlock(value)}\n </DetailCard>\n );\n },\n error: (value: unknown) => {\n if (isEncryptedMarker(value)) return <EncryptedFieldBlock />;\n if (isExpiredMarker(value)) return <ExpiredFieldBlock />;\n if (!hasDisplayContent(value)) return null;\n\n // If the error object has a `stack` field, render it as readable\n // pre-formatted text. Otherwise fall back to the raw JSON viewer.\n if (isStructuredErrorWithStack(value)) {\n return (\n <DetailCard\n summary=\"Error\"\n summaryClassName=\"text-label-14 font-medium py-2\"\n contentClassName=\"mt-0\"\n >\n <ErrorStackBlock value={value} />\n </DetailCard>\n );\n }\n\n return (\n <DetailCard\n summary=\"Error\"\n summaryClassName=\"text-label-14 font-medium py-2\"\n contentClassName=\"mt-0\"\n >\n {JsonBlock(value)}\n </DetailCard>\n );\n },\n eventData: (value: unknown) => {\n if (isEncryptedMarker(value)) return <EncryptedFieldBlock />;\n if (isExpiredMarker(value)) return <ExpiredFieldBlock />;\n if (!hasDisplayContent(value)) return null;\n return <DetailCard summary=\"Event Data\">{JsonBlock(value)}</DetailCard>;\n },\n};\n\nconst resolvableAttributes = [\n 'input',\n 'output',\n 'error',\n 'metadata',\n 'eventData',\n];\n\nconst ExpiredDataMessage = () => (\n <div\n className=\"text-copy-12 rounded-md border p-4 my-2\"\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'var(--ds-gray-100)',\n color: 'var(--ds-gray-700)',\n }}\n >\n <span>The data for this run has expired and is no longer available.</span>\n </div>\n);\n\nexport const AttributeBlock = ({\n attribute,\n value,\n isLoading,\n inline = false,\n context,\n}: {\n attribute: string;\n value: unknown;\n isLoading?: boolean;\n inline?: boolean;\n context?: DisplayContext;\n}) => {\n const isExpandableLoadingTarget =\n attribute === 'input' || attribute === 'eventData';\n if (isLoading && isExpandableLoadingTarget && !hasDisplayContent(value)) {\n return (\n <div\n className={`my-2 flex flex-col ${attribute === 'input' ? 'gap-2 my-3.5' : 'gap-0'}`}\n >\n <span className=\"text-label-14 text-gray-1000 font-medium first-letter:uppercase\">\n {attribute}\n </span>\n <Skeleton className=\"h-9 w-full rounded-md\" />\n </div>\n );\n }\n\n const displayFn =\n attributeToDisplayFn[attribute as keyof typeof attributeToDisplayFn];\n if (!displayFn) {\n return null;\n }\n const displayValue = displayFn(value, context);\n if (!displayValue) {\n return null;\n }\n\n if (inline) {\n return (\n <div className=\"flex items-center gap-1.5\">\n <span\n className=\"text-[11px] font-medium\"\n style={{ color: 'var(--ds-gray-700)' }}\n >\n {attribute}\n </span>\n <span className=\"text-[11px]\" style={{ color: 'var(--ds-gray-1000)' }}>\n {displayValue}\n </span>\n </div>\n );\n }\n\n return (\n <div className=\"relative\">\n {typeof isLoading === 'boolean' && isLoading && (\n <div className=\"absolute top-9 right-4\">\n <div\n className=\"animate-spin rounded-full h-4 w-4 border-b-2\"\n style={{ borderColor: 'var(--ds-gray-900)' }}\n />\n </div>\n )}\n <div\n key={attribute}\n className={`my-2 flex flex-col ${attribute === 'input' || attribute === 'output' || attribute === 'error' ? 'gap-2 my-3.5' : 'gap-0'}`}\n >\n <span className=\"text-label-14 text-gray-1000 font-medium first-letter:uppercase\">\n {attribute}\n </span>\n <span className=\"text-xs\" style={{ color: 'var(--ds-gray-1000)' }}>\n {displayValue}\n </span>\n </div>\n </div>\n );\n};\n\nexport const AttributePanel = ({\n data,\n moduleSpecifier,\n isLoading,\n error,\n expiredAt,\n onStreamClick,\n onRunClick,\n onDecrypt,\n isDecrypting = false,\n resource,\n}: {\n data: Record<string, unknown>;\n moduleSpecifier?: string;\n isLoading?: boolean;\n error?: Error;\n expiredAt?: string | Date;\n /** Callback when a stream reference is clicked */\n onStreamClick?: (streamId: string) => void;\n /** Callback when a run reference is clicked */\n onRunClick?: (runId: string) => void;\n /** Callback when an encrypted marker is clicked (triggers decryption) */\n onDecrypt?: () => void;\n /** Whether decryption is currently in progress */\n isDecrypting?: boolean;\n /** Resource type of the selected span — used to show targeted loading skeletons. */\n resource?: string;\n}) => {\n const toast = useToast();\n // Extract workflowCoreVersion from executionContext for display\n const displayData = useMemo(() => {\n const result = { ...data };\n const execCtx = data.executionContext as\n | Record<string, unknown>\n | undefined;\n if (execCtx?.workflowCoreVersion) {\n result.workflowCoreVersion = execCtx.workflowCoreVersion;\n }\n if (moduleSpecifier) {\n result.moduleSpecifier = moduleSpecifier;\n } else if (typeof data.stepName === 'string') {\n result.moduleSpecifier = data.stepName;\n } else if (typeof data.workflowName === 'string') {\n result.moduleSpecifier = data.workflowName;\n }\n return result;\n }, [data, moduleSpecifier]);\n const hasExpired = expiredAt != null && new Date(expiredAt) < new Date();\n const basicAttributes = Object.keys(displayData)\n .filter((key) => !resolvableAttributes.includes(key))\n .sort(sortByAttributeOrder);\n const resolvedAttributes = useMemo(() => {\n const present = Object.keys(displayData)\n .filter((key) => resolvableAttributes.includes(key))\n .sort(sortByAttributeOrder);\n\n if (!isLoading) return present;\n\n // During loading, ensure input appears so its skeleton renders\n // in the correct position (above the events section).\n const loadingDefaults = ['input'];\n for (const key of loadingDefaults) {\n if (!present.includes(key)) {\n present.push(key);\n }\n }\n return present.sort(sortByAttributeOrder);\n }, [displayData, isLoading]);\n\n // Filter out attributes that return null\n const visibleBasicAttributes = basicAttributes.filter((attribute) => {\n const displayFn =\n attributeToDisplayFn[attribute as keyof typeof attributeToDisplayFn];\n if (!displayFn) return false;\n const displayValue = displayFn(\n displayData[attribute as keyof typeof displayData]\n );\n return displayValue !== null;\n });\n\n // Keep `moduleSpecifier` immediately after `workflowName` or `stepName`.\n const orderedBasicAttributes = useMemo(() => {\n const attributes = [...visibleBasicAttributes];\n const moduleSpecifierIndex = attributes.indexOf('moduleSpecifier');\n if (moduleSpecifierIndex === -1) {\n return attributes;\n }\n\n attributes.splice(moduleSpecifierIndex, 1);\n const workflowNameIndex = attributes.indexOf('workflowName');\n if (workflowNameIndex !== -1) {\n attributes.splice(workflowNameIndex + 1, 0, 'moduleSpecifier');\n return attributes;\n }\n\n const stepNameIndex = attributes.indexOf('stepName');\n if (stepNameIndex !== -1) {\n attributes.splice(stepNameIndex + 1, 0, 'moduleSpecifier');\n return attributes;\n }\n\n attributes.unshift('moduleSpecifier');\n return attributes;\n }, [visibleBasicAttributes]);\n\n // Memoize context object to avoid object reconstruction on render\n const displayContext = useMemo(\n () => ({\n stepName: displayData.stepName as string | undefined,\n }),\n [displayData.stepName]\n );\n const handleCopyModuleSpecifier = useCallback((value: string) => {\n navigator.clipboard\n .writeText(value)\n .then(() => {\n toast.success('moduleSpecifier copied');\n })\n .catch(() => {\n toast.error('Failed to copy moduleSpecifier');\n });\n }, []);\n\n return (\n <RunClickContext.Provider value={onRunClick}>\n <StreamClickContext.Provider value={onStreamClick}>\n <DecryptClickContext.Provider\n value={onDecrypt ? { onDecrypt, isDecrypting } : undefined}\n >\n <div>\n {/* Basic attributes in a vertical layout with border */}\n {visibleBasicAttributes.length > 0 && (\n <div\n className=\"mb-3 flex flex-col overflow-hidden rounded-md border\"\n style={{\n borderColor: 'var(--ds-gray-300)',\n }}\n >\n {orderedBasicAttributes.map((attribute, index) => {\n const displayValue = attributeToDisplayFn[\n attribute as keyof typeof attributeToDisplayFn\n ]?.(displayData[attribute as keyof typeof displayData]);\n const isModuleSpecifier = attribute === 'moduleSpecifier';\n const moduleSpecifierValue =\n typeof displayValue === 'string'\n ? displayValue\n : String(\n displayValue ?? displayData.moduleSpecifier ?? ''\n );\n const shouldCapitalizeLabel =\n attribute !== 'workflowCoreVersion';\n const showResumeAtSkeleton =\n isLoading && resource === 'sleep' && !displayData.resumeAt;\n const showDivider =\n index < orderedBasicAttributes.length - 1 ||\n showResumeAtSkeleton;\n\n return (\n <div key={attribute} className=\"py-1\">\n <div className=\"flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1\">\n <span\n className={\n shouldCapitalizeLabel\n ? 'text-[14px] first-letter:uppercase'\n : 'text-[14px]'\n }\n style={{ color: 'var(--ds-gray-700)' }}\n >\n {getAttributeDisplayName(attribute)}\n </span>\n {isModuleSpecifier ? (\n <button\n type=\"button\"\n className=\"min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono\"\n style={{\n color: 'var(--ds-gray-1000)',\n background: 'transparent',\n border: 'none',\n padding: 0,\n }}\n title={moduleSpecifierValue}\n onClick={() =>\n handleCopyModuleSpecifier(moduleSpecifierValue)\n }\n >\n {moduleSpecifierValue}\n </button>\n ) : (\n <span\n className=\"min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono\"\n style={{ color: 'var(--ds-gray-1000)' }}\n >\n {displayValue}\n </span>\n )}\n </div>\n {showDivider ? (\n <div\n className=\"mx-2.5 border-b\"\n style={{ borderColor: 'var(--ds-gray-300)' }}\n />\n ) : null}\n </div>\n );\n })}\n {isLoading && resource === 'sleep' && !displayData.resumeAt && (\n <div className=\"py-1\">\n <div className=\"flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1\">\n <span\n className=\"text-[14px] first-letter:uppercase\"\n style={{ color: 'var(--ds-gray-700)' }}\n >\n resumeAt\n </span>\n <Skeleton className=\"h-4 w-[55%]\" />\n </div>\n </div>\n )}\n </div>\n )}\n {error ? (\n <ErrorCard\n title=\"Failed to load resource details\"\n details={error.message}\n className=\"my-4\"\n />\n ) : hasExpired ? (\n <ExpiredDataMessage />\n ) : (\n <>\n {resolvedAttributes.map((attribute) => (\n <AttributeBlock\n isLoading={isLoading}\n key={attribute}\n attribute={attribute}\n value={displayData[attribute as keyof typeof displayData]}\n context={displayContext}\n />\n ))}\n </>\n )}\n </div>\n </DecryptClickContext.Provider>\n </StreamClickContext.Provider>\n </RunClickContext.Provider>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-view.js","sourceRoot":"","sources":["../../../src/components/sidebar/conversation-view.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrD,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAyB;IAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CACL,cACE,SAAS,EAAC,8BAA8B,EACxC,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,4BAGlC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,yBAAyB,YACrC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,KAAC,aAAa,IAAa,OAAO,EAAE,OAAO,IAAvB,KAAK,CAAsB,CAChD,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,OAAO,EAA6B;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,CACL,eACE,SAAS,EAAC,+BAA+B,EACzC,KAAK,EAAE;YACL,eAAe,EAAE,KAAK,CAAC,EAAE;YACzB,WAAW,EAAE,KAAK,CAAC,MAAM;SAC1B,aAGD,cACE,SAAS,EAAC,sEAAsE,EAChF,KAAK,EAAE;oBACL,WAAW,EAAE,KAAK,CAAC,MAAM;oBACzB,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB,YAEA,IAAI,GACD,EAGN,cAAK,SAAS,EAAC,uBAAuB,YACnC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,WAAW,IAAS,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAzB,CAAC,CAA4B,CAChD,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAUD,SAAS,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAsC;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAE5B,sEAAsE;QACtE,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,CACL,cACE,SAAS,EAAC,oFAAoF,EAC9F,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,YAEvC,KAAC,UAAU,cAAE,IAAI,CAAC,IAAI,GAAc,GAChC,CACP,CAAC;QACJ,CAAC;QAED,OAAO,CACL,cACE,SAAS,EAAC,iCAAiC,EAC3C,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,YAEtC,IAAI,CAAC,IAAI,GACN,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CACL,eACE,SAAS,EAAC,4BAA4B,EACtC,KAAK,EAAE;gBACL,eAAe,EAAE,sBAAsB;gBACvC,WAAW,EAAE,sBAAsB;aACpC,aAED,eAAK,SAAS,EAAC,mDAAmD,aAChE,0CAAe,EACf,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAG,IAAI,CAAC,QAAQ,GAAQ,IAClE,EACL,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CACrB,cACE,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAE/C,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAChC,cACE,SAAS,EAAC,aAAa,EACvB,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAErC,IAAI,CAAC,KAAK,GACP,CACP,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAI,CACpC,GACG,CACP,IACG,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,CACL,eACE,SAAS,EAAC,4BAA4B,EACtC,KAAK,EAAE;gBACL,eAAe,EAAE,qBAAqB;gBACtC,WAAW,EAAE,qBAAqB;aACnC,aAED,eAAK,SAAS,EAAC,mDAAmD,aAChE,oCAAc,EACd,gBAAM,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,aAC1C,IAAI,CAAC,QAAQ,eACT,IACH,EACL,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CACtB,cACE,SAAS,EAAC,oEAAoE,EAC9E,KAAK,EAAE,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAE/C,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CACjC,cACE,SAAS,EAAC,aAAa,EACvB,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAErC,IAAI,CAAC,MAAM,GACR,CACP,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAI,CACrD,GACG,CACP,IACG,CACP,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO;gBACL,EAAE,EAAE,oBAAoB;gBACxB,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,oBAAoB;aAC5B,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,EAAE,EAAE,oBAAoB;gBACxB,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,oBAAoB;aAC5B,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,EAAE,EAAE,qBAAqB;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,qBAAqB;aAC7B,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,EAAE,EAAE,oBAAoB;gBACxB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,qBAAqB;aAC7B,CAAC;QACJ;YACE,OAAO;gBACL,EAAE,EAAE,oBAAoB;gBACxB,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,oBAAoB;aAC5B,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB;IACpC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAc,EAAE;YACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACtC,CAAC;YACD,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/B,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;gBACjC,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"conversation-view.js","sourceRoot":"","sources":["../../../src/components/sidebar/conversation-view.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { ModelMessage } from 'ai';\nimport { Streamdown } from 'streamdown';\nimport { DataInspector } from '../ui/data-inspector';\n\ninterface ConversationViewProps {\n messages: ModelMessage[];\n}\n\nexport function ConversationView({ messages }: ConversationViewProps) {\n if (messages.length === 0) {\n return (\n <div\n className=\"text-center py-8 text-[11px]\"\n style={{ color: 'var(--ds-gray-600)' }}\n >\n No messages\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-3 p-3\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n </div>\n );\n}\n\nfunction MessageBubble({ message }: { message: ModelMessage }) {\n const role = message.role;\n const parts = parseContent(message.content);\n const style = getRoleStyle(role);\n\n return (\n <div\n className=\"rounded-md border text-[11px]\"\n style={{\n backgroundColor: style.bg,\n borderColor: style.border,\n }}\n >\n {/* Role header */}\n <div\n className=\"px-2.5 py-1 border-b text-[10px] font-medium uppercase tracking-wide\"\n style={{\n borderColor: style.border,\n color: style.label,\n }}\n >\n {role}\n </div>\n\n {/* Content */}\n <div className=\"px-2.5 py-2 space-y-2\">\n {parts.map((part, i) => (\n <ContentPart key={i} part={part} role={role} />\n ))}\n </div>\n </div>\n );\n}\n\ninterface ParsedPart {\n type: 'text' | 'tool-call' | 'tool-result';\n text?: string;\n toolName?: string;\n input?: unknown;\n output?: unknown;\n}\n\nfunction ContentPart({ part, role }: { part: ParsedPart; role: string }) {\n if (part.type === 'text') {\n if (!part.text) return null;\n\n // Use Streamdown for assistant messages (they often contain markdown)\n if (role === 'assistant') {\n return (\n <div\n className=\"prose prose-sm max-w-none text-[11px] [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\"\n style={{ color: 'var(--ds-gray-1000)' }}\n >\n <Streamdown>{part.text}</Streamdown>\n </div>\n );\n }\n\n return (\n <div\n className=\"whitespace-pre-wrap break-words\"\n style={{ color: 'var(--ds-gray-1000)' }}\n >\n {part.text}\n </div>\n );\n }\n\n if (part.type === 'tool-call') {\n return (\n <div\n className=\"rounded border px-2 py-1.5\"\n style={{\n backgroundColor: 'var(--ds-purple-100)',\n borderColor: 'var(--ds-purple-300)',\n }}\n >\n <div className=\"flex items-center gap-1.5 text-[10px] font-medium\">\n <span>🔧</span>\n <span style={{ color: 'var(--ds-purple-900)' }}>{part.toolName}</span>\n </div>\n {part.input != null && (\n <div\n className=\"mt-1.5 overflow-x-auto p-1.5 rounded\"\n style={{ backgroundColor: 'var(--ds-gray-100)' }}\n >\n {typeof part.input === 'string' ? (\n <pre\n className=\"text-[10px]\"\n style={{ color: 'var(--ds-gray-800)' }}\n >\n {part.input}\n </pre>\n ) : (\n <DataInspector data={part.input} />\n )}\n </div>\n )}\n </div>\n );\n }\n\n if (part.type === 'tool-result') {\n return (\n <div\n className=\"rounded border px-2 py-1.5\"\n style={{\n backgroundColor: 'var(--ds-green-100)',\n borderColor: 'var(--ds-green-300)',\n }}\n >\n <div className=\"flex items-center gap-1.5 text-[10px] font-medium\">\n <span>✓</span>\n <span style={{ color: 'var(--ds-green-900)' }}>\n {part.toolName} result\n </span>\n </div>\n {part.output != null && (\n <div\n className=\"mt-1.5 overflow-x-auto max-h-[200px] overflow-y-auto p-1.5 rounded\"\n style={{ backgroundColor: 'var(--ds-gray-100)' }}\n >\n {typeof part.output === 'string' ? (\n <pre\n className=\"text-[10px]\"\n style={{ color: 'var(--ds-gray-800)' }}\n >\n {part.output}\n </pre>\n ) : (\n <DataInspector data={part.output} expandLevel={1} />\n )}\n </div>\n )}\n </div>\n );\n }\n\n return null;\n}\n\nfunction getRoleStyle(role: string) {\n switch (role) {\n case 'user':\n return {\n bg: 'var(--ds-blue-100)',\n border: 'var(--ds-blue-300)',\n label: 'var(--ds-blue-700)',\n };\n case 'assistant':\n return {\n bg: 'var(--ds-gray-100)',\n border: 'var(--ds-gray-300)',\n label: 'var(--ds-gray-700)',\n };\n case 'system':\n return {\n bg: 'var(--ds-amber-100)',\n border: 'var(--ds-amber-300)',\n label: 'var(--ds-amber-700)',\n };\n case 'tool':\n return {\n bg: 'var(--ds-green-50)',\n border: 'var(--ds-green-300)',\n label: 'var(--ds-green-700)',\n };\n default:\n return {\n bg: 'var(--ds-gray-100)',\n border: 'var(--ds-gray-300)',\n label: 'var(--ds-gray-700)',\n };\n }\n}\n\nfunction parseContent(content: unknown): ParsedPart[] {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }];\n }\n\n if (Array.isArray(content)) {\n return content.map((part): ParsedPart => {\n if (typeof part === 'string') {\n return { type: 'text', text: part };\n }\n if (part?.type === 'text') {\n return { type: 'text', text: String(part.text ?? '') };\n }\n if (part?.type === 'tool-call') {\n return {\n type: 'tool-call',\n toolName: part.toolName,\n input: part.input,\n };\n }\n if (part?.type === 'tool-result') {\n return {\n type: 'tool-result',\n toolName: part.toolName,\n output: part.output,\n };\n }\n return { type: 'text', text: '' };\n });\n }\n\n return [];\n}\n"]}
@@ -20,7 +20,7 @@ const serializeForClipboard = (value) => {
20
20
  };
21
21
  export function CopyableDataBlock({ data }) {
22
22
  const toast = useToast();
23
- return (_jsxs("div", { className: "relative overflow-x-auto rounded-md border p-3 pt-9", style: { borderColor: 'var(--ds-gray-300)' }, children: [_jsx("button", { type: "button", "aria-label": "Copy data", title: "Copy", className: "!absolute !right-2 !top-2 !flex !h-6 !w-6 !items-center !justify-center !rounded-md !border !bg-[var(--ds-background-100)] !text-[var(--ds-gray-800)] transition-transform transition-colors duration-100 hover:!bg-[var(--ds-gray-alpha-200)] active:!scale-95 active:!bg-[var(--ds-gray-alpha-300)]", style: { borderColor: 'var(--ds-gray-300)' }, onClick: () => {
23
+ return (_jsxs("div", { className: "relative overflow-x-auto rounded-md border p-3", style: { borderColor: 'var(--ds-gray-300)' }, children: [_jsx("button", { type: "button", "aria-label": "Copy data", title: "Copy", className: "!absolute !right-2 !top-2 !flex !h-6 !w-6 !items-center !justify-center !rounded-md !border !bg-[var(--ds-background-100)] !text-[var(--ds-gray-800)] transition-transform transition-colors duration-100 hover:!bg-[var(--ds-gray-alpha-200)] active:!scale-95 active:!bg-[var(--ds-gray-alpha-300)]", style: { borderColor: 'var(--ds-gray-300)' }, onClick: () => {
24
24
  navigator.clipboard
25
25
  .writeText(serializeForClipboard(data))
26
26
  .then(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"copyable-data-block.js","sourceRoot":"","sources":["../../../src/components/sidebar/copyable-data-block.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAU,EAAE;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,KAAK,KAAK,IAAI,EACd,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAqB;IAC3D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,eACE,SAAS,EAAC,qDAAqD,EAC/D,KAAK,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAE5C,iBACE,IAAI,EAAC,QAAQ,gBACF,WAAW,EACtB,KAAK,EAAC,MAAM,EACZ,SAAS,EAAC,uSAAuS,EACjT,KAAK,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAC5C,OAAO,EAAE,GAAG,EAAE;oBACZ,SAAS,CAAC,SAAS;yBAChB,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;yBACtC,IAAI,CAAC,GAAG,EAAE;wBACT,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;oBACvC,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE;wBACV,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAChC,CAAC,CAAC,CAAC;gBACP,CAAC,YAED,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,GACX,EACT,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,GAAI,IACzB,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"copyable-data-block.js","sourceRoot":"","sources":["../../../src/components/sidebar/copyable-data-block.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAU,EAAE;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,KAAK,KAAK,IAAI,EACd,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,IAAI,EAAqB;IAC3D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,eACE,SAAS,EAAC,gDAAgD,EAC1D,KAAK,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAE5C,iBACE,IAAI,EAAC,QAAQ,gBACF,WAAW,EACtB,KAAK,EAAC,MAAM,EACZ,SAAS,EAAC,uSAAuS,EACjT,KAAK,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAC5C,OAAO,EAAE,GAAG,EAAE;oBACZ,SAAS,CAAC,SAAS;yBAChB,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;yBACtC,IAAI,CAAC,GAAG,EAAE;wBACT,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;oBACvC,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE;wBACV,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAChC,CAAC,CAAC,CAAC;gBACP,CAAC,YAED,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,GACX,EACT,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,GAAI,IACzB,CACP,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport { Copy } from 'lucide-react';\nimport { useToast } from '../../lib/toast';\nimport { DataInspector } from '../ui/data-inspector';\n\nconst serializeForClipboard = (value: unknown): string => {\n if (typeof value === 'string') return value;\n if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n return String(value);\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n};\n\nexport function CopyableDataBlock({ data }: { data: unknown }) {\n const toast = useToast();\n return (\n <div\n className=\"relative overflow-x-auto rounded-md border p-3\"\n style={{ borderColor: 'var(--ds-gray-300)' }}\n >\n <button\n type=\"button\"\n aria-label=\"Copy data\"\n title=\"Copy\"\n className=\"!absolute !right-2 !top-2 !flex !h-6 !w-6 !items-center !justify-center !rounded-md !border !bg-[var(--ds-background-100)] !text-[var(--ds-gray-800)] transition-transform transition-colors duration-100 hover:!bg-[var(--ds-gray-alpha-200)] active:!scale-95 active:!bg-[var(--ds-gray-alpha-300)]\"\n style={{ borderColor: 'var(--ds-gray-300)' }}\n onClick={() => {\n navigator.clipboard\n .writeText(serializeForClipboard(data))\n .then(() => {\n toast.success('Copied to clipboard');\n })\n .catch(() => {\n toast.error('Failed to copy');\n });\n }}\n >\n <Copy size={12} />\n </button>\n <DataInspector data={data} />\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"detail-card.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/detail-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,2CA6DA"}
1
+ {"version":3,"file":"detail-card.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/detail-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,2CA2CA"}
@@ -15,6 +15,6 @@ export function DetailCard({ summary, children, onToggle, disabled = false, summ
15
15
  backgroundColor: 'var(--ds-gray-100)',
16
16
  color: 'var(--ds-gray-900)',
17
17
  listStyle: 'none',
18
- }, children: _jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(ChevronRight, { size: 14, className: "shrink-0 transition-transform group-open:rotate-90" }), summary] }) }), _jsxs("div", { className: `relative pl-6 mt-3 ${contentClassName ?? ''}`, children: [_jsx("div", { className: "absolute left-3 -top-3 w-px h-3", style: { backgroundColor: 'var(--ds-gray-400)' } }), _jsx("div", { className: "absolute left-3 top-0 w-3 h-3 border-l border-b rounded-bl-lg", style: { borderColor: 'var(--ds-gray-400)' } }), _jsx("div", { className: "absolute left-6 top-3 w-0 h-px -translate-y-px", style: { backgroundColor: 'var(--ds-gray-400)' } }), _jsx("div", { children: children })] })] }));
18
+ }, children: _jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx(ChevronRight, { size: 14, className: "shrink-0 transition-transform group-open:rotate-90" }), summary] }) }), _jsx("div", { className: `mt-2 ${contentClassName ?? ''}`, children: children })] }));
19
19
  }
20
20
  //# sourceMappingURL=detail-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detail-card.js","sourceRoot":"","sources":["../../../src/components/sidebar/detail-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,gBAAgB,GAYjB;IACC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,cACE,SAAS,EAAE,2CAA2C,gBAAgB,IAAI,EAAE,EAAE,EAC9E,KAAK,EAAE;gBACL,WAAW,EAAE,oBAAoB;gBACjC,eAAe,EAAE,oBAAoB;gBACrC,KAAK,EAAE,oBAAoB;gBAC3B,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,GAAG;aACb,YAEA,OAAO,GACJ,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,mBACE,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAE,CAAC,CAAC,MAA6B,CAAC,IAAI,CAAC,aAElE,kBACE,SAAS,EAAE,iHAAiH,gBAAgB,IAAI,EAAE,EAAE,EACpJ,KAAK,EAAE;oBACL,WAAW,EAAE,oBAAoB;oBACjC,eAAe,EAAE,oBAAoB;oBACrC,KAAK,EAAE,oBAAoB;oBAC3B,SAAS,EAAE,MAAM;iBAClB,YAED,gBAAM,SAAS,EAAC,2BAA2B,aACzC,KAAC,YAAY,IACX,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,oDAAoD,GAC9D,EACD,OAAO,IACH,GACC,EAEV,eAAK,SAAS,EAAE,sBAAsB,gBAAgB,IAAI,EAAE,EAAE,aAE5D,cACE,SAAS,EAAC,iCAAiC,EAC3C,KAAK,EAAE,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAChD,EAEF,cACE,SAAS,EAAC,+DAA+D,EACzE,KAAK,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAC5C,EAEF,cACE,SAAS,EAAC,gDAAgD,EAC1D,KAAK,EAAE,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAChD,EACF,wBAAM,QAAQ,GAAO,IACjB,IACE,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"detail-card.js","sourceRoot":"","sources":["../../../src/components/sidebar/detail-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,gBAAgB,GAYjB;IACC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,cACE,SAAS,EAAE,2CAA2C,gBAAgB,IAAI,EAAE,EAAE,EAC9E,KAAK,EAAE;gBACL,WAAW,EAAE,oBAAoB;gBACjC,eAAe,EAAE,oBAAoB;gBACrC,KAAK,EAAE,oBAAoB;gBAC3B,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,GAAG;aACb,YAEA,OAAO,GACJ,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,mBACE,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAE,CAAC,CAAC,MAA6B,CAAC,IAAI,CAAC,aAElE,kBACE,SAAS,EAAE,iHAAiH,gBAAgB,IAAI,EAAE,EAAE,EACpJ,KAAK,EAAE;oBACL,WAAW,EAAE,oBAAoB;oBACjC,eAAe,EAAE,oBAAoB;oBACrC,KAAK,EAAE,oBAAoB;oBAC3B,SAAS,EAAE,MAAM;iBAClB,YAED,gBAAM,SAAS,EAAC,2BAA2B,aACzC,KAAC,YAAY,IACX,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,oDAAoD,GAC9D,EACD,OAAO,IACH,GACC,EACV,cAAK,SAAS,EAAE,QAAQ,gBAAgB,IAAI,EAAE,EAAE,YAAG,QAAQ,GAAO,IAC1D,CACX,CAAC;AACJ,CAAC","sourcesContent":["import { ChevronRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nexport function DetailCard({\n summary,\n children,\n onToggle,\n disabled = false,\n summaryClassName,\n contentClassName,\n}: {\n summary: ReactNode;\n children?: ReactNode;\n /** Called when the detail card is expanded/collapsed */\n onToggle?: (open: boolean) => void;\n /** Renders a non-expandable summary card when true. */\n disabled?: boolean;\n /** Extra classes for the summary row. */\n summaryClassName?: string;\n /** Extra classes for expanded content wrapper. */\n contentClassName?: string;\n}) {\n if (disabled) {\n return (\n <div\n className={`rounded-md border px-2.5 py-1.5 text-xs ${summaryClassName ?? ''}`}\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'var(--ds-gray-100)',\n color: 'var(--ds-gray-700)',\n cursor: 'not-allowed',\n opacity: 0.8,\n }}\n >\n {summary}\n </div>\n );\n }\n\n return (\n <details\n className=\"group\"\n onToggle={(e) => onToggle?.((e.target as HTMLDetailsElement).open)}\n >\n <summary\n className={`cursor-pointer rounded-md border px-2.5 py-1.5 text-xs hover:brightness-95 [&::-webkit-details-marker]:hidden ${summaryClassName ?? ''}`}\n style={{\n borderColor: 'var(--ds-gray-300)',\n backgroundColor: 'var(--ds-gray-100)',\n color: 'var(--ds-gray-900)',\n listStyle: 'none',\n }}\n >\n <span className=\"flex items-center gap-1.5\">\n <ChevronRight\n size={14}\n className=\"shrink-0 transition-transform group-open:rotate-90\"\n />\n {summary}\n </span>\n </summary>\n <div className={`mt-2 ${contentClassName ?? ''}`}>{children}</div>\n </details>\n );\n}\n"]}
@@ -26,10 +26,12 @@ export interface SelectedSpanInfo {
26
26
  * This component is rendered OUTSIDE the trace viewer context — it
27
27
  * receives all data via props rather than reading from context.
28
28
  */
29
- export declare function EntityDetailPanel({ run, onStreamClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting, selectedSpan, }: {
29
+ export declare function EntityDetailPanel({ run, onStreamClick, onRunClick, spanDetailData, spanDetailError, spanDetailLoading, onSpanSelect, onWakeUpSleep, onLoadEventData, onResolveHook, encryptionKey, onDecrypt, isDecrypting, selectedSpan, }: {
30
30
  run: WorkflowRun;
31
31
  /** Callback when a stream reference is clicked */
32
32
  onStreamClick?: (streamId: string) => void;
33
+ /** Callback when a run reference is clicked */
34
+ onRunClick?: (runId: string) => void;
33
35
  /** Pre-fetched span detail data for the selected span. */
34
36
  spanDetailData: WorkflowRun | Step | Hook | Event | null;
35
37
  /** Error from external span detail fetch. */
@@ -1 +1 @@
1
- {"version":3,"file":"entity-detail-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/entity-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAwBtE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,GAAG,EAAE,WAAW,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,0DAA0D;IAC1D,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IACzD,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uGAAuG;IACvG,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,IAAI,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAmZ3B"}
1
+ {"version":3,"file":"entity-detail-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/entity-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAuBtE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,GAAG,EAAE,WAAW,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0DAA0D;IAC1D,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IACzD,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uGAAuG;IACvG,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,IAAI,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAyV3B"}