cli-link 0.0.3 → 0.0.5

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.
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-4{left:1rem;right:1rem}.-left-8{left:-2rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.left-0{left:0}.right-0{right:0}.right-2{right:.5rem}.top-0{top:0}.top-1\/2{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.mx-4{margin-left:1rem;margin-right:1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-0\.5{margin-left:.125rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[60px\]{height:60px}.h-\[85\%\]{height:85%}.h-\[86\%\]{height:86%}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-52{max-height:13rem}.max-h-60{max-height:15rem}.max-h-72{max-height:18rem}.max-h-\[120px\]{max-height:120px}.max-h-\[calc\(86vh-132px\)\]{max-height:calc(86vh - 132px)}.min-h-0{min-height:0px}.min-h-14{min-height:3.5rem}.min-h-\[220px\]{min-height:220px}.min-h-\[320px\]{min-height:320px}.min-h-\[360px\]{min-height:360px}.min-h-\[42px\]{min-height:42px}.min-h-\[44px\]{min-height:44px}.min-h-\[88px\]{min-height:88px}.min-h-full{min-height:100%}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[95\%\]{width:95%}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-\[120px\]{max-width:120px}.max-w-\[220px\]{max-width:220px}.max-w-\[280px\]{max-width:280px}.max-w-\[85\%\]{max-width:85%}.max-w-\[88\%\]{max-width:88%}.max-w-\[94\%\]{max-width:94%}.max-w-\[95\%\]{max-width:95%}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-6{--tw-translate-x: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[3\.25rem_3\.25rem_1\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:3.25rem 3.25rem 1.5rem minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200\/70>:not([hidden])~:not([hidden]){border-color:#e5e7ebb3}.divide-gray-50>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(249 250 251 / var(--tw-divide-opacity, 1))}.divide-primary-100\/70>:not([hidden])~:not([hidden]){border-color:#ede9feb3}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.rounded-tl-md{border-top-left-radius:.375rem}.rounded-tr-sm{border-top-right-radius:.125rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-100{--tw-border-opacity: 1;border-color:rgb(254 243 199 / var(--tw-border-opacity, 1))}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-200\/40{border-color:#fde68a66}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-200\/40{border-color:#bfdbfe66}.border-blue-200\/50{border-color:#bfdbfe80}.border-blue-200\/60{border-color:#bfdbfe99}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\/40{border-color:#e5e7eb66}.border-gray-200\/80{border-color:#e5e7ebcc}.border-gray-50{--tw-border-opacity: 1;border-color:rgb(249 250 251 / var(--tw-border-opacity, 1))}.border-green-100{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-200\/40{border-color:#bbf7d066}.border-green-200\/60{border-color:#bbf7d099}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-indigo-200\/60{border-color:#c7d2fe99}.border-orange-100{--tw-border-opacity: 1;border-color:rgb(255 237 213 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-primary-100{--tw-border-opacity: 1;border-color:rgb(237 233 254 / var(--tw-border-opacity, 1))}.border-primary-100\/60{border-color:#ede9fe99}.border-primary-100\/80{border-color:#ede9fecc}.border-primary-200{--tw-border-opacity: 1;border-color:rgb(221 214 254 / var(--tw-border-opacity, 1))}.border-primary-50{--tw-border-opacity: 1;border-color:rgb(245 243 255 / var(--tw-border-opacity, 1))}.border-primary-600{--tw-border-opacity: 1;border-color:rgb(124 58 237 / var(--tw-border-opacity, 1))}.border-purple-200\/40{border-color:#e9d5ff66}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-200\/30{border-color:#fecaca4d}.border-transparent{border-color:transparent}.border-violet-200{--tw-border-opacity: 1;border-color:rgb(221 214 254 / var(--tw-border-opacity, 1))}.border-white\/25{border-color:#ffffff40}.border-t-transparent{border-top-color:transparent}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-50\/50{background-color:#fffbeb80}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-100\/60{background-color:#dbeafe99}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-50\/50{background-color:#eff6ff80}.bg-blue-50\/80{background-color:#eff6ffcc}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-cyan-50{--tw-bg-opacity: 1;background-color:rgb(236 254 255 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-200\/70{background-color:#e5e7ebb3}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\/50{background-color:#f9fafb80}.bg-gray-50\/90{background-color:#f9fafbe6}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-50\/50{background-color:#f0fdf480}.bg-green-50\/80{background-color:#f0fdf4cc}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-indigo-50\/80{background-color:#eef2ffcc}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-primary-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-primary-50{--tw-bg-opacity: 1;background-color:rgb(245 243 255 / var(--tw-bg-opacity, 1))}.bg-primary-50\/90{background-color:#f5f3ffe6}.bg-primary-500{--tw-bg-opacity: 1;background-color:rgb(139 92 246 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(124 58 237 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-50\/50{background-color:#faf5ff80}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\/50{background-color:#fef2f280}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/25{background-color:#ef444440}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-violet-50{--tw-bg-opacity: 1;background-color:rgb(245 243 255 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/50{background-color:#ffffff80}.bg-white\/70{background-color:#ffffffb3}.bg-white\/80{background-color:#fffc}.bg-white\/95{background-color:#fffffff2}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-5{padding-left:1.25rem}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[15px\]{font-size:15px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-500\/70{color:#f59e0bb3}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-500\/70{color:#3b82f6b3}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-700{--tw-text-opacity: 1;color:rgb(14 116 144 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-500\/70{color:#6b7280b3}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-500\/70{color:#22c55eb3}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-indigo-800\/80{color:#3730a3cc}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-pink-600{--tw-text-opacity: 1;color:rgb(219 39 119 / var(--tw-text-opacity, 1))}.text-primary-100{--tw-text-opacity: 1;color:rgb(237 233 254 / var(--tw-text-opacity, 1))}.text-primary-200{--tw-text-opacity: 1;color:rgb(221 214 254 / var(--tw-text-opacity, 1))}.text-primary-500{--tw-text-opacity: 1;color:rgb(139 92 246 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(124 58 237 / var(--tw-text-opacity, 1))}.text-primary-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-primary-800{--tw-text-opacity: 1;color:rgb(91 33 182 / var(--tw-text-opacity, 1))}.text-purple-500\/70{color:#a855f7b3}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-violet-700{--tw-text-opacity: 1;color:rgb(109 40 217 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.decoration-white\/70{text-decoration-color:#ffffffb3}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-\[0_-1px_8px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow: 0 -1px 8px rgba(0,0,0,.04);--tw-shadow-colored: 0 -1px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-primary-200{--tw-shadow-color: #ddd6fe;--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.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{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}html,body,#root{height:100%;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0px)}.pt-safe{padding-top:env(safe-area-inset-top,0px)}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.markdown-body{font-size:15px;line-height:1.6;overflow-wrap:anywhere;word-break:break-word}.markdown-body p{margin:.35em 0}.markdown-body p:first-child{margin-top:0}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{font-weight:600;margin:.75em 0 .35em;line-height:1.35}.markdown-body h1{font-size:1.25em}.markdown-body h2{font-size:1.15em}.markdown-body h3{font-size:1.05em}.markdown-body code{background:#f1f5f9;border-radius:4px;padding:.15em .35em;font-size:.9em;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;white-space:break-spaces}.markdown-body pre{background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:10px;padding:.75em .875em;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:.6em 0;font-size:.82em;line-height:1.55;word-break:normal;overflow-wrap:normal;white-space:pre;max-width:100%;scrollbar-width:thin}.markdown-body pre code{background:none;padding:0;font-size:inherit;color:inherit;border-radius:0;white-space:inherit;display:block;min-width:-moz-max-content;min-width:max-content}.workspace-code-preview pre{margin:0;min-height:100%;border-radius:8px}.workspace-code-preview pre code,.workspace-code-preview code{-moz-tab-size:2;-o-tab-size:2;tab-size:2}.workspace-image-canvas{background-color:#f8fafc;background-image:linear-gradient(45deg,rgba(148,163,184,.2) 25%,transparent 25%),linear-gradient(-45deg,rgba(148,163,184,.2) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(148,163,184,.2) 75%),linear-gradient(-45deg,transparent 75%,rgba(148,163,184,.2) 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px}.dark .workspace-image-canvas{background-color:#0f172a;background-image:linear-gradient(45deg,rgba(71,85,105,.35) 25%,transparent 25%),linear-gradient(-45deg,rgba(71,85,105,.35) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(71,85,105,.35) 75%),linear-gradient(-45deg,transparent 75%,rgba(71,85,105,.35) 75%)}.markdown-body pre code.hljs,.markdown-body-sm pre code.hljs{color:#e6edf3}.hljs-comment,.hljs-quote{color:#8b949e;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#ff7b72}.hljs-string,.hljs-addition{color:#a5d6ff}.hljs-number,.hljs-literal{color:#79c0ff}.hljs-built_in{color:#ffa657}.hljs-function .hljs-title,.hljs-title.function_{color:#d2a8ff}.hljs-variable,.hljs-attr{color:#79c0ff}.hljs-property{color:#7ee787}.hljs-meta,.hljs-meta .hljs-keyword{color:#ffa657}.hljs-operator{color:#ff7b72}.hljs-deletion{color:#ffa198;background:#f851491a}.hljs-addition{color:#7ee787;background:#2ea0431a}.hljs-symbol,.hljs-bullet{color:#f2cc60}.hljs-regexp{color:#a5d6ff}.hljs-name,.hljs-selector-class{color:#7ee787}.hljs-selector-id{color:#ffa657}.hljs-section{color:#d2a8ff;font-weight:700}.hljs-link{color:#a5d6ff;text-decoration:underline}.hljs-params{color:#e6edf3}.hljs-attribute{color:#79c0ff}.workspace-code-preview code.hljs{color:inherit}.workspace-code-preview .hljs-comment,.workspace-code-preview .hljs-quote{color:#6e7781;font-style:italic}.workspace-code-preview .hljs-keyword,.workspace-code-preview .hljs-selector-tag,.workspace-code-preview .hljs-type,.workspace-code-preview .hljs-operator{color:#cf222e}.workspace-code-preview .hljs-string,.workspace-code-preview .hljs-regexp{color:#0a3069}.workspace-code-preview .hljs-number,.workspace-code-preview .hljs-literal,.workspace-code-preview .hljs-variable,.workspace-code-preview .hljs-attr,.workspace-code-preview .hljs-attribute{color:#0550ae}.workspace-code-preview .hljs-built_in,.workspace-code-preview .hljs-meta,.workspace-code-preview .hljs-meta .hljs-keyword{color:#953800}.workspace-code-preview .hljs-function .hljs-title,.workspace-code-preview .hljs-title.function_,.workspace-code-preview .hljs-section{color:#8250df}.workspace-code-preview .hljs-property,.workspace-code-preview .hljs-name,.workspace-code-preview .hljs-selector-class{color:#116329}.workspace-code-preview .hljs-deletion{color:#82071e;background:#cf222e14}.workspace-code-preview .hljs-addition{color:#116329;background:#1a7f3714}.workspace-code-preview .hljs-symbol,.workspace-code-preview .hljs-bullet{color:#9a6700}.workspace-code-preview .hljs-selector-id{color:#953800}.workspace-code-preview .hljs-link{color:#0a3069;text-decoration:underline}.workspace-code-preview .hljs-params{color:inherit}.dark .workspace-code-preview .hljs-comment,.dark .workspace-code-preview .hljs-quote{color:#8b949e}.dark .workspace-code-preview .hljs-keyword,.dark .workspace-code-preview .hljs-selector-tag,.dark .workspace-code-preview .hljs-type,.dark .workspace-code-preview .hljs-operator{color:#ff7b72}.dark .workspace-code-preview .hljs-string,.dark .workspace-code-preview .hljs-regexp{color:#a5d6ff}.dark .workspace-code-preview .hljs-number,.dark .workspace-code-preview .hljs-literal,.dark .workspace-code-preview .hljs-variable,.dark .workspace-code-preview .hljs-attr,.dark .workspace-code-preview .hljs-attribute{color:#79c0ff}.dark .workspace-code-preview .hljs-built_in,.dark .workspace-code-preview .hljs-meta,.dark .workspace-code-preview .hljs-meta .hljs-keyword{color:#ffa657}.dark .workspace-code-preview .hljs-function .hljs-title,.dark .workspace-code-preview .hljs-title.function_,.dark .workspace-code-preview .hljs-section{color:#d2a8ff}.dark .workspace-code-preview .hljs-property,.dark .workspace-code-preview .hljs-name,.dark .workspace-code-preview .hljs-selector-class{color:#7ee787}.dark .workspace-code-preview .hljs-deletion{color:#ffa198;background:#f851491a}.dark .workspace-code-preview .hljs-addition{color:#7ee787;background:#2ea0431a}.dark .workspace-code-preview .hljs-symbol,.dark .workspace-code-preview .hljs-bullet{color:#f2cc60}.dark .workspace-code-preview .hljs-selector-id{color:#ffa657}.dark .workspace-code-preview .hljs-link{color:#a5d6ff}.markdown-body ul,.markdown-body ol{margin:.35em 0;padding-left:1.5em}.markdown-body li{margin:.15em 0}.markdown-body li>p{margin:.2em 0}.markdown-body blockquote{border-left:3px solid #cbd5e1;padding-left:.75em;margin:.45em 0;color:#64748b}.markdown-body blockquote p{margin:.2em 0}.markdown-body hr{border:none;border-top:1px solid #e2e8f0;margin:.75em 0}.markdown-body a{color:#8b5cf6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body table{border-collapse:collapse;min-width:100%;width:-moz-max-content;width:max-content;max-width:100%;margin:.5em 0;font-size:.9em;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.markdown-body th,.markdown-body td{border:1px solid #e2e8f0;padding:.35em .6em;text-align:left}.markdown-body th{background:#f8fafc;font-weight:600}.dark .markdown-body code{background:#334155}.dark .markdown-body pre{background:#111827;border-color:#374151}.dark .markdown-body blockquote{border-left-color:#475569;color:#94a3b8}.dark .markdown-body hr{border-top-color:#334155}.dark .markdown-body th,.dark .markdown-body td{border-color:#334155}.dark .markdown-body th{background:#1e293b}.markdown-body-sm{font-size:12px;line-height:1.5}.markdown-body-sm p{margin:.2em 0}.markdown-body-sm code{font-size:.9em;padding:.1em .25em;white-space:break-spaces}.markdown-body-sm pre{margin:.3em 0;padding:.6em .85em;font-size:.9em;border-radius:6px;background:#0f172a;border:1px solid #334155;color:#e2e8f0;overflow-x:auto;-webkit-overflow-scrolling:touch;word-break:normal;overflow-wrap:normal;white-space:pre;scrollbar-width:thin}.markdown-body-sm pre code{background:none;padding:0;font-size:inherit;color:inherit;border-radius:0;white-space:inherit;display:block;min-width:-moz-max-content;min-width:max-content}.dark .markdown-body-sm pre{background:#111827;border-color:#374151}@keyframes messageIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.message-animate-in{animation:messageIn .2s ease-out both}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.placeholder\:text-primary-100::-moz-placeholder{--tw-text-opacity: 1;color:rgb(237 233 254 / var(--tw-text-opacity, 1))}.placeholder\:text-primary-100::placeholder{--tw-text-opacity: 1;color:rgb(237 233 254 / var(--tw-text-opacity, 1))}.last\:mb-0:last-child{margin-bottom:0}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-primary-200:hover{--tw-border-opacity: 1;border-color:rgb(221 214 254 / var(--tw-border-opacity, 1))}.hover\:border-primary-500:hover{--tw-border-opacity: 1;border-color:rgb(139 92 246 / var(--tw-border-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-green-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-100\/60:hover{background-color:#e0e7ff99}.hover\:bg-primary-100\/50:hover{background-color:#ede9fe80}.hover\:bg-primary-100\/60:hover{background-color:#ede9fe99}.hover\:bg-primary-50:hover{--tw-bg-opacity: 1;background-color:rgb(245 243 255 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-700:hover{--tw-bg-opacity: 1;background-color:rgb(109 40 217 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/15:hover{background-color:#ffffff26}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-primary-600:hover{--tw-text-opacity: 1;color:rgb(124 58 237 / var(--tw-text-opacity, 1))}.hover\:text-primary-900:hover{--tw-text-opacity: 1;color:rgb(76 29 149 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:decoration-current:hover{text-decoration-color:currentColor}.hover\:opacity-100:hover{opacity:1}.focus\:border-blue-400:focus{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.focus\:border-primary-400:focus{--tw-border-opacity: 1;border-color:rgb(167 139 250 / var(--tw-border-opacity, 1))}.focus\:border-primary-500:focus{--tw-border-opacity: 1;border-color:rgb(139 92 246 / var(--tw-border-opacity, 1))}.focus\:border-white\/60:focus{border-color:#fff9}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-\[3px\]:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-100:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(219 234 254 / var(--tw-ring-opacity, 1))}.focus\:ring-primary-100:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(237 233 254 / var(--tw-ring-opacity, 1))}.focus\:ring-primary-500\/40:focus{--tw-ring-color: rgb(139 92 246 / .4)}.focus\:ring-white\/20:focus{--tw-ring-color: rgb(255 255 255 / .2)}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.98\]:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.99\]:active{--tw-scale-x: .99;--tw-scale-y: .99;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-gray-100:active{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.active\:bg-green-100:active{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.active\:bg-purple-100:active{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:divide-gray-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(55 65 81 / var(--tw-divide-opacity, 1))}.dark\:divide-gray-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(31 41 55 / var(--tw-divide-opacity, 1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-amber-800\/40:is(.dark *){border-color:#92400e66}.dark\:border-amber-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(120 53 15 / var(--tw-border-opacity, 1))}.dark\:border-blue-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-blue-800\/40:is(.dark *){border-color:#1e40af66}.dark\:border-blue-800\/50:is(.dark *){border-color:#1e40af80}.dark\:border-blue-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:border-gray-800\/40:is(.dark *){border-color:#1f293766}.dark\:border-gray-800\/80:is(.dark *){border-color:#1f2937cc}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-green-800\/40:is(.dark *){border-color:#16653466}.dark\:border-green-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(20 83 45 / var(--tw-border-opacity, 1))}.dark\:border-indigo-800\/40:is(.dark *){border-color:#3730a366}.dark\:border-orange-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(154 52 18 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-primary-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 33 182 / var(--tw-border-opacity, 1))}.dark\:border-primary-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(76 29 149 / var(--tw-border-opacity, 1))}.dark\:border-purple-800\/40:is(.dark *){border-color:#6b21a866}.dark\:border-red-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.dark\:border-red-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.dark\:border-red-950:is(.dark *){--tw-border-opacity: 1;border-color:rgb(69 10 10 / var(--tw-border-opacity, 1))}.dark\:border-violet-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(76 29 149 / var(--tw-border-opacity, 1))}.dark\:bg-amber-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 26 3 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-950\/40:is(.dark *){background-color:#451a0366}.dark\:bg-amber-950\/50:is(.dark *){background-color:#451a0380}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/60:is(.dark *){background-color:#1e3a8a99}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/40:is(.dark *){background-color:#17255466}.dark\:bg-blue-950\/50:is(.dark *){background-color:#17255480}.dark\:bg-cyan-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(8 51 68 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/80:is(.dark *){background-color:#1f2937cc}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900\/50:is(.dark *){background-color:#11182780}.dark\:bg-gray-900\/70:is(.dark *){background-color:#111827b3}.dark\:bg-gray-900\/80:is(.dark *){background-color:#111827cc}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950\/50:is(.dark *){background-color:#03071280}.dark\:bg-gray-950\/80:is(.dark *){background-color:#030712cc}.dark\:bg-gray-950\/95:is(.dark *){background-color:#030712f2}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/35:is(.dark *){background-color:#052e1659}.dark\:bg-green-950\/40:is(.dark *){background-color:#052e1666}.dark\:bg-green-950\/50:is(.dark *){background-color:#052e1680}.dark\:bg-indigo-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 27 75 / var(--tw-bg-opacity, 1))}.dark\:bg-indigo-950\/40:is(.dark *){background-color:#1e1b4b66}.dark\:bg-orange-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(67 20 7 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/50:is(.dark *){background-color:#43140780}.dark\:bg-primary-400:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(167 139 250 / var(--tw-bg-opacity, 1))}.dark\:bg-primary-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(76 29 149 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(59 7 100 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-950\/50:is(.dark *){background-color:#3b076480}.dark\:bg-red-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-red-950\/30:is(.dark *){background-color:#450a0a4d}.dark\:bg-red-950\/35:is(.dark *){background-color:#450a0a59}.dark\:bg-red-950\/40:is(.dark *){background-color:#450a0a66}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-violet-950\/40:is(.dark *){background-color:#2e106566}.dark\:bg-yellow-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(66 32 6 / var(--tw-bg-opacity, 1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-amber-400\/70:is(.dark *){color:#fbbf24b3}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-blue-400\/70:is(.dark *){color:#60a5fab3}.dark\:text-cyan-300:is(.dark *){--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-400\/70:is(.dark *){color:#9ca3afb3}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-gray-700:is(.dark *){--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.dark\:text-green-100:is(.dark *){--tw-text-opacity: 1;color:rgb(220 252 231 / var(--tw-text-opacity, 1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-green-400\/70:is(.dark *){color:#4ade80b3}.dark\:text-indigo-200\/80:is(.dark *){color:#c7d2fecc}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-indigo-400:is(.dark *){--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.dark\:text-indigo-500:is(.dark *){--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-pink-400:is(.dark *){--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.dark\:text-primary-100:is(.dark *){--tw-text-opacity: 1;color:rgb(237 233 254 / var(--tw-text-opacity, 1))}.dark\:text-primary-300:is(.dark *){--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.dark\:text-primary-400:is(.dark *){--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-purple-400\/70:is(.dark *){color:#c084fcb3}.dark\:text-red-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-sky-400:is(.dark *){--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.dark\:text-violet-300:is(.dark *){--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:shadow-\[0_-1px_8px_rgba\(0\,0\,0\,0\.2\)\]:is(.dark *){--tw-shadow: 0 -1px 8px rgba(0,0,0,.2);--tw-shadow-colored: 0 -1px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-primary-900:is(.dark *){--tw-shadow-color: #4c1d95;--tw-shadow: var(--tw-shadow-colored)}.dark\:placeholder\:text-gray-600:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:placeholder\:text-gray-600:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:hover\:border-primary-800:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(91 33 182 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-950\/50:hover:is(.dark *){background-color:#052e1680}.dark\:hover\:bg-indigo-950\/60:hover:is(.dark *){background-color:#1e1b4b99}.dark\:hover\:bg-purple-950\/50:hover:is(.dark *){background-color:#3b076480}.dark\:hover\:bg-red-950:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:hover\:text-primary-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(221 214 254 / var(--tw-text-opacity, 1))}.dark\:hover\:text-primary-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:focus\:ring-blue-900:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(30 58 138 / var(--tw-ring-opacity, 1))}.dark\:focus\:ring-primary-900:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(76 29 149 / var(--tw-ring-opacity, 1))}.dark\:active\:bg-gray-700:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:active\:bg-green-950:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:active\:bg-purple-950:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(59 7 100 / var(--tw-bg-opacity, 1))}@media (min-width: 640px){.sm\:opacity-0{opacity:0}.group:hover .sm\:group-hover\:opacity-100{opacity:1}}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Session-CQFXA2Sr.js","assets/vendor-react-DSV5aFEg.js","assets/vendor-virtual-CcftJrIC.js","assets/WorkspaceLinkedText-DQyPLk-X.js","assets/PageTopBar-C8j-5s_3.js","assets/vendor-icons-CNN4EKVi.js","assets/History-BxJVDFpN.js","assets/vendor-motion-n6Lx6G4a.js","assets/Workspace-D8kv9euM.js","assets/code-highlight-CEcsuMpw.js","assets/vendor-markdown-BDwu-Ux6.js","assets/Settings-DYmjRmoN.js"])))=>i.map(i=>d[i]);
2
+ var Ze=Object.defineProperty;var et=(e,t,r)=>t in e?Ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var L=(e,t,r)=>et(e,typeof t!="symbol"?t+"":t,r);import{u as tt,b as rt,j as f,r as h,O as ot,R as de,B as nt,d as st,e as B,N as Te,f as it}from"./vendor-react-DSV5aFEg.js";import{M as at,C as ct,a as lt,S as dt}from"./vendor-icons-CNN4EKVi.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=r(i);fetch(i.href,s)}})();const ut="modulepreload",pt=function(e){return"/"+e},Ie={},we=function(t,r,n){let i=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));i=Promise.allSettled(r.map(p=>{if(p=pt(p),p in Ie)return;Ie[p]=!0;const w=p.endsWith(".css"),I=w?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${I}`))return;const g=document.createElement("link");if(g.rel=w?"stylesheet":ut,w||(g.as="script"),g.crossOrigin="",g.href=p,c&&g.setAttribute("nonce",c),document.head.appendChild(g),w)return new Promise((A,R)=>{g.addEventListener("load",A),g.addEventListener("error",()=>R(new Error(`Unable to preload CSS for ${p}`)))})}))}function s(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return i.then(a=>{for(const c of a||[])c.status==="rejected"&&s(c.reason);return t().catch(s)})};function Pe(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=Pe(e[t]))&&(n&&(n+=" "),n+=r)}else for(r in e)e[r]&&(n&&(n+=" "),n+=r);return n}function ft(){for(var e,t,r=0,n="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=Pe(e))&&(n&&(n+=" "),n+=t);return n}const Se="-";function ht(e){const t=mt(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=e;function i(a){const c=a.split(Se);return c[0]===""&&c.length!==1&&c.shift(),je(c,t)||gt(a)}function s(a,c){const p=r[a]||[];return c&&n[a]?[...p,...n[a]]:p}return{getClassGroupId:i,getConflictingClassGroupIds:s}}function je(e,t){var a;if(e.length===0)return t.classGroupId;const r=e[0],n=t.nextPart.get(r),i=n?je(e.slice(1),n):void 0;if(i)return i;if(t.validators.length===0)return;const s=e.join(Se);return(a=t.validators.find(({validator:c})=>c(s)))==null?void 0:a.classGroupId}const Re=/^\[(.+)\]$/;function gt(e){if(Re.test(e)){const t=Re.exec(e)[1],r=t==null?void 0:t.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}}function mt(e){const{theme:t,prefix:r}=e,n={nextPart:new Map,validators:[]};return yt(Object.entries(e.classGroups),r).forEach(([s,a])=>{xe(a,n,s,t)}),n}function xe(e,t,r,n){e.forEach(i=>{if(typeof i=="string"){const s=i===""?t:_e(t,i);s.classGroupId=r;return}if(typeof i=="function"){if(bt(i)){xe(i(n),t,r,n);return}t.validators.push({validator:i,classGroupId:r});return}Object.entries(i).forEach(([s,a])=>{xe(a,_e(t,s),r,n)})})}function _e(e,t){let r=e;return t.split(Se).forEach(n=>{r.nextPart.has(n)||r.nextPart.set(n,{nextPart:new Map,validators:[]}),r=r.nextPart.get(n)}),r}function bt(e){return e.isThemeGetter}function yt(e,t){return t?e.map(([r,n])=>{const i=n.map(s=>typeof s=="string"?t+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([a,c])=>[t+a,c])):s);return[r,i]}):e}function wt(e){if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,n=new Map;function i(s,a){r.set(s,a),t++,t>e&&(t=0,n=r,r=new Map)}return{get(s){let a=r.get(s);if(a!==void 0)return a;if((a=n.get(s))!==void 0)return i(s,a),a},set(s,a){r.has(s)?r.set(s,a):i(s,a)}}}const Ue="!";function kt(e){const t=e.separator,r=t.length===1,n=t[0],i=t.length;return function(a){const c=[];let p=0,w=0,I;for(let _=0;_<a.length;_++){let m=a[_];if(p===0){if(m===n&&(r||a.slice(_,_+i)===t)){c.push(a.slice(w,_)),w=_+i;continue}if(m==="/"){I=_;continue}}m==="["?p++:m==="]"&&p--}const g=c.length===0?a:a.substring(w),A=g.startsWith(Ue),R=A?g.substring(1):g,j=I&&I>w?I-w:void 0;return{modifiers:c,hasImportantModifier:A,baseClassName:R,maybePostfixModifierPosition:j}}}function xt(e){if(e.length<=1)return e;const t=[];let r=[];return e.forEach(n=>{n[0]==="["?(t.push(...r.sort(),n),r=[]):r.push(n)}),t.push(...r.sort()),t}function vt(e){return{cache:wt(e.cacheSize),splitModifiers:kt(e),...ht(e)}}const St=/\s+/;function Ct(e,t){const{splitModifiers:r,getClassGroupId:n,getConflictingClassGroupIds:i}=t,s=new Set;return e.trim().split(St).map(a=>{const{modifiers:c,hasImportantModifier:p,baseClassName:w,maybePostfixModifierPosition:I}=r(a);let g=n(I?w.substring(0,I):w),A=!!I;if(!g){if(!I)return{isTailwindClass:!1,originalClassName:a};if(g=n(w),!g)return{isTailwindClass:!1,originalClassName:a};A=!1}const R=xt(c).join(":");return{isTailwindClass:!0,modifierId:p?R+Ue:R,classGroupId:g,originalClassName:a,hasPostfixModifier:A}}).reverse().filter(a=>{if(!a.isTailwindClass)return!0;const{modifierId:c,classGroupId:p,hasPostfixModifier:w}=a,I=c+p;return s.has(I)?!1:(s.add(I),i(p,w).forEach(g=>s.add(c+g)),!0)}).reverse().map(a=>a.originalClassName).join(" ")}function Tt(){let e=0,t,r,n="";for(;e<arguments.length;)(t=arguments[e++])&&(r=We(t))&&(n&&(n+=" "),n+=r);return n}function We(e){if(typeof e=="string")return e;let t,r="";for(let n=0;n<e.length;n++)e[n]&&(t=We(e[n]))&&(r&&(r+=" "),r+=t);return r}function It(e,...t){let r,n,i,s=a;function a(p){const w=t.reduce((I,g)=>g(I),e());return r=vt(w),n=r.cache.get,i=r.cache.set,s=c,c(p)}function c(p){const w=n(p);if(w)return w;const I=Ct(p,r);return i(p,I),I}return function(){return s(Tt.apply(null,arguments))}}function T(e){const t=r=>r[e]||[];return t.isThemeGetter=!0,t}const Oe=/^\[(?:([a-z-]+):)?(.+)\]$/i,Rt=/^\d+\/\d+$/,_t=new Set(["px","full","screen"]),Et=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,qt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Mt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,At=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Lt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function z(e){return V(e)||_t.has(e)||Rt.test(e)}function G(e){return ee(e,"length",Gt)}function V(e){return!!e&&!Number.isNaN(Number(e))}function ge(e){return ee(e,"number",V)}function ae(e){return!!e&&Number.isInteger(Number(e))}function Nt(e){return e.endsWith("%")&&V(e.slice(0,-1))}function l(e){return Oe.test(e)}function $(e){return Et.test(e)}const Pt=new Set(["length","size","percentage"]);function jt(e){return ee(e,Pt,ze)}function Ut(e){return ee(e,"position",ze)}const Wt=new Set(["image","url"]);function Ot(e){return ee(e,Wt,Ht)}function zt(e){return ee(e,"",$t)}function ce(){return!0}function ee(e,t,r){const n=Oe.exec(e);return n?n[1]?typeof t=="string"?n[1]===t:t.has(n[1]):r(n[2]):!1}function Gt(e){return qt.test(e)&&!Mt.test(e)}function ze(){return!1}function $t(e){return At.test(e)}function Ht(e){return Lt.test(e)}function Dt(){const e=T("colors"),t=T("spacing"),r=T("blur"),n=T("brightness"),i=T("borderColor"),s=T("borderRadius"),a=T("borderSpacing"),c=T("borderWidth"),p=T("contrast"),w=T("grayscale"),I=T("hueRotate"),g=T("invert"),A=T("gap"),R=T("gradientColorStops"),j=T("gradientColorStopPositions"),_=T("inset"),m=T("margin"),M=T("opacity"),P=T("padding"),K=T("saturate"),D=T("scale"),U=T("sepia"),W=T("skew"),te=T("space"),ue=T("translate"),re=()=>["auto","contain","none"],oe=()=>["auto","hidden","clip","visible","scroll"],ne=()=>["auto",l,t],S=()=>[l,t],pe=()=>["",z,G],Y=()=>["auto",V,l],fe=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],X=()=>["solid","dashed","dotted","double","none"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],se=()=>["start","end","center","between","around","evenly","stretch"],F=()=>["","0",l],d=()=>["auto","avoid","all","avoid-page","page","left","right","column"],k=()=>[V,ge],b=()=>[V,l];return{cacheSize:500,separator:":",theme:{colors:[ce],spacing:[z,G],blur:["none","",$,l],brightness:k(),borderColor:[e],borderRadius:["none","","full",$,l],borderSpacing:S(),borderWidth:pe(),contrast:k(),grayscale:F(),hueRotate:b(),invert:F(),gap:S(),gradientColorStops:[e],gradientColorStopPositions:[Nt,G],inset:ne(),margin:ne(),opacity:k(),padding:S(),saturate:k(),scale:k(),sepia:F(),skew:b(),space:S(),translate:S()},classGroups:{aspect:[{aspect:["auto","square","video",l]}],container:["container"],columns:[{columns:[$]}],"break-after":[{"break-after":d()}],"break-before":[{"break-before":d()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...fe(),l]}],overflow:[{overflow:oe()}],"overflow-x":[{"overflow-x":oe()}],"overflow-y":[{"overflow-y":oe()}],overscroll:[{overscroll:re()}],"overscroll-x":[{"overscroll-x":re()}],"overscroll-y":[{"overscroll-y":re()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[_]}],"inset-x":[{"inset-x":[_]}],"inset-y":[{"inset-y":[_]}],start:[{start:[_]}],end:[{end:[_]}],top:[{top:[_]}],right:[{right:[_]}],bottom:[{bottom:[_]}],left:[{left:[_]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ae,l]}],basis:[{basis:ne()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",l]}],grow:[{grow:F()}],shrink:[{shrink:F()}],order:[{order:["first","last","none",ae,l]}],"grid-cols":[{"grid-cols":[ce]}],"col-start-end":[{col:["auto",{span:["full",ae,l]},l]}],"col-start":[{"col-start":Y()}],"col-end":[{"col-end":Y()}],"grid-rows":[{"grid-rows":[ce]}],"row-start-end":[{row:["auto",{span:[ae,l]},l]}],"row-start":[{"row-start":Y()}],"row-end":[{"row-end":Y()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",l]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",l]}],gap:[{gap:[A]}],"gap-x":[{"gap-x":[A]}],"gap-y":[{"gap-y":[A]}],"justify-content":[{justify:["normal",...se()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...se(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...se(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[P]}],px:[{px:[P]}],py:[{py:[P]}],ps:[{ps:[P]}],pe:[{pe:[P]}],pt:[{pt:[P]}],pr:[{pr:[P]}],pb:[{pb:[P]}],pl:[{pl:[P]}],m:[{m:[m]}],mx:[{mx:[m]}],my:[{my:[m]}],ms:[{ms:[m]}],me:[{me:[m]}],mt:[{mt:[m]}],mr:[{mr:[m]}],mb:[{mb:[m]}],ml:[{ml:[m]}],"space-x":[{"space-x":[te]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[te]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",l,t]}],"min-w":[{"min-w":[l,t,"min","max","fit"]}],"max-w":[{"max-w":[l,t,"none","full","min","max","fit","prose",{screen:[$]},$]}],h:[{h:[l,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[l,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[l,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[l,t,"auto","min","max","fit"]}],"font-size":[{text:["base",$,G]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ge]}],"font-family":[{font:[ce]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",l]}],"line-clamp":[{"line-clamp":["none",V,ge]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",z,l]}],"list-image":[{"list-image":["none",l]}],"list-style-type":[{list:["none","disc","decimal",l]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[M]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...X(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",z,G]}],"underline-offset":[{"underline-offset":["auto",z,l]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:S()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",l]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",l]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[M]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...fe(),Ut]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",jt]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Ot]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[j]}],"gradient-via-pos":[{via:[j]}],"gradient-to-pos":[{to:[j]}],"gradient-from":[{from:[R]}],"gradient-via":[{via:[R]}],"gradient-to":[{to:[R]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[c]}],"border-w-x":[{"border-x":[c]}],"border-w-y":[{"border-y":[c]}],"border-w-s":[{"border-s":[c]}],"border-w-e":[{"border-e":[c]}],"border-w-t":[{"border-t":[c]}],"border-w-r":[{"border-r":[c]}],"border-w-b":[{"border-b":[c]}],"border-w-l":[{"border-l":[c]}],"border-opacity":[{"border-opacity":[M]}],"border-style":[{border:[...X(),"hidden"]}],"divide-x":[{"divide-x":[c]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[c]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[M]}],"divide-style":[{divide:X()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:["",...X()]}],"outline-offset":[{"outline-offset":[z,l]}],"outline-w":[{outline:[z,G]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:pe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[M]}],"ring-offset-w":[{"ring-offset":[z,G]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",$,zt]}],"shadow-color":[{shadow:[ce]}],opacity:[{opacity:[M]}],"mix-blend":[{"mix-blend":[...he(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":he()}],filter:[{filter:["","none"]}],blur:[{blur:[r]}],brightness:[{brightness:[n]}],contrast:[{contrast:[p]}],"drop-shadow":[{"drop-shadow":["","none",$,l]}],grayscale:[{grayscale:[w]}],"hue-rotate":[{"hue-rotate":[I]}],invert:[{invert:[g]}],saturate:[{saturate:[K]}],sepia:[{sepia:[U]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[r]}],"backdrop-brightness":[{"backdrop-brightness":[n]}],"backdrop-contrast":[{"backdrop-contrast":[p]}],"backdrop-grayscale":[{"backdrop-grayscale":[w]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[I]}],"backdrop-invert":[{"backdrop-invert":[g]}],"backdrop-opacity":[{"backdrop-opacity":[M]}],"backdrop-saturate":[{"backdrop-saturate":[K]}],"backdrop-sepia":[{"backdrop-sepia":[U]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[a]}],"border-spacing-x":[{"border-spacing-x":[a]}],"border-spacing-y":[{"border-spacing-y":[a]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",l]}],duration:[{duration:b()}],ease:[{ease:["linear","in","out","in-out",l]}],delay:[{delay:b()}],animate:[{animate:["none","spin","ping","pulse","bounce",l]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[D]}],"scale-x":[{"scale-x":[D]}],"scale-y":[{"scale-y":[D]}],rotate:[{rotate:[ae,l]}],"translate-x":[{"translate-x":[ue]}],"translate-y":[{"translate-y":[ue]}],"skew-x":[{"skew-x":[W]}],"skew-y":[{"skew-y":[W]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",l]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",l]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",l]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[z,G,ge]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}}const Ft=It(Dt);function Bt(...e){return Ft(ft(e))}const Vt=()=>{const e=tt(),t=rt(),r=[{id:"session",path:"/session",icon:at,label:"对话"},{id:"history",path:"/history",icon:ct,label:"记录"},{id:"workspace",path:"/workspace",icon:lt,label:"代码"},{id:"settings",path:"/settings",icon:dt,label:"设置"}];return f.jsxs("div",{className:"flex flex-col h-screen w-full bg-gray-50 dark:bg-gray-950 overflow-hidden",children:[f.jsx("div",{className:"flex-1 overflow-hidden relative",children:f.jsx(h.Suspense,{fallback:f.jsx(Jt,{}),children:f.jsx(ot,{})})}),f.jsx("div",{className:"h-[60px] bg-white dark:bg-gray-900 border-t border-gray-200 dark:border-gray-800 flex items-center justify-around px-2 pb-safe flex-shrink-0",children:r.map(n=>{const i=t.pathname.startsWith(n.path);return f.jsxs("button",{onClick:()=>e(n.path+t.search),className:Bt("flex flex-col items-center justify-center w-16 h-full gap-1 transition-colors",i?"text-primary-600":"text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200"),children:[f.jsx(n.icon,{className:"w-6 h-6"}),f.jsx("span",{className:"text-[10px] font-medium",children:n.label})]},n.id)})})]})};function Jt(){return f.jsx("div",{className:"flex h-full items-center justify-center bg-gray-50 dark:bg-gray-950 text-xs text-gray-400 dark:text-gray-600",children:"加载中..."})}const Ge=["token","agentpilot_token"],$e="agentpilot_auth_token";function Kt(e){var t;for(const r of Ge){const n=(t=e.searchParams.get(r))==null?void 0:t.trim();if(n)return n}return null}function Yt(e){let t=!1;for(const r of Ge)e.searchParams.has(r)&&(e.searchParams.delete(r),t=!0);return t}function Xt(){const e=new URL(window.location.href),t=Kt(e);if(t&&sessionStorage.setItem($e,t),Yt(e)){const r=`${e.pathname}${e.search}${e.hash}`;window.history.replaceState(null,"",r)}}function He(){return sessionStorage.getItem($e)}function Qt(){const e=He();return e?{"X-AgentPilot-Token":e}:{}}function De(e){const t=He();if(!t)return e;const r=new URL(e,window.location.href);return r.searchParams.set("token",t),r.toString()}const Zt=3e3,er=10,Ee="agentpilot_client_id";function tr(){let e=localStorage.getItem(Ee);return e||(e=`client-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,localStorage.setItem(Ee,e)),e}class rr{constructor(t){L(this,"ws",null);L(this,"url");L(this,"handlers",new Set);L(this,"_status","disconnected");L(this,"reconnectAttempts",0);L(this,"reconnectTimer",null);L(this,"intentionalClose",!1);L(this,"statusHandlers",new Set);L(this,"requestIdCounter",0);L(this,"pendingRequests",new Map);L(this,"REQUEST_TIMEOUT",1e4);L(this,"clientId");this.url=t||this.getDefaultUrl(),this.clientId=tr()}getDefaultUrl(){return`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`}get status(){return this._status}setStatus(t){this._status=t,this.statusHandlers.forEach(r=>r(t))}onStatusChange(t){return this.statusHandlers.add(t),()=>this.statusHandlers.delete(t)}onMessage(t){return this.handlers.add(t),()=>this.handlers.delete(t)}connect(){var t,r;((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN||((r=this.ws)==null?void 0:r.readyState)===WebSocket.CONNECTING||(this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.intentionalClose=!1,this.reconnectAttempts=0,this.doConnect())}doConnect(){var t,r;if(!(((t=this.ws)==null?void 0:t.readyState)===WebSocket.OPEN||((r=this.ws)==null?void 0:r.readyState)===WebSocket.CONNECTING)){this.setStatus("connecting");try{this.ws=new WebSocket(De(this.url))}catch{this.setStatus("disconnected"),this.scheduleReconnect();return}this.ws.onopen=()=>{console.log("[WS] Connected to server"),this.reconnectAttempts=0,this.setStatus("connected")},this.ws.onmessage=n=>{try{const i=JSON.parse(n.data);if(i.requestId&&this.pendingRequests.has(i.requestId)){const s=this.pendingRequests.get(i.requestId);clearTimeout(s.timer),this.pendingRequests.delete(i.requestId),s.resolve(i)}this.handlers.forEach(s=>s(i))}catch(i){console.error("[WS] Failed to parse message:",i)}},this.ws.onclose=n=>{console.log(`[WS] Disconnected from ${this.url} (code=${n.code}, reason=${n.reason||"none"})`),this.setStatus("disconnected"),this.intentionalClose||this.scheduleReconnect()},this.ws.onerror=n=>{console.error(`[WS] Error connecting to ${this.url}:`,n)}}}scheduleReconnect(){if(!this.intentionalClose){if(this.reconnectAttempts>=er){console.log("[WS] Max reconnect attempts reached");return}this.setStatus("reconnecting"),this.reconnectAttempts++,console.log(`[WS] Reconnecting... attempt ${this.reconnectAttempts}`),this.reconnectTimer=setTimeout(()=>{this.doConnect()},Zt)}}disconnect(){this.intentionalClose=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.onopen=null,this.ws.onmessage=null,this.ws.onclose=null,this.ws.onerror=null,this.ws.close(),this.ws=null);for(const[t,r]of this.pendingRequests)clearTimeout(r.timer),r.reject(new Error("Disconnected"));this.pendingRequests.clear(),this.setStatus("disconnected")}send(t){var r;((r=this.ws)==null?void 0:r.readyState)===WebSocket.OPEN?this.ws.send(JSON.stringify(t)):console.warn("[WS] Cannot send, not connected")}waitUntilConnected(t){var r;return((r=this.ws)==null?void 0:r.readyState)===WebSocket.OPEN?Promise.resolve():(this.connect(),new Promise((n,i)=>{var c;let s=()=>{};const a=setTimeout(()=>{s(),i(new Error("Not connected"))},t);s=this.onStatusChange(()=>{var p;((p=this.ws)==null?void 0:p.readyState)===WebSocket.OPEN&&(clearTimeout(a),s(),n())}),((c=this.ws)==null?void 0:c.readyState)===WebSocket.OPEN&&(clearTimeout(a),s(),n())}))}async sendRequest(t,r=this.REQUEST_TIMEOUT){return await this.waitUntilConnected(r),new Promise((n,i)=>{var p;const s=`req_${++this.requestIdCounter}_${Date.now()}`,a={...t,requestId:s,clientId:this.clientId},c=setTimeout(()=>{this.pendingRequests.delete(s),i(new Error(`Request timeout: ${t}`))},r);this.pendingRequests.set(s,{resolve:n,reject:i,timer:c}),((p=this.ws)==null?void 0:p.readyState)===WebSocket.OPEN?this.ws.send(JSON.stringify(a)):(clearTimeout(c),this.pendingRequests.delete(s),i(new Error("Not connected")))})}sendMessage(t){this.send({type:"send_message",content:t})}sendConfirmResponse(t){this.send({type:"confirm_response",approved:t})}sendQuestionResponse(t,r){this.send({type:"question_response",answer:t,toolUseId:r})}sendInterrupt(){this.send({type:"interrupt"})}sendStartCLI(t){this.send({type:"start_cli",...t})}sendRestartCLI(){this.send({type:"restart_cli"})}sendSetConfirmMode(t){this.send({type:"set_confirm_mode",mode:t})}sendGetConfig(){this.send({type:"get_config"})}sendGetSkills(){return this.sendRequest({type:"get_skills"})}sendGetSession(t={}){return this.sendRequest({type:"get_session",...t})}sendGetHistory(){return this.sendRequest({type:"get_history"})}sendGetHistoryTask(t){return this.sendRequest({type:"get_history_task",id:t})}sendResumeHistory(t,r){return this.sendRequest({type:"resume_history",id:t,content:r})}sendEditUserMessage(t,r){return this.sendRequest({type:"edit_user_message",messageId:t,content:r})}sendDeleteHistory(t){return this.sendRequest({type:"delete_history",id:t})}sendClearHistory(){return this.sendRequest({type:"clear_history"})}sendMigrateLocalData(t,r){return this.sendRequest({type:"migrate_local_data",messages:t,historyTasks:r})}sendListDir(t){return this.sendRequest({type:"list_dir",dir:t})}sendListFiles(t){return this.sendRequest({type:"list_dir",dir:t,includeFiles:!0})}sendListWorkdir(t=""){return this.sendRequest({type:"list_workdir",path:t})}sendReadWorkdirFile(t){return this.sendRequest({type:"read_workdir_file",path:t})}sendGetWorkdirChanges(t){return this.sendRequest({type:"get_workdir_changes",path:t})}sendTrackWorkdirFile(t){return this.sendRequest({type:"track_workdir_file",path:t})}sendGenerateWorkdirCommitMessage(){return this.sendRequest({type:"generate_workdir_commit_message"},12e4)}sendCommitWorkdirChanges(t){return this.sendRequest({type:"commit_workdir_changes",message:t},3e4)}destroy(){this.disconnect(),this.handlers.clear(),this.statusHandlers.clear()}}let ke=null;function Fe(){return ke||(ke=new rr),ke}function or(){return window.location.origin}const Be=or();function H(e,t){const r=new URLSearchParams;for(const[i,s]of Object.entries(t))s!==void 0&&s!==""&&r.set(i,String(s));const n=r.toString();return n?`${e}?${n}`:e}async function N(e,t={}){const r=await fetch(`${Be}${e}`,{...t,headers:{...t.body?{"Content-Type":"application/json"}:{},...Qt(),...t.headers}}),n=await r.text(),i=n?JSON.parse(n):{};if(!r.ok)throw new Error(i.error||`HTTP ${r.status}`);return i}function Q(e,t){return N(e,{method:"POST",body:JSON.stringify(t)})}function qe(e,t=!1){return N(H("/api/dir",{dir:e,includeFiles:t}))}const Z={getConfig(){return N("/api/config")},getSkills(){return N("/api/skills")},fetchSession(e={}){return N(H("/api/session",{afterSeq:e.afterSeq,beforeSeq:e.beforeSeq,limit:e.limit}))},fetchHistory(){return N("/api/history")},fetchHistoryTask(e){return N(`/api/history/${encodeURIComponent(e)}`)},deleteHistoryTask(e){return N(`/api/history/${encodeURIComponent(e)}`,{method:"DELETE"})},clearHistory(){return N("/api/history",{method:"DELETE"})},migrateLocalData(e,t){return Q("/api/migrate-local-data",{messages:e,historyTasks:t})},listDir:qe,listFiles(e){return qe(e,!0)},listWorkdir(e=""){return N(H("/api/workdir/tree",{path:e}))},readWorkdirFile(e){return N(H("/api/workdir/file",{path:e}))},getWorkdirFileDownloadUrl(e){return De(`${Be}${H("/api/workdir/download",{path:e})}`)},getWorkdirCommits(e=50){return N(H("/api/workdir/commits",{limit:e}))},getWorkdirCommit(e){return N(H("/api/workdir/commit",{hash:e}))},getWorkdirChanges(e){return N(H("/api/workdir/changes",{path:e}))},trackWorkdirFile(e){return Q("/api/workdir/track",{path:e})},stageWorkdirChanges(e){return Q("/api/workdir/stage",{path:e})},unstageWorkdirChanges(e){return Q("/api/workdir/unstage",{path:e})},generateWorkdirCommitMessage(){return Q("/api/workdir/commit-message",{})},commitWorkdirChanges(e){return Q("/api/workdir/commit",{message:e})}};function Ve(e){return{id:String(e.id),seq:typeof e.seq=="number"?e.seq:void 0,type:e.type,content:e.content||"",time:e.time||"",status:e.status||void 0,toolName:e.toolName||void 0,toolDetails:e.toolDetails||void 0,toolUseId:e.toolUseId||void 0,toolResult:e.toolResult||void 0,permission:e.permission||void 0,question:e.question||void 0,details:e.details||void 0}}function Me(e){const t=Array.isArray(e.messages);return{id:e.id,workDir:e.workDir||e.work_dir||void 0,status:e.status,title:e.title,confirmCount:e.confirmCount||e.confirm_count||0,toolCount:e.toolCount||e.tool_count||0,duration:e.duration||void 0,startTime:e.startTime||e.start_time||0,endTime:e.endTime||e.end_time||0,canResume:!!e.canResume,messagesLoaded:t,messages:t?e.messages.map(Ve):[]}}const me={async fetchSession(e={}){const t=await Z.fetchSession(e),r=(t.messages||[]).map(Ve);return{sessionId:t.sessionId,messages:r,lastSeq:t.lastSeq||0,firstSeq:t.firstSeq||0,hasMoreBefore:!!t.hasMoreBefore,tokenUsage:t.tokenUsage||{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0}}},async fetchHistory(){return((await Z.fetchHistory()).tasks||[]).map(Me)},async fetchHistoryTask(e){const t=await Z.fetchHistoryTask(e);return t.task?Me(t.task):null},async resumeHistoryTask(e,t){const n=await Fe().sendResumeHistory(e,t);if(!n.success)throw new Error(n.error||"恢复会话记录失败")},async deleteHistoryTask(e){await Z.deleteHistoryTask(e)},async clearHistory(){await Z.clearHistory()},async migrateFromLocal(e,t){try{return(await Z.migrateLocalData(e,t)).success}catch(r){return console.error("[Storage] Migration failed:",r),!1}}};function nr(e){return e.reduce((t,r)=>{var n;return r.type!=="system"||((n=r.details)==null?void 0:n.subtype)!=="result"?t:{inputTokens:t.inputTokens+Number(r.details.inputTokens||0),outputTokens:t.outputTokens+Number(r.details.outputTokens||0),cacheReadTokens:t.cacheReadTokens+Number(r.details.cacheReadTokens||0),cacheCreationTokens:t.cacheCreationTokens+Number(r.details.cacheCreationTokens||0),costUsd:t.costUsd+Number(r.details.costUsd||0)}},{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0})}const sr=["idle","running","confirm","question","disconnected"];function be(e){return typeof e=="string"&&sr.includes(e)?e:"disconnected"}function y(e,t=""){return typeof e=="string"?e:t}const Je="agentpilot_messages",Ke="agentpilot_history",Ae=80,ir=80;function ar(){try{const e=localStorage.getItem(Je);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function cr(){try{const e=localStorage.getItem(Ke);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function lr(){localStorage.removeItem(Je),localStorage.removeItem(Ke)}const Ye=h.createContext(null);function Cr(){const e=h.useContext(Ye);if(!e)throw new Error("useSession must be used within SessionProvider");return e}class dr extends h.Component{constructor(){super(...arguments);L(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(r){return{hasError:!0,error:r}}render(){var r;return this.state.hasError?f.jsxs("div",{className:"flex flex-col items-center justify-center h-screen bg-gray-50 p-6 text-center",children:[f.jsx("div",{className:"text-red-500 text-lg font-semibold mb-2",children:"渲染错误"}),f.jsx("div",{className:"text-gray-600 text-sm mb-4",children:(r=this.state.error)==null?void 0:r.message}),f.jsx("button",{onClick:()=>this.setState({hasError:!1,error:null}),className:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm",children:"重试"})]}):this.props.children}}function ur({children:e}){const t=h.useRef(Fe()),[r,n]=h.useState("disconnected"),[i,s]=h.useState([]),[a,c]=h.useState("disconnected"),[p,w]=h.useState(null),[I,g]=h.useState({inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0}),[A,R]=h.useState(!1),[j,_]=h.useState(!1),m=h.useRef(0),M=h.useRef(!0),P=h.useRef(0),K=h.useRef(!1),D=h.useRef(!1),U=h.useCallback(d=>{const k=typeof d.id=="string"&&d.id?d.id:void 0;k||(m.current+=1);const b={...d,id:k||String(m.current),content:y(d.content),time:y(d.time)},o=parseInt(b.id,10);return Number.isNaN(o)||(m.current=Math.max(m.current,o)),s(O=>[...O,b]),b},[]),W=h.useCallback(d=>{const k=[];for(const b of d){const o=k[k.length-1];(o==null?void 0:o.type)==="ai"&&b.type==="ai"||(o==null?void 0:o.type)==="thinking"&&b.type==="thinking"?o.content+=b.content:k.push({...b})}return k},[]),te=h.useCallback(async()=>{try{const d=await me.fetchSession({limit:Ae});if(!M.current)return;if(d.messages.length>0){const k=W(d.messages);s(k),g(d.tokenUsage),R(d.hasMoreBefore);const b=Math.max(...k.map(o=>parseInt(o.id,10)||0));m.current=b}else if(K.current)R(!1);else{const k=ar(),b=cr();if(k.length>0||b.length>0){if(await me.migrateFromLocal(k,b)){lr(),K.current=!0;const O=await me.fetchSession({limit:Ae});if(M.current&&O.messages.length>0){const u=W(O.messages);s(u),g(O.tokenUsage),R(O.hasMoreBefore);const C=Math.max(...u.map(q=>parseInt(q.id,10)||0));m.current=C}}}else K.current=!0,R(!1),g({inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0})}P.current=d.lastSeq,D.current=!0}catch(d){console.error("[Session] Failed to load session from server:",d)}},[W]),ue=h.useCallback(async()=>{var k;if(j||!A)return;const d=(k=i.find(b=>typeof b.seq=="number"))==null?void 0:k.seq;if(!d){R(!1);return}_(!0);try{const b=await me.fetchSession({beforeSeq:d,limit:ir});if(!M.current)return;if(b.messages.length===0){R(!1);return}s(o=>W([...b.messages,...o])),R(b.hasMoreBefore)}catch(b){console.error("[Session] Failed to load older messages:",b)}finally{M.current&&_(!1)}},[A,j,W,i]);h.useEffect(()=>{M.current=!0;const d=t.current,k=d.onStatusChange(o=>{M.current&&(c(o),o==="disconnected"&&n("disconnected"))}),b=d.onMessage(o=>{var O;if(M.current)try{switch(o.type){case"connected":o.config&&w(o.config),n(be(o.status)),te();break;case"config":o.config&&w(o.config),n(be(o.status));break;case"status":n(be(o.status));break;case"session_reset":s([]),m.current=0,P.current=0,D.current=!0,R(!1),n("idle"),g({inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0}),o.config&&w(o.config);break;case"session_restored":{const u=W(Array.isArray(o.messages)?o.messages:[]);s(u);const C=u.length>0?Math.max(...u.map(q=>parseInt(q.id,10)||0)):0;m.current=C,P.current=typeof o.lastSeq=="number"?o.lastSeq:0,D.current=!0,R(!1),g(nr(u)),o.config&&w(o.config),n(be(o.status||"idle"));break}case"user_message":U({id:typeof o.id=="string"?o.id:void 0,seq:typeof o.seq=="number"?o.seq:void 0,type:"user",content:y(o.content),time:y(o.time)});break;case"ai_message":{const u=y(o.content),C=typeof o.id=="string"&&o.id?o.id:void 0;C||(m.current+=1);const q=C||String(m.current);s(E=>{const x=E[E.length-1];return(x==null?void 0:x.type)==="ai"?E.map((v,ie)=>ie===E.length-1?{...v,content:v.content+u}:v):[...E,{id:q,seq:typeof o.seq=="number"?o.seq:void 0,type:"ai",content:u,time:y(o.time)}]});break}case"thinking_message":{const u=y(o.content),C=typeof o.id=="string"&&o.id?o.id:void 0;C||(m.current+=1);const q=C||String(m.current);s(E=>{const x=E[E.length-1];return(x==null?void 0:x.type)==="thinking"?E.map((v,ie)=>ie===E.length-1?{...v,content:v.content+u}:v):[...E,{id:q,seq:typeof o.seq=="number"?o.seq:void 0,type:"thinking",content:u,time:y(o.time)}]});break}case"tool_call":{const u=y(o.toolUseId,void 0),C=o.status;u&&(C==="success"||C==="failed")?s(q=>{const E=q.findIndex(v=>v.toolUseId===u&&v.status==="running");if(E!==-1)return q.map((v,ie)=>ie===E?{...v,status:C,toolResult:y(o.details,void 0)}:v);const x=typeof o.id=="string"&&o.id?o.id:void 0;return x||(m.current+=1),[...q,{id:x||String(m.current),seq:typeof o.seq=="number"?o.seq:void 0,type:"tool",content:y(o.content),toolName:y(o.toolName),status:C,toolDetails:y(o.details,void 0),toolUseId:u,time:y(o.time)}]}):u&&C==="running"?s(q=>{const E=q.find(v=>v.toolUseId===u&&v.type==="tool");if(E)return!E.toolDetails&&o.details?q.map(v=>v.id===E.id?{...v,toolDetails:y(o.details,void 0)}:v):q;const x=typeof o.id=="string"&&o.id?o.id:void 0;return x||(m.current+=1),[...q,{id:x||String(m.current),seq:typeof o.seq=="number"?o.seq:void 0,type:"tool",content:y(o.content),toolName:y(o.toolName),status:C,toolDetails:y(o.details,void 0),toolUseId:u,time:y(o.time)}]}):U({id:typeof o.id=="string"?o.id:void 0,seq:typeof o.seq=="number"?o.seq:void 0,type:"tool",content:y(o.content),toolName:y(o.toolName),status:C,toolDetails:y(o.details,void 0),toolUseId:u,time:y(o.time)});break}case"confirm_request":U({id:typeof o.id=="string"?o.id:void 0,seq:typeof o.seq=="number"?o.seq:void 0,type:"confirm",content:y(o.content),time:y(o.time),status:"pending",permission:o.permission||void 0});break;case"confirm_result":s(u=>u.map(C=>C.type==="confirm"&&C.status==="pending"?{...C,status:o.approved?"approved":"rejected"}:C));break;case"ask_question":U({id:typeof o.id=="string"?o.id:void 0,seq:typeof o.seq=="number"?o.seq:void 0,type:"question",content:y(o.content),time:y(o.time),status:"pending",question:{questions:o.questions||[],toolUseId:o.toolUseId}});break;case"ask_question_result":s(u=>{var E;const C=typeof o.toolUseId=="string"?o.toolUseId:void 0;if(C)return u.map(x=>{var v;return x.type==="question"&&x.status==="pending"&&((v=x.question)==null?void 0:v.toolUseId)===C?{...x,status:"answered"}:x});const q=(E=u.map((x,v)=>({m:x,i:v})).filter(({m:x})=>x.type==="question"&&x.status==="pending").pop())==null?void 0:E.i;return u.map((x,v)=>v===q?{...x,status:"answered"}:x)});break;case"confirm_mode_changed":w(u=>u&&{...u,confirmMode:o.mode==="auto"?"auto":"key"});break;case"system":U({id:typeof o.id=="string"?o.id:void 0,seq:typeof o.seq=="number"?o.seq:void 0,type:"system",content:y(o.content),time:y(o.time),details:o.details||void 0}),((O=o.details)==null?void 0:O.subtype)==="result"&&g(u=>({inputTokens:u.inputTokens+(o.details.inputTokens||0),outputTokens:u.outputTokens+(o.details.outputTokens||0),cacheReadTokens:u.cacheReadTokens+(o.details.cacheReadTokens||0),cacheCreationTokens:u.cacheCreationTokens+(o.details.cacheCreationTokens||0),costUsd:u.costUsd+(o.details.costUsd||0)}));break;case"error":U({id:typeof o.id=="string"?o.id:void 0,seq:typeof o.seq=="number"?o.seq:void 0,type:"error",content:y(o.content),time:y(o.time)});break;case"session_data":case"history_resumed":case"user_message_edited":case"history_data":case"history_deleted":case"history_cleared":case"migration_done":break}}catch(u){console.error("[Session] Error handling message:",u,o)}});return d.connect(),()=>{M.current=!1,k(),b(),d.disconnect()}},[U,te]);const re=h.useCallback(d=>{t.current.sendMessage(d)},[]),oe=h.useCallback(d=>{t.current.sendConfirmResponse(d)},[]),ne=h.useCallback((d,k)=>{t.current.sendQuestionResponse(d,k)},[]),S=h.useCallback(()=>{t.current.sendInterrupt()},[]),pe=h.useCallback(d=>{t.current.sendStartCLI(d||{})},[]),Y=h.useCallback(()=>{s([]),m.current=0,R(!1),g({inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0}),t.current.sendRestartCLI()},[]),fe=h.useCallback(d=>{t.current.sendSetConfirmMode(d)},[]),X=h.useCallback(()=>{s([]),R(!1)},[]),he=h.useCallback(()=>{s([]),m.current=0,R(!1),g({inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,costUsd:0}),t.current.sendRestartCLI()},[]),se=h.useCallback(async(d,k)=>{const b=await t.current.sendEditUserMessage(d,k);if(!b.success)throw new Error(b.error||"编辑消息失败")},[]),F={status:r,messages:i,connectionStatus:a,cliConfig:p,tokenUsage:I,hasMoreMessagesBefore:A,isLoadingOlderMessages:j,loadOlderMessages:ue,sendMessage:re,confirmResponse:oe,questionResponse:ne,interrupt:S,startCLI:pe,restartCLI:Y,newSession:he,editUserMessage:se,setConfirmMode:fe,clearMessages:X};return f.jsx(dr,{children:f.jsx(Ye.Provider,{value:F,children:e})})}const Xe=h.createContext({theme:"dark",toggleTheme:()=>{}}),pr=({children:e})=>{const[t,r]=h.useState(()=>{const i=localStorage.getItem("theme");return i==="light"||i==="dark"?i:"dark"});h.useLayoutEffect(()=>{const i=document.documentElement;t==="dark"?i.classList.add("dark"):i.classList.remove("dark"),localStorage.setItem("theme",t)},[t]);const n=()=>{r(i=>i==="dark"?"light":"dark")};return f.jsx(Xe.Provider,{value:{theme:t,toggleTheme:n},children:e})},Tr=()=>h.useContext(Xe),fr=de.lazy(()=>we(()=>import("./Session-CQFXA2Sr.js"),__vite__mapDeps([0,1,2,3,4,5])).then(e=>({default:e.Session}))),hr=de.lazy(()=>we(()=>import("./History-BxJVDFpN.js"),__vite__mapDeps([6,1,3,4,5,7])).then(e=>({default:e.History}))),gr=de.lazy(()=>we(()=>import("./Workspace-D8kv9euM.js"),__vite__mapDeps([8,1,9,10,4,5,7])).then(e=>({default:e.Workspace}))),mr=de.lazy(()=>we(()=>import("./Settings-DYmjRmoN.js"),__vite__mapDeps([11,1,7,5,4])).then(e=>({default:e.Settings}))),br=()=>f.jsx(pr,{children:f.jsx(ur,{children:f.jsx(nt,{children:f.jsxs(st,{children:[f.jsxs(B,{path:"/",element:f.jsx(Vt,{}),children:[f.jsx(B,{index:!0,element:f.jsx(Te,{to:"/session",replace:!0})}),f.jsx(B,{path:"session",element:f.jsx(fr,{})}),f.jsx(B,{path:"history",element:f.jsx(hr,{})}),f.jsx(B,{path:"workspace",element:f.jsx(gr,{})}),f.jsx(B,{path:"settings",element:f.jsx(mr,{})})]}),f.jsx(B,{path:"*",element:f.jsx(Te,{to:"/session",replace:!0})})]})})})});let J=null,ye=!1,Le=!1;const ve=new Set;function Ce(){return typeof window<"u"&&typeof window.matchMedia=="function"}function yr(){return Ce()?window.matchMedia("(display-mode: standalone)").matches||window.matchMedia("(display-mode: fullscreen)").matches||window.navigator.standalone===!0:!1}function wr(){return Ce()?/iphone|ipad|ipod/i.test(window.navigator.userAgent):!1}function le(){ve.forEach(e=>e())}function Ne(e,t){var n;if(typeof e.addEventListener=="function")return e.addEventListener("change",t),()=>e.removeEventListener("change",t);const r=e;return(n=r.addListener)==null||n.call(r,t),()=>{var i;return(i=r.removeListener)==null?void 0:i.call(r,t)}}function Qe(){if(!Ce()||Le)return;Le=!0;const e=()=>{le()},t=n=>{n.preventDefault(),J=n,le()},r=()=>{J=null,le()};window.addEventListener("beforeinstallprompt",t),window.addEventListener("appinstalled",r),Ne(window.matchMedia("(display-mode: standalone)"),e),Ne(window.matchMedia("(display-mode: fullscreen)"),e)}function Ir(){const e=yr();return{canPromptInstall:!!J&&!e,isInstalled:e,isInstalling:ye,isIos:wr()}}function Rr(e){return Qe(),ve.add(e),()=>{ve.delete(e)}}async function _r(){if(!J||ye)return"unavailable";ye=!0,le();try{await J.prompt();const e=await J.userChoice;return J=null,e.outcome}finally{ye=!1,le()}}function kr(){"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js",{scope:"/"}).catch(e=>{console.warn("[PWA] Service worker registration failed:",e)})})}Qe();Xt();kr();it.createRoot(document.getElementById("root")).render(f.jsx(de.StrictMode,{children:f.jsx(br,{})}));export{we as _,Z as a,Ir as b,Bt as c,Rr as d,Tr as e,Fe as g,_r as p,me as s,Cr as u};
@@ -328,4 +328,4 @@ import{r as l}from"./vendor-react-DSV5aFEg.js";/**
328
328
  *
329
329
  * This source code is licensed under the ISC license.
330
330
  * See the LICENSE file in the root directory of this source tree.
331
- */const C2=a("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);export{h2 as $,g as A,u as B,S as C,M2 as D,G as E,O as F,W as G,Q as H,q as I,T as J,B as K,a2 as L,t2 as M,D as N,U as O,r2 as P,n2 as Q,c2 as R,v2 as S,z2 as T,j as U,L as V,P as W,C2 as X,$ as Y,X as Z,Z as _,V as a,_ as a0,k2 as a1,w2 as a2,x2 as a3,i2 as a4,F as a5,N as a6,p2 as a7,e2 as b,q2 as c,m2 as d,Y as e,x as f,f as g,I as h,u2 as i,o2 as j,f2 as k,w as l,C as m,z as n,R as o,s2 as p,A as q,b as r,H as s,J as t,K as u,d2 as v,y2 as w,g2 as x,l2 as y,E as z};
331
+ */const C2=a("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);export{h2 as $,g as A,u as B,S as C,Z as D,E,O as F,W as G,Q as H,M2 as I,G as J,q as K,a2 as L,t2 as M,T as N,B as O,r2 as P,D as Q,c2 as R,v2 as S,z2 as T,U,j as V,L as W,C2 as X,P as Y,$ as Z,X as _,V as a,_ as a0,k2 as a1,w2 as a2,x2 as a3,i2 as a4,F as a5,N as a6,p2 as a7,e2 as b,q2 as c,m2 as d,Y as e,x as f,f as g,I as h,u2 as i,o2 as j,f2 as k,w as l,C as m,z as n,R as o,s2 as p,A as q,b as r,H as s,n2 as t,J as u,K as v,d2 as w,y2 as x,g2 as y,l2 as z};
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
6
- <meta name="theme-color" content="#7c3aed" />
6
+ <meta name="theme-color" content="#030712" />
7
7
  <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#030712" />
8
8
  <meta name="mobile-web-app-capable" content="yes" />
9
9
  <meta name="apple-mobile-web-app-capable" content="yes" />
@@ -23,10 +23,10 @@
23
23
  }
24
24
  })();
25
25
  </script>
26
- <script type="module" crossorigin src="/assets/index-C89UCwGk.js"></script>
26
+ <script type="module" crossorigin src="/assets/index-DOgH1Kf3.js"></script>
27
27
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-DSV5aFEg.js">
28
- <link rel="modulepreload" crossorigin href="/assets/vendor-icons-S_ObYVVf.js">
29
- <link rel="stylesheet" crossorigin href="/assets/index-Bk4_acsd.css">
28
+ <link rel="modulepreload" crossorigin href="/assets/vendor-icons-CNN4EKVi.js">
29
+ <link rel="stylesheet" crossorigin href="/assets/index-BXT2BylN.css">
30
30
  </head>
31
31
  <body>
32
32
  <div id="root"></div>
@@ -8,7 +8,7 @@
8
8
  "scope": "/",
9
9
  "display": "standalone",
10
10
  "orientation": "portrait",
11
- "theme_color": "#7c3aed",
11
+ "theme_color": "#030712",
12
12
  "background_color": "#030712",
13
13
  "icons": [
14
14
  {
@@ -485,6 +485,30 @@ function isLikelyBinary(buffer) {
485
485
  function getPreviewImageMime(filename) {
486
486
  return PREVIEW_IMAGE_MIME_BY_EXTENSION[path.extname(filename).toLowerCase()];
487
487
  }
488
+ function sendWorkspaceFileDownload(req, res, rawPath) {
489
+ const { target } = resolveWorkspacePath(rawPath);
490
+ const stat = fs.statSync(target);
491
+ if (!stat.isFile()) {
492
+ throw new Error('目标不是文件');
493
+ }
494
+ if (res.writableEnded)
495
+ return;
496
+ setCorsHeaders(res);
497
+ res.writeHead(200, {
498
+ 'Content-Type': getPreviewImageMime(target) || getStaticContentType(target),
499
+ 'Content-Disposition': encodeContentDispositionFilename(path.basename(target)),
500
+ 'Content-Length': String(stat.size),
501
+ 'Last-Modified': stat.mtime.toUTCString(),
502
+ 'Cache-Control': 'no-store',
503
+ });
504
+ if (req.method === 'HEAD') {
505
+ res.end();
506
+ return;
507
+ }
508
+ fs.createReadStream(target)
509
+ .on('error', (err) => res.destroy(err))
510
+ .pipe(res);
511
+ }
488
512
  function listWorkspaceDir(rawPath) {
489
513
  const { root, target } = resolveWorkspacePath(rawPath);
490
514
  const realRoot = fs.realpathSync(root);
@@ -676,6 +700,145 @@ function truncateText(text, maxBytes) {
676
700
  truncated: true,
677
701
  };
678
702
  }
703
+ function parseCommitLimit(rawLimit) {
704
+ const value = typeof rawLimit === 'string' ? Number(rawLimit) : Number(rawLimit || 0);
705
+ if (!Number.isFinite(value) || value <= 0)
706
+ return 50;
707
+ return Math.min(100, Math.max(1, Math.floor(value)));
708
+ }
709
+ function normalizeCommitHash(rawHash) {
710
+ const hash = typeof rawHash === 'string' ? rawHash.trim() : '';
711
+ if (!/^[0-9a-fA-F]{4,40}$/.test(hash)) {
712
+ throw new Error('无效的 commit hash');
713
+ }
714
+ return hash;
715
+ }
716
+ function describeCommitFileStatus(status) {
717
+ const code = status[0] || '';
718
+ if (code === 'A')
719
+ return '新增';
720
+ if (code === 'D')
721
+ return '删除';
722
+ if (code === 'R')
723
+ return '重命名';
724
+ if (code === 'C')
725
+ return '复制';
726
+ if (code === 'M')
727
+ return '修改';
728
+ if (code === 'T')
729
+ return '类型';
730
+ if (code === 'U')
731
+ return '冲突';
732
+ return '变更';
733
+ }
734
+ function parseCommitFileList(output) {
735
+ return output.split('\n').map(line => {
736
+ if (!line.trim())
737
+ return null;
738
+ const parts = line.split('\t');
739
+ const status = parts[0] || '';
740
+ const isMoved = status.startsWith('R') || status.startsWith('C');
741
+ const oldPath = isMoved ? unquoteGitPath(parts[1] || '') : undefined;
742
+ const filePath = unquoteGitPath((isMoved ? parts[2] : parts[1]) || parts[1] || '');
743
+ if (!filePath)
744
+ return null;
745
+ return {
746
+ path: filePath,
747
+ name: path.basename(filePath),
748
+ status,
749
+ label: describeCommitFileStatus(status),
750
+ oldPath,
751
+ };
752
+ }).filter((item) => item !== null);
753
+ }
754
+ function getWorkspaceCommits(rawLimit) {
755
+ resolveWorkspacePath('', true);
756
+ try {
757
+ runGit(['rev-parse', '--is-inside-work-tree']);
758
+ }
759
+ catch {
760
+ return {
761
+ workDir: path.resolve(getCurrentWorkDir()),
762
+ isGitRepo: false,
763
+ branch: '',
764
+ commits: [],
765
+ };
766
+ }
767
+ const limit = parseCommitLimit(rawLimit);
768
+ const branch = runGit(['rev-parse', '--abbrev-ref', 'HEAD'], [0, 128]).trim();
769
+ const output = runGit([
770
+ 'log',
771
+ `-${limit}`,
772
+ '--date=iso-strict',
773
+ '--pretty=format:%H%x1f%h%x1f%an%x1f%ae%x1f%ad%x1f%s%x1e',
774
+ ], [0, 128]);
775
+ const commits = output.split('\x1e').map(record => {
776
+ const fields = record.trim().split('\x1f');
777
+ if (fields.length < 6 || !fields[0])
778
+ return null;
779
+ return {
780
+ hash: fields[0],
781
+ shortHash: fields[1],
782
+ authorName: fields[2],
783
+ authorEmail: fields[3],
784
+ date: fields[4],
785
+ subject: fields.slice(5).join('\x1f'),
786
+ };
787
+ }).filter((item) => item !== null);
788
+ return {
789
+ workDir: path.resolve(getCurrentWorkDir()),
790
+ isGitRepo: true,
791
+ branch,
792
+ commits,
793
+ };
794
+ }
795
+ function getWorkspaceCommitDetail(rawHash) {
796
+ ensureWorkspaceGitRepo();
797
+ const hash = normalizeCommitHash(rawHash);
798
+ const metadata = runGit([
799
+ 'show',
800
+ '--quiet',
801
+ '--date=iso-strict',
802
+ '--pretty=format:%H%x1f%h%x1f%an%x1f%ae%x1f%ad%x1f%s%x1f%b',
803
+ hash,
804
+ ]);
805
+ const fields = metadata.split('\x1f');
806
+ if (fields.length < 6 || !fields[0]) {
807
+ throw new Error('commit 不存在');
808
+ }
809
+ const files = parseCommitFileList(runGit([
810
+ 'show',
811
+ '--first-parent',
812
+ '--format=',
813
+ '--name-status',
814
+ '--find-renames',
815
+ '--find-copies',
816
+ hash,
817
+ ]));
818
+ const diffResult = truncateText(runGit([
819
+ 'show',
820
+ '--first-parent',
821
+ '--format=',
822
+ '--find-renames',
823
+ '--find-copies',
824
+ '--patch',
825
+ hash,
826
+ ]), MAX_DIFF_BYTES);
827
+ return {
828
+ workDir: path.resolve(getCurrentWorkDir()),
829
+ isGitRepo: true,
830
+ hash: fields[0],
831
+ shortHash: fields[1],
832
+ authorName: fields[2],
833
+ authorEmail: fields[3],
834
+ date: fields[4],
835
+ subject: fields[5],
836
+ body: fields.slice(6).join('\x1f').trim(),
837
+ files,
838
+ diff: diffResult.text,
839
+ truncated: diffResult.truncated,
840
+ };
841
+ }
679
842
  function getWorkspaceChanges(rawPath) {
680
843
  resolveWorkspacePath('', true);
681
844
  try {
@@ -899,8 +1062,9 @@ function commitWorkspaceChanges(rawMessage) {
899
1062
  }
900
1063
  function setCorsHeaders(res) {
901
1064
  res.setHeader('Access-Control-Allow-Origin', '*');
902
- res.setHeader('Access-Control-Allow-Methods', 'GET,POST,DELETE,OPTIONS');
1065
+ res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,POST,DELETE,OPTIONS');
903
1066
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-AgentPilot-Token');
1067
+ res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Length, Content-Type');
904
1068
  }
905
1069
  function getHeaderValue(value) {
906
1070
  if (Array.isArray(value))
@@ -991,6 +1155,10 @@ function sendText(res, status, text) {
991
1155
  res.writeHead(status, { 'Content-Type': 'text/plain; charset=utf-8' });
992
1156
  res.end(text);
993
1157
  }
1158
+ function encodeContentDispositionFilename(filename) {
1159
+ const fallback = filename.replace(/[^\x20-\x7E]+|[\r\n"\\]/g, '_') || 'download';
1160
+ return `attachment; filename="${fallback}"; filename*=UTF-8''${encodeURIComponent(filename)}`;
1161
+ }
994
1162
  const STATIC_MIME_TYPES = {
995
1163
  '.css': 'text/css; charset=utf-8',
996
1164
  '.html': 'text/html; charset=utf-8',
@@ -1265,6 +1433,18 @@ async function handleHttpRequest(req, res) {
1265
1433
  sendJson(res, 200, listWorkspaceDir(url.searchParams.get('path') || ''));
1266
1434
  return;
1267
1435
  }
1436
+ if ((req.method === 'GET' || req.method === 'HEAD') && pathname === '/api/workdir/download') {
1437
+ sendWorkspaceFileDownload(req, res, url.searchParams.get('path') || '');
1438
+ return;
1439
+ }
1440
+ if (req.method === 'GET' && pathname === '/api/workdir/commits') {
1441
+ sendJson(res, 200, getWorkspaceCommits(url.searchParams.get('limit') || undefined));
1442
+ return;
1443
+ }
1444
+ if (req.method === 'GET' && pathname === '/api/workdir/commit') {
1445
+ sendJson(res, 200, getWorkspaceCommitDetail(url.searchParams.get('hash') || ''));
1446
+ return;
1447
+ }
1268
1448
  if (req.method === 'GET' && pathname === '/api/workdir/file') {
1269
1449
  sendJson(res, 200, readWorkspaceFile(url.searchParams.get('path') || ''));
1270
1450
  return;
@@ -2033,10 +2213,17 @@ function printMacSleepHint() {
2033
2213
  }
2034
2214
  else {
2035
2215
  console.log(` ${colorize('手机长时间遥控任务前,建议先开启 Mac 防休眠,避免息屏后任务中断。', terminalStyle.yellow)}`);
2036
- console.log(' System Settings > Battery > Options >');
2037
- console.log(' 开启“使用电源适配器供电且显示器关闭时,防止自动进入睡眠”。');
2038
2216
  }
2039
2217
  console.log('');
2218
+ console.log(' 这个机制主要防止“空闲后自动睡眠”。合盖、低电量、系统强制睡眠或断电仍可能中断任务;');
2219
+ console.log(' 如果要离开电脑、从手机继续遥控长任务,建议接入电源,并按需开启 macOS 的防休眠选项:');
2220
+ console.log('');
2221
+ console.log(' 1. 打开 `系统设置` -> `电池` -> `选项...`。');
2222
+ console.log(' 2. 开启“使用电源适配器供电且显示器关闭时,防止自动进入睡眠”。');
2223
+ console.log(' 3. 点击“完成”。');
2224
+ console.log('');
2225
+ console.log(' 这样电脑接入电源且显示器关闭后,AgentPilot 后端和底层 CLI 更不容易被系统睡眠中断。');
2226
+ console.log('');
2040
2227
  }
2041
2228
  function printStartupInfo() {
2042
2229
  if (!IS_NPX_ENTRY) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cli-link",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "cli-link": "bin/agentpilot.js"