@sma1lboy/rove 0.8.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/dist/cli/index.js +959 -0
- package/dist/cli/kobe.js +959 -0
- package/dist/cli/pty-host-node.mjs +1015 -0
- package/dist/cli/rove.js +959 -0
- package/dist/pulse-n3cq1btw.wav +0 -0
- package/dist/skills/kobe/SKILL.md +317 -0
- package/dist/web-ui/assets/AppShell-BTjvuY-t.js +5 -0
- package/dist/web-ui/assets/AppShell-HiyATJse.css +1 -0
- package/dist/web-ui/assets/Board-DPB4h6mJ.js +1 -0
- package/dist/web-ui/assets/BoardPeek-69VJptGV.js +2 -0
- package/dist/web-ui/assets/ChatTerminal-BrP-ENHg.css +1 -0
- package/dist/web-ui/assets/ChatTerminal-MCI1aBbT.js +144 -0
- package/dist/web-ui/assets/ChatTranscript-DLthbnmB.js +1 -0
- package/dist/web-ui/assets/ConfirmDialog-CDPOtXww.js +1 -0
- package/dist/web-ui/assets/IssueIntakePanel-XYsIcIhp.js +1 -0
- package/dist/web-ui/assets/IssuePeek-CP_rAkqO.js +1 -0
- package/dist/web-ui/assets/IssuesPage-BR5mpuo-.js +1 -0
- package/dist/web-ui/assets/RichEditor-B4sEOPyN.css +1 -0
- package/dist/web-ui/assets/RichEditor-DJFl5TvH.js +173 -0
- package/dist/web-ui/assets/SettingsPage-CLRhr-sg.js +2 -0
- package/dist/web-ui/assets/SlideOver-Dxtk6Gn2.js +1 -0
- package/dist/web-ui/assets/ViewToggle-BdPCMBWa.js +1 -0
- package/dist/web-ui/assets/WorkspaceTabs-CMKlvN_Y.js +3 -0
- package/dist/web-ui/assets/WorkspaceTabs-DLzL-Tad.css +1 -0
- package/dist/web-ui/assets/active-task-GeQZqbJK.js +1 -0
- package/dist/web-ui/assets/activity-BjTd1D8q.js +1 -0
- package/dist/web-ui/assets/arrow-left-DNM2CHhS.js +1 -0
- package/dist/web-ui/assets/board-CGiK0u0M.js +1 -0
- package/dist/web-ui/assets/chips-Da37C4KZ.js +1 -0
- package/dist/web-ui/assets/columns-3-CQGAnX-4.js +1 -0
- package/dist/web-ui/assets/createLucideIcon-CM5xLVj1.js +1 -0
- package/dist/web-ui/assets/desktop-BThq9eSR.js +2 -0
- package/dist/web-ui/assets/engines-Cnxy1hW9.js +1 -0
- package/dist/web-ui/assets/external-link-BwT2u1hD.js +1 -0
- package/dist/web-ui/assets/external-store-DJlWpyYC.js +1 -0
- package/dist/web-ui/assets/harness-q9gT7Jic.js +1 -0
- package/dist/web-ui/assets/index-CgL6oDIY.js +10 -0
- package/dist/web-ui/assets/index-MuA3NLRu.css +1 -0
- package/dist/web-ui/assets/issues-1SCRkcB0.js +4 -0
- package/dist/web-ui/assets/issues-BKkua1D9.js +1 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2 +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2 +0 -0
- package/dist/web-ui/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff +0 -0
- package/dist/web-ui/assets/lazy-issue-panels-0Rhl2uhh.js +6 -0
- package/dist/web-ui/assets/plus-BbX5qXba.js +1 -0
- package/dist/web-ui/assets/react-dom-DCnDkJvp.js +1 -0
- package/dist/web-ui/assets/rotate-cw-D-UUtiD0.js +1 -0
- package/dist/web-ui/assets/routes-SBb-uSy8.js +1 -0
- package/dist/web-ui/assets/search-BxbFZoup.js +1 -0
- package/dist/web-ui/assets/settings-tPcmEHCP.js +1 -0
- package/dist/web-ui/assets/store-uT65Mask.js +2 -0
- package/dist/web-ui/assets/tabs-Dx-TnbvG.js +1 -0
- package/dist/web-ui/assets/task._taskId-BlZ0vG_1.js +2 -0
- package/dist/web-ui/assets/task._taskId-BmObFoVZ.js +1 -0
- package/dist/web-ui/assets/terminal-qBEkzc-m.js +1 -0
- package/dist/web-ui/assets/text-match-DW3sD-Rt.js +1 -0
- package/dist/web-ui/assets/time-kviT26Tm.js +1 -0
- package/dist/web-ui/assets/toast-BXjAT0ix.js +1 -0
- package/dist/web-ui/assets/triage-7QLsCY8d.js +1 -0
- package/dist/web-ui/assets/use-focus-trap-DNMrlNR0.js +1 -0
- package/dist/web-ui/assets/vendor-CdtpTJrf.js +1 -0
- package/dist/web-ui/assets/web-transport-D0bugxxv.js +1 -0
- package/dist/web-ui/assets/with-selector-B5R3h-Ow.js +1 -0
- package/dist/web-ui/assets/worktrees-C_XKA7jM.js +1 -0
- package/dist/web-ui/assets/x-7cB9X7Hi.js +1 -0
- package/dist/web-ui/favicon.ico +0 -0
- package/dist/web-ui/index.html +35 -0
- package/dist/web-ui/logo192.png +0 -0
- package/dist/web-ui/logo512.png +0 -0
- package/dist/web-ui/manifest.json +25 -0
- package/dist/web-ui/origin-policy.mjs +41 -0
- package/dist/web-ui/pty-scrollback.mjs +51 -0
- package/dist/web-ui/pty-server.mjs +212 -0
- package/dist/web-ui/pty-session-lifecycle.mjs +282 -0
- package/dist/web-ui/robots.txt +3 -0
- package/package.json +94 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff)format("woff")}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-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-duration:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", ui-monospace, Menlo, Monaco, "Cascadia Code", monospace;--color-black:#000;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--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-bg:#141413;--color-surface:#1a1917;--color-inset:#2b2a27;--color-menu:#33312e;--color-line:#3a3835;--color-line-subtle:#2b2a27;--color-line-active:#5c5853;--color-fg:#eae7df;--color-muted:#a9a39a;--color-subtle:#6b665f;--color-primary:#cc785c;--color-kobe-orange:#d97757;--color-kobe-green:#9aca86;--color-kobe-blue:#61aaf2;--color-kobe-red:#d47563;--color-kobe-yellow:#e8c96b;--color-kobe-violet:#9b87f5}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@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}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.inset-y-2{inset-block:calc(var(--spacing) * 2)}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[80vh\]{max-height:80vh}.min-h-0{min-height:0}.min-h-36{min-height:calc(var(--spacing) * 36)}.min-h-56{min-height:calc(var(--spacing) * 56)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-9{width:calc(var(--spacing) * 9)}.w-12{width:calc(var(--spacing) * 12)}.w-44{width:calc(var(--spacing) * 44)}.w-52{width:calc(var(--spacing) * 52)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[28rem\]{width:28rem}.w-\[30rem\]{width:30rem}.w-\[32rem\]{width:32rem}.w-\[34rem\]{width:34rem}.w-\[640px\]{width:640px}.w-\[920px\]{width:920px}.w-\[calc\(50\%-0\.5rem\)\]{width:calc(50% - .5rem)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-\[24rem\]{max-width:24rem}.max-w-\[85vw\]{max-width:85vw}.max-w-\[92vw\]{max-width:92vw}.max-w-\[96vw\]{max-width:96vw}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-\[1\.4rem\]{min-width:1.4rem}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[180px_minmax\(0\,1fr\)\]{grid-template-columns:180px minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.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-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.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}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x-0{border-inline-style:var(--tw-border-style);border-inline-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/20{border-color:#0003}@supports (color:color-mix(in lab, red, red)){.border-black\/20{border-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.border-kobe-green\/50{border-color:#9aca8680}@supports (color:color-mix(in lab, red, red)){.border-kobe-green\/50{border-color:color-mix(in oklab, var(--color-kobe-green) 50%, transparent)}}.border-kobe-red\/40{border-color:#d4756366}@supports (color:color-mix(in lab, red, red)){.border-kobe-red\/40{border-color:color-mix(in oklab, var(--color-kobe-red) 40%, transparent)}}.border-kobe-red\/50{border-color:#d4756380}@supports (color:color-mix(in lab, red, red)){.border-kobe-red\/50{border-color:color-mix(in oklab, var(--color-kobe-red) 50%, transparent)}}.border-kobe-yellow\/40{border-color:#e8c96b66}@supports (color:color-mix(in lab, red, red)){.border-kobe-yellow\/40{border-color:color-mix(in oklab, var(--color-kobe-yellow) 40%, transparent)}}.border-line{border-color:var(--color-line)}.border-line-active{border-color:var(--color-line-active)}.border-line-subtle{border-color:var(--color-line-subtle)}.border-primary{border-color:var(--color-primary)}.border-primary\/60{border-color:#cc785c99}@supports (color:color-mix(in lab, red, red)){.border-primary\/60{border-color:color-mix(in oklab, var(--color-primary) 60%, transparent)}}.border-transparent{border-color:#0000}.border-r-line{border-right-color:var(--color-line)}.border-b-kobe-blue{border-bottom-color:var(--color-kobe-blue)}.border-b-primary{border-bottom-color:var(--color-primary)}.border-b-transparent{border-bottom-color:#0000}.bg-\[\#28c840\]{background-color:#28c840}.bg-\[\#febc2e\]{background-color:#febc2e}.bg-\[\#ff5f57\]{background-color:#ff5f57}.bg-bg{background-color:var(--color-bg)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-inset{background-color:var(--color-inset)}.bg-inset\/40{background-color:#2b2a2766}@supports (color:color-mix(in lab, red, red)){.bg-inset\/40{background-color:color-mix(in oklab, var(--color-inset) 40%, transparent)}}.bg-kobe-blue{background-color:var(--color-kobe-blue)}.bg-kobe-green{background-color:var(--color-kobe-green)}.bg-kobe-green\/60{background-color:#9aca8699}@supports (color:color-mix(in lab, red, red)){.bg-kobe-green\/60{background-color:color-mix(in oklab, var(--color-kobe-green) 60%, transparent)}}.bg-kobe-orange{background-color:var(--color-kobe-orange)}.bg-kobe-red{background-color:var(--color-kobe-red)}.bg-kobe-red\/10{background-color:#d475631a}@supports (color:color-mix(in lab, red, red)){.bg-kobe-red\/10{background-color:color-mix(in oklab, var(--color-kobe-red) 10%, transparent)}}.bg-kobe-yellow{background-color:var(--color-kobe-yellow)}.bg-kobe-yellow\/10{background-color:#e8c96b1a}@supports (color:color-mix(in lab, red, red)){.bg-kobe-yellow\/10{background-color:color-mix(in oklab, var(--color-kobe-yellow) 10%, transparent)}}.bg-line{background-color:var(--color-line)}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#cc785c1a}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-subtle{background-color:var(--color-subtle)}.bg-surface{background-color:var(--color-surface)}.bg-surface\/50{background-color:#1a191780}@supports (color:color-mix(in lab, red, red)){.bg-surface\/50{background-color:color-mix(in oklab, var(--color-surface) 50%, transparent)}}.bg-surface\/60{background-color:#1a191799}@supports (color:color-mix(in lab, red, red)){.bg-surface\/60{background-color:color-mix(in oklab, var(--color-surface) 60%, transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-\[12vh\]{padding-top:12vh}.pr-0\.5{padding-right:calc(var(--spacing) * .5)}.pb-0{padding-bottom:0}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.leading-\[1\.15rem\]{--tw-leading:1.15rem;line-height:1.15rem}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.whitespace-pre-wrap{white-space:pre-wrap}.tab-1{tab-size:1}.tab-2{tab-size:2}.tab-3{tab-size:3}.tab-9{tab-size:9}.text-bg{color:var(--color-bg)}.text-fg{color:var(--color-fg)}.text-fg\/90{color:#eae7dfe6}@supports (color:color-mix(in lab, red, red)){.text-fg\/90{color:color-mix(in oklab, var(--color-fg) 90%, transparent)}}.text-kobe-blue{color:var(--color-kobe-blue)}.text-kobe-green{color:var(--color-kobe-green)}.text-kobe-orange{color:var(--color-kobe-orange)}.text-kobe-red{color:var(--color-kobe-red)}.text-kobe-red\/90{color:#d47563e6}@supports (color:color-mix(in lab, red, red)){.text-kobe-red\/90{color:color-mix(in oklab, var(--color-kobe-red) 90%, transparent)}}.text-kobe-violet{color:var(--color-kobe-violet)}.text-kobe-yellow{color:var(--color-kobe-yellow)}.text-kobe-yellow\/70{color:#e8c96bb3}@supports (color:color-mix(in lab, red, red)){.text-kobe-yellow\/70{color:color-mix(in oklab, var(--color-kobe-yellow) 70%, transparent)}}.text-muted{color:var(--color-muted)}.text-primary{color:var(--color-primary)}.text-subtle{color:var(--color-subtle)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-0{opacity:0}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.\[visual\:serve\]{visual:serve}@media (hover:hover){.group-hover\:border-primary:is(:where(.group):hover *){border-color:var(--color-primary)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--color-primary)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/card\:opacity-100:is(:where(.group\/card):hover *),.group-hover\/wrap\:opacity-100:is(:where(.group\/wrap):hover *){opacity:1}}.placeholder\:text-subtle::placeholder{color:var(--color-subtle)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-2:after{content:var(--tw-content);top:calc(var(--spacing) * 2)}.after\:right-0:after{content:var(--tw-content);right:0}.after\:bottom-full:after{content:var(--tw-content);bottom:100%}.after\:left-full:after{content:var(--tw-content);left:100%}.after\:z-10:after{content:var(--tw-content);z-index:10}.after\:mb-1:after{content:var(--tw-content);margin-bottom:var(--spacing)}.after\:ml-1:after{content:var(--tw-content);margin-left:var(--spacing)}.after\:hidden:after{content:var(--tw-content);display:none}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-line:after{content:var(--tw-content);border-color:var(--color-line)}.after\:bg-menu:after{content:var(--tw-content);background-color:var(--color-menu)}.after\:px-1\.5:after{content:var(--tw-content);padding-inline:calc(var(--spacing) * 1.5)}.after\:py-0\.5:after{content:var(--tw-content);padding-block:calc(var(--spacing) * .5)}.after\:text-\[10px\]:after{content:var(--tw-content);font-size:10px}.after\:whitespace-nowrap:after{content:var(--tw-content);white-space:nowrap}.after\:text-fg:after{content:var(--tw-content);color:var(--color-fg)}.after\:content-\[attr\(data-tip\)\]:after{--tw-content:attr(data-tip);content:var(--tw-content)}.first\:border-l-0:first-child{border-left-style:var(--tw-border-style);border-left-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:border-line-active:focus-within{border-color:var(--color-line-active)}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-kobe-red:hover{border-color:var(--color-kobe-red)}.hover\:border-kobe-red\/50:hover{border-color:#d4756380}@supports (color:color-mix(in lab, red, red)){.hover\:border-kobe-red\/50:hover{border-color:color-mix(in oklab, var(--color-kobe-red) 50%, transparent)}}.hover\:border-line:hover{border-color:var(--color-line)}.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:bg-bg:hover{background-color:var(--color-bg)}.hover\:bg-inset:hover{background-color:var(--color-inset)}.hover\:bg-inset\/50:hover{background-color:#2b2a2780}@supports (color:color-mix(in lab, red, red)){.hover\:bg-inset\/50:hover{background-color:color-mix(in oklab, var(--color-inset) 50%, transparent)}}.hover\:bg-kobe-red\/10:hover{background-color:#d475631a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-kobe-red\/10:hover{background-color:color-mix(in oklab, var(--color-kobe-red) 10%, transparent)}}.hover\:bg-kobe-red\/20:hover{background-color:#d4756333}@supports (color:color-mix(in lab, red, red)){.hover\:bg-kobe-red\/20:hover{background-color:color-mix(in oklab, var(--color-kobe-red) 20%, transparent)}}.hover\:bg-primary\/10:hover{background-color:#cc785c1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:text-fg:hover{color:var(--color-fg)}.hover\:text-kobe-red:hover{color:var(--color-kobe-red)}.hover\:text-kobe-yellow:hover{color:var(--color-kobe-yellow)}.hover\:text-muted:hover{color:var(--color-muted)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:after\:block:hover:after{content:var(--tw-content);display:block}}.focus\:border-line-active:focus{border-color:var(--color-line-active)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:opacity-100:focus-visible{opacity:1}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-60:disabled{opacity:.6}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media (width>=40rem){.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=48rem){.md\:inline{display:inline}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}}}*{box-sizing:border-box}html,body,#app{height:100%}body{background:var(--color-bg);color:var(--color-fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:13px}html[data-kobe-desktop=true] [data-kobe-topbar]{-webkit-app-region:drag;-webkit-user-select:none;user-select:none}html[data-kobe-desktop=true] [data-kobe-topbar] button,html[data-kobe-desktop=true] [data-kobe-topbar] input,html[data-kobe-desktop=true] [data-kobe-topbar] select,html[data-kobe-desktop=true] [data-kobe-topbar] label,html[data-kobe-desktop=true] [data-kobe-topbar] a,html[data-kobe-desktop=true] [data-kobe-topbar] [role=button]{-webkit-app-region:no-drag}*{scrollbar-width:none}::-webkit-scrollbar{width:0;height:0}::-webkit-scrollbar-thumb{background:0 0}::-webkit-scrollbar-track{background:0 0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{o as e,r as t}from"./terminal-qBEkzc-m.js";import{c as n,n as r}from"./tabs-Dx-TnbvG.js";import{t as i}from"./store-uT65Mask.js";import{n as a}from"./active-task-GeQZqbJK.js";import{t as o}from"./settings-tPcmEHCP.js";import{t as s}from"./text-match-DW3sD-Rt.js";var c=[{key:`backlog`,title:`Backlog`,accent:`text-subtle`,alwaysVisible:!0},{key:`in_progress`,title:`In progress`,accent:`text-kobe-orange`,alwaysVisible:!0},{key:`done`,title:`Done`,accent:`text-kobe-green`,alwaysVisible:!0}],l=new Set([`done`]);function u(e){return e.status===`done`?`done`:e.taskId!==void 0&&e.taskId!==``?`in_progress`:`backlog`}function d(e){return e.taskId!==void 0&&e.taskId!==``}function f(e,t){return e.issue.created===t.issue.created?t.issue.id-e.issue.id:e.issue.created<t.issue.created?1:-1}function p(e){let t=new Map,n=(e,n)=>{let r=t.get(e);r?r.push(n):t.set(e,[n])};for(let t of e)n(u(t.issue),t);for(let e of t.values())e.sort(f);let r=(e,t)=>!l.has(e)||t.length<=30?{cards:t,hiddenCount:0}:{cards:t.slice(0,30),hiddenCount:t.length-30};return c.map(e=>({...e,...r(e.key,t.get(e.key)??[])})).filter(e=>e.alwaysVisible||e.cards.length+e.hiddenCount>0)}function m(e){return e.reduce((e,t)=>e+t.cards.length,0)}function h(e){let t=new Map;for(let n of e){let e=n.repo,r=t.get(e);r?r.push(n):t.set(e,[n])}let n=[...t.keys()];return n.map(e=>({repo:e,label:_(e,n),columns:p(t.get(e)??[])})).sort((e,t)=>e.label.localeCompare(t.label))}function g(e){let t=e.replace(/\/+$/,``);return t.split(`/`).pop()||t}function _(e,t){let n=g(e);return t.some(t=>t!==e&&g(t)===n)?e.replace(/\/+$/,``).split(`/`).slice(-2).join(`/`):n}function v(e,t,n){let r=[];for(let i of t){let t=e[i];if(!(!t||!t.exists))for(let e of t.issues){let t=n.get(`${i}:${e.id}`);r.push(t&&!e.taskId?{repo:i,issue:{...e,taskId:t.taskId}}:{repo:i,issue:e})}}return r}function y(e){let t=new Map;for(let{repo:n}of e)t.set(n,(t.get(n)??0)+1);let n=[...t.keys()];return n.map(e=>({repo:e,label:_(e,n),count:t.get(e)??0})).sort((e,t)=>e.label.localeCompare(t.label))}function b(e,t,n){return e.filter(({repo:e,issue:r})=>n&&e!==n?!1:s(`#${r.id} ${r.title} ${r.body}`,t))}function x(e){let t=v(e.issueData,e.issueRepos,e.pendingLinks),n=y(t),r=h(b(t,e.query,e.repoFilter));return e.repoFilter&&r.length===0&&e.issueRepos.includes(e.repoFilter)&&r.push({repo:e.repoFilter,label:_(e.repoFilter,e.issueRepos),columns:p([])}),{allIssues:t,repoChips:n,projectBoards:r,shownCount:r.reduce((e,t)=>e+m(t.columns),0),hasAnyCard:t.length>0}}async function S(){let t=await e.get(`/api/projects`,{label:`load projects`});return Array.isArray(t.projects)?t.projects.filter(e=>typeof e==`string`):[]}async function C(t){return e.get(`/api/issues`,{query:{repoRoot:t},label:`load issues`})}async function w(t,n){return e.post(`/api/issues`,{repoRoot:t,op:n},{label:`update issues`})}async function T(e,t){return w(e,{type:`create`,...t})}async function E(e,t,n){return w(e,{type:`setStatus`,id:t,status:n})}async function D(e,t,n){return w(e,{type:`update`,id:t,...n})}async function O(e,t,n){return w(e,{type:`link`,id:t,taskId:n})}async function k(e,t){return w(e,{type:`delete`,id:t})}async function A(){let t=await e.getOr(`/api/cli-invocation`,{},{label:`load CLI invocation`});return typeof t.api==`string`&&t.api.trim().length>0?t.api:`rove api`}var j=[`open`,`doing`,`hold`,`done`],M={open:{title:`Backlog`,accent:`text-kobe-blue`},doing:{title:`In session`,accent:`text-kobe-orange`},hold:{title:`Blocked`,accent:`text-kobe-yellow`},done:{title:`Done`,accent:`text-kobe-green`}};function N(e){return e!==`done`}function P(e,t){let n=(t.query??``).trim().toLowerCase(),r=t.statuses&&t.statuses.length>0?t.statuses:null;return e.filter(e=>r&&!r.includes(e.status)?!1:!n||`#${e.id} ${e.title} ${e.body}`.toLowerCase().includes(n))}function F(e){let t={open:[],doing:[],hold:[],done:[]};for(let n of e)t[n.status]?.push(n);let n=(e,t)=>e.created===t.created?t.id-e.id:e.created<t.created?1:-1;return t.open.sort(n),t.doing.sort(n),t.hold.sort(n),t.done.sort((e,t)=>t.id-e.id),t}function I(e,t=[]){let n=new Map;for(let e of t)e.trim().length>0&&n.set(e,0);let r=new Set(e.filter(e=>!e.archived&&e.kind===`main`&&e.repo).map(e=>e.repo));for(let e of r)n.set(e,n.get(e)??0);let i=new Set(n.keys());for(let t of e)t.archived||!t.repo||i.size>0&&!i.has(t.repo)||n.set(t.repo,(n.get(t.repo)??0)+1);let a=[...n.keys()];return a.map(e=>({repo:e,label:_(e,a),count:n.get(e)??0})).sort((e,t)=>e.label.localeCompare(t.label))}function L(e,t){return e.length===0?null:t&&e.some(e=>e.repo===t)?t:e[0]?.repo??null}function R(e,t=`rove api`){let n=[`Work on user story #${e.id}: ${e.title}`,``],r=e.body.trim();return r&&n.push(r,``),n.push(`Treat this as the story's dedicated Rove task session: work only in this task worktree, and preserve any repo init instructions already delivered to the session.`,`Before finishing, verify the acceptance criteria implied by the story and summarize what changed plus any verification still needed.`,`Then merge the task branch back into the current project's main branch after the worktree is clean and checks pass.`,`When the work lands, run: ${t} issue-set-status --repo . --id ${e.id} --status done`),n.join(`
|
|
2
|
+
`)}function z(e,t=`rove api`){let n=[`Work on user story #${e.id}: ${e.title}`,``],r=e.body.trim();return r&&n.push(r,``),n.push(`You are working directly in the project checkout — no dedicated worktree or branch was created. Keep changes reviewable and do not switch branches unless asked.`,`Before finishing, verify the acceptance criteria implied by the story and summarize what changed plus any verification still needed.`,`When the work lands, run: ${t} issue-set-status --repo . --id ${e.id} --status done`),n.join(`
|
|
3
|
+
`)}function B(e,t=`rove api`){return[`Finish user story #${e.id}: ${e.title}`,``,`Verify the acceptance criteria implied by the story, then summarize what changed and any verification still needed.`,`Then merge this task branch back into the current project's main branch after the worktree is clean and checks pass. Resolve conflicts if needed.`,`When the work lands, run: ${t} issue-set-status --repo . --id ${e.id} --status done`].join(`
|
|
4
|
+
`)}async function V(e,r,i,o){let s=await H(e,r,i,o);a(s);let c=await A().catch(()=>`rove api`);return await t(n(s),s,R(r,c)),{taskId:s}}async function H(e,t,n,r){let a=n?.trim()||await o(),{taskId:s}=await i(`task.create`,{repo:e,title:`#${t.id} ${t.title}`,...a?{vendor:a}:{},...r?.trim()?{effort:r.trim()}:{}});return await O(e,t.id,s).catch(()=>{}),s}async function U(e,n,o={}){let s=o.placement??`task`;if(s===`task`){let{taskId:t}=await V(e,n,o.vendor,o.effort);return{taskId:t,workspaceTaskId:t}}let c=await A().catch(()=>`rove api`),{task:l}=await i(`task.ensureMain`,{repo:e}),u=l.id;if(s===`projectWorktree`){let i=await H(e,n,o.vendor,o.effort);return a(u),await t(r(u,i),i,R(n,c)),{taskId:i,workspaceTaskId:u}}let d=o.vendor?.trim();return d&&await i(`task.setVendor`,{taskId:u,vendor:d}),a(u),await E(e,n.id,`doing`).catch(()=>{}),await t(r(u),u,z(n,c)),{taskId:u,workspaceTaskId:u}}async function W(e,r){let i=await A().catch(()=>`rove api`);await t(n(e),e,B(r,i))}export{d as _,k as a,P as c,W as d,V as f,x as g,D as h,T as i,F as l,U as m,M as n,C as o,L as p,N as r,S as s,j as t,I as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{IssuesPage as e}from"./IssuesPage-BR5mpuo-.js";var t=e;export{t as component};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/IssueIntakePanel-XYsIcIhp.js","assets/terminal-qBEkzc-m.js","assets/tabs-Dx-TnbvG.js","assets/createLucideIcon-CM5xLVj1.js","assets/SlideOver-Dxtk6Gn2.js","assets/x-7cB9X7Hi.js","assets/use-focus-trap-DNMrlNR0.js","assets/issues-1SCRkcB0.js","assets/store-uT65Mask.js","assets/active-task-GeQZqbJK.js","assets/settings-tPcmEHCP.js","assets/text-match-DW3sD-Rt.js","assets/RichEditor-DJFl5TvH.js","assets/with-selector-B5R3h-Ow.js","assets/react-dom-DCnDkJvp.js","assets/engines-Cnxy1hW9.js","assets/external-store-DJlWpyYC.js","assets/vendor-CdtpTJrf.js","assets/RichEditor-B4sEOPyN.css","assets/IssuePeek-CP_rAkqO.js","assets/external-link-BwT2u1hD.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{l as e}from"./terminal-qBEkzc-m.js";import{y as t}from"./tabs-Dx-TnbvG.js";import{d as n,t as r}from"./createLucideIcon-CM5xLVj1.js";import{i,n as a,r as o}from"./store-uT65Mask.js";import{i as s}from"./chips-Da37C4KZ.js";import{o as c}from"./issues-1SCRkcB0.js";var l=r(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),u=r(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),d=e(t(),1);function f(e){let{issueSnapshots:t}=a(),[n,r]=(0,d.useState)({}),[i,s]=(0,d.useState)({}),[l,u]=(0,d.useState)(!1),f=(0,d.useRef)(new Map),p=(0,d.useRef)(new Map),m=(0,d.useRef)(new Map),h=(0,d.useRef)(new Map),g=(0,d.useCallback)(e=>{let t=(f.current.get(e)??0)+1;return f.current.set(e,t),t},[]),_=(0,d.useCallback)((e,t,n=e.repoRoot)=>{t<(p.current.get(n)??0)||(p.current.set(n,t),e.repoRoot&&e.repoRoot!==n&&h.current.set(n,e.repoRoot),r(t=>({...t,[n]:{...e,repoRoot:n}})),s(e=>{if(!(n in e))return e;let{[n]:t,...r}=e;return r}))},[]),v=(0,d.useCallback)(e=>{e.length!==0&&(u(!0),Promise.all(e.map(async e=>{let t=g(e);try{_(await c(e),t,e)}catch(t){s(n=>({...n,[e]:t instanceof Error?t.message:String(t)}))}})).finally(()=>u(!1)))},[g,_]),y=(0,d.useMemo)(()=>[...e].join(`
|
|
3
|
+
`),[e]);return(0,d.useEffect)(()=>{v(y?y.split(`
|
|
4
|
+
`):[])},[y]),(0,d.useEffect)(()=>{let e=new Map(Object.values(t).map(e=>[o(e.repoRoot),e]));for(let t of y?y.split(`
|
|
5
|
+
`):[]){let n=h.current.get(t),r=e.get(o(t))??(n?e.get(o(n)):void 0);if(!r||m.current.get(t)===r)continue;m.current.set(t,r);let i=g(t);_(r,i,t)}},[t,y,g,_]),{data:n,failed:i,loading:l,pending:(0,d.useMemo)(()=>(y?y.split(`
|
|
6
|
+
`):[]).some(e=>!(e in n)&&!(e in i)),[y,n,i]),refresh:v}}var p=n();function m({issue:e,selected:t=!1,onOpen:n,onDelete:r}){return(0,p.jsxs)(`div`,{className:`group/card relative`,"data-issue-card":e.id,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:n,className:`flex w-full cursor-pointer flex-col gap-1.5 border p-3 text-left transition-colors ${t?`border-primary bg-inset`:`border-line bg-surface hover:border-primary hover:bg-inset`}`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px] text-subtle`,children:[`#`,e.id]}),(0,p.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] text-fg`,children:e.title})]}),(0,p.jsx)(`div`,{className:`flex items-center gap-2 text-[11px] text-subtle`,children:(0,p.jsx)(`span`,{className:`font-mono`,children:e.created})})]}),(0,p.jsxs)(`div`,{className:`absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity focus-within:opacity-100 group-hover/card:opacity-100`,children:[(0,p.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Open issue #${e.id}`,"data-tip":`Open issue detail`,className:`relative flex h-5 w-5 items-center justify-center border border-line bg-surface text-subtle hover:border-primary hover:text-fg ${s}`,children:(0,p.jsx)(l,{size:11,strokeWidth:1.8})}),(0,p.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Delete issue #${e.id}`,"data-tip":`Delete issue`,className:`relative flex h-5 w-5 items-center justify-center border border-line bg-surface text-subtle hover:border-kobe-red/50 hover:text-kobe-red ${s}`,children:(0,p.jsx)(u,{size:11,strokeWidth:1.8})})]})]})}var h=(0,d.lazy)(()=>i(()=>import(`./IssueIntakePanel-XYsIcIhp.js`).then(e=>({default:e.IssueIntakePanel})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),g=(0,d.lazy)(()=>i(()=>import(`./IssuePeek-CP_rAkqO.js`).then(e=>({default:e.IssuePeek})),__vite__mapDeps([19,1,2,3,20,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])));function _({children:e}){return(0,p.jsx)(d.Suspense,{fallback:(0,p.jsx)(`div`,{className:`fixed inset-0 z-40 flex justify-end`,children:(0,p.jsx)(`div`,{className:`relative flex h-full w-[640px] max-w-[92vw] items-center justify-center border-l border-line bg-bg text-[12px] text-subtle shadow-2xl`,children:`Loading…`})}),children:e})}export{f as a,m as i,h as n,g as r,_ as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CM5xLVj1.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./terminal-qBEkzc-m.js";import{y as t}from"./tabs-Dx-TnbvG.js";var n=e((e=>{var n=t();function r(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function i(){}var a={d:{f:i,r:function(){throw Error(r(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},o=Symbol.for(`react.portal`);function s(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}var c=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function l(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=a,e.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(r(299));return s(e,t,null,n)},e.flushSync=function(e){var t=c.T,n=a.p;try{if(c.T=null,a.p=2,e)return e()}finally{c.T=t,a.p=n,a.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,a.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&a.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=l(n,t.crossOrigin),i=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?a.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:i,fetchPriority:o}):n===`script`&&a.d.X(e,{crossOrigin:r,integrity:i,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`)if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=l(t.as,t.crossOrigin);a.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0})}}else t??a.d.M(e)},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=l(n,t.crossOrigin);a.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`)if(t){var n=l(t.as,t.crossOrigin);a.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0})}else a.d.m(e)},e.requestFormReset=function(e){a.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return c.H.useFormState(e,t,n)},e.useFormStatus=function(){return c.H.useHostTransitionStatus()},e.version=`19.2.8`})),r=e(((e,t)=>{function r(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(e){console.error(e)}}r(),t.exports=n()}));export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CM5xLVj1.js";var t=e(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AppShell as e}from"./AppShell-BTjvuY-t.js";var t=e;export{t as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CM5xLVj1.js";var t=e(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./terminal-qBEkzc-m.js";async function t(){return e.get(`/api/settings`,{label:`load settings`})}async function n(){try{let e=await t();return typeof e.defaultEngine==`string`&&e.defaultEngine.trim()?e.defaultEngine.trim():null}catch{return null}}async function r(t){return e.patch(`/api/settings`,t,{label:`save settings`})}export{t as n,r,n as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tabs-Dx-TnbvG.js","assets/terminal-qBEkzc-m.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{l as e,o as t}from"./terminal-qBEkzc-m.js";import{u as n,y as r}from"./tabs-Dx-TnbvG.js";import{n as i,s as a}from"./createLucideIcon-CM5xLVj1.js";var o=e(r(),1),s=`modulepreload`,c=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=c(t,n),t=u(t),t in l)return;l[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:s,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},d=`kobe.dispatch.deliveredAt.`;function f(e){try{let t=localStorage.getItem(d+e),n=t?Number.parseInt(t,10):0;return Number.isFinite(n)?n:0}catch{return 0}}function p(e,t){try{localStorage.setItem(d+e,String(t))}catch{}}function m(e,t){return e.at>t}async function h(e,t){if(!m(e,f(e.taskId)))return!1;p(e.taskId,e.at);let n=t?.ensureTab,r=t?.send;if(!n||!r){let e=await u(()=>import(`./tabs-Dx-TnbvG.js`).then(e=>e.g),__vite__mapDeps([0,1])),t=await u(()=>import(`./terminal-qBEkzc-m.js`).then(e=>e.i),[]);n??=e.ensureEngineTab,r??=t.sendPtyText}try{let t=n(e.taskId);return await r(t,e.taskId,e.text),!0}catch(t){return p(e.taskId,e.at-1),console.warn(`[dispatch-delivery] failed to deliver into session`,e.taskId,t),!1}}function g(e){return e.length>1?e.replace(/\/+$/,``):e}function _(e,t){let n=g(t),r=new Set([t]);for(let t of e){let e=g(t.repo),i=g(t.worktreePath);(e===n||i===n)&&(t.repo&&r.add(t.repo),t.worktreePath&&r.add(t.worktreePath))}return[...r]}function v(e,t){let n=new Set;for(let e of t)e.repo&&n.add(g(e.repo)),e.worktreePath&&n.add(g(e.worktreePath));let r=Object.entries(e).filter(([e])=>n.has(g(e)));return r.length===Object.keys(e).length?e:Object.fromEntries(r)}function y(e={}){let n=e.path??`/api/rpc`,r=e.post??t.post.bind(t);return{async request(e,t){return(await r(n,{name:e,payload:t},{label:`rpc ${e}`})).result}}}var b=y(),x={tasks:[],activeTaskId:null,engineStates:{},update:null,jobs:{},worktreeChanges:{},issueSnapshots:{},deliver:null,uiPrefs:null,hydrated:!1,daemonConnected:!1,streamConnected:!1},S=new Set;function C(e){x={...x,...e};for(let e of S)e()}function w(e,t){let n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}function T(e,t){return!e&&t===`idle`}function E(e,t){if(t.phase===`running`)return{...e,[t.taskId]:t};let{[t.taskId]:n,...r}=e;return r}function D(e,t,n){let r={...e};for(let e of _(t,n.repoRoot))r[e]={...n,repoRoot:e};return r}function O(e){let t=new Set(e.map(e=>e.id));C({tasks:e,engineStates:w(x.engineStates,t),jobs:w(x.jobs,t),issueSnapshots:v(x.issueSnapshots,e)}),n(t)}function k(e){switch(e.channel){case`task.snapshot`:O(e.payload.tasks);break;case`active-task`:C({activeTaskId:e.payload.taskId});break;case`engine-state`:{let t=x.engineStates[e.payload.taskId]?.state,n=x.tasks.find(t=>t.id===e.payload.taskId);if(T(n,e.payload.state))break;a(e.payload.taskId,n?.title||n?.branch||e.payload.taskId,t,e.payload.state),C({engineStates:{...x.engineStates,[e.payload.taskId]:e.payload}});break}case`update`:C({update:e.payload.info});break;case`task.jobs`:C({jobs:E(x.jobs,e.payload)});break;case`worktree.changes`:C({worktreeChanges:e.payload.changes});break;case`issue.snapshot`:C({issueSnapshots:D(x.issueSnapshots,x.tasks,e.payload)});break;case`session.deliver`:C({deliver:e.payload}),h(e.payload);break;case`ui-prefs`:C({uiPrefs:e.payload}),i(e.payload.theme);break}}function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function j(e){if(!A(e)||!Array.isArray(e.tasks)||typeof e.activeTaskId!=`string`&&e.activeTaskId!==null||!A(e.engineStates)||typeof e.connected!=`boolean`)return null;for(let t of[`jobs`,`worktreeChanges`,`issueSnapshots`])if(e[t]!==void 0&&!A(e[t]))return null;return e.uiPrefs!==void 0&&e.uiPrefs!==null&&!A(e.uiPrefs)?null:e}function M(e){return Math.min(1e4,500*2**Math.max(0,e))}var N=null,P=0,F=null;function I(e){return e!==null&&e.readyState!==EventSource.CLOSED}function L(e){P=0,C({tasks:e.tasks,activeTaskId:e.activeTaskId,engineStates:e.engineStates,update:e.update,jobs:e.jobs??{},worktreeChanges:e.worktreeChanges??{},issueSnapshots:e.issueSnapshots??{},deliver:e.deliver??null,uiPrefs:e.uiPrefs??null,hydrated:!0,daemonConnected:e.connected,streamConnected:!0}),e.uiPrefs&&i(e.uiPrefs.theme),e.connected&&e.deliver&&h(e.deliver),e.connected&&n(new Set(e.tasks.map(e=>e.id)))}function R(){if(F!==null)return;let e=M(P);P+=1,F=setTimeout(()=>{F=null,S.size>0&&z()},e)}function z(){I(N)||(N=new EventSource(`/events`),N.addEventListener(`open`,()=>{P=0,C({streamConnected:!0})}),N.addEventListener(`snapshot`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable snapshot frame`);return}let n=j(t);if(!n){console.warn(`[store] dropped malformed snapshot frame`);return}L(n)}),N.addEventListener(`channel`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable channel frame`);return}if(!A(t)||typeof t.channel!=`string`){console.warn(`[store] dropped malformed channel frame`);return}k(t),x.daemonConnected||C({daemonConnected:!0})}),N.addEventListener(`error`,()=>{C({streamConnected:!1}),N&&N.readyState===EventSource.CLOSED&&(N.close(),N=null,R())}))}function B(e){return z(),S.add(e),()=>{S.delete(e)}}function V(){return x}function H(){return(0,o.useSyncExternalStore)(B,V,V)}async function U(e,t){return b.request(e,t)}export{u as i,H as n,g as r,U as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,l as t,s as n,t as r}from"./terminal-qBEkzc-m.js";var i=n((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=N(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=N(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return N(M(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function P(e,t,n){if(e==null)return e;var r=[],i=0;return N(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function F(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var I=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},L={map:P,forEach:function(e,t,n){P(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return P(e,function(){t++}),t},toArray:function(e){return P(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=L,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=O,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:F}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,I)}catch(e){I(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.8`})),a=n(((e,t)=>{t.exports=i()})),o=t(a(),1),s={empty:{hasPty:!1,titleMode:`static`,label:`New tab`},vendor:{hasPty:!0,titleMode:`count`,label:`Vendor`},terminal:{hasPty:!0,titleMode:`count`,label:`Terminal`},transcript:{hasPty:!1,titleMode:`static`,label:`Chat`},file:{hasPty:!1,titleMode:`static`,label:`File`}};function c(e){return s[e].hasPty}function l(e,t){let n=s[e];if(n.titleMode===`count`){let r=t.filter(t=>t.kind===e).length+1;return`${n.label} ${r}`}return n.label}var u=e({addEmptyTab:()=>j,addTab:()=>k,clearSelectedTask:()=>O,clearSplitTab:()=>L,closeTab:()=>P,configureTab:()=>M,consumePendingPrompt:()=>T,ensureEngineTab:()=>A,migrateStoredTab:()=>h,openFilePreviewTab:()=>N,pruneMissingTasks:()=>D,resetLayout:()=>E,selectTask:()=>S,setActiveTab:()=>F,setPendingPrompt:()=>w,setSplitTab:()=>I,useTabsState:()=>R,withTaskTab:()=>m}),d=`kobe-web.tabs`,f={selectedTaskId:null,tabsByTask:{},activeByTask:{},splitByTask:{}};function p(){return{id:x(),kind:`empty`,title:l(`empty`,[])}}function m(e,t){let n=e.tabsByTask[t]??[],r=e.activeByTask[t],i=e.splitByTask[t],a=e;if(i&&(!n.some(e=>e.id===i)||i===r)){let{[t]:n,...r}=e.splitByTask;a={...e,splitByTask:r}}if(n.length>0)return r&&n.some(e=>e.id===r)?a:{...a,activeByTask:{...e.activeByTask,[t]:n[0].id}};let o=p();return{...a,tabsByTask:{...e.tabsByTask,[t]:[o]},activeByTask:{...e.activeByTask,[t]:o.id}}}function h(e){let t=e,n=typeof e?.kind==`string`?e.kind:void 0;if(n===`notes`)return p();let r=n===`chat`?`vendor`:n??`vendor`,i=r in s?r:`vendor`;return i===`file`&&typeof t.path!=`string`?p():{...t,kind:i}}function g(){try{let e=localStorage.getItem(d);if(e){let t=JSON.parse(e),n=Object.fromEntries(Object.entries(t.tabsByTask??{}).map(([e,t])=>[e,t.map(h)])),r={selectedTaskId:t.selectedTaskId??null,tabsByTask:n,activeByTask:t.activeByTask??{},splitByTask:t.splitByTask??{}};return r.selectedTaskId?m(r,r.selectedTaskId):r}}catch{}return f}var _=typeof localStorage>`u`?f:g(),v=new Set;function y(e){_=e;try{localStorage.setItem(d,JSON.stringify(_))}catch{}for(let e of v)e()}var b=0;function x(){try{return crypto.randomUUID()}catch{return b+=1,`tab-${Date.now().toString(36)}-${b}`}}function S(e){y(m({..._,selectedTaskId:e},e))}var C=new Map;function w(e,t){C.set(e,t)}function T(e){let t=C.get(e);return t===void 0?null:(C.delete(e),t)}function E(){for(let e of Object.values(_.tabsByTask))for(let t of e)c(t.kind)&&r(t.id);y({...f})}function D(e){let t=t=>t.kind===`vendor`&&!!t.taskId&&!e.has(t.taskId),n=Object.keys(_.tabsByTask).filter(t=>!e.has(t)),i=Object.entries(_.tabsByTask).filter(([n,r])=>e.has(n)&&r.some(t)),a=_.selectedTaskId!==null&&!e.has(_.selectedTaskId);if(n.length===0&&i.length===0&&!a)return;for(let e of n)for(let t of _.tabsByTask[e]??[])c(t.kind)&&r(t.id);let o={..._.tabsByTask},s={..._.activeByTask},l={..._.splitByTask};for(let e of n)delete o[e],delete s[e],delete l[e];for(let[e,n]of i){for(let e of n)t(e)&&r(e.id);o[e]=n.filter(e=>!t(e))}let u={selectedTaskId:a?null:_.selectedTaskId,tabsByTask:o,activeByTask:s,splitByTask:l};for(let[e]of i)u=m(u,e);y(u)}function O(){y({..._,selectedTaskId:null})}function k(e,t){let n=_.tabsByTask[e]??[],r=x(),i={id:r,kind:`vendor`,title:l(`vendor`,n),...t&&t!==e?{taskId:t}:{}};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...n,i]},activeByTask:{..._.activeByTask,[e]:r},splitByTask:_.splitByTask}),r}function A(e){let t=_.tabsByTask[e]??[],n=t.find(e=>e.kind===`vendor`&&!e.taskId);if(n)return n.id;let r=x(),i={id:r,kind:`vendor`,title:l(`vendor`,t)};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...t,i]}}),r}function j(e){let t=_.tabsByTask[e]??[],n=p();return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...t,n]},activeByTask:{..._.activeByTask,[e]:n.id},splitByTask:_.splitByTask}),n.id}function M(e,t,n){let r=_.tabsByTask[e]??[],i=r.map(e=>e.id===t?n===`vendor`?{id:t,kind:n,title:l(`vendor`,r)}:n===`transcript`?{id:t,kind:n,title:l(`transcript`,r)}:{id:t,kind:n,title:l(`terminal`,r)}:e);y({..._,tabsByTask:{..._.tabsByTask,[e]:i},activeByTask:{..._.activeByTask,[e]:t},splitByTask:_.splitByTask})}function N(e,t){let n=_.tabsByTask[e]??[],r=n.find(e=>e.kind===`file`&&e.path===t);if(r)return F(e,r.id),r.id;let i=x(),a={id:i,kind:`file`,title:t.split(`/`).at(-1)??t,path:t};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...n,a]},activeByTask:{..._.activeByTask,[e]:i},splitByTask:_.splitByTask}),i}function P(e,t){let n=_.tabsByTask[e]??[],r=n.findIndex(e=>e.id===t),i=n.filter(e=>e.id!==t);i.length===0&&(i=[p()]);let a=_.activeByTask[e]===t,o={..._.activeByTask},s={..._.splitByTask};if(a){let t=Math.max(0,Math.min(r,i.length-1));o[e]=i[t].id}(s[e]===t||s[e]===o[e])&&delete s[e],y({..._,tabsByTask:{..._.tabsByTask,[e]:i},activeByTask:o,splitByTask:s})}function F(e,t){let n={..._.splitByTask},r={..._.activeByTask},i=r[e];n[e]===t&&i&&i!==t?n[e]=i:n[e]===t&&delete n[e],r[e]=t,y({..._,activeByTask:r,splitByTask:n})}function I(e,t){let n=_.tabsByTask[e]??[];if(!n.some(e=>e.id===t))return;let r=_.activeByTask[e],i={..._.activeByTask};if(r===t){let r=n.find(e=>e.id!==t);if(!r)return;i[e]=r.id}y({..._,activeByTask:i,splitByTask:{..._.splitByTask,[e]:t}})}function L(e){let{[e]:t,...n}=_.splitByTask;y({..._,splitByTask:n})}function R(){return(0,o.useSyncExternalStore)(e=>(v.add(e),()=>v.delete(e)),()=>_,()=>_)}export{R as _,P as a,A as c,E as d,S as f,u as g,I as h,L as i,N as l,w as m,k as n,M as o,F as p,O as r,T as s,j as t,D as u,c as v,a as y};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/task._taskId-BmObFoVZ.js","assets/terminal-qBEkzc-m.js","assets/tabs-Dx-TnbvG.js","assets/createLucideIcon-CM5xLVj1.js","assets/active-task-GeQZqbJK.js","assets/store-uT65Mask.js","assets/AppShell-BTjvuY-t.js","assets/toast-BXjAT0ix.js","assets/external-store-DJlWpyYC.js","assets/ViewToggle-BdPCMBWa.js","assets/columns-3-CQGAnX-4.js","assets/with-selector-B5R3h-Ow.js","assets/x-7cB9X7Hi.js","assets/web-transport-D0bugxxv.js","assets/triage-7QLsCY8d.js","assets/use-focus-trap-DNMrlNR0.js","assets/engines-Cnxy1hW9.js","assets/settings-tPcmEHCP.js","assets/vendor-CdtpTJrf.js","assets/WorkspaceTabs-CMKlvN_Y.js","assets/ChatTranscript-DLthbnmB.js","assets/rotate-cw-D-UUtiD0.js","assets/search-BxbFZoup.js","assets/time-kviT26Tm.js","assets/WorkspaceTabs-DLzL-Tad.css","assets/SettingsPage-CLRhr-sg.js","assets/plus-BbX5qXba.js","assets/activity-BjTd1D8q.js","assets/ConfirmDialog-CDPOtXww.js","assets/desktop-BThq9eSR.js","assets/text-match-DW3sD-Rt.js","assets/SlideOver-Dxtk6Gn2.js","assets/chips-Da37C4KZ.js","assets/AppShell-HiyATJse.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{l as e}from"./terminal-qBEkzc-m.js";import{y as t}from"./tabs-Dx-TnbvG.js";import{d as n,g as r,h as i,i as a,n as o,o as s,p as c,v as l}from"./columns-3-CQGAnX-4.js";import{d as u}from"./createLucideIcon-CM5xLVj1.js";import{a as d,o as f}from"./toast-BXjAT0ix.js";import{t as p}from"./react-dom-DCnDkJvp.js";import{i as m}from"./store-uT65Mask.js";var h=e(t(),1),g=h.use,_=typeof window<`u`?h.useLayoutEffect:h.useEffect;function v(e){let t=h.useRef({value:e,prev:null}),n=t.current.value;return e!==n&&(t.current={value:e,prev:n}),t.current.prev}function y(e,t,n={},r={}){h.useEffect(()=>{if(!e.current||r.disabled||typeof IntersectionObserver!=`function`)return;let i=new IntersectionObserver(([e])=>{t(e)},n);return i.observe(e.current),()=>{i.disconnect()}},[t,n,r.disabled,e])}function b(e){let t=h.useRef(null);return h.useImperativeHandle(e,()=>t.current,[]),t}function x(e){let t=new Map,n,r,i=e=>{e.next&&(e.prev?(e.prev.next=e.next,e.next.prev=e.prev,e.next=void 0,r&&(r.next=e,e.prev=r)):(e.next.prev=void 0,n=e.next,e.next=void 0,r&&(e.prev=r,r.next=e)),r=e)};return{get(e){let n=t.get(e);if(n)return i(n),n.value},set(a,o){if(t.size>=e&&n){let e=n;t.delete(e.key),e.next&&(n=e.next,e.next.prev=void 0),e===r&&(r=void 0)}let s=t.get(a);if(s)s.value=o,i(s);else{let e={key:a,value:o,prev:r};r&&(r.next=e),r=e,n||=e,t.set(a,e)}},clear(){t.clear(),n=void 0,r=void 0}}}var S=4,ee=5;function te(e){let t=e.indexOf(`{`);if(t===-1)return null;let n=e.indexOf(`}`,t);return n===-1||t+1>=e.length?null:[t,n]}function C(e,t,n=new Uint16Array(6)){let r=e.indexOf(`/`,t),i=r===-1?e.length:r,a=e.substring(t,i);if(!a||!a.includes(`$`))return n[0]=0,n[1]=t,n[2]=t,n[3]=i,n[4]=i,n[5]=i,n;if(a===`$`){let r=e.length;return n[0]=2,n[1]=t,n[2]=t,n[3]=r,n[4]=r,n[5]=r,n}if(a.charCodeAt(0)===36)return n[0]=1,n[1]=t,n[2]=t+1,n[3]=i,n[4]=i,n[5]=i,n;let o=te(a);if(o){let[r,s]=o,c=a.charCodeAt(r+1);if(c===45){if(r+2<a.length&&a.charCodeAt(r+2)===36){let e=r+3,a=s;if(e<a)return n[0]=3,n[1]=t+r,n[2]=t+e,n[3]=t+a,n[4]=t+s+1,n[5]=i,n}}else if(c===36){let a=r+1,o=r+2;return o===s?(n[0]=2,n[1]=t+r,n[2]=t+a,n[3]=t+o,n[4]=t+s+1,n[5]=e.length,n):(n[0]=1,n[1]=t+r,n[2]=t+o,n[3]=t+s,n[4]=t+s+1,n[5]=i,n)}}return n[0]=0,n[1]=t,n[2]=t,n[3]=i,n[4]=i,n[5]=i,n}function w(e,t,n,r,i,a,o){o?.(n);let s=r;{let r=n.fullPath??n.from,o=r.length,c=n.options?.caseSensitive??e,l=n.options?.params?.parse??n.options?.parseParams;for(;s<o;){let e=C(r,s,t),o,u=s,d=e[5];switch(s=d+1,a++,e[0]){case 0:{let t=r.substring(e[2],e[3]);if(c){let e=i.static?.get(t);if(e)o=e;else{i.static??=new Map;let e=D(n.fullPath??n.from);e.parent=i,e.depth=a,o=e,i.static.set(t,e)}}else{let e=t.toLowerCase(),r=i.staticInsensitive?.get(e);if(r)o=r;else{i.staticInsensitive??=new Map;let t=D(n.fullPath??n.from);t.parent=i,t.depth=a,o=t,i.staticInsensitive.set(e,t)}}break}case 1:{let t=r.substring(u,e[1]),s=r.substring(e[4],d),f=c&&!!(t||s),p=t?f?t:t.toLowerCase():void 0,m=s?f?s:s.toLowerCase():void 0,h=!l&&i.dynamic?.find(e=>!e.parse&&e.caseSensitive===f&&e.prefix===p&&e.suffix===m);if(h)o=h;else{let e=O(1,n.fullPath??n.from,f,p,m);o=e,e.depth=a,e.parent=i,i.dynamic??=[],i.dynamic.push(e)}break}case 3:{let t=r.substring(u,e[1]),s=r.substring(e[4],d),f=c&&!!(t||s),p=t?f?t:t.toLowerCase():void 0,m=s?f?s:s.toLowerCase():void 0,h=!l&&i.optional?.find(e=>!e.parse&&e.caseSensitive===f&&e.prefix===p&&e.suffix===m);if(h)o=h;else{let e=O(3,n.fullPath??n.from,f,p,m);o=e,e.parent=i,e.depth=a,i.optional??=[],i.optional.push(e)}break}case 2:{let t=r.substring(u,e[1]),s=r.substring(e[4],d),l=c&&!!(t||s),f=t?l?t:t.toLowerCase():void 0,p=s?l?s:s.toLowerCase():void 0,m=O(2,n.fullPath??n.from,l,f,p);o=m,m.parent=i,m.depth=a,i.wildcard??=[],i.wildcard.push(m)}}i=o}if(l&&n.children&&!n.isRoot&&n.id&&n.id.charCodeAt(n.id.lastIndexOf(`/`)+1)===95){let e=D(n.fullPath??n.from);e.kind=ee,e.parent=i,a++,e.depth=a,i.pathless??=[],i.pathless.push(e),i=e}let u=(n.path||!n.children)&&!n.isRoot;if(u&&r.endsWith(`/`)){let e=D(n.fullPath??n.from);e.kind=S,e.parent=i,a++,e.depth=a,i.index=e,i=e}i.parse=l??null,i.priority=n.options?.params?.priority??0,u&&!i.route&&(i.route=n,i.fullPath=n.fullPath??n.from)}if(n.children)for(let r of n.children)w(e,t,r,s,i,a,o)}function T(e,t){if(e.parse&&!t.parse)return-1;if(!e.parse&&t.parse)return 1;if(e.parse&&t.parse&&(e.priority||t.priority))return t.priority-e.priority;if(e.prefix&&t.prefix&&e.prefix!==t.prefix){if(e.prefix.startsWith(t.prefix))return-1;if(t.prefix.startsWith(e.prefix))return 1}if(e.suffix&&t.suffix&&e.suffix!==t.suffix){if(e.suffix.endsWith(t.suffix))return-1;if(t.suffix.endsWith(e.suffix))return 1}return e.prefix&&!t.prefix?-1:!e.prefix&&t.prefix?1:e.suffix&&!t.suffix?-1:!e.suffix&&t.suffix?1:e.caseSensitive&&!t.caseSensitive?-1:!e.caseSensitive&&t.caseSensitive?1:0}function E(e){if(e.pathless)for(let t of e.pathless)E(t);if(e.static)for(let t of e.static.values())E(t);if(e.staticInsensitive)for(let t of e.staticInsensitive.values())E(t);if(e.dynamic?.length){e.dynamic.sort(T);for(let t of e.dynamic)E(t)}if(e.optional?.length){e.optional.sort(T);for(let t of e.optional)E(t)}if(e.wildcard?.length){e.wildcard.sort(T);for(let t of e.wildcard)E(t)}}function D(e){return{kind:0,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:e,parent:null,parse:null,priority:0}}function O(e,t,n,r,i){return{kind:e,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:t,parent:null,parse:null,priority:0,caseSensitive:n,prefix:r,suffix:i}}function k(e,t){let n=D(`/`),r=new Uint16Array(6);for(let t of e)w(!1,r,t,1,n,0);E(n),t.masksTree=n,t.flatCache=x(1e3)}function A(e,t){e||=`/`;let n=t.flatCache.get(e);if(n)return n;let r=ie(e,t.masksTree);return t.flatCache.set(e,r),r}function j(e,t,n,r,i){e||=`/`,r||=`/`;let a=t?`case\0${e}`:e,o=i.singleCache.get(a);return o||(o=D(`/`),w(t,new Uint16Array(6),{from:e},1,o,0),i.singleCache.set(a,o)),ie(r,o,n)}function M(e,t,n=!1){let r=n?e:`nofuzz\0${e}`,i=t.matchCache.get(r);if(i!==void 0)return i;e||=`/`;let a;try{a=ie(e,t.segmentTree,n)}catch(e){if(e instanceof URIError)a=null;else throw e}return a&&(a.branch=oe(a.route)),t.matchCache.set(r,a),a}function ne(e){return e===`/`?e:e.replace(/\/{1,}$/,``)}function re(e,t=!1,n){let r=D(e.fullPath),i=new Uint16Array(6),a={},o={},c=0;return w(t,i,e,1,r,0,e=>{if(n?.(e,c),e.id in a&&s(),a[e.id]=e,c!==0&&e.path){let t=ne(e.fullPath);(!o[t]||e.fullPath.endsWith(`/`))&&(o[t]=e)}c++}),E(r),{processedTree:{segmentTree:r,singleCache:x(1e3),matchCache:x(1e3),flatCache:null,masksTree:null},routesById:a,routesByPath:o}}function ie(e,t,n=!1){let r=e.split(`/`),i=ce(e,r,t,n);if(!i)return null;let[a]=ae(e,r,i);return{route:i.node.route,rawParams:a}}function ae(e,t,n){let r=se(n.node),i=null,a=Object.create(null),o=n.extract?.part??0,s=n.extract?.node??0,c=n.extract?.path??0,l=n.extract?.segment??0;for(;s<r.length;o++,s++,c++,l++){let u=r[s];if(u.kind===S)break;if(u.kind===ee){l--,o--,c--;continue}let d=t[o],f=c;if(d&&(c+=d.length),u.kind===1){i??=n.node.fullPath.split(`/`);let e=i[l],t=u.prefix?.length??0;if(e.charCodeAt(t)===123){let n=u.suffix?.length??0,r=e.substring(t+2,e.length-n-1),i=d.substring(t,d.length-n);a[r]=decodeURIComponent(i)}else{let t=e.substring(1);a[t]=decodeURIComponent(d)}}else if(u.kind===3){if(n.skipped&1<<s){o--,c=f-1;continue}i??=n.node.fullPath.split(`/`);let e=i[l],t=u.prefix?.length??0,r=u.suffix?.length??0,p=e.substring(t+3,e.length-r-1),m=u.suffix||u.prefix?d.substring(t,d.length-r):d;m&&(a[p]=decodeURIComponent(m))}else if(u.kind===2){let t=u,n=e.substring(f+(t.prefix?.length??0),e.length-(t.suffix?.length??0)),r=decodeURIComponent(n);a[`*`]=r,a._splat=r;break}}return n.rawParams&&Object.assign(a,n.rawParams),[a,{part:o,node:s,path:c,segment:l}]}function oe(e){let t=[e];for(;e.parentRoute;)e=e.parentRoute,t.push(e);return t.reverse(),t}function se(e){let t=Array(e.depth+1);do t[e.depth]=e,e=e.parent;while(e);return t}function ce(e,t,n,r){if(e===`/`&&n.index)return{node:n.index,skipped:0};let i=!l(t),a=i&&e!==`/`,o=t.length-+!!i,s=[{node:n,index:1,skipped:0,depth:1,statics:0,dynamics:0,optionals:0}],c=null,u=null;for(;s.length;){let n=s.pop(),{node:i,index:l,skipped:d,depth:f,statics:p,dynamics:m,optionals:h}=n,{extract:g,rawParams:_}=n;if(i.kind===2&&i.route&&!P(u,n))continue;if(i.parse){if(!ue(e,t,n))continue;_=n.rawParams,g=n.extract}r&&i.route&&i.kind!==S&&P(c,n)&&(c=n);let v=l===o;if(v&&(i.route&&(!a||i.kind===S||i.kind===2)&&P(u,n)&&(u=n),!i.optional&&!i.wildcard&&!i.index&&!i.pathless))continue;let y=v?void 0:t[l],b;if(v&&i.index){let n={node:i.index,index:l,skipped:d,depth:f+1,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_},r=!0;if(i.index.parse&&(ue(e,t,n)||(r=!1)),r){if(!m&&!h&&!d&&le(p,o))return n;P(u,n)&&(u=n)}}if(i.wildcard)for(let e=i.wildcard.length-1;e>=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!(r&&(v||!(n.caseSensitive?y:b??=y.toLowerCase()).startsWith(r)))){if(a){if(v)continue;let e=t.slice(l).join(`/`).slice(-a.length);if((n.caseSensitive?e:e.toLowerCase())!==a)continue}s.push({node:n,index:o,skipped:d,depth:f+1,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_})}}if(i.optional){let e=d|1<<f,t=f+1;for(let n=i.optional.length-1;n>=0;n--){let r=i.optional[n];s.push({node:r,index:l,skipped:e,depth:t,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_})}if(!v)for(let e=i.optional.length-1;e>=0;e--){let n=i.optional[e],{prefix:r,suffix:a}=n;if(r||a){let e=n.caseSensitive?y:b??=y.toLowerCase();if(r&&!e.startsWith(r)||a&&!e.endsWith(a))continue}s.push({node:n,index:l+1,skipped:d,depth:t,statics:p,dynamics:m,optionals:h+N(o,l),extract:g,rawParams:_})}}if(!v&&i.dynamic&&y)for(let e=i.dynamic.length-1;e>=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?y:b??=y.toLowerCase();if(n&&!e.startsWith(n)||r&&!e.endsWith(r))continue}s.push({node:t,index:l+1,skipped:d,depth:f+1,statics:p,dynamics:m+N(o,l),optionals:h,extract:g,rawParams:_})}if(!v&&i.staticInsensitive){let e=i.staticInsensitive.get(b??=y.toLowerCase());e&&s.push({node:e,index:l+1,skipped:d,depth:f+1,statics:p+N(o,l),dynamics:m,optionals:h,extract:g,rawParams:_})}if(!v&&i.static){let e=i.static.get(y);e&&s.push({node:e,index:l+1,skipped:d,depth:f+1,statics:p+N(o,l),dynamics:m,optionals:h,extract:g,rawParams:_})}if(i.pathless){let e=f+1;for(let t=i.pathless.length-1;t>=0;t--){let n=i.pathless[t];s.push({node:n,index:l,skipped:d,depth:e,statics:p,dynamics:m,optionals:h,extract:g,rawParams:_})}}}if(u)return u;if(r&&c){let n=c.index;for(let e=0;e<c.index;e++)n+=t[e].length;let r=n===e.length?`/`:e.slice(n);return c.rawParams??=Object.create(null),c.rawParams[`**`]=decodeURIComponent(r),c}return null}function N(e,t){return 2**(e-t-1)}function le(e,t){return e===2**(t-1)-1}function ue(e,t,n){let r,i;try{[r,i]=ae(e,t,n)}catch{return null}if(n.rawParams=r,n.extract=i,!n.node.parse)return!0;try{if(n.node.parse(r)===!1)return null}catch{}return!0}function P(e,t){return!e||t.statics>e.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===S)>(e.node.kind===S)||t.node.kind===S==(e.node.kind===S)&&t.depth>e.depth)))}function F(e){return I(e.filter(e=>e!==void 0).join(`/`))}function I(e){return e.replace(/\/{2,}/g,`/`)}function L(e){return e===`/`?e:e.replace(/^\/{1,}/,``)}function R(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/{1,}$/,``):e}function de(e){return R(L(e))}function z(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function fe(e,t,n){return z(e,n)===z(t,n)}function pe({base:e,to:t,trailingSlash:n=`never`,cache:r}){let i=t.startsWith(`/`),a=!i&&t===`.`,o;if(r){o=i?t:a?e:e+`\0`+t;let n=r.get(o);if(n)return n}let s;if(a)s=e.split(`/`);else if(i)s=t.split(`/`);else{for(s=e.split(`/`);s.length>1&&l(s)===``;)s.pop();let n=t.split(`/`);for(let e=0,t=n.length;e<t;e++){let r=n[e];r===``?e?e===t-1&&s.push(r):s=[r]:r===`..`?s.pop():r===`.`||s.push(r)}}s.length>1&&(l(s)===``?n===`never`&&s.pop():n===`always`&&s.push(``));let c=I(s.join(`/`))||`/`;return o&&r&&r.set(o,c),c}function B(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=Array.from(t.keys()).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),r=new RegExp(n,`g`);return e=>e.replace(r,e=>t.get(e)??e)}function V(e,t,n){let r=t[e];return typeof r==`string`?e===`_splat`?/^[a-zA-Z0-9\-._~!/]*$/.test(r)?r:r.split(`/`).map(e=>U(e,n)).join(`/`):U(r,n):r}function H({path:e,params:t,decoder:n,...r}){let i=!1,a=Object.create(null);if(!e||e===`/`)return{interpolatedPath:`/`,usedParams:a,isMissingParams:i};if(!e.includes(`$`))return{interpolatedPath:e,usedParams:a,isMissingParams:i};let o=e.length,s=0,c,l=``;for(;s<o;){let r=s;c=C(e,r,c);let o=c[5];if(s=o+1,r===o)continue;let u=c[0];if(u===0){l+=`/`+e.substring(r,o);continue}if(u===2){let s=t._splat;a._splat=s,a[`*`]=s;let u=e.substring(r,c[1]),d=e.substring(c[4],o);if(!s){i=!0,(u||d)&&(l+=`/`+u+d);continue}let f=V(`_splat`,t,n);l+=`/`+u+f+d;continue}if(u===1){let s=e.substring(c[2],c[3]);!i&&!(s in t)&&(i=!0),a[s]=t[s];let u=e.substring(r,c[1]),d=e.substring(c[4],o),f=V(s,t,n)??`undefined`;l+=`/`+u+f+d;continue}if(u===3){let i=e.substring(c[2],c[3]),s=t[i];if(s==null)continue;a[i]=s;let u=e.substring(r,c[1]),d=e.substring(c[4],o),f=V(i,t,n)??``;l+=`/`+u+f+d;continue}}return e.endsWith(`/`)&&(l+=`/`),{usedParams:a,interpolatedPath:l||`/`,isMissingParams:i}}function U(e,t){let n=encodeURIComponent(e);return t?.(n)??n}var W=`__root__`;function G(e){if(e.statusCode=e.statusCode||e.code||307,!e._builtLocation&&!e.reloadDocument&&typeof e.href==`string`)try{new URL(e.href),e.reloadDocument=!0}catch{}let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function me(e){return e instanceof Response&&!!e.options}var he=`Error preloading route! ☝️`,ge=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e.originalIndex;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=W:this.parentRoute||s();let r=n?W:t?.path;r&&r!==`/`&&(r=L(r));let i=t?.id||r,a=n?W:F([this.parentRoute.id===`__root__`?``:this.parentRoute.id,i]);r===`__root__`&&(r=`/`),a!==`__root__`&&(a=F([`/`,a]));let o=a===`__root__`?`/`:F([this.parentRoute.fullPath,r]);this._path=r,this._id=a,this._fullPath=o,this._to=R(o)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>G({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},_e=class extends ge{constructor(e){super(e)}},K=u();function q({children:e,fallback:t=null}){return ve()?(0,K.jsx)(h.Fragment,{children:e}):(0,K.jsx)(h.Fragment,{children:t})}function ve(){return h.useSyncExternalStore(J,()=>!0,()=>!1)}function J(){return()=>{}}function Y(e){return o({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function ye(e){let{select:t,...n}=e;return o({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function X(e){return o({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{let n=e.strict===!1?t.params:t._strictParams;return e.select?e.select(n):n}})}function be(e){return o({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}function Z(e){return o({...e,select:t=>e.select?e.select(t.context):t.context})}var xe=e(p(),1);function Se(e,t){let r=f(),o=b(t),{activeProps:s,inactiveProps:l,activeOptions:u,to:d,preload:p,preloadDelay:m,preloadIntentProximity:g,hashScrollIntoView:_,replace:v,startTransition:x,resetScroll:S,viewTransition:ee,children:te,target:C,disabled:w,style:T,className:E,onClick:D,onBlur:O,onFocus:k,onMouseEnter:A,onMouseLeave:j,onTouchStart:M,ignoreBlocker:ne,params:re,search:ie,hash:ae,state:oe,mask:se,reloadDocument:ce,unsafeRelative:N,from:le,_fromLocation:ue,...P}=e,F=ve(),I=h.useMemo(()=>e,[r,e.from,e._fromLocation,e.hash,e.to,e.search,e.params,e.state,e.mask,e.unsafeRelative]),L=a(r.stores.location,e=>e,(e,t)=>e.href===t.href),R=h.useMemo(()=>{let e={_fromLocation:L,...I};return r.buildLocation(e)},[r,L,I]),de=R.maskedLocation?R.maskedLocation.publicHref:R.publicHref,pe=R.maskedLocation?R.maskedLocation.external:R.external,B=h.useMemo(()=>ke(de,pe,r.history,w),[w,pe,de,r.history]),V=h.useMemo(()=>{if(B?.external)return i(B.href,r.protocolAllowlist)?void 0:B.href;if(!Ae(d)&&!(typeof d!=`string`||d.indexOf(`:`)===-1))try{return new URL(d),i(d,r.protocolAllowlist)?void 0:d}catch{}},[d,B,r.protocolAllowlist]),H=h.useMemo(()=>{if(V)return!1;if(u?.exact){if(!fe(L.pathname,R.pathname,r.basepath))return!1}else{let e=z(L.pathname,r.basepath),t=z(R.pathname,r.basepath);if(!(e.startsWith(t)&&(e.length===t.length||e[t.length]===`/`)))return!1}return(u?.includeSearch??!0)&&!n(L.search,R.search,{partial:!u?.exact,ignoreUndefined:!u?.explicitUndefined})?!1:!u?.includeHash||F&&L.hash===R.hash},[u?.exact,u?.explicitUndefined,u?.includeHash,u?.includeSearch,L,V,F,R.hash,R.pathname,R.search,r.basepath]),U=H?c(s,{})??we:Ce,W=H?Ce:c(l,{})??Ce,G=[E,U.className,W.className].filter(Boolean).join(` `),me=(T||U.style||W.style)&&{...T,...U.style,...W.style},[ge,_e]=h.useState(!1),K=h.useRef(!1),q=e.reloadDocument||V?!1:p??r.options.defaultPreload,J=m??r.options.defaultPreloadDelay??0,Y=h.useCallback(()=>{r.preloadRoute({...I,_builtLocation:R}).catch(e=>{console.warn(e),console.warn(he)})},[r,I,R]);y(o,h.useCallback(e=>{e?.isIntersecting&&Y()},[Y]),Oe,{disabled:!!w||q!==`viewport`}),h.useEffect(()=>{K.current||!w&&q===`render`&&(Y(),K.current=!0)},[w,Y,q]);let ye=e=>{let t=e.currentTarget.getAttribute(`target`),n=C===void 0?t:C;if(!w&&!Me(e)&&!e.defaultPrevented&&(!n||n===`_self`)&&e.button===0){e.preventDefault(),(0,xe.flushSync)(()=>{_e(!0)});let t=r.subscribe(`onResolved`,()=>{t(),_e(!1)});r.navigate({...I,replace:v,resetScroll:S,hashScrollIntoView:_,startTransition:x,viewTransition:ee,ignoreBlocker:ne})}};if(V)return{...P,ref:o,href:V,...te&&{children:te},...C&&{target:C},...w&&{disabled:w},...T&&{style:T},...E&&{className:E},...D&&{onClick:D},...O&&{onBlur:O},...k&&{onFocus:k},...A&&{onMouseEnter:A},...j&&{onMouseLeave:j},...M&&{onTouchStart:M}};let X=e=>{if(w||q!==`intent`)return;if(!J){Y();return}let t=e.currentTarget;if(Q.has(t))return;let n=setTimeout(()=>{Q.delete(t),Y()},J);Q.set(t,n)},be=e=>{w||q!==`intent`||Y()},Z=e=>{if(w||!q||!J)return;let t=e.currentTarget,n=Q.get(t);n&&(clearTimeout(n),Q.delete(t))};return{...P,...U,...W,href:B?.href,ref:o,onClick:$([D,ye]),onBlur:$([O,Z]),onFocus:$([k,X]),onMouseEnter:$([A,X]),onMouseLeave:$([j,Z]),onTouchStart:$([M,be]),disabled:!!w,target:C,...me&&{style:me},...G&&{className:G},...w&&Te,...H&&Ee,...F&&ge&&De}}var Ce={},we={className:`active`},Te={role:`link`,"aria-disabled":!0},Ee={"data-status":`active`,"aria-current":`page`},De={"data-transitioning":`transitioning`},Q=new WeakMap,Oe={rootMargin:`100px`},$=e=>t=>{for(let n of e)if(n){if(t.defaultPrevented)return;n(t)}};function ke(e,t,n,r){if(!r)return t?{href:e,external:!0}:{href:n.createHref(e)||`/`,external:!1}}function Ae(e){if(typeof e!=`string`)return!1;let t=e.charCodeAt(0);return t===47?e.charCodeAt(1)!==47:t===46}var je=h.forwardRef((e,t)=>{let{_asChild:n,...r}=e,{type:i,...a}=Se(r,t),o=typeof r.children==`function`?r.children({isActive:a[`data-status`]===`active`}):r.children;if(!n){let{disabled:e,...t}=a;return h.createElement(`a`,t,o)}return h.createElement(n,a,o)});function Me(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}var Ne=class extends ge{constructor(e){super(e),this.useMatch=e=>o({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>Z({...e,from:this.id}),this.useSearch=e=>be({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>X({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>ye({...e,from:this.id}),this.useLoaderData=e=>Y({...e,from:this.id}),this.useNavigate=()=>d({from:this.fullPath}),this.Link=h.forwardRef((e,t)=>(0,K.jsx)(je,{ref:t,from:this.fullPath,...e}))}};function Pe(e){return new Ne(e)}var Fe=class extends _e{constructor(e){super(e),this.useMatch=e=>o({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>Z({...e,from:this.id}),this.useSearch=e=>be({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>X({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>ye({...e,from:this.id}),this.useLoaderData=e=>Y({...e,from:this.id}),this.useNavigate=()=>d({from:this.fullPath}),this.Link=h.forwardRef((e,t)=>(0,K.jsx)(je,{ref:t,from:this.fullPath,...e}))}};function Ie(e){return new Fe(e)}function Le(e){return new Re(e,{silent:!0}).createRoute}var Re=class{constructor(e,t){this.path=e,this.createRoute=e=>{let t=Pe(e);return t.isRoot=!1,t},this.silent=t?.silent}};function ze(e,t){let n,i,a,o,s=()=>(n||=e().then(e=>{n=void 0,i=e[t??`default`]}).catch(e=>{if(a=e,r(a)&&a instanceof Error&&typeof window<`u`&&typeof sessionStorage<`u`){let e=`tanstack_router_reload:${a.message}`;sessionStorage.getItem(e)||(sessionStorage.setItem(e,`1`),o=!0)}}),n),c=function(e){if(o)throw window.location.reload(),new Promise(()=>{});if(a)throw a;if(!i)if(g)g(s());else throw s();return h.createElement(i,e)};return c.preload=s,c}var Be=Le(`/task/$taskId`)({component:ze(()=>m(()=>import(`./task._taskId-BmObFoVZ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33])),`component`)});export{_ as C,x as S,A as _,q as a,k as b,W as c,H as d,F as f,oe as g,R as h,Ie as i,I as l,de as m,ze as n,me as o,pe as p,Le as r,G as s,Be as t,B as u,M as v,v as w,re as x,j as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as e}from"./terminal-qBEkzc-m.js";import{_ as t,f as n,y as r}from"./tabs-Dx-TnbvG.js";import{t as i}from"./task._taskId-BlZ0vG_1.js";import{d as a}from"./createLucideIcon-CM5xLVj1.js";import{n as o}from"./active-task-GeQZqbJK.js";import{AppShell as s}from"./AppShell-BTjvuY-t.js";var c=e(r()),l=a();function u(){let{taskId:e}=i.useParams(),{selectedTaskId:r}=t();return(0,c.useEffect)(()=>{!e||e===r||(n(e),o(e))},[e,r]),(0,l.jsx)(s,{})}export{u as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=class extends Error{status;url;detail;body;constructor(e){super(`${e.label} failed (${e.status})${e.detail?`: ${e.detail}`:``}`),this.name=e.name||`ApiError`,this.status=e.status,this.url=e.url,this.detail=e.detail??``,this.body=e.body}};function d(e,t){let n=[];for(let[e,r]of Object.entries(t??{})){let t=Array.isArray(r)?r:[r];for(let r of t)r!=null&&n.push(`${encodeURIComponent(e)}=${encodeURIComponent(String(r))}`)}return n.length===0?e:`${e}${e.includes(`?`)?`&`:`?`}${n.join(`&`)}`}async function f(e){let t=await e.text().catch(()=>``);if(!t)return{text:t};try{return{text:t,json:JSON.parse(t)}}catch{return{text:t}}}function p(e){let t=e.json;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n=typeof e.error==`string`?e.error:``,r=typeof e.name==`string`?e.name:void 0;if(n)return{detail:n,name:r}}return{detail:e.text.trim()}}async function m(e,t,n={}){let r=d(e,n.query),i=await fetch(r,t),a=await f(i),o=a.json,s=o&&typeof o==`object`&&!Array.isArray(o)&&typeof o.error==`string`&&o.error.length>0;if(!i.ok||s){let{detail:e,name:t}=p(a);throw new u({url:r,status:i.status,label:n.label??r,detail:e,body:o,name:t})}return o??{}}function h(e,t){return{method:e,headers:{"content-type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}}var g={get(e,t){return m(e,{method:`GET`},t)},post(e,t,n){return m(e,h(`POST`,t),n)},put(e,t,n){return m(e,h(`PUT`,t),n)},patch(e,t,n){return m(e,h(`PATCH`,t),n)},delete(e,t,n){return m(e,h(`DELETE`,t),n)},form(e,t,n){return m(e,{method:`POST`,body:t},n)},async getOr(e,t,n){try{return await m(e,{method:`GET`},n)}catch{return t}}},_=s({closePtyTab:()=>b,ptyUrl:()=>y,sendPtyText:()=>x});function v(e){let t=location.protocol===`https:`,n=e===`ws`?t?`wss`:`ws`:t?`https`:`http`,r=location.hostname||`localhost`,i=Number.parseInt(location.port||`5173`,10);return`${n}://${r}:${Number.isFinite(i)?i+2:5175}`}function y(e,t,n,r,i){let a=new URLSearchParams({tab:e,taskId:t,mode:n,cols:String(r),rows:String(i)});return`${v(`ws`)}/pty?${a.toString()}`}async function b(e){try{await g.post(`${v(`http`)}/pty/close`,{tab:e},{label:`close PTY tab`})}catch{}}async function x(e,t,n){try{let r=await g.post(`${v(`http`)}/pty/send`,{tab:e,taskId:t,text:n},{label:`send PTY text`});if(!r.sent)throw Error(`send failed`);return{spawned:r.spawned===!0}}catch(e){throw e instanceof u&&e.status===404&&!e.detail?Error("the PTY server doesn't know /pty/send — restart `rove web` (the sidecar doesn't hot-reload)"):e}}export{u as a,s as c,_ as i,l,y as n,g as o,x as r,o as s,b as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t){let n=t.trim().toLowerCase();return!n||e.toLowerCase().includes(n)}export{e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t=Date.now()){if(!e)return``;let n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return`just now`;let r=Math.round(n/60);if(r<60)return`${r}m ago`;let i=Math.round(r/60);return i<24?`${i}h ago`:`${Math.round(i/24)}d ago`}function t(e,t=Date.now()){let n=Date.parse(e);if(!Number.isFinite(n))return``;let r=Math.max(0,Math.round((t-n)/1e3));if(r<45)return`now`;let i=Math.round(r/60);if(i<60)return`${i}m`;let a=Math.round(i/60);if(a<24)return`${a}h`;let o=Math.round(a/24);if(o<7)return`${o}d`;let s=Math.round(o/7);if(s<5)return`${s}w`;let c=Math.round(o/30);return c<12?`${c}mo`:`${Math.round(o/365)}y`}export{e as n,t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as e}from"./terminal-qBEkzc-m.js";import{y as t}from"./tabs-Dx-TnbvG.js";import{t as n}from"./external-store-DJlWpyYC.js";var r=e(t(),1),i=r.createContext(null);function a(e){return r.useContext(i)}function o(e){let t=a();return r.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}var s=5e3,c=n([]),l=0;function u(e,t){l+=1;let n={id:l,kind:e,message:t};c.update(e=>[...e.slice(-3),n]),window.setTimeout(()=>d(n.id),s)}function d(e){let t=c.getSnapshot();t.some(t=>t.id===e)&&c.replace(t.filter(t=>t.id!==e))}function f(e,t){return`${e}: ${t instanceof Error?t.message:String(t)}`}function p(e,t){u(`error`,f(e,t))}function m(){return c.useSnapshot()}export{o as a,m as i,u as n,a as o,p as r,i as s,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as e}from"./terminal-qBEkzc-m.js";import{f as t,m as n,n as r,y as i}from"./tabs-Dx-TnbvG.js";import{d as a,t as o}from"./createLucideIcon-CM5xLVj1.js";import{a as s,n as c,r as l}from"./toast-BXjAT0ix.js";import{n as u,t as d}from"./store-uT65Mask.js";import{n as f}from"./active-task-GeQZqbJK.js";import{t as p}from"./external-store-DJlWpyYC.js";import{t as m}from"./use-focus-trap-DNMrlNR0.js";import{t as h}from"./engines-Cnxy1hW9.js";import{t as g}from"./settings-tPcmEHCP.js";import{n as _}from"./vendor-CdtpTJrf.js";var v=p({paletteOpen:!1,helpOpen:!1,newTaskOpen:!1,settingsOpen:!1});function y(){return v.useSnapshot()}function b(){v.update(e=>({...e,paletteOpen:!1}))}function x(){v.update(e=>({...e,paletteOpen:!e.paletteOpen}))}function S(){v.update(e=>({...e,helpOpen:!0}))}function C(){v.update(e=>({...e,helpOpen:!1}))}function w(){v.update(e=>({...e,newTaskOpen:!0}))}function T(){v.update(e=>({...e,newTaskOpen:!1}))}function E(){v.update(e=>({...e,settingsOpen:!0}))}function D(){v.update(e=>({...e,settingsOpen:!1}))}var O=o(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),k=e(i(),1),A=a();function j({children:e}){return(0,A.jsx)(`div`,{className:`mb-1 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:e})}var M=`w-full border border-line bg-bg px-2 py-1.5 text-[12px] text-fg placeholder:text-subtle focus:border-line-active focus:outline-none`;function N({onClose:e}){let{tasks:i}=u(),a=h(),o=s(),p=(0,k.useRef)(null);m(p);let v=(0,k.useMemo)(()=>{let e=new Set,t=[];for(let n of i){let r=n.repo;r&&!e.has(r)&&(e.add(r),t.push(r))}return t.sort()},[i]),[y,b]=(0,k.useState)(v[0]??``),[x,S]=(0,k.useState)(!1),[C,w]=(0,k.useState)(``),[T,E]=(0,k.useState)(``),[D,O]=(0,k.useState)(``),[N,P]=(0,k.useState)(a[0]?.id??`claude`),[F,I]=(0,k.useState)(!1),[L,R]=(0,k.useState)(``),[z,B]=(0,k.useState)(!1),V=y.trim().length>0&&!z;(0,k.useEffect)(()=>{let e=!1;return g().then(t=>{e||!t||F||P(t)}),()=>{e=!0}},[F]);let H=async()=>{if(V){B(!0);try{let i={repo:y.trim()};C.trim()&&(i.title=C.trim()),T.trim()&&(i.branch=T.trim()),D.trim()&&(i.baseRef=D.trim()),N&&(i.vendor=N);let{taskId:a,task:s}=await d(`task.create`,i);t(a);let l=L.trim();l&&(n(a,l),r(a)),o({to:`/task/$taskId`,params:{taskId:a}}),f(a),c(`success`,`Task created: ${s?.title||s?.branch||a}`),e()}catch(e){l(`create task`,e)}finally{B(!1)}}};return(0,A.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:e,onKeyDown:t=>{t.key===`Escape`&&e()},role:`presentation`,children:(0,A.jsxs)(`div`,{ref:p,role:`dialog`,"aria-modal":`true`,"aria-label":`New task`,className:`w-[28rem] max-w-[calc(100vw-2rem)] border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-3 py-2`,children:[(0,A.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`New Task`}),(0,A.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:`worktree + engine session`})]}),(0,A.jsxs)(`form`,{className:`space-y-3 px-3 py-3`,onSubmit:e=>{e.preventDefault(),H()},children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(j,{children:`Repo`}),v.length>0&&!x?(0,A.jsxs)(`div`,{className:`flex gap-2`,children:[(0,A.jsx)(`select`,{value:y,onChange:e=>b(e.target.value),className:`${M} min-w-0 flex-1`,children:v.map(e=>(0,A.jsx)(`option`,{value:e,children:e},e))}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>{S(!0),b(``)},className:`shrink-0 border border-line bg-bg px-2 text-[11px] text-muted hover:border-primary hover:text-fg`,title:`Type a repo path instead`,children:`path…`})]}):(0,A.jsxs)(`div`,{className:`flex gap-2`,children:[(0,A.jsx)(`input`,{value:y,onChange:e=>b(e.target.value),placeholder:`/absolute/path/to/repo`,className:`${M} min-w-0 flex-1 font-mono`}),v.length>0&&(0,A.jsx)(`button`,{type:`button`,onClick:()=>{S(!1),b(v[0]??``)},className:`shrink-0 border border-line bg-bg px-2 text-[11px] text-muted hover:border-primary hover:text-fg`,title:`Pick a known repo`,children:`list`})]})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(j,{children:`Title`}),(0,A.jsx)(`input`,{value:C,onChange:e=>w(e.target.value),placeholder:`optional — auto-titled from the first message`,className:M})]}),(0,A.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(j,{children:`Branch`}),(0,A.jsx)(`input`,{value:T,onChange:e=>E(e.target.value),placeholder:`auto`,className:`${M} font-mono`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(j,{children:`Base ref`}),(0,A.jsx)(`input`,{value:D,onChange:e=>O(e.target.value),placeholder:`default branch`,className:`${M} font-mono`})]})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(j,{children:`Engine`}),(0,A.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:a.map(e=>(0,A.jsx)(`button`,{type:`button`,onClick:()=>{I(!0),P(e.id)},className:`border px-2 py-1 text-[11px] transition-colors ${N===e.id?`border-primary bg-inset text-fg`:`border-line bg-bg text-muted hover:border-primary hover:text-fg`}`,children:_(a,e.id)},e.id))})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(j,{children:`First prompt`}),(0,A.jsx)(`textarea`,{value:L,onChange:e=>R(e.target.value),placeholder:`optional — waits in the engine composer, ready to send`,rows:2,className:`${M} resize-none`})]}),(0,A.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-line pt-3`,children:[(0,A.jsx)(`button`,{type:`button`,onClick:e,className:`border border-line bg-bg px-3 py-1.5 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Cancel`}),(0,A.jsx)(`button`,{type:`submit`,disabled:!V,className:`border border-primary bg-inset px-3 py-1.5 text-[11px] text-fg transition-colors hover:bg-primary/10 disabled:opacity-40`,children:z?`Creating…`:`Create task`})]})]})]})})}function P(e,t){let n=e?.state;return n===`waiting_permission`||n===`error`||n===`rate_limited`?`attention`:n===`running`?`working`:t&&(t.added>0||t.deleted>0)?`changes`:`quiet`}function F(e,t,n){return n===`all`||P(e,t)===n}export{b as a,D as c,E as d,x as f,O as i,S as l,P as n,C as o,y as p,N as r,T as s,F as t,w as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as e}from"./terminal-qBEkzc-m.js";import{y as t}from"./tabs-Dx-TnbvG.js";var n=e(t(),1),r=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function i(e,t=!0){(0,n.useEffect)(()=>{if(!t)return;let n=e.current;if(!n)return;let i=document.activeElement,a=e=>{if(e.key!==`Tab`)return;let t=Array.from(n.querySelectorAll(r)).filter(e=>e.offsetParent!==null||e===document.activeElement);if(t.length===0)return;let i=t[0],a=t[t.length-1],o=document.activeElement;e.shiftKey?(o===i||!n.contains(o))&&(e.preventDefault(),a.focus()):(o===a||!n.contains(o))&&(e.preventDefault(),i.focus())};return n.addEventListener(`keydown`,a),()=>{n.removeEventListener(`keydown`,a),i?.focus?.()}},[e,t])}export{i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`claude`;function t(e){return e||`claude`}function n(e,n){let r=t(n);return e.find(e=>e.id===r)?.label??r}function r(e){let n=new Set;for(let r of e)r.archived||r.kind===`main`||n.add(t(r.vendor));return[...n]}function i(e){return r(e).length>1}function a(e,t,r){return r&&t.kind!==`main`?n(e,t.vendor):null}export{t as a,a as i,n,i as r,e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e({daemonConnected:e,streamConnected:t}){return t?e?`connected`:`daemon-offline`:`event-stream-disconnected`}function t(t){return e(t)===`connected`}function n(e){return!t(e)}function r(t){return!!t.hydrated&&e(t)===`daemon-offline`}function i(t){let n=e(t);return n===`connected`?{ok:!0,label:`daemon connected`}:n===`daemon-offline`?{ok:!1,label:`no daemon`,title:"Daemon offline — if it doesn't recover, run `rove doctor` or `rove reset` in a terminal."}:{ok:!1,label:`connecting…`}}export{r as n,i as r,n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./terminal-qBEkzc-m.js";import{y as t}from"./tabs-Dx-TnbvG.js";var n=e((e=>{var n=t();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),r=e(((e,t)=>{t.exports=n()})),i=e((e=>{var n=t(),i=r();function a(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var o=typeof Object.is==`function`?Object.is:a,s=i.useSyncExternalStore,c=n.useRef,l=n.useEffect,u=n.useMemo,d=n.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var a=c(null);if(a.current===null){var f={hasValue:!1,value:null};a.current=f}else f=a.current;a=u(function(){function e(e){if(!a){if(a=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,o(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var a=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=s(e,a[0],a[1]);return l(function(){f.hasValue=!0,f.value=p},[p]),d(p),p}})),a=e(((e,t)=>{t.exports=i()}));export{r as n,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,l as t,o as n}from"./terminal-qBEkzc-m.js";import{y as r}from"./tabs-Dx-TnbvG.js";import{d as i,t as a}from"./createLucideIcon-CM5xLVj1.js";import{a as o,r as s}from"./toast-BXjAT0ix.js";import{n as c}from"./store-uT65Mask.js";import{t as l}from"./arrow-left-DNM2CHhS.js";import{n as u}from"./time-kviT26Tm.js";import{n as d,t as f}from"./ConfirmDialog-CDPOtXww.js";var p=a(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),m=t(r(),1),h=class extends Error{};async function g(){let e=await n.get(`/api/worktrees`,{label:`load worktrees`});return Array.isArray(e.projects)?e.projects:[]}async function _(t,r){try{await n.delete(`/api/worktrees`,{path:t,force:r},{label:`delete worktree`})}catch(t){throw t instanceof e&&/refusing to remove dirty worktree/.test(t.detail)?new h(t.detail):t}}var v=i();function y(e){return e===!0?(0,v.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-green`,children:`on remote`}):e===!1?(0,v.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-yellow`,children:`not pushed`}):(0,v.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`remote unknown`})}function b({row:e,linkedTaskTitle:t,onDelete:n}){return(0,v.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-line-subtle px-3 py-2 last:border-b-0`,children:[(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(`span`,{className:`truncate font-mono text-[12px] text-fg`,children:e.branch||`(detached)`}),e.kobeManaged&&(0,v.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`rove`}),e.dirty&&(0,v.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-yellow`,children:`dirty`}),y(e.branchOnRemote),t&&(0,v.jsxs)(`span`,{className:`shrink-0 truncate text-[10px] text-subtle`,children:[`task: `,t]})]}),(0,v.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-[10px] text-subtle`,children:[(0,v.jsx)(`span`,{className:`truncate font-mono`,children:e.path}),e.createdAtMs>0&&(0,v.jsxs)(`span`,{className:`ml-auto shrink-0`,children:[`created `,u(e.createdAtMs)]})]})]}),(0,v.jsx)(`button`,{type:`button`,onClick:n,className:`shrink-0 border border-line bg-bg px-2 py-1 text-[11px] text-muted transition-colors hover:border-kobe-red hover:text-kobe-red`,children:`Delete`})]})}function x(){let e=o(),{tasks:t}=c(),[n,r]=(0,m.useState)(null),[i,a]=(0,m.useState)(!1),[u,y]=(0,m.useState)(null),[x,S]=(0,m.useState)(null),[C,w]=(0,m.useState)([]),T=(0,m.useMemo)(()=>{let e=new Map;for(let n of t)n.worktreePath&&e.set(n.worktreePath,n.title||n.branch);return e},[t]),E=()=>{a(!0),g().then(r).catch(e=>s(`load worktrees`,e)).finally(()=>a(!1))};(0,m.useEffect)(E,[]);let D=(n??[]).map(e=>({...e,worktrees:e.worktrees.filter(e=>!C.includes(e.path))})),O=e=>{r(t=>t?.map(t=>({...t,worktrees:t.worktrees.filter(t=>t.path!==e)}))??t)},k=(e,t)=>{w(t=>[...t,e.path]),_(e.path,t).then(()=>{O(e.path),w(t=>t.filter(t=>t!==e.path))}).catch(n=>{w(t=>t.filter(t=>t!==e.path)),!t&&n instanceof h?S(e):s(t?`force delete worktree`:`delete worktree`,n)})};return(0,v.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,v.jsxs)(`header`,{"data-kobe-topbar":!0,className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,v.jsx)(d,{}),(0,v.jsxs)(`button`,{type:`button`,onClick:()=>e({to:`/`}),className:`flex items-center gap-1.5 text-muted transition-colors hover:text-fg`,title:`Back to workspace`,children:[(0,v.jsx)(l,{size:15,strokeWidth:1.8}),(0,v.jsx)(`span`,{className:`text-[12px]`,children:`Workspace`})]}),(0,v.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Worktrees`}),(0,v.jsx)(`button`,{type:`button`,onClick:E,disabled:i,className:`ml-auto flex items-center gap-1.5 text-muted transition-colors hover:text-fg disabled:opacity-40`,title:`Refresh`,children:(0,v.jsx)(p,{size:13,strokeWidth:1.8,className:i?`animate-spin`:``})})]}),(0,v.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:n===null?(0,v.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`Loading worktrees…`}):D.length===0?(0,v.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`No local projects known to Rove yet.`}):D.map(e=>(0,v.jsxs)(`div`,{className:`border-b border-line`,children:[(0,v.jsx)(`div`,{className:`border-b border-line-subtle bg-surface px-3 py-1.5 font-mono text-[11px] text-subtle`,children:e.repo}),e.worktrees.length===0?(0,v.jsx)(`p`,{className:`px-3 py-3 text-[12px] text-subtle`,children:`No worktrees.`}):e.worktrees.map(e=>(0,v.jsx)(b,{row:e,linkedTaskTitle:T.get(e.path)??null,onDelete:()=>y(e)},e.path))]},e.repo))}),u&&(0,v.jsx)(f,{title:`Delete worktree`,body:`Delete the worktree for "${u.branch||u.path}"? This removes the working directory; the branch itself is kept.`,confirmLabel:`Delete`,danger:!0,onConfirm:()=>{if(!u)return;let e=u;y(null),k(e,!1)},onCancel:()=>y(null)}),x&&(0,v.jsx)(f,{title:`Force delete worktree`,body:`"${x.branch||x.path}" has uncommitted or untracked changes that will be PERMANENTLY LOST. Force delete anyway?`,confirmLabel:`Force delete`,danger:!0,onConfirm:()=>{if(!x)return;let e=x;S(null),k(e,!0)},onCancel:()=>S(null)})]})}var S=x;export{S as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-CM5xLVj1.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>kobe-web</title>
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CgL6oDIY.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/terminal-qBEkzc-m.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/tabs-Dx-TnbvG.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-CM5xLVj1.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/external-store-DJlWpyYC.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/toast-BXjAT0ix.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/with-selector-B5R3h-Ow.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/columns-3-CQGAnX-4.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/react-dom-DCnDkJvp.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/store-uT65Mask.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/task._taskId-BlZ0vG_1.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/desktop-BThq9eSR.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/active-task-GeQZqbJK.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/use-focus-trap-DNMrlNR0.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/engines-Cnxy1hW9.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/settings-tPcmEHCP.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-CdtpTJrf.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/triage-7QLsCY8d.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/plus-BbX5qXba.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/search-BxbFZoup.js">
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/x-7cB9X7Hi.js">
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/activity-BjTd1D8q.js">
|
|
30
|
+
<link rel="stylesheet" crossorigin href="/assets/index-MuA3NLRu.css">
|
|
31
|
+
</head>
|
|
32
|
+
<body>
|
|
33
|
+
<div id="app"></div>
|
|
34
|
+
</body>
|
|
35
|
+
</html>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"short_name": "TanStack App",
|
|
3
|
+
"name": "Create TanStack App Sample",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "favicon.ico",
|
|
7
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
+
"type": "image/x-icon"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"src": "logo192.png",
|
|
12
|
+
"type": "image/png",
|
|
13
|
+
"sizes": "192x192"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"src": "logo512.png",
|
|
17
|
+
"type": "image/png",
|
|
18
|
+
"sizes": "512x512"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"start_url": ".",
|
|
22
|
+
"display": "standalone",
|
|
23
|
+
"theme_color": "#000000",
|
|
24
|
+
"background_color": "#ffffff"
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared browser-Origin policy for the web bridge and PTY sidecar.
|
|
3
|
+
*
|
|
4
|
+
* Browser requests carry an Origin. Non-browser clients usually do not; those
|
|
5
|
+
* are allowed because there is no ambient browser credential to forge.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "::1", "[::1]"])
|
|
9
|
+
|
|
10
|
+
export function isLoopbackHost(hostname) {
|
|
11
|
+
return LOOPBACK_HOSTS.has(String(hostname ?? "").trim().toLowerCase())
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function originHostname(origin) {
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(origin)
|
|
17
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") return null
|
|
18
|
+
return url.hostname
|
|
19
|
+
} catch {
|
|
20
|
+
return null
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function isLoopbackOrigin(origin) {
|
|
25
|
+
const hostname = originHostname(origin)
|
|
26
|
+
return hostname !== null && isLoopbackHost(hostname)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function originAllowed(origin, opts = {}) {
|
|
30
|
+
if (!origin) return true
|
|
31
|
+
if (isLoopbackOrigin(origin)) return true
|
|
32
|
+
const allowedHost = opts.allowedHost?.trim()
|
|
33
|
+
if (!allowedHost) return false
|
|
34
|
+
const hostname = originHostname(origin)
|
|
35
|
+
return hostname !== null && hostname === allowedHost
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function allowedHostForBindHost(hostname) {
|
|
39
|
+
const host = String(hostname ?? "").trim()
|
|
40
|
+
return host && !isLoopbackHost(host) ? host : undefined
|
|
41
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded scrollback ring for the PTY server.
|
|
3
|
+
*
|
|
4
|
+
* The web terminal replays recent output on every (re)attach, so each PTY keeps
|
|
5
|
+
* a cap of recent bytes. The naive shape — `buffer = (buffer + data).slice(-CAP)`
|
|
6
|
+
* on every chunk — re-flattens the whole ~256KB buffer per chunk once full, so a
|
|
7
|
+
* burst of N small chunks costs O(N·CAP) (quadratic) on the same thread that
|
|
8
|
+
* relays bytes to the browser.
|
|
9
|
+
*
|
|
10
|
+
* This ring keeps the chunks as-is and a running length total: `push` is
|
|
11
|
+
* O(chunk) (append + shift whole chunks off the head until back under the cap),
|
|
12
|
+
* and the string is materialized only on `replay` — once per attach, O(cap).
|
|
13
|
+
*
|
|
14
|
+
* "Length" is measured in JS string length (UTF-16 code units), matching the
|
|
15
|
+
* prior `.slice(-CAP)` semantics: the cap is an approximate recent-output
|
|
16
|
+
* window, not an exact byte count.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @param {number} cap Max retained length (string code units).
|
|
21
|
+
* @returns {{ push: (data: string) => void, replay: () => string, length: () => number, chunkCount: () => number }}
|
|
22
|
+
*/
|
|
23
|
+
export function createScrollback(cap) {
|
|
24
|
+
/** @type {string[]} */
|
|
25
|
+
let chunks = []
|
|
26
|
+
let total = 0
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
push(data) {
|
|
30
|
+
if (!data) return
|
|
31
|
+
chunks.push(data)
|
|
32
|
+
total += data.length
|
|
33
|
+
// Drop whole chunks off the head while over cap, but always keep the
|
|
34
|
+
// most recent chunk so a single oversized chunk still replays.
|
|
35
|
+
while (total > cap && chunks.length > 1) {
|
|
36
|
+
const dropped = chunks.shift()
|
|
37
|
+
total -= dropped.length
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
replay() {
|
|
41
|
+
if (chunks.length === 0) return ""
|
|
42
|
+
return chunks.length === 1 ? chunks[0] : chunks.join("")
|
|
43
|
+
},
|
|
44
|
+
length() {
|
|
45
|
+
return total
|
|
46
|
+
},
|
|
47
|
+
chunkCount() {
|
|
48
|
+
return chunks.length
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
}
|