@copilotkit/web-inspector 1.69.0 → 1.69.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1830 -162
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +328 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +328 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1833 -165
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +1888 -158
- package/dist/index.umd.js.map +1 -1
- package/dist/lib/home-briefing.cjs +23 -3
- package/dist/lib/home-briefing.cjs.map +1 -1
- package/dist/lib/home-briefing.mjs +23 -4
- package/dist/lib/home-briefing.mjs.map +1 -1
- package/dist/lib/telemetry.cjs +27 -0
- package/dist/lib/telemetry.cjs.map +1 -1
- package/dist/lib/telemetry.d.cts.map +1 -1
- package/dist/lib/telemetry.d.mts.map +1 -1
- package/dist/lib/telemetry.mjs +27 -1
- package/dist/lib/telemetry.mjs.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/styles/generated.cjs +1 -1
- package/dist/styles/generated.cjs.map +1 -1
- package/dist/styles/generated.mjs +1 -1
- package/dist/styles/generated.mjs.map +1 -1
- package/package.json +3 -3
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-tracking: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-duration:initial;--tw-ease: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-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-950:oklch(28.3% .141 291.089);--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-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--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;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--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{.\\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.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-3{margin-inline:calc(var(--spacing)*3)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.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)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-auto{margin-right:auto}.mb-0\\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-1{margin-left:calc(var(--spacing)*1)}.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-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\\[28rem\\]{height:28rem}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing)*32)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-7{min-height:calc(var(--spacing)*7)}.min-h-\\[20rem\\]{min-height:20rem}.min-h-\\[40px\\]{min-height:40px}.min-h-\\[420px\\]{min-height:420px}.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-4{width:calc(var(--spacing)*4)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-40{width:calc(var(--spacing)*40)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[240px\\]{max-width:240px}.max-w-full{max-width:100%}.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-\\[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-x-0\\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.-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-nesw-resize{cursor:nesw-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.list-none{list-style-type:none}.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-end{align-items:flex-end}.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-\\[16px\\]{border-radius:16px}.rounded-\\[28px\\]{border-radius:28px}.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-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-\\[\\#00000014\\]{background-color:#00000014}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-black{background-color:var(--color-black)}.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-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.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-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.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-0\\.5{padding:calc(var(--spacing)*.5)}.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-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.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)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\\.5{padding-top:calc(var(--spacing)*1.5)}.pt-8{padding-top:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-\\[22px\\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.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)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[rgb\\(13\\,13\\,13\\)\\]{color:#0d0d0d}.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-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-sky-700{color:var(--color-sky-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-800{color:var(--color-slate-800)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-violet-950{color:var(--color-violet-950)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.decoration-violet-300{-webkit-text-decoration-color:var(--color-violet-300);-webkit-text-decoration-color:var(--color-violet-300);text-decoration-color:var(--color-violet-300)}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.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-\\[0_4px_4px_0_\\#0000000a\\,0_0_1px_0_\\#0000009e\\]{--tw-shadow:0 4px 4px 0 var(--tw-shadow-color,#0000000a),0 0 1px 0 var(--tw-shadow-color,#0000009e);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,.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}.blur{--tw-blur:blur(8px);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,)}.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))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}.focus-within\\:shadow-\\[0_6px_18px_0_\\#00000014\\,0_0_1px_0_\\#0000009e\\]:focus-within{--tw-shadow:0 6px 18px 0 var(--tw-shadow-color,#00000014),0 0 1px 0 var(--tw-shadow-color,#0000009e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.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-rose-100:hover{background-color:var(--color-rose-100)}.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\\:bg-violet-100:hover{background-color:var(--color-violet-100)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}.hover\\:text-violet-800:hover{color:var(--color-violet-800)}.hover\\:decoration-violet-700:hover{-webkit-text-decoration-color:var(--color-violet-700);-webkit-text-decoration-color:var(--color-violet-700);text-decoration-color:var(--color-violet-700)}.hover\\:opacity-70:hover{opacity:.7}}.focus\\:border-gray-300:focus{border-color:var(--color-gray-300)}.focus\\:border-violet-400:focus{border-color:var(--color-violet-400)}.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\\:ring-violet-100:focus{--tw-ring-color:var(--color-violet-100)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:rounded:focus-visible{border-radius:.25rem}.focus-visible\\:rounded-sm:focus-visible{border-radius:var(--radius-sm)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-rose-300:focus-visible{--tw-ring-color:var(--color-rose-300)}.focus-visible\\:ring-violet-300:focus-visible{--tw-ring-color:var(--color-violet-300)}.focus-visible\\:ring-violet-400:focus-visible{--tw-ring-color:var(--color-violet-400)}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.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-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:opacity-60:active{opacity:.6}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-60:disabled{opacity:.6}@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\\]\\:h-3>svg{height:calc(var(--spacing)*3)}.\\[\\&\\>svg\\]\\:h-3\\.5>svg{height:calc(var(--spacing)*3.5)}.\\[\\&\\>svg\\]\\:h-\\[18px\\]>svg{height:18px}.\\[\\&\\>svg\\]\\:\\!w-8>svg{width:calc(var(--spacing)*8)!important}.\\[\\&\\>svg\\]\\:w-3>svg{width:calc(var(--spacing)*3)}.\\[\\&\\>svg\\]\\:w-3\\.5>svg{width:calc(var(--spacing)*3.5)}.\\[\\&\\>svg\\]\\:w-\\[18px\\]>svg{width:18px}.\\[\\&\\>svg\\]\\:animate-spin>svg{animation:var(--animate-spin)}.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}}.cpk-json-block{white-space:pre-wrap;word-break:break-all;color:#57575b;margin:0;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:11px;line-height:1.8;overflow:auto}.inspector-account-strip{border-bottom:1px solid #d8d8e8;width:100%;min-width:0;color:#010507!important;background:linear-gradient(90deg,#fff 0%,#f3f1ff 58%,#eefbf7 100%)!important}.inspector-account-logo{filter:none}.inspector-account-brand{position:relative}.inspector-account-logo-accent{clip-path:inset(0 0 0 80%);pointer-events:none;display:none;position:absolute;inset:0}.inspector-account-cta{isolation:isolate;color:#3f176f;white-space:nowrap;cursor:pointer;background-color:#eee6fe;border:0;border-radius:5px;flex:none;justify-content:center;align-items:center;gap:7px;min-height:32px;padding:7px 10px;font-size:11px;font-weight:700;line-height:1;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.inspector-account-cta:after{z-index:0;content:\"\";opacity:0;pointer-events:none;background:linear-gradient(105deg,#0000 0%,#ffffff14 32%,#ffffffad 50%,#ffffff14 68%,#0000 100%);width:68%;animation:3.8s cubic-bezier(.16,1,.3,1) infinite inspector-account-cta-shimmer;position:absolute;inset:0;transform:translate(-180%)skew(-14deg)}.inspector-account-cta>*{z-index:1;position:relative}.inspector-account-cta[data-motion-paused=true]:after{animation-play-state:paused}@keyframes inspector-account-cta-shimmer{0%{opacity:0;transform:translate(-180%)skew(-14deg)}12%{opacity:1}82%{opacity:.8}to{opacity:0;transform:translate(280%)skew(-14deg)}}.inspector-account-cta:hover{color:#32105d;background-color:#e4d8fc}.inspector-account-cta svg{width:14px;height:14px}@media (prefers-reduced-motion:reduce){.inspector-account-cta:after{animation:none}}.inspector-window-layout{position:relative}.inspector-window-layout-menu{z-index:60;color:#010507;background-color:#fff;border:1px solid #d8d8e8;border-radius:5px;width:188px;padding:4px;display:grid;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 10px 24px #1f173924}.inspector-window-layout-menu button{min-height:34px;color:inherit;text-align:left;cursor:pointer;background-color:#0000;border:0;border-radius:4px;align-items:center;gap:9px;padding:7px 9px;font-size:12px;font-weight:600;display:flex}.inspector-window-layout-menu button:hover,.inspector-window-layout-menu button:focus-visible{color:#3f176f;background-color:#eee6fe;outline:none}.inspector-window-layout-menu button span:first-child{flex:none;display:inline-flex}.inspector-agent-placeholder{color:#68686e;border-color:#c8c8d8}.inspector-primary-navigation,.inspector-child-navigation{display:none}.inspector-shell{background-color:#f7f6fd;flex:auto;min-height:0;display:flex}.inspector-sidebar{z-index:20;background-color:#f7f6fd;border-right:1px solid #d8d8e8;flex-direction:column;flex:none;gap:8px;width:224px;min-width:224px;padding:12px 10px;transition:width .22s,min-width .22s,padding .22s;display:flex;position:relative;overflow:visible}.inspector-sidebar[data-icon-rail=true]{width:56px;min-width:56px;padding:10px 6px}.inspector-sidebar-agent-scope{border-bottom:1px solid #d8d8e8;flex:none;min-width:0;padding-bottom:10px}.inspector-sidebar .inspector-agent-selector{width:100%;min-width:0}.inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button{background-color:#fff;border-radius:5px;max-width:none;min-height:34px;padding:6px 8px}.inspector-context-dropdown-icon{color:#68686e;display:inline-flex}.inspector-context-dropdown-icon svg,.inspector-context-dropdown-chevron svg{width:14px;height:14px}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-agent-scope{padding-bottom:8px}.inspector-sidebar[data-icon-rail=true] .inspector-agent-selector>[data-context-dropdown-root=true]>button{justify-content:center;width:100%;min-height:34px;padding:6px 0}.inspector-sidebar[data-icon-rail=true] .inspector-context-dropdown-label,.inspector-sidebar[data-icon-rail=true] .inspector-context-dropdown-chevron,.inspector-sidebar[data-icon-rail=true] .inspector-agent-placeholder span:last-child{display:none}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-agent-scope [data-context-dropdown-root=true]>div{margin-top:0;top:0;left:calc(100% + 8px)}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-section+.inspector-sidebar-section{border-top:1px solid #dbdbe5;margin-top:4px;padding-top:10px}.inspector-sidebar-nav{cursor:default;flex-direction:column;flex:auto;gap:14px;min-height:0;display:flex;overflow:hidden auto}.inspector-sidebar-section{flex-direction:column;gap:4px;display:flex}.inspector-sidebar-label{color:#838389;letter-spacing:.02em;text-align:left;text-transform:none;background:0 0;border:0;width:100%;margin:0 0 2px;padding:0 8px;font-size:11px;font-weight:600;display:block}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-label,.inspector-sidebar[data-icon-rail=true] .inspector-nav-label{display:none}.inspector-sidebar-rail-tooltip{z-index:60;color:#fff;pointer-events:none;white-space:nowrap;background-color:#242331;border-radius:6px;max-width:220px;padding:6px 9px;font-size:11px;font-weight:600;line-height:1.2;position:absolute;left:calc(100% + 8px);transform:translateY(-50%);box-shadow:0 7px 18px #1a172a2e}.inspector-sidebar-control{justify-content:flex-start;width:100%;min-height:36px;display:flex;position:relative}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-control,.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-toggle,.inspector-sidebar[data-icon-rail=true] .inspector-nav-control{justify-content:center;align-items:center;gap:0;padding:6px 0;overflow:hidden}.inspector-home-badge{background-color:#fa5f67;border-radius:999px;width:7px;height:7px;position:absolute;top:8px;right:8px}.inspector-sidebar[data-icon-rail=true] .inspector-home-badge{top:6px;right:8px}.inspector-sidebar-toggle{color:#57575b;width:100%;min-height:32px;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;flex:none;justify-content:flex-start;align-items:center;gap:6px;padding:6px 9px;font-size:12px;font-weight:600;display:flex}.inspector-sidebar-toggle:hover{color:#010507;background-color:#f0f0f4}.inspector-sidebar-footer{flex-direction:column;flex:none;gap:6px;padding:2px 0 18px;display:flex}.inspector-sidebar-status-list{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.inspector-sidebar-status-card{color:#2b2b2b;background-color:#fff;border:1px solid #d8d8e8;border-radius:7px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:52px;padding:9px 10px;display:grid;position:relative}.inspector-sidebar-status-copy{flex-direction:column;gap:2px;min-width:0;line-height:1.25;display:flex}.inspector-sidebar-status-copy strong{color:#010507;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700;overflow:hidden}.inspector-sidebar-status-copy>span{color:#57575b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.inspector-sidebar-status-card[data-state=disconnected] .inspector-sidebar-status-copy>span{color:#68686e}.inspector-sidebar-status-action{color:#3f176f;white-space:nowrap;background-color:#0000;border:0;border-radius:5px;justify-content:center;align-items:center;gap:0;width:28px;height:28px;padding:0;font-size:10px;font-weight:700;text-decoration:none;display:inline-flex}.inspector-sidebar-status-action:hover{color:#6430ab;background-color:#eee7f8;text-decoration:none}.inspector-sidebar-status-action svg{width:12px;height:12px}.inspector-sidebar-status-action-label{display:none}.inspector-sidebar-intelligence-setup{color:#3f176f;cursor:pointer;background-color:#eee7f8;border-color:#bba5df;text-decoration:none;transition:border-color .12s,background-color .12s,box-shadow .3s;animation:3.2s ease-in-out infinite inspector-sidebar-intelligence-setup-glow}@keyframes inspector-sidebar-intelligence-setup-glow{0%,to{box-shadow:0 0 #6430ab00}50%{box-shadow:0 0 16px 2px #6430ab26}}.inspector-sidebar-intelligence-setup:hover{background-color:#e4d9f4;border-color:#8e6fc0}.inspector-sidebar-intelligence-setup .inspector-sidebar-status-copy strong{color:#3f176f}.inspector-sidebar-setup-arrow{background-color:#6430ab1a;border-radius:5px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.inspector-sidebar-setup-arrow svg{width:13px;height:13px}.inspector-main{background-color:#fff;flex-direction:column;flex:auto;min-width:0;display:flex;position:relative}.cpk-memory-locked{background-color:#fff;justify-content:center;align-items:center;height:100%;padding:32px;display:flex;position:relative;overflow:hidden}.cpk-locked-preview{opacity:.58;pointer-events:none;grid-template-columns:minmax(180px,28%) 1fr;display:grid;position:absolute;inset:0;overflow:hidden}.cpk-locked-preview-sidebar{background-color:#fafafa;border-right:1px solid #dbdbe5;flex-direction:column;gap:12px;padding:28px 24px;display:flex}.cpk-locked-preview-row{background-color:#fff;border-radius:10px;padding:12px;box-shadow:inset 0 0 0 1px #eeeef4}.cpk-locked-preview-row[data-accent=true]{background-color:#eee6fe}.cpk-locked-preview-bar{background-color:#d7d7df;border-radius:999px}.cpk-locked-preview-row-title{width:var(--preview-width);height:8px}.cpk-locked-preview-row[data-accent=true] .cpk-locked-preview-row-title{background-color:#a984f5}.cpk-locked-preview-row-line{background-color:#e3e3eb;width:88%;height:6px;margin-top:10px}.cpk-locked-preview-row-line:last-child{background-color:#e8e8ef;width:62%;margin-top:7px}.cpk-locked-preview-main{background-color:#fff;min-width:0;padding:42px 48px}.cpk-locked-preview-heading{width:180px;height:10px}.cpk-locked-preview-copy{background-color:#e3e3eb;width:min(520px,58%);height:8px;margin-top:28px}.cpk-locked-preview-copy+.cpk-locked-preview-copy{background-color:#e8e8ef;width:min(430px,48%);margin-top:12px}.cpk-locked-preview-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:620px;margin-top:30px;display:grid}.cpk-locked-preview-card{background-color:#f5f5f8;border-radius:10px;height:116px;box-shadow:inset 0 0 0 1px #eeeef4}.cpk-locked-preview-footer-line{background-color:#e3e3eb;width:min(680px,74%);height:10px;margin-top:34px}.cpk-locked-preview-footer-line+.cpk-locked-preview-footer-line{background-color:#e8e8ef;width:min(560px,60%);margin-top:14px}.cpk-memory-locked-scrim{pointer-events:none;background:radial-gradient(circle,#ffffffe6 0,#ffffffc7 24%,#ffffff57 48%,#ffffff8f 100%);position:absolute;inset:0}.cpk-memory-locked-content{z-index:1;color:#57575b;text-align:center;max-width:440px;position:relative}.cpk-memory-locked-icon-wrap{justify-content:center;margin:0 auto 18px;display:flex}.cpk-memory-locked-icon{color:#57575b;background-color:#eee6fe;border:1px solid #dfd6fb;border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;display:flex;box-shadow:0 8px 18px #57575b24}.cpk-memory-locked-title{color:#010507;margin:0 0 8px;font-size:16px;font-weight:600;line-height:1.35}.cpk-memory-locked-copy{color:#57575b;max-width:380px;margin:0 auto 18px;font-size:13px;line-height:1.55}.cpk-memory-locked-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.cpk-memory-locked-action{color:#fff;background-color:#6430ab;border:1px solid #6430ab;border-radius:5px;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:8px 12px;font-size:12px;font-weight:600;text-decoration:none;display:inline-flex}.cpk-memory-locked-action:hover{background-color:#4e238c;border-color:#4e238c}.cpk-memory-locked-action-secondary{color:#57575b;background-color:#fff;border-color:#dbdbe5}.cpk-memory-locked-action-secondary:hover{background-color:#f7f7f9;border-color:#afafb7}.inspector-home{background-color:#fff;min-height:100%;padding:30px 32px 40px;position:relative;overflow:auto}.inspector-home:before{display:none}.inspector-home>*{width:min(100%,960px);margin-left:auto;margin-right:auto}.inspector-settings{color:#010507;background-color:#fff;min-height:100%;padding:28px 28px 36px;overflow:auto}.inspector-settings-header{border-bottom:1px solid #d5d3e4;max-width:70ch;padding-bottom:22px}.inspector-settings-title{color:#010507;margin:0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:28px;font-weight:600;line-height:1.15}.inspector-settings-subtitle{color:#57575b;max-width:60ch;margin:10px 0 0;font-size:14px;line-height:1.5}.inspector-settings-section{grid-template-columns:minmax(138px,168px) minmax(0,1fr);gap:30px;max-width:820px;margin-top:28px;display:grid}.inspector-settings-section-heading{align-items:flex-start;gap:10px;display:flex}.inspector-settings-section-icon{color:#3f176f;background-color:#eee6fe;border:1px solid #bec2ff;border-radius:5px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.inspector-settings-section-icon svg{width:16px;height:16px}.inspector-settings-section-heading h2,.inspector-settings-status-row h3{color:#010507;margin:0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-weight:600}.inspector-settings-section-heading h2{font-size:15px;line-height:1.3}.inspector-settings-section-heading p{color:#68686e;margin:5px 0 0;font-size:11px;line-height:1.45}.inspector-settings-privacy{border-top:1px solid #d5d3e4;border-bottom:1px solid #d5d3e4;padding:20px 0 22px}.inspector-settings-status-row{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.inspector-settings-status-row h3{font-size:16px;line-height:1.3}.inspector-settings-status-row p{color:#57575b;max-width:56ch;margin:8px 0 0;font-size:13px;line-height:1.55}.inspector-settings-status{color:#087653;background-color:#e5f7f1;border:1px solid #85d3bb;border-radius:999px;flex:none;align-items:center;min-height:24px;padding:3px 8px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.inspector-settings-privacy[data-state=disabled] .inspector-settings-status{color:#7d4d0a;background-color:#fff5df;border-color:#dfc08f}.inspector-settings-private-content{border-top:1px solid #e4e4ec;margin-top:20px;padding-top:18px}.inspector-settings-private-content strong{color:#010507;font-size:13px;font-weight:700}.inspector-settings-private-content>p{color:#68686e;margin:4px 0 0;font-size:11px;line-height:1.45}.inspector-settings-private-content ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:12px 0 0;display:grid}.inspector-settings-private-content li{color:#3e3d48;align-items:center;gap:7px;min-width:0;font-size:12px;line-height:1.35;display:flex}.inspector-settings-private-content li span{color:#087653;flex:none;display:inline-flex}.inspector-settings-private-content li svg{width:14px;height:14px}.inspector-settings-policy-link{color:#3f176f;text-underline-offset:3px;outline-offset:2px;outline:2px solid #0000;align-items:center;gap:6px;min-height:32px;margin-top:20px;font-size:12px;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;display:inline-flex}.inspector-settings-policy-link:hover{color:#6430ab}.inspector-settings-policy-link:focus-visible{outline-color:#6430ab}.inspector-settings-policy-link svg{width:14px;height:14px}@media (max-width:720px){.inspector-settings{padding:24px 20px 32px}.inspector-settings-section{grid-template-columns:1fr;gap:18px}.inspector-settings-section-heading p{max-width:42ch}}@media (max-width:480px){.inspector-settings-status-row{flex-direction:column;gap:12px}.inspector-settings-private-content ul{grid-template-columns:1fr}}.inspector-home-card,.inspector-home-story{background-color:#ffffffd1;border:1px solid #deddea;border-radius:5px;padding:18px 18px 16px;position:relative}.inspector-home-eyebrow,.inspector-home-card-label,.inspector-home-meta{color:#57575b;margin:0;font-size:12px;font-weight:600}.inspector-home-title,.inspector-home-section-title,.inspector-home-card-title{color:#010507;margin:8px 0 0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:28px;font-weight:600;line-height:1.15}.inspector-home-section-title{letter-spacing:-.015em;margin:0 0 14px;font-size:17px}.inspector-home-card-title{font-size:16px}.inspector-home-body,.inspector-home-card-copy{color:#57575b;max-width:52ch;margin:10px 0 0;font-size:15px;line-height:1.5}.inspector-home-section{margin-top:24px;position:relative}.inspector-home>.inspector-home-section:first-child{margin-top:0}.inspector-whats-new-preview+.inspector-home-section{margin-top:20px}.inspector-home-section-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.inspector-home-section-header .inspector-home-section-title{margin-bottom:0}.inspector-home-section-header>span{color:#68686e;font-size:11px;font-weight:600;line-height:1.35}.inspector-system-health-header>span[data-tone=success]{color:#087653}.inspector-system-health-header>span[data-tone=checking]{color:#8a5900}.inspector-system-health-header>span[data-tone=offline],.inspector-system-health-header>span[data-tone=error]{color:#b32d3b}.inspector-system-health-section{background-color:#f7f4fe;border:1px solid #c8c6e6;border-radius:5px;overflow:hidden}.inspector-system-health-section .inspector-system-health-header{background-color:#f7f4fe;border-bottom:1px solid #d5d3e4;align-items:center;min-height:76px;margin:0;padding:18px}.inspector-system-health-heading{min-width:0}.inspector-system-health-heading .inspector-home-section-title{color:#010507;letter-spacing:-.025em;font-size:18px}.inspector-system-health-state,.inspector-intelligence-hud-state{color:#087653;background-color:#e5f7f1;border:1px solid #85d3bb;border-radius:999px;flex:none;align-items:center;gap:6px;min-height:24px;padding:4px 8px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.inspector-system-health-state>span,.inspector-intelligence-hud-state>span{background-color:currentColor;border-radius:999px;width:6px;height:6px}.inspector-system-health-state[data-tone=checking],.inspector-intelligence-hud-state[data-tone=checking]{background-color:#fff5df;border-color:#dfc08f;color:#7d4d0a!important}.inspector-system-health-state[data-tone=offline],.inspector-system-health-state[data-tone=error],.inspector-intelligence-hud-state[data-tone=offline],.inspector-intelligence-hud-state[data-tone=error]{background-color:#fff0f1;border-color:#e7a7ac;color:#b32d3b!important}.inspector-system-health-state[data-tone=unavailable],.inspector-intelligence-hud-state[data-tone=unavailable]{background-color:#f0f0f4;border-color:#c8c8d2;color:#57575b!important}.inspector-system-health{background-color:#d5d3e4;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.inspector-system-health-signal{background-color:#fff;grid-template-columns:minmax(0,1fr);align-items:start;min-width:0;min-height:84px;padding:15px 16px 14px;display:grid}.inspector-system-health-copy{flex-direction:column;min-width:0;display:flex}.inspector-system-health-signal dt{color:#68686e;letter-spacing:.035em;text-transform:uppercase;font-size:10px;font-weight:700;line-height:1.3}.inspector-system-health-signal dd{color:#010507;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:5px 0 0;font-size:15px;font-weight:700;overflow:hidden}.inspector-system-health-signal small{color:#68686e;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-top:4px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;line-height:1.4;overflow:hidden}small.inspector-system-health-detail{letter-spacing:0;font-family:inherit;font-size:11px;font-weight:500;line-height:1.4}.inspector-system-health-url{cursor:help;outline:none;position:relative;overflow:visible!important}.inspector-system-health-url>span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.inspector-system-health-url:after{z-index:30;color:#f3f4f8;content:attr(data-full-value);opacity:0;overflow-wrap:anywhere;pointer-events:none;white-space:normal;background-color:#15171e;border:1px solid #3a3d49;border-radius:4px;width:max-content;max-width:min(360px,70vw);padding:7px 9px;font-size:10px;font-weight:500;line-height:1.45;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 7px);left:0;transform:translateY(3px);box-shadow:0 8px 20px #0105072e}.inspector-system-health-url:hover:after,.inspector-system-health-url:focus-visible:after{opacity:1;transform:translateY(0)}.inspector-system-health-url:focus-visible>span{outline-offset:2px;border-radius:3px;outline:2px solid #6430ab}.inspector-system-health-signal[data-tone=success] dd{color:#087653}.inspector-system-health-signal[data-tone=active] dd{color:#8a5900}.inspector-system-health-event-link{width:100%;min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;padding:0;display:block}.inspector-system-health-event-link>span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.inspector-system-health-event-link>.inspector-system-health-event-type{color:#57575b;letter-spacing:.025em;background-color:#f1f1f3;border-radius:999px;align-items:center;width:fit-content;max-width:100%;padding:3px 6px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700;line-height:1.25;display:inline-flex}.inspector-system-health-event-link>small{color:#68686e;align-items:center;gap:6px;margin:5px 0 0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:10px;font-weight:500;line-height:1.25;display:flex}.inspector-system-health-event-meta strong{color:#6430ab;text-underline-offset:3px;font-weight:700;-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.inspector-system-health-signal[data-tone=error] .inspector-system-health-event-type{color:#b32d3b;background-color:#fff0f1}.inspector-system-health-signal[data-tone=success] .inspector-system-health-event-type{color:#087653;background-color:#e3f5ee}.inspector-system-health-signal[data-tone=active] .inspector-system-health-event-type{color:#8a5900;background-color:#fff5df}.inspector-system-health-event-link:hover .inspector-system-health-event-meta strong{text-decoration-color:currentColor}.inspector-system-health-event-link:focus-visible{outline-offset:3px;border-radius:3px;outline:2px solid #6430ab}.inspector-intelligence-hud{background-color:#f7f4fe;border:1px solid #c8c6e6;border-radius:5px;overflow:hidden}.inspector-intelligence-hud-header{justify-content:space-between;align-items:center;gap:24px;padding:18px;display:flex}.inspector-intelligence-hud[data-state=disconnected]{border-color:#bba5df}.inspector-intelligence-hud[data-state=disconnected] .inspector-intelligence-hud-header{align-items:center;min-height:132px;padding:22px}.inspector-intelligence-hud[data-state=disconnected] .inspector-intelligence-hud-header-actions{flex-direction:column;align-items:flex-end;gap:10px}.inspector-intelligence-hud-heading{min-width:0}.inspector-intelligence-hud-header-actions{flex:none;align-items:center;gap:8px;display:flex}.inspector-intelligence-hud-heading .inspector-home-section-title{margin:0;font-size:18px}.inspector-intelligence-hud-description{color:#4f4f55;max-width:64ch;margin:10px 0 0;font-size:12px;line-height:1.55}.inspector-intelligence-hud-action{color:#fff;background-color:#6430ab;border:1px solid #6430ab;border-radius:4px;flex:none;justify-content:center;align-items:center;gap:7px;min-height:34px;padding:8px 11px;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:11px;font-weight:700;text-decoration:none;display:inline-flex}.inspector-intelligence-hud-action:hover{background-color:#4e238c;border-color:#4e238c}.inspector-intelligence-hud-action svg{width:13px;height:13px}.inspector-intelligence-hud-connect-action{min-height:38px;padding:10px 14px;font-size:12px}.inspector-intelligence-hud-details{background-color:#d5d3e4;border-top:1px solid #d5d3e4;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:1px;display:grid}.inspector-intelligence-hud-details>section{background-color:#fff;min-width:0;padding:15px 18px 17px}.inspector-intelligence-hud-detail-label{color:#68686e;font-size:11px;font-weight:600;display:block}.inspector-intelligence-hud-detail-value{color:#010507;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:5px 0 0;font-size:14px;font-weight:700;display:block;overflow:hidden}.inspector-intelligence-hud-detail-subvalue{color:#68686e;text-transform:capitalize;margin-top:3px;font-size:10px;font-weight:500;display:block}.inspector-intelligence-hud-plan{grid-template-columns:minmax(0,1fr) minmax(120px,1fr);align-items:start;gap:24px;display:grid}.inspector-intelligence-hud-usage{min-width:0}.inspector-intelligence-hud-plan-action{color:#6430ab;text-underline-offset:3px;background-color:#0000;border:0;border-radius:0;gap:4px;min-height:auto;margin-top:9px;padding:0;font-size:10px;font-weight:700;line-height:1.2;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px}.inspector-intelligence-hud-plan-action:hover{color:#4e238c;background-color:#0000;border-color:#0000;text-decoration-color:currentColor}.inspector-intelligence-hud-plan-action svg{width:11px;height:11px}.inspector-home-usage-bar{background-color:#dbdbe5;border-radius:999px;width:min(160px,100%);height:5px;margin-top:8px;display:block;overflow:hidden}.inspector-home-usage-bar>span{background-color:#bec2ff;height:100%;display:block}.inspector-home-feature-groups{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));align-items:start;gap:12px;display:grid}.inspector-home-feature-group{background-color:#fff;border:1px solid #d5d3e4;border-radius:5px;overflow:hidden}.inspector-home-feature-group-header{color:#57575b;background-color:#f7f7f9;border-bottom:1px solid #e4e4ec;justify-content:space-between;align-items:center;gap:12px;min-height:40px;padding:9px 12px;display:flex}.inspector-home-feature-group-header strong{font-size:12px;font-weight:700}.inspector-home-feature-group-header>span{background-color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:22px;min-height:20px;padding:2px 6px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700;display:inline-flex}.inspector-home-feature-group[data-feature-state-group=active] .inspector-home-feature-group-header{color:#087653;background-color:#e5f7f1;border-color:#b9e3d6}.inspector-home-feature-list{background-color:#fff;flex-direction:column;margin:0;display:flex}.inspector-home-feature{color:#010507;background-color:#fff;grid-template-columns:minmax(0,1fr) auto 14px;align-items:center;gap:8px;min-width:0;min-height:43px;padding:10px 12px;font-size:12px;font-weight:600;text-decoration:none;display:grid}.inspector-home-feature+.inspector-home-feature{border-top:1px solid #ececf1}.inspector-home-feature-group-empty{color:#68686e;margin:0;padding:15px 12px;font-size:11px}.inspector-home-feature:hover{background-color:#f7f7f9}.inspector-home-feature-arrow svg{width:12px;height:12px}.inspector-home-feature small{color:#087653;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700}.inspector-home-feature[data-state=off],.inspector-home-feature[data-state=off] small,.inspector-home-feature-arrow{color:#68686e}.inspector-home-features-empty{color:#57575b;border-top:1px solid #deddea;border-bottom:1px solid #deddea;margin:14px 0 0;padding:16px 0;font-size:12px}.inspector-home-news{gap:12px;display:grid}.inspector-whats-new-preview{color:#010507;background-color:#f7f4fe;border:1px solid #c8c6e6;border-radius:5px;align-items:stretch;width:100%;min-height:64px;display:flex;position:relative;overflow:hidden;container-type:inline-size}.inspector-whats-new-preview:has(.inspector-whats-new-preview-body:hover){background-color:#f1ebfc;border-color:#8f91d7}.inspector-whats-new-preview-body{min-width:0;color:inherit;text-align:left;cursor:pointer;background-color:#0000;border:0;flex:auto;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.inspector-whats-new-preview-copy{flex-direction:column;gap:3px;min-width:0;display:flex}.inspector-whats-new-preview-title{align-items:center;gap:8px;min-width:0;display:flex}.inspector-whats-new-preview-copy strong{text-overflow:ellipsis;white-space:nowrap;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:13px;line-height:1.25;overflow:hidden}.inspector-whats-new-preview-copy>span:last-child{color:#4e4c63;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.4;overflow:hidden}.inspector-whats-new-preview-action{color:#3f176f;white-space:nowrap;flex:none;align-items:center;gap:6px;font-size:11px;font-weight:700;display:inline-flex}.inspector-whats-new-preview-action svg{width:15px;height:15px}@container (max-width:640px){.inspector-whats-new-preview-body{grid-template-columns:minmax(0,1fr)}.inspector-whats-new-preview-action{display:none}}.inspector-whats-new-preview-dismiss{color:#68686e;cursor:pointer;background-color:#0000;border:0;border-radius:5px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.inspector-whats-new-preview-dismiss:hover{color:#3f176f;background-color:#6430ab1a}.inspector-whats-new-preview-dismiss svg{width:14px;height:14px}@media (max-width:720px){.inspector-account-cta{width:32px;padding-inline:0}.inspector-account-cta-label{display:none}.inspector-home{padding:24px 22px 34px}.inspector-intelligence-hud-header{flex-wrap:wrap}.inspector-intelligence-hud-details{grid-template-columns:1fr}.inspector-intelligence-hud-plan{grid-template-columns:repeat(2,minmax(0,1fr))}.inspector-whats-new-preview-action{display:none}}@media (max-width:600px){.inspector-system-health{grid-template-columns:1fr}}@media (max-width:480px){.inspector-system-health-section .inspector-system-health-header{align-items:flex-start}.inspector-intelligence-hud-header{flex-direction:column;align-items:stretch}.inspector-intelligence-hud-header-actions{justify-content:space-between}.inspector-intelligence-hud-header-actions .inspector-intelligence-hud-action,.inspector-intelligence-hud-plan{width:100%}.inspector-intelligence-hud-plan{grid-template-columns:1fr;align-items:stretch}.inspector-intelligence-hud-plan-action{justify-self:start}.inspector-whats-new-header{align-items:center;gap:16px;width:calc(100% - 24px);padding:24px 22px}.inspector-whats-new-document,.inspector-whats-new-empty{padding:20px 22px 36px}.inspector-whats-new-document .announcement-content h1+p{font-size:16px}}.inspector-whats-new-header{background:#f8f7ff;border:1px solid #d8d8e8;border-radius:5px;justify-content:space-between;align-items:center;gap:24px;width:calc(100% - 44px);max-width:calc(70ch - 44px);padding:30px 32px 28px;display:flex;box-shadow:0 12px 28px #26224e0f}.inspector-whats-new-header .inspector-home-title{letter-spacing:-.035em;margin:0;font-size:clamp(27px,3.6vw,36px)}.inspector-whats-new-updated{color:#6c687c;letter-spacing:.01em;white-space:nowrap;flex:none;margin:0;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:11px;font-weight:600}.inspector-whats-new .inspector-home-news{max-width:70ch;margin-top:0}.inspector-whats-new-document,.inspector-whats-new-empty{max-width:70ch;padding:22px 32px 52px}.inspector-whats-new-document .announcement-content{color:#2b2b39;font-size:15px;line-height:1.72}.inspector-whats-new-document .announcement-content h1{color:#15131d;letter-spacing:-.032em;max-width:24ch;margin:0 0 16px;font-size:clamp(26px,3.2vw,34px);line-height:1.1}.inspector-whats-new-document .announcement-content h1+p{color:#504d61;max-width:58ch;margin-top:0;font-size:18px;line-height:1.58}.inspector-whats-new-document .announcement-content>hr:first-child{display:none}.inspector-whats-new-document .announcement-content h2:first-of-type{border-top:0;margin-top:14px;padding-top:0}.inspector-whats-new-document .announcement-content h2{color:#1b1924;letter-spacing:-.024em;border-top:1px solid #dfdeea;margin:44px 0 14px;padding-top:24px;font-size:21px;line-height:1.2}.inspector-whats-new-document .announcement-content p{max-width:70ch;margin:.85rem 0}.inspector-whats-new-document .announcement-content ul,.inspector-whats-new-document .announcement-content ol{max-width:68ch;margin:1.25rem 0 1.5rem;padding-left:1.4rem}.inspector-whats-new-document .announcement-content li+li{margin-top:.7rem}.inspector-whats-new-document .announcement-content a{color:#4e46a5;text-underline-offset:4px;font-weight:600;text-decoration-color:#4e46a56b;text-decoration-thickness:1px;transition:color .16s,text-decoration-color .16s}.inspector-whats-new-document .announcement-content a:hover{color:#312879;text-decoration-color:currentColor}.inspector-whats-new-empty{color:#5e5b70}.inspector-whats-new-empty .inspector-home-card-title{color:#1b1924;margin:0}.inspector-whats-new-empty .inspector-home-card-copy{max-width:48ch;margin:8px 0 0}.inspector-home-story-featured{padding:22px}.inspector-home-story-link{color:inherit;cursor:pointer;text-decoration:none;display:block}.inspector-home-story-link:hover{background-color:#fff;border-color:#8f91d7}.inspector-home-story[data-unread=true]{border-color:#bec2ff;padding-right:64px;box-shadow:0 0 0 1px #6430ab}.inspector-home-story-unread{color:#fff;letter-spacing:.04em;text-transform:uppercase;background-color:#6430ab;border-radius:999px;align-items:center;min-height:18px;padding:0 7px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700;display:inline-flex}.inspector-nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:opacity .18s,width .22s;overflow:hidden}.inspector-nav-control{color:#57575b;min-height:32px;font:inherit;text-align:left;outline-offset:-2px;cursor:pointer;background-color:#0000;border:1px solid #0000;border-radius:5px;outline:2px solid #0000;flex:none;justify-content:flex-start;align-items:center;gap:6px;padding:6px 9px;font-size:12px;font-weight:600;line-height:1.25;display:flex}.inspector-nav-control:hover{color:#010507;background-color:#f0f0f4}.inspector-nav-control-active{color:#3f176f;background-color:#eee6fe;border-color:#bec2ff}.inspector-nav-icon{flex:none;align-items:center;display:inline-flex}.inspector-nav-icon svg{width:15px;height:15px}.inspector-nav-control:focus-visible,.inspector-account-control:focus-visible,[data-inspector-thread-cta]:focus-visible,[data-inspector-sidebar-intelligence-action]:focus-visible,[data-inspector-whats-new-preview]:focus-visible,[data-inspector-whats-new-dismiss]:focus-visible,[data-inspector-home-intelligence-action]:focus-visible,.inspector-home-feature:focus-visible,[data-inspector-action-placement=threads-footer]:focus-visible{outline-offset:2px;outline:2px solid #6430ab!important}.inspector-sidebar .inspector-nav-control:focus-visible,.inspector-sidebar .inspector-sidebar-label:focus-visible,.inspector-sidebar [data-inspector-thread-cta]:focus-visible{outline-offset:-2px!important}.inspector-account-control{color:#57575b;font:inherit;outline-offset:2px;cursor:pointer;background-color:#0000;border:1px solid #0000;outline:2px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.inspector-account-control:hover,.inspector-account-control-active{color:#3f176f;background-color:#6430ab17}:host ::selection{color:#010507;background-color:#cfd2ff}:host *{scrollbar-color:#aaa9c1 transparent;scrollbar-width:thin}:host ::-webkit-scrollbar{width:8px;height:8px}:host ::-webkit-scrollbar-thumb{background:#aaa9c1 padding-box padding-box;border:2px solid #0000;border-radius:999px}.inspector-account-control-icon{flex:none;justify-content:center;align-items:center;display:inline-flex}.inspector-account-control-icon svg{width:15px;height:15px}[data-inspector-thread-cta],[data-inspector-account-strip] button,[data-inspector-account-strip] a{cursor:pointer}@media (prefers-reduced-motion:reduce){.inspector-sidebar,.inspector-nav-label{transition:none}}[data-inspector-threads-setup-prompt],[data-inspector-threads-setup-link]{min-height:34px;font:inherit;outline-offset:2px;cursor:pointer;border:1px solid #dbdbe5;border-radius:7px;outline:2px solid #0000;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:12px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}[data-inspector-threads-setup-prompt]{color:#fff;background-color:#010507;border-color:#010507}[data-inspector-threads-setup-prompt]:hover{background-color:#2b2b2b;border-color:#2b2b2b}[data-inspector-threads-setup-link]{color:#57575b;background-color:#fff}[data-inspector-threads-setup-link]:hover{color:#010507;background-color:#f7f7f9;border-color:#afafb7}[data-inspector-threads-setup-prompt]:focus-visible,[data-inspector-threads-setup-link]:focus-visible{outline-offset:2px;outline:2px solid #6430ab}.inspector-threads-footer{color:#57575b;background-color:#f7f7f9;border-top:1px solid #dbdbe5;flex:none;gap:10px;padding:12px;font-size:11px;line-height:1.35;display:grid}.inspector-threads-usage{gap:6px;display:grid}[data-inspector-thread-count]{color:#010507;font-weight:600}[data-inspector-thread-expiry]{color:#57575b}.inspector-thread-progress{--inspector-thread-progress-color:#189370;width:100%;height:6px;accent-color:var(--inspector-thread-progress-color);border-radius:999px;overflow:hidden}.inspector-thread-progress[data-inspector-thread-capacity=warning]{--inspector-thread-progress-color:#b45309}.inspector-thread-progress[data-inspector-thread-capacity=critical]{--inspector-thread-progress-color:#be123c}.inspector-thread-progress::-webkit-progress-bar{background-color:#dbdbe5;border-radius:999px}.inspector-thread-progress::-webkit-progress-value{background-color:var(--inspector-thread-progress-color);border-radius:999px}.inspector-thread-progress::-moz-progress-bar{background-color:var(--inspector-thread-progress-color);border-radius:999px}[data-inspector-action-placement=threads-footer]{color:#57575b;outline-offset:2px;cursor:pointer;background-color:#0000;border:1px solid #d5d3e4;border-radius:5px;outline:2px solid #0000;justify-content:center;align-items:center;width:100%;min-height:32px;padding:6px 9px;font-size:11px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}[data-inspector-action-placement=threads-footer][data-inspector-action-intent=upgrade]{color:#fff;background-color:#6430ab;border-color:#6430ab}[data-inspector-action-placement=threads-footer][data-inspector-action-intent=upgrade]:hover{color:#fff;background-color:#3f176f;border-color:#3f176f}[data-inspector-action-placement=threads-footer]:hover{color:#010507;background-color:#f7f4fe;border-color:#c8c6e6}.cpk-threads-overview-video{opacity:0;transition:opacity .22s}.cpk-threads-overview{background-color:#f7f7f9;flex:1;justify-content:center;align-items:center;min-width:0;padding:32px;display:flex}.cpk-threads-overview-content{color:#57575b;width:100%;max-width:440px}.cpk-threads-overview-title{color:#010507;margin:0 0 10px;font-size:20px;font-weight:600;line-height:1.25}.cpk-threads-overview-copy{color:#57575b;margin:0 0 16px;font-size:13px;line-height:1.55}.cpk-threads-overview-actions{flex-wrap:wrap;gap:8px;display:flex}.cpk-threads-overview-action{outline-offset:2px;border:1px solid #0000;border-radius:7px;outline:2px solid #0000;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:8px 12px;font-size:12px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}.cpk-threads-overview-action-primary{color:#fff;background-color:#010507;border-color:#010507}.cpk-threads-overview-action-primary:hover{background-color:#2b2b2b;border-color:#2b2b2b}.cpk-threads-overview-action-secondary{color:#010507;background-color:#fff;border-color:#dbdbe5}.cpk-threads-overview-action-secondary:hover{background-color:#fff;border-color:#afafb7}.cpk-threads-overview-video[data-loaded=true]{opacity:1}.cpk-threads-overview-video-control{color:#3f176f;min-height:32px;font:inherit;outline-offset:2px;cursor:pointer;background-color:#fff;border:1px solid #dbdbe5;border-radius:5px;outline:2px solid #0000;justify-content:center;align-items:center;margin:0 0 14px;padding:6px 10px;font-size:12px;font-weight:600;line-height:1.25;display:inline-flex}.cpk-threads-overview-video-control:hover{color:#010507;background-color:#f7f7f9;border-color:#afafb7}.cpk-threads-overview-video-control:focus-visible{outline-offset:2px;outline:2px solid #6430ab}.cpk-threads-overview-video-fallback{color:#57575b;max-width:440px;margin:-4px 0 14px;font-size:12px;line-height:1.5}.cpk-threads-tour-launch{z-index:2;color:#57575b;outline-offset:2px;cursor:pointer;background-color:#fff;border:1px solid #dbdbe5;border-radius:7px;outline:2px solid #0000;padding:7px 10px;font-size:12px;font-weight:600;position:absolute;bottom:16px;right:16px;box-shadow:0 8px 18px #01050714}.cpk-threads-tour{z-index:3;color:#57575b;background-color:#fff;border:1px solid #dbdbe5;border-radius:10px;width:min(340px,100% - 32px);padding:14px;position:absolute;bottom:16px;right:16px;box-shadow:0 16px 36px #01050724}.cpk-threads-tour-step{color:#087653;text-transform:uppercase;margin-bottom:8px;font-family:Spline Sans Mono,monospace;font-size:10px;font-weight:600}.cpk-threads-tour-title{color:#010507;margin-bottom:6px;font-size:14px;font-weight:600;line-height:1.35}.cpk-threads-tour-copy{color:#57575b;font-size:12px;line-height:1.5}.cpk-threads-tour-actions{justify-content:space-between;gap:8px;margin-top:14px;display:flex}.cpk-threads-tour-nav{gap:8px;display:flex}.cpk-threads-tour-skip,.cpk-threads-tour-button{font:inherit;outline-offset:2px;cursor:pointer;border-radius:7px;outline:2px solid #0000;padding:7px 10px;font-size:12px;font-weight:600}.cpk-threads-overview-action:focus-visible,.cpk-threads-tour-launch:focus-visible,.cpk-threads-tour-skip:focus-visible,.cpk-threads-tour-button:focus-visible{outline-color:#6430ab}.cpk-threads-tour-skip{color:#68686e;background-color:#0000;border:0;padding-inline:0}.cpk-threads-tour-button-secondary{color:#57575b;background-color:#fff;border:1px solid #dbdbe5}.cpk-threads-tour-button-primary{color:#fff;background-color:#010507;border:1px solid #010507}.cpk-threads-tour-button:disabled{cursor:not-allowed;opacity:.45}@media (max-width:720px){.cpk-threads-overview{padding:24px}}@media (prefers-reduced-motion:reduce){.cpk-threads-overview-video{transition:none}}.inspector-window[data-color-scheme=dark]{color-scheme:dark;color:#f3f4f8!important;background-color:#111319!important;border-color:#7b7d89!important}.inspector-window[data-color-scheme=dark]>div,.inspector-window[data-color-scheme=dark] .inspector-shell,.inspector-window[data-color-scheme=dark] .inspector-main,.inspector-window[data-color-scheme=dark] #cpk-main-scroll{color:#f3f4f8!important;background-color:#111319!important}.inspector-window[data-color-scheme=dark] .drag-handle,.inspector-window[data-color-scheme=dark] .inspector-account-strip{color:#f3f4f8!important;background:#171a22!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .inspector-account-logo{filter:brightness(0)invert();clip-path:inset(0 20% 0 0)}.inspector-window[data-color-scheme=dark] .inspector-account-logo-accent{filter:none;display:block}.inspector-window[data-color-scheme=dark] .inspector-agent-placeholder{color:#b8bbc7!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .inspector-account-control{color:#b8bbc7!important;border:0!important}.inspector-window[data-color-scheme=dark] .inspector-account-control:hover,.inspector-window[data-color-scheme=dark] .inspector-account-control-active{color:#d8d9ff!important;background-color:#292c38!important}.inspector-window[data-color-scheme=dark] .inspector-account-cta{color:#d8d9ff;background-color:#292b43}.inspector-window[data-color-scheme=dark] .inspector-account-cta:hover{color:#fff;background-color:#353854}.inspector-window[data-color-scheme=dark] .inspector-window-layout-menu{color:#f3f4f8;background-color:#191c24;border-color:#464957;box-shadow:0 12px 28px #00000052}.inspector-window[data-color-scheme=dark] .inspector-window-layout-menu button:hover,.inspector-window[data-color-scheme=dark] .inspector-window-layout-menu button:focus-visible{color:#d8d9ff;background-color:#292b43}.inspector-window[data-color-scheme=dark] .inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button{color:#f3f4f8!important;background-color:#20232c!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] .inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button:hover{background-color:#292c38!important;border-color:#777aae!important}.inspector-window[data-color-scheme=dark] .inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button>span:last-child{color:#aeb1bd!important}.inspector-window[data-color-scheme=dark] [data-context-dropdown-root=true]>div{color:#f3f4f8!important;box-shadow:none!important;background-color:#191c24!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] [data-context-dropdown-root=true]>div button:hover,.inspector-window[data-color-scheme=dark] [data-context-dropdown-root=true]>div button:focus{color:#f3f4f8!important;background-color:#343746!important}.inspector-window[data-color-scheme=dark] .inspector-sidebar{color:#f3f4f8;background-color:#15171e;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-sidebar-label{color:#8f93a1}.inspector-window[data-color-scheme=dark] .inspector-sidebar-rail-tooltip{color:#191c24;background-color:#e9e9f1;box-shadow:0 7px 18px #00000047}.inspector-window[data-color-scheme=dark] .inspector-nav-control,.inspector-window[data-color-scheme=dark] .inspector-sidebar-toggle{color:#b8bbc7}.inspector-window[data-color-scheme=dark] .inspector-nav-control:hover,.inspector-window[data-color-scheme=dark] .inspector-sidebar-toggle:hover{color:#fff;background-color:#22252f}.inspector-window[data-color-scheme=dark] .inspector-nav-control-active{color:#d8d9ff;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-sidebar-agent-scope{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-card{background-color:#191c24;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-copy strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-copy>span,.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-card[data-state=disconnected] .inspector-sidebar-status-copy>span{color:#9da1af}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-action{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-action:hover{color:#fff;background-color:#292b43}.inspector-window[data-color-scheme=dark] .inspector-sidebar-intelligence-setup{color:#d8d9ff;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-sidebar-intelligence-setup:hover{background-color:#343653;border-color:#777aae}.inspector-window[data-color-scheme=dark] .inspector-sidebar-intelligence-setup .inspector-sidebar-status-copy strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-sidebar-setup-arrow{background-color:#caccff1f}@media (prefers-reduced-motion:reduce){.inspector-sidebar-intelligence-setup{animation:none}}.inspector-window[data-color-scheme=dark] .inspector-home{background-color:#111319}.inspector-window[data-color-scheme=dark] .inspector-settings{color:#f3f4f8;background-color:#111319}.inspector-window[data-color-scheme=dark] .inspector-settings-header,.inspector-window[data-color-scheme=dark] .inspector-settings-privacy,.inspector-window[data-color-scheme=dark] .inspector-settings-private-content{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-settings-title,.inspector-window[data-color-scheme=dark] .inspector-settings-section-heading h2,.inspector-window[data-color-scheme=dark] .inspector-settings-status-row h3,.inspector-window[data-color-scheme=dark] .inspector-settings-private-content strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-settings-subtitle,.inspector-window[data-color-scheme=dark] .inspector-settings-section-heading p,.inspector-window[data-color-scheme=dark] .inspector-settings-status-row p,.inspector-window[data-color-scheme=dark] .inspector-settings-private-content>p{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-settings-section-icon{color:#d8d9ff;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-settings-private-content li{color:#c9ccd6}.inspector-window[data-color-scheme=dark] .inspector-settings-private-content li span{color:#75d8b9}.inspector-window[data-color-scheme=dark] .inspector-settings-status{color:#8ce1c5;background-color:#173b32;border-color:#347d69}.inspector-window[data-color-scheme=dark] .inspector-settings-privacy[data-state=disabled] .inspector-settings-status{color:#f2cf8f;background-color:#342916;border-color:#866932}.inspector-window[data-color-scheme=dark] .inspector-settings-policy-link{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-settings-policy-link:hover{color:#fff}.inspector-window[data-color-scheme=dark] .inspector-home-card,.inspector-window[data-color-scheme=dark] .inspector-home-story,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud,.inspector-window[data-color-scheme=dark] .inspector-home-feature-list,.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview{color:#f3f4f8;background:#191c24;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud[data-state=disconnected]{background-color:#1d1e2b;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud[data-state=disconnected] .inspector-intelligence-hud-description{color:#c5c7d0}.inspector-window[data-color-scheme=dark] .inspector-system-health,.inspector-window[data-color-scheme=dark] .inspector-system-health-section{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health-section{background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-system-health-section .inspector-system-health-header{background-color:#191c24;border-bottom-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health{background-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal{background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-system-health-event-link>small{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=success]{color:#8ce1c5}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=success],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=success]{background-color:#173b32;border-color:#347d69;color:#8ce1c5!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=checking],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=checking]{background-color:#342916;border-color:#866932;color:#f2cf8f!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=offline],.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=error],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=offline],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=error]{background-color:#3b1c22;border-color:#87424a;color:#ff9aa0!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=unavailable],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=unavailable]{background-color:#242731;border-color:#464957;color:#aeb1bd!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=checking]{color:#f2cf8f}.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=offline],.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=error]{color:#ff9aa0}.inspector-window[data-color-scheme=dark] .inspector-home-story-link:hover,.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview:has(.inspector-whats-new-preview-body:hover){background:#242131;border-color:#777aae}.inspector-window[data-color-scheme=dark] .inspector-home-title,.inspector-window[data-color-scheme=dark] .inspector-home-section-title,.inspector-window[data-color-scheme=dark] .inspector-home-card-title,.inspector-window[data-color-scheme=dark] .inspector-system-health-signal dd,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details .inspector-intelligence-hud-detail-value,.inspector-window[data-color-scheme=dark] .inspector-home-feature{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-home-eyebrow,.inspector-window[data-color-scheme=dark] .inspector-home-card-label,.inspector-window[data-color-scheme=dark] .inspector-home-meta,.inspector-window[data-color-scheme=dark] .inspector-home-body,.inspector-window[data-color-scheme=dark] .inspector-home-card-copy,.inspector-window[data-color-scheme=dark] .inspector-system-health-signal dt,.inspector-window[data-color-scheme=dark] .inspector-system-health-signal small,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-heading p,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details .inspector-intelligence-hud-detail-label,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details .inspector-intelligence-hud-detail-subvalue,.inspector-window[data-color-scheme=dark] .inspector-home-section-header>span,.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-copy>span:last-child{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details{background-color:#3a3d49;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details>section{background-color:#15171e}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-plan-action{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-plan-action:hover{color:#fff;background-color:#0000;border-color:#0000}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal+.inspector-system-health-signal,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details>section+section,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details,.inspector-window[data-color-scheme=dark] .inspector-home-features-empty{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=success] dd,.inspector-window[data-color-scheme=dark] .inspector-home-feature small{color:#8ce1c5}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=active] dd{color:#f2cf8f}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=error] .inspector-system-health-event-type{color:#ff9aa0;background-color:#3b1c22}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=success] .inspector-system-health-event-type{color:#8ce1c5;background-color:#173b32}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=active] .inspector-system-health-event-type{color:#f2cf8f;background-color:#342916}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group{background-color:#191c24;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group-header{color:#c9ccd6;background-color:#20232d;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group-header>span{color:#c9ccd6;background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group[data-feature-state-group=active] .inspector-home-feature-group-header{color:#8ce1c5;background-color:#173b32;border-color:#347d69}.inspector-window[data-color-scheme=dark] .inspector-home-feature{background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-home-feature:hover{background-color:#20232d}.inspector-window[data-color-scheme=dark] .inspector-home-feature+.inspector-home-feature{border-color:#2f323d}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group-empty{color:#9da1af}.inspector-window[data-color-scheme=dark] .inspector-home-feature[data-state=off]{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-home-feature[data-state=off] small,.inspector-window[data-color-scheme=dark] .inspector-home-feature-arrow{color:#9da1af}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-dismiss{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-dismiss:hover{color:#fff;background-color:#302a40}.inspector-window[data-color-scheme=dark] .inspector-home-usage-bar{background-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-thread-progress::-webkit-progress-bar{background-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-header{box-shadow:none;background-color:#1d1e2b;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-updated,.inspector-window[data-color-scheme=dark] .inspector-whats-new-empty{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-action{color:#d8d9ff}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview:hover .inspector-whats-new-preview-action{color:#fff}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document,.inspector-window[data-color-scheme=dark] .inspector-whats-new-empty{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content{color:#c9ccd6}.inspector-window[data-color-scheme=dark] .inspector-whats-new-empty .inspector-home-card-title{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h1+p{color:#c9ccd6}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h2{border-top-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h1,.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h2,.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h3,.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content a{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-threads-footer{color:#aeb1bd;background-color:#15171e;border-color:#343742}.inspector-window[data-color-scheme=dark] [data-inspector-thread-count]{color:#f3f4f8}.inspector-window[data-color-scheme=dark] [data-inspector-thread-expiry]{color:#aeb1bd}.inspector-window[data-color-scheme=dark] [data-inspector-action-placement=threads-footer]{color:#d8d9ff;background-color:#191c24;border-color:#464957}.inspector-window[data-color-scheme=dark] [data-inspector-action-placement=threads-footer]:hover{color:#fff;background-color:#20232d;border-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-threads-overview{background-color:#111319}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-content,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-copy,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-fallback,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-copy{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-title,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-title{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-frame{background:linear-gradient(135deg,#666a9e3d,#347d6929),#191c24;border-color:#3a3d49;box-shadow:0 8px 20px #00000038}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-control,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-secondary,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-launch,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-secondary{color:#d8d9ff;background-color:#191c24;border-color:#464957}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-control:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-secondary:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-launch:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-secondary:hover{color:#fff;background-color:#242731;border-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-primary,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-primary{color:#171823;background-color:#caccff;border-color:#caccff}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-primary:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-primary:hover{background-color:#d8d9ff;border-color:#d8d9ff}.inspector-window[data-color-scheme=dark] .cpk-threads-tour{color:#aeb1bd;background-color:#191c24;border-color:#464957;box-shadow:0 16px 36px #00000052}.inspector-window[data-color-scheme=dark] .cpk-threads-tour-step{color:#8ce1c5}.inspector-window[data-color-scheme=dark] .cpk-threads-tour-skip{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action:focus-visible,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-launch:focus-visible,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-skip:focus-visible,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button:focus-visible{outline-color:#bec2ff}.inspector-window[data-color-scheme=dark] .cpk-memory-locked{color:#f3f4f8;background-color:#111319}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-sidebar{background-color:#15171e;border-color:#2f323d}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-main{background-color:#111319}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row{background-color:#191c24;box-shadow:inset 0 0 0 1px #2f323d}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row[data-accent=true]{background-color:#292b43}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-bar{background-color:#333641}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row[data-accent=true] .cpk-locked-preview-row-title{background-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row-line,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-copy,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-footer-line{background-color:#2f323d}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row-line:last-child,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-copy+.cpk-locked-preview-copy,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-footer-line+.cpk-locked-preview-footer-line{background-color:#292c36}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-card{background-color:#191c24;box-shadow:inset 0 0 0 1px #2f323d}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-scrim{background:radial-gradient(circle,#111319f0 0,#111319d6 24%,#11131975 48%,#111319ad 100%)}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-content,.inspector-window[data-color-scheme=dark] .cpk-memory-locked-copy{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-title{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-icon{color:#d8d9ff;box-shadow:none;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-action-secondary{color:#d8d9ff;background-color:#191c24;border-color:#464957}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-action-secondary:hover{color:#fff;background-color:#242731;border-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-agent-overview,.inspector-window[data-color-scheme=dark] .cpk-section-card{background-color:#191c24!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .cpk-section-header{background-color:#242731!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .cpk-section-header h4{color:#f3f4f8!important}.inspector-window[data-color-scheme=dark] .cpk-agent-icon{color:#d8d9ff!important;background-color:#292b43!important}.inspector-window[data-color-scheme=dark] .cpk-stat-card{background-color:#191c24!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] button.cpk-stat-card:hover{background-color:#20232d!important}.inspector-window[data-color-scheme=dark] .cpk-agent-view .divide-gray-200>:not([hidden])~:not([hidden]){border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .cpk-json-block{color:#c9ccd6}.inspector-window[data-color-scheme=dark] [class*=bg-emerald-50],.inspector-window[data-color-scheme=dark] [class*=bg-green-100]{color:#8ce1c5!important;background-color:#173b32!important}.inspector-window[data-color-scheme=dark] [class*=bg-rose-50]{color:#ff9aa0!important;background-color:#3b1c22!important}.inspector-window[data-color-scheme=dark] [class*=bg-amber-50],.inspector-window[data-color-scheme=dark] [class*=bg-amber-100]{color:#f2cf8f!important;background-color:#342916!important}.inspector-window[data-color-scheme=dark] [class*=bg-blue-50],.inspector-window[data-color-scheme=dark] [class*=bg-blue-100],.inspector-window[data-color-scheme=dark] [class*=bg-sky-50],.inspector-window[data-color-scheme=dark] [class*=bg-violet-50],.inspector-window[data-color-scheme=dark] [class*=bg-purple-50],.inspector-window[data-color-scheme=dark] [class*=bg-fuchsia-50]{color:#d8d9ff!important;background-color:#292b43!important}.inspector-window[data-color-scheme=dark] [class*=bg-white]{background-color:#191c24!important}.inspector-window[data-color-scheme=dark] [class*=bg-gray-50],.inspector-window[data-color-scheme=dark] [class*=bg-slate-50],.inspector-window[data-color-scheme=dark] [class*=bg-gray-100],.inspector-window[data-color-scheme=dark] [class*=bg-slate-100]{background-color:#171a22!important}.inspector-window[data-color-scheme=dark] [class*=text-gray-900],.inspector-window[data-color-scheme=dark] [class*=text-slate-900],.inspector-window[data-color-scheme=dark] [class*=text-gray-800],.inspector-window[data-color-scheme=dark] [class*=text-slate-800],.inspector-window[data-color-scheme=dark] [class*=text-gray-700],.inspector-window[data-color-scheme=dark] [class*=text-slate-700]{color:#f3f4f8!important}.inspector-window[data-color-scheme=dark] [class*=text-gray-600],.inspector-window[data-color-scheme=dark] [class*=text-slate-600],.inspector-window[data-color-scheme=dark] [class*=text-gray-500],.inspector-window[data-color-scheme=dark] [class*=text-slate-500],.inspector-window[data-color-scheme=dark] [class*=text-gray-400],.inspector-window[data-color-scheme=dark] [class*=text-slate-400]{color:#aeb1bd!important}.inspector-window[data-color-scheme=dark] [class*=border-gray-100],.inspector-window[data-color-scheme=dark] [class*=border-slate-100],.inspector-window[data-color-scheme=dark] [class*=border-gray-200],.inspector-window[data-color-scheme=dark] [class*=border-slate-200],.inspector-window[data-color-scheme=dark] [class*=border-gray-300],.inspector-window[data-color-scheme=dark] [class*=border-slate-300]{border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] input,.inspector-window[data-color-scheme=dark] select,.inspector-window[data-color-scheme=dark] textarea{color:#f3f4f8!important;background-color:#191c24!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] input::placeholder,.inspector-window[data-color-scheme=dark] textarea::placeholder{color:#858996}.inspector-window[data-color-scheme=dark] ::selection{color:#fff;background-color:#5b5f92}@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-tracking{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-duration{syntax:\"*\";inherits:false}@property --tw-ease{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 spin{to{transform:rotate(360deg)}}@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-tracking: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-duration:initial;--tw-ease: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-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-950:oklch(28.3% .141 291.089);--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-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-950:oklch(27.1% .105 12.094);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--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;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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{.\\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.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-3{margin-inline:calc(var(--spacing)*3)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.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)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-auto{margin-right:auto}.mb-0\\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-1{margin-left:calc(var(--spacing)*1)}.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-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\\[28rem\\]{height:28rem}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing)*32)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-7{min-height:calc(var(--spacing)*7)}.min-h-\\[20rem\\]{min-height:20rem}.min-h-\\[40px\\]{min-height:40px}.min-h-\\[420px\\]{min-height:420px}.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-4{width:calc(var(--spacing)*4)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-40{width:calc(var(--spacing)*40)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[240px\\]{max-width:240px}.max-w-full{max-width:100%}.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-\\[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-x-0\\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.-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-nesw-resize{cursor:nesw-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.list-none{list-style-type:none}.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-end{align-items:flex-end}.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-\\[16px\\]{border-radius:16px}.rounded-\\[28px\\]{border-radius:28px}.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-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-rose-300{border-color:var(--color-rose-300)}.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)}.bg-\\[\\#00000014\\]{background-color:#00000014}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-black{background-color:var(--color-black)}.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-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.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-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.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-0\\.5{padding:calc(var(--spacing)*.5)}.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-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.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)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\\.5{padding-top:calc(var(--spacing)*1.5)}.pt-8{padding-top:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-\\[22px\\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.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)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[rgb\\(13\\,13\\,13\\)\\]{color:#0d0d0d}.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-rose-950{color:var(--color-rose-950)}.text-sky-700{color:var(--color-sky-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-800{color:var(--color-slate-800)}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-violet-950{color:var(--color-violet-950)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.decoration-violet-300{-webkit-text-decoration-color:var(--color-violet-300);-webkit-text-decoration-color:var(--color-violet-300);text-decoration-color:var(--color-violet-300)}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.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-\\[0_4px_4px_0_\\#0000000a\\,0_0_1px_0_\\#0000009e\\]{--tw-shadow:0 4px 4px 0 var(--tw-shadow-color,#0000000a),0 0 1px 0 var(--tw-shadow-color,#0000009e);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,.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}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.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-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,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}.focus-within\\:shadow-\\[0_6px_18px_0_\\#00000014\\,0_0_1px_0_\\#0000009e\\]:focus-within{--tw-shadow:0 6px 18px 0 var(--tw-shadow-color,#00000014),0 0 1px 0 var(--tw-shadow-color,#0000009e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.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\\: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-rose-100:hover{background-color:var(--color-rose-100)}.hover\\:bg-violet-100:hover{background-color:var(--color-violet-100)}.hover\\:text-gray-900:hover{color:var(--color-gray-900)}.hover\\:text-violet-800:hover{color:var(--color-violet-800)}.hover\\:decoration-violet-700:hover{-webkit-text-decoration-color:var(--color-violet-700);-webkit-text-decoration-color:var(--color-violet-700);text-decoration-color:var(--color-violet-700)}.hover\\:opacity-70:hover{opacity:.7}}.focus\\:border-gray-300:focus{border-color:var(--color-gray-300)}.focus\\:border-violet-400:focus{border-color:var(--color-violet-400)}.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\\:ring-violet-100:focus{--tw-ring-color:var(--color-violet-100)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:rounded:focus-visible{border-radius:.25rem}.focus-visible\\:rounded-sm:focus-visible{border-radius:var(--radius-sm)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-rose-300:focus-visible{--tw-ring-color:var(--color-rose-300)}.focus-visible\\:ring-violet-300:focus-visible{--tw-ring-color:var(--color-violet-300)}.focus-visible\\:ring-violet-400:focus-visible{--tw-ring-color:var(--color-violet-400)}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.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-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:opacity-60:active{opacity:.6}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-60:disabled{opacity:.6}@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\\]\\:h-3>svg{height:calc(var(--spacing)*3)}.\\[\\&\\>svg\\]\\:h-3\\.5>svg{height:calc(var(--spacing)*3.5)}.\\[\\&\\>svg\\]\\:h-\\[18px\\]>svg{height:18px}.\\[\\&\\>svg\\]\\:\\!w-8>svg{width:calc(var(--spacing)*8)!important}.\\[\\&\\>svg\\]\\:w-3>svg{width:calc(var(--spacing)*3)}.\\[\\&\\>svg\\]\\:w-3\\.5>svg{width:calc(var(--spacing)*3.5)}.\\[\\&\\>svg\\]\\:w-\\[18px\\]>svg{width:18px}.\\[\\&\\>svg\\]\\:animate-spin>svg{animation:var(--animate-spin)}.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}}.cpk-json-block{white-space:pre-wrap;word-break:break-all;color:#57575b;margin:0;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:11px;line-height:1.8;overflow:auto}.inspector-account-strip{border-bottom:1px solid #d8d8e8;width:100%;min-width:0;color:#010507!important;background:linear-gradient(90deg,#fff 0%,#f3f1ff 58%,#eefbf7 100%)!important}.inspector-account-logo{filter:none}.inspector-account-brand{position:relative}.inspector-account-logo-accent{clip-path:inset(0 0 0 80%);pointer-events:none;display:none;position:absolute;inset:0}.inspector-account-cta{isolation:isolate;color:#3f176f;white-space:nowrap;cursor:pointer;background-color:#eee6fe;border:0;border-radius:5px;flex:none;justify-content:center;align-items:center;gap:7px;min-height:32px;padding:7px 10px;font-size:11px;font-weight:700;line-height:1;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.inspector-account-cta:after{z-index:0;content:\"\";opacity:0;pointer-events:none;background:linear-gradient(105deg,#0000 0%,#ffffff14 32%,#ffffffad 50%,#ffffff14 68%,#0000 100%);width:68%;animation:3.8s cubic-bezier(.16,1,.3,1) infinite inspector-account-cta-shimmer;position:absolute;inset:0;transform:translate(-180%)skew(-14deg)}.inspector-account-cta>*{z-index:1;position:relative}.inspector-account-cta[data-motion-paused=true]:after{animation-play-state:paused}@keyframes inspector-account-cta-shimmer{0%{opacity:0;transform:translate(-180%)skew(-14deg)}12%{opacity:1}82%{opacity:.8}to{opacity:0;transform:translate(280%)skew(-14deg)}}.inspector-account-cta:hover{color:#32105d;background-color:#e4d8fc}.inspector-account-cta svg{width:14px;height:14px}@media (prefers-reduced-motion:reduce){.inspector-account-cta:after{animation:none}}.inspector-window-layout{position:relative}.inspector-window-layout-menu{z-index:60;color:#010507;background-color:#fff;border:1px solid #d8d8e8;border-radius:5px;width:188px;padding:4px;display:grid;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 10px 24px #1f173924}.inspector-window-layout-menu button{min-height:34px;color:inherit;text-align:left;cursor:pointer;background-color:#0000;border:0;border-radius:4px;align-items:center;gap:9px;padding:7px 9px;font-size:12px;font-weight:600;display:flex}.inspector-window-layout-menu button:hover,.inspector-window-layout-menu button:focus-visible{color:#3f176f;background-color:#eee6fe;outline:none}.inspector-window-layout-menu button span:first-child{flex:none;display:inline-flex}.inspector-agent-placeholder{color:#68686e;border-color:#c8c8d8}.inspector-primary-navigation,.inspector-child-navigation{display:none}.inspector-shell{background-color:#f7f6fd;flex:auto;min-height:0;display:flex}.inspector-sidebar{z-index:20;background-color:#f7f6fd;border-right:1px solid #d8d8e8;flex-direction:column;flex:none;gap:8px;width:224px;min-width:224px;padding:12px 10px;transition:width .22s,min-width .22s,padding .22s;display:flex;position:relative;overflow:visible}.inspector-sidebar[data-icon-rail=true]{width:56px;min-width:56px;padding:10px 6px}.inspector-sidebar-agent-scope{border-bottom:1px solid #d8d8e8;flex:none;min-width:0;padding-bottom:10px}.inspector-sidebar .inspector-agent-selector{width:100%;min-width:0}.inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button{background-color:#fff;border-radius:5px;max-width:none;min-height:34px;padding:6px 8px}.inspector-context-dropdown-icon{color:#68686e;display:inline-flex}.inspector-context-dropdown-icon svg,.inspector-context-dropdown-chevron svg{width:14px;height:14px}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-agent-scope{padding-bottom:8px}.inspector-sidebar[data-icon-rail=true] .inspector-agent-selector>[data-context-dropdown-root=true]>button{justify-content:center;width:100%;min-height:34px;padding:6px 0}.inspector-sidebar[data-icon-rail=true] .inspector-context-dropdown-label,.inspector-sidebar[data-icon-rail=true] .inspector-context-dropdown-chevron,.inspector-sidebar[data-icon-rail=true] .inspector-agent-placeholder span:last-child{display:none}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-agent-scope [data-context-dropdown-root=true]>div{margin-top:0;top:0;left:calc(100% + 8px)}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-section+.inspector-sidebar-section{border-top:1px solid #dbdbe5;margin-top:4px;padding-top:10px}.inspector-sidebar-nav{cursor:default;flex-direction:column;flex:auto;gap:14px;min-height:0;display:flex;overflow:hidden auto}.inspector-sidebar-section{flex-direction:column;gap:4px;display:flex}.inspector-sidebar-label{color:#838389;letter-spacing:.02em;text-align:left;text-transform:none;background:0 0;border:0;width:100%;margin:0 0 2px;padding:0 8px;font-size:11px;font-weight:600;display:block}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-label,.inspector-sidebar[data-icon-rail=true] .inspector-nav-label{display:none}.inspector-sidebar-rail-tooltip{z-index:60;color:#fff;pointer-events:none;white-space:nowrap;background-color:#242331;border-radius:6px;max-width:220px;padding:6px 9px;font-size:11px;font-weight:600;line-height:1.2;position:absolute;left:calc(100% + 8px);transform:translateY(-50%);box-shadow:0 7px 18px #1a172a2e}.inspector-sidebar-control{justify-content:flex-start;width:100%;min-height:36px;display:flex;position:relative}.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-control,.inspector-sidebar[data-icon-rail=true] .inspector-sidebar-toggle,.inspector-sidebar[data-icon-rail=true] .inspector-nav-control{justify-content:center;align-items:center;gap:0;padding:6px 0;overflow:hidden}.inspector-home-badge{background-color:#fa5f67;border-radius:999px;width:7px;height:7px;position:absolute;top:8px;right:8px}.inspector-sidebar[data-icon-rail=true] .inspector-home-badge{top:6px;right:8px}.inspector-sidebar-toggle{color:#57575b;width:100%;min-height:32px;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;flex:none;justify-content:flex-start;align-items:center;gap:6px;padding:6px 9px;font-size:12px;font-weight:600;display:flex}.inspector-sidebar-toggle:hover{color:#010507;background-color:#f0f0f4}.inspector-sidebar-footer{flex-direction:column;flex:none;gap:6px;padding:2px 0 18px;display:flex}.inspector-sidebar-status-list{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.inspector-sidebar-status-card{color:#2b2b2b;background-color:#fff;border:1px solid #d8d8e8;border-radius:7px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:52px;padding:9px 10px;display:grid;position:relative}.inspector-sidebar-status-copy{flex-direction:column;gap:2px;min-width:0;line-height:1.25;display:flex}.inspector-sidebar-status-copy strong{color:#010507;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700;overflow:hidden}.inspector-sidebar-status-copy>span{color:#57575b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.inspector-sidebar-status-card[data-state=disconnected] .inspector-sidebar-status-copy>span{color:#68686e}.inspector-sidebar-status-action{color:#3f176f;white-space:nowrap;background-color:#0000;border:0;border-radius:5px;justify-content:center;align-items:center;gap:0;width:28px;height:28px;padding:0;font-size:10px;font-weight:700;text-decoration:none;display:inline-flex}.inspector-sidebar-status-action:hover{color:#6430ab;background-color:#eee7f8;text-decoration:none}.inspector-sidebar-status-action svg{width:12px;height:12px}.inspector-sidebar-status-action-label{display:none}.inspector-sidebar-intelligence-setup{color:#3f176f;cursor:pointer;background-color:#eee7f8;border-color:#bba5df;text-decoration:none;transition:border-color .12s,background-color .12s,box-shadow .3s;animation:3.2s ease-in-out infinite inspector-sidebar-intelligence-setup-glow}@keyframes inspector-sidebar-intelligence-setup-glow{0%,to{box-shadow:0 0 #6430ab00}50%{box-shadow:0 0 16px 2px #6430ab26}}.inspector-sidebar-intelligence-setup:hover{background-color:#e4d9f4;border-color:#8e6fc0}.inspector-sidebar-intelligence-setup .inspector-sidebar-status-copy strong{color:#3f176f}.inspector-sidebar-setup-arrow{background-color:#6430ab1a;border-radius:5px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.inspector-sidebar-setup-arrow svg{width:13px;height:13px}.inspector-main{background-color:#fff;flex-direction:column;flex:auto;min-width:0;display:flex;position:relative}.cpk-memory-locked{background-color:#fff;justify-content:center;align-items:center;height:100%;padding:32px;display:flex;position:relative;overflow:hidden}.cpk-locked-preview{opacity:.58;pointer-events:none;grid-template-columns:minmax(180px,28%) 1fr;display:grid;position:absolute;inset:0;overflow:hidden}.cpk-locked-preview-sidebar{background-color:#fafafa;border-right:1px solid #dbdbe5;flex-direction:column;gap:12px;padding:28px 24px;display:flex}.cpk-locked-preview-row{background-color:#fff;border-radius:10px;padding:12px;box-shadow:inset 0 0 0 1px #eeeef4}.cpk-locked-preview-row[data-accent=true]{background-color:#eee6fe}.cpk-locked-preview-bar{background-color:#d7d7df;border-radius:999px}.cpk-locked-preview-row-title{width:var(--preview-width);height:8px}.cpk-locked-preview-row[data-accent=true] .cpk-locked-preview-row-title{background-color:#a984f5}.cpk-locked-preview-row-line{background-color:#e3e3eb;width:88%;height:6px;margin-top:10px}.cpk-locked-preview-row-line:last-child{background-color:#e8e8ef;width:62%;margin-top:7px}.cpk-locked-preview-main{background-color:#fff;min-width:0;padding:42px 48px}.cpk-locked-preview-heading{width:180px;height:10px}.cpk-locked-preview-copy{background-color:#e3e3eb;width:min(520px,58%);height:8px;margin-top:28px}.cpk-locked-preview-copy+.cpk-locked-preview-copy{background-color:#e8e8ef;width:min(430px,48%);margin-top:12px}.cpk-locked-preview-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:620px;margin-top:30px;display:grid}.cpk-locked-preview-card{background-color:#f5f5f8;border-radius:10px;height:116px;box-shadow:inset 0 0 0 1px #eeeef4}.cpk-locked-preview-footer-line{background-color:#e3e3eb;width:min(680px,74%);height:10px;margin-top:34px}.cpk-locked-preview-footer-line+.cpk-locked-preview-footer-line{background-color:#e8e8ef;width:min(560px,60%);margin-top:14px}.cpk-memory-locked-scrim{pointer-events:none;background:radial-gradient(circle,#ffffffe6 0,#ffffffc7 24%,#ffffff57 48%,#ffffff8f 100%);position:absolute;inset:0}.cpk-memory-locked-content{z-index:1;color:#57575b;text-align:center;max-width:440px;position:relative}.cpk-memory-locked-icon-wrap{justify-content:center;margin:0 auto 18px;display:flex}.cpk-memory-locked-icon{color:#57575b;background-color:#eee6fe;border:1px solid #dfd6fb;border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;display:flex;box-shadow:0 8px 18px #57575b24}.cpk-memory-locked-title{color:#010507;margin:0 0 8px;font-size:16px;font-weight:600;line-height:1.35}.cpk-memory-locked-copy{color:#57575b;max-width:380px;margin:0 auto 18px;font-size:13px;line-height:1.55}.cpk-memory-locked-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.cpk-memory-locked-action{color:#fff;background-color:#6430ab;border:1px solid #6430ab;border-radius:5px;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:8px 12px;font-size:12px;font-weight:600;text-decoration:none;display:inline-flex}.cpk-memory-locked-action:hover{background-color:#4e238c;border-color:#4e238c}.cpk-memory-locked-action-secondary{color:#57575b;background-color:#fff;border-color:#dbdbe5}.cpk-memory-locked-action-secondary:hover{background-color:#f7f7f9;border-color:#afafb7}.inspector-home{background-color:#fff;min-height:100%;padding:30px 32px 40px;position:relative;overflow:auto}.inspector-home:before{display:none}.inspector-home>*{width:min(100%,960px);margin-left:auto;margin-right:auto}.inspector-settings{color:#010507;background-color:#fff;min-height:100%;padding:28px 28px 36px;overflow:auto}.inspector-settings-header{border-bottom:1px solid #d5d3e4;max-width:70ch;padding-bottom:22px}.inspector-settings-title{color:#010507;margin:0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:28px;font-weight:600;line-height:1.15}.inspector-settings-subtitle{color:#57575b;max-width:60ch;margin:10px 0 0;font-size:14px;line-height:1.5}.inspector-settings-section{grid-template-columns:minmax(138px,168px) minmax(0,1fr);gap:30px;max-width:820px;margin-top:28px;display:grid}.inspector-settings-section-heading{align-items:flex-start;gap:10px;display:flex}.inspector-settings-section-icon{color:#3f176f;background-color:#eee6fe;border:1px solid #bec2ff;border-radius:5px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.inspector-settings-section-icon svg{width:16px;height:16px}.inspector-settings-section-heading h2,.inspector-settings-status-row h3{color:#010507;margin:0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-weight:600}.inspector-settings-section-heading h2{font-size:15px;line-height:1.3}.inspector-settings-section-heading p{color:#68686e;margin:5px 0 0;font-size:11px;line-height:1.45}.inspector-settings-privacy{border-top:1px solid #d5d3e4;border-bottom:1px solid #d5d3e4;padding:20px 0 22px}.inspector-settings-status-row{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.inspector-settings-status-row h3{font-size:16px;line-height:1.3}.inspector-settings-status-row p{color:#57575b;max-width:56ch;margin:8px 0 0;font-size:13px;line-height:1.55}.inspector-settings-status{color:#087653;background-color:#e5f7f1;border:1px solid #85d3bb;border-radius:999px;flex:none;align-items:center;min-height:24px;padding:3px 8px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.inspector-settings-privacy[data-state=disabled] .inspector-settings-status{color:#7d4d0a;background-color:#fff5df;border-color:#dfc08f}.inspector-settings-private-content{border-top:1px solid #e4e4ec;margin-top:20px;padding-top:18px}.inspector-settings-private-content strong{color:#010507;font-size:13px;font-weight:700}.inspector-settings-private-content>p{color:#68686e;margin:4px 0 0;font-size:11px;line-height:1.45}.inspector-settings-private-content ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:12px 0 0;display:grid}.inspector-settings-private-content li{color:#3e3d48;align-items:center;gap:7px;min-width:0;font-size:12px;line-height:1.35;display:flex}.inspector-settings-private-content li span{color:#087653;flex:none;display:inline-flex}.inspector-settings-private-content li svg{width:14px;height:14px}.inspector-settings-policy-link{color:#3f176f;text-underline-offset:3px;outline-offset:2px;outline:2px solid #0000;align-items:center;gap:6px;min-height:32px;margin-top:20px;font-size:12px;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;display:inline-flex}.inspector-settings-policy-link:hover{color:#6430ab}.inspector-settings-policy-link:focus-visible{outline-color:#6430ab}.inspector-settings-policy-link svg{width:14px;height:14px}@media (max-width:720px){.inspector-settings{padding:24px 20px 32px}.inspector-settings-section{grid-template-columns:1fr;gap:18px}.inspector-settings-section-heading p{max-width:42ch}}@media (max-width:480px){.inspector-settings-status-row{flex-direction:column;gap:12px}.inspector-settings-private-content ul{grid-template-columns:1fr}}.inspector-home-card,.inspector-home-story{background-color:#ffffffd1;border:1px solid #deddea;border-radius:5px;padding:18px 18px 16px;position:relative}.inspector-home-eyebrow,.inspector-home-card-label,.inspector-home-meta{color:#57575b;margin:0;font-size:12px;font-weight:600}.inspector-home-title,.inspector-home-section-title,.inspector-home-card-title{color:#010507;margin:8px 0 0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:28px;font-weight:600;line-height:1.15}.inspector-home-section-title{letter-spacing:-.015em;margin:0 0 14px;font-size:17px}.inspector-home-card-title{font-size:16px}.inspector-home-body,.inspector-home-card-copy{color:#57575b;max-width:52ch;margin:10px 0 0;font-size:15px;line-height:1.5}.inspector-home-section{margin-top:24px;position:relative}.inspector-home>.inspector-home-section:first-child{margin-top:0}.inspector-whats-new-preview+.inspector-home-section{margin-top:20px}.inspector-home-section-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.inspector-home-section-header .inspector-home-section-title{margin-bottom:0}.inspector-home-section-header>span{color:#68686e;font-size:11px;font-weight:600;line-height:1.35}.inspector-system-health-header>span[data-tone=success]{color:#087653}.inspector-system-health-header>span[data-tone=checking]{color:#8a5900}.inspector-system-health-header>span[data-tone=offline],.inspector-system-health-header>span[data-tone=error]{color:#b32d3b}.inspector-system-health-section{background-color:#f7f4fe;border:1px solid #c8c6e6;border-radius:5px;overflow:hidden}.inspector-system-health-section .inspector-system-health-header{background-color:#f7f4fe;border-bottom:1px solid #d5d3e4;align-items:center;min-height:76px;margin:0;padding:18px}.inspector-system-health-heading{min-width:0}.inspector-system-health-heading .inspector-home-section-title{color:#010507;letter-spacing:-.025em;font-size:18px}.inspector-system-health-state,.inspector-intelligence-hud-state{color:#087653;background-color:#e5f7f1;border:1px solid #85d3bb;border-radius:999px;flex:none;align-items:center;gap:6px;min-height:24px;padding:4px 8px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.inspector-system-health-state>span,.inspector-intelligence-hud-state>span{background-color:currentColor;border-radius:999px;width:6px;height:6px}.inspector-system-health-state[data-tone=checking],.inspector-intelligence-hud-state[data-tone=checking]{background-color:#fff5df;border-color:#dfc08f;color:#7d4d0a!important}.inspector-system-health-state[data-tone=offline],.inspector-system-health-state[data-tone=error],.inspector-intelligence-hud-state[data-tone=offline],.inspector-intelligence-hud-state[data-tone=error]{background-color:#fff0f1;border-color:#e7a7ac;color:#b32d3b!important}.inspector-system-health-state[data-tone=unavailable],.inspector-intelligence-hud-state[data-tone=unavailable]{background-color:#f0f0f4;border-color:#c8c8d2;color:#57575b!important}.inspector-system-health{background-color:#d5d3e4;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.inspector-system-health-signal{background-color:#fff;grid-template-columns:minmax(0,1fr);align-items:start;min-width:0;min-height:84px;padding:15px 16px 14px;display:grid}.inspector-system-health-copy{flex-direction:column;min-width:0;display:flex}.inspector-system-health-signal dt{color:#68686e;letter-spacing:.035em;text-transform:uppercase;font-size:10px;font-weight:700;line-height:1.3}.inspector-system-health-signal dd{color:#010507;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:5px 0 0;font-size:15px;font-weight:700;overflow:hidden}.inspector-system-health-signal small{color:#68686e;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-top:4px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;line-height:1.4;overflow:hidden}small.inspector-system-health-detail{letter-spacing:0;font-family:inherit;font-size:11px;font-weight:500;line-height:1.4}.inspector-system-health-url{cursor:help;outline:none;position:relative;overflow:visible!important}.inspector-system-health-url>span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.inspector-system-health-url:after{z-index:30;color:#f3f4f8;content:attr(data-full-value);opacity:0;overflow-wrap:anywhere;pointer-events:none;white-space:normal;background-color:#15171e;border:1px solid #3a3d49;border-radius:4px;width:max-content;max-width:min(360px,70vw);padding:7px 9px;font-size:10px;font-weight:500;line-height:1.45;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 7px);left:0;transform:translateY(3px);box-shadow:0 8px 20px #0105072e}.inspector-system-health-url:hover:after,.inspector-system-health-url:focus-visible:after{opacity:1;transform:translateY(0)}.inspector-system-health-url:focus-visible>span{outline-offset:2px;border-radius:3px;outline:2px solid #6430ab}.inspector-system-health-signal[data-tone=success] dd{color:#087653}.inspector-system-health-signal[data-tone=active] dd{color:#8a5900}.inspector-system-health-event-link{width:100%;min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;padding:0;display:block}.inspector-system-health-event-link>span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.inspector-system-health-event-link>.inspector-system-health-event-type{color:#57575b;letter-spacing:.025em;background-color:#f1f1f3;border-radius:999px;align-items:center;width:fit-content;max-width:100%;padding:3px 6px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700;line-height:1.25;display:inline-flex}.inspector-system-health-event-link>small{color:#68686e;align-items:center;gap:6px;margin:5px 0 0;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:10px;font-weight:500;line-height:1.25;display:flex}.inspector-system-health-event-meta strong{color:#6430ab;text-underline-offset:3px;font-weight:700;-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.inspector-system-health-signal[data-tone=error] .inspector-system-health-event-type{color:#b32d3b;background-color:#fff0f1}.inspector-system-health-signal[data-tone=success] .inspector-system-health-event-type{color:#087653;background-color:#e3f5ee}.inspector-system-health-signal[data-tone=active] .inspector-system-health-event-type{color:#8a5900;background-color:#fff5df}.inspector-system-health-event-link:hover .inspector-system-health-event-meta strong{text-decoration-color:currentColor}.inspector-system-health-event-link:focus-visible{outline-offset:3px;border-radius:3px;outline:2px solid #6430ab}.inspector-intelligence-hud{background-color:#f7f4fe;border:1px solid #c8c6e6;border-radius:5px;overflow:hidden}.inspector-intelligence-hud-header{justify-content:space-between;align-items:center;gap:24px;padding:18px;display:flex}.inspector-intelligence-hud[data-state=disconnected]{border-color:#bba5df}.inspector-intelligence-hud[data-state=disconnected] .inspector-intelligence-hud-header{align-items:center;min-height:132px;padding:22px}.inspector-intelligence-hud[data-state=disconnected] .inspector-intelligence-hud-header-actions{flex-direction:column;align-items:flex-end;gap:10px}.inspector-intelligence-hud-heading{min-width:0}.inspector-intelligence-hud-header-actions{flex:none;align-items:center;gap:8px;display:flex}.inspector-intelligence-hud-heading .inspector-home-section-title{margin:0;font-size:18px}.inspector-intelligence-hud-description{color:#4f4f55;max-width:64ch;margin:10px 0 0;font-size:12px;line-height:1.55}.inspector-intelligence-hud-action{color:#fff;background-color:#6430ab;border:1px solid #6430ab;border-radius:4px;flex:none;justify-content:center;align-items:center;gap:7px;min-height:34px;padding:8px 11px;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:11px;font-weight:700;text-decoration:none;display:inline-flex}.inspector-intelligence-hud-action:hover{background-color:#4e238c;border-color:#4e238c}.inspector-intelligence-hud-action svg{width:13px;height:13px}.inspector-intelligence-hud-connect-action{min-height:38px;padding:10px 14px;font-size:12px}.inspector-intelligence-hud-details{background-color:#d5d3e4;border-top:1px solid #d5d3e4;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:1px;display:grid}.inspector-intelligence-hud-details>section{background-color:#fff;min-width:0;padding:15px 18px 17px}.inspector-intelligence-hud-detail-label{color:#68686e;font-size:11px;font-weight:600;display:block}.inspector-intelligence-hud-detail-value{color:#010507;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:5px 0 0;font-size:14px;font-weight:700;display:block;overflow:hidden}.inspector-intelligence-hud-detail-subvalue{color:#68686e;text-transform:capitalize;margin-top:3px;font-size:10px;font-weight:500;display:block}.inspector-intelligence-hud-plan{grid-template-columns:minmax(0,1fr) minmax(120px,1fr);align-items:start;gap:24px;display:grid}.inspector-intelligence-hud-usage{min-width:0}.inspector-intelligence-hud-plan-action{color:#6430ab;text-underline-offset:3px;background-color:#0000;border:0;border-radius:0;gap:4px;min-height:auto;margin-top:9px;padding:0;font-size:10px;font-weight:700;line-height:1.2;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px}.inspector-intelligence-hud-plan-action:hover{color:#4e238c;background-color:#0000;border-color:#0000;text-decoration-color:currentColor}.inspector-intelligence-hud-plan-action svg{width:11px;height:11px}.inspector-home-usage-bar{background-color:#dbdbe5;border-radius:999px;width:min(160px,100%);height:5px;margin-top:8px;display:block;overflow:hidden}.inspector-home-usage-bar>span{background-color:#bec2ff;height:100%;display:block}.inspector-home-feature-groups{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));align-items:start;gap:12px;display:grid}.inspector-home-feature-group{background-color:#fff;border:1px solid #d5d3e4;border-radius:5px;overflow:hidden}.inspector-home-feature-group-header{color:#57575b;background-color:#f7f7f9;border-bottom:1px solid #e4e4ec;justify-content:space-between;align-items:center;gap:12px;min-height:40px;padding:9px 12px;display:flex}.inspector-home-feature-group-header strong{font-size:12px;font-weight:700}.inspector-home-feature-group-header>span{background-color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:22px;min-height:20px;padding:2px 6px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700;display:inline-flex}.inspector-home-feature-group[data-feature-state-group=active] .inspector-home-feature-group-header{color:#087653;background-color:#e5f7f1;border-color:#b9e3d6}.inspector-home-feature-list{background-color:#fff;flex-direction:column;margin:0;display:flex}.inspector-home-feature{color:#010507;background-color:#fff;grid-template-columns:minmax(0,1fr) auto 14px;align-items:center;gap:8px;min-width:0;min-height:43px;padding:10px 12px;font-size:12px;font-weight:600;text-decoration:none;display:grid}.inspector-home-feature+.inspector-home-feature{border-top:1px solid #ececf1}.inspector-home-feature-group-empty{color:#68686e;margin:0;padding:15px 12px;font-size:11px}.inspector-home-feature:hover{background-color:#f7f7f9}.inspector-home-feature-arrow svg{width:12px;height:12px}.inspector-home-feature small{color:#087653;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700}.inspector-home-feature[data-state=off],.inspector-home-feature[data-state=off] small,.inspector-home-feature-arrow{color:#68686e}.inspector-home-features-empty{color:#57575b;border-top:1px solid #deddea;border-bottom:1px solid #deddea;margin:14px 0 0;padding:16px 0;font-size:12px}.inspector-home-news{gap:12px;display:grid}.inspector-whats-new-preview{color:#010507;background-color:#f7f4fe;border:1px solid #c8c6e6;border-radius:5px;align-items:stretch;width:100%;min-height:64px;display:flex;position:relative;overflow:hidden;container-type:inline-size}.inspector-whats-new-preview:has(.inspector-whats-new-preview-body:hover){background-color:#f1ebfc;border-color:#8f91d7}.inspector-whats-new-preview-body{min-width:0;color:inherit;text-align:left;cursor:pointer;background-color:#0000;border:0;flex:auto;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.inspector-whats-new-preview-copy{flex-direction:column;gap:3px;min-width:0;display:flex}.inspector-whats-new-preview-title{align-items:center;gap:8px;min-width:0;display:flex}.inspector-whats-new-preview-copy strong{text-overflow:ellipsis;white-space:nowrap;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:13px;line-height:1.25;overflow:hidden}.inspector-whats-new-preview-copy>span:last-child{color:#4e4c63;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.4;overflow:hidden}.inspector-whats-new-preview-action{color:#3f176f;white-space:nowrap;flex:none;align-items:center;gap:6px;font-size:11px;font-weight:700;display:inline-flex}.inspector-whats-new-preview-action svg{width:15px;height:15px}@container (max-width:640px){.inspector-whats-new-preview-body{grid-template-columns:minmax(0,1fr)}.inspector-whats-new-preview-action{display:none}}.inspector-whats-new-preview-dismiss{color:#68686e;cursor:pointer;background-color:#0000;border:0;border-radius:5px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.inspector-whats-new-preview-dismiss:hover{color:#3f176f;background-color:#6430ab1a}.inspector-whats-new-preview-dismiss svg{width:14px;height:14px}@media (max-width:720px){.inspector-account-cta{width:32px;padding-inline:0}.inspector-account-cta-label{display:none}.inspector-home{padding:24px 22px 34px}.inspector-intelligence-hud-header{flex-wrap:wrap}.inspector-intelligence-hud-details{grid-template-columns:1fr}.inspector-intelligence-hud-plan{grid-template-columns:repeat(2,minmax(0,1fr))}.inspector-whats-new-preview-action{display:none}}@media (max-width:600px){.inspector-system-health{grid-template-columns:1fr}}@media (max-width:480px){.inspector-system-health-section .inspector-system-health-header{align-items:flex-start}.inspector-intelligence-hud-header{flex-direction:column;align-items:stretch}.inspector-intelligence-hud-header-actions{justify-content:space-between}.inspector-intelligence-hud-header-actions .inspector-intelligence-hud-action,.inspector-intelligence-hud-plan{width:100%}.inspector-intelligence-hud-plan{grid-template-columns:1fr;align-items:stretch}.inspector-intelligence-hud-plan-action{justify-self:start}.inspector-whats-new-header{align-items:center;gap:16px;width:calc(100% - 24px);padding:24px 22px}.inspector-whats-new-document,.inspector-whats-new-empty{padding:20px 22px 36px}.inspector-whats-new-document .announcement-content h1+p{font-size:16px}}.inspector-whats-new-header{background:#f8f7ff;border:1px solid #d8d8e8;border-radius:5px;justify-content:space-between;align-items:center;gap:24px;width:calc(100% - 44px);max-width:calc(70ch - 44px);padding:30px 32px 28px;display:flex;box-shadow:0 12px 28px #26224e0f}.inspector-whats-new-header .inspector-home-title{letter-spacing:-.035em;margin:0;font-size:clamp(27px,3.6vw,36px)}.inspector-whats-new-updated{color:#6c687c;letter-spacing:.01em;white-space:nowrap;flex:none;margin:0;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:11px;font-weight:600}.inspector-whats-new .inspector-home-news{max-width:70ch;margin-top:0}.inspector-whats-new-document,.inspector-whats-new-empty{max-width:70ch;padding:22px 32px 52px}.inspector-whats-new-document .announcement-content{color:#2b2b39;font-size:15px;line-height:1.72}.inspector-whats-new-document .announcement-content h1{color:#15131d;letter-spacing:-.032em;max-width:24ch;margin:0 0 16px;font-size:clamp(26px,3.2vw,34px);line-height:1.1}.inspector-whats-new-document .announcement-content h1+p{color:#504d61;max-width:58ch;margin-top:0;font-size:18px;line-height:1.58}.inspector-whats-new-document .announcement-content>hr:first-child{display:none}.inspector-whats-new-document .announcement-content h2:first-of-type{border-top:0;margin-top:14px;padding-top:0}.inspector-whats-new-document .announcement-content h2{color:#1b1924;letter-spacing:-.024em;border-top:1px solid #dfdeea;margin:44px 0 14px;padding-top:24px;font-size:21px;line-height:1.2}.inspector-whats-new-document .announcement-content p{max-width:70ch;margin:.85rem 0}.inspector-whats-new-document .announcement-content ul,.inspector-whats-new-document .announcement-content ol{max-width:68ch;margin:1.25rem 0 1.5rem;padding-left:1.4rem}.inspector-whats-new-document .announcement-content li+li{margin-top:.7rem}.inspector-whats-new-document .announcement-content a{color:#4e46a5;text-underline-offset:4px;font-weight:600;text-decoration-color:#4e46a56b;text-decoration-thickness:1px;transition:color .16s,text-decoration-color .16s}.inspector-whats-new-document .announcement-content a:hover{color:#312879;text-decoration-color:currentColor}.inspector-whats-new-empty{color:#5e5b70}.inspector-whats-new-empty .inspector-home-card-title{color:#1b1924;margin:0}.inspector-whats-new-empty .inspector-home-card-copy{max-width:48ch;margin:8px 0 0}.inspector-home-story-featured{padding:22px}.inspector-home-story-link{color:inherit;cursor:pointer;text-decoration:none;display:block}.inspector-home-story-link:hover{background-color:#fff;border-color:#8f91d7}.inspector-home-story[data-unread=true]{border-color:#bec2ff;padding-right:64px;box-shadow:0 0 0 1px #6430ab}.inspector-home-story-unread{color:#fff;letter-spacing:.04em;text-transform:uppercase;background-color:#6430ab;border-radius:999px;align-items:center;min-height:18px;padding:0 7px;font-family:Spline Sans Mono,ui-monospace,monospace;font-size:10px;font-weight:700;display:inline-flex}.inspector-nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:opacity .18s,width .22s;overflow:hidden}.inspector-nav-control{color:#57575b;min-height:32px;font:inherit;text-align:left;outline-offset:-2px;cursor:pointer;background-color:#0000;border:1px solid #0000;border-radius:5px;outline:2px solid #0000;flex:none;justify-content:flex-start;align-items:center;gap:6px;padding:6px 9px;font-size:12px;font-weight:600;line-height:1.25;display:flex}.inspector-nav-control:hover{color:#010507;background-color:#f0f0f4}.inspector-nav-control-active{color:#3f176f;background-color:#eee6fe;border-color:#bec2ff}.inspector-nav-icon{flex:none;align-items:center;display:inline-flex}.inspector-nav-icon svg{width:15px;height:15px}.inspector-nav-control:focus-visible,.inspector-account-control:focus-visible,[data-inspector-thread-cta]:focus-visible,[data-inspector-sidebar-intelligence-action]:focus-visible,[data-inspector-whats-new-preview]:focus-visible,[data-inspector-whats-new-dismiss]:focus-visible,[data-inspector-home-intelligence-action]:focus-visible,.inspector-home-feature:focus-visible,[data-inspector-action-placement=threads-footer]:focus-visible{outline-offset:2px;outline:2px solid #6430ab!important}.inspector-sidebar .inspector-nav-control:focus-visible,.inspector-sidebar .inspector-sidebar-label:focus-visible,.inspector-sidebar [data-inspector-thread-cta]:focus-visible{outline-offset:-2px!important}.inspector-account-control{color:#57575b;font:inherit;outline-offset:2px;cursor:pointer;background-color:#0000;border:1px solid #0000;outline:2px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.inspector-account-control:hover,.inspector-account-control-active{color:#3f176f;background-color:#6430ab17}:host ::selection{color:#010507;background-color:#cfd2ff}:host *{scrollbar-color:#aaa9c1 transparent;scrollbar-width:thin}:host ::-webkit-scrollbar{width:8px;height:8px}:host ::-webkit-scrollbar-thumb{background:#aaa9c1 padding-box padding-box;border:2px solid #0000;border-radius:999px}.inspector-account-control-icon{flex:none;justify-content:center;align-items:center;display:inline-flex}.inspector-account-control-icon svg{width:15px;height:15px}[data-inspector-thread-cta],[data-inspector-account-strip] button,[data-inspector-account-strip] a{cursor:pointer}@media (prefers-reduced-motion:reduce){.inspector-sidebar,.inspector-nav-label{transition:none}}[data-inspector-threads-setup-prompt],[data-inspector-threads-setup-link]{min-height:34px;font:inherit;outline-offset:2px;cursor:pointer;border:1px solid #dbdbe5;border-radius:7px;outline:2px solid #0000;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:12px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}[data-inspector-threads-setup-prompt]{color:#fff;background-color:#010507;border-color:#010507}[data-inspector-threads-setup-prompt]:hover{background-color:#2b2b2b;border-color:#2b2b2b}[data-inspector-threads-setup-link]{color:#57575b;background-color:#fff}[data-inspector-threads-setup-link]:hover{color:#010507;background-color:#f7f7f9;border-color:#afafb7}[data-inspector-threads-setup-prompt]:focus-visible,[data-inspector-threads-setup-link]:focus-visible{outline-offset:2px;outline:2px solid #6430ab}.inspector-threads-footer{color:#57575b;background-color:#f7f7f9;border-top:1px solid #dbdbe5;flex:none;gap:10px;padding:12px;font-size:11px;line-height:1.35;display:grid}.inspector-threads-usage{gap:6px;display:grid}[data-inspector-thread-count]{color:#010507;font-weight:600}[data-inspector-thread-expiry]{color:#57575b}.inspector-thread-progress{--inspector-thread-progress-color:#189370;width:100%;height:6px;accent-color:var(--inspector-thread-progress-color);border-radius:999px;overflow:hidden}.inspector-thread-progress[data-inspector-thread-capacity=warning]{--inspector-thread-progress-color:#b45309}.inspector-thread-progress[data-inspector-thread-capacity=critical]{--inspector-thread-progress-color:#be123c}.inspector-thread-progress::-webkit-progress-bar{background-color:#dbdbe5;border-radius:999px}.inspector-thread-progress::-webkit-progress-value{background-color:var(--inspector-thread-progress-color);border-radius:999px}.inspector-thread-progress::-moz-progress-bar{background-color:var(--inspector-thread-progress-color);border-radius:999px}[data-inspector-action-placement=threads-footer]{color:#57575b;outline-offset:2px;cursor:pointer;background-color:#0000;border:1px solid #d5d3e4;border-radius:5px;outline:2px solid #0000;justify-content:center;align-items:center;width:100%;min-height:32px;padding:6px 9px;font-size:11px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}[data-inspector-action-placement=threads-footer][data-inspector-action-intent=upgrade]{color:#fff;background-color:#6430ab;border-color:#6430ab}[data-inspector-action-placement=threads-footer][data-inspector-action-intent=upgrade]:hover{color:#fff;background-color:#3f176f;border-color:#3f176f}[data-inspector-action-placement=threads-footer]:hover{color:#010507;background-color:#f7f4fe;border-color:#c8c6e6}.cpk-threads-overview-video{opacity:0;transition:opacity .22s}.cpk-threads-overview{background-color:#f7f7f9;flex:1;justify-content:center;align-items:center;min-width:0;padding:32px;display:flex}.cpk-threads-overview-content{color:#57575b;width:100%;max-width:440px}.cpk-threads-overview-title{color:#010507;margin:0 0 10px;font-size:20px;font-weight:600;line-height:1.25}.cpk-threads-overview-copy{color:#57575b;margin:0 0 16px;font-size:13px;line-height:1.55}.cpk-threads-overview-actions{flex-wrap:wrap;gap:8px;display:flex}.cpk-threads-overview-action{outline-offset:2px;border:1px solid #0000;border-radius:7px;outline:2px solid #0000;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:8px 12px;font-size:12px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}.cpk-threads-overview-action-primary{color:#fff;background-color:#010507;border-color:#010507}.cpk-threads-overview-action-primary:hover{background-color:#2b2b2b;border-color:#2b2b2b}.cpk-threads-overview-action-secondary{color:#010507;background-color:#fff;border-color:#dbdbe5}.cpk-threads-overview-action-secondary:hover{background-color:#fff;border-color:#afafb7}.cpk-threads-overview-video[data-loaded=true]{opacity:1}.cpk-threads-overview-video-control{color:#3f176f;min-height:32px;font:inherit;outline-offset:2px;cursor:pointer;background-color:#fff;border:1px solid #dbdbe5;border-radius:5px;outline:2px solid #0000;justify-content:center;align-items:center;margin:0 0 14px;padding:6px 10px;font-size:12px;font-weight:600;line-height:1.25;display:inline-flex}.cpk-threads-overview-video-control:hover{color:#010507;background-color:#f7f7f9;border-color:#afafb7}.cpk-threads-overview-video-control:focus-visible{outline-offset:2px;outline:2px solid #6430ab}.cpk-threads-overview-video-fallback{color:#57575b;max-width:440px;margin:-4px 0 14px;font-size:12px;line-height:1.5}.cpk-threads-tour-launch{z-index:2;color:#57575b;outline-offset:2px;cursor:pointer;background-color:#fff;border:1px solid #dbdbe5;border-radius:7px;outline:2px solid #0000;padding:7px 10px;font-size:12px;font-weight:600;position:absolute;bottom:16px;right:16px;box-shadow:0 8px 18px #01050714}.cpk-threads-tour{z-index:3;color:#57575b;background-color:#fff;border:1px solid #dbdbe5;border-radius:10px;width:min(340px,100% - 32px);padding:14px;position:absolute;bottom:16px;right:16px;box-shadow:0 16px 36px #01050724}.cpk-threads-tour-step{color:#087653;text-transform:uppercase;margin-bottom:8px;font-family:Spline Sans Mono,monospace;font-size:10px;font-weight:600}.cpk-threads-tour-title{color:#010507;margin-bottom:6px;font-size:14px;font-weight:600;line-height:1.35}.cpk-threads-tour-copy{color:#57575b;font-size:12px;line-height:1.5}.cpk-threads-tour-actions{justify-content:space-between;gap:8px;margin-top:14px;display:flex}.cpk-threads-tour-nav{gap:8px;display:flex}.cpk-threads-tour-skip,.cpk-threads-tour-button{font:inherit;outline-offset:2px;cursor:pointer;border-radius:7px;outline:2px solid #0000;padding:7px 10px;font-size:12px;font-weight:600}.cpk-threads-overview-action:focus-visible,.cpk-threads-tour-launch:focus-visible,.cpk-threads-tour-skip:focus-visible,.cpk-threads-tour-button:focus-visible{outline-color:#6430ab}.cpk-threads-tour-skip{color:#68686e;background-color:#0000;border:0;padding-inline:0}.cpk-threads-tour-button-secondary{color:#57575b;background-color:#fff;border:1px solid #dbdbe5}.cpk-threads-tour-button-primary{color:#fff;background-color:#010507;border:1px solid #010507}.cpk-threads-tour-button:disabled{cursor:not-allowed;opacity:.45}@media (max-width:720px){.cpk-threads-overview{padding:24px}}@media (prefers-reduced-motion:reduce){.cpk-threads-overview-video{transition:none}}.inspector-window[data-color-scheme=dark]{color-scheme:dark;color:#f3f4f8!important;background-color:#111319!important;border-color:#7b7d89!important}.inspector-window[data-color-scheme=dark]>div,.inspector-window[data-color-scheme=dark] .inspector-shell,.inspector-window[data-color-scheme=dark] .inspector-main,.inspector-window[data-color-scheme=dark] #cpk-main-scroll{color:#f3f4f8!important;background-color:#111319!important}.inspector-window[data-color-scheme=dark] .drag-handle,.inspector-window[data-color-scheme=dark] .inspector-account-strip{color:#f3f4f8!important;background:#171a22!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .inspector-account-logo{filter:brightness(0)invert();clip-path:inset(0 20% 0 0)}.inspector-window[data-color-scheme=dark] .inspector-account-logo-accent{filter:none;display:block}.inspector-window[data-color-scheme=dark] .inspector-agent-placeholder{color:#b8bbc7!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .inspector-account-control{color:#b8bbc7!important;border:0!important}.inspector-window[data-color-scheme=dark] .inspector-account-control:hover,.inspector-window[data-color-scheme=dark] .inspector-account-control-active{color:#d8d9ff!important;background-color:#292c38!important}.inspector-window[data-color-scheme=dark] .inspector-account-cta{color:#d8d9ff;background-color:#292b43}.inspector-window[data-color-scheme=dark] .inspector-account-cta:hover{color:#fff;background-color:#353854}.inspector-window[data-color-scheme=dark] .inspector-window-layout-menu{color:#f3f4f8;background-color:#191c24;border-color:#464957;box-shadow:0 12px 28px #00000052}.inspector-window[data-color-scheme=dark] .inspector-window-layout-menu button:hover,.inspector-window[data-color-scheme=dark] .inspector-window-layout-menu button:focus-visible{color:#d8d9ff;background-color:#292b43}.inspector-window[data-color-scheme=dark] .inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button{color:#f3f4f8!important;background-color:#20232c!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] .inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button:hover{background-color:#292c38!important;border-color:#777aae!important}.inspector-window[data-color-scheme=dark] .inspector-sidebar .inspector-agent-selector>[data-context-dropdown-root=true]>button>span:last-child{color:#aeb1bd!important}.inspector-window[data-color-scheme=dark] [data-context-dropdown-root=true]>div{color:#f3f4f8!important;box-shadow:none!important;background-color:#191c24!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] [data-context-dropdown-root=true]>div button:hover,.inspector-window[data-color-scheme=dark] [data-context-dropdown-root=true]>div button:focus{color:#f3f4f8!important;background-color:#343746!important}.inspector-window[data-color-scheme=dark] .inspector-sidebar{color:#f3f4f8;background-color:#15171e;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-sidebar-label{color:#8f93a1}.inspector-window[data-color-scheme=dark] .inspector-sidebar-rail-tooltip{color:#191c24;background-color:#e9e9f1;box-shadow:0 7px 18px #00000047}.inspector-window[data-color-scheme=dark] .inspector-nav-control,.inspector-window[data-color-scheme=dark] .inspector-sidebar-toggle{color:#b8bbc7}.inspector-window[data-color-scheme=dark] .inspector-nav-control:hover,.inspector-window[data-color-scheme=dark] .inspector-sidebar-toggle:hover{color:#fff;background-color:#22252f}.inspector-window[data-color-scheme=dark] .inspector-nav-control-active{color:#d8d9ff;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-sidebar-agent-scope{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-card{background-color:#191c24;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-copy strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-copy>span,.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-card[data-state=disconnected] .inspector-sidebar-status-copy>span{color:#9da1af}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-action{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-sidebar-status-action:hover{color:#fff;background-color:#292b43}.inspector-window[data-color-scheme=dark] .inspector-sidebar-intelligence-setup{color:#d8d9ff;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-sidebar-intelligence-setup:hover{background-color:#343653;border-color:#777aae}.inspector-window[data-color-scheme=dark] .inspector-sidebar-intelligence-setup .inspector-sidebar-status-copy strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-sidebar-setup-arrow{background-color:#caccff1f}@media (prefers-reduced-motion:reduce){.inspector-sidebar-intelligence-setup{animation:none}}.inspector-window[data-color-scheme=dark] .inspector-home{background-color:#111319}.inspector-window[data-color-scheme=dark] .inspector-settings{color:#f3f4f8;background-color:#111319}.inspector-window[data-color-scheme=dark] .inspector-settings-header,.inspector-window[data-color-scheme=dark] .inspector-settings-privacy,.inspector-window[data-color-scheme=dark] .inspector-settings-private-content{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-settings-title,.inspector-window[data-color-scheme=dark] .inspector-settings-section-heading h2,.inspector-window[data-color-scheme=dark] .inspector-settings-status-row h3,.inspector-window[data-color-scheme=dark] .inspector-settings-private-content strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-settings-subtitle,.inspector-window[data-color-scheme=dark] .inspector-settings-section-heading p,.inspector-window[data-color-scheme=dark] .inspector-settings-status-row p,.inspector-window[data-color-scheme=dark] .inspector-settings-private-content>p{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-settings-section-icon{color:#d8d9ff;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-settings-private-content li{color:#c9ccd6}.inspector-window[data-color-scheme=dark] .inspector-settings-private-content li span{color:#75d8b9}.inspector-window[data-color-scheme=dark] .inspector-settings-status{color:#8ce1c5;background-color:#173b32;border-color:#347d69}.inspector-window[data-color-scheme=dark] .inspector-settings-privacy[data-state=disabled] .inspector-settings-status{color:#f2cf8f;background-color:#342916;border-color:#866932}.inspector-window[data-color-scheme=dark] .inspector-settings-policy-link{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-settings-policy-link:hover{color:#fff}.inspector-window[data-color-scheme=dark] .inspector-home-card,.inspector-window[data-color-scheme=dark] .inspector-home-story,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud,.inspector-window[data-color-scheme=dark] .inspector-home-feature-list,.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview{color:#f3f4f8;background:#191c24;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud[data-state=disconnected]{background-color:#1d1e2b;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud[data-state=disconnected] .inspector-intelligence-hud-description{color:#c5c7d0}.inspector-window[data-color-scheme=dark] .inspector-system-health,.inspector-window[data-color-scheme=dark] .inspector-system-health-section{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health-section{background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-system-health-section .inspector-system-health-header{background-color:#191c24;border-bottom-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health{background-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal{background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-system-health-event-link>small{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=success]{color:#8ce1c5}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=success],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=success]{background-color:#173b32;border-color:#347d69;color:#8ce1c5!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=checking],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=checking]{background-color:#342916;border-color:#866932;color:#f2cf8f!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=offline],.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=error],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=offline],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=error]{background-color:#3b1c22;border-color:#87424a;color:#ff9aa0!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-state[data-tone=unavailable],.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-state[data-tone=unavailable]{background-color:#242731;border-color:#464957;color:#aeb1bd!important}.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=checking]{color:#f2cf8f}.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=offline],.inspector-window[data-color-scheme=dark] .inspector-system-health-header>span[data-tone=error]{color:#ff9aa0}.inspector-window[data-color-scheme=dark] .inspector-home-story-link:hover,.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview:has(.inspector-whats-new-preview-body:hover){background:#242131;border-color:#777aae}.inspector-window[data-color-scheme=dark] .inspector-home-title,.inspector-window[data-color-scheme=dark] .inspector-home-section-title,.inspector-window[data-color-scheme=dark] .inspector-home-card-title,.inspector-window[data-color-scheme=dark] .inspector-system-health-signal dd,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details .inspector-intelligence-hud-detail-value,.inspector-window[data-color-scheme=dark] .inspector-home-feature{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-home-eyebrow,.inspector-window[data-color-scheme=dark] .inspector-home-card-label,.inspector-window[data-color-scheme=dark] .inspector-home-meta,.inspector-window[data-color-scheme=dark] .inspector-home-body,.inspector-window[data-color-scheme=dark] .inspector-home-card-copy,.inspector-window[data-color-scheme=dark] .inspector-system-health-signal dt,.inspector-window[data-color-scheme=dark] .inspector-system-health-signal small,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-heading p,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details .inspector-intelligence-hud-detail-label,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details .inspector-intelligence-hud-detail-subvalue,.inspector-window[data-color-scheme=dark] .inspector-home-section-header>span,.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-copy>span:last-child{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details{background-color:#3a3d49;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details>section{background-color:#15171e}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-plan-action{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-plan-action:hover{color:#fff;background-color:#0000;border-color:#0000}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal+.inspector-system-health-signal,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details>section+section,.inspector-window[data-color-scheme=dark] .inspector-intelligence-hud-details,.inspector-window[data-color-scheme=dark] .inspector-home-features-empty{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=success] dd,.inspector-window[data-color-scheme=dark] .inspector-home-feature small{color:#8ce1c5}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=active] dd{color:#f2cf8f}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=error] .inspector-system-health-event-type{color:#ff9aa0;background-color:#3b1c22}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=success] .inspector-system-health-event-type{color:#8ce1c5;background-color:#173b32}.inspector-window[data-color-scheme=dark] .inspector-system-health-signal[data-tone=active] .inspector-system-health-event-type{color:#f2cf8f;background-color:#342916}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group{background-color:#191c24;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group-header{color:#c9ccd6;background-color:#20232d;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group-header>span{color:#c9ccd6;background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group[data-feature-state-group=active] .inspector-home-feature-group-header{color:#8ce1c5;background-color:#173b32;border-color:#347d69}.inspector-window[data-color-scheme=dark] .inspector-home-feature{background-color:#191c24}.inspector-window[data-color-scheme=dark] .inspector-home-feature:hover{background-color:#20232d}.inspector-window[data-color-scheme=dark] .inspector-home-feature+.inspector-home-feature{border-color:#2f323d}.inspector-window[data-color-scheme=dark] .inspector-home-feature-group-empty{color:#9da1af}.inspector-window[data-color-scheme=dark] .inspector-home-feature[data-state=off]{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-home-feature[data-state=off] small,.inspector-window[data-color-scheme=dark] .inspector-home-feature-arrow{color:#9da1af}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-dismiss{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-dismiss:hover{color:#fff;background-color:#302a40}.inspector-window[data-color-scheme=dark] .inspector-home-usage-bar{background-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-thread-progress::-webkit-progress-bar{background-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-header{box-shadow:none;background-color:#1d1e2b;border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-updated,.inspector-window[data-color-scheme=dark] .inspector-whats-new-empty{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview-action{color:#d8d9ff}.inspector-window[data-color-scheme=dark] .inspector-whats-new-preview:hover .inspector-whats-new-preview-action{color:#fff}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document,.inspector-window[data-color-scheme=dark] .inspector-whats-new-empty{border-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content{color:#c9ccd6}.inspector-window[data-color-scheme=dark] .inspector-whats-new-empty .inspector-home-card-title{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h1+p{color:#c9ccd6}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h2{border-top-color:#3a3d49}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h1,.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h2,.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content h3,.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content strong{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .inspector-whats-new-document .announcement-content a{color:#caccff}.inspector-window[data-color-scheme=dark] .inspector-threads-footer{color:#aeb1bd;background-color:#15171e;border-color:#343742}.inspector-window[data-color-scheme=dark] [data-inspector-thread-count]{color:#f3f4f8}.inspector-window[data-color-scheme=dark] [data-inspector-thread-expiry]{color:#aeb1bd}.inspector-window[data-color-scheme=dark] [data-inspector-action-placement=threads-footer]{color:#d8d9ff;background-color:#191c24;border-color:#464957}.inspector-window[data-color-scheme=dark] [data-inspector-action-placement=threads-footer]:hover{color:#fff;background-color:#20232d;border-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-threads-overview{background-color:#111319}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-content,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-copy,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-fallback,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-copy{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-title,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-title{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-frame{background:linear-gradient(135deg,#666a9e3d,#347d6929),#191c24;border-color:#3a3d49;box-shadow:0 8px 20px #00000038}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-control,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-secondary,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-launch,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-secondary{color:#d8d9ff;background-color:#191c24;border-color:#464957}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-video-control:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-secondary:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-launch:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-secondary:hover{color:#fff;background-color:#242731;border-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-primary,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-primary{color:#171823;background-color:#caccff;border-color:#caccff}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action-primary:hover,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button-primary:hover{background-color:#d8d9ff;border-color:#d8d9ff}.inspector-window[data-color-scheme=dark] .cpk-threads-tour{color:#aeb1bd;background-color:#191c24;border-color:#464957;box-shadow:0 16px 36px #00000052}.inspector-window[data-color-scheme=dark] .cpk-threads-tour-step{color:#8ce1c5}.inspector-window[data-color-scheme=dark] .cpk-threads-tour-skip{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .cpk-threads-overview-action:focus-visible,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-launch:focus-visible,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-skip:focus-visible,.inspector-window[data-color-scheme=dark] .cpk-threads-tour-button:focus-visible{outline-color:#bec2ff}.inspector-window[data-color-scheme=dark] .cpk-memory-locked{color:#f3f4f8;background-color:#111319}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-sidebar{background-color:#15171e;border-color:#2f323d}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-main{background-color:#111319}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row{background-color:#191c24;box-shadow:inset 0 0 0 1px #2f323d}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row[data-accent=true]{background-color:#292b43}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-bar{background-color:#333641}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row[data-accent=true] .cpk-locked-preview-row-title{background-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row-line,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-copy,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-footer-line{background-color:#2f323d}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-row-line:last-child,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-copy+.cpk-locked-preview-copy,.inspector-window[data-color-scheme=dark] .cpk-locked-preview-footer-line+.cpk-locked-preview-footer-line{background-color:#292c36}.inspector-window[data-color-scheme=dark] .cpk-locked-preview-card{background-color:#191c24;box-shadow:inset 0 0 0 1px #2f323d}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-scrim{background:radial-gradient(circle,#111319f0 0,#111319d6 24%,#11131975 48%,#111319ad 100%)}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-content,.inspector-window[data-color-scheme=dark] .cpk-memory-locked-copy{color:#aeb1bd}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-title{color:#f3f4f8}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-icon{color:#d8d9ff;box-shadow:none;background-color:#292b43;border-color:#666a9e}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-action-secondary{color:#d8d9ff;background-color:#191c24;border-color:#464957}.inspector-window[data-color-scheme=dark] .cpk-memory-locked-action-secondary:hover{color:#fff;background-color:#242731;border-color:#777aae}.inspector-window[data-color-scheme=dark] .cpk-agent-overview,.inspector-window[data-color-scheme=dark] .cpk-section-card{background-color:#191c24!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .cpk-section-header{background-color:#242731!important;border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .cpk-section-header h4{color:#f3f4f8!important}.inspector-window[data-color-scheme=dark] .cpk-agent-icon{color:#d8d9ff!important;background-color:#292b43!important}.inspector-window[data-color-scheme=dark] .cpk-stat-card{background-color:#191c24!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] button.cpk-stat-card:hover{background-color:#20232d!important}.inspector-window[data-color-scheme=dark] .cpk-agent-view .divide-gray-200>:not([hidden])~:not([hidden]){border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] .cpk-json-block{color:#c9ccd6}.inspector-window[data-color-scheme=dark] [class*=bg-emerald-50],.inspector-window[data-color-scheme=dark] [class*=bg-green-100]{color:#8ce1c5!important;background-color:#173b32!important}.inspector-window[data-color-scheme=dark] [class*=bg-rose-50]{color:#ff9aa0!important;background-color:#3b1c22!important}.inspector-window[data-color-scheme=dark] [data-cpk-event-error] p,.inspector-window[data-color-scheme=dark] [data-playground-error] p{color:inherit!important}.inspector-window[data-color-scheme=dark] [class*=bg-amber-50],.inspector-window[data-color-scheme=dark] [class*=bg-amber-100]{color:#f2cf8f!important;background-color:#342916!important}.inspector-window[data-color-scheme=dark] [class*=bg-blue-50],.inspector-window[data-color-scheme=dark] [class*=bg-blue-100],.inspector-window[data-color-scheme=dark] [class*=bg-sky-50],.inspector-window[data-color-scheme=dark] [class*=bg-violet-50],.inspector-window[data-color-scheme=dark] [class*=bg-purple-50],.inspector-window[data-color-scheme=dark] [class*=bg-fuchsia-50]{color:#d8d9ff!important;background-color:#292b43!important}.inspector-window[data-color-scheme=dark] [class*=bg-white]{background-color:#191c24!important}.inspector-window[data-color-scheme=dark] [class*=bg-gray-50],.inspector-window[data-color-scheme=dark] [class*=bg-slate-50],.inspector-window[data-color-scheme=dark] [class*=bg-gray-100],.inspector-window[data-color-scheme=dark] [class*=bg-slate-100]{background-color:#171a22!important}.inspector-window[data-color-scheme=dark] [class*=text-gray-900],.inspector-window[data-color-scheme=dark] [class*=text-slate-900],.inspector-window[data-color-scheme=dark] [class*=text-gray-800],.inspector-window[data-color-scheme=dark] [class*=text-slate-800],.inspector-window[data-color-scheme=dark] [class*=text-gray-700],.inspector-window[data-color-scheme=dark] [class*=text-slate-700]{color:#f3f4f8!important}.inspector-window[data-color-scheme=dark] [class*=text-gray-600],.inspector-window[data-color-scheme=dark] [class*=text-slate-600],.inspector-window[data-color-scheme=dark] [class*=text-gray-500],.inspector-window[data-color-scheme=dark] [class*=text-slate-500],.inspector-window[data-color-scheme=dark] [class*=text-gray-400],.inspector-window[data-color-scheme=dark] [class*=text-slate-400]{color:#aeb1bd!important}.inspector-window[data-color-scheme=dark] [class*=border-gray-100],.inspector-window[data-color-scheme=dark] [class*=border-slate-100],.inspector-window[data-color-scheme=dark] [class*=border-gray-200],.inspector-window[data-color-scheme=dark] [class*=border-slate-200],.inspector-window[data-color-scheme=dark] [class*=border-gray-300],.inspector-window[data-color-scheme=dark] [class*=border-slate-300]{border-color:#3a3d49!important}.inspector-window[data-color-scheme=dark] input,.inspector-window[data-color-scheme=dark] select,.inspector-window[data-color-scheme=dark] textarea{color:#f3f4f8!important;background-color:#191c24!important;border-color:#464957!important}.inspector-window[data-color-scheme=dark] input::placeholder,.inspector-window[data-color-scheme=dark] textarea::placeholder{color:#858996}.inspector-window[data-color-scheme=dark] ::selection{color:#fff;background-color:#5b5f92}@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-tracking{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-duration{syntax:\"*\";inherits:false}@property --tw-ease{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 spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
|
|
10
10
|
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/assets/inspector-logo.svg
|
|
@@ -537,6 +537,24 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
537
537
|
...eventDetails
|
|
538
538
|
};
|
|
539
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* Whether the runtime *connection* needs attention — the single condition
|
|
542
|
+
* shared by System Health and the launcher's error signal, so the two can
|
|
543
|
+
* never disagree about whether the wiring is broken.
|
|
544
|
+
*
|
|
545
|
+
* Exactly one state counts. `disconnected` is also the initial value, so
|
|
546
|
+
* counting it would raise the signal on every page load; `connecting` is a
|
|
547
|
+
* normal startup step; `unavailable` means no Core is attached, which is not
|
|
548
|
+
* a defect of the developer's wiring.
|
|
549
|
+
*
|
|
550
|
+
* Note the deliberate asymmetry with `health.state`: a failed *run* also
|
|
551
|
+
* drives System Health to "Needs attention" while the connection is fine.
|
|
552
|
+
* That is an event rather than a state, and it is excluded from the launcher
|
|
553
|
+
* on purpose — see the launcher-signal comments in index.ts.
|
|
554
|
+
*/
|
|
555
|
+
function runtimeConnectionNeedsAttention(state) {
|
|
556
|
+
return state === "error";
|
|
557
|
+
}
|
|
540
558
|
function runtimeHealthFromInput(input) {
|
|
541
559
|
const lastEvent = runtimeEventSignal(input.lastRuntimeEvent);
|
|
542
560
|
if (input.runtimeConnectionState === "connected") return {
|
|
@@ -578,15 +596,16 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
578
596
|
},
|
|
579
597
|
lastEvent
|
|
580
598
|
};
|
|
599
|
+
const needsAttention = runtimeConnectionNeedsAttention(input.runtimeConnectionState);
|
|
581
600
|
return {
|
|
582
|
-
state:
|
|
583
|
-
label:
|
|
601
|
+
state: needsAttention ? "error" : "offline",
|
|
602
|
+
label: needsAttention ? "Runtime error" : "Offline",
|
|
584
603
|
runtime: {
|
|
585
604
|
label: "Offline",
|
|
586
605
|
tone: "error"
|
|
587
606
|
},
|
|
588
607
|
liveUpdates: {
|
|
589
|
-
label:
|
|
608
|
+
label: needsAttention ? "Error" : "Disconnected",
|
|
590
609
|
tone: "error"
|
|
591
610
|
},
|
|
592
611
|
lastEvent
|
|
@@ -770,7 +789,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
770
789
|
|
|
771
790
|
//#endregion
|
|
772
791
|
//#region package.json
|
|
773
|
-
var version = "1.69.
|
|
792
|
+
var version = "1.69.2";
|
|
774
793
|
|
|
775
794
|
//#endregion
|
|
776
795
|
//#region src/lib/telemetry.ts
|
|
@@ -778,6 +797,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
778
797
|
opened: "oss.inspector.opened",
|
|
779
798
|
whatsNewViewed: "oss.inspector.whats_new_viewed",
|
|
780
799
|
whatsNewSignalViewed: "oss.inspector.whats_new_signal_viewed",
|
|
800
|
+
errorSignalViewed: "oss.inspector.error_signal_viewed",
|
|
781
801
|
whatsNewClicked: "oss.inspector.whats_new_clicked",
|
|
782
802
|
threadsTabClicked: "oss.inspector.threads_tab_clicked",
|
|
783
803
|
threadsLockedViewed: "oss.inspector.threads_locked_viewed",
|
|
@@ -860,6 +880,31 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
860
880
|
track(TELEMETRY_EVENTS.whatsNewSignalViewed, props);
|
|
861
881
|
}
|
|
862
882
|
/**
|
|
883
|
+
* Fires when the launcher's error signal becomes *visible* — not when it arms.
|
|
884
|
+
* Arming can happen with the panel open or the tab hidden, where there is no
|
|
885
|
+
* launcher to look at, so counting arms would inflate the denominator this
|
|
886
|
+
* event exists to provide.
|
|
887
|
+
*
|
|
888
|
+
* Deliberately carries three fixed enum values and nothing else. This is the
|
|
889
|
+
* one place a later change could casually attach a free-text field, and the
|
|
890
|
+
* failure message must never be transmitted.
|
|
891
|
+
*
|
|
892
|
+
* `label` is deliberately not a new event: the catalogue's size is asserted
|
|
893
|
+
* and spelled out in a test title, and a property answers the one open
|
|
894
|
+
* question — how often the no-room fallback fires — without touching either.
|
|
895
|
+
*
|
|
896
|
+
* The pill's own marginal effect cannot be measured here and must not be
|
|
897
|
+
* reverse-engineered from this data: it ships together with the dot and the
|
|
898
|
+
* beat, so there is no period with one and not the other.
|
|
899
|
+
*/
|
|
900
|
+
function trackErrorSignalViewed(props) {
|
|
901
|
+
track(TELEMETRY_EVENTS.errorSignalViewed, {
|
|
902
|
+
source: props.source,
|
|
903
|
+
presentation: props.presentation,
|
|
904
|
+
label: props.label
|
|
905
|
+
});
|
|
906
|
+
}
|
|
907
|
+
/**
|
|
863
908
|
* Fires for links followed inside the announcement body. `body` is the only
|
|
864
909
|
* call-to-action left: dismissal no longer exists, so there is nothing else a
|
|
865
910
|
* click on this surface can mean.
|
|
@@ -1100,11 +1145,215 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
1100
1145
|
/** Menu key of the What's new leaf — the news signal's destination. */
|
|
1101
1146
|
const WHATS_NEW_MENU_KEY = "whats-new";
|
|
1102
1147
|
const NEWS_SIGNAL_ID = "whats-new";
|
|
1103
|
-
const
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1148
|
+
const LAUNCHER_SIGNAL_COLORS = {
|
|
1149
|
+
news: "#A78BFA",
|
|
1150
|
+
error: "#F87171"
|
|
1151
|
+
};
|
|
1152
|
+
/**
|
|
1153
|
+
* The failure gesture, four phases in series:
|
|
1154
|
+
*
|
|
1155
|
+
* ```
|
|
1156
|
+
* beat 400ms → open 250ms → hold 2500ms → close 250ms (3400ms total)
|
|
1157
|
+
* ```
|
|
1158
|
+
*
|
|
1159
|
+
* Sequential rather than simultaneous, deliberately: the beat says *here*, the
|
|
1160
|
+
* pill says *this*. The beat is short so the words arrive quickly.
|
|
1161
|
+
*
|
|
1162
|
+
* **All four durations live here and nowhere else.** The stylesheet reads the
|
|
1163
|
+
* two animated phases as custom properties injected from these numbers rather
|
|
1164
|
+
* than restating them, because they are taste and will be tuned by eye after
|
|
1165
|
+
* the first live look — tuning the feel must be a number, not a refactor.
|
|
1166
|
+
*/
|
|
1167
|
+
const ERROR_GESTURE_MS = {
|
|
1168
|
+
beat: 400,
|
|
1169
|
+
open: 250,
|
|
1170
|
+
hold: 2500,
|
|
1171
|
+
close: 250
|
|
1172
|
+
};
|
|
1173
|
+
/**
|
|
1174
|
+
* The words the pill carries, which are the words the panel already carries.
|
|
1175
|
+
*
|
|
1176
|
+
* `Runtime error` is the System Health runtime tile's own label, and
|
|
1177
|
+
* `Failed to load threads` is the Threads view's own heading. The outside and
|
|
1178
|
+
* the inside must agree, so these are shared rather than paraphrased.
|
|
1179
|
+
*/
|
|
1180
|
+
const RUNTIME_ERROR_LABEL = "Runtime error";
|
|
1181
|
+
const THREADS_LOAD_ERROR_LABEL = "Failed to load threads";
|
|
1182
|
+
const AGENT_RUN_FAILED_LABEL = "Agent run failed";
|
|
1183
|
+
const TOOL_ERROR_LABEL = "Tool error";
|
|
1184
|
+
const MEMORY_LOAD_ERROR_LABEL = "Failed to load learning data";
|
|
1185
|
+
/**
|
|
1186
|
+
* Copy on the landing view. Titles match the pill.
|
|
1187
|
+
*
|
|
1188
|
+
* The two fields differ in what they can promise. `advice` is about the
|
|
1189
|
+
* reader's next move and is always true. `highlight` is a claim about *this
|
|
1190
|
+
* view* — that the failed item is visible below — and the error carries no
|
|
1191
|
+
* guarantee of that: a code mapped to `run` can arrive with no run in the
|
|
1192
|
+
* buffer at all, and a tool error can arrive without the call id the
|
|
1193
|
+
* highlight needs. So it is rendered only once the item is actually there.
|
|
1194
|
+
* A card pointing at something the reader cannot find is worse than a card
|
|
1195
|
+
* that stays quiet, because it sends them looking.
|
|
1196
|
+
*/
|
|
1197
|
+
const EVENT_ERROR_GUIDANCE = {
|
|
1198
|
+
run: {
|
|
1199
|
+
title: AGENT_RUN_FAILED_LABEL,
|
|
1200
|
+
highlight: "The failed run event is highlighted below."
|
|
1201
|
+
},
|
|
1202
|
+
tool: {
|
|
1203
|
+
title: TOOL_ERROR_LABEL,
|
|
1204
|
+
highlight: "The failed tool call is highlighted below."
|
|
1205
|
+
},
|
|
1206
|
+
memory: {
|
|
1207
|
+
title: MEMORY_LOAD_ERROR_LABEL,
|
|
1208
|
+
advice: "Confirm CopilotKit Intelligence is connected, then retry Learning."
|
|
1209
|
+
}
|
|
1210
|
+
};
|
|
1211
|
+
/**
|
|
1212
|
+
* The pill's second line, shared by every subject that carries a pill.
|
|
1213
|
+
*
|
|
1214
|
+
* **This is the one string in the feature that exists nowhere else in the
|
|
1215
|
+
* product.** Every other word the launcher shows is word-identical to the
|
|
1216
|
+
* panel, which is the standing rule; this line is a deliberate, owner-approved
|
|
1217
|
+
* exception to it, because the pill became clickable and an invitation that
|
|
1218
|
+
* says nothing is not an invitation.
|
|
1219
|
+
*
|
|
1220
|
+
* It is shown, never spoken: the polite live region carries the failure class
|
|
1221
|
+
* alone. A screen-reader user cannot act on an instruction delivered through
|
|
1222
|
+
* an announcement, and it would double the spoken length.
|
|
1223
|
+
*/
|
|
1224
|
+
const PILL_SUBLINE_LABEL = "Open Inspector for details";
|
|
1225
|
+
const HUD_OPEN_INSPECTOR_LABEL = "Open Inspector";
|
|
1226
|
+
const HUD_THREADS_OFF_LABEL = "Turn on Threads";
|
|
1227
|
+
const HUD_THREADS_ON_LABEL = "Threads on";
|
|
1228
|
+
const HUD_INTELLIGENCE_OFF_LABEL = "Turn on Intelligence";
|
|
1229
|
+
const HUD_INTELLIGENCE_ON_LABEL = "Intelligence connected";
|
|
1230
|
+
const HUD_THREADS_OFF_DETAIL = "Inspect conversations from this app.";
|
|
1231
|
+
const HUD_THREADS_ON_DETAIL = "Threads is on. Opens the Threads view.";
|
|
1232
|
+
const HUD_INTELLIGENCE_OFF_DETAIL = "Connect Intelligence to use Threads and Learning.";
|
|
1233
|
+
const HUD_INTELLIGENCE_ON_DETAIL = "Intelligence is connected. Opens Home.";
|
|
1234
|
+
const HUD_LEARNING_OFF_LABEL = "Turn on Learning";
|
|
1235
|
+
const HUD_LEARNING_ON_LABEL = "Learning on";
|
|
1236
|
+
const HUD_LEARNING_OFF_DETAIL = "Connect Intelligence to use Learning.";
|
|
1237
|
+
const HUD_LEARNING_ON_DETAIL = "Learning is on. Opens the Learning view.";
|
|
1238
|
+
const HUD_OPEN_INSPECTOR_DETAIL = "Same as clicking the circle. Opens the full Inspector.";
|
|
1239
|
+
const LAUNCHER_SIGNALS = {
|
|
1240
|
+
"whats-new": {
|
|
1241
|
+
tone: "news",
|
|
1242
|
+
markerTarget: WHATS_NEW_MENU_KEY,
|
|
1243
|
+
landingTarget: "home",
|
|
1244
|
+
cadence: 2100,
|
|
1245
|
+
priority: 0,
|
|
1246
|
+
accessibleLabel: "new content"
|
|
1247
|
+
},
|
|
1248
|
+
connection: {
|
|
1249
|
+
tone: "error",
|
|
1250
|
+
markerTarget: "home",
|
|
1251
|
+
landingTarget: "home",
|
|
1252
|
+
cadence: ERROR_GESTURE_MS.beat,
|
|
1253
|
+
priority: 5,
|
|
1254
|
+
accessibleLabel: "runtime error",
|
|
1255
|
+
pillLabel: RUNTIME_ERROR_LABEL
|
|
1256
|
+
},
|
|
1257
|
+
threads: {
|
|
1258
|
+
tone: "error",
|
|
1259
|
+
markerTarget: "threads",
|
|
1260
|
+
landingTarget: "threads",
|
|
1261
|
+
cadence: ERROR_GESTURE_MS.beat,
|
|
1262
|
+
priority: 4,
|
|
1263
|
+
accessibleLabel: "thread loading error",
|
|
1264
|
+
pillLabel: THREADS_LOAD_ERROR_LABEL
|
|
1265
|
+
},
|
|
1266
|
+
run: {
|
|
1267
|
+
tone: "error",
|
|
1268
|
+
markerTarget: "ag-ui-events",
|
|
1269
|
+
landingTarget: "ag-ui-events",
|
|
1270
|
+
cadence: ERROR_GESTURE_MS.beat,
|
|
1271
|
+
priority: 3,
|
|
1272
|
+
accessibleLabel: "agent run failed",
|
|
1273
|
+
pillLabel: AGENT_RUN_FAILED_LABEL
|
|
1274
|
+
},
|
|
1275
|
+
tool: {
|
|
1276
|
+
tone: "error",
|
|
1277
|
+
markerTarget: "agents",
|
|
1278
|
+
landingTarget: "agents",
|
|
1279
|
+
cadence: ERROR_GESTURE_MS.beat,
|
|
1280
|
+
priority: 2,
|
|
1281
|
+
accessibleLabel: "tool error",
|
|
1282
|
+
pillLabel: TOOL_ERROR_LABEL
|
|
1283
|
+
},
|
|
1284
|
+
memory: {
|
|
1285
|
+
tone: "error",
|
|
1286
|
+
markerTarget: "memories",
|
|
1287
|
+
landingTarget: "memories",
|
|
1288
|
+
cadence: ERROR_GESTURE_MS.beat,
|
|
1289
|
+
priority: 1,
|
|
1290
|
+
accessibleLabel: "learning error",
|
|
1291
|
+
pillLabel: MEMORY_LOAD_ERROR_LABEL
|
|
1292
|
+
}
|
|
1293
|
+
};
|
|
1294
|
+
/** Highest priority first, so the winner of the single dot is the head. */
|
|
1295
|
+
const LAUNCHER_SIGNAL_PRIORITY_ORDER = Object.keys(LAUNCHER_SIGNALS).sort((a, b) => LAUNCHER_SIGNALS[b].priority - LAUNCHER_SIGNALS[a].priority);
|
|
1296
|
+
/** Wiring *state* — red until the problem heals. */
|
|
1297
|
+
const WIRING_ERROR_KEYS = ["connection", "threads"];
|
|
1298
|
+
/** Unread *events* — red until the landing view is read. */
|
|
1299
|
+
const EVENT_ERROR_KEYS = [
|
|
1300
|
+
"run",
|
|
1301
|
+
"tool",
|
|
1302
|
+
"memory"
|
|
1303
|
+
];
|
|
1304
|
+
function isWiringErrorKey(key) {
|
|
1305
|
+
return WIRING_ERROR_KEYS.includes(key);
|
|
1306
|
+
}
|
|
1307
|
+
/**
|
|
1308
|
+
* Takes a plain string rather than a `LauncherSignalKey`, because one caller
|
|
1309
|
+
* reads the subject back out of a `data-` attribute, where the DOM can only
|
|
1310
|
+
* offer `string | undefined`. Narrowing untrusted input is what a guard is
|
|
1311
|
+
* for; `LauncherSignalKey` still satisfies the parameter, so the callers that
|
|
1312
|
+
* already hold one are unaffected.
|
|
1313
|
+
*/
|
|
1314
|
+
function isEventErrorKey(key) {
|
|
1315
|
+
return EVENT_ERROR_KEYS.includes(key);
|
|
1316
|
+
}
|
|
1317
|
+
/** Narrows a signal key to an error source, excluding the announcement. */
|
|
1318
|
+
function isErrorSignalKey(key) {
|
|
1319
|
+
return isWiringErrorKey(key) || isEventErrorKey(key);
|
|
1320
|
+
}
|
|
1321
|
+
/**
|
|
1322
|
+
* The control range is the point, not an oversight: an attribute selector has
|
|
1323
|
+
* to escape those characters too, and CSS.escape — which the fallback below
|
|
1324
|
+
* stands in for — escapes them as well. Hoisted so the suppression can sit on
|
|
1325
|
+
* the pattern rather than three lines above it.
|
|
1326
|
+
*/
|
|
1327
|
+
const SELECTOR_ESCAPE_PATTERN = /[\0-\x1f\x7f!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g;
|
|
1328
|
+
/** Attribute selector value. jsdom does not implement CSS.escape. */
|
|
1329
|
+
function escapeSelectorValue(value) {
|
|
1330
|
+
if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
|
|
1331
|
+
return value.replace(SELECTOR_ESCAPE_PATTERN, "\\$&");
|
|
1332
|
+
}
|
|
1333
|
+
function eventErrorKeyForCode(code) {
|
|
1334
|
+
switch (code) {
|
|
1335
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.TOOL_NOT_FOUND:
|
|
1336
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.TOOL_HANDLER_FAILED:
|
|
1337
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.TOOL_ARGUMENT_PARSE_FAILED:
|
|
1338
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.AGENT_NOT_FOUND: return "tool";
|
|
1339
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.AGENT_CONNECT_FAILED:
|
|
1340
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.AGENT_RUN_FAILED:
|
|
1341
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.AGENT_RUN_FAILED_EVENT:
|
|
1342
|
+
case _copilotkit_core.CopilotKitCoreErrorCode.AGENT_RUN_ERROR_EVENT: return "run";
|
|
1343
|
+
default: return null;
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
/**
|
|
1347
|
+
* Coalesce inspector-owned GET /threads sends. The first refresh goes out
|
|
1348
|
+
* at once. Further calls in this window share one trailing request, so a
|
|
1349
|
+
* flaky network does not fire a burst of list fetches and error cards.
|
|
1350
|
+
*/
|
|
1351
|
+
const THREAD_LIST_DEBOUNCE_MS = 300;
|
|
1352
|
+
/** The launcher's accessible name with nothing wrong. */
|
|
1353
|
+
const LAUNCHER_BASE_LABEL = "Web Inspector";
|
|
1107
1354
|
const EDGE_MARGIN = 16;
|
|
1355
|
+
/** HUD card plus the hover bridge. Used to pick left vs right. */
|
|
1356
|
+
const LAUNCHER_HUD_WIDTH = 248;
|
|
1108
1357
|
const DRAG_THRESHOLD = 6;
|
|
1109
1358
|
const MIN_WINDOW_WIDTH = 880;
|
|
1110
1359
|
const MIN_WINDOW_WIDTH_DOCKED_LEFT = 640;
|
|
@@ -1585,6 +1834,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(parsed))}</pre
|
|
|
1585
1834
|
super(..._args);
|
|
1586
1835
|
this.threads = [];
|
|
1587
1836
|
this.selectedThreadId = null;
|
|
1837
|
+
this.inAppThreadId = null;
|
|
1588
1838
|
this.errorMessage = null;
|
|
1589
1839
|
this.suppressEmptyState = false;
|
|
1590
1840
|
this._query = "";
|
|
@@ -1658,6 +1908,9 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(parsed))}</pre
|
|
|
1658
1908
|
${thread.isExample ? lit.html`
|
|
1659
1909
|
<span class="cpk-tl__pill cpk-tl__pill--example">Example</span>
|
|
1660
1910
|
` : lit.nothing}
|
|
1911
|
+
${this.inAppThreadId === thread.id ? lit.html`
|
|
1912
|
+
<span class="cpk-tl__pill cpk-tl__pill--in-app">In app</span>
|
|
1913
|
+
` : lit.nothing}
|
|
1661
1914
|
</span>
|
|
1662
1915
|
</button>
|
|
1663
1916
|
`;
|
|
@@ -1716,6 +1969,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(parsed))}</pre
|
|
|
1716
1969
|
CpkThreadList.properties = {
|
|
1717
1970
|
threads: { attribute: false },
|
|
1718
1971
|
selectedThreadId: { attribute: false },
|
|
1972
|
+
inAppThreadId: { attribute: false },
|
|
1719
1973
|
errorMessage: { attribute: false },
|
|
1720
1974
|
suppressEmptyState: { attribute: false },
|
|
1721
1975
|
_query: { state: true }
|
|
@@ -1864,6 +2118,11 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(parsed))}</pre
|
|
|
1864
2118
|
color: #087653;
|
|
1865
2119
|
}
|
|
1866
2120
|
|
|
2121
|
+
.cpk-tl__pill--in-app {
|
|
2122
|
+
background: #bec2ff;
|
|
2123
|
+
color: #010507;
|
|
2124
|
+
}
|
|
2125
|
+
|
|
1867
2126
|
/* ── Empty state ── */
|
|
1868
2127
|
.cpk-tl__empty {
|
|
1869
2128
|
padding: 32px 16px;
|
|
@@ -1937,6 +2196,8 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(parsed))}</pre
|
|
|
1937
2196
|
this.agentStateInput = null;
|
|
1938
2197
|
this.agentEventsInput = [];
|
|
1939
2198
|
this.liveMessageVersion = 0;
|
|
2199
|
+
this.viewInAppMode = "hidden";
|
|
2200
|
+
this.viewInAppError = null;
|
|
1940
2201
|
this.focusMessageId = null;
|
|
1941
2202
|
this.focusRequestId = 0;
|
|
1942
2203
|
this._tab = "timeline";
|
|
@@ -2937,8 +3198,32 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson(parsed))}</pre
|
|
|
2937
3198
|
</span>
|
|
2938
3199
|
`)}
|
|
2939
3200
|
</div>
|
|
3201
|
+
${this.renderViewInAppAction()}
|
|
2940
3202
|
${bulkControls}
|
|
2941
3203
|
</div>
|
|
3204
|
+
`;
|
|
3205
|
+
}
|
|
3206
|
+
renderViewInAppAction() {
|
|
3207
|
+
if (this.viewInAppMode === "hidden") return lit.nothing;
|
|
3208
|
+
const isStop = this.viewInAppMode === "stop";
|
|
3209
|
+
return lit.html`
|
|
3210
|
+
<button
|
|
3211
|
+
type="button"
|
|
3212
|
+
class="cpk-td__view-in-app ${isStop ? "cpk-td__view-in-app--stop" : ""}"
|
|
3213
|
+
data-testid="cpk-inspector-view-in-app"
|
|
3214
|
+
aria-label=${isStop ? "Stop viewing this thread in the app" : "View this thread in your app"}
|
|
3215
|
+
@click=${() => {
|
|
3216
|
+
this.dispatchEvent(new CustomEvent(isStop ? "stopViewing" : "viewInApp", {
|
|
3217
|
+
bubbles: true,
|
|
3218
|
+
composed: true
|
|
3219
|
+
}));
|
|
3220
|
+
}}
|
|
3221
|
+
>
|
|
3222
|
+
${isStop ? "Stop viewing" : "View in your app"}
|
|
3223
|
+
</button>
|
|
3224
|
+
${this.viewInAppError ? lit.html`<span class="cpk-td__view-in-app-error" role="alert"
|
|
3225
|
+
>${this.viewInAppError}</span
|
|
3226
|
+
>` : lit.nothing}
|
|
2942
3227
|
`;
|
|
2943
3228
|
}
|
|
2944
3229
|
renderActiveBulkControls() {
|
|
@@ -3523,6 +3808,8 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
3523
3808
|
agentStateInput: { attribute: false },
|
|
3524
3809
|
agentEventsInput: { attribute: false },
|
|
3525
3810
|
liveMessageVersion: { attribute: false },
|
|
3811
|
+
viewInAppMode: { attribute: false },
|
|
3812
|
+
viewInAppError: { attribute: false },
|
|
3526
3813
|
focusMessageId: { attribute: false },
|
|
3527
3814
|
focusRequestId: { attribute: false },
|
|
3528
3815
|
_tab: { state: true },
|
|
@@ -3754,6 +4041,37 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
3754
4041
|
overflow-wrap: anywhere;
|
|
3755
4042
|
}
|
|
3756
4043
|
|
|
4044
|
+
.cpk-td__view-in-app {
|
|
4045
|
+
appearance: none;
|
|
4046
|
+
flex-shrink: 0;
|
|
4047
|
+
margin: 0;
|
|
4048
|
+
border: 1px solid #5558b2;
|
|
4049
|
+
border-radius: 6px;
|
|
4050
|
+
background: #5558b2;
|
|
4051
|
+
color: #ffffff;
|
|
4052
|
+
font-family: "Plus Jakarta Sans", sans-serif;
|
|
4053
|
+
font-size: 11px;
|
|
4054
|
+
font-weight: 600;
|
|
4055
|
+
padding: 5px 10px;
|
|
4056
|
+
cursor: pointer;
|
|
4057
|
+
}
|
|
4058
|
+
|
|
4059
|
+
.cpk-td__view-in-app:focus-visible {
|
|
4060
|
+
outline: 2px solid #010507;
|
|
4061
|
+
outline-offset: 2px;
|
|
4062
|
+
}
|
|
4063
|
+
|
|
4064
|
+
.cpk-td__view-in-app--stop {
|
|
4065
|
+
background: #ffffff;
|
|
4066
|
+
color: #5558b2;
|
|
4067
|
+
}
|
|
4068
|
+
|
|
4069
|
+
.cpk-td__view-in-app-error {
|
|
4070
|
+
flex-basis: 100%;
|
|
4071
|
+
color: #c0333a;
|
|
4072
|
+
font-size: 11px;
|
|
4073
|
+
}
|
|
4074
|
+
|
|
3757
4075
|
/*
|
|
3758
4076
|
* Each tab's content is wrapped in this panel so the keep-mounted
|
|
3759
4077
|
* inactive panels can be hidden via display:none without disturbing
|
|
@@ -5231,6 +5549,12 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5231
5549
|
};
|
|
5232
5550
|
this.lastScrolledAgentNavigationLayout = null;
|
|
5233
5551
|
this.selectedThreadId = null;
|
|
5552
|
+
this.inAppThreadId = null;
|
|
5553
|
+
this.inAppAgentId = null;
|
|
5554
|
+
this.inAppSource = null;
|
|
5555
|
+
this.activeViewInAppRequestId = null;
|
|
5556
|
+
this.viewInAppError = null;
|
|
5557
|
+
this.inspectorBridgeUnsubscribers = [];
|
|
5234
5558
|
this.selectedRealThreadIsExplicit = false;
|
|
5235
5559
|
this.selectedLocalExampleThreadId = null;
|
|
5236
5560
|
this.requestedThreadId = null;
|
|
@@ -5294,9 +5618,39 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5294
5618
|
this.announcementLoaded = false;
|
|
5295
5619
|
this.announcementPromise = null;
|
|
5296
5620
|
this.newsSignalArmed = false;
|
|
5297
|
-
this.
|
|
5298
|
-
this.
|
|
5621
|
+
this.pulsingSignal = null;
|
|
5622
|
+
this.pendingPulseSignal = null;
|
|
5299
5623
|
this.pulseTimeoutId = null;
|
|
5624
|
+
this.errorSignalArmed = {
|
|
5625
|
+
connection: false,
|
|
5626
|
+
threads: false
|
|
5627
|
+
};
|
|
5628
|
+
this.eventErrorArmed = {
|
|
5629
|
+
run: false,
|
|
5630
|
+
tool: false,
|
|
5631
|
+
memory: false
|
|
5632
|
+
};
|
|
5633
|
+
this.eventErrorDetails = {
|
|
5634
|
+
run: null,
|
|
5635
|
+
tool: null,
|
|
5636
|
+
memory: null
|
|
5637
|
+
};
|
|
5638
|
+
this.pendingScrollToEventId = null;
|
|
5639
|
+
this.pendingScrollToToolCallId = null;
|
|
5640
|
+
this.threadRefreshLastSentAt = /* @__PURE__ */ new Map();
|
|
5641
|
+
this.threadRefreshTrailingTimers = /* @__PURE__ */ new Map();
|
|
5642
|
+
this.errorBeatSpent = false;
|
|
5643
|
+
this.errorSignalViewedSources = /* @__PURE__ */ new Set();
|
|
5644
|
+
this.gestureSignal = null;
|
|
5645
|
+
this.pillPhase = null;
|
|
5646
|
+
this.pillDirection = null;
|
|
5647
|
+
this.pillTimeoutId = null;
|
|
5648
|
+
this.launcherHudOpen = false;
|
|
5649
|
+
this.launcherHudSide = "left";
|
|
5650
|
+
this.launcherHudHelp = null;
|
|
5651
|
+
this.launcherHudCloseTimer = null;
|
|
5652
|
+
this.hudLandingMenu = null;
|
|
5653
|
+
this.pillOutcome = null;
|
|
5300
5654
|
this.viewedNewsSignalIds = /* @__PURE__ */ new Set();
|
|
5301
5655
|
this.pendingNewsSignalViewed = null;
|
|
5302
5656
|
this.viewedBannerSurfaces = /* @__PURE__ */ new Set();
|
|
@@ -5370,9 +5724,60 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5370
5724
|
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>` };
|
|
5371
5725
|
this.handleDocumentVisibilityChange = () => {
|
|
5372
5726
|
this.accountCtaMotionPaused = document.visibilityState !== "visible";
|
|
5373
|
-
if (document.visibilityState === "visible" &&
|
|
5727
|
+
if (document.visibilityState === "visible" && !this.isOpen) this.flushPendingSignalPulse();
|
|
5728
|
+
this.requestUpdate();
|
|
5729
|
+
};
|
|
5730
|
+
this.handlePillClick = (event) => {
|
|
5731
|
+
event.preventDefault();
|
|
5732
|
+
event.stopPropagation();
|
|
5733
|
+
this.openInspector("floating_button");
|
|
5734
|
+
};
|
|
5735
|
+
this.handleLauncherHudEnter = () => {
|
|
5736
|
+
this.openLauncherHud();
|
|
5737
|
+
};
|
|
5738
|
+
this.handleLauncherHudLeave = () => {
|
|
5739
|
+
if (this.launcherHudCloseTimer !== null) clearTimeout(this.launcherHudCloseTimer);
|
|
5740
|
+
this.launcherHudCloseTimer = setTimeout(() => {
|
|
5741
|
+
this.launcherHudCloseTimer = null;
|
|
5742
|
+
this.closeLauncherHud();
|
|
5743
|
+
}, 160);
|
|
5744
|
+
};
|
|
5745
|
+
this.handleLauncherHudFocusIn = () => {
|
|
5746
|
+
this.openLauncherHud();
|
|
5747
|
+
};
|
|
5748
|
+
this.handleLauncherHudFocusOut = (event) => {
|
|
5749
|
+
const next = event.relatedTarget;
|
|
5750
|
+
const wrapper = event.currentTarget;
|
|
5751
|
+
if (next instanceof Node && wrapper instanceof Node && wrapper.contains(next)) return;
|
|
5752
|
+
this.closeLauncherHud();
|
|
5753
|
+
};
|
|
5754
|
+
this.handleLauncherHudKeydown = (event) => {
|
|
5755
|
+
var _this$activeRoot$quer;
|
|
5756
|
+
if (event.key !== "Escape") return;
|
|
5757
|
+
if (!this.launcherHudOpen) return;
|
|
5758
|
+
event.preventDefault();
|
|
5759
|
+
event.stopPropagation();
|
|
5760
|
+
this.closeLauncherHud();
|
|
5761
|
+
(_this$activeRoot$quer = this.activeRoot.querySelector(".console-button")) === null || _this$activeRoot$quer === void 0 || _this$activeRoot$quer.focus();
|
|
5762
|
+
};
|
|
5763
|
+
this.handleHudActionClick = (event, row) => {
|
|
5764
|
+
event.preventDefault();
|
|
5765
|
+
event.stopPropagation();
|
|
5766
|
+
this.hudLandingMenu = row === "inspector" ? null : row === "threads" ? "threads" : row === "learning" ? "memories" : "home";
|
|
5767
|
+
this.closeLauncherHud();
|
|
5768
|
+
this.openInspector("floating_button");
|
|
5769
|
+
};
|
|
5770
|
+
this.handleHudHelpClick = (event, row) => {
|
|
5771
|
+
event.preventDefault();
|
|
5772
|
+
event.stopPropagation();
|
|
5773
|
+
this.launcherHudHelp = this.launcherHudHelp === row ? null : row;
|
|
5374
5774
|
this.requestUpdate();
|
|
5375
5775
|
};
|
|
5776
|
+
this.handleHudRowClick = (event, row) => {
|
|
5777
|
+
const target = event.target;
|
|
5778
|
+
if (target instanceof Element && target.closest(".cpk-launcher-hud__help, [data-cpk-hud-action]")) return;
|
|
5779
|
+
this.handleHudActionClick(event, row);
|
|
5780
|
+
};
|
|
5376
5781
|
this.handleSidebarToggle = () => {
|
|
5377
5782
|
this.sidebarRailTooltip = null;
|
|
5378
5783
|
this.sidebarCollapsed = !this.sidebarCollapsed;
|
|
@@ -5404,6 +5809,18 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5404
5809
|
this.persistState();
|
|
5405
5810
|
this.requestUpdate();
|
|
5406
5811
|
};
|
|
5812
|
+
this.handleEventErrorBannerKeydown = (event) => {
|
|
5813
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
5814
|
+
event.preventDefault();
|
|
5815
|
+
this.refocusEventErrorLanding(event);
|
|
5816
|
+
};
|
|
5817
|
+
this.refocusEventErrorLanding = (event) => {
|
|
5818
|
+
var _event$currentTarget;
|
|
5819
|
+
const key = (_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 ? void 0 : _event$currentTarget.dataset.cpkEventError;
|
|
5820
|
+
if (!key || !isEventErrorKey(key)) return;
|
|
5821
|
+
this.applyEventErrorLanding(key);
|
|
5822
|
+
this.requestUpdate();
|
|
5823
|
+
};
|
|
5407
5824
|
this.handleSystemColorSchemeChange = (event) => {
|
|
5408
5825
|
if (this.hasExplicitColorScheme) return;
|
|
5409
5826
|
this.colorScheme = event.matches ? "dark" : "light";
|
|
@@ -5540,7 +5957,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5540
5957
|
this.closePopOut();
|
|
5541
5958
|
};
|
|
5542
5959
|
this.handleResizePointerDown = (event) => {
|
|
5543
|
-
var _event$
|
|
5960
|
+
var _event$currentTarget2, _target$setPointerCap2;
|
|
5544
5961
|
event.stopPropagation();
|
|
5545
5962
|
event.preventDefault();
|
|
5546
5963
|
this.hasCustomPosition.window = true;
|
|
@@ -5552,7 +5969,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5552
5969
|
};
|
|
5553
5970
|
this.resizeInitialSize = { ...this.contextState.window.size };
|
|
5554
5971
|
this.resizeInitialPosition = { ...this.contextState.window.position };
|
|
5555
|
-
const edge = (_event$
|
|
5972
|
+
const edge = (_event$currentTarget2 = event.currentTarget) === null || _event$currentTarget2 === void 0 ? void 0 : _event$currentTarget2.dataset.resizeEdge;
|
|
5556
5973
|
this.resizeEdge = edge === "w" || edge === "e" || edge === "s" || edge === "se" || edge === "sw" ? edge : "se";
|
|
5557
5974
|
if (document.body && this.dockMode !== "floating") document.body.style.transition = "";
|
|
5558
5975
|
const target = event.currentTarget;
|
|
@@ -5795,6 +6212,40 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
5795
6212
|
if (target.hasPointerCapture(this.threadDividerPointerId)) target.releasePointerCapture(this.threadDividerPointerId);
|
|
5796
6213
|
this.threadDividerResizing = false;
|
|
5797
6214
|
};
|
|
6215
|
+
this.handleViewInApp = () => {
|
|
6216
|
+
const thread = this.getSelectedRealThread();
|
|
6217
|
+
if (!thread) return;
|
|
6218
|
+
if (this.activeViewInAppRequestId && this.inAppAgentId) (0, _copilotkit_core.emitInspectorStopViewing)({
|
|
6219
|
+
requestId: this.activeViewInAppRequestId,
|
|
6220
|
+
agentId: this.inAppAgentId
|
|
6221
|
+
});
|
|
6222
|
+
this.viewInAppError = null;
|
|
6223
|
+
const requestId = (0, _copilotkit_core.createInspectorThreadRequestId)();
|
|
6224
|
+
this.activeViewInAppRequestId = requestId;
|
|
6225
|
+
if (!(0, _copilotkit_core.emitInspectorViewThread)({
|
|
6226
|
+
requestId,
|
|
6227
|
+
threadId: thread.id,
|
|
6228
|
+
agentId: thread.agentId
|
|
6229
|
+
})) {
|
|
6230
|
+
this.activeViewInAppRequestId = null;
|
|
6231
|
+
this.inAppThreadId = null;
|
|
6232
|
+
this.inAppAgentId = null;
|
|
6233
|
+
this.inAppSource = null;
|
|
6234
|
+
this.viewInAppError = "No official chat for this agent is on the page.";
|
|
6235
|
+
}
|
|
6236
|
+
this.requestUpdate();
|
|
6237
|
+
};
|
|
6238
|
+
this.handleStopViewing = () => {
|
|
6239
|
+
const requestId = this.activeViewInAppRequestId;
|
|
6240
|
+
const agentId = this.inAppAgentId;
|
|
6241
|
+
if (!requestId || !agentId) return;
|
|
6242
|
+
this.viewInAppError = null;
|
|
6243
|
+
(0, _copilotkit_core.emitInspectorStopViewing)({
|
|
6244
|
+
requestId,
|
|
6245
|
+
agentId
|
|
6246
|
+
});
|
|
6247
|
+
this.requestUpdate();
|
|
6248
|
+
};
|
|
5798
6249
|
this.handleThreadsExampleOverviewVideoControl = () => {
|
|
5799
6250
|
const video = this.threadsExampleOverviewVideoElement;
|
|
5800
6251
|
if (!video) return;
|
|
@@ -6224,7 +6675,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6224
6675
|
const statusSub = store.select(createThreadStoreStatusSelector()).subscribe(({ error, isLoading }) => {
|
|
6225
6676
|
if (capabilityGeneration !== this.threadCapabilityGeneration || !this.areThreadEndpointsAvailable()) return;
|
|
6226
6677
|
if (error) this._threadsErrorByAgent.set(agentId, error);
|
|
6227
|
-
else this._threadsErrorByAgent.delete(agentId);
|
|
6678
|
+
else if (!isLoading) this._threadsErrorByAgent.delete(agentId);
|
|
6228
6679
|
this._threadsLoadingByAgent.set(agentId, isLoading);
|
|
6229
6680
|
this.requestUpdate();
|
|
6230
6681
|
});
|
|
@@ -6238,7 +6689,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6238
6689
|
this._threadsLoadingByAgent.set(agentId, (0, _copilotkit_core.ɵselectThreadsIsLoading)(initialState));
|
|
6239
6690
|
const initialError = (0, _copilotkit_core.ɵselectThreadsError)(initialState);
|
|
6240
6691
|
if (initialError) this._threadsErrorByAgent.set(agentId, initialError);
|
|
6241
|
-
else this._threadsErrorByAgent.delete(agentId);
|
|
6692
|
+
else if (!(0, _copilotkit_core.ɵselectThreadsIsLoading)(initialState)) this._threadsErrorByAgent.delete(agentId);
|
|
6242
6693
|
this.rebuildFlattenedThreads();
|
|
6243
6694
|
this.autoSelectLatestThread();
|
|
6244
6695
|
}
|
|
@@ -6317,11 +6768,32 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6317
6768
|
core.registerThreadStore(agentId, store);
|
|
6318
6769
|
}
|
|
6319
6770
|
refreshOwnedThreadStore(agentId) {
|
|
6771
|
+
var _this$threadRefreshLa;
|
|
6320
6772
|
if (!this.areThreadEndpointsAvailable()) return;
|
|
6321
6773
|
const store = this._ownedThreadStores.get(agentId);
|
|
6322
6774
|
if (!store) return;
|
|
6775
|
+
const now = Date.now();
|
|
6776
|
+
const waitMs = THREAD_LIST_DEBOUNCE_MS - (now - ((_this$threadRefreshLa = this.threadRefreshLastSentAt.get(agentId)) !== null && _this$threadRefreshLa !== void 0 ? _this$threadRefreshLa : 0));
|
|
6777
|
+
if (waitMs <= 0) {
|
|
6778
|
+
this.sendOwnedThreadRefresh(agentId, store, now);
|
|
6779
|
+
return;
|
|
6780
|
+
}
|
|
6781
|
+
if (this.threadRefreshTrailingTimers.has(agentId)) return;
|
|
6782
|
+
this.threadRefreshTrailingTimers.set(agentId, setTimeout(() => {
|
|
6783
|
+
this.threadRefreshTrailingTimers.delete(agentId);
|
|
6784
|
+
const current = this._ownedThreadStores.get(agentId);
|
|
6785
|
+
if (!current) return;
|
|
6786
|
+
this.sendOwnedThreadRefresh(agentId, current, Date.now());
|
|
6787
|
+
}, waitMs));
|
|
6788
|
+
}
|
|
6789
|
+
sendOwnedThreadRefresh(agentId, store, sentAt) {
|
|
6790
|
+
this.threadRefreshLastSentAt.set(agentId, sentAt);
|
|
6323
6791
|
store.refresh();
|
|
6324
6792
|
}
|
|
6793
|
+
cancelThreadRefreshDebounce() {
|
|
6794
|
+
for (const timer of this.threadRefreshTrailingTimers.values()) clearTimeout(timer);
|
|
6795
|
+
this.threadRefreshTrailingTimers.clear();
|
|
6796
|
+
}
|
|
6325
6797
|
updateOwnedThreadStoreHeaders(headers) {
|
|
6326
6798
|
if (!this.areThreadEndpointsAvailable()) return;
|
|
6327
6799
|
const core = this.core;
|
|
@@ -6383,6 +6855,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6383
6855
|
this.runtimeStatus = core.runtimeConnectionStatus;
|
|
6384
6856
|
this.coreProperties = core.properties;
|
|
6385
6857
|
this.lastCoreError = null;
|
|
6858
|
+
this.clearAllEventErrors();
|
|
6386
6859
|
const supportsInspectorMetadata = this.coreSupportsInspectorMetadata(core);
|
|
6387
6860
|
this.updateInspectorMetadataProjection(this.readCoreInspectorMetadata(core));
|
|
6388
6861
|
this.coreSubscriber = {
|
|
@@ -6418,11 +6891,12 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6418
6891
|
this.updateInspectorMetadataProjection(inspectorMetadata);
|
|
6419
6892
|
this.requestUpdate();
|
|
6420
6893
|
} } : {},
|
|
6421
|
-
onError: ({ code, error }) => {
|
|
6894
|
+
onError: ({ code, error, context }) => {
|
|
6422
6895
|
this.lastCoreError = {
|
|
6423
6896
|
code,
|
|
6424
6897
|
message: error.message
|
|
6425
6898
|
};
|
|
6899
|
+
this.armEventErrorFromCode(code, error.message, context);
|
|
6426
6900
|
this.requestUpdate();
|
|
6427
6901
|
},
|
|
6428
6902
|
onAgentsChanged: ({ agents }) => {
|
|
@@ -6515,6 +6989,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6515
6989
|
}),
|
|
6516
6990
|
memoryStore.select(_copilotkit_core.ɵselectMemoriesError).subscribe((v) => {
|
|
6517
6991
|
this._memoriesError = v;
|
|
6992
|
+
if (v) this.armEventError("memory", v.message);
|
|
6518
6993
|
this.requestUpdate();
|
|
6519
6994
|
}),
|
|
6520
6995
|
memoryStore.select(_copilotkit_core.ɵselectMemoriesAvailable).subscribe((v) => {
|
|
@@ -6603,10 +7078,12 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6603
7078
|
this._recallQuery = "";
|
|
6604
7079
|
this.coreSubscriber = null;
|
|
6605
7080
|
this.runtimeStatus = null;
|
|
7081
|
+
this.cancelThreadRefreshDebounce();
|
|
6606
7082
|
this.inspectorMetadataValue = void 0;
|
|
6607
7083
|
this.inspectorMetadataProjection = projectInspectorMetadata(void 0, void 0);
|
|
6608
7084
|
this.metadataTelemetryFingerprints.clear();
|
|
6609
7085
|
this.lastCoreError = null;
|
|
7086
|
+
this.clearAllEventErrors();
|
|
6610
7087
|
this.coreProperties = {};
|
|
6611
7088
|
this.cachedTools = [];
|
|
6612
7089
|
this.toolSignature = "";
|
|
@@ -6985,6 +7462,7 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6985
7462
|
}
|
|
6986
7463
|
renderToolCallDetails(toolCalls) {
|
|
6987
7464
|
if (!Array.isArray(toolCalls) || toolCalls.length === 0) return lit.nothing;
|
|
7465
|
+
const toolError = this.eventErrorDetails.tool;
|
|
6988
7466
|
return lit.html`
|
|
6989
7467
|
<div class="mt-2 space-y-2">
|
|
6990
7468
|
${toolCalls.map((call, index) => {
|
|
@@ -6992,16 +7470,21 @@ ${(0, lit_directives_unsafe_html_js.unsafeHTML)(highlightedJson((_event$rawEvent
|
|
|
6992
7470
|
const functionName = (_ref9 = (_call$function$name = (_call$function = call.function) === null || _call$function === void 0 ? void 0 : _call$function.name) !== null && _call$function$name !== void 0 ? _call$function$name : call.toolName) !== null && _ref9 !== void 0 ? _ref9 : "Unknown function";
|
|
6993
7471
|
const callId = typeof (call === null || call === void 0 ? void 0 : call.id) === "string" ? call.id : `tool-call-${index + 1}`;
|
|
6994
7472
|
const argsString = this.formatToolCallArguments((_call$function2 = call.function) === null || _call$function2 === void 0 ? void 0 : _call$function2.arguments);
|
|
7473
|
+
const isFailedCall = (toolError === null || toolError === void 0 ? void 0 : toolError.toolCallId) !== void 0 && toolError.toolCallId === callId;
|
|
6995
7474
|
return lit.html`
|
|
6996
7475
|
<div
|
|
6997
|
-
class
|
|
7476
|
+
class=${isFailedCall ? "rounded-md border border-rose-300 bg-rose-50 p-3 text-xs text-gray-900" : "rounded-md border border-gray-200 bg-gray-50 p-3 text-xs text-gray-700"}
|
|
7477
|
+
data-cpk-failed-tool-call=${isFailedCall ? callId : void 0}
|
|
6998
7478
|
>
|
|
6999
7479
|
<div
|
|
7000
7480
|
class="flex flex-wrap items-center justify-between gap-1 font-medium text-gray-900"
|
|
7001
7481
|
>
|
|
7002
|
-
<span>${functionName}</span>
|
|
7003
|
-
<span class="text-[10px] text-gray-
|
|
7482
|
+
<span>${functionName}${isFailedCall ? " failed" : ""}</span>
|
|
7483
|
+
<span class="text-[10px] text-gray-600">ID: ${callId}</span>
|
|
7004
7484
|
</div>
|
|
7485
|
+
${isFailedCall && (toolError === null || toolError === void 0 ? void 0 : toolError.message) ? lit.html`<p class="mt-2 break-words leading-relaxed text-gray-800">
|
|
7486
|
+
${toolError.message}
|
|
7487
|
+
</p>` : lit.nothing}
|
|
7005
7488
|
${argsString ? lit.html`<pre
|
|
7006
7489
|
class="mt-2 overflow-auto rounded bg-white p-2 text-[11px] leading-relaxed text-gray-800"
|
|
7007
7490
|
>
|
|
@@ -7132,6 +7615,7 @@ ${argsString}</pre
|
|
|
7132
7615
|
clearLegacyAnnouncementReadState();
|
|
7133
7616
|
this.tryAutoAttachCore();
|
|
7134
7617
|
this.ensureAnnouncementLoading();
|
|
7618
|
+
this.subscribeToInspectorThreadBridge();
|
|
7135
7619
|
}
|
|
7136
7620
|
this.requestUpdate();
|
|
7137
7621
|
}
|
|
@@ -7154,13 +7638,16 @@ ${argsString}</pre
|
|
|
7154
7638
|
clearTimeout(this.transitionTimeoutId);
|
|
7155
7639
|
this.transitionTimeoutId = null;
|
|
7156
7640
|
}
|
|
7641
|
+
this.unsubscribeFromInspectorThreadBridge();
|
|
7157
7642
|
this.threadsSetupPromptCopyGeneration += 1;
|
|
7158
7643
|
if (this.threadsSetupPromptCopyResetTimeoutId !== null) {
|
|
7159
7644
|
window.clearTimeout(this.threadsSetupPromptCopyResetTimeoutId);
|
|
7160
7645
|
this.threadsSetupPromptCopyResetTimeoutId = null;
|
|
7161
7646
|
}
|
|
7162
7647
|
this.threadsSetupPromptCopyState = "idle";
|
|
7163
|
-
this.
|
|
7648
|
+
this.stopSignalPulse();
|
|
7649
|
+
this.cancelGestureTail();
|
|
7650
|
+
this.cancelThreadRefreshDebounce();
|
|
7164
7651
|
this.clearInspectorUsageRefresh();
|
|
7165
7652
|
this.cleanupThreadsExampleOverviewVideo();
|
|
7166
7653
|
this.removeDockStyles(true);
|
|
@@ -7203,6 +7690,7 @@ ${argsString}</pre
|
|
|
7203
7690
|
` : this.renderButton();
|
|
7204
7691
|
}
|
|
7205
7692
|
willUpdate() {
|
|
7693
|
+
this.evaluateErrorSignals();
|
|
7206
7694
|
this.reconcileSelectedMenuVisibility();
|
|
7207
7695
|
if (this.isOpen && this.dockMode === "docked-left") this.setAttribute("data-docked", "true");
|
|
7208
7696
|
else this.removeAttribute("data-docked");
|
|
@@ -7212,7 +7700,11 @@ ${argsString}</pre
|
|
|
7212
7700
|
this.syncThreadsExampleOverviewVideo();
|
|
7213
7701
|
this.maybeTrackInspectorMetadataViews();
|
|
7214
7702
|
this.maybeTrackNewsSignalViewed();
|
|
7703
|
+
this.resolvePillDirection();
|
|
7704
|
+
this.maybeTrackErrorSignalViewed();
|
|
7215
7705
|
this.maybeCompleteWhatsNewView();
|
|
7706
|
+
this.maybeCompleteEventErrorView();
|
|
7707
|
+
this.flushErrorLandingScroll();
|
|
7216
7708
|
this.maybeTrackHomeViewed();
|
|
7217
7709
|
if (!this.isOpen) {
|
|
7218
7710
|
this.lastScrolledAgentNavigationLayout = null;
|
|
@@ -7238,6 +7730,7 @@ ${argsString}</pre
|
|
|
7238
7730
|
this.lastScrolledAgentNavigationLayout = layoutKey;
|
|
7239
7731
|
}
|
|
7240
7732
|
renderButton() {
|
|
7733
|
+
var _this$getGestureLabel;
|
|
7241
7734
|
const buttonClasses = [
|
|
7242
7735
|
"console-button",
|
|
7243
7736
|
"group",
|
|
@@ -7250,17 +7743,10 @@ ${argsString}</pre
|
|
|
7250
7743
|
"justify-center",
|
|
7251
7744
|
"rounded-full",
|
|
7252
7745
|
"border",
|
|
7253
|
-
"border-white/20",
|
|
7254
|
-
"bg-slate-950/95",
|
|
7255
7746
|
"text-xs",
|
|
7256
7747
|
"font-medium",
|
|
7257
7748
|
"text-white",
|
|
7258
|
-
"ring-1",
|
|
7259
|
-
"ring-white/10",
|
|
7260
|
-
"backdrop-blur-md",
|
|
7261
7749
|
"transition",
|
|
7262
|
-
"hover:border-white/30",
|
|
7263
|
-
"hover:bg-slate-900/95",
|
|
7264
7750
|
"hover:scale-105",
|
|
7265
7751
|
"focus-visible:outline",
|
|
7266
7752
|
"focus-visible:outline-2",
|
|
@@ -7270,20 +7756,33 @@ ${argsString}</pre
|
|
|
7270
7756
|
"select-none",
|
|
7271
7757
|
this.isDragging ? "cursor-grabbing" : "cursor-pointer"
|
|
7272
7758
|
].join(" ");
|
|
7273
|
-
const
|
|
7274
|
-
|
|
7275
|
-
|
|
7759
|
+
const activeSignal = this.getActiveLauncherSignal();
|
|
7760
|
+
const signal = activeSignal ? LAUNCHER_SIGNALS[activeSignal] : null;
|
|
7761
|
+
const signalStyles = signal ? {
|
|
7762
|
+
"--cpk-launcher-signal": LAUNCHER_SIGNAL_COLORS[signal.tone],
|
|
7763
|
+
"--cpk-launcher-cadence": `${signal.cadence}ms`
|
|
7276
7764
|
} : {};
|
|
7277
7765
|
return lit.html`
|
|
7278
|
-
<div
|
|
7766
|
+
<div
|
|
7767
|
+
class="console-button-wrapper"
|
|
7768
|
+
data-cpk-hud=${this.launcherHudOpen ? "open" : "closed"}
|
|
7769
|
+
@pointerenter=${this.handleLauncherHudEnter}
|
|
7770
|
+
@pointerleave=${this.handleLauncherHudLeave}
|
|
7771
|
+
@focusin=${this.handleLauncherHudFocusIn}
|
|
7772
|
+
@focusout=${this.handleLauncherHudFocusOut}
|
|
7773
|
+
@keydown=${this.handleLauncherHudKeydown}
|
|
7774
|
+
>
|
|
7775
|
+
${this.renderLauncherPill()}
|
|
7279
7776
|
<button
|
|
7280
7777
|
class=${buttonClasses}
|
|
7281
7778
|
type="button"
|
|
7282
|
-
aria-
|
|
7283
|
-
|
|
7779
|
+
aria-expanded=${this.launcherHudOpen ? "true" : "false"}
|
|
7780
|
+
aria-controls=${this.launcherHudOpen ? "cpk-launcher-hud" : lit.nothing}
|
|
7781
|
+
aria-label=${signal && signal.tone === "error" ? `${LAUNCHER_BASE_LABEL}, ${signal.accessibleLabel}` : LAUNCHER_BASE_LABEL}
|
|
7782
|
+
title=${activeSignal === NEWS_SIGNAL_ID ? `${WHATS_NEW_VIEW_LABEL} — unread` : lit.nothing}
|
|
7284
7783
|
data-drag-context="button"
|
|
7285
|
-
data-cpk-signal=${
|
|
7286
|
-
data-cpk-signal-pulsing=${
|
|
7784
|
+
data-cpk-signal=${signal ? signal.tone : lit.nothing}
|
|
7785
|
+
data-cpk-signal-pulsing=${activeSignal !== null && this.pulsingSignal === activeSignal ? "true" : lit.nothing}
|
|
7287
7786
|
style=${(0, lit_directives_style_map_js.styleMap)(signalStyles)}
|
|
7288
7787
|
data-dragging=${this.isDragging && this.pointerContext === "button" ? "true" : "false"}
|
|
7289
7788
|
@pointerdown=${this.handlePointerDown}
|
|
@@ -7298,16 +7797,213 @@ ${argsString}</pre
|
|
|
7298
7797
|
class="cpk-launcher-mark h-6 w-auto"
|
|
7299
7798
|
loading="lazy"
|
|
7300
7799
|
/>
|
|
7301
|
-
${
|
|
7800
|
+
${activeSignal !== null ? lit.html`<span
|
|
7302
7801
|
class="cpk-launcher-signal-wash"
|
|
7303
7802
|
aria-hidden="true"
|
|
7304
7803
|
></span>
|
|
7305
7804
|
<span
|
|
7306
7805
|
class="cpk-launcher-signal-dot"
|
|
7307
|
-
data-cpk-signal-dot=${
|
|
7806
|
+
data-cpk-signal-dot=${activeSignal}
|
|
7308
7807
|
aria-hidden="true"
|
|
7309
7808
|
></span>` : lit.nothing}
|
|
7310
7809
|
</button>
|
|
7810
|
+
${lit.html`<span
|
|
7811
|
+
class="sr-only"
|
|
7812
|
+
data-cpk-launcher-announcement
|
|
7813
|
+
role="status"
|
|
7814
|
+
aria-live="polite"
|
|
7815
|
+
>${(_this$getGestureLabel = this.getGestureLabel()) !== null && _this$getGestureLabel !== void 0 ? _this$getGestureLabel : ""}</span
|
|
7816
|
+
>`}
|
|
7817
|
+
${this.renderLauncherHud()}
|
|
7818
|
+
</div>
|
|
7819
|
+
`;
|
|
7820
|
+
}
|
|
7821
|
+
/**
|
|
7822
|
+
* The words the running gesture carries, or null when the launcher is quiet.
|
|
7823
|
+
*
|
|
7824
|
+
* Read from the signal's own description rather than from a condition on the
|
|
7825
|
+
* tone, so a third signal can carry a pill by declaring a label.
|
|
7826
|
+
*/
|
|
7827
|
+
getGestureLabel() {
|
|
7828
|
+
var _LAUNCHER_SIGNALS$thi;
|
|
7829
|
+
if (this.gestureSignal === null) return null;
|
|
7830
|
+
return (_LAUNCHER_SIGNALS$thi = LAUNCHER_SIGNALS[this.gestureSignal].pillLabel) !== null && _LAUNCHER_SIGNALS$thi !== void 0 ? _LAUNCHER_SIGNALS$thi : null;
|
|
7831
|
+
}
|
|
7832
|
+
/**
|
|
7833
|
+
* The pill, laid out at its full width and clipped, for the whole gesture.
|
|
7834
|
+
*
|
|
7835
|
+
* It renders from the first frame of the beat — clipped to nothing, so it
|
|
7836
|
+
* shows nothing — because the room it needs cannot be measured until it has
|
|
7837
|
+
* been laid out, and the direction is decided at gesture start.
|
|
7838
|
+
*/
|
|
7839
|
+
renderLauncherPill() {
|
|
7840
|
+
var _this$pillDirection;
|
|
7841
|
+
const key = this.gestureSignal;
|
|
7842
|
+
if (key === null || this.pillPhase === null) return lit.nothing;
|
|
7843
|
+
const signal = LAUNCHER_SIGNALS[key];
|
|
7844
|
+
const label = signal.pillLabel;
|
|
7845
|
+
if (label === void 0) return lit.nothing;
|
|
7846
|
+
return lit.html`
|
|
7847
|
+
<span
|
|
7848
|
+
class="cpk-launcher-pill"
|
|
7849
|
+
data-cpk-launcher-pill=${key}
|
|
7850
|
+
data-cpk-pill-phase=${this.pillPhase}
|
|
7851
|
+
data-cpk-pill-direction=${(_this$pillDirection = this.pillDirection) !== null && _this$pillDirection !== void 0 ? _this$pillDirection : "left"}
|
|
7852
|
+
style=${(0, lit_directives_style_map_js.styleMap)({
|
|
7853
|
+
"--cpk-launcher-signal": LAUNCHER_SIGNAL_COLORS[signal.tone],
|
|
7854
|
+
"--cpk-launcher-pill-open": `${ERROR_GESTURE_MS.open}ms`,
|
|
7855
|
+
"--cpk-launcher-pill-close": `${ERROR_GESTURE_MS.close}ms`
|
|
7856
|
+
})}
|
|
7857
|
+
aria-hidden="true"
|
|
7858
|
+
@click=${this.handlePillClick}
|
|
7859
|
+
>
|
|
7860
|
+
<span class="cpk-launcher-pill__heading" data-cpk-pill-heading
|
|
7861
|
+
>${label}</span
|
|
7862
|
+
>
|
|
7863
|
+
<span class="cpk-launcher-pill__subline" data-cpk-pill-subline
|
|
7864
|
+
>${PILL_SUBLINE_LABEL}</span
|
|
7865
|
+
>
|
|
7866
|
+
</span>
|
|
7867
|
+
`;
|
|
7868
|
+
}
|
|
7869
|
+
isLauncherHudBlocked() {
|
|
7870
|
+
return this.gestureSignal !== null;
|
|
7871
|
+
}
|
|
7872
|
+
resolveLauncherHudSide() {
|
|
7873
|
+
if (typeof window === "undefined") {
|
|
7874
|
+
this.launcherHudSide = "left";
|
|
7875
|
+
return;
|
|
7876
|
+
}
|
|
7877
|
+
const button = this.activeRoot.querySelector(".console-button");
|
|
7878
|
+
if (!button) {
|
|
7879
|
+
this.launcherHudSide = "left";
|
|
7880
|
+
return;
|
|
7881
|
+
}
|
|
7882
|
+
if (button.getBoundingClientRect().left - LAUNCHER_HUD_WIDTH >= EDGE_MARGIN) {
|
|
7883
|
+
this.launcherHudSide = "left";
|
|
7884
|
+
return;
|
|
7885
|
+
}
|
|
7886
|
+
this.launcherHudSide = "right";
|
|
7887
|
+
}
|
|
7888
|
+
openLauncherHud() {
|
|
7889
|
+
if (this.isLauncherHudBlocked() || this.isOpen) return;
|
|
7890
|
+
this.resolveLauncherHudSide();
|
|
7891
|
+
if (this.launcherHudCloseTimer !== null) {
|
|
7892
|
+
clearTimeout(this.launcherHudCloseTimer);
|
|
7893
|
+
this.launcherHudCloseTimer = null;
|
|
7894
|
+
}
|
|
7895
|
+
if (this.launcherHudOpen) return;
|
|
7896
|
+
this.launcherHudOpen = true;
|
|
7897
|
+
this.requestUpdate();
|
|
7898
|
+
}
|
|
7899
|
+
closeLauncherHud() {
|
|
7900
|
+
if (this.launcherHudCloseTimer !== null) {
|
|
7901
|
+
clearTimeout(this.launcherHudCloseTimer);
|
|
7902
|
+
this.launcherHudCloseTimer = null;
|
|
7903
|
+
}
|
|
7904
|
+
if (!this.launcherHudOpen && this.launcherHudHelp === null) return;
|
|
7905
|
+
this.launcherHudOpen = false;
|
|
7906
|
+
this.launcherHudHelp = null;
|
|
7907
|
+
this.requestUpdate();
|
|
7908
|
+
}
|
|
7909
|
+
renderHudCheck() {
|
|
7910
|
+
return lit.html`
|
|
7911
|
+
<svg
|
|
7912
|
+
class="cpk-launcher-hud__check"
|
|
7913
|
+
viewBox="0 0 16 16"
|
|
7914
|
+
aria-hidden="true"
|
|
7915
|
+
focusable="false"
|
|
7916
|
+
data-cpk-hud-check
|
|
7917
|
+
>
|
|
7918
|
+
<path
|
|
7919
|
+
fill="none"
|
|
7920
|
+
stroke="currentColor"
|
|
7921
|
+
stroke-width="2"
|
|
7922
|
+
stroke-linecap="round"
|
|
7923
|
+
stroke-linejoin="round"
|
|
7924
|
+
d="M3 8.5 6.5 12 13 4.5"
|
|
7925
|
+
/>
|
|
7926
|
+
</svg>
|
|
7927
|
+
`;
|
|
7928
|
+
}
|
|
7929
|
+
renderHudRow(args) {
|
|
7930
|
+
const helpOpen = this.launcherHudHelp === args.id;
|
|
7931
|
+
const detailId = `cpk-hud-detail-${args.id}`;
|
|
7932
|
+
return lit.html`
|
|
7933
|
+
<li
|
|
7934
|
+
class="cpk-launcher-hud__row"
|
|
7935
|
+
data-cpk-hud-row=${args.id}
|
|
7936
|
+
data-cpk-hud-help=${helpOpen ? "open" : lit.nothing}
|
|
7937
|
+
@click=${(event) => this.handleHudRowClick(event, args.id)}
|
|
7938
|
+
>
|
|
7939
|
+
<button
|
|
7940
|
+
type="button"
|
|
7941
|
+
class="cpk-launcher-hud__action"
|
|
7942
|
+
data-cpk-hud-action
|
|
7943
|
+
aria-describedby=${detailId}
|
|
7944
|
+
@click=${(event) => this.handleHudActionClick(event, args.id)}
|
|
7945
|
+
@pointerdown=${(event) => event.stopPropagation()}
|
|
7946
|
+
>
|
|
7947
|
+
${args.connected ? this.renderHudCheck() : lit.nothing}${args.label}
|
|
7948
|
+
</button>
|
|
7949
|
+
<button
|
|
7950
|
+
type="button"
|
|
7951
|
+
class="cpk-launcher-hud__help"
|
|
7952
|
+
aria-expanded=${helpOpen ? "true" : "false"}
|
|
7953
|
+
aria-controls=${detailId}
|
|
7954
|
+
aria-label=${`About ${args.label}`}
|
|
7955
|
+
@click=${(event) => this.handleHudHelpClick(event, args.id)}
|
|
7956
|
+
@pointerdown=${(event) => event.stopPropagation()}
|
|
7957
|
+
>
|
|
7958
|
+
<span aria-hidden="true">?</span>
|
|
7959
|
+
</button>
|
|
7960
|
+
<p class="cpk-launcher-hud__detail" id=${detailId}>${args.detail}</p>
|
|
7961
|
+
</li>
|
|
7962
|
+
`;
|
|
7963
|
+
}
|
|
7964
|
+
renderLauncherHud() {
|
|
7965
|
+
var _this$_core6;
|
|
7966
|
+
if (!this.launcherHudOpen) return lit.nothing;
|
|
7967
|
+
const threadsOn = this.areThreadEndpointsAvailable();
|
|
7968
|
+
const intelligenceOn = Boolean((_this$_core6 = this._core) === null || _this$_core6 === void 0 ? void 0 : _this$_core6.intelligence);
|
|
7969
|
+
const learningOn = intelligenceOn && this._memoriesAvailable;
|
|
7970
|
+
return lit.html`
|
|
7971
|
+
<div
|
|
7972
|
+
class="cpk-launcher-hud"
|
|
7973
|
+
id="cpk-launcher-hud"
|
|
7974
|
+
data-cpk-launcher-hud
|
|
7975
|
+
data-cpk-hud-side=${this.launcherHudSide}
|
|
7976
|
+
>
|
|
7977
|
+
<div class="cpk-launcher-hud__card">
|
|
7978
|
+
<span class="cpk-launcher-hud__arrow" aria-hidden="true"></span>
|
|
7979
|
+
<ul class="cpk-launcher-hud__list" role="list">
|
|
7980
|
+
${this.renderHudRow({
|
|
7981
|
+
id: "inspector",
|
|
7982
|
+
label: HUD_OPEN_INSPECTOR_LABEL,
|
|
7983
|
+
detail: HUD_OPEN_INSPECTOR_DETAIL
|
|
7984
|
+
})}
|
|
7985
|
+
</ul>
|
|
7986
|
+
<ul class="cpk-launcher-hud__list" role="list">
|
|
7987
|
+
${this.renderHudRow({
|
|
7988
|
+
id: "threads",
|
|
7989
|
+
label: threadsOn ? HUD_THREADS_ON_LABEL : HUD_THREADS_OFF_LABEL,
|
|
7990
|
+
detail: threadsOn ? HUD_THREADS_ON_DETAIL : HUD_THREADS_OFF_DETAIL,
|
|
7991
|
+
connected: threadsOn
|
|
7992
|
+
})}
|
|
7993
|
+
${this.renderHudRow({
|
|
7994
|
+
id: "intelligence",
|
|
7995
|
+
label: intelligenceOn ? HUD_INTELLIGENCE_ON_LABEL : HUD_INTELLIGENCE_OFF_LABEL,
|
|
7996
|
+
detail: intelligenceOn ? HUD_INTELLIGENCE_ON_DETAIL : HUD_INTELLIGENCE_OFF_DETAIL,
|
|
7997
|
+
connected: intelligenceOn
|
|
7998
|
+
})}
|
|
7999
|
+
${this.renderHudRow({
|
|
8000
|
+
id: "learning",
|
|
8001
|
+
label: learningOn ? HUD_LEARNING_ON_LABEL : HUD_LEARNING_OFF_LABEL,
|
|
8002
|
+
detail: learningOn ? HUD_LEARNING_ON_DETAIL : HUD_LEARNING_OFF_DETAIL,
|
|
8003
|
+
connected: learningOn
|
|
8004
|
+
})}
|
|
8005
|
+
</ul>
|
|
8006
|
+
</div>
|
|
7311
8007
|
</div>
|
|
7312
8008
|
`;
|
|
7313
8009
|
}
|
|
@@ -7330,7 +8026,6 @@ ${argsString}</pre
|
|
|
7330
8026
|
`;
|
|
7331
8027
|
}
|
|
7332
8028
|
renderInspectorSidebar(iconRail, automaticallyCollapsed, agentSelector) {
|
|
7333
|
-
const unread = this.newsSignalArmed && this.announcementLoaded;
|
|
7334
8029
|
const homeModel = this.getHomeModel();
|
|
7335
8030
|
return lit.html`
|
|
7336
8031
|
<aside
|
|
@@ -7372,7 +8067,7 @@ ${argsString}</pre
|
|
|
7372
8067
|
</button>` : lit.nothing}
|
|
7373
8068
|
${items.map((item) => {
|
|
7374
8069
|
const isSelected = this.selectedMenu === item.key;
|
|
7375
|
-
const
|
|
8070
|
+
const marker = this.getNavigationSignalFor(item.key);
|
|
7376
8071
|
return lit.html`
|
|
7377
8072
|
<button
|
|
7378
8073
|
type="button"
|
|
@@ -7380,7 +8075,7 @@ ${argsString}</pre
|
|
|
7380
8075
|
data-inspector-group=${group}
|
|
7381
8076
|
data-inspector-menu-key=${item.key}
|
|
7382
8077
|
aria-current=${isSelected ? "page" : lit.nothing}
|
|
7383
|
-
aria-label=${
|
|
8078
|
+
aria-label=${marker ? `${item.label}, ${marker.accessibleLabel}` : item.label}
|
|
7384
8079
|
data-inspector-tooltip=${item.label}
|
|
7385
8080
|
title=${iconRail ? lit.nothing : item.label}
|
|
7386
8081
|
style=${INTERACTIVE_FOCUS_BASE_STYLE}
|
|
@@ -7394,8 +8089,12 @@ ${argsString}</pre
|
|
|
7394
8089
|
${item.key === "threads" ? (0, lit_directives_unsafe_html_js.unsafeHTML)(this.customTabIcons.threads) : this.renderIcon(item.icon)}
|
|
7395
8090
|
</span>
|
|
7396
8091
|
<span class="inspector-nav-label">${item.label}</span>
|
|
7397
|
-
${
|
|
7398
|
-
<span
|
|
8092
|
+
${marker ? lit.html`
|
|
8093
|
+
<span
|
|
8094
|
+
class="inspector-nav-signal-dot"
|
|
8095
|
+
data-cpk-signal-tone=${marker.tone}
|
|
8096
|
+
aria-hidden="true"
|
|
8097
|
+
></span>
|
|
7399
8098
|
` : lit.nothing}
|
|
7400
8099
|
</button>
|
|
7401
8100
|
`;
|
|
@@ -7513,13 +8212,13 @@ ${argsString}</pre
|
|
|
7513
8212
|
`;
|
|
7514
8213
|
}
|
|
7515
8214
|
getHomeModel() {
|
|
7516
|
-
var _this$
|
|
8215
|
+
var _this$_core7, _this$_core8, _this$_core9, _this$_core10, _this$_core11, _this$_core12, _this$_core13, _this$announcementPre, _this$announcementMar, _this$announcementHtm;
|
|
7517
8216
|
const lastRuntimeEvent = this.flattenedEvents[0];
|
|
7518
8217
|
return buildHomeModel({
|
|
7519
|
-
intelligenceConnected: Boolean((_this$
|
|
8218
|
+
intelligenceConnected: Boolean((_this$_core7 = this._core) === null || _this$_core7 === void 0 ? void 0 : _this$_core7.intelligence),
|
|
7520
8219
|
threadsAvailable: this.areThreadEndpointsAvailable(),
|
|
7521
8220
|
metadata: this.inspectorMetadataProjection,
|
|
7522
|
-
runtimeUrl: (_this$
|
|
8221
|
+
runtimeUrl: (_this$_core8 = this._core) === null || _this$_core8 === void 0 ? void 0 : _this$_core8.runtimeUrl,
|
|
7523
8222
|
runtimeConnectionState: this.getCoreStatusSummary().state,
|
|
7524
8223
|
lastRuntimeEvent: lastRuntimeEvent ? {
|
|
7525
8224
|
id: lastRuntimeEvent.id,
|
|
@@ -7528,11 +8227,11 @@ ${argsString}</pre
|
|
|
7528
8227
|
timestamp: lastRuntimeEvent.timestamp
|
|
7529
8228
|
} : void 0,
|
|
7530
8229
|
memoriesOn: this._memoriesAvailable,
|
|
7531
|
-
a2uiOn: ((_this$
|
|
7532
|
-
openGenUiOn: ((_this$
|
|
7533
|
-
suggestionsOn: ((_this$
|
|
7534
|
-
audioOn: ((_this$
|
|
7535
|
-
websocketUrl: (_this$
|
|
8230
|
+
a2uiOn: ((_this$_core9 = this._core) === null || _this$_core9 === void 0 ? void 0 : _this$_core9.a2uiEnabled) === true,
|
|
8231
|
+
openGenUiOn: ((_this$_core10 = this._core) === null || _this$_core10 === void 0 ? void 0 : _this$_core10.openGenerativeUIEnabled) === true,
|
|
8232
|
+
suggestionsOn: ((_this$_core11 = this._core) === null || _this$_core11 === void 0 ? void 0 : _this$_core11.suggestions) === true,
|
|
8233
|
+
audioOn: ((_this$_core12 = this._core) === null || _this$_core12 === void 0 ? void 0 : _this$_core12.audioFileTranscriptionEnabled) === true,
|
|
8234
|
+
websocketUrl: (_this$_core13 = this._core) === null || _this$_core13 === void 0 || (_this$_core13 = _this$_core13.intelligence) === null || _this$_core13 === void 0 ? void 0 : _this$_core13.wsUrl,
|
|
7536
8235
|
announcementPreviewText: (_this$announcementPre = this.announcementPreviewText) !== null && _this$announcementPre !== void 0 ? _this$announcementPre : void 0,
|
|
7537
8236
|
announcementMarkdown: (_this$announcementMar = this.announcementMarkdown) !== null && _this$announcementMar !== void 0 ? _this$announcementMar : void 0,
|
|
7538
8237
|
announcementHtml: (_this$announcementHtm = this.announcementHtml) !== null && _this$announcementHtm !== void 0 ? _this$announcementHtm : void 0,
|
|
@@ -7876,6 +8575,31 @@ ${argsString}</pre
|
|
|
7876
8575
|
})}
|
|
7877
8576
|
</dl>
|
|
7878
8577
|
</section>
|
|
8578
|
+
`;
|
|
8579
|
+
}
|
|
8580
|
+
renderEventErrorBanner(key) {
|
|
8581
|
+
const error = this.eventErrorDetails[key];
|
|
8582
|
+
if (!error) return lit.nothing;
|
|
8583
|
+
const guide = EVENT_ERROR_GUIDANCE[key];
|
|
8584
|
+
return lit.html`
|
|
8585
|
+
<div
|
|
8586
|
+
class="mx-3 mt-3 flex cursor-pointer items-start gap-2 rounded-lg border border-rose-200 bg-rose-50 px-3 py-2 text-left text-[11px] text-rose-950"
|
|
8587
|
+
role="alert"
|
|
8588
|
+
tabindex="0"
|
|
8589
|
+
data-cpk-event-error=${key}
|
|
8590
|
+
@click=${this.refocusEventErrorLanding}
|
|
8591
|
+
@keydown=${this.handleEventErrorBannerKeydown}
|
|
8592
|
+
>
|
|
8593
|
+
<span class="mt-0.5 shrink-0">${this.renderIcon("TriangleAlert")}</span>
|
|
8594
|
+
<div class="min-w-0 flex-1 space-y-1">
|
|
8595
|
+
<p class="font-semibold">${guide.title}</p>
|
|
8596
|
+
${error.agentId ? lit.html`<p>Agent: ${error.agentId}</p>` : lit.nothing}
|
|
8597
|
+
${error.toolName ? lit.html`<p>Tool: ${error.toolName}</p>` : lit.nothing}
|
|
8598
|
+
<p class="break-words leading-relaxed">${error.message}</p>
|
|
8599
|
+
${guide.advice ? lit.html`<p class="leading-relaxed">${guide.advice}</p>` : lit.nothing}
|
|
8600
|
+
${guide.highlight && this.hasEventErrorHighlight(key) ? lit.html`<p class="leading-relaxed">${guide.highlight}</p>` : lit.nothing}
|
|
8601
|
+
</div>
|
|
8602
|
+
</div>
|
|
7879
8603
|
`;
|
|
7880
8604
|
}
|
|
7881
8605
|
handleHomeLastEventSelect(eventId, agentId) {
|
|
@@ -8612,17 +9336,29 @@ ${argsString}</pre
|
|
|
8612
9336
|
if (this.isPoppedOut) return;
|
|
8613
9337
|
if (this.isOpen) return;
|
|
8614
9338
|
const hadUnseenAnnouncement = this.newsSignalArmed;
|
|
9339
|
+
const activeSignalAtOpen = this.getActiveLauncherSignal();
|
|
8615
9340
|
const firstOpen = !this.hasOpenedInspector;
|
|
8616
9341
|
this.hasOpenedInspector = true;
|
|
8617
9342
|
this.homeViewedThisOpen = false;
|
|
8618
|
-
|
|
8619
|
-
|
|
8620
|
-
|
|
9343
|
+
this.closeLauncherHud();
|
|
9344
|
+
const hudMenu = this.hudLandingMenu;
|
|
9345
|
+
this.hudLandingMenu = null;
|
|
9346
|
+
if (hudMenu) {
|
|
9347
|
+
this.selectedMenu = hudMenu;
|
|
9348
|
+
this.lastSelectedMenuByGroup[getGroupForMenu(hudMenu)] = hudMenu;
|
|
9349
|
+
} else if (activeSignalAtOpen !== null && source === "floating_button") {
|
|
9350
|
+
const landing = LAUNCHER_SIGNALS[activeSignalAtOpen].landingTarget;
|
|
9351
|
+
this.selectedMenu = landing;
|
|
9352
|
+
this.lastSelectedMenuByGroup[getGroupForMenu(landing)] = landing;
|
|
9353
|
+
if (landing === "agents" || landing === "ag-ui-events") {
|
|
9354
|
+
if (isEventErrorKey(activeSignalAtOpen)) this.applyEventErrorLanding(activeSignalAtOpen);
|
|
9355
|
+
}
|
|
8621
9356
|
}
|
|
8622
9357
|
this.ensureAnnouncementLoading();
|
|
8623
9358
|
this.isOpen = true;
|
|
9359
|
+
this.cancelGestureTail();
|
|
8624
9360
|
this.persistState();
|
|
8625
|
-
this.trackOpened(source, hadUnseenAnnouncement, firstOpen);
|
|
9361
|
+
this.trackOpened(source, hadUnseenAnnouncement, firstOpen, activeSignalAtOpen);
|
|
8626
9362
|
if (this.dockMode !== "floating") this.applyDockStyles();
|
|
8627
9363
|
this.ensureWindowPlacement();
|
|
8628
9364
|
this.requestUpdate();
|
|
@@ -8637,7 +9373,6 @@ ${argsString}</pre
|
|
|
8637
9373
|
if (this.isPoppedOut) return;
|
|
8638
9374
|
if (!this.isOpen) return;
|
|
8639
9375
|
this.isOpen = false;
|
|
8640
|
-
if (this.newsSignalPulsePending) this.startNewsSignalPulse();
|
|
8641
9376
|
if (this.dockMode !== "floating") this.removeDockStyles();
|
|
8642
9377
|
this.persistState();
|
|
8643
9378
|
this.updateHostTransform("button");
|
|
@@ -8645,6 +9380,7 @@ ${argsString}</pre
|
|
|
8645
9380
|
this.updateComplete.then(() => {
|
|
8646
9381
|
this.measureContext("button");
|
|
8647
9382
|
this.applyAnchorPosition("button");
|
|
9383
|
+
this.flushPendingSignalPulse();
|
|
8648
9384
|
});
|
|
8649
9385
|
}
|
|
8650
9386
|
renderIcon(name) {
|
|
@@ -8825,6 +9561,7 @@ ${argsString}</pre
|
|
|
8825
9561
|
contentText,
|
|
8826
9562
|
contentRaw: raw.content !== void 0 ? this.sanitizeForLogging(raw.content) : void 0,
|
|
8827
9563
|
toolCalls,
|
|
9564
|
+
toolCallId: typeof raw.toolCallId === "string" ? raw.toolCallId : void 0,
|
|
8828
9565
|
activityType: typeof raw.activityType === "string" ? raw.activityType : void 0
|
|
8829
9566
|
};
|
|
8830
9567
|
}
|
|
@@ -8897,8 +9634,8 @@ ${argsString}</pre
|
|
|
8897
9634
|
};
|
|
8898
9635
|
}
|
|
8899
9636
|
resolvePlaygroundAgentId(preferredAgentId) {
|
|
8900
|
-
var _this$_core$agents, _this$
|
|
8901
|
-
const agents = (_this$_core$agents = (_this$
|
|
9637
|
+
var _this$_core$agents, _this$_core14, _Object$keys$;
|
|
9638
|
+
const agents = (_this$_core$agents = (_this$_core14 = this._core) === null || _this$_core14 === void 0 ? void 0 : _this$_core14.agents) !== null && _this$_core$agents !== void 0 ? _this$_core$agents : {};
|
|
8902
9639
|
if (preferredAgentId && preferredAgentId !== "all-agents" && agents[preferredAgentId]) return preferredAgentId;
|
|
8903
9640
|
return (_Object$keys$ = Object.keys(agents)[0]) !== null && _Object$keys$ !== void 0 ? _Object$keys$ : null;
|
|
8904
9641
|
}
|
|
@@ -8927,13 +9664,13 @@ ${argsString}</pre
|
|
|
8927
9664
|
});
|
|
8928
9665
|
}
|
|
8929
9666
|
startPlaygroundSession(showEphemeralNotice, seedMessages = [], seedState = {}, preferredAgentId) {
|
|
8930
|
-
var _this$
|
|
9667
|
+
var _this$_core15, _this$_core16, _this$_core17;
|
|
8931
9668
|
const agentId = this.resolvePlaygroundAgentId(preferredAgentId !== null && preferredAgentId !== void 0 ? preferredAgentId : this.selectedContext);
|
|
8932
|
-
const sourceAgent = agentId ? typeof ((_this$
|
|
9669
|
+
const sourceAgent = agentId ? typeof ((_this$_core15 = this._core) === null || _this$_core15 === void 0 ? void 0 : _this$_core15.getAgent) === "function" ? this._core.getAgent(agentId) : (_this$_core16 = this._core) === null || _this$_core16 === void 0 ? void 0 : _this$_core16.agents[agentId] : void 0;
|
|
8933
9670
|
this.teardownPlaygroundAgent();
|
|
8934
9671
|
this.playgroundError = null;
|
|
8935
9672
|
this.playgroundSourceThreadId = null;
|
|
8936
|
-
this.playgroundShowEphemeralNotice = showEphemeralNotice && ((_this$
|
|
9673
|
+
this.playgroundShowEphemeralNotice = showEphemeralNotice && ((_this$_core17 = this._core) === null || _this$_core17 === void 0 ? void 0 : _this$_core17.runtimeMode) !== "intelligence";
|
|
8937
9674
|
if (!agentId || !sourceAgent) {
|
|
8938
9675
|
this.requestUpdate();
|
|
8939
9676
|
return;
|
|
@@ -9019,16 +9756,16 @@ ${argsString}</pre
|
|
|
9019
9756
|
@submit=${this.handlePlaygroundSubmit}
|
|
9020
9757
|
>
|
|
9021
9758
|
${this.playgroundError ? lit.html`<div
|
|
9022
|
-
class="mx-auto mb-2 flex max-w-3xl items-start gap-2 rounded-lg border border-rose-200 bg-rose-50 px-2.5 py-2 text-[10px] text-rose-
|
|
9759
|
+
class="mx-auto mb-2 flex max-w-3xl items-start gap-2 rounded-lg border border-rose-200 bg-rose-50 px-2.5 py-2 text-[10px] text-rose-950"
|
|
9023
9760
|
role="alert"
|
|
9024
9761
|
data-playground-error
|
|
9025
9762
|
>
|
|
9026
|
-
<span class="mt-0.5 shrink-0
|
|
9763
|
+
<span class="mt-0.5 shrink-0"
|
|
9027
9764
|
>${this.renderIcon("TriangleAlert")}</span
|
|
9028
9765
|
>
|
|
9029
9766
|
<div class="min-w-0 flex-1">
|
|
9030
9767
|
<p class="font-semibold">Agent run failed</p>
|
|
9031
|
-
<p class="mt-0.5 break-words leading-relaxed
|
|
9768
|
+
<p class="mt-0.5 break-words leading-relaxed">
|
|
9032
9769
|
${this.playgroundError}
|
|
9033
9770
|
</p>
|
|
9034
9771
|
</div>
|
|
@@ -9078,7 +9815,14 @@ ${argsString}</pre
|
|
|
9078
9815
|
if (this.settingsOpen) return this.renderSettingsPanel();
|
|
9079
9816
|
if (this.selectedMenu === "home") return this.renderHomeView();
|
|
9080
9817
|
if (this.selectedMenu === WHATS_NEW_MENU_KEY) return this.renderWhatsNewView();
|
|
9081
|
-
if (this.selectedMenu === "ag-ui-events") return
|
|
9818
|
+
if (this.selectedMenu === "ag-ui-events") return lit.html`
|
|
9819
|
+
<div class="flex h-full min-h-0 flex-col">
|
|
9820
|
+
${this.renderEventErrorBanner("run")}
|
|
9821
|
+
<div class="min-h-0 flex-1 overflow-hidden">
|
|
9822
|
+
${this.renderEventsTable()}
|
|
9823
|
+
</div>
|
|
9824
|
+
</div>
|
|
9825
|
+
`;
|
|
9082
9826
|
if (this.selectedMenu === "playground") return this.renderPlaygroundView();
|
|
9083
9827
|
if (this.selectedMenu === "agents") return this.renderAgentsView();
|
|
9084
9828
|
if (this.selectedMenu === "frontend-tools") return this.renderToolsView();
|
|
@@ -9089,13 +9833,13 @@ ${argsString}</pre
|
|
|
9089
9833
|
return lit.nothing;
|
|
9090
9834
|
}
|
|
9091
9835
|
renderPlaygroundView() {
|
|
9092
|
-
var _this$playgroundAgent4, _this$playgroundAgent5, _this$_core$runtimeMo, _this$
|
|
9836
|
+
var _this$playgroundAgent4, _this$playgroundAgent5, _this$_core$runtimeMo, _this$_core18, _this$_core$runtimeUr, _this$_core19, _this$playgroundSourc;
|
|
9093
9837
|
const agentId = this.resolvePlaygroundAgentId(this.selectedContext);
|
|
9094
9838
|
const sourceThreads = this._threads.filter((thread) => !agentId || thread.agentId === agentId);
|
|
9095
9839
|
const visibleMessages = this.playgroundMessages.filter((message) => message.role === "user" || message.role === "assistant" || message.role === "reasoning" || message.role === "activity");
|
|
9096
9840
|
const hasRetry = (_this$playgroundAgent4 = (_this$playgroundAgent5 = this.playgroundAgent) === null || _this$playgroundAgent5 === void 0 ? void 0 : _this$playgroundAgent5.messages.some((message) => message.role === "user")) !== null && _this$playgroundAgent4 !== void 0 ? _this$playgroundAgent4 : false;
|
|
9097
|
-
const runtimeMode = (_this$_core$runtimeMo = (_this$
|
|
9098
|
-
const runtimeLabel = (_this$_core$runtimeUr = (_this$
|
|
9841
|
+
const runtimeMode = (_this$_core$runtimeMo = (_this$_core18 = this._core) === null || _this$_core18 === void 0 ? void 0 : _this$_core18.runtimeMode) !== null && _this$_core$runtimeMo !== void 0 ? _this$_core$runtimeMo : "sse";
|
|
9842
|
+
const runtimeLabel = (_this$_core$runtimeUr = (_this$_core19 = this._core) === null || _this$_core19 === void 0 ? void 0 : _this$_core19.runtimeUrl) !== null && _this$_core$runtimeUr !== void 0 ? _this$_core$runtimeUr : "Self-managed agent";
|
|
9099
9843
|
const busy = this.playgroundIsRunning || this.playgroundIsLoadingThread;
|
|
9100
9844
|
const suggestions = agentId && this._core ? this._core.getSuggestions(agentId).suggestions : [];
|
|
9101
9845
|
const lastAssistantIndex = visibleMessages.reduce((last, message, index) => message.role === "assistant" ? index : last, -1);
|
|
@@ -9469,9 +10213,10 @@ ${argsString}</pre
|
|
|
9469
10213
|
</div>
|
|
9470
10214
|
`;
|
|
9471
10215
|
}
|
|
9472
|
-
trackOpened(source, hadUnseenAnnouncement, firstOpen = false) {
|
|
10216
|
+
trackOpened(source, hadUnseenAnnouncement, firstOpen = false, activeSignal = null) {
|
|
9473
10217
|
var _this$core15, _this$core$licenseSta2, _this$core16, _this$core$runtimeMod2, _this$core17, _this$core18;
|
|
9474
10218
|
if ((_this$core15 = this.core) === null || _this$core15 === void 0 ? void 0 : _this$core15.telemetryDisabled) return;
|
|
10219
|
+
const errorSignal = activeSignal !== null && isErrorSignalKey(activeSignal) ? activeSignal : null;
|
|
9475
10220
|
trackInspectorOpened({
|
|
9476
10221
|
open_source: source,
|
|
9477
10222
|
...this.runtimeStatus === "connected" ? {
|
|
@@ -9480,6 +10225,8 @@ ${argsString}</pre
|
|
|
9480
10225
|
} : {},
|
|
9481
10226
|
runtime_url_type: getRuntimeUrlType((_this$core18 = this.core) === null || _this$core18 === void 0 ? void 0 : _this$core18.runtimeUrl),
|
|
9482
10227
|
has_unseen_announcement: hadUnseenAnnouncement,
|
|
10228
|
+
has_error_signal: errorSignal !== null,
|
|
10229
|
+
...errorSignal === null ? {} : { error_signal_source: errorSignal },
|
|
9483
10230
|
first_open: firstOpen
|
|
9484
10231
|
});
|
|
9485
10232
|
}
|
|
@@ -9657,6 +10404,52 @@ ${argsString}</pre
|
|
|
9657
10404
|
example_kind: exampleKind
|
|
9658
10405
|
});
|
|
9659
10406
|
}
|
|
10407
|
+
subscribeToInspectorThreadBridge() {
|
|
10408
|
+
this.unsubscribeFromInspectorThreadBridge();
|
|
10409
|
+
if (!(0, _copilotkit_core.isInspectorThreadBridgeEnabled)()) return;
|
|
10410
|
+
this.inspectorBridgeUnsubscribers.push((0, _copilotkit_core.onInspectorActiveThread)((payload) => {
|
|
10411
|
+
if (payload.requestId !== this.activeViewInAppRequestId) return;
|
|
10412
|
+
this.inAppThreadId = payload.threadId;
|
|
10413
|
+
this.inAppAgentId = payload.agentId;
|
|
10414
|
+
this.inAppSource = payload.source;
|
|
10415
|
+
if (payload.source === "app") {
|
|
10416
|
+
this.activeViewInAppRequestId = null;
|
|
10417
|
+
this.viewInAppError = null;
|
|
10418
|
+
}
|
|
10419
|
+
this.requestUpdate();
|
|
10420
|
+
}), (0, _copilotkit_core.onInspectorViewThreadResult)((payload) => {
|
|
10421
|
+
if (payload.requestId !== this.activeViewInAppRequestId) return;
|
|
10422
|
+
if (payload.ok) {
|
|
10423
|
+
this.viewInAppError = null;
|
|
10424
|
+
this.inAppThreadId = payload.threadId;
|
|
10425
|
+
this.inAppAgentId = payload.agentId;
|
|
10426
|
+
this.inAppSource = "override";
|
|
10427
|
+
} else {
|
|
10428
|
+
this.activeViewInAppRequestId = null;
|
|
10429
|
+
this.inAppThreadId = null;
|
|
10430
|
+
this.inAppAgentId = null;
|
|
10431
|
+
this.inAppSource = null;
|
|
10432
|
+
this.viewInAppError = "The app could not load that thread. The previous chat is back.";
|
|
10433
|
+
}
|
|
10434
|
+
this.requestUpdate();
|
|
10435
|
+
}));
|
|
10436
|
+
}
|
|
10437
|
+
unsubscribeFromInspectorThreadBridge() {
|
|
10438
|
+
for (const unsubscribe of this.inspectorBridgeUnsubscribers) unsubscribe();
|
|
10439
|
+
this.inspectorBridgeUnsubscribers = [];
|
|
10440
|
+
}
|
|
10441
|
+
getViewInAppMode(thread, isExample) {
|
|
10442
|
+
if (!(0, _copilotkit_core.isInspectorThreadBridgeEnabled)()) return "hidden";
|
|
10443
|
+
if (!thread || isExample) return "hidden";
|
|
10444
|
+
if (this.activeViewInAppRequestId && this.inAppSource === "override" && this.inAppThreadId === thread.id) return "stop";
|
|
10445
|
+
return "view";
|
|
10446
|
+
}
|
|
10447
|
+
getSelectedRealThread() {
|
|
10448
|
+
var _this$getActiveThread;
|
|
10449
|
+
if (!this.selectedThreadId) return null;
|
|
10450
|
+
if (this.selectedThreadId === this.selectedLocalExampleThreadId) return null;
|
|
10451
|
+
return (_this$getActiveThread = this.getActiveThreadsState().displayThreads.find((thread) => thread.id === this.selectedThreadId)) !== null && _this$getActiveThread !== void 0 ? _this$getActiveThread : null;
|
|
10452
|
+
}
|
|
9660
10453
|
getCurrentExampleTourProps() {
|
|
9661
10454
|
const exampleKind = this.selectedThreadId ? getExampleKind(this.selectedThreadId) : void 0;
|
|
9662
10455
|
const tourPair = getExampleTourTelemetryPair(this.exampleTourStep);
|
|
@@ -10286,7 +11079,7 @@ ${argsString}</pre
|
|
|
10286
11079
|
<line x1="12" y1="16" x2="12.01" y2="16" />
|
|
10287
11080
|
</svg>
|
|
10288
11081
|
<span style="font-size: 13px; color: #c0333a;">
|
|
10289
|
-
|
|
11082
|
+
${MEMORY_LOAD_ERROR_LABEL}
|
|
10290
11083
|
</span>
|
|
10291
11084
|
<span
|
|
10292
11085
|
style="
|
|
@@ -10299,6 +11092,17 @@ ${argsString}</pre
|
|
|
10299
11092
|
>
|
|
10300
11093
|
${this._memoriesError.message}
|
|
10301
11094
|
</span>
|
|
11095
|
+
<span
|
|
11096
|
+
style="
|
|
11097
|
+
max-width: 320px;
|
|
11098
|
+
text-align: center;
|
|
11099
|
+
font-size: 11px;
|
|
11100
|
+
line-height: 1.5;
|
|
11101
|
+
color: #c0333a;
|
|
11102
|
+
"
|
|
11103
|
+
>
|
|
11104
|
+
${EVENT_ERROR_GUIDANCE.memory.advice}
|
|
11105
|
+
</span>
|
|
10302
11106
|
</div>
|
|
10303
11107
|
`;
|
|
10304
11108
|
if (this._memoriesLoading && this._memories.length === 0) return lit.html`
|
|
@@ -10458,7 +11262,7 @@ ${argsString}</pre
|
|
|
10458
11262
|
`;
|
|
10459
11263
|
}
|
|
10460
11264
|
renderThreadsView() {
|
|
10461
|
-
var _visibleThreads$find, _this$_core$runtimeUr2, _this$
|
|
11265
|
+
var _visibleThreads$find, _this$_core$runtimeUr2, _this$_core20, _this$_core$headers, _this$_core21, _this$_core22, _this$liveMessageVers2, _this$agentEvents$get6;
|
|
10462
11266
|
const locked = !this.areThreadEndpointsAvailable();
|
|
10463
11267
|
const { displayThreads, threadsErrorMessage, threadsLoading } = this.getActiveThreadsState();
|
|
10464
11268
|
const loadingWithoutRows = !locked && threadsLoading && !threadsErrorMessage && displayThreads.length === 0;
|
|
@@ -10483,6 +11287,7 @@ ${argsString}</pre
|
|
|
10483
11287
|
data-color-scheme=${this.colorScheme}
|
|
10484
11288
|
.threads=${visibleThreads}
|
|
10485
11289
|
.selectedThreadId=${this.selectedThreadId}
|
|
11290
|
+
.inAppThreadId=${this.inAppThreadId}
|
|
10486
11291
|
.errorMessage=${threadsErrorMessage}
|
|
10487
11292
|
.suppressEmptyState=${loadingWithoutRows}
|
|
10488
11293
|
@threadSelected=${(e) => {
|
|
@@ -10548,10 +11353,14 @@ ${argsString}</pre
|
|
|
10548
11353
|
.threadId=${selectedThread.id}
|
|
10549
11354
|
.thread=${selectedThread}
|
|
10550
11355
|
.provider=${selectedThreadIsLocalExample ? this.getExampleThreadProvider(selectedThread.id) : null}
|
|
10551
|
-
.runtimeUrl=${selectedThreadIsLocalExample ? "" : (_this$_core$runtimeUr2 = (_this$
|
|
10552
|
-
.headers=${(_this$_core$headers = (_this$
|
|
10553
|
-
.threadInspectionAvailable=${selectedThreadIsLocalExample || this.areThreadEndpointsAvailable() && ((_this$
|
|
11356
|
+
.runtimeUrl=${selectedThreadIsLocalExample ? "" : (_this$_core$runtimeUr2 = (_this$_core20 = this._core) === null || _this$_core20 === void 0 ? void 0 : _this$_core20.runtimeUrl) !== null && _this$_core$runtimeUr2 !== void 0 ? _this$_core$runtimeUr2 : ""}
|
|
11357
|
+
.headers=${(_this$_core$headers = (_this$_core21 = this._core) === null || _this$_core21 === void 0 ? void 0 : _this$_core21.headers) !== null && _this$_core$headers !== void 0 ? _this$_core$headers : {}}
|
|
11358
|
+
.threadInspectionAvailable=${selectedThreadIsLocalExample || this.areThreadEndpointsAvailable() && ((_this$_core22 = this._core) === null || _this$_core22 === void 0 || (_this$_core22 = _this$_core22.threadEndpoints) === null || _this$_core22 === void 0 ? void 0 : _this$_core22.inspect) !== false}
|
|
10554
11359
|
.liveMessageVersion=${(_this$liveMessageVers2 = this.liveMessageVersion.get(selectedThread.id)) !== null && _this$liveMessageVers2 !== void 0 ? _this$liveMessageVers2 : 0}
|
|
11360
|
+
.viewInAppMode=${this.getViewInAppMode(selectedThread, selectedThreadIsLocalExample)}
|
|
11361
|
+
.viewInAppError=${this.viewInAppError}
|
|
11362
|
+
@viewInApp=${this.handleViewInApp}
|
|
11363
|
+
@stopViewing=${this.handleStopViewing}
|
|
10555
11364
|
.focusMessageId=${this.focusedThreadMessageId}
|
|
10556
11365
|
.focusRequestId=${this.threadFocusRequestId}
|
|
10557
11366
|
.agentStateInput=${this.getLatestStateForAgent(selectedThread.agentId)}
|
|
@@ -10720,7 +11529,11 @@ ${argsString}</pre
|
|
|
10720
11529
|
</div>
|
|
10721
11530
|
</div>
|
|
10722
11531
|
`;
|
|
10723
|
-
else
|
|
11532
|
+
else {
|
|
11533
|
+
var _this$findLatestRunEr;
|
|
11534
|
+
const runError = this.eventErrorDetails.run;
|
|
11535
|
+
const failedRunEventId = runError ? (_this$findLatestRunEr = this.findLatestRunErrorEvent(runError.agentId)) === null || _this$findLatestRunEr === void 0 ? void 0 : _this$findLatestRunEr.id : void 0;
|
|
11536
|
+
body = lit.html`
|
|
10724
11537
|
<div class="relative h-full w-full overflow-y-auto overflow-x-hidden">
|
|
10725
11538
|
<table class="w-full table-fixed border-collapse text-xs box-border">
|
|
10726
11539
|
<colgroup>
|
|
@@ -10732,10 +11545,10 @@ ${argsString}</pre
|
|
|
10732
11545
|
<thead class="sticky top-0 z-10">
|
|
10733
11546
|
<tr class="bg-white">
|
|
10734
11547
|
${[
|
|
10735
|
-
|
|
10736
|
-
|
|
10737
|
-
|
|
10738
|
-
|
|
11548
|
+
"Agent",
|
|
11549
|
+
"Time",
|
|
11550
|
+
"Event Type"
|
|
11551
|
+
].map((label, col) => lit.html` <th
|
|
10739
11552
|
class="border-b border-gray-200 bg-white px-3 py-2 text-left font-medium text-gray-900"
|
|
10740
11553
|
style="position:relative;overflow:hidden;"
|
|
10741
11554
|
>
|
|
@@ -10757,16 +11570,18 @@ ${argsString}</pre
|
|
|
10757
11570
|
</thead>
|
|
10758
11571
|
<tbody>
|
|
10759
11572
|
${filteredEvents.map((event, index) => {
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
10764
|
-
|
|
10765
|
-
|
|
10766
|
-
|
|
11573
|
+
const isFailedRunEvent = failedRunEventId !== void 0 && event.id === failedRunEventId;
|
|
11574
|
+
const rowBg = isFailedRunEvent ? "bg-rose-50" : index % 2 === 0 ? "bg-white" : "bg-gray-50/50";
|
|
11575
|
+
const badgeClasses = this.getEventBadgeClasses(event.type);
|
|
11576
|
+
const extractedEvent = this.extractEventFromPayload(event.payload);
|
|
11577
|
+
const inlineEvent = this.stringifyPayload(extractedEvent, false) || "—";
|
|
11578
|
+
const prettyEvent = this.stringifyPayload(extractedEvent, true) || inlineEvent;
|
|
11579
|
+
const isExpanded = this.expandedRows.has(event.id);
|
|
11580
|
+
return lit.html`
|
|
10767
11581
|
<tr
|
|
10768
11582
|
class="${rowBg} cursor-pointer transition hover:bg-blue-50/50"
|
|
10769
11583
|
data-inspector-event-id=${event.id}
|
|
11584
|
+
data-cpk-failed-run-event=${isFailedRunEvent ? event.id : void 0}
|
|
10770
11585
|
@click=${(clickEvent) => this.toggleRowExpansion(event.id, clickEvent)}
|
|
10771
11586
|
>
|
|
10772
11587
|
<td
|
|
@@ -10799,9 +11614,9 @@ ${prettyEvent}</pre
|
|
|
10799
11614
|
<button
|
|
10800
11615
|
class="absolute right-0 top-0 cursor-pointer rounded px-2 py-1 text-[10px] opacity-0 transition group-hover:opacity-100 ${this.copiedEvents.has(event.id) ? "bg-green-100 text-green-700" : "bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900"}"
|
|
10801
11616
|
@click=${(e) => {
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
11617
|
+
e.stopPropagation();
|
|
11618
|
+
this.copyToClipboard(prettyEvent, event.id, e);
|
|
11619
|
+
}}
|
|
10805
11620
|
>
|
|
10806
11621
|
${this.copiedEvents.has(event.id) ? lit.html`
|
|
10807
11622
|
<span>✓ Copied</span>
|
|
@@ -10814,11 +11629,12 @@ ${prettyEvent}</pre
|
|
|
10814
11629
|
</td>
|
|
10815
11630
|
</tr>
|
|
10816
11631
|
`;
|
|
10817
|
-
|
|
11632
|
+
})}
|
|
10818
11633
|
</tbody>
|
|
10819
11634
|
</table>
|
|
10820
11635
|
</div>
|
|
10821
11636
|
`;
|
|
11637
|
+
}
|
|
10822
11638
|
return lit.html`
|
|
10823
11639
|
<div
|
|
10824
11640
|
class="${embedded ? "flex h-[28rem] min-h-[20rem] flex-col" : "flex h-full flex-col"}"
|
|
@@ -10888,6 +11704,7 @@ ${prettyEvent}</pre
|
|
|
10888
11704
|
}
|
|
10889
11705
|
renderAgentsView() {
|
|
10890
11706
|
if (this.selectedContext === "all-agents") return lit.html`
|
|
11707
|
+
${this.renderEventErrorBanner("tool")}
|
|
10891
11708
|
<div
|
|
10892
11709
|
class="flex h-full items-center justify-center px-4 py-8 text-center"
|
|
10893
11710
|
>
|
|
@@ -10911,6 +11728,7 @@ ${prettyEvent}</pre
|
|
|
10911
11728
|
const messages = this.getLatestMessagesForAgent(agentId);
|
|
10912
11729
|
return lit.html`
|
|
10913
11730
|
<div class="cpk-agent-view flex flex-col gap-4 p-4 overflow-auto">
|
|
11731
|
+
${this.renderEventErrorBanner("tool")}
|
|
10914
11732
|
<!-- Agent Overview Card -->
|
|
10915
11733
|
<div
|
|
10916
11734
|
class="cpk-agent-overview rounded-lg border border-gray-200 bg-white p-4"
|
|
@@ -11044,8 +11862,13 @@ ${prettyEvent}</pre
|
|
|
11044
11862
|
const toolCalls = (_msg$toolCalls2 = msg.toolCalls) !== null && _msg$toolCalls2 !== void 0 ? _msg$toolCalls2 : [];
|
|
11045
11863
|
const hasContent = rawContent.trim().length > 0;
|
|
11046
11864
|
const contentFallback = toolCalls.length > 0 ? "Invoked tool call" : "—";
|
|
11865
|
+
const toolError = this.eventErrorDetails.tool;
|
|
11866
|
+
const isFailedResult = role === "tool" && (toolError === null || toolError === void 0 ? void 0 : toolError.toolCallId) !== void 0 && toolError.toolCallId === msg.toolCallId;
|
|
11047
11867
|
return lit.html`
|
|
11048
|
-
<div
|
|
11868
|
+
<div
|
|
11869
|
+
class=${isFailedResult ? "flex items-start bg-rose-50" : "flex items-start"}
|
|
11870
|
+
data-cpk-failed-tool-result=${isFailedResult ? msg.toolCallId : lit.nothing}
|
|
11871
|
+
>
|
|
11049
11872
|
<div class="w-40 shrink-0 px-4 py-2">
|
|
11050
11873
|
<span
|
|
11051
11874
|
class="inline-flex rounded px-2 py-0.5 text-[10px] font-medium ${roleColors[role] || roleColors.unknown}"
|
|
@@ -11152,30 +11975,97 @@ ${prettyEvent}</pre
|
|
|
11152
11975
|
</div>
|
|
11153
11976
|
`;
|
|
11154
11977
|
}
|
|
11155
|
-
|
|
11156
|
-
|
|
11157
|
-
|
|
11158
|
-
|
|
11159
|
-
|
|
11160
|
-
|
|
11161
|
-
|
|
11162
|
-
|
|
11163
|
-
|
|
11164
|
-
const agentOptions = this.contextOptions.filter((opt) => opt.key !== "all-agents");
|
|
11165
|
-
if (agentOptions.length > 0) {
|
|
11166
|
-
const mostRecent = agentOptions.reduce((best, opt) => {
|
|
11167
|
-
var _this$getAgentStats$l;
|
|
11168
|
-
const ts = (_this$getAgentStats$l = this.getAgentStats(opt.key).lastActivity) !== null && _this$getAgentStats$l !== void 0 ? _this$getAgentStats$l : -1;
|
|
11169
|
-
return best === null || ts > best.ts ? {
|
|
11170
|
-
key: opt.key,
|
|
11171
|
-
ts
|
|
11172
|
-
} : best;
|
|
11173
|
-
}, null);
|
|
11174
|
-
this.selectedContext = mostRecent ? mostRecent.key : agentOptions[0].key;
|
|
11175
|
-
}
|
|
11978
|
+
/**
|
|
11979
|
+
* The Agent view is empty on "All Agents". Pick the agent that just failed
|
|
11980
|
+
* a tool, or the one with the most recent activity.
|
|
11981
|
+
*/
|
|
11982
|
+
applyEventErrorLanding(key) {
|
|
11983
|
+
const error = this.eventErrorDetails[key];
|
|
11984
|
+
if (!error) {
|
|
11985
|
+
if (this.selectedMenu === "agents") this.focusAgentForView();
|
|
11986
|
+
return;
|
|
11176
11987
|
}
|
|
11177
|
-
if (
|
|
11178
|
-
|
|
11988
|
+
if (error.agentId && this.contextOptions.some((option) => option.key === error.agentId)) this.selectedContext = error.agentId;
|
|
11989
|
+
else if (this.selectedMenu === "agents") this.focusAgentForView(error);
|
|
11990
|
+
if (key === "tool" && error.toolCallId) {
|
|
11991
|
+
this.pendingScrollToToolCallId = error.toolCallId;
|
|
11992
|
+
return;
|
|
11993
|
+
}
|
|
11994
|
+
if (key === "run") {
|
|
11995
|
+
this.eventFilterText = "";
|
|
11996
|
+
this.eventTypeFilter = "all";
|
|
11997
|
+
const event = this.findLatestRunErrorEvent(error.agentId);
|
|
11998
|
+
if (!event) return;
|
|
11999
|
+
this.expandedRows.clear();
|
|
12000
|
+
this.expandedRows.add(event.id);
|
|
12001
|
+
this.pendingScrollToEventId = event.id;
|
|
12002
|
+
}
|
|
12003
|
+
}
|
|
12004
|
+
/**
|
|
12005
|
+
* Whether the landing view really carries the item the card points at.
|
|
12006
|
+
* Mirrors the two branches of `applyEventErrorLanding` that can bail out.
|
|
12007
|
+
*/
|
|
12008
|
+
hasEventErrorHighlight(key) {
|
|
12009
|
+
const error = this.eventErrorDetails[key];
|
|
12010
|
+
if (!error) return false;
|
|
12011
|
+
if (key === "tool") return error.toolCallId !== void 0;
|
|
12012
|
+
if (key === "run") return this.findLatestRunErrorEvent(error.agentId) !== void 0;
|
|
12013
|
+
return false;
|
|
12014
|
+
}
|
|
12015
|
+
findLatestRunErrorEvent(agentId) {
|
|
12016
|
+
var _this$agentEvents$get7;
|
|
12017
|
+
return (agentId && agentId !== "all-agents" ? (_this$agentEvents$get7 = this.agentEvents.get(agentId)) !== null && _this$agentEvents$get7 !== void 0 ? _this$agentEvents$get7 : [] : this.flattenedEvents).find((event) => event.type === "RUN_ERROR");
|
|
12018
|
+
}
|
|
12019
|
+
flushErrorLandingScroll() {
|
|
12020
|
+
const eventId = this.pendingScrollToEventId;
|
|
12021
|
+
if (eventId) {
|
|
12022
|
+
var _row$scrollIntoView2;
|
|
12023
|
+
this.pendingScrollToEventId = null;
|
|
12024
|
+
const row = Array.from(this.activeRoot.querySelectorAll("[data-inspector-event-id]")).find((candidate) => candidate.dataset.inspectorEventId === eventId);
|
|
12025
|
+
row === null || row === void 0 || (_row$scrollIntoView2 = row.scrollIntoView) === null || _row$scrollIntoView2 === void 0 || _row$scrollIntoView2.call(row, { block: "center" });
|
|
12026
|
+
}
|
|
12027
|
+
const toolCallId = this.pendingScrollToToolCallId;
|
|
12028
|
+
if (toolCallId) {
|
|
12029
|
+
var _this$activeRoot$quer2, _card$scrollIntoView;
|
|
12030
|
+
this.pendingScrollToToolCallId = null;
|
|
12031
|
+
const escaped = escapeSelectorValue(toolCallId);
|
|
12032
|
+
const card = (_this$activeRoot$quer2 = this.activeRoot.querySelector(`[data-cpk-failed-tool-call="${escaped}"]`)) !== null && _this$activeRoot$quer2 !== void 0 ? _this$activeRoot$quer2 : this.activeRoot.querySelector(`[data-cpk-failed-tool-result="${escaped}"]`);
|
|
12033
|
+
card === null || card === void 0 || (_card$scrollIntoView = card.scrollIntoView) === null || _card$scrollIntoView === void 0 || _card$scrollIntoView.call(card, { block: "center" });
|
|
12034
|
+
}
|
|
12035
|
+
}
|
|
12036
|
+
/**
|
|
12037
|
+
* The Agent view is empty on "All Agents". Pick the agent that just failed
|
|
12038
|
+
* a tool, or the one with the most recent activity.
|
|
12039
|
+
*/
|
|
12040
|
+
focusAgentForView(error) {
|
|
12041
|
+
const agentOptions = this.contextOptions.filter((opt) => opt.key !== "all-agents");
|
|
12042
|
+
if (agentOptions.length === 0) return;
|
|
12043
|
+
const errorAgentId = error === null || error === void 0 ? void 0 : error.agentId;
|
|
12044
|
+
if (errorAgentId && agentOptions.some((option) => option.key === errorAgentId)) {
|
|
12045
|
+
this.selectedContext = errorAgentId;
|
|
12046
|
+
return;
|
|
12047
|
+
}
|
|
12048
|
+
if (this.selectedContext !== "all-agents") return;
|
|
12049
|
+
const mostRecent = agentOptions.reduce((best, opt) => {
|
|
12050
|
+
var _this$getAgentStats$l;
|
|
12051
|
+
const ts = (_this$getAgentStats$l = this.getAgentStats(opt.key).lastActivity) !== null && _this$getAgentStats$l !== void 0 ? _this$getAgentStats$l : -1;
|
|
12052
|
+
return best === null || ts > best.ts ? {
|
|
12053
|
+
key: opt.key,
|
|
12054
|
+
ts
|
|
12055
|
+
} : best;
|
|
12056
|
+
}, null);
|
|
12057
|
+
this.selectedContext = mostRecent ? mostRecent.key : agentOptions[0].key;
|
|
12058
|
+
}
|
|
12059
|
+
handleMenuSelect(key) {
|
|
12060
|
+
if (!this.menuItems.some((item) => item.key === key)) return;
|
|
12061
|
+
const previousMenu = this.selectedMenu;
|
|
12062
|
+
this.pendingPersistedMenu = null;
|
|
12063
|
+
this.briefingRestoreMenu = null;
|
|
12064
|
+
this.selectedMenu = key;
|
|
12065
|
+
this.settingsOpen = false;
|
|
12066
|
+
this.lastSelectedMenuByGroup[getGroupForMenu(key)] = key;
|
|
12067
|
+
if (previousMenu === "agents" && key !== "agents") {
|
|
12068
|
+
if (this.contextOptions.filter((opt) => opt.key !== "all-agents").length > 1) this.selectedContext = "all-agents";
|
|
11179
12069
|
}
|
|
11180
12070
|
if (key === "threads") {
|
|
11181
12071
|
var _this$core29;
|
|
@@ -11189,10 +12079,12 @@ ${prettyEvent}</pre
|
|
|
11189
12079
|
if (previousMenu !== "memories" && !((_this$core30 = this.core) === null || _this$core30 === void 0 ? void 0 : _this$core30.telemetryDisabled)) trackMemoriesTabClicked(this.getMemoriesTelemetryProps());
|
|
11190
12080
|
}
|
|
11191
12081
|
if (key === "home" && previousMenu !== "home") this.homeViewedThisOpen = false;
|
|
11192
|
-
if (key === "ag-ui-events" || key === "agents")
|
|
11193
|
-
|
|
11194
|
-
|
|
11195
|
-
|
|
12082
|
+
if (key === "ag-ui-events" || key === "agents") {
|
|
12083
|
+
if (!(this.pendingScrollToEventId !== null || this.pendingScrollToToolCallId !== null)) requestAnimationFrame(() => {
|
|
12084
|
+
const scroller = this.activeRoot.querySelector("#cpk-main-scroll");
|
|
12085
|
+
if (scroller) scroller.scrollTop = 0;
|
|
12086
|
+
});
|
|
12087
|
+
}
|
|
11196
12088
|
this.contextMenuOpen = false;
|
|
11197
12089
|
this.layoutMenuOpen = false;
|
|
11198
12090
|
this.persistState();
|
|
@@ -11838,58 +12730,454 @@ ${prettyEvent}</pre
|
|
|
11838
12730
|
else this.expandedRows.add(eventId);
|
|
11839
12731
|
this.requestUpdate();
|
|
11840
12732
|
}
|
|
12733
|
+
/** Whether a given subject currently has something to say. */
|
|
12734
|
+
isSignalArmed(key) {
|
|
12735
|
+
if (isWiringErrorKey(key)) return this.errorSignalArmed[key];
|
|
12736
|
+
if (isEventErrorKey(key)) return this.eventErrorArmed[key];
|
|
12737
|
+
return this.newsSignalArmed;
|
|
12738
|
+
}
|
|
12739
|
+
/**
|
|
12740
|
+
* The signal that owns the single launcher dot, or null when the launcher is
|
|
12741
|
+
* quiet. Precedence rather than replacement: a suppressed signal stays armed
|
|
12742
|
+
* and takes the dot as soon as the higher-priority one clears, and its own
|
|
12743
|
+
* navigation marker is visible the whole time.
|
|
12744
|
+
*/
|
|
12745
|
+
getActiveLauncherSignal() {
|
|
12746
|
+
for (const key of LAUNCHER_SIGNAL_PRIORITY_ORDER) if (this.isSignalArmed(key)) return key;
|
|
12747
|
+
return null;
|
|
12748
|
+
}
|
|
12749
|
+
/**
|
|
12750
|
+
* The marker a navigation entry carries, or null for an unmarked entry.
|
|
12751
|
+
*
|
|
12752
|
+
* Markers are independent of the launcher's single dot, so a suppressed
|
|
12753
|
+
* signal is never actually hidden once the panel is open. They also render
|
|
12754
|
+
* on the entry that is *currently selected*: for the news signal that never
|
|
12755
|
+
* mattered, because its marker clears as soon as the view renders, but a
|
|
12756
|
+
* state mirror stays true while it is being read and suppressing it on the
|
|
12757
|
+
* active entry would make it reappear on navigating away.
|
|
12758
|
+
*/
|
|
12759
|
+
getNavigationSignalFor(key) {
|
|
12760
|
+
for (const signalKey of LAUNCHER_SIGNAL_PRIORITY_ORDER) {
|
|
12761
|
+
const signal = LAUNCHER_SIGNALS[signalKey];
|
|
12762
|
+
if (signal.markerTarget !== key) continue;
|
|
12763
|
+
if (!this.isSignalArmed(signalKey)) continue;
|
|
12764
|
+
if (signalKey === NEWS_SIGNAL_ID && !this.announcementLoaded) continue;
|
|
12765
|
+
return signal;
|
|
12766
|
+
}
|
|
12767
|
+
return null;
|
|
12768
|
+
}
|
|
12769
|
+
/** Whether a wiring error source is currently red. */
|
|
12770
|
+
hasArmedErrorSignal() {
|
|
12771
|
+
return WIRING_ERROR_KEYS.some((source) => this.errorSignalArmed[source]);
|
|
12772
|
+
}
|
|
12773
|
+
armEventErrorFromCode(code, message, context) {
|
|
12774
|
+
const key = eventErrorKeyForCode(code);
|
|
12775
|
+
if (key === null) return;
|
|
12776
|
+
const agentId = typeof (context === null || context === void 0 ? void 0 : context.agentId) === "string" && context.agentId.length > 0 ? context.agentId : void 0;
|
|
12777
|
+
const toolName = typeof (context === null || context === void 0 ? void 0 : context.toolName) === "string" && context.toolName.length > 0 ? context.toolName : void 0;
|
|
12778
|
+
const toolCallId = typeof (context === null || context === void 0 ? void 0 : context.toolCallId) === "string" && context.toolCallId.length > 0 ? context.toolCallId : void 0;
|
|
12779
|
+
this.armEventError(key, message, {
|
|
12780
|
+
agentId,
|
|
12781
|
+
toolName,
|
|
12782
|
+
toolCallId
|
|
12783
|
+
});
|
|
12784
|
+
}
|
|
12785
|
+
armEventError(key, message, extras = {}) {
|
|
12786
|
+
this.eventErrorDetails[key] = {
|
|
12787
|
+
message,
|
|
12788
|
+
...extras
|
|
12789
|
+
};
|
|
12790
|
+
const wasArmed = this.eventErrorArmed[key];
|
|
12791
|
+
this.eventErrorArmed[key] = true;
|
|
12792
|
+
if (!wasArmed) this.startSignalPulse(key);
|
|
12793
|
+
if (this.isOpen && !this.settingsOpen && this.selectedMenu === LAUNCHER_SIGNALS[key].landingTarget) this.applyEventErrorLanding(key);
|
|
12794
|
+
this.requestUpdate();
|
|
12795
|
+
}
|
|
12796
|
+
clearEventError(key) {
|
|
12797
|
+
if (!this.eventErrorArmed[key]) return;
|
|
12798
|
+
this.eventErrorArmed[key] = false;
|
|
12799
|
+
this.errorSignalViewedSources.delete(key);
|
|
12800
|
+
this.retireSignal(key);
|
|
12801
|
+
this.requestUpdate();
|
|
12802
|
+
}
|
|
12803
|
+
clearAllEventErrors() {
|
|
12804
|
+
for (const key of EVENT_ERROR_KEYS) {
|
|
12805
|
+
this.eventErrorDetails[key] = null;
|
|
12806
|
+
if (!this.eventErrorArmed[key]) continue;
|
|
12807
|
+
this.eventErrorArmed[key] = false;
|
|
12808
|
+
this.retireSignal(key);
|
|
12809
|
+
}
|
|
12810
|
+
}
|
|
12811
|
+
/**
|
|
12812
|
+
* An event error is unread until its landing view is actually on screen.
|
|
12813
|
+
* Opening the Inspector for a different leaf must not burn it.
|
|
12814
|
+
*/
|
|
12815
|
+
maybeCompleteEventErrorView() {
|
|
12816
|
+
if (!this.isOpen || this.settingsOpen) return;
|
|
12817
|
+
for (const key of EVENT_ERROR_KEYS) {
|
|
12818
|
+
if (!this.eventErrorArmed[key]) continue;
|
|
12819
|
+
if (this.selectedMenu !== LAUNCHER_SIGNALS[key].landingTarget) continue;
|
|
12820
|
+
this.clearEventError(key);
|
|
12821
|
+
}
|
|
12822
|
+
}
|
|
12823
|
+
isReducedMotionPreferred() {
|
|
12824
|
+
var _window$matchMedia4, _window4;
|
|
12825
|
+
return typeof window !== "undefined" && ((_window$matchMedia4 = (_window4 = window).matchMedia) === null || _window$matchMedia4 === void 0 ? void 0 : _window$matchMedia4.call(_window4, "(prefers-reduced-motion: reduce)").matches) === true;
|
|
12826
|
+
}
|
|
11841
12827
|
armNewsSignal(options) {
|
|
11842
12828
|
const wasArmed = this.newsSignalArmed;
|
|
11843
12829
|
this.newsSignalArmed = true;
|
|
11844
|
-
if (options.pulse
|
|
11845
|
-
this.newsSignalPulsePending = true;
|
|
11846
|
-
if (!wasArmed) this.requestUpdate();
|
|
11847
|
-
} else if (options.pulse) this.startNewsSignalPulse();
|
|
12830
|
+
if (options.pulse) this.startSignalPulse(NEWS_SIGNAL_ID);
|
|
11848
12831
|
else if (!wasArmed) this.requestUpdate();
|
|
11849
12832
|
}
|
|
11850
12833
|
clearNewsSignal() {
|
|
11851
12834
|
if (!this.newsSignalArmed) return;
|
|
11852
12835
|
this.newsSignalArmed = false;
|
|
11853
|
-
this.newsSignalPulsePending = false;
|
|
11854
12836
|
if (this.announcementTimestamp) saveAnnouncementReadTimestamp(this.announcementTimestamp);
|
|
11855
|
-
|
|
12837
|
+
this.retireSignal(NEWS_SIGNAL_ID);
|
|
11856
12838
|
this.requestUpdate();
|
|
11857
12839
|
}
|
|
11858
|
-
|
|
11859
|
-
|
|
11860
|
-
|
|
11861
|
-
|
|
12840
|
+
/**
|
|
12841
|
+
* Requests one beat for a signal, running it now or deferring it.
|
|
12842
|
+
*
|
|
12843
|
+
* There is a single pending slot and four reasons a beat cannot land. All
|
|
12844
|
+
* four are the same situation — "cannot land now, run later" — and treating
|
|
12845
|
+
* them alike is the point: three separate behaviours for one situation would
|
|
12846
|
+
* not survive a third signal.
|
|
12847
|
+
*
|
|
12848
|
+
* Reason 3 is not cosmetic. Starting a beat while one runs does not restart
|
|
12849
|
+
* the animation, because the attribute it binds to does not change value and
|
|
12850
|
+
* the pseudo-element selectors match on attribute *presence*; the running
|
|
12851
|
+
* beat would merely change colour mid-flight. A failure that arms during an
|
|
12852
|
+
* announcement beat must wait for that beat to end, or it would run only as
|
|
12853
|
+
* its final fraction.
|
|
12854
|
+
*
|
|
12855
|
+
* A failure's beat is followed by a pill, and the whole 3.4-second gesture
|
|
12856
|
+
* holds this one slot for its full duration. That is not a second scheduling
|
|
12857
|
+
* concept: reason 3 already says "another beat is running", and a gesture is
|
|
12858
|
+
* simply a longer beat.
|
|
12859
|
+
*/
|
|
12860
|
+
startSignalPulse(key) {
|
|
12861
|
+
if (this.isOpen || typeof document !== "undefined" && document.visibilityState !== "visible" || this.gestureSlotSignal !== null && this.gestureSlotSignal !== key || this.getActiveLauncherSignal() !== key) {
|
|
12862
|
+
const pending = this.pendingPulseSignal;
|
|
12863
|
+
if (pending === null || LAUNCHER_SIGNALS[key].priority >= LAUNCHER_SIGNALS[pending].priority) this.pendingPulseSignal = key;
|
|
11862
12864
|
this.requestUpdate();
|
|
11863
12865
|
return;
|
|
11864
12866
|
}
|
|
11865
|
-
this.
|
|
11866
|
-
this.
|
|
11867
|
-
|
|
12867
|
+
this.stopSignalPulse();
|
|
12868
|
+
this.pendingPulseSignal = null;
|
|
12869
|
+
this.pulsingSignal = key;
|
|
12870
|
+
if (isWiringErrorKey(key)) this.errorBeatSpent = true;
|
|
12871
|
+
else if (this.announcementTimestamp && key === NEWS_SIGNAL_ID) saveAnnouncementPulsedTimestamp(this.announcementTimestamp);
|
|
12872
|
+
this.beginGestureTail(key);
|
|
11868
12873
|
this.requestUpdate();
|
|
11869
12874
|
if (typeof window === "undefined") return;
|
|
11870
12875
|
this.pulseTimeoutId = setTimeout(() => {
|
|
11871
12876
|
this.pulseTimeoutId = null;
|
|
11872
|
-
this.
|
|
12877
|
+
this.pulsingSignal = null;
|
|
11873
12878
|
this.requestUpdate();
|
|
11874
|
-
|
|
12879
|
+
if (this.gestureSignal === key && this.pillPhase === "closed") {
|
|
12880
|
+
this.openPill();
|
|
12881
|
+
return;
|
|
12882
|
+
}
|
|
12883
|
+
if (this.gestureSignal === key) {
|
|
12884
|
+
this.endGesture();
|
|
12885
|
+
return;
|
|
12886
|
+
}
|
|
12887
|
+
this.flushPendingSignalPulse();
|
|
12888
|
+
}, LAUNCHER_SIGNALS[key].cadence);
|
|
11875
12889
|
}
|
|
11876
|
-
|
|
12890
|
+
stopSignalPulse() {
|
|
11877
12891
|
if (this.pulseTimeoutId !== null) {
|
|
11878
12892
|
clearTimeout(this.pulseTimeoutId);
|
|
11879
12893
|
this.pulseTimeoutId = null;
|
|
11880
12894
|
}
|
|
11881
|
-
this.
|
|
12895
|
+
this.pulsingSignal = null;
|
|
12896
|
+
}
|
|
12897
|
+
/**
|
|
12898
|
+
* Runs a deferred beat if it can land now, and drops it if its reason to
|
|
12899
|
+
* exist has gone: a nudge about a problem that no longer exists is worse
|
|
12900
|
+
* than no nudge at all.
|
|
12901
|
+
*/
|
|
12902
|
+
flushPendingSignalPulse() {
|
|
12903
|
+
const key = this.pendingPulseSignal;
|
|
12904
|
+
if (key === null) return;
|
|
12905
|
+
if (!this.isSignalArmed(key)) {
|
|
12906
|
+
this.pendingPulseSignal = null;
|
|
12907
|
+
this.requestUpdate();
|
|
12908
|
+
return;
|
|
12909
|
+
}
|
|
12910
|
+
this.startSignalPulse(key);
|
|
12911
|
+
}
|
|
12912
|
+
/**
|
|
12913
|
+
* Drops a signal's gesture, pending or running, when the signal goes quiet.
|
|
12914
|
+
*
|
|
12915
|
+
* The pill closes early: it states a condition, and the condition has
|
|
12916
|
+
* stopped being true. The beat is left to finish, because a beat asserts
|
|
12917
|
+
* nothing — it says *here*, and "here" is still true.
|
|
12918
|
+
*/
|
|
12919
|
+
retireSignal(key) {
|
|
12920
|
+
if (this.pendingPulseSignal === key) this.pendingPulseSignal = null;
|
|
12921
|
+
if (this.gestureSignal === key) this.closePillEarly();
|
|
12922
|
+
this.flushPendingSignalPulse();
|
|
12923
|
+
}
|
|
12924
|
+
/**
|
|
12925
|
+
* The signal holding the single gesture slot: a beat in flight, or the pill
|
|
12926
|
+
* and spoken sentence that follow it. One slot, not two — see reason 3 in
|
|
12927
|
+
* `startSignalPulse`.
|
|
12928
|
+
*/
|
|
12929
|
+
get gestureSlotSignal() {
|
|
12930
|
+
var _this$pulsingSignal;
|
|
12931
|
+
return (_this$pulsingSignal = this.pulsingSignal) !== null && _this$pulsingSignal !== void 0 ? _this$pulsingSignal : this.gestureSignal;
|
|
12932
|
+
}
|
|
12933
|
+
/**
|
|
12934
|
+
* Opens the gesture's tail alongside the beat, for a signal that carries a
|
|
12935
|
+
* pill. The pill is rendered immediately — clipped to nothing, so it shows
|
|
12936
|
+
* nothing — because its full width has to be on the page before the room
|
|
12937
|
+
* either side of the launcher can be measured.
|
|
12938
|
+
*
|
|
12939
|
+
* A signal with no pill label gets no tail at all, so the announcement's
|
|
12940
|
+
* gesture is exactly the beat it has always been.
|
|
12941
|
+
*/
|
|
12942
|
+
beginGestureTail(key) {
|
|
12943
|
+
this.cancelPillTimeout();
|
|
12944
|
+
if (LAUNCHER_SIGNALS[key].pillLabel === void 0) {
|
|
12945
|
+
this.gestureSignal = null;
|
|
12946
|
+
this.pillPhase = null;
|
|
12947
|
+
this.pillDirection = null;
|
|
12948
|
+
return;
|
|
12949
|
+
}
|
|
12950
|
+
this.gestureSignal = key;
|
|
12951
|
+
this.pillPhase = "closed";
|
|
12952
|
+
this.pillDirection = null;
|
|
12953
|
+
this.closeLauncherHud();
|
|
12954
|
+
}
|
|
12955
|
+
/**
|
|
12956
|
+
* Chooses the side, or suppresses the pill, from the room actually available
|
|
12957
|
+
* at gesture start. Measured once, from the DOM, because the launcher is
|
|
12958
|
+
* draggable and its position persists: a reader who parked it near the left
|
|
12959
|
+
* edge would otherwise get a permanently truncated pill.
|
|
12960
|
+
*
|
|
12961
|
+
* Where neither side has room there is no pill at all rather than a cut-off
|
|
12962
|
+
* one — the dot and the beat still fire, so the signal is intact and only
|
|
12963
|
+
* the label is lost. Constraining where the reader may drag the control to
|
|
12964
|
+
* protect this animation was considered and rejected: the page is theirs.
|
|
12965
|
+
*/
|
|
12966
|
+
resolvePillDirection() {
|
|
12967
|
+
if (this.pillDirection !== null || this.pillPhase === null) return;
|
|
12968
|
+
const wrapper = this.activeRoot.querySelector(".console-button-wrapper");
|
|
12969
|
+
const button = wrapper === null || wrapper === void 0 ? void 0 : wrapper.querySelector(".console-button");
|
|
12970
|
+
const pill = wrapper === null || wrapper === void 0 ? void 0 : wrapper.querySelector(".cpk-launcher-pill");
|
|
12971
|
+
if (!button || !pill || typeof window === "undefined") return;
|
|
12972
|
+
const mark = button.getBoundingClientRect();
|
|
12973
|
+
const overhang = Math.max(0, pill.getBoundingClientRect().width - mark.width);
|
|
12974
|
+
const viewportWidth = window.innerWidth;
|
|
12975
|
+
if (overhang === 0) {
|
|
12976
|
+
this.setPillOutcome("left");
|
|
12977
|
+
return;
|
|
12978
|
+
}
|
|
12979
|
+
if (mark.left - overhang >= EDGE_MARGIN) {
|
|
12980
|
+
this.setPillOutcome("left");
|
|
12981
|
+
return;
|
|
12982
|
+
}
|
|
12983
|
+
if (mark.right + overhang <= viewportWidth - EDGE_MARGIN) {
|
|
12984
|
+
this.setPillOutcome("right");
|
|
12985
|
+
return;
|
|
12986
|
+
}
|
|
12987
|
+
this.setPillOutcome(null);
|
|
12988
|
+
}
|
|
12989
|
+
/** Records the measurement's verdict, and drops the pill when it is null. */
|
|
12990
|
+
setPillOutcome(direction) {
|
|
12991
|
+
if (direction === null) {
|
|
12992
|
+
this.pillPhase = null;
|
|
12993
|
+
this.pillDirection = null;
|
|
12994
|
+
this.pillOutcome = "suppressed";
|
|
12995
|
+
this.requestUpdate();
|
|
12996
|
+
return;
|
|
12997
|
+
}
|
|
12998
|
+
this.pillDirection = direction;
|
|
12999
|
+
this.pillOutcome = "shown";
|
|
13000
|
+
this.requestUpdate();
|
|
13001
|
+
}
|
|
13002
|
+
/** Runs the pill's three phases in series once the beat has finished. */
|
|
13003
|
+
openPill() {
|
|
13004
|
+
this.resolvePillDirection();
|
|
13005
|
+
if (this.pillPhase === null) {
|
|
13006
|
+
this.endGesture();
|
|
13007
|
+
return;
|
|
13008
|
+
}
|
|
13009
|
+
this.advancePill("opening", ERROR_GESTURE_MS.open, () => {
|
|
13010
|
+
this.advancePill("holding", ERROR_GESTURE_MS.hold, () => {
|
|
13011
|
+
this.advancePill("closing", ERROR_GESTURE_MS.close, () => {
|
|
13012
|
+
this.endGesture();
|
|
13013
|
+
});
|
|
13014
|
+
});
|
|
13015
|
+
});
|
|
13016
|
+
}
|
|
13017
|
+
advancePill(phase, duration, next) {
|
|
13018
|
+
this.cancelPillTimeout();
|
|
13019
|
+
this.pillPhase = phase;
|
|
13020
|
+
this.requestUpdate();
|
|
13021
|
+
if (typeof window === "undefined") return;
|
|
13022
|
+
this.pillTimeoutId = setTimeout(() => {
|
|
13023
|
+
this.pillTimeoutId = null;
|
|
13024
|
+
next();
|
|
13025
|
+
}, duration);
|
|
13026
|
+
}
|
|
13027
|
+
/**
|
|
13028
|
+
* Closes the pill before its hold is out, because the failure it names has
|
|
13029
|
+
* been fixed. A pill that has not opened yet is simply dropped; the beat is
|
|
13030
|
+
* never cut short.
|
|
13031
|
+
*/
|
|
13032
|
+
closePillEarly() {
|
|
13033
|
+
if (this.pillPhase === null) {
|
|
13034
|
+
this.endGesture();
|
|
13035
|
+
return;
|
|
13036
|
+
}
|
|
13037
|
+
if (this.pillPhase === "closing") return;
|
|
13038
|
+
if (this.pillPhase === "closed") {
|
|
13039
|
+
this.pillPhase = null;
|
|
13040
|
+
this.requestUpdate();
|
|
13041
|
+
return;
|
|
13042
|
+
}
|
|
13043
|
+
this.advancePill("closing", ERROR_GESTURE_MS.close, () => {
|
|
13044
|
+
this.endGesture();
|
|
13045
|
+
});
|
|
13046
|
+
}
|
|
13047
|
+
/** Releases the slot and leaves the plain mark with its dot behind. */
|
|
13048
|
+
endGesture() {
|
|
13049
|
+
this.cancelGestureTail();
|
|
13050
|
+
this.requestUpdate();
|
|
13051
|
+
this.flushPendingSignalPulse();
|
|
13052
|
+
}
|
|
13053
|
+
/**
|
|
13054
|
+
* Drops the gesture's tail outright, with no closing animation, for the
|
|
13055
|
+
* cases where the launcher itself has gone: the panel opened over it, or the
|
|
13056
|
+
* element was removed from the page.
|
|
13057
|
+
*/
|
|
13058
|
+
cancelGestureTail() {
|
|
13059
|
+
this.cancelPillTimeout();
|
|
13060
|
+
this.gestureSignal = null;
|
|
13061
|
+
this.pillPhase = null;
|
|
13062
|
+
this.pillDirection = null;
|
|
13063
|
+
}
|
|
13064
|
+
cancelPillTimeout() {
|
|
13065
|
+
if (this.pillTimeoutId !== null) {
|
|
13066
|
+
clearTimeout(this.pillTimeoutId);
|
|
13067
|
+
this.pillTimeoutId = null;
|
|
13068
|
+
}
|
|
13069
|
+
}
|
|
13070
|
+
/**
|
|
13071
|
+
* Whether each error source is currently broken.
|
|
13072
|
+
*
|
|
13073
|
+
* Only two *wiring* conditions qualify. App errors (runs, tools, memory)
|
|
13074
|
+
* are unread events on a different latch — they name themselves on the pill
|
|
13075
|
+
* and clear when their landing view is read. Notably absent from *this*
|
|
13076
|
+
* latch:
|
|
13077
|
+
*
|
|
13078
|
+
* - **A failed agent run.** A run is an event. It arms `run`, not this
|
|
13079
|
+
* state. The resting wiring dot must not stay red for the rest of a debug
|
|
13080
|
+
* hour.
|
|
13081
|
+
* - **The core error channel as a wiring source.** Handshake failure already
|
|
13082
|
+
* sets the connection state. Other codes arm `run` or `tool`.
|
|
13083
|
+
* - **Memory failures before Learning is live.** The memory store is lazy
|
|
13084
|
+
* because creating it opens a realtime connection. Once it exists, a load
|
|
13085
|
+
* failure arms `memory`.
|
|
13086
|
+
* - **Product states.** An unconfigured Intelligence and an unentitled
|
|
13087
|
+
* Memory plan are not defects. The signal fires only where wiring is
|
|
13088
|
+
* present and the call still fails — which for threads is guaranteed by
|
|
13089
|
+
* `_threadsErrorByAgent` only ever being written while the thread
|
|
13090
|
+
* endpoints are available.
|
|
13091
|
+
*
|
|
13092
|
+
* Known limitation: the runtime handshake runs once, on connect. A server
|
|
13093
|
+
* that dies *after* the page loaded leaves the connection state at connected
|
|
13094
|
+
* and raises nothing; the next page load re-runs the handshake and the
|
|
13095
|
+
* signal appears then. The signal reports the wiring state as last
|
|
13096
|
+
* established. Closing that gap means a re-probe in the core, which is a
|
|
13097
|
+
* runtime concern.
|
|
13098
|
+
*/
|
|
13099
|
+
isErrorSourceBroken(source) {
|
|
13100
|
+
if (source === "connection") {
|
|
13101
|
+
const state = this.getCoreStatusSummary().state;
|
|
13102
|
+
if (runtimeConnectionNeedsAttention(state)) return true;
|
|
13103
|
+
return this.errorSignalArmed.connection && state === "connecting";
|
|
13104
|
+
}
|
|
13105
|
+
return this._threadsErrorByAgent.size > 0;
|
|
13106
|
+
}
|
|
13107
|
+
/**
|
|
13108
|
+
* Mirrors both error latches onto the live state. Called from `willUpdate`,
|
|
13109
|
+
* because every mutation of the underlying state already requests an update,
|
|
13110
|
+
* so the resting dot follows the state within the same render.
|
|
13111
|
+
*/
|
|
13112
|
+
evaluateErrorSignals() {
|
|
13113
|
+
const wasArmed = this.hasArmedErrorSignal();
|
|
13114
|
+
for (const source of WIRING_ERROR_KEYS) {
|
|
13115
|
+
if (this.isErrorSourceBroken(source)) {
|
|
13116
|
+
if (this.errorSignalArmed[source]) continue;
|
|
13117
|
+
this.errorSignalArmed[source] = true;
|
|
13118
|
+
continue;
|
|
13119
|
+
}
|
|
13120
|
+
if (!this.errorSignalArmed[source]) continue;
|
|
13121
|
+
this.errorSignalArmed[source] = false;
|
|
13122
|
+
this.errorSignalViewedSources.delete(source);
|
|
13123
|
+
this.retireSignal(source);
|
|
13124
|
+
}
|
|
13125
|
+
this.onErrorSignalsChanged(wasArmed);
|
|
13126
|
+
}
|
|
13127
|
+
/**
|
|
13128
|
+
* Applies the rising-edge rule after a latch changed.
|
|
13129
|
+
*
|
|
13130
|
+
* The beat fires on the transition from "no failure" to "at least one
|
|
13131
|
+
* failure", evaluated globally across the sources and never again while
|
|
13132
|
+
* anything is red — one root cause, one nudge.
|
|
13133
|
+
*/
|
|
13134
|
+
onErrorSignalsChanged(wasArmed) {
|
|
13135
|
+
if (!this.hasArmedErrorSignal()) {
|
|
13136
|
+
this.errorBeatSpent = false;
|
|
13137
|
+
this.pillOutcome = null;
|
|
13138
|
+
return;
|
|
13139
|
+
}
|
|
13140
|
+
if (wasArmed || this.errorBeatSpent) return;
|
|
13141
|
+
const active = this.getActiveLauncherSignal();
|
|
13142
|
+
if (active !== null && isErrorSignalKey(active)) this.startSignalPulse(active);
|
|
13143
|
+
}
|
|
13144
|
+
/**
|
|
13145
|
+
* Records `oss.inspector.error_signal_viewed` once per source per outage,
|
|
13146
|
+
* when the dot is actually on screen.
|
|
13147
|
+
*
|
|
13148
|
+
* Unlike the announcement's launcher event this fires immediately rather
|
|
13149
|
+
* than waiting for the runtime handshake to report `telemetryDisabled`.
|
|
13150
|
+
* The held-queue would never drain for the connection source — a connection
|
|
13151
|
+
* failure means the handshake did not complete — so queuing would guarantee
|
|
13152
|
+
* zero data for the case this event exists to measure. `trackOpened` already
|
|
13153
|
+
* sends on the same terms. Both opt-out layers still gate it: the local
|
|
13154
|
+
* opt-out inside `track`, and the runtime's flag once it is known.
|
|
13155
|
+
*/
|
|
13156
|
+
maybeTrackErrorSignalViewed() {
|
|
13157
|
+
var _this$core31, _this$pillOutcome;
|
|
13158
|
+
if (this.isOpen || typeof document === "undefined" || document.visibilityState !== "visible") return;
|
|
13159
|
+
const active = this.getActiveLauncherSignal();
|
|
13160
|
+
if (active === null || !isErrorSignalKey(active)) return;
|
|
13161
|
+
if (this.errorSignalViewedSources.has(active)) return;
|
|
13162
|
+
if (this.pillOutcome === null && LAUNCHER_SIGNALS[active].pillLabel !== void 0) return;
|
|
13163
|
+
if ((_this$core31 = this.core) === null || _this$core31 === void 0 ? void 0 : _this$core31.telemetryDisabled) return;
|
|
13164
|
+
this.errorSignalViewedSources.add(active);
|
|
13165
|
+
trackErrorSignalViewed({
|
|
13166
|
+
source: active,
|
|
13167
|
+
presentation: this.isReducedMotionPreferred() ? "reduced_motion" : "animated",
|
|
13168
|
+
label: (_this$pillOutcome = this.pillOutcome) !== null && _this$pillOutcome !== void 0 ? _this$pillOutcome : "suppressed"
|
|
13169
|
+
});
|
|
11882
13170
|
}
|
|
11883
13171
|
maybeTrackNewsSignalViewed() {
|
|
11884
|
-
var _window$
|
|
11885
|
-
if (!this.newsSignalArmed ||
|
|
13172
|
+
var _window$matchMedia5, _window5, _this$announcementCta2;
|
|
13173
|
+
if (!this.newsSignalArmed || this.pulsingSignal !== NEWS_SIGNAL_ID || this.isOpen || typeof document === "undefined" || document.visibilityState !== "visible") return;
|
|
11886
13174
|
const id = this.announcementTimestamp;
|
|
11887
13175
|
if (!id || this.viewedNewsSignalIds.has(id)) return;
|
|
11888
13176
|
this.viewedNewsSignalIds.add(id);
|
|
11889
13177
|
this.pendingNewsSignalViewed = {
|
|
11890
13178
|
banner_id: id,
|
|
11891
13179
|
surface: "launcher",
|
|
11892
|
-
presentation: typeof window !== "undefined" && ((_window$
|
|
13180
|
+
presentation: typeof window !== "undefined" && ((_window$matchMedia5 = (_window5 = window).matchMedia) === null || _window$matchMedia5 === void 0 ? void 0 : _window$matchMedia5.call(_window5, "(prefers-reduced-motion: reduce)").matches) ? "reduced_motion" : "animated",
|
|
11893
13181
|
cta_label: (_this$announcementCta2 = this.announcementCtaLabel) !== null && _this$announcementCta2 !== void 0 ? _this$announcementCta2 : void 0
|
|
11894
13182
|
};
|
|
11895
13183
|
this.flushPendingWhatsNewTelemetry();
|
|
@@ -11951,9 +13239,9 @@ ${prettyEvent}</pre
|
|
|
11951
13239
|
this.flushPendingWhatsNewTelemetry();
|
|
11952
13240
|
}
|
|
11953
13241
|
flushPendingWhatsNewTelemetry() {
|
|
11954
|
-
var _this$
|
|
13242
|
+
var _this$core32;
|
|
11955
13243
|
if (this.pendingBannerViewed.length === 0 && !this.pendingNewsSignalViewed) return;
|
|
11956
|
-
if ((_this$
|
|
13244
|
+
if ((_this$core32 = this.core) === null || _this$core32 === void 0 ? void 0 : _this$core32.telemetryDisabled) {
|
|
11957
13245
|
this.pendingBannerViewed = [];
|
|
11958
13246
|
this.pendingNewsSignalViewed = null;
|
|
11959
13247
|
return;
|
|
@@ -12035,11 +13323,11 @@ ${prettyEvent}</pre
|
|
|
12035
13323
|
}
|
|
12036
13324
|
appendRefParam(href, ref = "cpk-inspector") {
|
|
12037
13325
|
try {
|
|
12038
|
-
var _this$
|
|
13326
|
+
var _this$core33;
|
|
12039
13327
|
const isRootRelative = href.startsWith("/") && !href.startsWith("//");
|
|
12040
13328
|
const url = new URL(href, typeof window !== "undefined" ? window.location.href : "https://copilotkit.ai");
|
|
12041
13329
|
if (!url.searchParams.has("ref")) url.searchParams.append("ref", ref);
|
|
12042
|
-
if (!url.searchParams.has("posthog_distinct_id") && this.runtimeStatus === _copilotkit_core.CopilotKitCoreRuntimeConnectionStatus.Connected && !((_this$
|
|
13330
|
+
if (!url.searchParams.has("posthog_distinct_id") && this.runtimeStatus === _copilotkit_core.CopilotKitCoreRuntimeConnectionStatus.Connected && !((_this$core33 = this.core) === null || _this$core33 === void 0 ? void 0 : _this$core33.telemetryDisabled) && this.isCopilotKitDestination(url)) {
|
|
12043
13331
|
const distinctId = getTelemetryDistinctIdForUrl();
|
|
12044
13332
|
if (distinctId) url.searchParams.append("posthog_distinct_id", distinctId);
|
|
12045
13333
|
}
|
|
@@ -12107,18 +13395,28 @@ ${prettyEvent}</pre
|
|
|
12107
13395
|
.console-button-wrapper {
|
|
12108
13396
|
position: relative;
|
|
12109
13397
|
display: inline-flex;
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
13398
|
+
/* The launcher's surface and edge, shared by the button and the pill so
|
|
13399
|
+
the two cannot drift apart. A dark grey rather than near-black: the
|
|
13400
|
+
launcher sits on a customer's page, and 1,5,7 against white is a
|
|
13401
|
+
harder edge than this surface needs. */
|
|
13402
|
+
--cpk-launcher-face: rgba(24, 28, 31, 0.95);
|
|
13403
|
+
--cpk-launcher-face-solid: rgb(24, 28, 31);
|
|
13404
|
+
--cpk-launcher-edge: rgba(190, 194, 255, 0.25);
|
|
12113
13405
|
/* The launcher's own size, exposed so the signal dot can be placed
|
|
12114
13406
|
against the OUTER rim with a length rather than a percentage.
|
|
12115
13407
|
Percentages resolve against the padding box, which the 1px border
|
|
12116
|
-
insets, and the dot would land inside the rim.
|
|
13408
|
+
insets, and the dot would land inside the rim.
|
|
13409
|
+
|
|
13410
|
+
Declared on the wrapper rather than on the button so the pill, which
|
|
13411
|
+
is the button's sibling, can clear the mark by the same length. */
|
|
12117
13412
|
--cpk-launcher-size: clamp(
|
|
12118
13413
|
${LAUNCHER_MIN_SIZE}px,
|
|
12119
13414
|
7vw,
|
|
12120
13415
|
${LAUNCHER_MAX_SIZE}px
|
|
12121
13416
|
);
|
|
13417
|
+
}
|
|
13418
|
+
|
|
13419
|
+
.console-button {
|
|
12122
13420
|
width: var(--cpk-launcher-size);
|
|
12123
13421
|
height: var(--cpk-launcher-size);
|
|
12124
13422
|
/* Keep the 1px border inside the declared outer size. */
|
|
@@ -12520,14 +13818,29 @@ ${prettyEvent}</pre
|
|
|
12520
13818
|
|
|
12521
13819
|
/* ── Floating button ─────────────────────────────────────────── */
|
|
12522
13820
|
.console-button {
|
|
12523
|
-
background-color:
|
|
12524
|
-
border-color:
|
|
13821
|
+
background-color: var(--cpk-launcher-face) !important;
|
|
13822
|
+
border-color: var(--cpk-launcher-edge) !important;
|
|
13823
|
+
/* One hairline, not two. The border above is it; a second ring used to
|
|
13824
|
+
sit 1px outside as a box-shadow and hardcoded the lilac instead of
|
|
13825
|
+
reading the --cpk-launcher-edge token, so it could not follow it.
|
|
13826
|
+
What replaces it is a one-pixel light edge along the top, which is
|
|
13827
|
+
what keeps the face from reading flat without drawing a frame.
|
|
13828
|
+
|
|
13829
|
+
The border is not decoration: the face is #181C1F, which against a
|
|
13830
|
+
dark host page (GitHub dark 1.10:1, Tailwind slate-900 1.04:1) is
|
|
13831
|
+
indistinguishable from the page. It is the only thing that gives the
|
|
13832
|
+
launcher an outline there, so it stays. */
|
|
12525
13833
|
box-shadow:
|
|
12526
|
-
|
|
13834
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.07),
|
|
12527
13835
|
0 4px 14px rgba(1, 5, 7, 0.28) !important;
|
|
13836
|
+
/* Promotes the launcher to its own compositing layer, which the
|
|
13837
|
+
backdrop-filter this replaces used to do as a side effect. Without
|
|
13838
|
+
a layer the hover scale re-rasterises the mark every frame and it
|
|
13839
|
+
visibly jitters; with one, the compositor scales it as a texture. */
|
|
13840
|
+
will-change: transform;
|
|
12528
13841
|
}
|
|
12529
13842
|
.console-button:hover {
|
|
12530
|
-
background-color:
|
|
13843
|
+
background-color: var(--cpk-launcher-face-solid) !important;
|
|
12531
13844
|
border-color: rgba(190, 194, 255, 0.45) !important;
|
|
12532
13845
|
}
|
|
12533
13846
|
.console-button:focus-visible {
|
|
@@ -12545,7 +13858,6 @@ ${prettyEvent}</pre
|
|
|
12545
13858
|
* that forces a repaint every frame is not acceptable.
|
|
12546
13859
|
*/
|
|
12547
13860
|
.console-button[data-cpk-signal] {
|
|
12548
|
-
--cpk-launcher-face: rgba(1, 5, 7, 0.95);
|
|
12549
13861
|
isolation: isolate;
|
|
12550
13862
|
}
|
|
12551
13863
|
|
|
@@ -12651,8 +13963,197 @@ ${prettyEvent}</pre
|
|
|
12651
13963
|
width: 19%;
|
|
12652
13964
|
height: 19%;
|
|
12653
13965
|
border-radius: 50%;
|
|
12654
|
-
|
|
12655
|
-
|
|
13966
|
+
/* Lit from the upper left and shaded at the lower right, so the dot
|
|
13967
|
+
reads as a lens rather than a flat disc. Both stops are derived from
|
|
13968
|
+
the signal colour, so a new tone needs no new values. */
|
|
13969
|
+
background: radial-gradient(
|
|
13970
|
+
circle at 32% 28%,
|
|
13971
|
+
color-mix(in srgb, var(--cpk-launcher-signal), white 40%) 0%,
|
|
13972
|
+
var(--cpk-launcher-signal) 60%,
|
|
13973
|
+
color-mix(in srgb, var(--cpk-launcher-signal), black 20%) 100%
|
|
13974
|
+
);
|
|
13975
|
+
/* Replaces an opaque 1.5px collar in the launcher's own face. That
|
|
13976
|
+
collar was 21% of the dot's footprint, and because the dot's centre
|
|
13977
|
+
sits *on* the rim, its outer half painted a hard dark crescent onto
|
|
13978
|
+
the host page rather than onto the launcher. A hairline plus a soft
|
|
13979
|
+
drop does the same separating job without the hard edge. */
|
|
13980
|
+
box-shadow:
|
|
13981
|
+
0 0 0 0.5px rgba(1, 5, 7, 0.4),
|
|
13982
|
+
0 1px 2.5px rgba(1, 5, 7, 0.5);
|
|
13983
|
+
}
|
|
13984
|
+
|
|
13985
|
+
/* ── Launcher pill: the launcher opens sideways and says what ─── */
|
|
13986
|
+
/*
|
|
13987
|
+
* The pill is laid out at its FULL width from the first frame and
|
|
13988
|
+
* revealed by animating a rectangular clip. Nothing is scaled and
|
|
13989
|
+
* nothing is resized.
|
|
13990
|
+
*
|
|
13991
|
+
* That is not a stylistic choice. This component is permanently mounted
|
|
13992
|
+
* on top of a customer's application, so no property that forces a
|
|
13993
|
+
* layout on every frame is acceptable — and animating "width" does
|
|
13994
|
+
* exactly that, sixty times a second, on someone else's page. A clip
|
|
13995
|
+
* leaves the element's geometry constant and changes only the visible
|
|
13996
|
+
* region, which the compositor handles. Animating a horizontal scale
|
|
13997
|
+
* was the other candidate and squashes the mark itself, not merely the
|
|
13998
|
+
* rounded end, so the logo would need counter-scaling and the dot and
|
|
13999
|
+
* halo would become ellipses.
|
|
14000
|
+
*
|
|
14001
|
+
* The launcher's own face and border are repeated here so the two form
|
|
14002
|
+
* one capsule: the button paints last and therefore on top, with no
|
|
14003
|
+
* z-index needed. The mark's own ring and shadow are deliberately left
|
|
14004
|
+
* alone for the whole gesture — the circle's outline staying visible
|
|
14005
|
+
* inside the open pill was looked at against the alternative and kept.
|
|
14006
|
+
*
|
|
14007
|
+
* A column, not a row: the pill carries a heading and a subline stacked,
|
|
14008
|
+
* centred against a height that does not change. "justify-content"
|
|
14009
|
+
* centres the pair vertically and "align-items" keeps both lines flush
|
|
14010
|
+
* left, so the pill never grows taller than the launcher it opens from.
|
|
14011
|
+
*/
|
|
14012
|
+
.cpk-launcher-pill {
|
|
14013
|
+
position: absolute;
|
|
14014
|
+
top: 50%;
|
|
14015
|
+
margin-top: calc(var(--cpk-launcher-size) / -2);
|
|
14016
|
+
height: var(--cpk-launcher-size);
|
|
14017
|
+
display: inline-flex;
|
|
14018
|
+
flex-direction: column;
|
|
14019
|
+
justify-content: center;
|
|
14020
|
+
align-items: flex-start;
|
|
14021
|
+
gap: 1px;
|
|
14022
|
+
box-sizing: border-box;
|
|
14023
|
+
border-radius: 999px;
|
|
14024
|
+
border: 1px solid var(--cpk-launcher-edge);
|
|
14025
|
+
background: var(--cpk-launcher-face);
|
|
14026
|
+
color: #ffffff;
|
|
14027
|
+
white-space: nowrap;
|
|
14028
|
+
pointer-events: none;
|
|
14029
|
+
opacity: 0;
|
|
14030
|
+
}
|
|
14031
|
+
|
|
14032
|
+
/* The failure class, word-identical to the panel's own wording. */
|
|
14033
|
+
.cpk-launcher-pill__heading {
|
|
14034
|
+
font-size: 12px;
|
|
14035
|
+
font-weight: 600;
|
|
14036
|
+
line-height: 1.2;
|
|
14037
|
+
}
|
|
14038
|
+
|
|
14039
|
+
/*
|
|
14040
|
+
* The one line of copy in this feature that exists nowhere else in the
|
|
14041
|
+
* product. The heading above is word-identical to the panel, which is
|
|
14042
|
+
* the standing rule; this line is a deliberate, owner-approved exception
|
|
14043
|
+
* to it, because the pill is now clickable and has to say so.
|
|
14044
|
+
*
|
|
14045
|
+
* It is NOT spoken. A screen-reader user cannot act on an instruction
|
|
14046
|
+
* delivered through an announcement, and it would double the spoken
|
|
14047
|
+
* length — so the live region carries the failure class alone.
|
|
14048
|
+
*/
|
|
14049
|
+
.cpk-launcher-pill__subline {
|
|
14050
|
+
font-size: 10.5px;
|
|
14051
|
+
font-weight: 500;
|
|
14052
|
+
line-height: 1.2;
|
|
14053
|
+
opacity: 0.72;
|
|
14054
|
+
}
|
|
14055
|
+
|
|
14056
|
+
/*
|
|
14057
|
+
* Two directions, one animation with the inset on the other side. The
|
|
14058
|
+
* padding on the launcher's side clears the mark, so the words never sit
|
|
14059
|
+
* under it. The text-side padding is derived from the capsule's radius
|
|
14060
|
+
* (half the launcher size), NOT a bare literal: padding is measured from
|
|
14061
|
+
* the bounding box, but the first half-height of that side is the rounded
|
|
14062
|
+
* cap. Half the size lands the text exactly where the cap ends and the
|
|
14063
|
+
* straight edge begins. A literal 14px put it 16px inside the curve at the
|
|
14064
|
+
* production launcher size, which is itself a clamp on the viewport.
|
|
14065
|
+
*/
|
|
14066
|
+
.cpk-launcher-pill[data-cpk-pill-direction="left"] {
|
|
14067
|
+
right: 0;
|
|
14068
|
+
padding: 0 calc(var(--cpk-launcher-size) + 12px) 0
|
|
14069
|
+
calc(var(--cpk-launcher-size) / 2);
|
|
14070
|
+
clip-path: inset(0 0 0 calc(100% - var(--cpk-launcher-size)));
|
|
14071
|
+
}
|
|
14072
|
+
.cpk-launcher-pill[data-cpk-pill-direction="right"] {
|
|
14073
|
+
left: 0;
|
|
14074
|
+
padding: 0 calc(var(--cpk-launcher-size) / 2) 0
|
|
14075
|
+
calc(var(--cpk-launcher-size) + 12px);
|
|
14076
|
+
clip-path: inset(0 calc(100% - var(--cpk-launcher-size)) 0 0);
|
|
14077
|
+
}
|
|
14078
|
+
|
|
14079
|
+
/*
|
|
14080
|
+
* "round" on both stops, so the revealing edge is the capsule's own
|
|
14081
|
+
* rounded end travelling sideways rather than a straight vertical line
|
|
14082
|
+
* wiping across it. An unrounded inset reads as a wipe; this reads as an
|
|
14083
|
+
* opening. It adds no animated property: the clip is still the clip.
|
|
14084
|
+
*/
|
|
14085
|
+
@keyframes cpk-launcher-pill-left {
|
|
14086
|
+
0% {
|
|
14087
|
+
opacity: 0;
|
|
14088
|
+
clip-path: inset(
|
|
14089
|
+
0 0 0 calc(100% - var(--cpk-launcher-size)) round 999px
|
|
14090
|
+
);
|
|
14091
|
+
}
|
|
14092
|
+
100% {
|
|
14093
|
+
opacity: 1;
|
|
14094
|
+
clip-path: inset(0 0 0 0 round 999px);
|
|
14095
|
+
}
|
|
14096
|
+
}
|
|
14097
|
+
|
|
14098
|
+
@keyframes cpk-launcher-pill-right {
|
|
14099
|
+
0% {
|
|
14100
|
+
opacity: 0;
|
|
14101
|
+
clip-path: inset(
|
|
14102
|
+
0 calc(100% - var(--cpk-launcher-size)) 0 0 round 999px
|
|
14103
|
+
);
|
|
14104
|
+
}
|
|
14105
|
+
100% {
|
|
14106
|
+
opacity: 1;
|
|
14107
|
+
clip-path: inset(0 0 0 0 round 999px);
|
|
14108
|
+
}
|
|
14109
|
+
}
|
|
14110
|
+
|
|
14111
|
+
/*
|
|
14112
|
+
* The pill takes the pointer exactly while it is on screen, so the
|
|
14113
|
+
* instruction it now carries is honest: a click on it opens the
|
|
14114
|
+
* Inspector, the same action as pressing the mark. During the beat the
|
|
14115
|
+
* clip covers only the mark itself, and a click target nobody can see
|
|
14116
|
+
* over someone else's page is not something to ship — so the base rule
|
|
14117
|
+
* keeps "pointer-events: none" and only the three visible phases take it
|
|
14118
|
+
* back.
|
|
14119
|
+
* The button paints last and therefore wins the pointer where the two
|
|
14120
|
+
* overlap, so dragging the launcher is unaffected throughout.
|
|
14121
|
+
*/
|
|
14122
|
+
.cpk-launcher-pill[data-cpk-pill-phase="opening"],
|
|
14123
|
+
.cpk-launcher-pill[data-cpk-pill-phase="holding"],
|
|
14124
|
+
.cpk-launcher-pill[data-cpk-pill-phase="closing"] {
|
|
14125
|
+
pointer-events: auto;
|
|
14126
|
+
cursor: pointer;
|
|
14127
|
+
}
|
|
14128
|
+
|
|
14129
|
+
/* Closing is the same animation played backwards, so the two phases can
|
|
14130
|
+
never drift apart. */
|
|
14131
|
+
.cpk-launcher-pill[data-cpk-pill-phase="opening"],
|
|
14132
|
+
.cpk-launcher-pill[data-cpk-pill-phase="closing"] {
|
|
14133
|
+
animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
|
14134
|
+
animation-iteration-count: 1;
|
|
14135
|
+
animation-fill-mode: forwards;
|
|
14136
|
+
}
|
|
14137
|
+
.cpk-launcher-pill[data-cpk-pill-phase="opening"] {
|
|
14138
|
+
animation-duration: var(--cpk-launcher-pill-open);
|
|
14139
|
+
}
|
|
14140
|
+
.cpk-launcher-pill[data-cpk-pill-phase="closing"] {
|
|
14141
|
+
animation-duration: var(--cpk-launcher-pill-close);
|
|
14142
|
+
animation-direction: reverse;
|
|
14143
|
+
}
|
|
14144
|
+
.cpk-launcher-pill[data-cpk-pill-phase="opening"][data-cpk-pill-direction="left"],
|
|
14145
|
+
.cpk-launcher-pill[data-cpk-pill-phase="closing"][data-cpk-pill-direction="left"] {
|
|
14146
|
+
animation-name: cpk-launcher-pill-left;
|
|
14147
|
+
}
|
|
14148
|
+
.cpk-launcher-pill[data-cpk-pill-phase="opening"][data-cpk-pill-direction="right"],
|
|
14149
|
+
.cpk-launcher-pill[data-cpk-pill-phase="closing"][data-cpk-pill-direction="right"] {
|
|
14150
|
+
animation-name: cpk-launcher-pill-right;
|
|
14151
|
+
}
|
|
14152
|
+
|
|
14153
|
+
/* The hold is the end state of the reveal, held. */
|
|
14154
|
+
.cpk-launcher-pill[data-cpk-pill-phase="holding"] {
|
|
14155
|
+
opacity: 1;
|
|
14156
|
+
clip-path: inset(0 0 0 0);
|
|
12656
14157
|
}
|
|
12657
14158
|
|
|
12658
14159
|
/*
|
|
@@ -12660,6 +14161,18 @@ ${prettyEvent}</pre
|
|
|
12660
14161
|
* the information arrives without the movement.
|
|
12661
14162
|
*/
|
|
12662
14163
|
@media (prefers-reduced-motion: reduce) {
|
|
14164
|
+
/*
|
|
14165
|
+
* The pill is shown by opacity alone, with no clip animation and the
|
|
14166
|
+
* same hold. The instruction is to reduce motion, not to withhold
|
|
14167
|
+
* information, and this reader needs the label as much as anyone.
|
|
14168
|
+
*/
|
|
14169
|
+
.cpk-launcher-pill[data-cpk-pill-phase="opening"],
|
|
14170
|
+
.cpk-launcher-pill[data-cpk-pill-phase="holding"],
|
|
14171
|
+
.cpk-launcher-pill[data-cpk-pill-phase="closing"] {
|
|
14172
|
+
animation: none !important;
|
|
14173
|
+
opacity: 1;
|
|
14174
|
+
clip-path: inset(0 0 0 0);
|
|
14175
|
+
}
|
|
12663
14176
|
.cpk-launcher-signal-wash {
|
|
12664
14177
|
opacity: 0.85;
|
|
12665
14178
|
}
|
|
@@ -12679,11 +14192,225 @@ ${prettyEvent}</pre
|
|
|
12679
14192
|
}
|
|
12680
14193
|
}
|
|
12681
14194
|
|
|
14195
|
+
/* ── Launcher HUD: hover menu, quieter than the error island ── */
|
|
14196
|
+
.console-button-wrapper[data-cpk-hud="open"] .cpk-launcher-hud {
|
|
14197
|
+
pointer-events: auto;
|
|
14198
|
+
opacity: 1;
|
|
14199
|
+
transform: none;
|
|
14200
|
+
visibility: visible;
|
|
14201
|
+
}
|
|
14202
|
+
|
|
14203
|
+
.cpk-launcher-hud {
|
|
14204
|
+
position: absolute;
|
|
14205
|
+
top: 0;
|
|
14206
|
+
z-index: 4;
|
|
14207
|
+
padding-right: 14px;
|
|
14208
|
+
pointer-events: none;
|
|
14209
|
+
opacity: 0;
|
|
14210
|
+
visibility: hidden;
|
|
14211
|
+
transform: translateX(8px);
|
|
14212
|
+
transition:
|
|
14213
|
+
opacity 160ms ease,
|
|
14214
|
+
transform 200ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
14215
|
+
}
|
|
14216
|
+
|
|
14217
|
+
.cpk-launcher-hud[data-cpk-hud-side="left"] {
|
|
14218
|
+
right: 100%;
|
|
14219
|
+
padding-right: 14px;
|
|
14220
|
+
padding-left: 0;
|
|
14221
|
+
}
|
|
14222
|
+
|
|
14223
|
+
.cpk-launcher-hud[data-cpk-hud-side="right"] {
|
|
14224
|
+
left: 100%;
|
|
14225
|
+
right: auto;
|
|
14226
|
+
padding-right: 0;
|
|
14227
|
+
padding-left: 14px;
|
|
14228
|
+
transform: translateX(-8px);
|
|
14229
|
+
}
|
|
14230
|
+
|
|
14231
|
+
.console-button-wrapper[data-cpk-hud="open"]
|
|
14232
|
+
.cpk-launcher-hud[data-cpk-hud-side="right"] {
|
|
14233
|
+
transform: none;
|
|
14234
|
+
}
|
|
14235
|
+
|
|
14236
|
+
.cpk-launcher-hud__card {
|
|
14237
|
+
--hud-fill: rgb(28 31 36 / 0.88);
|
|
14238
|
+
--hud-line: rgb(190 194 255 / 0.5);
|
|
14239
|
+
position: relative;
|
|
14240
|
+
width: 228px;
|
|
14241
|
+
padding: 4px;
|
|
14242
|
+
border: 1px dotted var(--hud-line);
|
|
14243
|
+
border-radius: 10px;
|
|
14244
|
+
background: var(--hud-fill);
|
|
14245
|
+
color: #fff;
|
|
14246
|
+
backdrop-filter: blur(12px) saturate(1.2);
|
|
14247
|
+
box-shadow: 0 8px 20px rgb(1 5 7 / 0.18);
|
|
14248
|
+
}
|
|
14249
|
+
|
|
14250
|
+
.cpk-launcher-hud__arrow {
|
|
14251
|
+
position: absolute;
|
|
14252
|
+
top: calc(var(--cpk-launcher-size) / 2);
|
|
14253
|
+
width: 10px;
|
|
14254
|
+
height: 10px;
|
|
14255
|
+
background: var(--hud-fill);
|
|
14256
|
+
transform: translateY(-50%) rotate(45deg);
|
|
14257
|
+
}
|
|
14258
|
+
|
|
14259
|
+
.cpk-launcher-hud[data-cpk-hud-side="left"] .cpk-launcher-hud__arrow {
|
|
14260
|
+
right: -5px;
|
|
14261
|
+
border-top: 1px solid var(--hud-line);
|
|
14262
|
+
border-right: 1px solid var(--hud-line);
|
|
14263
|
+
}
|
|
14264
|
+
|
|
14265
|
+
.cpk-launcher-hud[data-cpk-hud-side="right"] .cpk-launcher-hud__arrow {
|
|
14266
|
+
left: -5px;
|
|
14267
|
+
border-bottom: 1px solid var(--hud-line);
|
|
14268
|
+
border-left: 1px solid var(--hud-line);
|
|
14269
|
+
}
|
|
14270
|
+
|
|
14271
|
+
.cpk-launcher-hud__list {
|
|
14272
|
+
margin: 0;
|
|
14273
|
+
padding: 0;
|
|
14274
|
+
list-style: none;
|
|
14275
|
+
}
|
|
14276
|
+
|
|
14277
|
+
.cpk-launcher-hud__list + .cpk-launcher-hud__list {
|
|
14278
|
+
margin-top: 4px;
|
|
14279
|
+
padding-top: 4px;
|
|
14280
|
+
border-top: 1px dotted var(--hud-line);
|
|
14281
|
+
}
|
|
14282
|
+
|
|
14283
|
+
.cpk-launcher-hud__row {
|
|
14284
|
+
position: relative;
|
|
14285
|
+
display: grid;
|
|
14286
|
+
grid-template-columns: 1fr 28px;
|
|
14287
|
+
align-items: start;
|
|
14288
|
+
border-radius: 7px;
|
|
14289
|
+
cursor: pointer;
|
|
14290
|
+
}
|
|
14291
|
+
|
|
14292
|
+
.cpk-launcher-hud__row + .cpk-launcher-hud__row {
|
|
14293
|
+
margin-top: 1px;
|
|
14294
|
+
}
|
|
14295
|
+
|
|
14296
|
+
.cpk-launcher-hud__row:hover,
|
|
14297
|
+
.cpk-launcher-hud__row:focus-within,
|
|
14298
|
+
.cpk-launcher-hud__row[data-cpk-hud-help="open"] {
|
|
14299
|
+
background: rgb(255 255 255 / 0.06);
|
|
14300
|
+
}
|
|
14301
|
+
|
|
14302
|
+
.cpk-launcher-hud__action {
|
|
14303
|
+
display: flex;
|
|
14304
|
+
gap: 8px;
|
|
14305
|
+
min-height: 32px;
|
|
14306
|
+
align-items: center;
|
|
14307
|
+
padding: 6px 8px;
|
|
14308
|
+
border: 0;
|
|
14309
|
+
border-radius: 7px;
|
|
14310
|
+
background: transparent;
|
|
14311
|
+
color: #fff;
|
|
14312
|
+
font-family: inherit;
|
|
14313
|
+
font-size: 12px;
|
|
14314
|
+
font-weight: 600;
|
|
14315
|
+
text-align: start;
|
|
14316
|
+
cursor: pointer;
|
|
14317
|
+
}
|
|
14318
|
+
|
|
14319
|
+
/* Stretch the row action over the whole tab, including the detail
|
|
14320
|
+
copy. The help mark sits above this layer. */
|
|
14321
|
+
.cpk-launcher-hud__action::after {
|
|
14322
|
+
content: "";
|
|
14323
|
+
position: absolute;
|
|
14324
|
+
inset: 0;
|
|
14325
|
+
}
|
|
14326
|
+
|
|
14327
|
+
.cpk-launcher-hud__check {
|
|
14328
|
+
flex: none;
|
|
14329
|
+
width: 14px;
|
|
14330
|
+
height: 14px;
|
|
14331
|
+
color: #34d399;
|
|
14332
|
+
}
|
|
14333
|
+
|
|
14334
|
+
.cpk-launcher-hud__help {
|
|
14335
|
+
position: relative;
|
|
14336
|
+
z-index: 1;
|
|
14337
|
+
display: inline-flex;
|
|
14338
|
+
width: 28px;
|
|
14339
|
+
height: 32px;
|
|
14340
|
+
align-items: center;
|
|
14341
|
+
justify-content: center;
|
|
14342
|
+
padding: 0;
|
|
14343
|
+
border: 0;
|
|
14344
|
+
background: transparent;
|
|
14345
|
+
color: rgb(255 255 255 / 0.78);
|
|
14346
|
+
font-size: 12px;
|
|
14347
|
+
font-weight: 600;
|
|
14348
|
+
cursor: pointer;
|
|
14349
|
+
}
|
|
14350
|
+
|
|
14351
|
+
.cpk-launcher-hud__help span {
|
|
14352
|
+
display: inline-flex;
|
|
14353
|
+
width: 16px;
|
|
14354
|
+
height: 16px;
|
|
14355
|
+
align-items: center;
|
|
14356
|
+
justify-content: center;
|
|
14357
|
+
border: 1px dotted rgb(190 194 255 / 0.55);
|
|
14358
|
+
border-radius: 50%;
|
|
14359
|
+
line-height: 1;
|
|
14360
|
+
}
|
|
14361
|
+
|
|
14362
|
+
.cpk-launcher-hud__help:focus-visible,
|
|
14363
|
+
.cpk-launcher-hud__action:focus-visible {
|
|
14364
|
+
outline: 2px solid #bec2ff;
|
|
14365
|
+
outline-offset: 1px;
|
|
14366
|
+
}
|
|
14367
|
+
|
|
14368
|
+
.cpk-launcher-hud__detail {
|
|
14369
|
+
grid-column: 1 / -1;
|
|
14370
|
+
max-height: 0;
|
|
14371
|
+
margin: 0;
|
|
14372
|
+
padding: 0 8px;
|
|
14373
|
+
overflow: hidden;
|
|
14374
|
+
color: rgb(255 255 255 / 0.78);
|
|
14375
|
+
font-size: 11px;
|
|
14376
|
+
font-weight: 400;
|
|
14377
|
+
line-height: 1.4;
|
|
14378
|
+
opacity: 0;
|
|
14379
|
+
pointer-events: none;
|
|
14380
|
+
transform: translateY(-6px);
|
|
14381
|
+
transition:
|
|
14382
|
+
max-height 200ms cubic-bezier(0.16, 1, 0.3, 1),
|
|
14383
|
+
opacity 150ms ease-out,
|
|
14384
|
+
transform 200ms cubic-bezier(0.16, 1, 0.3, 1),
|
|
14385
|
+
padding-bottom 200ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
14386
|
+
}
|
|
14387
|
+
|
|
14388
|
+
.cpk-launcher-hud__row:hover .cpk-launcher-hud__detail,
|
|
14389
|
+
.cpk-launcher-hud__row:focus-within .cpk-launcher-hud__detail,
|
|
14390
|
+
.cpk-launcher-hud__row[data-cpk-hud-help="open"] .cpk-launcher-hud__detail {
|
|
14391
|
+
max-height: 72px;
|
|
14392
|
+
padding: 0 8px 7px;
|
|
14393
|
+
opacity: 1;
|
|
14394
|
+
transform: none;
|
|
14395
|
+
}
|
|
14396
|
+
|
|
14397
|
+
@media (prefers-reduced-motion: reduce) {
|
|
14398
|
+
.cpk-launcher-hud,
|
|
14399
|
+
.cpk-launcher-hud__detail {
|
|
14400
|
+
transition: none;
|
|
14401
|
+
}
|
|
14402
|
+
}
|
|
14403
|
+
|
|
12682
14404
|
/*
|
|
12683
|
-
*
|
|
12684
|
-
*
|
|
12685
|
-
*
|
|
12686
|
-
*
|
|
14405
|
+
* Marker on the navigation entry, which is what keeps a signal alive
|
|
14406
|
+
* once the panel is open and the launcher is hidden. Static by design:
|
|
14407
|
+
* the beat belongs to the launcher, and movement here would compete with
|
|
14408
|
+
* the live event stream a developer is actually watching.
|
|
14409
|
+
*
|
|
14410
|
+
* Tone-selected rather than tone-agnostic, because the marker has to
|
|
14411
|
+
* agree with the dot that sent the reader here. Same shape, same
|
|
14412
|
+
* placement, one declaration different — as on the launcher, where the
|
|
14413
|
+
* treatment is shared and only the injected colour changes.
|
|
12687
14414
|
*/
|
|
12688
14415
|
.inspector-nav-signal-dot {
|
|
12689
14416
|
display: inline-block;
|
|
@@ -12691,7 +14418,10 @@ ${prettyEvent}</pre
|
|
|
12691
14418
|
width: 6px;
|
|
12692
14419
|
height: 6px;
|
|
12693
14420
|
border-radius: 50%;
|
|
12694
|
-
background: ${(0, lit.unsafeCSS)(
|
|
14421
|
+
background: ${(0, lit.unsafeCSS)(LAUNCHER_SIGNAL_COLORS.news)};
|
|
14422
|
+
}
|
|
14423
|
+
.inspector-nav-signal-dot[data-cpk-signal-tone="error"] {
|
|
14424
|
+
background: ${(0, lit.unsafeCSS)(LAUNCHER_SIGNAL_COLORS.error)};
|
|
12695
14425
|
}
|
|
12696
14426
|
|
|
12697
14427
|
/* ── Inspector window ────────────────────────────────────────── */
|