@anvia/studio 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/ui/assets/{ArrowClockwise.es-B767Y26S.js → ArrowClockwise.es-BRsjq4nG.js} +2 -2
  2. package/dist/ui/assets/{ArrowClockwise.es-B767Y26S.js.map → ArrowClockwise.es-BRsjq4nG.js.map} +1 -1
  3. package/dist/ui/assets/{Path.es-Bi7ZsAUQ.js → Path.es-BUWhvlO4.js} +2 -2
  4. package/dist/ui/assets/{Path.es-Bi7ZsAUQ.js.map → Path.es-BUWhvlO4.js.map} +1 -1
  5. package/dist/ui/assets/{Play.es-DF0Ixc84.js → Play.es-BMj9mcZd.js} +2 -2
  6. package/dist/ui/assets/{Play.es-DF0Ixc84.js.map → Play.es-BMj9mcZd.js.map} +1 -1
  7. package/dist/ui/assets/{evals-page-D55W9yXv.js → evals-page-CEsOQH1F.js} +2 -2
  8. package/dist/ui/assets/{evals-page-D55W9yXv.js.map → evals-page-CEsOQH1F.js.map} +1 -1
  9. package/dist/ui/assets/index-CISgSi9m.js +54 -0
  10. package/dist/ui/assets/index-CISgSi9m.js.map +1 -0
  11. package/dist/ui/assets/{knowledge-page-KPYrmPAs.js → knowledge-page-DkuuWYwn.js} +2 -2
  12. package/dist/ui/assets/{knowledge-page-KPYrmPAs.js.map → knowledge-page-DkuuWYwn.js.map} +1 -1
  13. package/dist/ui/assets/{mcps-page-xalzdZ7T.js → mcps-page-Cg44hTqs.js} +2 -2
  14. package/dist/ui/assets/{mcps-page-xalzdZ7T.js.map → mcps-page-Cg44hTqs.js.map} +1 -1
  15. package/dist/ui/assets/{memory-page-BEbFafrw.js → memory-page-CSfAtDIq.js} +2 -2
  16. package/dist/ui/assets/{memory-page-BEbFafrw.js.map → memory-page-CSfAtDIq.js.map} +1 -1
  17. package/dist/ui/assets/pipelines-page-B1kaAtRn.js +8 -0
  18. package/dist/ui/assets/pipelines-page-B1kaAtRn.js.map +1 -0
  19. package/dist/ui/assets/{renderers-BwJXUlFT.js → renderers-BsGl9Gjx.js} +2 -2
  20. package/dist/ui/assets/{renderers-BwJXUlFT.js.map → renderers-BsGl9Gjx.js.map} +1 -1
  21. package/dist/ui/assets/{sessions-page-CR4djaAo.js → sessions-page-BC0CO7NX.js} +2 -2
  22. package/dist/ui/assets/{sessions-page-CR4djaAo.js.map → sessions-page-BC0CO7NX.js.map} +1 -1
  23. package/dist/ui/assets/{status-page-BMbPe0L7.js → status-page-BRktao-I.js} +2 -2
  24. package/dist/ui/assets/{status-page-BMbPe0L7.js.map → status-page-BRktao-I.js.map} +1 -1
  25. package/dist/ui/assets/{tools-page-CBgM-urE.js → tools-page-FH6kc45U.js} +2 -2
  26. package/dist/ui/assets/{tools-page-CBgM-urE.js.map → tools-page-FH6kc45U.js.map} +1 -1
  27. package/dist/ui/assets/{trace-browser-DW0EW-Wn.js → trace-browser-KsF4pJ1E.js} +2 -2
  28. package/dist/ui/assets/{trace-browser-DW0EW-Wn.js.map → trace-browser-KsF4pJ1E.js.map} +1 -1
  29. package/dist/ui/assets/{transcript-item-BAHSOoZ8.js → transcript-item-BwOv5UHH.js} +2 -2
  30. package/dist/ui/assets/{transcript-item-BAHSOoZ8.js.map → transcript-item-BwOv5UHH.js.map} +1 -1
  31. package/dist/ui/index.html +1 -1
  32. package/package.json +9 -9
  33. package/dist/ui/assets/index-BiAp2ncG.js +0 -54
  34. package/dist/ui/assets/index-BiAp2ncG.js.map +0 -1
  35. package/dist/ui/assets/pipelines-page-Cy31Bq44.js +0 -8
  36. package/dist/ui/assets/pipelines-page-Cy31Bq44.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"trace-browser-DW0EW-Wn.js","names":["a","e","o","n","a","r","a","f","s","e","a","i","s","a","m","s","t","i","c","e","ScrollArea","Fragment"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/ArrowBendUpLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/Cpu.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/GearSix.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/GitBranch.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/ArrowBendUpLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/Cpu.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/GearSix.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/GitBranch.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.12_@types+react-dom@19.2.3_@types+react@19.2.14__@types_c1f4031cac668ca7c695d70e53b3d89d/node_modules/@radix-ui/react-scroll-area/dist/index.mjs","../../../src/ui/app/components/ui/scroll-area.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: \"M236,200a12,12,0,0,1-24,0,84.09,84.09,0,0,0-84-84H61l27.52,27.51a12,12,0,0,1-17,17l-48-48a12,12,0,0,1,0-17l48-48a12,12,0,0,1,17,17L61,92h67A108.12,108.12,0,0,1,236,200Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M80,56v96L32,104Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,96H88V56a8,8,0,0,0-13.66-5.66l-48,48a8,8,0,0,0,0,11.32l48,48A8,8,0,0,0,88,152V112h40a88.1,88.1,0,0,1,88,88,8,8,0,0,0,16,0A104.11,104.11,0,0,0,128,96ZM72,132.69,43.31,104,72,75.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H88v40a8,8,0,0,1-13.66,5.66l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,88,56V96h40A104.11,104.11,0,0,1,232,200Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230,200a6,6,0,0,1-12,0,90.1,90.1,0,0,0-90-90H46.49l37.75,37.76a6,6,0,1,1-8.48,8.48l-48-48a6,6,0,0,1,0-8.48l48-48a6,6,0,0,1,8.48,8.48L46.49,98H128A102.12,102.12,0,0,1,230,200Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,85.66,61.66L51.31,96H128A104.11,104.11,0,0,1,232,200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,200a4,4,0,0,1-8,0,92.1,92.1,0,0,0-92-92H41.66l41.17,41.17a4,4,0,0,1-5.66,5.66l-48-48a4,4,0,0,1,0-5.66l48-48a4,4,0,0,1,5.66,5.66L41.66,100H128A100.11,100.11,0,0,1,228,200Z\" }))\n ]\n]);\nexport {\n a 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: \"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 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 a from \"react\";\nconst H = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M156,88H100a12,12,0,0,0-12,12v56a12,12,0,0,0,12,12h56a12,12,0,0,0,12-12V100A12,12,0,0,0,156,88Zm-12,56H112V112h32Zm88-4H220V116h12a12,12,0,0,0,0-24H220V56a20,20,0,0,0-20-20H164V24a12,12,0,0,0-24,0V36H116V24a12,12,0,0,0-24,0V36H56A20,20,0,0,0,36,56V92H24a12,12,0,0,0,0,24H36v24H24a12,12,0,0,0,0,24H36v36a20,20,0,0,0,20,20H92v12a12,12,0,0,0,24,0V220h24v12a12,12,0,0,0,24,0V220h36a20,20,0,0,0,20-20V164h12a12,12,0,0,0,0-24Zm-36,56H60V60H196Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M200,48H56a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V56A8,8,0,0,0,200,48ZM152,152H104V104h48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,98H104a6,6,0,0,0-6,6v48a6,6,0,0,0,6,6h48a6,6,0,0,0,6-6V104A6,6,0,0,0,152,98Zm-6,48H110V110h36Zm86,0H214V110h18a6,6,0,0,0,0-12H214V56a14,14,0,0,0-14-14H158V24a6,6,0,0,0-12,0V42H110V24a6,6,0,0,0-12,0V42H56A14,14,0,0,0,42,56V98H24a6,6,0,0,0,0,12H42v36H24a6,6,0,0,0,0,12H42v42a14,14,0,0,0,14,14H98v18a6,6,0,0,0,12,0V214h36v18a6,6,0,0,0,12,0V214h42a14,14,0,0,0,14-14V158h18a6,6,0,0,0,0-12Zm-30,54a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,100H104a4,4,0,0,0-4,4v48a4,4,0,0,0,4,4h48a4,4,0,0,0,4-4V104A4,4,0,0,0,152,100Zm-4,48H108V108h40Zm84,0H212V108h20a4,4,0,0,0,0-8H212V56a12,12,0,0,0-12-12H156V24a4,4,0,0,0-8,0V44H108V24a4,4,0,0,0-8,0V44H56A12,12,0,0,0,44,56v44H24a4,4,0,0,0,0,8H44v40H24a4,4,0,0,0,0,8H44v44a12,12,0,0,0,12,12h44v20a4,4,0,0,0,8,0V212h40v20a4,4,0,0,0,8,0V212h44a12,12,0,0,0,12-12V156h20a4,4,0,0,0,0-8Zm-28,52a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n H 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: \"M128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,80a28,28,0,1,1,28-28A28,28,0,0,1,128,156Zm113.86-49.57A12,12,0,0,0,236,98.34L208.21,82.49l-.11-31.31a12,12,0,0,0-4.25-9.12,116,116,0,0,0-38-21.41,12,12,0,0,0-9.68.89L128,37.27,99.83,21.53a12,12,0,0,0-9.7-.9,116.06,116.06,0,0,0-38,21.47,12,12,0,0,0-4.24,9.1l-.14,31.34L20,98.35a12,12,0,0,0-5.85,8.11,110.7,110.7,0,0,0,0,43.11A12,12,0,0,0,20,157.66l27.82,15.85.11,31.31a12,12,0,0,0,4.25,9.12,116,116,0,0,0,38,21.41,12,12,0,0,0,9.68-.89L128,218.73l28.14,15.74a12,12,0,0,0,9.7.9,116.06,116.06,0,0,0,38-21.47,12,12,0,0,0,4.24-9.1l.14-31.34,27.81-15.81a12,12,0,0,0,5.85-8.11A110.7,110.7,0,0,0,241.86,106.43Zm-22.63,33.18-26.88,15.28a11.94,11.94,0,0,0-4.55,4.59c-.54,1-1.11,1.93-1.7,2.88a12,12,0,0,0-1.83,6.31L184.13,199a91.83,91.83,0,0,1-21.07,11.87l-27.15-15.19a12,12,0,0,0-5.86-1.53h-.29c-1.14,0-2.3,0-3.44,0a12.08,12.08,0,0,0-6.14,1.51L93,210.82A92.27,92.27,0,0,1,71.88,199l-.11-30.24a12,12,0,0,0-1.83-6.32c-.58-.94-1.16-1.91-1.7-2.88A11.92,11.92,0,0,0,63.7,155L36.8,139.63a86.53,86.53,0,0,1,0-23.24l26.88-15.28a12,12,0,0,0,4.55-4.58c.54-1,1.11-1.94,1.7-2.89a12,12,0,0,0,1.83-6.31L71.87,57A91.83,91.83,0,0,1,92.94,45.17l27.15,15.19a11.92,11.92,0,0,0,6.15,1.52c1.14,0,2.3,0,3.44,0a12.08,12.08,0,0,0,6.14-1.51L163,45.18A92.27,92.27,0,0,1,184.12,57l.11,30.24a12,12,0,0,0,1.83,6.32c.58.94,1.16,1.91,1.7,2.88A11.92,11.92,0,0,0,192.3,101l26.9,15.33A86.53,86.53,0,0,1,219.23,139.61Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M230.1,108.76,198.25,90.62c-.64-1.16-1.31-2.29-2-3.41l-.12-36A104.61,104.61,0,0,0,162,32L130,49.89c-1.34,0-2.69,0-4,0L94,32A104.58,104.58,0,0,0,59.89,51.25l-.16,36c-.7,1.12-1.37,2.26-2,3.41l-31.84,18.1a99.15,99.15,0,0,0,0,38.46l31.85,18.14c.64,1.16,1.31,2.29,2,3.41l.12,36A104.61,104.61,0,0,0,94,224l32-17.87c1.34,0,2.69,0,4,0L162,224a104.58,104.58,0,0,0,34.08-19.25l.16-36c.7-1.12,1.37-2.26,2-3.41l31.84-18.1A99.15,99.15,0,0,0,230.1,108.76ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A111.92,111.92,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.63a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.1,8.1,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8,8,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.94,107.21a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A111.92,111.92,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.63a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,82a46,46,0,1,0,46,46A46.06,46.06,0,0,0,128,82Zm0,80a34,34,0,1,1,34-34A34,34,0,0,1,128,162Zm108-54.4a6,6,0,0,0-2.92-4L202.64,86.22l-.42-.71L202.1,51.2A6,6,0,0,0,200,46.64a110.12,110.12,0,0,0-36.07-20.31,6,6,0,0,0-4.84.45L128.46,43.86h-1L96.91,26.76a6,6,0,0,0-4.86-.44A109.92,109.92,0,0,0,56,46.68a6,6,0,0,0-2.12,4.55l-.16,34.34c-.14.23-.28.47-.41.71L22.91,103.57A6,6,0,0,0,20,107.62a104.81,104.81,0,0,0,0,40.78,6,6,0,0,0,2.92,4l30.42,17.33.42.71.12,34.31A6,6,0,0,0,56,209.36a110.12,110.12,0,0,0,36.07,20.31,6,6,0,0,0,4.84-.45l30.61-17.08h1l30.56,17.1A6.09,6.09,0,0,0,162,230a5.83,5.83,0,0,0,1.93-.32,109.92,109.92,0,0,0,36-20.36,6,6,0,0,0,2.12-4.55l.16-34.34c.14-.23.28-.47.41-.71l30.42-17.29a6,6,0,0,0,2.92-4.05A104.81,104.81,0,0,0,236,107.6Zm-11.25,35.79L195.32,160.1a6.07,6.07,0,0,0-2.28,2.3c-.59,1-1.21,2.11-1.86,3.14a6,6,0,0,0-.91,3.16l-.16,33.21a98.15,98.15,0,0,1-27.52,15.53L133,200.88a6,6,0,0,0-2.93-.77h-.14c-1.24,0-2.5,0-3.74,0a6,6,0,0,0-3.07.76L93.45,217.43a98,98,0,0,1-27.56-15.49l-.12-33.17a6,6,0,0,0-.91-3.16c-.64-1-1.27-2.08-1.86-3.14a6,6,0,0,0-2.27-2.3L31.3,143.4a93,93,0,0,1,0-30.79L60.68,95.9A6.07,6.07,0,0,0,63,93.6c.59-1,1.21-2.11,1.86-3.14a6,6,0,0,0,.91-3.16l.16-33.21A98.15,98.15,0,0,1,93.41,38.56L123,55.12a5.81,5.81,0,0,0,3.07.76c1.24,0,2.5,0,3.74,0a6,6,0,0,0,3.07-.76l29.65-16.56a98,98,0,0,1,27.56,15.49l.12,33.17a6,6,0,0,0,.91,3.16c.64,1,1.27,2.08,1.86,3.14a6,6,0,0,0,2.27,2.3L224.7,112.6A93,93,0,0,1,224.73,143.39Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A112.1,112.1,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.62a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.08,8.08,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8.08,8.08,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,80a36,36,0,1,1,36-36A36,36,0,0,1,128,164Zm106-56a4,4,0,0,0-2-2.7l-30.89-17.6q-.47-.82-1-1.62L200.1,51.2a3.94,3.94,0,0,0-1.42-3,107.8,107.8,0,0,0-35.41-19.94,4,4,0,0,0-3.23.29L129,45.87h-2l-31-17.36a4,4,0,0,0-3.23-.3,108.05,108.05,0,0,0-35.39,20,4,4,0,0,0-1.41,3l-.16,34.9-1,1.62L23.9,105.3A4,4,0,0,0,22,108a102.76,102.76,0,0,0,0,40,4,4,0,0,0,1.95,2.7l30.89,17.6q.47.83,1,1.62l.12,34.87a3.94,3.94,0,0,0,1.42,3,107.8,107.8,0,0,0,35.41,19.94,4,4,0,0,0,3.23-.29L127,210.13h2l31,17.36a4,4,0,0,0,3.23.3,108.05,108.05,0,0,0,35.39-20,4,4,0,0,0,1.41-3l.16-34.9,1-1.62L232.1,150.7a4,4,0,0,0,2-2.71A102.76,102.76,0,0,0,234,108Zm-7.48,36.67L196.3,161.84a4,4,0,0,0-1.51,1.53c-.61,1.09-1.25,2.17-1.91,3.24a3.92,3.92,0,0,0-.61,2.1l-.16,34.15a99.8,99.8,0,0,1-29.7,16.77l-30.4-17a4.06,4.06,0,0,0-2-.51H130c-1.28,0-2.57,0-3.84,0a4.1,4.1,0,0,0-2.05.51l-30.45,17A100.23,100.23,0,0,1,63.89,202.9l-.12-34.12a3.93,3.93,0,0,0-.61-2.11c-.66-1-1.3-2.14-1.91-3.23a4,4,0,0,0-1.51-1.53L29.49,144.68a94.78,94.78,0,0,1,0-33.34L59.7,94.16a4,4,0,0,0,1.51-1.53c.61-1.09,1.25-2.17,1.91-3.23a4,4,0,0,0,.61-2.11l.16-34.15a99.8,99.8,0,0,1,29.7-16.77l30.4,17a4.1,4.1,0,0,0,2.05.51c1.28,0,2.57,0,3.84,0a4,4,0,0,0,2.05-.51l30.45-17A100.23,100.23,0,0,1,192.11,53.1l.12,34.12a3.93,3.93,0,0,0,.61,2.11c.66,1,1.3,2.14,1.91,3.23a4,4,0,0,0,1.51,1.53l30.25,17.23A94.78,94.78,0,0,1,226.54,144.66Z\" }))\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: \"M236,64a36,36,0,1,0-48,33.94V112a4,4,0,0,1-4,4H96a27.8,27.8,0,0,0-4,.29V97.94a36,36,0,1,0-24,0v60.12a36,36,0,1,0,24,0V144a4,4,0,0,1,4-4h88a28,28,0,0,0,28-28V97.94A36.07,36.07,0,0,0,236,64ZM80,52A12,12,0,1,1,68,64,12,12,0,0,1,80,52Zm0,152a12,12,0,1,1,12-12A12,12,0,0,1,80,204ZM200,76a12,12,0,1,1,12-12A12,12,0,0,1,200,76Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,64a24,24,0,1,1-24-24A24,24,0,0,1,224,64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M230,64a30,30,0,1,0-36,29.4V112a10,10,0,0,1-10,10H96a21.84,21.84,0,0,0-10,2.42v-31a30,30,0,1,0-12,0v69.2a30,30,0,1,0,12,0V144a10,10,0,0,1,10-10h88a22,22,0,0,0,22-22V93.4A30.05,30.05,0,0,0,230,64ZM62,64A18,18,0,1,1,80,82,18,18,0,0,1,62,64ZM98,192a18,18,0,1,1-18-18A18,18,0,0,1,98,192ZM200,82a18,18,0,1,1,18-18A18,18,0,0,1,200,82Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,64a28,28,0,1,0-32,27.71V112a12,12,0,0,1-12,12H96a19.91,19.91,0,0,0-12,4V91.71a28,28,0,1,0-8,0v72.58a28,28,0,1,0,8,0V144a12,12,0,0,1,12-12h88a20,20,0,0,0,20-20V91.71A28,28,0,0,0,228,64ZM60,64A20,20,0,1,1,80,84,20,20,0,0,1,60,64Zm40,128a20,20,0,1,1-20-20A20,20,0,0,1,100,192ZM200,84a20,20,0,1,1,20-20A20,20,0,0,1,200,84Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/ArrowBendUpLeft.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(n, { ref: t, ...r, weights: a }));\no.displayName = \"ArrowBendUpLeftIcon\";\nconst p = o;\nexport {\n p as ArrowBendUpLeft,\n o as ArrowBendUpLeftIcon\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 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 a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Cpu.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"CpuIcon\";\nconst s = e;\nexport {\n s as Cpu,\n e as CpuIcon\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport i from \"../defs/GearSix.es.js\";\nconst o = e.forwardRef((r, a) => /* @__PURE__ */ e.createElement(t, { ref: a, ...r, weights: i }));\no.displayName = \"GearSixIcon\";\nconst s = o;\nexport {\n s as GearSix,\n o as GearSixIcon\n};\n","import * as o from \"react\";\nimport c from \"../lib/IconBase.es.js\";\nimport e from \"../defs/GitBranch.es.js\";\nconst r = o.forwardRef((t, a) => /* @__PURE__ */ o.createElement(c, { ref: a, ...t, weights: e }));\nr.displayName = \"GitBranchIcon\";\nconst m = r;\nexport {\n m as GitBranch,\n r as GitBranchIcon\n};\n","import {\n ArrowBendUpLeft,\n CaretDown,\n CaretRight,\n ChatText,\n Cpu,\n GearSix,\n GitBranch,\n Path,\n Robot,\n Wrench,\n} from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport type { StudioTrace } from \"../../../../types\";\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 bg-card/85 px-4 py-4 font-mono text-[13px] leading-6 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-accent/45 hover:text-accent-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 ? <CaretDown aria-hidden=\"true\" /> : <CaretRight aria-hidden=\"true\" />}\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=\"text-chart-2\">{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=\"text-primary\">{JSON.stringify(props.value)}</span>;\n }\n if (typeof props.value === \"number\") {\n return <span className=\"text-chart-1\">{String(props.value)}</span>;\n }\n if (typeof props.value === \"boolean\") {\n return <span className=\"text-chart-4\">{String(props.value)}</span>;\n }\n if (props.value === null) {\n return <span className=\"text-muted-foreground\">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 <GearSix aria-hidden=\"true\" className={className} />;\n case \"Prompt\":\n return <ChatText aria-hidden=\"true\" className={className} />;\n case \"Output\":\n case \"Assistant output\":\n return <ArrowBendUpLeft 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 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 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 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 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 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 model: metadata.model,\n requestedModel: metadata.requestedModel,\n defaultModel: metadata.defaultModel,\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 additionalParamKeys: metadata.additionalParamKeys,\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 === \"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 statusDotClass(status: StudioTrace[\"status\"]): string {\n switch (status) {\n case \"success\":\n return \"bg-primary\";\n case \"error\":\n return \"bg-destructive\";\n case \"running\":\n return \"bg-chart-2\";\n }\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 <Path aria-hidden=\"true\" />;\n case \"agent\":\n return <Robot aria-hidden=\"true\" />;\n case \"turn\":\n return <GitBranch aria-hidden=\"true\" />;\n case \"generation\":\n return <Cpu aria-hidden=\"true\" />;\n case \"tool\":\n return <Wrench 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-primary text-background\";\n case \"agent\":\n return \"bg-chart-2 text-background\";\n case \"turn\":\n return \"bg-chart-4 text-background\";\n case \"generation\":\n return \"bg-chart-1 text-background\";\n case \"tool\":\n return \"bg-chart-5 text-background\";\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 \"rounded-xl border border-border/80 bg-card/95 text-card-foreground shadow-sm shadow-black/20\",\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.5 p-4\", className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"p-4 pt-0\", className)} {...props} />;\n}\n","\"use client\";\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\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 = React2.forwardRef(\n (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, (node) => setScrollArea(node));\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 }\n);\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = React2.forwardRef(\n (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 }\n);\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar ScrollAreaViewportStyle = React2.memo(\n ({ 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 },\n (prevProps, nextProps) => prevProps.nonce === nextProps.nonce\n);\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = React2.forwardRef(\n (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 }\n);\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = React2.forwardRef((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 = () => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = () => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n };\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});\nvar ScrollAreaScrollbarScroll = React2.forwardRef((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 = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\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});\nvar ScrollAreaScrollbarAuto = React2.forwardRef((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});\nvar ScrollAreaScrollbarVisible = React2.forwardRef((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: (thumb) => thumbRef.current = thumb,\n onThumbPointerUp: () => pointerOffsetRef.current = 0,\n onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\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});\nvar ScrollAreaScrollbarX = React2.forwardRef((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});\nvar ScrollAreaScrollbarY = React2.forwardRef((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});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = React2.forwardRef((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, (node) => setScrollbar(node));\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 React2.useEffect(() => {\n const handleWheel = (event) => {\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\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});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = React2.forwardRef(\n (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 }\n);\nvar ScrollAreaThumbImpl = React2.forwardRef(\n (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(\n forwardedRef,\n (node) => scrollbarContext.onThumbChange(node)\n );\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 = () => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\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 }\n);\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = React2.forwardRef(\n (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 }\n);\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = React2.forwardRef((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 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 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});\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\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}\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}\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}\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}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = () => {\n}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n};\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}\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}\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]\">\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-lg bg-muted-foreground/40\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n","import { ArrowLeft } from \"@phosphor-icons/react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n firstDeltaMsFromObservations,\n isNeutralTraceRow,\n observationUsageText,\n plainTraceValue,\n selectedTraceDetail,\n statusDotClass,\n TraceJsonTree,\n type TraceObservationNode,\n TraceRowIcon,\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 { ScrollArea } from \"../../components/ui/scroll-area\";\nimport { cn } from \"../../lib/utils\";\nimport { emptyFallback, formatDuration, formatTraceDate, traceAgentLabel } from \"../shared/format\";\nimport type { TraceInspectorKey, TraceLoadState, TraceObservationItem } from \"../shared/types\";\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 <div className=\"w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground\">\n Tracing is disabled\n </div>\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\n className=\"grid h-full min-h-0 w-full content-stretch pb-6 pl-0 pr-6\"\n aria-label=\"Tracing\"\n >\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 return (\n <Card\n className=\"min-h-0 overflow-hidden rounded-xl border-border/80 bg-card/80\"\n aria-label=\"Traces\"\n >\n <ScrollArea className=\"h-full min-h-0\">\n <div className=\"grid min-w-280 gap-1 p-2\">\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 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] 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.traceLoadState === \"loading\" && props.traces.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n Loading traces\n </div>\n ) : null}\n {props.traceLoadState === \"idle\" && props.traces.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n No traces found\n </div>\n ) : null}\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-lg border border-transparent bg-transparent px-4 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:border-primary/20 hover:bg-accent/70 hover:text-accent-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 font-mono text-xs font-medium text-muted-foreground\">\n {trace.id}\n </span>\n <span className=\"min-w-0 truncate font-mono text-xs font-medium\">\n {trace.sessionId}\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {traceAgentLabel(props.agents, trace)}\n </span>\n <span className=\"flex min-w-0 items-center gap-2 text-xs font-medium capitalize\">\n <span\n className={cn(\"h-2.5 w-2.5 shrink-0 rounded-lg\", statusDotClass(trace.status))}\n />\n <span className=\"min-w-0 truncate\">{trace.status}</span>\n </span>\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 return (\n <div className=\"grid h-full min-h-0 min-w-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm\">\n <header className=\"grid min-h-16 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 overflow-hidden rounded-lg border border-border/60 bg-card/95 px-4 py-3\">\n <Button\n aria-label=\"Back to traces\"\n className=\"h-8 min-h-8 w-8 text-muted-foreground hover:text-foreground\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onBack}\n >\n <ArrowLeft aria-hidden=\"true\" />\n </Button>\n <div className=\"grid min-w-0 gap-1\">\n <strong className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {props.selectedTrace?.name ?? \"Trace detail\"}\n </strong>\n <span className=\"flex min-w-0 items-center gap-2 overflow-hidden text-xs font-medium text-muted-foreground\">\n {props.selectedTrace === undefined ? (\n props.traceLoadState === \"loading\" ? (\n \"Loading trace\"\n ) : (\n \"Trace not found\"\n )\n ) : (\n <>\n <span\n className={cn(\n \"h-2 w-2 shrink-0 rounded-lg\",\n statusDotClass(props.selectedTrace.status),\n )}\n />\n <span className=\"shrink-0 capitalize\">{props.selectedTrace.status}</span>\n <span className=\"shrink-0\" aria-hidden=\"true\">\n /\n </span>\n <span className=\"min-w-0 flex-1 truncate\">\n Session{\" \"}\n <span className=\"font-mono font-semibold\">{props.selectedTrace.sessionId}</span>\n </span>\n </>\n )}\n </span>\n </div>\n <span className=\"hidden max-w-[42vw] truncate rounded-lg bg-muted px-2 py-1 font-mono text-xs font-medium text-muted-foreground md:block\">\n {props.selectedTraceId}\n </span>\n </header>\n <div className=\"min-h-0 min-w-0 overflow-hidden\">\n {props.selectedTrace === undefined ? (\n <Card className=\"grid h-full place-items-center rounded-lg border-border bg-card p-6 text-sm font-medium text-muted-foreground\">\n {props.traceLoadState === \"loading\" ? \"Loading trace\" : \"Trace not found\"}\n </Card>\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 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>(\"trace\");\n useEffect(() => {\n setActiveTraceId(firstTraceId);\n setActiveKey(\"trace\");\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\n if (activeTrace === undefined) {\n return (\n <section\n className=\"grid h-full min-h-0 w-full place-items-center text-sm font-medium text-muted-foreground\"\n aria-label=\"Traces\"\n >\n No trace selected\n </section>\n );\n }\n\n return (\n <section\n className=\"grid h-full min-h-0 w-full content-stretch overflow-hidden\"\n aria-label=\"Traces\"\n >\n <div className=\"grid h-full min-h-0 grid-cols-[320px_minmax(0,1fr)] overflow-hidden max-md:grid-cols-1\">\n <nav\n className=\"grid min-h-0 auto-rows-min content-start overflow-auto border-r border-border/80 bg-card/35 pr-2 max-md:max-h-80 max-md:border-b max-md:border-r-0\"\n aria-label=\"Trace timeline\"\n >\n <div className=\"sticky top-0 z-30 flex min-h-11 items-center justify-between bg-card/90 py-0 pl-0 pr-5 text-xs font-medium text-muted-foreground backdrop-blur\">\n <span>Search</span>\n <strong className=\"text-foreground\">Timeline</strong>\n </div>\n {orderedTraces.map((trace) => {\n const traceActive = activeTrace.id === trace.id;\n const traceTurnItems = traceTurns(trace);\n return (\n <div className=\"contents\" key={trace.id}>\n <TraceTreeRow\n active={traceActive && activeKey === \"trace\"}\n ancestorLevels={[]}\n hasChildren={true}\n isLastSibling={true}\n level={0}\n tone=\"trace\"\n title={trace.name ?? \"Agent\"}\n subtitle={formatDuration(trace.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, \"trace\")}\n />\n <TraceTreeRow\n active={traceActive && activeKey === \"agent\"}\n ancestorLevels={[]}\n hasChildren={traceTurnItems.length > 0}\n isLastSibling={true}\n level={1}\n tone=\"agent\"\n title=\"agent.run\"\n subtitle={formatDuration(trace.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, \"agent\")}\n />\n {traceTurnItems.map((turn) => (\n <div className=\"contents\" key={`${trace.id}:turn:${turn.turn}`}>\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={2}\n tone=\"turn\"\n title={`turn.${turn.turn}`}\n subtitle={formatDuration(turn.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, `turn:${turn.turn}`)}\n />\n <TraceObservationRows\n activeKey={activeKey}\n isLastTurn={turn.turn === traceTurnItems.at(-1)?.turn}\n observations={turn.observations}\n onSelect={(observationId) =>\n selectTimelineItem(trace.id, `observation:${observationId}`)\n }\n traceActive={traceActive}\n />\n </div>\n ))}\n </div>\n );\n })}\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 onSelect: () => void;\n}) {\n const levelOffset = 22;\n const baseLeft = 12;\n const iconSize = 20;\n const iconCenter = baseLeft + iconSize / 2;\n const lineTop = 18;\n const xForLevel = (level: number) => iconCenter + level * levelOffset;\n\n return (\n <Button\n className={cn(\n \"relative grid h-auto min-h-0 w-full min-w-0 grid-cols-[20px_minmax(0,1fr)] items-start justify-start gap-2 whitespace-normal rounded-lg border-0 bg-transparent px-3 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:bg-accent/70 hover:text-accent-foreground\",\n props.active && \"bg-primary/10 text-primary hover:bg-primary/10 hover:text-primary\",\n )}\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onSelect}\n style={{ paddingLeft: `${baseLeft + props.level * levelOffset}px` }}\n >\n {props.ancestorLevels.map((level) => (\n <span\n className=\"pointer-events-none absolute inset-y-0 w-px bg-muted-foreground/35\"\n style={{ left: `${xForLevel(level)}px` }}\n aria-hidden=\"true\"\n key={`ancestor-line-${level}`}\n />\n ))}\n {props.level > 0 ? (\n <>\n <span\n className=\"pointer-events-none absolute top-0 w-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level - 1)}px`,\n height: `${lineTop}px`,\n }}\n aria-hidden=\"true\"\n />\n {props.isLastSibling ? null : (\n <span\n className=\"pointer-events-none absolute bottom-0 w-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level - 1)}px`,\n top: `${lineTop}px`,\n }}\n aria-hidden=\"true\"\n />\n )}\n <span\n className=\"pointer-events-none absolute h-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level - 1)}px`,\n top: `${lineTop}px`,\n width: `${levelOffset}px`,\n }}\n aria-hidden=\"true\"\n />\n </>\n ) : null}\n {props.hasChildren ? (\n <span\n className=\"pointer-events-none absolute bottom-0 w-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level)}px`,\n top: `${lineTop}px`,\n }}\n aria-hidden=\"true\"\n />\n ) : null}\n <span\n className={cn(\n \"relative z-10 grid h-5 w-5 place-items-center rounded-lg bg-transparent [&_svg]:h-3 [&_svg]:w-3 [&_svg]:opacity-100\",\n traceToneIconClass(props.tone),\n )}\n >\n <TraceToneIcon tone={props.tone} />\n </span>\n <span className=\"grid min-w-0 gap-0.5\">\n <strong className=\"min-w-0 truncate text-sm font-medium leading-5 text-current\">\n {props.title}\n </strong>\n <span className=\"min-w-0 truncate text-xs font-medium text-muted-foreground\">\n {props.subtitle}\n </span>\n </span>\n </Button>\n );\n}\n\nfunction TraceObservationRows(props: {\n activeKey: TraceInspectorKey;\n isLastTurn: boolean;\n observations: TraceObservationItem[];\n traceActive: boolean;\n onSelect: (observationId: 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 ? [] : [1]}\n isLastSibling={index === roots.length - 1}\n key={node.observation.id}\n level={3}\n node={node}\n onSelect={props.onSelect}\n traceActive={props.traceActive}\n />\n ))}\n </>\n );\n}\n\nfunction TraceObservationNodeRow(props: {\n activeKey: TraceInspectorKey;\n ancestorLevels: number[];\n isLastSibling: boolean;\n level: number;\n node: TraceObservationNode;\n traceActive: boolean;\n onSelect: (observationId: string) => void;\n}) {\n const usageText = observationUsageText(props.node.observation);\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 onSelect={() => props.onSelect(props.node.observation.id)}\n />\n {props.node.children.map((child, index) => (\n <TraceObservationNodeRow\n activeKey={props.activeKey}\n ancestorLevels={childAncestorLevels}\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 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-card/70\"\n aria-label=\"Trace detail\"\n >\n <header className=\"border-b border-border/60 bg-card/70 px-6 py-5\">\n <div className=\"grid min-w-0 gap-5\">\n <div className=\"flex min-w-0 items-start justify-between gap-4\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <span\n className={cn(\n \"grid h-8 w-8 shrink-0 place-items-center rounded-lg bg-primary text-primary-foreground [&_svg]:h-4 [&_svg]:w-4 [&_svg]:opacity-100\",\n selected.tone !== \"trace\" && \"bg-muted text-foreground\",\n traceToneIconClass(selected.tone),\n )}\n >\n <TraceToneIcon tone={selected.tone} />\n </span>\n <div className=\"grid min-w-0 gap-1\">\n <h2 className=\"m-0 min-w-0 truncate text-2xl font-semibold leading-none tracking-[-0.01em] text-foreground\">\n {selected.title}\n </h2>\n <div className=\"font-mono text-xs font-medium text-muted-foreground\">\n {selected.startedAt}\n </div>\n </div>\n </div>\n </div>\n <div className=\"grid min-w-0 grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2\">\n <TraceMetric label=\"Duration\" value={formatDuration(selected.durationMs)} />\n {selected.firstDeltaMs === undefined ? null : (\n <TraceMetric label=\"First delta\" value={formatDuration(selected.firstDeltaMs)} />\n )}\n {selected.usage.length === 0 ? null : (\n <TraceMetric label=\"Usage\" value={selected.usage} />\n )}\n <button\n className=\"grid min-w-0 gap-1 rounded-lg bg-card/85 px-4 py-3 text-left transition duration-200 hover:bg-accent hover:text-accent-foreground\"\n type=\"button\"\n onClick={() => props.onShowSessionTraces(props.trace.sessionId)}\n >\n <span className=\"font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Session\n </span>\n <span className=\"min-w-0 truncate font-mono text-sm font-semibold text-current\">\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 <TraceDataSection title=\"Input\" value={selected.input} />\n )}\n {selected.output === undefined ? null : (\n <TraceDataSection title=\"Output\" value={selected.output} tone=\"success\" />\n )}\n {selected.error === undefined ? null : (\n <TraceDataSection title=\"Error\" value={selected.error} tone=\"error\" />\n )}\n <TraceDataSection title=\"Metadata\" value={selected.metadata} rawJson />\n </div>\n </div>\n </section>\n );\n}\n\nfunction TraceMetric(props: { label: string; value: string }) {\n return (\n <div className=\"grid min-w-0 gap-1 rounded-lg bg-card/85 px-4 py-3\">\n <span className=\"font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"min-w-0 truncate font-mono text-sm font-semibold text-foreground\">\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction TraceDataSection(props: {\n title: string;\n value: unknown;\n tone?: \"success\" | \"error\";\n compact?: boolean;\n rawJson?: boolean;\n}) {\n const rows = plainTraceValue(props.title, props.value);\n return (\n <section className=\"grid min-w-0 gap-3\">\n <div className=\"flex items-center gap-3\">\n <h3 className=\"m-0 text-lg font-semibold leading-tight text-foreground\">{props.title}</h3>\n <span className=\"h-px flex-1 bg-border/80\" aria-hidden=\"true\" />\n </div>\n {props.rawJson ? (\n <TraceJsonTree value={props.value} />\n ) : (\n <div className=\"grid min-w-0 gap-3\">\n {rows.map((item) => (\n <article\n className={cn(\n \"grid min-w-0 gap-3 rounded-lg bg-card/85 px-4 py-4\",\n props.compact &&\n \"grid-cols-[150px_minmax(0,1fr)] items-start gap-4 max-lg:grid-cols-1\",\n )}\n key={`${item.label}-${item.text}`}\n >\n <span className=\"flex min-w-0 items-center gap-2 font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n <TraceRowIcon label={item.label} />\n {item.label}\n </span>\n <TraceRowContent compact={props.compact} item={item} tone={props.tone} />\n </article>\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction TraceRowContent(props: {\n compact?: boolean | undefined;\n item: { label: string; text: string };\n tone?: \"success\" | \"error\" | undefined;\n}) {\n const historyItems = conversationHistoryItems(props.item);\n if (historyItems.length > 0) {\n return (\n <div className=\"grid min-w-0 gap-5\">\n {historyItems.map((item) => (\n <div className=\"grid min-w-0 gap-2\" key={`${item.index}-${item.role}-${item.text}`}>\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"font-mono text-xs font-semibold tabular-nums text-muted-foreground\">\n {item.index}\n </span>\n <Badge\n className={cn(\n \"px-1.5 py-0.5\",\n item.role === \"User\" && \"border-chart-2/40 bg-chart-2/15 text-chart-2\",\n item.role === \"Assistant\" && \"border-chart-1/40 bg-chart-1/15 text-chart-1\",\n item.role === \"Tool\" && \"border-chart-5/40 bg-chart-5/15 text-chart-5\",\n )}\n >\n {item.role}\n </Badge>\n </div>\n <p className=\"m-0 whitespace-pre-wrap text-[15px] leading-7 text-foreground [overflow-wrap:anywhere]\">\n {item.text}\n </p>\n </div>\n ))}\n </div>\n );\n }\n\n return (\n <p\n className={cn(\n \"m-0 whitespace-pre-wrap text-[15px] leading-7 text-foreground [overflow-wrap:anywhere]\",\n props.compact && \"font-mono text-[13px] leading-6\",\n props.tone === \"success\" && !isNeutralTraceRow(props.item) && \"text-primary\",\n props.tone === \"error\" && \"text-destructive\",\n )}\n >\n {props.item.text}\n </p>\n );\n}\n\nfunction conversationHistoryItems(row: {\n label: string;\n text: string;\n}): Array<{ index: string; role: string; text: string }> {\n if (!row.label.startsWith(\"Conversation history\")) {\n return [];\n }\n return row.text\n .split(\"\\n\\n\")\n .flatMap((block): Array<{ index: string; role: string; text: string }> => {\n const [heading, ...content] = block.split(\"\\n\");\n const match = /^(\\d+)\\.\\s+(.+)$/.exec(heading ?? \"\");\n if (match === null) {\n return [];\n }\n return [\n {\n index: match[1] ?? \"\",\n role: match[2] ?? \"Message\",\n text: content.join(\"\\n\"),\n },\n ];\n });\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,14],"mappings":"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"}
1
+ {"version":3,"file":"trace-browser-KsF4pJ1E.js","names":["a","e","o","n","a","r","a","f","s","e","a","i","s","a","m","s","t","i","c","e","ScrollArea","Fragment"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/ArrowBendUpLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/Cpu.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/GearSix.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/GitBranch.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/ArrowBendUpLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/ArrowLeft.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/CaretRight.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/Cpu.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/GearSix.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/GitBranch.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.12_@types+react-dom@19.2.3_@types+react@19.2.14__@types_c1f4031cac668ca7c695d70e53b3d89d/node_modules/@radix-ui/react-scroll-area/dist/index.mjs","../../../src/ui/app/components/ui/scroll-area.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: \"M236,200a12,12,0,0,1-24,0,84.09,84.09,0,0,0-84-84H61l27.52,27.51a12,12,0,0,1-17,17l-48-48a12,12,0,0,1,0-17l48-48a12,12,0,0,1,17,17L61,92h67A108.12,108.12,0,0,1,236,200Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M80,56v96L32,104Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,96H88V56a8,8,0,0,0-13.66-5.66l-48,48a8,8,0,0,0,0,11.32l48,48A8,8,0,0,0,88,152V112h40a88.1,88.1,0,0,1,88,88,8,8,0,0,0,16,0A104.11,104.11,0,0,0,128,96ZM72,132.69,43.31,104,72,75.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H88v40a8,8,0,0,1-13.66,5.66l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,88,56V96h40A104.11,104.11,0,0,1,232,200Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230,200a6,6,0,0,1-12,0,90.1,90.1,0,0,0-90-90H46.49l37.75,37.76a6,6,0,1,1-8.48,8.48l-48-48a6,6,0,0,1,0-8.48l48-48a6,6,0,0,1,8.48,8.48L46.49,98H128A102.12,102.12,0,0,1,230,200Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,85.66,61.66L51.31,96H128A104.11,104.11,0,0,1,232,200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,200a4,4,0,0,1-8,0,92.1,92.1,0,0,0-92-92H41.66l41.17,41.17a4,4,0,0,1-5.66,5.66l-48-48a4,4,0,0,1,0-5.66l48-48a4,4,0,0,1,5.66,5.66L41.66,100H128A100.11,100.11,0,0,1,228,200Z\" }))\n ]\n]);\nexport {\n a 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: \"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 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 a from \"react\";\nconst H = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M156,88H100a12,12,0,0,0-12,12v56a12,12,0,0,0,12,12h56a12,12,0,0,0,12-12V100A12,12,0,0,0,156,88Zm-12,56H112V112h32Zm88-4H220V116h12a12,12,0,0,0,0-24H220V56a20,20,0,0,0-20-20H164V24a12,12,0,0,0-24,0V36H116V24a12,12,0,0,0-24,0V36H56A20,20,0,0,0,36,56V92H24a12,12,0,0,0,0,24H36v24H24a12,12,0,0,0,0,24H36v36a20,20,0,0,0,20,20H92v12a12,12,0,0,0,24,0V220h24v12a12,12,0,0,0,24,0V220h36a20,20,0,0,0,20-20V164h12a12,12,0,0,0,0-24Zm-36,56H60V60H196Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M200,48H56a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V56A8,8,0,0,0,200,48ZM152,152H104V104h48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,98H104a6,6,0,0,0-6,6v48a6,6,0,0,0,6,6h48a6,6,0,0,0,6-6V104A6,6,0,0,0,152,98Zm-6,48H110V110h36Zm86,0H214V110h18a6,6,0,0,0,0-12H214V56a14,14,0,0,0-14-14H158V24a6,6,0,0,0-12,0V42H110V24a6,6,0,0,0-12,0V42H56A14,14,0,0,0,42,56V98H24a6,6,0,0,0,0,12H42v36H24a6,6,0,0,0,0,12H42v42a14,14,0,0,0,14,14H98v18a6,6,0,0,0,12,0V214h36v18a6,6,0,0,0,12,0V214h42a14,14,0,0,0,14-14V158h18a6,6,0,0,0,0-12Zm-30,54a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M152,100H104a4,4,0,0,0-4,4v48a4,4,0,0,0,4,4h48a4,4,0,0,0,4-4V104A4,4,0,0,0,152,100Zm-4,48H108V108h40Zm84,0H212V108h20a4,4,0,0,0,0-8H212V56a12,12,0,0,0-12-12H156V24a4,4,0,0,0-8,0V44H108V24a4,4,0,0,0-8,0V44H56A12,12,0,0,0,44,56v44H24a4,4,0,0,0,0,8H44v40H24a4,4,0,0,0,0,8H44v44a12,12,0,0,0,12,12h44v20a4,4,0,0,0,8,0V212h40v20a4,4,0,0,0,8,0V212h44a12,12,0,0,0,12-12V156h20a4,4,0,0,0,0-8Zm-28,52a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n H 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: \"M128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,80a28,28,0,1,1,28-28A28,28,0,0,1,128,156Zm113.86-49.57A12,12,0,0,0,236,98.34L208.21,82.49l-.11-31.31a12,12,0,0,0-4.25-9.12,116,116,0,0,0-38-21.41,12,12,0,0,0-9.68.89L128,37.27,99.83,21.53a12,12,0,0,0-9.7-.9,116.06,116.06,0,0,0-38,21.47,12,12,0,0,0-4.24,9.1l-.14,31.34L20,98.35a12,12,0,0,0-5.85,8.11,110.7,110.7,0,0,0,0,43.11A12,12,0,0,0,20,157.66l27.82,15.85.11,31.31a12,12,0,0,0,4.25,9.12,116,116,0,0,0,38,21.41,12,12,0,0,0,9.68-.89L128,218.73l28.14,15.74a12,12,0,0,0,9.7.9,116.06,116.06,0,0,0,38-21.47,12,12,0,0,0,4.24-9.1l.14-31.34,27.81-15.81a12,12,0,0,0,5.85-8.11A110.7,110.7,0,0,0,241.86,106.43Zm-22.63,33.18-26.88,15.28a11.94,11.94,0,0,0-4.55,4.59c-.54,1-1.11,1.93-1.7,2.88a12,12,0,0,0-1.83,6.31L184.13,199a91.83,91.83,0,0,1-21.07,11.87l-27.15-15.19a12,12,0,0,0-5.86-1.53h-.29c-1.14,0-2.3,0-3.44,0a12.08,12.08,0,0,0-6.14,1.51L93,210.82A92.27,92.27,0,0,1,71.88,199l-.11-30.24a12,12,0,0,0-1.83-6.32c-.58-.94-1.16-1.91-1.7-2.88A11.92,11.92,0,0,0,63.7,155L36.8,139.63a86.53,86.53,0,0,1,0-23.24l26.88-15.28a12,12,0,0,0,4.55-4.58c.54-1,1.11-1.94,1.7-2.89a12,12,0,0,0,1.83-6.31L71.87,57A91.83,91.83,0,0,1,92.94,45.17l27.15,15.19a11.92,11.92,0,0,0,6.15,1.52c1.14,0,2.3,0,3.44,0a12.08,12.08,0,0,0,6.14-1.51L163,45.18A92.27,92.27,0,0,1,184.12,57l.11,30.24a12,12,0,0,0,1.83,6.32c.58.94,1.16,1.91,1.7,2.88A11.92,11.92,0,0,0,192.3,101l26.9,15.33A86.53,86.53,0,0,1,219.23,139.61Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M230.1,108.76,198.25,90.62c-.64-1.16-1.31-2.29-2-3.41l-.12-36A104.61,104.61,0,0,0,162,32L130,49.89c-1.34,0-2.69,0-4,0L94,32A104.58,104.58,0,0,0,59.89,51.25l-.16,36c-.7,1.12-1.37,2.26-2,3.41l-31.84,18.1a99.15,99.15,0,0,0,0,38.46l31.85,18.14c.64,1.16,1.31,2.29,2,3.41l.12,36A104.61,104.61,0,0,0,94,224l32-17.87c1.34,0,2.69,0,4,0L162,224a104.58,104.58,0,0,0,34.08-19.25l.16-36c.7-1.12,1.37-2.26,2-3.41l31.84-18.1A99.15,99.15,0,0,0,230.1,108.76ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A111.92,111.92,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.63a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.1,8.1,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8,8,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.94,107.21a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A111.92,111.92,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.63a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,82a46,46,0,1,0,46,46A46.06,46.06,0,0,0,128,82Zm0,80a34,34,0,1,1,34-34A34,34,0,0,1,128,162Zm108-54.4a6,6,0,0,0-2.92-4L202.64,86.22l-.42-.71L202.1,51.2A6,6,0,0,0,200,46.64a110.12,110.12,0,0,0-36.07-20.31,6,6,0,0,0-4.84.45L128.46,43.86h-1L96.91,26.76a6,6,0,0,0-4.86-.44A109.92,109.92,0,0,0,56,46.68a6,6,0,0,0-2.12,4.55l-.16,34.34c-.14.23-.28.47-.41.71L22.91,103.57A6,6,0,0,0,20,107.62a104.81,104.81,0,0,0,0,40.78,6,6,0,0,0,2.92,4l30.42,17.33.42.71.12,34.31A6,6,0,0,0,56,209.36a110.12,110.12,0,0,0,36.07,20.31,6,6,0,0,0,4.84-.45l30.61-17.08h1l30.56,17.1A6.09,6.09,0,0,0,162,230a5.83,5.83,0,0,0,1.93-.32,109.92,109.92,0,0,0,36-20.36,6,6,0,0,0,2.12-4.55l.16-34.34c.14-.23.28-.47.41-.71l30.42-17.29a6,6,0,0,0,2.92-4.05A104.81,104.81,0,0,0,236,107.6Zm-11.25,35.79L195.32,160.1a6.07,6.07,0,0,0-2.28,2.3c-.59,1-1.21,2.11-1.86,3.14a6,6,0,0,0-.91,3.16l-.16,33.21a98.15,98.15,0,0,1-27.52,15.53L133,200.88a6,6,0,0,0-2.93-.77h-.14c-1.24,0-2.5,0-3.74,0a6,6,0,0,0-3.07.76L93.45,217.43a98,98,0,0,1-27.56-15.49l-.12-33.17a6,6,0,0,0-.91-3.16c-.64-1-1.27-2.08-1.86-3.14a6,6,0,0,0-2.27-2.3L31.3,143.4a93,93,0,0,1,0-30.79L60.68,95.9A6.07,6.07,0,0,0,63,93.6c.59-1,1.21-2.11,1.86-3.14a6,6,0,0,0,.91-3.16l.16-33.21A98.15,98.15,0,0,1,93.41,38.56L123,55.12a5.81,5.81,0,0,0,3.07.76c1.24,0,2.5,0,3.74,0a6,6,0,0,0,3.07-.76l29.65-16.56a98,98,0,0,1,27.56,15.49l.12,33.17a6,6,0,0,0,.91,3.16c.64,1,1.27,2.08,1.86,3.14a6,6,0,0,0,2.27,2.3L224.7,112.6A93,93,0,0,1,224.73,143.39Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A112.1,112.1,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.62a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.08,8.08,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8.08,8.08,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,80a36,36,0,1,1,36-36A36,36,0,0,1,128,164Zm106-56a4,4,0,0,0-2-2.7l-30.89-17.6q-.47-.82-1-1.62L200.1,51.2a3.94,3.94,0,0,0-1.42-3,107.8,107.8,0,0,0-35.41-19.94,4,4,0,0,0-3.23.29L129,45.87h-2l-31-17.36a4,4,0,0,0-3.23-.3,108.05,108.05,0,0,0-35.39,20,4,4,0,0,0-1.41,3l-.16,34.9-1,1.62L23.9,105.3A4,4,0,0,0,22,108a102.76,102.76,0,0,0,0,40,4,4,0,0,0,1.95,2.7l30.89,17.6q.47.83,1,1.62l.12,34.87a3.94,3.94,0,0,0,1.42,3,107.8,107.8,0,0,0,35.41,19.94,4,4,0,0,0,3.23-.29L127,210.13h2l31,17.36a4,4,0,0,0,3.23.3,108.05,108.05,0,0,0,35.39-20,4,4,0,0,0,1.41-3l.16-34.9,1-1.62L232.1,150.7a4,4,0,0,0,2-2.71A102.76,102.76,0,0,0,234,108Zm-7.48,36.67L196.3,161.84a4,4,0,0,0-1.51,1.53c-.61,1.09-1.25,2.17-1.91,3.24a3.92,3.92,0,0,0-.61,2.1l-.16,34.15a99.8,99.8,0,0,1-29.7,16.77l-30.4-17a4.06,4.06,0,0,0-2-.51H130c-1.28,0-2.57,0-3.84,0a4.1,4.1,0,0,0-2.05.51l-30.45,17A100.23,100.23,0,0,1,63.89,202.9l-.12-34.12a3.93,3.93,0,0,0-.61-2.11c-.66-1-1.3-2.14-1.91-3.23a4,4,0,0,0-1.51-1.53L29.49,144.68a94.78,94.78,0,0,1,0-33.34L59.7,94.16a4,4,0,0,0,1.51-1.53c.61-1.09,1.25-2.17,1.91-3.23a4,4,0,0,0,.61-2.11l.16-34.15a99.8,99.8,0,0,1,29.7-16.77l30.4,17a4.1,4.1,0,0,0,2.05.51c1.28,0,2.57,0,3.84,0a4,4,0,0,0,2.05-.51l30.45-17A100.23,100.23,0,0,1,192.11,53.1l.12,34.12a3.93,3.93,0,0,0,.61,2.11c.66,1,1.3,2.14,1.91,3.23a4,4,0,0,0,1.51,1.53l30.25,17.23A94.78,94.78,0,0,1,226.54,144.66Z\" }))\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: \"M236,64a36,36,0,1,0-48,33.94V112a4,4,0,0,1-4,4H96a27.8,27.8,0,0,0-4,.29V97.94a36,36,0,1,0-24,0v60.12a36,36,0,1,0,24,0V144a4,4,0,0,1,4-4h88a28,28,0,0,0,28-28V97.94A36.07,36.07,0,0,0,236,64ZM80,52A12,12,0,1,1,68,64,12,12,0,0,1,80,52Zm0,152a12,12,0,1,1,12-12A12,12,0,0,1,80,204ZM200,76a12,12,0,1,1,12-12A12,12,0,0,1,200,76Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,64a24,24,0,1,1-24-24A24,24,0,0,1,224,64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M230,64a30,30,0,1,0-36,29.4V112a10,10,0,0,1-10,10H96a21.84,21.84,0,0,0-10,2.42v-31a30,30,0,1,0-12,0v69.2a30,30,0,1,0,12,0V144a10,10,0,0,1,10-10h88a22,22,0,0,0,22-22V93.4A30.05,30.05,0,0,0,230,64ZM62,64A18,18,0,1,1,80,82,18,18,0,0,1,62,64ZM98,192a18,18,0,1,1-18-18A18,18,0,0,1,98,192ZM200,82a18,18,0,1,1,18-18A18,18,0,0,1,200,82Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,64a28,28,0,1,0-32,27.71V112a12,12,0,0,1-12,12H96a19.91,19.91,0,0,0-12,4V91.71a28,28,0,1,0-8,0v72.58a28,28,0,1,0,8,0V144a12,12,0,0,1,12-12h88a20,20,0,0,0,20-20V91.71A28,28,0,0,0,228,64ZM60,64A20,20,0,1,1,80,84,20,20,0,0,1,60,64Zm40,128a20,20,0,1,1-20-20A20,20,0,0,1,100,192ZM200,84a20,20,0,1,1,20-20A20,20,0,0,1,200,84Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/ArrowBendUpLeft.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(n, { ref: t, ...r, weights: a }));\no.displayName = \"ArrowBendUpLeftIcon\";\nconst p = o;\nexport {\n p as ArrowBendUpLeft,\n o as ArrowBendUpLeftIcon\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 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 a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Cpu.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"CpuIcon\";\nconst s = e;\nexport {\n s as Cpu,\n e as CpuIcon\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport i from \"../defs/GearSix.es.js\";\nconst o = e.forwardRef((r, a) => /* @__PURE__ */ e.createElement(t, { ref: a, ...r, weights: i }));\no.displayName = \"GearSixIcon\";\nconst s = o;\nexport {\n s as GearSix,\n o as GearSixIcon\n};\n","import * as o from \"react\";\nimport c from \"../lib/IconBase.es.js\";\nimport e from \"../defs/GitBranch.es.js\";\nconst r = o.forwardRef((t, a) => /* @__PURE__ */ o.createElement(c, { ref: a, ...t, weights: e }));\nr.displayName = \"GitBranchIcon\";\nconst m = r;\nexport {\n m as GitBranch,\n r as GitBranchIcon\n};\n","import {\n ArrowBendUpLeft,\n CaretDown,\n CaretRight,\n ChatText,\n Cpu,\n GearSix,\n GitBranch,\n Path,\n Robot,\n Wrench,\n} from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport type { StudioTrace } from \"../../../../types\";\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 bg-card/85 px-4 py-4 font-mono text-[13px] leading-6 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-accent/45 hover:text-accent-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 ? <CaretDown aria-hidden=\"true\" /> : <CaretRight aria-hidden=\"true\" />}\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=\"text-chart-2\">{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=\"text-primary\">{JSON.stringify(props.value)}</span>;\n }\n if (typeof props.value === \"number\") {\n return <span className=\"text-chart-1\">{String(props.value)}</span>;\n }\n if (typeof props.value === \"boolean\") {\n return <span className=\"text-chart-4\">{String(props.value)}</span>;\n }\n if (props.value === null) {\n return <span className=\"text-muted-foreground\">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 <GearSix aria-hidden=\"true\" className={className} />;\n case \"Prompt\":\n return <ChatText aria-hidden=\"true\" className={className} />;\n case \"Output\":\n case \"Assistant output\":\n return <ArrowBendUpLeft 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 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 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 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 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 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 model: metadata.model,\n requestedModel: metadata.requestedModel,\n defaultModel: metadata.defaultModel,\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 additionalParamKeys: metadata.additionalParamKeys,\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 === \"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 statusDotClass(status: StudioTrace[\"status\"]): string {\n switch (status) {\n case \"success\":\n return \"bg-primary\";\n case \"error\":\n return \"bg-destructive\";\n case \"running\":\n return \"bg-chart-2\";\n }\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 <Path aria-hidden=\"true\" />;\n case \"agent\":\n return <Robot aria-hidden=\"true\" />;\n case \"turn\":\n return <GitBranch aria-hidden=\"true\" />;\n case \"generation\":\n return <Cpu aria-hidden=\"true\" />;\n case \"tool\":\n return <Wrench 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-primary text-background\";\n case \"agent\":\n return \"bg-chart-2 text-background\";\n case \"turn\":\n return \"bg-chart-4 text-background\";\n case \"generation\":\n return \"bg-chart-1 text-background\";\n case \"tool\":\n return \"bg-chart-5 text-background\";\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 \"rounded-xl border border-border/80 bg-card/95 text-card-foreground shadow-sm shadow-black/20\",\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.5 p-4\", className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"p-4 pt-0\", className)} {...props} />;\n}\n","\"use client\";\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\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 = React2.forwardRef(\n (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, (node) => setScrollArea(node));\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 }\n);\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = React2.forwardRef(\n (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 }\n);\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar ScrollAreaViewportStyle = React2.memo(\n ({ 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 },\n (prevProps, nextProps) => prevProps.nonce === nextProps.nonce\n);\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = React2.forwardRef(\n (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 }\n);\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = React2.forwardRef((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 = () => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = () => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n };\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});\nvar ScrollAreaScrollbarScroll = React2.forwardRef((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 = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\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});\nvar ScrollAreaScrollbarAuto = React2.forwardRef((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});\nvar ScrollAreaScrollbarVisible = React2.forwardRef((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: (thumb) => thumbRef.current = thumb,\n onThumbPointerUp: () => pointerOffsetRef.current = 0,\n onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\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});\nvar ScrollAreaScrollbarX = React2.forwardRef((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});\nvar ScrollAreaScrollbarY = React2.forwardRef((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});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = React2.forwardRef((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, (node) => setScrollbar(node));\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 React2.useEffect(() => {\n const handleWheel = (event) => {\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\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});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = React2.forwardRef(\n (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 }\n);\nvar ScrollAreaThumbImpl = React2.forwardRef(\n (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(\n forwardedRef,\n (node) => scrollbarContext.onThumbChange(node)\n );\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 = () => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\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 }\n);\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = React2.forwardRef(\n (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 }\n);\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = React2.forwardRef((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 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 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});\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\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}\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}\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}\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}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = () => {\n}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n};\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}\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}\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]\">\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-lg bg-muted-foreground/40\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n","import { ArrowLeft } from \"@phosphor-icons/react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n firstDeltaMsFromObservations,\n isNeutralTraceRow,\n observationUsageText,\n plainTraceValue,\n selectedTraceDetail,\n statusDotClass,\n TraceJsonTree,\n type TraceObservationNode,\n TraceRowIcon,\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 { ScrollArea } from \"../../components/ui/scroll-area\";\nimport { cn } from \"../../lib/utils\";\nimport { emptyFallback, formatDuration, formatTraceDate, traceAgentLabel } from \"../shared/format\";\nimport type { TraceInspectorKey, TraceLoadState, TraceObservationItem } from \"../shared/types\";\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 <div className=\"w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground\">\n Tracing is disabled\n </div>\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\n className=\"grid h-full min-h-0 w-full content-stretch pb-6 pl-0 pr-6\"\n aria-label=\"Tracing\"\n >\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 return (\n <Card\n className=\"min-h-0 overflow-hidden rounded-xl border-border/80 bg-card/80\"\n aria-label=\"Traces\"\n >\n <ScrollArea className=\"h-full min-h-0\">\n <div className=\"grid min-w-280 gap-1 p-2\">\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 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] 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.traceLoadState === \"loading\" && props.traces.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n Loading traces\n </div>\n ) : null}\n {props.traceLoadState === \"idle\" && props.traces.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n No traces found\n </div>\n ) : null}\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-lg border border-transparent bg-transparent px-4 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:border-primary/20 hover:bg-accent/70 hover:text-accent-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 font-mono text-xs font-medium text-muted-foreground\">\n {trace.id}\n </span>\n <span className=\"min-w-0 truncate font-mono text-xs font-medium\">\n {trace.sessionId}\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {traceAgentLabel(props.agents, trace)}\n </span>\n <span className=\"flex min-w-0 items-center gap-2 text-xs font-medium capitalize\">\n <span\n className={cn(\"h-2.5 w-2.5 shrink-0 rounded-lg\", statusDotClass(trace.status))}\n />\n <span className=\"min-w-0 truncate\">{trace.status}</span>\n </span>\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 return (\n <div className=\"grid h-full min-h-0 min-w-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm\">\n <header className=\"grid min-h-16 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 overflow-hidden rounded-lg border border-border/60 bg-card/95 px-4 py-3\">\n <Button\n aria-label=\"Back to traces\"\n className=\"h-8 min-h-8 w-8 text-muted-foreground hover:text-foreground\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onBack}\n >\n <ArrowLeft aria-hidden=\"true\" />\n </Button>\n <div className=\"grid min-w-0 gap-1\">\n <strong className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {props.selectedTrace?.name ?? \"Trace detail\"}\n </strong>\n <span className=\"flex min-w-0 items-center gap-2 overflow-hidden text-xs font-medium text-muted-foreground\">\n {props.selectedTrace === undefined ? (\n props.traceLoadState === \"loading\" ? (\n \"Loading trace\"\n ) : (\n \"Trace not found\"\n )\n ) : (\n <>\n <span\n className={cn(\n \"h-2 w-2 shrink-0 rounded-lg\",\n statusDotClass(props.selectedTrace.status),\n )}\n />\n <span className=\"shrink-0 capitalize\">{props.selectedTrace.status}</span>\n <span className=\"shrink-0\" aria-hidden=\"true\">\n /\n </span>\n <span className=\"min-w-0 flex-1 truncate\">\n Session{\" \"}\n <span className=\"font-mono font-semibold\">{props.selectedTrace.sessionId}</span>\n </span>\n </>\n )}\n </span>\n </div>\n <span className=\"hidden max-w-[42vw] truncate rounded-lg bg-muted px-2 py-1 font-mono text-xs font-medium text-muted-foreground md:block\">\n {props.selectedTraceId}\n </span>\n </header>\n <div className=\"min-h-0 min-w-0 overflow-hidden\">\n {props.selectedTrace === undefined ? (\n <Card className=\"grid h-full place-items-center rounded-lg border-border bg-card p-6 text-sm font-medium text-muted-foreground\">\n {props.traceLoadState === \"loading\" ? \"Loading trace\" : \"Trace not found\"}\n </Card>\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 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>(\"trace\");\n useEffect(() => {\n setActiveTraceId(firstTraceId);\n setActiveKey(\"trace\");\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\n if (activeTrace === undefined) {\n return (\n <section\n className=\"grid h-full min-h-0 w-full place-items-center text-sm font-medium text-muted-foreground\"\n aria-label=\"Traces\"\n >\n No trace selected\n </section>\n );\n }\n\n return (\n <section\n className=\"grid h-full min-h-0 w-full content-stretch overflow-hidden\"\n aria-label=\"Traces\"\n >\n <div className=\"grid h-full min-h-0 grid-cols-[320px_minmax(0,1fr)] overflow-hidden max-md:grid-cols-1\">\n <nav\n className=\"grid min-h-0 auto-rows-min content-start overflow-auto border-r border-border/80 bg-card/35 pr-2 max-md:max-h-80 max-md:border-b max-md:border-r-0\"\n aria-label=\"Trace timeline\"\n >\n <div className=\"sticky top-0 z-30 flex min-h-11 items-center justify-between bg-card/90 py-0 pl-0 pr-5 text-xs font-medium text-muted-foreground backdrop-blur\">\n <span>Search</span>\n <strong className=\"text-foreground\">Timeline</strong>\n </div>\n {orderedTraces.map((trace) => {\n const traceActive = activeTrace.id === trace.id;\n const traceTurnItems = traceTurns(trace);\n return (\n <div className=\"contents\" key={trace.id}>\n <TraceTreeRow\n active={traceActive && activeKey === \"trace\"}\n ancestorLevels={[]}\n hasChildren={true}\n isLastSibling={true}\n level={0}\n tone=\"trace\"\n title={trace.name ?? \"Agent\"}\n subtitle={formatDuration(trace.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, \"trace\")}\n />\n <TraceTreeRow\n active={traceActive && activeKey === \"agent\"}\n ancestorLevels={[]}\n hasChildren={traceTurnItems.length > 0}\n isLastSibling={true}\n level={1}\n tone=\"agent\"\n title=\"agent.run\"\n subtitle={formatDuration(trace.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, \"agent\")}\n />\n {traceTurnItems.map((turn) => (\n <div className=\"contents\" key={`${trace.id}:turn:${turn.turn}`}>\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={2}\n tone=\"turn\"\n title={`turn.${turn.turn}`}\n subtitle={formatDuration(turn.durationMs)}\n onSelect={() => selectTimelineItem(trace.id, `turn:${turn.turn}`)}\n />\n <TraceObservationRows\n activeKey={activeKey}\n isLastTurn={turn.turn === traceTurnItems.at(-1)?.turn}\n observations={turn.observations}\n onSelect={(observationId) =>\n selectTimelineItem(trace.id, `observation:${observationId}`)\n }\n traceActive={traceActive}\n />\n </div>\n ))}\n </div>\n );\n })}\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 onSelect: () => void;\n}) {\n const levelOffset = 22;\n const baseLeft = 12;\n const iconSize = 20;\n const iconCenter = baseLeft + iconSize / 2;\n const lineTop = 18;\n const xForLevel = (level: number) => iconCenter + level * levelOffset;\n\n return (\n <Button\n className={cn(\n \"relative grid h-auto min-h-0 w-full min-w-0 grid-cols-[20px_minmax(0,1fr)] items-start justify-start gap-2 whitespace-normal rounded-lg border-0 bg-transparent px-3 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:bg-accent/70 hover:text-accent-foreground\",\n props.active && \"bg-primary/10 text-primary hover:bg-primary/10 hover:text-primary\",\n )}\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onSelect}\n style={{ paddingLeft: `${baseLeft + props.level * levelOffset}px` }}\n >\n {props.ancestorLevels.map((level) => (\n <span\n className=\"pointer-events-none absolute inset-y-0 w-px bg-muted-foreground/35\"\n style={{ left: `${xForLevel(level)}px` }}\n aria-hidden=\"true\"\n key={`ancestor-line-${level}`}\n />\n ))}\n {props.level > 0 ? (\n <>\n <span\n className=\"pointer-events-none absolute top-0 w-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level - 1)}px`,\n height: `${lineTop}px`,\n }}\n aria-hidden=\"true\"\n />\n {props.isLastSibling ? null : (\n <span\n className=\"pointer-events-none absolute bottom-0 w-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level - 1)}px`,\n top: `${lineTop}px`,\n }}\n aria-hidden=\"true\"\n />\n )}\n <span\n className=\"pointer-events-none absolute h-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level - 1)}px`,\n top: `${lineTop}px`,\n width: `${levelOffset}px`,\n }}\n aria-hidden=\"true\"\n />\n </>\n ) : null}\n {props.hasChildren ? (\n <span\n className=\"pointer-events-none absolute bottom-0 w-px bg-muted-foreground/35\"\n style={{\n left: `${xForLevel(props.level)}px`,\n top: `${lineTop}px`,\n }}\n aria-hidden=\"true\"\n />\n ) : null}\n <span\n className={cn(\n \"relative z-10 grid h-5 w-5 place-items-center rounded-lg bg-transparent [&_svg]:h-3 [&_svg]:w-3 [&_svg]:opacity-100\",\n traceToneIconClass(props.tone),\n )}\n >\n <TraceToneIcon tone={props.tone} />\n </span>\n <span className=\"grid min-w-0 gap-0.5\">\n <strong className=\"min-w-0 truncate text-sm font-medium leading-5 text-current\">\n {props.title}\n </strong>\n <span className=\"min-w-0 truncate text-xs font-medium text-muted-foreground\">\n {props.subtitle}\n </span>\n </span>\n </Button>\n );\n}\n\nfunction TraceObservationRows(props: {\n activeKey: TraceInspectorKey;\n isLastTurn: boolean;\n observations: TraceObservationItem[];\n traceActive: boolean;\n onSelect: (observationId: 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 ? [] : [1]}\n isLastSibling={index === roots.length - 1}\n key={node.observation.id}\n level={3}\n node={node}\n onSelect={props.onSelect}\n traceActive={props.traceActive}\n />\n ))}\n </>\n );\n}\n\nfunction TraceObservationNodeRow(props: {\n activeKey: TraceInspectorKey;\n ancestorLevels: number[];\n isLastSibling: boolean;\n level: number;\n node: TraceObservationNode;\n traceActive: boolean;\n onSelect: (observationId: string) => void;\n}) {\n const usageText = observationUsageText(props.node.observation);\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 onSelect={() => props.onSelect(props.node.observation.id)}\n />\n {props.node.children.map((child, index) => (\n <TraceObservationNodeRow\n activeKey={props.activeKey}\n ancestorLevels={childAncestorLevels}\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 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-card/70\"\n aria-label=\"Trace detail\"\n >\n <header className=\"border-b border-border/60 bg-card/70 px-6 py-5\">\n <div className=\"grid min-w-0 gap-5\">\n <div className=\"flex min-w-0 items-start justify-between gap-4\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <span\n className={cn(\n \"grid h-8 w-8 shrink-0 place-items-center rounded-lg bg-primary text-primary-foreground [&_svg]:h-4 [&_svg]:w-4 [&_svg]:opacity-100\",\n selected.tone !== \"trace\" && \"bg-muted text-foreground\",\n traceToneIconClass(selected.tone),\n )}\n >\n <TraceToneIcon tone={selected.tone} />\n </span>\n <div className=\"grid min-w-0 gap-1\">\n <h2 className=\"m-0 min-w-0 truncate text-2xl font-semibold leading-none tracking-[-0.01em] text-foreground\">\n {selected.title}\n </h2>\n <div className=\"font-mono text-xs font-medium text-muted-foreground\">\n {selected.startedAt}\n </div>\n </div>\n </div>\n </div>\n <div className=\"grid min-w-0 grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2\">\n <TraceMetric label=\"Duration\" value={formatDuration(selected.durationMs)} />\n {selected.firstDeltaMs === undefined ? null : (\n <TraceMetric label=\"First delta\" value={formatDuration(selected.firstDeltaMs)} />\n )}\n {selected.usage.length === 0 ? null : (\n <TraceMetric label=\"Usage\" value={selected.usage} />\n )}\n <button\n className=\"grid min-w-0 gap-1 rounded-lg bg-card/85 px-4 py-3 text-left transition duration-200 hover:bg-accent hover:text-accent-foreground\"\n type=\"button\"\n onClick={() => props.onShowSessionTraces(props.trace.sessionId)}\n >\n <span className=\"font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Session\n </span>\n <span className=\"min-w-0 truncate font-mono text-sm font-semibold text-current\">\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 <TraceDataSection title=\"Input\" value={selected.input} />\n )}\n {selected.output === undefined ? null : (\n <TraceDataSection title=\"Output\" value={selected.output} tone=\"success\" />\n )}\n {selected.error === undefined ? null : (\n <TraceDataSection title=\"Error\" value={selected.error} tone=\"error\" />\n )}\n <TraceDataSection title=\"Metadata\" value={selected.metadata} rawJson />\n </div>\n </div>\n </section>\n );\n}\n\nfunction TraceMetric(props: { label: string; value: string }) {\n return (\n <div className=\"grid min-w-0 gap-1 rounded-lg bg-card/85 px-4 py-3\">\n <span className=\"font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"min-w-0 truncate font-mono text-sm font-semibold text-foreground\">\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction TraceDataSection(props: {\n title: string;\n value: unknown;\n tone?: \"success\" | \"error\";\n compact?: boolean;\n rawJson?: boolean;\n}) {\n const rows = plainTraceValue(props.title, props.value);\n return (\n <section className=\"grid min-w-0 gap-3\">\n <div className=\"flex items-center gap-3\">\n <h3 className=\"m-0 text-lg font-semibold leading-tight text-foreground\">{props.title}</h3>\n <span className=\"h-px flex-1 bg-border/80\" aria-hidden=\"true\" />\n </div>\n {props.rawJson ? (\n <TraceJsonTree value={props.value} />\n ) : (\n <div className=\"grid min-w-0 gap-3\">\n {rows.map((item) => (\n <article\n className={cn(\n \"grid min-w-0 gap-3 rounded-lg bg-card/85 px-4 py-4\",\n props.compact &&\n \"grid-cols-[150px_minmax(0,1fr)] items-start gap-4 max-lg:grid-cols-1\",\n )}\n key={`${item.label}-${item.text}`}\n >\n <span className=\"flex min-w-0 items-center gap-2 font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n <TraceRowIcon label={item.label} />\n {item.label}\n </span>\n <TraceRowContent compact={props.compact} item={item} tone={props.tone} />\n </article>\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction TraceRowContent(props: {\n compact?: boolean | undefined;\n item: { label: string; text: string };\n tone?: \"success\" | \"error\" | undefined;\n}) {\n const historyItems = conversationHistoryItems(props.item);\n if (historyItems.length > 0) {\n return (\n <div className=\"grid min-w-0 gap-5\">\n {historyItems.map((item) => (\n <div className=\"grid min-w-0 gap-2\" key={`${item.index}-${item.role}-${item.text}`}>\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"font-mono text-xs font-semibold tabular-nums text-muted-foreground\">\n {item.index}\n </span>\n <Badge\n className={cn(\n \"px-1.5 py-0.5\",\n item.role === \"User\" && \"border-chart-2/40 bg-chart-2/15 text-chart-2\",\n item.role === \"Assistant\" && \"border-chart-1/40 bg-chart-1/15 text-chart-1\",\n item.role === \"Tool\" && \"border-chart-5/40 bg-chart-5/15 text-chart-5\",\n )}\n >\n {item.role}\n </Badge>\n </div>\n <p className=\"m-0 whitespace-pre-wrap text-[15px] leading-7 text-foreground [overflow-wrap:anywhere]\">\n {item.text}\n </p>\n </div>\n ))}\n </div>\n );\n }\n\n return (\n <p\n className={cn(\n \"m-0 whitespace-pre-wrap text-[15px] leading-7 text-foreground [overflow-wrap:anywhere]\",\n props.compact && \"font-mono text-[13px] leading-6\",\n props.tone === \"success\" && !isNeutralTraceRow(props.item) && \"text-primary\",\n props.tone === \"error\" && \"text-destructive\",\n )}\n >\n {props.item.text}\n </p>\n );\n}\n\nfunction conversationHistoryItems(row: {\n label: string;\n text: string;\n}): Array<{ index: string; role: string; text: string }> {\n if (!row.label.startsWith(\"Conversation history\")) {\n return [];\n }\n return row.text\n .split(\"\\n\\n\")\n .flatMap((block): Array<{ index: string; role: string; text: string }> => {\n const [heading, ...content] = block.split(\"\\n\");\n const match = /^(\\d+)\\.\\s+(.+)$/.exec(heading ?? \"\");\n if (match === null) {\n return [];\n }\n return [\n {\n index: match[1] ?? \"\",\n role: match[2] ?? \"Message\",\n text: content.join(\"\\n\"),\n },\n ];\n });\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,14],"mappings":"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"}