@anvia/studio 0.8.1 → 1.0.0-rc.10
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.
- package/README.md +69 -19
- package/dist/index.d.ts +179 -116
- package/dist/index.js +1683 -1487
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/ArrowClockwise.es-CSEY3Qr6.js +2 -0
- package/dist/ui/assets/{ArrowClockwise.es-CSN-gjxO.js.map → ArrowClockwise.es-CSEY3Qr6.js.map} +1 -1
- package/dist/ui/assets/CaretDown.es-BHAPbv1R.js +2 -0
- package/dist/ui/assets/CaretDown.es-BHAPbv1R.js.map +1 -0
- package/dist/ui/assets/Check.es-BLChmggz.js +2 -0
- package/dist/ui/assets/Check.es-BLChmggz.js.map +1 -0
- package/dist/ui/assets/Wrench.es-BL6BmNv7.js +4 -0
- package/dist/ui/assets/Wrench.es-BL6BmNv7.js.map +1 -0
- package/dist/ui/assets/agents-page-DQqt45If.js +2 -0
- package/dist/ui/assets/agents-page-DQqt45If.js.map +1 -0
- package/dist/ui/assets/{badge-RJJoRC4P.js → badge-CcajoiAt.js} +1 -1
- package/dist/ui/assets/{badge-RJJoRC4P.js.map → badge-CcajoiAt.js.map} +1 -1
- package/dist/ui/assets/button-07gzSO47.js +2 -0
- package/dist/ui/assets/button-07gzSO47.js.map +1 -0
- package/dist/ui/assets/chunk-QGX73TSQ-D9QAGlAY.js +65 -0
- package/dist/ui/assets/chunk-QGX73TSQ-D9QAGlAY.js.map +1 -0
- package/dist/ui/assets/dialog-CNNQ3hoF.js +2 -0
- package/dist/ui/assets/dialog-CNNQ3hoF.js.map +1 -0
- package/dist/ui/assets/dist-CqMdRzwk.js +2 -0
- package/dist/ui/assets/dist-CqMdRzwk.js.map +1 -0
- package/dist/ui/assets/dist-DWqJwN1i.js +2 -0
- package/dist/ui/assets/dist-DWqJwN1i.js.map +1 -0
- package/dist/ui/assets/es2015-DsZq7PFO.js +42 -0
- package/dist/ui/assets/es2015-DsZq7PFO.js.map +1 -0
- package/dist/ui/assets/icon-CqkMSRbt.js +2 -0
- package/dist/ui/assets/icon-CqkMSRbt.js.map +1 -0
- package/dist/ui/assets/index-BdhE3teo.js +12 -0
- package/dist/ui/assets/index-BdhE3teo.js.map +1 -0
- package/dist/ui/assets/index-CFbK-pX6.css +2 -0
- package/dist/ui/assets/{input-BOUv3rgO.js → input-BiI6gsxA.js} +1 -1
- package/dist/ui/assets/{input-BOUv3rgO.js.map → input-BiI6gsxA.js.map} +1 -1
- package/dist/ui/assets/knowledge-model-S51n2rKh.js +2 -0
- package/dist/ui/assets/knowledge-model-S51n2rKh.js.map +1 -0
- package/dist/ui/assets/knowledge-page-DZeLh92t.js +2 -0
- package/dist/ui/assets/{knowledge-page-Cot_uYcE.js.map → knowledge-page-DZeLh92t.js.map} +1 -1
- package/dist/ui/assets/mcps-page-CDPMO2x9.js +2 -0
- package/dist/ui/assets/{mcps-page-BSO6ork4.js.map → mcps-page-CDPMO2x9.js.map} +1 -1
- package/dist/ui/assets/memory-page-D3UhjpTb.js +4 -0
- package/dist/ui/assets/memory-page-D3UhjpTb.js.map +1 -0
- package/dist/ui/assets/pipelines-page-BP8R6NI7.js +8 -0
- package/dist/ui/assets/pipelines-page-BP8R6NI7.js.map +1 -0
- package/dist/ui/assets/{renderers-B8gvjR2u.js → renderers-DHMEAblV.js} +3 -3
- package/dist/ui/assets/{renderers-B8gvjR2u.js.map → renderers-DHMEAblV.js.map} +1 -1
- package/dist/ui/assets/request-7oUPS8zY.js +4 -0
- package/dist/ui/assets/request-7oUPS8zY.js.map +1 -0
- package/dist/ui/assets/rfb-DiW3PDuT.js +6 -0
- package/dist/ui/assets/rfb-DiW3PDuT.js.map +1 -0
- package/dist/ui/assets/sandboxes-page-C6kokYwc.js +2 -0
- package/dist/ui/assets/sandboxes-page-C6kokYwc.js.map +1 -0
- package/dist/ui/assets/select-BOYfrfck.js +2 -0
- package/dist/ui/assets/select-BOYfrfck.js.map +1 -0
- package/dist/ui/assets/sessions-page-ClXzRM9K.js +2 -0
- package/dist/ui/assets/{sessions-page-CSN2vSKZ.js.map → sessions-page-ClXzRM9K.js.map} +1 -1
- package/dist/ui/assets/status-page-eA8uRLZQ.js +2 -0
- package/dist/ui/assets/{status-page-CgRNt0wi.js.map → status-page-eA8uRLZQ.js.map} +1 -1
- package/dist/ui/assets/studio-CeTsQ4gf.js +2 -0
- package/dist/ui/assets/studio-CeTsQ4gf.js.map +1 -0
- package/dist/ui/assets/textarea-DESKg_ZK.js +2 -0
- package/dist/ui/assets/textarea-DESKg_ZK.js.map +1 -0
- package/dist/ui/assets/tool-runner-D3-SlGqQ.js +2 -0
- package/dist/ui/assets/{tool-runner-BZN-PZJU.js.map → tool-runner-D3-SlGqQ.js.map} +1 -1
- package/dist/ui/assets/tools-page-D3gnQf1_.js +2 -0
- package/dist/ui/assets/{tools-page-DRv7aklU.js.map → tools-page-D3gnQf1_.js.map} +1 -1
- package/dist/ui/assets/trace-browser-D93H7Xxs.js +10 -0
- package/dist/ui/assets/trace-browser-D93H7Xxs.js.map +1 -0
- package/dist/ui/assets/transcript-item-BmjdZLbS.js +3 -0
- package/dist/ui/assets/transcript-item-BmjdZLbS.js.map +1 -0
- package/dist/ui/assets/with-selector-CRZWaZzC.js +2 -0
- package/dist/ui/assets/with-selector-CRZWaZzC.js.map +1 -0
- package/dist/ui/index.html +19 -3
- package/package.json +16 -11
- package/dist/ui/assets/ArrowClockwise.es-CSN-gjxO.js +0 -2
- package/dist/ui/assets/agents-page-CkNSbqAj.js +0 -2
- package/dist/ui/assets/agents-page-CkNSbqAj.js.map +0 -1
- package/dist/ui/assets/chunk-ADH7NNCS-DM6fsnDI.js +0 -2
- package/dist/ui/assets/chunk-ADH7NNCS-DM6fsnDI.js.map +0 -1
- package/dist/ui/assets/index-Bh7RLPBw.js +0 -56
- package/dist/ui/assets/index-Bh7RLPBw.js.map +0 -1
- package/dist/ui/assets/index-D-CbFx6c.css +0 -1
- package/dist/ui/assets/knowledge-page-Cot_uYcE.js +0 -2
- package/dist/ui/assets/mcps-page-BSO6ork4.js +0 -2
- package/dist/ui/assets/memory-page-CG84G--r.js +0 -4
- package/dist/ui/assets/memory-page-CG84G--r.js.map +0 -1
- package/dist/ui/assets/pipelines-page-Hbf5ffUH.js +0 -8
- package/dist/ui/assets/pipelines-page-Hbf5ffUH.js.map +0 -1
- package/dist/ui/assets/sandboxes-page-D910dyFO.js +0 -2
- package/dist/ui/assets/sandboxes-page-D910dyFO.js.map +0 -1
- package/dist/ui/assets/sessions-page-CSN2vSKZ.js +0 -2
- package/dist/ui/assets/status-page-CgRNt0wi.js +0 -2
- package/dist/ui/assets/tool-runner-BZN-PZJU.js +0 -2
- package/dist/ui/assets/tools-page-DRv7aklU.js +0 -2
- package/dist/ui/assets/trace-browser-B07coNNE.js +0 -10
- package/dist/ui/assets/trace-browser-B07coNNE.js.map +0 -1
- package/dist/ui/assets/transcript-item-ZNkQEaCw.js +0 -3
- package/dist/ui/assets/transcript-item-ZNkQEaCw.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@keyframes anvia-stream-gradient-settle{to{opacity:1}}[data-anvia-stream-reveal]{opacity:var(--anvia-stream-reveal-opacity,1);animation:anvia-stream-gradient-settle var(--anvia-stream-reveal-duration,.18s) linear both}@media (prefers-reduced-motion:reduce){[data-anvia-stream-reveal]{opacity:1;animation:none}}@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-divide-y-reverse:0;--tw-border-style:solid;--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-divide-x-reverse:0;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Geist Variable", sans-serif;--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-500:oklch(79.5% .184 86.047);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-950:oklch(26.2% .051 172.552);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-950:oklch(27.1% .105 12.094);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-zinc-100:oklch(96.7% .001 286.375);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-xl:36rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-lg:var(--radius);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", sans-serif;--default-mono-font-family:"Geist Mono Variable", monospace}}@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{background:var(--background);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;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);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;margin:0;font-size:1rem;line-height:1.5;overflow:hidden}#anvia-ui{width:100%;max-width:100%;height:100dvh;overflow:hidden}::selection{background:var(--foreground)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in oklch, var(--foreground) 18%, transparent)}}.shell-loading{background:var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);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(--border);border-radius:var(--radius-lg);background:var(--secondary);min-height:1.25rem;color:var(--secondary-foreground);white-space:nowrap;align-items:center;padding:.125rem .5rem;font-size:.6875rem;font-weight:500;line-height:1;display:inline-flex}: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);border-radius:999px}@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: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 components;@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)}.right-2{right:calc(var(--spacing) * 2)}.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}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.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-0\.5{margin-top:calc(var(--spacing) * .5)}.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)}.mr-2{margin-right:calc(var(--spacing) * 2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-8{margin-left:calc(var(--spacing) * 8)}.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{display:inline}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.\!h-0{height:calc(var(--spacing) * 0)!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-2\.5{height:calc(var(--spacing) * 2.5)}.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-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.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-48{max-height:calc(var(--spacing) * 48)}.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-\[calc\(100dvh-32px\)\]{max-height:calc(100dvh - 32px)}.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-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.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-32{min-height:calc(var(--spacing) * 32)}.min-h-36{min-height:calc(var(--spacing) * 36)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-48{min-height:calc(var(--spacing) * 48)}.min-h-64{min-height:calc(var(--spacing) * 64)}.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\.5{width:calc(var(--spacing) * 2.5)}.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-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-14{width:calc(var(--spacing) * 14)}.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-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.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-44{max-width:calc(var(--spacing) * 44)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-200{max-width:calc(var(--spacing) * 200)}.max-w-205{max-width:calc(var(--spacing) * 205)}.max-w-\[62ch\]{max-width:62ch}.max-w-\[64ch\]{max-width:64ch}.max-w-\[68ch\]{max-width:68ch}.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-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-225{min-width:calc(var(--spacing) * 225)}.min-w-280{min-width:calc(var(--spacing) * 280)}.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)}.-rotate-90{rotate:-90deg}.rotate-90{rotate:90deg}.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}.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-\[18px_minmax\(0\,1fr\)_auto\]{grid-template-columns:18px minmax(0,1fr) auto}.grid-cols-\[82px_minmax\(0\,1fr\)\]{grid-template-columns:82px minmax(0,1fr)}.grid-cols-\[90px_minmax\(0\,1fr\)\]{grid-template-columns:90px minmax(0,1fr)}.grid-cols-\[150px_minmax\(0\,1fr\)\]{grid-template-columns:150px minmax(0,1fr)}.grid-cols-\[250px_minmax\(300px\,0\.8fr\)_minmax\(400px\,1\.2fr\)\]{grid-template-columns:250px minmax(300px,.8fr) minmax(400px,1.2fr)}.grid-cols-\[260px_minmax\(320px\,0\.78fr\)_minmax\(0\,1\.22fr\)\]{grid-template-columns:260px minmax(320px,.78fr) minmax(0,1.22fr)}.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\(280px\,36\%\)_minmax\(420px\,64\%\)\]{grid-template-columns:minmax(280px,36%) minmax(420px,64%)}.grid-cols-\[minmax\(300px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(300px,.75fr) minmax(0,1fr)}.grid-rows-\[56px_minmax\(0\,1fr\)\]{grid-template-rows:56px minmax(0,1fr)}.grid-rows-\[auto_auto_minmax\(0\,1fr\)\]{grid-template-rows:auto auto 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-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.gap-0{gap:calc(var(--spacing) * 0)}.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-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border\/70>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\/70>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.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}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.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) * .8)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) * .6)}.\!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-\[\#2BF563\]{border-color:#2bf563}.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\/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\/25{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/25{border-color:color-mix(in oklab, var(--destructive) 25%, transparent)}}.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-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.\!bg-transparent{background-color:#0000!important}.bg-\[\#2BF563\]{background-color:#2bf563}.bg-accent{background-color:var(--accent)}.bg-amber-200{background-color:var(--color-amber-200)}.bg-amber-600{background-color:var(--color-amber-600)}.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\/40{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/40{background-color:color-mix(in oklab, var(--background) 40%, 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\/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\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.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\/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\/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-current{background-color:currentColor}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab, var(--destructive) 5%, transparent)}}.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-emerald-200{background-color:var(--color-emerald-200)}.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\/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\/60{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/60{background-color:color-mix(in oklab, var(--muted-foreground) 60%, 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\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, 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-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-rose-200{background-color:var(--color-rose-200)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent,.bg-sidebar-accent\/40{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab, red, red)){.bg-sidebar-accent\/40{background-color:color-mix(in oklab, var(--sidebar-accent) 40%, transparent)}}.bg-slate-200{background-color:var(--color-slate-200)}.bg-transparent{background-color:#0000}.bg-violet-600{background-color:var(--color-violet-600)}.bg-clip-padding{background-clip:padding-box}.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-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-px{padding:1px}.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)}.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)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.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-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.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-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-7{padding-left:calc(var(--spacing) * 7)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-heading{font-family:var(--font-sans)}.font-mono{font-family:Geist Mono Variable,monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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-sm\/relaxed{font-size:var(--text-sm);line-height:var(--leading-relaxed)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.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-\[400\]{--tw-font-weight:400;font-weight:400}.font-\[450\]{--tw-font-weight:450;font-weight:450}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.006em\]{--tw-tracking:-.006em;letter-spacing:-.006em}.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-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.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-\[\#2BF563\]{color:#2bf563}.text-amber-700{color:var(--color-amber-700)}.text-amber-950{color:var(--color-amber-950)}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive,.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-emerald-700{color:var(--color-emerald-700)}.text-emerald-950{color:var(--color-emerald-950)}.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-primary-foreground{color:var(--primary-foreground)}.text-rose-950{color:var(--color-rose-950)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/65{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/65{color:color-mix(in oklab, var(--sidebar-foreground) 65%, transparent)}}.text-slate-900{color:var(--color-slate-900)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.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-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.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-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);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:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);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:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);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)}.ring-1{--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)}.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)}}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, 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-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;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))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.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}.\[overflow-anchor\:none\]{overflow-anchor:none}.\[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::placeholder,.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\/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\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.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:hover,.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-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\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, 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:hover,.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\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, var(--muted) 60%, 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-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-background:hover{color:var(--background)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-inherit:hover{color:inherit}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:opacity-100:hover{opacity:1}}.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\: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\:border-transparent:focus-visible{border-color:#0000}.focus-visible\:bg-sidebar-accent:focus-visible{background-color:var(--sidebar-accent)}.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-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.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)}.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-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.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-accent[data-highlighted]{background-color:var(--accent)}.data-\[highlighted\]\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@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\: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\: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 not all and (width>=40rem){.max-sm\:w-full{width:100%}.max-sm\:justify-start{justify-content:flex-start}}@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\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}: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\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:pt-6{padding-top:calc(var(--spacing) * 6)}.md\:pb-6{padding-bottom:calc(var(--spacing) * 6)}}@media (width>=64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=80rem){.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\(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\:bg-amber-300:is(.dark *){background-color:var(--color-amber-300)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-emerald-300:is(.dark *){background-color:var(--color-emerald-300)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:bg-muted:is(.dark *){background-color:var(--muted)}.dark\:bg-rose-300:is(.dark *){background-color:var(--color-rose-300)}.dark\:bg-slate-300:is(.dark *){background-color:var(--color-slate-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-amber-950:is(.dark *){color:var(--color-amber-950)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-destructive:is(.dark *){color:var(--destructive)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-emerald-950:is(.dark *){color:var(--color-emerald-950)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-rose-950:is(.dark *){color:var(--color-rose-950)}.dark\:text-slate-950:is(.dark *){color:var(--color-slate-950)}.dark\:text-violet-400:is(.dark *){color:var(--color-violet-400)}.dark\:text-zinc-100:is(.dark *){color:var(--color-zinc-100)}.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-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, 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-2\.5 svg{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_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\]\: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\]\:shrink-0 svg{flex-shrink:0}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/ui/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background:oklch(99% 0 0);--foreground:oklch(0% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(0% 0 0);--popover:oklch(99% 0 0);--popover-foreground:oklch(0% 0 0);--primary:oklch(0% 0 0);--primary-foreground:oklch(100% 0 0);--secondary:oklch(94% 0 0);--secondary-foreground:oklch(0% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(44% 0 0);--accent:oklch(94% 0 0);--accent-foreground:oklch(0% 0 0);--destructive:oklch(63% .19 23.03);--destructive-foreground:oklch(100% 0 0);--border:oklch(92% 0 0);--input:oklch(94% 0 0);--ring:oklch(0% 0 0);--chart-1:oklch(81% .17 75.35);--chart-2:oklch(55% .22 264.53);--chart-3:oklch(72% 0 0);--chart-4:oklch(92% 0 0);--chart-5:oklch(56% 0 0);--radius:.5rem;--sidebar:oklch(99% 0 0);--sidebar-foreground:oklch(0% 0 0);--sidebar-primary:oklch(0% 0 0);--sidebar-primary-foreground:oklch(100% 0 0);--sidebar-accent:oklch(94% 0 0);--sidebar-accent-foreground:oklch(0% 0 0);--sidebar-border:oklch(94% 0 0);--sidebar-ring:oklch(0% 0 0)}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:oklch(18% 0 0);--foreground:oklch(100% 0 0);--card:oklch(21% 0 0);--card-foreground:oklch(100% 0 0);--popover:oklch(18% 0 0);--popover-foreground:oklch(100% 0 0);--primary:oklch(100% 0 0);--primary-foreground:oklch(0% 0 0);--secondary:oklch(25% 0 0);--secondary-foreground:oklch(100% 0 0);--muted:oklch(23% 0 0);--muted-foreground:oklch(72% 0 0);--accent:oklch(32% 0 0);--accent-foreground:oklch(100% 0 0);--destructive:oklch(69% .2 23.91);--destructive-foreground:oklch(0% 0 0);--border:oklch(32% 0 0);--input:oklch(32% 0 0);--ring:oklch(72% 0 0);--chart-1:oklch(81% .17 75.35);--chart-2:oklch(58% .21 260.84);--chart-3:oklch(56% 0 0);--chart-4:oklch(44% 0 0);--chart-5:oklch(92% 0 0);--sidebar:oklch(18% 0 0);--sidebar-foreground:oklch(100% 0 0);--sidebar-primary:oklch(100% 0 0);--sidebar-primary-foreground:oklch(0% 0 0);--sidebar-accent:oklch(32% 0 0);--sidebar-accent-foreground:oklch(100% 0 0);--sidebar-border:oklch(32% 0 0);--sidebar-ring:oklch(72% 0 0)}@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-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e,r as t,s as n}from"./utils-C9GMruoG.js";import{t as r}from"./ArrowClockwise.es-CSN-gjxO.js";import{F as i,S as a,_ as o,a as s,at as c,b as l,i as u,n as d,o as f,v as p,x as m,y as h}from"./index-Bh7RLPBw.js";import{t as g}from"./badge-RJJoRC4P.js";import{n as _,t as v}from"./renderers-B8gvjR2u.js";var y=n(e(),1),b=t();function x(e){let t=e.source!==void 0&&e.state?.key===e.source.key?e.state:void 0;if(e.source?.source.kind===`dynamic_tools`)return(0,b.jsx)(w,{source:e.source,state:t,onLoadMore:e.onLoadMore});let n=S(e.source,t);return(0,b.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[minmax(0,1fr)_auto] overflow-hidden`,children:[(0,b.jsx)(`div`,{className:`min-h-0 overflow-auto`,children:(0,b.jsx)(`div`,{className:`pb-4 pt-0`,children:n===void 0?(0,b.jsx)(`div`,{className:`grid gap-3`,children:t?.items.map(t=>(0,b.jsx)(C,{item:t,source:e.source},`${t.kind}:${t.id}`))}):(0,b.jsx)(d,{title:n.title,text:n.text})})}),(0,b.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,b.jsx)(`span`,{className:` text-xs text-muted-foreground`,children:t===void 0?`0 loaded`:`${t.items.length} loaded`}),(0,b.jsx)(i,{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 S(e,t){if(e===void 0)return{title:`No knowledge source selected`,text:`Choose a knowledge source to inspect its stored items.`};if(t===void 0||t.loading&&t.items.length===0)return{title:`Loading items`,text:`Reading items from the selected knowledge source.`};if(t.error!==void 0)return{title:`Knowledge source error`,text:t.error};if(t.inspectable===!1)return{title:`Source unavailable`,text:t.message??`This source does not expose browseable items.`};if(t.items.length===0)return{title:`No items`,text:`The selected knowledge source is empty.`}}function C(e){return e.item.kind===`dynamic_tool`?(0,b.jsx)(`article`,{className:`rounded-xl border border-border/80 bg-background/55 p-4`,children:(0,b.jsx)(E,{item:e.item,source:e.source})}):(0,b.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/55 p-4`,children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,b.jsx)(`div`,{className:`min-w-0`,children:(0,b.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,b.jsxs)(g,{children:[e.item.parameterKeys.length,` params`]})]}),e.item.description===void 0||e.item.description.length===0?null:(0,b.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,b.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,b.jsx)(B,{title:`Document`,value:e.item.document}),e.item.metadata===void 0?null:(0,b.jsx)(B,{title:`Metadata`,value:e.item.metadata}),e.item.parameterKeys===void 0||e.item.parameterKeys.length===0?null:(0,b.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.item.parameterKeys.map(e=>(0,b.jsx)(g,{children:e},e))})]})}function w(e){let t=e.state===void 0||e.state.loading,n=(0,y.useMemo)(()=>(e.state?.items??[]).filter(M),[e.state?.items]),[r,a]=(0,y.useState)(``),o=n.find(e=>e.id===r)??n[0],s=(0,y.useMemo)(()=>N(n),[n]);return(0,y.useEffect)(()=>{if(n.length===0){a(``);return}n.some(e=>e.id===r)||a(n[0]?.id??``)},[r,n]),(0,b.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden`,children:[(0,b.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,b.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,b.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Runtime tool index`}),(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-sm`,children:[(0,b.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.source.source.label??l(e.source.source.kind)}),(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e.source.agentName})]})]}),(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,b.jsx)(F,{label:`tools`,value:n.length}),(0,b.jsx)(F,{label:`params`,value:s.parameterCount}),(0,b.jsx)(F,{label:`required`,value:s.requiredCount})]})]}),(0,b.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,b.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,b.jsxs)(`div`,{className:`grid gap-1 py-3 pr-3 max-lg:pr-0`,children:[e.source===void 0?(0,b.jsx)(V,{text:`No knowledge source selected`}):null,t&&n.length===0?(0,b.jsx)(V,{text:`Loading dynamic tools`}):null,e.state?.error===void 0?null:(0,b.jsx)(V,{text:e.state.error}),e.state?.inspectable===!1?(0,b.jsx)(V,{text:e.state.message??`This source does not expose browseable tools.`}):null,e.state?.inspectable!==!1&&!t&&n.length===0?(0,b.jsx)(V,{text:`No dynamic tools in this source`}):null,n.map(e=>(0,b.jsx)(T,{active:o?.id===e.id,item:e,onSelect:()=>a(e.id)},e.id))]})}),(0,b.jsx)(`div`,{className:`min-h-0 overflow-auto py-4 pl-5 max-lg:pl-0`,children:o===void 0?(0,b.jsx)(k,{}):(0,b.jsx)(E,{item:o,source:e.source})})]}),(0,b.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,b.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.state===void 0?`0 loaded`:`${e.state.items.length} loaded`}),(0,b.jsx)(i,{className:`h-8 min-h-8`,type:`button`,variant:`secondary`,disabled:t||e.state?.nextCursor===void 0,onClick:e.onLoadMore,children:`Load more`})]})]})}function T(e){let t=A(e.item),n=j(e.item),r=n.filter(e=>e.required).length,i=t.name??e.item.toolName??e.item.id;return(0,b.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,b.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,b.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm font-semibold text-foreground`,children:i}),(0,b.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:n.length})]}),(0,b.jsx)(`p`,{className:`m-0 line-clamp-2 text-xs leading-5 text-muted-foreground`,children:t.description??e.item.description??`No description`}),(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2 text-[11px] font-medium text-muted-foreground`,children:[(0,b.jsxs)(`span`,{children:[r,` required`]}),(0,b.jsxs)(`span`,{children:[n.length-r,` optional`]})]})]})}function E(e){let t=A(e.item),n=j(e.item),r=t.description??e.item.description,i=t.name??e.item.toolName??e.item.id;return(0,b.jsxs)(`article`,{className:`grid min-w-0 gap-5`,children:[(0,b.jsxs)(`header`,{className:`grid gap-4 border-b border-border/80 pb-5`,children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-4 max-md:grid`,children:[(0,b.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,b.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Selected tool`}),(0,b.jsx)(`h2`,{className:`m-0 truncate font-mono text-2xl font-semibold leading-none text-foreground`,children:i})]}),(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,b.jsxs)(g,{children:[n.length,` params`]}),(0,b.jsxs)(g,{children:[n.filter(e=>e.required).length,` required`]})]})]}),r===void 0||r.length===0?null:(0,b.jsx)(`p`,{className:`m-0 max-w-[72ch] text-base leading-7 text-muted-foreground [overflow-wrap:anywhere]`,children:r}),(0,b.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-y border-border/80 bg-muted/15 px-3 py-2`,children:(0,b.jsx)(`code`,{className:`font-mono text-sm leading-6 text-foreground`,children:P(i,n)})})]}),(0,b.jsx)(D,{parameters:n}),(0,b.jsx)(O,{item:e.item,source:e.source}),e.item.document===void 0?null:(0,b.jsx)(L,{title:`Raw definition`,value:e.item.document}),e.item.metadata===void 0?null:(0,b.jsx)(L,{title:`Metadata`,value:e.item.metadata})]})}function D(e){return(0,b.jsxs)(`section`,{className:`grid gap-3`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,b.jsx)(`h3`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Parameters`}),(0,b.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,b.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,b.jsx)(`div`,{className:`min-w-0 overflow-hidden border-y border-border/80`,children:e.parameters.map(e=>(0,b.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,b.jsx)(`div`,{className:`min-w-0 font-mono text-sm font-semibold text-foreground [overflow-wrap:anywhere]`,children:e.name}),(0,b.jsx)(`div`,{className:`text-sm text-muted-foreground [overflow-wrap:anywhere]`,children:e.type}),(0,b.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e.required?`Required`:`Optional`}),(0,b.jsx)(`div`,{className:`text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]`,children:e.description??`No description`})]},e.name))})]})}function O(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)} / ${p(e.source.source)}`},{label:`Item ID`,value:e.item.id}].filter(e=>e.value!==void 0);return t.length===0?null:(0,b.jsxs)(`section`,{className:`grid gap-3 border-t border-border/80 pt-4`,children:[(0,b.jsx)(`h3`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Source`}),(0,b.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,b.jsxs)(`div`,{className:`min-w-0 px-3 py-3 first:pl-0 last:pr-0`,children:[(0,b.jsx)(`dt`,{className:`text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,b.jsx)(`dd`,{className:`m-0 mt-1 truncate text-sm font-medium text-foreground`,children:e.value})]},e.label))})]})}function k(){return(0,b.jsx)(d,{className:`h-full`,title:`No dynamic tool selected`,text:`Select a tool from the index to inspect its definition and parameters.`})}function A(e){let t=c(e.document)?e.document:void 0,n=c(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 j(e){let t=A(e),n=c(t.parameters)?t.parameters:void 0,r=c(n?.properties)?n.properties:void 0,i=new Set(Array.isArray(n?.required)?n.required.filter(e=>typeof e==`string`):[]);return r===void 0?(e.parameterKeys??[]).map(e=>({name:e,type:`unknown`,required:!1,description:void 0})):Object.entries(r).map(([e,t])=>{let n=c(t)?t:{};return{name:e,type:I(n.type),required:i.has(e),description:typeof n.description==`string`?n.description:void 0}})}function M(e){return e.kind===`dynamic_tool`}function N(e){return e.reduce((e,t)=>{let n=j(t);return e.parameterCount+=n.length,e.requiredCount+=n.filter(e=>e.required).length,e},{parameterCount:0,requiredCount:0})}function P(e,t){return t.length===0?`${e}()`:`${e}({ ${t.map(e=>`${e.name}${e.required?``:`?`}: ${e.type}`).join(`, `)} })`}function F(e){return(0,b.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,b.jsx)(`span`,{className:`font-semibold tabular-nums text-foreground`,children:e.value}),e.label]})}function I(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 L(e){let t=R(e.value);return(0,b.jsxs)(`details`,{className:`group rounded-xl border border-border/80 bg-card/30`,children:[(0,b.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,b.jsx)(`span`,{children:e.title}),(0,b.jsx)(`span`,{className:`text-xs normal-case tracking-normal text-muted-foreground group-open:hidden`,children:`Show`}),(0,b.jsx)(`span`,{className:`hidden text-xs normal-case tracking-normal text-muted-foreground group-open:inline`,children:`Hide`})]}),(0,b.jsx)(`div`,{className:`border-t border-border/70`,children:(0,b.jsx)(`pre`,{className:`m-0 max-h-96 overflow-auto p-4 font-mono text-xs leading-5 text-foreground`,children:(0,b.jsx)(`code`,{children:(0,b.jsx)(v,{text:t})})})})]})}function R(e){try{return JSON.stringify(e,null,2)}catch{return JSON.stringify(String(e),null,2)}}function z(e){return(0,b.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background`,children:[(0,b.jsx)(`div`,{className:`border-b border-border/80 px-4 py-3`,children:(0,b.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`h2`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:`Retrieval log`}),(0,b.jsx)(`p`,{className:`m-0 mt-1 truncate text-xs text-muted-foreground`,children:`traces / retrieval-evidence`})]}),(0,b.jsxs)(g,{children:[e.evidence.length,` entries`]})]})}),(0,b.jsxs)(`div`,{className:`min-h-0 overflow-auto p-4`,children:[e.evidence.length===0?(0,b.jsx)(d,{className:`h-full`,title:`No retrieval evidence`,text:`Retrieval activity will appear here after an agent queries a knowledge source.`}):null,(0,b.jsx)(`div`,{className:`grid gap-3`,children:e.evidence.map(t=>(0,b.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-3`,children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:t.observationName}),(0,b.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[`Turn `,t.turn]})]}),(0,b.jsx)(i,{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,b.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,b.jsxs)(g,{children:[t.documentCount,` docs`]}),(0,b.jsxs)(g,{children:[t.toolCount,` tools`]})]}),t.query===void 0?null:(0,b.jsxs)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground [overflow-wrap:anywhere]`,children:[(0,b.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,b.jsxs)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground [overflow-wrap:anywhere]`,children:[(0,b.jsx)(`span`,{className:` text-foreground`,children:e.id??`document`}),` `,e.text??``]},`${e.id??`doc`}:${e.text??``}`)),t.tools.length===0?null:(0,b.jsxs)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground`,children:[`Tools: `,t.tools.join(`, `)]})]},`${t.traceId}:${t.observationId}`))})]})]})}function B(e){return(0,b.jsxs)(`div`,{className:`grid gap-2 border-t border-border/70 pt-3`,children:[(0,b.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.title}),(0,b.jsx)(_,{value:e.value})]})}function V(e){return(0,b.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 H(e){let[t,n]=(0,y.useState)(``),[c,l]=(0,y.useState)(),g=e.summary?.agents??[],_=e.summary?.evidence??[],v=(0,y.useMemo)(()=>o(g),[g]),S=h(e.activeTab),C=(0,y.useMemo)(()=>S===void 0?[]:v.filter(e=>e.source.kind===S),[S,v]),w=C.find(e=>e.key===t)??C[0],T=W({activeTab:e.activeTab,enabled:e.enabled,evidenceCount:_.length,loading:e.loading,sourceCount:C.length});(0,y.useEffect)(()=>{if(C.length===0){n(``);return}C.some(e=>e.key===t)||n((C.find(e=>e.source.inspectable===!0&&(e.source.itemCount??0)>0)??C.find(e=>e.source.inspectable===!0)??C[0])?.key??``)},[t,C]);let E=(0,y.useCallback)(async(e,t)=>{let n=e.key;l(r=>{let i={key:n,loading:!0,inspectable:r?.key===n?r.inspectable:e.source.inspectable===!0,items:t.append&&r?.key===n?r.items:[]};return t.append&&r?.key===n&&r.nextCursor!==void 0&&(i.nextCursor=r.nextCursor),r?.key===n&&r.totalCount!==void 0&&(i.totalCount=r.totalCount),i});try{let r=new URLSearchParams({agentId:e.agentId,sourceId:p(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=>{if(e?.key!==n)return e;let r={key:n,loading:!1,inspectable:a.inspectable,items:t.append?[...e.items,...a.items]:a.items};return a.nextCursor!==void 0&&(r.nextCursor=a.nextCursor),a.totalCount!==void 0&&(r.totalCount=a.totalCount),a.message!==void 0&&(r.message=a.message),r})}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,y.useEffect)(()=>{if(!e.enabled||w===void 0){l(void 0);return}E(w,{append:!1})},[E,e.enabled,w]),(0,b.jsxs)(f,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":m(e.activeTab),children:[(0,b.jsx)(s,{title:m(e.activeTab),description:G(e.activeTab),action:(0,b.jsxs)(i,{className:`h-8 min-h-8 gap-2`,type:`button`,variant:`secondary`,disabled:!e.enabled,onClick:e.onRefresh,children:[(0,b.jsx)(a,{icon:r,"aria-hidden":`true`}),`Refresh`]})}),(0,b.jsx)(u,{className:`grid grid-rows-[minmax(0,1fr)] overflow-hidden`,children:T===void 0?e.activeTab===`retrieval-log`?(0,b.jsx)(z,{evidence:_,onOpenTrace:e.onOpenTrace}):(0,b.jsx)(U,{sources:C,selectedKey:w?.key??``,activeTab:e.activeTab,onSelect:n,children:(0,b.jsx)(x,{source:w,state:c,onLoadMore:()=>{w!==void 0&&E(w,c?.nextCursor===void 0?{append:!0}:{append:!0,cursor:c.nextCursor})}})}):(0,b.jsx)(d,{className:`h-full`,title:T.title,text:T.text})})]})}function U(e){let t=e.sources.length>1;return(0,b.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,b.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-b border-border/80`,children:(0,b.jsxs)(`div`,{className:`flex min-h-11 min-w-max items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`mr-2 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:m(e.activeTab)}),e.sources.map(t=>(0,b.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,b.jsx)(`span`,{children:t.source.label??l(t.source.kind)}),t.source.itemCount===void 0?null:(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:t.source.itemCount})]},t.key))]})}):null,e.children]})}function W(e){let t=m(e.activeTab);if(!e.enabled)return{title:`${t} unavailable`,text:`This Studio runtime does not expose knowledge inspection.`};let n=e.activeTab===`retrieval-log`?e.evidenceCount:e.sourceCount;if(e.loading&&n===0)return{title:`Loading ${t.toLowerCase()}`,text:`Reading knowledge metadata.`};if(!(n>0))switch(e.activeTab){case`retrieval-log`:return{title:`No retrieval evidence`,text:`Retrieval activity will appear here after an agent queries a knowledge source.`};case`static-context`:return{title:`No static context`,text:`No static context sources are registered in this Studio runtime.`};case`dynamic-context`:return{title:`No dynamic context`,text:`No dynamic context sources are registered in this Studio runtime.`};case`dynamic-tools`:return{title:`No dynamic tools`,text:`No dynamic tool sources are registered in this Studio runtime.`}}}function G(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{H as KnowledgePage};
|
|
2
|
-
//# sourceMappingURL=knowledge-page-Cot_uYcE.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e,r as t,s as n}from"./utils-C9GMruoG.js";import{F as r,a as i,d as a,f as o,i as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./index-Bh7RLPBw.js";import{t as m}from"./badge-RJJoRC4P.js";import{a as h,c as g,r as _,s as v,t as y,u as b}from"./tool-runner-BZN-PZJU.js";var x=n(e(),1),S=t();function C(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),m=(0,x.useMemo)(()=>E(n),[n]),[g,y]=(0,x.useState)(``),[b,C]=(0,x.useState)(`{}`),[T,D]=(0,x.useState)(`idle`),[O,k]=(0,x.useState)(),[A,j]=(0,x.useState)(``),M=(0,x.useMemo)(()=>m.find(e=>e.key===g)??m[0],[m,g]),N=(0,x.useRef)(``),P=(0,x.useRef)(0);(0,x.useEffect)(()=>{if(m.length===0){y(``);return}m.some(e=>e.key===g)||y(m[0]?.key??``)},[m,g]),(0,x.useEffect)(()=>{let e=M?.key??``;N.current!==e&&(N.current=e,P.current+=1,C(`{}`),D(`idle`),j(``),k(void 0))},[M]);async function F(){if(M===void 0)return;let e;try{e=JSON.parse(b)}catch(e){j(e instanceof Error?e.message:String(e)),k(void 0);return}D(`running`),j(``),k(void 0);let t=M.key,n=P.current+1;P.current=n;let r=()=>P.current===n&&N.current===t;try{let t=await fetch(`/agents/${encodeURIComponent(M.agentId)}/tools/${encodeURIComponent(M.name)}/runs`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({args:e})}),n=await t.json();if(!r())return;let i=v(n);if(i===void 0){j(`Unexpected Studio tool run response: ${h(n)}`);return}k(i),(!t.ok||i.status===`error`)&&j(h(i.error??i))}catch(e){r()&&j(e instanceof Error?e.message:String(e))}finally{r()&&D(`idle`)}}return(0,S.jsxs)(u,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":`MCPs`,children:[(0,S.jsx)(i,{title:`MCPs`,description:`MCP servers and remote tools registered on Studio agents, grouped by server.`,action:(0,S.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center justify-end gap-2 max-sm:justify-start`,children:[(0,S.jsx)(f,{label:`servers`,value:n.length}),(0,S.jsx)(f,{label:`tools`,value:r}),e.agents.length>1?(0,S.jsxs)(p,{value:t?.id??``,onValueChange:e.onSelectAgent,children:[(0,S.jsx)(d,{className:`h-8 min-h-8 w-64 rounded-md border-border text-xs max-sm:w-full`,children:(0,S.jsx)(c,{placeholder:`Agent`})}),(0,S.jsx)(a,{align:`end`,children:e.agents.map(e=>(0,S.jsx)(o,{value:e.id,children:e.name??e.id},e.id))})]}):null]})}),(0,S.jsx)(s,{className:`overflow-auto`,children:e.enabled?e.loading?(0,S.jsx)(l,{title:`Loading MCPs`,text:`Reading registered MCP metadata.`}):n.length===0?(0,S.jsx)(l,{title:`No MCPs`,text:`The selected agent has no registered MCP tools.`}):(0,S.jsxs)(`div`,{className:`grid w-full gap-5`,children:[n.map(e=>(0,S.jsx)(w,{selectedToolKey:M?.key??``,server:e,onSelectTool:y},e.name)),m.length===0?null:(0,S.jsx)(_,{argsText:b,runError:A,runResponse:O,runState:T,selectedTool:M,onArgsTextChange:C,onRun:()=>void F()})]}):(0,S.jsx)(l,{title:`MCPs unavailable`,text:`No registered Studio agent exposes MCP tools.`})})]})}function w(e){return(0,S.jsxs)(`section`,{className:`overflow-hidden border-t`,children:[(0,S.jsxs)(`header`,{className:`grid min-h-14 grid-cols-[minmax(0,1fr)_auto] items-center gap-4 border-b bg-muted/20 px-4`,children:[(0,S.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,S.jsx)(`h2`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.server.name}),(0,S.jsx)(`span`,{className:`truncate text-xs font-medium text-muted-foreground`,children:e.server.agentId})]}),(0,S.jsxs)(m,{className:`border-border/80 bg-background/50 text-muted-foreground`,children:[e.server.toolCount,` tools`]})]}),(0,S.jsx)(`div`,{className:`mt-1 grid gap-1`,children:e.server.tools.map(t=>(0,S.jsx)(T,{serverName:e.server.name,active:e.selectedToolKey===D(e.server.name,t),tool:t,onSelectTool:e.onSelectTool},`${t.source}:${t.name}`))})]})}function T(e){let t=D(e.serverName,e.tool);return(0,S.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,S.jsxs)(`div`,{className:`grid content-start gap-4 rounded-lg bg-card/25 p-3`,children:[(0,S.jsxs)(`div`,{className:`grid gap-1`,children:[(0,S.jsx)(`h3`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.tool.name}),(0,S.jsx)(`span`,{className:` text-xs font-medium text-muted-foreground`,children:e.tool.source})]}),(0,S.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:e.tool.description}),(0,S.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,S.jsx)(m,{className:b(e.tool.source),children:e.tool.source}),(0,S.jsxs)(m,{className:`border-border/80 bg-transparent text-muted-foreground`,children:[g(e.tool.parameters),` fields`]})]}),(0,S.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,S.jsx)(y,{value:e.tool.parameters,title:`Parameter schema`})]})}function E(e){return e.flatMap(e=>e.tools.map(t=>({key:D(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 D(e,t){return`${e}:${t.source}:${t.name}`}export{C as McpsPage};
|
|
2
|
-
//# sourceMappingURL=mcps-page-BSO6ork4.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{i as e,r as t,s as n}from"./utils-C9GMruoG.js";import{a as r}from"./chunk-ADH7NNCS-DM6fsnDI.js";import{F as i,Q as a,a as o,d as s,f as c,i as l,m as u,n as d,o as f,p,r as m,u as h}from"./index-Bh7RLPBw.js";import{t as g}from"./badge-RJJoRC4P.js";import{t as _}from"./renderers-B8gvjR2u.js";var v=n(e(),1),y=t();function b(e){return e.flatMap(e=>e.message.role===`assistant`?[{position:e.position,runId:e.runId,turn:e.turn,createdAt:e.createdAt,preview:w(e.message),generation:r(e.message)}]:[])}function x(e){let t=b(e.records);return(0,y.jsxs)(`section`,{className:`grid min-w-0 overflow-hidden border-y border-border/80`,children:[(0,y.jsxs)(`header`,{className:`flex min-h-11 items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:[(0,y.jsx)(`span`,{children:`Assistant responses`}),(0,y.jsxs)(`span`,{className:`font-medium normal-case tracking-normal`,children:[t.length,` responses`]})]}),t.length===0?(0,y.jsx)(`div`,{className:`border-t border-border/70 px-4 py-8 text-center text-sm text-muted-foreground`,children:`No persisted assistant responses.`}):(0,y.jsx)(`div`,{className:`grid divide-y divide-border/70 border-t border-border/70`,children:t.map(e=>(0,y.jsx)(S,{row:e},`${e.position}:${e.runId}`))})]})}function S(e){let t=e.row.generation;return(0,y.jsxs)(`article`,{className:`grid min-w-0 gap-3 px-3 py-4`,children:[(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center justify-between gap-2`,children:[(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,y.jsxs)(g,{className:`border-border/80 bg-muted/45 text-foreground`,children:[`Turn `,e.row.turn]}),t===void 0?(0,y.jsx)(g,{className:`border-border/80 bg-background/40 text-muted-foreground`,children:`Usage unavailable`}):(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(g,{className:`border-border/80 bg-muted/45 text-foreground`,children:t.provider}),(0,y.jsx)(g,{className:`max-w-full truncate border-border/80 bg-muted/45 text-foreground`,children:t.model})]})]}),(0,y.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:a(e.row.createdAt)})]}),(0,y.jsx)(`p`,{className:`m-0 whitespace-pre-wrap break-words text-sm leading-6 text-foreground`,children:e.row.preview}),t===void 0?null:(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,y.jsx)(C,{label:`total`,value:t.usage.totalTokens,suffix:` tokens`}),(0,y.jsx)(C,{label:`input`,value:t.usage.inputTokens}),(0,y.jsx)(C,{label:`output`,value:t.usage.outputTokens}),(0,y.jsx)(C,{label:`cached`,value:t.usage.cachedInputTokens}),(0,y.jsx)(C,{label:`cache create`,value:t.usage.cacheCreationInputTokens})]})]})}function C(e){return(0,y.jsxs)(`span`,{children:[e.label,` `,e.value.toLocaleString(),e.suffix]})}function w(e){let t=e.content.flatMap(e=>e.type===`text`?[e.text]:[]).join(`
|
|
2
|
-
`).trim();if(t.length>0)return T(t);let n=e.content.flatMap(e=>e.type===`tool_call`?[e.function.name]:[]);if(n.length>0)return`Tool call${n.length===1?``:`s`}: ${n.join(`, `)}`;let r=e.content.flatMap(e=>e.type===`reasoning`?[e.text]:[]).join(`
|
|
3
|
-
`).trim();if(r.length>0)return T(r);let i=e.content.filter(e=>e.type===`image`).length;return i>0?`${i} generated image${i===1?``:`s`}`:`Assistant response`}function T(e){let t=e.replace(/\s+/g,` `).trim();return t.length>220?`${t.slice(0,217)}...`:t}function E(e){let[t,n]=(0,v.useState)([]),[r,a]=(0,v.useState)(``),[g,_]=(0,v.useState)([]),[b,x]=(0,v.useState)([]),[S,C]=(0,v.useState)(``),[w,T]=(0,v.useState)(``),[E,O]=(0,v.useState)(),[A,N]=(0,v.useState)(),[P,F]=(0,v.useState)(!1),[B,V]=(0,v.useState)(!1),[H,U]=(0,v.useState)(!1),[W,G]=(0,v.useState)(``),K=(0,v.useRef)(0),q=t.find(e=>e.ref===r),J=(0,v.useCallback)(async()=>{if(!e.enabled){n([]),a(``);return}F(!0),G(``);try{let e=await fetch(`/memory/sources`);if(!e.ok)throw Error(`Memory sources failed with HTTP ${e.status}`);let t=await e.json();n(t.sources),a(e=>t.sources.some(t=>t.ref===e)?e:z(t.sources))}catch(e){G(e instanceof Error?e.message:String(e))}finally{F(!1)}},[e.enabled]);(0,v.useEffect)(()=>{J()},[J]);let Y=(0,v.useCallback)(async()=>{let t=K.current+1;if(K.current=t,!e.enabled||q===void 0||!q.available){_([]),x([]),O(void 0),N(void 0),V(!1);return}V(!0),G(``);try{let e=`/memory/sources/${encodeURIComponent(q.ref)}`,[n,r]=await Promise.all([fetch(`${e}/users?limit=50`),fetch(`${e}/conversations?limit=100`)]);if(!n.ok)throw Error(`Memory users failed with HTTP ${n.status}`);if(!r.ok)throw Error(`Memory conversations failed with HTTP ${r.status}`);let i=await n.json(),a=await r.json();if(K.current!==t)return;_(i.users),x(a.conversations),T(e=>a.conversations.find(t=>t.ref===e)?.ref??a.conversations[0]?.ref??``)}catch(e){K.current===t&&G(e instanceof Error?e.message:String(e))}finally{K.current===t&&V(!1)}},[e.enabled,q]);(0,v.useEffect)(()=>{C(``),T(``),_([]),x([]),O(void 0),N(void 0),Y()},[Y]),(0,v.useEffect)(()=>{if(!e.enabled||q===void 0||!q.available||w.length===0){O(void 0),N(void 0);return}let t=q.ref,n=!1;async function r(){U(!0),G(``);try{let e=`/memory/sources/${encodeURIComponent(t)}/conversations/${encodeURIComponent(w)}`,[r,i]=await Promise.all([fetch(`${e}/messages`),fetch(`${e}/steps`)]);if(!r.ok)throw Error(`Conversation messages failed with HTTP ${r.status}`);if(!i.ok)throw Error(`Conversation steps failed with HTTP ${i.status}`);n||(O(await r.json()),N(await i.json()))}catch(e){n||(G(e instanceof Error?e.message:String(e)),O(void 0),N(void 0))}finally{n||U(!1)}}return r(),()=>{n=!0}},[e.enabled,w,q]);let X=(0,v.useMemo)(()=>S.length===0?b:b.filter(e=>e.userId===S),[b,S]),Z=(0,v.useMemo)(()=>R(g,b),[b,g]),Q=X.find(e=>e.ref===w)??X[0];return(0,v.useEffect)(()=>{if(X.length===0){T(``);return}X.some(e=>e.ref===w)||T(X[0]?.ref??``)},[w,X]),(0,y.jsxs)(f,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":`Memory`,children:[(0,y.jsx)(o,{title:`Memory`,description:`Inspect persisted agent conversations directly. Studio sessions appear only as a fallback for agents without configured memory.`,action:(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-sm:justify-start`,children:[t.length===0?null:(0,y.jsxs)(h,{value:r,onValueChange:a,children:[(0,y.jsx)(p,{className:`h-8 min-h-8 w-60 rounded-md border-border text-xs max-sm:w-full`,children:(0,y.jsx)(u,{placeholder:`Memory source`})}),(0,y.jsx)(s,{align:`end`,children:t.map(e=>(0,y.jsxs)(c,{value:e.ref,children:[e.label,e.available?``:` (unavailable)`]},e.ref))})]}),(0,y.jsx)(m,{label:`users`,value:Z.userCount}),(0,y.jsx)(m,{label:`conversations`,value:Z.conversationCount}),(0,y.jsx)(m,{label:`messages`,value:Z.messageCount}),(0,y.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,disabled:P||B,onClick:()=>void J(),children:`Refresh`})]})}),(0,y.jsx)(l,{className:`overflow-hidden`,children:e.enabled?P&&t.length===0?(0,y.jsx)(d,{title:`Loading memory`,text:`Discovering configured memory sources.`}):W.length>0&&t.length===0?(0,y.jsx)(d,{title:`Memory error`,text:W}):q===void 0?(0,y.jsx)(d,{title:`No memory sources`,text:`No registered agent exposes memory.`}):q.available?B&&b.length===0?(0,y.jsx)(d,{title:`Loading memory`,text:`Reading ${q.label}.`}):W.length>0&&b.length===0?(0,y.jsx)(d,{title:`Memory error`,text:W}):b.length===0?(0,y.jsx)(I,{source:q,userCount:g.length,onRefresh:()=>void Y()}):(0,y.jsxs)(`div`,{className:[`grid h-full min-h-0 overflow-hidden`,W.length===0?`grid-rows-[minmax(0,1fr)]`:`grid-rows-[auto_minmax(0,1fr)]`].join(` `),children:[W.length===0?null:(0,y.jsx)(L,{message:W}),(0,y.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,y.jsx)(D,{users:g,selectedUserId:S,totalConversations:b.length,onSelect:C}),(0,y.jsx)(k,{agents:e.agents,conversations:X,selectedConversationRef:Q?.ref??``,source:q,onSelect:T}),(0,y.jsx)(j,{agents:e.agents,conversation:Q,detailLoading:H,messages:E,source:q,steps:A})]})]}):(0,y.jsx)(M,{source:q}):(0,y.jsx)(d,{title:`Memory unavailable`,text:`No agent memory or Studio session store is configured.`})})]})}function D(e){return(0,y.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,y.jsxs)(`div`,{className:`grid gap-3 py-4 pr-3 max-md:pr-0`,children:[(0,y.jsx)(P,{label:`Users`,value:e.users.length}),(0,y.jsx)(O,{active:e.selectedUserId.length===0,title:`All users`,detail:`${e.totalConversations} conversations`,onClick:()=>e.onSelect(``)}),(0,y.jsx)(`div`,{className:`grid gap-1`,children:e.users.map(t=>(0,y.jsx)(O,{active:e.selectedUserId===t.userId,title:t.userId,detail:`${t.conversationCount} conversations / ${a(t.lastInteractionAt)}`,onClick:()=>e.onSelect(t.userId)},t.userId))})]})})}function O(e){return(0,y.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,y.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.title}),(0,y.jsx)(`span`,{className:`min-w-0 truncate text-xs leading-5 text-muted-foreground`,children:e.detail})]})}function k(e){return(0,y.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,y.jsxs)(`div`,{className:`grid gap-3 py-4`,children:[(0,y.jsx)(P,{label:`Conversations`,value:e.conversations.length}),e.conversations.length===0?(0,y.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,y.jsx)(`div`,{className:`grid border-y border-border/80`,children:e.conversations.map(t=>(0,y.jsx)(A,{active:t.ref===e.selectedConversationRef,agentName:V(e.agents,e.source,t.agentIds),conversation:t,onSelect:()=>e.onSelect(t.ref)},t.ref))})]})})}function A(e){return(0,y.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,y.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,y.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,y.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.conversation.title??e.conversation.sessionId}),(0,y.jsxs)(`span`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:[e.agentName,` / `,e.conversation.userId]})]}),(0,y.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:e.conversation.messageCount})]}),(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,y.jsx)(`span`,{children:a(e.conversation.updatedAt)}),(0,y.jsx)(`span`,{className:`min-w-0 truncate`,children:e.conversation.sessionId})]})]})}function j(e){return e.conversation===void 0?(0,y.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,y.jsx)(d,{title:`No conversation selected`,text:`Choose a conversation to inspect.`})}):(0,y.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,y.jsxs)(`div`,{className:`grid min-w-0 gap-5`,children:[(0,y.jsxs)(`header`,{className:`grid gap-4 border-b border-border/80 pb-5`,children:[(0,y.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-4 max-md:grid`,children:[(0,y.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,y.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Persisted conversation`}),(0,y.jsx)(`h2`,{className:`m-0 min-w-0 truncate text-2xl font-semibold leading-none text-foreground`,children:e.conversation.title??e.conversation.sessionId}),(0,y.jsx)(`span`,{className:`min-w-0 break-all font-mono text-xs text-muted-foreground`,children:e.conversation.ref})]}),(0,y.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2 max-md:justify-start`,children:[(0,y.jsx)(g,{className:`border-border/80 bg-muted/45 text-foreground`,children:e.source.storeKind??e.source.kind}),(0,y.jsx)(g,{className:`border-border/80 bg-muted/45 text-foreground`,children:V(e.agents,e.source,e.conversation.agentIds)})]})]}),(0,y.jsxs)(`div`,{className:`grid border-y border-border/80 sm:grid-cols-4 sm:divide-x sm:divide-border/80`,children:[(0,y.jsx)(F,{label:`user`,value:e.conversation.userId}),(0,y.jsx)(F,{label:`messages`,value:e.conversation.messageCount}),(0,y.jsx)(F,{label:`created`,value:a(e.conversation.createdAt)}),(0,y.jsx)(F,{label:`updated`,value:a(e.conversation.updatedAt)})]})]}),e.detailLoading?(0,y.jsx)(d,{title:`Loading detail`,text:`Reading persisted messages.`}):(0,y.jsxs)(`div`,{className:`grid gap-4`,children:[e.conversation.metadata===void 0?null:(0,y.jsx)(N,{title:`metadata`,value:e.conversation.metadata}),(0,y.jsx)(x,{records:e.messages?.records??[]}),(0,y.jsx)(N,{title:`messages`,value:e.messages?.messages??[]}),(0,y.jsx)(N,{title:`message records`,value:e.messages?.records??[]}),(0,y.jsx)(N,{title:`derived transcript`,value:e.steps?.steps??[]})]})]})})}function M(e){return(0,y.jsx)(d,{className:`h-full`,title:`${e.source.label} is not inspectable`,text:e.source.reason??`This memory store does not expose read-only discovery.`})}function N(e){let t=Array.isArray(e.value)?e.value.length:void 0;return(0,y.jsxs)(`details`,{className:`group grid min-w-0 overflow-hidden border-y border-border/80`,open:!0,children:[(0,y.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,y.jsx)(`span`,{children:e.title}),(0,y.jsx)(`span`,{className:`font-medium normal-case tracking-normal`,children:t===void 0?`JSON`:`${t} items`})]}),(0,y.jsx)(`div`,{className:`min-w-0 overflow-x-auto border-t border-border/70`,children:(0,y.jsx)(`pre`,{className:`m-0 max-h-96 min-w-max p-4 text-xs leading-5 text-foreground`,children:(0,y.jsx)(`code`,{children:(0,y.jsx)(_,{text:B(e.value)})})})})]})}function P(e){return(0,y.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,y.jsx)(`h2`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.label}),(0,y.jsx)(`span`,{className:`text-xs font-semibold tabular-nums text-muted-foreground`,children:e.value})]})}function F(e){return(0,y.jsxs)(`div`,{className:`grid min-w-0 gap-1 px-3 py-3 first:pl-0 last:pr-0`,children:[(0,y.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.label}),(0,y.jsx)(`span`,{className:`min-w-0 truncate text-sm text-foreground`,title:String(e.value),children:e.value})]})}function I(e){return(0,y.jsx)(d,{className:`h-full`,title:`No saved conversations yet`,text:`Conversations will appear here after the connected agent writes to ${e.source.label}. ${e.userCount} users are currently available.`,action:(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center justify-center gap-3`,children:[(0,y.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:`secondary`,onClick:e.onRefresh,children:`Refresh`}),(0,y.jsx)(`span`,{className:`text-xs leading-5 text-muted-foreground`,children:`Existing database conversations are discovered automatically.`})]})})}function L(e){return(0,y.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 R(e,t){return{userCount:e.length,conversationCount:t.length,messageCount:t.reduce((e,t)=>e+t.messageCount,0)}}function z(e){return e.find(e=>e.kind===`agent`&&e.available)?.ref??e.find(e=>e.available)?.ref??e[0]?.ref??``}function B(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function V(e,t,n){if(n.length===1){let t=n[0]??`agent`;return e.find(e=>e.id===t)?.name??t}return t.label}export{E as MemoryPage};
|
|
4
|
-
//# sourceMappingURL=memory-page-CG84G--r.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory-page-CG84G--r.js","names":[],"sources":["../../../src/ui/app/modules/memory/memory-generation-ledger.tsx","../../../src/ui/app/modules/memory/memory-page.tsx"],"sourcesContent":["import { getAssistantGenerationMetadata, type Message } from \"@anvia/core/completion\";\nimport type { StudioMemoryMessageRecord } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { formatRelativeTime } from \"../shared/format\";\n\ntype AssistantMessage = Extract<Message, { role: \"assistant\" }>;\n\nexport type MemoryGenerationRow = {\n position: number;\n runId: string;\n turn: number;\n createdAt: string;\n preview: string;\n generation: ReturnType<typeof getAssistantGenerationMetadata>;\n};\n\nexport function memoryGenerationRows(records: StudioMemoryMessageRecord[]): MemoryGenerationRow[] {\n return records.flatMap((record) => {\n if (record.message.role !== \"assistant\") {\n return [];\n }\n return [\n {\n position: record.position,\n runId: record.runId,\n turn: record.turn,\n createdAt: record.createdAt,\n preview: assistantPreview(record.message),\n generation: getAssistantGenerationMetadata(record.message),\n },\n ];\n });\n}\n\nexport function MemoryGenerationLedger(props: { records: StudioMemoryMessageRecord[] }) {\n const rows = memoryGenerationRows(props.records);\n return (\n <section className=\"grid min-w-0 overflow-hidden border-y border-border/80\">\n <header className=\"flex min-h-11 items-center justify-between gap-3 bg-muted/10 px-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n <span>Assistant responses</span>\n <span className=\"font-medium normal-case tracking-normal\">{rows.length} responses</span>\n </header>\n {rows.length === 0 ? (\n <div className=\"border-t border-border/70 px-4 py-8 text-center text-sm text-muted-foreground\">\n No persisted assistant responses.\n </div>\n ) : (\n <div className=\"grid divide-y divide-border/70 border-t border-border/70\">\n {rows.map((row) => (\n <GenerationRow row={row} key={`${row.position}:${row.runId}`} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction GenerationRow(props: { row: MemoryGenerationRow }) {\n const generation = props.row.generation;\n return (\n <article className=\"grid min-w-0 gap-3 px-3 py-4\">\n <div className=\"flex min-w-0 flex-wrap items-center justify-between gap-2\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n Turn {props.row.turn}\n </Badge>\n {generation === undefined ? (\n <Badge className=\"border-border/80 bg-background/40 text-muted-foreground\">\n Usage unavailable\n </Badge>\n ) : (\n <>\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n {generation.provider}\n </Badge>\n <Badge className=\"max-w-full truncate border-border/80 bg-muted/45 text-foreground\">\n {generation.model}\n </Badge>\n </>\n )}\n </div>\n <span className=\"shrink-0 text-xs text-muted-foreground\">\n {formatRelativeTime(props.row.createdAt)}\n </span>\n </div>\n <p className=\"m-0 whitespace-pre-wrap break-words text-sm leading-6 text-foreground\">\n {props.row.preview}\n </p>\n {generation === undefined ? null : (\n <div className=\"flex min-w-0 flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n <UsageMetric label=\"total\" value={generation.usage.totalTokens} suffix=\" tokens\" />\n <UsageMetric label=\"input\" value={generation.usage.inputTokens} />\n <UsageMetric label=\"output\" value={generation.usage.outputTokens} />\n <UsageMetric label=\"cached\" value={generation.usage.cachedInputTokens} />\n <UsageMetric label=\"cache create\" value={generation.usage.cacheCreationInputTokens} />\n </div>\n )}\n </article>\n );\n}\n\nfunction UsageMetric(props: { label: string; value: number; suffix?: string | undefined }) {\n return (\n <span>\n {props.label} {props.value.toLocaleString()}\n {props.suffix}\n </span>\n );\n}\n\nfunction assistantPreview(message: AssistantMessage): string {\n const text = message.content\n .flatMap((content) => (content.type === \"text\" ? [content.text] : []))\n .join(\"\\n\")\n .trim();\n if (text.length > 0) {\n return truncatePreview(text);\n }\n\n const toolNames = message.content.flatMap((content) =>\n content.type === \"tool_call\" ? [content.function.name] : [],\n );\n if (toolNames.length > 0) {\n return `Tool call${toolNames.length === 1 ? \"\" : \"s\"}: ${toolNames.join(\", \")}`;\n }\n\n const reasoning = message.content\n .flatMap((content) => (content.type === \"reasoning\" ? [content.text] : []))\n .join(\"\\n\")\n .trim();\n if (reasoning.length > 0) {\n return truncatePreview(reasoning);\n }\n\n const imageCount = message.content.filter((content) => content.type === \"image\").length;\n return imageCount > 0\n ? `${imageCount} generated image${imageCount === 1 ? \"\" : \"s\"}`\n : \"Assistant response\";\n}\n\nfunction truncatePreview(value: string): string {\n const compact = value.replace(/\\s+/g, \" \").trim();\n return compact.length > 220 ? `${compact.slice(0, 217)}...` : compact;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioConfig,\n StudioMemorySourceConversationMessages,\n StudioMemorySourceConversationSteps,\n StudioMemorySourceConversationSummary,\n StudioMemorySourceConversationsPage,\n StudioMemorySourceSummary,\n StudioMemorySourcesPage,\n StudioMemorySourceUsersPage,\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 StudioEmptyState,\n StudioHeaderMetric,\n StudioPageContent,\n StudioPageHeader,\n StudioPageShell,\n} from \"../../components/ui/studio\";\nimport { formatRelativeTime } from \"../shared/format\";\nimport { JsonSyntax } from \"../shared/renderers\";\nimport { MemoryGenerationLedger } from \"./memory-generation-ledger\";\n\nexport function MemoryPage(props: { agents: StudioConfig[\"agents\"]; enabled: boolean }) {\n const [sources, setSources] = useState<StudioMemorySourceSummary[]>([]);\n const [selectedSourceRef, setSelectedSourceRef] = useState(\"\");\n const [users, setUsers] = useState<StudioMemorySourceUsersPage[\"users\"]>([]);\n const [conversations, setConversations] = useState<StudioMemorySourceConversationSummary[]>([]);\n const [selectedUserId, setSelectedUserId] = useState(\"\");\n const [selectedConversationRef, setSelectedConversationRef] = useState(\"\");\n const [messages, setMessages] = useState<StudioMemorySourceConversationMessages | undefined>();\n const [steps, setSteps] = useState<StudioMemorySourceConversationSteps | undefined>();\n const [sourcesLoading, setSourcesLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [detailLoading, setDetailLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const memoryRequest = useRef(0);\n\n const selectedSource = sources.find((source) => source.ref === selectedSourceRef);\n\n const loadSources = useCallback(async () => {\n if (!props.enabled) {\n setSources([]);\n setSelectedSourceRef(\"\");\n return;\n }\n setSourcesLoading(true);\n setError(\"\");\n try {\n const response = await fetch(\"/memory/sources\");\n if (!response.ok) throw new Error(`Memory sources failed with HTTP ${response.status}`);\n const body = (await response.json()) as StudioMemorySourcesPage;\n setSources(body.sources);\n setSelectedSourceRef((current) =>\n body.sources.some((source) => source.ref === current)\n ? current\n : defaultSourceRef(body.sources),\n );\n } catch (loadError) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n } finally {\n setSourcesLoading(false);\n }\n }, [props.enabled]);\n\n useEffect(() => {\n void loadSources();\n }, [loadSources]);\n\n const loadMemory = useCallback(async () => {\n const requestId = memoryRequest.current + 1;\n memoryRequest.current = requestId;\n if (!props.enabled || selectedSource === undefined || !selectedSource.available) {\n setUsers([]);\n setConversations([]);\n setMessages(undefined);\n setSteps(undefined);\n setLoading(false);\n return;\n }\n setLoading(true);\n setError(\"\");\n try {\n const sourcePath = `/memory/sources/${encodeURIComponent(selectedSource.ref)}`;\n const [usersResponse, conversationsResponse] = await Promise.all([\n fetch(`${sourcePath}/users?limit=50`),\n fetch(`${sourcePath}/conversations?limit=100`),\n ]);\n if (!usersResponse.ok) {\n throw new Error(`Memory users failed with HTTP ${usersResponse.status}`);\n }\n if (!conversationsResponse.ok) {\n throw new Error(`Memory conversations failed with HTTP ${conversationsResponse.status}`);\n }\n const usersBody = (await usersResponse.json()) as StudioMemorySourceUsersPage;\n const conversationsBody =\n (await conversationsResponse.json()) as StudioMemorySourceConversationsPage;\n if (memoryRequest.current !== requestId) return;\n setUsers(usersBody.users);\n setConversations(conversationsBody.conversations);\n setSelectedConversationRef(\n (current) =>\n conversationsBody.conversations.find((conversation) => conversation.ref === current)\n ?.ref ??\n conversationsBody.conversations[0]?.ref ??\n \"\",\n );\n } catch (loadError) {\n if (memoryRequest.current === requestId) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n }\n } finally {\n if (memoryRequest.current === requestId) setLoading(false);\n }\n }, [props.enabled, selectedSource]);\n\n useEffect(() => {\n setSelectedUserId(\"\");\n setSelectedConversationRef(\"\");\n setUsers([]);\n setConversations([]);\n setMessages(undefined);\n setSteps(undefined);\n void loadMemory();\n }, [loadMemory]);\n\n useEffect(() => {\n if (\n !props.enabled ||\n selectedSource === undefined ||\n !selectedSource.available ||\n selectedConversationRef.length === 0\n ) {\n setMessages(undefined);\n setSteps(undefined);\n return;\n }\n const sourceRef = selectedSource.ref;\n let cancelled = false;\n async function loadDetail() {\n setDetailLoading(true);\n setError(\"\");\n try {\n const conversationPath = `/memory/sources/${encodeURIComponent(\n sourceRef,\n )}/conversations/${encodeURIComponent(selectedConversationRef)}`;\n const [messagesResponse, stepsResponse] = await Promise.all([\n fetch(`${conversationPath}/messages`),\n fetch(`${conversationPath}/steps`),\n ]);\n if (!messagesResponse.ok) {\n throw new Error(`Conversation messages failed with HTTP ${messagesResponse.status}`);\n }\n if (!stepsResponse.ok) {\n throw new Error(`Conversation steps failed with HTTP ${stepsResponse.status}`);\n }\n if (!cancelled) {\n setMessages((await messagesResponse.json()) as StudioMemorySourceConversationMessages);\n setSteps((await stepsResponse.json()) as StudioMemorySourceConversationSteps);\n }\n } catch (loadError) {\n if (!cancelled) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n setMessages(undefined);\n setSteps(undefined);\n }\n } finally {\n if (!cancelled) setDetailLoading(false);\n }\n }\n void loadDetail();\n return () => {\n cancelled = true;\n };\n }, [props.enabled, selectedConversationRef, selectedSource]);\n\n const visibleConversations = useMemo(\n () =>\n selectedUserId.length === 0\n ? conversations\n : conversations.filter((conversation) => conversation.userId === selectedUserId),\n [conversations, selectedUserId],\n );\n const totals = useMemo(() => memoryTotals(users, conversations), [conversations, users]);\n const selectedConversation =\n visibleConversations.find((conversation) => conversation.ref === selectedConversationRef) ??\n visibleConversations[0];\n\n useEffect(() => {\n if (visibleConversations.length === 0) {\n setSelectedConversationRef(\"\");\n return;\n }\n if (\n !visibleConversations.some((conversation) => conversation.ref === selectedConversationRef)\n ) {\n setSelectedConversationRef(visibleConversations[0]?.ref ?? \"\");\n }\n }, [selectedConversationRef, visibleConversations]);\n\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Memory\">\n <StudioPageHeader\n title=\"Memory\"\n description=\"Inspect persisted agent conversations directly. Studio sessions appear only as a fallback for agents without configured memory.\"\n action={\n <div className=\"flex min-w-0 flex-wrap justify-end gap-2 max-sm:justify-start\">\n {sources.length === 0 ? null : (\n <Select value={selectedSourceRef} onValueChange={setSelectedSourceRef}>\n <SelectTrigger className=\"h-8 min-h-8 w-60 rounded-md border-border text-xs max-sm:w-full\">\n <SelectValue placeholder=\"Memory source\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {sources.map((source) => (\n <SelectItem value={source.ref} key={source.ref}>\n {source.label}\n {source.available ? \"\" : \" (unavailable)\"}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n <StudioHeaderMetric label=\"users\" value={totals.userCount} />\n <StudioHeaderMetric label=\"conversations\" value={totals.conversationCount} />\n <StudioHeaderMetric label=\"messages\" value={totals.messageCount} />\n <Button\n className=\"h-8 min-h-8 rounded-md px-3 text-xs\"\n type=\"button\"\n variant=\"secondary\"\n disabled={sourcesLoading || loading}\n onClick={() => void loadSources()}\n >\n Refresh\n </Button>\n </div>\n }\n />\n\n <StudioPageContent className=\"overflow-hidden\">\n {!props.enabled ? (\n <StudioEmptyState\n title=\"Memory unavailable\"\n text=\"No agent memory or Studio session store is configured.\"\n />\n ) : sourcesLoading && sources.length === 0 ? (\n <StudioEmptyState title=\"Loading memory\" text=\"Discovering configured memory sources.\" />\n ) : error.length > 0 && sources.length === 0 ? (\n <StudioEmptyState title=\"Memory error\" text={error} />\n ) : selectedSource === undefined ? (\n <StudioEmptyState title=\"No memory sources\" text=\"No registered agent exposes memory.\" />\n ) : !selectedSource.available ? (\n <UnavailableSource source={selectedSource} />\n ) : loading && conversations.length === 0 ? (\n <StudioEmptyState title=\"Loading memory\" text={`Reading ${selectedSource.label}.`} />\n ) : error.length > 0 && conversations.length === 0 ? (\n <StudioEmptyState title=\"Memory error\" text={error} />\n ) : conversations.length === 0 ? (\n <MemoryEmptyDashboard\n source={selectedSource}\n userCount={users.length}\n onRefresh={() => void loadMemory()}\n />\n ) : (\n <div\n className={[\n \"grid h-full min-h-0 overflow-hidden\",\n error.length === 0 ? \"grid-rows-[minmax(0,1fr)]\" : \"grid-rows-[auto_minmax(0,1fr)]\",\n ].join(\" \")}\n >\n {error.length === 0 ? null : <InlineError message={error} />}\n <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)]\">\n <MemoryUserRail\n users={users}\n selectedUserId={selectedUserId}\n totalConversations={conversations.length}\n onSelect={setSelectedUserId}\n />\n <ConversationLedger\n agents={props.agents}\n conversations={visibleConversations}\n selectedConversationRef={selectedConversation?.ref ?? \"\"}\n source={selectedSource}\n onSelect={setSelectedConversationRef}\n />\n <ConversationDetail\n agents={props.agents}\n conversation={selectedConversation}\n detailLoading={detailLoading}\n messages={messages}\n source={selectedSource}\n steps={steps}\n />\n </div>\n </div>\n )}\n </StudioPageContent>\n </StudioPageShell>\n );\n}\n\nfunction MemoryUserRail(props: {\n users: StudioMemorySourceUsersPage[\"users\"];\n selectedUserId: string;\n totalConversations: number;\n onSelect: (userId: string) => void;\n}) {\n return (\n <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\">\n <div className=\"grid gap-3 py-4 pr-3 max-md:pr-0\">\n <SectionLabel label=\"Users\" value={props.users.length} />\n <UserFilterButton\n active={props.selectedUserId.length === 0}\n title=\"All users\"\n detail={`${props.totalConversations} conversations`}\n onClick={() => props.onSelect(\"\")}\n />\n <div className=\"grid gap-1\">\n {props.users.map((user) => (\n <UserFilterButton\n active={props.selectedUserId === user.userId}\n title={user.userId}\n detail={`${user.conversationCount} conversations / ${formatRelativeTime(\n user.lastInteractionAt,\n )}`}\n key={user.userId}\n onClick={() => props.onSelect(user.userId)}\n />\n ))}\n </div>\n </div>\n </aside>\n );\n}\n\nfunction UserFilterButton(props: {\n active: boolean;\n title: string;\n detail: string;\n onClick: () => void;\n}) {\n return (\n <button\n className={[\n \"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\",\n props.active ? \"border-border/80 bg-muted/35\" : \"\",\n ].join(\" \")}\n type=\"button\"\n onClick={props.onClick}\n >\n <span className=\"min-w-0 truncate text-sm font-semibold text-foreground\">{props.title}</span>\n <span className=\"min-w-0 truncate text-xs leading-5 text-muted-foreground\">\n {props.detail}\n </span>\n </button>\n );\n}\n\nfunction ConversationLedger(props: {\n agents: StudioConfig[\"agents\"];\n conversations: StudioMemorySourceConversationSummary[];\n selectedConversationRef: string;\n source: StudioMemorySourceSummary;\n onSelect: (conversationRef: string) => void;\n}) {\n return (\n <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\">\n <div className=\"grid gap-3 py-4\">\n <SectionLabel label=\"Conversations\" value={props.conversations.length} />\n {props.conversations.length === 0 ? (\n <div className=\"border-y border-dashed border-border/80 px-3 py-8 text-center text-sm text-muted-foreground\">\n No conversations for this user.\n </div>\n ) : (\n <div className=\"grid border-y border-border/80\">\n {props.conversations.map((conversation) => (\n <ConversationRow\n active={conversation.ref === props.selectedConversationRef}\n agentName={sourceAgentLabel(props.agents, props.source, conversation.agentIds)}\n conversation={conversation}\n key={conversation.ref}\n onSelect={() => props.onSelect(conversation.ref)}\n />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n\nfunction ConversationRow(props: {\n conversation: StudioMemorySourceConversationSummary;\n agentName: string;\n active: boolean;\n onSelect: () => void;\n}) {\n return (\n <button\n className={[\n \"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\",\n props.active ? \"bg-muted/35\" : \"\",\n ].join(\" \")}\n type=\"button\"\n onClick={props.onSelect}\n >\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <div className=\"grid min-w-0 gap-1\">\n <span className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {props.conversation.title ?? props.conversation.sessionId}\n </span>\n <span className=\"min-w-0 truncate text-xs text-muted-foreground\">\n {props.agentName} / {props.conversation.userId}\n </span>\n </div>\n <span className=\"shrink-0 text-xs tabular-nums text-muted-foreground\">\n {props.conversation.messageCount}\n </span>\n </div>\n <div className=\"flex min-w-0 flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n <span>{formatRelativeTime(props.conversation.updatedAt)}</span>\n <span className=\"min-w-0 truncate\">{props.conversation.sessionId}</span>\n </div>\n </button>\n );\n}\n\nfunction ConversationDetail(props: {\n agents: StudioConfig[\"agents\"];\n conversation: StudioMemorySourceConversationSummary | undefined;\n detailLoading: boolean;\n messages: StudioMemorySourceConversationMessages | undefined;\n source: StudioMemorySourceSummary;\n steps: StudioMemorySourceConversationSteps | undefined;\n}) {\n if (props.conversation === undefined) {\n return (\n <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\">\n <StudioEmptyState\n title=\"No conversation selected\"\n text=\"Choose a conversation to inspect.\"\n />\n </section>\n );\n }\n\n return (\n <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\">\n <div 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 Persisted conversation\n </div>\n <h2 className=\"m-0 min-w-0 truncate text-2xl font-semibold leading-none text-foreground\">\n {props.conversation.title ?? props.conversation.sessionId}\n </h2>\n <span className=\"min-w-0 break-all font-mono text-xs text-muted-foreground\">\n {props.conversation.ref}\n </span>\n </div>\n <div className=\"flex flex-wrap justify-end gap-2 max-md:justify-start\">\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n {props.source.storeKind ?? props.source.kind}\n </Badge>\n <Badge className=\"border-border/80 bg-muted/45 text-foreground\">\n {sourceAgentLabel(props.agents, props.source, props.conversation.agentIds)}\n </Badge>\n </div>\n </div>\n <div className=\"grid border-y border-border/80 sm:grid-cols-4 sm:divide-x sm:divide-border/80\">\n <Fact label=\"user\" value={props.conversation.userId} />\n <Fact label=\"messages\" value={props.conversation.messageCount} />\n <Fact label=\"created\" value={formatRelativeTime(props.conversation.createdAt)} />\n <Fact label=\"updated\" value={formatRelativeTime(props.conversation.updatedAt)} />\n </div>\n </header>\n\n {props.detailLoading ? (\n <StudioEmptyState title=\"Loading detail\" text=\"Reading persisted messages.\" />\n ) : (\n <div className=\"grid gap-4\">\n {props.conversation.metadata === undefined ? null : (\n <JsonPanel title=\"metadata\" value={props.conversation.metadata} />\n )}\n <MemoryGenerationLedger records={props.messages?.records ?? []} />\n <JsonPanel title=\"messages\" value={props.messages?.messages ?? []} />\n <JsonPanel title=\"message records\" value={props.messages?.records ?? []} />\n <JsonPanel title=\"derived transcript\" value={props.steps?.steps ?? []} />\n </div>\n )}\n </div>\n </section>\n );\n}\n\nfunction UnavailableSource(props: { source: StudioMemorySourceSummary }) {\n return (\n <StudioEmptyState\n className=\"h-full\"\n title={`${props.source.label} is not inspectable`}\n text={props.source.reason ?? \"This memory store does not expose read-only discovery.\"}\n />\n );\n}\n\nfunction JsonPanel(props: { title: string; value: unknown }) {\n const count = Array.isArray(props.value) ? props.value.length : undefined;\n return (\n <details className=\"group grid min-w-0 overflow-hidden border-y border-border/80\" open>\n <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\">\n <span>{props.title}</span>\n <span className=\"font-medium normal-case tracking-normal\">\n {count === undefined ? \"JSON\" : `${count} items`}\n </span>\n </summary>\n <div className=\"min-w-0 overflow-x-auto border-t border-border/70\">\n <pre className=\"m-0 max-h-96 min-w-max p-4 text-xs leading-5 text-foreground\">\n <code>\n <JsonSyntax text={formatJson(props.value)} />\n </code>\n </pre>\n </div>\n </details>\n );\n}\n\nfunction SectionLabel(props: { label: string; value: number }) {\n return (\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <h2 className=\"m-0 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {props.label}\n </h2>\n <span className=\"text-xs font-semibold tabular-nums text-muted-foreground\">\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction Fact(props: { label: string; value: string | number }) {\n return (\n <div className=\"grid min-w-0 gap-1 px-3 py-3 first:pl-0 last:pr-0\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"min-w-0 truncate text-sm text-foreground\" title={String(props.value)}>\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction MemoryEmptyDashboard(props: {\n source: StudioMemorySourceSummary;\n userCount: number;\n onRefresh: () => void;\n}) {\n return (\n <StudioEmptyState\n className=\"h-full\"\n title=\"No saved conversations yet\"\n text={`Conversations will appear here after the connected agent writes to ${props.source.label}. ${props.userCount} users are currently available.`}\n action={\n <div className=\"flex min-w-0 flex-wrap items-center justify-center gap-3\">\n <Button\n className=\"h-8 min-h-8 rounded-md px-3 text-xs\"\n type=\"button\"\n variant=\"secondary\"\n onClick={props.onRefresh}\n >\n Refresh\n </Button>\n <span className=\"text-xs leading-5 text-muted-foreground\">\n Existing database conversations are discovered automatically.\n </span>\n </div>\n }\n />\n );\n}\n\nfunction InlineError(props: { message: string }) {\n return (\n <div className=\"mb-3 border border-destructive/30 bg-destructive/10 px-3 py-2 text-xs leading-5 text-destructive\">\n {props.message}\n </div>\n );\n}\n\nfunction memoryTotals(\n users: StudioMemorySourceUsersPage[\"users\"],\n conversations: StudioMemorySourceConversationSummary[],\n): { userCount: number; conversationCount: number; messageCount: number } {\n return {\n userCount: users.length,\n conversationCount: conversations.length,\n messageCount: conversations.reduce(\n (total, conversation) => total + conversation.messageCount,\n 0,\n ),\n };\n}\n\nfunction defaultSourceRef(sources: StudioMemorySourceSummary[]): string {\n return (\n sources.find((source) => source.kind === \"agent\" && source.available)?.ref ??\n sources.find((source) => source.available)?.ref ??\n sources[0]?.ref ??\n \"\"\n );\n}\n\nfunction formatJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction sourceAgentLabel(\n agents: StudioConfig[\"agents\"],\n source: StudioMemorySourceSummary,\n agentIds: string[],\n): string {\n if (agentIds.length === 1) {\n const agentId = agentIds[0] ?? \"agent\";\n return agents.find((agent) => agent.id === agentId)?.name ?? agentId;\n }\n return source.label;\n}\n"],"mappings":"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"}
|