@anvia/studio 0.7.14 → 0.7.18

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 (59) hide show
  1. package/dist/index.d.ts +13 -1
  2. package/dist/index.js +43 -7
  3. package/dist/index.js.map +1 -1
  4. package/dist/ui/assets/agents-page-nyn87qWN.js +2 -0
  5. package/dist/ui/assets/agents-page-nyn87qWN.js.map +1 -0
  6. package/dist/ui/assets/anvia.png +0 -0
  7. package/dist/ui/assets/evals-page-CGlZpEpK.js +2 -0
  8. package/dist/ui/assets/{evals-page-w-gdHmQ3.js.map → evals-page-CGlZpEpK.js.map} +1 -1
  9. package/dist/ui/assets/index-DMVhlBNM.js +55 -0
  10. package/dist/ui/assets/index-DMVhlBNM.js.map +1 -0
  11. package/dist/ui/assets/index-Dl647xDC.css +1 -0
  12. package/dist/ui/assets/knowledge-page-DFqZ3jWS.js +2 -0
  13. package/dist/ui/assets/knowledge-page-DFqZ3jWS.js.map +1 -0
  14. package/dist/ui/assets/logo.png +0 -0
  15. package/dist/ui/assets/mcps-page-BcygvPZJ.js +2 -0
  16. package/dist/ui/assets/mcps-page-BcygvPZJ.js.map +1 -0
  17. package/dist/ui/assets/memory-page-B3TXiZ88.js +2 -0
  18. package/dist/ui/assets/memory-page-B3TXiZ88.js.map +1 -0
  19. package/dist/ui/assets/pipelines-page-Cae5pcGt.js +8 -0
  20. package/dist/ui/assets/pipelines-page-Cae5pcGt.js.map +1 -0
  21. package/dist/ui/assets/{renderers-CIC1VVRv.js → renderers-m-gqGocU.js} +2 -2
  22. package/dist/ui/assets/{renderers-CIC1VVRv.js.map → renderers-m-gqGocU.js.map} +1 -1
  23. package/dist/ui/assets/sessions-page-DvFpN7Rn.js +2 -0
  24. package/dist/ui/assets/{sessions-page-CmDz8RxM.js.map → sessions-page-DvFpN7Rn.js.map} +1 -1
  25. package/dist/ui/assets/status-page-DNc8fCjw.js +2 -0
  26. package/dist/ui/assets/status-page-DNc8fCjw.js.map +1 -0
  27. package/dist/ui/assets/tool-runner-5wyqco4y.js +2 -0
  28. package/dist/ui/assets/tool-runner-5wyqco4y.js.map +1 -0
  29. package/dist/ui/assets/tools-page-DLc0kRBh.js +2 -0
  30. package/dist/ui/assets/tools-page-DLc0kRBh.js.map +1 -0
  31. package/dist/ui/assets/trace-browser-DiaDaAtl.js +10 -0
  32. package/dist/ui/assets/trace-browser-DiaDaAtl.js.map +1 -0
  33. package/dist/ui/assets/transcript-item-C8rSd3WK.js +3 -0
  34. package/dist/ui/assets/transcript-item-C8rSd3WK.js.map +1 -0
  35. package/dist/ui/index.html +12 -7
  36. package/package.json +11 -11
  37. package/dist/ui/assets/agents-page-B8Tw2e11.js +0 -2
  38. package/dist/ui/assets/agents-page-B8Tw2e11.js.map +0 -1
  39. package/dist/ui/assets/evals-page-w-gdHmQ3.js +0 -2
  40. package/dist/ui/assets/index-BImv2lI7.js +0 -154
  41. package/dist/ui/assets/index-BImv2lI7.js.map +0 -1
  42. package/dist/ui/assets/index-C3lio5tU.css +0 -1
  43. package/dist/ui/assets/knowledge-page-Diqg4sSt.js +0 -2
  44. package/dist/ui/assets/knowledge-page-Diqg4sSt.js.map +0 -1
  45. package/dist/ui/assets/mcps-page-XTpTg88A.js +0 -2
  46. package/dist/ui/assets/mcps-page-XTpTg88A.js.map +0 -1
  47. package/dist/ui/assets/memory-page-DXesSt0M.js +0 -2
  48. package/dist/ui/assets/memory-page-DXesSt0M.js.map +0 -1
  49. package/dist/ui/assets/pipelines-page-Bk0Qm7db.js +0 -8
  50. package/dist/ui/assets/pipelines-page-Bk0Qm7db.js.map +0 -1
  51. package/dist/ui/assets/sessions-page-CmDz8RxM.js +0 -2
  52. package/dist/ui/assets/status-page-oWsYfXZZ.js +0 -2
  53. package/dist/ui/assets/status-page-oWsYfXZZ.js.map +0 -1
  54. package/dist/ui/assets/tools-page-C-ht7C6S.js +0 -2
  55. package/dist/ui/assets/tools-page-C-ht7C6S.js.map +0 -1
  56. package/dist/ui/assets/trace-browser-DaE4vnXd.js +0 -10
  57. package/dist/ui/assets/trace-browser-DaE4vnXd.js.map +0 -1
  58. package/dist/ui/assets/transcript-item-BqGgawoe.js +0 -3
  59. package/dist/ui/assets/transcript-item-BqGgawoe.js.map +0 -1
@@ -0,0 +1 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700;800&display=swap";@layer components;@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-divide-x-reverse:0;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-serif:var(--font-serif);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-yellow-500:oklch(79.5% .184 86.047);--color-zinc-100:oklch(96.7% .001 286.375);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--leading-tight:1.25;--radius-2xl:1rem;--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--shadow:var(--shadow)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--muted-foreground) transparent}@supports (color:color-mix(in lab, red, red)){*{scrollbar-color:color-mix(in oklch, var(--muted-foreground) 38%, transparent) transparent}}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--background);max-width:100%;height:100%;font-size:16px;overflow:hidden}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background-color:var(--background);color:var(--foreground);background:radial-gradient(circle at 20% -10%, #ffffff0a, transparent 30rem), radial-gradient(circle at 88% 8%, #ffffff08, transparent 28rem), var(--background);width:100%;min-width:320px;max-width:100%;height:100%;font-family:var(--font-sans);font-feature-settings:"cv02", "cv03", "cv04", "cv11";font-variant-numeric:tabular-nums;letter-spacing:0;text-rendering:geometricprecision;margin:0;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}body:before{z-index:0;pointer-events:none;content:"";opacity:.22;background-image:linear-gradient(#e4e8ec08 1px,#0000 1px),linear-gradient(90deg,#e4e8ec06 1px,#0000 1px),radial-gradient(circle at 25% 15%,#ffffff0d,#0000 18rem);background-size:84px 84px,84px 84px,auto;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 88%);mask-image:linear-gradient(#000,#0000 88%)}#anvia-ui{isolation:isolate;z-index:1;width:100%;max-width:100%;height:100dvh;position:relative;overflow:hidden}::selection{background:#ffffff3d}.shell-loading{background:linear-gradient(#ffffff0e 1px, transparent 1px), linear-gradient(90deg, #ffffff0e 1px, transparent 1px), var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);background-size:84px 84px,84px 84px,auto;place-items:center;display:grid}.studio-logo-lockup{justify-content:center;align-items:center;gap:.5rem;max-width:100%;display:inline-flex}.studio-logo-image{object-fit:contain;width:10rem;max-width:52vw;height:auto;display:block}.studio-logo-badge{border:1px solid var(--foreground);align-items:center;min-height:1.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.studio-logo-badge{border:1px solid color-mix(in oklch, var(--foreground) 18%, transparent)}}.studio-logo-badge{background:var(--foreground);border-radius:.5rem;padding:.1875rem .5rem}@supports (color:color-mix(in lab, red, red)){.studio-logo-badge{background:color-mix(in oklch, var(--foreground) 8%, transparent)}}.studio-logo-badge{color:var(--foreground);font-family:var(--font-heading);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;font-size:.6875rem;font-weight:700;line-height:1;box-shadow:inset 0 0 0 1px #ffffff1f}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb{background-color:color-mix(in oklch, var(--muted-foreground) 30%, transparent)}}::-webkit-scrollbar-thumb{border-radius:.5rem}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch, var(--muted-foreground) 52%, transparent)}}.xterm .xterm-viewport{scrollbar-width:none}.xterm .xterm-viewport::-webkit-scrollbar{width:0;height:0}.pipeline-flow .react-flow__edge.pipeline-flow-edge .react-flow__edge-path{stroke:var(--muted-foreground);stroke-width:1.6px;opacity:.78}.pipeline-flow .react-flow__edges marker path{fill:var(--muted-foreground);stroke:var(--muted-foreground)}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-full{top:100%}.right-1{right:calc(var(--spacing) * 1)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.col-span-4{grid-column:span 4/span 4}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing) * 4)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.\!h-0{height:calc(var(--spacing) * 0)!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-15{height:calc(var(--spacing) * 15)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[100dvh\]{height:100dvh}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[45vh\]{max-height:45vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-13{min-height:calc(var(--spacing) * 13)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-36{min-height:calc(var(--spacing) * 36)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-96{min-height:calc(var(--spacing) * 96)}.min-h-\[74px\]{min-height:74px}.min-h-full{min-height:100%}.\!w-0{width:calc(var(--spacing) * 0)!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-\[92px\]{width:92px}.w-\[210px\]{width:210px}.w-\[min\(420px\,calc\(100vw-32px\)\)\]{width:min(420px,100vw - 32px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-205{max-width:calc(var(--spacing) * 205)}.max-w-235{max-width:calc(var(--spacing) * 235)}.max-w-\[42vw\]{max-width:42vw}.max-w-\[62ch\]{max-width:62ch}.max-w-\[64ch\]{max-width:64ch}.max-w-\[72ch\]{max-width:72ch}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[min\(64ch\,82\%\)\]{max-width:min(64ch,82%)}.max-w-\[min\(82ch\,100\%\)\]{max-width:min(82ch,100%)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-225{min-width:calc(var(--spacing) * 225)}.min-w-280{min-width:calc(var(--spacing) * 280)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[980px\]{min-width:980px}.min-w-\[1040px\]{min-width:1040px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing) * 0);--tw-border-spacing-y:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[16px_auto\]{grid-template-columns:16px auto}.grid-cols-\[20px_minmax\(0\,1fr\)\]{grid-template-columns:20px minmax(0,1fr)}.grid-cols-\[82px_minmax\(0\,1fr\)\]{grid-template-columns:82px minmax(0,1fr)}.grid-cols-\[150px_minmax\(0\,1fr\)\]{grid-template-columns:150px minmax(0,1fr)}.grid-cols-\[260px_minmax\(320px\,0\.78fr\)_minmax\(0\,1\.22fr\)\]{grid-template-columns:260px minmax(320px,.78fr) minmax(0,1.22fr)}.grid-cols-\[320px_minmax\(0\,1fr\)\]{grid-template-columns:320px minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_96px_96px\]{grid-template-columns:minmax(0,1fr) 96px 96px}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,460px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,460px)}.grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid-cols-\[minmax\(92px\,max-content\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(92px,max-content) minmax(0,1fr)}.grid-cols-\[minmax\(120px\,0\.5fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(120px,.5fr) minmax(0,1fr)}.grid-cols-\[minmax\(140px\,0\.24fr\)_minmax\(96px\,0\.14fr\)_minmax\(96px\,0\.14fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(140px,.24fr) minmax(96px,.14fr) minmax(96px,.14fr) minmax(0,1fr)}.grid-cols-\[minmax\(220px\,1\.3fr\)_150px_120px_120px_120px_120px_110px_90px\]{grid-template-columns:minmax(220px,1.3fr) 150px 120px 120px 120px 120px 110px 90px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px_72px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px 72px}.grid-cols-\[minmax\(270px\,0\.34fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(270px,.34fr) minmax(0,1fr)}.grid-cols-\[minmax\(300px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(300px,.75fr) minmax(0,1fr)}.grid-cols-\[repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.grid-rows-\[52px_minmax\(0\,1fr\)\]{grid-template-rows:52px minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr)}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-end{justify-items:end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[5px\]{border-radius:5px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.\!border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/\[0\.06\]{border-color:#0000000f}@supports (color:color-mix(in lab, red, red)){.border-black\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-black) 6%, transparent)}}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\/65{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/65{border-color:color-mix(in oklab, var(--border) 65%, transparent)}}.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-border\/90{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/90{border-color:color-mix(in oklab, var(--border) 90%, transparent)}}.border-destructive,.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/30{border-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-foreground,.border-foreground\/45{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/45{border-color:color-mix(in oklab, var(--foreground) 45%, transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/70{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/70{border-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.\!bg-transparent{background-color:#0000!important}.bg-background,.bg-background\/25{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/25{background-color:color-mix(in oklab, var(--background) 25%, transparent)}}.bg-background\/30{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/30{background-color:color-mix(in oklab, var(--background) 30%, transparent)}}.bg-background\/35{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/35{background-color:color-mix(in oklab, var(--background) 35%, transparent)}}.bg-background\/45{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/45{background-color:color-mix(in oklab, var(--background) 45%, transparent)}}.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/55{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/55{background-color:color-mix(in oklab, var(--background) 55%, transparent)}}.bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}.bg-background\/65{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/65{background-color:color-mix(in oklab, var(--background) 65%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-background\/88{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/88{background-color:color-mix(in oklab, var(--background) 88%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/\[0\.03\]{background-color:#00000008}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-black) 3%, transparent)}}.bg-border,.bg-border\/80{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/80{background-color:color-mix(in oklab, var(--border) 80%, transparent)}}.bg-card,.bg-card\/25{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/25{background-color:color-mix(in oklab, var(--card) 25%, transparent)}}.bg-card\/30{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/30{background-color:color-mix(in oklab, var(--card) 30%, transparent)}}.bg-card\/35{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/35{background-color:color-mix(in oklab, var(--card) 35%, transparent)}}.bg-card\/45{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/45{background-color:color-mix(in oklab, var(--card) 45%, transparent)}}.bg-card\/55{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/55{background-color:color-mix(in oklab, var(--card) 55%, transparent)}}.bg-card\/60{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/60{background-color:color-mix(in oklab, var(--card) 60%, transparent)}}.bg-card\/70{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/70{background-color:color-mix(in oklab, var(--card) 70%, transparent)}}.bg-card\/80{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/80{background-color:color-mix(in oklab, var(--card) 80%, transparent)}}.bg-card\/85{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/85{background-color:color-mix(in oklab, var(--card) 85%, transparent)}}.bg-card\/90{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/90{background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-chart-4{background-color:var(--chart-4)}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-foreground,.bg-foreground\/15{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/15{background-color:color-mix(in oklab, var(--foreground) 15%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.bg-muted-foreground\/35{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/35{background-color:color-mix(in oklab, var(--muted-foreground) 35%, transparent)}}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/10{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/10{background-color:color-mix(in oklab, var(--muted) 10%, transparent)}}.bg-muted\/15{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/15{background-color:color-mix(in oklab, var(--muted) 15%, transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/25{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/25{background-color:color-mix(in oklab, var(--muted) 25%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/35{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/35{background-color:color-mix(in oklab, var(--muted) 35%, transparent)}}.bg-muted\/45{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/45{background-color:color-mix(in oklab, var(--muted) 45%, transparent)}}.bg-muted\/55{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/55{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/60{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.bg-muted\/70{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/70{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.bg-popover,.bg-popover\/98{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\/98{background-color:color-mix(in oklab, var(--popover) 98%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-card{--tw-gradient-from:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-card\/95{--tw-gradient-via:var(--card)}@supports (color:color-mix(in lab, red, red)){.via-card\/95{--tw-gradient-via:color-mix(in oklab, var(--card) 95%, transparent)}}.via-card\/95{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-card\/0{--tw-gradient-to:var(--card)}@supports (color:color-mix(in lab, red, red)){.to-card\/0{--tw-gradient-to:color-mix(in oklab, var(--card) 0%, transparent)}}.to-card\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-card-foreground{color:var(--card-foreground)}.text-chart-4{color:var(--chart-4)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-destructive\/85{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/85{color:color-mix(in oklab, var(--destructive) 85%, transparent)}}.text-foreground{color:var(--foreground)}.text-inherit{color:inherit}.text-muted-foreground,.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-muted-foreground\/85{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/85{color:color-mix(in oklab, var(--muted-foreground) 85%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/62{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/62{color:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.accent-foreground{accent-color:var(--foreground)}.\!opacity-0{opacity:0!important}.opacity-35{opacity:.35}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:var(--shadow-2xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_hsl\(var\(--foreground\)\/0\.06\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,hsl(var(--foreground)/.06));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:var(--shadow-xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[box-shadow\:none\]{box-shadow:none}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/25{--tw-shadow-color:#00000040}@supports (color:color-mix(in lab, red, red)){.shadow-black\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/40{--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.shadow-black\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/45{--tw-shadow-color:#00000073}@supports (color:color-mix(in lab, red, red)){.shadow-black\/45{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 45%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/\[0\.04\]{--tw-shadow-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.shadow-black\/\[0\.04\]{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 4%, transparent) var(--tw-shadow-alpha), transparent)}}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.group-last\/row\:border-b-0:is(:where(.group\/row):last-child *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:inline:is(:where(.group):is([open],:popover-open,:open) *){display:inline}.group-open\:text-foreground:is(:where(.group):is([open],:popover-open,:open) *){color:var(--foreground)}.group-focus-within\:grid:is(:where(.group):focus-within *){display:grid}.group-focus-within\:inline-flex:is(:where(.group):focus-within *){display:inline-flex}@media (hover:hover){.group-hover\:grid:is(:where(.group):hover *){display:grid}.group-hover\:inline-flex:is(:where(.group):hover *){display:inline-flex}}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-muted-foreground\/65::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/65::placeholder{color:color-mix(in oklab, var(--muted-foreground) 65%, transparent)}}.placeholder\:text-muted-foreground\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/70::placeholder{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.first\:pt-3:first-child{padding-top:calc(var(--spacing) * 3)}.first\:pl-0:first-child{padding-left:calc(var(--spacing) * 0)}.first\:pl-5:first-child{padding-left:calc(var(--spacing) * 5)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pr-0:last-child{padding-right:calc(var(--spacing) * 0)}.last\:pr-5:last-child{padding-right:calc(var(--spacing) * 5)}@media (hover:hover){.hover\:border-border:hover,.hover\:border-border\/70:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/70:hover{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.hover\:border-border\/80:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/80:hover{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.hover\:border-foreground:hover{border-color:var(--foreground)}.hover\:border-muted-foreground\/45:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/45:hover{border-color:color-mix(in oklab, var(--muted-foreground) 45%, transparent)}}.hover\:border-muted-foreground\/60:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/60:hover{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.hover\:border-white:hover{border-color:var(--color-white)}.hover\:bg-accent:hover,.hover\:bg-accent\/45:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/45:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}.hover\:bg-accent\/70:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/70:hover{background-color:color-mix(in oklab, var(--accent) 70%, transparent)}}.hover\:bg-accent\/80:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/80:hover{background-color:color-mix(in oklab, var(--accent) 80%, transparent)}}.hover\:bg-background\/35:hover{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-background\/35:hover{background-color:color-mix(in oklab, var(--background) 35%, transparent)}}.hover\:bg-black\/\[0\.04\]:hover{background-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/\[0\.04\]:hover{background-color:color-mix(in oklab, var(--color-black) 4%, transparent)}}.hover\:bg-destructive\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-foreground\/90:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/90:hover{background-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.hover\:bg-muted\/20:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/20:hover{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.hover\:bg-muted\/25:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/25:hover{background-color:color-mix(in oklab, var(--muted) 25%, transparent)}}.hover\:bg-muted\/45:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/45:hover{background-color:color-mix(in oklab, var(--muted) 45%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-muted\/55:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/55:hover{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.hover\:bg-muted\/70:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/70:hover{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/90:hover{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/90:hover{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-background:hover{color:var(--background)}.hover\:text-black:hover{color:var(--color-black)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-inherit:hover{color:inherit}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:opacity-100:hover{opacity:1}}.focus\:border-muted-foreground\/60:focus{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:border-muted-foreground\/60:focus{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.focus\:border-muted-foreground\/70:focus{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:border-muted-foreground\/70:focus{border-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-muted-foreground\/20:focus{--tw-ring-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-muted-foreground\/20:focus{--tw-ring-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/35:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/35:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 35%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:bg-white\/85:active{background-color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.active\:bg-white\/85:active{background-color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-border:disabled{border-color:var(--border)}.disabled\:bg-muted:disabled{background-color:var(--muted)}.disabled\:text-muted-foreground:disabled{color:var(--muted-foreground)}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-muted\/65[data-highlighted]{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-muted\/65[data-highlighted]{background-color:color-mix(in oklab, var(--muted) 65%, transparent)}}.data-\[highlighted\]\:text-foreground[data-highlighted]{color:var(--foreground)}@media not all and (width>=80rem){.max-xl\:col-span-2{grid-column:span 2/span 2}.max-xl\:hidden{display:none}.max-xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-xl\:grid-cols-\[240px_minmax\(0\,1fr\)\]{grid-template-columns:240px minmax(0,1fr)}.max-xl\:grid-rows-\[minmax\(240px\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(240px,.42fr) minmax(0,1fr)}.max-xl\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-xl\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-xl\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media not all and (width>=64rem){.max-lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-lg\:grid-rows-\[minmax\(220px\,0\.44fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(220px,.44fr) minmax(0,1fr)}.max-lg\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-lg\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-lg\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-lg\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.max-lg\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media not all and (width>=48rem){.max-md\:col-span-1{grid-column:span 1/span 1}.max-md\:grid{display:grid}.max-md\:max-h-80{max-height:calc(var(--spacing) * 80)}.max-md\:w-full{width:100%}.max-md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-md\:grid-rows-\[auto_minmax\(240px\,0\.38fr\)_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(240px,.38fr) minmax(0,1fr)}.max-md\:justify-start{justify-content:flex-start}.max-md\:gap-1{gap:calc(var(--spacing) * 1)}.max-md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-md\:px-0{padding-inline:calc(var(--spacing) * 0)}.max-md\:pr-0{padding-right:calc(var(--spacing) * 0)}}@media (width>=40rem){.sm\:max-w-72{max-width:calc(var(--spacing) * 72)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:items-start{align-items:flex-start}:where(.sm\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.sm\:divide-border\/80>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.sm\:divide-border\/80>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.sm\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@media (width>=48rem){.md\:block{display:block}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[228px_minmax\(0\,1fr\)\]{grid-template-columns:228px minmax(0,1fr)}.lg\:grid-cols-\[340px_minmax\(0\,1fr\)\]{grid-template-columns:340px minmax(0,1fr)}}@media (width>=80rem){.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.xl\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(320px\,0\.65fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr)}.xl\:grid-cols-\[minmax\(260px\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(260px,.42fr) minmax(0,1fr)}.xl\:grid-cols-\[minmax\(280px\,0\.58fr\)_minmax\(0\,1\.42fr\)\]{grid-template-columns:minmax(280px,.58fr) minmax(0,1.42fr)}.xl\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.xl\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.xl\:pr-5{padding-right:calc(var(--spacing) * 5)}.xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}}.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.dark\:text-destructive:is(.dark *){color:var(--destructive)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-zinc-100:is(.dark *){color:var(--color-zinc-100)}.dark\:shadow-black\/20:is(.dark *){--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-black\/20:is(.dark *){--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media (hover:hover){.dark\:hover\:bg-white\/\[0\.04\]:is(.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[0\.04\]:is(.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}}.prose-headings\:font-semibold :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-headings\:text-current :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-headings\:text-current:is(.dark *) :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-p\:leading-7 :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.prose-p\:text-current :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-p\:text-current:is(.dark *) :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-a\:text-current :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-a\:decoration-muted-foreground :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);text-decoration-color:var(--muted-foreground)}.prose-a\:underline-offset-2 :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-underline-offset:2px}.prose-blockquote\:border-border :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.prose-blockquote\:text-muted-foreground :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--muted-foreground)}.prose-strong\:text-current :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-strong\:text-current:is(.dark *) :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:rounded-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-code\:border :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-code\:border-border\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.prose-code\:border-border\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.prose-code\:bg-muted\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.prose-code\:bg-muted\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.prose-code\:px-1 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline:calc(var(--spacing) * 1)}.prose-code\:py-0\.5 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-block:calc(var(--spacing) * .5)}.prose-code\:text-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.prose-code\:font-semibold :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-code\:text-current :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:before\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose-code\:after\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:var(--tw-content);--tw-content:none;content:none}.dark\:prose-code\:text-current:is(.dark *) :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-pre\:overflow-auto :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){overflow:auto}.prose-pre\:rounded-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-pre\:border :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-pre\:border-border\/80 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.prose-pre\:border-border\/80 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.prose-pre\:bg-card\/90 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.prose-pre\:bg-card\/90 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.prose-pre\:text-current :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.dark\:prose-pre\:bg-card:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}.dark\:prose-pre\:text-current:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::-webkit-details-marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::-webkit-details-marker{color:var(--muted-foreground)}.prose-table\:m-0 :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing) * 0)}.prose-thead\:border-0 :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-tr\:border-0 :where(tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:0}.prose-th\:p-0 :where(th):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-td\:p-0 :where(td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:calc(var(--spacing) * 0)}.prose-hr\:border-border :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.\[\&_\.grid\]\:mt-2 .grid{margin-top:calc(var(--spacing) * 2)}.\[\&_\.grid\]\:border-l .grid{border-left-style:var(--tw-border-style);border-left-width:1px}.\[\&_\.grid\]\:border-border .grid{border-color:var(--border)}.\[\&_\.grid\]\:pl-3 .grid{padding-left:calc(var(--spacing) * 3)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:\!size-3 svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:h-3 svg{height:calc(var(--spacing) * 3)}.\[\&_svg\]\:h-3\.5 svg{height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing) * 4)}.\[\&_svg\]\:h-\[17px\] svg{height:17px}.\[\&_svg\]\:w-3 svg{width:calc(var(--spacing) * 3)}.\[\&_svg\]\:w-3\.5 svg{width:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing) * 4)}.\[\&_svg\]\:w-\[17px\] svg{width:17px}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:opacity-100 svg{opacity:1}}:root{--background:#f4f5f6;--foreground:#181f25;--card:#fff;--card-foreground:#181f25;--popover:#fff;--popover-foreground:#181f25;--primary:#2a2e32;--primary-foreground:#fafafa;--secondary:#e9eaec;--secondary-foreground:#212a31;--muted:#e6e7ea;--muted-foreground:#636f79;--accent:#e6e7ea;--accent-foreground:#181f25;--destructive:#c13833;--destructive-foreground:#fafafa;--border:#2a353c1f;--input:#2a353c29;--ring:#5e6d78;--chart-1:#65727b;--chart-2:#869098;--chart-3:#636f79;--chart-4:#242f38;--chart-5:#c13833;--sidebar:#f4f5f6;--sidebar-foreground:#181f25;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:#2a353c17;--sidebar-accent-foreground:#181f25;--sidebar-border:var(--border);--sidebar-ring:var(--ring);--font-sans:Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-heading:Figtree, Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--radius:.5rem;--shadow-x:0;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#1f252e;--shadow-2xs:0 1px 2px 0px #1f252e0d;--shadow-xs:0 1px 3px 0px #1f252e0f;--shadow-sm:0 1px 2px #1f252e14, 0 8px 18px -18px #1f252e42;--shadow:0 1px 2px #1f252e1a, 0 14px 34px -26px #1f252e57;--shadow-md:0 2px 4px #1f252e1f, 0 20px 44px -30px #1f252e6b;--shadow-lg:0 3px 8px #1f252e29, 0 28px 64px -38px #1f252e80;--shadow-xl:0 4px 12px #1f252e33, 0 34px 86px -44px #1f252e8f;--shadow-2xl:0 10px 32px #1f252e47, 0 48px 120px -56px #1f252ead;--tracking-normal:0em;--spacing:.25rem}.dark{--background:#131314;--foreground:#e8ece4;--card:#121212;--card-foreground:#e8ece4;--popover:#121212;--popover-foreground:#e8ece4;--primary:#e0e0e0;--primary-foreground:#0a0a0a;--secondary:#1f2123;--secondary-foreground:#e1e6db;--muted:#242629;--muted-foreground:#9fa696;--accent:#ffffff14;--accent-foreground:#ebebeb;--destructive:#db605c;--destructive-foreground:#101419;--border:#e1e7da14;--input:#e1e7da1f;--ring:#949494;--chart-1:#dbdbdb;--chart-2:#a8a8a8;--chart-3:#8a8a8a;--chart-4:#6b6b6b;--chart-5:#db605c;--sidebar:#131314;--sidebar-foreground:#e8ece4;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:#ffffff14;--sidebar-accent-foreground:#e8ece4;--sidebar-border:var(--border);--sidebar-ring:var(--ring);--font-sans:Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-heading:Figtree, Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--radius:.5rem;--shadow-x:0;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#05070a;--shadow-2xs:0 1px 2px 0px #05070a40;--shadow-xs:0 1px 3px 0px #05070a47;--shadow-sm:0 1px 2px #05070a5c, 0 10px 24px -20px #05070ab3;--shadow:0 1px 2px #05070a6b, 0 20px 54px -34px #05070adb;--shadow-md:0 2px 6px #05070a7a, 0 28px 70px -42px #05070ae6;--shadow-lg:0 4px 10px #05070a8a, 0 36px 90px -48px #05070af0;--shadow-xl:0 8px 18px #05070a9e, 0 44px 110px -54px #05070afa;--shadow-2xl:0 14px 44px #05070ab8, 0 60px 140px -64px #05070a}.studio-sidebar-nav-button{border-color:#0000;outline:2px solid #0000}.studio-sidebar-nav-button:hover{border-color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button:hover{border-color:color-mix(in oklch, var(--sidebar-foreground) 15%, transparent)}}.studio-sidebar-nav-button:hover{background:linear-gradient(180deg, var(--sidebar-accent) 0%, var(--sidebar-accent) 100%)}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button:hover{background:linear-gradient(180deg, color-mix(in oklch, var(--sidebar-accent) 98%, black) 0%, color-mix(in oklch, var(--sidebar-accent) 85%, black) 100%)}}.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{border-color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{border-color:color-mix(in oklch, var(--sidebar-foreground) 8%, transparent)}}.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{background:linear-gradient(180deg, var(--sidebar-accent) 0%, var(--sidebar-accent) 100%);outline-color:#00000094}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{background:linear-gradient(180deg, color-mix(in oklch, var(--sidebar-accent) 88%, black) 0%, color-mix(in oklch, var(--sidebar-accent) 73%, black) 100%)}}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
@@ -0,0 +1,2 @@
1
+ import{i as e,r as t,s as n}from"./utils-BN2yP0LH.js";import{m as r}from"./format-C9HPGfkW.js";import{t as i}from"./RefreshIcon-B3w42HZJ.js";import{A as a,F as o,I as s,M as c,N as l,P as u,j as d}from"./index-DMVhlBNM.js";import{t as f}from"./badge-BH7gz3tB.js";import{n as p,t as m}from"./renderers-m-gqGocU.js";var h=n(e(),1),g=t();function _(e){let t=e.state;return e.source?.source.kind===`dynamic_tools`?(0,g.jsx)(y,{source:e.source,state:t,onLoadMore:e.onLoadMore}):(0,g.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[minmax(0,1fr)_auto] overflow-hidden`,children:[(0,g.jsx)(`div`,{className:`min-h-0 overflow-auto`,children:(0,g.jsxs)(`div`,{className:`pb-4 pt-0`,children:[e.source===void 0?(0,g.jsx)(I,{text:`No knowledge source selected`}):null,t?.loading===!0&&t.items.length===0?(0,g.jsx)(I,{text:`Loading items`}):null,t?.error===void 0?null:(0,g.jsx)(I,{text:t.error}),t?.inspectable===!1?(0,g.jsx)(I,{text:t.message??`This source does not expose browseable chunks.`}):null,t?.inspectable!==!1&&t?.loading===!1&&t.items.length===0?(0,g.jsx)(I,{text:`No items in this source`}):null,(0,g.jsx)(`div`,{className:`grid gap-3`,children:t?.items.map(t=>(0,g.jsx)(v,{item:t,source:e.source},`${t.kind}:${t.id}`))})]})}),(0,g.jsxs)(`div`,{className:`flex min-h-12 items-center justify-between gap-3 border-t border-border/80 bg-muted/10 py-2`,children:[(0,g.jsx)(`span`,{className:` text-xs text-muted-foreground`,children:t===void 0?`0 loaded`:`${t.items.length} loaded`}),(0,g.jsx)(s,{className:`h-8 min-h-8`,type:`button`,variant:`secondary`,disabled:t?.loading===!0||t?.nextCursor===void 0,onClick:e.onLoadMore,children:`Load more`})]})]})}function v(e){return e.item.kind===`dynamic_tool`?(0,g.jsx)(`article`,{className:`rounded-xl border border-border/80 bg-background/55 p-4`,children:(0,g.jsx)(x,{item:e.item,source:e.source})}):(0,g.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/55 p-4`,children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,g.jsx)(`div`,{className:`min-w-0`,children:(0,g.jsx)(`div`,{className:`truncate text-xs font-semibold text-foreground`,children:e.item.toolName??e.item.id})}),e.item.parameterKeys===void 0||e.item.parameterKeys.length===0?null:(0,g.jsxs)(f,{children:[e.item.parameterKeys.length,` params`]})]}),e.item.description===void 0||e.item.description.length===0?null:(0,g.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]`,children:e.item.description}),e.item.text===void 0?null:(0,g.jsx)(`p`,{className:`m-0 whitespace-pre-wrap text-sm leading-6 text-foreground [overflow-wrap:anywhere]`,children:e.item.text}),e.item.document===void 0?null:(0,g.jsx)(F,{title:`Document`,value:e.item.document}),e.item.metadata===void 0?null:(0,g.jsx)(F,{title:`Metadata`,value:e.item.metadata}),e.item.parameterKeys===void 0||e.item.parameterKeys.length===0?null:(0,g.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.item.parameterKeys.map(e=>(0,g.jsx)(f,{children:e},e))})]})}function y(e){let t=(0,h.useMemo)(()=>(e.state?.items??[]).filter(D),[e.state?.items]),[n,r]=(0,h.useState)(``),i=t.find(e=>e.id===n)??t[0],a=(0,h.useMemo)(()=>O(t),[t]);return(0,h.useEffect)(()=>{if(t.length===0){r(``);return}t.some(e=>e.id===n)||r(t[0]?.id??``)},[n,t]),(0,g.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden`,children:[(0,g.jsxs)(`header`,{className:`grid min-h-16 grid-cols-[minmax(0,1fr)_auto] items-center gap-4 border-b border-border/80 py-3 max-md:grid-cols-1`,children:[(0,g.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,g.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Runtime tool index`}),(0,g.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-sm`,children:[(0,g.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.source.source.label??l(e.source.source.kind)}),(0,g.jsx)(`span`,{className:`text-muted-foreground`,children:e.source.agentName})]})]}),(0,g.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,g.jsx)(A,{label:`tools`,value:t.length}),(0,g.jsx)(A,{label:`params`,value:a.parameterCount}),(0,g.jsx)(A,{label:`required`,value:a.requiredCount})]})]}),(0,g.jsxs)(`div`,{className:`grid min-h-0 grid-cols-[minmax(270px,0.34fr)_minmax(0,1fr)] overflow-hidden max-lg:grid-cols-1 max-lg:grid-rows-[minmax(220px,0.44fr)_minmax(0,1fr)]`,children:[(0,g.jsx)(`aside`,{className:`min-h-0 overflow-auto border-r border-border/80 pr-3 max-lg:border-b max-lg:border-r-0 max-lg:pr-0`,children:(0,g.jsxs)(`div`,{className:`grid gap-1 py-3 pr-3 max-lg:pr-0`,children:[e.source===void 0?(0,g.jsx)(I,{text:`No knowledge source selected`}):null,e.state?.loading===!0&&t.length===0?(0,g.jsx)(I,{text:`Loading dynamic tools`}):null,e.state?.error===void 0?null:(0,g.jsx)(I,{text:e.state.error}),e.state?.inspectable===!1?(0,g.jsx)(I,{text:e.state.message??`This source does not expose browseable tools.`}):null,e.state?.inspectable!==!1&&e.state?.loading===!1&&t.length===0?(0,g.jsx)(I,{text:`No dynamic tools in this source`}):null,t.map(e=>(0,g.jsx)(b,{active:i?.id===e.id,item:e,onSelect:()=>r(e.id)},e.id))]})}),(0,g.jsx)(`div`,{className:`min-h-0 overflow-auto py-4 pl-5 max-lg:pl-0`,children:i===void 0?(0,g.jsx)(w,{}):(0,g.jsx)(x,{item:i,source:e.source})})]}),(0,g.jsxs)(`div`,{className:`flex min-h-12 items-center justify-between gap-3 border-t border-border/80 bg-background/30 py-2`,children:[(0,g.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.state===void 0?`0 loaded`:`${e.state.items.length} loaded`}),(0,g.jsx)(s,{className:`h-8 min-h-8`,type:`button`,variant:`secondary`,disabled:e.state?.loading===!0||e.state?.nextCursor===void 0,onClick:e.onLoadMore,children:`Load more`})]})]})}function b(e){let t=T(e.item),n=E(e.item),r=n.filter(e=>e.required).length,i=t.name??e.item.toolName??e.item.id;return(0,g.jsxs)(`button`,{className:[`grid min-w-0 gap-2 rounded-lg border border-transparent px-3 py-3 text-left transition duration-200 hover:border-border/80 hover:bg-muted/25 focus-visible:border-ring focus-visible:outline-none`,e.active?`border-border/80 bg-muted/35 text-foreground`:`text-muted-foreground`].join(` `),type:`button`,onClick:e.onSelect,children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,g.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm font-semibold text-foreground`,children:i}),(0,g.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:n.length})]}),(0,g.jsx)(`p`,{className:`m-0 line-clamp-2 text-xs leading-5 text-muted-foreground`,children:t.description??e.item.description??`No description`}),(0,g.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2 text-[11px] font-medium text-muted-foreground`,children:[(0,g.jsxs)(`span`,{children:[r,` required`]}),(0,g.jsxs)(`span`,{children:[n.length-r,` optional`]})]})]})}function x(e){let t=T(e.item),n=E(e.item),r=t.description??e.item.description,i=t.name??e.item.toolName??e.item.id;return(0,g.jsxs)(`article`,{className:`grid min-w-0 gap-5`,children:[(0,g.jsxs)(`header`,{className:`grid gap-4 border-b border-border/80 pb-5`,children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-4 max-md:grid`,children:[(0,g.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,g.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Selected tool`}),(0,g.jsx)(`h2`,{className:`m-0 truncate font-mono text-2xl font-semibold leading-none text-foreground`,children:i})]}),(0,g.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,g.jsxs)(f,{children:[n.length,` params`]}),(0,g.jsxs)(f,{children:[n.filter(e=>e.required).length,` required`]})]})]}),r===void 0||r.length===0?null:(0,g.jsx)(`p`,{className:`m-0 max-w-[72ch] text-base leading-7 text-muted-foreground [overflow-wrap:anywhere]`,children:r}),(0,g.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-y border-border/80 bg-muted/15 px-3 py-2`,children:(0,g.jsx)(`code`,{className:`font-mono text-sm leading-6 text-foreground`,children:k(i,n)})})]}),(0,g.jsx)(S,{parameters:n}),(0,g.jsx)(C,{item:e.item,source:e.source}),e.item.document===void 0?null:(0,g.jsx)(M,{title:`Raw definition`,value:e.item.document}),e.item.metadata===void 0?null:(0,g.jsx)(M,{title:`Metadata`,value:e.item.metadata})]})}function S(e){return(0,g.jsxs)(`section`,{className:`grid gap-3`,children:[(0,g.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,g.jsx)(`h3`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Parameters`}),(0,g.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:e.parameters.length===0?`No parameters`:`${e.parameters.length} defined`})]}),e.parameters.length===0?(0,g.jsx)(`div`,{className:`border-y border-dashed border-border/80 px-3 py-4 text-sm text-muted-foreground`,children:`This tool does not declare input parameters.`}):(0,g.jsx)(`div`,{className:`min-w-0 overflow-hidden border-y border-border/80`,children:e.parameters.map(e=>(0,g.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(140px,0.24fr)_minmax(96px,0.14fr)_minmax(96px,0.14fr)_minmax(0,1fr)] gap-4 border-b border-border/70 py-3 last:border-b-0 max-md:grid-cols-1 max-md:gap-1`,children:[(0,g.jsx)(`div`,{className:`min-w-0 font-mono text-sm font-semibold text-foreground [overflow-wrap:anywhere]`,children:e.name}),(0,g.jsx)(`div`,{className:`text-sm text-muted-foreground [overflow-wrap:anywhere]`,children:e.type}),(0,g.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e.required?`Required`:`Optional`}),(0,g.jsx)(`div`,{className:`text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]`,children:e.description??`No description`})]},e.name))})]})}function C(e){let t=[{label:`Agent`,value:e.source?.agentName??e.source?.agentId},{label:`Source`,value:e.source===void 0?void 0:`${e.source.source.label??l(e.source.source.kind)} / ${d(e.source.source)}`},{label:`Item ID`,value:e.item.id}].filter(e=>e.value!==void 0);return t.length===0?null:(0,g.jsxs)(`section`,{className:`grid gap-3 border-t border-border/80 pt-4`,children:[(0,g.jsx)(`h3`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Source`}),(0,g.jsx)(`dl`,{className:`grid border-y border-border/80 sm:grid-cols-3 sm:divide-x sm:divide-border/80`,children:t.map(e=>(0,g.jsxs)(`div`,{className:`min-w-0 px-3 py-3 first:pl-0 last:pr-0`,children:[(0,g.jsx)(`dt`,{className:`text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,g.jsx)(`dd`,{className:`m-0 mt-1 truncate text-sm font-medium text-foreground`,children:e.value})]},e.label))})]})}function w(){return(0,g.jsx)(`section`,{className:`grid h-full min-h-80 place-items-center border-y border-dashed border-border/80 px-6 text-center`,children:(0,g.jsxs)(`div`,{className:`grid max-w-sm gap-2`,children:[(0,g.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:`No dynamic tool selected`}),(0,g.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:`Select a tool from the index to inspect its definition and parameters.`})]})})}function T(e){let t=r(e.document)?e.document:void 0,n=r(t?.definition)?t.definition:void 0;return{name:typeof n?.name==`string`?n.name:typeof t?.toolName==`string`?t.toolName:e.toolName,description:typeof n?.description==`string`?n.description:e.description,parameters:n?.parameters}}function E(e){let t=T(e),n=r(t.parameters)?t.parameters:void 0,i=r(n?.properties)?n.properties:void 0,a=new Set(Array.isArray(n?.required)?n.required.filter(e=>typeof e==`string`):[]);return i===void 0?(e.parameterKeys??[]).map(e=>({name:e,type:`unknown`,required:!1,description:void 0})):Object.entries(i).map(([e,t])=>{let n=r(t)?t:{};return{name:e,type:j(n.type),required:a.has(e),description:typeof n.description==`string`?n.description:void 0}})}function D(e){return e.kind===`dynamic_tool`}function O(e){return e.reduce((e,t)=>{let n=E(t);return e.parameterCount+=n.length,e.requiredCount+=n.filter(e=>e.required).length,e},{parameterCount:0,requiredCount:0})}function k(e,t){return t.length===0?`${e}()`:`${e}({ ${t.map(e=>`${e.name}${e.required?``:`?`}: ${e.type}`).join(`, `)} })`}function A(e){return(0,g.jsxs)(`span`,{className:`inline-flex h-8 items-center gap-2 border border-border/70 bg-background/45 px-2.5 text-xs font-medium text-muted-foreground`,children:[(0,g.jsx)(`span`,{className:`font-semibold tabular-nums text-foreground`,children:e.value}),e.label]})}function j(e){if(typeof e==`string`)return e;if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`);return t.length===0?`unknown`:t.join(` / `)}return`unknown`}function M(e){let t=N(e.value);return(0,g.jsxs)(`details`,{className:`group rounded-xl border border-border/80 bg-card/30`,children:[(0,g.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 px-4 py-3 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground marker:hidden`,children:[(0,g.jsx)(`span`,{children:e.title}),(0,g.jsx)(`span`,{className:`text-xs normal-case tracking-normal text-muted-foreground group-open:hidden`,children:`Show`}),(0,g.jsx)(`span`,{className:`hidden text-xs normal-case tracking-normal text-muted-foreground group-open:inline`,children:`Hide`})]}),(0,g.jsx)(`div`,{className:`border-t border-border/70`,children:(0,g.jsx)(`pre`,{className:`m-0 max-h-96 overflow-auto p-4 font-mono text-xs leading-5 text-foreground`,children:(0,g.jsx)(`code`,{children:(0,g.jsx)(m,{text:t})})})})]})}function N(e){try{return JSON.stringify(e,null,2)}catch{return JSON.stringify(String(e),null,2)}}function P(e){return(0,g.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border border-border/80 bg-card/55`,children:[(0,g.jsx)(`div`,{className:`border-b border-border/80 px-4 py-3`,children:(0,g.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(`h2`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:`Retrieval log`}),(0,g.jsx)(`p`,{className:`m-0 mt-1 truncate text-xs text-muted-foreground`,children:`traces / retrieval-evidence`})]}),(0,g.jsxs)(f,{children:[e.evidence.length,` entries`]})]})}),(0,g.jsxs)(`div`,{className:`min-h-0 overflow-auto p-4`,children:[e.evidence.length===0?(0,g.jsx)(I,{text:`No retrieval evidence captured yet`}):null,(0,g.jsx)(`div`,{className:`grid gap-3`,children:e.evidence.map(t=>(0,g.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-3`,children:[(0,g.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:t.observationName}),(0,g.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[`Turn `,t.turn]})]}),(0,g.jsx)(s,{className:`h-auto min-h-0 rounded-lg border border-border bg-muted px-2 py-1 text-xs text-muted-foreground`,type:`button`,variant:`ghost`,onClick:()=>e.onOpenTrace(t.traceId),children:`Trace`})]}),(0,g.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,g.jsxs)(f,{children:[t.documentCount,` docs`]}),(0,g.jsxs)(f,{children:[t.toolCount,` tools`]})]}),t.query===void 0?null:(0,g.jsxs)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]`,children:[(0,g.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-foreground`,children:`Query`}),` `,t.query]}),t.documents.slice(0,2).map(e=>(0,g.jsxs)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground [overflow-wrap:anywhere]`,children:[(0,g.jsx)(`span`,{className:` text-foreground`,children:e.id??`document`}),` `,e.text??``]},`${e.id??`doc`}:${e.text??``}`)),t.tools.length===0?null:(0,g.jsxs)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground`,children:[`Tools: `,t.tools.join(`, `)]})]},`${t.traceId}:${t.observationId}`))})]})]})}function F(e){return(0,g.jsxs)(`div`,{className:`grid gap-2 border-t border-border/70 pt-3`,children:[(0,g.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.title}),(0,g.jsx)(p,{value:e.value})]})}function I(e){return(0,g.jsx)(`div`,{className:`rounded-lg border border-dashed border-border px-4 py-3 text-sm font-medium text-muted-foreground`,children:e.text})}function L(e){let[t,n]=(0,h.useState)(``),[r,l]=(0,h.useState)(),f=e.summary?.agents??[],p=e.summary?.evidence??[],m=(0,h.useMemo)(()=>a(f),[f]),v=c(e.activeTab),y=(0,h.useMemo)(()=>v===void 0?[]:m.filter(e=>e.source.kind===v),[v,m]),b=y.find(e=>e.key===t)??y[0];(0,h.useEffect)(()=>{if(y.length===0){n(``);return}y.some(e=>e.key===t)||n((y.find(e=>e.source.inspectable===!0&&(e.source.itemCount??0)>0)??y.find(e=>e.source.inspectable===!0)??y[0])?.key??``)},[t,y]);let x=(0,h.useCallback)(async(e,t)=>{let n=e.key;l(r=>({key:n,loading:!0,inspectable:r?.key===n?r.inspectable:e.source.inspectable===!0,items:t.append&&r?.key===n?r.items:[],...t.append&&r?.key===n&&r.nextCursor!==void 0?{nextCursor:r.nextCursor}:{},...r?.key===n&&r.totalCount!==void 0?{totalCount:r.totalCount}:{}}));try{let r=new URLSearchParams({agentId:e.agentId,sourceId:d(e.source),limit:`50`});t.cursor!==void 0&&r.set(`cursor`,t.cursor);let i=await fetch(`/knowledge/items?${r.toString()}`);if(!i.ok)throw Error(`Knowledge items failed with HTTP ${i.status}`);let a=await i.json();l(e=>e?.key===n?{key:n,loading:!1,inspectable:a.inspectable,items:t.append?[...e.items,...a.items]:a.items,...a.nextCursor===void 0?{}:{nextCursor:a.nextCursor},...a.totalCount===void 0?{}:{totalCount:a.totalCount},...a.message===void 0?{}:{message:a.message}}:e)}catch(e){l(t=>t?.key===n?{key:n,loading:!1,inspectable:t.inspectable,items:t.items,error:e instanceof Error?e.message:String(e)}:t)}},[]);return(0,h.useEffect)(()=>{if(!e.enabled||b===void 0){l(void 0);return}x(b,{append:!1})},[x,e.enabled,b]),(0,g.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,children:[(0,g.jsx)(`header`,{className:`bg-background/70 pb-3 pl-4 pr-6 pt-4 backdrop-blur`,children:(0,g.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,g.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,g.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:u(e.activeTab)}),(0,g.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:z(e.activeTab)})]}),(0,g.jsxs)(s,{className:`h-8 min-h-8 gap-2`,type:`button`,variant:`secondary`,disabled:!e.enabled,onClick:e.onRefresh,children:[(0,g.jsx)(o,{icon:i,"aria-hidden":`true`}),`Refresh`]})]})}),(0,g.jsx)(`div`,{className:`grid min-h-0 grid-rows-[minmax(0,1fr)] overflow-hidden pb-6 pl-4 pr-6 pt-0`,children:e.activeTab===`retrieval-log`?(0,g.jsx)(P,{evidence:p,onOpenTrace:e.onOpenTrace}):(0,g.jsx)(R,{sources:y,selectedKey:b?.key??``,loading:e.loading,activeTab:e.activeTab,onSelect:n,children:(0,g.jsx)(_,{source:b,state:r,onLoadMore:()=>{b!==void 0&&x(b,r?.nextCursor===void 0?{append:!0}:{append:!0,cursor:r.nextCursor})}})})})]})}function R(e){let t=e.sources.length!==1||e.loading;return(0,g.jsxs)(`div`,{className:[`grid min-h-0 gap-3 overflow-hidden`,t?`grid-rows-[auto_minmax(0,1fr)]`:`grid-rows-[minmax(0,1fr)]`].join(` `),children:[t?(0,g.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-b border-border/80`,children:(0,g.jsxs)(`div`,{className:`flex min-h-11 min-w-max items-center gap-2`,children:[(0,g.jsx)(`span`,{className:`mr-2 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:u(e.activeTab)}),e.loading&&e.sources.length===0?(0,g.jsx)(`span`,{className:` text-xs text-muted-foreground`,children:`Loading sources`}):null,!e.loading&&e.sources.length===0?(0,g.jsx)(`span`,{className:` text-xs text-muted-foreground`,children:`No knowledge sources`}):null,e.sources.map(t=>(0,g.jsxs)(`button`,{className:[`flex h-7 items-center gap-2 rounded-lg border border-border/80 bg-background/45 px-2.5 text-xs font-semibold text-muted-foreground transition duration-200 hover:border-border/80 hover:bg-muted/45 hover:text-foreground focus-visible:border-ring focus-visible:outline-none`,e.selectedKey===t.key?`border-border/80 bg-muted/45 text-foreground`:``].join(` `),type:`button`,onClick:()=>e.onSelect(t.key),children:[(0,g.jsx)(`span`,{children:t.source.label??l(t.source.kind)}),t.source.itemCount===void 0?null:(0,g.jsx)(`span`,{className:`text-muted-foreground`,children:t.source.itemCount})]},t.key))]})}):null,e.children]})}function z(e){switch(e){case`static-context`:return`Browse configured static context exposed to agents.`;case`dynamic-context`:return`Inspect dynamic context chunks resolved at runtime.`;case`dynamic-tools`:return`Review dynamic tool definitions and parameters.`;case`retrieval-log`:return`Inspect retrieval evidence and jump into related traces.`}}export{L as KnowledgePage};
2
+ //# sourceMappingURL=knowledge-page-DFqZ3jWS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-page-DFqZ3jWS.js","names":[],"sources":["../../../src/ui/app/modules/knowledge/knowledge-panels.tsx","../../../src/ui/app/modules/knowledge/knowledge-page.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport type { StudioKnowledgeItem, StudioKnowledgeSummary } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { isRecord } from \"../shared/object\";\nimport { JsonSyntax, JsonValueView } from \"../shared/renderers\";\nimport { type ItemState, type KnowledgeSourceRef, sourceId, sourceLabel } from \"./knowledge-model\";\n\nexport function ItemBrowser(props: {\n source: KnowledgeSourceRef | undefined;\n state: ItemState | undefined;\n onLoadMore: () => void;\n}) {\n const state = props.state;\n if (props.source?.source.kind === \"dynamic_tools\") {\n return (\n <DynamicToolsBrowser source={props.source} state={state} onLoadMore={props.onLoadMore} />\n );\n }\n\n return (\n <section className=\"grid min-h-0 grid-rows-[minmax(0,1fr)_auto] overflow-hidden\">\n <div className=\"min-h-0 overflow-auto\">\n <div className=\"pb-4 pt-0\">\n {props.source === undefined ? <MutedRow text=\"No knowledge source selected\" /> : null}\n {state?.loading === true && state.items.length === 0 ? (\n <MutedRow text=\"Loading items\" />\n ) : null}\n {state?.error === undefined ? null : <MutedRow text={state.error} />}\n {state?.inspectable === false ? (\n <MutedRow text={state.message ?? \"This source does not expose browseable chunks.\"} />\n ) : null}\n {state?.inspectable !== false && state?.loading === false && state.items.length === 0 ? (\n <MutedRow text=\"No items in this source\" />\n ) : null}\n <div className=\"grid gap-3\">\n {state?.items.map((item) => (\n <KnowledgeItemCard\n item={item}\n key={`${item.kind}:${item.id}`}\n source={props.source}\n />\n ))}\n </div>\n </div>\n </div>\n <div className=\"flex min-h-12 items-center justify-between gap-3 border-t border-border/80 bg-muted/10 py-2\">\n <span className=\" text-xs text-muted-foreground\">\n {state === undefined ? \"0 loaded\" : `${state.items.length} loaded`}\n </span>\n <Button\n className=\"h-8 min-h-8\"\n type=\"button\"\n variant=\"secondary\"\n disabled={state?.loading === true || state?.nextCursor === undefined}\n onClick={props.onLoadMore}\n >\n Load more\n </Button>\n </div>\n </section>\n );\n}\n\nfunction KnowledgeItemCard(props: {\n item: StudioKnowledgeItem;\n source: KnowledgeSourceRef | undefined;\n}) {\n if (props.item.kind === \"dynamic_tool\") {\n return (\n <article className=\"rounded-xl border border-border/80 bg-background/55 p-4\">\n <DynamicToolInspector item={props.item} source={props.source} />\n </article>\n );\n }\n\n return (\n <article className=\"grid gap-3 rounded-xl border border-border/80 bg-background/55 p-4\">\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-xs font-semibold text-foreground\">\n {props.item.toolName ?? props.item.id}\n </div>\n </div>\n {props.item.parameterKeys === undefined || props.item.parameterKeys.length === 0 ? null : (\n <Badge>{props.item.parameterKeys.length} params</Badge>\n )}\n </div>\n {props.item.description === undefined || props.item.description.length === 0 ? null : (\n <p className=\"m-0 text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]\">\n {props.item.description}\n </p>\n )}\n {props.item.text === undefined ? null : (\n <p className=\"m-0 whitespace-pre-wrap text-sm leading-6 text-foreground [overflow-wrap:anywhere]\">\n {props.item.text}\n </p>\n )}\n {props.item.document === undefined ? null : (\n <JsonBlock title=\"Document\" value={props.item.document} />\n )}\n {props.item.metadata === undefined ? null : (\n <JsonBlock title=\"Metadata\" value={props.item.metadata} />\n )}\n {props.item.parameterKeys === undefined || props.item.parameterKeys.length === 0 ? null : (\n <div className=\"flex flex-wrap gap-2\">\n {props.item.parameterKeys.map((key) => (\n <Badge key={key}>{key}</Badge>\n ))}\n </div>\n )}\n </article>\n );\n}\n\ntype DynamicToolParameter = {\n name: string;\n type: string;\n required: boolean;\n description: string | undefined;\n};\n\nfunction DynamicToolsBrowser(props: {\n source: KnowledgeSourceRef;\n state: ItemState | undefined;\n onLoadMore: () => void;\n}) {\n const tools = useMemo(\n () => (props.state?.items ?? []).filter(isDynamicToolItem),\n [props.state?.items],\n );\n const [selectedId, setSelectedId] = useState(\"\");\n const selectedTool = tools.find((item) => item.id === selectedId) ?? tools[0];\n const stats = useMemo(() => dynamicToolStats(tools), [tools]);\n\n useEffect(() => {\n if (tools.length === 0) {\n setSelectedId(\"\");\n return;\n }\n if (!tools.some((item) => item.id === selectedId)) {\n setSelectedId(tools[0]?.id ?? \"\");\n }\n }, [selectedId, tools]);\n\n return (\n <section className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden\">\n <header className=\"grid min-h-16 grid-cols-[minmax(0,1fr)_auto] items-center gap-4 border-b border-border/80 py-3 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Runtime tool index\n </div>\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-sm\">\n <span className=\"font-semibold text-foreground\">\n {props.source.source.label ?? sourceLabel(props.source.source.kind)}\n </span>\n <span className=\"text-muted-foreground\">{props.source.agentName}</span>\n </div>\n </div>\n <div className=\"flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start\">\n <KnowledgeMetric label=\"tools\" value={tools.length} />\n <KnowledgeMetric label=\"params\" value={stats.parameterCount} />\n <KnowledgeMetric label=\"required\" value={stats.requiredCount} />\n </div>\n </header>\n\n <div className=\"grid min-h-0 grid-cols-[minmax(270px,0.34fr)_minmax(0,1fr)] overflow-hidden max-lg:grid-cols-1 max-lg:grid-rows-[minmax(220px,0.44fr)_minmax(0,1fr)]\">\n <aside className=\"min-h-0 overflow-auto border-r border-border/80 pr-3 max-lg:border-b max-lg:border-r-0 max-lg:pr-0\">\n <div className=\"grid gap-1 py-3 pr-3 max-lg:pr-0\">\n {props.source === undefined ? <MutedRow text=\"No knowledge source selected\" /> : null}\n {props.state?.loading === true && tools.length === 0 ? (\n <MutedRow text=\"Loading dynamic tools\" />\n ) : null}\n {props.state?.error === undefined ? null : <MutedRow text={props.state.error} />}\n {props.state?.inspectable === false ? (\n <MutedRow\n text={props.state.message ?? \"This source does not expose browseable tools.\"}\n />\n ) : null}\n {props.state?.inspectable !== false &&\n props.state?.loading === false &&\n tools.length === 0 ? (\n <MutedRow text=\"No dynamic tools in this source\" />\n ) : null}\n {tools.map((item) => (\n <DynamicToolListItem\n active={selectedTool?.id === item.id}\n item={item}\n key={item.id}\n onSelect={() => setSelectedId(item.id)}\n />\n ))}\n </div>\n </aside>\n\n <div className=\"min-h-0 overflow-auto py-4 pl-5 max-lg:pl-0\">\n {selectedTool === undefined ? (\n <DynamicToolEmptyPanel />\n ) : (\n <DynamicToolInspector item={selectedTool} source={props.source} />\n )}\n </div>\n </div>\n\n <div className=\"flex min-h-12 items-center justify-between gap-3 border-t border-border/80 bg-background/30 py-2\">\n <span className=\"text-xs text-muted-foreground\">\n {props.state === undefined ? \"0 loaded\" : `${props.state.items.length} loaded`}\n </span>\n <Button\n className=\"h-8 min-h-8\"\n type=\"button\"\n variant=\"secondary\"\n disabled={props.state?.loading === true || props.state?.nextCursor === undefined}\n onClick={props.onLoadMore}\n >\n Load more\n </Button>\n </div>\n </section>\n );\n}\n\nfunction DynamicToolListItem(props: {\n item: StudioKnowledgeItem;\n active: boolean;\n onSelect: () => void;\n}) {\n const definition = dynamicToolDefinition(props.item);\n const parameters = dynamicToolParameters(props.item);\n const requiredCount = parameters.filter((parameter) => parameter.required).length;\n const toolName = definition.name ?? props.item.toolName ?? props.item.id;\n\n return (\n <button\n className={[\n \"grid min-w-0 gap-2 rounded-lg border border-transparent px-3 py-3 text-left transition duration-200 hover:border-border/80 hover:bg-muted/25 focus-visible:border-ring focus-visible:outline-none\",\n props.active ? \"border-border/80 bg-muted/35 text-foreground\" : \"text-muted-foreground\",\n ].join(\" \")}\n type=\"button\"\n onClick={props.onSelect}\n >\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <span className=\"min-w-0 truncate font-mono text-sm font-semibold text-foreground\">\n {toolName}\n </span>\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {parameters.length}\n </span>\n </div>\n <p className=\"m-0 line-clamp-2 text-xs leading-5 text-muted-foreground\">\n {definition.description ?? props.item.description ?? \"No description\"}\n </p>\n <div className=\"flex min-w-0 flex-wrap gap-2 text-[11px] font-medium text-muted-foreground\">\n <span>{requiredCount} required</span>\n <span>{parameters.length - requiredCount} optional</span>\n </div>\n </button>\n );\n}\n\nfunction DynamicToolInspector(props: {\n item: StudioKnowledgeItem;\n source: KnowledgeSourceRef | undefined;\n}) {\n const definition = dynamicToolDefinition(props.item);\n const parameters = dynamicToolParameters(props.item);\n const description = definition.description ?? props.item.description;\n const toolName = definition.name ?? props.item.toolName ?? props.item.id;\n\n return (\n <article className=\"grid min-w-0 gap-5\">\n <header className=\"grid gap-4 border-b border-border/80 pb-5\">\n <div className=\"flex min-w-0 items-start justify-between gap-4 max-md:grid\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Selected tool\n </div>\n <h2 className=\"m-0 truncate font-mono text-2xl font-semibold leading-none text-foreground\">\n {toolName}\n </h2>\n </div>\n <div className=\"flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start\">\n <Badge>{parameters.length} params</Badge>\n <Badge>{parameters.filter((parameter) => parameter.required).length} required</Badge>\n </div>\n </div>\n {description === undefined || description.length === 0 ? null : (\n <p className=\"m-0 max-w-[72ch] text-base leading-7 text-muted-foreground [overflow-wrap:anywhere]\">\n {description}\n </p>\n )}\n <div className=\"min-w-0 overflow-x-auto border-y border-border/80 bg-muted/15 px-3 py-2\">\n <code className=\"font-mono text-sm leading-6 text-foreground\">\n {dynamicToolSignature(toolName, parameters)}\n </code>\n </div>\n </header>\n\n <DynamicToolParameterList parameters={parameters} />\n <DynamicToolSourceDetails item={props.item} source={props.source} />\n\n {props.item.document === undefined ? null : (\n <JsonDetails title=\"Raw definition\" value={props.item.document} />\n )}\n\n {props.item.metadata === undefined ? null : (\n <JsonDetails title=\"Metadata\" value={props.item.metadata} />\n )}\n </article>\n );\n}\n\nfunction DynamicToolParameterList(props: { parameters: DynamicToolParameter[] }) {\n return (\n <section className=\"grid gap-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <h3 className=\"m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Parameters\n </h3>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {props.parameters.length === 0 ? \"No parameters\" : `${props.parameters.length} defined`}\n </span>\n </div>\n {props.parameters.length === 0 ? (\n <div className=\"border-y border-dashed border-border/80 px-3 py-4 text-sm text-muted-foreground\">\n This tool does not declare input parameters.\n </div>\n ) : (\n <div className=\"min-w-0 overflow-hidden border-y border-border/80\">\n {props.parameters.map((parameter) => (\n <div\n className=\"grid min-w-0 grid-cols-[minmax(140px,0.24fr)_minmax(96px,0.14fr)_minmax(96px,0.14fr)_minmax(0,1fr)] gap-4 border-b border-border/70 py-3 last:border-b-0 max-md:grid-cols-1 max-md:gap-1\"\n key={parameter.name}\n >\n <div className=\"min-w-0 font-mono text-sm font-semibold text-foreground [overflow-wrap:anywhere]\">\n {parameter.name}\n </div>\n <div className=\"text-sm text-muted-foreground [overflow-wrap:anywhere]\">\n {parameter.type}\n </div>\n <div className=\"text-sm text-muted-foreground\">\n {parameter.required ? \"Required\" : \"Optional\"}\n </div>\n <div className=\"text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]\">\n {parameter.description ?? \"No description\"}\n </div>\n </div>\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction DynamicToolSourceDetails(props: {\n item: StudioKnowledgeItem;\n source: KnowledgeSourceRef | undefined;\n}) {\n const details = [\n { label: \"Agent\", value: props.source?.agentName ?? props.source?.agentId },\n {\n label: \"Source\",\n value:\n props.source === undefined\n ? undefined\n : `${props.source.source.label ?? sourceLabel(props.source.source.kind)} / ${sourceId(\n props.source.source,\n )}`,\n },\n { label: \"Item ID\", value: props.item.id },\n ].filter((item): item is { label: string; value: string } => item.value !== undefined);\n\n if (details.length === 0) {\n return null;\n }\n\n return (\n <section className=\"grid gap-3 border-t border-border/80 pt-4\">\n <h3 className=\"m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Source\n </h3>\n <dl className=\"grid border-y border-border/80 sm:grid-cols-3 sm:divide-x sm:divide-border/80\">\n {details.map((detail) => (\n <div className=\"min-w-0 px-3 py-3 first:pl-0 last:pr-0\" key={detail.label}>\n <dt className=\"text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {detail.label}\n </dt>\n <dd className=\"m-0 mt-1 truncate text-sm font-medium text-foreground\">\n {detail.value}\n </dd>\n </div>\n ))}\n </dl>\n </section>\n );\n}\n\nfunction DynamicToolEmptyPanel() {\n return (\n <section className=\"grid h-full min-h-80 place-items-center border-y border-dashed border-border/80 px-6 text-center\">\n <div className=\"grid max-w-sm gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">No dynamic tool selected</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">\n Select a tool from the index to inspect its definition and parameters.\n </p>\n </div>\n </section>\n );\n}\n\nfunction dynamicToolDefinition(item: StudioKnowledgeItem): {\n name: string | undefined;\n description: string | undefined;\n parameters: unknown;\n} {\n const document = isRecord(item.document) ? item.document : undefined;\n const definition = isRecord(document?.definition) ? document.definition : undefined;\n const name =\n typeof definition?.name === \"string\"\n ? definition.name\n : typeof document?.toolName === \"string\"\n ? document.toolName\n : item.toolName;\n const description =\n typeof definition?.description === \"string\" ? definition.description : item.description;\n\n return {\n name,\n description,\n parameters: definition?.parameters,\n };\n}\n\nfunction dynamicToolParameters(item: StudioKnowledgeItem): DynamicToolParameter[] {\n const definition = dynamicToolDefinition(item);\n const schema = isRecord(definition.parameters) ? definition.parameters : undefined;\n const properties = isRecord(schema?.properties) ? schema.properties : undefined;\n const required = new Set(\n Array.isArray(schema?.required)\n ? schema.required.filter((value): value is string => typeof value === \"string\")\n : [],\n );\n\n if (properties === undefined) {\n return (item.parameterKeys ?? []).map((name) => ({\n name,\n type: \"unknown\",\n required: false,\n description: undefined,\n }));\n }\n\n return Object.entries(properties).map(([name, value]) => {\n const property = isRecord(value) ? value : {};\n return {\n name,\n type: schemaTypeLabel(property.type),\n required: required.has(name),\n description: typeof property.description === \"string\" ? property.description : undefined,\n };\n });\n}\n\nfunction isDynamicToolItem(item: StudioKnowledgeItem): item is StudioKnowledgeItem & {\n kind: \"dynamic_tool\";\n} {\n return item.kind === \"dynamic_tool\";\n}\n\nfunction dynamicToolStats(items: StudioKnowledgeItem[]): {\n parameterCount: number;\n requiredCount: number;\n} {\n return items.reduce(\n (totals, item) => {\n const parameters = dynamicToolParameters(item);\n totals.parameterCount += parameters.length;\n totals.requiredCount += parameters.filter((parameter) => parameter.required).length;\n return totals;\n },\n { parameterCount: 0, requiredCount: 0 },\n );\n}\n\nfunction dynamicToolSignature(toolName: string, parameters: DynamicToolParameter[]): string {\n if (parameters.length === 0) {\n return `${toolName}()`;\n }\n return `${toolName}({ ${parameters\n .map((parameter) => `${parameter.name}${parameter.required ? \"\" : \"?\"}: ${parameter.type}`)\n .join(\", \")} })`;\n}\n\nfunction KnowledgeMetric(props: { label: string; value: number }) {\n return (\n <span className=\"inline-flex h-8 items-center gap-2 border border-border/70 bg-background/45 px-2.5 text-xs font-medium text-muted-foreground\">\n <span className=\"font-semibold tabular-nums text-foreground\">{props.value}</span>\n {props.label}\n </span>\n );\n}\n\nfunction schemaTypeLabel(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n const labels = value.filter((item): item is string => typeof item === \"string\");\n return labels.length === 0 ? \"unknown\" : labels.join(\" / \");\n }\n return \"unknown\";\n}\n\nfunction JsonDetails(props: { title: string; value: unknown }) {\n const display = jsonDisplay(props.value);\n\n return (\n <details className=\"group rounded-xl border border-border/80 bg-card/30\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 px-4 py-3 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground marker:hidden\">\n <span>{props.title}</span>\n <span className=\"text-xs normal-case tracking-normal text-muted-foreground group-open:hidden\">\n Show\n </span>\n <span className=\"hidden text-xs normal-case tracking-normal text-muted-foreground group-open:inline\">\n Hide\n </span>\n </summary>\n <div className=\"border-t border-border/70\">\n <pre className=\"m-0 max-h-96 overflow-auto p-4 font-mono text-xs leading-5 text-foreground\">\n <code>\n <JsonSyntax text={display} />\n </code>\n </pre>\n </div>\n </details>\n );\n}\n\nfunction jsonDisplay(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return JSON.stringify(String(value), null, 2);\n }\n}\n\nexport function RetrievalLogPanel(props: {\n evidence: NonNullable<StudioKnowledgeSummary[\"evidence\"]>;\n onOpenTrace: (traceId: string) => void;\n}) {\n return (\n <section className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-xl border border-border/80 bg-card/55\">\n <div className=\"border-b border-border/80 px-4 py-3\">\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <h2 className=\"m-0 truncate text-sm font-semibold text-foreground\">Retrieval log</h2>\n <p className=\"m-0 mt-1 truncate text-xs text-muted-foreground\">\n traces / retrieval-evidence\n </p>\n </div>\n <Badge>{props.evidence.length} entries</Badge>\n </div>\n </div>\n <div className=\"min-h-0 overflow-auto p-4\">\n {props.evidence.length === 0 ? (\n <MutedRow text=\"No retrieval evidence captured yet\" />\n ) : null}\n <div className=\"grid gap-3\">\n {props.evidence.map((item) => (\n <article\n className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-3\"\n key={`${item.traceId}:${item.observationId}`}\n >\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-foreground\">\n {item.observationName}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">Turn {item.turn}</div>\n </div>\n <Button\n className=\"h-auto min-h-0 rounded-lg border border-border bg-muted px-2 py-1 text-xs text-muted-foreground\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onOpenTrace(item.traceId)}\n >\n Trace\n </Button>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <Badge>{item.documentCount} docs</Badge>\n <Badge>{item.toolCount} tools</Badge>\n </div>\n {item.query === undefined ? null : (\n <p className=\"m-0 text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]\">\n <span className=\" text-xs font-semibold uppercase tracking-[0.14em] text-foreground\">\n Query\n </span>{\" \"}\n {item.query}\n </p>\n )}\n {item.documents.slice(0, 2).map((document) => (\n <p\n className=\"m-0 text-xs leading-5 text-muted-foreground [overflow-wrap:anywhere]\"\n key={`${document.id ?? \"doc\"}:${document.text ?? \"\"}`}\n >\n <span className=\" text-foreground\">{document.id ?? \"document\"}</span>{\" \"}\n {document.text ?? \"\"}\n </p>\n ))}\n {item.tools.length === 0 ? null : (\n <p className=\"m-0 text-xs leading-5 text-muted-foreground\">\n Tools: {item.tools.join(\", \")}\n </p>\n )}\n </article>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\nfunction JsonBlock(props: { title: string; value: unknown }) {\n return (\n <div className=\"grid gap-2 border-t border-border/70 pt-3\">\n <div className=\" text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.title}\n </div>\n <JsonValueView value={props.value} />\n </div>\n );\n}\n\nexport function EmptyState(props: { title: string; text: string }) {\n return (\n <section className=\"grid h-full place-items-center p-8\">\n <div className=\"grid max-w-sm gap-2 text-center\">\n <h1 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h1>\n <p className=\"m-0 text-sm font-medium leading-6 text-muted-foreground\">{props.text}</p>\n </div>\n </section>\n );\n}\n\nfunction MutedRow(props: { text: string }) {\n return (\n <div className=\"rounded-lg border border-dashed border-border px-4 py-3 text-sm font-medium text-muted-foreground\">\n {props.text}\n </div>\n );\n}\n","import { RefreshIcon } from \"@hugeicons/core-free-icons\";\nimport { type ReactNode, useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { StudioKnowledgeItemsPage, StudioKnowledgeSummary } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport type { KnowledgeTab } from \"../shared/types\";\nimport {\n flattenSources,\n type ItemState,\n itemLimit,\n type KnowledgeSourceRef,\n sourceId,\n sourceKindForTab,\n sourceLabel,\n tabLabel,\n} from \"./knowledge-model\";\nimport { ItemBrowser, RetrievalLogPanel } from \"./knowledge-panels\";\n\nexport function KnowledgePage(props: {\n activeTab: KnowledgeTab;\n enabled: boolean;\n summary: StudioKnowledgeSummary | undefined;\n loading: boolean;\n onOpenTrace: (traceId: string) => void;\n onRefresh: () => void;\n}) {\n const [selectedKey, setSelectedKey] = useState(\"\");\n const [itemState, setItemState] = useState<ItemState | undefined>();\n\n const agents = props.summary?.agents ?? [];\n const evidence = props.summary?.evidence ?? [];\n const sources = useMemo(() => flattenSources(agents), [agents]);\n const activeSourceKind = sourceKindForTab(props.activeTab);\n const visibleSources = useMemo(\n () =>\n activeSourceKind === undefined\n ? []\n : sources.filter((source) => source.source.kind === activeSourceKind),\n [activeSourceKind, sources],\n );\n const selectedSource =\n visibleSources.find((source) => source.key === selectedKey) ?? visibleSources[0];\n\n useEffect(() => {\n if (visibleSources.length === 0) {\n setSelectedKey(\"\");\n return;\n }\n if (visibleSources.some((source) => source.key === selectedKey)) {\n return;\n }\n const next =\n visibleSources.find(\n (source) => source.source.inspectable === true && (source.source.itemCount ?? 0) > 0,\n ) ??\n visibleSources.find((source) => source.source.inspectable === true) ??\n visibleSources[0];\n setSelectedKey(next?.key ?? \"\");\n }, [selectedKey, visibleSources]);\n\n const loadItems = useCallback(\n async (source: KnowledgeSourceRef, options: { append: boolean; cursor?: string }) => {\n const sourceKey = source.key;\n setItemState((current) => ({\n key: sourceKey,\n loading: true,\n inspectable:\n current?.key === sourceKey ? current.inspectable : source.source.inspectable === true,\n items: options.append && current?.key === sourceKey ? current.items : [],\n ...(options.append && current?.key === sourceKey && current.nextCursor !== undefined\n ? { nextCursor: current.nextCursor }\n : {}),\n ...(current?.key === sourceKey && current.totalCount !== undefined\n ? { totalCount: current.totalCount }\n : {}),\n }));\n\n try {\n const params = new URLSearchParams({\n agentId: source.agentId,\n sourceId: sourceId(source.source),\n limit: String(itemLimit),\n });\n if (options.cursor !== undefined) {\n params.set(\"cursor\", options.cursor);\n }\n const response = await fetch(`/knowledge/items?${params.toString()}`);\n if (!response.ok) {\n throw new Error(`Knowledge items failed with HTTP ${response.status}`);\n }\n const page = (await response.json()) as StudioKnowledgeItemsPage;\n setItemState((current) => {\n if (current?.key !== sourceKey) {\n return current;\n }\n return {\n key: sourceKey,\n loading: false,\n inspectable: page.inspectable,\n items: options.append ? [...current.items, ...page.items] : page.items,\n ...(page.nextCursor === undefined ? {} : { nextCursor: page.nextCursor }),\n ...(page.totalCount === undefined ? {} : { totalCount: page.totalCount }),\n ...(page.message === undefined ? {} : { message: page.message }),\n };\n });\n } catch (error) {\n setItemState((current) => {\n if (current?.key !== sourceKey) {\n return current;\n }\n return {\n key: sourceKey,\n loading: false,\n inspectable: current.inspectable,\n items: current.items,\n error: error instanceof Error ? error.message : String(error),\n };\n });\n }\n },\n [],\n );\n\n useEffect(() => {\n if (!props.enabled || selectedSource === undefined) {\n setItemState(undefined);\n return;\n }\n void loadItems(selectedSource, { append: false });\n }, [loadItems, props.enabled, selectedSource]);\n\n return (\n <section className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\">\n <header className=\"bg-background/70 pb-3 pl-4 pr-6 pt-4 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n {tabLabel(props.activeTab)}\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n {knowledgePageDescription(props.activeTab)}\n </p>\n </div>\n <Button\n className=\"h-8 min-h-8 gap-2\"\n type=\"button\"\n variant=\"secondary\"\n disabled={!props.enabled}\n onClick={props.onRefresh}\n >\n <StudioIcon icon={RefreshIcon} aria-hidden=\"true\" />\n Refresh\n </Button>\n </div>\n </header>\n <div className=\"grid min-h-0 grid-rows-[minmax(0,1fr)] overflow-hidden pb-6 pl-4 pr-6 pt-0\">\n {props.activeTab === \"retrieval-log\" ? (\n <RetrievalLogPanel evidence={evidence} onOpenTrace={props.onOpenTrace} />\n ) : (\n <SourceWorkspace\n sources={visibleSources}\n selectedKey={selectedSource?.key ?? \"\"}\n loading={props.loading}\n activeTab={props.activeTab}\n onSelect={setSelectedKey}\n >\n <ItemBrowser\n source={selectedSource}\n state={itemState}\n onLoadMore={() => {\n if (selectedSource === undefined) {\n return;\n }\n void loadItems(\n selectedSource,\n itemState?.nextCursor === undefined\n ? { append: true }\n : { append: true, cursor: itemState.nextCursor },\n );\n }}\n />\n </SourceWorkspace>\n )}\n </div>\n </section>\n );\n}\n\nfunction SourceWorkspace(props: {\n sources: KnowledgeSourceRef[];\n selectedKey: string;\n loading: boolean;\n activeTab: KnowledgeTab;\n onSelect: (key: string) => void;\n children: ReactNode;\n}) {\n const showSources = props.sources.length !== 1 || props.loading;\n return (\n <div\n className={[\n \"grid min-h-0 gap-3 overflow-hidden\",\n showSources ? \"grid-rows-[auto_minmax(0,1fr)]\" : \"grid-rows-[minmax(0,1fr)]\",\n ].join(\" \")}\n >\n {showSources ? (\n <div className=\"min-w-0 overflow-x-auto border-b border-border/80\">\n <div className=\"flex min-h-11 min-w-max items-center gap-2\">\n <span className=\"mr-2 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {tabLabel(props.activeTab)}\n </span>\n {props.loading && props.sources.length === 0 ? (\n <span className=\" text-xs text-muted-foreground\">Loading sources</span>\n ) : null}\n {!props.loading && props.sources.length === 0 ? (\n <span className=\" text-xs text-muted-foreground\">No knowledge sources</span>\n ) : null}\n {props.sources.map((source) => (\n <button\n className={[\n \"flex h-7 items-center gap-2 rounded-lg border border-border/80 bg-background/45 px-2.5 text-xs font-semibold text-muted-foreground transition duration-200 hover:border-border/80 hover:bg-muted/45 hover:text-foreground focus-visible:border-ring focus-visible:outline-none\",\n props.selectedKey === source.key\n ? \"border-border/80 bg-muted/45 text-foreground\"\n : \"\",\n ].join(\" \")}\n key={source.key}\n type=\"button\"\n onClick={() => props.onSelect(source.key)}\n >\n <span>{source.source.label ?? sourceLabel(source.source.kind)}</span>\n {source.source.itemCount === undefined ? null : (\n <span className=\"text-muted-foreground\">{source.source.itemCount}</span>\n )}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n {props.children}\n </div>\n );\n}\n\nfunction knowledgePageDescription(tab: KnowledgeTab): string {\n switch (tab) {\n case \"static-context\":\n return \"Browse configured static context exposed to agents.\";\n case \"dynamic-context\":\n return \"Inspect dynamic context chunks resolved at runtime.\";\n case \"dynamic-tools\":\n return \"Review dynamic tool definitions and parameters.\";\n case \"retrieval-log\":\n return \"Inspect retrieval evidence and jump into related traces.\";\n }\n}\n"],"mappings":"+UAQA,SAAgB,EAAY,EAIzB,CACD,IAAM,EAAQ,EAAM,MAOpB,OANI,EAAM,QAAQ,OAAO,OAAS,iBAE9B,EAAA,EAAA,KAAC,EAAD,CAAqB,OAAQ,EAAM,OAAe,QAAO,WAAY,EAAM,WAAc,CAAA,EAK3F,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,uEAAnB,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kCACb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qBAAf,CACG,EAAM,SAAW,IAAA,IAAY,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,+BAAiC,CAAA,CAAG,KAChF,GAAO,UAAY,IAAQ,EAAM,MAAM,SAAW,GACjD,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,gBAAkB,CAAA,CAC/B,KACH,GAAO,QAAU,IAAA,GAAY,MAAO,EAAA,EAAA,KAAC,EAAD,CAAU,KAAM,EAAM,MAAS,CAAA,CACnE,GAAO,cAAgB,IACtB,EAAA,EAAA,KAAC,EAAD,CAAU,KAAM,EAAM,SAAW,iDAAoD,CAAA,CACnF,KACH,GAAO,cAAgB,IAAS,GAAO,UAAY,IAAS,EAAM,MAAM,SAAW,GAClF,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,0BAA4B,CAAA,CACzC,MACJ,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sBACZ,GAAO,MAAM,IAAK,IACjB,EAAA,EAAA,KAAC,EAAD,CACQ,OAEN,OAAQ,EAAM,OACd,CAFK,GAAG,EAAK,KAAK,GAAG,EAAK,KAE1B,CACF,CACE,CAAA,CACF,GACF,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uGAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,0CACb,IAAU,IAAA,GAAY,WAAa,GAAG,EAAM,MAAM,OAAO,SACrD,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,cACV,KAAK,SACL,QAAQ,YACR,SAAU,GAAO,UAAY,IAAQ,GAAO,aAAe,IAAA,GAC3D,QAAS,EAAM,oBAChB,YAEQ,CAAA,CACL,GACE,GAId,SAAS,EAAkB,EAGxB,CASD,OARI,EAAM,KAAK,OAAS,gBAEpB,EAAA,EAAA,KAAC,UAAD,CAAS,UAAU,oEACjB,EAAA,EAAA,KAAC,EAAD,CAAsB,KAAM,EAAM,KAAM,OAAQ,EAAM,OAAU,CAAA,CACxD,CAAA,EAKZ,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,8EAAnB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0DAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oBACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0DACZ,EAAM,KAAK,UAAY,EAAM,KAAK,GAC/B,CAAA,CACF,CAAA,CACL,EAAM,KAAK,gBAAkB,IAAA,IAAa,EAAM,KAAK,cAAc,SAAW,EAAI,MACjF,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CAAQ,EAAM,KAAK,cAAc,OAAO,UAAe,CAAA,CAAA,CAErD,GACL,EAAM,KAAK,cAAgB,IAAA,IAAa,EAAM,KAAK,YAAY,SAAW,EAAI,MAC7E,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,gFACV,EAAM,KAAK,YACV,CAAA,CAEL,EAAM,KAAK,OAAS,IAAA,GAAY,MAC/B,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,8FACV,EAAM,KAAK,KACV,CAAA,CAEL,EAAM,KAAK,WAAa,IAAA,GAAY,MACnC,EAAA,EAAA,KAAC,EAAD,CAAW,MAAM,WAAW,MAAO,EAAM,KAAK,SAAY,CAAA,CAE3D,EAAM,KAAK,WAAa,IAAA,GAAY,MACnC,EAAA,EAAA,KAAC,EAAD,CAAW,MAAM,WAAW,MAAO,EAAM,KAAK,SAAY,CAAA,CAE3D,EAAM,KAAK,gBAAkB,IAAA,IAAa,EAAM,KAAK,cAAc,SAAW,EAAI,MACjF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gCACZ,EAAM,KAAK,cAAc,IAAK,IAC7B,EAAA,EAAA,KAAC,EAAD,CAAA,SAAkB,EAAY,CAAlB,EAAkB,CAC9B,CACE,CAAA,CAEA,GAWd,SAAS,EAAoB,EAI1B,CACD,IAAM,GAAA,EAAA,EAAA,cACG,EAAM,OAAO,OAAS,EAAE,EAAE,OAAO,EAAkB,CAC1D,CAAC,EAAM,OAAO,MAAM,CACrB,CACK,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,GAAG,CAC1C,EAAe,EAAM,KAAM,GAAS,EAAK,KAAO,EAAW,EAAI,EAAM,GACrE,GAAA,EAAA,EAAA,aAAsB,EAAiB,EAAM,CAAE,CAAC,EAAM,CAAC,CAY7D,OAVA,EAAA,EAAA,eAAgB,CACd,GAAI,EAAM,SAAW,EAAG,CACtB,EAAc,GAAG,CACjB,OAEG,EAAM,KAAM,GAAS,EAAK,KAAO,EAAW,EAC/C,EAAc,EAAM,IAAI,IAAM,GAAG,EAElC,CAAC,EAAY,EAAM,CAAC,EAGrB,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,4EAAnB,EACE,EAAA,EAAA,MAAC,SAAD,CAAQ,UAAU,6HAAlB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mFAA0E,qBAEnF,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uEAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,yCACb,EAAM,OAAO,OAAO,OAAS,EAAY,EAAM,OAAO,OAAO,KAAK,CAC9D,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,iCAAyB,EAAM,OAAO,UAAiB,CAAA,CACnE,GACF,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yEAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAiB,MAAM,QAAQ,MAAO,EAAM,OAAU,CAAA,EACtD,EAAA,EAAA,KAAC,EAAD,CAAiB,MAAM,SAAS,MAAO,EAAM,eAAkB,CAAA,EAC/D,EAAA,EAAA,KAAC,EAAD,CAAiB,MAAM,WAAW,MAAO,EAAM,cAAiB,CAAA,CAC5D,GACC,IAET,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gKAAf,EACE,EAAA,EAAA,KAAC,QAAD,CAAO,UAAU,+GACf,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4CAAf,CACG,EAAM,SAAW,IAAA,IAAY,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,+BAAiC,CAAA,CAAG,KAChF,EAAM,OAAO,UAAY,IAAQ,EAAM,SAAW,GACjD,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,wBAA0B,CAAA,CACvC,KACH,EAAM,OAAO,QAAU,IAAA,GAAY,MAAO,EAAA,EAAA,KAAC,EAAD,CAAU,KAAM,EAAM,MAAM,MAAS,CAAA,CAC/E,EAAM,OAAO,cAAgB,IAC5B,EAAA,EAAA,KAAC,EAAD,CACE,KAAM,EAAM,MAAM,SAAW,gDAC7B,CAAA,CACA,KACH,EAAM,OAAO,cAAgB,IAC9B,EAAM,OAAO,UAAY,IACzB,EAAM,SAAW,GACf,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,kCAAoC,CAAA,CACjD,KACH,EAAM,IAAK,IACV,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,GAAc,KAAO,EAAK,GAC5B,OAEN,aAAgB,EAAc,EAAK,GAAG,CACtC,CAFK,EAAK,GAEV,CACF,CACE,GACA,CAAA,EAER,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uDACZ,IAAiB,IAAA,IAChB,EAAA,EAAA,KAAC,EAAD,EAAyB,CAAA,EAEzB,EAAA,EAAA,KAAC,EAAD,CAAsB,KAAM,EAAc,OAAQ,EAAM,OAAU,CAAA,CAEhE,CAAA,CACF,IAEN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4GAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,yCACb,EAAM,QAAU,IAAA,GAAY,WAAa,GAAG,EAAM,MAAM,MAAM,OAAO,SACjE,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,cACV,KAAK,SACL,QAAQ,YACR,SAAU,EAAM,OAAO,UAAY,IAAQ,EAAM,OAAO,aAAe,IAAA,GACvE,QAAS,EAAM,oBAChB,YAEQ,CAAA,CACL,GACE,GAId,SAAS,EAAoB,EAI1B,CACD,IAAM,EAAa,EAAsB,EAAM,KAAK,CAC9C,EAAa,EAAsB,EAAM,KAAK,CAC9C,EAAgB,EAAW,OAAQ,GAAc,EAAU,SAAS,CAAC,OACrE,EAAW,EAAW,MAAQ,EAAM,KAAK,UAAY,EAAM,KAAK,GAEtE,OACE,EAAA,EAAA,MAAC,SAAD,CACE,UAAW,CACT,oMACA,EAAM,OAAS,+CAAiD,wBACjE,CAAC,KAAK,IAAI,CACX,KAAK,SACL,QAAS,EAAM,kBANjB,EAQE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2DAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4EACb,EACI,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+DACb,EAAW,OACP,CAAA,CACH,IACN,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,oEACV,EAAW,aAAe,EAAM,KAAK,aAAe,iBACnD,CAAA,EACJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sFAAf,EACE,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAc,YAAgB,CAAA,CAAA,EACrC,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CAAO,EAAW,OAAS,EAAc,YAAgB,CAAA,CAAA,CACrD,GACC,GAIb,SAAS,EAAqB,EAG3B,CACD,IAAM,EAAa,EAAsB,EAAM,KAAK,CAC9C,EAAa,EAAsB,EAAM,KAAK,CAC9C,EAAc,EAAW,aAAe,EAAM,KAAK,YACnD,EAAW,EAAW,MAAQ,EAAM,KAAK,UAAY,EAAM,KAAK,GAEtE,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,8BAAnB,EACE,EAAA,EAAA,MAAC,SAAD,CAAQ,UAAU,qDAAlB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sEAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mFAA0E,gBAEnF,CAAA,EACN,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,sFACX,EACE,CAAA,CACD,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yEAAf,EACE,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CAAQ,EAAW,OAAO,UAAe,CAAA,CAAA,EACzC,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CAAQ,EAAW,OAAQ,GAAc,EAAU,SAAS,CAAC,OAAO,YAAiB,CAAA,CAAA,CACjF,GACF,GACL,IAAgB,IAAA,IAAa,EAAY,SAAW,EAAI,MACvD,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,+FACV,EACC,CAAA,EAEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oFACb,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,uDACb,EAAqB,EAAU,EAAW,CACtC,CAAA,CACH,CAAA,CACC,IAET,EAAA,EAAA,KAAC,EAAD,CAAsC,aAAc,CAAA,EACpD,EAAA,EAAA,KAAC,EAAD,CAA0B,KAAM,EAAM,KAAM,OAAQ,EAAM,OAAU,CAAA,CAEnE,EAAM,KAAK,WAAa,IAAA,GAAY,MACnC,EAAA,EAAA,KAAC,EAAD,CAAa,MAAM,iBAAiB,MAAO,EAAM,KAAK,SAAY,CAAA,CAGnE,EAAM,KAAK,WAAa,IAAA,GAAY,MACnC,EAAA,EAAA,KAAC,EAAD,CAAa,MAAM,WAAW,MAAO,EAAM,KAAK,SAAY,CAAA,CAEtD,GAId,SAAS,EAAyB,EAA+C,CAC/E,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,sBAAnB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mDAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,uFAA8E,aAEvF,CAAA,EACL,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qDACb,EAAM,WAAW,SAAW,EAAI,gBAAkB,GAAG,EAAM,WAAW,OAAO,UACzE,CAAA,CACH,GACL,EAAM,WAAW,SAAW,GAC3B,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,2FAAkF,+CAE3F,CAAA,EAEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6DACZ,EAAM,WAAW,IAAK,IACrB,EAAA,EAAA,MAAC,MAAD,CACE,UAAU,oMADZ,EAIE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4FACZ,EAAU,KACP,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kEACZ,EAAU,KACP,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yCACZ,EAAU,SAAW,WAAa,WAC/B,CAAA,EACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4EACZ,EAAU,aAAe,iBACtB,CAAA,CACF,EAdC,EAAU,KAcX,CACN,CACE,CAAA,CAEA,GAId,SAAS,EAAyB,EAG/B,CACD,IAAM,EAAU,CACd,CAAE,MAAO,QAAS,MAAO,EAAM,QAAQ,WAAa,EAAM,QAAQ,QAAS,CAC3E,CACE,MAAO,SACP,MACE,EAAM,SAAW,IAAA,GACb,IAAA,GACA,GAAG,EAAM,OAAO,OAAO,OAAS,EAAY,EAAM,OAAO,OAAO,KAAK,CAAC,KAAK,EACzE,EAAM,OAAO,OACd,GACR,CACD,CAAE,MAAO,UAAW,MAAO,EAAM,KAAK,GAAI,CAC3C,CAAC,OAAQ,GAAmD,EAAK,QAAU,IAAA,GAAU,CAMtF,OAJI,EAAQ,SAAW,EACd,MAIP,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,qDAAnB,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,uFAA8E,SAEvF,CAAA,EACL,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,yFACX,EAAQ,IAAK,IACZ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kDAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,mFACX,EAAO,MACL,CAAA,EACL,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,iEACX,EAAO,MACL,CAAA,CACD,EAPuD,EAAO,MAO9D,CACN,CACC,CAAA,CACG,GAId,SAAS,GAAwB,CAC/B,OACE,EAAA,EAAA,KAAC,UAAD,CAAS,UAAU,6GACjB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,+BAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,uDAA8C,2BAA6B,CAAA,EACzF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uDAA8C,yEAEvD,CAAA,CACA,GACE,CAAA,CAId,SAAS,EAAsB,EAI7B,CACA,IAAM,EAAW,EAAS,EAAK,SAAS,CAAG,EAAK,SAAW,IAAA,GACrD,EAAa,EAAS,GAAU,WAAW,CAAG,EAAS,WAAa,IAAA,GAU1E,MAAO,CACL,KATA,OAAO,GAAY,MAAS,SACxB,EAAW,KACX,OAAO,GAAU,UAAa,SAC5B,EAAS,SACT,EAAK,SAMX,YAJA,OAAO,GAAY,aAAgB,SAAW,EAAW,YAAc,EAAK,YAK5E,WAAY,GAAY,WACzB,CAGH,SAAS,EAAsB,EAAmD,CAChF,IAAM,EAAa,EAAsB,EAAK,CACxC,EAAS,EAAS,EAAW,WAAW,CAAG,EAAW,WAAa,IAAA,GACnE,EAAa,EAAS,GAAQ,WAAW,CAAG,EAAO,WAAa,IAAA,GAChE,EAAW,IAAI,IACnB,MAAM,QAAQ,GAAQ,SAAS,CAC3B,EAAO,SAAS,OAAQ,GAA2B,OAAO,GAAU,SAAS,CAC7E,EAAE,CACP,CAWD,OATI,IAAe,IAAA,IACT,EAAK,eAAiB,EAAE,EAAE,IAAK,IAAU,CAC/C,OACA,KAAM,UACN,SAAU,GACV,YAAa,IAAA,GACd,EAAE,CAGE,OAAO,QAAQ,EAAW,CAAC,KAAK,CAAC,EAAM,KAAW,CACvD,IAAM,EAAW,EAAS,EAAM,CAAG,EAAQ,EAAE,CAC7C,MAAO,CACL,OACA,KAAM,EAAgB,EAAS,KAAK,CACpC,SAAU,EAAS,IAAI,EAAK,CAC5B,YAAa,OAAO,EAAS,aAAgB,SAAW,EAAS,YAAc,IAAA,GAChF,EACD,CAGJ,SAAS,EAAkB,EAEzB,CACA,OAAO,EAAK,OAAS,eAGvB,SAAS,EAAiB,EAGxB,CACA,OAAO,EAAM,QACV,EAAQ,IAAS,CAChB,IAAM,EAAa,EAAsB,EAAK,CAG9C,MAFA,GAAO,gBAAkB,EAAW,OACpC,EAAO,eAAiB,EAAW,OAAQ,GAAc,EAAU,SAAS,CAAC,OACtE,GAET,CAAE,eAAgB,EAAG,cAAe,EAAG,CACxC,CAGH,SAAS,EAAqB,EAAkB,EAA4C,CAI1F,OAHI,EAAW,SAAW,EACjB,GAAG,EAAS,IAEd,GAAG,EAAS,KAAK,EACrB,IAAK,GAAc,GAAG,EAAU,OAAO,EAAU,SAAW,GAAK,IAAI,IAAI,EAAU,OAAO,CAC1F,KAAK,KAAK,CAAC,KAGhB,SAAS,EAAgB,EAAyC,CAChE,OACE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,wIAAhB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sDAA8C,EAAM,MAAa,CAAA,CAChF,EAAM,MACF,GAIX,SAAS,EAAgB,EAAwB,CAC/C,GAAI,OAAO,GAAU,SACnB,OAAO,EAET,GAAI,MAAM,QAAQ,EAAM,CAAE,CACxB,IAAM,EAAS,EAAM,OAAQ,GAAyB,OAAO,GAAS,SAAS,CAC/E,OAAO,EAAO,SAAW,EAAI,UAAY,EAAO,KAAK,MAAM,CAE7D,MAAO,UAGT,SAAS,EAAY,EAA0C,CAC7D,IAAM,EAAU,EAAY,EAAM,MAAM,CAExC,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,+DAAnB,EACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,4KAAnB,EACE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAM,MAAa,CAAA,EAC1B,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,uFAA8E,OAEvF,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8FAAqF,OAE9F,CAAA,CACC,IACV,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sCACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uFACb,EAAA,EAAA,KAAC,OAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAW,CAAA,CACxB,CAAA,CACH,CAAA,CACF,CAAA,CACE,GAId,SAAS,EAAY,EAAwB,CAC3C,GAAI,CACF,OAAO,KAAK,UAAU,EAAO,KAAM,EAAE,MAC/B,CACN,OAAO,KAAK,UAAU,OAAO,EAAM,CAAE,KAAM,EAAE,EAIjD,SAAgB,EAAkB,EAG/B,CACD,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,qHAAnB,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gDACb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0DAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,8DAAqD,gBAAkB,CAAA,EACrF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,2DAAkD,8BAE3D,CAAA,CACA,IACN,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CAAQ,EAAM,SAAS,OAAO,WAAgB,CAAA,CAAA,CAC1C,GACF,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qCAAf,CACG,EAAM,SAAS,SAAW,GACzB,EAAA,EAAA,KAAC,EAAD,CAAU,KAAK,qCAAuC,CAAA,CACpD,MACJ,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sBACZ,EAAM,SAAS,IAAK,IACnB,EAAA,EAAA,MAAC,UAAD,CACE,UAAU,8EADZ,EAIE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,0DAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0DACZ,EAAK,gBACF,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8CAAf,CAAoD,QAAM,EAAK,KAAW,GACtE,IACN,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,kGACV,KAAK,SACL,QAAQ,QACR,YAAe,EAAM,YAAY,EAAK,QAAQ,UAC/C,QAEQ,CAAA,CACL,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gCAAf,EACE,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CAAQ,EAAK,cAAc,QAAa,CAAA,CAAA,EACxC,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CAAQ,EAAK,UAAU,SAAc,CAAA,CAAA,CACjC,GACL,EAAK,QAAU,IAAA,GAAY,MAC1B,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,gFAAb,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8EAAqE,QAE9E,CAAA,CAAC,IACP,EAAK,MACJ,GAEL,EAAK,UAAU,MAAM,EAAG,EAAE,CAAC,IAAK,IAC/B,EAAA,EAAA,MAAC,IAAD,CACE,UAAU,gFADZ,EAIE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4BAAoB,EAAS,IAAM,WAAkB,CAAA,CAAC,IACrE,EAAS,MAAQ,GAChB,EAJG,GAAG,EAAS,IAAM,MAAM,GAAG,EAAS,MAAQ,KAI/C,CACJ,CACD,EAAK,MAAM,SAAW,EAAI,MACzB,EAAA,EAAA,MAAC,IAAD,CAAG,UAAU,uDAAb,CAA2D,UACjD,EAAK,MAAM,KAAK,KAAK,CAC3B,GAEE,EA5CH,GAAG,EAAK,QAAQ,GAAG,EAAK,gBA4CrB,CACV,CACE,CAAA,CACF,GACE,GAId,SAAS,EAAU,EAA0C,CAC3D,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qDAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oFACZ,EAAM,MACH,CAAA,EACN,EAAA,EAAA,KAAC,EAAD,CAAe,MAAO,EAAM,MAAS,CAAA,CACjC,GAeV,SAAS,EAAS,EAAyB,CACzC,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6GACZ,EAAM,KACH,CAAA,CCvnBV,SAAgB,EAAc,EAO3B,CACD,GAAM,CAAC,EAAa,IAAA,EAAA,EAAA,UAA2B,GAAG,CAC5C,CAAC,EAAW,IAAA,EAAA,EAAA,WAAiD,CAE7D,EAAS,EAAM,SAAS,QAAU,EAAE,CACpC,EAAW,EAAM,SAAS,UAAY,EAAE,CACxC,GAAA,EAAA,EAAA,aAAwB,EAAe,EAAO,CAAE,CAAC,EAAO,CAAC,CACzD,EAAmB,EAAiB,EAAM,UAAU,CACpD,GAAA,EAAA,EAAA,aAEF,IAAqB,IAAA,GACjB,EAAE,CACF,EAAQ,OAAQ,GAAW,EAAO,OAAO,OAAS,EAAiB,CACzE,CAAC,EAAkB,EAAQ,CAC5B,CACK,EACJ,EAAe,KAAM,GAAW,EAAO,MAAQ,EAAY,EAAI,EAAe,IAEhF,EAAA,EAAA,eAAgB,CACd,GAAI,EAAe,SAAW,EAAG,CAC/B,EAAe,GAAG,CAClB,OAEE,EAAe,KAAM,GAAW,EAAO,MAAQ,EAAY,EAS/D,GALE,EAAe,KACZ,GAAW,EAAO,OAAO,cAAgB,KAAS,EAAO,OAAO,WAAa,GAAK,EACpF,EACD,EAAe,KAAM,GAAW,EAAO,OAAO,cAAgB,GAAK,EACnE,EAAe,KACI,KAAO,GAAG,EAC9B,CAAC,EAAa,EAAe,CAAC,CAEjC,IAAM,GAAA,EAAA,EAAA,aACJ,MAAO,EAA4B,IAAkD,CACnF,IAAM,EAAY,EAAO,IACzB,EAAc,IAAa,CACzB,IAAK,EACL,QAAS,GACT,YACE,GAAS,MAAQ,EAAY,EAAQ,YAAc,EAAO,OAAO,cAAgB,GACnF,MAAO,EAAQ,QAAU,GAAS,MAAQ,EAAY,EAAQ,MAAQ,EAAE,CACxE,GAAI,EAAQ,QAAU,GAAS,MAAQ,GAAa,EAAQ,aAAe,IAAA,GACvE,CAAE,WAAY,EAAQ,WAAY,CAClC,EAAE,CACN,GAAI,GAAS,MAAQ,GAAa,EAAQ,aAAe,IAAA,GACrD,CAAE,WAAY,EAAQ,WAAY,CAClC,EAAE,CACP,EAAE,CAEH,GAAI,CACF,IAAM,EAAS,IAAI,gBAAgB,CACjC,QAAS,EAAO,QAChB,SAAU,EAAS,EAAO,OAAO,CACjC,MAAO,KACR,CAAC,CACE,EAAQ,SAAW,IAAA,IACrB,EAAO,IAAI,SAAU,EAAQ,OAAO,CAEtC,IAAM,EAAW,MAAM,MAAM,oBAAoB,EAAO,UAAU,GAAG,CACrE,GAAI,CAAC,EAAS,GACZ,MAAU,MAAM,oCAAoC,EAAS,SAAS,CAExE,IAAM,EAAQ,MAAM,EAAS,MAAM,CACnC,EAAc,GACR,GAAS,MAAQ,EAGd,CACL,IAAK,EACL,QAAS,GACT,YAAa,EAAK,YAClB,MAAO,EAAQ,OAAS,CAAC,GAAG,EAAQ,MAAO,GAAG,EAAK,MAAM,CAAG,EAAK,MACjE,GAAI,EAAK,aAAe,IAAA,GAAY,EAAE,CAAG,CAAE,WAAY,EAAK,WAAY,CACxE,GAAI,EAAK,aAAe,IAAA,GAAY,EAAE,CAAG,CAAE,WAAY,EAAK,WAAY,CACxE,GAAI,EAAK,UAAY,IAAA,GAAY,EAAE,CAAG,CAAE,QAAS,EAAK,QAAS,CAChE,CAVQ,EAWT,OACK,EAAO,CACd,EAAc,GACR,GAAS,MAAQ,EAGd,CACL,IAAK,EACL,QAAS,GACT,YAAa,EAAQ,YACrB,MAAO,EAAQ,MACf,MAAO,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAC9D,CARQ,EAST,GAGN,EAAE,CACH,CAUD,OARA,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,EAAM,SAAW,IAAmB,IAAA,GAAW,CAClD,EAAa,IAAA,GAAU,CACvB,OAEG,EAAU,EAAgB,CAAE,OAAQ,GAAO,CAAC,EAChD,CAAC,EAAW,EAAM,QAAS,EAAe,CAAC,EAG5C,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,wFAAnB,EACE,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,+DAChB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yFAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,kFACX,EAAS,EAAM,UAAU,CACvB,CAAA,EACL,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,oEACV,EAAyB,EAAM,UAAU,CACxC,CAAA,CACA,IACN,EAAA,EAAA,MAAC,EAAD,CACE,UAAU,oBACV,KAAK,SACL,QAAQ,YACR,SAAU,CAAC,EAAM,QACjB,QAAS,EAAM,mBALjB,EAOE,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAa,cAAY,OAAS,CAAA,CAAA,UAE7C,GACL,GACC,CAAA,EACT,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sFACZ,EAAM,YAAc,iBACnB,EAAA,EAAA,KAAC,EAAD,CAA6B,WAAU,YAAa,EAAM,YAAe,CAAA,EAEzE,EAAA,EAAA,KAAC,EAAD,CACE,QAAS,EACT,YAAa,GAAgB,KAAO,GACpC,QAAS,EAAM,QACf,UAAW,EAAM,UACjB,SAAU,YAEV,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,MAAO,EACP,eAAkB,CACZ,IAAmB,IAAA,IAGlB,EACH,EACA,GAAW,aAAe,IAAA,GACtB,CAAE,OAAQ,GAAM,CAChB,CAAE,OAAQ,GAAM,OAAQ,EAAU,WAAY,CACnD,EAEH,CAAA,CACc,CAAA,CAEhB,CAAA,CACE,GAId,SAAS,EAAgB,EAOtB,CACD,IAAM,EAAc,EAAM,QAAQ,SAAW,GAAK,EAAM,QACxD,OACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,CACT,qCACA,EAAc,iCAAmC,4BAClD,CAAC,KAAK,IAAI,UAJb,CAMG,GACC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,8DACb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,wFACb,EAAS,EAAM,UAAU,CACrB,CAAA,CACN,EAAM,SAAW,EAAM,QAAQ,SAAW,GACzC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,0CAAiC,kBAAsB,CAAA,CACrE,KACH,CAAC,EAAM,SAAW,EAAM,QAAQ,SAAW,GAC1C,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,0CAAiC,uBAA2B,CAAA,CAC1E,KACH,EAAM,QAAQ,IAAK,IAClB,EAAA,EAAA,MAAC,SAAD,CACE,UAAW,CACT,iRACA,EAAM,cAAgB,EAAO,IACzB,+CACA,GACL,CAAC,KAAK,IAAI,CAEX,KAAK,SACL,YAAe,EAAM,SAAS,EAAO,IAAI,UAT3C,EAWE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,EAAO,OAAO,OAAS,EAAY,EAAO,OAAO,KAAK,CAAQ,CAAA,CACpE,EAAO,OAAO,YAAc,IAAA,GAAY,MACvC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,iCAAyB,EAAO,OAAO,UAAiB,CAAA,CAEnE,EARF,EAAO,IAQL,CACT,CACE,GACF,CAAA,CACJ,KACH,EAAM,SACH,GAIV,SAAS,EAAyB,EAA2B,CAC3D,OAAQ,EAAR,CACE,IAAK,iBACH,MAAO,sDACT,IAAK,kBACH,MAAO,sDACT,IAAK,gBACH,MAAO,kDACT,IAAK,gBACH,MAAO"}
Binary file
@@ -0,0 +1,2 @@
1
+ import{i as e,r as t,s as n}from"./utils-BN2yP0LH.js";import{I as r,c as i,d as a,f as o,l as s,u as c}from"./index-DMVhlBNM.js";import{t as l}from"./badge-BH7gz3tB.js";import{a as u,c as d,r as f,s as p,t as m,u as h}from"./tool-runner-5wyqco4y.js";var g=n(e(),1),_=t();function v(e){let t=e.agents.find(t=>t.id===e.selectedAgentId)??e.agents[0],n=e.summary?.servers??[],r=n.reduce((e,t)=>e+t.toolCount,0),d=(0,g.useMemo)(()=>S(n),[n]),[m,h]=(0,g.useState)(``),[v,b]=(0,g.useState)(`{}`),[C,w]=(0,g.useState)(`idle`),[T,E]=(0,g.useState)(),[D,O]=(0,g.useState)(``),k=(0,g.useMemo)(()=>d.find(e=>e.key===m)??d[0],[d,m]),A=(0,g.useRef)(``),j=(0,g.useRef)(0);(0,g.useEffect)(()=>{if(d.length===0){h(``);return}d.some(e=>e.key===m)||h(d[0]?.key??``)},[d,m]),(0,g.useEffect)(()=>{let e=k?.key??``;A.current!==e&&(A.current=e,j.current+=1,b(`{}`),w(`idle`),O(``),E(void 0))},[k]);async function M(){if(k===void 0)return;let e;try{e=JSON.parse(v)}catch(e){O(e instanceof Error?e.message:String(e)),E(void 0);return}w(`running`),O(``),E(void 0);let t=k.key,n=j.current+1;j.current=n;let r=()=>j.current===n&&A.current===t;try{let t=await fetch(`/agents/${encodeURIComponent(k.agentId)}/tools/${encodeURIComponent(k.name)}/runs`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({args:e})}),n=await t.json();if(!r())return;let i=p(n);if(i===void 0){O(`Unexpected Studio tool run response: ${u(n)}`);return}E(i),(!t.ok||i.status===`error`)&&O(u(i.error??i))}catch(e){r()&&O(e instanceof Error?e.message:String(e))}finally{r()&&w(`idle`)}}return(0,_.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`MCPs`,children:[(0,_.jsx)(`header`,{className:`bg-background/70 pb-3 pl-4 pr-6 pt-4 backdrop-blur`,children:(0,_.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,_.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,_.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.24em] text-foreground`,children:`External context`}),(0,_.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`MCPs`}),(0,_.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`MCP servers and remote tools registered on Studio agents, grouped by server.`})]}),(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3 max-md:grid max-md:grid-cols-1`,children:[(0,_.jsxs)(l,{className:`h-9 justify-center border-border/80 bg-card/70 text-muted-foreground`,children:[n.length,` servers / `,r,` tools`]}),e.agents.length>1?(0,_.jsxs)(i,{value:t?.id??``,onValueChange:e.onSelectAgent,children:[(0,_.jsx)(a,{className:`h-9 min-h-9 w-64 rounded-lg border-border bg-card/80 text-xs max-md:w-full`,children:(0,_.jsx)(o,{placeholder:`Agent`})}),(0,_.jsx)(s,{align:`end`,children:e.agents.map(e=>(0,_.jsx)(c,{value:e.id,children:e.name??e.id},e.id))})]}):null]})]})}),(0,_.jsx)(`div`,{className:`min-h-0 overflow-auto pb-6 pl-4 pr-6`,children:(0,_.jsxs)(`div`,{className:`grid w-full gap-5`,children:[e.enabled?e.loading?(0,_.jsx)(x,{title:`Loading MCPs`,message:`Reading registered MCP metadata.`}):n.length===0?(0,_.jsx)(x,{title:`No MCPs`,message:`The selected agent has no registered MCP tools.`}):n.map(e=>(0,_.jsx)(y,{selectedToolKey:k?.key??``,server:e,onSelectTool:h},e.name)):(0,_.jsx)(x,{title:`MCPs unavailable`,message:`No registered Studio agent exposes MCP tools.`}),d.length===0?null:(0,_.jsx)(f,{argsText:v,runError:D,runResponse:T,runState:C,selectedTool:k,onArgsTextChange:b,onRun:()=>void M()})]})})]})}function y(e){return(0,_.jsxs)(`section`,{className:`overflow-hidden rounded-xl border border-border/80 bg-card/55 p-2 shadow-sm`,children:[(0,_.jsxs)(`header`,{className:`grid min-h-14 grid-cols-[minmax(0,1fr)_auto] items-center gap-4 rounded-lg border border-border/60 bg-muted/20 px-4`,children:[(0,_.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,_.jsx)(`h2`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.server.name}),(0,_.jsx)(`span`,{className:`truncate text-xs font-medium text-muted-foreground`,children:e.server.agentId})]}),(0,_.jsxs)(l,{className:`border-border/80 bg-background/50 text-muted-foreground`,children:[e.server.toolCount,` tools`]})]}),(0,_.jsx)(`div`,{className:`mt-1 grid gap-1`,children:e.server.tools.map(t=>(0,_.jsx)(b,{serverName:e.server.name,active:e.selectedToolKey===C(e.server.name,t),tool:t,onSelectTool:e.onSelectTool},`${t.source}:${t.name}`))})]})}function b(e){let t=C(e.serverName,e.tool);return(0,_.jsxs)(`article`,{className:`grid grid-cols-[minmax(300px,0.75fr)_minmax(0,1fr)] gap-2 rounded-lg border border-transparent bg-background/25 p-2 transition duration-200 hover:border-border/70 hover:bg-background/35 max-lg:grid-cols-1`,children:[(0,_.jsxs)(`div`,{className:`grid content-start gap-4 rounded-lg bg-card/25 p-3`,children:[(0,_.jsxs)(`div`,{className:`grid gap-1`,children:[(0,_.jsx)(`h3`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.tool.name}),(0,_.jsx)(`span`,{className:` text-xs font-medium text-muted-foreground`,children:e.tool.source})]}),(0,_.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:e.tool.description}),(0,_.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,_.jsx)(l,{className:h(e.tool.source),children:e.tool.source}),(0,_.jsxs)(l,{className:`border-border/80 bg-transparent text-muted-foreground`,children:[d(e.tool.parameters),` fields`]})]}),(0,_.jsx)(r,{className:`h-8 min-h-8 w-fit rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,onClick:()=>e.onSelectTool(t),children:e.active?`Selected`:`Use`})]}),(0,_.jsx)(m,{value:e.tool.parameters,title:`Parameter schema`})]})}function x(e){return(0,_.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,_.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,_.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:e.title}),(0,_.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:e.message})]})})}function S(e){return e.flatMap(e=>e.tools.map(t=>({key:C(e.name,t),agentId:e.agentId,name:t.name,description:t.description,parameters:t.parameters,source:t.source,mcpServerName:e.name,approval:t.approval})))}function C(e,t){return`${e}:${t.source}:${t.name}`}export{v as McpsPage};
2
+ //# sourceMappingURL=mcps-page-BcygvPZJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcps-page-BcygvPZJ.js","names":[],"sources":["../../../src/ui/app/modules/mcps/mcps-page.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioAgentMcpServerMetadata,\n StudioAgentMcpsSummary,\n StudioAgentMcpToolMetadata,\n StudioAgentToolMetadata,\n StudioConfig,\n StudioToolRunResponse,\n} from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport {\n formatJson,\n parseStudioToolRunResponse,\n SchemaBlock,\n schemaPropertyCount,\n sourceBadgeClass,\n ToolRunner,\n} from \"../tools/tool-runner\";\n\nexport function McpsPage(props: {\n agents: StudioConfig[\"agents\"];\n selectedAgentId: string;\n summary: StudioAgentMcpsSummary | undefined;\n enabled: boolean;\n loading: boolean;\n onSelectAgent: (agentId: string) => void;\n}) {\n const selectedAgent =\n props.agents.find((agent) => agent.id === props.selectedAgentId) ?? props.agents[0];\n const servers = props.summary?.servers ?? [];\n const toolCount = servers.reduce((total, server) => total + server.toolCount, 0);\n const runnableTools = useMemo(() => mcpRunnableTools(servers), [servers]);\n const [selectedToolKey, setSelectedToolKey] = useState(\"\");\n const [argsText, setArgsText] = useState(\"{}\");\n const [runState, setRunState] = useState<\"idle\" | \"running\">(\"idle\");\n const [runResponse, setRunResponse] = useState<StudioToolRunResponse | undefined>();\n const [runError, setRunError] = useState(\"\");\n const selectedTool = useMemo(\n () => runnableTools.find((tool) => tool.key === selectedToolKey) ?? runnableTools[0],\n [runnableTools, selectedToolKey],\n );\n const lastSelectedToolKeyRef = useRef(\"\");\n const runRequestIdRef = useRef(0);\n\n useEffect(() => {\n if (runnableTools.length === 0) {\n setSelectedToolKey(\"\");\n return;\n }\n if (!runnableTools.some((tool) => tool.key === selectedToolKey)) {\n setSelectedToolKey(runnableTools[0]?.key ?? \"\");\n }\n }, [runnableTools, selectedToolKey]);\n\n useEffect(() => {\n const nextSelectedToolKey = selectedTool?.key ?? \"\";\n if (lastSelectedToolKeyRef.current === nextSelectedToolKey) {\n return;\n }\n lastSelectedToolKeyRef.current = nextSelectedToolKey;\n runRequestIdRef.current += 1;\n setArgsText(\"{}\");\n setRunState(\"idle\");\n setRunError(\"\");\n setRunResponse(undefined);\n }, [selectedTool]);\n\n async function runSelectedTool() {\n if (selectedTool === undefined) {\n return;\n }\n let args: unknown;\n try {\n args = JSON.parse(argsText);\n } catch (parseError) {\n setRunError(parseError instanceof Error ? parseError.message : String(parseError));\n setRunResponse(undefined);\n return;\n }\n\n setRunState(\"running\");\n setRunError(\"\");\n setRunResponse(undefined);\n const runToolKey = selectedTool.key;\n const requestId = runRequestIdRef.current + 1;\n runRequestIdRef.current = requestId;\n const isCurrentRun = () =>\n runRequestIdRef.current === requestId && lastSelectedToolKeyRef.current === runToolKey;\n try {\n const response = await fetch(\n `/agents/${encodeURIComponent(selectedTool.agentId)}/tools/${encodeURIComponent(\n selectedTool.name,\n )}/runs`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ args }),\n },\n );\n const rawBody = await response.json();\n if (!isCurrentRun()) {\n return;\n }\n const body = parseStudioToolRunResponse(rawBody);\n if (body === undefined) {\n setRunError(`Unexpected Studio tool run response: ${formatJson(rawBody)}`);\n return;\n }\n setRunResponse(body);\n if (!response.ok || body.status === \"error\") {\n setRunError(formatJson(body.error ?? body));\n }\n } catch (error) {\n if (isCurrentRun()) {\n setRunError(error instanceof Error ? error.message : String(error));\n }\n } finally {\n if (isCurrentRun()) {\n setRunState(\"idle\");\n }\n }\n }\n\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\"\n aria-label=\"MCPs\"\n >\n <header className=\"bg-background/70 pb-3 pl-4 pr-6 pt-4 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\" text-xs font-semibold uppercase tracking-[0.24em] text-foreground\">\n External context\n </div>\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n MCPs\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n MCP servers and remote tools registered on Studio agents, grouped by server.\n </p>\n </div>\n <div className=\"flex min-w-0 items-center gap-3 max-md:grid max-md:grid-cols-1\">\n <Badge className=\"h-9 justify-center border-border/80 bg-card/70 text-muted-foreground\">\n {servers.length} servers / {toolCount} tools\n </Badge>\n {props.agents.length > 1 ? (\n <Select value={selectedAgent?.id ?? \"\"} onValueChange={props.onSelectAgent}>\n <SelectTrigger className=\"h-9 min-h-9 w-64 rounded-lg border-border bg-card/80 text-xs max-md:w-full\">\n <SelectValue placeholder=\"Agent\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.agents.map((agent) => (\n <SelectItem value={agent.id} key={agent.id}>\n {agent.name ?? agent.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n </div>\n </div>\n </header>\n\n <div className=\"min-h-0 overflow-auto pb-6 pl-4 pr-6\">\n <div className=\"grid w-full gap-5\">\n {!props.enabled ? (\n <EmptyState\n title=\"MCPs unavailable\"\n message=\"No registered Studio agent exposes MCP tools.\"\n />\n ) : props.loading ? (\n <EmptyState title=\"Loading MCPs\" message=\"Reading registered MCP metadata.\" />\n ) : servers.length === 0 ? (\n <EmptyState title=\"No MCPs\" message=\"The selected agent has no registered MCP tools.\" />\n ) : (\n servers.map((server) => (\n <McpServerSection\n selectedToolKey={selectedTool?.key ?? \"\"}\n server={server}\n key={server.name}\n onSelectTool={setSelectedToolKey}\n />\n ))\n )}\n {runnableTools.length === 0 ? null : (\n <ToolRunner\n argsText={argsText}\n runError={runError}\n runResponse={runResponse}\n runState={runState}\n selectedTool={selectedTool}\n onArgsTextChange={setArgsText}\n onRun={() => void runSelectedTool()}\n />\n )}\n </div>\n </div>\n </section>\n );\n}\n\nfunction McpServerSection(props: {\n server: StudioAgentMcpServerMetadata;\n selectedToolKey: string;\n onSelectTool: (toolKey: string) => void;\n}) {\n return (\n <section className=\"overflow-hidden rounded-xl border border-border/80 bg-card/55 p-2 shadow-sm\">\n <header className=\"grid min-h-14 grid-cols-[minmax(0,1fr)_auto] items-center gap-4 rounded-lg border border-border/60 bg-muted/20 px-4\">\n <div className=\"grid min-w-0 gap-1\">\n <h2 className=\"m-0 truncate text-sm font-semibold text-foreground\">\n {props.server.name}\n </h2>\n <span className=\"truncate text-xs font-medium text-muted-foreground\">\n {props.server.agentId}\n </span>\n </div>\n <Badge className=\"border-border/80 bg-background/50 text-muted-foreground\">\n {props.server.toolCount} tools\n </Badge>\n </header>\n <div className=\"mt-1 grid gap-1\">\n {props.server.tools.map((tool) => (\n <McpToolRow\n serverName={props.server.name}\n active={props.selectedToolKey === mcpToolKey(props.server.name, tool)}\n tool={tool}\n key={`${tool.source}:${tool.name}`}\n onSelectTool={props.onSelectTool}\n />\n ))}\n </div>\n </section>\n );\n}\n\nfunction McpToolRow(props: {\n serverName: string;\n active: boolean;\n tool: StudioAgentMcpToolMetadata;\n onSelectTool: (toolKey: string) => void;\n}) {\n const toolKey = mcpToolKey(props.serverName, props.tool);\n return (\n <article className=\"grid grid-cols-[minmax(300px,0.75fr)_minmax(0,1fr)] gap-2 rounded-lg border border-transparent bg-background/25 p-2 transition duration-200 hover:border-border/70 hover:bg-background/35 max-lg:grid-cols-1\">\n <div className=\"grid content-start gap-4 rounded-lg bg-card/25 p-3\">\n <div className=\"grid gap-1\">\n <h3 className=\"m-0 truncate text-sm font-semibold text-foreground\">{props.tool.name}</h3>\n <span className=\" text-xs font-medium text-muted-foreground\">{props.tool.source}</span>\n </div>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n {props.tool.description}\n </p>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={sourceBadgeClass(props.tool.source)}>{props.tool.source}</Badge>\n <Badge className=\"border-border/80 bg-transparent text-muted-foreground\">\n {schemaPropertyCount(props.tool.parameters)} fields\n </Badge>\n </div>\n <Button\n className=\"h-8 min-h-8 w-fit rounded-md px-3 text-xs\"\n type=\"button\"\n variant=\"secondary\"\n onClick={() => props.onSelectTool(toolKey)}\n >\n {props.active ? \"Selected\" : \"Use\"}\n </Button>\n </div>\n <SchemaBlock value={props.tool.parameters} title=\"Parameter schema\" />\n </article>\n );\n}\n\nfunction EmptyState(props: { title: string; message: string }) {\n return (\n <div className=\"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\">\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">{props.message}</p>\n </div>\n </div>\n );\n}\n\ntype McpRunnableTool = StudioAgentToolMetadata & {\n key: string;\n mcpServerName: string;\n};\n\nfunction mcpRunnableTools(servers: StudioAgentMcpServerMetadata[]): McpRunnableTool[] {\n return servers.flatMap((server) =>\n server.tools.map((tool) => ({\n key: mcpToolKey(server.name, tool),\n agentId: server.agentId,\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n source: tool.source,\n mcpServerName: server.name,\n approval: tool.approval,\n })),\n );\n}\n\nfunction mcpToolKey(serverName: string, tool: StudioAgentMcpToolMetadata): string {\n return `${serverName}:${tool.source}:${tool.name}`;\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as e,r as t,s as n}from"./utils-BN2yP0LH.js";import{o as r}from"./format-C9HPGfkW.js";import{I as i}from"./index-DMVhlBNM.js";import{t as a}from"./badge-BH7gz3tB.js";import{t as o}from"./renderers-m-gqGocU.js";var s=n(e(),1),c=t();function l(e){let[t,n]=(0,s.useState)([]),[r,a]=(0,s.useState)([]),[o,l]=(0,s.useState)(``),[d,p]=(0,s.useState)(``),[h,g]=(0,s.useState)(),[_,C]=(0,s.useState)(),[w,T]=(0,s.useState)(!1),[E,D]=(0,s.useState)(!1),[O,k]=(0,s.useState)(``),A=(0,s.useCallback)(async()=>{if(!e.enabled){n([]),a([]),g(void 0),C(void 0);return}T(!0),k(``);try{let[e,t]=await Promise.all([fetch(`/memory/users?limit=50`),fetch(`/memory/conversations?limit=100`)]);if(!e.ok)throw Error(`Memory users failed with HTTP ${e.status}`);if(!t.ok)throw Error(`Memory conversations failed with HTTP ${t.status}`);let r=await e.json(),i=await t.json();n(r.users),a(i.conversations),p(e=>e||i.conversations[0]?.id||``)}catch(e){k(e instanceof Error?e.message:String(e))}finally{T(!1)}},[e.enabled]);(0,s.useEffect)(()=>{A()},[A]),(0,s.useEffect)(()=>{if(!e.enabled||d.length===0){g(void 0),C(void 0);return}let t=!1;async function n(){D(!0),k(``);try{let[e,n]=await Promise.all([fetch(`/memory/conversations/${encodeURIComponent(d)}/messages`),fetch(`/memory/conversations/${encodeURIComponent(d)}/steps`)]);if(!e.ok)throw Error(`Conversation messages failed with HTTP ${e.status}`);if(!n.ok)throw Error(`Conversation steps failed with HTTP ${n.status}`);t||(g(await e.json()),C(await n.json()))}catch(e){t||(k(e instanceof Error?e.message:String(e)),g(void 0),C(void 0))}finally{t||D(!1)}}return n(),()=>{t=!0}},[e.enabled,d]);let j=(0,s.useMemo)(()=>o.length===0?r:r.filter(e=>e.userId===o),[r,o]),M=(0,s.useMemo)(()=>S(t,r),[r,t]),N=j.find(e=>e.id===d)??j[0];return(0,s.useEffect)(()=>{if(j.length===0){p(``);return}j.some(e=>e.id===d)||p(j[0]?.id??``)},[d,j]),(0,c.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`Memory`,children:[(0,c.jsx)(`header`,{className:`bg-background/70 pb-3 pl-4 pr-6 pt-4 backdrop-blur`,children:(0,c.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,c.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,c.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.24em] text-muted-foreground`,children:`Conversation store`}),(0,c.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`Memory`}),(0,c.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`Stored users, conversations, raw messages, and transcript steps from the Studio store.`})]}),(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,c.jsx)(x,{label:`users`,value:M.userCount}),(0,c.jsx)(x,{label:`conversations`,value:M.conversationCount}),(0,c.jsx)(x,{label:`messages`,value:M.messageCount}),(0,c.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,disabled:w,onClick:()=>void A(),children:`Refresh`})]})]})}),(0,c.jsx)(`div`,{className:`min-h-0 overflow-hidden pb-6 pl-4 pr-6`,children:e.enabled?w&&r.length===0?(0,c.jsx)(v,{title:`Loading memory`,text:`Reading users and conversations.`}):O.length>0&&r.length===0?(0,c.jsx)(v,{title:`Memory error`,text:O}):r.length===0?(0,c.jsx)(y,{agentCount:e.agents.length,userCount:t.length,onRefresh:()=>void A()}):(0,c.jsxs)(`div`,{className:[`grid h-full min-h-0 overflow-hidden`,O.length===0?`grid-rows-[minmax(0,1fr)]`:`grid-rows-[auto_minmax(0,1fr)]`].join(` `),children:[O.length===0?null:(0,c.jsx)(b,{message:O}),(0,c.jsxs)(`div`,{className:`grid min-h-0 grid-cols-[260px_minmax(320px,0.78fr)_minmax(0,1.22fr)] overflow-hidden border-t border-border/80 max-xl:grid-cols-[240px_minmax(0,1fr)] max-xl:grid-rows-[minmax(240px,0.42fr)_minmax(0,1fr)] max-md:grid-cols-1 max-md:grid-rows-[auto_minmax(240px,0.38fr)_minmax(0,1fr)]`,children:[(0,c.jsx)(u,{users:t,selectedUserId:o,totalConversations:r.length,onSelect:l}),(0,c.jsx)(f,{agents:e.agents,conversations:j,selectedConversationId:N?.id??``,onSelect:p}),(0,c.jsx)(m,{agents:e.agents,conversation:N,detailLoading:E,messages:h,steps:_})]})]}):(0,c.jsx)(v,{title:`Memory unavailable`,text:`This Studio runtime has no session store.`})})]})}function u(e){return(0,c.jsx)(`aside`,{className:`min-h-0 overflow-auto border-r border-border/80 pr-3 max-md:border-b max-md:border-r-0 max-md:pr-0`,children:(0,c.jsxs)(`div`,{className:`grid gap-3 py-4 pr-3 max-md:pr-0`,children:[(0,c.jsx)(g,{label:`Users`,value:e.users.length}),(0,c.jsx)(d,{active:e.selectedUserId.length===0,title:`All users`,detail:`${e.totalConversations} conversations`,onClick:()=>e.onSelect(``)}),(0,c.jsx)(`div`,{className:`grid gap-1`,children:e.users.map(t=>(0,c.jsx)(d,{active:e.selectedUserId===t.userId,title:t.userId,detail:`${t.conversationCount} conversations / ${r(t.lastInteractionAt)}`,onClick:()=>e.onSelect(t.userId)},t.userId))})]})})}function d(e){return(0,c.jsxs)(`button`,{className:[`grid min-w-0 gap-1 rounded-lg border border-transparent px-3 py-2.5 text-left transition duration-200 hover:border-border/80 hover:bg-muted/25 focus-visible:border-ring focus-visible:outline-none`,e.active?`border-border/80 bg-muted/35`:``].join(` `),type:`button`,onClick:e.onClick,children:[(0,c.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.title}),(0,c.jsx)(`span`,{className:`min-w-0 truncate text-xs leading-5 text-muted-foreground`,children:e.detail})]})}function f(e){return(0,c.jsx)(`section`,{className:`min-h-0 overflow-auto border-r border-border/80 px-4 max-xl:border-r-0 max-xl:pr-0 max-md:border-b max-md:px-0`,children:(0,c.jsxs)(`div`,{className:`grid gap-3 py-4`,children:[(0,c.jsx)(g,{label:`Conversations`,value:e.conversations.length}),e.conversations.length===0?(0,c.jsx)(`div`,{className:`border-y border-dashed border-border/80 px-3 py-8 text-center text-sm text-muted-foreground`,children:`No conversations for this user.`}):(0,c.jsx)(`div`,{className:`grid border-y border-border/80`,children:e.conversations.map(t=>(0,c.jsx)(p,{active:t.id===e.selectedConversationId,agentName:w(e.agents,t.agentId),conversation:t,onSelect:()=>e.onSelect(t.id)},t.id))})]})})}function p(e){return(0,c.jsxs)(`button`,{className:[`grid min-w-0 gap-2 border-b border-border/70 px-3 py-3 text-left transition duration-200 last:border-b-0 hover:bg-muted/20 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,e.active?`bg-muted/35`:``].join(` `),type:`button`,onClick:e.onSelect,children:[(0,c.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,c.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,c.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.conversation.title??`Untitled conversation`}),(0,c.jsxs)(`span`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:[e.agentName,` / `,e.conversation.userId]})]}),(0,c.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:e.conversation.messageCount})]}),(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,c.jsx)(`span`,{children:r(e.conversation.updatedAt)}),(0,c.jsx)(`span`,{className:`min-w-0 truncate`,children:e.conversation.id})]})]})}function m(e){return e.conversation===void 0?(0,c.jsx)(`section`,{className:`min-h-0 overflow-auto py-4 pl-5 max-xl:col-span-2 max-xl:pl-0 max-md:col-span-1`,children:(0,c.jsx)(v,{title:`No conversation selected`,text:`Choose a conversation to inspect.`})}):(0,c.jsx)(`section`,{className:`min-h-0 overflow-auto py-4 pl-5 max-xl:col-span-2 max-xl:pl-0 max-md:col-span-1`,children:(0,c.jsxs)(`div`,{className:`grid min-w-0 gap-5`,children:[(0,c.jsxs)(`header`,{className:`grid gap-4 border-b border-border/80 pb-5`,children:[(0,c.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-4 max-md:grid`,children:[(0,c.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,c.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Selected conversation`}),(0,c.jsx)(`h2`,{className:`m-0 min-w-0 truncate text-2xl font-semibold leading-none text-foreground`,children:e.conversation.title??`Untitled conversation`}),(0,c.jsx)(`span`,{className:`min-w-0 break-all font-mono text-xs text-muted-foreground`,children:e.conversation.id})]}),(0,c.jsx)(a,{className:`border-border/80 bg-muted/45 text-foreground`,children:w(e.agents,e.conversation.agentId)})]}),(0,c.jsxs)(`div`,{className:`grid border-y border-border/80 sm:grid-cols-4 sm:divide-x sm:divide-border/80`,children:[(0,c.jsx)(_,{label:`user`,value:e.conversation.userId}),(0,c.jsx)(_,{label:`messages`,value:e.conversation.messageCount}),(0,c.jsx)(_,{label:`created`,value:r(e.conversation.createdAt)}),(0,c.jsx)(_,{label:`updated`,value:r(e.conversation.updatedAt)})]})]}),e.detailLoading?(0,c.jsx)(v,{title:`Loading detail`,text:`Reading message and transcript data.`}):(0,c.jsxs)(`div`,{className:`grid gap-4`,children:[e.conversation.metadata===void 0?null:(0,c.jsx)(h,{title:`metadata`,value:e.conversation.metadata}),(0,c.jsx)(h,{title:`messages`,value:e.messages?.messages??[]}),(0,c.jsx)(h,{title:`transcript steps`,value:e.steps?.steps??[]})]})]})})}function h(e){let t=Array.isArray(e.value)?e.value.length:void 0;return(0,c.jsxs)(`details`,{className:`group grid min-w-0 overflow-hidden border-y border-border/80`,open:!0,children:[(0,c.jsxs)(`summary`,{className:`flex min-h-11 cursor-pointer list-none items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden`,children:[(0,c.jsx)(`span`,{children:e.title}),(0,c.jsx)(`span`,{className:`font-medium normal-case tracking-normal`,children:t===void 0?`JSON`:`${t} items`})]}),(0,c.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-t border-border/70`,children:(0,c.jsx)(`pre`,{className:`m-0 max-h-96 min-w-max p-4 text-xs leading-5 text-foreground`,children:(0,c.jsx)(`code`,{children:(0,c.jsx)(o,{text:C(e.value)})})})})]})}function g(e){return(0,c.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,c.jsx)(`h2`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.label}),(0,c.jsx)(`span`,{className:`text-xs font-semibold tabular-nums text-muted-foreground`,children:e.value})]})}function _(e){return(0,c.jsxs)(`div`,{className:`grid min-w-0 gap-1 px-3 py-3 first:pl-0 last:pr-0`,children:[(0,c.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.label}),(0,c.jsx)(`span`,{className:`min-w-0 truncate text-sm text-foreground`,title:String(e.value),children:e.value})]})}function v(e){return(0,c.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,c.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,c.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:e.title}),(0,c.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:e.text})]})})}function y(e){return(0,c.jsx)(`section`,{className:`grid h-full min-h-0 place-items-center border-t border-border/80 px-6`,children:(0,c.jsxs)(`div`,{className:`grid w-full max-w-3xl gap-6`,children:[(0,c.jsxs)(`div`,{className:`grid gap-3`,children:[(0,c.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:`Memory store`}),(0,c.jsx)(`h2`,{className:`m-0 text-2xl font-semibold leading-tight text-foreground`,children:`No saved conversations yet`}),(0,c.jsx)(`p`,{className:`m-0 max-w-[64ch] text-sm leading-6 text-muted-foreground`,children:`Conversations will appear here after agents run with memory enabled. The inspector keeps user filters, session payloads, and transcript steps in one place.`})]}),(0,c.jsxs)(`div`,{className:`grid border-y border-border/80 sm:grid-cols-3 sm:divide-x sm:divide-border/80`,children:[(0,c.jsx)(_,{label:`users`,value:e.userCount}),(0,c.jsx)(_,{label:`agents`,value:e.agentCount}),(0,c.jsx)(_,{label:`conversations`,value:0})]}),(0,c.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-3`,children:[(0,c.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,onClick:e.onRefresh,children:`Refresh`}),(0,c.jsx)(`span`,{className:`text-xs leading-5 text-muted-foreground`,children:`Start a chat session to populate memory.`})]})]})})}function b(e){return(0,c.jsx)(`div`,{className:`mb-3 border border-destructive/30 bg-destructive/10 px-3 py-2 text-xs leading-5 text-destructive`,children:e.message})}function x(e){return(0,c.jsxs)(`span`,{className:`inline-flex h-8 items-center gap-2 rounded-md border border-border/70 bg-background/45 px-2.5 text-xs font-medium text-muted-foreground`,children:[(0,c.jsx)(`span`,{className:`font-semibold tabular-nums text-foreground`,children:e.value}),e.label]})}function S(e,t){return{userCount:e.length,conversationCount:t.length,messageCount:t.reduce((e,t)=>e+t.messageCount,0)}}function C(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function w(e,t){return e.find(e=>e.id===t)?.name??t}export{l as MemoryPage};
2
+ //# sourceMappingURL=memory-page-B3TXiZ88.js.map