@anvia/studio 1.2.1 → 1.2.2

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace-browser-Axd-aif6.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","ScrollArea","Fragment"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/ArrowsOutLineVertical.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/BracketsCurly.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Clock.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/DotOutline.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Sparkle.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Timer.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/TreeStructure.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/ArrowsOutLineVertical.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/BracketsCurly.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Clock.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/DotOutline.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Sparkle.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Timer.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/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.2.18_@types+react-dom@19.2.3_@types+react@19.2.14__@types_65a050057147dec78e053f767925828d/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 { 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\";\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 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 = \"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 ScrollAreaViewport = /* @__PURE__ */ React2.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function ScrollAreaViewport2(props, forwardedRef) {\n const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\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: /* @__PURE__ */ jsx(\"div\", { ref: context.onContentChange, style: { minWidth: \"100%\", display: \"table\" }, children })\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 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 === \"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 === \"hover\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"scroll\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"auto\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"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 === \"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 === \"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 = \"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 === \"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 === \"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 === \"rtl\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n right: context.dir === \"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 === \"ltr\" ? 0 : void 0,\n left: context.dir === \"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 !== \"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 === \"ltr\" ? 0 : void 0,\n left: context.dir === \"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 = \"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 === \"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 = \"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 === \"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 (/* @__PURE__ */ __name((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 }), \"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\");\nvar Root = ScrollArea;\nvar Viewport = ScrollAreaViewport;\nvar Scrollbar = ScrollAreaScrollbar;\nvar Thumb = ScrollAreaThumb;\nvar Corner = ScrollAreaCorner;\nexport {\n Corner,\n Root,\n ScrollArea,\n ScrollAreaCorner,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n Scrollbar,\n Thumb,\n 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 ...(isToolPayload(value) ? [parseTool(value, `${key}:tool`)] : []),\n ];\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"],"x_google_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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"}