@anvia/studio 1.3.13 → 1.3.15

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 (132) hide show
  1. package/dist/ui/assets/{ArrowClockwise.es-DwsUsBcf.js → ArrowClockwise.es-DZEjRq0J.js} +2 -2
  2. package/dist/ui/assets/ArrowClockwise.es-DZEjRq0J.js.map +1 -0
  3. package/dist/ui/assets/{Check.es-DSgPB1Pv.js → Check.es-TFx4xBI5.js} +2 -2
  4. package/dist/ui/assets/Check.es-TFx4xBI5.js.map +1 -0
  5. package/dist/ui/assets/Combination-CFi_6UzA.js +42 -0
  6. package/dist/ui/assets/Combination-CFi_6UzA.js.map +1 -0
  7. package/dist/ui/assets/{Copy.es-C6Vd2mhd.js → Copy.es-BUkmbhxT.js} +2 -2
  8. package/dist/ui/assets/Copy.es-BUkmbhxT.js.map +1 -0
  9. package/dist/ui/assets/{MagnifyingGlass.es-DP3xtOg0.js → MagnifyingGlass.es-DVzl9EQ2.js} +2 -2
  10. package/dist/ui/assets/MagnifyingGlass.es-DVzl9EQ2.js.map +1 -0
  11. package/dist/ui/assets/{Wrench.es-BEBc8KqB.js → Wrench.es-Uf2XraWM.js} +2 -2
  12. package/dist/ui/assets/Wrench.es-Uf2XraWM.js.map +1 -0
  13. package/dist/ui/assets/{agents-page-BeBY9su3.js → agents-page-BLy19QA8.js} +2 -2
  14. package/dist/ui/assets/agents-page-BLy19QA8.js.map +1 -0
  15. package/dist/ui/assets/{badge-MfEDrFTO.js → badge-D6eyQQ0T.js} +2 -2
  16. package/dist/ui/assets/badge-D6eyQQ0T.js.map +1 -0
  17. package/dist/ui/assets/button-4bdMllZ8.js +2 -0
  18. package/dist/ui/assets/button-4bdMllZ8.js.map +1 -0
  19. package/dist/ui/assets/dialog-D1odZMnQ.js +2 -0
  20. package/dist/ui/assets/dialog-D1odZMnQ.js.map +1 -0
  21. package/dist/ui/assets/dist-C6Ez28oH.js +2 -0
  22. package/dist/ui/assets/dist-C6Ez28oH.js.map +1 -0
  23. package/dist/ui/assets/dist-gzPjmjmv.js +2 -0
  24. package/dist/ui/assets/dist-gzPjmjmv.js.map +1 -0
  25. package/dist/ui/assets/dist-uvOGC5z0.js +2 -0
  26. package/dist/ui/assets/dist-uvOGC5z0.js.map +1 -0
  27. package/dist/ui/assets/{graphs-page-2rKZQJAl.js → graphs-page-CDMb6H6o.js} +2 -2
  28. package/dist/ui/assets/graphs-page-CDMb6H6o.js.map +1 -0
  29. package/dist/ui/assets/{icon-BivhXy0Y.js → icon-B3s_bapw.js} +2 -2
  30. package/dist/ui/assets/icon-B3s_bapw.js.map +1 -0
  31. package/dist/ui/assets/index-BpwQ_xqH.js +67 -0
  32. package/dist/ui/assets/index-BpwQ_xqH.js.map +1 -0
  33. package/dist/ui/assets/index-DVwgJz2a.css +2 -0
  34. package/dist/ui/assets/{input-C35vs5wD.js → input-DjRTBLA6.js} +2 -2
  35. package/dist/ui/assets/input-DjRTBLA6.js.map +1 -0
  36. package/dist/ui/assets/knowledge-model-B6kRb7zc.js.map +1 -1
  37. package/dist/ui/assets/knowledge-page-BpSbnDxl.js +2 -0
  38. package/dist/ui/assets/knowledge-page-BpSbnDxl.js.map +1 -0
  39. package/dist/ui/assets/mcps-page-CAdyljvT.js +2 -0
  40. package/dist/ui/assets/mcps-page-CAdyljvT.js.map +1 -0
  41. package/dist/ui/assets/memory-page-MhRppZ8j.js +4 -0
  42. package/dist/ui/assets/memory-page-MhRppZ8j.js.map +1 -0
  43. package/dist/ui/assets/{pipelines-page-BeE6_VuK.js → pipelines-page-ClFgb3LL.js} +2 -2
  44. package/dist/ui/assets/pipelines-page-ClFgb3LL.js.map +1 -0
  45. package/dist/ui/assets/renderers-C1LvbME4.js +94 -0
  46. package/dist/ui/assets/renderers-C1LvbME4.js.map +1 -0
  47. package/dist/ui/assets/{request-CpxtfF0E.js → request-C9FAR59q.js} +2 -2
  48. package/dist/ui/assets/request-C9FAR59q.js.map +1 -0
  49. package/dist/ui/assets/rfb-CtGtw_KV.js +6 -0
  50. package/dist/ui/assets/rfb-CtGtw_KV.js.map +1 -0
  51. package/dist/ui/assets/{sandboxes-page-GPkBA_26.js → sandboxes-page-B1j_lSIA.js} +2 -2
  52. package/dist/ui/assets/sandboxes-page-B1j_lSIA.js.map +1 -0
  53. package/dist/ui/assets/select-DwjXlQvi.js +2 -0
  54. package/dist/ui/assets/select-DwjXlQvi.js.map +1 -0
  55. package/dist/ui/assets/{sessions-page-CDvKPoVi.js → sessions-page-Bym9fk3t.js} +2 -2
  56. package/dist/ui/assets/sessions-page-Bym9fk3t.js.map +1 -0
  57. package/dist/ui/assets/status-page-WZ4bloEs.js +2 -0
  58. package/dist/ui/assets/status-page-WZ4bloEs.js.map +1 -0
  59. package/dist/ui/assets/{studio-DeO7ueA2.js → studio-ZpV3GAsn.js} +2 -2
  60. package/dist/ui/assets/studio-ZpV3GAsn.js.map +1 -0
  61. package/dist/ui/assets/style-B23wzg_0.js +8 -0
  62. package/dist/ui/assets/style-B23wzg_0.js.map +1 -0
  63. package/dist/ui/assets/{team-playground-C-nJy3BC.js → team-playground-BWPiCcRS.js} +2 -2
  64. package/dist/ui/assets/{team-playground-C-nJy3BC.js.map → team-playground-BWPiCcRS.js.map} +1 -1
  65. package/dist/ui/assets/{textarea-BqjRR-2a.js → textarea-D_t9rW9X.js} +2 -2
  66. package/dist/ui/assets/textarea-D_t9rW9X.js.map +1 -0
  67. package/dist/ui/assets/{tool-runner-D3CdDSUU.js → tool-runner-BVvlqFJh.js} +2 -2
  68. package/dist/ui/assets/tool-runner-BVvlqFJh.js.map +1 -0
  69. package/dist/ui/assets/tools-page-BTQvpS16.js +2 -0
  70. package/dist/ui/assets/tools-page-BTQvpS16.js.map +1 -0
  71. package/dist/ui/assets/trace-browser-DiYLVmUu.js +4 -0
  72. package/dist/ui/assets/trace-browser-DiYLVmUu.js.map +1 -0
  73. package/dist/ui/assets/{transcript-item-D9M-VsnP.js → transcript-item-Wai6fv5d.js} +2 -2
  74. package/dist/ui/assets/transcript-item-Wai6fv5d.js.map +1 -0
  75. package/dist/ui/assets/{with-selector-CfGDDu3e.js → with-selector-DI0K_VfM.js} +2 -2
  76. package/dist/ui/assets/with-selector-DI0K_VfM.js.map +1 -0
  77. package/dist/ui/index.html +17 -17
  78. package/package.json +22 -22
  79. package/dist/ui/assets/ArrowClockwise.es-DwsUsBcf.js.map +0 -1
  80. package/dist/ui/assets/Check.es-DSgPB1Pv.js.map +0 -1
  81. package/dist/ui/assets/Combination-BkVfYDnw.js +0 -42
  82. package/dist/ui/assets/Combination-BkVfYDnw.js.map +0 -1
  83. package/dist/ui/assets/Copy.es-C6Vd2mhd.js.map +0 -1
  84. package/dist/ui/assets/MagnifyingGlass.es-DP3xtOg0.js.map +0 -1
  85. package/dist/ui/assets/Wrench.es-BEBc8KqB.js.map +0 -1
  86. package/dist/ui/assets/agents-page-BeBY9su3.js.map +0 -1
  87. package/dist/ui/assets/badge-MfEDrFTO.js.map +0 -1
  88. package/dist/ui/assets/button-jjWFI6nO.js +0 -2
  89. package/dist/ui/assets/button-jjWFI6nO.js.map +0 -1
  90. package/dist/ui/assets/dialog-7KiF6M8r.js +0 -2
  91. package/dist/ui/assets/dialog-7KiF6M8r.js.map +0 -1
  92. package/dist/ui/assets/dist-Che9Yn41.js +0 -2
  93. package/dist/ui/assets/dist-Che9Yn41.js.map +0 -1
  94. package/dist/ui/assets/dist-Du1CgPgL.js +0 -2
  95. package/dist/ui/assets/dist-Du1CgPgL.js.map +0 -1
  96. package/dist/ui/assets/dist-xrWIzsxw.js +0 -2
  97. package/dist/ui/assets/dist-xrWIzsxw.js.map +0 -1
  98. package/dist/ui/assets/graphs-page-2rKZQJAl.js.map +0 -1
  99. package/dist/ui/assets/icon-BivhXy0Y.js.map +0 -1
  100. package/dist/ui/assets/index-BDFcpxF9.css +0 -2
  101. package/dist/ui/assets/index-DQo99AOj.js +0 -67
  102. package/dist/ui/assets/index-DQo99AOj.js.map +0 -1
  103. package/dist/ui/assets/input-C35vs5wD.js.map +0 -1
  104. package/dist/ui/assets/knowledge-page-CguNnujL.js +0 -2
  105. package/dist/ui/assets/knowledge-page-CguNnujL.js.map +0 -1
  106. package/dist/ui/assets/mcps-page-BZVfflk-.js +0 -2
  107. package/dist/ui/assets/mcps-page-BZVfflk-.js.map +0 -1
  108. package/dist/ui/assets/memory-page-DyK3UTyb.js +0 -4
  109. package/dist/ui/assets/memory-page-DyK3UTyb.js.map +0 -1
  110. package/dist/ui/assets/pipelines-page-BeE6_VuK.js.map +0 -1
  111. package/dist/ui/assets/renderers-BakHuLSK.js +0 -96
  112. package/dist/ui/assets/renderers-BakHuLSK.js.map +0 -1
  113. package/dist/ui/assets/request-CpxtfF0E.js.map +0 -1
  114. package/dist/ui/assets/rfb-NV_fh9Db.js +0 -6
  115. package/dist/ui/assets/rfb-NV_fh9Db.js.map +0 -1
  116. package/dist/ui/assets/sandboxes-page-GPkBA_26.js.map +0 -1
  117. package/dist/ui/assets/select-Bt5d0Z3n.js +0 -2
  118. package/dist/ui/assets/select-Bt5d0Z3n.js.map +0 -1
  119. package/dist/ui/assets/sessions-page-CDvKPoVi.js.map +0 -1
  120. package/dist/ui/assets/status-page-DvH1oCw1.js +0 -2
  121. package/dist/ui/assets/status-page-DvH1oCw1.js.map +0 -1
  122. package/dist/ui/assets/studio-DeO7ueA2.js.map +0 -1
  123. package/dist/ui/assets/style-C_1A5pxg.js +0 -8
  124. package/dist/ui/assets/style-C_1A5pxg.js.map +0 -1
  125. package/dist/ui/assets/textarea-BqjRR-2a.js.map +0 -1
  126. package/dist/ui/assets/tool-runner-D3CdDSUU.js.map +0 -1
  127. package/dist/ui/assets/tools-page-C0lqOcri.js +0 -2
  128. package/dist/ui/assets/tools-page-C0lqOcri.js.map +0 -1
  129. package/dist/ui/assets/trace-browser-B4cu-jFZ.js +0 -4
  130. package/dist/ui/assets/trace-browser-B4cu-jFZ.js.map +0 -1
  131. package/dist/ui/assets/transcript-item-D9M-VsnP.js.map +0 -1
  132. package/dist/ui/assets/with-selector-CfGDDu3e.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-browser-DiYLVmUu.js","names":["a","e","c","t","t","e","r","a","f","s","e","a","i","n","e","a","c","n","a","i","s","c","t","n","n","a","o","t","m","s","t","a","c","a","useState","CaretDown","CaretRight","_Fragment","DotOutline","Robot","Sparkle","Wrench","ScrollArea","Fragment","ScrollAreaPrimitive.Root","ScrollAreaPrimitive.Viewport","ScrollAreaPrimitive.Corner","ScrollAreaPrimitive.ScrollAreaScrollbar","ScrollAreaPrimitive.ScrollAreaThumb","useMemo","useState","CaretRight","useId","MagnifyingGlass","Check","Copy","ArrowLeft","_Fragment","useMemo","useState","MagnifyingGlass","ArrowsOutLineVertical","TreeStructure","CaretRight","Clock","Timer","BracketsCurly","ArrowSquareOut","require_react","cn","require_jsx_runtime","__toESM","useLayoutEffect2","useCallbackRef","Primitive","composeEventHandlers","Presence","useComposedRefs","isRecord","emptyFallback","formatUsage","createSlottable","formatTraceTime","formatTraceDate","Button","formatDuration","n$4","n$5","s$4","s$5","n$6","s$6","f","p","StudioIcon","clamp","useDirection","StudioEmptyState","Badge","Input","import_react","a$1","e$4","c$2","t$2","a","t$1","l","e$3","H","r$1","s$3","e$2","o","n$3","e$1","n$2","e","r","s$2","c$1","n$1","t","c","o$1","s$1","m","s","n","import_jsx_runtime","rawTraceJson","value","TraceJsonTree","JsonNode","props","jsonIndentSize","jsonDisclosureGutter","isJsonBranch","JsonBranch","jsonContentIndent","JsonNodeLabel","JsonPrimitive","open","setOpen","arrayValue","entries","index","item","opening","closing","collapsed","current","key","depth","jsonSyntaxTokens","tokenPattern","tokens","cursor","match","json","text","jsonTokenType","followingText","traceTurns","grouped","observation","trace","turn","left","right","observations","total","traceObservationTree","nodes","roots","node","parentId","parent","selectedTraceDetail","activeKey","firstDeltaMsFromObservations","traceDetailMetadata","turnNumber","turns","observationStatusSummary","turnUsageText","turnDetailMetadata","observationId","traceObservationLabel","firstDeltaMsFromMetadata","observationUsageText","observationDetailMetadata","metadata","traceGroup","compactTraceMetadata","traceMessageCount","base","modelInfoMetadata","modelCallMetadata","responseMetadata","toolsMetadata","timingMetadata","group","request","values","firstDeltaMs","TraceToneIcon","traceToneIconClass","tone","formatUsageValue","usage","input","output","Card","className","__defProp","__name","target","useStateMachine","machine","state","event","initialState","ScrollAreaType","Orientation","Direction","SCROLL_AREA_NAME","createScrollAreaContext","createScrollAreaScope","createContextScope","ScrollAreaProvider","useScrollAreaContext","ScrollArea$1","scrollAreaProps","scrollArea","setScrollArea","viewport","setViewport","content","setContent","scrollbarX","setScrollbarX","scrollbarY","setScrollbarY","cornerWidth","setCornerWidth","cornerHeight","setCornerHeight","scrollbarXEnabled","setScrollbarXEnabled","scrollbarYEnabled","setScrollbarYEnabled","composedRefs","forwardedRef","direction","dir","__scopeScrollArea","VIEWPORT_NAME","Slottable","ScrollAreaViewport","viewportProps","context","ref","canSlotOntoChildren","children","ScrollAreaViewportStyle","disableImplicitContentElement","ScrollAreaContent","slottable","prevProps","nextProps","CONTENT_NAME","contentProps","SCROLLBAR_NAME","ScrollAreaScrollbar","scrollbarProps","isHorizontal","onScrollbarXEnabledChange","onScrollbarYEnabledChange","ScrollAreaScrollbarHover","ScrollAreaScrollbarScroll","ScrollAreaScrollbarAuto","ScrollAreaScrollbarVisible","visible","setVisible","hideTimer","handlePointerEnter","handlePointerLeave","forceMount","debounceScrollEnd","useDebounceCallback","send","scrollDirection","prevScrollPos","handleScroll","scrollPos","handleResize","isOverflowX","isOverflowY","useResizeObserver","thumbRef","pointerOffsetRef","sizes","setSizes","thumbRatio","getThumbRatio","commonProps","thumb","pointerPos","getScrollPosition","getScrollPositionFromPointer","orientation","ScrollAreaScrollbarX","offset","getThumbOffsetFromScroll","ScrollAreaScrollbarY","computedStyle","setComputedStyle","composeRefs","ScrollAreaScrollbarImpl","getThumbSize","isScrollingWithinScrollbarBounds","maxScrollPos","onSizesChange","toInt","ScrollbarProvider","useScrollbarContext","scrollbar","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","onWheelScroll","handleThumbPositionChange","onThumbPositionChange","onResize","handleDragScroll","x","y","onDragScroll","handleWheel","element","onThumbChange","onThumbPointerUp","onThumbPointerDown","THUMB_NAME","ScrollAreaThumb","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","style","thumbRect","CORNER_NAME","ScrollAreaCorner","hasBothScrollbarsVisible","ScrollAreaCornerImpl","cornerProps","width","setWidth","height","setHeight","hasSize","height2","width2","onCornerWidthChange","onCornerHeightChange","ratio","viewportSize","contentSize","scrollbarPadding","thumbSize","thumbSizePx","thumbCenter","pointerOffset","thumbOffsetFromEnd","minPointerPos","maxPointerPos","scrollRange","linearScale","maxThumbPos","scrollClampRange","scrollWithoutMomentum","prevPosition","rAF","loop","position","isHorizontalScroll","isVerticalScroll","handler","handleCallback","callback","debounceTimerRef","delay","resizeObserver","ScrollArea","ScrollBar","messageKeys","toolKeys","analyzeTracePayload","messages","tools","defaultRole","field","unrecognized","message","parseMessage","directMessage","messageFields","additionalEntries","consumed","candidate","parsed","choice","parseTool","tool","flattenTracePayload","visit","path","nested","tracePayloadLabel","compactTracePayloadValue","tracePayloadJson","letter","role","messageRole","hasContentShape","messageContent","toolCalls","toolCallsFrom","toolCallsFromContent","isToolPayload","fn","name","stringValue","description","parseJsonString","largePayloadPreviewCharacters","TracePayloadSection","serialized","tooLarge","analysis","options","preferredMode","setPreferredMode","mode","option","EmptyPayload","RawJsonBlock","MetadataTable","ReadableMessages","fieldCount","PayloadModeSwitch","RoleBadge","ToolDisclosure","StructuredPayload","searchId","query","setQuery","normalized","entry","PrimitiveValue","StructuredRow","copied","setCopied","preview","write","token","TraceBrowser","selectedTrace","selectedSessionTraces","TraceTable","TraceDetailRoute","traceAgentLabel","TraceStatusBadge","summaryTone","traceDisplayName","HeaderMetric","TracePanel","status","orderedTraces","firstTraceId","activeTraceId","setActiveTraceId","setActiveKey","setCollapsed","search","setSearch","activeTrace","selectTimelineItem","traceId","searchResults","agentKeys","everythingCollapsed","toggleCollapsed","next","TraceTreeRow","traceActive","traceTurnItems","agentKey","agentCollapsed","turnKey","turnCollapsed","TraceObservationRows","TraceDetailPane","TraceTreeIndent","iconX","level","TraceObservationNodeRow","usageText","collapseKey","isCollapsed","childAncestorLevels","child","selected","TraceMetric"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/ArrowsOutLineVertical.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/BracketsCurly.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/Clock.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/DotOutline.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/Sparkle.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/Timer.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/defs/TreeStructure.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/ArrowsOutLineVertical.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/BracketsCurly.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/Clock.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/DotOutline.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/Sparkle.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/Timer.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@phosphor-icons/react/dist/csr/TreeStructure.es.js","../../../src/ui/app/modules/tracing/trace-browser-detail.tsx","../../../src/ui/app/components/ui/card.tsx","../../../../../node_modules/.pnpm/@radix-ui+react-scroll-area@1.4.0_@types+react-dom@19.3.0_@types+react@19.3.0__@types+r_28e8f6fccf2963b6b1e6279fee63a832/node_modules/@radix-ui/react-scroll-area/dist/index.mjs","../../../src/ui/app/components/ui/scroll-area.tsx","../../../src/ui/app/modules/tracing/trace-payload.ts","../../../src/ui/app/modules/tracing/trace-payload-section.tsx","../../../src/ui/app/modules/tracing/trace-browser.tsx"],"sourcesContent":["import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M112,56V200L40,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H40a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM104.49,56.48,116,45V88a12,12,0,0,0,24,0V45l11.51,11.51a12,12,0,0,0,17-17l-32-32a12,12,0,0,0-17,0l-32,32a12,12,0,0,0,17,17Zm47,143L140,211V168a12,12,0,0,0-24,0v43l-11.51-11.52a12,12,0,0,0-17,17l32,32a12,12,0,0,0,17,0l32-32a12,12,0,0,0-17-17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,32V224a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V32A16,16,0,0,1,56,16H200A16,16,0,0,1,216,32Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM101.66,53.66,120,35.31V96a8,8,0,0,0,16,0V35.31l18.34,18.35a8,8,0,0,0,11.32-11.32l-32-32a8,8,0,0,0-11.32,0l-32,32a8,8,0,0,0,11.32,11.32Zm52.68,148.68L136,220.69V160a8,8,0,0,0-16,0v60.69l-18.34-18.35a8,8,0,0,0-11.32,11.32l32,32a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M88.61,51.06a8,8,0,0,1,1.73-8.72l32-32a8,8,0,0,1,11.32,0l32,32A8,8,0,0,1,160,56H136V96a8,8,0,0,1-16,0V56H96A8,8,0,0,1,88.61,51.06ZM216,120H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm-56,80H136V160a8,8,0,0,0-16,0v40H96a8,8,0,0,0-5.66,13.66l32,32a8,8,0,0,0,11.32,0l32-32A8,8,0,0,0,160,200Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H40a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM100.24,52.24,122,30.49V96a6,6,0,0,0,12,0V30.49l21.76,21.75a6,6,0,0,0,8.48-8.48l-32-32a6,6,0,0,0-8.48,0l-32,32a6,6,0,0,0,8.48,8.48Zm55.52,151.52L134,225.51V160a6,6,0,0,0-12,0v65.51l-21.76-21.75a6,6,0,0,0-8.48,8.48l32,32a6,6,0,0,0,8.48,0l32-32a6,6,0,0,0-8.48-8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM101.66,53.66,120,35.31V96a8,8,0,0,0,16,0V35.31l18.34,18.35a8,8,0,0,0,11.32-11.32l-32-32a8,8,0,0,0-11.32,0l-32,32a8,8,0,0,0,11.32,11.32Zm52.68,148.68L136,220.69V160a8,8,0,0,0-16,0v60.69l-18.34-18.35a8,8,0,0,0-11.32,11.32l32,32a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H40a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM98.83,50.83,124,25.66V96a4,4,0,0,0,8,0V25.66l25.17,25.17a4,4,0,1,0,5.66-5.66l-32-32a4,4,0,0,0-5.66,0l-32,32a4,4,0,0,0,5.66,5.66Zm58.34,154.34L132,230.34V160a4,4,0,0,0-8,0v70.34L98.83,205.17a4,4,0,0,0-5.66,5.66l32,32a4,4,0,0,0,5.66,0l32-32a4,4,0,0,0-5.66-5.66Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst c = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M54.8,119.49A35.06,35.06,0,0,1,49.05,128a35.06,35.06,0,0,1,5.75,8.51C60,147.24,60,159.83,60,172c0,25.94,1.84,32,20,32a12,12,0,0,1,0,24c-19.14,0-32.2-6.9-38.8-20.51C36,196.76,36,184.17,36,172c0-25.94-1.84-32-20-32a12,12,0,0,1,0-24c18.16,0,20-6.06,20-32,0-12.17,0-24.76,5.2-35.49C47.8,34.9,60.86,28,80,28a12,12,0,0,1,0,24c-18.16,0-20,6.06-20,32C60,96.17,60,108.76,54.8,119.49ZM240,116c-18.16,0-20-6.06-20-32,0-12.17,0-24.76-5.2-35.49C208.2,34.9,195.14,28,176,28a12,12,0,0,0,0,24c18.16,0,20,6.06,20,32,0,12.17,0,24.76,5.2,35.49A35.06,35.06,0,0,0,207,128a35.06,35.06,0,0,0-5.75,8.51C196,147.24,196,159.83,196,172c0,25.94-1.84,32-20,32a12,12,0,0,0,0,24c19.14,0,32.2-6.9,38.8-20.51C220,196.76,220,184.17,220,172c0-25.94,1.84-32,20-32a12,12,0,0,0,0-24Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M240,128c-64,0,0,88-64,88H80c-64,0,0-88-64-88,64,0,0-88,64-88h96C240,40,176,128,240,128Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M43.18,128a29.78,29.78,0,0,1,8,10.26c4.8,9.9,4.8,22,4.8,33.74,0,24.31,1,36,24,36a8,8,0,0,1,0,16c-17.48,0-29.32-6.14-35.2-18.26-4.8-9.9-4.8-22-4.8-33.74,0-24.31-1-36-24-36a8,8,0,0,1,0-16c23,0,24-11.69,24-36,0-11.72,0-23.84,4.8-33.74C50.68,38.14,62.52,32,80,32a8,8,0,0,1,0,16C57,48,56,59.69,56,84c0,11.72,0,23.84-4.8,33.74A29.78,29.78,0,0,1,43.18,128ZM240,120c-23,0-24-11.69-24-36,0-11.72,0-23.84-4.8-33.74C205.32,38.14,193.48,32,176,32a8,8,0,0,0,0,16c23,0,24,11.69,24,36,0,11.72,0,23.84,4.8,33.74a29.78,29.78,0,0,0,8,10.26,29.78,29.78,0,0,0-8,10.26c-4.8,9.9-4.8,22-4.8,33.74,0,24.31-1,36-24,36a8,8,0,0,0,0,16c17.48,0,29.32-6.14,35.2-18.26,4.8-9.9,4.8-22,4.8-33.74,0-24.31,1-36,24-36a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM88,155.84c.29,14.26.41,20.16,16,20.16a8,8,0,0,1,0,16c-31.27,0-31.72-22.43-32-35.84C71.71,141.9,71.59,136,56,136a8,8,0,0,1,0-16c15.59,0,15.71-5.9,16-20.16C72.28,86.43,72.73,64,104,64a8,8,0,0,1,0,16c-15.59,0-15.71,5.9-16,20.16-.17,8.31-.41,20.09-8,27.84C87.59,135.75,87.83,147.53,88,155.84ZM200,136c-15.59,0-15.71,5.9-16,20.16-.28,13.41-.73,35.84-32,35.84a8,8,0,0,1,0-16c15.59,0,15.71-5.9,16-20.16.17-8.31.41-20.09,8-27.84-7.6-7.75-7.84-19.53-8-27.84C167.71,85.9,167.59,80,152,80a8,8,0,0,1,0-16c31.27,0,31.72,22.43,32,35.84.29,14.26.41,20.16,16,20.16a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M39.91,128a27.68,27.68,0,0,1,9.49,11.13C54,148.62,54,160.51,54,172c0,24.27,1.21,38,26,38a6,6,0,0,1,0,12c-16.88,0-27.81-5.6-33.4-17.13C42,195.38,42,183.49,42,172c0-24.27-1.21-38-26-38a6,6,0,0,1,0-12c24.79,0,26-13.73,26-38,0-11.49,0-23.38,4.6-32.87C52.19,39.6,63.12,34,80,34a6,6,0,0,1,0,12C55.21,46,54,59.73,54,84c0,11.49,0,23.38-4.6,32.87A27.68,27.68,0,0,1,39.91,128ZM240,122c-24.79,0-26-13.73-26-38,0-11.49,0-23.38-4.6-32.87C203.81,39.6,192.88,34,176,34a6,6,0,0,0,0,12c24.79,0,26,13.73,26,38,0,11.49,0,23.38,4.6,32.87A27.68,27.68,0,0,0,216.09,128a27.68,27.68,0,0,0-9.49,11.13C202,148.62,202,160.51,202,172c0,24.27-1.21,38-26,38a6,6,0,0,0,0,12c16.88,0,27.81-5.6,33.4-17.13,4.6-9.49,4.6-21.38,4.6-32.87,0-24.27,1.21-38,26-38a6,6,0,0,0,0-12Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M43.18,128a29.78,29.78,0,0,1,8,10.26c4.8,9.9,4.8,22,4.8,33.74,0,24.31,1,36,24,36a8,8,0,0,1,0,16c-17.48,0-29.32-6.14-35.2-18.26-4.8-9.9-4.8-22-4.8-33.74,0-24.31-1-36-24-36a8,8,0,0,1,0-16c23,0,24-11.69,24-36,0-11.72,0-23.84,4.8-33.74C50.68,38.14,62.52,32,80,32a8,8,0,0,1,0,16C57,48,56,59.69,56,84c0,11.72,0,23.84-4.8,33.74A29.78,29.78,0,0,1,43.18,128ZM240,120c-23,0-24-11.69-24-36,0-11.72,0-23.84-4.8-33.74C205.32,38.14,193.48,32,176,32a8,8,0,0,0,0,16c23,0,24,11.69,24,36,0,11.72,0,23.84,4.8,33.74a29.78,29.78,0,0,0,8,10.26,29.78,29.78,0,0,0-8,10.26c-4.8,9.9-4.8,22-4.8,33.74,0,24.31-1,36-24,36a8,8,0,0,0,0,16c17.48,0,29.32-6.14,35.2-18.26,4.8-9.9,4.8-22,4.8-33.74,0-24.31,1-36,24-36a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M35.89,128C52,136.23,52,155.64,52,172c0,24.8,1.35,40,28,40a4,4,0,0,1,0,8c-36,0-36-26.61-36-48,0-24.8-1.35-40-28-40a4,4,0,0,1,0-8c26.65,0,28-15.2,28-40,0-21.39,0-48,36-48a4,4,0,0,1,0,8C53.35,44,52,59.2,52,84,52,100.36,52,119.77,35.89,128ZM240,124c-26.65,0-28-15.2-28-40,0-21.39,0-48-36-48a4,4,0,0,0,0,8c26.65,0,28,15.2,28,40,0,16.36,0,35.77,16.11,44C204,136.23,204,155.64,204,172c0,24.8-1.35,40-28,40a4,4,0,0,0,0,8c36,0,36-26.61,36-48,0-24.8,1.35-40,28-40a4,4,0,0,0,0-8Z\" }))\n ]\n]);\nexport {\n c as default\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,128,96,208V48Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,40a8,8,0,1,1,8-8A8,8,0,0,1,128,136Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M152,128a24,24,0,1,1-24-24A24,24,0,0,1,152,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,48a16,16,0,1,1,16-16A16,16,0,0,1,128,144Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M156,128a28,28,0,1,1-28-28A28,28,0,0,1,156,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,98a30,30,0,1,0,30,30A30,30,0,0,0,128,98Zm0,48a18,18,0,1,1,18-18A18,18,0,0,1,128,146Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,48a16,16,0,1,1,16-16A16,16,0,0,1,128,144Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,100a28,28,0,1,0,28,28A28,28,0,0,0,128,100Zm0,48a20,20,0,1,1,20-20A20,20,0,0,1,128,148Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,44a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,44Zm0,168a72,72,0,1,1,72-72A72.08,72.08,0,0,1,128,212ZM164.49,99.51a12,12,0,0,1,0,17l-28,28a12,12,0,0,1-17-17l28-28A12,12,0,0,1,164.49,99.51ZM92,16A12,12,0,0,1,104,4h48a12,12,0,0,1,0,24H104A12,12,0,0,1,92,16Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,136a88,88,0,1,1-88-88A88,88,0,0,1,216,136Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM173.66,90.34a8,8,0,0,1,0,11.32l-40,40a8,8,0,0,1-11.32-11.32l40-40A8,8,0,0,1,173.66,90.34ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm45.66,61.66-40,40a8,8,0,0,1-11.32-11.32l40-40a8,8,0,0,1,11.32,11.32ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,42a94,94,0,1,0,94,94A94.11,94.11,0,0,0,128,42Zm0,176a82,82,0,1,1,82-82A82.1,82.1,0,0,1,128,218ZM172.24,91.76a6,6,0,0,1,0,8.48l-40,40a6,6,0,1,1-8.48-8.48l40-40A6,6,0,0,1,172.24,91.76ZM98,16a6,6,0,0,1,6-6h48a6,6,0,0,1,0,12H104A6,6,0,0,1,98,16Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM173.66,90.34a8,8,0,0,1,0,11.32l-40,40a8,8,0,0,1-11.32-11.32l40-40A8,8,0,0,1,173.66,90.34ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,44a92,92,0,1,0,92,92A92.1,92.1,0,0,0,128,44Zm0,176a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,220ZM170.83,93.17a4,4,0,0,1,0,5.66l-40,40a4,4,0,1,1-5.66-5.66l40-40A4,4,0,0,1,170.83,93.17ZM100,16a4,4,0,0,1,4-4h48a4,4,0,0,1,0,8H104A4,4,0,0,1,100,16Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst H = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M160,116h48a20,20,0,0,0,20-20V48a20,20,0,0,0-20-20H160a20,20,0,0,0-20,20V60H128a28,28,0,0,0-28,28v28H76v-4A20,20,0,0,0,56,92H24A20,20,0,0,0,4,112v32a20,20,0,0,0,20,20H56a20,20,0,0,0,20-20v-4h24v28a28,28,0,0,0,28,28h12v12a20,20,0,0,0,20,20h48a20,20,0,0,0,20-20V160a20,20,0,0,0-20-20H160a20,20,0,0,0-20,20v12H128a4,4,0,0,1-4-4V88a4,4,0,0,1,4-4h12V96A20,20,0,0,0,160,116ZM52,140H28V116H52Zm112,24h40v40H164Zm0-112h40V92H164Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M64,112v32a8,8,0,0,1-8,8H24a8,8,0,0,1-8-8V112a8,8,0,0,1,8-8H56A8,8,0,0,1,64,112ZM208,40H160a8,8,0,0,0-8,8V96a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V48A8,8,0,0,0,208,40Zm0,112H160a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M160,112h48a16,16,0,0,0,16-16V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V64H128a24,24,0,0,0-24,24v32H72v-8A16,16,0,0,0,56,96H24A16,16,0,0,0,8,112v32a16,16,0,0,0,16,16H56a16,16,0,0,0,16-16v-8h32v32a24,24,0,0,0,24,24h16v16a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16v16H128a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h16V96A16,16,0,0,0,160,112ZM56,144H24V112H56v32Zm104,16h48v48H160Zm0-112h48V96H160Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M144,96V80H128a8,8,0,0,0-8,8v80a8,8,0,0,0,8,8h16V160a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16v48a16,16,0,0,1-16,16H160a16,16,0,0,1-16-16V192H128a24,24,0,0,1-24-24V136H72v8a16,16,0,0,1-16,16H24A16,16,0,0,1,8,144V112A16,16,0,0,1,24,96H56a16,16,0,0,1,16,16v8h32V88a24,24,0,0,1,24-24h16V48a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V96a16,16,0,0,1-16,16H160A16,16,0,0,1,144,96Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M160,110h48a14,14,0,0,0,14-14V48a14,14,0,0,0-14-14H160a14,14,0,0,0-14,14V66H128a22,22,0,0,0-22,22v34H70V112A14,14,0,0,0,56,98H24a14,14,0,0,0-14,14v32a14,14,0,0,0,14,14H56a14,14,0,0,0,14-14V134h36v34a22,22,0,0,0,22,22h18v18a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V160a14,14,0,0,0-14-14H160a14,14,0,0,0-14,14v18H128a10,10,0,0,1-10-10V88a10,10,0,0,1,10-10h18V96A14,14,0,0,0,160,110ZM58,144a2,2,0,0,1-2,2H24a2,2,0,0,1-2-2V112a2,2,0,0,1,2-2H56a2,2,0,0,1,2,2Zm100,16a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2Zm0-112a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2V96a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M160,112h48a16,16,0,0,0,16-16V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V64H128a24,24,0,0,0-24,24v32H72v-8A16,16,0,0,0,56,96H24A16,16,0,0,0,8,112v32a16,16,0,0,0,16,16H56a16,16,0,0,0,16-16v-8h32v32a24,24,0,0,0,24,24h16v16a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16v16H128a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h16V96A16,16,0,0,0,160,112ZM56,144H24V112H56v32Zm104,16h48v48H160Zm0-112h48V96H160Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M160,108h48a12,12,0,0,0,12-12V48a12,12,0,0,0-12-12H160a12,12,0,0,0-12,12V68H128a20,20,0,0,0-20,20v36H68V112a12,12,0,0,0-12-12H24a12,12,0,0,0-12,12v32a12,12,0,0,0,12,12H56a12,12,0,0,0,12-12V132h40v36a20,20,0,0,0,20,20h20v20a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V160a12,12,0,0,0-12-12H160a12,12,0,0,0-12,12v20H128a12,12,0,0,1-12-12V88a12,12,0,0,1,12-12h20V96A12,12,0,0,0,160,108ZM60,144a4,4,0,0,1-4,4H24a4,4,0,0,1-4-4V112a4,4,0,0,1,4-4H56a4,4,0,0,1,4,4Zm96,16a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4v48a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4Zm0-112a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V96a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4Z\" }))\n ]\n]);\nexport {\n H as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport f from \"../defs/ArrowLeft.es.js\";\nconst r = o.forwardRef((e, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...e, weights: f }));\nr.displayName = \"ArrowLeftIcon\";\nconst s = r;\nexport {\n s as ArrowLeft,\n r as ArrowLeftIcon\n};\n","import * as r from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/ArrowsOutLineVertical.es.js\";\nconst e = r.forwardRef((o, t) => /* @__PURE__ */ r.createElement(a, { ref: t, ...o, weights: i }));\ne.displayName = \"ArrowsOutLineVerticalIcon\";\nconst n = e;\nexport {\n n as ArrowsOutLineVertical,\n e as ArrowsOutLineVerticalIcon\n};\n","import * as r from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport c from \"../defs/BracketsCurly.es.js\";\nconst e = r.forwardRef((o, t) => /* @__PURE__ */ r.createElement(a, { ref: t, ...o, weights: c }));\ne.displayName = \"BracketsCurlyIcon\";\nconst n = e;\nexport {\n n as BracketsCurly,\n e as BracketsCurlyIcon\n};\n","import * as t from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/CaretRight.es.js\";\nconst e = t.forwardRef((o, r) => /* @__PURE__ */ t.createElement(a, { ref: r, ...o, weights: i }));\ne.displayName = \"CaretRightIcon\";\nconst s = e;\nexport {\n s as CaretRight,\n e as CaretRightIcon\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Clock.es.js\";\nconst c = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...e, weights: a }));\nc.displayName = \"ClockIcon\";\nconst n = c;\nexport {\n n as Clock,\n c as ClockIcon\n};\n","import * as o from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/DotOutline.es.js\";\nconst t = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(n, { ref: r, ...e, weights: a }));\nt.displayName = \"DotOutlineIcon\";\nconst c = t;\nexport {\n c as DotOutline,\n t as DotOutlineIcon\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Sparkle.es.js\";\nconst o = e.forwardRef((r, a) => /* @__PURE__ */ e.createElement(t, { ref: a, ...r, weights: m }));\no.displayName = \"SparkleIcon\";\nconst s = o;\nexport {\n s as Sparkle,\n o as SparkleIcon\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Timer.es.js\";\nconst o = e.forwardRef((r, m) => /* @__PURE__ */ e.createElement(t, { ref: m, ...r, weights: a }));\no.displayName = \"TimerIcon\";\nconst s = o;\nexport {\n s as Timer,\n o as TimerIcon\n};\n","import * as e from \"react\";\nimport c from \"../lib/IconBase.es.js\";\nimport a from \"../defs/TreeStructure.es.js\";\nconst r = e.forwardRef((t, o) => /* @__PURE__ */ e.createElement(c, { ref: o, ...t, weights: a }));\nr.displayName = \"TreeStructureIcon\";\nconst n = r;\nexport {\n n as TreeStructure,\n r as TreeStructureIcon\n};\n","import {\n ArrowUUpLeft,\n CaretDown,\n CaretRight,\n Chat,\n DotOutline,\n Gear,\n Robot,\n Sparkle,\n Wrench,\n} from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport type { StudioTrace } from \"../../../../types\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { formatToolValue, formatTraceTime, formatUsage } from \"../shared/format\";\nimport { isRecord } from \"../shared/object\";\nimport { messageText } from \"../shared/transcript\";\nimport type { TraceInspectorKey, TraceObservationItem } from \"../shared/types\";\n\nexport function rawTraceJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2) ?? \"undefined\";\n } catch {\n return String(value);\n }\n}\n\nexport function TraceJsonTree(props: { value: unknown }) {\n return (\n <div className=\"overflow-x-auto rounded-lg border bg-muted p-4 font-mono text-xs leading-5 text-foreground\">\n <JsonNode depth={0} path=\"$\" value={props.value} />\n </div>\n );\n}\n\nconst jsonIndentSize = 16;\nconst jsonDisclosureGutter = 20;\n\nfunction JsonNode(props: {\n arrayIndex?: number | undefined;\n depth: number;\n path: string;\n propertyKey?: string | undefined;\n trailingComma?: boolean | undefined;\n value: unknown;\n}) {\n if (isJsonBranch(props.value)) {\n return (\n <JsonBranch\n arrayIndex={props.arrayIndex}\n depth={props.depth}\n path={props.path}\n propertyKey={props.propertyKey}\n trailingComma={props.trailingComma}\n value={props.value}\n />\n );\n }\n\n return (\n <div\n className=\"min-w-max whitespace-pre\"\n style={{ paddingLeft: `${jsonContentIndent(props.depth)}px` }}\n >\n <JsonNodeLabel arrayIndex={props.arrayIndex} propertyKey={props.propertyKey} />\n <JsonPrimitive value={props.value} />\n {props.trailingComma ? <span className=\"text-foreground\">,</span> : null}\n </div>\n );\n}\n\nfunction JsonBranch(props: {\n arrayIndex?: number | undefined;\n depth: number;\n path: string;\n propertyKey?: string | undefined;\n trailingComma?: boolean | undefined;\n value: Record<string, unknown> | unknown[];\n}) {\n const [open, setOpen] = useState(props.depth === 0);\n const arrayValue = Array.isArray(props.value) ? props.value : undefined;\n const entries =\n arrayValue === undefined\n ? Object.entries(props.value as Record<string, unknown>)\n : arrayValue.map((item, index): [string, unknown] => [String(index), item]);\n const opening = arrayValue === undefined ? \"{\" : \"[\";\n const closing = arrayValue === undefined ? \"}\" : \"]\";\n const collapsed = arrayValue === undefined ? \"{…}\" : \"[…]\";\n\n if (entries.length === 0) {\n return (\n <div\n className=\"min-w-max whitespace-pre\"\n style={{ paddingLeft: `${jsonContentIndent(props.depth)}px` }}\n >\n <JsonNodeLabel arrayIndex={props.arrayIndex} propertyKey={props.propertyKey} />\n <span className=\"text-foreground\">\n {opening}\n {closing}\n {props.trailingComma ? \",\" : \"\"}\n </span>\n </div>\n );\n }\n\n return (\n <div className=\"grid min-w-max\">\n <button\n aria-expanded={open}\n className=\"grid min-w-max grid-cols-[16px_auto] items-center gap-1 rounded-lg py-0.5 pr-2 text-left transition duration-200 hover:bg-transparent hover:text-foreground\"\n onClick={() => setOpen((current) => !current)}\n style={{ paddingLeft: `${props.depth * jsonIndentSize}px` }}\n type=\"button\"\n >\n <span className=\"grid h-4 w-4 place-items-center text-muted-foreground [&_svg]:h-3 [&_svg]:w-3\">\n {open ? (\n <StudioIcon icon={CaretDown} aria-hidden=\"true\" />\n ) : (\n <StudioIcon icon={CaretRight} aria-hidden=\"true\" />\n )}\n </span>\n <span className=\"whitespace-pre\">\n <JsonNodeLabel arrayIndex={props.arrayIndex} propertyKey={props.propertyKey} />\n {open ? (\n <span className=\"text-foreground\">{opening}</span>\n ) : (\n <span className=\"text-muted-foreground\">{collapsed}</span>\n )}\n {!open && props.trailingComma ? <span className=\"text-foreground\">,</span> : null}\n </span>\n </button>\n {open ? (\n <>\n {entries.map(([key, value], index) => (\n <JsonNode\n arrayIndex={arrayValue === undefined ? undefined : Number(key)}\n depth={props.depth + 1}\n key={`${props.path}.${key}`}\n path={`${props.path}.${key}`}\n propertyKey={arrayValue === undefined ? key : undefined}\n trailingComma={index < entries.length - 1}\n value={value}\n />\n ))}\n <div\n className=\"min-w-max whitespace-pre text-foreground\"\n style={{ paddingLeft: `${jsonContentIndent(props.depth)}px` }}\n >\n {closing}\n {props.trailingComma ? \",\" : \"\"}\n </div>\n </>\n ) : null}\n </div>\n );\n}\n\nfunction jsonContentIndent(depth: number): number {\n return depth * jsonIndentSize + jsonDisclosureGutter;\n}\n\nfunction JsonNodeLabel(props: {\n arrayIndex?: number | undefined;\n propertyKey?: string | undefined;\n}) {\n if (props.propertyKey !== undefined) {\n return (\n <>\n <span className=\"code-keyword\">{JSON.stringify(props.propertyKey)}</span>\n <span className=\"text-foreground\">: </span>\n </>\n );\n }\n if (props.arrayIndex !== undefined) {\n return (\n <>\n <span className=\"text-muted-foreground\">[{props.arrayIndex}]</span>\n <span className=\"text-foreground\"> </span>\n </>\n );\n }\n return null;\n}\n\nfunction JsonPrimitive(props: { value: unknown }) {\n if (typeof props.value === \"string\") {\n return <span className=\"code-string\">{JSON.stringify(props.value)}</span>;\n }\n if (typeof props.value === \"number\") {\n return <span className=\"code-number\">{String(props.value)}</span>;\n }\n if (typeof props.value === \"boolean\") {\n return <span className=\"code-literal\">{String(props.value)}</span>;\n }\n if (props.value === null) {\n return <span className=\"code-comment\">null</span>;\n }\n if (props.value === undefined) {\n return <span className=\"text-muted-foreground\">undefined</span>;\n }\n return <span className=\"text-foreground\">{rawTraceJson(props.value)}</span>;\n}\n\nfunction isJsonBranch(value: unknown): value is Record<string, unknown> | unknown[] {\n return Array.isArray(value) || isRecord(value);\n}\n\nexport function jsonSyntaxTokens(\n json: string,\n): Array<{ text: string; type: JsonTokenType; start: number }> {\n const tokenPattern =\n /(\"(?:\\\\u[\\da-fA-F]{4}|\\\\[^u]|[^\\\\\"])*\"(?=\\s*:)|\"(?:\\\\u[\\da-fA-F]{4}|\\\\[^u]|[^\\\\\"])*\"|-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?|\\btrue\\b|\\bfalse\\b|\\bnull\\b)/g;\n const tokens: Array<{ text: string; type: JsonTokenType; start: number }> = [];\n let cursor = 0;\n for (const match of json.matchAll(tokenPattern)) {\n const text = match[0];\n const index = match.index ?? 0;\n if (index > cursor) {\n tokens.push({ text: json.slice(cursor, index), type: \"plain\", start: cursor });\n }\n tokens.push({\n text,\n type: jsonTokenType(text, json.slice(index + text.length)),\n start: index,\n });\n cursor = index + text.length;\n }\n if (cursor < json.length) {\n tokens.push({ text: json.slice(cursor), type: \"plain\", start: cursor });\n }\n return tokens;\n}\n\ntype JsonTokenType = \"plain\" | \"key\" | \"string\" | \"number\" | \"boolean\" | \"null\";\n\nfunction jsonTokenType(text: string, followingText: string): JsonTokenType {\n if (text.startsWith('\"')) {\n return followingText.trimStart().startsWith(\":\") ? \"key\" : \"string\";\n }\n if (text === \"true\" || text === \"false\") {\n return \"boolean\";\n }\n if (text === \"null\") {\n return \"null\";\n }\n return \"number\";\n}\n\nexport function isNeutralTraceRow(row: { label: string }): boolean {\n return row.label === \"Message Id\";\n}\n\nexport function TraceRowIcon(props: { label: string }) {\n const className = \"h-3.5 w-3.5 shrink-0\";\n switch (props.label) {\n case \"System prompt\":\n return <StudioIcon icon={Gear} aria-hidden=\"true\" className={className} />;\n case \"Prompt\":\n return <StudioIcon icon={Chat} aria-hidden=\"true\" className={className} />;\n case \"Output\":\n case \"Assistant output\":\n return <StudioIcon icon={ArrowUUpLeft} aria-hidden=\"true\" className={className} />;\n default:\n return null;\n }\n}\n\nexport function plainTraceValue(\n title: string,\n value: unknown,\n): Array<{ label: string; text: string }> {\n if (title === \"Output\") {\n const outputRows = plainTraceOutput(value);\n if (outputRows.length > 0) {\n return outputRows;\n }\n }\n const messageRows = plainTraceInput(value, title);\n if (messageRows.length > 0) {\n return messageRows;\n }\n if (!isRecord(value)) {\n return [{ label: title, text: plainTraceText(value) }];\n }\n\n const rows: Array<{ label: string; text: string }> = [];\n for (const [key, item] of Object.entries(value)) {\n const nestedMessages = plainTraceInput(item, key);\n if (nestedMessages.length > 0) {\n rows.push(...nestedMessages);\n continue;\n }\n rows.push({ label: traceLabelText(key), text: plainTraceText(item) });\n }\n return rows.length > 0 ? rows : [{ label: title, text: \"Empty object\" }];\n}\n\nfunction plainTraceOutput(value: unknown): Array<{ label: string; text: string }> {\n if (!isRecord(value)) {\n return [];\n }\n const rows: Array<{ label: string; text: string }> = [];\n const choiceRows = plainTraceInput(value.choice, \"choice\");\n rows.push(...choiceRows);\n if (typeof value.messageId === \"string\" && value.messageId.length > 0) {\n rows.push({ label: \"Message Id\", text: value.messageId });\n }\n return rows;\n}\n\nfunction plainTraceInput(\n value: unknown,\n parentKey?: string,\n): Array<{ label: string; text: string }> {\n if (typeof value === \"string\" && parentKey === undefined) {\n return [{ label: \"Value\", text: value }];\n }\n if (Array.isArray(value)) {\n if (parentKey === \"chatHistory\") {\n return chatHistoryRows(value);\n }\n if (parentKey === \"history\") {\n return conversationHistoryRows(value);\n }\n return value\n .map((item, index) => ({\n label: traceArrayItemLabel(item, index, parentKey),\n text: messageText(item) || formatToolValue(item),\n }))\n .filter((item) => item.text.length > 0);\n }\n if (!isRecord(value)) {\n return [];\n }\n\n const chatHistory = Array.isArray(value.chatHistory) ? value.chatHistory : undefined;\n if (chatHistory !== undefined) {\n const rows = systemPromptRows(value);\n rows.push(...plainTraceInput(chatHistory, \"chatHistory\"));\n return rows;\n }\n\n if (Array.isArray(value.prompt)) {\n return plainTraceInput(value.prompt, \"prompt\");\n }\n\n const rows: Array<{ label: string; text: string }> = [];\n rows.push(...systemPromptRows(value));\n\n const history = Array.isArray(value.history) ? value.history : [];\n if (history.length > 0) {\n rows.push(...plainTraceInput(history, \"history\"));\n }\n\n const promptText = messageText(value.prompt);\n if (promptText.length > 0) {\n rows.push({ label: history.length > 0 ? \"Current prompt\" : \"Prompt\", text: promptText });\n }\n\n return rows;\n}\n\nfunction chatHistoryRows(value: unknown[]): Array<{ label: string; text: string }> {\n const messages = value\n .map((item, index) => ({\n label: traceArrayItemLabel(item, index, \"chatHistory\"),\n text: messageText(item) || formatToolValue(item),\n }))\n .filter((item) => item.text.length > 0);\n const current = messages.at(-1);\n const history = messages.slice(0, -1);\n const rows: Array<{ label: string; text: string }> = [];\n if (history.length > 0) {\n rows.push({\n label: `Conversation history (${history.length})`,\n text: history.map((item, index) => `${index + 1}. ${item.label}\\n${item.text}`).join(\"\\n\\n\"),\n });\n }\n if (current !== undefined) {\n rows.push({\n label: history.length > 0 ? \"Current prompt\" : \"Prompt\",\n text: current.text,\n });\n }\n return rows;\n}\n\nfunction conversationHistoryRows(value: unknown[]): Array<{ label: string; text: string }> {\n const messages = value\n .map((item, index) => ({\n label: traceArrayItemLabel(item, index, \"history\"),\n text: messageText(item) || formatToolValue(item),\n }))\n .filter((item) => item.text.length > 0);\n if (messages.length === 0) {\n return [];\n }\n return [\n {\n label: `Conversation history (${messages.length})`,\n text: messages.map((item, index) => `${index + 1}. ${item.label}\\n${item.text}`).join(\"\\n\\n\"),\n },\n ];\n}\n\nfunction traceArrayItemLabel(item: unknown, index: number, parentKey: string | undefined): string {\n if (isRecord(item)) {\n const type = typeof item.type === \"string\" ? item.type : undefined;\n if (parentKey === \"choice\") {\n if (type === \"text\") {\n return \"Assistant output\";\n }\n if (type === \"reasoning\") {\n return \"Reasoning\";\n }\n }\n if (type === \"reasoning\") {\n return \"Reasoning\";\n }\n if (typeof item.role === \"string\") {\n return traceLabelText(item.role);\n }\n if (type !== undefined) {\n return traceLabelText(type);\n }\n }\n\n const prefix = parentKey === undefined ? \"Item\" : `${traceLabelText(parentKey)} item`;\n return `${prefix} ${index + 1}`;\n}\n\nfunction traceLabelText(value: string): string {\n return value\n .replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .trim()\n .replace(/\\b\\w/g, (letter) => letter.toUpperCase());\n}\n\nfunction systemPromptRows(value: Record<string, unknown>): Array<{ label: string; text: string }> {\n const instructions = value.instructions;\n if (typeof instructions !== \"string\" || instructions.trim().length === 0) {\n return [];\n }\n return [{ label: \"System prompt\", text: instructions }];\n}\n\nfunction plainTraceText(value: unknown): string {\n if (value === undefined) {\n return \"undefined\";\n }\n if (value === null) {\n return \"null\";\n }\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\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 traceTurns(trace: StudioTrace): Array<{\n turn: number;\n observations: TraceObservationItem[];\n durationMs?: number;\n}> {\n const grouped = new Map<number, TraceObservationItem[]>();\n for (const observation of trace.observations) {\n const turn = Number.isFinite(observation.turn) ? observation.turn : grouped.size + 1;\n grouped.set(turn, [...(grouped.get(turn) ?? []), observation]);\n }\n return [...grouped.entries()]\n .sort(([left], [right]) => left - right)\n .map(([turn, observations]) => ({\n turn,\n observations,\n durationMs: observations.reduce(\n (total, observation) => total + (observation.durationMs ?? 0),\n 0,\n ),\n }));\n}\n\nexport type TraceObservationNode = {\n observation: TraceObservationItem;\n children: TraceObservationNode[];\n};\n\nexport function traceObservationTree(observations: TraceObservationItem[]): TraceObservationNode[] {\n const nodes = new Map<string, TraceObservationNode>();\n for (const observation of observations) {\n nodes.set(observation.id, { observation, children: [] });\n }\n\n const roots: TraceObservationNode[] = [];\n for (const observation of observations) {\n const node = nodes.get(observation.id);\n if (node === undefined) {\n continue;\n }\n const parentId = observation.parentObservationId;\n const parent = parentId === undefined ? undefined : nodes.get(parentId);\n if (parent === undefined) {\n roots.push(node);\n } else {\n parent.children.push(node);\n }\n }\n return roots;\n}\n\nexport function selectedTraceDetail(\n trace: StudioTrace,\n turns: Array<{ turn: number; observations: TraceObservationItem[]; durationMs?: number }>,\n activeKey: TraceInspectorKey,\n): {\n title: string;\n tone: \"trace\" | \"agent\" | \"turn\" | StudioTrace[\"observations\"][number][\"kind\"];\n status: string;\n startedAt: string;\n durationMs: number | undefined;\n firstDeltaMs: number | undefined;\n usage: string;\n input?: unknown;\n output?: unknown;\n error?: unknown;\n metadata: unknown;\n} {\n if (activeKey === \"agent\") {\n return {\n title: \"agent.run\",\n tone: \"agent\",\n status: trace.status,\n startedAt: formatTraceTime(trace.startedAt),\n durationMs: trace.durationMs,\n firstDeltaMs: firstDeltaMsFromObservations(trace.observations),\n usage: formatUsage(trace.usage),\n input: trace.input,\n output: trace.output,\n error: trace.error,\n metadata: traceDetailMetadata(trace),\n };\n }\n if (activeKey.startsWith(\"turn:\")) {\n const turnNumber = Number(activeKey.slice(\"turn:\".length));\n const turn = turns.find((item) => item.turn === turnNumber);\n return {\n title: `turn.${Number.isFinite(turnNumber) ? turnNumber : 1}`,\n tone: \"turn\",\n status: observationStatusSummary(turn?.observations ?? []),\n startedAt: formatTraceTime(turn?.observations[0]?.startedAt ?? trace.startedAt),\n durationMs: turn?.durationMs,\n firstDeltaMs: firstDeltaMsFromObservations(turn?.observations ?? []),\n usage: turnUsageText(turn?.observations ?? []),\n input: turn?.observations[0]?.input,\n output: turn?.observations.at(-1)?.output,\n metadata: turnDetailMetadata(turnNumber, turn?.observations ?? []),\n };\n }\n if (activeKey.startsWith(\"observation:\")) {\n const observationId = activeKey.slice(\"observation:\".length);\n const observation = trace.observations.find((item) => item.id === observationId);\n if (observation !== undefined) {\n return {\n title: traceObservationLabel(observation),\n tone: observation.kind,\n status: observation.status,\n startedAt: formatTraceTime(observation.startedAt),\n durationMs: observation.durationMs,\n firstDeltaMs: firstDeltaMsFromMetadata(observation.metadata),\n usage: observationUsageText(observation),\n input: observation.input,\n output: observation.output,\n error: observation.error,\n metadata: observationDetailMetadata(observation),\n };\n }\n }\n return {\n title: trace.name ?? \"Agent\",\n tone: \"trace\",\n status: trace.status,\n startedAt: formatTraceTime(trace.startedAt),\n durationMs: trace.durationMs,\n firstDeltaMs: firstDeltaMsFromObservations(trace.observations),\n usage: formatUsage(trace.usage),\n input: trace.input,\n output: trace.output,\n error: trace.error,\n metadata: traceDetailMetadata(trace),\n };\n}\n\nexport function traceDetailMetadata(trace: StudioTrace): Record<string, unknown> {\n const metadata = isRecord(trace.metadata) ? trace.metadata : {};\n const traceGroup = compactTraceMetadata({\n status: trace.status,\n traceId: trace.trace?.traceId ?? trace.id,\n observationId: trace.trace?.observationId,\n sessionId: trace.sessionId,\n observationCount: trace.observationCount,\n messageCount: traceMessageCount(metadata.messages),\n startedAt: trace.startedAt,\n endedAt: trace.endedAt,\n durationMs: trace.durationMs,\n });\n return compactTraceMetadata({\n ...metadata,\n status: trace.status,\n traceId: trace.trace?.traceId ?? trace.id,\n observationId: trace.trace?.observationId,\n sessionId: trace.sessionId,\n observationCount: trace.observationCount,\n messageCount: traceMessageCount(metadata.messages),\n startedAt: trace.startedAt,\n endedAt: trace.endedAt,\n durationMs: trace.durationMs,\n trace: isRecord(metadata.trace) ? metadata.trace : traceGroup,\n });\n}\n\nfunction turnDetailMetadata(\n turn: number,\n observations: TraceObservationItem[],\n): Record<string, unknown> {\n return compactTraceMetadata({\n turn,\n observationCount: observations.length,\n generationCount: observations.filter((observation) => observation.kind === \"generation\").length,\n toolCount: observations.filter((observation) => observation.kind === \"tool\").length,\n agentCount: observations.filter((observation) => observation.kind === \"agent\").length,\n firstDeltaMs: firstDeltaMsFromObservations(observations),\n status: observationStatusSummary(observations),\n startedAt: observations[0]?.startedAt,\n endedAt: observations.at(-1)?.endedAt,\n });\n}\n\nexport function observationDetailMetadata(\n observation: TraceObservationItem,\n): Record<string, unknown> {\n const metadata = isRecord(observation.metadata) ? observation.metadata : {};\n const base = compactTraceMetadata({\n ...metadata,\n status: observation.status,\n kind: observation.kind,\n turn: observation.turn,\n parentObservationId: observation.parentObservationId ?? null,\n startedAt: observation.startedAt,\n endedAt: observation.endedAt ?? null,\n durationMs: observation.durationMs,\n });\n return compactTraceMetadata({\n ...base,\n trace: isRecord(base.trace)\n ? base.trace\n : compactTraceMetadata({\n status: observation.status,\n kind: observation.kind,\n turn: observation.turn,\n parentObservationId: observation.parentObservationId ?? null,\n startedAt: observation.startedAt,\n endedAt: observation.endedAt ?? null,\n durationMs: observation.durationMs,\n }),\n modelInfo: isRecord(base.modelInfo) ? base.modelInfo : modelInfoMetadata(base),\n modelCall: isRecord(base.modelCall) ? base.modelCall : modelCallMetadata(base),\n response: isRecord(base.response) ? base.response : responseMetadata(base),\n tools: isRecord(base.tools) ? base.tools : toolsMetadata(base),\n timing: isRecord(base.timing) ? base.timing : timingMetadata(base),\n });\n}\n\nfunction modelInfoMetadata(metadata: Record<string, unknown>): Record<string, unknown> | undefined {\n const group = compactTraceMetadata({\n provider: metadata.provider,\n modelId: metadata.modelId,\n });\n return Object.keys(group).length === 0 ? undefined : group;\n}\n\nfunction modelCallMetadata(metadata: Record<string, unknown>): Record<string, unknown> | undefined {\n const request = compactTraceMetadata({\n messageCount: metadata.historyCount,\n documentCount: metadata.documentCount,\n toolCount: metadata.toolCount,\n toolNames: metadata.toolNames,\n temperature: metadata.temperature,\n maxTokens: metadata.maxTokens,\n toolChoice: metadata.toolChoice,\n hasOutputSchema: metadata.hasOutputSchema,\n providerOptionKeys: metadata.providerOptionKeys,\n });\n const group = compactTraceMetadata({\n request: Object.keys(request).length === 0 ? undefined : request,\n providerRequest: metadata.providerRequest,\n });\n return Object.keys(group).length === 0 ? undefined : group;\n}\n\nfunction responseMetadata(metadata: Record<string, unknown>): Record<string, unknown> | undefined {\n const group = compactTraceMetadata({\n messageId: metadata.messageId,\n usage: metadata.usage,\n providerResponse: metadata.providerResponse,\n });\n return Object.keys(group).length === 0 ? undefined : group;\n}\n\nfunction toolsMetadata(metadata: Record<string, unknown>): Record<string, unknown> | undefined {\n const group = compactTraceMetadata({\n count: metadata.toolCount,\n names: metadata.toolNames,\n toolChoice: metadata.toolChoice,\n internalCallId: metadata.internalCallId,\n toolCallId: metadata.toolCallId,\n skipped: metadata.skipped,\n description: metadata.toolDescription,\n parameterKeys: metadata.parameterKeys,\n requiredParameterKeys: metadata.requiredParameterKeys,\n approvalRequired: metadata.approvalRequired,\n mcpServerName: metadata.mcpServerName,\n argumentBytes: metadata.argumentBytes,\n resultBytes: metadata.resultBytes,\n });\n return Object.keys(group).length === 0 ? undefined : group;\n}\n\nfunction timingMetadata(metadata: Record<string, unknown>): Record<string, unknown> | undefined {\n const group = compactTraceMetadata({\n firstDeltaMs: metadata.firstDeltaMs,\n durationMs: metadata.durationMs,\n startedAt: metadata.startedAt,\n endedAt: metadata.endedAt,\n });\n return Object.keys(group).length === 0 ? undefined : group;\n}\n\nexport function observationStatusSummary(observations: TraceObservationItem[]): string {\n if (observations.length === 0) {\n return \"empty\";\n }\n if (observations.some((observation) => observation.status === \"error\")) {\n return \"error\";\n }\n if (observations.some((observation) => observation.status === \"cancelled\")) {\n return \"cancelled\";\n }\n if (observations.some((observation) => observation.status === \"running\")) {\n return \"running\";\n }\n return \"success\";\n}\n\nfunction traceMessageCount(value: unknown): number | undefined {\n return Array.isArray(value) ? value.length : undefined;\n}\n\nexport function compactTraceMetadata(values: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined));\n}\n\nexport function traceObservationLabel(observation: TraceObservationItem): string {\n if (observation.kind === \"agent\") {\n return observation.name;\n }\n return observation.kind === \"tool\" ? `tool.${observation.name}` : observation.name;\n}\n\nexport function firstDeltaMsFromObservations(\n observations: TraceObservationItem[],\n): number | undefined {\n for (const observation of observations) {\n const firstDeltaMs = firstDeltaMsFromMetadata(observation.metadata);\n if (firstDeltaMs !== undefined) {\n return firstDeltaMs;\n }\n }\n return undefined;\n}\n\nfunction firstDeltaMsFromMetadata(metadata: unknown): number | undefined {\n if (!isRecord(metadata) || typeof metadata.firstDeltaMs !== \"number\") {\n return undefined;\n }\n return metadata.firstDeltaMs;\n}\n\nexport function TraceToneIcon(props: {\n tone: \"trace\" | \"agent\" | \"turn\" | StudioTrace[\"observations\"][number][\"kind\"];\n}) {\n switch (props.tone) {\n case \"trace\":\n return <StudioIcon icon={DotOutline} aria-hidden=\"true\" />;\n case \"agent\":\n return <StudioIcon icon={Robot} aria-hidden=\"true\" />;\n case \"turn\":\n return <StudioIcon icon={Robot} aria-hidden=\"true\" />;\n case \"generation\":\n return <StudioIcon icon={Sparkle} aria-hidden=\"true\" />;\n case \"tool\":\n return <StudioIcon icon={Wrench} aria-hidden=\"true\" />;\n default:\n return <StudioIcon icon={DotOutline} aria-hidden=\"true\" />;\n }\n}\n\nexport function traceToneIconClass(\n tone: \"trace\" | \"agent\" | \"turn\" | StudioTrace[\"observations\"][number][\"kind\"],\n): string {\n switch (tone) {\n case \"trace\":\n return \"bg-foreground text-background\";\n case \"agent\":\n return \"bg-tone-agent text-tone-text\";\n case \"turn\":\n return \"bg-tone-agent text-tone-text\";\n case \"generation\":\n return \"bg-tone-generation text-tone-text\";\n case \"tool\":\n return \"bg-tone-tool text-tone-text\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function observationUsageText(observation: TraceObservationItem): string {\n if (!isRecord(observation.output) || !isRecord(observation.output.usage)) {\n return \"\";\n }\n return formatUsageValue(observation.output.usage);\n}\n\nexport function turnUsageText(observations: TraceObservationItem[]): string {\n const totals = observations\n .map(observationUsageText)\n .filter((usage) => usage.length > 0)\n .join(\" + \");\n return totals;\n}\n\nfunction formatUsageValue(value: Record<string, unknown>): string {\n const input = typeof value.inputTokens === \"number\" ? value.inputTokens : 0;\n const output = typeof value.outputTokens === \"number\" ? value.outputTokens : 0;\n const total = typeof value.totalTokens === \"number\" ? value.totalTokens : input + output;\n if (total === 0) {\n return \"\";\n }\n return `${input} -> ${output} (Σ ${total})`;\n}\n","import type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 overflow-hidden rounded-none border border-border bg-card py-4 text-base text-card-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"grid gap-1 px-4\", className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"px-4\", className)} {...props} />;\n}\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/scroll-area.tsx\nimport * as React2 from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\n\n// src/use-state-machine.ts\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n__name(useStateMachine, \"useStateMachine\");\n\n// src/scroll-area.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ScrollAreaType = {\n Auto: \"auto\",\n Always: \"always\",\n Scroll: \"scroll\",\n Hover: \"hover\"\n};\nvar Orientation = {\n Vertical: \"vertical\",\n Horizontal: \"horizontal\"\n};\nvar Direction = {\n LTR: \"ltr\",\n RTL: \"rtl\"\n};\nvar SCROLL_AREA_NAME = \"ScrollArea\";\nvar [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\nvar [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);\nvar ScrollArea = /* @__PURE__ */ React2.forwardRef(\n /* @__PURE__ */ __name(function ScrollArea2(props, forwardedRef) {\n const {\n __scopeScrollArea,\n type = ScrollAreaType.Hover,\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React2.useState(null);\n const [viewport, setViewport] = React2.useState(null);\n const [content, setContent] = React2.useState(null);\n const [scrollbarX, setScrollbarX] = React2.useState(null);\n const [scrollbarY, setScrollbarY] = React2.useState(null);\n const [cornerWidth, setCornerWidth] = React2.useState(0);\n const [cornerHeight, setCornerHeight] = React2.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React2.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React2.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, setScrollArea);\n const direction = useDirection(dir);\n return /* @__PURE__ */ jsx(\n ScrollAreaProvider,\n {\n scope: __scopeScrollArea,\n type,\n dir: direction,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n ...scrollAreaProps,\n ref: composedRefs,\n style: {\n position: \"relative\",\n // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n \"--radix-scroll-area-corner-width\": cornerWidth + \"px\",\n \"--radix-scroll-area-corner-height\": cornerHeight + \"px\",\n ...props.style\n }\n }\n )\n }\n );\n }, \"ScrollArea\")\n);\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar Slottable = createSlottable(VIEWPORT_NAME);\nvar ScrollAreaViewport = /* @__PURE__ */ React2.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function ScrollAreaViewport2(props, forwardedRef) {\n const { __scopeScrollArea, children, nonce, disableImplicitContentElement, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n const canSlotOntoChildren = React2.isValidElement(children);\n if (IS_DEVELOPMENT) {\n const hasWarnedRef = React2.useRef(false);\n const shouldWarn = props.asChild === true && !disableImplicitContentElement && !canSlotOntoChildren;\n React2.useEffect(() => {\n if (shouldWarn && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n `${VIEWPORT_NAME}: \\`asChild\\` expects a single React element child, so its props have been applied to the implicitly rendered content element instead. Wrap the children in a single element, or opt into \\`disableImplicitContentElement\\` and render a \\`ScrollArea.Content\\` inside the viewport.`\n );\n }\n }, [shouldWarn]);\n }\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(ScrollAreaViewportStyle, { nonce }),\n /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-scroll-area-viewport\": \"\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n /**\n * We don't support `visible` because the intention is to have at least one scrollbar\n * if this component is used and `visible` will behave like `auto` in that case\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description\n *\n * We don't handle `auto` because the intention is for the native implementation\n * to be hidden if using this component. We just want to ensure the node is scrollable\n * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n * the browser from having to work out whether to render native scrollbars or not,\n * we tell it to with the intention of hiding them in CSS.\n */\n overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n ...props.style\n },\n children: disableImplicitContentElement ? children : canSlotOntoChildren ? /* @__PURE__ */ jsx(Slottable, { child: children, children: (slottable) => /* @__PURE__ */ jsx(\n ScrollAreaContent,\n {\n __scopeScrollArea,\n children: slottable\n }\n ) }) : (\n // When `children` isn't a single element there is nothing for\n // `Slot` to redirect onto, so target the wrapper. This mirrors the\n // old [incorrect] behavior, but it's better than throwing on a\n // patch update.\n /* @__PURE__ */ jsx(Slottable, { children: /* @__PURE__ */ jsx(\n ScrollAreaContent,\n {\n __scopeScrollArea,\n children\n }\n ) })\n )\n }\n )\n ] });\n }, \"ScrollAreaViewport\")\n);\nvar ScrollAreaViewportStyle = /* @__PURE__ */ React2.memo(\n /* @__PURE__ */ __name(function ScrollAreaViewportStyle2({ nonce }) {\n return /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n );\n }, \"ScrollAreaViewportStyle\"),\n (prevProps, nextProps) => prevProps.nonce === nextProps.nonce\n);\nvar CONTENT_NAME = \"ScrollAreaContent\";\nvar ScrollAreaContent = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaContent2(props, forwardedRef) {\n const { __scopeScrollArea, children, ...contentProps } = props;\n const context = useScrollAreaContext(CONTENT_NAME, __scopeScrollArea);\n const composedRefs = useComposedRefs(forwardedRef, context.onContentChange);\n return (\n // `display: table` ensures our content div will match the size of its\n // children in both horizontal and vertical axis so we can determine if\n // scroll width/height changed and recalculate thumb sizes. This doesn't\n // account for children with *percentage* widths that change. We'll wait to\n // see what use-cases consumers come up with there before trying to resolve\n // it.\n /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...contentProps,\n ref: composedRefs,\n style: { minWidth: \"100%\", display: \"table\", ...props.style },\n children\n }\n )\n );\n}, \"ScrollAreaContent\"));\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = /* @__PURE__ */ React2.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function ScrollAreaScrollbar2(props, forwardedRef) {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n const isHorizontal = props.orientation === Orientation.Horizontal;\n React2.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n return context.type === ScrollAreaType.Hover ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === ScrollAreaType.Scroll ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === ScrollAreaType.Auto ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === ScrollAreaType.Always ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef, \"data-state\": \"visible\" }) : null;\n }, \"ScrollAreaScrollbar\")\n);\nvar ScrollAreaScrollbarHover = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarHover2(props, forwardedRef) {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React2.useState(false);\n React2.useEffect(() => {\n const scrollArea = context.scrollArea;\n let hideTimer = 0;\n if (scrollArea) {\n const handlePointerEnter = /* @__PURE__ */ __name(() => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n }, \"handlePointerEnter\");\n const handlePointerLeave = /* @__PURE__ */ __name(() => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n }, \"handlePointerLeave\");\n scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n return () => {\n window.clearTimeout(hideTimer);\n scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n };\n }\n }, [context.scrollArea, context.scrollHideDelay]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarAuto,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n}, \"ScrollAreaScrollbarHover\"));\nvar ScrollAreaScrollbarScroll = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarScroll2(props, forwardedRef) {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const isHorizontal = props.orientation === Orientation.Horizontal;\n const debounceScrollEnd = useDebounceCallback(() => send(\"SCROLL_END\"), 100);\n const [state, send] = useStateMachine(\"hidden\", {\n hidden: {\n SCROLL: \"scrolling\"\n },\n scrolling: {\n SCROLL_END: \"idle\",\n POINTER_ENTER: \"interacting\"\n },\n interacting: {\n SCROLL: \"interacting\",\n POINTER_LEAVE: \"idle\"\n },\n idle: {\n HIDE: \"hidden\",\n SCROLL: \"scrolling\",\n POINTER_ENTER: \"interacting\"\n }\n });\n React2.useEffect(() => {\n if (state === \"idle\") {\n const hideTimer = window.setTimeout(() => send(\"HIDE\"), context.scrollHideDelay);\n return () => window.clearTimeout(hideTimer);\n }\n }, [state, context.scrollHideDelay, send]);\n React2.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = /* @__PURE__ */ __name(() => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n }, \"handleScroll\");\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [context.viewport, isHorizontal, send, debounceScrollEnd]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || state !== \"hidden\", children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": state === \"hidden\" ? \"hidden\" : \"visible\",\n ...scrollbarProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send(\"POINTER_ENTER\")),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send(\"POINTER_LEAVE\"))\n }\n ) });\n}, \"ScrollAreaScrollbarScroll\"));\nvar ScrollAreaScrollbarAuto = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarAuto2(props, forwardedRef) {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React2.useState(false);\n const isHorizontal = props.orientation === Orientation.Horizontal;\n const handleResize = useDebounceCallback(() => {\n if (context.viewport) {\n const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n setVisible(isHorizontal ? isOverflowX : isOverflowY);\n }\n }, 10);\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n}, \"ScrollAreaScrollbarAuto\"));\nvar ScrollAreaScrollbarVisible = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarVisible2(props, forwardedRef) {\n const { orientation = Orientation.Vertical, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React2.useRef(null);\n const pointerOffsetRef = React2.useRef(0);\n const [sizes, setSizes] = React2.useState({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n const commonProps = {\n ...scrollbarProps,\n sizes,\n onSizesChange: setSizes,\n hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n onThumbChange: /* @__PURE__ */ __name((thumb) => thumbRef.current = thumb, \"onThumbChange\"),\n onThumbPointerUp: /* @__PURE__ */ __name(() => pointerOffsetRef.current = 0, \"onThumbPointerUp\"),\n onThumbPointerDown: /* @__PURE__ */ __name((pointerPos) => pointerOffsetRef.current = pointerPos, \"onThumbPointerDown\")\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n __name(getScrollPosition, \"getScrollPosition\");\n if (orientation === Orientation.Horizontal) {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarX,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollLeft;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollLeft = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) {\n context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n }\n }\n }\n );\n }\n if (orientation === Orientation.Vertical) {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarY,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollTop = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n }\n }\n );\n }\n return null;\n}, \"ScrollAreaScrollbarVisible\"));\nvar ScrollAreaScrollbarX = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarX2(props, forwardedRef) {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"horizontal\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n bottom: 0,\n left: context.dir === Direction.RTL ? \"var(--radix-scroll-area-corner-width)\" : 0,\n right: context.dir === Direction.LTR ? \"var(--radix-scroll-area-corner-width)\" : 0,\n \"--radix-scroll-area-thumb-width\": getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollLeft + event.deltaX;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollWidth,\n viewport: context.viewport.offsetWidth,\n scrollbar: {\n size: ref.current.clientWidth,\n paddingStart: toInt(computedStyle.paddingLeft),\n paddingEnd: toInt(computedStyle.paddingRight)\n }\n });\n }\n }\n }\n );\n}, \"ScrollAreaScrollbarX\"));\nvar ScrollAreaScrollbarY = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarY2(props, forwardedRef) {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"vertical\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n top: 0,\n right: context.dir === Direction.LTR ? 0 : void 0,\n left: context.dir === Direction.RTL ? 0 : void 0,\n bottom: \"var(--radix-scroll-area-corner-height)\",\n \"--radix-scroll-area-thumb-height\": getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollTop + event.deltaY;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollHeight,\n viewport: context.viewport.offsetHeight,\n scrollbar: {\n size: ref.current.clientHeight,\n paddingStart: toInt(computedStyle.paddingTop),\n paddingEnd: toInt(computedStyle.paddingBottom)\n }\n });\n }\n }\n }\n );\n}, \"ScrollAreaScrollbarY\"));\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarImpl2(props, forwardedRef) {\n const {\n __scopeScrollArea,\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n const [scrollbar, setScrollbar] = React2.useState(null);\n const composeRefs = useComposedRefs(forwardedRef, setScrollbar);\n const rectRef = React2.useRef(null);\n const prevWebkitUserSelectRef = React2.useRef(\"\");\n const viewport = context.viewport;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useCallbackRef(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebounceCallback(onResize, 10);\n function handleDragScroll(event) {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n }\n __name(handleDragScroll, \"handleDragScroll\");\n React2.useEffect(() => {\n const handleWheel = /* @__PURE__ */ __name((event) => {\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n }, \"handleWheel\");\n document.addEventListener(\"wheel\", handleWheel, { passive: false });\n return () => document.removeEventListener(\"wheel\", handleWheel, { passive: false });\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n React2.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(\n ScrollbarProvider,\n {\n scope: __scopeScrollArea,\n scrollbar,\n hasThumb,\n onThumbChange: useCallbackRef(onThumbChange),\n onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...scrollbarProps,\n ref: composeRefs,\n style: { position: \"absolute\", ...scrollbarProps.style },\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar.getBoundingClientRect();\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = \"none\";\n if (context.viewport) context.viewport.style.scrollBehavior = \"auto\";\n handleDragScroll(event);\n }\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target;\n if (element.hasPointerCapture(event.pointerId)) {\n element.releasePointerCapture(event.pointerId);\n }\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n if (context.viewport) context.viewport.style.scrollBehavior = \"\";\n rectRef.current = null;\n })\n }\n )\n }\n );\n}, \"ScrollAreaScrollbarImpl\"));\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = /* @__PURE__ */ React2.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function ScrollAreaThumb2(props, forwardedRef) {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });\n }, \"ScrollAreaThumb\")\n);\nvar ScrollAreaThumbImpl = /* @__PURE__ */ React2.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function ScrollAreaThumbImpl2(props, forwardedRef) {\n const { __scopeScrollArea, style, ...thumbProps } = props;\n const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n const { onThumbPositionChange } = scrollbarContext;\n const composedRef = useComposedRefs(forwardedRef, scrollbarContext.onThumbChange);\n const removeUnlinkedScrollListenerRef = React2.useRef(void 0);\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = void 0;\n }\n }, 100);\n React2.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n const handleScroll = /* @__PURE__ */ __name(() => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n }, \"handleScroll\");\n onThumbPositionChange();\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": scrollbarContext.hasThumb ? \"visible\" : \"hidden\",\n ...thumbProps,\n ref: composedRef,\n style: {\n width: \"var(--radix-scroll-area-thumb-width)\",\n height: \"var(--radix-scroll-area-thumb-height)\",\n ...style\n },\n onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {\n const thumb = event.target;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContext.onThumbPointerDown({ x, y });\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)\n }\n );\n }, \"ScrollAreaThumbImpl\")\n);\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = /* @__PURE__ */ React2.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function ScrollAreaCorner2(props, forwardedRef) {\n const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n const hasCorner = context.type !== ScrollAreaType.Scroll && hasBothScrollbarsVisible;\n return hasCorner ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;\n }, \"ScrollAreaCorner\")\n);\nvar ScrollAreaCornerImpl = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaCornerImpl2(props, forwardedRef) {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React2.useState(0);\n const [height, setHeight] = React2.useState(0);\n const hasSize = Boolean(width && height);\n const { onCornerWidthChange, onCornerHeightChange } = context;\n useResizeObserver(context.scrollbarX, () => {\n const height2 = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height2);\n setHeight(height2);\n });\n useResizeObserver(context.scrollbarY, () => {\n const width2 = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width2);\n setWidth(width2);\n });\n React2.useEffect(() => {\n return () => {\n onCornerWidthChange(0);\n onCornerHeightChange(0);\n };\n }, [onCornerWidthChange, onCornerHeightChange]);\n return hasSize ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...cornerProps,\n ref: forwardedRef,\n style: {\n width,\n height,\n position: \"absolute\",\n right: context.dir === Direction.LTR ? 0 : void 0,\n left: context.dir === Direction.RTL ? 0 : void 0,\n bottom: 0,\n ...props.style\n }\n }\n ) : null;\n}, \"ScrollAreaCornerImpl\"));\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\n__name(toInt, \"toInt\");\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\n__name(getThumbRatio, \"getThumbRatio\");\nfunction getThumbSize(sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n return Math.max(thumbSize, 18);\n}\n__name(getThumbSize, \"getThumbSize\");\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = Direction.LTR) {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === Direction.LTR ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);\n return interpolate(pointerPos);\n}\n__name(getScrollPositionFromPointer, \"getScrollPositionFromPointer\");\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = Direction.LTR) {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === Direction.LTR ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\n__name(getThumbOffsetFromScroll, \"getThumbOffsetFromScroll\");\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n__name(linearScale, \"linearScale\");\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n__name(isScrollingWithinScrollbarBounds, \"isScrollingWithinScrollbarBounds\");\nvar addUnlinkedScrollListener = /* @__PURE__ */ __name((node, handler = () => {\n}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n }\n __name(loop, \"loop\");\n loop();\n return () => window.cancelAnimationFrame(rAF);\n}, \"addUnlinkedScrollListener\");\nfunction useDebounceCallback(callback, delay) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React2.useRef(0);\n React2.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React2.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n__name(useDebounceCallback, \"useDebounceCallback\");\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\n__name(useResizeObserver, \"useResizeObserver\");\nexport {\n ScrollAreaContent as Content,\n ScrollAreaCorner as Corner,\n ScrollArea as Root,\n ScrollArea,\n ScrollAreaContent,\n ScrollAreaCorner,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n ScrollAreaScrollbar as Scrollbar,\n ScrollAreaThumb as Thumb,\n ScrollAreaViewport as Viewport,\n createScrollAreaScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root className={cn(\"relative overflow-hidden\", className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:ring-3 focus-visible:ring-ring\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n","import { isRecord } from \"../shared/object\";\n\nexport type TracePayloadField = \"input\" | \"output\" | \"metadata\" | \"error\";\n\nexport type TracePayloadMessage = {\n key: string;\n role: string;\n content: string;\n toolCalls: TracePayloadTool[];\n};\n\nexport type TracePayloadTool = {\n key: string;\n name: string;\n description?: string;\n value: unknown;\n};\n\nexport type TracePayloadAnalysis = {\n messages: TracePayloadMessage[];\n tools: TracePayloadTool[];\n additional: unknown;\n hasMessages: boolean;\n};\n\nexport type TraceStructuredEntry = {\n path: string;\n label: string;\n value: unknown;\n};\n\nconst messageKeys = [\n \"messages\",\n \"inputMessages\",\n \"input_messages\",\n \"outputMessages\",\n \"output_messages\",\n \"chatHistory\",\n \"chat_history\",\n \"history\",\n \"prompt\",\n \"output\",\n \"choice\",\n] as const;\nconst toolKeys = [\"tools\", \"functions\", \"toolSchemas\", \"tool_schemas\"] as const;\n\nexport function analyzeTracePayload(\n value: unknown,\n field: \"input\" | \"output\",\n): TracePayloadAnalysis {\n const messages: TracePayloadMessage[] = [];\n const tools: TracePayloadTool[] = [];\n const defaultRole = field === \"output\" ? \"assistant\" : \"user\";\n\n if (Array.isArray(value)) {\n const unrecognized: unknown[] = [];\n value.forEach((item, index) => {\n const message = parseMessage(item, `message:${index}`, defaultRole);\n if (message === undefined) unrecognized.push(item);\n else messages.push(message);\n });\n return {\n messages,\n tools,\n additional: unrecognized.length > 0 ? unrecognized : undefined,\n hasMessages: messages.length > 0,\n };\n }\n\n if (!isRecord(value)) {\n return { messages, tools, additional: value, hasMessages: false };\n }\n\n const directMessage = parseMessage(value, \"message:direct\");\n if (directMessage !== undefined) {\n const messageFields = new Set([\n \"role\",\n \"type\",\n \"content\",\n \"text\",\n \"message\",\n \"result\",\n \"output\",\n \"value\",\n \"tool_calls\",\n \"toolCalls\",\n \"toolName\",\n \"input\",\n \"arguments\",\n ]);\n const additionalEntries = Object.entries(value).filter(([key]) => !messageFields.has(key));\n return {\n messages: [directMessage],\n tools,\n additional: additionalEntries.length > 0 ? Object.fromEntries(additionalEntries) : undefined,\n hasMessages: true,\n };\n }\n\n const consumed = new Set<string>();\n if (typeof value.instructions === \"string\" && value.instructions.trim().length > 0) {\n messages.push({\n key: \"instructions\",\n role: \"system\",\n content: value.instructions,\n toolCalls: [],\n });\n consumed.add(\"instructions\");\n }\n\n for (const key of messageKeys) {\n const candidate = value[key];\n if (Array.isArray(candidate)) {\n const parsed = candidate\n .map((item, index) => parseMessage(item, `${key}:${index}`, defaultRole))\n .filter((message): message is TracePayloadMessage => message !== undefined);\n if (parsed.length > 0) {\n messages.push(...parsed);\n consumed.add(key);\n }\n continue;\n }\n const parsed = parseMessage(candidate, `${key}:direct`, defaultRole);\n if (parsed !== undefined) {\n messages.push(parsed);\n consumed.add(key);\n }\n }\n\n if (Array.isArray(value.choices)) {\n const parsed = value.choices\n .map((choice, index) => {\n if (!isRecord(choice)) return undefined;\n return parseMessage(\n choice.message ?? choice.delta ?? choice,\n `choices:${index}`,\n \"assistant\",\n );\n })\n .filter((message): message is TracePayloadMessage => message !== undefined);\n if (parsed.length > 0) {\n messages.push(...parsed);\n consumed.add(\"choices\");\n }\n }\n\n for (const key of toolKeys) {\n const candidate = value[key];\n if (!Array.isArray(candidate)) continue;\n tools.push(...candidate.map((tool, index) => parseTool(tool, `${key}:${index}`)));\n consumed.add(key);\n }\n\n const additionalEntries = Object.entries(value).filter(([key]) => !consumed.has(key));\n return {\n messages,\n tools,\n additional: additionalEntries.length > 0 ? Object.fromEntries(additionalEntries) : undefined,\n hasMessages: messages.length > 0,\n };\n}\n\nexport function flattenTracePayload(value: unknown): TraceStructuredEntry[] {\n const entries: TraceStructuredEntry[] = [];\n const visit = (current: unknown, path: string) => {\n if (Array.isArray(current)) {\n if (current.length === 0) entries.push({ path, label: path || \"Value\", value: current });\n current.forEach((item, index) => visit(item, path ? `${path}.${index}` : String(index)));\n return;\n }\n if (isRecord(current)) {\n const nested = Object.entries(current);\n if (nested.length === 0) entries.push({ path, label: path || \"Value\", value: current });\n nested.forEach(([key, item]) => visit(item, path ? `${path}.${key}` : key));\n return;\n }\n entries.push({\n path,\n label: path ? tracePayloadLabel(path.split(\".\").at(-1) ?? path) : \"Value\",\n value: current,\n });\n };\n visit(value, \"\");\n return entries;\n}\n\nexport function compactTracePayloadValue(value: unknown): string {\n if (value === null) return \"null\";\n if (value === undefined) return \"undefined\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return tracePayloadJson(value);\n}\n\nexport function tracePayloadJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2) ?? \"undefined\";\n } catch {\n return String(value);\n }\n}\n\nexport function tracePayloadLabel(value: string): string {\n return value\n .replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .trim()\n .replace(/\\b\\w/g, (letter) => letter.toUpperCase());\n}\n\nfunction parseMessage(\n value: unknown,\n key: string,\n defaultRole?: string,\n): TracePayloadMessage | undefined {\n if (!isRecord(value)) return undefined;\n const role = messageRole(value) ?? (hasContentShape(value) ? defaultRole : undefined);\n if (role === undefined) return undefined;\n\n const content = messageContent(\n value.content ?? value.text ?? value.message ?? value.result ?? value.output ?? value.value,\n );\n const toolCalls = [\n ...toolCallsFrom(value.tool_calls, `${key}:tool-call`),\n ...toolCallsFrom(value.toolCalls, `${key}:tool-calls`),\n ...toolCallsFromContent(value.content, `${key}:content-tool-call`),\n ];\n if (isToolPayload(value)) toolCalls.push(parseTool(value, `${key}:tool`));\n return { key, role, content, toolCalls };\n}\n\nfunction hasContentShape(value: Record<string, unknown>): boolean {\n return (\n \"content\" in value ||\n \"text\" in value ||\n \"message\" in value ||\n \"result\" in value ||\n \"output\" in value ||\n \"value\" in value ||\n \"tool_calls\" in value ||\n \"toolCalls\" in value ||\n isToolPayload(value)\n );\n}\n\nfunction messageRole(value: Record<string, unknown>): string | undefined {\n if (typeof value.role === \"string\") return value.role.toLowerCase();\n if (value.type === \"reasoning\") return \"reasoning\";\n if (isToolPayload(value)) return \"tool\";\n return undefined;\n}\n\nfunction messageContent(value: unknown): string {\n if (value === null || value === undefined) return \"\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n if (Array.isArray(value)) {\n return value\n .map((item) => {\n if (!isRecord(item)) return messageContent(item);\n if (isToolPayload(item)) return \"\";\n if (typeof item.text === \"string\") return item.text;\n if (typeof item.content === \"string\") return item.content;\n if (item.type === \"image\" || item.type === \"image_url\") return \"[Image]\";\n if (item.type === \"file\") return \"[File]\";\n if (item.type === \"audio\") return \"[Audio]\";\n return compactTracePayloadValue(item);\n })\n .filter(Boolean)\n .join(\"\\n\");\n }\n if (isRecord(value)) {\n if (typeof value.text === \"string\") return value.text;\n if (typeof value.content === \"string\") return value.content;\n }\n return compactTracePayloadValue(value);\n}\n\nfunction toolCallsFrom(value: unknown, key: string): TracePayloadTool[] {\n if (!Array.isArray(value)) return [];\n return value.map((tool, index) => parseTool(tool, `${key}:${index}`));\n}\n\nfunction toolCallsFromContent(value: unknown, key: string): TracePayloadTool[] {\n if (!Array.isArray(value)) return [];\n return value\n .filter((item) => isRecord(item) && isToolPayload(item))\n .map((tool, index) => parseTool(tool, `${key}:${index}`));\n}\n\nfunction parseTool(value: unknown, key: string): TracePayloadTool {\n if (!isRecord(value)) return { key, name: \"Tool\", value };\n const fn = isRecord(value.function) ? value.function : undefined;\n const name =\n stringValue(value.toolName) ??\n stringValue(value.name) ??\n stringValue(fn?.name) ??\n (typeof value.type === \"string\" ? tracePayloadLabel(value.type) : \"Tool\");\n const description = stringValue(value.description) ?? stringValue(fn?.description);\n const payload =\n fn?.arguments ??\n value.arguments ??\n value.input ??\n value.result ??\n value.output ??\n value.value ??\n value.content ??\n value;\n const tool: TracePayloadTool = { key, name, value: parseJsonString(payload) };\n if (description !== undefined) tool.description = description;\n return tool;\n}\n\nfunction parseJsonString(value: unknown): unknown {\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction isToolPayload(value: Record<string, unknown>): boolean {\n return [\n \"tool_call\",\n \"server_tool_call\",\n \"tool_result\",\n \"server_tool_result\",\n \"tool-call\",\n \"server-tool-call\",\n \"tool-result\",\n \"server-tool-result\",\n ].includes(String(value.type));\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n","import { CaretRight, Check, Copy, MagnifyingGlass } from \"@phosphor-icons/react\";\nimport { useId, useMemo, useState } from \"react\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { Input } from \"../../components/ui/input\";\nimport { cn } from \"../../lib/utils\";\nimport { isRecord } from \"../shared/object\";\nimport { jsonSyntaxTokens, TraceJsonTree } from \"./trace-browser-detail\";\nimport {\n analyzeTracePayload,\n compactTracePayloadValue,\n flattenTracePayload,\n type TracePayloadField,\n type TracePayloadMessage,\n type TracePayloadTool,\n tracePayloadJson,\n tracePayloadLabel,\n} from \"./trace-payload\";\n\ntype TracePayloadMode = \"readable\" | \"structure\" | \"table\" | \"raw\";\ntype ViewOption = { id: TracePayloadMode; label: string };\n\nconst largePayloadPreviewCharacters = 100_000;\n\nexport function TracePayloadSection(props: {\n field: TracePayloadField;\n title: string;\n value: unknown;\n}) {\n const serialized = useMemo(() => tracePayloadJson(props.value), [props.value]);\n const tooLarge = serialized.length > largePayloadPreviewCharacters;\n const analysis = useMemo(\n () =>\n (props.field !== \"input\" && props.field !== \"output\") || tooLarge\n ? undefined\n : analyzeTracePayload(props.value, props.field),\n [props.field, props.value, tooLarge],\n );\n const options = useMemo<ViewOption[]>(() => {\n if (tooLarge) return [{ id: \"raw\", label: props.field === \"metadata\" ? \"JSON\" : \"Raw\" }];\n if (props.field === \"metadata\") {\n return [\n { id: \"table\", label: \"Table\" },\n { id: \"raw\", label: \"JSON\" },\n ];\n }\n if (analysis?.hasMessages) {\n return [\n { id: \"readable\", label: props.field === \"output\" ? \"Response\" : \"Messages\" },\n { id: \"structure\", label: \"Structure\" },\n { id: \"raw\", label: \"Raw\" },\n ];\n }\n return [\n { id: \"structure\", label: \"Structure\" },\n { id: \"raw\", label: \"Raw\" },\n ];\n }, [analysis?.hasMessages, props.field, tooLarge]);\n const [preferredMode, setPreferredMode] = useState<TracePayloadMode>(\n () => options[0]?.id ?? \"raw\",\n );\n const mode = options.some((option) => option.id === preferredMode)\n ? preferredMode\n : (options[0]?.id ?? \"raw\");\n\n const content =\n props.value === null || props.value === undefined ? (\n <EmptyPayload />\n ) : tooLarge ? (\n <RawJsonBlock json={serialized} title={props.title} truncated />\n ) : mode === \"raw\" ? (\n <RawJsonBlock json={serialized} title={props.title} />\n ) : mode === \"table\" ? (\n <MetadataTable value={props.value} />\n ) : mode === \"readable\" && analysis?.hasMessages ? (\n <ReadableMessages\n additional={analysis.additional}\n messages={analysis.messages}\n tools={analysis.tools}\n />\n ) : (\n <TraceJsonTree value={props.value} />\n );\n\n if (props.field === \"metadata\") {\n const fieldCount =\n tooLarge || props.value === null || props.value === undefined\n ? 0\n : flattenTracePayload(props.value).length;\n return (\n <details className=\"group grid min-w-0 gap-3\">\n <summary className=\"flex cursor-pointer list-none items-center gap-2 rounded-sm py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden\">\n <StudioIcon\n icon={CaretRight}\n aria-hidden=\"true\"\n className=\"size-3.5 text-muted-foreground transition-transform group-open:rotate-90\"\n />\n <h3 className=\"m-0 text-sm font-semibold\">{props.title}</h3>\n <span className=\"ml-auto font-mono text-[10px] uppercase tracking-wide text-muted-foreground\">\n {tooLarge ? \"Large payload\" : `${fieldCount} ${fieldCount === 1 ? \"field\" : \"fields\"}`}\n </span>\n </summary>\n <div className=\"grid gap-3 pl-5\">\n <PayloadModeSwitch options={options} value={mode} onChange={setPreferredMode} />\n {content}\n </div>\n </details>\n );\n }\n\n return (\n <section className=\"grid min-w-0 gap-3\" aria-label={`${props.title} payload`}>\n <header className=\"flex min-w-0 items-center gap-3\">\n <h3 className=\"m-0 text-sm font-semibold\">{props.title}</h3>\n <div className=\"ml-auto\">\n <PayloadModeSwitch options={options} value={mode} onChange={setPreferredMode} />\n </div>\n </header>\n {content}\n </section>\n );\n}\n\nfunction PayloadModeSwitch(props: {\n options: ViewOption[];\n value: TracePayloadMode;\n onChange: (mode: TracePayloadMode) => void;\n}) {\n if (props.options.length < 2) return null;\n return (\n <fieldset\n className=\"flex h-7 shrink-0 items-center rounded-md border p-0.5\"\n aria-label=\"Field view\"\n >\n {props.options.map((option) => (\n <button\n aria-pressed={props.value === option.id}\n className={cn(\n \"h-5 rounded px-2 font-mono text-[10px] font-medium uppercase tracking-wide text-muted-foreground\",\n props.value === option.id && \"bg-accent text-foreground\",\n )}\n key={option.id}\n type=\"button\"\n onClick={() => props.onChange(option.id)}\n >\n {option.label}\n </button>\n ))}\n </fieldset>\n );\n}\n\nfunction ReadableMessages(props: {\n messages: TracePayloadMessage[];\n tools: TracePayloadTool[];\n additional: unknown;\n}) {\n return (\n <div className=\"grid min-w-0 gap-5\">\n <div className=\"grid gap-5\">\n {props.messages.map((message) => (\n <article\n className=\"grid min-w-0 grid-cols-[6.5rem_minmax(0,1fr)] gap-3 max-sm:grid-cols-1\"\n key={message.key}\n >\n <div className=\"pt-0.5\">\n <RoleBadge role={message.role} />\n </div>\n <div className=\"grid min-w-0 gap-3\">\n {message.content.length > 0 ? (\n <p className=\"m-0 whitespace-pre-wrap break-words text-sm leading-6\">\n {message.content}\n </p>\n ) : message.toolCalls.length === 0 ? (\n <span className=\"text-sm italic text-muted-foreground\">No text content</span>\n ) : null}\n {message.toolCalls.map((tool) => (\n <ToolDisclosure key={tool.key} tool={tool} label=\"Tool call\" />\n ))}\n </div>\n </article>\n ))}\n </div>\n {props.tools.length > 0 ? (\n <section>\n <p className=\"mb-3 font-mono text-[10px] font-semibold uppercase tracking-wide text-muted-foreground\">\n Available tools · {props.tools.length}\n </p>\n <div className=\"grid gap-2\">\n {props.tools.map((tool) => (\n <ToolDisclosure key={tool.key} tool={tool} label=\"Definition\" />\n ))}\n </div>\n </section>\n ) : null}\n {props.additional !== undefined ? (\n <details className=\"group/additional\">\n <summary className=\"flex cursor-pointer list-none items-center gap-2 text-xs font-medium text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden\">\n <StudioIcon\n icon={CaretRight}\n aria-hidden=\"true\"\n className=\"size-3 transition-transform group-open/additional:rotate-90\"\n />\n Additional fields\n </summary>\n <div className=\"mt-3 border-l pl-4\">\n <StructuredPayload value={props.additional} />\n </div>\n </details>\n ) : null}\n </div>\n );\n}\n\nfunction RoleBadge({ role }: { role: string }) {\n return (\n <Badge\n className={cn(\n \"border-hair bg-status-neutral-fill text-status-neutral-ink\",\n role === \"tool\" && \"border-tone-tool bg-transparent text-tone-tool\",\n role === \"assistant\" && \"text-foreground\",\n )}\n >\n {tracePayloadLabel(role)}\n </Badge>\n );\n}\n\nfunction ToolDisclosure(props: { tool: TracePayloadTool; label: string }) {\n return (\n <details className=\"border-l-2 border-tone-tool pl-3\">\n <summary className=\"cursor-pointer list-none py-1 text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden\">\n <span className=\"font-mono text-[10px] uppercase tracking-wide text-muted-foreground\">\n {props.label}\n </span>{\" \"}\n <span className=\"font-semibold\">{props.tool.name}</span>\n {props.tool.description ? (\n <span className=\"ml-2 text-muted-foreground\">{props.tool.description}</span>\n ) : null}\n </summary>\n <div className=\"py-2\">\n <StructuredPayload value={props.tool.value} />\n </div>\n </details>\n );\n}\n\nfunction MetadataTable({ value }: { value: unknown }) {\n const searchId = useId();\n const entries = useMemo(() => flattenTracePayload(value), [value]);\n const [query, setQuery] = useState(\"\");\n const normalized = query.trim().toLowerCase();\n const visible = normalized\n ? entries.filter(\n (entry) =>\n entry.path.toLowerCase().includes(normalized) ||\n compactTracePayloadValue(entry.value).toLowerCase().includes(normalized),\n )\n : entries;\n return (\n <div className=\"grid gap-2\">\n <label className=\"relative block\" htmlFor={searchId}>\n <StudioIcon\n icon={MagnifyingGlass}\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground\"\n />\n <Input\n aria-label=\"Search metadata\"\n className=\"h-8 pl-8 font-mono text-xs\"\n id={searchId}\n placeholder=\"Search metadata\"\n value={query}\n onChange={(event) => setQuery(event.currentTarget.value)}\n />\n </label>\n <div className=\"min-w-0 overflow-hidden\">\n {visible.length > 0 ? (\n <dl className=\"grid gap-1\">\n {visible.map((entry) => (\n <div\n className=\"grid min-w-0 grid-cols-[minmax(8rem,0.42fr)_minmax(0,1fr)] gap-4 py-2 text-xs max-sm:grid-cols-1 max-sm:gap-1\"\n key={entry.path}\n >\n <dt className=\"break-all font-mono text-muted-foreground\" title={entry.path}>\n {entry.path || entry.label}\n </dt>\n <dd className=\"m-0 whitespace-pre-wrap break-words font-mono\">\n {compactTracePayloadValue(entry.value)}\n </dd>\n </div>\n ))}\n </dl>\n ) : (\n <p className=\"py-6 text-center text-sm text-muted-foreground\">No matching fields</p>\n )}\n </div>\n </div>\n );\n}\n\nfunction StructuredPayload({ value }: { value: unknown }) {\n if (Array.isArray(value)) {\n if (value.length === 0) return <PrimitiveValue value={value} />;\n return (\n <div className=\"grid gap-1\">\n {value.map((item, index) => (\n <StructuredRow\n depth={0}\n key={`${index}:${tracePayloadJson(item).slice(0, 80)}`}\n label={String(index)}\n value={item}\n />\n ))}\n </div>\n );\n }\n if (isRecord(value)) {\n const entries = Object.entries(value);\n if (entries.length === 0) return <PrimitiveValue value={value} />;\n return (\n <div className=\"grid gap-1\">\n {entries.map(([key, item]) => (\n <StructuredRow depth={0} key={key} label={key} value={item} />\n ))}\n </div>\n );\n }\n return <PrimitiveValue value={value} />;\n}\n\nfunction StructuredRow(props: { label: string; value: unknown; depth: number }) {\n const nested = Array.isArray(props.value) || isRecord(props.value);\n if (!nested) {\n return (\n <div className=\"grid min-w-0 grid-cols-[minmax(7rem,0.34fr)_minmax(0,1fr)] gap-4 py-2 text-xs max-sm:grid-cols-1 max-sm:gap-1\">\n <span className=\"break-all font-mono text-muted-foreground\">{props.label}</span>\n <PrimitiveValue value={props.value} />\n </div>\n );\n }\n const entries = Array.isArray(props.value)\n ? props.value.map((item, index) => [String(index), item] as const)\n : isRecord(props.value)\n ? Object.entries(props.value)\n : [];\n return (\n <details open={props.depth < 1} className=\"group/row py-2\">\n <summary className=\"flex cursor-pointer list-none items-center gap-2 font-mono text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden\">\n <StudioIcon\n icon={CaretRight}\n aria-hidden=\"true\"\n className=\"size-3 text-muted-foreground transition-transform group-open/row:rotate-90\"\n />\n <span>{props.label}</span>\n <span className=\"text-[10px] text-muted-foreground\">\n {Array.isArray(props.value) ? `${entries.length} items` : `${entries.length} fields`}\n </span>\n </summary>\n <div className=\"ml-1.5 mt-2 grid gap-1 border-l pl-4\">\n {entries.length > 0 ? (\n entries.map(([key, item]) => (\n <StructuredRow\n depth={props.depth + 1}\n key={`${props.label}:${key}`}\n label={key}\n value={item}\n />\n ))\n ) : (\n <PrimitiveValue value={props.value} />\n )}\n </div>\n </details>\n );\n}\n\nfunction PrimitiveValue({ value }: { value: unknown }) {\n return (\n <span\n className={cn(\n \"min-w-0 whitespace-pre-wrap break-words font-mono text-xs\",\n (value === null || value === undefined) && \"code-comment\",\n typeof value === \"string\" && \"code-string\",\n typeof value === \"number\" && \"code-number\",\n typeof value === \"boolean\" && \"code-literal\",\n )}\n >\n {compactTracePayloadValue(value)}\n </span>\n );\n}\n\nfunction RawJsonBlock(props: { json: string; title: string; truncated?: boolean }) {\n const [copied, setCopied] = useState(false);\n const preview = props.truncated ? props.json.slice(0, largePayloadPreviewCharacters) : props.json;\n return (\n <div className=\"relative min-w-0 rounded-lg border bg-muted\">\n {props.truncated ? (\n <p className=\"m-0 border-b px-3 py-2 text-xs text-muted-foreground\">\n Large payload · showing the first {largePayloadPreviewCharacters.toLocaleString()}{\" \"}\n characters\n </p>\n ) : null}\n <Button\n aria-label={`Copy ${props.title} JSON`}\n className=\"absolute right-2 top-2 z-10\"\n size=\"icon\"\n title={copied ? \"Copied\" : \"Copy JSON\"}\n type=\"button\"\n variant=\"secondary\"\n onClick={() => {\n const write = navigator.clipboard?.writeText(props.json);\n if (write === undefined) return;\n void write.then(\n () => {\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1_500);\n },\n () => undefined,\n );\n }}\n >\n <StudioIcon icon={copied ? Check : Copy} aria-hidden=\"true\" />\n </Button>\n <pre className=\"m-0 max-h-[32rem] overflow-auto p-4 pr-12 font-mono text-xs leading-5 text-foreground\">\n {jsonSyntaxTokens(preview).map((token) => (\n <span\n className={cn(\n token.type === \"key\" && \"code-keyword\",\n token.type === \"string\" && \"code-string\",\n token.type === \"number\" && \"code-number\",\n token.type === \"boolean\" && \"code-literal\",\n token.type === \"null\" && \"code-comment\",\n )}\n key={token.start}\n >\n {token.text}\n </span>\n ))}\n {props.truncated ? \"\\n… display truncated\" : null}\n </pre>\n </div>\n );\n}\n\nfunction EmptyPayload() {\n return (\n <div className=\"border-y border-dashed px-4 py-6 text-center text-sm text-muted-foreground\">\n No data captured\n </div>\n );\n}\n","import {\n ArrowLeft,\n ArrowSquareOut,\n ArrowsOutLineVertical,\n BracketsCurly,\n CaretRight,\n Clock,\n MagnifyingGlass,\n Timer,\n TreeStructure,\n} from \"@phosphor-icons/react\";\nimport { type ReactNode, useEffect, useMemo, useState } from \"react\";\nimport {\n firstDeltaMsFromObservations,\n observationUsageText,\n selectedTraceDetail,\n type TraceObservationNode,\n TraceToneIcon,\n traceObservationLabel,\n traceObservationTree,\n traceToneIconClass,\n traceTurns,\n} from \"./trace-browser-detail\";\n\nexport {\n compactTraceMetadata,\n firstDeltaMsFromObservations,\n jsonSyntaxTokens,\n observationDetailMetadata,\n observationStatusSummary,\n observationUsageText,\n plainTraceValue,\n rawTraceJson,\n selectedTraceDetail,\n traceDetailMetadata,\n traceObservationLabel,\n traceObservationTree,\n traceTurns,\n turnUsageText,\n} from \"./trace-browser-detail\";\n\nimport type { StudioConfig, StudioTrace } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { Card } from \"../../components/ui/card\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { Input } from \"../../components/ui/input\";\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\nimport { StudioEmptyState } from \"../../components/ui/studio\";\nimport { cn } from \"../../lib/utils\";\nimport {\n emptyFallback,\n formatDuration,\n formatTraceDate,\n formatUsage,\n traceAgentLabel,\n} from \"../shared/format\";\nimport { isRecord } from \"../shared/object\";\nimport type { TraceInspectorKey, TraceLoadState, TraceObservationItem } from \"../shared/types\";\nimport { TracePayloadSection } from \"./trace-payload-section\";\n\nexport function TraceBrowser(props: {\n agents: StudioConfig[\"agents\"];\n traces: StudioTrace[];\n tracesEnabled: boolean;\n traceLoadState: TraceLoadState;\n selectedTraceId: string;\n traceSessionDetailId: string | undefined;\n onRefresh: () => void;\n onSelectTrace: (traceId: string) => void;\n onShowSessionTraces: (sessionId: string) => void;\n}) {\n if (!props.tracesEnabled) {\n return (\n <StudioEmptyState\n className=\"h-full\"\n title=\"Tracing unavailable\"\n text=\"This Studio runtime does not expose traces.\"\n />\n );\n }\n\n const selectedTrace =\n props.selectedTraceId.length === 0\n ? undefined\n : props.traces.find((trace) => trace.id === props.selectedTraceId);\n const selectedSessionTraces =\n selectedTrace === undefined || props.traceSessionDetailId !== selectedTrace.sessionId\n ? []\n : props.traces.filter((trace) => trace.sessionId === selectedTrace.sessionId);\n\n return (\n <section className=\"grid h-full min-h-0 w-full content-stretch\" aria-label=\"Tracing\">\n {props.selectedTraceId.length === 0 ? (\n <TraceTable\n agents={props.agents}\n traces={props.traces}\n traceLoadState={props.traceLoadState}\n onSelectTrace={props.onSelectTrace}\n />\n ) : (\n <TraceDetailRoute\n selectedTrace={selectedTrace}\n selectedSessionTraces={selectedSessionTraces}\n selectedTraceId={props.selectedTraceId}\n traceLoadState={props.traceLoadState}\n onBack={() => props.onSelectTrace(\"\")}\n onShowSessionTraces={props.onShowSessionTraces}\n />\n )}\n </section>\n );\n}\n\nfunction TraceTable(props: {\n agents: StudioConfig[\"agents\"];\n traces: StudioTrace[];\n traceLoadState: TraceLoadState;\n onSelectTrace: (traceId: string) => void;\n}) {\n if (props.traces.length === 0) {\n return (\n <StudioEmptyState\n title={props.traceLoadState === \"loading\" ? \"Loading traces\" : \"No traces found\"}\n text={\n props.traceLoadState === \"loading\"\n ? \"Reading runtime trace records.\"\n : \"Run an agent to populate the tracing timeline.\"\n }\n />\n );\n }\n\n return (\n <Card\n className=\"min-h-0 overflow-hidden rounded-none border-0 bg-background p-0\"\n aria-label=\"Traces\"\n >\n <ScrollArea className=\"h-full min-h-0\">\n <div className=\"grid min-w-280\">\n <div className=\"sticky top-0 z-10 grid min-h-11 grid-cols-[minmax(220px,1.3fr)_150px_120px_120px_120px_120px_110px_90px] items-center gap-4 border-b bg-header px-4 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur\">\n <span>Trace</span>\n <span>Session</span>\n <span>Agent</span>\n <span>Status</span>\n <span>Started</span>\n <span>Duration</span>\n <span>First delta</span>\n <span>Events</span>\n </div>\n {props.traces.map((trace) => (\n <Button\n className=\"grid h-auto min-h-14 w-full grid-cols-[minmax(220px,1.3fr)_150px_120px_120px_120px_120px_110px_90px] items-center justify-start gap-4 whitespace-normal rounded-none border-0 border-b bg-transparent px-4 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:bg-transparent hover:text-foreground\"\n type=\"button\"\n variant=\"ghost\"\n key={trace.id}\n onClick={() => props.onSelectTrace(trace.id)}\n >\n <span className=\"min-w-0 truncate text-xs font-medium text-muted-foreground\">\n {trace.id}\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">{trace.sessionId}</span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {traceAgentLabel(props.agents, trace)}\n </span>\n <TraceStatusBadge status={trace.status} />\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {formatTraceDate(trace.startedAt)}\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {emptyFallback(formatDuration(trace.durationMs))}\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {emptyFallback(formatDuration(firstDeltaMsFromObservations(trace.observations)))}\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium tabular-nums\">\n {trace.observationCount}\n </span>\n </Button>\n ))}\n </div>\n </ScrollArea>\n </Card>\n );\n}\n\nfunction TraceDetailRoute(props: {\n selectedTrace: StudioTrace | undefined;\n selectedSessionTraces: StudioTrace[];\n selectedTraceId: string;\n traceLoadState: TraceLoadState;\n onBack: () => void;\n onShowSessionTraces: (sessionId: string) => void;\n}) {\n const summaryTone = props.selectedTrace?.observations[0]?.kind ?? \"trace\";\n return (\n <div className=\"grid h-full min-h-0 min-w-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background\">\n <header className=\"shrink-0 border-b bg-background px-4 py-3\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <Button\n aria-label=\"Back to traces\"\n className=\"mt-0.5 text-muted-foreground hover:text-foreground\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onBack}\n >\n <StudioIcon icon={ArrowLeft} aria-hidden=\"true\" />\n </Button>\n <span\n className={cn(\n \"grid size-9 shrink-0 place-items-center rounded-lg [&_svg]:size-4\",\n traceToneIconClass(summaryTone),\n )}\n >\n <TraceToneIcon tone={summaryTone} />\n </span>\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <h1 className=\"truncate text-lg font-semibold tracking-tight\">\n {traceDisplayName(props.selectedTrace)}\n </h1>\n {props.selectedTrace ? (\n <TraceStatusBadge status={props.selectedTrace.status} />\n ) : null}\n </div>\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground\">\n {props.selectedTrace === undefined ? (\n props.traceLoadState === \"loading\" ? (\n \"Loading trace\"\n ) : (\n \"Trace not found\"\n )\n ) : (\n <>\n <span>{formatTraceDate(props.selectedTrace.startedAt)}</span>\n <span aria-hidden=\"true\">·</span>\n <span className=\"font-mono\" title={props.selectedTraceId}>\n {props.selectedTraceId}\n </span>\n </>\n )}\n </div>\n </div>\n </div>\n {props.selectedTrace ? (\n <dl className=\"mt-3 grid grid-cols-2 gap-x-6 gap-y-3 border-t pt-3 sm:grid-cols-4\">\n <HeaderMetric label=\"Duration\" value={formatDuration(props.selectedTrace.durationMs)} />\n <HeaderMetric label=\"Spans\" value={String(props.selectedTrace.observationCount)} />\n <HeaderMetric\n label=\"Tokens\"\n value={emptyFallback(formatUsage(props.selectedTrace.usage))}\n />\n <HeaderMetric label=\"Session\" value={props.selectedTrace.sessionId} mono />\n </dl>\n ) : null}\n </header>\n <div className=\"min-h-0 min-w-0 overflow-hidden\">\n {props.selectedTrace === undefined ? (\n <StudioEmptyState\n className=\"h-full rounded-none\"\n title={props.traceLoadState === \"loading\" ? \"Loading trace\" : \"Trace not found\"}\n text={\n props.traceLoadState === \"loading\"\n ? \"Reading the selected trace.\"\n : \"The selected trace is not available in this Studio runtime.\"\n }\n />\n ) : (\n <TracePanel\n traces={\n props.selectedSessionTraces.length > 0\n ? props.selectedSessionTraces\n : [props.selectedTrace]\n }\n onShowSessionTraces={props.onShowSessionTraces}\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction traceDisplayName(trace: StudioTrace | undefined): string {\n if (trace?.name) return trace.name;\n if (isRecord(trace?.metadata) && typeof trace.metadata.agentName === \"string\") {\n return trace.metadata.agentName;\n }\n return \"Trace detail\";\n}\n\nfunction HeaderMetric(props: { label: string; value: string; mono?: boolean }) {\n return (\n <div className=\"grid min-w-0 gap-1\">\n <dt className=\"text-xs text-muted-foreground\">{props.label}</dt>\n <dd className={cn(\"truncate text-sm font-medium tabular-nums\", props.mono && \"font-mono\")}>\n {props.value}\n </dd>\n </div>\n );\n}\n\nfunction TraceStatusBadge({ status }: { status: string }) {\n return (\n <Badge\n className={cn(\n \"border-0 capitalize\",\n status === \"success\" && \"bg-status-success-fill text-status-success-ink\",\n status === \"error\" && \"bg-status-danger-fill text-status-danger-ink\",\n (status === \"running\" || status === \"suspended\" || status === \"cancelled\") &&\n \"bg-status-pending-fill text-status-pending-ink\",\n status !== \"success\" &&\n status !== \"error\" &&\n status !== \"running\" &&\n status !== \"suspended\" &&\n status !== \"cancelled\" &&\n \"bg-status-neutral-fill text-status-neutral-ink\",\n )}\n >\n {status}\n </Badge>\n );\n}\n\nfunction TracePanel(props: {\n traces: StudioTrace[];\n onShowSessionTraces: (sessionId: string) => void;\n}) {\n const orderedTraces = useMemo(\n () =>\n [...props.traces].sort(\n (left, right) => Date.parse(left.startedAt) - Date.parse(right.startedAt),\n ),\n [props.traces],\n );\n const firstTraceId = orderedTraces[0]?.id ?? \"\";\n const [activeTraceId, setActiveTraceId] = useState(firstTraceId);\n const [activeKey, setActiveKey] = useState<TraceInspectorKey>(\"agent\");\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set());\n const [search, setSearch] = useState(\"\");\n useEffect(() => {\n setActiveTraceId(firstTraceId);\n setActiveKey(\"agent\");\n }, [firstTraceId]);\n\n const activeTrace = orderedTraces.find((trace) => trace.id === activeTraceId) ?? orderedTraces[0];\n const turns = activeTrace === undefined ? [] : traceTurns(activeTrace);\n const selectTimelineItem = (traceId: string, key: TraceInspectorKey) => {\n setActiveTraceId(traceId);\n setActiveKey(key);\n };\n const query = search.trim().toLowerCase();\n const searchResults =\n query.length === 0\n ? []\n : orderedTraces.flatMap((trace) =>\n trace.observations\n .filter((observation) =>\n [observation.name, observation.kind, observation.id].some((value) =>\n value.toLowerCase().includes(query),\n ),\n )\n .map((observation) => ({ trace, observation })),\n );\n const agentKeys = orderedTraces.map((trace) => `${trace.id}:agent`);\n const everythingCollapsed = agentKeys.length > 0 && agentKeys.every((key) => collapsed.has(key));\n const toggleCollapsed = (key: string) => {\n setCollapsed((current) => {\n const next = new Set(current);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n };\n\n if (activeTrace === undefined) {\n return (\n <StudioEmptyState\n className=\"h-full rounded-none\"\n title=\"No trace selected\"\n text=\"Choose a trace to inspect its spans and metadata.\"\n />\n );\n }\n\n return (\n <section\n className=\"grid h-full min-h-0 w-full content-stretch overflow-hidden bg-background\"\n aria-label=\"Traces\"\n >\n <div className=\"grid h-full min-h-0 grid-cols-[minmax(280px,36%)_minmax(420px,64%)] overflow-hidden max-md:grid-cols-1\">\n <nav\n className=\"flex h-full min-h-0 flex-col border-r bg-background max-md:max-h-80 max-md:border-b max-md:border-r-0\"\n aria-label=\"Trace timeline\"\n >\n <div className=\"flex shrink-0 items-center gap-1 border-b p-1.5\">\n <div className=\"relative min-w-0 flex-1\">\n <StudioIcon\n icon={MagnifyingGlass}\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground\"\n />\n <Input\n aria-label=\"Search spans\"\n className=\"h-8 border-0 bg-transparent pl-7 shadow-none focus-visible:ring-1\"\n placeholder=\"Search spans\"\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n />\n </div>\n <Button\n aria-label={everythingCollapsed ? \"Expand all spans\" : \"Collapse all spans\"}\n className=\"size-8\"\n size=\"icon\"\n title={everythingCollapsed ? \"Expand all\" : \"Collapse all\"}\n variant=\"ghost\"\n onClick={() => setCollapsed(everythingCollapsed ? new Set() : new Set(agentKeys))}\n >\n <StudioIcon\n icon={everythingCollapsed ? ArrowsOutLineVertical : TreeStructure}\n aria-hidden=\"true\"\n />\n </Button>\n </div>\n <div className=\"min-h-0 flex-1 overflow-auto overscroll-contain px-2 py-1\">\n {query.length > 0 ? (\n searchResults.length > 0 ? (\n searchResults.map(({ trace, observation }) => (\n <TraceTreeRow\n active={\n activeTrace.id === trace.id && activeKey === `observation:${observation.id}`\n }\n ancestorLevels={[]}\n hasChildren={false}\n isLastSibling={true}\n key={`${trace.id}:${observation.id}`}\n level={0}\n tone={observation.kind}\n title={traceObservationLabel(observation)}\n subtitle={formatDuration(observation.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, `observation:${observation.id}`)}\n />\n ))\n ) : (\n <div className=\"grid place-items-center gap-1 p-6 text-center\">\n <span className=\"text-sm font-medium\">No matching spans</span>\n <span className=\"text-xs text-muted-foreground\">\n Search by name, kind, or ID.\n </span>\n </div>\n )\n ) : (\n orderedTraces.map((trace) => {\n const traceActive = activeTrace.id === trace.id;\n const traceTurnItems = traceTurns(trace);\n const agentKey = `${trace.id}:agent`;\n const agentCollapsed = collapsed.has(agentKey);\n return (\n <div className=\"contents\" key={trace.id}>\n <TraceTreeRow\n active={traceActive && activeKey === \"agent\"}\n ancestorLevels={[]}\n hasChildren={traceTurnItems.length > 0}\n isLastSibling={true}\n level={0}\n tone=\"agent\"\n title={orderedTraces.length > 1 ? (trace.name ?? \"agent.run\") : \"agent.run\"}\n subtitle={formatDuration(trace.durationMs)}\n collapsed={agentCollapsed}\n onSelect={() => selectTimelineItem(trace.id, \"agent\")}\n onToggle={() => toggleCollapsed(agentKey)}\n />\n {agentCollapsed\n ? null\n : traceTurnItems.map((turn) => {\n const turnKey = `${trace.id}:turn:${turn.turn}`;\n const turnCollapsed = collapsed.has(turnKey);\n return (\n <div className=\"contents\" key={turnKey}>\n <TraceTreeRow\n active={traceActive && activeKey === `turn:${turn.turn}`}\n ancestorLevels={[]}\n hasChildren={turn.observations.length > 0}\n isLastSibling={turn.turn === traceTurnItems.at(-1)?.turn}\n level={1}\n tone=\"turn\"\n title={`turn.${turn.turn}`}\n subtitle={formatDuration(turn.durationMs)}\n collapsed={turnCollapsed}\n onSelect={() => selectTimelineItem(trace.id, `turn:${turn.turn}`)}\n onToggle={() => toggleCollapsed(turnKey)}\n />\n {turnCollapsed ? null : (\n <TraceObservationRows\n activeKey={activeKey}\n collapsed={collapsed}\n isLastTurn={turn.turn === traceTurnItems.at(-1)?.turn}\n observations={turn.observations}\n onSelect={(observationId) =>\n selectTimelineItem(trace.id, `observation:${observationId}`)\n }\n onToggle={toggleCollapsed}\n traceActive={traceActive}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n })\n )}\n </div>\n </nav>\n <TraceDetailPane\n trace={activeTrace}\n turns={turns}\n activeKey={activeKey}\n onShowSessionTraces={props.onShowSessionTraces}\n />\n </div>\n </section>\n );\n}\n\nfunction TraceTreeRow(props: {\n active: boolean;\n ancestorLevels: number[];\n hasChildren: boolean;\n isLastSibling: boolean;\n level: number;\n tone: \"trace\" | \"agent\" | \"turn\" | StudioTrace[\"observations\"][number][\"kind\"];\n title: string;\n subtitle: string;\n collapsed?: boolean;\n onSelect: () => void;\n onToggle?: () => void;\n}) {\n return (\n <div\n className={cn(\n \"group flex min-w-0 items-stretch text-muted-foreground hover:bg-transparent hover:text-foreground\",\n props.active && \"bg-row-selected text-foreground\",\n )}\n >\n <button\n aria-current={props.active ? \"true\" : undefined}\n className=\"flex min-w-0 flex-1 items-stretch text-left\"\n type=\"button\"\n onClick={props.onSelect}\n >\n <TraceTreeIndent\n ancestorLevels={props.ancestorLevels}\n hasChildren={props.hasChildren}\n isLastSibling={props.isLastSibling}\n level={props.level}\n tone={props.tone}\n />\n <span className=\"grid min-w-0 flex-1 content-center py-1.5 pr-2\">\n <span className=\"truncate text-xs font-medium text-current\" title={props.title}>\n {props.title}\n </span>\n <span className=\"flex flex-wrap gap-x-2 text-[10px] text-muted-foreground\">\n {props.subtitle}\n </span>\n </span>\n </button>\n {props.hasChildren && props.onToggle ? (\n <button\n aria-expanded={!props.collapsed}\n aria-label={props.collapsed ? `Expand ${props.title}` : `Collapse ${props.title}`}\n className=\"m-1 grid size-7 shrink-0 place-items-center rounded-md hover:bg-transparent hover:text-foreground\"\n type=\"button\"\n onClick={props.onToggle}\n >\n <StudioIcon\n icon={CaretRight}\n aria-hidden=\"true\"\n className={cn(\"size-3.5 transition-transform\", !props.collapsed && \"rotate-90\")}\n />\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction TraceTreeIndent(props: {\n ancestorLevels: number[];\n hasChildren: boolean;\n isLastSibling: boolean;\n level: number;\n tone: \"trace\" | \"agent\" | \"turn\" | StudioTrace[\"observations\"][number][\"kind\"];\n}) {\n const slot = 20;\n const iconX = props.level * slot;\n return (\n <span\n className=\"relative shrink-0\"\n data-tree-depth={props.level}\n style={{ width: `${(props.level + 1) * slot + 4}px` }}\n >\n {props.ancestorLevels.map((level) => (\n <span\n className=\"absolute inset-y-0 w-px bg-border\"\n data-tree-line=\"ancestor\"\n key={`ancestor-line-${level}`}\n style={{ left: `${level * slot + 10}px` }}\n />\n ))}\n {props.level > 0 ? (\n props.isLastSibling ? (\n <span\n className=\"absolute top-0 h-1/2 rounded-bl-sm border-b border-l border-border\"\n data-tree-line=\"elbow\"\n style={{ left: `${(props.level - 1) * slot + 10}px`, width: `${slot}px` }}\n />\n ) : (\n <>\n <span\n className=\"absolute inset-y-0 w-px bg-border\"\n data-tree-line=\"sibling-continuation\"\n style={{ left: `${(props.level - 1) * slot + 10}px` }}\n />\n <span\n className=\"absolute top-1/2 h-px bg-border\"\n data-tree-line=\"elbow\"\n style={{ left: `${(props.level - 1) * slot + 10}px`, width: `${slot}px` }}\n />\n </>\n )\n ) : null}\n {props.hasChildren ? (\n <span\n className=\"absolute bottom-0 w-px bg-border\"\n data-tree-line=\"children\"\n style={{ left: `${iconX + 10}px`, top: \"calc(50% + 0.5rem)\" }}\n />\n ) : null}\n <span\n className={cn(\n \"absolute top-1/2 grid size-4 -translate-y-1/2 place-items-center rounded-sm [&_svg]:size-2.5\",\n traceToneIconClass(props.tone),\n )}\n style={{ left: `${iconX + 2}px` }}\n >\n <TraceToneIcon tone={props.tone} />\n </span>\n </span>\n );\n}\n\nfunction TraceObservationRows(props: {\n activeKey: TraceInspectorKey;\n collapsed: Set<string>;\n isLastTurn: boolean;\n observations: TraceObservationItem[];\n traceActive: boolean;\n onSelect: (observationId: string) => void;\n onToggle: (key: string) => void;\n}) {\n const roots = traceObservationTree(props.observations);\n return (\n <>\n {roots.map((node, index) => (\n <TraceObservationNodeRow\n activeKey={props.activeKey}\n ancestorLevels={props.isLastTurn ? [] : [0]}\n collapsed={props.collapsed}\n isLastSibling={index === roots.length - 1}\n key={node.observation.id}\n level={2}\n node={node}\n onSelect={props.onSelect}\n onToggle={props.onToggle}\n traceActive={props.traceActive}\n />\n ))}\n </>\n );\n}\n\nfunction TraceObservationNodeRow(props: {\n activeKey: TraceInspectorKey;\n ancestorLevels: number[];\n collapsed: Set<string>;\n isLastSibling: boolean;\n level: number;\n node: TraceObservationNode;\n traceActive: boolean;\n onSelect: (observationId: string) => void;\n onToggle: (key: string) => void;\n}) {\n const usageText = observationUsageText(props.node.observation);\n const collapseKey = `observation:${props.node.observation.id}`;\n const isCollapsed = props.collapsed.has(collapseKey);\n const childAncestorLevels = props.isLastSibling\n ? props.ancestorLevels\n : [...props.ancestorLevels, props.level];\n return (\n <>\n <TraceTreeRow\n active={props.traceActive && props.activeKey === `observation:${props.node.observation.id}`}\n ancestorLevels={props.ancestorLevels}\n hasChildren={props.node.children.length > 0}\n isLastSibling={props.isLastSibling}\n level={props.level}\n tone={props.node.observation.kind}\n title={traceObservationLabel(props.node.observation)}\n subtitle={\n usageText.length > 0\n ? `${formatDuration(props.node.observation.durationMs)} · ${usageText}`\n : formatDuration(props.node.observation.durationMs)\n }\n collapsed={isCollapsed}\n onSelect={() => props.onSelect(props.node.observation.id)}\n onToggle={() => props.onToggle(collapseKey)}\n />\n {isCollapsed\n ? null\n : props.node.children.map((child, index) => (\n <TraceObservationNodeRow\n activeKey={props.activeKey}\n ancestorLevels={childAncestorLevels}\n collapsed={props.collapsed}\n isLastSibling={index === props.node.children.length - 1}\n key={child.observation.id}\n level={props.level + 1}\n node={child}\n onSelect={props.onSelect}\n onToggle={props.onToggle}\n traceActive={props.traceActive}\n />\n ))}\n </>\n );\n}\n\nfunction TraceDetailPane(props: {\n trace: StudioTrace;\n turns: Array<{ turn: number; observations: TraceObservationItem[]; durationMs?: number }>;\n activeKey: TraceInspectorKey;\n onShowSessionTraces: (sessionId: string) => void;\n}) {\n const selected = selectedTraceDetail(props.trace, props.turns, props.activeKey);\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background\"\n aria-label=\"Trace detail\"\n >\n <header className=\"shrink-0 border-b px-4 py-4 md:px-6\">\n <div className=\"grid min-w-0 gap-4\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-3\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <span\n className={cn(\n \"grid size-9 shrink-0 place-items-center rounded-lg [&_svg]:size-4\",\n traceToneIconClass(selected.tone),\n )}\n >\n <TraceToneIcon tone={selected.tone} />\n </span>\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <h2 className=\"m-0 min-w-0 truncate text-xl font-semibold tracking-tight\">\n {selected.title}\n </h2>\n <TraceStatusBadge status={selected.status} />\n </div>\n <div className=\"text-xs text-muted-foreground\">{selected.startedAt}</div>\n </div>\n </div>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <TraceMetric\n icon={<StudioIcon icon={Clock} aria-hidden=\"true\" />}\n label=\"Duration\"\n value={formatDuration(selected.durationMs)}\n />\n {selected.firstDeltaMs === undefined ? null : (\n <TraceMetric\n icon={<StudioIcon icon={Timer} aria-hidden=\"true\" />}\n label=\"First delta\"\n value={formatDuration(selected.firstDeltaMs)}\n />\n )}\n {selected.usage.length === 0 ? null : (\n <TraceMetric\n icon={<StudioIcon icon={BracketsCurly} aria-hidden=\"true\" />}\n label=\"Usage\"\n value={selected.usage}\n />\n )}\n <button\n className=\"flex min-w-0 items-center gap-2 rounded-md border bg-muted px-2.5 py-1.5 text-xs hover:border-foreground hover:bg-transparent\"\n type=\"button\"\n onClick={() => props.onShowSessionTraces(props.trace.sessionId)}\n >\n <StudioIcon\n icon={ArrowSquareOut}\n aria-hidden=\"true\"\n className=\"size-3.5 text-muted-foreground\"\n />\n <span className=\"text-muted-foreground\">Session</span>\n <span className=\"max-w-44 truncate font-mono font-medium\">\n {props.trace.sessionId}\n </span>\n </button>\n </div>\n </div>\n </header>\n <div className=\"min-w-0 overflow-auto\">\n <div className=\"grid min-w-0 content-start gap-6 p-6\">\n {selected.input === undefined ? null : (\n <TracePayloadSection field=\"input\" title=\"Input\" value={selected.input} />\n )}\n {selected.output === undefined ? null : (\n <TracePayloadSection field=\"output\" title=\"Output\" value={selected.output} />\n )}\n {selected.error === undefined ? null : (\n <TracePayloadSection field=\"error\" title=\"Error\" value={selected.error} />\n )}\n <TracePayloadSection field=\"metadata\" title=\"Metadata\" value={selected.metadata} />\n </div>\n </div>\n </section>\n );\n}\n\nfunction TraceMetric(props: { icon: ReactNode; label: string; value: string }) {\n return (\n <div className=\"flex min-w-0 items-center gap-2 rounded-md border bg-muted px-2.5 py-1.5 text-xs\">\n <span className=\"text-muted-foreground [&_svg]:size-3.5\">{props.icon}</span>\n <span className=\"text-muted-foreground\">{props.label}</span>\n <span className=\"max-w-44 truncate font-mono font-medium\">{props.value}</span>\n </div>\n );\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20],"mappings":"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"}