@copilotkit/web-inspector 1.62.2 → 1.63.0

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/dist/index.umd.js CHANGED
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
7
7
 
8
8
  //#region src/styles/generated.css
9
- var generated_default = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight: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-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-green-100:oklch(96.2% .044 156.743);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-700:oklch(50% .134 242.749);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-700:oklch(49.6% .265 301.924);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-700:oklch(51.8% .253 323.949);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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;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}:host{font-family:var(--font-sans);color:var(--color-slate-900);background-color:#0000;display:block}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.bottom-1{bottom:calc(var(--spacing)*1)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:calc(var(--spacing)*0)}.mx-4{margin-inline:calc(var(--spacing)*4)}.my-1{margin-block:calc(var(--spacing)*1)}.my-3{margin-block:calc(var(--spacing)*3)}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing)*64)}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-40{width:calc(var(--spacing)*40)}.w-auto{width:auto}.w-full{width:100%}.max-w-\\[240px\\]{max-width:240px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\\[160px\\]{min-width:160px}.min-w-\\[200px\\]{min-width:200px}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-y-\\[2px\\]{--tw-translate-y:calc(2px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}: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-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-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-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-fuchsia-200{border-color:var(--color-fuchsia-200)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-rose-200{border-color:var(--color-rose-200)}.border-sky-200{border-color:var(--color-sky-200)}.border-slate-200{border-color:var(--color-slate-200)}.border-violet-200{border-color:var(--color-violet-200)}.border-white\\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-fuchsia-50{background-color:var(--color-fuchsia-50)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\\/50{background-color:#f9fafb80}@supports (color:color-mix(in lab, red, red)){.bg-gray-50\\/50{background-color:color-mix(in oklab,var(--color-gray-50)50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-100{background-color:var(--color-green-100)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-950\\/95{background-color:#020618f2}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\\/95{background-color:color-mix(in oklab,var(--color-slate-950)95%,transparent)}}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.bg-white\\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\\/60{background-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-white\\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-white\\/95{background-color:color-mix(in oklab,var(--color-white)95%,transparent)}}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.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-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-700{color:var(--color-emerald-700)}.text-fuchsia-700{color:var(--color-fuchsia-700)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-purple-700{color:var(--color-purple-700)}.text-rose-700{color:var(--color-rose-700)}.text-sky-700{color:var(--color-sky-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-80{opacity:.8}.shadow{--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-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px 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-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-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)}.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)}.ring-black\\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\\/5{--tw-ring-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.ring-transparent{--tw-ring-color:transparent}.ring-white\\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ring-white\\/10{--tw-ring-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:border-white\\/30:hover{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/30:hover{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.hover\\:bg-blue-50\\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-blue-50\\/50:hover{background-color:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\\:bg-slate-900\\/95:hover{background-color:#0f172bf2}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-slate-900\\/95:hover{background-color:color-mix(in oklab,var(--color-slate-900)95%,transparent)}}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}.hover\\:text-slate-900:hover{color:var(--color-slate-900)}}.focus\\:border-gray-300:focus{border-color:var(--color-gray-300)}.focus\\:bg-gray-50:focus{background-color:var(--color-gray-50)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-gray-200:focus{--tw-ring-color:var(--color-gray-200)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-\\[\\#BEC2FF\\]:focus-visible{outline-color:#bec2ff}.focus-visible\\:outline-gray-300:focus-visible{outline-color:var(--color-gray-300)}.focus-visible\\:outline-gray-400:focus-visible{outline-color:var(--color-gray-400)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media (min-width:48rem){.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\\[\\&\\>svg\\]\\:\\!h-8>svg{height:calc(var(--spacing)*8)!important}.\\[\\&\\>svg\\]\\:\\!w-8>svg{width:calc(var(--spacing)*8)!important}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@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-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-space-y-reverse{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-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-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@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-scale-x{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\"*\";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}}";
9
+ var generated_default = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight: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-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-green-100:oklch(96.2% .044 156.743);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-700:oklch(50% .134 242.749);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-700:oklch(49.6% .265 301.924);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-700:oklch(51.8% .253 323.949);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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;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}:host{font-family:var(--font-sans);color:var(--color-slate-900);background-color:#0000;display:block}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.bottom-1{bottom:calc(var(--spacing)*1)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:calc(var(--spacing)*0)}.mx-4{margin-inline:calc(var(--spacing)*4)}.my-1{margin-block:calc(var(--spacing)*1)}.my-3{margin-block:calc(var(--spacing)*3)}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing)*64)}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-40{width:calc(var(--spacing)*40)}.w-auto{width:auto}.w-full{width:100%}.max-w-\\[240px\\]{max-width:240px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\\[160px\\]{min-width:160px}.min-w-\\[200px\\]{min-width:200px}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-y-\\[2px\\]{--tw-translate-y:calc(2px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}: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-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-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-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-fuchsia-200{border-color:var(--color-fuchsia-200)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-rose-200{border-color:var(--color-rose-200)}.border-sky-200{border-color:var(--color-sky-200)}.border-slate-200{border-color:var(--color-slate-200)}.border-violet-200{border-color:var(--color-violet-200)}.border-white\\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-fuchsia-50{background-color:var(--color-fuchsia-50)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\\/50{background-color:#f9fafb80}@supports (color:color-mix(in lab, red, red)){.bg-gray-50\\/50{background-color:color-mix(in oklab,var(--color-gray-50)50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-100{background-color:var(--color-green-100)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-950\\/95{background-color:#020618f2}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\\/95{background-color:color-mix(in oklab,var(--color-slate-950)95%,transparent)}}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.bg-white\\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\\/60{background-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-white\\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-white\\/95{background-color:color-mix(in oklab,var(--color-white)95%,transparent)}}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.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-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-700{color:var(--color-emerald-700)}.text-fuchsia-700{color:var(--color-fuchsia-700)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-purple-700{color:var(--color-purple-700)}.text-rose-700{color:var(--color-rose-700)}.text-sky-700{color:var(--color-sky-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-80{opacity:.8}.shadow{--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-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px 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-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-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)}.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)}.ring-black\\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\\/5{--tw-ring-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.ring-transparent{--tw-ring-color:transparent}.ring-white\\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ring-white\\/10{--tw-ring-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\\:border-white\\/30:hover{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\\:border-white\\/30:hover{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.hover\\:bg-blue-50\\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-blue-50\\/50:hover{background-color:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\\:bg-slate-900\\/95:hover{background-color:#0f172bf2}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-slate-900\\/95:hover{background-color:color-mix(in oklab,var(--color-slate-900)95%,transparent)}}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}.hover\\:text-slate-900:hover{color:var(--color-slate-900)}}.focus\\:border-gray-300:focus{border-color:var(--color-gray-300)}.focus\\:bg-gray-50:focus{background-color:var(--color-gray-50)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-gray-200:focus{--tw-ring-color:var(--color-gray-200)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-\\[\\#BEC2FF\\]:focus-visible{outline-color:#bec2ff}.focus-visible\\:outline-gray-300:focus-visible{outline-color:var(--color-gray-300)}.focus-visible\\:outline-gray-400:focus-visible{outline-color:var(--color-gray-400)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media (min-width:48rem){.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\\[\\&\\>svg\\]\\:\\!h-8>svg{height:calc(var(--spacing)*8)!important}.\\[\\&\\>svg\\]\\:\\!w-8>svg{width:calc(var(--spacing)*8)!important}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@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-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-space-y-reverse{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-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-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@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-scale-x{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\"*\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\"*\";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}}";
10
10
 
11
11
  //#endregion
12
12
  //#region src/assets/inspector-logo.svg
@@ -191,7 +191,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
191
191
 
192
192
  //#endregion
193
193
  //#region package.json
194
- var version = "1.62.2";
194
+ var version = "1.63.0";
195
195
 
196
196
  //#endregion
197
197
  //#region src/lib/telemetry.ts
@@ -204,7 +204,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
204
204
  threadsTalkToEngineerClicked: "oss.inspector.threads_talk_to_engineer_clicked",
205
205
  talkToEngineerClicked: "oss.inspector.talk_to_engineer_clicked",
206
206
  threadsEmptyEnabledViewed: "oss.inspector.threads_empty_enabled_viewed",
207
- threadsEnabledViewed: "oss.inspector.threads_enabled_viewed"
207
+ threadsEnabledViewed: "oss.inspector.threads_enabled_viewed",
208
+ threadsExampleViewed: "oss.inspector.threads_example_viewed",
209
+ threadsExampleSelected: "oss.inspector.threads_example_selected",
210
+ threadsExampleTourStarted: "oss.inspector.threads_example_tour_started",
211
+ threadsExampleTourStepViewed: "oss.inspector.threads_example_tour_step_viewed",
212
+ threadsExampleTourDismissed: "oss.inspector.threads_example_tour_dismissed",
213
+ threadsExampleTourCompleted: "oss.inspector.threads_example_tour_completed",
214
+ threadsExampleTourReopened: "oss.inspector.threads_example_tour_reopened",
215
+ memoriesTabClicked: "oss.inspector.memories_tab_clicked"
208
216
  };
209
217
  const TELEMETRY_INGEST_URL = "https://telemetry.copilotkit.ai/ingest";
210
218
  const TELEMETRY_DOCS_URL = "https://docs.copilotkit.ai/telemetry";
@@ -212,7 +220,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
212
220
  const PACKAGE_VERSION = version;
213
221
  const FETCH_TIMEOUT_MS = 3e3;
214
222
  function isThreadsTelemetryEvent(event) {
215
- return event === TELEMETRY_EVENTS.threadsTabClicked || event === TELEMETRY_EVENTS.threadsLockedViewed || event === TELEMETRY_EVENTS.threadsIntelligenceSignupClicked || event === TELEMETRY_EVENTS.threadsTalkToEngineerClicked || event === TELEMETRY_EVENTS.talkToEngineerClicked || event === TELEMETRY_EVENTS.threadsEmptyEnabledViewed || event === TELEMETRY_EVENTS.threadsEnabledViewed;
223
+ return event === TELEMETRY_EVENTS.threadsTabClicked || event === TELEMETRY_EVENTS.threadsLockedViewed || event === TELEMETRY_EVENTS.threadsIntelligenceSignupClicked || event === TELEMETRY_EVENTS.threadsTalkToEngineerClicked || event === TELEMETRY_EVENTS.talkToEngineerClicked || event === TELEMETRY_EVENTS.threadsEmptyEnabledViewed || event === TELEMETRY_EVENTS.threadsEnabledViewed || event === TELEMETRY_EVENTS.threadsExampleViewed || event === TELEMETRY_EVENTS.threadsExampleSelected || event === TELEMETRY_EVENTS.threadsExampleTourStarted || event === TELEMETRY_EVENTS.threadsExampleTourStepViewed || event === TELEMETRY_EVENTS.threadsExampleTourDismissed || event === TELEMETRY_EVENTS.threadsExampleTourCompleted || event === TELEMETRY_EVENTS.threadsExampleTourReopened || event === TELEMETRY_EVENTS.memoriesTabClicked;
216
224
  }
217
225
  function getRuntimeUrlType(runtimeUrl) {
218
226
  if (!runtimeUrl) return "missing";
@@ -291,6 +299,30 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
291
299
  function trackThreadsEnabledViewed(props) {
292
300
  track(TELEMETRY_EVENTS.threadsEnabledViewed, props);
293
301
  }
302
+ function trackThreadsExampleViewed(props) {
303
+ track(TELEMETRY_EVENTS.threadsExampleViewed, props);
304
+ }
305
+ function trackThreadsExampleSelected(props) {
306
+ track(TELEMETRY_EVENTS.threadsExampleSelected, props);
307
+ }
308
+ function trackThreadsExampleTourStarted(props) {
309
+ track(TELEMETRY_EVENTS.threadsExampleTourStarted, props);
310
+ }
311
+ function trackThreadsExampleTourStepViewed(props) {
312
+ track(TELEMETRY_EVENTS.threadsExampleTourStepViewed, props);
313
+ }
314
+ function trackThreadsExampleTourDismissed(props) {
315
+ track(TELEMETRY_EVENTS.threadsExampleTourDismissed, props);
316
+ }
317
+ function trackThreadsExampleTourCompleted(props) {
318
+ track(TELEMETRY_EVENTS.threadsExampleTourCompleted, props);
319
+ }
320
+ function trackThreadsExampleTourReopened(props) {
321
+ track(TELEMETRY_EVENTS.threadsExampleTourReopened, props);
322
+ }
323
+ function trackMemoriesTabClicked(props = {}) {
324
+ track(TELEMETRY_EVENTS.memoriesTabClicked, props);
325
+ }
294
326
  /**
295
327
  * Returns the inspector's anonymous distinct-ID for cross-domain
296
328
  * propagation onto outbound banner-CTA links, or `null` when the user
@@ -377,7 +409,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
377
409
  const MAX_AGENT_EVENTS = 200;
378
410
  const MAX_TOTAL_EVENTS = 500;
379
411
  const INTELLIGENCE_SIGNUP_URL = "https://go.copilotkit.ai/intelligence-signup";
412
+ const THREADS_INTELLIGENCE_SIGNIN_URL = "https://dashboard.operations.copilotkit.ai/sign-in";
380
413
  const TALK_TO_ENGINEER_URL = "https://www.copilotkit.ai/talk-to-an-engineer";
414
+ const THREADS_DOCS_URL = "https://docs.copilotkit.ai/threads";
415
+ const SELF_HOSTED_INTELLIGENCE_URL = "https://docs.copilotkit.ai/premium/self-hosting";
416
+ const THREADS_EXAMPLE_OVERVIEW_VIDEO_URL = "https://cdn.copilotkit.ai/corp-site/videos/copilotkit-generative-ui-agentic-frontend-demo.webm";
417
+ const THREADS_EXAMPLE_TOUR_STORAGE_KEY = "cpk:inspector:threads-example-tour:v1";
418
+ const THREADS_EXAMPLE_AGENT_ID = "threads-feature";
381
419
  const AGENT_EVENT_TYPES = [
382
420
  "RUN_STARTED",
383
421
  "RUN_FINISHED",
@@ -403,6 +441,201 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
403
441
  "ACTIVITY_SNAPSHOT",
404
442
  "ACTIVITY_DELTA"
405
443
  ];
444
+ const THREADS_EXAMPLE_THREADS = [
445
+ {
446
+ id: "example-realtime-sync",
447
+ name: "Realtime thread sync",
448
+ agentId: THREADS_EXAMPLE_AGENT_ID,
449
+ organizationId: "example-organization",
450
+ createdById: "example-user",
451
+ archived: false,
452
+ createdAt: "2026-07-08T16:00:00.000Z",
453
+ updatedAt: "2026-07-08T16:30:00.000Z",
454
+ isExample: true
455
+ },
456
+ {
457
+ id: "example-manage-history",
458
+ name: "Manage saved conversations",
459
+ agentId: THREADS_EXAMPLE_AGENT_ID,
460
+ organizationId: "example-organization",
461
+ createdById: "example-user",
462
+ archived: false,
463
+ createdAt: "2026-07-07T17:45:00.000Z",
464
+ updatedAt: "2026-07-07T18:15:00.000Z",
465
+ isExample: true
466
+ },
467
+ {
468
+ id: "example-inspect-runs",
469
+ name: "Inspect durable run history",
470
+ agentId: THREADS_EXAMPLE_AGENT_ID,
471
+ organizationId: "example-organization",
472
+ createdById: "example-user",
473
+ archived: false,
474
+ createdAt: "2026-07-06T20:15:00.000Z",
475
+ updatedAt: "2026-07-06T20:45:00.000Z",
476
+ isExample: true
477
+ }
478
+ ];
479
+ const THREADS_EXAMPLE_DETAILS = {
480
+ "example-realtime-sync": {
481
+ messages: [{
482
+ id: "example-sync-user",
483
+ role: "user",
484
+ content: "Resume the checkout support thread from yesterday."
485
+ }, {
486
+ id: "example-sync-assistant",
487
+ role: "assistant",
488
+ content: "I found the saved thread, restored the cart state, and continued from the latest user message."
489
+ }],
490
+ events: [
491
+ {
492
+ type: "RUN_STARTED",
493
+ timestamp: "2026-07-08T16:30:00.000Z",
494
+ payload: {
495
+ threadId: "example-realtime-sync",
496
+ agentId: THREADS_EXAMPLE_AGENT_ID
497
+ }
498
+ },
499
+ {
500
+ type: "MESSAGES_SNAPSHOT",
501
+ timestamp: "2026-07-08T16:30:01.000Z",
502
+ payload: {
503
+ messageCount: 6,
504
+ source: "thread-history"
505
+ }
506
+ },
507
+ {
508
+ type: "STATE_SNAPSHOT",
509
+ timestamp: "2026-07-08T16:30:02.000Z",
510
+ payload: {
511
+ cartId: "cart_demo_42",
512
+ checkoutStep: "shipping",
513
+ resumed: true
514
+ }
515
+ },
516
+ {
517
+ type: "RUN_FINISHED",
518
+ timestamp: "2026-07-08T16:30:04.000Z",
519
+ payload: { status: "completed" }
520
+ }
521
+ ],
522
+ state: {
523
+ cartId: "cart_demo_42",
524
+ checkoutStep: "shipping",
525
+ userIntent: "resume_previous_checkout",
526
+ persistedThread: true
527
+ }
528
+ },
529
+ "example-manage-history": {
530
+ messages: [{
531
+ id: "example-history-user",
532
+ role: "user",
533
+ content: "Rename this saved support conversation for the handoff."
534
+ }, {
535
+ id: "example-history-assistant",
536
+ role: "assistant",
537
+ content: "Renamed the thread and kept the prior messages available for the next session."
538
+ }],
539
+ events: [
540
+ {
541
+ type: "RUN_STARTED",
542
+ timestamp: "2026-07-07T18:15:00.000Z",
543
+ payload: {
544
+ threadId: "example-manage-history",
545
+ agentId: THREADS_EXAMPLE_AGENT_ID
546
+ }
547
+ },
548
+ {
549
+ type: "CUSTOM_EVENT",
550
+ timestamp: "2026-07-07T18:15:01.000Z",
551
+ payload: {
552
+ action: "thread_renamed",
553
+ previousName: "Untitled",
554
+ name: "Billing escalation handoff"
555
+ }
556
+ },
557
+ {
558
+ type: "RUN_FINISHED",
559
+ timestamp: "2026-07-07T18:15:03.000Z",
560
+ payload: { status: "completed" }
561
+ }
562
+ ],
563
+ state: {
564
+ name: "Billing escalation handoff",
565
+ savedMessages: 14,
566
+ lastHandoff: "support-team"
567
+ }
568
+ },
569
+ "example-inspect-runs": {
570
+ messages: [{
571
+ id: "example-inspect-user",
572
+ role: "user",
573
+ content: "Why did the assistant recommend the enterprise plan?"
574
+ }, {
575
+ id: "example-inspect-assistant",
576
+ role: "assistant",
577
+ content: "The recommendation came from the account size, SSO requirement, and audit-log constraint in state."
578
+ }],
579
+ events: [
580
+ {
581
+ type: "RUN_STARTED",
582
+ timestamp: "2026-07-06T20:45:00.000Z",
583
+ payload: {
584
+ threadId: "example-inspect-runs",
585
+ agentId: THREADS_EXAMPLE_AGENT_ID
586
+ }
587
+ },
588
+ {
589
+ type: "TOOL_CALL_START",
590
+ timestamp: "2026-07-06T20:45:01.000Z",
591
+ payload: {
592
+ toolCallId: "call_account_lookup",
593
+ toolName: "lookupAccount"
594
+ }
595
+ },
596
+ {
597
+ type: "TOOL_CALL_RESULT",
598
+ timestamp: "2026-07-06T20:45:02.000Z",
599
+ payload: {
600
+ toolCallId: "call_account_lookup",
601
+ seats: 220,
602
+ requiresSso: true
603
+ }
604
+ },
605
+ {
606
+ type: "RUN_FINISHED",
607
+ timestamp: "2026-07-06T20:45:04.000Z",
608
+ payload: { status: "completed" }
609
+ }
610
+ ],
611
+ state: {
612
+ accountTier: "growth",
613
+ seats: 220,
614
+ requiresSso: true,
615
+ auditLogsRequired: true
616
+ }
617
+ }
618
+ };
619
+ const THREADS_EXAMPLE_TOUR_STEPS = [
620
+ {
621
+ tab: "timeline",
622
+ label: "Timeline",
623
+ title: "Read the run as a story",
624
+ body: "The timeline turns messages, tool calls, state changes, and run markers into a scannable debugging trail."
625
+ },
626
+ {
627
+ tab: "raw-events",
628
+ label: "Raw AG-UI Events",
629
+ title: "Drop into the protocol payloads",
630
+ body: "Raw events show the exact AG-UI stream behind the timeline when you need to verify ordering or payload shape."
631
+ },
632
+ {
633
+ tab: "state",
634
+ label: "State",
635
+ title: "Check the durable state",
636
+ body: "The state tab shows the saved values that make a thread resumable across sessions."
637
+ }
638
+ ];
406
639
  function escapeHtml(s) {
407
640
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
408
641
  }
@@ -549,6 +782,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
549
782
  </div>
550
783
  <div class="cpk-tl__meta">
551
784
  <span class="cpk-tl__pill">${thread.agentId}</span>
785
+ ${thread.isExample ? lit.html`
786
+ <span class="cpk-tl__pill cpk-tl__pill--example">Example</span>
787
+ ` : lit.nothing}
552
788
  </div>
553
789
  </div>
554
790
  `;
@@ -731,6 +967,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
731
967
  color: #57575b;
732
968
  }
733
969
 
970
+ .cpk-tl__pill--example {
971
+ background: rgba(133, 236, 206, 0.22);
972
+ color: #189370;
973
+ }
974
+
734
975
  /* ── Empty state ── */
735
976
  .cpk-tl__empty {
736
977
  padding: 32px 16px;
@@ -857,6 +1098,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
857
1098
  }
858
1099
  this.maybeFetchTabData(id);
859
1100
  }
1101
+ selectTab(id) {
1102
+ this.activateTab(id);
1103
+ }
860
1104
  maybeFetchTabData(id) {
861
1105
  if (!this.threadId) return;
862
1106
  if ((id === "timeline" || id === "raw-events") && !this._eventsFetched) {
@@ -3004,201 +3248,558 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3004
3248
  text-align: right;
3005
3249
  }
3006
3250
  `;
3007
- var ɵCpkThreadDetails = class extends CpkThreadInspector {};
3008
- if (!customElements.get("cpk-thread-list")) customElements.define("cpk-thread-list", CpkThreadList);
3009
- if (!customElements.get(THREAD_INSPECTOR_TAG)) customElements.define(THREAD_INSPECTOR_TAG, CpkThreadInspector);
3010
- if (!customElements.get("cpk-thread-details")) customElements.define("cpk-thread-details", ɵCpkThreadDetails);
3011
- var WebInspectorElement = class extends lit.LitElement {
3251
+ var CpkMemoryList = class extends lit.LitElement {
3012
3252
  constructor(..._args3) {
3013
3253
  super(..._args3);
3014
- this._core = null;
3015
- this.coreSubscriber = null;
3016
- this.coreUnsubscribe = null;
3017
- this.runtimeStatus = null;
3018
- this.coreProperties = {};
3019
- this.lastCoreError = null;
3020
- this.agentSubscriptions = /* @__PURE__ */ new Map();
3021
- this.agentEvents = /* @__PURE__ */ new Map();
3022
- this.agentMessages = /* @__PURE__ */ new Map();
3023
- this.liveMessageVersion = /* @__PURE__ */ new Map();
3024
- this.agentStates = /* @__PURE__ */ new Map();
3025
- this.flattenedEvents = [];
3026
- this.eventCounter = 0;
3027
- this.contextStore = {};
3028
- this.pointerId = null;
3029
- this.dragStart = null;
3030
- this.dragOffset = {
3031
- x: 0,
3032
- y: 0
3033
- };
3034
- this.isDragging = false;
3035
- this.pointerContext = null;
3036
- this.isOpen = false;
3037
- this.draggedDuringInteraction = false;
3038
- this.ignoreNextButtonClick = false;
3039
- this.selectedMenu = "ag-ui-events";
3040
- this.selectedThreadId = null;
3041
- this.threadListWidth = 290;
3042
- this.threadDividerResizing = false;
3043
- this.threadDividerPointerId = -1;
3044
- this.threadDividerStartX = 0;
3045
- this.threadDividerStartWidth = 0;
3046
- this._threads = [];
3047
- this._threadStoreSubscriptions = /* @__PURE__ */ new Map();
3048
- this._threadsByAgent = /* @__PURE__ */ new Map();
3049
- this._threadsErrorByAgent = /* @__PURE__ */ new Map();
3050
- this._ownedThreadStores = /* @__PURE__ */ new Map();
3051
- this.contextMenuOpen = false;
3052
- this.dockMode = "floating";
3053
- this.previousBodyMargins = null;
3054
- this.transitionTimeoutId = null;
3055
- this.bodyTransitionTimeoutIds = /* @__PURE__ */ new Set();
3056
- this.pendingSelectedContext = null;
3057
- this.autoAttachCore = true;
3058
- this.attemptedAutoAttach = false;
3059
- this.cachedTools = [];
3060
- this.toolSignature = "";
3061
- this.eventFilterText = "";
3062
- this.eventTypeFilter = "all";
3063
- this.evtColWidths = [
3064
- 100,
3065
- 80,
3066
- 150
3067
- ];
3068
- this._evtColResize = null;
3069
- this.announcementHtml = null;
3070
- this.announcementTimestamp = null;
3071
- this.announcementPreviewText = null;
3072
- this.announcementCtaLabel = null;
3073
- this.hasUnseenAnnouncement = false;
3074
- this.announcementLoaded = false;
3075
- this.announcementPromise = null;
3076
- this.showAnnouncementPreview = true;
3077
- this.announcementExpanded = false;
3078
- this.viewedBannerTimestamps = /* @__PURE__ */ new Set();
3079
- this.pendingBannerViewed = null;
3080
- this.clickedBannerIds = /* @__PURE__ */ new Set();
3081
- this.viewedThreadsTelemetryStates = /* @__PURE__ */ new Set();
3082
- this.contextState = {
3083
- button: {
3084
- position: {
3085
- x: EDGE_MARGIN,
3086
- y: EDGE_MARGIN
3087
- },
3088
- size: { ...DEFAULT_BUTTON_SIZE },
3089
- anchor: {
3090
- horizontal: "right",
3091
- vertical: "top"
3092
- },
3093
- anchorOffset: {
3094
- x: EDGE_MARGIN,
3095
- y: EDGE_MARGIN
3096
- }
3097
- },
3098
- window: {
3099
- position: {
3100
- x: EDGE_MARGIN,
3101
- y: EDGE_MARGIN
3102
- },
3103
- size: { ...DEFAULT_WINDOW_SIZE },
3104
- anchor: {
3105
- horizontal: "right",
3106
- vertical: "top"
3107
- },
3108
- anchorOffset: {
3109
- x: EDGE_MARGIN,
3110
- y: EDGE_MARGIN
3111
- }
3112
- }
3113
- };
3114
- this.hasCustomPosition = {
3115
- button: false,
3116
- window: false
3117
- };
3118
- this.resizePointerId = null;
3119
- this.resizeStart = null;
3120
- this.resizeInitialSize = null;
3121
- this.isResizing = false;
3122
- this.customTabIcons = { threads: `<svg class="h-3.5 w-3.5" width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.04167 15C8.29167 15 7.65972 14.7431 7.14583 14.2292C6.63194 13.7153 6.375 13.0972 6.375 12.375C6.375 11.3194 6.80208 10.3646 7.65625 9.51042C8.51042 8.65625 9.57639 8.125 10.8542 7.91667C10.8125 7.41667 10.6875 7.03819 10.4792 6.78125C10.2708 6.52431 9.98611 6.39583 9.625 6.39583C9.20833 6.39583 8.75694 6.56944 8.27083 6.91667C7.78472 7.26389 7.20833 7.83333 6.54167 8.625C5.45833 9.91667 4.66319 10.7569 4.15625 11.1458C3.64931 11.5347 3.10417 11.7292 2.52083 11.7292C1.8125 11.7292 1.21528 11.4653 0.729167 10.9375C0.243056 10.4097 0 9.77083 0 9.02083C0 8.27083 0.163194 7.50347 0.489583 6.71875C0.815972 5.93403 1.36806 4.99306 2.14583 3.89583C2.40972 3.53472 2.60417 3.22917 2.72917 2.97917C2.85417 2.72917 2.91667 2.52778 2.91667 2.375C2.91667 2.27778 2.89931 2.20486 2.86458 2.15625C2.82986 2.10764 2.77778 2.08333 2.70833 2.08333C2.56944 2.08333 2.39583 2.17014 2.1875 2.34375C1.97917 2.51736 1.73611 2.78472 1.45833 3.14583L0 1.66667C0.444444 1.125 0.895833 0.711806 1.35417 0.427083C1.8125 0.142361 2.26389 0 2.70833 0C3.34722 0 3.88889 0.222222 4.33333 0.666667C4.77778 1.11111 5 1.66667 5 2.33333C5 2.73611 4.89583 3.18056 4.6875 3.66667C4.47917 4.15278 4.13194 4.73611 3.64583 5.41667C3.11806 6.16667 2.72569 6.82639 2.46875 7.39583C2.21181 7.96528 2.08333 8.46528 2.08333 8.89583C2.08333 9.13194 2.12153 9.31597 2.19792 9.44792C2.27431 9.57986 2.38194 9.64583 2.52083 9.64583C2.65972 9.64583 2.78125 9.60764 2.88542 9.53125C2.98958 9.45486 3.18056 9.27083 3.45833 8.97917C3.63889 8.78472 3.85417 8.54514 4.10417 8.26042C4.35417 7.97569 4.65972 7.625 5.02083 7.20833C5.89583 6.16667 6.6875 5.42361 7.39583 4.97917C8.10417 4.53472 8.84722 4.3125 9.625 4.3125C10.5556 4.3125 11.3194 4.625 11.9167 5.25C12.5139 5.875 12.8542 6.72917 12.9375 7.8125H15V9.89583H12.9375C12.8264 11.4514 12.4201 12.691 11.7188 13.6146C11.0174 14.5382 10.125 15 9.04167 15ZM9.08333 12.9167C9.52778 12.9167 9.90278 12.6632 10.2083 12.1562C10.5139 11.6493 10.7222 10.9444 10.8333 10.0417C10.1944 10.1944 9.63889 10.4965 9.16667 10.9479C8.69444 11.3993 8.45833 11.8472 8.45833 12.2917C8.45833 12.4861 8.51389 12.6389 8.625 12.75C8.73611 12.8611 8.88889 12.9167 9.08333 12.9167Z" fill="currentColor"/></svg>` };
3123
- this.handlePointerDown = (event) => {
3124
- var _target$setPointerCap;
3125
- if (this.dockMode !== "floating" && this.isOpen) return;
3126
- const target = event.currentTarget;
3127
- const context = (target === null || target === void 0 ? void 0 : target.dataset.dragContext) === "window" ? "window" : "button";
3128
- const eventTarget = event.target;
3129
- if (context === "window" && (eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.closest("button"))) return;
3130
- this.pointerContext = context;
3131
- this.measureContext(context);
3132
- event.preventDefault();
3133
- this.pointerId = event.pointerId;
3134
- this.dragStart = {
3135
- x: event.clientX,
3136
- y: event.clientY
3137
- };
3138
- const state = this.contextState[context];
3139
- this.dragOffset = {
3140
- x: event.clientX - state.position.x,
3141
- y: event.clientY - state.position.y
3142
- };
3143
- this.isDragging = false;
3144
- this.draggedDuringInteraction = false;
3145
- this.ignoreNextButtonClick = false;
3146
- target === null || target === void 0 || (_target$setPointerCap = target.setPointerCapture) === null || _target$setPointerCap === void 0 || _target$setPointerCap.call(target, this.pointerId);
3147
- };
3148
- this.handlePointerMove = (event) => {
3149
- if (this.pointerId !== event.pointerId || !this.dragStart || !this.pointerContext) return;
3150
- const distance = Math.hypot(event.clientX - this.dragStart.x, event.clientY - this.dragStart.y);
3151
- if (!this.isDragging && distance < DRAG_THRESHOLD) return;
3152
- event.preventDefault();
3153
- this.setDragging(true);
3154
- this.draggedDuringInteraction = true;
3155
- const desired = {
3156
- x: event.clientX - this.dragOffset.x,
3157
- y: event.clientY - this.dragOffset.y
3158
- };
3159
- const constrained = this.constrainToViewport(desired, this.pointerContext);
3160
- this.contextState[this.pointerContext].position = constrained;
3161
- this.updateHostTransform(this.pointerContext);
3162
- };
3163
- this.handlePointerUp = (event) => {
3164
- var _this$pointerContext;
3165
- if (this.pointerId !== event.pointerId) return;
3166
- const target = event.currentTarget;
3167
- if (target === null || target === void 0 ? void 0 : target.hasPointerCapture(this.pointerId)) target.releasePointerCapture(this.pointerId);
3168
- const context = (_this$pointerContext = this.pointerContext) !== null && _this$pointerContext !== void 0 ? _this$pointerContext : this.activeContext;
3169
- if (this.isDragging && this.pointerContext) {
3170
- event.preventDefault();
3171
- this.setDragging(false);
3172
- if (this.pointerContext === "window") {
3173
- this.updateAnchorFromPosition(this.pointerContext);
3174
- this.hasCustomPosition.window = true;
3175
- this.applyAnchorPosition(this.pointerContext);
3176
- } else if (this.pointerContext === "button") {
3177
- this.snapButtonToCorner();
3178
- this.hasCustomPosition.button = true;
3179
- if (this.draggedDuringInteraction) this.ignoreNextButtonClick = true;
3180
- }
3181
- } else if (context === "button" && !this.isOpen && !this.draggedDuringInteraction) this.openInspector();
3182
- this.resetPointerTracking();
3254
+ this.memories = [];
3255
+ this.search = "";
3256
+ this.kind = "all";
3257
+ this.onSearchInput = (event) => {
3258
+ this.search = event.target.value;
3183
3259
  };
3184
- this.handlePointerCancel = (event) => {
3185
- if (this.pointerId !== event.pointerId) return;
3186
- const target = event.currentTarget;
3187
- if (target === null || target === void 0 ? void 0 : target.hasPointerCapture(this.pointerId)) target.releasePointerCapture(this.pointerId);
3188
- this.resetPointerTracking();
3260
+ this.onKindClick = (event) => {
3261
+ const seg = event.target.closest("[data-kind]");
3262
+ if (!seg) return;
3263
+ this.kind = seg.dataset["kind"];
3189
3264
  };
3190
- this.handleButtonClick = (event) => {
3191
- if (this.isDragging) {
3192
- event.preventDefault();
3193
- return;
3194
- }
3195
- if (this.ignoreNextButtonClick) {
3196
- event.preventDefault();
3197
- this.ignoreNextButtonClick = false;
3198
- return;
3199
- }
3200
- if (!this.isOpen) {
3201
- event.preventDefault();
3265
+ }
3266
+ /** Memories that pass the current text search (before kind filter). */
3267
+ get searchFiltered() {
3268
+ const q = this.search.trim().toLowerCase();
3269
+ if (!q) return this.memories;
3270
+ return this.memories.filter((m) => m.content.toLowerCase().includes(q));
3271
+ }
3272
+ /** Memories that pass both search and kind filter. */
3273
+ get filtered() {
3274
+ const searched = this.searchFiltered;
3275
+ if (this.kind === "all") return searched;
3276
+ return searched.filter((m) => m.kind === this.kind);
3277
+ }
3278
+ /** Count of search-filtered memories for a given kind (for segment labels). */
3279
+ countForKind(kind) {
3280
+ return this.searchFiltered.filter((m) => m.kind === kind).length;
3281
+ }
3282
+ /** Truncate an id to first-4…last-4 characters. */
3283
+ shortId(id) {
3284
+ if (id.length <= 12) return id;
3285
+ return `${id.slice(0, 4)}…${id.slice(-4)}`;
3286
+ }
3287
+ renderKindBadge(kind) {
3288
+ return lit.html`<span class="cpk-ml__kind-badge cpk-ml__kind-badge--${kind}"
3289
+ >${kind}</span
3290
+ >`;
3291
+ }
3292
+ renderEmpty() {
3293
+ const q = this.search.trim();
3294
+ if (this.memories.length === 0) return lit.html`
3295
+ <div class="cpk-ml__empty">
3296
+ <svg
3297
+ width="24"
3298
+ height="24"
3299
+ viewBox="0 0 24 24"
3300
+ fill="none"
3301
+ stroke="currentColor"
3302
+ stroke-width="1.5"
3303
+ stroke-linecap="round"
3304
+ stroke-linejoin="round"
3305
+ class="cpk-ml__empty-icon"
3306
+ >
3307
+ <ellipse cx="12" cy="5" rx="9" ry="3" />
3308
+ <path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3" />
3309
+ <path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" />
3310
+ </svg>
3311
+ No memories yet — tell the agent a durable fact and watch it appear.
3312
+ </div>
3313
+ `;
3314
+ if (q) return lit.html`
3315
+ <div class="cpk-ml__empty">
3316
+ No memories match &ldquo;${q}&rdquo;.
3317
+ </div>
3318
+ `;
3319
+ return lit.html`
3320
+ <div class="cpk-ml__empty">No ${this.kind} memories yet.</div>
3321
+ `;
3322
+ }
3323
+ render() {
3324
+ const filtered = this.filtered;
3325
+ return lit.html`
3326
+ <div class="cpk-ml">
3327
+ <!-- Search -->
3328
+ <div class="cpk-ml__search">
3329
+ <input
3330
+ type="text"
3331
+ placeholder="Search memories…"
3332
+ .value=${this.search}
3333
+ @input=${this.onSearchInput}
3334
+ class="cpk-ml__search-input"
3335
+ />
3336
+ </div>
3337
+
3338
+ <!-- Kind filter -->
3339
+ <div class="cpk-ml__filter" @click=${this.onKindClick}>
3340
+ <button
3341
+ class="cpk-ml__filter-seg ${this.kind === "all" ? "cpk-ml__filter-seg--active" : ""}"
3342
+ data-kind="all"
3343
+ >
3344
+ All<span class="cpk-ml__filter-count">${this.searchFiltered.length}</span>
3345
+ </button>
3346
+ ${[
3347
+ "topical",
3348
+ "episodic",
3349
+ "operational"
3350
+ ].map((k) => lit.html`
3351
+ <button
3352
+ class="cpk-ml__filter-seg ${this.kind === k ? "cpk-ml__filter-seg--active" : ""}"
3353
+ data-kind="${k}"
3354
+ >
3355
+ ${k}<span class="cpk-ml__filter-count">${this.countForKind(k)}</span>
3356
+ </button>
3357
+ `)}
3358
+ </div>
3359
+
3360
+ <!-- Memory list -->
3361
+ <div class="cpk-ml__list">
3362
+ ${filtered.map((m) => lit.html`
3363
+ <div class="cpk-ml__card">
3364
+ <div class="cpk-ml__card-badges">
3365
+ ${this.renderKindBadge(m.kind)}
3366
+ <span class="cpk-ml__scope-badge">${m.scope}</span>
3367
+ </div>
3368
+ <div class="cpk-ml__content">${m.content}</div>
3369
+ <div class="cpk-ml__footer">
3370
+ <span class="cpk-ml__footer-threads"
3371
+ >${m.sourceThreadIds.length} source thread${m.sourceThreadIds.length === 1 ? "" : "s"}</span
3372
+ >
3373
+ <span class="cpk-ml__footer-id">${this.shortId(m.id)}</span>
3374
+ </div>
3375
+ </div>
3376
+ `)}
3377
+ ${filtered.length === 0 ? this.renderEmpty() : lit.nothing}
3378
+ </div>
3379
+ </div>
3380
+ `;
3381
+ }
3382
+ };
3383
+ CpkMemoryList.properties = {
3384
+ memories: { attribute: false },
3385
+ search: { state: true },
3386
+ kind: { state: true }
3387
+ };
3388
+ CpkMemoryList.styles = lit.css`
3389
+ @import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600&family=Spline+Sans+Mono:wght@400;500&display=swap");
3390
+
3391
+ :host {
3392
+ display: flex;
3393
+ flex-direction: column;
3394
+ height: 100%;
3395
+ overflow: hidden;
3396
+ }
3397
+
3398
+ .cpk-ml {
3399
+ font-family: "Plus Jakarta Sans", sans-serif;
3400
+ display: flex;
3401
+ flex-direction: column;
3402
+ height: 100%;
3403
+ overflow: hidden;
3404
+ background: #f7f7f9;
3405
+ }
3406
+
3407
+ /* ── Search ── */
3408
+ .cpk-ml__search {
3409
+ padding: 10px 12px;
3410
+ border-bottom: 1px solid #dbdbe5;
3411
+ flex-shrink: 0;
3412
+ }
3413
+
3414
+ .cpk-ml__search-input {
3415
+ width: 100%;
3416
+ box-sizing: border-box;
3417
+ font-family: "Plus Jakarta Sans", sans-serif;
3418
+ font-size: 12px;
3419
+ padding: 7px 10px;
3420
+ border-radius: 6px;
3421
+ border: 1px solid #dbdbe5;
3422
+ background: #ffffff;
3423
+ color: #010507;
3424
+ outline: none;
3425
+ transition: border-color 0.15s;
3426
+ }
3427
+
3428
+ .cpk-ml__search-input:focus {
3429
+ border-color: #bec2ff;
3430
+ }
3431
+
3432
+ /* ── Kind filter ── */
3433
+ .cpk-ml__filter {
3434
+ display: flex;
3435
+ gap: 4px;
3436
+ padding: 8px 12px;
3437
+ border-bottom: 1px solid #dbdbe5;
3438
+ flex-shrink: 0;
3439
+ flex-wrap: wrap;
3440
+ }
3441
+
3442
+ .cpk-ml__filter-seg {
3443
+ font-family: "Plus Jakarta Sans", sans-serif;
3444
+ font-size: 11px;
3445
+ font-weight: 500;
3446
+ padding: 3px 9px;
3447
+ border-radius: 5px;
3448
+ border: 1px solid #dbdbe5;
3449
+ background: #ffffff;
3450
+ color: #57575b;
3451
+ cursor: pointer;
3452
+ transition:
3453
+ background 0.1s,
3454
+ border-color 0.1s,
3455
+ color 0.1s;
3456
+ user-select: none;
3457
+ }
3458
+
3459
+ .cpk-ml__filter-seg:hover {
3460
+ background: #f0f0f5;
3461
+ }
3462
+
3463
+ .cpk-ml__filter-seg--active {
3464
+ background: #bec2ff1a;
3465
+ border-color: #bec2ff;
3466
+ color: #010507;
3467
+ }
3468
+
3469
+ .cpk-ml__filter-count {
3470
+ font-family: "Spline Sans Mono", monospace;
3471
+ font-size: 9px;
3472
+ margin-left: 4px;
3473
+ color: #838389;
3474
+ }
3475
+
3476
+ /* ── List ── */
3477
+ .cpk-ml__list {
3478
+ flex: 1;
3479
+ overflow-y: auto;
3480
+ padding: 8px 12px;
3481
+ display: flex;
3482
+ flex-direction: column;
3483
+ gap: 8px;
3484
+ }
3485
+
3486
+ /* ── Card ── */
3487
+ .cpk-ml__card {
3488
+ background: #ffffff;
3489
+ border: 1px solid #e9e9ef;
3490
+ border-radius: 8px;
3491
+ padding: 10px 12px;
3492
+ display: flex;
3493
+ flex-direction: column;
3494
+ gap: 6px;
3495
+ }
3496
+
3497
+ .cpk-ml__card-badges {
3498
+ display: flex;
3499
+ gap: 6px;
3500
+ align-items: center;
3501
+ flex-wrap: wrap;
3502
+ }
3503
+
3504
+ /* Kind badge — color per kind */
3505
+ .cpk-ml__kind-badge {
3506
+ font-family: "Spline Sans Mono", monospace;
3507
+ font-size: 9px;
3508
+ padding: 1px 7px;
3509
+ border-radius: 4px;
3510
+ text-transform: uppercase;
3511
+ font-weight: 500;
3512
+ white-space: nowrap;
3513
+ }
3514
+
3515
+ .cpk-ml__kind-badge--topical {
3516
+ background: #eee6fe;
3517
+ color: #57575b;
3518
+ }
3519
+
3520
+ .cpk-ml__kind-badge--episodic {
3521
+ background: #e6f4fe;
3522
+ color: #2d5f80;
3523
+ }
3524
+
3525
+ .cpk-ml__kind-badge--operational {
3526
+ background: #e6feee;
3527
+ color: #2d6645;
3528
+ }
3529
+
3530
+ /* Scope badge */
3531
+ .cpk-ml__scope-badge {
3532
+ font-family: "Spline Sans Mono", monospace;
3533
+ font-size: 9px;
3534
+ padding: 1px 7px;
3535
+ border-radius: 4px;
3536
+ text-transform: uppercase;
3537
+ font-weight: 500;
3538
+ white-space: nowrap;
3539
+ background: #f0f0f5;
3540
+ color: #838389;
3541
+ }
3542
+
3543
+ /* Content */
3544
+ .cpk-ml__content {
3545
+ font-size: 12px;
3546
+ color: #010507;
3547
+ line-height: 1.5;
3548
+ word-break: break-word;
3549
+ }
3550
+
3551
+ /* Footer */
3552
+ .cpk-ml__footer {
3553
+ display: flex;
3554
+ align-items: center;
3555
+ justify-content: space-between;
3556
+ gap: 8px;
3557
+ margin-top: 2px;
3558
+ }
3559
+
3560
+ .cpk-ml__footer-threads {
3561
+ font-size: 10px;
3562
+ color: #838389;
3563
+ }
3564
+
3565
+ .cpk-ml__footer-id {
3566
+ font-family: "Spline Sans Mono", monospace;
3567
+ font-size: 9px;
3568
+ color: #c0c0c8;
3569
+ }
3570
+
3571
+ /* ── Empty state ── */
3572
+ .cpk-ml__empty {
3573
+ padding: 32px 16px;
3574
+ text-align: center;
3575
+ color: #838389;
3576
+ font-size: 12px;
3577
+ display: flex;
3578
+ flex-direction: column;
3579
+ align-items: center;
3580
+ gap: 8px;
3581
+ }
3582
+
3583
+ .cpk-ml__empty-icon {
3584
+ color: #c0c0c8;
3585
+ }
3586
+ `;
3587
+ var ɵCpkThreadDetails = class extends CpkThreadInspector {};
3588
+ if (!customElements.get("cpk-thread-list")) customElements.define("cpk-thread-list", CpkThreadList);
3589
+ if (!customElements.get(THREAD_INSPECTOR_TAG)) customElements.define(THREAD_INSPECTOR_TAG, CpkThreadInspector);
3590
+ if (!customElements.get("cpk-thread-details")) customElements.define("cpk-thread-details", ɵCpkThreadDetails);
3591
+ if (!customElements.get("cpk-memory-list")) customElements.define("cpk-memory-list", CpkMemoryList);
3592
+ var WebInspectorElement = class extends lit.LitElement {
3593
+ constructor(..._args4) {
3594
+ super(..._args4);
3595
+ this._core = null;
3596
+ this.coreSubscriber = null;
3597
+ this.coreUnsubscribe = null;
3598
+ this._memories = [];
3599
+ this._memoriesLoading = false;
3600
+ this._memoriesError = null;
3601
+ this._memoriesAvailable = true;
3602
+ this._memoriesRealtimeStatus = "connecting";
3603
+ this._memoryUnsub = null;
3604
+ this._memorySubscribed = false;
3605
+ this._memoryStoreUnsupported = false;
3606
+ this.runtimeStatus = null;
3607
+ this.coreProperties = {};
3608
+ this.lastCoreError = null;
3609
+ this.agentSubscriptions = /* @__PURE__ */ new Map();
3610
+ this.agentEvents = /* @__PURE__ */ new Map();
3611
+ this.agentMessages = /* @__PURE__ */ new Map();
3612
+ this.liveMessageVersion = /* @__PURE__ */ new Map();
3613
+ this.agentStates = /* @__PURE__ */ new Map();
3614
+ this.flattenedEvents = [];
3615
+ this.eventCounter = 0;
3616
+ this.contextStore = {};
3617
+ this.pointerId = null;
3618
+ this.dragStart = null;
3619
+ this.dragOffset = {
3620
+ x: 0,
3621
+ y: 0
3622
+ };
3623
+ this.isDragging = false;
3624
+ this.pointerContext = null;
3625
+ this.isOpen = false;
3626
+ this.draggedDuringInteraction = false;
3627
+ this.ignoreNextButtonClick = false;
3628
+ this.selectedMenu = "ag-ui-events";
3629
+ this.selectedThreadId = null;
3630
+ this.threadListWidth = 290;
3631
+ this.threadDividerResizing = false;
3632
+ this.threadDividerPointerId = -1;
3633
+ this.threadDividerStartX = 0;
3634
+ this.threadDividerStartWidth = 0;
3635
+ this._threads = [];
3636
+ this._threadStoreSubscriptions = /* @__PURE__ */ new Map();
3637
+ this._threadsByAgent = /* @__PURE__ */ new Map();
3638
+ this._threadsErrorByAgent = /* @__PURE__ */ new Map();
3639
+ this._ownedThreadStores = /* @__PURE__ */ new Map();
3640
+ this.contextMenuOpen = false;
3641
+ this.dockMode = "floating";
3642
+ this.previousBodyMargins = null;
3643
+ this.transitionTimeoutId = null;
3644
+ this.bodyTransitionTimeoutIds = /* @__PURE__ */ new Set();
3645
+ this.pendingSelectedContext = null;
3646
+ this.autoAttachCore = true;
3647
+ this.attemptedAutoAttach = false;
3648
+ this.cachedTools = [];
3649
+ this.toolSignature = "";
3650
+ this.eventFilterText = "";
3651
+ this.eventTypeFilter = "all";
3652
+ this.evtColWidths = [
3653
+ 100,
3654
+ 80,
3655
+ 150
3656
+ ];
3657
+ this._evtColResize = null;
3658
+ this.announcementHtml = null;
3659
+ this.announcementTimestamp = null;
3660
+ this.announcementPreviewText = null;
3661
+ this.announcementCtaLabel = null;
3662
+ this.hasUnseenAnnouncement = false;
3663
+ this.announcementLoaded = false;
3664
+ this.announcementPromise = null;
3665
+ this.showAnnouncementPreview = true;
3666
+ this.announcementExpanded = false;
3667
+ this.viewedBannerTimestamps = /* @__PURE__ */ new Set();
3668
+ this.pendingBannerViewed = null;
3669
+ this.clickedBannerIds = /* @__PURE__ */ new Set();
3670
+ this.viewedThreadsTelemetryStates = /* @__PURE__ */ new Set();
3671
+ this.viewedExampleThreadIds = /* @__PURE__ */ new Set();
3672
+ this.selectedExampleThreadIds = /* @__PURE__ */ new Set();
3673
+ this.viewedExampleTourSteps = /* @__PURE__ */ new Set();
3674
+ this.exampleThreadProviders = /* @__PURE__ */ new Map();
3675
+ this.exampleTourDismissed = false;
3676
+ this.exampleTourActive = false;
3677
+ this.exampleTourStep = 0;
3678
+ this.exampleTourAutoShown = false;
3679
+ this.threadsExampleOverviewVideoShouldLoad = false;
3680
+ this.threadsExampleOverviewVideoReady = false;
3681
+ this.threadsExampleOverviewVideoLoadTimer = null;
3682
+ this.threadsExampleOverviewVideoIdleCallbackId = null;
3683
+ this.contextState = {
3684
+ button: {
3685
+ position: {
3686
+ x: EDGE_MARGIN,
3687
+ y: EDGE_MARGIN
3688
+ },
3689
+ size: { ...DEFAULT_BUTTON_SIZE },
3690
+ anchor: {
3691
+ horizontal: "right",
3692
+ vertical: "top"
3693
+ },
3694
+ anchorOffset: {
3695
+ x: EDGE_MARGIN,
3696
+ y: EDGE_MARGIN
3697
+ }
3698
+ },
3699
+ window: {
3700
+ position: {
3701
+ x: EDGE_MARGIN,
3702
+ y: EDGE_MARGIN
3703
+ },
3704
+ size: { ...DEFAULT_WINDOW_SIZE },
3705
+ anchor: {
3706
+ horizontal: "right",
3707
+ vertical: "top"
3708
+ },
3709
+ anchorOffset: {
3710
+ x: EDGE_MARGIN,
3711
+ y: EDGE_MARGIN
3712
+ }
3713
+ }
3714
+ };
3715
+ this.hasCustomPosition = {
3716
+ button: false,
3717
+ window: false
3718
+ };
3719
+ this.resizePointerId = null;
3720
+ this.resizeStart = null;
3721
+ this.resizeInitialSize = null;
3722
+ this.isResizing = false;
3723
+ this.customTabIcons = { threads: `<svg class="h-3.5 w-3.5" width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.04167 15C8.29167 15 7.65972 14.7431 7.14583 14.2292C6.63194 13.7153 6.375 13.0972 6.375 12.375C6.375 11.3194 6.80208 10.3646 7.65625 9.51042C8.51042 8.65625 9.57639 8.125 10.8542 7.91667C10.8125 7.41667 10.6875 7.03819 10.4792 6.78125C10.2708 6.52431 9.98611 6.39583 9.625 6.39583C9.20833 6.39583 8.75694 6.56944 8.27083 6.91667C7.78472 7.26389 7.20833 7.83333 6.54167 8.625C5.45833 9.91667 4.66319 10.7569 4.15625 11.1458C3.64931 11.5347 3.10417 11.7292 2.52083 11.7292C1.8125 11.7292 1.21528 11.4653 0.729167 10.9375C0.243056 10.4097 0 9.77083 0 9.02083C0 8.27083 0.163194 7.50347 0.489583 6.71875C0.815972 5.93403 1.36806 4.99306 2.14583 3.89583C2.40972 3.53472 2.60417 3.22917 2.72917 2.97917C2.85417 2.72917 2.91667 2.52778 2.91667 2.375C2.91667 2.27778 2.89931 2.20486 2.86458 2.15625C2.82986 2.10764 2.77778 2.08333 2.70833 2.08333C2.56944 2.08333 2.39583 2.17014 2.1875 2.34375C1.97917 2.51736 1.73611 2.78472 1.45833 3.14583L0 1.66667C0.444444 1.125 0.895833 0.711806 1.35417 0.427083C1.8125 0.142361 2.26389 0 2.70833 0C3.34722 0 3.88889 0.222222 4.33333 0.666667C4.77778 1.11111 5 1.66667 5 2.33333C5 2.73611 4.89583 3.18056 4.6875 3.66667C4.47917 4.15278 4.13194 4.73611 3.64583 5.41667C3.11806 6.16667 2.72569 6.82639 2.46875 7.39583C2.21181 7.96528 2.08333 8.46528 2.08333 8.89583C2.08333 9.13194 2.12153 9.31597 2.19792 9.44792C2.27431 9.57986 2.38194 9.64583 2.52083 9.64583C2.65972 9.64583 2.78125 9.60764 2.88542 9.53125C2.98958 9.45486 3.18056 9.27083 3.45833 8.97917C3.63889 8.78472 3.85417 8.54514 4.10417 8.26042C4.35417 7.97569 4.65972 7.625 5.02083 7.20833C5.89583 6.16667 6.6875 5.42361 7.39583 4.97917C8.10417 4.53472 8.84722 4.3125 9.625 4.3125C10.5556 4.3125 11.3194 4.625 11.9167 5.25C12.5139 5.875 12.8542 6.72917 12.9375 7.8125H15V9.89583H12.9375C12.8264 11.4514 12.4201 12.691 11.7188 13.6146C11.0174 14.5382 10.125 15 9.04167 15ZM9.08333 12.9167C9.52778 12.9167 9.90278 12.6632 10.2083 12.1562C10.5139 11.6493 10.7222 10.9444 10.8333 10.0417C10.1944 10.1944 9.63889 10.4965 9.16667 10.9479C8.69444 11.3993 8.45833 11.8472 8.45833 12.2917C8.45833 12.4861 8.51389 12.6389 8.625 12.75C8.73611 12.8611 8.88889 12.9167 9.08333 12.9167Z" fill="currentColor"/></svg>` };
3724
+ this.handlePointerDown = (event) => {
3725
+ var _target$setPointerCap;
3726
+ if (this.dockMode !== "floating" && this.isOpen) return;
3727
+ const target = event.currentTarget;
3728
+ const context = (target === null || target === void 0 ? void 0 : target.dataset.dragContext) === "window" ? "window" : "button";
3729
+ const eventTarget = event.target;
3730
+ if (context === "window" && (eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.closest("button"))) return;
3731
+ this.pointerContext = context;
3732
+ this.measureContext(context);
3733
+ event.preventDefault();
3734
+ this.pointerId = event.pointerId;
3735
+ this.dragStart = {
3736
+ x: event.clientX,
3737
+ y: event.clientY
3738
+ };
3739
+ const state = this.contextState[context];
3740
+ this.dragOffset = {
3741
+ x: event.clientX - state.position.x,
3742
+ y: event.clientY - state.position.y
3743
+ };
3744
+ this.isDragging = false;
3745
+ this.draggedDuringInteraction = false;
3746
+ this.ignoreNextButtonClick = false;
3747
+ target === null || target === void 0 || (_target$setPointerCap = target.setPointerCapture) === null || _target$setPointerCap === void 0 || _target$setPointerCap.call(target, this.pointerId);
3748
+ };
3749
+ this.handlePointerMove = (event) => {
3750
+ if (this.pointerId !== event.pointerId || !this.dragStart || !this.pointerContext) return;
3751
+ const distance = Math.hypot(event.clientX - this.dragStart.x, event.clientY - this.dragStart.y);
3752
+ if (!this.isDragging && distance < DRAG_THRESHOLD) return;
3753
+ event.preventDefault();
3754
+ this.setDragging(true);
3755
+ this.draggedDuringInteraction = true;
3756
+ const desired = {
3757
+ x: event.clientX - this.dragOffset.x,
3758
+ y: event.clientY - this.dragOffset.y
3759
+ };
3760
+ const constrained = this.constrainToViewport(desired, this.pointerContext);
3761
+ this.contextState[this.pointerContext].position = constrained;
3762
+ this.updateHostTransform(this.pointerContext);
3763
+ };
3764
+ this.handlePointerUp = (event) => {
3765
+ var _this$pointerContext;
3766
+ if (this.pointerId !== event.pointerId) return;
3767
+ const target = event.currentTarget;
3768
+ if (target === null || target === void 0 ? void 0 : target.hasPointerCapture(this.pointerId)) target.releasePointerCapture(this.pointerId);
3769
+ const context = (_this$pointerContext = this.pointerContext) !== null && _this$pointerContext !== void 0 ? _this$pointerContext : this.activeContext;
3770
+ if (this.isDragging && this.pointerContext) {
3771
+ event.preventDefault();
3772
+ this.setDragging(false);
3773
+ if (this.pointerContext === "window") {
3774
+ this.updateAnchorFromPosition(this.pointerContext);
3775
+ this.hasCustomPosition.window = true;
3776
+ this.applyAnchorPosition(this.pointerContext);
3777
+ } else if (this.pointerContext === "button") {
3778
+ this.snapButtonToCorner();
3779
+ this.hasCustomPosition.button = true;
3780
+ if (this.draggedDuringInteraction) this.ignoreNextButtonClick = true;
3781
+ }
3782
+ } else if (context === "button" && !this.isOpen && !this.draggedDuringInteraction) this.openInspector();
3783
+ this.resetPointerTracking();
3784
+ };
3785
+ this.handlePointerCancel = (event) => {
3786
+ if (this.pointerId !== event.pointerId) return;
3787
+ const target = event.currentTarget;
3788
+ if (target === null || target === void 0 ? void 0 : target.hasPointerCapture(this.pointerId)) target.releasePointerCapture(this.pointerId);
3789
+ this.resetPointerTracking();
3790
+ };
3791
+ this.handleButtonClick = (event) => {
3792
+ if (this.isDragging) {
3793
+ event.preventDefault();
3794
+ return;
3795
+ }
3796
+ if (this.ignoreNextButtonClick) {
3797
+ event.preventDefault();
3798
+ this.ignoreNextButtonClick = false;
3799
+ return;
3800
+ }
3801
+ if (!this.isOpen) {
3802
+ event.preventDefault();
3202
3803
  this.openInspector();
3203
3804
  }
3204
3805
  };
@@ -3332,6 +3933,10 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3332
3933
  if (target.hasPointerCapture(this.threadDividerPointerId)) target.releasePointerCapture(this.threadDividerPointerId);
3333
3934
  this.threadDividerResizing = false;
3334
3935
  };
3936
+ this.handleThreadsExampleOverviewVideoLoaded = () => {
3937
+ this.threadsExampleOverviewVideoReady = true;
3938
+ this.requestUpdate();
3939
+ };
3335
3940
  this.handleClearEvents = () => {
3336
3941
  if (this.selectedContext === "all-agents") {
3337
3942
  this.agentEvents.clear();
@@ -3431,6 +4036,11 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3431
4036
  key: "threads",
3432
4037
  label: "Threads",
3433
4038
  icon: "MessageSquare"
4039
+ },
4040
+ {
4041
+ key: "memories",
4042
+ label: "Learning",
4043
+ icon: "Brain"
3434
4044
  }
3435
4045
  ];
3436
4046
  }
@@ -3443,6 +4053,23 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3443
4053
  areThreadEndpointsAvailable() {
3444
4054
  return this.getThreadServiceStatus() !== "unavailable";
3445
4055
  }
4056
+ getActiveThreadsState() {
4057
+ var _this$_threadsByAgent;
4058
+ const displayThreads = this.selectedContext === "all-agents" ? this._threads : (_this$_threadsByAgent = this._threadsByAgent.get(this.selectedContext)) !== null && _this$_threadsByAgent !== void 0 ? _this$_threadsByAgent : [];
4059
+ let threadsErrorMessage = null;
4060
+ if (this.selectedContext === "all-agents") {
4061
+ var _firstError$message;
4062
+ const firstError = this._threadsErrorByAgent.values().next().value;
4063
+ threadsErrorMessage = (_firstError$message = firstError === null || firstError === void 0 ? void 0 : firstError.message) !== null && _firstError$message !== void 0 ? _firstError$message : null;
4064
+ } else {
4065
+ var _this$_threadsErrorBy, _this$_threadsErrorBy2;
4066
+ threadsErrorMessage = (_this$_threadsErrorBy = (_this$_threadsErrorBy2 = this._threadsErrorByAgent.get(this.selectedContext)) === null || _this$_threadsErrorBy2 === void 0 ? void 0 : _this$_threadsErrorBy2.message) !== null && _this$_threadsErrorBy !== void 0 ? _this$_threadsErrorBy : null;
4067
+ }
4068
+ return {
4069
+ displayThreads,
4070
+ threadsErrorMessage
4071
+ };
4072
+ }
3446
4073
  getThreadsTelemetryProps(extra = {}, options = {}) {
3447
4074
  var _this$core4, _this$core$licenseSta, _this$core5, _this$core$runtimeMod, _this$core6, _this$core7, _this$core$telemetryD, _this$core8;
3448
4075
  const distinctId = options.includeUrlAttribution && !((_this$core4 = this.core) === null || _this$core4 === void 0 ? void 0 : _this$core4.telemetryDisabled) ? getTelemetryDistinctIdForUrl() : null;
@@ -3458,12 +4085,33 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3458
4085
  ...extra
3459
4086
  };
3460
4087
  }
4088
+ getMemoriesTelemetryProps() {
4089
+ var _this$core9;
4090
+ const distinctId = !((_this$core9 = this.core) === null || _this$core9 === void 0 ? void 0 : _this$core9.telemetryDisabled) ? getTelemetryDistinctIdForUrl() : null;
4091
+ return {
4092
+ posthog_distinct_id: distinctId !== null && distinctId !== void 0 ? distinctId : void 0,
4093
+ memory_count: this._memories.length,
4094
+ available: this._memoriesAvailable
4095
+ };
4096
+ }
3461
4097
  getIntelligenceSignupUrl() {
3462
4098
  return this.appendRefParam(INTELLIGENCE_SIGNUP_URL, "cpk-inspector");
3463
4099
  }
4100
+ getThreadsIntelligenceSignupUrl() {
4101
+ return this.appendRefParam(THREADS_INTELLIGENCE_SIGNIN_URL, "cpk-inspector");
4102
+ }
3464
4103
  getTalkToEngineerUrl() {
3465
4104
  return this.appendRefParam(TALK_TO_ENGINEER_URL, "cpk-inspector-threads");
3466
4105
  }
4106
+ getThreadsTalkToEngineerUrl() {
4107
+ return this.appendRefParam(TALK_TO_ENGINEER_URL, "cpk-inspector-threads");
4108
+ }
4109
+ getThreadsDocsUrl() {
4110
+ return this.appendRefParam(THREADS_DOCS_URL, "cpk-inspector-threads");
4111
+ }
4112
+ getSelfHostedIntelligenceUrl() {
4113
+ return this.appendRefParam(SELF_HOSTED_INTELLIGENCE_URL, "cpk-inspector-threads");
4114
+ }
3467
4115
  subscribeToThreadStore(agentId, store) {
3468
4116
  if (!this.areThreadEndpointsAvailable()) return;
3469
4117
  if (this._threadStoreSubscriptions.has(agentId)) return;
@@ -3492,7 +4140,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3492
4140
  }
3493
4141
  autoSelectLatestThread() {
3494
4142
  if (this._threads.length === 0) return;
3495
- if (!(this.selectedThreadId != null && this._threads.some((t) => t.id === this.selectedThreadId))) this.selectedThreadId = this._threads[0].id;
4143
+ if (!(this.selectedThreadId != null && !this.isExampleThreadId(this.selectedThreadId) && this._threads.some((t) => t.id === this.selectedThreadId))) this.selectedThreadId = this._threads[0].id;
3496
4144
  }
3497
4145
  teardownThreadStoreSubscriptions() {
3498
4146
  for (const unsub of this._threadStoreSubscriptions.values()) unsub();
@@ -3502,9 +4150,9 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3502
4150
  this._threads = [];
3503
4151
  }
3504
4152
  ensureOwnedThreadStore(agentId) {
3505
- var _this$core9, _core$intelligence;
4153
+ var _this$core10, _core$intelligence;
3506
4154
  if (this._ownedThreadStores.has(agentId)) return;
3507
- if ((_this$core9 = this.core) === null || _this$core9 === void 0 ? void 0 : _this$core9.getThreadStore(agentId)) return;
4155
+ if ((_this$core10 = this.core) === null || _this$core10 === void 0 ? void 0 : _this$core10.getThreadStore(agentId)) return;
3508
4156
  const core = this.core;
3509
4157
  if (!(core === null || core === void 0 ? void 0 : core.runtimeUrl)) return;
3510
4158
  if (!this.areThreadEndpointsAvailable()) return;
@@ -3539,18 +4187,18 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3539
4187
  }
3540
4188
  }
3541
4189
  removeOwnedThreadStore(agentId) {
3542
- var _this$core10;
4190
+ var _this$core11;
3543
4191
  const store = this._ownedThreadStores.get(agentId);
3544
4192
  if (!store) return;
3545
4193
  store.stop();
3546
- (_this$core10 = this.core) === null || _this$core10 === void 0 || _this$core10.unregisterThreadStore(agentId);
4194
+ (_this$core11 = this.core) === null || _this$core11 === void 0 || _this$core11.unregisterThreadStore(agentId);
3547
4195
  this._ownedThreadStores.delete(agentId);
3548
4196
  }
3549
4197
  teardownOwnedThreadStores() {
3550
4198
  for (const [agentId, store] of this._ownedThreadStores) {
3551
- var _this$core11;
4199
+ var _this$core12;
3552
4200
  store.stop();
3553
- (_this$core11 = this.core) === null || _this$core11 === void 0 || _this$core11.unregisterThreadStore(agentId);
4201
+ (_this$core12 = this.core) === null || _this$core12 === void 0 || _this$core12.unregisterThreadStore(agentId);
3554
4202
  }
3555
4203
  this._ownedThreadStores.clear();
3556
4204
  }
@@ -3628,12 +4276,76 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(stateValue))}</p
3628
4276
  const threadStores = typeof core.getThreadStores === "function" ? core.getThreadStores() : {};
3629
4277
  for (const [agentId, store] of Object.entries(threadStores)) this.subscribeToThreadStore(agentId, store);
3630
4278
  if (core.context) this.contextStore = this.normalizeContextStore(core.context);
4279
+ if (this.selectedMenu === "memories") this.ensureMemorySubscription();
4280
+ }
4281
+ /**
4282
+ * Lazily subscribes to the singleton memory store the first time the user
4283
+ * activates the Memories tab. This is deferred out of `attachToCore` because
4284
+ * `core.getMemoryStore()` is what creates + starts the store and opens
4285
+ * realtime — doing it on attach would start memory for apps that never use
4286
+ * it. Idempotent: repeated tab activations are guarded by
4287
+ * `_memorySubscribed`. On an older @copilotkit/core without `getMemoryStore`,
4288
+ * records the unsupported state so the teaser can guide an SDK upgrade.
4289
+ */
4290
+ ensureMemorySubscription() {
4291
+ if (this._memorySubscribed) return;
4292
+ const core = this._core;
4293
+ if (!core) return;
4294
+ if (typeof core.getMemoryStore !== "function") {
4295
+ this._memoryStoreUnsupported = true;
4296
+ this._memoriesAvailable = false;
4297
+ this.requestUpdate();
4298
+ return;
4299
+ }
4300
+ this._memorySubscribed = true;
4301
+ this._memoryStoreUnsupported = false;
4302
+ const memoryStore = core.getMemoryStore();
4303
+ const ms = memoryStore.getState();
4304
+ this._memories = (0, _copilotkit_core.ɵselectMemories)(ms);
4305
+ this._memoriesLoading = (0, _copilotkit_core.ɵselectMemoriesIsLoading)(ms);
4306
+ this._memoriesError = (0, _copilotkit_core.ɵselectMemoriesError)(ms);
4307
+ this._memoriesAvailable = (0, _copilotkit_core.ɵselectMemoriesAvailable)(ms);
4308
+ this._memoriesRealtimeStatus = (0, _copilotkit_core.ɵselectMemoriesRealtimeStatus)(ms);
4309
+ const memSubs = [
4310
+ memoryStore.select(_copilotkit_core.ɵselectMemories).subscribe((v) => {
4311
+ this._memories = v;
4312
+ this.requestUpdate();
4313
+ }),
4314
+ memoryStore.select(_copilotkit_core.ɵselectMemoriesIsLoading).subscribe((v) => {
4315
+ this._memoriesLoading = v;
4316
+ this.requestUpdate();
4317
+ }),
4318
+ memoryStore.select(_copilotkit_core.ɵselectMemoriesError).subscribe((v) => {
4319
+ this._memoriesError = v;
4320
+ this.requestUpdate();
4321
+ }),
4322
+ memoryStore.select(_copilotkit_core.ɵselectMemoriesAvailable).subscribe((v) => {
4323
+ this._memoriesAvailable = v;
4324
+ this.requestUpdate();
4325
+ }),
4326
+ memoryStore.select(_copilotkit_core.ɵselectMemoriesRealtimeStatus).subscribe((v) => {
4327
+ this._memoriesRealtimeStatus = v;
4328
+ this.requestUpdate();
4329
+ })
4330
+ ];
4331
+ this._memoryUnsub = () => memSubs.forEach((s) => s.unsubscribe());
4332
+ this.requestUpdate();
3631
4333
  }
3632
4334
  detachFromCore() {
4335
+ var _this$_memoryUnsub;
3633
4336
  if (this.coreUnsubscribe) {
3634
4337
  this.coreUnsubscribe();
3635
4338
  this.coreUnsubscribe = null;
3636
4339
  }
4340
+ (_this$_memoryUnsub = this._memoryUnsub) === null || _this$_memoryUnsub === void 0 || _this$_memoryUnsub.call(this);
4341
+ this._memoryUnsub = null;
4342
+ this._memories = [];
4343
+ this._memoriesLoading = false;
4344
+ this._memoriesError = null;
4345
+ this._memoriesAvailable = true;
4346
+ this._memoriesRealtimeStatus = "connecting";
4347
+ this._memorySubscribed = false;
4348
+ this._memoryStoreUnsupported = false;
3637
4349
  this.coreSubscriber = null;
3638
4350
  this.runtimeStatus = null;
3639
4351
  this.lastCoreError = null;
@@ -4098,6 +4810,7 @@ ${argsString}</pre
4098
4810
  window.addEventListener("resize", this.handleResize);
4099
4811
  window.addEventListener("pointerdown", this.handleGlobalPointerDown);
4100
4812
  this.hydrateStateFromStorageEarly();
4813
+ this.exampleTourDismissed = this.readThreadsExampleTourDismissed();
4101
4814
  this.tryAutoAttachCore();
4102
4815
  this.ensureAnnouncementLoading();
4103
4816
  }
@@ -4123,6 +4836,14 @@ ${argsString}</pre
4123
4836
  clearTimeout(this.transitionTimeoutId);
4124
4837
  this.transitionTimeoutId = null;
4125
4838
  }
4839
+ if (this.threadsExampleOverviewVideoLoadTimer !== null) {
4840
+ window.clearTimeout(this.threadsExampleOverviewVideoLoadTimer);
4841
+ this.threadsExampleOverviewVideoLoadTimer = null;
4842
+ }
4843
+ if (this.threadsExampleOverviewVideoIdleCallbackId !== null && typeof window.cancelIdleCallback === "function") {
4844
+ window.cancelIdleCallback(this.threadsExampleOverviewVideoIdleCallbackId);
4845
+ this.threadsExampleOverviewVideoIdleCallbackId = null;
4846
+ }
4126
4847
  this.removeDockStyles(true);
4127
4848
  this.detachFromCore();
4128
4849
  }
@@ -4148,6 +4869,7 @@ ${argsString}</pre
4148
4869
  y: EDGE_MARGIN
4149
4870
  };
4150
4871
  this.hydrateStateFromStorage();
4872
+ if (this.selectedMenu === "memories") this.ensureMemorySubscription();
4151
4873
  if (this.isOpen && this.dockMode !== "floating") this.applyDockStyles(true);
4152
4874
  this.applyAnchorPosition("button");
4153
4875
  if (this.dockMode === "floating") if (this.hasCustomPosition.window) this.applyAnchorPosition("window");
@@ -4318,6 +5040,17 @@ ${argsString}</pre
4318
5040
  </button>
4319
5041
  `;
4320
5042
  })}
5043
+ ${this.selectedMenu === "threads" ? lit.html`
5044
+ <a
5045
+ href=${this.getThreadsTalkToEngineerUrl()}
5046
+ target="_blank"
5047
+ rel="noopener"
5048
+ style="margin-left:auto;display:inline-flex;align-items:center;gap:6px;border-radius:6px;border:1px solid #dbdbe5;background:#ffffff;padding:7px 10px;font-size:12px;font-weight:600;color:#57575b;text-decoration:none;"
5049
+ @click=${this.handleTalkToEngineerClick}
5050
+ >
5051
+ Talk to an Engineer
5052
+ </a>
5053
+ ` : lit.nothing}
4321
5054
  </div>
4322
5055
  </div>
4323
5056
  <div class="flex flex-1 flex-col overflow-hidden">
@@ -4846,12 +5579,13 @@ ${argsString}</pre
4846
5579
  if (this.selectedMenu === "frontend-tools") return this.renderToolsView();
4847
5580
  if (this.selectedMenu === "agent-context") return this.renderContextView();
4848
5581
  if (this.selectedMenu === "threads") return this.renderThreadsView();
5582
+ if (this.selectedMenu === "memories") return this.renderMemoriesView();
4849
5583
  if (this.selectedMenu === "settings") return this.renderSettingsPanel();
4850
5584
  return lit.nothing;
4851
5585
  }
4852
5586
  renderSettingsPanel() {
4853
- var _this$core$telemetryD2, _this$core12;
4854
- const optedOut = (_this$core$telemetryD2 = (_this$core12 = this.core) === null || _this$core12 === void 0 ? void 0 : _this$core12.telemetryDisabled) !== null && _this$core$telemetryD2 !== void 0 ? _this$core$telemetryD2 : false;
5587
+ var _this$core$telemetryD2, _this$core13;
5588
+ const optedOut = (_this$core$telemetryD2 = (_this$core13 = this.core) === null || _this$core13 === void 0 ? void 0 : _this$core13.telemetryDisabled) !== null && _this$core$telemetryD2 !== void 0 ? _this$core$telemetryD2 : false;
4855
5589
  return lit.html`
4856
5590
  <div class="flex h-full flex-col overflow-hidden">
4857
5591
  <div class="overflow-auto p-4">
@@ -4883,30 +5617,417 @@ ${argsString}</pre
4883
5617
  </div>
4884
5618
  `;
4885
5619
  }
4886
- trackBannerClickedOnce(opts) {
4887
- var _this$core13, _this$announcementCta;
4888
- if ((_this$core13 = this.core) === null || _this$core13 === void 0 ? void 0 : _this$core13.telemetryDisabled) return;
4889
- const id = this.announcementTimestamp;
4890
- if (!id) return;
4891
- const key = `${id}:${opts.cta}`;
4892
- if (this.clickedBannerIds.has(key)) return;
4893
- this.clickedBannerIds.add(key);
4894
- trackBannerClicked({
4895
- banner_id: id,
4896
- cta: opts.cta,
4897
- cta_label: (_this$announcementCta = this.announcementCtaLabel) !== null && _this$announcementCta !== void 0 ? _this$announcementCta : void 0
4898
- });
4899
- }
4900
- trackThreadsViewStateOnce(state, threadCount) {
4901
- var _this$core14;
4902
- if ((_this$core14 = this.core) === null || _this$core14 === void 0 ? void 0 : _this$core14.telemetryDisabled) return;
4903
- const key = `${state}:${this.getThreadServiceStatus()}`;
4904
- if (this.viewedThreadsTelemetryStates.has(key)) return;
4905
- this.viewedThreadsTelemetryStates.add(key);
4906
- const props = this.getThreadsTelemetryProps({ thread_count: threadCount });
4907
- if (state === "locked") trackThreadsLockedViewed(props);
4908
- else if (state === "empty_enabled") trackThreadsEmptyEnabledViewed(props);
4909
- else trackThreadsEnabledViewed(props);
5620
+ trackBannerClickedOnce(opts) {
5621
+ var _this$core14, _this$announcementCta;
5622
+ if ((_this$core14 = this.core) === null || _this$core14 === void 0 ? void 0 : _this$core14.telemetryDisabled) return;
5623
+ const id = this.announcementTimestamp;
5624
+ if (!id) return;
5625
+ const key = `${id}:${opts.cta}`;
5626
+ if (this.clickedBannerIds.has(key)) return;
5627
+ this.clickedBannerIds.add(key);
5628
+ trackBannerClicked({
5629
+ banner_id: id,
5630
+ cta: opts.cta,
5631
+ cta_label: (_this$announcementCta = this.announcementCtaLabel) !== null && _this$announcementCta !== void 0 ? _this$announcementCta : void 0
5632
+ });
5633
+ }
5634
+ trackThreadsViewStateOnce(state, threadCount) {
5635
+ var _this$core15;
5636
+ if ((_this$core15 = this.core) === null || _this$core15 === void 0 ? void 0 : _this$core15.telemetryDisabled) return;
5637
+ const key = `${state}:${this.getThreadServiceStatus()}`;
5638
+ if (this.viewedThreadsTelemetryStates.has(key)) return;
5639
+ this.viewedThreadsTelemetryStates.add(key);
5640
+ const props = this.getThreadsTelemetryProps({ thread_count: threadCount });
5641
+ if (state === "locked") trackThreadsLockedViewed(props);
5642
+ else if (state === "empty_enabled") trackThreadsEmptyEnabledViewed(props);
5643
+ else trackThreadsEnabledViewed(props);
5644
+ }
5645
+ shouldRenderExampleThreads(displayThreads, threadsErrorMessage) {
5646
+ return this.areThreadEndpointsAvailable() && !threadsErrorMessage && displayThreads.length === 0;
5647
+ }
5648
+ getVisibleThreads(displayThreads, threadsErrorMessage) {
5649
+ return this.shouldRenderExampleThreads(displayThreads, threadsErrorMessage) ? THREADS_EXAMPLE_THREADS : displayThreads;
5650
+ }
5651
+ isExampleThreadId(threadId) {
5652
+ return THREADS_EXAMPLE_THREADS.some((thread) => thread.id === threadId);
5653
+ }
5654
+ getExampleThreadProvider(threadId) {
5655
+ const cached = this.exampleThreadProviders.get(threadId);
5656
+ if (cached) return cached;
5657
+ const thread = THREADS_EXAMPLE_THREADS.find((item) => item.id === threadId);
5658
+ const details = THREADS_EXAMPLE_DETAILS[threadId];
5659
+ const provider = {
5660
+ getThreadMetadata: async () => thread ? {
5661
+ id: thread.id,
5662
+ name: thread.name,
5663
+ agentId: thread.agentId,
5664
+ endUserId: "example-user",
5665
+ status: "completed",
5666
+ updatedAt: thread.updatedAt
5667
+ } : null,
5668
+ getMessages: async () => {
5669
+ var _details$messages;
5670
+ return (_details$messages = details === null || details === void 0 ? void 0 : details.messages) !== null && _details$messages !== void 0 ? _details$messages : [];
5671
+ },
5672
+ getEvents: async () => {
5673
+ var _details$events;
5674
+ return (_details$events = details === null || details === void 0 ? void 0 : details.events) !== null && _details$events !== void 0 ? _details$events : [];
5675
+ },
5676
+ getState: async () => {
5677
+ var _details$state;
5678
+ return (_details$state = details === null || details === void 0 ? void 0 : details.state) !== null && _details$state !== void 0 ? _details$state : null;
5679
+ }
5680
+ };
5681
+ this.exampleThreadProviders.set(threadId, provider);
5682
+ return provider;
5683
+ }
5684
+ trackThreadsExampleViewedOnce() {
5685
+ var _this$core16;
5686
+ if ((_this$core16 = this.core) === null || _this$core16 === void 0 ? void 0 : _this$core16.telemetryDisabled) return;
5687
+ for (const thread of THREADS_EXAMPLE_THREADS) {
5688
+ if (this.viewedExampleThreadIds.has(thread.id)) continue;
5689
+ this.viewedExampleThreadIds.add(thread.id);
5690
+ trackThreadsExampleViewed(this.getThreadsTelemetryProps({
5691
+ example_thread_id: thread.id,
5692
+ thread_count: 0
5693
+ }));
5694
+ }
5695
+ }
5696
+ trackThreadsExampleSelectedOnce(threadId) {
5697
+ var _this$core17;
5698
+ if ((_this$core17 = this.core) === null || _this$core17 === void 0 ? void 0 : _this$core17.telemetryDisabled) return;
5699
+ if (this.selectedExampleThreadIds.has(threadId)) return;
5700
+ this.selectedExampleThreadIds.add(threadId);
5701
+ trackThreadsExampleSelected(this.getThreadsTelemetryProps({
5702
+ example_thread_id: threadId,
5703
+ thread_count: 0
5704
+ }));
5705
+ }
5706
+ getCurrentExampleTourProps() {
5707
+ var _THREADS_EXAMPLE_TOUR, _this$selectedThreadI;
5708
+ const step = (_THREADS_EXAMPLE_TOUR = THREADS_EXAMPLE_TOUR_STEPS[this.exampleTourStep]) !== null && _THREADS_EXAMPLE_TOUR !== void 0 ? _THREADS_EXAMPLE_TOUR : THREADS_EXAMPLE_TOUR_STEPS[0];
5709
+ return this.getThreadsTelemetryProps({
5710
+ example_thread_id: (_this$selectedThreadI = this.selectedThreadId) !== null && _this$selectedThreadI !== void 0 ? _this$selectedThreadI : void 0,
5711
+ thread_count: 0,
5712
+ tour_step: this.exampleTourStep + 1,
5713
+ tour_tab: step === null || step === void 0 ? void 0 : step.tab
5714
+ });
5715
+ }
5716
+ trackThreadsExampleTourStepViewedOnce() {
5717
+ var _this$core18, _THREADS_EXAMPLE_TOUR2;
5718
+ if (((_this$core18 = this.core) === null || _this$core18 === void 0 ? void 0 : _this$core18.telemetryDisabled) || !this.selectedThreadId) return;
5719
+ if (!((_THREADS_EXAMPLE_TOUR2 = THREADS_EXAMPLE_TOUR_STEPS[this.exampleTourStep]) !== null && _THREADS_EXAMPLE_TOUR2 !== void 0 ? _THREADS_EXAMPLE_TOUR2 : THREADS_EXAMPLE_TOUR_STEPS[0])) return;
5720
+ const key = `${this.selectedThreadId}:${this.exampleTourStep}`;
5721
+ if (this.viewedExampleTourSteps.has(key)) return;
5722
+ this.viewedExampleTourSteps.add(key);
5723
+ trackThreadsExampleTourStepViewed(this.getCurrentExampleTourProps());
5724
+ }
5725
+ syncExampleTourTab() {
5726
+ var _THREADS_EXAMPLE_TOUR3;
5727
+ const step = (_THREADS_EXAMPLE_TOUR3 = THREADS_EXAMPLE_TOUR_STEPS[this.exampleTourStep]) !== null && _THREADS_EXAMPLE_TOUR3 !== void 0 ? _THREADS_EXAMPLE_TOUR3 : THREADS_EXAMPLE_TOUR_STEPS[0];
5728
+ if (!step) return;
5729
+ this.updateComplete.then(() => {
5730
+ var _this$shadowRoot2, _details$selectTab;
5731
+ const details = (_this$shadowRoot2 = this.shadowRoot) === null || _this$shadowRoot2 === void 0 ? void 0 : _this$shadowRoot2.querySelector("cpk-thread-details");
5732
+ details === null || details === void 0 || (_details$selectTab = details.selectTab) === null || _details$selectTab === void 0 || _details$selectTab.call(details, step.tab);
5733
+ });
5734
+ }
5735
+ startExampleTour(autoStarted) {
5736
+ var _this$core20;
5737
+ if (!this.selectedThreadId) return;
5738
+ this.exampleTourActive = true;
5739
+ this.exampleTourStep = 0;
5740
+ if (autoStarted) {
5741
+ var _this$core19;
5742
+ this.exampleTourAutoShown = true;
5743
+ if (!((_this$core19 = this.core) === null || _this$core19 === void 0 ? void 0 : _this$core19.telemetryDisabled)) trackThreadsExampleTourStarted(this.getCurrentExampleTourProps());
5744
+ } else if (!((_this$core20 = this.core) === null || _this$core20 === void 0 ? void 0 : _this$core20.telemetryDisabled)) trackThreadsExampleTourReopened(this.getCurrentExampleTourProps());
5745
+ this.trackThreadsExampleTourStepViewedOnce();
5746
+ this.syncExampleTourTab();
5747
+ this.requestUpdate();
5748
+ }
5749
+ setExampleTourStep(nextStep) {
5750
+ this.exampleTourStep = Math.max(0, Math.min(THREADS_EXAMPLE_TOUR_STEPS.length - 1, nextStep));
5751
+ this.trackThreadsExampleTourStepViewedOnce();
5752
+ this.syncExampleTourTab();
5753
+ this.requestUpdate();
5754
+ }
5755
+ dismissExampleTour(method) {
5756
+ var _this$core21;
5757
+ if (!this.selectedThreadId) return;
5758
+ const props = {
5759
+ ...this.getCurrentExampleTourProps(),
5760
+ dismiss_method: method
5761
+ };
5762
+ this.exampleTourActive = false;
5763
+ this.exampleTourDismissed = true;
5764
+ this.writeThreadsExampleTourDismissed();
5765
+ if (!((_this$core21 = this.core) === null || _this$core21 === void 0 ? void 0 : _this$core21.telemetryDisabled)) if (method === "done") trackThreadsExampleTourCompleted(props);
5766
+ else trackThreadsExampleTourDismissed(props);
5767
+ this.requestUpdate();
5768
+ }
5769
+ handleThreadsThreadSelected(threadId, showingExamples) {
5770
+ if (showingExamples && this.selectedThreadId === threadId) {
5771
+ this.selectedThreadId = null;
5772
+ this.exampleTourActive = false;
5773
+ this.requestUpdate();
5774
+ return;
5775
+ }
5776
+ this.selectedThreadId = threadId;
5777
+ if (showingExamples && this.isExampleThreadId(threadId)) {
5778
+ this.trackThreadsExampleSelectedOnce(threadId);
5779
+ if (!this.exampleTourDismissed && !this.exampleTourAutoShown) this.startExampleTour(true);
5780
+ else this.exampleTourActive = false;
5781
+ } else this.exampleTourActive = false;
5782
+ this.requestUpdate();
5783
+ }
5784
+ readThreadsExampleTourDismissed() {
5785
+ if (typeof window === "undefined") return false;
5786
+ try {
5787
+ const raw = window.localStorage.getItem(THREADS_EXAMPLE_TOUR_STORAGE_KEY);
5788
+ if (!raw) return false;
5789
+ return JSON.parse(raw).dismissed === true;
5790
+ } catch (_unused8) {
5791
+ return false;
5792
+ }
5793
+ }
5794
+ writeThreadsExampleTourDismissed() {
5795
+ if (typeof window === "undefined") return;
5796
+ try {
5797
+ window.localStorage.setItem(THREADS_EXAMPLE_TOUR_STORAGE_KEY, JSON.stringify({ dismissed: true }));
5798
+ } catch (_unused9) {}
5799
+ }
5800
+ scheduleThreadsExampleOverviewVideoLoad() {
5801
+ var _window$matchMedia, _window;
5802
+ if (this.threadsExampleOverviewVideoShouldLoad || this.threadsExampleOverviewVideoLoadTimer !== null || this.threadsExampleOverviewVideoIdleCallbackId !== null || typeof window === "undefined") return;
5803
+ if ((_window$matchMedia = (_window = window).matchMedia) === null || _window$matchMedia === void 0 ? void 0 : _window$matchMedia.call(_window, "(prefers-reduced-motion: reduce)").matches) return;
5804
+ const loadVideo = () => {
5805
+ this.threadsExampleOverviewVideoLoadTimer = null;
5806
+ this.threadsExampleOverviewVideoIdleCallbackId = null;
5807
+ this.threadsExampleOverviewVideoShouldLoad = true;
5808
+ this.requestUpdate();
5809
+ };
5810
+ if (typeof window.requestIdleCallback === "function") {
5811
+ this.threadsExampleOverviewVideoIdleCallbackId = window.requestIdleCallback(loadVideo, { timeout: 1200 });
5812
+ return;
5813
+ }
5814
+ this.threadsExampleOverviewVideoLoadTimer = window.setTimeout(loadVideo, 450);
5815
+ }
5816
+ renderThreadsExampleOverviewVideo() {
5817
+ this.scheduleThreadsExampleOverviewVideoLoad();
5818
+ return lit.html`
5819
+ <div class="cpk-threads-overview-video-frame" aria-hidden="true">
5820
+ ${this.threadsExampleOverviewVideoShouldLoad ? lit.html`
5821
+ <video
5822
+ class="cpk-threads-overview-video"
5823
+ data-ready=${this.threadsExampleOverviewVideoReady}
5824
+ src=${THREADS_EXAMPLE_OVERVIEW_VIDEO_URL}
5825
+ autoplay
5826
+ loop
5827
+ muted
5828
+ playsinline
5829
+ preload="metadata"
5830
+ @loadeddata=${this.handleThreadsExampleOverviewVideoLoaded}
5831
+ ></video>
5832
+ ` : lit.nothing}
5833
+ </div>
5834
+ `;
5835
+ }
5836
+ renderThreadsExampleOverview() {
5837
+ return lit.html`
5838
+ <div
5839
+ style="
5840
+ flex: 1;
5841
+ min-width: 0;
5842
+ display: flex;
5843
+ align-items: center;
5844
+ justify-content: center;
5845
+ padding: 32px;
5846
+ background: #f7f7f9;
5847
+ "
5848
+ >
5849
+ <div style="max-width: 440px; color: #57575b;">
5850
+ <h2
5851
+ style="
5852
+ margin: 0 0 10px;
5853
+ font-size: 20px;
5854
+ line-height: 1.25;
5855
+ font-weight: 600;
5856
+ color: #010507;
5857
+ "
5858
+ >
5859
+ Threads are persistent, inspectable conversations
5860
+ </h2>
5861
+ ${this.renderThreadsExampleOverviewVideo()}
5862
+ <p
5863
+ style="
5864
+ margin: 0 0 16px;
5865
+ font-size: 13px;
5866
+ line-height: 1.55;
5867
+ color: #57575b;
5868
+ "
5869
+ >
5870
+ Take a tour with the example threads in the sidebar. Then, start
5871
+ chatting in your app to create the first real thread.
5872
+ </p>
5873
+ <div style="display:flex;flex-wrap:wrap;gap:8px;">
5874
+ <a
5875
+ href=${this.getThreadsDocsUrl()}
5876
+ target="_blank"
5877
+ rel="noopener"
5878
+ style="
5879
+ display: inline-flex;
5880
+ align-items: center;
5881
+ justify-content: center;
5882
+ gap: 6px;
5883
+ min-height: 34px;
5884
+ border-radius: 6px;
5885
+ background: #010507;
5886
+ padding: 8px 12px;
5887
+ font-size: 12px;
5888
+ font-weight: 600;
5889
+ color: #ffffff;
5890
+ text-decoration: none;
5891
+ "
5892
+ >
5893
+ Learn how Threads work
5894
+ </a>
5895
+ <a
5896
+ href=${this.getSelfHostedIntelligenceUrl()}
5897
+ target="_blank"
5898
+ rel="noopener"
5899
+ style="
5900
+ display: inline-flex;
5901
+ align-items: center;
5902
+ justify-content: center;
5903
+ gap: 6px;
5904
+ min-height: 34px;
5905
+ border-radius: 6px;
5906
+ border: 1px solid #dbdbe5;
5907
+ background: #ffffff;
5908
+ padding: 8px 12px;
5909
+ font-size: 12px;
5910
+ font-weight: 600;
5911
+ color: #010507;
5912
+ text-decoration: none;
5913
+ "
5914
+ >
5915
+ Explore self-hosted Intelligence
5916
+ </a>
5917
+ </div>
5918
+ </div>
5919
+ </div>
5920
+ `;
5921
+ }
5922
+ renderThreadsExampleTour() {
5923
+ var _THREADS_EXAMPLE_TOUR4;
5924
+ if (!this.selectedThreadId || !this.isExampleThreadId(this.selectedThreadId)) return lit.nothing;
5925
+ if (!this.exampleTourActive) return lit.html`
5926
+ <button
5927
+ type="button"
5928
+ style="
5929
+ position: absolute;
5930
+ right: 16px;
5931
+ bottom: 16px;
5932
+ z-index: 2;
5933
+ border: 1px solid #dbdbe5;
5934
+ border-radius: 6px;
5935
+ background: #ffffff;
5936
+ padding: 7px 10px;
5937
+ color: #57575b;
5938
+ font-size: 12px;
5939
+ font-weight: 600;
5940
+ cursor: pointer;
5941
+ box-shadow: 0 8px 18px rgba(1, 5, 7, 0.08);
5942
+ "
5943
+ @click=${() => this.startExampleTour(false)}
5944
+ >
5945
+ Show tour
5946
+ </button>
5947
+ `;
5948
+ const step = (_THREADS_EXAMPLE_TOUR4 = THREADS_EXAMPLE_TOUR_STEPS[this.exampleTourStep]) !== null && _THREADS_EXAMPLE_TOUR4 !== void 0 ? _THREADS_EXAMPLE_TOUR4 : THREADS_EXAMPLE_TOUR_STEPS[0];
5949
+ const isFirst = this.exampleTourStep === 0;
5950
+ const isLast = this.exampleTourStep === THREADS_EXAMPLE_TOUR_STEPS.length - 1;
5951
+ return lit.html`
5952
+ <div
5953
+ role="dialog"
5954
+ aria-label="Example thread tour"
5955
+ style="
5956
+ position: absolute;
5957
+ right: 16px;
5958
+ bottom: 16px;
5959
+ z-index: 3;
5960
+ width: min(340px, calc(100% - 32px));
5961
+ border: 1px solid #dbdbe5;
5962
+ border-radius: 8px;
5963
+ background: #ffffff;
5964
+ padding: 14px;
5965
+ box-shadow: 0 16px 36px rgba(1, 5, 7, 0.14);
5966
+ color: #57575b;
5967
+ "
5968
+ >
5969
+ <div
5970
+ style="
5971
+ margin-bottom: 8px;
5972
+ font-family: 'Spline Sans Mono', monospace;
5973
+ font-size: 10px;
5974
+ font-weight: 600;
5975
+ color: #189370;
5976
+ text-transform: uppercase;
5977
+ "
5978
+ >
5979
+ ${this.exampleTourStep + 1}/${THREADS_EXAMPLE_TOUR_STEPS.length}
5980
+ ${step.label}
5981
+ </div>
5982
+ <div
5983
+ style="
5984
+ margin-bottom: 6px;
5985
+ font-size: 14px;
5986
+ line-height: 1.35;
5987
+ font-weight: 600;
5988
+ color: #010507;
5989
+ "
5990
+ >
5991
+ ${step.title}
5992
+ </div>
5993
+ <div style="font-size: 12px; line-height: 1.5; color: #57575b;">
5994
+ ${step.body}
5995
+ </div>
5996
+ <div
5997
+ style="
5998
+ display: flex;
5999
+ justify-content: space-between;
6000
+ gap: 8px;
6001
+ margin-top: 14px;
6002
+ "
6003
+ >
6004
+ <button
6005
+ type="button"
6006
+ style="border:0;background:transparent;color:#838389;font-size:12px;font-weight:600;cursor:pointer;padding:7px 0;"
6007
+ @click=${() => this.dismissExampleTour("skip")}
6008
+ >
6009
+ Skip
6010
+ </button>
6011
+ <div style="display:flex;gap:8px;">
6012
+ <button
6013
+ type="button"
6014
+ style="border:1px solid #dbdbe5;border-radius:6px;background:#ffffff;color:#57575b;font-size:12px;font-weight:600;cursor:pointer;padding:7px 10px;"
6015
+ ?disabled=${isFirst}
6016
+ @click=${() => this.setExampleTourStep(this.exampleTourStep - 1)}
6017
+ >
6018
+ Back
6019
+ </button>
6020
+ <button
6021
+ type="button"
6022
+ style="border:1px solid #010507;border-radius:6px;background:#010507;color:#ffffff;font-size:12px;font-weight:600;cursor:pointer;padding:7px 10px;"
6023
+ @click=${() => isLast ? this.dismissExampleTour("done") : this.setExampleTourStep(this.exampleTourStep + 1)}
6024
+ >
6025
+ ${isLast ? "Done" : "Next"}
6026
+ </button>
6027
+ </div>
6028
+ </div>
6029
+ </div>
6030
+ `;
4910
6031
  }
4911
6032
  renderThreadsLockedBackgroundMockup() {
4912
6033
  return lit.html`
@@ -5153,7 +6274,7 @@ ${argsString}</pre
5153
6274
  "
5154
6275
  >
5155
6276
  <a
5156
- href=${this.getTalkToEngineerUrl()}
6277
+ href=${this.getThreadsIntelligenceSignupUrl()}
5157
6278
  target="_blank"
5158
6279
  rel="noopener"
5159
6280
  style="
@@ -5163,75 +6284,340 @@ ${argsString}</pre
5163
6284
  justify-content: center;
5164
6285
  gap: 6px;
5165
6286
  border-radius: 6px;
5166
- background: #010507;
6287
+ border: 1px solid #dbdbe5;
6288
+ background: #ffffff;
5167
6289
  padding: 8px 12px;
5168
6290
  font-size: 12px;
5169
6291
  font-weight: 600;
5170
- color: #ffffff;
6292
+ color: #57575b;
5171
6293
  text-decoration: none;
5172
6294
  "
5173
- @click=${this.handleThreadsTalkToEngineerClick}
6295
+ @click=${this.handleThreadsIntelligenceSignupClick}
5174
6296
  >
5175
- Talk to an Engineer
6297
+ Sign up for Intelligence
5176
6298
  </a>
5177
- <a
5178
- href=${this.getIntelligenceSignupUrl()}
5179
- target="_blank"
5180
- rel="noopener"
6299
+ </div>
6300
+ </div>
6301
+ </div>
6302
+ `;
6303
+ }
6304
+ /**
6305
+ * Renders the realtime-connection indicator in the memory-store header.
6306
+ * Only `"connected"` shows the live (green-dot) state; `"connecting"` shows a
6307
+ * muted amber "reconnecting" and `"unavailable"` a muted grey "offline", so
6308
+ * the indicator never claims "live" over a frozen snapshot once the realtime
6309
+ * socket has permanently given up.
6310
+ */
6311
+ renderMemoryRealtimeIndicator() {
6312
+ const status = this._memoriesRealtimeStatus;
6313
+ const connected = status === "connected";
6314
+ return lit.html`
6315
+ <span
6316
+ style="
6317
+ display: inline-flex;
6318
+ align-items: center;
6319
+ gap: 4px;
6320
+ font-size: 10px;
6321
+ font-weight: 500;
6322
+ color: ${connected ? "#57575b" : "#838389"};
6323
+ "
6324
+ >
6325
+ <span
6326
+ style="
6327
+ display: inline-block;
6328
+ width: 6px;
6329
+ height: 6px;
6330
+ border-radius: 50%;
6331
+ background: ${connected ? "#22c55e" : status === "connecting" ? "#f59e0b" : "#9ca3af"};
6332
+ "
6333
+ ></span>
6334
+ ${status === "connected" ? "live" : status === "connecting" ? "reconnecting" : "offline"}
6335
+ </span>
6336
+ `;
6337
+ }
6338
+ renderMemoriesView() {
6339
+ var _this$core22;
6340
+ if (!((_this$core22 = this.core) === null || _this$core22 === void 0 ? void 0 : _this$core22.intelligence) || !this._memoriesAvailable) return lit.html`
6341
+ <div
6342
+ style="
6343
+ position: relative;
6344
+ height: 100%;
6345
+ display: flex;
6346
+ align-items: center;
6347
+ justify-content: center;
6348
+ padding: 32px;
6349
+ overflow: hidden;
6350
+ background: #ffffff;
6351
+ "
6352
+ >
6353
+ ${this.renderThreadsLockedBackgroundMockup()}
6354
+ <div
6355
+ aria-hidden="true"
6356
+ style="
6357
+ position: absolute;
6358
+ inset: 0;
6359
+ pointer-events: none;
6360
+ background:
6361
+ radial-gradient(circle at center, rgba(255,255,255,0.9) 0, rgba(255,255,255,0.78) 24%, rgba(255,255,255,0.34) 48%, rgba(255,255,255,0.56) 100%);
6362
+ "
6363
+ ></div>
6364
+ <div
6365
+ style="
6366
+ position: relative;
6367
+ z-index: 1;
6368
+ max-width: 440px;
6369
+ text-align: center;
6370
+ color: #57575b;
6371
+ "
6372
+ >
6373
+ <div
6374
+ aria-hidden="true"
5181
6375
  style="
5182
- display: inline-flex;
5183
- min-height: 34px;
5184
- align-items: center;
6376
+ margin: 0 auto 18px;
6377
+ display: flex;
5185
6378
  justify-content: center;
5186
- gap: 6px;
5187
- border-radius: 6px;
5188
- border: 1px solid #dbdbe5;
5189
- background: #ffffff;
5190
- padding: 8px 12px;
5191
- font-size: 12px;
6379
+ "
6380
+ >
6381
+ <div
6382
+ style="
6383
+ display: flex;
6384
+ height: 44px;
6385
+ width: 44px;
6386
+ align-items: center;
6387
+ justify-content: center;
6388
+ border: 1px solid #dfd6fb;
6389
+ border-radius: 8px;
6390
+ background: #eee6fe;
6391
+ color: #57575b;
6392
+ box-shadow: 0 8px 18px rgba(87, 87, 91, 0.14);
6393
+ "
6394
+ >
6395
+ ${this.renderIcon("Lock")}
6396
+ </div>
6397
+ </div>
6398
+ <h2
6399
+ style="
6400
+ margin: 0 0 8px;
6401
+ font-size: 16px;
6402
+ line-height: 1.35;
5192
6403
  font-weight: 600;
6404
+ color: #010507;
6405
+ "
6406
+ >
6407
+ Long-term memory
6408
+ </h2>
6409
+ <p
6410
+ style="
6411
+ margin: 0 auto 18px;
6412
+ max-width: 380px;
6413
+ font-size: 13px;
6414
+ line-height: 1.55;
5193
6415
  color: #57575b;
5194
- text-decoration: none;
5195
6416
  "
5196
- @click=${this.handleThreadsIntelligenceSignupClick}
5197
6417
  >
5198
- Sign up for Intelligence
5199
- </a>
6418
+ ${this._memoryStoreUnsupported ? "Long-term memory isn't available in this version of the @copilotkit SDK. Upgrade @copilotkit/core (and @copilotkit/react) to a version that supports memory." : "Long-term memory isn't enabled on this deployment."}
6419
+ </p>
6420
+ <div
6421
+ style="
6422
+ display: flex;
6423
+ flex-wrap: wrap;
6424
+ justify-content: center;
6425
+ gap: 8px;
6426
+ "
6427
+ >
6428
+ <a
6429
+ href=${this.getTalkToEngineerUrl()}
6430
+ target="_blank"
6431
+ rel="noopener"
6432
+ style="
6433
+ display: inline-flex;
6434
+ min-height: 34px;
6435
+ align-items: center;
6436
+ justify-content: center;
6437
+ gap: 6px;
6438
+ border-radius: 6px;
6439
+ background: #010507;
6440
+ padding: 8px 12px;
6441
+ font-size: 12px;
6442
+ font-weight: 600;
6443
+ color: #ffffff;
6444
+ text-decoration: none;
6445
+ "
6446
+ @click=${this.handleThreadsTalkToEngineerClick}
6447
+ >
6448
+ Talk to an Engineer
6449
+ </a>
6450
+ <a
6451
+ href=${this.getIntelligenceSignupUrl()}
6452
+ target="_blank"
6453
+ rel="noopener"
6454
+ style="
6455
+ display: inline-flex;
6456
+ min-height: 34px;
6457
+ align-items: center;
6458
+ justify-content: center;
6459
+ gap: 6px;
6460
+ border-radius: 6px;
6461
+ border: 1px solid #dbdbe5;
6462
+ background: #ffffff;
6463
+ padding: 8px 12px;
6464
+ font-size: 12px;
6465
+ font-weight: 600;
6466
+ color: #57575b;
6467
+ text-decoration: none;
6468
+ "
6469
+ @click=${this.handleThreadsIntelligenceSignupClick}
6470
+ >
6471
+ Sign up for Intelligence
6472
+ </a>
6473
+ </div>
6474
+ </div>
6475
+ </div>
6476
+ `;
6477
+ if (this._memoriesError && this._memories.length === 0) return lit.html`
6478
+ <div
6479
+ style="
6480
+ display: flex;
6481
+ height: 100%;
6482
+ flex-direction: column;
6483
+ align-items: center;
6484
+ justify-content: center;
6485
+ gap: 8px;
6486
+ color: #838389;
6487
+ "
6488
+ >
6489
+ <svg
6490
+ width="24"
6491
+ height="24"
6492
+ viewBox="0 0 24 24"
6493
+ fill="none"
6494
+ stroke="#c0333a"
6495
+ stroke-width="1.5"
6496
+ stroke-linecap="round"
6497
+ stroke-linejoin="round"
6498
+ >
6499
+ <circle cx="12" cy="12" r="10" />
6500
+ <line x1="12" y1="8" x2="12" y2="12" />
6501
+ <line x1="12" y1="16" x2="12.01" y2="16" />
6502
+ </svg>
6503
+ <span style="font-size: 13px; color: #c0333a;">
6504
+ Failed to load memories
6505
+ </span>
6506
+ <span
6507
+ style="
6508
+ max-width: 320px;
6509
+ text-align: center;
6510
+ font-size: 11px;
6511
+ line-height: 1.5;
6512
+ color: #c0333a;
6513
+ "
6514
+ >
6515
+ ${this._memoriesError.message}
6516
+ </span>
6517
+ </div>
6518
+ `;
6519
+ if (this._memoriesLoading && this._memories.length === 0) return lit.html`
6520
+ <div
6521
+ style="
6522
+ display: flex;
6523
+ height: 100%;
6524
+ flex-direction: column;
6525
+ align-items: center;
6526
+ justify-content: center;
6527
+ gap: 8px;
6528
+ color: #838389;
6529
+ "
6530
+ >
6531
+ <svg
6532
+ width="24"
6533
+ height="24"
6534
+ viewBox="0 0 24 24"
6535
+ fill="none"
6536
+ stroke="#c0c0c8"
6537
+ stroke-width="1.5"
6538
+ stroke-linecap="round"
6539
+ stroke-linejoin="round"
6540
+ >
6541
+ <path d="M21 12a9 9 0 1 1-6.219-8.56" />
6542
+ </svg>
6543
+ <span style="font-size: 13px">Loading memories…</span>
6544
+ </div>
6545
+ `;
6546
+ return lit.html`
6547
+ <div style="display:flex;height:100%;overflow:hidden;flex-direction:column;">
6548
+ <div class="cpk-section-header" style="display:flex;align-items:center;justify-content:space-between;">
6549
+ <h4>Learning</h4>
6550
+ <div style="display:flex;align-items:center;gap:6px;">
6551
+ ${this.renderMemoryRealtimeIndicator()}
6552
+ <span
6553
+ style="
6554
+ font-size: 11px;
6555
+ font-weight: 500;
6556
+ color: #57575b;
6557
+ background: rgba(0,0,0,0.07);
6558
+ border-radius: 9999px;
6559
+ padding: 1px 7px;
6560
+ "
6561
+ >
6562
+ ${this._memories.length}
6563
+ </span>
5200
6564
  </div>
5201
6565
  </div>
6566
+ ${this._memoriesError ? lit.html`
6567
+ <div
6568
+ role="alert"
6569
+ style="
6570
+ display: flex;
6571
+ align-items: flex-start;
6572
+ gap: 8px;
6573
+ flex-shrink: 0;
6574
+ border-bottom: 1px solid #f1c7c9;
6575
+ background: #fdf3f3;
6576
+ padding: 8px 12px;
6577
+ color: #c0333a;
6578
+ font-size: 12px;
6579
+ line-height: 1.45;
6580
+ "
6581
+ >
6582
+ <svg
6583
+ width="16"
6584
+ height="16"
6585
+ viewBox="0 0 24 24"
6586
+ fill="none"
6587
+ stroke="#c0333a"
6588
+ stroke-width="1.5"
6589
+ stroke-linecap="round"
6590
+ stroke-linejoin="round"
6591
+ style="flex-shrink:0;margin-top:1px;"
6592
+ >
6593
+ <circle cx="12" cy="12" r="10" />
6594
+ <line x1="12" y1="8" x2="12" y2="12" />
6595
+ <line x1="12" y1="16" x2="12.01" y2="16" />
6596
+ </svg>
6597
+ <span>Action failed: ${this._memoriesError.message}</span>
6598
+ </div>
6599
+ ` : lit.nothing}
6600
+ <div style="flex:1;min-height:0;overflow:hidden;">
6601
+ <cpk-memory-list
6602
+ style="height:100%;"
6603
+ .memories=${this._memories}
6604
+ ></cpk-memory-list>
6605
+ </div>
5202
6606
  </div>
5203
6607
  `;
5204
6608
  }
5205
6609
  renderThreadsView() {
5206
- var _this$_threadsByAgent, _displayThreads$find, _this$_core$runtimeUr, _this$_core2, _this$_core$headers, _this$_core3, _this$_core4, _this$liveMessageVers2, _this$agentEvents$get6;
6610
+ var _visibleThreads$find, _this$_core$runtimeUr, _this$_core2, _this$_core$headers, _this$_core3, _this$_core4, _this$liveMessageVers2, _this$agentEvents$get6;
5207
6611
  if (!this.areThreadEndpointsAvailable()) return this.renderThreadsLockedView();
5208
- const displayThreads = this.selectedContext === "all-agents" ? this._threads : (_this$_threadsByAgent = this._threadsByAgent.get(this.selectedContext)) !== null && _this$_threadsByAgent !== void 0 ? _this$_threadsByAgent : [];
5209
- let threadsErrorMessage = null;
5210
- if (this.selectedContext === "all-agents") {
5211
- var _firstError$message;
5212
- const firstError = this._threadsErrorByAgent.values().next().value;
5213
- threadsErrorMessage = (_firstError$message = firstError === null || firstError === void 0 ? void 0 : firstError.message) !== null && _firstError$message !== void 0 ? _firstError$message : null;
5214
- } else {
5215
- var _this$_threadsErrorBy, _this$_threadsErrorBy2;
5216
- threadsErrorMessage = (_this$_threadsErrorBy = (_this$_threadsErrorBy2 = this._threadsErrorByAgent.get(this.selectedContext)) === null || _this$_threadsErrorBy2 === void 0 ? void 0 : _this$_threadsErrorBy2.message) !== null && _this$_threadsErrorBy !== void 0 ? _this$_threadsErrorBy : null;
5217
- }
5218
- const selectedThread = this.selectedThreadId != null ? (_displayThreads$find = displayThreads.find((t) => t.id === this.selectedThreadId)) !== null && _displayThreads$find !== void 0 ? _displayThreads$find : null : null;
6612
+ const { displayThreads, threadsErrorMessage } = this.getActiveThreadsState();
6613
+ const showingExamples = this.shouldRenderExampleThreads(displayThreads, threadsErrorMessage);
6614
+ const visibleThreads = this.getVisibleThreads(displayThreads, threadsErrorMessage);
6615
+ if (showingExamples) this.trackThreadsExampleViewedOnce();
6616
+ const selectedThread = this.selectedThreadId != null ? (_visibleThreads$find = visibleThreads.find((t) => t.id === this.selectedThreadId)) !== null && _visibleThreads$find !== void 0 ? _visibleThreads$find : null : null;
6617
+ const selectedThreadIsExample = this.isExampleThreadId(selectedThread === null || selectedThread === void 0 ? void 0 : selectedThread.id);
5219
6618
  if (!threadsErrorMessage) this.trackThreadsViewStateOnce(displayThreads.length === 0 ? "empty_enabled" : "enabled", displayThreads.length);
5220
6619
  return lit.html`
5221
6620
  <div style="display:flex;height:100%;overflow:hidden;flex-direction:column;">
5222
- <div
5223
- style="display:flex;align-items:center;justify-content:flex-end;border-bottom:1px solid #DBDBE5;background:#ffffff;padding:8px 12px;flex-shrink:0;"
5224
- >
5225
- <a
5226
- href=${this.getTalkToEngineerUrl()}
5227
- target="_blank"
5228
- rel="noopener"
5229
- style="display:inline-flex;align-items:center;gap:6px;border-radius:6px;border:1px solid #dbdbe5;background:#ffffff;padding:7px 10px;font-size:12px;font-weight:600;color:#57575b;text-decoration:none;"
5230
- @click=${this.handleTalkToEngineerClick}
5231
- >
5232
- Talk to an Engineer
5233
- </a>
5234
- </div>
5235
6621
  <div style="display:flex;min-height:0;flex:1;overflow:hidden;">
5236
6622
  <!-- Left sidebar: thread list -->
5237
6623
  <div
@@ -5239,12 +6625,11 @@ ${argsString}</pre
5239
6625
  >
5240
6626
  <cpk-thread-list
5241
6627
  style="height:100%;"
5242
- .threads=${displayThreads}
6628
+ .threads=${visibleThreads}
5243
6629
  .selectedThreadId=${this.selectedThreadId}
5244
6630
  .errorMessage=${threadsErrorMessage}
5245
6631
  @threadSelected=${(e) => {
5246
- this.selectedThreadId = e.detail;
5247
- this.requestUpdate();
6632
+ this.handleThreadsThreadSelected(e.detail, showingExamples);
5248
6633
  }}
5249
6634
  ></cpk-thread-list>
5250
6635
  </div>
@@ -5259,18 +6644,20 @@ ${argsString}</pre
5259
6644
  ></div>
5260
6645
 
5261
6646
  <!-- Center + right: thread details or empty state -->
5262
- <div style="flex:1;min-width:0;overflow:hidden;display:flex;">
6647
+ <div style="flex:1;min-width:0;overflow:hidden;display:flex;position:relative;">
5263
6648
  ${selectedThread ? lit.html`<cpk-thread-details
5264
6649
  style="flex:1;min-width:0;"
5265
6650
  .threadId=${selectedThread.id}
5266
6651
  .thread=${selectedThread}
6652
+ .provider=${selectedThreadIsExample ? this.getExampleThreadProvider(selectedThread.id) : null}
5267
6653
  .runtimeUrl=${(_this$_core$runtimeUr = (_this$_core2 = this._core) === null || _this$_core2 === void 0 ? void 0 : _this$_core2.runtimeUrl) !== null && _this$_core$runtimeUr !== void 0 ? _this$_core$runtimeUr : ""}
5268
6654
  .headers=${(_this$_core$headers = (_this$_core3 = this._core) === null || _this$_core3 === void 0 ? void 0 : _this$_core3.headers) !== null && _this$_core$headers !== void 0 ? _this$_core$headers : {}}
5269
- .threadInspectionAvailable=${((_this$_core4 = this._core) === null || _this$_core4 === void 0 || (_this$_core4 = _this$_core4.threadEndpoints) === null || _this$_core4 === void 0 ? void 0 : _this$_core4.inspect) !== false}
6655
+ .threadInspectionAvailable=${selectedThreadIsExample || ((_this$_core4 = this._core) === null || _this$_core4 === void 0 || (_this$_core4 = _this$_core4.threadEndpoints) === null || _this$_core4 === void 0 ? void 0 : _this$_core4.inspect) !== false}
5270
6656
  .liveMessageVersion=${(_this$liveMessageVers2 = this.liveMessageVersion.get(selectedThread.id)) !== null && _this$liveMessageVers2 !== void 0 ? _this$liveMessageVers2 : 0}
5271
6657
  .agentStateInput=${this.getLatestStateForAgent(selectedThread.agentId)}
5272
6658
  .agentEventsInput=${(_this$agentEvents$get6 = this.agentEvents.get(selectedThread.agentId)) !== null && _this$agentEvents$get6 !== void 0 ? _this$agentEvents$get6 : []}
5273
- ></cpk-thread-details>` : lit.html`
6659
+ ></cpk-thread-details>
6660
+ ${selectedThreadIsExample ? this.renderThreadsExampleTour() : lit.nothing}` : showingExamples ? this.renderThreadsExampleOverview() : lit.html`
5274
6661
  <div
5275
6662
  style="
5276
6663
  flex: 1;
@@ -5830,13 +7217,18 @@ ${prettyEvent}</pre
5830
7217
  if (this.contextOptions.filter((opt) => opt.key !== "all-agents").length > 1) this.selectedContext = "all-agents";
5831
7218
  }
5832
7219
  if (key === "threads") {
5833
- var _this$core15;
5834
- if (previousMenu !== "threads" && !((_this$core15 = this.core) === null || _this$core15 === void 0 ? void 0 : _this$core15.telemetryDisabled)) trackThreadsTabClicked(this.getThreadsTelemetryProps());
7220
+ var _this$core23;
7221
+ if (previousMenu !== "threads" && !((_this$core23 = this.core) === null || _this$core23 === void 0 ? void 0 : _this$core23.telemetryDisabled)) trackThreadsTabClicked(this.getThreadsTelemetryProps());
5835
7222
  this.autoSelectLatestThread();
5836
7223
  }
7224
+ if (key === "memories") {
7225
+ var _this$core24;
7226
+ this.ensureMemorySubscription();
7227
+ if (previousMenu !== "memories" && !((_this$core24 = this.core) === null || _this$core24 === void 0 ? void 0 : _this$core24.telemetryDisabled)) trackMemoriesTabClicked(this.getMemoriesTelemetryProps());
7228
+ }
5837
7229
  if (key === "ag-ui-events" || key === "agents") requestAnimationFrame(() => {
5838
- var _this$shadowRoot2;
5839
- const scroller = (_this$shadowRoot2 = this.shadowRoot) === null || _this$shadowRoot2 === void 0 ? void 0 : _this$shadowRoot2.getElementById("cpk-main-scroll");
7230
+ var _this$shadowRoot3;
7231
+ const scroller = (_this$shadowRoot3 = this.shadowRoot) === null || _this$shadowRoot3 === void 0 ? void 0 : _this$shadowRoot3.getElementById("cpk-main-scroll");
5840
7232
  if (scroller) scroller.scrollTop = 0;
5841
7233
  });
5842
7234
  this.contextMenuOpen = false;
@@ -6308,7 +7700,7 @@ ${prettyEvent}</pre
6308
7700
  if (typeof value === "function") return value.toString();
6309
7701
  try {
6310
7702
  return JSON.stringify(value, null, 2);
6311
- } catch (_unused8) {
7703
+ } catch (_unused10) {
6312
7704
  return String(value);
6313
7705
  }
6314
7706
  }
@@ -6403,8 +7795,8 @@ ${prettyEvent}</pre
6403
7795
  </div>`;
6404
7796
  }
6405
7797
  flushPendingBannerViewed() {
6406
- var _this$core16;
6407
- if (!this.pendingBannerViewed || ((_this$core16 = this.core) === null || _this$core16 === void 0 ? void 0 : _this$core16.telemetryDisabled)) {
7798
+ var _this$core25;
7799
+ if (!this.pendingBannerViewed || ((_this$core25 = this.core) === null || _this$core25 === void 0 ? void 0 : _this$core25.telemetryDisabled)) {
6408
7800
  this.pendingBannerViewed = null;
6409
7801
  return;
6410
7802
  }
@@ -6492,7 +7884,7 @@ ${prettyEvent}</pre
6492
7884
  try {
6493
7885
  const url = new URL(href, typeof window !== "undefined" ? window.location.href : "https://copilotkit.ai");
6494
7886
  return url.protocol === "http:" || url.protocol === "https:" || url.protocol === "mailto:";
6495
- } catch (_unused9) {
7887
+ } catch (_unused11) {
6496
7888
  return false;
6497
7889
  }
6498
7890
  }
@@ -6512,17 +7904,17 @@ ${prettyEvent}</pre
6512
7904
  }
6513
7905
  appendRefParam(href, ref = "cpk-inspector") {
6514
7906
  try {
6515
- var _this$core17;
7907
+ var _this$core26;
6516
7908
  const isRootRelative = href.startsWith("/") && !href.startsWith("//");
6517
7909
  const url = new URL(href, typeof window !== "undefined" ? window.location.href : "https://copilotkit.ai");
6518
7910
  if (!url.searchParams.has("ref")) url.searchParams.append("ref", ref);
6519
- if (!url.searchParams.has("posthog_distinct_id") && !((_this$core17 = this.core) === null || _this$core17 === void 0 ? void 0 : _this$core17.telemetryDisabled) && this.isCopilotKitDestination(url)) {
7911
+ if (!url.searchParams.has("posthog_distinct_id") && !((_this$core26 = this.core) === null || _this$core26 === void 0 ? void 0 : _this$core26.telemetryDisabled) && this.isCopilotKitDestination(url)) {
6520
7912
  const distinctId = getTelemetryDistinctIdForUrl();
6521
7913
  if (distinctId) url.searchParams.append("posthog_distinct_id", distinctId);
6522
7914
  }
6523
7915
  if (isRootRelative) return `${url.pathname}${url.search}${url.hash}`;
6524
7916
  return url.toString();
6525
- } catch (_unused10) {
7917
+ } catch (_unused12) {
6526
7918
  return href;
6527
7919
  }
6528
7920
  }
@@ -6541,7 +7933,7 @@ ${prettyEvent}</pre
6541
7933
  const parsed = JSON.parse(raw);
6542
7934
  if (parsed && typeof parsed.timestamp === "string") return parsed.timestamp;
6543
7935
  return null;
6544
- } catch (_unused11) {}
7936
+ } catch (_unused13) {}
6545
7937
  return null;
6546
7938
  }
6547
7939
  persistAnnouncementTimestamp(timestamp) {
@@ -6549,7 +7941,7 @@ ${prettyEvent}</pre
6549
7941
  try {
6550
7942
  const payload = JSON.stringify({ timestamp });
6551
7943
  window.localStorage.setItem(ANNOUNCEMENT_STORAGE_KEY, payload);
6552
- } catch (_unused12) {}
7944
+ } catch (_unused14) {}
6553
7945
  }
6554
7946
  markAnnouncementSeen() {
6555
7947
  this.hasUnseenAnnouncement = false;
@@ -7129,6 +8521,35 @@ ${prettyEvent}</pre
7129
8521
  .cpk-tab-active {
7130
8522
  cursor: pointer;
7131
8523
  }
8524
+ .cpk-threads-overview-video-frame {
8525
+ position: relative;
8526
+ display: block;
8527
+ width: 100%;
8528
+ max-width: 440px;
8529
+ aspect-ratio: 16 / 9;
8530
+ margin: 0 0 14px;
8531
+ overflow: hidden;
8532
+ border: 1px solid #dbdbe5;
8533
+ border-radius: 8px;
8534
+ background:
8535
+ linear-gradient(
8536
+ 135deg,
8537
+ rgba(190, 194, 255, 0.18),
8538
+ rgba(133, 236, 206, 0.12)
8539
+ ),
8540
+ #ffffff;
8541
+ box-shadow: 0 8px 20px rgba(1, 5, 7, 0.08);
8542
+ }
8543
+ .cpk-threads-overview-video {
8544
+ width: 100%;
8545
+ height: 100%;
8546
+ object-fit: cover;
8547
+ opacity: 0;
8548
+ transition: opacity 220ms ease;
8549
+ }
8550
+ .cpk-threads-overview-video[data-ready="true"] {
8551
+ opacity: 1;
8552
+ }
7132
8553
 
7133
8554
  /* ── Header control buttons (dock, close) — first row only ───── */
7134
8555
  .drag-handle > div:first-child button {