agent-decoder 0.3.2__py3-none-any.whl
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.
- agent_decoder-0.3.2.dist-info/METADATA +387 -0
- agent_decoder-0.3.2.dist-info/RECORD +89 -0
- agent_decoder-0.3.2.dist-info/WHEEL +4 -0
- agent_decoder-0.3.2.dist-info/entry_points.txt +2 -0
- agent_decoder-0.3.2.dist-info/licenses/LICENSE +111 -0
- clau_decode/__init__.py +8 -0
- clau_decode/__main__.py +11 -0
- clau_decode/_auth_env.py +118 -0
- clau_decode/_pty_preexec.py +42 -0
- clau_decode/analytics/__init__.py +0 -0
- clau_decode/analytics/aggregator.py +55 -0
- clau_decode/analytics/cost.py +76 -0
- clau_decode/analytics/extractor.py +32 -0
- clau_decode/analytics/fast.py +289 -0
- clau_decode/analytics/models.py +49 -0
- clau_decode/analytics/pricing.py +162 -0
- clau_decode/analytics/prompt.py +34 -0
- clau_decode/analytics/service.py +23 -0
- clau_decode/analytics/stats.py +117 -0
- clau_decode/analytics/tips.py +176 -0
- clau_decode/btw_capture.py +290 -0
- clau_decode/cli.py +504 -0
- clau_decode/config.py +144 -0
- clau_decode/db.py +2054 -0
- clau_decode/driver_manager.py +387 -0
- clau_decode/drivers/__init__.py +27 -0
- clau_decode/drivers/base.py +170 -0
- clau_decode/drivers/registry.py +113 -0
- clau_decode/drivers/tmux_driver.py +488 -0
- clau_decode/editor.py +182 -0
- clau_decode/events_bus.py +69 -0
- clau_decode/locks.py +388 -0
- clau_decode/migrate.py +1313 -0
- clau_decode/models.py +285 -0
- clau_decode/parser.py +466 -0
- clau_decode/providers/__init__.py +30 -0
- clau_decode/providers/base.py +132 -0
- clau_decode/providers/claude.py +81 -0
- clau_decode/providers/codex.py +441 -0
- clau_decode/providers/registry.py +89 -0
- clau_decode/pty_native.py +39 -0
- clau_decode/pty_runner.py +2406 -0
- clau_decode/pty_screen_state.py +65 -0
- clau_decode/recap_runner.py +230 -0
- clau_decode/reporter.py +305 -0
- clau_decode/scanner.py +125 -0
- clau_decode/server.py +2841 -0
- clau_decode/static/android-chrome-192x192.png +0 -0
- clau_decode/static/android-chrome-512x512.png +0 -0
- clau_decode/static/app-icon.png +0 -0
- clau_decode/static/apple-touch-icon.png +0 -0
- clau_decode/static/assets/ChatView-BBVXuITs.js +79 -0
- clau_decode/static/assets/ChatView-BrP-ENHg.css +1 -0
- clau_decode/static/assets/Dashboard-3CYO4HQw.js +1 -0
- clau_decode/static/assets/FileViewer-BwbDc3ky.js +1 -0
- clau_decode/static/assets/HelpPopup-CPtECjYw.js +1 -0
- clau_decode/static/assets/ScrollContainer-BT_Dzxah.js +1 -0
- clau_decode/static/assets/SearchOverlay-DqI7aZaC.js +1 -0
- clau_decode/static/assets/SessionItem-DlyKg80u.js +1 -0
- clau_decode/static/assets/SettingsModal-CZBfMqx7.js +1 -0
- clau_decode/static/assets/ShortcutsPopup-W7CPdCzW.js +1 -0
- clau_decode/static/assets/Sidebar-BBswhEua.js +1 -0
- clau_decode/static/assets/client-DTSXvAb8.js +1 -0
- clau_decode/static/assets/fira-code-DGosTW8U.woff2 +0 -0
- clau_decode/static/assets/formatRelative-j86webkr.js +1 -0
- clau_decode/static/assets/hljs-B3O74O7Z.js +35 -0
- clau_decode/static/assets/index-BHdCOIkq.css +10 -0
- clau_decode/static/assets/index-DfKltZ6z.js +5 -0
- clau_decode/static/assets/ioskeley-mono-C7VR2-sL.woff2 +0 -0
- clau_decode/static/assets/jetbrains-mono-V6pRDFza.woff2 +0 -0
- clau_decode/static/assets/julia-mono-Cbvba6sW.woff2 +0 -0
- clau_decode/static/assets/libertinus-mono-Coz17E-O.woff2 +0 -0
- clau_decode/static/assets/monaspace-argon-RS-2TGNg.woff2 +0 -0
- clau_decode/static/assets/nativePtyFonts-BaXKtUsn.js +1 -0
- clau_decode/static/assets/react-Bi_azaFt.js +9 -0
- clau_decode/static/assets/renderSnippet-CqpQQugH.js +1 -0
- clau_decode/static/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
- clau_decode/static/assets/shared-DdVGprvF.js +1 -0
- clau_decode/static/assets/source-code-pro-DEXWLoHG.woff2 +0 -0
- clau_decode/static/assets/spline-sans-mono-mUpA6Mve.woff2 +0 -0
- clau_decode/static/assets/ui-BcGPjpYn.js +1 -0
- clau_decode/static/assets/xanh-mono-Dsg19vWS.woff2 +0 -0
- clau_decode/static/favicon-16x16.png +0 -0
- clau_decode/static/favicon-32x32.png +0 -0
- clau_decode/static/favicon.ico +0 -0
- clau_decode/static/index.html +24 -0
- clau_decode/static/site.webmanifest +1 -0
- clau_decode/update_check.py +51 -0
- clau_decode/watcher.py +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,t as n}from"./react-Bi_azaFt.js";import{o as r,t as i}from"./client-DTSXvAb8.js";import{f as a,g as o,h as s,t as c}from"./index-DfKltZ6z.js";import{i as l}from"./ScrollContainer-BT_Dzxah.js";import{i as u,s as d,t as f}from"./formatRelative-j86webkr.js";import{n as p,t as m}from"./renderSnippet-CqpQQugH.js";var h=e(t(),1);function g(e){return e>=1?`$${e.toFixed(2)}`:e>0?`$${e.toFixed(4)}`:`$0`}function _(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e4?`${(e/1e3).toFixed(0)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function v(e){return e.replace(/^claude-/,``).replace(/-\d{8}$/,``)}var y={sonnet:`#b8956a`,opus:`#9b8ec4`,haiku:`#6bb5a6`};function b(e){let t=e.toLowerCase();for(let[e,n]of Object.entries(y))if(t.includes(e))return n;return`var(--text-tertiary)`}function x(){let e=new Date().getHours();return e<5?`Working late`:e<12?`Good morning`:e<18?`Good afternoon`:`Good evening`}function S(e){let t=e.lastIndexOf(`/`);return t===-1?{name:e,dir:``}:{name:e.slice(t+1),dir:e.slice(0,t)}}var C=n(),w=50;function T(){let e=s(e=>e.setPendingScrollMessageId),t=a(),[n,r]=(0,h.useState)(``),[c,g]=(0,h.useState)([]),[_,v]=(0,h.useState)(!1),[y,b]=(0,h.useState)(!1),[x,S]=(0,h.useState)(!1),[T,E]=(0,h.useState)(0),[D,O]=(0,h.useState)(!1),k=p(n,300),A=(0,h.useRef)(null),j=(0,h.useRef)(null),M=(0,h.useRef)(null);(0,h.useEffect)(()=>{let e=e=>{A.current?.contains(e.target)||O(!1)};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[]),(0,h.useEffect)(()=>{if(k.length<2){g([]),S(!1);return}let e=!1;return v(!0),i.search(k,void 0,w).then(t=>{e||(g(t),S(t.length===w),E(0))}).catch(()=>{e||(g([]),S(!1))}).finally(()=>{e||v(!1)}),()=>{e=!0}},[k]);let N=(0,h.useCallback)(()=>{y||(b(!0),i.search(k,void 0,w,c.length).then(e=>{g(t=>[...t,...e]),S(e.length===w)}).catch(()=>S(!1)).finally(()=>b(!1)))},[k,c.length,y]);(0,h.useEffect)(()=>{let e=M.current;e&&e.children[T]?.scrollIntoView({block:`nearest`})},[T]);let P=(0,h.useCallback)(n=>{t.has(n.session_id)&&t.remove(n.session_id),e(n.message_id);let r=()=>o(`/chat/${n.session_id}`);u(n.session_id)?r():i.getSession(n.session_id).then(e=>{d(n.session_id,e),r()}).catch(r)},[e,t]),F=e=>{e.key===`ArrowDown`?(e.preventDefault(),E(e=>Math.min(e+1,Math.max(c.length-1,0)))):e.key===`ArrowUp`?(e.preventDefault(),E(e=>Math.max(e-1,0))):e.key===`Enter`&&c[T]?P(c[T]):e.key===`Escape`&&(n?r(``):(j.current?.blur(),O(!1)))},I=D&&n.length>0;return(0,C.jsxs)(`div`,{ref:A,style:{position:`relative`,width:`100%`,maxWidth:`520px`,alignSelf:`center`},children:[(0,C.jsxs)(`div`,{onClick:()=>j.current?.focus(),style:{display:`flex`,alignItems:`center`,gap:`10px`,padding:`11px 14px`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,transition:`border-color 0.15s`,cursor:`text`},onMouseEnter:e=>{e.currentTarget.style.borderColor=`var(--border-default)`},onMouseLeave:e=>{e.currentTarget.style.borderColor=`var(--border-subtle)`},children:[(0,C.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{flexShrink:0,opacity:.6,color:`var(--text-secondary)`},children:[(0,C.jsx)(`circle`,{cx:`11`,cy:`11`,r:`7`}),(0,C.jsx)(`path`,{d:`m20 20-3.5-3.5`})]}),(0,C.jsx)(`input`,{ref:j,type:`text`,value:n,onChange:e=>{r(e.target.value),O(!0)},onFocus:()=>O(!0),onKeyDown:F,placeholder:`Search sessions, messages, code…`,style:{flex:1,border:`none`,outline:`none`,background:`transparent`,fontSize:`13.5px`,color:`var(--text-primary)`,fontFamily:`inherit`,minWidth:0}}),_&&(0,C.jsx)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`},children:`Searching…`})]}),I&&(0,C.jsxs)(`div`,{style:{position:`absolute`,top:`calc(100% + 6px)`,left:0,right:0,background:`var(--bg-modal)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,boxShadow:`var(--shadow-lg)`,overflow:`hidden`,zIndex:50},children:[c.length>0&&(0,C.jsxs)(l,{style:{maxHeight:`360px`},children:[(0,C.jsx)(`ul`,{ref:M,role:`listbox`,style:{listStyle:`none`,margin:0,padding:`6px 0`},children:c.map((e,t)=>(0,C.jsxs)(`li`,{role:`option`,"aria-selected":t===T,onMouseDown:t=>{t.preventDefault(),P(e)},onMouseEnter:()=>E(t),style:{padding:`10px 14px`,cursor:`pointer`,background:t===T?`var(--bg-sidebar-hover)`:`transparent`,transition:`background var(--transition-fast)`},children:[(0,C.jsx)(`div`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-primary)`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`,marginBottom:`3px`},children:e.session_title??`Untitled`}),(0,C.jsx)(`div`,{style:{fontSize:`12px`,color:`var(--text-secondary)`,display:`-webkit-box`,WebkitLineClamp:2,WebkitBoxOrient:`vertical`,overflow:`hidden`,lineHeight:1.4,marginBottom:e.timestamp?`4px`:0},children:m(e.snippet)}),e.timestamp&&(0,C.jsx)(`div`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`},children:f(e.timestamp)})]},e.message_id))}),x&&(0,C.jsx)(`button`,{onClick:N,disabled:y,style:{display:`block`,width:`100%`,padding:`10px 14px`,border:`none`,background:`transparent`,color:`var(--text-tertiary)`,fontSize:`12px`,fontFamily:`inherit`,cursor:y?`default`:`pointer`},children:y?`Loading…`:`Load more`})]}),!_&&n.length>=2&&c.length===0&&(0,C.jsxs)(`div`,{style:{padding:`20px 14px`,textAlign:`center`,fontSize:`13px`,color:`var(--text-tertiary)`},children:[`No results for "`,n,`"`]}),n.length>0&&n.length<2&&(0,C.jsx)(`div`,{style:{padding:`14px`,textAlign:`center`,fontSize:`12px`,color:`var(--text-tertiary)`},children:`Type at least 2 characters…`})]})]})}function E({totalSessions:e}){return(0,C.jsxs)(`section`,{style:{display:`flex`,flexDirection:`column`,gap:`30px`,paddingTop:`8px`},children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{style:{fontSize:`13px`,color:`var(--text-tertiary)`,marginBottom:`6px`,letterSpacing:`0.02em`},children:[x(),` —`]}),(0,C.jsxs)(`h1`,{style:{fontFamily:`var(--font-content)`,fontSize:`34px`,fontWeight:600,margin:0,lineHeight:1.15,color:`var(--text-primary)`,letterSpacing:`-0.01em`},children:[`Clau`,(0,C.jsx)(`span`,{style:{color:`var(--accent-orange)`},children:`-`}),`Decode`]}),(0,C.jsx)(`div`,{style:{fontSize:`14px`,color:`var(--text-secondary)`,marginTop:`6px`},children:e>0?(0,C.jsx)(C.Fragment,{children:`Browse, search, and analyze your sessions.`}):(0,C.jsx)(C.Fragment,{children:`Your local browser for session history.`})})]}),(0,C.jsx)(T,{})]})}function D({title:e,hint:t}){return(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`baseline`,justifyContent:`space-between`,margin:`0 0 14px`},children:[(0,C.jsx)(`h3`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,textTransform:`uppercase`,letterSpacing:`0.09em`,fontWeight:600,margin:0},children:e}),t&&(0,C.jsx)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,opacity:.7},children:t})]})}function O(e,t,n){let r=e=>`${Math.round(e)}%`;if(e&&e.length>=14){let t=[...e].sort((e,t)=>e.day.localeCompare(t.day)),n=t.slice(-7),r=t.slice(-14,-7),i=n.reduce((e,t)=>e+t.prompt_count,0),a=r.reduce((e,t)=>e+t.prompt_count,0);if(a>=20){if(i>=a*1.5){let e=Math.round((i-a)/a*100);return{ruleId:`big-week`,body:(0,C.jsxs)(C.Fragment,{children:[`Active week — `,(0,C.jsxs)(`b`,{children:[i,` messages`]}),`, up `,e,`% from last week.`]})}}if(i<=a*.5)return{ruleId:`cooling-off`,body:(0,C.jsxs)(C.Fragment,{children:[`Quieter week — `,(0,C.jsxs)(`b`,{children:[i,` messages`]}),`, down from `,a,`.`]})}}}if(e&&e.length>=14&&n&&n.length>0){let e=n[0],t=n.reduce((e,t)=>e+t.total_tokens,0);if(t>0){let n=e.total_tokens/t*100;if(n>=60)return{ruleId:`model-share`,body:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`b`,{children:v(e.model)}),` is your go-to — `,r(n),` of recent tokens.`]})}}}if(t&&t.length>0){let e=t[0];if(e.count>=50)return{ruleId:`top-tool`,body:(0,C.jsxs)(C.Fragment,{children:[`Your most-used tool is `,(0,C.jsx)(`b`,{children:e.tool}),` (`,e.count.toLocaleString(),` calls).`]})}}return null}function k({insight:e}){return(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`,padding:`10px 14px`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,fontSize:`13px`,color:`var(--text-secondary)`,lineHeight:1.5},children:[(0,C.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`var(--accent-orange)`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{flexShrink:0,opacity:.85},"aria-hidden":`true`,children:(0,C.jsx)(`path`,{d:`M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83`})}),(0,C.jsx)(`span`,{style:{minWidth:0},children:e.body})]})}function A({session:e,onClick:t}){let n=e.last_message_role===`assistant`;return(0,C.jsxs)(`button`,{onClick:t,style:{display:`flex`,flexDirection:`column`,gap:`14px`,padding:`20px 22px`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,cursor:`pointer`,textAlign:`left`,width:`100%`,fontFamily:`inherit`,color:`inherit`,transition:`border-color 0.15s, background 0.15s`},onMouseEnter:e=>{e.currentTarget.style.borderColor=`var(--border-default)`},onMouseLeave:e=>{e.currentTarget.style.borderColor=`var(--border-subtle)`},children:[(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`},children:[(0,C.jsx)(`span`,{style:{fontSize:`10.5px`,color:`var(--text-tertiary)`,textTransform:`uppercase`,letterSpacing:`0.09em`,fontWeight:600},children:`Pick up where you left off`}),n&&(0,C.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:`5px`,fontSize:`10.5px`,color:`var(--accent-orange)`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.06em`},children:[(0,C.jsx)(`span`,{style:{width:`6px`,height:`6px`,borderRadius:`50%`,background:`var(--accent-orange)`}}),`awaiting you`]})]}),(0,C.jsx)(`div`,{style:{fontSize:`18px`,fontWeight:500,color:`var(--text-primary)`,lineHeight:1.35,overflow:`hidden`,display:`-webkit-box`,WebkitLineClamp:2,WebkitBoxOrient:`vertical`},children:e.title||`Untitled session`}),(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`14px`,flexWrap:`wrap`,fontSize:`12px`,color:`var(--text-tertiary)`},children:[(0,C.jsxs)(`span`,{children:[e.message_count,` message`,e.message_count===1?``:`s`]}),(0,C.jsx)(`span`,{style:{opacity:.4},children:`·`}),(0,C.jsx)(`span`,{children:f(e.updated_at)}),e.models.length>0&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{style:{opacity:.4},children:`·`}),(0,C.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:`6px`},children:[(0,C.jsx)(`span`,{style:{width:`8px`,height:`8px`,borderRadius:`2px`,background:b(e.models[0])}}),e.models.map(v).join(`, `)]})]}),(0,C.jsx)(`span`,{style:{opacity:.4},children:`·`}),(0,C.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,color:`var(--accent-orange)`},children:g(e.total_usd)}),(0,C.jsx)(`span`,{style:{marginLeft:`auto`,color:`var(--accent-orange)`,fontWeight:500},children:`Continue →`})]})]})}function j({session:e,onClick:t}){let n=e.last_message_role===`assistant`;return(0,C.jsxs)(`div`,{onClick:t,style:{display:`flex`,alignItems:`center`,gap:`12px`,padding:`10px 12px`,background:`transparent`,borderRadius:`var(--radius-md)`,cursor:`pointer`,transition:`background 0.12s`},onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-tool-block)`},onMouseLeave:e=>{e.currentTarget.style.background=`transparent`},children:[e.models[0]&&(0,C.jsx)(`span`,{style:{width:`8px`,height:`8px`,borderRadius:`2px`,background:b(e.models[0]),flexShrink:0},title:e.models.map(v).join(`, `)}),(0,C.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,C.jsx)(`div`,{style:{fontSize:`13px`,color:`var(--text-primary)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.title||`Untitled session`}),(0,C.jsxs)(`div`,{style:{display:`flex`,gap:`8px`,marginTop:`3px`,fontSize:`11px`,color:`var(--text-tertiary)`},children:[(0,C.jsxs)(`span`,{children:[e.message_count,` msgs`]}),(0,C.jsx)(`span`,{style:{opacity:.4},children:`·`}),(0,C.jsx)(`span`,{children:f(e.updated_at)})]})]}),n&&(0,C.jsx)(`div`,{style:{width:`7px`,height:`7px`,borderRadius:`50%`,background:`var(--accent-orange)`,flexShrink:0},title:`Awaiting your reply`}),(0,C.jsx)(`div`,{style:{fontSize:`12px`,fontFamily:`var(--font-mono)`,color:`var(--accent-orange)`,flexShrink:0,minWidth:`52px`,textAlign:`right`},children:g(e.total_usd)})]})}function M({daily:e}){let t=new Date;t.setHours(0,0,0,0);let n=new Map;for(let t of e)n.set(t.day,t);let r=[];for(let e=29;e>=0;e--){let i=new Date(t);i.setDate(t.getDate()-e);let a=i.toISOString().slice(0,10),o=n.get(a);r.push({key:a,date:i,count:o?o.prompt_count:0})}let i=Math.max(1,...r.map(e=>e.count)),a=[`var(--bg-tool-block)`,`color-mix(in srgb, var(--accent-orange) 20%, transparent)`,`color-mix(in srgb, var(--accent-orange) 40%, transparent)`,`color-mix(in srgb, var(--accent-orange) 65%, transparent)`,`var(--accent-orange)`];function o(e){if(e===0)return a[0];let t=e/i;return t<.25?a[1]:t<.5?a[2]:t<.75?a[3]:a[4]}let s=r.reduce((e,t)=>e+t.count,0),c=r.filter(e=>e.count>0).length;return(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Activity`,hint:`${c}/30 active days · ${s} prompts`}),(0,C.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`8px`},children:[(0,C.jsx)(`div`,{style:{display:`flex`,gap:`4px`},children:r.map(e=>(0,C.jsx)(`div`,{title:`${e.date.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})} · ${e.count} prompt${e.count===1?``:`s`}`,style:{flex:1,aspectRatio:`1 / 1`,maxHeight:`22px`,borderRadius:`3px`,background:o(e.count),transition:`background 0.15s`}},e.key))}),(0,C.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,fontSize:`11px`,color:`var(--text-tertiary)`},children:[(0,C.jsx)(`span`,{children:`30 days ago`}),(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`4px`},children:[(0,C.jsx)(`span`,{children:`less`}),a.map((e,t)=>(0,C.jsx)(`div`,{style:{width:`10px`,height:`10px`,borderRadius:`2px`,background:e}},t)),(0,C.jsx)(`span`,{children:`more`})]}),(0,C.jsx)(`span`,{children:`today`})]})]})]})}function N({values:e,width:t=96,height:n=28}){if(e.length<2)return null;let r=Math.max(...e),i=Math.min(...e),a=r-i||1,o=t/(e.length-1),s=n-6,c=e.map((e,t)=>{let n=t*o,r=3+s-(e-i)/a*s;return`${n.toFixed(1)},${r.toFixed(1)}`}).join(` `),l=(e.length-1)*o,u=3+s-(e[e.length-1]-i)/a*s,d=`0,${n} ${c} ${t},${n}`;return(0,C.jsxs)(`svg`,{width:t,height:n,viewBox:`0 0 ${t} ${n}`,style:{display:`block`,overflow:`visible`,flexShrink:0},"aria-hidden":`true`,children:[(0,C.jsx)(`polyline`,{points:d,fill:`var(--accent-orange)`,fillOpacity:`0.10`,stroke:`none`}),(0,C.jsx)(`polyline`,{points:c,fill:`none`,stroke:`var(--accent-orange)`,strokeWidth:`1.75`,strokeLinejoin:`round`,strokeLinecap:`round`}),(0,C.jsx)(`circle`,{cx:l,cy:u,r:`2.5`,fill:`var(--accent-orange)`})]})}function P({data:e,daily:t}){let n=(t||[]).slice(-7),r=n.map(e=>e.session_count),i=n.map(e=>e.prompt_count);return(0,C.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(3, 1fr)`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,overflow:`hidden`},children:[{label:`Sessions`,value:_(e.total_sessions),spark:r,sub:`7-day trend`},{label:`Messages`,value:_(e.total_messages),spark:i,sub:`7-day trend`},{label:`Recent cost`,value:g(e.total_cost_usd),sub:`last 10 sessions`}].map((e,t)=>(0,C.jsxs)(`div`,{style:{padding:`16px 20px`,display:`flex`,flexDirection:`column`,gap:`4px`,borderLeft:t===0?`none`:`1px solid var(--border-subtle)`},children:[(0,C.jsx)(`div`,{style:{fontSize:`10.5px`,color:`var(--text-tertiary)`,textTransform:`uppercase`,letterSpacing:`0.09em`,fontWeight:600},children:e.label}),(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-end`,justifyContent:`space-between`,gap:`8px`},children:[(0,C.jsx)(`div`,{style:{fontSize:`26px`,fontWeight:600,color:`var(--text-primary)`,fontFamily:`var(--font-mono)`,lineHeight:1.1,letterSpacing:`-0.02em`},children:e.value}),e.spark&&e.spark.length>=2&&(0,C.jsx)(N,{values:e.spark})]}),e.sub&&(0,C.jsx)(`div`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,marginTop:`1px`},children:e.sub})]},e.label))})}function F({models:e}){if(e.length===0)return null;let t=e.reduce((e,t)=>e+t.total_tokens,0);return t===0?null:(0,C.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`},children:[(0,C.jsx)(`div`,{style:{display:`flex`,height:`8px`,borderRadius:`var(--radius-pill)`,overflow:`hidden`,background:`var(--bg-tool-block)`},children:e.map(e=>{let n=e.total_tokens/t*100;return(0,C.jsx)(`div`,{title:`${v(e.model)} — ${n.toFixed(1)}%`,style:{width:`${n}%`,background:b(e.model)}},e.model)})}),(0,C.jsx)(`div`,{style:{display:`flex`,gap:`16px`,flexWrap:`wrap`},children:e.map(e=>{let n=(e.total_tokens/t*100).toFixed(1);return(0,C.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`7px`},children:[(0,C.jsx)(`div`,{style:{width:`8px`,height:`8px`,borderRadius:`2px`,background:b(e.model),flexShrink:0}}),(0,C.jsx)(`span`,{style:{fontSize:`12px`,color:`var(--text-secondary)`},children:v(e.model)}),(0,C.jsxs)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,fontFamily:`var(--font-mono)`},children:[n,`%`]})]},e.model)})})]})}function I({entries:e,onOpen:t}){return(0,C.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`4px`},children:e.map(e=>{let{name:n,dir:r}=S(e.file);return(0,C.jsxs)(`button`,{onClick:()=>t(e.file),style:{display:`flex`,alignItems:`center`,gap:`10px`,padding:`9px 12px`,background:`transparent`,border:`none`,borderRadius:`var(--radius-md)`,cursor:`pointer`,textAlign:`left`,fontFamily:`inherit`,color:`inherit`,transition:`background 0.12s`},onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-tool-block)`},onMouseLeave:e=>{e.currentTarget.style.background=`transparent`},children:[(0,C.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{color:`var(--text-tertiary)`,flexShrink:0},"aria-hidden":`true`,children:[(0,C.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,C.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]}),(0,C.jsxs)(`div`,{style:{flex:1,minWidth:0,display:`flex`,alignItems:`baseline`,gap:`8px`,overflow:`hidden`},children:[(0,C.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,fontSize:`12.5px`,color:`var(--text-primary)`,whiteSpace:`nowrap`,flexShrink:0},children:n}),r&&(0,C.jsx)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,direction:`rtl`,textAlign:`left`},children:r})]}),(0,C.jsxs)(`span`,{style:{fontSize:`11px`,fontFamily:`var(--font-mono)`,color:`var(--text-tertiary)`,flexShrink:0},children:[e.count,`× edits`]})]},e.file)})})}function L({project:e,onClick:t}){return(0,C.jsxs)(`button`,{onClick:t,style:{flex:`0 0 auto`,width:`180px`,padding:`11px 14px`,background:`var(--bg-tool-block)`,borderRadius:`var(--radius-md)`,border:`1px solid var(--border-subtle)`,cursor:`pointer`,textAlign:`left`,fontFamily:`inherit`,color:`inherit`,transition:`background 0.12s, border-color 0.12s`},onMouseEnter:e=>{e.currentTarget.style.borderColor=`var(--border-default)`},onMouseLeave:e=>{e.currentTarget.style.borderColor=`var(--border-subtle)`},children:[(0,C.jsx)(`div`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-primary)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.display_name}),(0,C.jsxs)(`div`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,marginTop:`4px`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:[e.session_count,` session`,e.session_count===1?``:`s`,e.last_activity_at&&` · ${f(e.last_activity_at)}`]})]})}function R({projects:e,onSelect:t}){let n=[...e].sort((e,t)=>{let n=e.last_activity_at?Date.parse(e.last_activity_at):0;return(t.last_activity_at?Date.parse(t.last_activity_at):0)-n}),r=n.slice(0,20),i=n.length-r.length;return(0,C.jsxs)(`div`,{className:`dashboard-project-strip`,style:{display:`flex`,gap:`8px`,overflowX:`auto`,paddingBottom:`4px`,margin:`0 -32px`,padding:`0 32px 4px`},children:[r.map(e=>(0,C.jsx)(L,{project:e,onClick:()=>t(e.id)},e.id)),i>0&&(0,C.jsxs)(`div`,{style:{flex:`0 0 auto`,width:`120px`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`11px 14px`,fontSize:`12px`,color:`var(--text-tertiary)`,fontStyle:`italic`,border:`1px dashed var(--border-subtle)`,borderRadius:`var(--radius-md)`},children:[`+`,i,` more`]})]})}function z({tip:e}){let t={info:`#7eb6c4`,warning:`#c9a96e`,error:`#c47a7a`};return(0,C.jsxs)(`div`,{style:{padding:`11px 14px`,background:`var(--bg-tool-block)`,borderRadius:`var(--radius-md)`,borderLeft:`3px solid ${t[e.severity]||t.info}`},children:[(0,C.jsx)(`div`,{style:{fontSize:`12.5px`,fontWeight:500,color:`var(--text-primary)`},children:e.title}),(0,C.jsx)(`div`,{style:{fontSize:`11.5px`,color:`var(--text-tertiary)`,marginTop:`3px`,lineHeight:1.5},children:e.detail})]})}var B=e=>`$${e.toFixed(2)}`,V={textAlign:`left`,padding:`6px 10px`,color:`var(--text-tertiary)`,fontWeight:500,fontSize:`11px`},H={padding:`8px 10px`,fontFamily:`var(--font-mono)`,color:`var(--text-secondary)`};function U({pricing:e}){return e.models.length===0?null:(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Model rates`,hint:`USD / 1M tokens · ${e.source}`}),(0,C.jsx)(`div`,{style:{borderRadius:`var(--radius-md)`,border:`1px solid var(--border-subtle)`,overflow:`hidden`},children:(0,C.jsxs)(`table`,{style:{width:`100%`,borderCollapse:`separate`,borderSpacing:0,fontSize:`13px`},children:[(0,C.jsx)(`thead`,{children:(0,C.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border-subtle)`},children:[`Model`,`Input`,`Output`,`Cache Write`,`Cache Read`].map(e=>(0,C.jsx)(`th`,{style:V,children:e},e))})}),(0,C.jsx)(`tbody`,{children:e.models.map((t,n)=>(0,C.jsxs)(`tr`,{style:{borderBottom:n<e.models.length-1?`1px solid var(--border-subtle)`:void 0},children:[(0,C.jsx)(`td`,{style:{...H,fontSize:`12px`,color:`var(--text-primary)`},children:t.model}),(0,C.jsx)(`td`,{style:H,children:B(t.input_per_mtok)}),(0,C.jsx)(`td`,{style:H,children:B(t.output_per_mtok)}),(0,C.jsx)(`td`,{style:H,children:B(t.cache_write_per_mtok)}),(0,C.jsx)(`td`,{style:H,children:B(t.cache_read_per_mtok)})]},t.model))})]})})]})}function W({onSearch:e}){return(0,C.jsxs)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:`16px`,padding:`60px 28px`,textAlign:`center`},children:[(0,C.jsx)(`div`,{style:{width:`56px`,height:`56px`,borderRadius:`var(--radius-lg)`,background:`var(--accent-orange-subtle)`,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--accent-orange)`},children:(0,C.jsx)(`svg`,{width:`26`,height:`26`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,C.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`})})}),(0,C.jsx)(`h2`,{style:{fontFamily:`var(--font-content)`,fontSize:`22px`,fontWeight:600,margin:0,color:`var(--text-primary)`},children:`No sessions yet`}),(0,C.jsx)(`div`,{style:{fontSize:`14px`,color:`var(--text-secondary)`,maxWidth:`440px`,lineHeight:1.6},children:`Clau-Decode reads your local session history. Start a session and it will appear here automatically.`}),(0,C.jsx)(`button`,{onClick:e,style:{marginTop:`8px`,padding:`8px 16px`,background:`var(--accent-orange)`,color:`var(--text-on-accent)`,border:`none`,borderRadius:`var(--radius-md)`,cursor:`pointer`,fontSize:`13px`,fontWeight:500},children:`Open search`})]})}var G={data:null,daily:null,touchedFiles:null,toolUsage:null,pricing:null};function K(){let[e,t]=(0,h.useState)(G.data),[n,a]=(0,h.useState)(G.daily),[u,d]=(0,h.useState)(G.touchedFiles),[f,p]=(0,h.useState)(G.toolUsage),[m,g]=(0,h.useState)(G.pricing),[_,v]=(0,h.useState)(G.data===null),y=s(e=>e.selectProject),b=s(e=>e.openSearch),x=s(e=>e.setViewingFilePath),S=e=>o(`/chat/${e}`),w=(0,h.useRef)(()=>{});w.current=()=>{G.data===null&&v(!0),i.getDashboard().then(e=>{G.data=e,t(e)}).finally(()=>v(!1)),i.getDailyAnalytics().then(e=>{G.daily=e,a(e)}).catch(()=>{}),i.getFileTouches().then(e=>{G.touchedFiles=e,d(e)}).catch(()=>{}),i.getToolUsage().then(e=>{G.toolUsage=e,p(e)}).catch(()=>{}),i.getPricingTable().then(e=>{G.pricing=e,g(e)}).catch(()=>{})};let T=(0,h.useMemo)(()=>O(n,f,e?.model_usage??null),[n,f,e?.model_usage]);if((0,h.useEffect)(()=>{w.current()},[]),(0,h.useEffect)(()=>r(`refresh`,()=>{w.current()}),[]),_&&!e)return(0,C.jsx)(`div`,{style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,C.jsx)(c,{width:`102px`,label:`Loading dashboard`})});if(!e)return null;let N=e.total_sessions===0&&e.recent_sessions.length===0,[L,...B]=e.recent_sessions;return(0,C.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,overflow:`hidden`,background:`var(--bg-base)`},children:(0,C.jsx)(l,{style:{flex:1,padding:`36px 32px 48px`},children:(0,C.jsxs)(`div`,{style:{maxWidth:`820px`,margin:`0 auto`,display:`flex`,flexDirection:`column`,gap:`36px`},children:[(0,C.jsx)(E,{totalSessions:e.total_sessions}),T&&(0,C.jsx)(k,{insight:T}),N?(0,C.jsx)(W,{onSearch:b}):(0,C.jsxs)(C.Fragment,{children:[L&&(0,C.jsx)(A,{session:L,onClick:()=>S(L.id)}),n&&n.length>0&&(0,C.jsx)(M,{daily:n}),(0,C.jsx)(P,{data:e,daily:n}),e.model_usage.length>0&&(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Model distribution`,hint:`by tokens, recent`}),(0,C.jsx)(F,{models:e.model_usage})]}),m&&(0,C.jsx)(U,{pricing:m}),B.length>0&&(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Recent activity`,hint:`${B.length} more`}),(0,C.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`},children:B.map(e=>(0,C.jsx)(j,{session:e,onClick:()=>S(e.id)},e.id))})]}),u&&u.length>0&&(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Most touched files`,hint:`recent sessions`}),(0,C.jsx)(I,{entries:u.slice(0,8),onOpen:x})]}),e.projects.length>0&&(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Projects`,hint:`${e.projects.length} total`}),(0,C.jsx)(R,{projects:e.projects,onSelect:y})]}),e.tips.length>0&&(0,C.jsxs)(`section`,{children:[(0,C.jsx)(D,{title:`Optimization tips`}),(0,C.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`8px`},children:e.tips.map(e=>(0,C.jsx)(z,{tip:e},e.rule_id))})]})]})]})})})}export{K as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,t as n}from"./react-Bi_azaFt.js";import{t as r}from"./client-DTSXvAb8.js";import{a as i,h as a,l as o,s}from"./index-DfKltZ6z.js";import{i as c}from"./ScrollContainer-BT_Dzxah.js";import{n as l,t as u}from"./hljs-B3O74O7Z.js";var d=e(t(),1),f=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.ico`,`.svg`,`.tiff`,`.tif`,`.avif`]),p=new Set([`.pdf`]),m=new Set([`.mp3`,`.wav`,`.ogg`,`.flac`,`.aac`,`.m4a`,`.wma`,`.opus`]),h=new Set([`.mp4`,`.webm`,`.mov`,`.avi`,`.mkv`,`.m4v`,`.ogv`]),g=new Set([`.zip`,`.tar`,`.gz`,`.bz2`,`.xz`,`.7z`,`.rar`,`.tgz`,`.zst`]);function ee(e){let t=e.lastIndexOf(`.`);if(t===-1)return`text`;let n=e.slice(t).toLowerCase();return f.has(n)?`image`:p.has(n)?`pdf`:m.has(n)?`audio`:h.has(n)?`video`:g.has(n)?`archive`:`text`}function te(e){return`/api/fs/blob?${new URLSearchParams({path:e}).toString()}`}var _=n(),v=360,y=360;function ne(){if(typeof window>`u`)return 720;let e=s(i.FILE_VIEWER_WIDTH),t=e?Number(e):NaN;return Number.isFinite(t)?t:720}function b(e){if(!e)return!1;if(e.language===`markdown`)return!0;let t=e.name.toLowerCase();return t.endsWith(`.md`)||t.endsWith(`.markdown`)||t.endsWith(`.mdx`)}function x(){return(0,_.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,_.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,_.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]})}function S(){return(0,_.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,_.jsx)(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),(0,_.jsx)(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})]})}function C(){return(0,_.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,_.jsx)(`path`,{d:`M12 20h9`}),(0,_.jsx)(`path`,{d:`M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4Z`})]})}var re={margin:0,padding:`16px 20px`,fontFamily:`var(--font-mono)`,fontSize:`13px`,lineHeight:1.6,background:`var(--bg-code-block)`,minHeight:`100%`,whiteSpace:`pre-wrap`,wordBreak:`break-word`,overflowWrap:`anywhere`};function ie({category:e,url:t}){return e===`image`?(0,_.jsx)(`div`,{style:{padding:`20px`,display:`flex`,justifyContent:`center`,alignItems:`flex-start`,minHeight:`100%`},children:(0,_.jsx)(`img`,{src:t,alt:`Preview`,loading:`lazy`,style:{maxWidth:`100%`,maxHeight:`80vh`,borderRadius:`var(--radius-sm)`},onError:e=>{e.target.style.display=`none`;let t=e.target.parentElement;t&&(t.innerHTML=`<div style="padding:24px;color:var(--tool-error-text);fontSize:13px">Failed to load image</div>`)}})}):e===`pdf`?(0,_.jsx)(`iframe`,{src:t,title:`PDF Preview`,style:{width:`100%`,height:`100%`,border:`none`,minHeight:`80vh`}}):e===`audio`?(0,_.jsx)(`div`,{style:{padding:`40px 20px`,display:`flex`,justifyContent:`center`,alignItems:`center`,minHeight:`100%`},children:(0,_.jsx)(`audio`,{controls:!0,src:t,style:{width:`100%`,maxWidth:`500px`},children:`Your browser does not support audio playback.`})}):e===`video`?(0,_.jsx)(`div`,{style:{padding:`20px`,display:`flex`,justifyContent:`center`,alignItems:`center`,minHeight:`100%`},children:(0,_.jsx)(`video`,{controls:!0,src:t,style:{maxWidth:`100%`,maxHeight:`80vh`,borderRadius:`var(--radius-sm)`},children:`Your browser does not support video playback.`})}):(0,_.jsxs)(`div`,{style:{padding:`40px 24px`,textAlign:`center`,color:`var(--text-tertiary)`,fontSize:`13px`},children:[(0,_.jsx)(`div`,{style:{fontWeight:500,color:`var(--text-secondary)`,marginBottom:`6px`},children:e===`archive`?`Archive file`:`Binary file`}),(0,_.jsx)(`div`,{children:`Preview is not available for this file type.`})]})}function w(){let e=a(e=>e.viewingFilePath),t=a(e=>e.setViewingFilePath),[n,s]=(0,d.useState)(null),[f,p]=(0,d.useState)(!1),[m,h]=(0,d.useState)(null),[g,w]=(0,d.useState)(!1),[T,E]=(0,d.useState)(null),[D,O]=(0,d.useState)(!1),[k,A]=(0,d.useState)(!1),[j,M]=(0,d.useState)(!1),[N,P]=(0,d.useState)(``),[F,I]=(0,d.useState)(!1),[L,R]=(0,d.useState)(null),z=(0,d.useRef)(null),[B,V]=(0,d.useState)(ne),H=(0,d.useRef)(B);H.current=B;let[U,W]=(0,d.useState)(!1),[G,K]=(0,d.useState)(!1),q=(0,d.useMemo)(()=>e?ee(e):`text`,[e]),J=q!==`text`;(0,d.useEffect)(()=>{let e=()=>{let e=Math.max(v,window.innerWidth-y);V(t=>Math.max(v,Math.min(t,e)))};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let ae=(0,d.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=H.current;W(!0);let r=e=>{let r=t-e.clientX,i=Math.max(v,window.innerWidth-y);V(Math.max(v,Math.min(n+r,i)))},a=()=>{W(!1),o(i.FILE_VIEWER_WIDTH,String(H.current)),document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,a)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,a)},[]);(0,d.useEffect)(()=>{if(!e){s(null),E(null),h(null),O(!1),A(!1),M(!1),P(``),R(null);return}if(J){p(!1),s(null),E(null),h(null);return}let t=!1;return p(!0),h(null),M(!1),E(null),r.readFile(e).then(e=>{if(t)return;s(e),P(e.content);let n=b(e),r=e.content.length>1e5;!e.language||n||r||(e=>{let t=window;t.requestIdleCallback?t.requestIdleCallback(e):setTimeout(e,0)})(()=>{if(!t)try{let n=u.highlight(e.content,{language:e.language});t||E(n.value)}catch{}})}).catch(e=>{t||h(e instanceof Error?e.message:`Failed to read file`)}).finally(()=>{t||p(!1)}),()=>{t=!0}},[e,J]),(0,d.useEffect)(()=>{e&&requestAnimationFrame(()=>O(!0))},[e]),(0,d.useEffect)(()=>{j&&z.current?.focus()},[j]);let Y=j&&N!==(n?.content??``),X=()=>{Y&&!window.confirm(`Discard unsaved changes?`)||(A(!0),setTimeout(()=>t(null),180))},oe=async()=>{n&&(await navigator.clipboard.writeText(j?N:n.content).catch(()=>{}),w(!0),setTimeout(()=>w(!1),2e3))},se=()=>{n&&(P(n.content),R(null),M(!0))},ce=()=>{Y&&!window.confirm(`Discard unsaved changes?`)||(P(n?.content??``),R(null),M(!1))},Z=async()=>{if(!(!n||!e)){I(!0),R(null);try{if(await r.writeFile(e,N),s({...n,content:N,size:new Blob([N]).size}),n.language)try{E(u.highlight(N,{language:n.language}).value)}catch{E(null)}M(!1)}catch(e){R(e instanceof Error?e.message:`Save failed`)}finally{I(!1)}}};if((0,d.useEffect)(()=>{if(!j)return;let e=e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),Z())};return document.addEventListener(`keydown`,e,{capture:!0}),()=>document.removeEventListener(`keydown`,e,{capture:!0})},[j,N,n,e]),!e)return null;let le=e.split(`/`).pop()||e,Q=D&&!k,$={background:`none`,border:`none`,cursor:`pointer`,padding:`5px 9px`,borderRadius:`var(--radius-sm)`,display:`inline-flex`,alignItems:`center`,gap:`5px`,fontSize:`12px`,fontFamily:`var(--font-ui)`,color:`var(--text-tertiary)`,transition:`background 0.12s, color 0.12s`},ue=b(n)&&!j&&!G;return(0,_.jsx)(`div`,{"aria-hidden":!Q,style:{flex:`0 0 auto`,width:Q?`${B}px`:0,minWidth:0,overflow:`hidden`,transition:U?`none`:`width 180ms ease-out`},children:(0,_.jsxs)(`div`,{style:{width:`${B}px`,height:`100%`,display:`flex`,flexDirection:`column`,background:`var(--bg-base)`,borderLeft:`1px solid var(--border-subtle)`,position:`relative`,opacity:+!!Q,transition:U?`none`:`opacity 180ms ease-out`},children:[(0,_.jsx)(`div`,{onMouseDown:ae,title:`Drag to resize`,style:{position:`absolute`,top:0,bottom:0,left:0,width:`4px`,cursor:`col-resize`,zIndex:2,background:U?`var(--border-default)`:`transparent`,transition:`background 0.12s`},onMouseEnter:e=>{U||(e.currentTarget.style.background=`var(--border-default)`)},onMouseLeave:e=>{U||(e.currentTarget.style.background=`transparent`)}}),(0,_.jsxs)(`div`,{style:{height:`var(--header-height)`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`0 10px 0 18px`,borderBottom:`1px solid var(--border-subtle)`,flexShrink:0},children:[(0,_.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,overflow:`hidden`,flex:1,minWidth:0},children:[(0,_.jsx)(`span`,{style:{fontSize:`14px`,fontWeight:500,color:`var(--text-primary)`,fontFamily:`var(--font-ui)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:le}),n?.language&&(0,_.jsx)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,fontFamily:`var(--font-mono)`,flexShrink:0},children:n.language}),J&&(0,_.jsx)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,fontFamily:`var(--font-mono)`,flexShrink:0,textTransform:`uppercase`},children:q}),Y&&(0,_.jsx)(`span`,{title:`Unsaved changes`,style:{width:`6px`,height:`6px`,borderRadius:`50%`,background:`var(--accent-orange)`,flexShrink:0}})]}),(0,_.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`2px`,flexShrink:0},children:[n&&!j&&!J&&b(n)&&(0,_.jsx)(`button`,{onClick:()=>K(e=>!e),title:G?`Show rendered markdown`:`Show raw source`,style:{...$,color:G?`var(--text-primary)`:`var(--text-tertiary)`,background:G?`var(--bg-sidebar-hover)`:`none`},onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-primary)`,G||(e.currentTarget.style.background=`var(--bg-sidebar-hover)`)},onMouseLeave:e=>{G||(e.currentTarget.style.color=`var(--text-tertiary)`,e.currentTarget.style.background=`none`)},children:G?`Preview`:`Raw`}),n&&!j&&!J&&(0,_.jsxs)(`button`,{onClick:se,title:`Edit`,style:$,onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`,e.currentTarget.style.background=`none`},children:[(0,_.jsx)(C,{}),` Edit`]}),j&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`button`,{onClick:Z,disabled:!Y||F,title:`Save (⌘S)`,style:{...$,color:Y&&!F?`var(--accent-orange)`:`var(--text-tertiary)`,cursor:Y&&!F?`pointer`:`default`,fontWeight:500},children:F?`Saving…`:`Save`}),(0,_.jsx)(`button`,{onClick:ce,title:`Cancel`,style:$,onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`,e.currentTarget.style.background=`none`},children:`Cancel`})]}),n&&!J&&(0,_.jsx)(`button`,{onClick:oe,title:g?`Copied!`:`Copy`,style:{...$,color:g?`var(--accent-orange)`:`var(--text-tertiary)`},onMouseEnter:e=>{g||(e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-sidebar-hover)`)},onMouseLeave:e=>{g||(e.currentTarget.style.color=`var(--text-tertiary)`,e.currentTarget.style.background=`none`)},children:(0,_.jsx)(S,{})}),(0,_.jsx)(`button`,{onClick:X,"aria-label":`Close file viewer`,style:$,onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`,e.currentTarget.style.background=`none`},children:(0,_.jsx)(x,{})})]})]}),L&&(0,_.jsx)(`div`,{style:{padding:`8px 18px`,fontSize:`12px`,background:`var(--tool-error-bg)`,color:`var(--tool-error-text)`,borderBottom:`1px solid var(--tool-error-border)`},children:L}),j?(0,_.jsx)(`textarea`,{ref:z,value:N,onChange:e=>P(e.target.value),spellCheck:!1,style:{flex:1,width:`100%`,margin:0,padding:`16px 20px`,fontFamily:`var(--font-mono)`,fontSize:`13px`,lineHeight:1.6,background:`var(--bg-code-block)`,color:`var(--text-code)`,border:`none`,outline:`none`,resize:`none`,whiteSpace:`pre-wrap`,wordBreak:`break-word`,overflowWrap:`anywhere`,overflowY:`auto`,tabSize:2}}):(0,_.jsxs)(c,{style:{flex:1},children:[f&&(0,_.jsx)(`div`,{style:{padding:`24px`,textAlign:`center`,color:`var(--text-tertiary)`,fontSize:`13px`},children:`Loading…`}),m&&(0,_.jsx)(`div`,{style:{padding:`24px`,color:`var(--tool-error-text)`,fontSize:`13px`},children:m}),!f&&!m&&J&&e&&(0,_.jsx)(ie,{category:q,url:te(e)}),n&&!f&&!J&&(ue?(0,_.jsx)(`div`,{style:{padding:`20px 24px`},children:(0,_.jsx)(l,{text:n.content})}):(0,_.jsx)(`pre`,{style:re,children:T?(0,_.jsx)(`code`,{dangerouslySetInnerHTML:{__html:T}}):(0,_.jsx)(`code`,{children:n.content})}))]})]})})}export{w as FileViewer,w as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./react-Bi_azaFt.js";import{h as t}from"./index-DfKltZ6z.js";import{i as n}from"./ScrollContainer-BT_Dzxah.js";var r=e(),i=[{title:`Browsing Sessions`,items:[`The sidebar shows all your conversation sessions grouped by project.`,`Click a session to open it. Use the sort buttons to switch between recent, oldest, or project order.`,`Star frequently used sessions for quick access. Archive sessions you no longer need.`]},{title:`Search`,items:[`Press ⌘K to open search. Search across all session content including tool use, file paths, and thinking blocks.`]},{title:`Profiles`,items:[`Switch between profiles to view sessions from different config directories.`,`Click the avatar in the bottom-left to open the profile switcher.`,`Manage profiles and their data paths in Settings.`]},{title:`Reading Conversations`,items:[`Tool use blocks show files read, commands run, and edits made.`,`Thinking blocks reveal the AI's reasoning process.`,`Press ⌘O to expand or collapse all tool and thinking blocks at once.`,`Press ⌘E to toggle full tool output without truncation.`]}];function a(){let e=t(e=>e.closeHelp);return(0,r.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Help`,onClick:t=>{t.target===t.currentTarget&&e()},style:{position:`fixed`,inset:0,zIndex:1e3,background:`var(--bg-modal-overlay)`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`16px`},children:(0,r.jsxs)(`div`,{style:{width:`100%`,maxWidth:`520px`,background:`var(--bg-modal)`,borderRadius:`var(--radius-lg)`,boxShadow:`var(--shadow-lg)`,maxHeight:`calc(100vh - 64px)`,overflow:`hidden`,display:`flex`,flexDirection:`column`},onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`20px 24px 16px`,borderBottom:`1px solid var(--border-subtle)`},children:[(0,r.jsx)(`h2`,{style:{margin:0,fontSize:`16px`,fontWeight:600,color:`var(--text-primary)`},children:`Help`}),(0,r.jsx)(`button`,{onClick:e,"aria-label":`Close help`,style:{background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,fontSize:`20px`,lineHeight:1,padding:`4px`},children:`×`})]}),(0,r.jsx)(n,{style:{flex:1,padding:`20px 24px`},children:i.map(e=>(0,r.jsxs)(`div`,{style:{marginBottom:`20px`},children:[(0,r.jsx)(`div`,{style:{fontSize:`13px`,fontWeight:600,color:`var(--text-primary)`,marginBottom:`6px`},children:e.title}),(0,r.jsx)(`ul`,{style:{margin:0,paddingLeft:`18px`,display:`flex`,flexDirection:`column`,gap:`4px`},children:e.items.map((e,t)=>(0,r.jsx)(`li`,{style:{fontSize:`13px`,color:`var(--text-secondary)`,lineHeight:1.5},children:e},t))})]},e.title))})]})})}export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,t as n}from"./react-Bi_azaFt.js";var r=e(t(),1),i=(e,t)=>{let{o:n,i:r,u:i}=e,a=n,o,s=(e,t)=>{let n=a,s=e,c=t||(r?!r(n,s):n!==s);return(c||i)&&(a=s,o=n),[a,c,o]};return[t?e=>s(t(a,o),e):s,e=>[a,!!e,o]]},a=typeof window<`u`&&typeof HTMLElement<`u`&&window.document?window:{},o=Math.max,s=Math.min,c=Math.round,l=Math.abs,u=Math.sign,d=a.cancelAnimationFrame,f=a.requestAnimationFrame,p=a.setTimeout,m=a.clearTimeout,h=e=>a[e]===void 0?void 0:a[e],g=h(`MutationObserver`),_=h(`IntersectionObserver`),v=h(`ResizeObserver`),y=h(`ScrollTimeline`),b=e=>e===void 0,x=e=>e===null,S=e=>typeof e==`number`,C=e=>typeof e==`string`,w=e=>typeof e==`boolean`,T=e=>typeof e==`function`,E=e=>Array.isArray(e),D=e=>typeof e==`object`&&!E(e)&&!x(e),O=e=>{let t=!!e&&e.length,n=S(t)&&t>-1&&t%1==0;return E(e)||!T(e)&&n?t>0&&D(e)?t-1 in e:!0:!1},ee=e=>!!e&&e.constructor===Object,k=e=>e instanceof HTMLElement,A=e=>e instanceof Element;function j(e,t){if(O(e))for(let n=0;n<e.length&&t(e[n],n,e)!==!1;n++);else e&&j(Object.keys(e),(n=>t(e[n],n,e)));return e}var te=(e,t)=>e.indexOf(t)>=0,M=(e,t)=>e.concat(t),N=(e,t,n)=>(!C(t)&&O(t)?Array.prototype.push.apply(e,t):e.push(t),e),P=e=>Array.from(e||[]),F=e=>E(e)?e:!C(e)&&O(e)?P(e):[e],I=e=>!!e&&!e.length,L=e=>P(new Set(e)),R=(e,t,n)=>{j(e,e=>e?e.apply(void 0,t||[]):!0),n||(e.length=0)},ne=`paddingTop`,z=`paddingRight`,B=`paddingLeft`,re=`paddingBottom`,V=`marginLeft`,H=`marginRight`,U=`marginBottom`,ie=`overflowX`,ae=`overflowY`,oe=`width`,se=`height`,W=`visible`,G=`hidden`,ce=`scroll`,le=e=>{let t=String(e||``);return t?t[0].toUpperCase()+t.slice(1):``},ue=(e,t,n,r)=>{if(e&&t){let r=!0;return j(n,(n=>{e[n]!==t[n]&&(r=!1)})),r}return!1},de=(e,t)=>ue(e,t,[`w`,`h`]),fe=(e,t)=>ue(e,t,[`x`,`y`]),pe=(e,t)=>ue(e,t,[`t`,`r`,`b`,`l`]),K=(e,...t)=>e.bind(0,...t),me=e=>{let t,n=e?p:f,r=e?m:d;return[i=>{r(t),t=n((()=>i()),T(e)?e():e)},()=>r(t)]},he=e=>{let t=T(e)?e():e;if(S(t)){let e=t?p:f,n=t?m:d;return r=>{let i=e((()=>r()),t);return()=>{n(i)}}}return t&&t._},ge=(e,t)=>{let{p:n,v:r,S:i,m:a}=t||{},o,s,c,l,u=function(t){s&&s(),o&&o(),l=s=o=c=void 0,e.apply(this,t)},d=e=>a&&c?a(c,e):e,f=()=>{s&&c&&u(d(c)||c)},p=function(){let e=P(arguments),t=he(n);if(t){let n=typeof i==`function`?i():i,a=he(r),p=d(e)||e,m=u.bind(0,p);s&&s(),n&&!l?(m(),l=!0,s=t((()=>l=void 0))):(s=t(m),a&&!o&&(o=a(f))),c=p}else u(e)};return p.O=f,p},_e=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),q=e=>e?Object.keys(e):[],J=(e,t,n,r,i,a,o)=>{let s=[t,n,r,i,a,o];return(typeof e!=`object`||x(e))&&!T(e)&&(e={}),j(s,(t=>{j(t,((n,r)=>{let i=t[r];if(e===i)return!0;let a=E(i);if(i&&ee(i)){let t=e[r],n=t;a&&!E(t)?n=[]:!a&&!ee(t)&&(n={}),e[r]=J(n,i)}else e[r]=a?i.slice():i}))})),e},ve=(e,t)=>j(J({},e),((e,t,n)=>{e===void 0?delete n[t]:e&&ee(e)&&(n[t]=ve(e))})),ye=e=>!q(e).length,be=()=>{},xe=(e,t,n)=>o(e,s(t,n)),Se=e=>L((E(e)?e:(e||``).split(` `)).filter((e=>e))),Ce=(e,t)=>e&&e.getAttribute(t),we=(e,t)=>e&&e.hasAttribute(t),Y=(e,t,n)=>{j(Se(t),(t=>{e&&e.setAttribute(t,String(n||``))}))},Te=(e,t)=>{j(Se(t),(t=>e&&e.removeAttribute(t)))},Ee=(e,t)=>{let n=Se(Ce(e,t)),r=K(Y,e,t),i=(e,t)=>{let r=new Set(n);return j(Se(e),(e=>{r[t](e)})),P(r).join(` `)};return{C:e=>r(i(e,`delete`)),$:e=>r(i(e,`add`)),H:e=>{let t=Se(e);return t.reduce(((e,t)=>e&&n.includes(t)),t.length>0)}}},De=(e,t,n)=>(Ee(e,t).C(n),K(Oe,e,t,n)),Oe=(e,t,n)=>(Ee(e,t).$(n),K(De,e,t,n)),ke=(e,t,n,r)=>(r?Oe:De)(e,t,n),Ae=(e,t,n)=>Ee(e,t).H(n),je=e=>Ee(e,`class`),Me=(e,t)=>{je(e).C(t)},Ne=(e,t)=>(je(e).$(t),K(Me,e,t)),Pe=(e,t)=>{let n=t?A(t)&&t:document;return n?P(n.querySelectorAll(e)):[]},Fe=(e,t)=>{let n=t?A(t)&&t:document;return n&&n.querySelector(e)},Ie=(e,t)=>A(e)&&e.matches(t),Le=e=>Ie(e,`body`),Re=e=>e?P(e.childNodes):[],ze=e=>e&&e.parentElement,Be=(e,t)=>A(e)&&e.closest(t),Ve=e=>document.activeElement,He=(e,t,n)=>{let r=Be(e,t),i=e&&Fe(n,r),a=Be(i,t)===r;return r&&i?r===e||i===e||a&&Be(Be(e,n),t)!==r:!1},Ue=e=>{j(F(e),(e=>{let t=ze(e);e&&t&&t.removeChild(e)}))},X=(e,t)=>K(Ue,e&&t&&j(F(t),(t=>{t&&e.appendChild(t)}))),We,Ge=()=>We,Ke=e=>{We=e},qe=e=>{let t=document.createElement(`div`);return Y(t,`class`,e),t},Je=e=>{let t=qe(),n=Ge(),r=e.trim();return t.innerHTML=n?n.createHTML(r):r,j(Re(t),(e=>Ue(e)))},Ye=(e,t)=>e.getPropertyValue(t)||e[t]||``,Xe=e=>{let t=e||0;return isFinite(t)?t:0},Ze=e=>Xe(parseFloat(e||``)),Qe=e=>Math.round(e*1e4)/1e4,$e=e=>`${Qe(Xe(e))}px`;function et(e,t){e&&t&&j(t,((t,n)=>{try{let r=e.style,i=x(t)||w(t)?``:S(t)?$e(t):t;n.indexOf(`--`)===0?r.setProperty(n,i):r[n]=i}catch{}}))}function tt(e,t,n){let r=C(t),i=r?``:{};if(e){let o=a.getComputedStyle(e,n)||e.style;i=r?Ye(o,t):P(t).reduce(((e,t)=>(e[t]=Ye(o,t),e)),i)}return i}var nt=(e,t,n)=>{let r=t?`${t}-`:``,i=n?`-${n}`:``,a=`${r}top${i}`,o=`${r}right${i}`,s=`${r}bottom${i}`,c=`${r}left${i}`,l=tt(e,[a,o,s,c]);return{t:Ze(l[a]),r:Ze(l[o]),b:Ze(l[s]),l:Ze(l[c])}},rt=(e,t)=>`translate${D(e)?`(${e.x},${e.y})`:`${t?`X`:`Y`}(${e})`}`,it=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),at={w:0,h:0},ot=(e,t)=>t?{w:t[`${e}Width`],h:t[`${e}Height`]}:at,st=e=>ot(`inner`,e||a),ct=K(ot,`offset`),lt=K(ot,`client`),ut=K(ot,`scroll`),dt=e=>{let t=parseFloat(tt(e,oe))||0,n=parseFloat(tt(e,se))||0;return{w:t-c(t),h:n-c(n)}},ft=e=>e.getBoundingClientRect(),pt=e=>!!e&&it(e),mt=e=>!!(e&&(e[se]||e[oe])),ht=(e,t)=>{let n=mt(e);return!mt(t)&&n},gt=(e,t,n,r)=>{j(Se(t),(t=>{e&&e.removeEventListener(t,n,r)}))},Z=(e,t,n,r)=>{let i=(r&&r.D)??!0,a=r&&r.I||!1,o=r&&r.A||!1,s={passive:i,capture:a};return K(R,Se(t).map((t=>{let r=o?i=>{gt(e,t,r,a),n&&n(i)}:n;return e&&e.addEventListener(t,r,s),K(gt,e,t,r,a)})))},_t=e=>e.stopPropagation(),vt=e=>e.preventDefault(),yt=e=>_t(e)||vt(e),bt=(e,t)=>{let{x:n,y:r}=S(t)?{x:t,y:t}:t||{};S(n)&&(e.scrollLeft=n),S(r)&&(e.scrollTop=r)},Q=e=>({x:e.scrollLeft,y:e.scrollTop}),xt=()=>({T:{x:0,y:0},k:{x:0,y:0}}),St=(e,t)=>{let{T:n,k:r}=e,{w:i,h:a}=t,o=(e,t,n)=>{let r=u(e)*n,i=u(t)*n;if(r===i){let n=l(e),a=l(t);i=n>a?0:i,r=n<a?0:r}return r=r===i?0:r,[r+0,i+0]},[s,c]=o(n.x,r.x,i),[d,f]=o(n.y,r.y,a);return{T:{x:s,y:d},k:{x:c,y:f}}},Ct=({T:e,k:t})=>{let n=(e,t)=>e===0&&e<=t;return{x:n(e.x,t.x),y:n(e.y,t.y)}},wt=({T:e,k:t},n)=>{let r=(e,t,n)=>xe(0,1,(e-n)/(e-t)||0);return{x:r(e.x,t.x,n.x),y:r(e.y,t.y,n.y)}},Tt=e=>{e&&e.focus&&e.focus({preventScroll:!0,focusVisible:!1})},Et=(e,t)=>{j(F(t),e)},Dt=e=>{let t=new Map,n=(e,n)=>{if(e){let r=t.get(e);Et((e=>{r&&r[e?`delete`:`clear`](e)}),n)}else t.forEach((e=>{e.clear()})),t.clear()},r=(e,i)=>{if(C(e)){let r=t.get(e)||new Set;return t.set(e,r),Et((e=>{T(e)&&r.add(e)}),i),K(n,e,i)}w(i)&&i&&n();let a=q(e),o=[];return j(a,(t=>{let n=e[t];n&&N(o,r(t,n))})),K(R,o)};return r(e||{}),[r,n,(e,n)=>{j(P(t.get(e)),(e=>{n&&!I(n)?e.apply(0,n):e()}))}]},Ot={},kt={},At=e=>{j(e,(e=>j(e,((t,n)=>{Ot[n]=e[n]}))))},jt=(e,t,n)=>q(e).map((r=>{let{static:i,instance:a}=e[r],[o,s,c]=n||[],l=n?a:i;if(l){let e=n?l(o,s,t):l(t);return(c||kt)[r]=e}})),Mt=(e,t)=>e[t],Nt=e=>Mt(kt,e),Pt=`__osOptionsValidationPlugin`,Ft=`data-overlayscrollbars`,It=`os-environment`,Lt=`${It}-scrollbar-hidden`,Rt=`${Ft}-initialize`,zt=`noClipping`,Bt=`${Ft}-body`,Vt=Ft,Ht=`host`,Ut=`${Ft}-viewport`,Wt=ie,Gt=ae,Kt=`arrange`,qt=`measuring`,Jt=`scrolling`,Yt=`scrollbarHidden`,Xt=`noContent`,Zt=`${Ft}-padding`,Qt=`${Ft}-content`,$t=`os-size-observer`,en=`${$t}-appear`,tn=`${$t}-listener`;`${tn}`,`${tn}`;var nn=`os-trinsic-observer`,rn=`os-theme-none`,$=`os-scrollbar`,an=`${$}-rtl`,on=`${$}-horizontal`,sn=`${$}-vertical`,cn=`${$}-track`,ln=`${$}-handle`,un=`${$}-visible`,dn=`${$}-cornerless`,fn=`${$}-interaction`,pn=`${$}-unusable`,mn=`${$}-auto-hide`,hn=`${mn}-hidden`,gn=`${$}-wheel`,_n=`${cn}-interactive`,vn=`${ln}-interactive`,yn=`__osSizeObserverPlugin`,bn=(e,t)=>{let{M:n}=t,[r,i]=e(`showNativeOverlaidScrollbars`);return[r&&n.x&&n.y,i]},xn=e=>e.indexOf(W)===0,Sn=e=>e.replace(`${W}-`,``),Cn=(e,t)=>{if(e===`auto`)return t?ce:G;let n=e||G;return[G,ce,W].includes(n)?n:G},wn=(e,t)=>{let{overflowX:n,overflowY:r}=tt(e,[ie,ae]);return{x:Cn(n,t.x),y:Cn(r,t.y)}},Tn=`__osScrollbarsHidingPlugin`,En=`__osClickScrollPlugin`,Dn=e=>JSON.stringify(e,((e,t)=>{if(T(t))throw 0;return t})),On=(e,t)=>e?`${t}`.split(`.`).reduce(((e,t)=>e&&_e(e,t)?e[t]:void 0),e):void 0,kn=[0,33],An=[33,99],jn=[222,666,!0],Mn={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[[`img`,`load`]],debounce:{mutation:kn,resize:null,event:An,env:jn},attributes:null,ignoreMutation:null,flowDirectionStyles:null},overflow:{x:`scroll`,y:`scroll`},scrollbars:{theme:`os-theme-dark`,visibility:`auto`,autoHide:`never`,autoHideDelay:1300,autoHideSuspend:!1,dragScroll:!0,clickScroll:!1,pointers:[`mouse`,`touch`,`pen`]}},Nn=(e,t)=>{let n={};return j(M(q(t),q(e)),(r=>{let i=e[r],a=t[r];if(D(i)&&D(a))J(n[r]={},Nn(i,a)),ye(n[r])&&delete n[r];else if(_e(t,r)&&a!==i){let e=!0;if(E(i)||E(a))try{Dn(i)===Dn(a)&&(e=!1)}catch{}e&&(n[r]=a)}})),n},Pn=(e,t,n)=>r=>[On(e,r),n||On(t,r)!==void 0],Fn,In=()=>Fn,Ln=e=>{Fn=e},Rn,zn=()=>{let e=(e,t,n)=>{X(document.body,e),X(document.body,e);let r=lt(e),i=ct(e),a=dt(t);return n&&Ue(e),{x:i.h-r.h+a.h,y:i.w-r.w+a.w}},t=e=>{let t=!1,n=Ne(e,Lt);try{t=tt(e,`scrollbar-width`)===`none`||tt(e,`display`,`::-webkit-scrollbar`)===`none`}catch{}return n(),t},n=Je(`<div class="${It}"><div></div><style>${`.${It}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${It} div{width:200%;height:200%;margin:10px 0}.${Lt}{scrollbar-width:none!important}.${Lt}::-webkit-scrollbar,.${Lt}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`}</style></div>`)[0],r=n.firstChild,o=n.lastChild,s=In();s&&(o.nonce=s);let[c,,l]=Dt(),[u,d]=i({o:e(n,r),i:fe},K(e,n,r,!0)),[f]=d(),p=t(n),m={x:f.x===0,y:f.y===0},h={elements:{host:null,padding:!p,viewport:e=>p&&Le(e)&&e,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},g=J({},Mn),_=K(J,{},g),v=K(J,{},h),b={U:f,M:m,P:p,J:!!y,G:K(c,`r`),K:v,Z:e=>J(h,e)&&v(),tt:_,nt:e=>J(g,e)&&_(),ot:J({},h),st:J({},g)};if(Te(n,`style`),Ue(n),Z(a,`resize`,(()=>{l(`r`,[])})),T(a.matchMedia)&&!p&&(!m.x||!m.y)){let e=t=>{Z(a.matchMedia(`(resolution: ${a.devicePixelRatio}dppx)`),`change`,(()=>{t(),e(t)}),{A:!0})};e((()=>{let[e,t]=u();J(b.U,e),l(`r`,[t])}))}return b},Bn=()=>(Rn||=zn(),Rn),Vn=(e,t,n)=>{let r=!1,i=n?new WeakMap:!1,a=()=>{r=!0},o=a=>{i&&n&&j(n.map((t=>{let[n,r]=t||[];return[r&&n?(a||Pe)(n,e):[],r]})),(n=>j(n[0],(a=>{let o=n[1],s=i.get(a)||[];if(e.contains(a)&&o){let e=Z(a,o,(n=>{r?(e(),i.delete(a)):t(n)}));i.set(a,N(s,e))}else R(s),i.delete(a)}))))};return o(),[a,o]},Hn=(e,t,n,r)=>{let i=!1,{et:a,ct:o,rt:s,it:c,lt:l,ut:u}=r||{},[d,f]=Vn(e,(()=>i&&n(!0)),s),p=a||[],m=o||[],h=M(p,m),_=(i,a)=>{if(!I(a)){let o=l||be,s=u||be,d=[],p=[],h=!1,g=!1;if(j(a,(n=>{let{attributeName:i,target:a,type:l,oldValue:u,addedNodes:f,removedNodes:_}=n,v=l===`attributes`,y=l===`childList`,b=e===a,x=v&&i,S=x&&Ce(a,i||``),w=C(S)?S:null,T=x&&u!==w,E=te(m,i)&&T;if(t&&(y||!b)){let t=v&&T,l=t&&c&&Ie(a,c),p=(l?!o(a,i,u,w):!v||t)&&!s(n,!!l,e,r);j(f,(e=>N(d,e))),j(_,(e=>N(d,e))),g||=p}!t&&b&&T&&!o(a,i,u,w)&&(N(p,i),h||=E)})),f((e=>L(d).reduce(((t,n)=>(N(t,Pe(e,n)),Ie(n,e)?N(t,n):t)),[]))),t)return!i&&g&&n(!1),[!1];if(!I(p)||h){let e=[L(p),h];return i||n.apply(0,e),e}}},v=new g(K(_,!1));return[()=>(v.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:t,childList:t,characterData:t}),i=!0,()=>{i&&=(d(),v.disconnect(),!1)}),()=>{if(i)return _(!0,v.takeRecords())}]},Un=null,Wn=(e,t,n)=>{let{ft:r}=n||{},a=Nt(yn),[o]=i({o:!1,u:!0});return()=>{let n=[],i=Je(`<div class="${$t}"><div class="${tn}"></div></div>`)[0],s=i.firstChild,c=e=>{let n=E(e)&&!I(e),r=!1,i=!1;if(n){let t=e[0],[n,,a]=o(t.contentRect),s=mt(n);i=ht(n,a),r=!i&&!s}else i=e===!0;r||t({_t:!0,ft:i})};if(v){if(!w(Un)){let t=new v(be);t.observe(e,{get box(){Un=!0}}),Un||=!1,t.disconnect()}let t=ge(c,{p:0,v:0}),r=e=>t(e),a=new v(r);if(a.observe(Un?e:s),N(n,[()=>{a.disconnect()},!Un&&X(e,i)]),Un){let t=new v(r);t.observe(e,{box:`border-box`}),N(n,(()=>t.disconnect()))}}else if(a){let[t,o]=a(s,c,r);N(n,M([Ne(i,en),Z(i,`animationstart`,t),X(e,i)],o))}else return be;return K(R,n)}},Gn=(e,t)=>{let n,r=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,a=qe(nn),[o]=i({o:!1}),s=(e,n)=>{if(e){let i=o(r(e)),[,a]=i;return a&&!n&&t(i)&&[i]}},c=(e,t)=>s(t.pop(),e);return[()=>{let t=[];if(_)n=new _(K(c,!1),{root:e}),n.observe(a),N(t,(()=>{n.disconnect()}));else{let e=()=>{s(ct(a))};N(t,Wn(a,e)()),e()}return K(R,N(t,X(e,a)))},()=>n&&c(!0,n.takeRecords())]},Kn=(e,t,n,r)=>{let a,o,s,c,l,u,d,f,p=`[${Vt}]`,m=`[${Ut}]`,h=[`id`,`class`,`style`,`open`,`wrap`,`cols`,`rows`],{dt:g,vt:_,L:y,gt:b,ht:x,V:C,bt:w,yt:D,wt:O,St:k}=e,A=e=>tt(e,`direction`)===`rtl`,j=()=>{let e,t,n,i=ge(r,{p:()=>e,v:()=>t,S:()=>n,m(e,t){let[n]=e,[r]=t;return[M(q(n),q(r)).reduce(((e,t)=>(e[t]=n[t]||r[t],e)),{})]}}),a=(r,a)=>{if(E(a)){let[r,i,o]=a;e=r,t=i,n=o}else S(a)?(e=a,t=!1,n=!1):(e=!1,t=!1,n=!1);i(r)};return a.O=i.O,a},te={Ot:!1,B:A(g)},N=Bn(),P=Nt(Tn),[F]=i({i:de,o:{w:0,h:0}},(()=>{let r=P&&P.R(e,t,te,N,n).Y,i=!(w&&C)&&Ae(_,Vt,zt),a=!C&&D(Kt),o=a&&Q(b),s=o&&k(),c=O(qt,i),l=a&&r&&r(),u=ut(y),d=dt(y);return l&&l(),bt(b,o),s&&s(),i&&c(),{w:u.w+d.w,h:u.h+d.h}})),I=j(),L=e=>{let t=A(g);J(e,{Ct:f!==t}),J(te,{B:t}),f=t},R=(e,t)=>{let[n,i]=e,a={$t:i};return J(te,{Ot:n}),t||r(a),a},ne=({_t:e,ft:t})=>{let n=t?r:I,i={_t:e||t,ft:t};L(i),n(i,o)},z=(e,t)=>{let[,n]=F(),r={xt:n};return L(r),n&&!t&&I(r,e?s:a),r},B=(e,t,n)=>{let r={Ht:t};return L(r),t&&!n&&I(r,a),r},[re,V]=x?Gn(_,R):[],H=!C&&Wn(_,ne,{ft:!0}),[U,ie]=Hn(_,!1,B,{ct:h,et:h}),ae=C&&v&&new v((e=>{let t=e[e.length-1].contentRect;ne({_t:!0,ft:ht(t,d)}),d=t}));return[()=>{ae&&ae.observe(_);let e=H&&H(),t=re&&re(),n=U(),r=N.G((e=>{let[,t]=F();I({Et:e,xt:t,_t:w},c)}));return()=>{ae&&ae.disconnect(),e&&e(),t&&t(),u&&u(),n(),r()}},({Dt:e,zt:t,It:n})=>{let r={},[i]=e(`update.ignoreMutation`),[d,f]=e(`update.attributes`),[g,_]=e(`update.elementEvents`),[v,b]=e(`update.debounce`),w=_||f,D=t||n,O=e=>T(i)&&i(e);if(w){l&&l(),u&&u();let[e,t]=Hn(x||y,!0,z,{et:M(h,d||[]),rt:g,it:p,ut:(e,t)=>{let{target:n,attributeName:r}=e;return(!t&&r&&!C?He(n,p,m):!1)||!!Be(n,`.${$}`)||!!O(e)}});u=e(),l=t}if(b&&(I.O(),E(v)||S(v)?(a=v,o=!1,s=An,c=jn):ee(v)?(a=v.mutation,o=v.resize,s=v.event,c=v.env):(a=!1,o=!1,s=!1,c=!1)),D){let e=ie(),t=V&&V(),n=l&&l();e&&J(r,B(e[0],e[1],D)),t&&J(r,R(t[0],D)),n&&J(r,z(n[0],D))}return L(r),r},te]},qn=(e,t)=>T(t)?t.apply(0,e):t,Jn=(e,t,n,r)=>qn(e,b(r)?n:r)||t.apply(0,e),Yn=(e,t,n,r)=>{let i=qn(e,b(r)?n:r);return!!i&&(k(i)?i:t.apply(0,e))},Xn=(e,t)=>{let{nativeScrollbarsOverlaid:n,body:r}=t||{},{M:i,P:a,K:o}=Bn(),{nativeScrollbarsOverlaid:s,body:c}=o().cancel,l=n??s,u=b(r)?c:r,d=(i.x||i.y)&&l,f=e&&(x(u)?!a:u);return!!d||!!f},Zn=(e,t,n,r)=>{let{K:i}=Bn(),{scrollbars:a}=i(),{slot:o}=a,{dt:s,vt:c,L:l,At:u,gt:d,bt:f,V:p}=t,{scrollbars:m}=u?{}:e,{slot:h}=m||{},g=[],_=[],v=[],b=Yn([s,c,l],(()=>p&&f?s:c),o,h),x=e=>{if(y){let t=null,r=[],i=new y({source:d,axis:e}),a=()=>{t&&t.cancel(),t=null};return{Mt:o=>{let{Tt:s}=n,c=Ct(s)[e],l=e===`x`,u=[rt(0,l),rt(`calc(-100% + 100cq${l?`w`:`h`})`,l)],d=c?u:u.reverse();return r[0]===d[0]&&r[1]===d[1]?a:(r=d,a(),t=o.kt.animate({clear:[`left`],transform:d},{timeline:i}),a)}}}},S={x:x(`x`),y:x(`y`)},C=()=>{let{Rt:e,Vt:t}=n,r=(e,t)=>xe(0,1,e/(e+t)||0);return{x:r(t.x,e.x),y:r(t.y,e.y)}},T=(e,t,n)=>{let r=n?Ne:Me;j(e,(e=>{r(e.Lt,t)}))},E=(e,t)=>{j(e,(e=>{let[n,r]=t(e);et(n,r)}))},D=(e,t,n)=>{let r=w(n),i=r?n:!0,a=r?!n:!0;i&&T(_,e,t),a&&T(v,e,t)},O=()=>{let e=C(),t=e=>t=>[t.Lt,{"--os-viewport-percent":Qe(e)+``}];E(_,t(e.x)),E(v,t(e.y))},ee=()=>{if(!y){let{Tt:e}=n,t=wt(e,Q(d)),r=e=>t=>[t.Lt,{"--os-scroll-percent":Qe(e)+``}];E(_,r(t.x)),E(v,r(t.y))}},k=()=>{let{Tt:e}=n,t=Ct(e),r=e=>t=>[t.Lt,{"--os-scroll-direction":e?`0`:`1`}];E(_,r(t.x)),E(v,r(t.y)),y&&(_.forEach(S.x.Mt),v.forEach(S.y.Mt))},A=()=>{if(p&&!f){let{Rt:e,Tt:t}=n,r=Ct(t),i=wt(t,Q(d)),a=t=>{let{Lt:n}=t,a=ze(n)===l&&n,o=(e,t,n)=>{let r=t*e;return $e(n?r:-r)};return[a,a&&{transform:rt({x:o(i.x,e.x,r.x),y:o(i.y,e.y,r.y)})}]};E(_,a),E(v,a)}},te=e=>{let t=e?`x`:`y`,n=qe(`${$} ${e?on:sn}`),i=qe(cn),a=qe(ln),o={Lt:n,Pt:i,kt:a},s=S[t];return N(e?_:v,o),N(g,[X(n,i),X(i,a),K(Ue,n),s&&s.Mt(o),r(o,D,e)]),o},M=K(te,!0),P=K(te,!1);return M(),P(),[{Ut:O,Nt:ee,qt:k,Bt:A,Ft:D,jt:{Xt:_,Yt:M,Wt:K(E,_)},Jt:{Xt:v,Yt:P,Wt:K(E,v)}},()=>(X(b,_[0].Lt),X(b,v[0].Lt),K(R,g))]},Qn=(e,t,n,r,i)=>(a,o,s)=>{let{vt:u,L:d,V:f,gt:m,Gt:h,St:g}=t,{Lt:_,Pt:v,kt:y}=a,[b,x]=me(333),[S,C]=me(444),w=e=>{T(m.scrollBy)&&m.scrollBy({behavior:`smooth`,left:e.x,top:e.y})},E=()=>{let t=`pointerup pointercancel lostpointercapture`,i=`client${s?`X`:`Y`}`,a=s?oe:se,o=s?`left`:`top`,u=s?`w`:`h`,d=s?`x`:`y`,f=[];return Z(v,`pointerdown`,r((r=>{let p=Be(r.target,`.${ln}`)===y,_=p?y:v,b=e.scrollbars,x=b[p?`dragScroll`:`clickScroll`],{button:T,isPrimary:E,pointerType:D}=r,{pointers:O}=b;if(T===0&&E&&x&&(O||[]).includes(D)){R(f),C();let e=!p&&(r.shiftKey||x===`instant`),b=K(ft,y),T=K(ft,v),E=(e,t)=>(e||b())[o]-(t||T())[o],D=c(ft(m)[a])/ct(m)[u]||1,O=Q(m)[d],ee=e=>{bt(m,{[d]:O+e})},k=e=>{let{Rt:t}=n,r=ct(v)[u]-ct(y)[u];ee(1/D*e/r*t[d])},A=r[i],j=b(),te=T(),M=j[a],P=E(j,te)+M/2,F=A-te[o]-P,I=p?0:F,L=e=>{R(B),_.releasePointerCapture(e.pointerId)},ne=p||e,z=g(),B=[Z(h,t,L),Z(h,`selectstart`,(e=>vt(e)),{D:!1}),Z(v,t,L),ne&&Z(v,`pointermove`,(e=>k(I+e[i]-A))),ne&&(()=>{let e=Q(m);z();let t=Q(m),n={x:t.x-e.x,y:t.y-e.y};(l(n.x)>3||l(n.y)>3)&&(g(),bt(m,e),w(n),S(z))})];if(_.setPointerCapture(r.pointerId),e)k(F);else if(!p){let e=Nt(En);if(e){let{Vt:t}=n,r=e(ee,k,K(E),F,t[d],x,!!s,(e=>{e?z():N(B,z)}));N(B,r),N(f,K(r,!0))}}}})))},D=!0;return K(R,[Z(y,`pointermove pointerleave`,r(i)),Z(_,`pointerenter`,r((()=>{o(fn,!0)}))),Z(_,`pointerleave pointercancel`,r((()=>{o(fn,!1)}))),Z(_,`wheel`,r((e=>{let{deltaX:t,deltaY:n,deltaMode:r}=e;D&&r===0&&ze(_)===u&&w({x:t,y:n}),D=!1,o(gn,!0),b((()=>{D=!0,o(gn)})),vt(e)})),{D:!1,I:!0}),!f&&Z(_,`mousedown`,r((()=>{let e=Ve();(we(e,Ut)||we(e,Vt)||e===document.body)&&p(K(Tt,d),25)}))),Z(_,`pointerdown`,(()=>{let e=Z(h,`click`,(e=>{t(),yt(e)}),{A:!0,I:!0,D:!1}),t=Z(h,`pointerup pointercancel`,(()=>{t(),setTimeout(e,150)}),{I:!0,D:!0})}),{I:!0,D:!0}),E(),x,C])},$n=(e,t,n,r,i,a,o)=>{let s,c,l,u,d,f=be,p=0,m=[`mouse`,`pen`],h=e=>t=>{n.Kt||e(t)},g=e=>m.includes(e.pointerType),[_,v]=me(),[y,b]=me(100),[x,S]=me(50),[C,w]=me((()=>p)),[T,E]=Zn(e,a,i,Qn(t,a,i,h,(e=>g(e)&&F()))),{vt:D,Qt:O,bt:ee}=a,{Ft:k,Ut:A,Nt:j,qt:te,Bt:M}=T,P=(e,t)=>{w();let r=e=>{n.Kt||k(hn,e)};if(e)r();else{let e=l?!s:!0;p>0&&!t?C(K(r,e)):r(e)}},F=()=>{(l?!s:!u)&&(P(!0),y((()=>{P(!1)})))},I=e=>{g(e)&&(s=!0,!n.Kt&&l&&P(!0))},L=e=>{g(e)&&(s=!1,!n.Kt&&l&&P(!1))},ne=e=>{k(mn,e,!0),k(mn,e,!1)},z=[w,b,S,v,()=>f(),Z(D,`pointerover`,I,{A:!0}),Z(D,`pointerenter`,I),Z(D,`pointerleave`,L),Z(D,`pointermove`,h((e=>{g(e)&&c&&F()}))),Z(O,`scroll`,h((e=>{_((()=>{j(),F()})),o(e),M()})))],B=Nt(Tn);return[()=>K(R,N(z,E())),({Dt:e,It:t,Zt:n,tn:a})=>{let{nn:o,sn:s,en:m,cn:g}=a||{},{Ct:_,ft:v}=n||{},{B:y}=r,{M:b,P:S}=Bn(),{rn:C,j:w}=i,[T,E]=e(`showNativeOverlaidScrollbars`),[D,N]=e(`scrollbars.theme`),[F,I]=e(`scrollbars.visibility`),[L,R]=e(`scrollbars.autoHide`),[z,re]=e(`scrollbars.autoHideSuspend`),[V]=e(`scrollbars.autoHideDelay`),[H,U]=e(`scrollbars.dragScroll`),[ie,ae]=e(`scrollbars.clickScroll`),[oe,se]=e(`overflow`),G=v&&!t,le=o||s||g||_||t,ue=m||I||se,de=T&&b.x&&b.y,fe=!S&&!B,pe=de||fe,me=(e,t,n)=>{let r=e.includes(ce)&&(F===W||F===`auto`&&t===ce);return k(un,r,n),r};if(p=V,(E||fe)&&k(rn,pe),N&&(k(d),k(D,!0),d=D),(re||G)&&(ne(!z),G&&z&&(w.x||w.y?(f(),x((()=>{f=Z(O,ce,h(K(ne,!0)),{A:!0})}))):ne(!0))),R&&(c=L===`move`,l=L===`leave`,u=L===`never`,P(u,!0)),U&&k(vn,H),ae&&k(_n,!!ie),ue){let e=me(oe.x,C.x,!0),t=me(oe.y,C.y,!1);k(dn,!(e&&t))}le&&(j(),A(),M(),g&&te(),k(pn,!w.x,!0),k(pn,!w.y,!1),k(an,y&&!ee))},{},T]},er=e=>{let{K:t,P:n}=Bn(),{elements:r}=t(),{padding:i,viewport:o,content:s}=r,c=k(e),l=c?{}:e,{elements:u}=l,{padding:d,viewport:f,content:p}=u||{},m=c?e:l.target,h=Le(m),g=m.ownerDocument,_=g.documentElement,v=()=>g.defaultView||a,y=K(Jn,[m]),b=K(Yn,[m]),x=K(qe,``),S=K(y,x,o),C=K(b,x,s),w=e=>{let t=ct(e),n=ut(e),r=tt(e,ie),i=tt(e,ae);return n.w-t.w>0&&!xn(r)||n.h-t.h>0&&!xn(i)},T=S(f),E=T===m,D=E&&h,O=!E&&C(p),ee=!E&&T===O,A=D?_:T,j=D?A:m,M=!E&&b(x,i,d),P=!ee&&O,F=[P,A,M,j].map((e=>k(e)&&!ze(e)&&e)),I=e=>e&&te(F,e),L=!I(A)&&w(A)?A:m,ne=D?_:A,z={dt:m,vt:j,L:A,ln:M,ht:P,gt:ne,Qt:D?g:A,an:h?_:L,Gt:g,bt:h,At:c,V:E,un:v,yt:e=>Ae(A,Ut,e),wt:(e,t)=>ke(A,Ut,e,t),St:()=>ke(ne,Ut,Jt,!0)},{dt:B,vt:re,ln:V,L:H,ht:U}=z,oe=[()=>{Te(re,[Vt,Rt]),Te(B,Rt),h&&Te(_,[Rt,Vt])}],se=Re([U,H,V,re,B].find((e=>e&&!I(e)))),W=D?B:U||H,G=K(R,oe);return[z,()=>{let e=v(),t=Ve(),r=e=>{X(ze(e),Re(e)),Ue(e)},i=e=>Z(e,`focusin focusout focus blur`,yt,{I:!0,D:!1}),a=`tabindex`,o=Ce(H,a),s=i(t);return Y(re,Vt,E?``:Ht),Y(V,Zt,``),Y(H,Ut,``),Y(U,Qt,``),E||(Y(H,a,o||`-1`),h&&Y(_,Bt,``)),X(W,se),X(re,V),X(V||re,!E&&H),X(H,U),N(oe,[s,()=>{let e=Ve(),t=I(H),n=t&&e===H?B:e,s=i(n);Te(V,Zt),Te(U,Qt),Te(H,Ut),h&&Te(_,Bt),o?Y(H,a,o):Te(H,a),I(U)&&r(U),t&&r(H),I(V)&&r(V),Tt(n),s()}]),n&&!E&&(Oe(H,Ut,Yt),N(oe,K(Te,H,Ut))),Tt(!E&&h&&t===B&&e.top===e?H:t),s(),se=0,G},G]},tr=({ht:e})=>({Zt:t,fn:n,It:r})=>{let{$t:i}=t||{},{Ot:a}=n;e&&(i||r)&&et(e,{[se]:a&&`100%`})},nr=({vt:e,ln:t,L:n,V:r},a)=>{let[o,s]=i({i:pe,o:nt()},K(nt,e,`padding`,``));return({Dt:e,Zt:i,fn:c,It:l})=>{let[u,d]=s(l),{P:f}=Bn(),{_t:p,xt:m,Ct:h}=i||{},{B:g}=c,[_,v]=e(`paddingAbsolute`);(p||d||l||m)&&([u,d]=o(l));let y=!r&&(v||h||d);if(y){let e=!_||!t&&!f,r=u.r+u.l,i=u.t+u.b,o={[H]:e&&!g?-r:0,[U]:e?-i:0,[V]:e&&g?-r:0,top:e?-u.t:0,right:e?g?-u.r:`auto`:0,left:e?g?`auto`:-u.l:0,[oe]:e&&`calc(100% + ${r}px)`},s={[ne]:e?u.t:0,[z]:e?u.r:0,[re]:e?u.b:0,[B]:e?u.l:0};et(t||n,o),et(n,s),J(a,{ln:u,_n:!e,F:t?s:J({},o,s)})}return{dn:y}}},rr=(e,t)=>{let n=Bn(),{vt:r,ln:s,L:c,V:u,Qt:d,gt:p,bt:m,wt:h,un:g}=e,{P:_}=n,v=m&&u,y=K(o,0),b={display:()=>!1,direction:e=>e!==`ltr`,flexDirection:e=>e.endsWith(`-reverse`),writingMode:e=>e!==`horizontal-tb`},x=q(b),S={i:de,o:{w:0,h:0}},w={i:fe,o:{}},T=e=>{h(qt,!v&&e)},E=()=>tt(c,x),D=(e,t)=>{let n=!q(e).length,r=!t&&x.some((t=>{let n=e[t];return C(n)&&b[t](n)}));if(n&&!r||!pt(c))return{T:{x:0,y:0},k:{x:1,y:1}};T(!0);let i=Q(p),a=Z(d,ce,(e=>{let t=Q(p);e.isTrusted&&t.x===i.x&&t.y===i.y&&_t(e)}),{I:!0,A:!0}),o=h(Xt,!0);bt(p,{x:0,y:0}),o();let s=Q(p),u=ut(p);bt(p,{x:u.w,y:u.h});let m=Q(p),g={x:m.x-s.x,y:m.y-s.y};bt(p,{x:-u.w,y:-u.h});let _=Q(p),v={x:_.x-s.x,y:_.y-s.y},y={x:l(g.x)>=l(v.x)?m.x:_.x,y:l(g.y)>=l(v.y)?m.y:_.y};return bt(p,i),f((()=>a())),{T:s,k:y}},O=(e,t)=>{let n=a.devicePixelRatio%1==0?0:1,r={w:y(e.w-t.w),h:y(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},ee=(e,t)=>{let n=(e,t,n,r)=>{let i=e===W?G:Sn(e),a=xn(e),o=xn(n);return!t&&!r?G:a&&o?W:a?t&&r?i:t?W:G:t?i:o&&r?W:G};return{x:n(t.x,e.x,t.y,e.y),y:n(t.y,e.y,t.x,e.x)}},k=e=>{let t=e=>[W,G,ce].map((t=>U(Cn(t),e)));h(t(!0).concat(t()).join(` `)),h(q(e).map((t=>U(e[t],t===`x`))).join(` `),!0)},[A,j]=i(S,K(dt,c)),[te,N]=i(S,K(ut,c)),[P,F]=i(S),[I]=i(w),[R,ne]=i(S),[z]=i(w),[B]=i({i:(e,t)=>ue(e,t,L(M(q(e),q(t)))),o:{}}),[re,V]=i({i:(e,t)=>fe(e.T,t.T)&&fe(e.k,t.k),o:xt()}),H=Nt(Tn),U=(e,t)=>`${t?Wt:Gt}${le(e)}`;return({Dt:i,Zt:a,fn:o,It:l},{dn:u})=>{let{_t:d,Ht:f,xt:p,Ct:m,ft:b,Et:x}=a||{},{X:S,Y:C,W:w}=H&&H.R(e,t,o,n,i)||{},[M,L]=bn(i,n),[U,ie]=i(`overflow`),ae=xn(U.x),oe=xn(U.y),se=d||u||p||m||x||L,W=j(l),G=N(l),ce=F(l),le=ne(l);if(L&&_&&h(Yt,!M),se){Ae(r,Vt,zt)&&T(!0);let e=C&&C(),[t]=W=A(l),[n]=G=te(l),i=lt(c),a=v&&st(g()),o={w:y(n.w+t.w),h:y(n.h+t.h)},s={w:y((a?a.w:i.w+y(i.w-n.w))+t.w),h:y((a?a.h:i.h+y(i.h-n.h))+t.h)};e&&e(),le=R(s),ce=P(O(o,s),l)}let[ue,de]=le,[fe,pe]=ce,[K,me]=G,[he,ge]=W,[_e,q]=I({x:fe.w>0,y:fe.h>0}),ve=ae&&oe&&(_e.x||_e.y)||ae&&_e.x&&!_e.y||oe&&_e.y&&!_e.x,ye=u||m||x||ge||me||de||pe||ie||L||se||f&&v,[be]=i(`update.flowDirectionStyles`),[xe,Se]=B(be?be(c):E(),l),[Ce,we]=m||b||Se||q||l?re(D(xe,!!be),l):V(),Y=ee(_e,U);T(!1),ye&&(k(Y),Y=wn(c,_e),w&&S&&(S(Y,K,he),et(c,w(Y))));let[Te,Ee]=z(Y);return ke(r,Vt,zt,ve),ke(s,Zt,zt,ve),J(t,{rn:Te,Vt:{x:ue.w,y:ue.h},Rt:{x:fe.w,y:fe.h},j:_e,Tt:St(Ce,fe)}),{en:Ee,nn:de,sn:pe,cn:we||pe}}},ir=e=>{let[t,n,r]=er(e),i={ln:{t:0,r:0,b:0,l:0},_n:!1,F:{[H]:0,[U]:0,[V]:0,[ne]:0,[z]:0,[re]:0,[B]:0},Vt:{x:0,y:0},Rt:{x:0,y:0},rn:{x:G,y:G},j:{x:!1,y:!1},Tt:xt()},{dt:a,gt:o,V:s,St:c}=t,{P:l,M:u}=Bn(),d=!l&&(u.x||u.y),f=[tr(t),nr(t,i),rr(t,i)];return[n,e=>{let t={},n=d&&Q(o),r=n&&c();return j(f,(n=>{J(t,n(e,t)||{})})),bt(o,n),r&&r(),s||bt(a,0),t},i,t,r]},ar=(e,t,n,r)=>{let i=!1,a={Kt:!1,pn:!1},o=Pn(t,{}),[s,c,l,u,d]=ir(e),[f,p,m]=Kn(u,l,o,(e=>{y({},e)})),[h,g,,_]=$n(e,t,a,m,l,u,r),v=e=>q(e).some((t=>!!e[t])),y=(e,r)=>{let{Kt:o,pn:s}=a;if(s||o&&i)return!1;let{vn:l,It:u,zt:d}=e,f=l||{},h=!!u||!i,_={Dt:Pn(t,f,h),vn:f,It:h},y=r||p(J({},_,{zt:d})),b=c(J({},_,{fn:m,Zt:y}));g(J({},_,{Zt:y,tn:b}));let x=v(y),S=v(b),C=x||S||!ye(f)||h;return i=!0,C&&n(e,{Zt:y,tn:b}),C};return[()=>{let{an:e,gt:t,St:n}=u,r=Q(e),i=[f(),s(),h(),()=>{a.pn=!0}],o=n();return bt(t,r),o(),K(R,i)},y,e=>{let t=a.Kt;a.Kt=e,!e&&t!==e&&y({It:!0,zt:!0})},()=>{g({Dt:Pn(t,{},!1),vn:{},It:!1})},()=>({gn:a,hn:m,bn:l}),{yn:u,wn:_},d]},or=new WeakMap,sr=(e,t)=>{or.set(e,t)},cr=e=>{or.delete(e)},lr=e=>or.get(e),ur=(e,t,n)=>{let{tt:r}=Bn(),i=k(e),a=i?e:e.target,o=lr(a);if(t&&!o){let o=[],s={},c=e=>{let t=ve(e),n=Nt(Pt);return n?n(t,!0):t},l=J({},r(),c(t)),[u,d,f]=Dt(),[p,m,h]=Dt(n),g=(e,t)=>{h(e,t),f(e,t)},[_,v,y,b,x,S,C]=ar(e,l,(({vn:e,It:t},{Zt:n,tn:r})=>{let{_t:i,Ct:a,$t:o,xt:s,Ht:c,ft:l}=n,{nn:u,sn:d,en:f,cn:p}=r;g(`updated`,[T,{updateHints:{sizeChanged:!!i,directionChanged:!!a,heightIntrinsicChanged:!!o,overflowEdgeChanged:!!u,overflowAmountChanged:!!d,overflowStyleChanged:!!f,scrollCoordinatesChanged:!!p,contentMutation:!!s,hostMutation:!!c,appear:!!l},changedOptions:e||{},force:!!t}])}),(e=>g(`scroll`,[T,e]))),w=e=>{let{gn:t}=x(),{pn:n}=t;n||(cr(a),R(o),g(`destroyed`,[T,e]),d(),m())},T={options(e,t){if(e){let n=Nn(l,J(t?r():{},c(e)));ye(n)||(J(l,n),v({vn:n}))}return J({},l)},on:p,off:(e,t)=>{e&&t&&m(e,t)},state(){let{gn:e,hn:t,bn:n}=x(),{pn:r,Kt:i}=e,{B:a}=t,{Vt:o,Rt:s,rn:c,j:l,ln:u,_n:d,Tt:f}=n;return J({},{overflowEdge:o,overflowAmount:s,overflowStyle:c,hasOverflow:l,scrollCoordinates:{start:f.T,end:f.k},padding:u,paddingAbsolute:d,directionRTL:a,sleeping:i,destroyed:r})},elements(){let{dt:e,vt:t,ln:n,L:r,ht:i,gt:a,Qt:o}=S.yn,{jt:s,Jt:c}=S.wn,l=e=>{let{kt:t,Pt:n,Lt:r}=e;return{scrollbar:r,track:n,handle:t}},u=e=>{let{Xt:t,Yt:n}=e;return J({},l(t[0]),{clone:()=>{let e=l(n());return b(),e}})};return J({},{target:e,host:t,padding:n||r,viewport:r,content:i||r,scrollOffsetElement:a,scrollEventElement:o,scrollbarHorizontal:u(s),scrollbarVertical:u(c)})},update:e=>v({It:e,zt:!0}),destroy:K(w,!1),sleep:y,plugin:e=>s[q(e)[0]]};return N(o,[C]),sr(a,T),jt(Ot,ur,[T,u,s]),Xn(S.yn.bt,!i&&e.cancel)?(w(!0),T):(N(o,_()),g(`initialized`,[T]),T.update(),T)}return o};ur.plugin=e=>{let t=E(e),n=t?e:[e],r=n.map((e=>jt(e,ur)[0]));return At(n),t?r:r[0]},ur.valid=e=>{let t=e&&e.elements,n=T(t)&&t();return ee(n)&&!!lr(n.target)},ur.env=()=>{let{U:e,M:t,P:n,J:r,ot:i,st:a,K:o,Z:s,tt:c,nt:l}=Bn();return J({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,scrollTimeline:r,staticDefaultInitialization:i,staticDefaultOptions:a,getDefaultInitialization:o,setDefaultInitialization:s,getDefaultOptions:c,setDefaultOptions:l})},ur.nonce=Ln,ur.trustedTypePolicy=Ke;var dr=()=>{if(typeof window>`u`){let e=()=>{};return[e,e]}let e,t,n=window,r=typeof n.requestIdleCallback==`function`,i=n.requestAnimationFrame,a=n.cancelAnimationFrame,o=r?n.requestIdleCallback:i,s=r?n.cancelIdleCallback:a,c=()=>{s(e),a(t)};return[(n,a)=>{c(),e=o(r?()=>{c(),t=i(n)}:n,typeof a==`object`?a:{timeout:2233})},c]},fr=e=>{let{options:t,events:n,defer:i}=e||{},[a,o]=(0,r.useMemo)(dr,[]),s=(0,r.useRef)(null),c=(0,r.useRef)(i),l=(0,r.useRef)(t),u=(0,r.useRef)(n);return(0,r.useEffect)(()=>{c.current=i},[i]),(0,r.useEffect)(()=>{let{current:e}=s;l.current=t,ur.valid(e)&&e.options(t||{},!0)},[t]),(0,r.useEffect)(()=>{let{current:e}=s;u.current=n,ur.valid(e)&&e.on(n||{},!0)},[n]),(0,r.useEffect)(()=>()=>{var e;o(),(e=s.current)==null||e.destroy()},[]),(0,r.useMemo)(()=>[e=>{let t=s.current;if(ur.valid(t))return;let n=c.current,r=l.current||{},i=u.current||{},o=()=>s.current=ur(e,r,i);n?a(o,n):o()},()=>s.current],[])},pr=(0,r.forwardRef)((e,t)=>{let{element:n=`div`,options:i,events:a,defer:o,children:s,...c}=e,l=n,u=(0,r.useRef)(null),d=(0,r.useRef)(null),[f,p]=fr({options:i,events:a,defer:o});return(0,r.useEffect)(()=>{let{current:e}=u,{current:t}=d;if(!e)return;let r=e;return f(n===`body`?{target:r,cancel:{body:null}}:{target:r,elements:{viewport:t,content:t}}),()=>p()?.destroy()},[f,n]),(0,r.useImperativeHandle)(t,()=>({osInstance:p,getElement:()=>u.current}),[]),r.createElement(l,{"data-overlayscrollbars-initialize":``,ref:u,...c},n===`body`?s:r.createElement(`div`,{"data-overlayscrollbars-contents":``,ref:d},s))}),mr=n(),hr={scrollbars:{autoHide:`leave`,autoHideDelay:800,autoHideSuspend:!1,dragScroll:!0,clickScroll:!0,pointers:[`mouse`,`touch`,`pen`]},overflow:{x:`hidden`,y:`scroll`},paddingAbsolute:!0},gr={...hr,overflow:{x:`scroll`,y:`scroll`}},_r={...hr,overflow:{x:`scroll`,y:`hidden`}};function vr({children:e,style:t,className:n}){return(0,mr.jsx)(pr,{options:hr,style:t,className:n,children:e})}export{pr as a,vr as i,gr as n,_r as r,hr as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,t as n}from"./react-Bi_azaFt.js";import{t as r}from"./client-DTSXvAb8.js";import{f as i,g as a,h as o}from"./index-DfKltZ6z.js";import{i as s}from"./ScrollContainer-BT_Dzxah.js";import{i as c,r as l}from"./formatRelative-j86webkr.js";import{n as u,t as d}from"./renderSnippet-CqpQQugH.js";import{n as f}from"./SessionItem-DlyKg80u.js";var p=e(t(),1),m=n(),h=50;function g(){let e=o(e=>e.closeSearch),t=o(e=>e.setPendingScrollMessageId),[n,g]=(0,p.useState)(``),[_,v]=(0,p.useState)([]),[y,b]=(0,p.useState)(!1),[x,S]=(0,p.useState)(!1),[C,w]=(0,p.useState)(!1),[T,E]=(0,p.useState)(0),D=i(),O=(0,p.useRef)(null),k=(0,p.useRef)(null),A=(0,p.useRef)(null),j=u(n,300);(0,p.useEffect)(()=>{let e=k.current;e&&e.children[T]?.scrollIntoView({block:`nearest`})},[T]),(0,p.useEffect)(()=>{O.current?.focus()},[]),(0,p.useEffect)(()=>{let t=t=>{if(t.key===`Escape`){e();return}if(t.key!==`Tab`||!A.current)return;let n=A.current.querySelectorAll(`input, button, [tabindex]:not([tabindex="-1"])`);if(n.length===0)return;let r=n[0],i=n[n.length-1];t.shiftKey&&document.activeElement===r?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),r.focus())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]),(0,p.useEffect)(()=>{if(j.length<2){v([]),w(!1);return}let e=!1;return b(!0),r.search(j,void 0,h).then(t=>{e||(v(t),w(t.length===h),E(0))}).catch(()=>{e||(v([]),w(!1))}).finally(()=>{e||b(!1)}),()=>{e=!0}},[j]);let M=(0,p.useCallback)(()=>{x||(S(!0),r.search(j,void 0,h,_.length).then(e=>{v(t=>[...t,...e]),w(e.length===h)}).catch(()=>w(!1)).finally(()=>S(!1)))},[j,_.length,x]),N=(0,p.useCallback)(n=>{D.has(n.session_id)&&D.remove(n.session_id),t(n.message_id);let i=()=>{a(`/chat/${n.session_id}`),e()};c(n.session_id)?i():l(n.session_id,r.getSession).then(i).catch(i)},[e,t,D]);return(0,m.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Search conversations`,style:{position:`fixed`,inset:0,zIndex:1e3,background:`var(--bg-modal-overlay)`,display:`flex`,alignItems:`flex-start`,justifyContent:`center`,paddingTop:`180px`},onClick:t=>{t.target===t.currentTarget&&e()},children:(0,m.jsxs)(`div`,{ref:A,style:{width:`100%`,maxWidth:`600px`,background:`var(--bg-modal)`,borderRadius:`var(--radius-lg)`,boxShadow:`var(--shadow-lg)`,overflow:`hidden`,margin:`0 16px`},onClick:e=>e.stopPropagation(),children:[(0,m.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,padding:`16px`,borderBottom:_.length>0||y?`1px solid var(--border-subtle)`:`none`,gap:`12px`},children:[(0,m.jsx)(`span`,{style:{fontSize:`16px`,color:`var(--text-tertiary)`},children:`⌕`}),(0,m.jsx)(`input`,{ref:O,type:`text`,value:n,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),E(e=>Math.min(e+1,_.length-1))):e.key===`ArrowUp`?(e.preventDefault(),E(e=>Math.max(e-1,0))):e.key===`Enter`&&_[T]&&N(_[T])},placeholder:`Search conversations...`,style:{flex:1,border:`none`,outline:`none`,background:`transparent`,fontSize:`15px`,color:`var(--text-primary)`,fontFamily:`var(--font-ui)`}}),y&&(0,m.jsx)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`},children:`Searching…`}),(0,m.jsx)(`kbd`,{onClick:e,style:{fontSize:`11px`,color:`var(--text-tertiary)`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-default)`,borderRadius:`4px`,padding:`2px 6px`,cursor:`pointer`,fontFamily:`var(--font-ui)`},children:`Esc`})]}),_.length>0&&(0,m.jsxs)(s,{style:{maxHeight:`400px`},children:[(0,m.jsx)(`ul`,{ref:k,role:`listbox`,style:{listStyle:`none`,margin:0,padding:`8px 0`},children:_.map((e,t)=>(0,m.jsxs)(`li`,{role:`option`,"aria-selected":t===T,onClick:()=>N(e),onMouseEnter:()=>E(t),style:{padding:`10px 16px`,cursor:`pointer`,background:t===T?`var(--bg-sidebar-hover)`:`transparent`,transition:`background var(--transition-fast)`},children:[(0,m.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,marginBottom:`3px`,minWidth:0},children:[(0,m.jsx)(`span`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-primary)`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`,flex:1},children:e.session_title??`Untitled`}),D.has(e.session_id)&&(0,m.jsx)(`span`,{style:{fontSize:`10px`,color:`var(--text-tertiary)`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-pill)`,padding:`1px 6px`,flexShrink:0,fontFamily:`var(--font-ui)`},children:`archived`}),e.source===`ephemeral`&&(0,m.jsx)(`span`,{"aria-label":`Ephemeral ${e.kind??`message`}`,style:{fontSize:`10px`,color:`var(--accent-orange)`,background:`var(--accent-orange-subtle)`,border:`1px solid var(--border-accent)`,borderRadius:`var(--radius-pill)`,padding:`1px 6px`,flexShrink:0,fontFamily:`var(--font-ui)`,fontWeight:600,letterSpacing:0},children:e.kind?.toUpperCase()??`EPHEMERAL`})]}),(0,m.jsx)(`div`,{style:{fontSize:`12px`,color:`var(--text-secondary)`,display:`-webkit-box`,WebkitLineClamp:2,WebkitBoxOrient:`vertical`,overflow:`hidden`,lineHeight:1.4,marginBottom:`4px`},children:d(e.snippet)}),e.timestamp&&(0,m.jsx)(`div`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`},children:f(e.timestamp)})]},e.message_id))}),C&&(0,m.jsx)(`button`,{onClick:M,disabled:x,style:{display:`block`,width:`100%`,padding:`10px 16px`,border:`none`,background:`transparent`,color:`var(--text-tertiary)`,fontSize:`12px`,fontFamily:`var(--font-ui)`,cursor:x?`default`:`pointer`},children:x?`Loading…`:`Load more`})]}),!y&&n.length>=2&&_.length===0&&(0,m.jsxs)(`div`,{style:{padding:`24px 16px`,textAlign:`center`,fontSize:`13px`,color:`var(--text-tertiary)`},children:[`No results for "`,n,`"`]}),n.length>0&&n.length<2&&(0,m.jsx)(`div`,{style:{padding:`16px`,textAlign:`center`,fontSize:`12px`,color:`var(--text-tertiary)`},children:`Type at least 2 characters…`})]})})}export{g as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,r as n,t as r}from"./react-Bi_azaFt.js";import{a as i,o as a,t as o}from"./client-DTSXvAb8.js";import{a as s,c,f as l,h as u,m as d,o as f,p}from"./index-DfKltZ6z.js";import{n as m,o as h}from"./formatRelative-j86webkr.js";import{a as g,c as _,d as v,f as y,i as b,l as x,o as S,p as C,s as ee,u as w}from"./ui-BcGPjpYn.js";import{t as te}from"./shared-DdVGprvF.js";var T=e(t(),1),E=n(),D=r(),O={display:`flex`,alignItems:`center`,gap:`9px`,width:`100%`,padding:`7px 10px`,background:`none`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:`pointer`,textAlign:`left`,fontSize:`13px`,fontFamily:`var(--font-ui)`,whiteSpace:`nowrap`},k=210;function ne({items:e,anchorRect:t,onClose:n}){let r=(0,T.useRef)(null),i=(0,T.useRef)(null),a=(0,T.useRef)(null),[o,s]=(0,T.useState)(null),c=(0,T.useRef)(null),[l,u]=(0,T.useState)(null),[d,f]=(0,T.useState)(null),p=t.bottom+4+180>window.innerHeight,m=t.right<k;(0,T.useLayoutEffect)(()=>{if(o===null||!i.current||!r.current||!d){u(null);return}let e=i.current.getBoundingClientRect(),t=r.current.getBoundingClientRect(),n=window.innerWidth,a=window.innerHeight,s=d.top,c=d.right-4;s+e.height>a-8&&(s=a-8-e.height),s<8&&(s=8),c+e.width>n-8&&(c=n-8-e.width),c<8&&(c=8);let l=t.right-t.left;c<t.right&&c-t.left<l*.3&&(c=t.left+l*.3),c+e.width>n-8&&(c=n-8-e.width),c<8&&(c=8),u({top:s,left:c})},[o,d]),(0,T.useEffect)(()=>{let e=e=>{let t=e.target,a=r.current?.contains(t),o=i.current?.contains(t);!a&&!o&&n()},t=e=>{e.key===`Escape`&&n()};return document.addEventListener(`pointerdown`,e,!0),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e,!0),document.removeEventListener(`keydown`,t)}},[n]);let h=window.innerWidth-t.right,g=e=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{a.current&&f(a.current.getBoundingClientRect()),s(e)},100)},v=()=>{c.current=setTimeout(()=>{s(null)},500)},y=o!==null&&e[o]?.kind===`submenu`?e[o]:null,b=l??(d?{top:d.top,left:d.right-4}:null);return(0,E.createPortal)((0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`div`,{ref:r,style:{position:`fixed`,...p||m?{bottom:window.innerHeight-t.top+4}:{top:t.bottom+4},...m?{left:t.left}:{right:h},minWidth:`${k}px`,background:`var(--bg-modal)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,boxShadow:`0 2px 12px rgba(0,0,0,0.08)`,padding:`4px`,zIndex:1e3,fontFamily:`var(--font-ui)`},children:e.map((e,t)=>{if(e.kind===`separator`)return(0,D.jsx)(`div`,{style:{height:`1px`,background:`var(--border-subtle)`,margin:`4px 0`}},t);if(e.kind===`submenu`){let n=o===t;return(0,D.jsx)(`div`,{ref:a,onMouseEnter:()=>g(t),onMouseLeave:v,children:(0,D.jsxs)(`button`,{style:{...O,color:`var(--text-primary)`,background:n?`var(--bg-sidebar-hover)`:`none`},children:[(0,D.jsx)(`span`,{style:{flex:1},children:e.label}),(0,D.jsx)(`span`,{style:{color:`var(--text-tertiary)`,display:`flex`,transition:`transform 150ms ease`,transform:n?`rotate(90deg)`:`rotate(0deg)`},children:(0,D.jsx)(_,{})})]})},t)}return(0,D.jsxs)(`button`,{onClick:()=>{e.disabled||(e.action(),n())},disabled:e.disabled,style:{...O,color:e.disabled?`var(--text-tertiary)`:e.danger?`var(--tool-error-text)`:`var(--text-primary)`,cursor:e.disabled?`default`:`pointer`,opacity:e.disabled?.5:1},onMouseEnter:t=>{e.disabled||(t.currentTarget.style.background=`var(--bg-sidebar-hover)`)},onMouseLeave:e=>{e.currentTarget.style.background=`none`},children:[e.icon&&(0,D.jsx)(`span`,{style:{flexShrink:0,color:e.disabled?`var(--text-tertiary)`:e.danger?`var(--tool-error-text)`:`var(--text-tertiary)`,display:`flex`},children:e.icon}),e.label]},t)})}),y&&b&&(0,D.jsx)(`div`,{ref:i,style:{position:`fixed`,top:b.top,left:b.left,minWidth:`${k}px`,background:`var(--bg-modal)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-md)`,boxShadow:`0 2px 12px rgba(0,0,0,0.08)`,padding:`4px`,zIndex:1001,fontFamily:`var(--font-ui)`},onMouseEnter:()=>{o!==null&&g(o)},onMouseLeave:v,children:y.items.map((e,t)=>e.kind===`separator`?(0,D.jsx)(`div`,{style:{height:`1px`,background:`var(--border-subtle)`,margin:`4px 0`}},t):(0,D.jsxs)(`button`,{onClick:()=>{e.action(),n()},style:{...O,color:e.danger?`var(--tool-error-text)`:`var(--text-primary)`},onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`none`},children:[e.icon&&(0,D.jsx)(`span`,{style:{flexShrink:0,color:`var(--text-tertiary)`,display:`flex`},children:e.icon}),e.label]},t))})]}),document.body)}function re({initialValue:e,onCommit:t,onCancel:n}){let[r,i]=(0,T.useState)(e),a=(0,T.useRef)(null);(0,T.useEffect)(()=>{a.current?.focus(),a.current?.select()},[]);let o=()=>{let e=r.trim();e?t(e):n()};return(0,D.jsx)(`input`,{ref:a,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o()),e.key===`Escape`&&(e.preventDefault(),n())},onBlur:()=>{r.trim()&&r.trim()!==e?o():n()},onClick:e=>e.stopPropagation(),style:{flex:1,border:`1px solid var(--border-accent)`,borderRadius:`var(--radius-sm)`,background:`var(--bg-input)`,color:`var(--text-primary)`,fontSize:`14px`,fontFamily:`var(--font-ui)`,padding:`1px 6px`,outline:`none`,minWidth:0}})}var A=m;function j(e){return e.last_message_role===`assistant`&&!!e.updated_at}function M(e,t){return e?t?e>t:!0:!1}function N({session:e,isActive:t,onClick:n,runnerStatus:r,onToggleSelect:m}){let[_,E]=(0,T.useState)(!1),[O,k]=(0,T.useState)(!1),[A,N]=(0,T.useState)(null),[P,F]=(0,T.useState)(!1),[I,L]=(0,T.useState)(!1),R=p(),z=l(),B=d(),V=u(e=>e.selectionMode),H=u(e=>e.showProviderTag),U=u(e=>e.selectedSessionIds),W=u(e=>e.toggleSessionSelected),G=U.has(e.id),K=R.has(e.id),ie=z.has(e.id),[ae,q]=(0,T.useState)(()=>e.custom_title??f(s.RENAMED)[e.id]??null);(0,T.useEffect)(()=>{if(e.custom_title){q(e.custom_title);let t=f(s.RENAMED);t[e.id]!==e.custom_title&&(t[e.id]=e.custom_title,c(s.RENAMED,t))}},[e.id,e.custom_title]),(0,T.useEffect)(()=>a(`rename`,({id:t,title:n})=>{if(t!==e.id)return;let r=n.trim()===``?null:n;q(r);let i=f(s.RENAMED);r===null?delete i[e.id]:i[e.id]=r,c(s.RENAMED,i)}),[e.id]);let J=(0,T.useRef)(null),Y=ae??e.title??`Untitled`,X=u(e=>e.hostInfo)?.is_remote_client===!0,[Z,Q]=(0,T.useState)(()=>j(e)&&M(e.updated_at,B.get(e.id))?`visible`:`hidden`);(0,T.useEffect)(()=>{if(!j(e)){Q(`hidden`);return}M(e.updated_at,B.get(e.id))&&Q(`visible`)},[e.id,e.updated_at,e.last_message_role,B.map]),(0,T.useEffect)(()=>{if(Z!==`fading`)return;let e=setTimeout(()=>Q(`hidden`),b.BELL_FADE_MS);return()=>clearTimeout(e)},[Z]),(0,T.useEffect)(()=>{if(!t)return;let n=()=>{Q(t=>t===`visible`?(e.updated_at&&B.set(e.id,e.updated_at),`fading`):t)};return window.addEventListener(`focus`,n),()=>window.removeEventListener(`focus`,n)},[t,e.id,e.updated_at,B]);let oe=(0,T.useCallback)(()=>{F(!0)},[]),se=(0,T.useCallback)(t=>{let n=t.trim(),r=n===``?null:n,a=f(s.RENAMED);r===null?delete a[e.id]:a[e.id]=r,c(s.RENAMED,a),q(r),F(!1),i(`rename`,{id:e.id,title:r??``}),o.setSessionTitle(e.id,r).then(t=>{i(`rename`,{id:e.id,title:t.custom_title??``})}).catch(()=>{})},[e.id]),ce=(0,T.useCallback)(()=>{F(!1)},[]),le=(0,T.useCallback)(()=>{L(!1),i(`sessions-removed`,[e.id]),o.deleteSessions([e.id]).then(e=>{e.failed.length>0&&(console.error(`[delete] Some sessions failed to delete:`,e.failed),i(`toast`,{message:`Couldn't delete session — see console for details.`,kind:`error`})),i(`refresh`,void 0)}).catch(e=>{console.error(`[delete] deleteSessions error:`,e),i(`toast`,{message:`Couldn't delete session — see console for details.`,kind:`error`}),i(`refresh`,void 0)})},[e.id]),ue=[{label:K?`Unstar`:`Star`,icon:(0,D.jsx)(y,{filled:K}),action:()=>R.toggle(e.id)},{label:`Rename`,icon:(0,D.jsx)(v,{}),action:oe},{label:ie?`Unarchive`:`Archive`,icon:(0,D.jsx)(S,{}),action:()=>z.toggle(e.id)},{label:`Delete`,icon:(0,D.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,D.jsx)(`polyline`,{points:`3 6 5 6 21 6`}),(0,D.jsx)(`path`,{d:`M19 6l-1 14H6L5 6`}),(0,D.jsx)(`path`,{d:`M10 11v6`}),(0,D.jsx)(`path`,{d:`M14 11v6`}),(0,D.jsx)(`path`,{d:`M9 6V4h6v2`})]}),action:()=>L(!0),danger:!0},{kind:`separator`},{kind:`submenu`,label:`More`,items:[{label:`Copy title`,icon:(0,D.jsx)(x,{}),action:()=>navigator.clipboard.writeText(Y).catch(()=>{})},{label:`Copy project path`,icon:(0,D.jsx)(w,{}),action:()=>navigator.clipboard.writeText(e.cwd??``).catch(()=>{})},{label:`Copy file path`,icon:(0,D.jsx)(x,{}),action:()=>navigator.clipboard.writeText(e.file_path).catch(()=>{})},{label:`Copy session ID`,icon:(0,D.jsx)(x,{}),action:()=>navigator.clipboard.writeText(e.id).catch(()=>{})},{label:`Copy resume command`,icon:(0,D.jsx)(C,{}),action:()=>{let t=e.file_path.split(`/`),n=`claude`,r=t.indexOf(`projects`);if(r>0){let e=r-1;for(;e>=0&&t[e]===`config`;)e--;e>=0&&(n=t[e].replace(/^\./,``))}let i=``;if(e.is_worktree){if(e.cwd){let t=e.cwd.indexOf(`/.claude/worktrees/`);t>=0&&(i=e.cwd.slice(t+19))}if(!i&&r>=0&&t[r+1]){let e=t[r+1],n=e.indexOf(`worktrees-`);n>=0&&(i=e.slice(n+10))}}let a=i?`${n} -w ${i} -r ${e.id}`:`${n} -r ${e.id}`;navigator.clipboard.writeText(a).catch(()=>{})}},{kind:`separator`},{label:X?`Reveal in Finder (host-only)`:`Reveal in Finder`,icon:(0,D.jsx)(w,{}),action:X?()=>{}:()=>o.revealSession(e.id).catch(()=>{}),disabled:X},{label:e.is_fork?`Open in terminal (fork — not resumable)`:X?`Open in terminal (host-only)`:`Open in terminal`,icon:(0,D.jsx)(C,{}),action:e.is_fork||X?()=>{}:()=>o.openTerminal(e.id).catch(e=>{i(`toast`,{message:e instanceof Error?e.message:`Couldn't open a terminal`,kind:`error`})}),disabled:e.is_fork||X}]}],de=e=>{e.stopPropagation(),J.current&&(N(J.current.getBoundingClientRect()),k(!0))},$=t=>{m?m(e.id,t):W(e.id)};return(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`div`,{className:`hover-actions-parent sidebar-session-item${t&&!V?` sidebar-session-item--active`:``}`,onMouseEnter:()=>{E(!0),h(e.id,o.getSession)},onMouseLeave:()=>E(!1),style:{position:`relative`,display:`flex`,alignItems:`center`,padding:0,background:t&&!V||G?`var(--bg-sidebar-active)`:_?`var(--bg-sidebar-hover)`:`transparent`,borderRadius:`var(--radius-sm)`,margin:`1px 6px`,transition:`background var(--transition-fast)`,minHeight:`30px`,gap:`4px`},children:P?(0,D.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,flex:1,padding:`5px 8px 5px 12px`,gap:`4px`,minWidth:0},children:(0,D.jsx)(re,{initialValue:Y,onCommit:se,onCancel:ce})}):(0,D.jsxs)(D.Fragment,{children:[V&&(0,D.jsx)(`span`,{style:{flexShrink:0,display:`flex`,paddingLeft:`12px`},children:(0,D.jsx)(te,{checked:G,onChange:(e,t)=>$(t.shiftKey)})}),(0,D.jsxs)(`button`,{type:`button`,onClick:t=>{if(V){$(t.shiftKey);return}Z===`visible`&&(e.updated_at&&B.set(e.id,e.updated_at),Q(`fading`)),n()},onMouseDown:e=>{V&&e.shiftKey&&e.preventDefault()},"aria-label":Y,style:{display:`flex`,alignItems:`center`,flex:1,minWidth:0,padding:`5px 8px 5px 12px`,gap:`4px`,background:`none`,border:`none`,cursor:`pointer`,font:`inherit`,color:`inherit`,textAlign:`left`,userSelect:`none`,outline:`none`},children:[!V&&K&&(0,D.jsx)(`span`,{style:{color:`var(--accent-orange)`,flexShrink:0,fontSize:`11px`,display:`flex`},children:(0,D.jsx)(y,{filled:!0})}),(0,D.jsx)(`span`,{"data-testid":`session-title`,title:Y,style:{flex:1,minWidth:0,fontSize:`14px`,color:`var(--text-primary)`,fontWeight:t?500:400,lineHeight:`1.35`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`},children:Y}),H&&!V&&e.provider&&e.provider!==`claude`&&(0,D.jsx)(`span`,{"aria-label":`Provider: ${e.provider}`,title:e.provider,style:{flexShrink:0,fontSize:`8.5px`,fontFamily:`var(--font-ui)`,fontWeight:600,letterSpacing:`0.06em`,color:`var(--text-tertiary)`,opacity:.7,lineHeight:`14px`,userSelect:`none`},children:e.provider===`codex`?`GPT`:e.provider.toUpperCase()}),!V&&Z!==`hidden`&&(0,D.jsx)(`span`,{"aria-label":`Awaiting your reply`,style:{flexShrink:0,display:`flex`,color:`var(--accent-orange)`,opacity:Z===`fading`||_||t||O?0:1,transition:`opacity var(--transition-fast)`},children:(0,D.jsx)(ee,{})}),!V&&r?.busy&&(0,D.jsx)(`span`,{"data-testid":`runner-busy-marker`,"aria-label":`Running`,title:`Running`,style:{flexShrink:0,width:`8px`,height:`8px`,borderRadius:`50%`,background:`var(--accent-green)`,boxShadow:`0 0 0 0 var(--accent-green)`,animation:`clau-runner-pulse 1.6s ease-out infinite`,marginRight:`2px`}})]}),!V&&(0,D.jsx)(`button`,{ref:J,type:`button`,onClick:de,className:t||O?``:`hover-actions`,style:{position:`absolute`,right:`0`,top:0,bottom:0,borderRadius:`0 var(--radius-sm) var(--radius-sm) 0`,color:O?`var(--text-primary)`:`var(--text-tertiary)`,fontSize:`14px`,lineHeight:`30px`,padding:`0 8px`,letterSpacing:`1px`,background:t?`var(--bg-sidebar-active)`:_||O?`var(--bg-sidebar-hover)`:`var(--bg-sidebar)`,border:`none`,cursor:`pointer`,outline:`none`,fontFamily:`var(--font-ui)`,transition:`background var(--transition-fast)`},"aria-label":`Session options`,children:`•••`})]})}),O&&A&&(0,D.jsx)(ne,{items:ue,anchorRect:A,onClose:()=>k(!1)}),I&&(0,D.jsx)(g,{title:`Delete session?`,body:`This permanently deletes the session transcript file from disk and cannot be undone.`,confirmLabel:`Delete`,onConfirm:le,onCancel:()=>L(!1)})]})}export{A as n,N as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,t as n}from"./react-Bi_azaFt.js";import{i as r,r as i,t as a}from"./client-DTSXvAb8.js";import{h as o}from"./index-DfKltZ6z.js";import{i as s}from"./ScrollContainer-BT_Dzxah.js";import{n as c}from"./nativePtyFonts-BaXKtUsn.js";import{a as l,i as u,n as d,o as f,r as p}from"./shared-DdVGprvF.js";var m=e(t(),1),h=n();function g({config:e,onConfigChange:t}){let[n,r]=(0,m.useState)(``),[i,o]=(0,m.useState)(!1),[s,c]=(0,m.useState)(null),l=async e=>{o(!0),c(null);try{let n=await a.updateConfig(e);await a.refresh(),t(n)}catch(e){c(e instanceof Error?e.message:`Failed to save`)}finally{o(!1)}},u=t=>{l({...e,data_paths:e.data_paths.filter(e=>e!==t)})},d=()=>{let t=n.trim();!t||e.data_paths.includes(t)||l({...e,data_paths:[...e.data_paths,t]}).then(()=>r(``))};return(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:{fontSize:`12px`,fontWeight:600,color:`var(--text-tertiary)`,textTransform:`uppercase`,letterSpacing:`0.05em`,marginBottom:`10px`},children:`Data Paths`}),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`,marginBottom:`12px`},children:[e.data_paths.length===0&&(0,h.jsx)(`div`,{style:{fontSize:`13px`,color:`var(--text-tertiary)`,padding:`8px 0`},children:`No paths configured`}),e.data_paths.map(e=>(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,padding:`6px 10px`},children:[(0,h.jsx)(`code`,{style:{flex:1,fontSize:`12px`,fontFamily:`var(--font-mono)`,color:`var(--text-primary)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e}),(0,h.jsx)(`button`,{onClick:()=>u(e),disabled:i,"aria-label":`Remove ${e}`,style:{background:`none`,border:`none`,cursor:i?`not-allowed`:`pointer`,color:`var(--text-tertiary)`,fontSize:`14px`,lineHeight:1,padding:`2px 4px`,borderRadius:`var(--radius-sm)`,flexShrink:0,transition:`color var(--transition-fast)`},onMouseEnter:e=>{e.currentTarget.style.color=`var(--tool-error-border)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`},children:`×`})]},e))]}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:`8px`},children:[(0,h.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d()},placeholder:`/path/to/claude/sessions`,style:{flex:1,padding:`7px 10px`,fontSize:`13px`,fontFamily:`var(--font-mono)`,background:`var(--bg-input)`,border:`1px solid var(--border-default)`,borderRadius:`var(--radius-sm)`,color:`var(--text-primary)`,outline:`none`}}),(0,h.jsx)(`button`,{onClick:d,disabled:i||!n.trim(),style:{padding:`7px 14px`,fontSize:`13px`,background:n.trim()?`var(--accent-orange)`:`var(--bg-tool-block)`,color:n.trim()?`var(--text-on-accent)`:`var(--text-tertiary)`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:n.trim()&&!i?`pointer`:`not-allowed`,fontFamily:`var(--font-ui)`,transition:`background var(--transition-fast)`,flexShrink:0},children:`Add`})]}),s&&(0,h.jsx)(`div`,{style:{marginTop:`8px`,fontSize:`12px`,color:`var(--tool-error-border)`},children:s})]})}var _=[`#b8956a`,`#3b82f6`,`#10b981`,`#9b8ec4`,`#c47a7a`,`#c9a96e`,`#7eb6c4`,`#d4758a`],v=3e3,y={...d,color:p,marginTop:`6px`};function b({profile:e,isExpanded:t,onToggleExpand:n,onDelete:r,onRename:i,onColorChange:a,onAddPath:o,onRemovePath:s}){let[c,l]=(0,m.useState)(!1),[u,d]=(0,m.useState)(e.name),[f,g]=(0,m.useState)(!1),[b,x]=(0,m.useState)(null),[S,C]=(0,m.useState)(``),[w,T]=(0,m.useState)(!1),[E,D]=(0,m.useState)(null),[O,k]=(0,m.useState)(!1),[A,j]=(0,m.useState)(null),[M,N]=(0,m.useState)(!1),[P,F]=(0,m.useState)(!1),[I,L]=(0,m.useState)(null),R=(0,m.useRef)(null),z=(0,m.useRef)(null);(0,m.useEffect)(()=>{t&&z.current?.focus()},[t]),(0,m.useEffect)(()=>()=>{R.current&&clearTimeout(R.current)},[]);let B=async()=>{if(!M){N(!0),L(null),R.current=setTimeout(()=>N(!1),v);return}R.current&&clearTimeout(R.current),F(!0),L(null);try{await r(e.id)}catch(e){L(e instanceof Error?e.message:`Failed to delete profile`),N(!1),F(!1)}},V=()=>{d(e.name),x(null),l(!0)},H=async()=>{let t=u.trim();if(!t||t===e.name){l(!1);return}g(!0),x(null);try{await i(e.id,t),l(!1)}catch(e){x(e instanceof Error?e.message:`Failed to rename`)}finally{g(!1)}},U=async t=>{if(!(t===e.color||O)){k(!0),j(null);try{await a(e.id,t)}catch(e){j(e instanceof Error?e.message:`Failed to update color`)}finally{k(!1)}}},W=async()=>{let t=S.trim();if(!(!t||w)){if(e.data_paths.includes(t)){j(`That path is already in this profile`);return}T(!0),j(null);try{await o(e.id,t),C(``)}catch(e){j(e instanceof Error?e.message:`Failed to add path`)}finally{T(!1)}}},G=async t=>{D(t),j(null);try{await s(e.id,t)}catch(e){j(e instanceof Error?e.message:`Failed to remove path`)}finally{D(null)}};return(0,h.jsxs)(`div`,{style:{background:`var(--bg-tool-block)`,borderRadius:`var(--radius-sm)`,border:`1px solid var(--border-subtle)`,overflow:`hidden`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`,padding:`8px 10px`,cursor:`pointer`},onClick:n,children:[(0,h.jsx)(`span`,{style:{width:`14px`,height:`14px`,borderRadius:`50%`,background:e.color,flexShrink:0}}),c?(0,h.jsx)(`input`,{value:u,onChange:e=>d(e.target.value),onClick:e=>e.stopPropagation(),onBlur:H,onKeyDown:e=>{e.key===`Enter`&&H(),e.key===`Escape`&&l(!1)},disabled:f,autoFocus:!0,style:{flex:1,fontSize:`13px`,fontWeight:500,color:`var(--text-primary)`,background:`var(--bg-sidebar)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,padding:`1px 6px`,fontFamily:`var(--font-ui)`,outline:`none`}}):(0,h.jsxs)(`span`,{style:{flex:1,display:`flex`,alignItems:`center`,gap:`4px`,minWidth:0},children:[(0,h.jsx)(`span`,{style:{fontSize:`13px`,color:`var(--text-primary)`,fontWeight:500,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.name}),(0,h.jsx)(`button`,{onClick:e=>{e.stopPropagation(),V()},"aria-label":`Rename ${e.name}`,title:`Rename`,style:{background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,fontSize:`11px`,padding:`2px`,lineHeight:1,flexShrink:0,opacity:.6},children:`✎`})]}),(0,h.jsxs)(`span`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`},children:[e.data_paths.length,` path`,e.data_paths.length===1?``:`s`]}),(0,h.jsx)(`span`,{style:{fontSize:`9px`,color:`var(--text-tertiary)`,transition:`transform var(--transition-fast)`,transform:t?`rotate(180deg)`:`rotate(0deg)`,display:`inline-block`},children:`▾`}),(0,h.jsx)(`button`,{onClick:e=>{e.stopPropagation(),B()},disabled:P,"aria-label":M?`Confirm delete of profile ${e.name}`:`Delete profile ${e.name}`,title:M?`Click again to confirm`:`Delete profile`,style:{background:M?p:`none`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:P?`not-allowed`:`pointer`,color:M?`var(--text-on-accent)`:`var(--text-tertiary)`,fontSize:M?`10px`:`16px`,fontWeight:M?600:400,padding:M?`3px 7px`:`2px 4px`,lineHeight:1.4,transition:`background var(--transition-fast), color var(--transition-fast)`},children:P?`…`:M?`Confirm?`:`×`})]}),b&&(0,h.jsx)(`div`,{style:{...y,padding:`0 10px 8px`,marginTop:0},children:b}),I&&(0,h.jsx)(`div`,{style:{...y,padding:`0 10px 8px`,marginTop:0},children:I}),t&&(0,h.jsxs)(`div`,{style:{padding:`0 10px 10px`,borderTop:`1px solid var(--border-subtle)`},children:[(0,h.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,margin:`8px 0`},children:_.map(t=>(0,h.jsx)(`button`,{onClick:()=>U(t),disabled:O,style:{width:`22px`,height:`22px`,borderRadius:`50%`,background:t,border:e.color===t?`2px solid var(--text-primary)`:`2px solid transparent`,cursor:O?`not-allowed`:`pointer`,padding:0,transition:`border-color var(--transition-fast), transform var(--transition-fast)`,transform:e.color===t?`scale(1.15)`:`scale(1)`}},t))}),(0,h.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,color:`var(--text-tertiary)`,textTransform:`uppercase`,letterSpacing:`0.04em`,margin:`8px 0 6px`},children:`Data paths`}),e.data_paths.length===0&&(0,h.jsx)(`div`,{style:{fontSize:`12px`,color:`var(--text-tertiary)`,padding:`4px 0 8px`},children:`No paths yet — sessions for this profile won't show until you add one.`}),e.data_paths.map((e,t)=>(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,marginBottom:`4px`},children:[(0,h.jsx)(`code`,{style:{flex:1,fontSize:`12px`,color:`var(--text-secondary)`,background:`var(--bg-sidebar)`,padding:`4px 8px`,borderRadius:`var(--radius-sm)`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e}),(0,h.jsx)(`button`,{onClick:()=>G(t),disabled:E!==null,"aria-label":`Remove ${e}`,style:{background:`none`,border:`none`,cursor:E===null?`pointer`:`not-allowed`,color:`var(--text-tertiary)`,fontSize:`14px`,padding:`2px 4px`},children:E===t?`…`:`×`})]},e)),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:`6px`,marginTop:`6px`},children:[(0,h.jsx)(`input`,{ref:z,value:S,onChange:e=>C(e.target.value),onKeyDown:e=>{e.key===`Enter`&&W()},disabled:w,placeholder:`~/.claude`,style:{flex:1,padding:`4px 8px`,fontSize:`12px`,background:`var(--bg-sidebar)`,color:`var(--text-primary)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,fontFamily:`var(--font-ui)`,outline:`none`}}),(0,h.jsx)(`button`,{onClick:W,disabled:!S.trim()||w,style:{padding:`4px 10px`,fontSize:`12px`,background:S.trim()?`var(--accent-orange)`:`var(--bg-tool-block)`,color:S.trim()?`var(--text-on-accent)`:`var(--text-tertiary)`,border:`1px solid`,borderColor:S.trim()?`var(--accent-orange)`:`var(--border-subtle)`,borderRadius:`var(--radius-sm)`,cursor:S.trim()&&!w?`pointer`:`default`,fontFamily:`var(--font-ui)`},children:w?`…`:`Add`})]}),A&&(0,h.jsx)(`div`,{style:y,children:A})]})]})}function x({config:e,onConfigChange:t}){let[n,r]=(0,m.useState)(``),[i,s]=(0,m.useState)(!1),[c,u]=(0,m.useState)(null),[f,p]=(0,m.useState)(null),g=o(e=>e.setProfiles),_=o(e=>e.setActiveProfileId),v=async()=>{let e=await a.getProfiles();g(e.profiles),_(e.active_profile_id)},x=async()=>{let i=n.trim();if(i){s(!0),u(null);try{let n=await a.createProfile(i);r(``),t({...e,profiles:[...e.profiles,n]}),await v(),p(n.id)}catch(e){u(e instanceof Error?e.message:`Failed to create profile`)}finally{s(!1)}}},S=async n=>{await a.deleteProfile(n),t({...e,profiles:e.profiles.filter(e=>e.id!==n)}),await v(),p(e=>e===n?null:e)},C=async(n,r)=>{await a.updateProfile(n,{name:r});let i={...e,profiles:e.profiles.map(e=>e.id===n?{...e,name:r}:e)};t(i),g(i.profiles)},w=async(n,r)=>{await a.updateProfile(n,{color:r});let i={...e,profiles:e.profiles.map(e=>e.id===n?{...e,color:r}:e)};t(i),g(i.profiles)},T=async(n,r)=>{let i=e.profiles.find(e=>e.id===n);if(!i)return;let o=[...i.data_paths,r];await a.updateProfile(n,{data_paths:o});let s={...e,profiles:e.profiles.map(e=>e.id===n?{...e,data_paths:o}:e)};t(s),g(s.profiles)},E=async(n,r)=>{let i=e.profiles.find(e=>e.id===n);if(!i)return;let o=i.data_paths.filter((e,t)=>t!==r);await a.updateProfile(n,{data_paths:o});let s={...e,profiles:e.profiles.map(e=>e.id===n?{...e,data_paths:o}:e)};t(s),g(s.profiles)};return(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:l,children:`Profiles`}),e.profiles.length===0&&(0,h.jsx)(`div`,{style:{...d,marginTop:0,marginBottom:`12px`},children:`Split sessions into separate scopes (e.g. personal vs. work) by data path. Without a profile, every configured path is shown together.`}),e.profiles.length>0&&(0,h.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`,marginBottom:`12px`},children:e.profiles.map(e=>(0,h.jsx)(b,{profile:e,isExpanded:f===e.id,onToggleExpand:()=>p(f===e.id?null:e.id),onDelete:S,onRename:C,onColorChange:w,onAddPath:T,onRemovePath:E},e.id))}),(0,h.jsxs)(`div`,{style:{display:`flex`,gap:`8px`},children:[(0,h.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Enter`&&x()},disabled:i,placeholder:`New profile name…`,style:{flex:1,padding:`6px 10px`,fontSize:`13px`,background:`var(--bg-tool-block)`,color:`var(--text-primary)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,fontFamily:`var(--font-ui)`,outline:`none`}}),(0,h.jsx)(`button`,{onClick:x,disabled:!n.trim()||i,style:{padding:`6px 14px`,fontSize:`13px`,background:n.trim()?`var(--accent-orange)`:`var(--bg-tool-block)`,color:n.trim()?`var(--text-on-accent)`:`var(--text-tertiary)`,border:`1px solid`,borderColor:n.trim()?`var(--accent-orange)`:`var(--border-subtle)`,borderRadius:`var(--radius-sm)`,cursor:n.trim()&&!i?`pointer`:`default`,fontFamily:`var(--font-ui)`},children:i?`…`:`Add`})]}),c&&(0,h.jsx)(`div`,{style:y,children:c})]})}function S(){let e=o(e=>e.sessionSortOrder),t=o(e=>e.setSessionSortOrder);return(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:l,children:`Session order`}),(0,h.jsx)(`div`,{style:{display:`flex`,gap:`8px`},children:[[`recent`,`Most recent`],[`oldest`,`Oldest first`],[`alpha`,`Project A–Z`]].map(([n,r])=>(0,h.jsx)(`button`,{onClick:()=>t(n),style:{padding:`6px 14px`,fontSize:`13px`,background:e===n?`var(--accent-orange)`:`var(--bg-tool-block)`,color:e===n?`var(--text-on-accent)`:`var(--text-secondary)`,border:`1px solid`,borderColor:e===n?`var(--accent-orange)`:`var(--border-subtle)`,borderRadius:`var(--radius-sm)`,cursor:`pointer`,fontFamily:`var(--font-ui)`,transition:`all var(--transition-fast)`,whiteSpace:`nowrap`},children:r},n))})]})}function C({config:e,onChange:t}){let n=e.claude_recap_enabled,r=e.claude_recap_idle_minutes;return(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:l,children:`Auto-recap`}),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`},children:[(0,h.jsx)(u,{label:`Enable auto-recap`,checked:n,onChange:n=>t({...e,claude_recap_enabled:n})}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`,opacity:n?1:.5},children:[(0,h.jsx)(`label`,{style:{fontSize:`13px`,color:`var(--text-secondary)`,minWidth:`100px`},children:`Idle minutes`}),(0,h.jsx)(`input`,{type:`number`,min:1,max:60,value:r,disabled:!n,onChange:n=>{let r=parseInt(n.target.value,10);r>=1&&r<=60&&t({...e,claude_recap_idle_minutes:r})},style:{width:`80px`,padding:`5px 8px`,fontSize:`13px`,background:`var(--bg-input)`,border:`1px solid var(--border-default)`,borderRadius:`var(--radius-sm)`,color:`var(--text-primary)`,fontFamily:`var(--font-mono)`}})]}),(0,h.jsx)(`div`,{style:d,children:`Generate a short Haiku-backed summary when you return to a session after being away. Recaps are stored in clau-decode only — they never modify your conversation file.`})]})]})}function w(){let[e,t]=(0,m.useState)(`idle`);return(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`6px`,marginTop:`2px`},children:[(0,h.jsx)(`button`,{onClick:async()=>{t(`scanning`);try{await a.refresh()}catch{}t(`done`),setTimeout(()=>t(`idle`),2e3)},disabled:e===`scanning`,style:{alignSelf:`flex-start`,padding:`6px 14px`,fontSize:`13px`,background:`var(--bg-tool-block)`,color:e===`done`?`var(--accent-orange)`:`var(--text-secondary)`,border:`1px solid`,borderColor:e===`done`?`var(--accent-orange)`:`var(--border-subtle)`,borderRadius:`var(--radius-sm)`,cursor:e===`scanning`?`default`:`pointer`,fontFamily:`var(--font-ui)`,transition:`all var(--transition-fast)`},children:e===`scanning`?`Scanning…`:e===`done`?`Done ✓`:`Force rescan`}),(0,h.jsx)(`div`,{style:d,children:`Re-reads every configured data path for new or changed sessions. Use this if you edited a session JSONL outside clau-decode, or if a session you expect to see isn't appearing.`})]})}var T=[{value:`default`,label:`default`,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`em`,{children:`Recommended.`}),` Claude prompts appear in Native View when needed.`]})},{value:`dontAsk`,label:`dontAsk`,description:(0,h.jsx)(h.Fragment,{children:`Run without prompting for permission.`})},{value:`acceptEdits`,label:`acceptEdits`,description:(0,h.jsx)(h.Fragment,{children:`Auto-accept file edits; prompt for other tools.`})},{value:`auto`,label:`auto`,description:(0,h.jsx)(h.Fragment,{children:`Heuristic auto-approval.`})},{value:`bypassPermissions`,label:`bypassPermissions`,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`em`,{children:`Dangerous.`}),` Skip all checks.`]})},{value:`plan`,label:`plan`,description:(0,h.jsx)(h.Fragment,{children:`Plan only, do not execute tools.`})}];function E({config:e,onChange:t}){let n=e.claude_default_permission_mode??`default`,r=n===`bypassPermissions`,i=T.find(e=>e.value===n);return(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`div`,{style:l,children:[`Default permission mode`,r&&(0,h.jsx)(`span`,{style:{marginLeft:`8px`,fontSize:`10px`,fontWeight:600,letterSpacing:`0.04em`,color:`#c47a7a`,background:`color-mix(in srgb, #c47a7a 16%, transparent)`,border:`1px solid color-mix(in srgb, #c47a7a 40%, transparent)`,borderRadius:`var(--radius-pill)`,padding:`1px 7px`,textTransform:`uppercase`},children:`Dangerous`})]}),(0,h.jsx)(`select`,{value:n,onChange:n=>t({...e,claude_default_permission_mode:n.target.value}),style:{width:`100%`,padding:`8px 10px`,fontSize:`13px`,fontFamily:`var(--font-mono)`,color:`var(--text-primary)`,background:`var(--bg-input)`,border:`1px solid var(--border-default)`,borderRadius:`var(--radius-sm)`,cursor:`pointer`},children:T.map(e=>(0,h.jsx)(`option`,{value:e.value,children:e.label},e.value))}),i&&(0,h.jsx)(`div`,{style:d,children:i.description})]})}function D({value:e,onChange:t}){let n=c.filter(e=>e.bundled===!1);return(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{role:`listbox`,"aria-label":`PTY font`,style:{maxHeight:`240px`,overflowY:`auto`,border:`1px solid var(--border-default)`,borderRadius:`var(--radius-sm)`,background:`var(--bg-input)`},children:c.map(n=>{let r=n.value===e;return(0,h.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":r,"aria-label":n.label,onClick:()=>t(n.value),style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:`10px`,width:`100%`,padding:`8px 11px`,border:`none`,borderBottom:`1px solid var(--border-subtle)`,textAlign:`left`,cursor:`pointer`,background:r?`var(--accent-orange-subtle)`:`transparent`,color:`var(--text-primary)`},children:[(0,h.jsx)(`span`,{style:{fontFamily:n.stack,fontSize:`13px`,lineHeight:1.3},children:n.label}),n.bundled===!1&&(0,h.jsx)(`span`,{style:{flexShrink:0,fontSize:`10px`,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`var(--text-tertiary)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,padding:`1px 6px`,fontFamily:`var(--font-ui)`},children:`install`})]},n.value)})}),(0,h.jsxs)(`div`,{style:{fontSize:`12px`,color:`var(--text-tertiary)`,marginTop:`8px`,lineHeight:1.5},children:[`Each name is shown in its own font. Bundled fonts render everywhere.`,n.length>0&&(0,h.jsxs)(h.Fragment,{children:[` `,`Fonts tagged `,(0,h.jsx)(`strong`,{children:`install`}),` aren't shipped (their licenses don't allow redistribution) — install them on your Mac to use them:`,` `,n.map((e,t)=>(0,h.jsxs)(`span`,{children:[t>0?` · `:``,(0,h.jsx)(`a`,{href:e.acquireUrl,target:`_blank`,rel:`noreferrer`,style:{color:`var(--text-accent)`},children:e.label})]},e.value)),`.`]}),` `,`To add any other font, install it system-wide (it renders if its name matches) or, for local builds, drop a `,(0,h.jsx)(`code`,{style:{fontFamily:`var(--font-mono)`},children:`.woff2`}),` into`,` `,(0,h.jsx)(`code`,{style:{fontFamily:`var(--font-mono)`},children:`frontend/src/assets/fonts/`}),` with an`,` `,(0,h.jsx)(`code`,{style:{fontFamily:`var(--font-mono)`},children:`@font-face`}),`.`]})]})}var O=20,k=400,A=10,j=[{id:`general`,label:`General`},{id:`appearance`,label:`Appearance`},{id:`chat`,label:`Chat`},{id:`terminal`,label:`Terminal`},{id:`server`,label:`Server`},{id:`about`,label:`About`}],M={darwin:`macOS`,linux:`Linux`,win32:`Windows`};function N(){let e=o(e=>e.closeSettings),t=o(e=>e.showParentFolder),n=o(e=>e.setShowParentFolder),c=o(e=>e.setShowProviderTag),[d,p]=(0,m.useState)(i),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(`general`),[T,M]=(0,m.useState)(null),[N,P]=(0,m.useState)(null);(0,m.useEffect)(()=>{d||r().then(p).catch(e=>{v(e instanceof Error?e.message:`Failed to load config`)})},[d]),(0,m.useEffect)(()=>{y!==`about`||T||(a.getHostInfo().then(M).catch(()=>{}),a.getUpdateCheck().then(P).catch(()=>{}))},[y,T]);function F(e){p(e),a.updateConfig(e).catch(()=>{})}return(0,m.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]),(0,h.jsx)(`div`,{role:`dialog`,"aria-label":`Settings`,style:{position:`fixed`,inset:0,zIndex:1e3,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`16px`,pointerEvents:`none`},children:(0,h.jsxs)(`div`,{style:{pointerEvents:`auto`,width:`100%`,maxWidth:`760px`,height:`min(600px, calc(100vh - 96px))`,background:`var(--bg-modal)`,borderRadius:`var(--radius-lg)`,border:`1px solid var(--border-default)`,boxShadow:`var(--shadow-lg)`,display:`flex`,flexDirection:`column`,overflow:`hidden`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`14px 16px`,borderBottom:`1px solid var(--border-subtle)`,flexShrink:0},children:[(0,h.jsx)(`h2`,{style:{margin:0,fontSize:`15px`,fontWeight:600,color:`var(--text-primary)`,letterSpacing:`-0.005em`},children:`Settings`}),(0,h.jsx)(`button`,{onClick:e,"aria-label":`Close settings`,style:{background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,fontSize:`20px`,lineHeight:1,padding:`4px`,borderRadius:`var(--radius-sm)`,transition:`color var(--transition-fast)`},onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-primary)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`},children:`×`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,flex:1,minHeight:0},children:[(0,h.jsx)(`nav`,{"aria-label":`Settings categories`,style:{flexShrink:0,width:`168px`,borderRight:`1px solid var(--border-subtle)`,padding:`8px`,display:`flex`,flexDirection:`column`,gap:`2px`,background:`var(--bg-subtle)`,overflowY:`auto`},children:j.map(e=>{let t=e.id===y;return(0,h.jsx)(`button`,{type:`button`,"aria-pressed":t,onClick:()=>b(e.id),style:{textAlign:`left`,padding:`7px 10px`,fontSize:`13px`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:`pointer`,fontFamily:`var(--font-ui)`,background:t?`var(--bg-base)`:`transparent`,color:t?`var(--text-primary)`:`var(--text-secondary)`,fontWeight:t?600:400},children:e.label},e.id)})}),(0,h.jsxs)(s,{style:{flex:1,padding:`18px 22px`},children:[_&&(0,h.jsx)(`div`,{style:{padding:`12px`,background:`var(--tool-error-bg)`,border:`1px solid var(--tool-error-border)`,borderRadius:`var(--radius-sm)`,fontSize:`13px`,color:`var(--tool-error-border)`,marginBottom:`16px`},children:_}),!d&&!_&&(0,h.jsx)(`div`,{style:{textAlign:`center`,padding:`24px`,fontSize:`13px`,color:`var(--text-tertiary)`},children:`Loading…`}),d&&(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`22px`},children:[y===`general`&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(x,{config:d,onConfigChange:p}),d.profiles.length===0&&(0,h.jsx)(g,{config:d,onConfigChange:p}),(0,h.jsx)(w,{}),(0,h.jsx)(u,{label:`Open browser on startup`,checked:d.auto_open_browser,onChange:e=>F({...d,auto_open_browser:e})})]}),y===`appearance`&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:l,children:`Theme`}),(0,h.jsx)(`div`,{style:{display:`flex`,gap:`8px`},children:[`light`,`dark`,`system`].map(e=>(0,h.jsx)(`button`,{onClick:()=>{let t={...d,theme:e};p(t),a.updateConfig(t).catch(()=>{});let n=window.__clauDecodeApplyTheme;n&&n(e)},style:f(d.theme===e),children:e},e))})]}),(0,h.jsx)(S,{}),(0,h.jsx)(u,{label:`Show parent folder in project names`,checked:t,onChange:n}),(0,h.jsx)(u,{label:`Show provider tag on chats`,hint:`Adds a small label (e.g. GPT) to non-Claude sessions in the sidebar`,checked:d?.show_provider_tag??!1,onChange:e=>{c(e),d&&F({...d,show_provider_tag:e})}})]}),y===`chat`&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u,{label:`Allow editing & deleting messages`,hint:`Creates a backup before every write`,checked:d.edit_enabled,onChange:e=>F({...d,edit_enabled:e})}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:{fontSize:`13px`,color:`var(--text-primary)`,marginBottom:`6px`},children:`Send shortcut`}),(0,h.jsx)(`div`,{style:{display:`flex`,gap:`8px`,flexWrap:`wrap`},children:[{value:`enter`,label:`Enter`},{value:`modEnter`,label:`Cmd/Ctrl+Enter`}].map(e=>(0,h.jsx)(`button`,{type:`button`,onClick:()=>F({...d,chat_send_shortcut:e.value}),style:{...f((d.chat_send_shortcut??`enter`)===e.value),textTransform:`none`},children:e.label},e.value))}),(0,h.jsx)(`div`,{style:{fontSize:`12px`,color:`var(--text-tertiary)`,marginTop:`6px`,lineHeight:1.4},children:`Applies to Decoded View. Native View keeps terminal keyboard behavior.`})]}),(0,h.jsx)(E,{config:d,onChange:F}),(0,h.jsx)(C,{config:d,onChange:F})]}),y===`terminal`&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:{fontSize:`13px`,color:`var(--text-primary)`,marginBottom:`6px`},children:`PTY font`}),(0,h.jsx)(D,{value:d.native_pty_font_family??`monaspace-argon`,onChange:e=>F({...d,native_pty_font_family:e})})]}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{style:{fontSize:`13px`,color:`var(--text-primary)`,marginBottom:`6px`},children:`Terminal width`}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,h.jsx)(`button`,{type:`button`,"aria-label":`Narrower terminal`,disabled:d.native_pty_cols<=O,onClick:()=>F({...d,native_pty_cols:Math.max(O,d.native_pty_cols-A)}),style:{...f(!1),width:`34px`,padding:`6px 0`,textTransform:`none`,opacity:d.native_pty_cols<=O?.45:1},children:`−`}),(0,h.jsxs)(`div`,{"aria-label":`Terminal width columns`,style:{minWidth:`86px`,textAlign:`center`,fontSize:`13px`,color:`var(--text-secondary)`,fontFamily:`var(--font-mono)`},children:[d.native_pty_cols,` cols`]}),(0,h.jsx)(`button`,{type:`button`,"aria-label":`Wider terminal`,disabled:d.native_pty_cols>=k,onClick:()=>F({...d,native_pty_cols:Math.min(k,d.native_pty_cols+A)}),style:{...f(!1),width:`34px`,padding:`6px 0`,textTransform:`none`,opacity:d.native_pty_cols>=k?.45:1},children:`+`})]}),(0,h.jsx)(`div`,{style:{fontSize:`12px`,color:`var(--text-tertiary)`,marginTop:`6px`,lineHeight:1.4},children:`Column width Claude wraps to in Native View. Applies to new sessions; the view renders at this width and never reflows.`})]})]}),y===`server`&&(0,h.jsxs)(`div`,{children:[(0,h.jsxs)(`div`,{style:l,children:[`Server`,(0,h.jsx)(`span`,{style:{fontSize:`10px`,color:`var(--text-tertiary)`,fontWeight:400,marginLeft:`6px`,textTransform:`none`,letterSpacing:0},children:`requires restart`})]}),(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`},children:[(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`},children:[(0,h.jsx)(`label`,{style:{fontSize:`13px`,color:`var(--text-secondary)`,minWidth:`80px`},children:`Port`}),(0,h.jsx)(`input`,{type:`number`,min:1024,max:65535,value:d.port,onChange:e=>{let t=parseInt(e.target.value,10);t>=1024&&t<=65535&&F({...d,port:t})},style:{width:`90px`,padding:`5px 8px`,fontSize:`13px`,background:`var(--bg-input)`,border:`1px solid var(--border-default)`,borderRadius:`var(--radius-sm)`,color:`var(--text-primary)`,fontFamily:`var(--font-mono)`}})]}),(0,h.jsx)(u,{label:`Expose on local network`,hint:`Binds to 0.0.0.0 — anyone on your network can view your data`,checked:d.host===`0.0.0.0`,onChange:e=>F({...d,host:e?`0.0.0.0`:`127.0.0.1`}),danger:d.host===`0.0.0.0`})]})]}),y===`about`&&(0,h.jsx)(I,{hostInfo:T,updateCheck:N})]})]})]})]})})}var P=`https://github.com/Comradery64/Clau-Decode`;function F({href:e,children:t}){return(0,h.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,style:{color:`var(--text-secondary)`,textDecoration:`none`,transition:`color var(--transition-fast)`},onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-accent)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-secondary)`},children:t})}function I({hostInfo:e,updateCheck:t}){let n=e?M[e.platform]??e.platform:null,r=(0,h.jsx)(`span`,{style:{color:`var(--border-default)`},children:`·`});return(0,h.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,textAlign:`center`,padding:`20px 16px 8px`},children:[(0,h.jsx)(`img`,{src:`/app-icon.png`,alt:`Clau-Decode`,width:72,height:72,style:{display:`block`,marginBottom:`14px`}}),(0,h.jsx)(`div`,{style:{fontSize:`26px`,fontWeight:600,letterSpacing:`-0.02em`,color:`var(--text-primary)`,lineHeight:1.1},children:`Clau-Decode`}),(0,h.jsxs)(`div`,{style:{fontSize:`13px`,color:`var(--text-secondary)`,marginTop:`8px`},children:[`Version `,e?.version??`…`]}),n&&(0,h.jsx)(`div`,{style:{fontSize:`12px`,color:`var(--text-tertiary)`,marginTop:`2px`},children:n}),t?.update_available&&(0,h.jsxs)(`a`,{href:`${P}/blob/main/CHANGELOG.md`,target:`_blank`,rel:`noreferrer`,style:{display:`block`,marginTop:`12px`,padding:`6px 12px`,borderRadius:`6px`,background:`var(--accent-orange-subtle)`,color:`var(--accent-orange)`,fontSize:`12px`,fontWeight:500,textDecoration:`none`},children:[`v`,t.latest_version,` available — run`,` `,(0,h.jsx)(`code`,{style:{fontFamily:`var(--font-mono)`},children:`pipx install --force clau-decode`}),` to update`]}),(0,h.jsx)(`p`,{style:{fontSize:`12.5px`,color:`var(--text-tertiary)`,lineHeight:1.55,maxWidth:`340px`,margin:`18px 0 0`},children:`Browse, search, and analyze your AI coding assistant chat history — entirely local, entirely private.`}),(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`10px`,marginTop:`16px`,fontSize:`12px`},children:[(0,h.jsx)(F,{href:P,children:`GitHub`}),r,(0,h.jsx)(F,{href:`${P}/blob/main/CHANGELOG.md`,children:`Changelog`}),r,(0,h.jsx)(F,{href:`${P}/blob/main/LICENSE`,children:`License`})]}),(0,h.jsx)(`div`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,marginTop:`20px`,letterSpacing:`0.01em`},children:`FSL-1.1-Apache-2.0`})]})}export{N as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./react-Bi_azaFt.js";import{h as t}from"./index-DfKltZ6z.js";var n=e(),r=[{keys:`⌘K`,action:`Open search`},{keys:`⇧⌘\\`,action:`Cycle view: Decoded → Native → Split`},{keys:`⇧⌘,`,action:`Open settings`},{keys:`⇧⌘O`,action:`Start new task (new Claude session)`},{keys:`⌘O`,action:`Expand / collapse all tool blocks`},{keys:`⌘E`,action:`Toggle full tool results`},{keys:`⇧⌘E`,action:`Toggle file explorer`},{keys:`⌘I`,action:`Toggle chat panel`},{keys:`⌘B`,action:`Toggle sidebar`},{keys:`Ctrl+E`,action:`Cursor to end of line (chat)`},{keys:`Ctrl+K`,action:`Delete to end of line (chat)`},{keys:`⌘S`,action:`Stash draft / save file edit`},{keys:`⌘/`,action:`Show / hide this shortcuts menu`},{keys:`Esc`,action:`Close dialog / search / chat`}];function i(){let e=t(e=>e.closeShortcuts);return(0,n.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Keyboard Shortcuts`,onClick:t=>{t.target===t.currentTarget&&e()},style:{position:`fixed`,inset:0,zIndex:1e3,background:`var(--bg-modal-overlay)`,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`16px`},children:(0,n.jsxs)(`div`,{style:{width:`100%`,maxWidth:`400px`,background:`var(--bg-modal)`,borderRadius:`var(--radius-lg)`,boxShadow:`var(--shadow-lg)`,overflow:`hidden`},onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`20px 24px 16px`,borderBottom:`1px solid var(--border-subtle)`},children:[(0,n.jsx)(`h2`,{style:{margin:0,fontSize:`16px`,fontWeight:600,color:`var(--text-primary)`},children:`Keyboard Shortcuts`}),(0,n.jsx)(`button`,{onClick:e,"aria-label":`Close keyboard shortcuts`,style:{background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,fontSize:`20px`,lineHeight:1,padding:`4px`},children:`×`})]}),(0,n.jsx)(`div`,{style:{padding:`16px 24px 20px`},children:r.map(e=>(0,n.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`8px 0`,borderBottom:`1px solid var(--border-subtle)`},children:[(0,n.jsx)(`span`,{style:{fontSize:`13px`,color:`var(--text-secondary)`},children:e.action}),(0,n.jsx)(`kbd`,{style:{fontSize:`12px`,fontFamily:`var(--font-ui)`,padding:`2px 8px`,background:`var(--bg-tool-block)`,border:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,color:`var(--text-primary)`},children:e.keys})]},e.keys))})]})})}export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{i as t,t as n}from"./react-Bi_azaFt.js";import{a as r,o as i,t as a}from"./client-DTSXvAb8.js";import{a as o,f as s,g as c,h as l,i as u,l as d,p as f,s as p}from"./index-DfKltZ6z.js";import{a as m,t as h}from"./ScrollContainer-BT_Dzxah.js";import{a as g,n as _}from"./ui-BcGPjpYn.js";import{t as v}from"./SessionItem-DlyKg80u.js";var y=e(t(),1),b=n();async function x(){try{let e,t,n=l.getState().selectedSessionId;if(n)try{let r=await a.getSession(n);e=r.cwd??void 0,t=r.provider??void 0}catch{}let r={};e&&(r.cwd=e),t&&t!==`claude`&&(r.provider=t);let i=await a.newSession(Object.keys(r).length?r:void 0);return c(`/chat/${i.session_id}`),i.session_id}catch{return null}}function S(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,b.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]})}function C(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,style:{animation:`ntb-spin 0.7s linear infinite`},children:[(0,b.jsx)(`style`,{children:`@keyframes ntb-spin { to { transform: rotate(360deg); } }`}),(0,b.jsx)(`path`,{d:`M12 3 a 9 9 0 0 1 9 9`})]})}var w={background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,padding:`6px`,borderRadius:`var(--radius-sm)`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,transition:`color var(--transition-fast), background var(--transition-fast)`};function T(){let[e,t]=y.useState(!1),n=y.useCallback(async()=>{if(!e){t(!0);try{await x()}finally{t(!1)}}},[e]);return y.useEffect(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&(u()||e.shiftKey&&e.key.toLowerCase()===`o`&&(e.preventDefault(),n()))};return document.addEventListener(`keydown`,e,{capture:!0}),()=>document.removeEventListener(`keydown`,e,{capture:!0})},[n]),(0,b.jsx)(`button`,{onClick:()=>void n(),disabled:e,"aria-label":`New task (Cmd+Shift+O)`,"aria-busy":e,title:`New task — Cmd+Shift+O`,style:{...w,cursor:e?`wait`:`pointer`,opacity:e?.7:1},onMouseEnter:t=>{e||(t.currentTarget.style.background=`var(--bg-sidebar-hover)`,t.currentTarget.style.color=`var(--text-primary)`)},onMouseLeave:e=>{e.currentTarget.style.background=`none`,e.currentTarget.style.color=`var(--text-tertiary)`},children:e?(0,b.jsx)(C,{}):(0,b.jsx)(S,{})})}function E(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`}),(0,b.jsx)(`path`,{d:`M9 3v18`})]})}function ee(){return(0,b.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,b.jsx)(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`})})}function D(){return(0,b.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,b.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`})})}var te={background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,padding:`6px`,borderRadius:`var(--radius-sm)`,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,transition:`color var(--transition-fast), background var(--transition-fast)`};function O({children:e,label:t,onClick:n,active:r,collapsedStyle:i}){return(0,b.jsx)(`button`,{onClick:n,"aria-label":t,title:t,style:{...te,...i?{width:`calc(100% - 12px)`,margin:`1px 6px`,padding:`7px 12px`}:{},color:r?`var(--text-primary)`:`var(--text-tertiary)`},onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`none`},children:e})}function ne({collapsed:e}){let t=l(e=>e.toggleSidebar),n=l(e=>e.sidebarMode),r=l(e=>e.setSidebarMode);return(0,b.jsxs)(`div`,{style:{flexShrink:0,height:`var(--header-height)`,display:`flex`,alignItems:`center`,padding:`0 12px`,overflow:`hidden`},children:[(0,b.jsx)(`button`,{onClick:()=>{c(`/`)},style:{flex:1,minWidth:0,overflow:`hidden`,fontFamily:`var(--font-ui)`,fontSize:`18px`,fontWeight:600,color:`var(--text-primary)`,letterSpacing:`-0.02em`,userSelect:`none`,whiteSpace:`nowrap`,opacity:+!e,transition:`opacity var(--transition-medium)`,background:`none`,border:`none`,cursor:`pointer`,padding:0,textAlign:`left`},children:`Clau-Decode`}),(0,b.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,flexShrink:0,overflow:`hidden`,maxWidth:e?0:80,opacity:+!e,transition:`opacity var(--transition-medium), max-width var(--transition-medium)`,pointerEvents:e?`none`:`auto`},children:[(0,b.jsx)(T,{}),(0,b.jsx)(O,{label:n===`chat`?`File explorer`:`Session list`,onClick:()=>{r(n===`chat`?`folder`:`chat`)},active:n===`folder`,children:n===`chat`?(0,b.jsx)(ee,{}):(0,b.jsx)(D,{})})]}),(0,b.jsx)(O,{label:e?`Expand sidebar`:`Collapse sidebar`,onClick:t,active:e,children:(0,b.jsx)(E,{})})]})}var re=4e3;function ie(e,t={}){let{intervalMs:n=re,fetcher:r=a.getRunnerStatuses}=t,[i,o]=(0,y.useState)(()=>new Map),s=e.join(`␟`),c=(0,y.useRef)(e);c.current=e;let l=(0,y.useRef)(r);return l.current=r,(0,y.useEffect)(()=>{o(t=>{let n=new Map;for(let r of e){let e=t.get(r);e&&n.set(r,e)}return t.size===n.size&&[...t.keys()].every(e=>n.has(e))?t:n})},[s]),(0,y.useEffect)(()=>{if(e.length===0)return;let t=!1,r=async()=>{if(typeof document<`u`&&document.visibilityState===`hidden`)return;let e=c.current;if(e.length===0)return;let n;try{n=await l.current([...e])}catch{return}t||o(e=>{let t=new Map(e),r=!1;for(let[e,i]of Object.entries(n)){if(!c.current.includes(e))continue;let n=t.get(e);(!n||n.busy!==i.busy||n.last_error!==i.last_error||n.permission_mode!==i.permission_mode)&&(t.set(e,i),r=!0)}return r?t:e})};r();let i=setInterval(r,n),a=()=>{document.visibilityState===`visible`&&r()};return typeof document<`u`&&document.addEventListener(`visibilitychange`,a),()=>{t=!0,clearInterval(i),typeof document<`u`&&document.removeEventListener(`visibilitychange`,a)}},[s,n]),i}function ae({project:e,displayName:t,isExpanded:n,onToggle:r,archivedIds:o}){let[s,c]=(0,y.useState)([]),[u,d]=(0,y.useState)(!1),[f,p]=(0,y.useState)(null),m=l(e=>e.selectedSessionId),h=l(e=>e.selectSession),g=l(e=>e.selectProject),_=l(e=>e.sessionSortOrder),x=(0,y.useMemo)(()=>{let e=s.filter(e=>!o.has(e.id));return _===`recent`?e.sort((e,t)=>(t.updated_at??``).localeCompare(e.updated_at??``)):_===`oldest`?e.sort((e,t)=>(e.updated_at??``).localeCompare(t.updated_at??``)):e.sort((e,t)=>(e.title??`Untitled`).localeCompare(t.title??`Untitled`)),e},[s,_,o]);(0,y.useEffect)(()=>{if(!n)return;let t=!1;return d(!0),p(null),a.getProjectSessions(e.id).then(e=>{t||c(e)}).catch(e=>{t||p(e instanceof Error?e.message:`Failed to load sessions`)}).finally(()=>{t||d(!1)}),()=>{t=!0}},[n,e.id]),(0,y.useEffect)(()=>i(`sessions-removed`,e=>{let t=new Set(e);c(e=>e.filter(e=>!t.has(e.id)))}),[]);let S=ie((0,y.useMemo)(()=>n?x.map(e=>e.id):[],[n,x])),C=t=>{g(e.id),h(t)};return(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`button`,{onClick:r,"aria-expanded":n,style:{display:`flex`,alignItems:`center`,gap:`4px`,width:`100%`,padding:`6px 12px 4px 16px`,background:`none`,border:`none`,cursor:`pointer`,textAlign:`left`,color:`var(--text-tertiary)`,fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.06em`,fontFamily:`var(--font-ui)`,transition:`color var(--transition-fast)`,marginTop:`10px`},onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-secondary)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`},children:[(0,b.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:t}),(0,b.jsx)(`span`,{style:{fontSize:`9px`,fontWeight:400,textTransform:`none`,letterSpacing:0,transition:`transform var(--transition-fast)`,transform:n?`rotate(0deg)`:`rotate(-90deg)`,display:`inline-block`},children:`▾`})]}),n&&(0,b.jsxs)(`div`,{children:[u&&(0,b.jsx)(`div`,{style:{padding:`6px 16px 6px 32px`,fontSize:`12px`,color:`var(--text-tertiary)`},children:`Loading…`}),f&&(0,b.jsx)(`div`,{style:{padding:`6px 16px 6px 32px`,fontSize:`12px`,color:`var(--tool-error-border)`},children:f}),!u&&!f&&x.map(e=>(0,b.jsx)(v,{session:e,isActive:m===e.id,onClick:()=>C(e.id),runnerStatus:S.get(e.id)},e.id)),!u&&!f&&s.length===0&&(0,b.jsx)(`div`,{style:{padding:`6px 16px 6px 32px`,fontSize:`12px`,color:`var(--text-tertiary)`},children:`No sessions`})]})]})}var k=new Map,A=50;function j(e){let t=k.get(e);return t!==void 0&&(k.delete(e),k.set(e,t)),t}function M(e,t){k.delete(e),k.set(e,t),k.size>A&&k.delete(k.keys().next().value)}function N(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`path`,{d:`M5 19a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h4l2 2h4a2 2 0 0 1 2 2v1`}),(0,b.jsx)(`path`,{d:`M20.5 12H3.5a1 1 0 0 0-1 1.1l1 8a1 1 0 0 0 1 .9h15a1 1 0 0 0 1-.9l1-8a1 1 0 0 0-1-1.1z`})]})}function oe(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),(0,b.jsx)(`polyline`,{points:`14 2 14 8 20 8`})]})}function P(){return(0,b.jsx)(`svg`,{width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,b.jsx)(`polyline`,{points:`9 18 15 12 9 6`})})}function F(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function se(){let e=l(e=>e.fileExplorerRoot),t=l(e=>e.setViewingFilePath),[n,r]=(0,y.useState)(e),[i,o]=(0,y.useState)(()=>e?j(e)??[]:[]),[s,c]=(0,y.useState)(!1),[u,d]=(0,y.useState)(null),f=(0,y.useRef)(null),p=(0,y.useRef)(null);(0,y.useEffect)(()=>{let e=f.current?.osInstance();e&&(p.current=e.elements().viewport)}),(0,y.useEffect)(()=>{e&&r(e)},[e]),(0,y.useEffect)(()=>{if(!n)return;let e=!1,t=j(n);return t?(o(t),c(!1)):(o([]),c(!0)),d(null),a.listDir(n).then(t=>{e||(M(n,t.entries),o(t.entries))}).catch(t=>{if(e)return;let i=t instanceof Error?t.message:String(t);if(i.includes(`404`)||i.includes(`Not a directory`)){let e=n.split(`/`).slice(0,-1).join(`/`)||`/`;if(e!==n){r(e);return}}d(i)}).finally(()=>{e||c(!1)}),()=>{e=!0}},[n]),(0,y.useEffect)(()=>{p.current&&(p.current.scrollTop=0)},[n]);let g=e=>r(e),_=n?n.split(`/`).filter(Boolean):[],v=_.map((e,t)=>({label:e,path:`/`+_.slice(0,t+1).join(`/`),isLast:t===_.length-1})),x=v.length>3,S=v[0],C=S&&S.label.length>4?S.label.slice(0,4)+`…`:S?.label;return n?(0,b.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,b.jsx)(`div`,{style:{padding:`6px 12px 8px`,flexShrink:0,background:`linear-gradient(to bottom, var(--bg-sidebar) 60%, transparent)`},children:(0,b.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,flexWrap:`nowrap`,columnGap:`2px`,fontSize:`12px`,fontFamily:`var(--font-ui)`,color:`var(--text-tertiary)`,overflow:`hidden`,whiteSpace:`nowrap`},children:x&&S&&C?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(I,{label:C,path:S.path,onClick:g,title:C===S.label?void 0:S.label}),(0,b.jsx)(`span`,{style:{opacity:.4,padding:`0 2px`},children:`/`}),(0,b.jsx)(`span`,{title:v.slice(1,-2).map(e=>e.label).join(` / `),style:{opacity:.5,cursor:`help`},children:`…`}),(0,b.jsx)(`span`,{style:{opacity:.4,padding:`0 2px`},children:`/`}),v.slice(-2).map((e,t)=>(0,b.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:[t>0&&(0,b.jsx)(`span`,{style:{opacity:.4,padding:`0 2px`},children:`/`}),(0,b.jsx)(L,{bc:e,onClick:g})]},e.path))]}):v.map((e,t)=>(0,b.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:[t>0&&(0,b.jsx)(`span`,{style:{opacity:.4,padding:`0 2px`},children:`/`}),(0,b.jsx)(L,{bc:e,onClick:g})]},e.path))})}),(0,b.jsxs)(m,{ref:f,options:h,style:{flex:1,padding:`4px 0`},children:[s&&(0,b.jsx)(`div`,{style:{padding:`20px`,fontSize:`13px`,color:`var(--text-tertiary)`,textAlign:`center`},children:`Loading…`}),u&&(0,b.jsx)(`div`,{style:{padding:`20px`,fontSize:`13px`,color:`var(--tool-error-border)`,textAlign:`center`},children:u}),!s&&!u&&i.map(e=>(0,b.jsx)(ce,{entry:e,currentPath:n,onNavigate:g,onViewFile:t},e.name)),!s&&!u&&i.length===0&&(0,b.jsx)(`div`,{style:{padding:`24px 20px`,fontSize:`13px`,color:`var(--text-tertiary)`,textAlign:`center`},children:`Empty directory.`})]})]}):(0,b.jsx)(`div`,{style:{padding:`32px 20px`,fontSize:`13px`,color:`var(--text-tertiary)`,textAlign:`center`,lineHeight:1.6},children:`Select a session first, then switch to folder view to browse its directory.`})}function I({label:e,path:t,onClick:n,title:r}){return(0,b.jsx)(`button`,{onClick:()=>n(t),title:r??t,style:{background:`none`,border:`none`,cursor:`pointer`,color:`var(--text-tertiary)`,fontSize:`12px`,fontFamily:`var(--font-ui)`,padding:`1px 3px`,borderRadius:`3px`,transition:`color var(--transition-fast), background var(--transition-fast)`},onMouseEnter:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.color=`var(--text-tertiary)`,e.currentTarget.style.background=`none`},children:e})}function L({bc:e,onClick:t}){return e.isLast?(0,b.jsx)(`span`,{style:{color:`var(--text-secondary)`,fontWeight:500},children:e.label}):(0,b.jsx)(I,{label:e.label,path:e.path,onClick:t})}function ce({entry:e,currentPath:t,onNavigate:n,onViewFile:r}){let[i,a]=(0,y.useState)(!1);return(0,b.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>{e.type===`dir`?n(`${t}/${e.name}`):r(`${t}/${e.name}`)},onKeyDown:i=>{(i.key===`Enter`||i.key===` `)&&(e.type===`dir`?n(`${t}/${e.name}`):r(`${t}/${e.name}`))},onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),style:{display:`flex`,alignItems:`center`,gap:`10px`,padding:`7px 12px`,cursor:`pointer`,background:i?`var(--bg-sidebar-hover)`:`transparent`,borderRadius:`var(--radius-sm)`,margin:`1px 6px`,transition:`background var(--transition-fast)`,userSelect:`none`,outline:`none`},children:[(0,b.jsx)(`span`,{style:{flexShrink:0,display:`flex`,color:`var(--text-tertiary)`},children:e.type===`dir`?(0,b.jsx)(N,{}):(0,b.jsx)(oe,{})}),(0,b.jsx)(`span`,{style:{flex:1,fontSize:`15px`,color:`var(--text-primary)`,fontFamily:`var(--font-ui)`,fontWeight:e.type===`dir`?500:400,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`},children:e.name}),e.type===`dir`&&(0,b.jsx)(`span`,{style:{flexShrink:0,color:`var(--text-tertiary)`,display:`flex`,marginLeft:`4px`},children:(0,b.jsx)(P,{})}),e.type===`file`&&e.size!==null&&(0,b.jsx)(`span`,{style:{flexShrink:0,fontSize:`11px`,color:`var(--text-tertiary)`,fontFamily:`var(--font-ui)`,marginLeft:`6px`},children:F(e.size)})]})}function le(){if(typeof window>`u`)return _.DEFAULT_WIDTH;let e=p(o.SIDEBAR_WIDTH),t=e?Number(e):NaN;return Number.isFinite(t)?Math.max(_.MIN_WIDTH,t):_.DEFAULT_WIDTH}function ue(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,b.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]})}function de(){return(0,b.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,b.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`})})}function fe(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,b.jsx)(`path`,{d:`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z`})]})}function R(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,b.jsx)(`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`}),(0,b.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12.01`,y2:`17`})]})}function z(){return(0,b.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`}),(0,b.jsx)(`line`,{x1:`6`,y1:`8`,x2:`6.01`,y2:`8`}),(0,b.jsx)(`line`,{x1:`10`,y1:`8`,x2:`10.01`,y2:`8`}),(0,b.jsx)(`line`,{x1:`14`,y1:`8`,x2:`14.01`,y2:`8`}),(0,b.jsx)(`line`,{x1:`18`,y1:`8`,x2:`18.01`,y2:`8`}),(0,b.jsx)(`line`,{x1:`8`,y1:`12`,x2:`8.01`,y2:`12`}),(0,b.jsx)(`line`,{x1:`12`,y1:`12`,x2:`12.01`,y2:`12`}),(0,b.jsx)(`line`,{x1:`16`,y1:`12`,x2:`16.01`,y2:`12`}),(0,b.jsx)(`line`,{x1:`7`,y1:`16`,x2:`17`,y2:`16`})]})}function pe({label:e,onSelect:t,selectionMode:n}){let[r,i]=(0,y.useState)(!1);return(0,b.jsxs)(`div`,{onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),style:{display:`flex`,alignItems:`center`,width:`100%`,padding:`6px 18px 4px`,fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.06em`,color:`var(--text-tertiary)`,fontFamily:`var(--font-ui)`,gap:`4px`,minHeight:`22px`},children:[(0,b.jsx)(`span`,{style:{flex:1,textAlign:`left`},children:e}),!n&&(0,b.jsxs)(`button`,{type:`button`,onClick:t,"aria-label":`Select sessions`,style:{display:`flex`,alignItems:`center`,gap:`4px`,background:`none`,border:`none`,cursor:`pointer`,padding:`2px 4px`,margin:`-2px -4px -2px 0`,borderRadius:`var(--radius-sm)`,color:r?`var(--accent-orange)`:`var(--text-tertiary)`,fontFamily:`var(--font-ui)`,fontSize:`10px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.06em`,opacity:+!!r,pointerEvents:r?`auto`:`none`,transition:`opacity var(--transition-fast), color var(--transition-fast)`},children:[(0,b.jsxs)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`rect`,{x:`3`,y:`5`,width:`4`,height:`4`,rx:`1`}),(0,b.jsx)(`line`,{x1:`10`,y1:`7`,x2:`21`,y2:`7`}),(0,b.jsx)(`rect`,{x:`3`,y:`13`,width:`4`,height:`4`,rx:`1`}),(0,b.jsx)(`line`,{x1:`10`,y1:`15`,x2:`21`,y2:`15`})]}),`Select`]})]})}function me({selectedCount:e,onSelectAll:t,onArchive:n,onDelete:r,onCancel:i}){let a=e===0;return(0,b.jsxs)(`div`,{style:{padding:`8px 10px`,background:`var(--bg-sidebar-active)`,borderBottom:`1px solid var(--border-subtle)`,borderRadius:`var(--radius-sm)`,margin:`0 6px 4px`,display:`flex`,flexDirection:`column`,gap:`6px`},children:[(0,b.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,fontSize:`12px`,color:`var(--text-secondary)`,fontFamily:`var(--font-ui)`},children:[(0,b.jsxs)(`span`,{style:{fontWeight:500},children:[e,` selected`]}),(0,b.jsx)(`button`,{onClick:t,style:{background:`none`,border:`none`,cursor:`pointer`,fontSize:`12px`,color:`var(--accent-orange)`,fontFamily:`var(--font-ui)`,padding:`0`},children:`Select all`})]}),(0,b.jsxs)(`div`,{style:{display:`flex`,gap:`6px`},children:[(0,b.jsx)(B,{label:`Archive`,disabled:a,onClick:n}),(0,b.jsx)(B,{label:`Delete`,disabled:a,danger:!0,onClick:r}),(0,b.jsx)(B,{label:`Cancel`,disabled:!1,onClick:i})]})]})}function B({label:e,disabled:t,danger:n,onClick:r}){let[i,a]=(0,y.useState)(!1);return(0,b.jsx)(`button`,{onClick:r,disabled:t,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),style:{flex:1,padding:`4px 6px`,fontSize:`12px`,fontFamily:`var(--font-ui)`,background:t?`none`:n?i?`#b85c5c`:`#c47a7a`:i?`var(--bg-sidebar-hover)`:`var(--bg-tool-block)`,color:t?`var(--text-tertiary)`:n?`#fff`:`var(--text-primary)`,border:t?`1px solid var(--border-subtle)`:`1px solid var(--border-default)`,borderRadius:`var(--radius-sm)`,cursor:t?`default`:`pointer`,transition:`background var(--transition-fast), color var(--transition-fast)`,opacity:t?.5:1},children:e})}function he({icon:e,label:t,shortcut:n,active:r,onClick:i,collapsed:a,fade:o}){let[s,c]=(0,y.useState)(!1);return(0,b.jsxs)(`button`,{onClick:i,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),title:a?t:void 0,style:{display:`flex`,alignItems:`center`,gap:`10px`,width:`calc(100% - 12px)`,padding:`7px 12px`,background:r?`var(--bg-sidebar-active)`:s?`var(--bg-sidebar-hover)`:`none`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:`pointer`,color:`var(--text-primary)`,fontSize:`15px`,fontFamily:`var(--font-ui)`,fontWeight:r?500:400,textAlign:`left`,transition:`background var(--transition-fast), color var(--transition-fast), opacity var(--transition-medium)`,margin:`1px 6px`,opacity:o?0:void 0,overflow:`hidden`,whiteSpace:`nowrap`},children:[(0,b.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:e}),(0,b.jsx)(`span`,{style:{flex:1,overflow:`hidden`,whiteSpace:`nowrap`,opacity:+!a,transition:`opacity var(--transition-medium)`},children:t}),n&&(0,b.jsx)(`kbd`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`,fontFamily:`var(--font-ui)`,opacity:+!a,transition:`opacity var(--transition-medium)`},children:n})]})}function ge({collapsed:e}){let t=l(e=>e.openSettings),n=l(e=>e.openHelp),r=l(e=>e.openShortcuts),i=l(e=>e.profiles),o=l(e=>e.activeProfileId),s=l(e=>e.setActiveProfileId),[c,u]=(0,y.useState)(!1),d=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(!c)return;let e=e=>{d.current&&!d.current.contains(e.target)&&u(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[c]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{e.key===`Escape`&&u(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[c]),(0,y.useEffect)(()=>{e&&u(!1)},[e]);let f=async e=>{try{await a.setActiveProfile(e),s(e),u(!1)}catch{}},p=i.find(e=>e.id===o),m=p?p.name:i.length>0?`All Profiles`:`Clau-Decode`,h=p?p.color:`var(--accent-orange)`,g=p?(p.name?.[0]??`?`).toUpperCase():`C`,_=e=>({display:`flex`,alignItems:`center`,gap:`10px`,width:`100%`,padding:`7px 12px`,background:e?`var(--bg-sidebar-hover)`:`none`,border:`none`,cursor:`pointer`,fontFamily:`var(--font-ui)`,fontSize:`15px`,textAlign:`left`,color:`var(--text-primary)`,transition:`background var(--transition-fast)`});return(0,b.jsxs)(`div`,{style:{borderTop:`1px solid var(--border-subtle)`,padding:`8px 4px`,flexShrink:0,position:`relative`},ref:d,children:[(0,b.jsxs)(`button`,{onClick:e?()=>{t()}:()=>u(!c),"aria-label":`Open menu`,title:e?`Settings`:void 0,style:{display:`flex`,alignItems:`center`,gap:`10px`,width:`100%`,padding:`8px 8px`,background:`none`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:`pointer`,outline:`none`,fontFamily:`var(--font-ui)`,overflow:`hidden`},children:[(0,b.jsx)(`span`,{style:{width:`28px`,height:`28px`,borderRadius:`50%`,background:h,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,color:`var(--text-on-accent)`,fontSize:`12px`,fontWeight:700},children:g}),(0,b.jsxs)(`div`,{style:{flex:1,textAlign:`left`,overflow:`hidden`,opacity:+!e,transition:`opacity var(--transition-medium)`,whiteSpace:`nowrap`},children:[(0,b.jsx)(`div`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-primary)`},children:m}),(0,b.jsx)(`div`,{style:{fontSize:`11px`,color:`var(--text-tertiary)`},children:`Menu`})]})]}),c&&(0,b.jsxs)(`div`,{style:{position:`absolute`,bottom:`100%`,left:`4px`,right:`4px`,background:`var(--bg-modal)`,borderRadius:`12px`,boxShadow:`0 -2px 12px rgba(0,0,0,0.08)`,marginBottom:`-1px`,overflow:`hidden`},children:[(0,b.jsxs)(`button`,{onClick:()=>{t(),u(!1)},style:_(),onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`none`},children:[(0,b.jsx)(`span`,{style:{flexShrink:0,display:`flex`,color:`var(--text-tertiary)`},children:(0,b.jsx)(fe,{})}),(0,b.jsx)(`div`,{style:{flex:1},children:(0,b.jsx)(`div`,{style:{fontWeight:500},children:`Settings`})})]}),(0,b.jsxs)(`button`,{onClick:()=>{n(),u(!1)},style:_(),onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`none`},children:[(0,b.jsx)(`span`,{style:{flexShrink:0,display:`flex`,color:`var(--text-tertiary)`},children:(0,b.jsx)(R,{})}),(0,b.jsx)(`div`,{style:{flex:1},children:(0,b.jsx)(`div`,{style:{fontWeight:500},children:`Get Help`})})]}),(0,b.jsxs)(`button`,{onClick:()=>{r(),u(!1)},style:_(),onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-sidebar-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`none`},children:[(0,b.jsx)(`span`,{style:{flexShrink:0,display:`flex`,color:`var(--text-tertiary)`},children:(0,b.jsx)(z,{})}),(0,b.jsx)(`div`,{style:{flex:1},children:(0,b.jsx)(`div`,{style:{fontWeight:500},children:`Keyboard Shortcuts`})})]}),i.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{style:{borderTop:`1px solid var(--border-subtle)`,margin:`4px 0`}}),(0,b.jsxs)(`button`,{onClick:()=>{f(null)},style:_(!o),children:[(0,b.jsx)(`span`,{style:{width:22,height:22,borderRadius:`50%`,background:`var(--accent-orange)`,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--text-on-accent)`,fontSize:`10px`,fontWeight:700,flexShrink:0},children:`C`}),(0,b.jsx)(`span`,{style:{fontWeight:o?400:500},children:`All Profiles`})]}),i.map(e=>(0,b.jsxs)(`button`,{onClick:()=>{f(e.id)},style:_(o===e.id),children:[(0,b.jsx)(`span`,{style:{width:22,height:22,borderRadius:`50%`,background:e.color,display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--text-on-accent)`,fontSize:`10px`,fontWeight:700,flexShrink:0},children:(e.name?.[0]??`?`).toUpperCase()}),(0,b.jsx)(`span`,{style:{fontWeight:o===e.id?500:400},children:e.name})]},e.id))]})]})]})}function V(){let[e,t]=(0,y.useState)([]),[n,u]=(0,y.useState)(!0),[p,x]=(0,y.useState)(null),[S,C]=(0,y.useState)(new Set),[w,T]=(0,y.useState)([]),[E,ee]=(0,y.useState)(!1),D=(0,y.useRef)(!1),te=(0,y.useRef)(null),[O,re]=(0,y.useState)(!1),k=s(),A=f(),j=l(e=>e.openSearch),M=l(e=>e.sessionSortOrder),N=l(e=>e.selectedSessionId),oe=l(e=>e.selectProject),P=l(e=>e.sidebarCollapsed),F=l(e=>e.sidebarMode),I=l(e=>e.setFileExplorerRoot),L=l(e=>e.activeProfileId),ce=l(e=>e.setProfiles),fe=l(e=>e.setActiveProfileId),R=l(e=>e.selectionMode),z=l(e=>e.selectedSessionIds),B=l(e=>e.selectionAnchorId),V=l(e=>e.setSelectionAnchorId),_e=l(e=>e.toggleSessionSelected),ve=l(e=>e.enterSelectionMode),H=l(e=>e.exitSelectionMode),U=l(e=>e.clearSelection),W=l(e=>e.setSelectedSessionIds),[ye,be]=(0,y.useState)(!1),xe=l(e=>e.showParentFolder),Se=M!==`alpha`,[G,K]=(0,y.useState)(le),Ce=(0,y.useRef)(G);Ce.current=G;let[q,J]=(0,y.useState)(!1),Y=(0,y.useRef)(!1);q&&G<_.FADE_TEXT_MIN_PX&&(Y.current=!0),q&&G>_.FADE_TEXT_MAX_PX&&(Y.current=!1),q||(Y.current=!1);let we=Y.current,X=P||we;(0,y.useEffect)(()=>{let e=()=>{let e=window.innerWidth;if(e<_.COLLAPSED_WIDTH+_.MIN_MAIN_PANE){l.getState().setSidebarCollapsed(!0);return}let t=Math.max(_.MIN_WIDTH,e-_.MIN_MAIN_PANE);K(e=>Math.max(_.MIN_WIDTH,Math.min(e,t)))};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,y.useEffect)(()=>{q||G<_.SNAP_THRESHOLD||d(o.SIDEBAR_WIDTH,String(G))},[G,q]);let Te=(0,y.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=P,r=n?_.COLLAPSED_WIDTH:Ce.current,i=le();J(!0),n&&K(_.COLLAPSED_WIDTH),document.body.style.userSelect=`none`;let a=e=>{let i=e.clientX-t,a=Math.max(_.MIN_WIDTH,window.innerWidth-_.MIN_MAIN_PANE),o=n?_.COLLAPSED_WIDTH:r,s=Math.max(_.COLLAPSED_WIDTH,Math.min(o+i,a));K(s),n&&s>=_.SNAP_THRESHOLD&&l.getState().setSidebarCollapsed(!1)},o=()=>{let e=Ce.current;e<_.SNAP_THRESHOLD?(l.getState().setSidebarCollapsed(!0),J(!1),K(i)):(l.getState().setSidebarCollapsed(!1),K(e),J(!1)),document.body.style.userSelect=``,document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,o)};document.addEventListener(`mousemove`,a),document.addEventListener(`mouseup`,o)},[P]),Ee=(0,y.useCallback)(()=>{for(let e of z)k.add(e);U(),H()},[z,k,U,H]),De=(0,y.useCallback)(()=>{be(!0)},[]),Oe=(0,y.useCallback)(()=>{let e=[...z];be(!1),U(),H(),r(`sessions-removed`,e),a.deleteSessions(e).then(e=>{e.failed.length>0&&(console.error(`[bulk-delete] Some sessions failed to delete:`,e.failed),r(`toast`,{message:`Couldn't delete ${e.failed.length} session${e.failed.length===1?``:`s`}.`,kind:`error`})),r(`refresh`,void 0)}).catch(e=>{console.error(`[bulk-delete] deleteSessions error:`,e),r(`toast`,{message:`Couldn't delete sessions — see console for details.`,kind:`error`}),r(`refresh`,void 0)})},[z,U,H]),ke=e=>{oe(e.project_id),I(e.cwd),c(`/chat/${e.id}`)};(0,y.useEffect)(()=>{if(F!==`folder`||l.getState().fileExplorerRoot)return;let e=N;if(!e)return;let t=w.find(t=>t.id===e);t?.cwd&&I(t.cwd)},[F]);let Z=e=>{if(xe)return e.display_name;let t=e.display_name.lastIndexOf(`/`);return t>=0?e.display_name.slice(t+1):e.display_name},Ae=(0,y.useMemo)(()=>M===`alpha`?[...e].sort((e,t)=>Z(e).localeCompare(Z(t))):e,[e,M,xe]);(0,y.useEffect)(()=>{a.getProfiles().then(e=>{ce(e.profiles),fe(e.active_profile_id)}).catch(()=>{})},[]),(0,y.useEffect)(()=>{if(L===void 0)return;let e=!1;return u(!0),a.getProjects().then(n=>{e||(t(n),n.length>0&&C(new Set([n[0].id])))}).catch(()=>{}).finally(()=>{e||u(!1)}),a.getAllSessions().then(t=>{e||T(t)}).catch(()=>{}),()=>{e=!0}},[L]),(0,y.useEffect)(()=>{let e=!1;return a.getProjects().then(n=>{e||(t(n),n.length>0&&C(new Set([n[0].id])))}).catch(t=>{e||x(t instanceof Error?t.message:`Failed to load projects`)}).finally(()=>{e||u(!1)}),()=>{e=!0}},[]),(0,y.useEffect)(()=>{if(e.length===0)return;let t=!1;return D.current||ee(!0),a.getAllSessions().then(e=>{t||(D.current=!0,T(e))}).catch(()=>{}).finally(()=>{t||ee(!1)}),()=>{t=!0}},[e]),(0,y.useEffect)(()=>i(`refresh`,()=>{a.getProjects().then(t).catch(()=>{}),a.getAllSessions().then(T).catch(()=>{})}),[]),(0,y.useEffect)(()=>i(`sessions-removed`,e=>{let t=new Set(e);T(e=>e.filter(e=>!t.has(e.id)))}),[]);let Q=(0,y.useMemo)(()=>w.filter(e=>A.has(e.id)&&!k.has(e.id)),[w,A,k]),$=(0,y.useMemo)(()=>{let e=w.filter(e=>O?k.has(e.id):!k.has(e.id));return M===`recent`?e.sort((e,t)=>(t.updated_at??t.started_at??``).localeCompare(e.updated_at??e.started_at??``)):M===`oldest`&&e.sort((e,t)=>(e.updated_at??e.started_at??``).localeCompare(t.updated_at??t.started_at??``)),e},[w,M,O,k]),je=ie((0,y.useMemo)(()=>{let e=new Set;for(let t of $)e.add(t.id);for(let t of Q)e.add(t.id);return[...e]},[$,Q])),Me=(0,y.useCallback)(()=>{W($.map(e=>e.id))},[$,W]),Ne=(0,y.useCallback)((e,t)=>{if(t&&B){let t=$.map(e=>e.id),n=t.indexOf(B),r=t.indexOf(e);if(n!==-1&&r!==-1){let[e,i]=n<r?[n,r]:[r,n],a=t.slice(e,i+1);W([...new Set([...z,...a])]);return}}_e(e),V(e)},[B,$,z,W,_e,V]),Pe=e=>{C(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,b.jsxs)(`aside`,{"aria-label":`Navigation`,style:{width:P&&!q?`${_.COLLAPSED_WIDTH}px`:`${Math.max(_.COLLAPSED_WIDTH,G)}px`,height:`100vh`,display:`flex`,flexDirection:`column`,background:`var(--bg-sidebar)`,borderRight:`1px solid var(--border-subtle)`,flexShrink:0,overflow:`hidden`,position:`relative`,transition:q?`none`:`width var(--transition-medium)`},children:[(0,b.jsx)(`div`,{onMouseDown:Te,title:`Drag to resize`,"aria-label":`Resize sidebar`,role:`separator`,"aria-orientation":`vertical`,style:{position:`absolute`,top:0,bottom:0,right:0,width:`4px`,cursor:`col-resize`,zIndex:10,background:q?`var(--border-default)`:`transparent`,transition:`background 0.12s`},onMouseEnter:e=>{q||(e.currentTarget.style.background=`var(--border-default)`)},onMouseLeave:e=>{q||(e.currentTarget.style.background=`transparent`)}}),(0,b.jsx)(ne,{collapsed:X}),(0,b.jsxs)(`div`,{style:{padding:`6px 0 4px`,flexShrink:0},children:[(0,b.jsx)(he,{collapsed:X,icon:(0,b.jsx)(ue,{}),label:`Search`,shortcut:`⌘K`,onClick:j}),!P&&Q.length>0&&(0,b.jsxs)(`div`,{style:{margin:`4px 0`},children:[(0,b.jsx)(`div`,{style:{padding:`4px 18px 2px`,fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.06em`,color:`var(--text-tertiary)`,fontFamily:`var(--font-ui)`},children:`Starred`}),Q.map(e=>(0,b.jsx)(v,{session:e,isActive:N===e.id,onClick:()=>ke(e),runnerStatus:je.get(e.id)},e.id))]}),(0,b.jsx)(he,{collapsed:X,icon:(0,b.jsx)(de,{}),label:`Archive`,active:O,onClick:()=>re(e=>!e),fade:X})]}),!P&&(0,b.jsx)(`div`,{style:{marginTop:`2px`}}),(0,b.jsx)(m,{ref:te,options:h,role:F===`chat`?`list`:void 0,"aria-label":F===`chat`?`Sessions`:void 0,style:{flex:1,padding:F===`folder`?`0`:`8px 0`,display:P?`none`:void 0,opacity:+!X,transition:`opacity var(--transition-medium)`},children:F===`folder`?(0,b.jsx)(se,{}):(0,b.jsxs)(b.Fragment,{children:[R&&(0,b.jsx)(me,{selectedCount:z.size,onSelectAll:Me,onArchive:Ee,onDelete:De,onCancel:H}),n&&(0,b.jsx)(`div`,{style:{padding:`16px`,fontSize:`13px`,color:`var(--text-tertiary)`,textAlign:`center`},children:`Loading…`}),p&&(0,b.jsx)(`div`,{style:{padding:`16px`,fontSize:`13px`,color:`var(--tool-error-border)`},children:p}),!n&&!p&&(Se||O)&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(pe,{label:O?`Archived`:`Recents`,onSelect:ve,selectionMode:R}),E&&(0,b.jsx)(`div`,{style:{padding:`8px 16px`,fontSize:`12px`,color:`var(--text-tertiary)`},children:`Loading…`}),!E&&$.map(e=>(0,b.jsx)(v,{session:e,isActive:N===e.id,onClick:()=>ke(e),runnerStatus:je.get(e.id),onToggleSelect:Ne},e.id)),!E&&$.length===0&&(0,b.jsx)(`div`,{style:{padding:`24px 16px`,fontSize:`13px`,color:`var(--text-tertiary)`,textAlign:`center`,lineHeight:1.6},children:O?`No archived sessions.`:`No sessions found.`})]}),!n&&!p&&!Se&&!O&&(0,b.jsxs)(b.Fragment,{children:[Ae.map(e=>(0,b.jsx)(ae,{project:e,displayName:Z(e),isExpanded:S.has(e.id),onToggle:()=>Pe(e.id),archivedIds:k.ids},e.id)),Ae.length===0&&(0,b.jsxs)(`div`,{style:{padding:`24px 16px`,fontSize:`13px`,color:`var(--text-tertiary)`,textAlign:`center`,lineHeight:1.6},children:[`No projects found.`,(0,b.jsx)(`br`,{}),`Add a path in Settings.`]})]})]})}),P&&(0,b.jsx)(`div`,{style:{flex:1}}),(0,b.jsx)(ge,{collapsed:X}),ye&&(0,b.jsx)(g,{title:`Delete ${z.size} session${z.size===1?``:`s`}?`,body:`This permanently deletes the session transcript files from disk and cannot be undone.`,confirmLabel:`Delete`,onConfirm:Oe,onCancel:()=>be(!1)})]})}export{V as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`clau-decode:`;function t(t,n){window.dispatchEvent(new CustomEvent(`${e}${t}`,{detail:n}))}function n(t,n){let r=e=>n(e.detail);return window.addEventListener(`${e}${t}`,r),()=>window.removeEventListener(`${e}${t}`,r)}var r=null,i=null;function a(){return r}function o(){return i||(i=fetch(`/api/config`).then(e=>{if(!e.ok)throw Error(`GET /api/config → ${e.status}`);return e.json()}).then(e=>(r=e,e)).finally(()=>{i=null}),i)}async function s(e){let t=await fetch(e);if(!t.ok)throw Error(`GET ${e} → ${t.status}`);return t.json()}async function c(e,t){let n=await fetch(e,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(`PUT ${e} → ${n.status}`);return n.json()}async function l(e,t){try{let t=await e.json();if(t&&typeof t.detail==`string`)return t.detail}catch{}return t}async function u(e,t){let n={method:`POST`};t!==void 0&&(n.headers={"Content-Type":`application/json`},n.body=JSON.stringify(t));let r=await fetch(e,n);if(!r.ok)throw Error(await l(r,`POST ${e} → ${r.status}`));return r.json()}function d(e,t){let n=JSON.stringify(t);return typeof navigator<`u`&&typeof navigator.sendBeacon==`function`?navigator.sendBeacon(e,new Blob([n],{type:`application/json`})):(fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:n,keepalive:!0}).catch(()=>{}),!0)}function f(e){return fetch(e,{method:`DELETE`}).then(e=>{if(!e.ok)throw Error(`${e.status} ${e.statusText}`);return e.json()})}function p(e,t){return fetch(e,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>{if(!e.ok)throw Error(`${e.status} ${e.statusText}`);return e.json()})}var m={getProjects:()=>s(`/api/projects`),getProjectSessions:e=>s(`/api/projects/${encodeURIComponent(e)}/sessions`),getAllSessions:()=>s(`/api/sessions`),getSession:e=>s(`/api/sessions/${encodeURIComponent(e)}`),search:(e,t,n=50,r=0)=>{let i=new URLSearchParams({q:e,limit:String(n),offset:String(r)});return t&&i.set(`project`,t),s(`/api/search?${i}`)},getDashboard:()=>s(`/api/dashboard`),getHostInfo:()=>s(`/api/host-info`),getUpdateCheck:()=>s(`/api/update-check`),getProviders:()=>s(`/api/providers`),getConfig:()=>s(`/api/config`),updateConfig:e=>(r=e,t(`config-updated`,e),c(`/api/config`,e)),refresh:()=>u(`/api/refresh`),revealSession:e=>u(`/api/sessions/${encodeURIComponent(e)}/reveal`),openTerminal:e=>u(`/api/sessions/${encodeURIComponent(e)}/open-terminal`),getDailyAnalytics:()=>s(`/api/analytics/daily`),getPricingTable:()=>s(`/api/pricing`),getToolUsage:()=>s(`/api/analytics/tools`),getFileTouches:()=>s(`/api/analytics/files`),deleteMessage:e=>f(`/api/messages/${e}`),patchMessage:(e,t)=>p(`/api/messages/${e}`,{content_blocks:t}),getProfiles:()=>s(`/api/profiles`),createProfile:(e,t,n)=>(r=null,u(`/api/profiles`,{name:e,data_paths:t||[`~/.claude`],color:n||`#b8956a`})),updateProfile:(e,t)=>(r=null,c(`/api/profiles/${encodeURIComponent(e)}`,t)),deleteProfile:e=>(r=null,f(`/api/profiles/${encodeURIComponent(e)}`)),setActiveProfile:e=>(r=null,c(`/api/profiles/active`,{active_profile_id:e})),listDir:(e,t=!1)=>{let n=new URLSearchParams({path:e});return t&&n.set(`show_hidden`,`true`),s(`/api/fs/list?${n}`)},readFile:e=>s(`/api/fs/read?${new URLSearchParams({path:e})}`),writeFile:(e,t)=>c(`/api/fs/write`,{path:e,content:t}),exportSession:(e,t)=>fetch(`/api/sessions/${encodeURIComponent(e)}/export?format=${t}`).then(e=>{if(!e.ok)throw Error(`Export failed: ${e.status}`);let n=(e.headers.get(`content-disposition`)||``).match(/filename="([^"]+)"/),r=n?n[1]:`session.${t}`;return e.blob().then(e=>({blob:e,filename:r}))}),getRunnerStatuses:e=>s(`/api/runner-status?ids=${e.map(encodeURIComponent).join(`,`)}`),generateRecap:e=>u(`/api/sessions/${encodeURIComponent(e)}/recap`),listRecaps:(e,t)=>{let n=new URLSearchParams;t?.includeDismissed&&n.set(`include_dismissed`,`true`);let r=n.toString();return s(`/api/sessions/${encodeURIComponent(e)}/recaps${r?`?${r}`:``}`)},dismissRecap:(e,t)=>u(`/api/sessions/${encodeURIComponent(e)}/recaps/${t}/dismiss`),setSessionTitle:(e,t)=>c(`/api/sessions/${encodeURIComponent(e)}/title`,{title:t}),setArchived:(e,t)=>c(`/api/sessions/${encodeURIComponent(e)}/archived`,{archived:t}),setStarred:(e,t)=>c(`/api/sessions/${encodeURIComponent(e)}/starred`,{starred:t}),setViewedAt:(e,t)=>c(`/api/sessions/${encodeURIComponent(e)}/viewed`,{viewed_at:t}),migrateLocalStorage:e=>u(`/api/sessions/migrate-localstorage`,e),deleteSessions:e=>u(`/api/sessions/delete`,{session_ids:e}),newSession:e=>u(`/api/sessions/new`,e??{}),ptyFocus:(e,t,n)=>u(`/api/pty/focus`,{session_id:e,...t?{model:t}:{},...n?{rows:n}:{}}),ptyBlur:e=>u(`/api/pty/blur`,{session_id:e}),ptySubmit:(e,t,n)=>u(`/api/pty/submit`,{session_id:e,content:t,...n?{model:n}:{}}),ptyKill:e=>u(`/api/pty/kill`,{session_id:e}),ptyKillKeepalive:e=>d(`/api/pty/kill`,{session_id:e}),ptyStatus:e=>s(`/api/pty/status?${new URLSearchParams({session_id:e})}`),ptyNativeSnapshot:e=>s(`/api/pty/native-snapshot?${new URLSearchParams({session_id:e})}`),ptyInput:(e,t)=>u(`/api/pty/input`,{session_id:e,data:t}),ptyResize:(e,t,n)=>u(`/api/pty/resize`,{session_id:e,rows:t,cols:n}),ptyOwnership:e=>s(`/api/pty/ownership/${encodeURIComponent(e)}`),ptyTakeover:e=>u(`/api/pty/takeover/${encodeURIComponent(e)}`,{}),ptyEphemerals:e=>s(`/api/sessions/${encodeURIComponent(e)}/ephemerals`)};function h(e){let t=typeof e==`function`?{onRefresh:e}:e,n=new EventSource(`/api/events`);n.addEventListener(`message`,e=>{try{let n=JSON.parse(e.data);if(n.type===`refresh`)t.onRefresh();else if(n.type===`session_adopted`){let e=n;t.onSessionAdopted?t.onSessionAdopted({old:e.old,new:e.new}):console.debug(`[SSE] session_adopted (no handler)`,e)}else if(n.type===`session-meta`){let e=n;t.onSessionMeta?.({id:e.id,...`title`in e?{title:e.title}:{},...`archived_at`in e?{archived_at:e.archived_at}:{},...`starred_at`in e?{starred_at:e.starred_at}:{},...`viewed_at`in e?{viewed_at:e.viewed_at}:{}})}else if(n.type===`session-meta-bulk-migration`){let e=n;t.onSessionMetaBulkMigration?.({applied:e.applied})}else if(n.type===`pty_idle_warn`){let e=n;t.onPtyIdleWarn?t.onPtyIdleWarn({session_id:e.session_id,kill_in_seconds:e.kill_in_seconds}):console.debug(`[SSE] pty_idle_warn (no handler)`,e)}else if(n.type===`auth_required`){let e=n;t.onAuthRequired?t.onAuthRequired({session_id:e.session_id}):console.debug(`[SSE] auth_required (no handler)`,e)}else if(n.type===`trust_required`){let e=n;t.onTrustRequired?t.onTrustRequired({session_id:e.session_id,cwd:e.cwd}):console.debug(`[SSE] trust_required (no handler)`,e)}else if(n.type===`stuck_session`){let e=n;t.onStuckSession?t.onStuckSession({session_id:e.session_id}):console.debug(`[SSE] stuck_session (no handler)`,e)}else if(n.type===`pty_input_acknowledged`){let e=n;t.onPtyInputAcknowledged?t.onPtyInputAcknowledged({session_id:e.session_id}):console.debug(`[SSE] pty_input_acknowledged (no handler)`,e)}else if(n.type===`pty_input_stalled`){let e=n;t.onPtyInputStalled?t.onPtyInputStalled({session_id:e.session_id,elapsed_ms:e.elapsed_ms}):console.debug(`[SSE] pty_input_stalled (no handler)`,e)}else if(n.type===`pty_submit_completed`){let e=n;t.onPtySubmitCompleted?t.onPtySubmitCompleted({session_id:e.session_id,kind:e.kind,status:e.status,input_id:e.input_id,response_id:e.response_id}):console.debug(`[SSE] pty_submit_completed (no handler)`,e)}else if(n.type===`pty_output_chunk`){let e=n;t.onPtyOutputChunk?t.onPtyOutputChunk({session_id:e.session_id,data_b64:e.data_b64}):console.debug(`[SSE] pty_output_chunk (no handler)`,e)}else if(n.type===`pty_native_state`){let e=n;t.onPtyNativeState?t.onPtyNativeState({session_id:e.session_id,state:e.state,decoded_input_safe:e.decoded_input_safe}):console.debug(`[SSE] pty_native_state (no handler)`,e)}else if(n.type===`ephemeral_input_persisted`){let e=n;t.onEphemeralInputPersisted?t.onEphemeralInputPersisted({session_id:e.session_id,input_id:e.input_id,kind:e.kind}):console.debug(`[SSE] ephemeral_input_persisted (no handler)`,e)}else if(n.type===`ephemeral_pair_persisted`){let e=n;t.onEphemeralPairPersisted?t.onEphemeralPairPersisted({session_id:e.session_id,input_id:e.input_id,response_id:e.response_id,kind:e.kind}):console.debug(`[SSE] ephemeral_pair_persisted (no handler)`,e)}}catch{}});let r=!1;return n.addEventListener(`open`,()=>{r&&t.onReconnect?.(),r=!0}),n}export{t as a,o as i,h as n,n as o,a as r,m as t};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=new Map,t=new Map,n=10;function r(t){let n=e.get(t);return n!==void 0&&(e.delete(t),e.set(t,n)),n}function i(t,r){e.delete(t),e.set(t,r),e.size>n&&e.delete(e.keys().next().value)}function a(n){e.delete(n),t.delete(n)}function o(e,n){let r=t.get(e);if(r)return r;let a=n(e).then(t=>(i(e,t),t)).finally(()=>{t.delete(e)});return t.set(e,a),a}function s(n,r){e.has(n)||t.has(n)||o(n,r).catch(()=>{})}function c(e){if(!e)return``;let t=new Date(e),n=Date.now()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`just now`;if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function l(e){let t=new Date(e),n=new Date,r=new Date(n.getFullYear(),n.getMonth(),n.getDate()),i=new Date(r.getTime()-864e5),a=new Date(r.getTime()-r.getDay()*864e5),o=new Date(n.getFullYear(),0,1);return t>=r?`Today`:t>=i?`Yesterday`:t>=a?t.toLocaleDateString(`en-US`,{weekday:`short`}):t>=o?t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`}):t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}export{a,r as i,l as n,s as o,o as r,i as s,c as t};
|