@seqyuan/annovibe 0.8.133 → 0.8.135
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +12 -12
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/runtime/route.js +1 -1
- package/.next/server/app/api/file-tree/write/route.js +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/page.js +17 -17
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/session-stream/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/session-stream.html +1 -1
- package/.next/server/app/smoke/session-stream.rsc +3 -3
- package/.next/server/app/smoke/session-stream.segments/_full.segment.rsc +3 -3
- package/.next/server/app/smoke/session-stream.segments/_head.segment.rsc +1 -1
- package/.next/server/app/smoke/session-stream.segments/_index.segment.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/smoke/session-stream/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/smoke/session-stream.segment.rsc +1 -1
- package/.next/server/app/smoke/session-stream.segments/smoke.segment.rsc +1 -1
- package/.next/server/app/smoke.html +2 -2
- package/.next/server/app/smoke.rsc +3 -3
- package/.next/server/app/smoke.segments/_full.segment.rsc +3 -3
- package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_index.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +12 -12
- package/.next/server/chunks/4584.js +1 -1
- package/.next/server/chunks/6429.js +4 -4
- package/.next/server/chunks/9230.js +5 -5
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{4456-91f92907e8ef1f89.js → 4456-646debea1b5bbec7.js} +3 -3
- package/.next/static/chunks/9544-46c74a307e919fcb.js +22 -0
- package/.next/static/chunks/app/page-765bc8a2e911eb4c.js +44 -0
- package/.next/static/css/{fdfd4d4bcfae3c6a.css → 4a3f6b9aa8eed19f.css} +1 -1
- package/bin/annovibe-im-gateway.js +0 -4
- package/bin/pi-web.js +0 -12
- package/package.json +1 -1
- package/.next/static/chunks/9544-5e2696923ae4f6b5.js +0 -22
- package/.next/static/chunks/app/page-130d152615d29de4.js +0 -44
- /package/.next/static/{4BRGyxt0Mi1_xd_lixFUx → WmuL2h-UefYxq-xz32JzM}/_buildManifest.js +0 -0
- /package/.next/static/{4BRGyxt0Mi1_xd_lixFUx → WmuL2h-UefYxq-xz32JzM}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-black:#000;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:var(--border);--color-text-muted:var(--text-muted)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-full{top:100%}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-full{width:100%;height:100%}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-\[46px\]{height:46px}.h-\[720px\]{height:720px}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing) * 32)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-\[200px\]{min-height:200px}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-\[720px\]{width:720px}.w-full{width:100%}.max-w-\[820px\]{max-width:820px}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.origin-center{transform-origin:50%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[drop-ripple_2\.4s_ease-out_infinite_backwards\]{animation:drop-ripple 2.4s ease-out infinite backwards}.animate-\[drop-zone-in_0\.15s_ease_both\]{animation:drop-zone-in .15s both}.animate-\[pulse_1\.5s_infinite\]{animation:pulse 1.5s infinite}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[7px\]{border-radius:7px}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[rgba\(37\,99\,235\,0\.5\)\]{border-color:#2563eb80}.border-\[rgba\(248\,113\,113\,0\.35\)\]{border-color:#f8717159}.border-border{border-color:var(--color-border)}.border-current{border-color:currentColor}.bg-\[rgba\(37\,99\,235\,0\.06\)\]{background-color:#2563eb0f}.bg-\[rgba\(248\,113\,113\,0\.07\)\]{background-color:#f8717112}.bg-\[var\(--sdm-tbg\)\]{background-color:var(--sdm-tbg)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:0}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--sdm-c\,inherit\)\]{color:var(--sdm-c,inherit)}.text-red-400{color:var(--color-red-400)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-text-muted{color:var(--color-text-muted)}.text-transparent{color:#0000}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.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,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-\[0_6px_18px_rgba\(37\,99\,235\,0\.18\)\]{--tw-drop-shadow-size:drop-shadow(0 6px 18px var(--tw-drop-shadow-color,#2563eb2e));--tw-drop-shadow:var(--tw-drop-shadow-size)}.drop-shadow-\[0_6px_18px_rgba\(37\,99\,235\,0\.18\)\],.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-\[1px\]{--tw-backdrop-blur:blur(1px)}.backdrop-blur-\[1px\],.backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[counter-increment\:line_0\]{counter-increment:line 0}.\[counter-reset\:line\]{counter-reset:line}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.before\:mr-4:before{content:var(--tw-content);margin-right:calc(var(--spacing) * 4)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:w-6:before{content:var(--tw-content);width:calc(var(--spacing) * 6)}.before\:text-right:before{content:var(--tw-content);text-align:right}.before\:font-mono:before{content:var(--tw-content);font-family:var(--font-mono)}.before\:text-\[13px\]:before{content:var(--tw-content);font-size:13px}.before\:content-\[counter\(line\)\]:before{--tw-content:counter(line);content:var(--tw-content)}.before\:select-none:before{content:var(--tw-content);-webkit-user-select:none;user-select:none}.before\:\[counter-increment\:line\]:before{content:var(--tw-content);counter-increment:line}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@supports ((-webkit-backdrop-filter:var(--tw )) or (backdrop-filter:var(--tw ))){.supports-\[backdrop-filter\]\:backdrop-blur{--tw-backdrop-blur:blur(8px)}.supports-\[backdrop-filter\]\:backdrop-blur,.supports-\[backdrop-filter\]\:backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.supports-\[backdrop-filter\]\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}}@media (prefers-color-scheme:dark){.dark\:bg-\[var\(--shiki-dark-bg\,var\(--sdm-tbg\)\)\]{background-color:var(--shiki-dark-bg,var(--sdm-tbg))}.dark\:\!text-\[var\(--shiki-dark\)\]{color:var(--shiki-dark)!important}.dark\:text-\[var\(--shiki-dark\,var\(--sdm-c\,inherit\)\)\]{color:var(--shiki-dark,var(--sdm-c,inherit))}}.\[\&_svg\]\:h-auto svg{height:auto}.\[\&_svg\]\:w-auto svg{width:auto}.\[\&_thead\]\:sticky thead{position:sticky}.\[\&_thead\]\:top-0 thead{top:0}.\[\&_thead\]\:z-10 thead{z-index:10}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&\>\*\:last-child\]\:after\:inline>:last-child:after{content:var(--tw-content);display:inline}.\[\&\>\*\:last-child\]\:after\:align-baseline>:last-child:after{content:var(--tw-content);vertical-align:baseline}.\[\&\>\*\:last-child\]\:after\:content-\[var\(--streamdown-caret\)\]>:last-child:after{--tw-content:var(--streamdown-caret);content:var(--tw-content)}.\[\&\>p\]\:inline>p{display:inline}li .\[li_\&\]\:pl-6{padding-left:calc(var(--spacing) * 6)}}:root{--bg:#fff;--bg-panel:#f5f5f5;--bg-hover:#eee;--bg-selected:#e8e8e8;--text:#1a1a1a;--text-muted:#6b7280;--text-dim:#9ca3af;--accent:#2563eb;--accent-hover:#1d4ed8;--user-bg:#eff6ff;--assistant-bg:#fff;--tool-bg:#f9fafb;--bg-subtle:#00000008;--background:var(--bg);--foreground:var(--text);--card:var(--bg-panel);--card-foreground:var(--text);--muted:var(--bg-hover);--muted-foreground:var(--text-muted);--border:#e0e0e0;--input:var(--border);--primary:var(--accent);--primary-foreground:#fff;--radius:.375rem}html.dark{--bg:#1a1a1a;--bg-panel:#242424;--bg-hover:#2e2e2e;--bg-selected:#383838;--border:#3a3a3a;--text:#e8e8e8;--text-muted:#9ca3af;--text-dim:#6b7280;--accent:#60a5fa;--accent-hover:#93c5fd;--user-bg:#1e293b;--assistant-bg:#1a1a1a;--tool-bg:#1f2937;--bg-subtle:#ffffff0a;--background:var(--bg);--foreground:var(--text);--card:var(--bg-panel);--card-foreground:var(--text);--muted:var(--bg-hover);--muted-foreground:var(--text-muted);--input:var(--border);--primary:var(--accent);--primary-foreground:#0f172a}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}*{box-sizing:border-box}body,html{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}body{height:100dvh}.resize-handle{background:0 0}.resize-handle:before{content:"";position:absolute;inset:0}.resize-handle-line{background:0 0;width:1px;height:100%;transition:background-color .15s}.resize-handle.resize-handle-dragging .resize-handle-line,.resize-handle:hover .resize-handle-line{background:var(--accent)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}:root{--font-mono:var(--font-noto-mono),"JetBrains Mono","Fira Code","Consolas",ui-monospace,"PingFang SC","Microsoft YaHei",monospace}code,pre{font-family:var(--font-mono)}.markdown-body{color:var(--text);word-break:break-word;font-size:14px;line-height:1.7}.markdown-body p{margin:0 0 8px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{color:var(--text);margin:10px 0 4px;font-weight:600}.markdown-body h1{font-size:1.15em}.markdown-body h2{font-size:1.05em}.markdown-body h3{font-size:.95em}.markdown-body ol,.markdown-body ul{margin:4px 0 8px;padding-left:20px}.markdown-body li{margin:2px 0}.markdown-body a{color:var(--accent);text-decoration:underline}.markdown-body blockquote{border-left:3px solid var(--border);color:var(--text-muted);margin:4px 0;padding:2px 10px}.markdown-body table{border-collapse:collapse;width:100%;margin:8px 0;font-size:13px}.markdown-body td,.markdown-body th{border:1px solid var(--border);text-align:left;padding:5px 10px}.markdown-body th{background:var(--bg-panel);font-weight:600}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:10px 0}.mermaid-diagram{border:1px solid var(--border);background:var(--bg-panel);border-radius:6px;margin:12px 0;padding:12px;overflow-x:auto}.mermaid-diagram-canvas{min-width:min-content}.mermaid-diagram svg{max-width:100%;height:auto;margin:0 auto}.mermaid-diagram-error-title,.mermaid-diagram-loading{color:var(--text-muted);font-size:12px}.mermaid-diagram-error{border-color:#f8717173}.mermaid-diagram-error-message{color:#f87171;margin-top:4px;font-size:12px}.mermaid-diagram-error pre{background:var(--bg);color:var(--text-muted);border-radius:4px;margin:8px 0 0;padding:8px;overflow-x:auto}.widget-shimmer{background:linear-gradient(90deg,#0000,#8080801f 50%,#0000) 0 0/200% 100%;animation:widget-shimmer 1.5s ease-in-out infinite}@keyframes widget-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes text-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes surface-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.markdown-file-preview{min-height:100%}.markdown-file-preview h1,.markdown-file-preview h2,.markdown-file-preview h3,.markdown-file-preview h4,.markdown-file-preview h5,.markdown-file-preview h6{letter-spacing:0;line-height:1.25}.markdown-file-preview h1{border-bottom:1px solid var(--border);margin:0 0 18px;padding-bottom:10px;font-size:1.85em}.markdown-file-preview h2{border-bottom:1px solid var(--border);margin:28px 0 12px;padding-bottom:6px;font-size:1.42em}@supports (color:color-mix(in lab,red,red)){.markdown-file-preview h2{border-bottom:1px solid color-mix(in srgb,var(--border) 72%,transparent)}}.markdown-file-preview h3{margin:22px 0 10px;font-size:1.18em}.markdown-file-preview h4,.markdown-file-preview h5,.markdown-file-preview h6{margin:18px 0 8px}.markdown-file-preview p{margin:0 0 13px}.markdown-file-preview ol,.markdown-file-preview ul{margin:6px 0 14px}.markdown-file-preview li{margin:4px 0}.markdown-file-preview blockquote{background:var(--bg-panel);border-left-color:var(--accent);border-radius:0 6px 6px 0;margin:12px 0 16px;padding:8px 14px}.markdown-file-preview table{border-spacing:0;width:max-content;max-width:100%;display:block;overflow-x:auto}.markdown-file-preview td,.markdown-file-preview th{vertical-align:top;padding:7px 11px}.markdown-file-preview img{max-width:100%;height:auto;margin:14px auto;display:block}.markdown-file-preview img,.markdown-file-preview pre{border:1px solid var(--border);background:var(--bg-panel);border-radius:6px}.markdown-file-preview pre{font-family:var(--font-mono);margin:12px 0;padding:12px 16px;font-size:13px;overflow-x:auto}.markdown-file-preview code{font-family:var(--font-mono);background:var(--bg-panel);border-radius:3px;padding:1px 5px;font-size:.9em}.markdown-file-preview pre code{background:0 0;padding:0}.markdown-file-preview .mermaid-diagram{margin:16px 0}.markdown-body span.linenumber,span.linenumber{color:var(--text-dim)!important;font-style:normal!important}@keyframes drop-zone-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes drop-icon-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes drop-ring-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes drop-ripple{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(1)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes saved-pop{0%{transform:scale(1);box-shadow:0 0 #4ade808c}40%{transform:scale(1.08);box-shadow:0 0 0 6px #4ade8040}to{transform:scale(1);box-shadow:0 0 #4ade8000}}@keyframes saved-check-draw{0%{stroke-dashoffset:18px;opacity:0}to{stroke-dashoffset:0;opacity:1}}.settings-dialog-backdrop{z-index:1000;background:#00000061;justify-content:center;align-items:center;padding:22px;display:flex;position:fixed;inset:0}.settings-dialog-shell{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;width:min(1120px,100%);height:min(82vh,860px);min-height:560px;display:flex;overflow:hidden;box-shadow:0 8px 32px #00000038}.settings-dialog-header{border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;height:50px;padding:0 14px 0 16px;display:flex}.settings-dialog-body{flex:1;min-height:0;display:flex;overflow:hidden}.settings-dialog-tabs{border-right:1px solid var(--border);background:var(--bg-panel);flex-shrink:0;width:190px;padding:8px;overflow-y:auto}.settings-dialog-tab{text-align:left;border:none;border-radius:7px;align-items:center;gap:9px;width:100%;margin:0 0 4px;padding:9px 10px;transition:background .12s,color .12s;display:flex}.settings-dialog-panel{background:var(--bg);flex:1;min-width:0;min-height:0;overflow:hidden}@media (min-width:641px){.sidebar-overlay-backdrop{display:none!important}.sidebar-container{transition:width .2s,min-width .2s;position:relative;overflow:hidden}.sidebar-container.sidebar-closed{border-right:none!important;width:0!important;min-width:0!important}.sidebar-container>*{width:100%;min-width:260px}.right-panel-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.right-panel-back-button{display:none!important}.right-panel-container.right-panel-closed{border-left:none!important;width:0!important;min-width:0!important;display:none!important}}@media (max-width:640px){.app-topbar{flex-wrap:wrap;align-content:center;min-height:76px;align-items:center!important;gap:6px!important;height:auto!important;padding:6px 8px!important}.topbar-sidebar-toggle{order:1}.topbar-title-area{order:2;min-width:0;flex:1 1 0!important}.topbar-session-title{max-width:none!important}.topbar-project-crumb,.topbar-rename-button{display:none!important}.topbar-icon-button{order:3;width:30px!important;height:28px!important}.topbar-plot-button,.topbar-update-button{order:3}.topbar-right-panel-toggle{display:flex!important}.topbar-chat-tools{scrollbar-width:none;-webkit-overflow-scrolling:touch;order:4;min-width:0;overflow:auto hidden;flex:0 auto!important}.topbar-chat-tools::-webkit-scrollbar{display:none}.topbar-branches-control,.topbar-plot-button,.topbar-system-button{flex:none}.topbar-branches-button{justify-content:center;width:30px;gap:0!important;padding:0!important}.topbar-branches-icon{align-items:center;display:flex}.topbar-branches-label{display:none!important}.topbar-session-stats{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1 1 0;order:4;min-width:0;max-width:none;overflow-x:auto}.topbar-plot-button,.topbar-system-button{justify-content:center;width:30px;gap:0!important;padding:0!important}.topbar-plot-label,.topbar-plot-memory,.topbar-system-label{display:none!important}.topbar-session-stats::-webkit-scrollbar{display:none}.chat-input-toolbar{flex-wrap:wrap;align-items:stretch!important;gap:4px 6px!important}.chat-input-toolbar-left,.chat-input-toolbar-right{min-width:0;overflow:visible}.chat-input-toolbar-left{flex:100%!important}.chat-input-toolbar-right{flex:100%!important;margin-left:0!important}.chat-input-toolbar-left>*,.chat-input-toolbar-right>*{flex-shrink:0}.chat-input-toolbar-spacer{display:none!important}.settings-dialog-backdrop{justify-content:stretch;align-items:stretch;padding:0}.settings-dialog-shell{border:none;border-radius:0;width:100%;height:100dvh;min-height:0}.settings-dialog-body{flex-direction:column}.settings-dialog-tabs{border-right:none;border-bottom:1px solid var(--border);gap:6px;width:100%;padding:7px;display:flex;overflow:auto hidden}.settings-dialog-tab{flex:0 0 132px;width:132px;margin:0;padding:8px}.settings-dialog-panel{flex:1}.chat-stats-center,.resize-handle{display:none!important}.sidebar-container{max-width:85vw;transition:transform .25s,box-shadow .25s;top:0;bottom:0;left:0;width:min(280px,85vw)!important;min-width:0!important;position:fixed!important}.sidebar-container.sidebar-open{transform:translate(0);box-shadow:4px 0 20px #00000026}.sidebar-container.sidebar-closed{box-shadow:none;pointer-events:none;transform:translate(-100%)}.right-panel-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.right-panel-back-button{display:flex!important}.right-panel-container.right-panel-open{width:100%!important;min-width:0!important}.right-panel-container.right-panel-closed{border-left:none!important;width:0!important;min-width:0!important;display:none!important}}.docx-preview-container .docx-preview{color:#333;padding:40px 48px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.docx-preview-container .docx-preview h1,.docx-preview-container .docx-preview h2,.docx-preview-container .docx-preview h3{color:#1a1a1a;margin-top:1em;margin-bottom:.5em}.docx-preview-container .docx-preview p{margin-bottom:.5em}.docx-preview-container .docx-preview table{border-collapse:collapse;width:100%;margin:8px 0}.docx-preview-container .docx-preview td,.docx-preview-container .docx-preview th{text-align:left;border:1px solid #ddd;padding:6px 10px}.docx-preview-container .docx-preview img{max-width:100%;height:auto}.xlsx-preview table{border-collapse:collapse;font-size:12px;font-family:var(--font-mono);background:#fff}.xlsx-preview td,.xlsx-preview th{border:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;max-width:300px;padding:4px 8px;overflow:hidden}.xlsx-preview th{background:var(--bg-panel);color:var(--text);font-weight:600;position:sticky;top:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
|
|
1
|
+
/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-black:#000;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-border:var(--border);--color-text-muted:var(--text-muted)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-full{top:100%}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-full{width:100%;height:100%}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-\[46px\]{height:46px}.h-\[720px\]{height:720px}.h-full{height:100%}.max-h-32{max-height:calc(var(--spacing) * 32)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-\[200px\]{min-height:200px}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-\[720px\]{width:720px}.w-full{width:100%}.max-w-\[820px\]{max-width:820px}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.origin-center{transform-origin:50%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[drop-ripple_2\.4s_ease-out_infinite_backwards\]{animation:drop-ripple 2.4s ease-out infinite backwards}.animate-\[drop-zone-in_0\.15s_ease_both\]{animation:drop-zone-in .15s both}.animate-\[pulse_1\.5s_infinite\]{animation:pulse 1.5s infinite}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[7px\]{border-radius:7px}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[rgba\(37\,99\,235\,0\.5\)\]{border-color:#2563eb80}.border-\[rgba\(248\,113\,113\,0\.35\)\]{border-color:#f8717159}.border-border{border-color:var(--color-border)}.border-current{border-color:currentColor}.bg-\[rgba\(37\,99\,235\,0\.06\)\]{background-color:#2563eb0f}.bg-\[rgba\(248\,113\,113\,0\.07\)\]{background-color:#f8717112}.bg-\[var\(--sdm-tbg\)\]{background-color:var(--sdm-tbg)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:0}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--sdm-c\,inherit\)\]{color:var(--sdm-c,inherit)}.text-red-400{color:var(--color-red-400)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-text-muted{color:var(--color-text-muted)}.text-transparent{color:#0000}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.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,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.drop-shadow-\[0_6px_18px_rgba\(37\,99\,235\,0\.18\)\]{--tw-drop-shadow-size:drop-shadow(0 6px 18px var(--tw-drop-shadow-color,#2563eb2e));--tw-drop-shadow:var(--tw-drop-shadow-size)}.drop-shadow-\[0_6px_18px_rgba\(37\,99\,235\,0\.18\)\],.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-\[1px\]{--tw-backdrop-blur:blur(1px)}.backdrop-blur-\[1px\],.backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[counter-increment\:line_0\]{counter-increment:line 0}.\[counter-reset\:line\]{counter-reset:line}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.before\:mr-4:before{content:var(--tw-content);margin-right:calc(var(--spacing) * 4)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:w-6:before{content:var(--tw-content);width:calc(var(--spacing) * 6)}.before\:text-right:before{content:var(--tw-content);text-align:right}.before\:font-mono:before{content:var(--tw-content);font-family:var(--font-mono)}.before\:text-\[13px\]:before{content:var(--tw-content);font-size:13px}.before\:content-\[counter\(line\)\]:before{--tw-content:counter(line);content:var(--tw-content)}.before\:select-none:before{content:var(--tw-content);-webkit-user-select:none;user-select:none}.before\:\[counter-increment\:line\]:before{content:var(--tw-content);counter-increment:line}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@supports ((-webkit-backdrop-filter:var(--tw )) or (backdrop-filter:var(--tw ))){.supports-\[backdrop-filter\]\:backdrop-blur{--tw-backdrop-blur:blur(8px)}.supports-\[backdrop-filter\]\:backdrop-blur,.supports-\[backdrop-filter\]\:backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.supports-\[backdrop-filter\]\:backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}}@media (prefers-color-scheme:dark){.dark\:bg-\[var\(--shiki-dark-bg\,var\(--sdm-tbg\)\)\]{background-color:var(--shiki-dark-bg,var(--sdm-tbg))}.dark\:\!text-\[var\(--shiki-dark\)\]{color:var(--shiki-dark)!important}.dark\:text-\[var\(--shiki-dark\,var\(--sdm-c\,inherit\)\)\]{color:var(--shiki-dark,var(--sdm-c,inherit))}}.\[\&_svg\]\:h-auto svg{height:auto}.\[\&_svg\]\:w-auto svg{width:auto}.\[\&_thead\]\:sticky thead{position:sticky}.\[\&_thead\]\:top-0 thead{top:0}.\[\&_thead\]\:z-10 thead{z-index:10}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&\>\*\:last-child\]\:after\:inline>:last-child:after{content:var(--tw-content);display:inline}.\[\&\>\*\:last-child\]\:after\:align-baseline>:last-child:after{content:var(--tw-content);vertical-align:baseline}.\[\&\>\*\:last-child\]\:after\:content-\[var\(--streamdown-caret\)\]>:last-child:after{--tw-content:var(--streamdown-caret);content:var(--tw-content)}.\[\&\>p\]\:inline>p{display:inline}li .\[li_\&\]\:pl-6{padding-left:calc(var(--spacing) * 6)}}:root{--bg:#fff;--bg-panel:#f5f5f5;--bg-hover:#eee;--bg-selected:#e8e8e8;--text:#1a1a1a;--text-muted:#6b7280;--text-dim:#9ca3af;--accent:#2563eb;--accent-hover:#1d4ed8;--user-bg:#eff6ff;--assistant-bg:#fff;--tool-bg:#f9fafb;--bg-subtle:#00000008;--background:var(--bg);--foreground:var(--text);--card:var(--bg-panel);--card-foreground:var(--text);--muted:var(--bg-hover);--muted-foreground:var(--text-muted);--border:#e0e0e0;--input:var(--border);--primary:var(--accent);--primary-foreground:#fff;--radius:.375rem}html.dark{--bg:#1a1a1a;--bg-panel:#242424;--bg-hover:#2e2e2e;--bg-selected:#383838;--border:#3a3a3a;--text:#e8e8e8;--text-muted:#9ca3af;--text-dim:#6b7280;--accent:#60a5fa;--accent-hover:#93c5fd;--user-bg:#1e293b;--assistant-bg:#1a1a1a;--tool-bg:#1f2937;--bg-subtle:#ffffff0a;--background:var(--bg);--foreground:var(--text);--card:var(--bg-panel);--card-foreground:var(--text);--muted:var(--bg-hover);--muted-foreground:var(--text-muted);--input:var(--border);--primary:var(--accent);--primary-foreground:#0f172a}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}*{box-sizing:border-box}body,html{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}body{height:100dvh}.resize-handle{background:0 0}.resize-handle:before{content:"";position:absolute;inset:0}.resize-handle-line{background:0 0;width:1px;height:100%;transition:background-color .15s}.resize-handle.resize-handle-dragging .resize-handle-line,.resize-handle:hover .resize-handle-line{background:var(--accent)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}:root{--font-mono:var(--font-noto-mono),"JetBrains Mono","Fira Code","Consolas",ui-monospace,"PingFang SC","Microsoft YaHei",monospace}code,pre{font-family:var(--font-mono)}.markdown-body{color:var(--text);word-break:break-word;font-size:14px;line-height:1.7}.markdown-body p{margin:0 0 8px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{color:var(--text);margin:10px 0 4px;font-weight:600}.markdown-body h1{font-size:1.15em}.markdown-body h2{font-size:1.05em}.markdown-body h3{font-size:.95em}.markdown-body ol,.markdown-body ul{margin:4px 0 8px;padding-left:20px}.markdown-body li{margin:2px 0}.markdown-body a{color:var(--accent);text-decoration:underline}.markdown-body blockquote{border-left:3px solid var(--border);color:var(--text-muted);margin:4px 0;padding:2px 10px}.markdown-body table{border-collapse:collapse;width:100%;margin:8px 0;font-size:13px}.markdown-body td,.markdown-body th{border:1px solid var(--border);text-align:left;padding:5px 10px}.markdown-body th{background:var(--bg-panel);font-weight:600}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:10px 0}.mermaid-diagram{border:1px solid var(--border);background:var(--bg-panel);border-radius:6px;margin:12px 0;padding:12px;overflow-x:auto}.mermaid-diagram-canvas{min-width:min-content}.mermaid-diagram svg{max-width:100%;height:auto;margin:0 auto}.mermaid-diagram-error-title,.mermaid-diagram-loading{color:var(--text-muted);font-size:12px}.mermaid-diagram-error{border-color:#f8717173}.mermaid-diagram-error-message{color:#f87171;margin-top:4px;font-size:12px}.mermaid-diagram-error pre{background:var(--bg);color:var(--text-muted);border-radius:4px;margin:8px 0 0;padding:8px;overflow-x:auto}.widget-shimmer{background:linear-gradient(90deg,#0000,#8080801f 50%,#0000) 0 0/200% 100%;animation:widget-shimmer 1.5s ease-in-out infinite}@keyframes widget-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes text-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes surface-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.markdown-file-preview{min-height:100%}.markdown-file-preview h1,.markdown-file-preview h2,.markdown-file-preview h3,.markdown-file-preview h4,.markdown-file-preview h5,.markdown-file-preview h6{letter-spacing:0;line-height:1.25}.markdown-file-preview h1{border-bottom:1px solid var(--border);margin:0 0 18px;padding-bottom:10px;font-size:1.85em}.markdown-file-preview h2{border-bottom:1px solid var(--border);margin:28px 0 12px;padding-bottom:6px;font-size:1.42em}@supports (color:color-mix(in lab,red,red)){.markdown-file-preview h2{border-bottom:1px solid color-mix(in srgb,var(--border) 72%,transparent)}}.markdown-file-preview h3{margin:22px 0 10px;font-size:1.18em}.markdown-file-preview h4,.markdown-file-preview h5,.markdown-file-preview h6{margin:18px 0 8px}.markdown-file-preview p{margin:0 0 13px}.markdown-file-preview ol,.markdown-file-preview ul{margin:6px 0 14px}.markdown-file-preview li{margin:4px 0}.markdown-file-preview blockquote{background:var(--bg-panel);border-left-color:var(--accent);border-radius:0 6px 6px 0;margin:12px 0 16px;padding:8px 14px}.markdown-file-preview table{border-spacing:0;width:max-content;max-width:100%;display:block;overflow-x:auto}.markdown-file-preview td,.markdown-file-preview th{vertical-align:top;padding:7px 11px}.markdown-file-preview img{max-width:100%;height:auto;margin:14px auto;display:block}.markdown-file-preview img,.markdown-file-preview pre{border:1px solid var(--border);background:var(--bg-panel);border-radius:6px}.markdown-file-preview pre{font-family:var(--font-mono);margin:12px 0;padding:12px 16px;font-size:13px;overflow-x:auto}.markdown-file-preview code{font-family:var(--font-mono);background:var(--bg-panel);border-radius:3px;padding:1px 5px;font-size:.9em}.markdown-file-preview pre code{background:0 0;padding:0}.markdown-file-preview .mermaid-diagram{margin:16px 0}.markdown-body span.linenumber,span.linenumber{color:var(--text-dim)!important;font-style:normal!important}@keyframes drop-zone-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes drop-icon-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes drop-ring-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes drop-ripple{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(1)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes saved-pop{0%{transform:scale(1);box-shadow:0 0 #4ade808c}40%{transform:scale(1.08);box-shadow:0 0 0 6px #4ade8040}to{transform:scale(1);box-shadow:0 0 #4ade8000}}@keyframes saved-check-draw{0%{stroke-dashoffset:18px;opacity:0}to{stroke-dashoffset:0;opacity:1}}.models-config-shell{border-radius:12px!important;box-shadow:0 16px 40px #0000003d!important}.models-config-shell .models-config-tree{background:var(--bg-panel)!important;width:224px!important;padding:10px 8px 8px!important}.models-config-shell .models-config-detail{background:var(--bg)!important;padding:24px 28px!important}.models-config-shell .models-config-footer{background:var(--bg-panel)!important;padding:10px 20px!important}.models-config-shell input,.models-config-shell select{min-height:32px;background:var(--bg-panel)!important;border-color:var(--border)!important;border-radius:8px!important}.models-config-shell button{transition:background-color .12s,color .12s,border-color .12s}.models-config-shell .models-config-tree>div:first-child>div{border-radius:8px!important}.models-config-apikey-detail,.models-config-model-detail,.models-config-provider-detail,.models-config-subscription-detail{background:var(--bg-panel);border-radius:12px;max-width:720px;padding:14px 16px}.models-config-model-detail,.models-config-provider-detail{gap:14px!important}.models-config-shell .models-config-tree>div>div{border-radius:10px!important}.models-config-shell .models-config-tree button{min-height:36px;border-radius:14px!important}.models-config-shell .models-config-footer button{min-height:36px;border-radius:18px!important;padding-inline:14px!important}.models-config-shell .models-config-detail input,.models-config-shell .models-config-detail select{min-height:32px;border-radius:16px!important;padding-inline:12px!important}.models-config-shell .models-config-detail input[type=checkbox]{width:13px;min-height:13px;border-radius:3px!important;padding:0!important}.models-config-shell .models-config-detail>div{box-sizing:border-box}.models-config-model-detail>div:first-child,.models-config-provider-detail>div:first-child{border-bottom:1px solid var(--border);padding-bottom:10px}.models-config-model-detail input[type=checkbox]{accent-color:var(--accent)}.empty-start-surface{border:1px solid var(--border);background:var(--bg-panel);border-radius:12px;padding:14px 16px}.settings-dialog-backdrop{z-index:1000;background:#00000061;justify-content:center;align-items:center;padding:22px;display:flex;position:fixed;inset:0}.settings-dialog-shell{background:var(--bg);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(1120px,100%);height:min(82vh,860px);min-height:560px;display:flex;overflow:hidden;box-shadow:0 16px 40px #0000003d}.settings-dialog-header{border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;height:50px;padding:0 14px 0 16px;display:flex}.settings-dialog-body{flex:1;min-height:0;display:flex;overflow:hidden}.settings-dialog-tabs{border-right:1px solid var(--border);background:var(--bg-panel);flex-shrink:0;width:208px;padding:10px 8px;overflow-y:auto}.settings-dialog-tab{text-align:left;border:none;border-radius:9px;align-items:center;gap:9px;width:100%;margin:0 0 4px;padding:10px;transition:background .12s,color .12s;display:flex}.settings-dialog-panel{background:var(--bg);flex:1;min-width:0;min-height:0;overflow:hidden}@media (min-width:641px){.sidebar-overlay-backdrop{display:none!important}.sidebar-container{transition:width .2s,min-width .2s;position:relative;overflow:hidden}.sidebar-container.sidebar-closed{border-right:none!important;width:0!important;min-width:0!important}.sidebar-container>*{width:100%;min-width:260px}.right-panel-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.right-panel-back-button{display:none!important}.right-panel-container.right-panel-closed{border-left:none!important;width:0!important;min-width:0!important;display:none!important}}@media (max-width:640px){.app-topbar{flex-wrap:wrap;align-content:center;min-height:76px;align-items:center!important;gap:6px!important;height:auto!important;padding:6px 8px!important}.topbar-sidebar-toggle{order:1}.topbar-title-area{order:2;min-width:0;flex:1 1 0!important}.topbar-session-title{max-width:none!important}.topbar-project-crumb,.topbar-rename-button{display:none!important}.topbar-icon-button{order:3;width:30px!important;height:28px!important}.topbar-plot-button,.topbar-update-button{order:3}.topbar-right-panel-toggle{display:flex!important}.topbar-chat-tools{scrollbar-width:none;-webkit-overflow-scrolling:touch;order:4;min-width:0;overflow:auto hidden;flex:0 auto!important}.topbar-chat-tools::-webkit-scrollbar{display:none}.topbar-branches-control,.topbar-plot-button,.topbar-system-button{flex:none}.topbar-branches-button{justify-content:center;width:30px;gap:0!important;padding:0!important}.topbar-branches-icon{align-items:center;display:flex}.topbar-branches-label{display:none!important}.topbar-session-stats{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1 1 0;order:4;min-width:0;max-width:none;overflow-x:auto}.topbar-plot-button,.topbar-system-button{justify-content:center;width:30px;gap:0!important;padding:0!important}.topbar-plot-label,.topbar-plot-memory,.topbar-system-label{display:none!important}.topbar-session-stats::-webkit-scrollbar{display:none}.chat-input-toolbar{flex-wrap:wrap;align-items:stretch!important;gap:4px 6px!important}.chat-input-toolbar-left,.chat-input-toolbar-right{min-width:0;overflow:visible}.chat-input-toolbar-left{flex:100%!important}.chat-input-toolbar-right{flex:100%!important;margin-left:0!important}.chat-input-toolbar-left>*,.chat-input-toolbar-right>*{flex-shrink:0}.chat-input-toolbar-spacer{display:none!important}.settings-dialog-backdrop{justify-content:stretch;align-items:stretch;padding:0}.settings-dialog-shell{border:none;border-radius:0;width:100%;height:100dvh;min-height:0}.settings-dialog-body{flex-direction:column}.settings-dialog-tabs{border-right:none;border-bottom:1px solid var(--border);gap:6px;width:100%;padding:7px;display:flex;overflow:auto hidden}.settings-dialog-tab{flex:0 0 132px;width:132px;margin:0;padding:8px}.settings-dialog-panel{flex:1}.chat-stats-center,.resize-handle{display:none!important}.sidebar-container{max-width:85vw;transition:transform .25s,box-shadow .25s;top:0;bottom:0;left:0;width:min(280px,85vw)!important;min-width:0!important;position:fixed!important}.sidebar-container.sidebar-open{transform:translate(0);box-shadow:4px 0 20px #00000026}.sidebar-container.sidebar-closed{box-shadow:none;pointer-events:none;transform:translate(-100%)}.right-panel-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.right-panel-back-button{display:flex!important}.right-panel-container.right-panel-open{width:100%!important;min-width:0!important}.right-panel-container.right-panel-closed{border-left:none!important;width:0!important;min-width:0!important;display:none!important}}.docx-preview-container .docx-preview{color:#333;padding:40px 48px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.docx-preview-container .docx-preview h1,.docx-preview-container .docx-preview h2,.docx-preview-container .docx-preview h3{color:#1a1a1a;margin-top:1em;margin-bottom:.5em}.docx-preview-container .docx-preview p{margin-bottom:.5em}.docx-preview-container .docx-preview table{border-collapse:collapse;width:100%;margin:8px 0}.docx-preview-container .docx-preview td,.docx-preview-container .docx-preview th{text-align:left;border:1px solid #ddd;padding:6px 10px}.docx-preview-container .docx-preview img{max-width:100%;height:auto}.xlsx-preview table{border-collapse:collapse;font-size:12px;font-family:var(--font-mono);background:#fff}.xlsx-preview td,.xlsx-preview th{border:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;max-width:300px;padding:4px 8px;overflow:hidden}.xlsx-preview th{background:var(--bg-panel);color:var(--text);font-weight:600;position:sticky;top:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
|
|
@@ -277,10 +277,6 @@ function applyRevisionSuffix(text, revision) {
|
|
|
277
277
|
return text + encodeRevision(revision);
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
-
function stripRevisionSuffix(text) {
|
|
281
|
-
return text.replace(REVISION_SUFFIX_PATTERN, "");
|
|
282
|
-
}
|
|
283
|
-
|
|
284
280
|
function shouldAcceptGroupMessage(message, requireMention) {
|
|
285
281
|
if (!message.chatId) return true; // DM, always accept
|
|
286
282
|
if (!requireMention) return true; // group chat, mention not required
|
package/bin/pi-web.js
CHANGED
|
@@ -3,27 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
process.title = "annovibe";
|
|
5
5
|
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
7
6
|
const { spawn, spawnSync } = require("child_process");
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
9
7
|
const path = require("path");
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
11
8
|
const fs = require("fs");
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
13
9
|
const os = require("os");
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
15
10
|
const http = require("http");
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
17
11
|
const net = require("net");
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
19
12
|
const readline = require("readline");
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
21
13
|
const { parseArgs } = require("util");
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
23
14
|
const bcrypt = require("bcryptjs");
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
25
15
|
const https = require("https");
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
27
16
|
const { randomBytes } = require("crypto");
|
|
28
17
|
|
|
29
18
|
const pkgDir = path.join(__dirname, "..");
|
|
@@ -1167,7 +1156,6 @@ function runNextProcess() {
|
|
|
1167
1156
|
const nextArgs = ["start", "-p", String(port)];
|
|
1168
1157
|
if (hostname) nextArgs.push("-H", String(hostname));
|
|
1169
1158
|
process.argv = [process.execPath, nextBin, ...nextArgs];
|
|
1170
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
1171
1159
|
require(nextBin);
|
|
1172
1160
|
}
|
|
1173
1161
|
|
package/package.json
CHANGED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9544],{9544:(e,t,n)=>{n.d(t,{T:()=>z});var r=n(12115);function a(e){return e?.phase==="running_tools"?{kind:"running_tools",tools:(e.activeTools??[]).map(e=>({id:e.id,name:e.name}))}:e?.phase==="streaming"||e?.phase==="compacting"||e?.phase==="idle"?null:{kind:"waiting_model"}}function s(e){if("assistant"!==e.role)return e;let t=e.content;if(!Array.isArray(t))return e;let n=t.map(e=>("object"!=typeof e||null===e||Array.isArray(e)||"toolCall"!==e.type?null:{type:"toolCall",toolCallId:"string"==typeof e.toolCallId?e.toolCallId:"string"==typeof e.id?e.id:"",toolName:"string"==typeof e.toolName?e.toolName:"string"==typeof e.name?e.name:"",input:"object"!=typeof e.input||null===e.input||Array.isArray(e.input)?"object"!=typeof e.arguments||null===e.arguments||Array.isArray(e.arguments)?{}:e.arguments:e.input})??e);return{...e,content:n}}function o(e){if("assistant"!==e.role)return null;let t=e.timestamp;return"number"!=typeof t?null:`assistant:${t}`}class l extends Error{constructor(e,t,n){super(e),this.status=t,this.code=n,this.name="AgentCommandError"}}async function i(e,t){let n=await fetch(`/api/agent/${encodeURIComponent(e)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await n.json().catch(()=>({}));if(!n.ok||r.error)throw new l(r.error??`HTTP ${n.status}`,n.status,r.code);return r.data}var u=n(28999);async function c(e,t){if(!t.length)return[];let n=await fetch("/api/images/upload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,images:t.map(e=>({data:e.data,mimeType:e.mimeType,name:e.name}))})}),r=await n.json().catch(()=>({}));if(!n.ok||r.error)throw Error(r.error??`Upload failed (HTTP ${n.status})`);return(r.uploaded??[]).map((e,n)=>({...e,previewUrl:t[n]?.previewUrl}))}async function d(e,t,n){let r,a=new TextDecoder,s="",o=e=>{if(e.startsWith("id: ")){r=e.slice(4);return}if(!e.startsWith("data: "))return;let n=e.slice(6);if("[DONE]"!==n)try{t(n,r)}catch{}finally{r=void 0}},l=new Promise(e=>{n?.aborted?e():n?.addEventListener("abort",()=>e(),{once:!0})});for(;;){let t=await Promise.race([e.read(),l.then(()=>({done:!0,value:void 0}))]);if(t.done)break;let n=(s+=a.decode(t.value,{stream:!0})).split("\n");for(let e of(s=n.pop()||"",n))o(e)}if(s.trim())for(let e of s.split("\n"))o(e)}var p=n(16865);let m="__annovibeStreamSessions__",f="__annovibeStreamListeners__",g="__annovibeStreamErrorCallbacks__";function h(){let e=globalThis;return e[m]||(e[m]=new Map),e[m]}function y(){let e=globalThis;return e[g]||(e[g]=new Map),e[g]}function w(e){return{sessionId:e,phase:"idle",startedAt:null,lastEventAt:null,lastHeartbeatAt:null,reconnectCount:0,lastSyncReason:null,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!1,error:null}}function v(e,t){let n;for(let r of(!(n=globalThis)[f]&&(n[f]=new Map),n[f]).get(e)??[])try{r(t)}catch{}}function b(e){e.textThrottleTimer&&(clearTimeout(e.textThrottleTimer),e.textThrottleTimer=null),e.textDirty&&(e.textDirty=!1,C(e))}function T(e,t=!1){let n=Date.now();if(e.snapshot.lastEventAt=n,!t){e.textDirty=!0,e.textThrottleTimer||(e.textThrottleTimer=setTimeout(()=>{e.textThrottleTimer=null,e.textDirty&&(e.textDirty=!1,C(e))},100));return}b(e),C(e)}function C(e,t){let n=Date.now(),r=function(e){let t=[];for(let n of e.toolCalls.values())t.push({type:"toolCall",toolCallId:n.toolCallId,toolName:n.toolName,input:n.input??{}});let n=e.accumulatedText.trim();return n&&t.push({type:"text",text:n}),t}(e),a=(t??e.snapshot.phase)==="active";e.snapshot={...e.snapshot,phase:t??e.snapshot.phase,lastEventAt:n,accumulatedText:e.accumulatedText,toolCalls:[...e.toolCalls.values()],toolResults:[...e.toolResults.values()],statusText:a?function(e){if(e.activeToolId){let t=e.toolCalls.get(e.activeToolId);if(t){let e=Math.max(0,Math.floor((Date.now()-t.startedAt)/1e3));return`Running ${t.toolName||"tool"}… (${e}s)`}}return e.accumulatedText.trim()?"Generating response…":e.toolCalls.size>0?"Finishing tool results…":null}(e):e.snapshot.statusText,streamingMessage:a&&r.length>0?{role:"assistant",content:r}:null,isStreaming:a},v(e.snapshot.sessionId,{type:"snapshot-updated",snapshot:e.snapshot})}function k(e){I(e),e.idleCheckTimer=setInterval(()=>{if("connected"!==e.connectionState)return;let t=Math.max(e.snapshot.lastEventAt??0,e.snapshot.lastHeartbeatAt??0);if(Date.now()-t>=18e4){S(e),b(e);let t="Stream idle timeout — no activity for 180s.";e.snapshot={...e.snapshot,phase:"error",isStreaming:!1,streamingMessage:null,statusText:null,error:t},I(e),v(e.snapshot.sessionId,{type:"error",snapshot:e.snapshot});let n=y().get(e.snapshot.sessionId);if(n)try{n(e.snapshot.sessionId,t)}catch{}}},1e4)}function I(e){e.idleCheckTimer&&(clearInterval(e.idleCheckTimer),e.idleCheckTimer=null)}function S(e){e.toolProgressTimer&&(clearInterval(e.toolProgressTimer),e.toolProgressTimer=null)}function _(e){let t=h(),n=t.get(e);return n||(n={snapshot:w(e),accumulatedText:"",toolCalls:new Map,toolResults:new Map,toolProgressTimer:null,activeToolId:null,textThrottleTimer:null,textDirty:!1,connectionState:"idle",idleCheckTimer:null},t.set(e,n)),n}function x(e,t){let n=y();return n.set(e,t),()=>{n.get(e)===t&&n.delete(e)}}function E(e){let t=h(),n=t.get(e);n&&(S(n),I(n),b(n)),t.delete(e)}function M(e){let t=h().get(e);t&&(t.snapshot={...t.snapshot,reconnectCount:t.snapshot.reconnectCount+1,lastSyncReason:"sse-reconnect",lastEventAt:Date.now()},T(t,!0))}let A="__annovibeSessionMessageCache__";function R(){let e=globalThis;if(!e[A]){var t;let n={entries:new Map,cleanupTimer:null};e[A]=n,(t=n).cleanupTimer||(t.cleanupTimer=setInterval(()=>{let e=Date.now();for(let[n,r]of t.entries)e-r.loadedAt>72e5&&t.entries.delete(n)},6e4))}return e[A]}function $(e){let t=R(),n=t.entries.get(e);return n?Date.now()-n.loadedAt>72e5?(t.entries.delete(e),null):(n.loadedAt=Date.now(),{...n,messages:[...n.messages],entryIds:[...n.entryIds]}):null}function D(e,t,n,r,a){let s=R(),o=s.entries.get(e);if(!o)return;let l=new Set(o.entryIds),i=[],u=[];for(let e=0;e<t.length;e++){let r=n[e];r&&!l.has(r)&&(i.push(t[e]),u.push(r))}0!==i.length&&s.entries.set(e,{...o,messages:[...i,...o.messages],entryIds:[...u,...o.entryIds],hasMore:r,loadedMessagesCount:a,loadedAt:Date.now()})}function L(e){R().entries.delete(e)}var N=n(14755);function P(e,t){switch(t.type){case"start":return{isStreaming:!0,streamingMessage:null};case"update":return{isStreaming:!0,streamingMessage:t.message};case"end":case"reset":return{isStreaming:!1,streamingMessage:null};default:return e}}function U(e,t){return new DOMException(e,t)}function j(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}-${Math.random().toString(36).slice(2,11)}`}function O(e,t){return e.trim()||0!==t?`text:${e}|images:${t}`:null}function F(e){return"string"==typeof e?O(e,0):Array.isArray(e)?O(e.filter(e=>!!e&&"object"==typeof e&&"text"===e.type&&"string"==typeof e.text).map(e=>e.text).join("\n"),e.filter(e=>!!e&&"object"==typeof e&&"image"===e.type).length):null}function H(e){let t=new Map;for(let n of e){let e="user"!==n.role?null:F(n.content);e&&t.set(e,(t.get(e)??0)+1)}return t}function J(e,t,n){return e.sessionId===t&&(!e.leafId||n.includes(e.leafId))}function B(e,t){let n=e.timestamp,r=t.timestamp;if("number"!=typeof n||"number"!=typeof r||n!==r||e.role!==t.role)return!1;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}function z(e){let{session:t,newSessionCwd:n,onAgentEnd:m,onSessionCreated:f,onSessionForked:g,modelsRefreshKey:y,onBranchDataChange:C}=e,A=null===t&&null!==n,[z,K]=(0,r.useState)(null),[W,q]=(0,r.useState)(!A),[G,V]=(0,r.useState)(null),[Y,Q]=(0,r.useState)(null),[X,Z]=(0,r.useState)([]),[ee,et]=(0,r.useState)([]),[en,er]=(0,r.useState)(0),[ea,es]=(0,r.useState)(!1),[eo,el]=(0,r.useState)(0),[ei,eu]=(0,r.useReducer)(P,{isStreaming:!1,streamingMessage:null}),[ec,ed]=(0,r.useState)(!1),[ep,em]=(0,r.useState)({}),[ef,eg]=(0,r.useState)([]),[eh,ey]=(0,r.useState)({}),[ew,ev]=(0,r.useState)({}),[eb,eT]=(0,r.useState)(null),[eC,ek]=(0,r.useState)("full"),[eI,eS]=(0,r.useState)([...N.SN]),[e_,ex]=(0,r.useState)("auto"),[eE,eM]=(0,r.useState)(null),[eA,eR]=(0,r.useState)(null),[e$,eD]=(0,r.useState)(null),[eL,eN]=(0,r.useState)(null),[eP,eU]=(0,r.useState)(null),[ej,eO]=(0,r.useState)(null),[eF,eH]=(0,r.useState)(!1),[eJ,eB]=(0,r.useState)(null),[ez,eK]=(0,r.useState)(null),[eW,eq]=(0,r.useState)(null),[eG,eV]=(0,r.useState)(null),eY=(0,r.useRef)(null),eQ=(0,r.useRef)(t?.id??null),eX=(0,r.useRef)(!1),eZ=(0,r.useRef)(null),e0=(0,r.useRef)(null),e1=(0,r.useRef)(null),e4=(0,r.useRef)(!1),e3=(0,r.useRef)(null),e5=(0,r.useRef)(!1),e2=(0,r.useRef)(null),e6=(0,r.useRef)(null),e8=(0,r.useRef)(new Map),e9=(0,r.useRef)(new Map),e7=(0,r.useRef)(new Map),te=(0,r.useRef)(new Map),tt=(0,r.useRef)(null),tn=(0,r.useRef)([]),tr=(0,r.useRef)(null),ta=(0,r.useRef)(0),ts=(0,r.useRef)(!1),to=(0,r.useRef)(0),tl=(0,r.useRef)(!1),ti=(0,r.useRef)(!1),tu=(0,r.useRef)(0),tc=(0,r.useRef)(null),td=(0,r.useRef)(null),tp=(0,r.useRef)(0),tm=(0,r.useRef)(!1);(0,r.useEffect)(()=>{tt.current=Y},[Y]),(0,r.useEffect)(()=>{tm.current=ei.isStreaming},[ei.isStreaming]),(0,r.useEffect)(()=>{te.current.clear()},[t?.id]);let tf=e.setNewSessionModel??eT,tg=e.setToolPreset??ek,th=e.setMemoryTools??eS,ty=eP??z?.context.model??ej??null,tw=A?eb:ty,tv=(0,r.useCallback)(()=>(0,N.tE)(eC,eI),[eI,eC]),tb=(0,r.useCallback)(e=>e?.length?e.map((e,t)=>{let n=`Attachment ${t+1}: ${e.fileName} (${e.mimeType||"application/octet-stream"}, ${e.size} bytes)`;if(e.extractedText){let t=e.truncated?"\n[The extracted text was truncated before sending.]":"";return`${n}
|
|
2
|
-
${t}
|
|
3
|
-
${e.extractedText}`.trim()}return`${n}
|
|
4
|
-
[Text extraction unavailable: ${e.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),tT=(0,r.useCallback)(async e=>{let t=await fetch(`/api/agent/${encodeURIComponent(e)}/prepare`,{method:"POST"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error??`Failed to prepare session (HTTP ${t.status})`)},[]),tC=(()=>{let e={input:0,output:0,cacheRead:0,cacheWrite:0};for(let t of X){if("assistant"!==t.role)continue;let n=t.usage;n&&(e.input+=n.input??0,e.output+=n.output??0,e.cacheRead+=n.cacheRead??0,e.cacheWrite+=n.cacheWrite??0)}return e.input+e.output+e.cacheRead+e.cacheWrite>0?{tokens:e}:null})(),tk=(0,r.useRef)(!1),tI=(0,r.useCallback)(async()=>{let e=eQ.current;if(!e||tk.current||tl.current)return;tk.current=!0,ts.current=!0;let t=0,n=$(e);t=n?n.loadedMessagesCount:50;try{for(;;)try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}?limit=100&offset=${t}`);if(!n.ok)break;let r=await n.json();if(eQ.current!==e)break;let a=r.context.messages,s=r.context.entryIds??[];if(0===a.length)break;Z(e=>[...a,...e]),et(e=>{let t=[...s,...e];return tn.current=t,t});let o=t+a.length;if(el(o),to.current=o,es(r.hasMore??!1),D(e,a,s,r.hasMore??!1,o),t=o,!r.hasMore)break;await new Promise(e=>setTimeout(e,800))}catch{break}}finally{tk.current=!1,tl.current=!0,ts.current=!1}},[]),tS=(0,r.useCallback)(async(e,t=!1,n=!1,r=!1)=>{var a;let s=null;try{if(t&&q(!0),!n&&!eX.current&&!r){let n=$(e);if(n)return er(n.totalMessages),es(n.hasMore),el(n.loadedMessagesCount),Z(n.messages),tn.current=n.entryIds,et(n.entryIds),tt.current=n.leafId,Q(n.leafId),to.current=n.loadedMessagesCount,t&&q(!1),n.hasMore&&!tl.current&&setTimeout(()=>{tI()},1500),null}let l=n?`/api/sessions/${encodeURIComponent(e)}?includeState`:`/api/sessions/${encodeURIComponent(e)}?limit=50&offset=0`,i=td.current;if(i?.sid===e&&!t)return null;i?.controller.abort(U("Session load superseded","AbortError"));let u=new AbortController;s=u,td.current={sid:e,controller:u};let c=setTimeout(()=>{u.abort(U("Session load timed out after 30 seconds","TimeoutError"))},3e4),d=await fetch(l,{signal:u.signal}).finally(()=>clearTimeout(c));if(eQ.current&&eQ.current!==e)return null;if(404===d.status)return t&&(K(null),tt.current=null,Q(null),Z([]),V(null)),null;if(!d.ok)throw Error(`HTTP ${d.status}`);let p=await d.json();n?(er(p.totalMessages??p.context.messages.length),es(!1)):(er(p.totalMessages??p.context.messages.length),es(p.hasMore??!1)),el(p.context.messages.length),K(p),tt.current=p.leafId,Q(p.leafId);let m=p.context.messages,f=H(m),g=new Map,h=Date.now();for(let[t,n]of e8.current)if(n.sessionId===e){if(h-n.createdAt>12e4){e8.current.delete(t);continue}if(n.confirmKey){let e=f.get(n.confirmKey)??0,r=g.get(n.confirmKey)??0;e-r>n.confirmCountAtCreate&&(e8.current.delete(t),g.set(n.confirmKey,r+1))}}e9.current=f;let y=p.context.entryIds??[],w=[...e8.current.values()].filter(t=>J(t,e,y)).map(e=>e.message),v=w.length>0?[...m,...w]:m,b=function(e,t,n){if(0===t.size)return e;let r=!1,a=e.map(e=>{let a=o(e);if(!a)return e;let s=t.get(a);return s?n-s.observedAt>5e3||function(e,t){let n=e.timestamp,r=t.timestamp;if("number"!=typeof n||"number"!=typeof r||n!==r||e.role!==t.role)return!1;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}(s.message,e)?(t.delete(a),e):(r=!0,s.message):e});return r?a:e}(v,te.current,Date.now()),T=e7.current.get(e);if(T){for(let[e,t]of T)h-t>12e4&&T.delete(e);0===T.size&&e7.current.delete(e)}let C=T?.size?T:null,k=C?new Set(y):null,I=!!C&&!!k&&[...C.keys()].some(e=>!k.has(e));C&&k&&!I&&e7.current.delete(e);let S=b.length;return!n&&(to.current>S||I)?(er(p.totalMessages??p.context.messages.length),es(p.hasMore??!1)):(Z(e=>(function(e,t){if(e.length!==t.length)return t;let n=!1,r=t.map((t,r)=>B(e[r],t)?e[r]:(n=!0,t));return n?r:e})(e,b)),tn.current=y,et(y),n?to.current=S:to.current=Math.max(to.current,S),a={sessionId:e,leafId:p.leafId,messages:b,entryIds:y,totalMessages:p.totalMessages??p.context.messages.length,hasMore:!n&&(p.hasMore??!1),loadedMessagesCount:p.context.messages.length},R().entries.set(e,{...a,loadedAt:Date.now()})),eU(e=>{if(!e)return null;let t=p.context.model;return t?.provider===e.provider&&t.modelId===e.modelId?null:e}),V(null),!p.agentState?.state?.thinkingLevel&&p.context.thinkingLevel&&"off"!==p.context.thinkingLevel&&ex(p.context.thinkingLevel),p.agentState??null}catch(e){if(e instanceof DOMException&&("AbortError"===e.name||"TimeoutError"===e.name)||e instanceof Error&&/aborted without reason|AbortError|Session load (?:timed out|superseded)/i.test(e.message))return null;return V(String(e)),null}finally{s&&td.current?.controller===s&&(td.current=null),t&&q(!1)}},[tI]),t_=(0,r.useRef)(!1),tx=(0,r.useCallback)(async()=>{if(t_.current)return;t_.current=!0;let e=eQ.current;if(!e){t_.current=!1;return}try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}?limit=50&offset=${eo}`);if(!t.ok)return;let n=await t.json(),r=n.context.messages,a=n.context.entryIds??[];Z(e=>[...r,...e]),et(e=>{let t=[...a,...e];return tn.current=t,t}),el(e=>e+r.length),es(n.hasMore??!1),D(e,r,a,n.hasMore??!1,eo+r.length)}catch{}finally{t_.current=!1}},[eo]),tE=(0,r.useCallback)(async e=>{let t=eQ.current;if(!t)return[];let n=tt.current,r=n?`?leafId=${encodeURIComponent(n)}`:"";try{let n=await fetch(`/api/sessions/${encodeURIComponent(t)}/shadowed${r}`);if(!n.ok)return[];let a=await n.json(),s=a.groups?.find(t=>t.compactionEntryId===e);return s?.messages??[]}catch{return[]}},[]),tM=(0,r.useCallback)(async(e,t)=>{try{let n=t?`/api/sessions/${encodeURIComponent(e)}/context?leafId=${encodeURIComponent(t)}`:`/api/sessions/${encodeURIComponent(e)}/context`,r=await fetch(n);if(!r.ok)throw Error(`HTTP ${r.status}`);let a=await r.json(),s=a.context.messages,o=a.context.entryIds??[],l=H(s),i=new Map,u=Date.now();for(let[t,n]of e8.current)if(n.sessionId===e){if(u-n.createdAt>12e4){e8.current.delete(t);continue}if(n.confirmKey){let e=l.get(n.confirmKey)??0,r=i.get(n.confirmKey)??0;e-r>n.confirmCountAtCreate&&(e8.current.delete(t),i.set(n.confirmKey,r+1))}}e9.current=l;let c=[...e8.current.values()].filter(t=>J(t,e,o)).map(e=>e.message);Z(c.length>0?[...s,...c]:s),tn.current=o,et(o)}catch(e){console.error("Failed to load context:",e)}},[]),tA=(0,r.useCallback)(async e=>{try{let t=await i(e,{type:"get_tools"});t&&(tg((0,N.ES)(t)),th((0,N.IB)(t)))}catch(e){console.error("Failed to load tools:",e)}},[th,tg]),tR=(0,r.useCallback)((e,t={})=>{eY.current?.close(),eY.current=null;let n=`/api/agent/${encodeURIComponent(e)}/events${t.replay?"?replay=1":""}`;return!function(e){let t=_(e);if("active"===t.snapshot.phase)return T(t,!0),k(t),t.snapshot;let n=Date.now();t.snapshot={...w(e),phase:"active",startedAt:n,lastEventAt:n,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},k(t),T(t,!0),t.snapshot}(e),new Promise((r,a)=>{let s=!1,o=!1,l=null,i=e=>{if(!s){if(s=!0,clearTimeout(u),e){l?.close(),eY.current===l&&(eY.current=null),a(e);return}r()}},u=setTimeout(()=>{t.requireConnected?i(Error("Timed out waiting for event stream connection")):i()},t.timeoutMs??3e4);eY.current=l=function(e){let{url:t,onEvent:n,onStateChange:r,onFatalError:a,maxReconnectAttempts:s=1/0,reconnectBaseMs:o=1e3,reconnectMaxMs:l=3e4,autoReconnect:i=!0}=e,u="idle",c=new AbortController,p=0,m=null,f=null,g=!1,h=(e,t)=>{t&&(f=t),n(e,t)},y=e=>{u!==e&&(u=e,r?.(e))},w=()=>{null!==m&&(clearTimeout(m),m=null)},v=()=>{if(g)return;if(!i)return void y("error");if(p>=s){y("error"),a?.(Error(`Max reconnect attempts (${s}) reached`));return}let e=Math.min(l,o*2**p);p+=1,y("connecting"),m=setTimeout(()=>{m=null,b()},e)},b=async()=>{if(!g){w(),c=new AbortController,y("connecting");try{let e=await fetch(t,{signal:c.signal,headers:{Accept:"text/event-stream","Cache-Control":"no-cache",...f?{"Last-Event-ID":f}:{}}});if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);let n=e.body;if(!n)throw Error("Response has no readable body");let r=n.getReader();if(y("connected"),p=0,await d(r,h,c.signal),c.signal.aborted)try{await r.cancel()}catch{}r.releaseLock(),y("closed"),!g&&i&&v()}catch(e){if(g||e instanceof DOMException&&"AbortError"===e.name)return void y("closed");y("error"),i&&v()}}};return{get state(){return u},connect:()=>{g=!1,p=0,w(),b()},close:()=>{g=!0,w(),c.abort(),y("closed")},get abortController(){return c}}}({url:n,onEvent:t=>{try{let n=JSON.parse(t);if("connected"===n.type&&i(),eQ.current!==e)return;eZ.current?.(n)}catch{}},onStateChange:t=>{!function(e,t){let n=h().get(e);if(!n)return;let r=n.connectionState;n.connectionState=t,"connected"===t&&"connected"!==r&&(n.snapshot={...n.snapshot,lastEventAt:Date.now(),lastHeartbeatAt:Date.now()},k(n)),"connected"!==t&&"connected"===r&&I(n)}(e,t),"connected"===t&&(o&&(M(e),e0.current?.(e,"sse_reconnected")),o=!0)},reconnectBaseMs:1e3,reconnectMaxMs:3e4}),l.connect()})},[]),t$=(0,r.useCallback)(async(e,t="manual")=>{if(!e||eQ.current!==e)return;let n=ta.current;try{let t=await fetch(`/api/agent/${encodeURIComponent(e)}`),r=await t.json().catch(()=>({}));if(eQ.current!==e||ta.current!==n)return;r.running?(eX.current=!0,ed(!0),eq(a(r.state)),eY.current&&"closed"!==eY.current.state&&"error"!==eY.current.state||(M(e),tR(e,{replay:!0}))):(eX.current=!1,eY.current?.close(),eY.current=null,E(e),ed(!1),eq(null),eM(null),eu({type:"end"}),L(e),await tS(e,!1,!1,!0)),r.state?.contextUsage!==void 0&&eR(r.state.contextUsage??null),r.state?.systemPrompt!==void 0&&eD(r.state.systemPrompt??null),r.state?.isCompacting!==void 0&&eH(r.state.isCompacting),r.state?.thinkingLevel!==void 0&&ex(r.state.thinkingLevel??"auto")}catch{}},[tR,tS]);(0,r.useEffect)(()=>{e0.current=t$},[t$]),(0,r.useEffect)(()=>{eX.current=ec},[ec]),eZ.current=(0,r.useCallback)(e=>{let t=eQ.current;switch(t&&function(e,t){let n=_(e),r=Date.now();switch(t.type){case"agent_start":if("active"===n.snapshot.phase)return T(n,!0),n.snapshot;return S(n),n.accumulatedText="",n.toolCalls.clear(),n.toolResults.clear(),n.activeToolId=null,n.snapshot={...w(e),phase:"active",startedAt:r,lastEventAt:r,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},k(n),T(n,!0),n.snapshot;case"message_update":{let e=t.message;if(!e||"assistant"!==e.role)return n.snapshot;let a=e.content;for(let e of Array.isArray(a)?a:[])"object"==typeof e&&null!==e&&"type"in e&&("text"===e.type?n.accumulatedText=e.text??"":"toolCall"===e.type&&e.toolCallId&&!n.toolCalls.has(e.toolCallId)&&n.toolCalls.set(e.toolCallId,{...e,startedAt:r}));return T(n,!1),n.snapshot}case"tool_execution_start":{let e="string"==typeof t.toolCallId?t.toolCallId:"",a="string"==typeof t.toolName?t.toolName:"tool",s=t.input??{};if(!e)return n.snapshot;let o=n.toolCalls.get(e);return n.toolCalls.set(e,{type:"toolCall",toolCallId:e,toolName:a,input:o?.input??s,startedAt:o?.startedAt??r}),n.activeToolId=e,S(n),n.activeToolId&&(n.toolProgressTimer=setInterval(()=>T(n,!0),1e3)),T(n,!0),n.snapshot}case"tool_execution_end":{let e="string"==typeof t.toolCallId?t.toolCallId:"",a="string"==typeof t.toolName?t.toolName:"tool",s="string"==typeof t.result?t.result:JSON.stringify(t.result??"");if(e){let o=n.toolCalls.get(e);o&&n.toolCalls.set(e,{...o,endedAt:r}),n.toolResults.set(e,{role:"toolResult",toolCallId:e,toolName:a,content:[{type:"text",text:s}],isError:!!t.isError,timestamp:r}),n.activeToolId===e&&(n.activeToolId=null,S(n))}return T(n,!0),n.snapshot}case"message_end":return b(n),T(n,!0),n.snapshot;case"agent_end":{if(b(n),S(n),n.activeToolId=null,!0===t.willRetry)return n.accumulatedText="",n.toolCalls.clear(),n.toolResults.clear(),n.snapshot={...n.snapshot,phase:"active",lastEventAt:r,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!0,error:null},k(n),v(e,{type:"snapshot-updated",snapshot:n.snapshot}),n.snapshot;I(n);let a="string"==typeof t.error?t.error:null;return n.snapshot={...n.snapshot,phase:a?"error":"completed",isStreaming:!1,streamingMessage:null,statusText:null,error:a},v(e,a?{type:"error",snapshot:n.snapshot}:{type:"completed",snapshot:n.snapshot}),n.snapshot}case"heartbeat":return n.snapshot={...n.snapshot,lastHeartbeatAt:r},n.snapshot;default:return n.snapshot}}(t,e),"heartbeat"!==e.type&&(tp.current=Date.now()),e.type){case"prompt_admitted":case"agent_start":eV(null),eX.current=!0,ed(!0),eq({kind:"waiting_model"}),eu({type:"start"});break;case"agent_end":if(!0===e.willRetry){eX.current=!0,ed(!0),eq({kind:"waiting_model"});break}eX.current=!1,eY.current?.close(),eY.current=null,ed(!1),eq(null),eM(null),eu({type:"end"}),t&&(L(t),tS(t,!1,!1,!0),tc.current&&clearTimeout(tc.current),tc.current=setTimeout(()=>{eQ.current!==t||eX.current||(L(t),tS(t,!1,!1,!0))},500),fetch(`/api/agent/${encodeURIComponent(t)}`).then(e=>e.json()).then(e=>{e.state?.contextUsage!==void 0&&eR(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&eD(e.state.systemPrompt??null),e.state?.isCompacting!==void 0&&eH(e.state.isCompacting)}).catch(()=>{})),m?.();break;case"message_start":case"message_update":{let t=e.message;if(t?.role==="user")break;eX.current||(eX.current=!0,ed(!0),eq({kind:"waiting_model"})),t&&eu({type:"update",message:s(t)}),eq(null);break}case"message_end":{let n=e.message,r="string"==typeof e.__entryId?e.__entryId:null,a=eX.current;if(n&&"user"!==n.role){"assistant"===n.role&&"error"===n.stopReason&&n.errorMessage?.trim()&&eV(`Model response failed: ${n.errorMessage.trim()}`);let e=s(n),a=o(e);if(a&&te.current.set(a,{observedAt:Date.now(),message:e}),!(r&&tn.current.includes(r))){if(t&&r){let e=e7.current.get(t)??new Map;e.set(r,Date.now()),e7.current.set(t,e)}Z(t=>t.some(t=>B(t,e))?t:[...t,e]),r&&et(e=>{if(e.includes(r))return e;let t=[...e,r];return tn.current=t,t})}}a&&(eu({type:"reset"}),eq({kind:"waiting_model"}));break}case"replay_gap":t&&(L(t),tS(t,!1,!1,!0));break;case"prompt_done":if(!eX.current)break;t$(eQ.current??"","prompt_done");break;case"prompt_error":{let n="string"==typeof e.error&&e.error.trim()?e.error.trim():"The model request failed before producing a response.";if(eX.current=!1,ed(!1),eq(null),eM(null),eu({type:"end"}),eY.current?.close(),eY.current=null,t){for(let[e,n]of(E(t),e8.current))n.sessionId===t&&"prompt"===n.kind&&e8.current.delete(e);L(t),tS(t,!1,!1,!0)}eV(`Model request failed: ${n}`),m?.();break}case"tool_execution_start":{let t=e.toolCallId,n=e.toolName,r=e.args,a="bash"===n&&"string"==typeof r?.command?r.command:void 0;eq(e=>{let r=e?.kind==="running_tools"?[...e.tools]:[];return r.some(e=>e.id===t)||r.push({id:t,name:n,args:a}),{kind:"running_tools",tools:r}});break}case"tool_execution_end":{let t=e.toolCallId;eq(e=>{if(e?.kind!=="running_tools")return e;let n=e.tools.filter(e=>e.id!==t);return 0===n.length?{kind:"waiting_model"}:{kind:"running_tools",tools:n}});break}case"auto_retry_start":eV(null),eX.current=!0,ed(!0),eq({kind:"waiting_model"}),eM({attempt:e.attempt,maxAttempts:e.maxAttempts,errorMessage:e.errorMessage});break;case"auto_retry_end":eM(null),!1===e.success&&"string"==typeof e.finalError&&e.finalError.trim()?eV(`Model response failed after retries: ${e.finalError.trim()}`):!0===e.success&&eV(null);break;case"auto_compaction_start":case"compaction_start":eH(!0),eB(null);break;case"auto_compaction_end":case"compaction_end":eH(!1),e.errorMessage?eB(e.errorMessage):!e.aborted&&eQ.current&&tS(eQ.current)}},[tS,m,t$]);let tD=(0,r.useCallback)(async(e,r,a,s)=>{if(!e.trim()&&!r?.length&&!a?.length||ec)return;ta.current+=1;let o=tb(a),d=e.trim()?o?`${e}
|
|
5
|
-
|
|
6
|
-
Attached document text:
|
|
7
|
-
|
|
8
|
-
${o}`:e:o?`Attached document text:
|
|
9
|
-
|
|
10
|
-
${o}`:"",p=[],m=A?n:t?.cwd??z?.info?.cwd;if(r?.length&&m)try{p=await c(m,r)}catch(e){eV(e instanceof Error?e.message:String(e));return}let g=p.length?p.map(e=>{var t;return{type:"image",path:e.path,mimeType:e.mimeType,name:e.name,source:{type:"url",url:(t=e.path,`/api/files/${(0,u.HG)(t)}?type=read`),media_type:e.mimeType}}}):r?.map(e=>({type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})),h={role:"user",content:g?.length?[...d.trim()?[{type:"text",text:d}]:[],...g]:d,timestamp:Date.now()},y=j(),w=A?null:t?.id??null;w&&L(w);let v=tt.current,b=F(h.content);e8.current.set(y,{localId:y,sessionId:w??"__new__",leafId:v,message:h,createdAt:Date.now(),kind:"prompt",confirmKey:b,confirmCountAtCreate:A?0:b?e9.current.get(b)??0:0}),Z(e=>[...e,h]),eV(null),eX.current=!0,ed(!0),eq({kind:"waiting_model"}),eu({type:"start"}),e5.current=!0;let T=ef.find(e=>e.provider===ty?.provider&&e.id===ty?.modelId)?.input,C=!T||0===T.length||T.includes("image")?r?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})):void 0;try{if(A&&n){eb&&eO(eb);let t=s??tv(),r=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:n,type:"prompt",message:d,toolNames:t,deferPrompt:!0,...C?.length?{images:C}:{},...eb?{provider:eb.provider,modelId:eb.modelId}:{},..."auto"!==e_?{thinkingLevel:e_}:{}})}),a=await r.json().catch(()=>({}));if(!r.ok||a.error||!a.sessionId)throw Error(a.error??`HTTP ${r.status}`);let o=a.sessionId;eQ.current=o;let l=e8.current.get(y);l&&(l.sessionId=o),e1.current?.(),e1.current=x(o,()=>{eQ.current===o&&(ed(!1),eq(null))}),tr.current=o,await tR(o,{requireConnected:!0,timeoutMs:1e4}),await i(o,{type:"prompt",message:d,toolNames:t,...C?.length?{images:C}:{}}),f?.({id:o,path:"",cwd:n,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e})}else if(t){let e=s??tv();await tT(t.id),e1.current?.(),e1.current=x(t.id,()=>{eQ.current===t.id&&(ed(!1),eq(null))}),await tR(t.id,{requireConnected:!0,timeoutMs:1e4}),await i(t.id,{type:"prompt",message:d,toolNames:e,leafId:v,...ty?{provider:ty.provider,modelId:ty.modelId}:{},..."auto"!==e_?{thinkingLevel:e_}:{},...C?.length?{images:C}:{}})}}catch(t){let e=eQ.current;if(e8.current.delete(y),Z(e=>e.filter(e=>e!==h)),t instanceof l&&(409===t.status||"SESSION_BUSY"===t.code)){eV("This session is already running in another tab. Showing that active run instead."),eX.current=!0,ed(!0),eq({kind:"waiting_model"}),eu({type:"start"}),e&&(eY.current?.close(),eY.current=null,M(e),tR(e,{replay:!0}),e0.current?.(e,"prompt_conflict"));return}if(console.error("Failed to send message:",t),A&&eQ.current){let e=eQ.current;eQ.current=null,tr.current=null,fetch(`/api/sessions/${encodeURIComponent(e)}`,{method:"DELETE"}).catch(()=>{})}eV(t instanceof Error?t.message:String(t)),eY.current?.close(),eY.current=null,e&&E(e),eX.current=!1,ed(!1),eq(null),eu({type:"end"})}},[A,n,eb,tv,e_,t,z?.info?.cwd,ec,tR,f,tb,ef,ty,tT]),tL=(0,r.useCallback)(async()=>{let e=eQ.current;if(e){eX.current=!1,eV(null),ed(!1),eq(null),eu({type:"end"}),eY.current?.close(),eY.current=null,E(e),L(e);try{await i(e,{type:"abort"}),await tS(e,!1,!1,!0)}catch(t){console.error("Failed to abort:",t),await tS(e,!1,!1,!0)}}},[tS]),tN=(0,r.useCallback)(async e=>{let t=eQ.current;if(t){eN(e);try{let{cancelled:n,newSessionId:r}=await i(t,{type:"fork",entryId:e})??{};!n&&r&&g?.(r)}catch(e){console.error("Fork failed:",e)}finally{eN(null)}}},[g]),tP=(0,r.useCallback)(async e=>{let r=eQ.current,a=z?.info?.cwd??t?.cwd??n??null;if(!r||!a)return{ok:!1,error:"No active session to fork"};if(eX.current)return{ok:!1,error:"Agent is still running"};try{let t=tv(),n=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:a,type:"prompt",parentSessionId:r,deferPrompt:!0,toolNames:t,...ty?{provider:ty.provider,modelId:ty.modelId}:{},..."auto"!==e_?{thinkingLevel:e_}:{}})}),s=await n.json().catch(()=>({}));if(!n.ok||s.error||!s.sessionId)return{ok:!1,error:s.error??`HTTP ${n.status}`};let o=s.sessionId;try{await i(o,{type:"append_message",message:e,customType:"fork_handoff",display:!0})}catch{}return f?.({id:o,path:"",cwd:a,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:e.slice(0,120),parentSessionId:r}),{ok:!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},[z?.info?.cwd,t?.cwd,n,ty,e_,tv,f]),tU=(0,r.useCallback)(async e=>{let t=eQ.current;t&&(e7.current.delete(t),L(t),tt.current=e,Q(e),await tM(t,e))},[tM]),tj=(0,r.useCallback)(async e=>{tt.current=e,Q(e);let t=eQ.current;t&&(e7.current.delete(t),L(t),await tM(t,e))},[tM]),tO=(0,r.useCallback)(async(e,t)=>{if(A)return void tf({provider:e,modelId:t});let n=eQ.current;if(n)try{var r;eV(null);let a=await i(n,{type:"set_model",provider:e,modelId:t}),s={provider:a.provider,modelId:a.id};a.thinkingLevel&&(r=a.thinkingLevel,"auto"===r||"off"===r||"minimal"===r||"low"===r||"medium"===r||"high"===r||"xhigh"===r)&&ex(a.thinkingLevel),eU(s),K(e=>e?{...e,context:{...e.context,model:s}}:e)}catch(t){let e=t instanceof Error?t.message:String(t);console.error("Failed to set model:",t),eV(e)}},[A,tf]),tF=(0,r.useCallback)(async()=>{let e=eQ.current;if(e&&!eF){eH(!0),eB(null),eK(null);try{let t=await i(e,{type:"compact"});t?.reducedBy!=null&&eK(`Compacted ~${t.tokensBefore??"?"} → ~${t.tokensAfter??"?"} tokens (−${t.reducedBy})`),await tS(e,!0)}catch(e){eB(e instanceof Error?e.message:String(e))}finally{eH(!1)}}},[eF,tS]),tH=(0,r.useCallback)(async(e,t,n)=>{let r=eQ.current;if(!r)return;L(r);let a=tb(n),s=e.trim()?a?`${e}
|
|
11
|
-
|
|
12
|
-
Attached document text:
|
|
13
|
-
|
|
14
|
-
${a}`:e:a?`Attached document text:
|
|
15
|
-
|
|
16
|
-
${a}`:"",o=ef.find(e=>e.provider===ty?.provider&&e.id===ty?.modelId)?.input,l=!o||0===o.length||o.includes("image")?t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})):void 0,u={role:"user",content:`[steer] ${s}`,timestamp:Date.now()},c=j(),d=O(s,l?.length??0);e8.current.set(c,{localId:c,sessionId:r,leafId:tt.current,message:u,createdAt:Date.now(),kind:"steer",confirmKey:d,confirmCountAtCreate:d?e9.current.get(d)??0:0}),Z(e=>[...e,u]);try{await i(r,{type:"steer",message:s,...l?.length?{images:l}:{}})}catch(e){e8.current.delete(c),console.error("Failed to steer:",e)}},[tb,ef,ty]),tJ=(0,r.useCallback)(async(e,t,n)=>{let r=eQ.current;if(!r)return;L(r);let a=tb(n),s=e.trim()?a?`${e}
|
|
17
|
-
|
|
18
|
-
Attached document text:
|
|
19
|
-
|
|
20
|
-
${a}`:e:a?`Attached document text:
|
|
21
|
-
|
|
22
|
-
${a}`:"",o=ef.find(e=>e.provider===ty?.provider&&e.id===ty?.modelId)?.input,l=!o||0===o.length||o.includes("image")?t?.map(e=>({type:"image",data:e.data,mimeType:e.mimeType})):void 0,u={role:"user",content:s,timestamp:Date.now()},c=j(),d=O(s,l?.length??0);e8.current.set(c,{localId:c,sessionId:r,leafId:tt.current,message:u,createdAt:Date.now(),kind:"follow_up",confirmKey:d,confirmCountAtCreate:d?e9.current.get(d)??0:0}),Z(e=>[...e,u]);try{await i(r,{type:"follow_up",message:s,...l?.length?{images:l}:{}})}catch(e){e8.current.delete(c),console.error("Failed to follow up:",e)}},[tb,ef,ty]),tB=(0,r.useCallback)(async()=>{let e=eQ.current;if(e)try{await i(e,{type:"abort_compaction"})}catch(e){console.error("Failed to abort compaction:",e)}},[]),tz=(0,r.useCallback)(async e=>{if(ex(e),"auto"===e)return;let t=eQ.current;if(t)try{await i(t,{type:"set_thinking_level",level:e})}catch(e){console.error("Failed to set thinking level:",e)}},[]),tK=(0,r.useCallback)(async e=>{tg(e);let t=(0,N.tE)(e,eI),n=eQ.current;if(n)try{await i(n,{type:"set_tools",toolNames:t})}catch(e){console.error("Failed to set tools:",e)}},[eI,tg]),tW=(0,r.useCallback)(async e=>{th(e);let t=(0,N.tE)(eC,e),n=eQ.current;if(n)try{await i(n,{type:"set_tools",toolNames:t})}catch(e){console.error("Failed to set memory tools:",e)}},[th,eC]),tq=(0,r.useCallback)((e="smooth")=>{e2.current?.scrollIntoView({behavior:e})},[]),tG=(0,r.useCallback)(()=>{let e=e6.current,t=e3.current;if(!e||!t)return;let n=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTo({top:n-16,behavior:"smooth"})},[]);return(0,r.useEffect)(()=>{if(t){var e;let n;if(eQ.current=t.id,t.id===tr.current)return tr.current=null,()=>{tc.current&&clearTimeout(tc.current),tc.current=null,eY.current?.close(),eY.current=null,e1.current?.(),e1.current=null};tl.current=!1,to.current=0;let r=(e=t.id,(n=h().get(e))&&"idle"!==n.snapshot.phase?n.snapshot:null);r?.phase==="active"&&(eX.current=!0,ed(!0),eq({kind:"waiting_model"}),eu({type:"start"})),(async()=>{let e=await tS(t.id,!0,!0,!0);eQ.current===t.id&&(await tA(t.id),e?.running?(eX.current=!0,ed(!0),eq(a(e.state)),eu({type:"start"}),tR(t.id,{replay:!0}),e1.current?.(),e1.current=x(t.id,()=>{eQ.current===t.id&&e0.current?.(t.id,"stream_watchdog")})):e&&r?.phase==="active"?(eX.current=!1,ed(!1),eq(null),eu({type:"end"}),E(t.id)):e||r?.phase!=="active"||e0.current?.(t.id,"mount_state_load_failed"),e?.state&&(void 0!==e.state.isCompacting&&eH(e.state.isCompacting),void 0!==e.state.contextUsage&&eR(e.state.contextUsage??null),void 0!==e.state.systemPrompt&&eD(e.state.systemPrompt??null),void 0!==e.state.thinkingLevel&&ex(e.state.thinkingLevel??"auto")),e&&!eX.current&&e.state?.contextUsage===void 0&&e0.current?.(t.id,"mount_context_usage"))})()}return()=>{tr.current&&eQ.current===tr.current||(tc.current&&clearTimeout(tc.current),tc.current=null,td.current?.controller.abort(U("Session changed","AbortError")),td.current=null,eY.current?.close(),eY.current=null,e1.current?.(),e1.current=null)}},[tR,tS,tA,C,t]),(0,r.useEffect)(()=>{let e=()=>{let e=eQ.current;e&&t$(e,"foreground")},t=()=>{"visible"===document.visibilityState&&e()};return document.addEventListener("visibilitychange",t),window.addEventListener("focus",e),window.addEventListener("online",e),()=>{document.removeEventListener("visibilitychange",t),window.removeEventListener("focus",e),window.removeEventListener("online",e)}},[t$]),(0,r.useEffect)(()=>{let e=eQ.current;if(e)return ti.current=!1,(0,p.O)(t=>{let n=t.includes(e),r=ti.current;ti.current=n,n&&!eX.current?(L(e),t$(e,"running_feed_start")):!n&&r&&(L(e),eX.current?t$(e,"running_feed_stop"):tS(e,!1,!1,!0))})},[tS,t$,t?.id]),(0,r.useEffect)(()=>{let e=window.setInterval(()=>{let e=eQ.current;e&&(eX.current?(t$(e,"interval"),tm.current&&Date.now()-tp.current>25e3&&(tp.current=Date.now(),L(e),tS(e,!1,!1,!0))):Date.now()-tu.current>=3e4?(tu.current=Date.now(),L(e),tS(e,!1,!1,!0)):tS(e))},15e3);return()=>window.clearInterval(e)},[tS,t$]),(0,r.useEffect)(()=>{C&&C(z?.tree??[],Y,tj)},[z?.tree,Y,tj,C]),(0,r.useEffect)(()=>{X.length>0&&!ts.current&&(e5.current?(e5.current=!1,e4.current=!0,tG()):e4.current?eX.current||tq("smooth"):(e4.current=!0,tq("instant")))},[X.length,ec,tq,tG]),(0,r.useEffect)(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{if(em(e.models),e.thinkingLevels&&ey(e.thinkingLevels),e.thinkingLevelMaps&&ev(e.thinkingLevelMaps),e.modelList&&(eg(e.modelList),A&&e.modelList.length>0)){let t=e.defaultModel,n=t&&e.modelList.find(e=>e.id===t.modelId&&e.provider===t.provider);tf(n?{provider:n.provider,modelId:n.id}:{provider:e.modelList[0].provider,modelId:e.modelList[0].id})}}).catch(()=>{})},[A,y,tf]),(0,r.useEffect)(()=>{if(!eJ)return;let e=setTimeout(()=>eB(null),3e3);return()=>clearTimeout(e)},[eJ]),(0,r.useEffect)(()=>{if(!ez)return;let e=setTimeout(()=>eK(null),6e3);return()=>clearTimeout(e)},[ez]),{data:z,loading:W,error:G,activeLeafId:Y,messages:X,entryIds:ee,streamState:ei,agentRunning:ec,modelNames:ep,modelList:ef,modelThinkingLevels:eh,modelThinkingLevelMaps:ew,newSessionModel:eb,toolPreset:eC,memoryTools:eI,thinkingLevel:e_,retryInfo:eE,contextUsage:eA,systemPrompt:e$,forkingEntryId:eL,isCompacting:eF,compactError:eJ,compactInfo:ez,currentModel:ty,displayModel:tw,sessionStats:tC,agentPhase:eW,agentError:eG,isNew:A,sessionIdRef:eQ,sseReaderRef:eY,messagesEndRef:e2,scrollContainerRef:e6,lastUserMsgRef:e3,pendingScrollToUserRef:e5,initialScrollDoneRef:e4,handleSend:tD,handleAbort:tL,handleFork:tN,handleNavigate:tU,handleModelChange:tO,handleCompact:tF,handleSteer:tH,handleFollowUp:tJ,handleAbortCompaction:tB,handleToolPresetChange:tK,handleMemoryToolsChange:tW,handleThinkingLevelChange:tz,loadTools:tA,setActiveLeafId:Q,setData:K,setMessages:Z,dispatch:eu,setAgentRunning:ed,setForkingEntryId:eN,forkToNewSession:tP,loadMoreMessages:tx,hasMoreMessages:ea,totalMessages:en,loadedMessagesCount:eo,loadShadowedMessages:tE,handleAgentEventRef:eZ}}},14755:(e,t,n)=>{n.d(t,{ES:()=>p,IB:()=>m,SN:()=>a,tE:()=>f,xG:()=>d});let r="subagent",a=["retain","recall","reflect"],s=[],o=["read","bash","edit","write"],l=["bash","read","edit","write","grep","find","ls"],i=[...l,"kernel_plot_run","kernel_plot_render","kernel_plot_inspect","kernel_plot_stop","kernel_plot_artifacts"],u=[...l,r];function c(e){return[...e].sort().join(",")}function d(e){switch(e){case"none":return s;case"default":return o;case"workbench":return i;case"agent":return u;default:return l}}function p(e){let t=e.filter(e=>e.active).map(e=>e.name),n=t.filter(e=>!a.includes(e)),s=c(t),d=c(n);return""===s?"none":s===c(o)?"default":s===c(l)?"full":s===c(i)?"workbench":s===c(u)?"agent":""===d?"none":d===c(o)?"default":d===c(l)?"full":d===c(i)?"workbench":d===c(u)||t.includes(r)?"agent":"default"}function m(e){return a.filter(t=>e.some(e=>e.active&&e.name===t))}function f(e,t){return[...new Set([...d(e),...t])]}},16865:(e,t,n)=>{n.d(t,{O:()=>w});let r=new Set,a=null,s=null,o=null,l=null,i=null,u=!1,c=!1;function d(e){for(let t of(a=[...new Set(e.filter(e=>"string"==typeof e))],r))try{t(a)}catch{}}async function p(){try{let e=await fetch("/api/agent/running",{cache:"no-store"});if(!e.ok)return;let t=await e.json();Array.isArray(t.runningSessionIds)&&d(t.runningSessionIds)}catch{}}function m(){o||0===r.size||(p(),o=setInterval(()=>{p()},5e3))}function f(){o&&(clearInterval(o),o=null)}function g(){if(!u){if(u=!0,window.__annovibeRunningSessionSubscribe){i=window.__annovibeRunningSessionSubscribe(d);return}if("u"<typeof SharedWorker)return void m();try{(s=new SharedWorker("/running-session-worker.js?v=1",{name:"annovibe-running-sessions-v1",type:"classic"})).port.onmessage=e=>{let t=e.data;"transport"===t.type?m():"running"===t.type&&Array.isArray(t.runningSessionIds)&&(l&&clearTimeout(l),l=null,f(),d(t.runningSessionIds.filter(e=>"string"==typeof e)))},s.onerror=()=>m(),s.port.start(),s.port.postMessage({type:"subscribe"}),l=setTimeout(()=>m(),3e3)}catch{s=null,m()}}}function h(){if(u){if(u=!1,l&&clearTimeout(l),l=null,f(),i?.(),i=null,s){try{s.port.postMessage({type:"disconnect"})}catch{}try{s.port.close()}catch{}}s=null,a=null}}function y(){r.size>0&&g()}function w(e){return r.add(e),a&&e(a),c||(c=!0,window.addEventListener("pagehide",h),window.addEventListener("pageshow",y)),g(),()=>{r.delete(e),0===r.size&&(h(),c&&(c=!1,window.removeEventListener("pagehide",h),window.removeEventListener("pageshow",y)))}}}}]);
|