@epoch-agent/server 0.16.0 → 0.17.0

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.
@@ -371,8 +371,8 @@ XID_Start XIDS`.split(/\s/).map(e=>[Gm(e),e])),Rh=new Map([[`s`,Ch(383)],[Ch(383
371
371
  `]},n)),a&&`
372
372
  `]})}function bb(e){return e.map(e=>e.map(e=>e.text).join(``)).join(`
373
373
  `)}function xb(e){return e instanceof Error?e.message:String(e)}var Sb={connected:`ok`,failed:`failed`,"needs-login":`login`},Cb={connected:`web.ui.cap.mcp_connected`,failed:`web.ui.cap.mcp_failed`,"needs-login":`web.ui.cap.mcp_login`},wb=[{source:`user`,title:`web.ui.cap.g_mcp`,note:`web.ui.cap.g_mcp_note`},{source:`plugin`,title:`web.ui.cap.g_plugin`,note:`web.ui.cap.g_plugin_conn`},{source:`host`,title:`web.ui.cap.g_host`,note:`web.ui.cap.g_host_conn`}];function Tb({builtin:e,mcp:t,client:n,lanExposed:r}){let i=R(),[a,o]=v.useState({}),[s,c]=v.useState([]),[l,u]=v.useState(),d=s[0]===void 0?void 0:a[s[0].name]??s[0];return(0,L.jsxs)(L.Fragment,{children:[wb.map(e=>{let f=e.source===`user`?[...s,...t.filter(e=>e.source===`user`)]:t.filter(t=>t.source===e.source);return f.length===0&&e.source!==`user`?null:(0,L.jsxs)(sb,{title:i(e.title),note:i(e.note),children:[e.source===`user`&&n&&(0,L.jsxs)(`div`,{className:`cap__gacts`,children:[(0,L.jsx)(fb,{client:n,lanExposed:r,onAdded:(e,t)=>{c(t=>[e,...t]),u(t)}}),(0,L.jsx)(hb,{client:n,lanExposed:r})]}),e.source===`user`&&l!==void 0&&(0,L.jsxs)(`p`,{className:`cap__foot`,children:[i(`web.ui.cap.mcp_add_done`,{path:l}),d!==void 0&&d.state!==`connected`&&(0,L.jsxs)(L.Fragment,{children:[` `,i(`web.ui.cap.mcp_add_offline`)]})]}),f.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.mcp_empty`)}):(0,L.jsx)(`div`,{className:`cards cards--vary`,children:f.map(e=>(0,L.jsx)(Eb,{server:a[e.name]??e,...n?{client:n}:{},onPatched:e=>o(t=>({...t,[e.name]:e}))},e.name))})]},e.source)}),e.length>0&&(0,L.jsx)(sb,{title:i(`web.ui.cap.g_builtin`),note:i(`web.ui.cap.g_builtin_conn`),children:(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`connector`,children:e.map(e=>(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsx)(`span`,{className:`slot__path`,children:(0,L.jsx)(`b`,{children:e.name})}),(0,L.jsx)(`span`,{className:`slot__stat`,children:i(`web.ui.cap.tool_count`,{count:e.toolCount})})]},e.name))})})]})}function Eb({server:e,client:t,onPatched:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState();return(0,L.jsxs)(`article`,{className:`card card--conn`,"data-state":Sb[e.state],"data-source":e.source,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(`span`,{className:`card__ava`,"aria-hidden":!0,children:(0,L.jsx)(z,{name:`blocks`})}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsxs)(`span`,{className:`card__nameline`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.name}),(0,L.jsx)(`span`,{className:`card__badge`,children:r(`web.ui.cap.tool_count`,{count:e.toolCount})})]}),(0,L.jsxs)(`span`,{className:`card__src card__state`,"data-state":Sb[e.state],children:[(0,L.jsx)(`span`,{className:`card__statedot`,"aria-hidden":!0}),r(Cb[e.state])]})]})]}),e.state===`failed`&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`card__desc`,children:r(`web.ui.cap.mcp_retries`,{count:e.reconnectAttempts})}),e.lastError!==void 0&&(0,L.jsx)(my,{text:e.lastError,testId:`mcp-last-error`}),(0,L.jsxs)(`p`,{className:`card__notice`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`triangle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:r(`web.ui.cap.mcp_failed_why`)})]})]}),e.state===`needs-login`&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`card__desc`,children:r(`web.ui.cap.mcp_login_why`)}),(0,L.jsx)(`div`,{className:`card__act`,children:(0,L.jsx)(ob,{cmd:`epoch mcp login ${e.name}`})})]}),o!==void 0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:o})]}),t&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[(0,L.jsx)(xt,{text:r(`web.ui.cap.mcp_reconnect_scope`),children:(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>{!t||i||(a(!0),s(void 0),t.reconnectMcp(e.name).then(e=>n(e.server)).catch(e=>s(e instanceof Error?e.message:String(e))).finally(()=>a(!1)))},disabled:i,children:[i?(0,L.jsx)(`span`,{className:`card__spin`,"aria-hidden":!0}):(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),r(i?`web.ui.cap.mcp_reconnecting`:`web.ui.cap.mcp_reconnect`)]})}),e.state===`needs-login`&&(0,L.jsx)(`p`,{className:`card__hint`,children:r(`web.ui.cap.mcp_reconnect_after_login`)})]})]})}var Db={name:``,description:``,prompt:``,tools:``,skills:``,maxTurns:``};function Ob(e){return e.split(`
374
- `).map(e=>e.trim()).filter(e=>e.length>0)}function kb({client:e,lanExposed:t,onAdded:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(Db),[c,l]=v.useState(!1),[u,d]=v.useState(),f=o.name.trim().length>0&&o.description.trim().length>0;return t?(0,L.jsx)(`p`,{className:`cap__foot`,"data-testid":`roleadd-locked`,children:r(`web.ui.cap.role_add_locked`)}):i?(0,L.jsxs)(`form`,{className:`roleadd`,onSubmit:t=>{if(t.preventDefault(),!f||c)return;l(!0),d(void 0);let r=Ob(o.tools),i=Ob(o.skills),u=Number(o.maxTurns.trim()),p={name:o.name.trim(),description:o.description.trim(),...o.prompt.trim()?{prompt:o.prompt}:{},...r.length>0?{tools:r}:{},...i.length>0?{skills:i}:{},...o.maxTurns.trim()!==``&&Number.isInteger(u)&&u>=0?{maxTurns:u}:{}};e.addRole(p).then(e=>{n(e.role,e.path),a(!1),s(Db)}).catch(e=>d(e instanceof Error?e.message:String(e))).finally(()=>l(!1))},children:[(0,L.jsx)(`h3`,{className:`roleadd__title`,children:r(`web.ui.cap.role_add_title`)}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_name`)}),(0,L.jsx)(`input`,{type:`text`,value:o.name,autoFocus:!0,onChange:e=>s(t=>({...t,name:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_name_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_desc`)}),(0,L.jsx)(`textarea`,{rows:2,value:o.description,onChange:e=>s(t=>({...t,description:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_desc_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_prompt`)}),(0,L.jsx)(`textarea`,{rows:6,value:o.prompt,onChange:e=>s(t=>({...t,prompt:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_prompt_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_tools`)}),(0,L.jsx)(`textarea`,{className:`roleadd__mono`,rows:3,value:o.tools,onChange:e=>s(t=>({...t,tools:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_tools_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_skills`)}),(0,L.jsx)(`textarea`,{className:`roleadd__mono`,rows:3,value:o.skills,onChange:e=>s(t=>({...t,skills:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_skills_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_turns`)}),(0,L.jsx)(`input`,{type:`number`,min:0,value:o.maxTurns,onChange:e=>s(t=>({...t,maxTurns:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_turns_hint`)})]}),u!==void 0&&(0,L.jsxs)(`p`,{className:`roleadd__error`,role:`alert`,children:[(0,L.jsx)(z,{name:`circle-x`,size:`sm`}),(0,L.jsx)(`span`,{children:u})]}),(0,L.jsx)(`p`,{className:`note-block`,children:r(`web.ui.cap.role_add_scope`)}),(0,L.jsxs)(`div`,{className:`roleadd__act`,children:[(0,L.jsx)(`button`,{className:`btn btn--primary btn--sm`,type:`submit`,disabled:!f||c,children:r(c?`web.ui.cap.role_add_submitting`:`web.ui.cap.role_add_submit`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:c,onClick:()=>{a(!1),d(void 0)},children:r(`web.ui.cap.role_add_cancel`)})]})]}):(0,L.jsx)(`div`,{className:`roleadd__bar`,children:(0,L.jsxs)(`button`,{className:`btn btn--sm`,type:`button`,onClick:()=>a(!0),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),r(`web.ui.cap.role_add`)]})})}var Ab=[{source:`builtin`,title:`web.ui.cap.g_builtin`,note:`web.ui.cap.g_builtin_roles`},{source:`plugin`,title:`web.ui.cap.g_plugin`,note:`web.ui.cap.g_plugin_roles`},{source:`host`,title:`web.ui.cap.g_host`,note:`web.ui.cap.g_host_roles`},{source:`user`,title:`web.ui.cap.g_user`,note:`web.ui.cap.g_user_roles`},{source:`project`,title:`web.ui.cap.g_project`,note:`web.ui.cap.g_project_roles`}],jb={builtin:`web.ui.cap.g_builtin`,plugin:`web.ui.cap.g_plugin`,host:`web.ui.cap.g_host`,user:`web.ui.cap.g_user`,project:`web.ui.cap.g_project`};function Mb({roles:e,project:t,onSummon:n,onTakeOver:r,pinnedRole:i,canSummon:a,newSession:o,client:s,lanExposed:c,onWrote:l}){let u=R(),[d,f]=v.useState(),[p,m]=v.useState(),[h,g]=v.useState(),_=v.useCallback(e=>{g(e),o?.create(t.root,e)},[o,t.root]);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(kb,{client:s,lanExposed:c,onAdded:(e,t)=>{f(t),m(void 0),l()}}),d!==void 0&&(0,L.jsx)(`p`,{className:`cap__foot`,children:u(`web.ui.cap.role_add_done`,{path:d})}),p&&(0,L.jsxs)(`div`,{className:`note-block`,"data-testid":`role-removed-note`,children:[(0,L.jsx)(`p`,{children:u(`web.ui.cap.role_removed`,{name:p.name})}),(0,L.jsx)(`p`,{children:(0,L.jsx)(`code`,{children:p.path})}),p.takenOverBy!==null&&(0,L.jsx)(`p`,{children:u(`web.ui.cap.role_removed_taken_over`,{name:p.name,layer:u(jb[p.takenOverBy])})})]}),Ab.map(d=>{let p=e.filter(e=>e.source===d.source),g=d.source===`project`&&t.root!==null&&!t.trusted;return p.length===0&&!g?null:(0,L.jsx)(sb,{title:u(d.title),note:u(d.note),trust:d.source===`project`&&t.root!==null?t:null,children:g?(0,L.jsx)(`p`,{className:`cap__foot`,children:u(`web.ui.cap.project_locked_roles`)}):(0,L.jsx)(`div`,{className:`cards`,children:p.map((e,u)=>(0,L.jsx)(Nb,{role:e,hue:Ly(u),onSummon:n,onTakeOver:r,pinned:i===e.name,canSummon:a,root:t.root,...o?{open:_,opening:o.busy,...o.error!==void 0&&h===e.name?{error:o.error}:{}}:{},...d.source===`user`&&!c?{remove:{client:s,onRemoved:(t,n)=>{m({name:e.name,path:t,takenOverBy:n}),f(void 0),l()}}}:{}},e.name))})},d.source)})]})}function Nb({role:e,hue:t,onSummon:n,onTakeOver:r,pinned:i,canSummon:a,root:o,open:s,opening:c,error:l,remove:u}){let d=R(),f=e.toolsCut.length>0,[p,m]=v.useState(!1),[h,g]=v.useState(!1),[_,y]=v.useState(),b=()=>{!u||h||(g(!0),y(void 0),u.client.removeRole(e.name).then(e=>{if(e.ok)return u.onRemoved(e.path??``,e.takenOverBy);y(e.detail??``),m(!1)}).catch(e=>{y(e instanceof Error?e.message:String(e)),m(!1)}).finally(()=>g(!1)))},x=e=>e===null?d(`web.ui.cap.turns_global`):e===0?d(`web.ui.cap.unlimited`):String(e),S=o===null?d(`web.ui.cap.open_session_nows`,{role:e.name}):d(`web.ui.cap.open_session_here`,{role:e.name,root:o}),C=d(i?`web.ui.cap.take_over_on_title`:`web.ui.cap.take_over_title`,{role:e.name});return(0,L.jsxs)(`article`,{className:`card`,"data-source":e.source,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(`span`,{className:`card__ava`,"data-hue":t,"aria-hidden":!0,children:e.name.slice(0,2)}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.name}),f&&(0,L.jsx)(`span`,{className:`card__src`,children:d(`web.ui.cap.overrides_builtin`)})]}),u&&!p&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__kill`,type:`button`,"aria-label":d(`web.ui.cap.role_remove_title`,{role:e.name}),title:d(`web.ui.cap.role_remove_title`,{role:e.name}),onClick:()=>m(!0),children:d(`web.ui.cap.role_remove`)})]}),p?(0,L.jsx)(`p`,{className:`card__desc role__ask`,children:d(`web.ui.cap.role_remove_ask`,{name:e.name})}):(0,L.jsx)(my,{text:e.description}),(0,L.jsxs)(`p`,{className:`card__meta`,children:[(0,L.jsxs)(`span`,{className:`card__stat`,children:[d(`web.ui.cap.stat_tools`),` `,(0,L.jsx)(`b`,{children:e.tools===null?d(`web.ui.cap.unlimited`):e.tools.length})]}),(0,L.jsxs)(`span`,{className:`card__stat`,children:[d(`web.ui.cap.stat_turns`),` `,(0,L.jsx)(`b`,{children:x(e.maxTurns)})]})]}),(0,L.jsxs)(`details`,{className:`card__tools`,children:[(0,L.jsxs)(`summary`,{children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),e.tools===null?d(`web.ui.cap.toolset`):d(`web.ui.cap.toolset_n`,{count:e.tools.length})]}),e.tools===null?(0,L.jsx)(`p`,{className:`card__hint`,children:d(`web.ui.cap.unlimited_hint`)}):(0,L.jsxs)(`div`,{className:`chips`,children:[e.tools.map(e=>(0,L.jsx)(`code`,{className:`chip`,children:e},e)),e.toolsCut.map(e=>(0,L.jsx)(`code`,{className:`chip`,"data-cut":``,children:e},`cut-${e}`))]})]}),e.skills!==null&&(0,L.jsxs)(`details`,{className:`card__tools`,"data-testid":`role-skills`,children:[(0,L.jsxs)(`summary`,{children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),d(`web.ui.cap.skillset_n`,{count:e.skills.length})]}),e.skills.length===0?(0,L.jsx)(`p`,{className:`card__hint`,children:d(`web.ui.cap.skillset_none`)}):(0,L.jsx)(`div`,{className:`card__skillnames`,children:e.skills.map(e=>(0,L.jsx)(`code`,{className:`card__skill`,children:e},e))}),(0,L.jsx)(`p`,{className:`card__hint`,children:d(`web.ui.cap.skillset_hint`)})]}),(0,L.jsxs)(`footer`,{className:`card__foot`,children:[!p&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,disabled:!a,onClick:()=>n(e.name),children:d(`web.ui.cap.summon`)}),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm card__takeover`,type:`button`,disabled:!a||i,"aria-label":C,title:C,"aria-pressed":i,onClick:()=>r(e.name),children:[(0,L.jsx)(z,{name:`user-round`,size:`sm`}),d(i?`web.ui.cap.take_over_on`:`web.ui.cap.take_over`)]}),s&&(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm card__open`,type:`button`,disabled:c,"aria-label":S,title:S,onClick:()=>s(e.name),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),d(`web.ui.cap.open_session`)]})]}),u&&p&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm card__act`,type:`button`,disabled:h,onClick:b,children:d(`web.ui.cap.role_remove_yes`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__act`,type:`button`,onClick:()=>m(!1),children:d(`web.ui.cap.role_cancel`)})]})]}),_!==void 0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-tone":`error`,role:`alert`,"data-testid":`role-remove-failed`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:_})]}),l!==void 0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:d(`web.ui.cap.open_session_failed`,{detail:l})})]}),f&&(0,L.jsxs)(`p`,{className:`card__notice`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:d(`web.ui.cap.narrowed`,{role:e.name,cut:e.toolsCut.join(d(`web.ui.cap.list_sep`))})})]}),e.skillsCut.length>0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-testid":`role-skills-narrowed`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:d(`web.ui.cap.narrowed_skills`,{role:e.name,cut:e.skillsCut.join(d(`web.ui.cap.list_sep`))})})]})]})}function Pb(e,t){let n=e instanceof Element?e:null;for(;n;){if(n.scrollWidth-n.clientWidth>1){let e=globalThis.getComputedStyle(n).overflowX;if(e===`auto`||e===`scroll`)return!0}if(n===t)return!1;n=n.parentElement}return!1}function Fb({side:e,panelRef:t,scrimRef:n,closeDrawer:r}){v.useEffect(()=>{let i=t.current;if(e===null||!i)return;let a=n.current,o=null,s=(t,n)=>{let r=e===`left`?-t:t;i.style.setProperty(`--drawer-drag`,`${Math.round(r)}px`),a?.style.setProperty(`--drawer-progress`,(1-Math.min(1,t/n)).toFixed(3))},c=()=>{for(let e of[i,a])e?.style.setProperty(`--drawer-settle`,`var(--dur)`);i.style.setProperty(`--drawer-drag`,`0px`),a?.style.setProperty(`--drawer-progress`,`1`)},l=e=>{o=null;let t=e.touches.length===1?e.touches[0]:void 0;if(!t||Pb(e.target,i))return;let n=i.getBoundingClientRect().width;if(!(n<=0)){for(let e of[i,a])e?.style.removeProperty(`--drawer-settle`);o={id:t.identifier,x0:t.clientX,y0:t.clientY,width:n,axis:null,travel:0,mark:{travel:0,at:e.timeStamp},speed:0,speedAt:e.timeStamp}}},u=t=>{if(!o)return;let n=t.touches.length===1?t.touches[0]:void 0;if(!n||n.identifier!==o.id){o=null,c();return}let r=n.clientX-o.x0,i=n.clientY-o.y0;if(o.axis===null){if(Math.abs(r)<10&&Math.abs(i)<10)return;if(Math.abs(i)>=Math.abs(r)){o=null;return}o.axis=`x`}t.preventDefault();let a=Math.max(0,e===`left`?-r:r),l=t.timeStamp-o.mark.at;l>0&&(o.speed=(a-o.mark.travel)/l,o.speedAt=t.timeStamp,o.mark={travel:a,at:t.timeStamp}),o.travel=a,s(a,o.width)},d=e=>{let t=o;if(o=null,!(!t||t.axis===null)){if(e.timeStamp-t.speedAt<=100&&t.speed>=.4||t.travel>=t.width*.5){r();return}c()}},f=()=>{o&&(o=null,c())};return i.addEventListener(`touchstart`,l,{passive:!0}),i.addEventListener(`touchmove`,u,{passive:!1}),i.addEventListener(`touchend`,d,{passive:!0}),i.addEventListener(`touchcancel`,f,{passive:!0}),()=>{i.removeEventListener(`touchstart`,l),i.removeEventListener(`touchmove`,u),i.removeEventListener(`touchend`,d),i.removeEventListener(`touchcancel`,f);for(let e of[i,a])e?.style.removeProperty(`--drawer-drag`),e?.style.removeProperty(`--drawer-progress`),e?.style.removeProperty(`--drawer-settle`)}},[e,t,n,r])}var Ib=1100,Lb=1180;function Rb(e){let t=`(width <= ${e}px)`,n=v.useCallback(e=>{let n=globalThis.matchMedia?.(t);return n?(n.addEventListener(`change`,e),()=>n.removeEventListener(`change`,e)):()=>void 0},[t]),r=v.useCallback(()=>globalThis.matchMedia?.(t).matches??!1,[t]);return v.useSyncExternalStore(n,r,()=>!1)}function zb(){let e=Rb(Ib),t=Rb(Lb),[n,r]=v.useState(!1),[i,a]=v.useState(null),o=v.useRef(null),s=v.useRef(null);return v.useEffect(()=>{a(n=>n===`sidebar`&&!e||n===`inspector`&&!t?null:n)},[e,t]),{inspectorShown:t?i===`inspector`:n,drawer:i,overlaySidebar:e,sidebarRef:o,inspectorRef:s,toggleInspector:v.useCallback(()=>{t?a(e=>e===`inspector`?null:`inspector`):r(e=>!e)},[t]),openInspector:v.useCallback(()=>{t?a(`inspector`):r(!0)},[t]),toggleSidebar:v.useCallback(()=>{a(e=>e===`sidebar`?null:`sidebar`)},[]),closeDrawer:v.useCallback(()=>a(null),[])}}function Bb({panels:e}){let{drawer:t,closeDrawer:n,sidebarRef:r,inspectorRef:i}=e,a=t!==null,o=t===`sidebar`?r:i,s=v.useRef(null);return Fb({side:t===null?null:t===`sidebar`?`left`:`right`,panelRef:o,scrimRef:s,closeDrawer:n}),v.useEffect(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&n()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a,n]),v.useEffect(()=>{if(!a)return;let e=document.activeElement;return o.current?.focus(),()=>{e instanceof HTMLElement&&e.focus()}},[a,o]),a?(0,L.jsx)(`div`,{className:`drawer-scrim`,role:`presentation`,ref:s,onClick:n}):null}function Vb(e,t){for(let n of e){if(n.value===t)return[n];let e=Vb(n.children,t);if(e.length>0)return[n,...e]}return[]}function Hb({items:e,value:t,onPick:n,label:r,placeholder:i,required:a,className:o}){let[s,c]=v.useState(!1),l=v.useRef(null),u=v.useRef(null),d=Vb(e,t),f=[e];for(let e of d)e.children.length>0&&f.push(e.children);let p=v.useCallback(()=>{c(!1),l.current?.focus()},[]);v.useEffect(()=>{if(!s)return;let e=e=>{let t=e.target;t&&l.current?.contains(t)!==!0&&u.current?.contains(t)!==!0&&c(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[s]);let m=d.length>0?d.map(e=>e.label).join(` / `):i;return(0,L.jsxs)(`div`,{className:o===void 0?`cascade`:`cascade ${o}`,children:[(0,L.jsxs)(`button`,{className:`cascade__btn`,type:`button`,ref:l,"aria-label":r,"aria-haspopup":`dialog`,"aria-expanded":s,...a===!0?{"aria-required":`true`}:{},...d.length===0?{"data-empty":`true`}:{},onClick:()=>c(e=>!e),children:[(0,L.jsx)(`span`,{className:`cascade__value`,children:m}),(0,L.jsx)(z,{name:`chevron-down`,size:`sm`})]}),(0,L.jsx)(jt,{open:s,anchorRef:l,onClose:()=>c(!1),className:`cascade__pop`,width:`content`,children:(0,L.jsx)(`div`,{className:`cascade__cols`,ref:u,role:`dialog`,"aria-label":r,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),p())},children:f.map((e,r)=>(0,L.jsx)(`ul`,{className:`cascade__col`,children:e.map(e=>{let i=d[r]?.value===e.value;return(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{className:`cascade__item`,type:`button`,...e.value===t?{"aria-current":`true`}:{},...i?{"data-open":`true`}:{},onClick:()=>{n(e.value),e.children.length===0&&p()},children:[(0,L.jsx)(`span`,{className:`cascade__name`,children:e.label}),e.children.length>0&&(0,L.jsx)(z,{name:`chevron-right`,size:`sm`,"aria-hidden":!0})]})},e.value)})},r))})})]})}function Ub(e){return{entries:Array.from(e?.items??[]).filter(e=>e.kind===`file`).map(e=>e.webkitGetAsEntry?.()??null),files:Array.from(e?.files??[])}}async function Wb(e,t){let n=e.createReader(),r=[];for(;;){let e=await new Promise(e=>{n.readEntries(e,()=>e([]))});if(e.length===0)break;for(let n of e){let e=`${t}/${n.name}`;if(n.isDirectory){r.push(...await Wb(n,e));continue}let i=await new Promise(e=>{n.file(e,()=>e(null))});i&&r.push({path:e,file:i})}}return r}function Gb(e){return Array.from(e??[]).flatMap(e=>{let t=e.webkitRelativePath;return t===``?[]:[{path:t,file:e}]})}function Kb(e){return e[0]?.path.split(`/`)[0]??``}async function qb(e){let t=[];for(let n of e)t.push({path:n.path,data:new Uint8Array(await n.file.arrayBuffer())});return t}function Jb(e){let t=new TextEncoder,n=[],r=[],i=0;for(let a of e){let e=t.encode(a.path),o=Qb(a.data),[s,c]=Xb(),l=new Uint8Array(30+e.length),u=new DataView(l.buffer);u.setUint32(0,67324752,!0),u.setUint16(4,20,!0),u.setUint16(6,2048,!0),u.setUint16(8,0,!0),u.setUint16(10,s,!0),u.setUint16(12,c,!0),u.setUint32(14,o,!0),u.setUint32(18,a.data.length,!0),u.setUint32(22,a.data.length,!0),u.setUint16(26,e.length,!0),u.setUint16(28,0,!0),l.set(e,30);let d=new Uint8Array(46+e.length),f=new DataView(d.buffer);f.setUint32(0,33639248,!0),f.setUint16(4,20,!0),f.setUint16(6,20,!0),f.setUint16(8,2048,!0),f.setUint16(10,0,!0),f.setUint16(12,s,!0),f.setUint16(14,c,!0),f.setUint32(16,o,!0),f.setUint32(20,a.data.length,!0),f.setUint32(24,a.data.length,!0),f.setUint16(28,e.length,!0),f.setUint16(30,0,!0),f.setUint16(32,0,!0),f.setUint16(34,0,!0),f.setUint16(36,0,!0),f.setUint32(38,0,!0),f.setUint32(42,i,!0),d.set(e,46),n.push(l,a.data),r.push(d),i+=l.length+a.data.length}let a=r.reduce((e,t)=>e+t.length,0),o=new Uint8Array(22),s=new DataView(o.buffer);return s.setUint32(0,101010256,!0),s.setUint16(4,0,!0),s.setUint16(6,0,!0),s.setUint16(8,e.length,!0),s.setUint16(10,e.length,!0),s.setUint32(12,a,!0),s.setUint32(16,i,!0),s.setUint16(20,0,!0),Yb([...n,...r,o])}function Yb(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Xb(){let e=new Date,t=Math.max(1980,e.getFullYear())-1980<<9|e.getMonth()+1<<5|e.getDate();return[e.getHours()<<11|e.getMinutes()<<5|e.getSeconds()>>1,t]}var Zb;function Qb(e){if(!Zb){Zb=new Uint32Array(256);for(let e=0;e<256;e+=1){let t=e;for(let e=0;e<8;e+=1)t=t&1?3988292384^t>>>1:t>>>1;Zb[e]=t>>>0}}let t=4294967295;for(let n of e)t=Zb[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}function $b(e){if(typeof e==`object`&&e&&`detail`in e){let t=e.detail;if(typeof t==`string`&&t.length>0)return t}return e instanceof Error?e.message:String(e)}var ex=`epoch-plugin.json`;function tx({client:e,onStaged:t}){let n=R(),[r,i]=v.useState({kind:`idle`}),a=v.useRef(0),[o,s]=v.useState(!1),c=v.useRef(null),l=v.useRef(null),u=v.useRef(!0);v.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let d=()=>{a.current=0,s(!1)},f=r=>{if(r.kind===`bad`)return i({kind:`error`,message:nx(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`archive`?new Uint8Array(await r.file.arrayBuffer()):Jb(await qb(r.files)),o=await e.stagePluginBytes(r.name,a);if(!u.current)return;if(!o.ok||o.path===null)return i({kind:`error`,message:o.detail??n(`web.ui.cap.plug_drop_failed`)});i({kind:`idle`}),t(o.path)}catch(e){u.current&&i({kind:`error`,message:$b(e)})}})()},p=r.kind===`busy`;return(0,L.jsxs)(`div`,{className:`plugdrop`,children:[(0,L.jsxs)(`div`,{className:`plugdrop__box`,"data-over":o?``:void 0,"data-busy":p?``:void 0,onDragEnter:e=>{e.preventDefault(),a.current+=1,s(!0)},onDragOver:e=>{e.preventDefault()},onDragLeave:()=>{--a.current,a.current<=0&&d()},onDrop:e=>{e.preventDefault(),d(),!p&&rx(e.dataTransfer).then(f)},children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),(0,L.jsx)(`p`,{className:`plugdrop__lede`,children:n(o?`web.ui.cap.plug_drop_over`:`web.ui.cap.plug_drop_hint`)}),(0,L.jsxs)(`div`,{className:`plugdrop__acts`,children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>c.current?.click(),children:n(`web.ui.cap.plug_drop_folder`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>l.current?.click(),children:n(`web.ui.cap.plug_drop_archive`)})]}),p&&(0,L.jsx)(`p`,{className:`plugdrop__busy`,children:n(`web.ui.cap.plug_drop_busy`)})]}),(0,L.jsx)(`input`,{ref:c,className:`plugdrop__file`,type:`file`,multiple:!0,webkitdirectory:``,directory:``,onChange:e=>{f(ix(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:pe.join(`,`),onChange:e=>{f(ix(e.target.files,`archive`)),e.target.value=``}}),r.kind===`error`&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r.message})]})]})}function nx(e,t){let n=t.name===``?`—`:t.name;return t.code===`one-only`?e(`web.ui.cap.plug_drop_one`):t.code===`unsupported`?e(`web.ui.cap.plug_drop_unsupported`):t.code===`empty`?e(`web.ui.cap.plug_drop_empty`,{name:n}):t.code===`no-manifest`?e(`web.ui.cap.plug_drop_no_manifest`,{name:n,file:ex}):e(`web.ui.cap.plug_drop_not_archive`,{name:n,suffixes:pe.join(` / `)})}async function rx(e){let{entries:t,files:n}=Ub(e);if(t.length===0||t.length>1)return{kind:`bad`,code:`one-only`,name:``};let r=t[0],i=n[0];if(!r)return i&&N(i.name)?{kind:`archive`,name:i.name,file:i}:{kind:`bad`,code:`unsupported`,name:i?.name??``};if(r.isFile)return i?N(i.name)?{kind:`archive`,name:i.name,file:i}:{kind:`bad`,code:`not-archive`,name:i.name}:{kind:`bad`,code:`one-only`,name:r.name};let a=await Wb(r,r.name);return ax(r.name,a)}function ix(e,t){let n=Array.from(e??[]);if(n.length===0)return{kind:`bad`,code:`one-only`,name:``};if(t===`archive`){let e=n[0];return e?N(e.name)?{kind:`archive`,name:e.name,file:e}:{kind:`bad`,code:`not-archive`,name:e.name}:{kind:`bad`,code:`one-only`,name:``}}let r=Gb(e);return ax(Kb(r),r)}function ax(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:ox(t.map(e=>e.path))?{kind:`folder`,name:`${e||`plugin`}.zip`,files:t}:{kind:`bad`,code:`no-manifest`,name:e}}function ox(e){if(e.includes(ex))return!0;let t=new Set(e.map(e=>e.split(`/`)[0]??``));if(t.size!==1)return!1;let[n]=[...t];return e.includes(`${n}/${ex}`)}function sx({client:e,onBack:t,onPreviewLocal:n}){let r=R();return(0,L.jsxs)(`div`,{className:`plugadd`,children:[(0,L.jsxs)(`div`,{className:`plugadd__head`,children:[(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:t,children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),r(`web.ui.cap.plug_add_back`)]}),(0,L.jsx)(`b`,{className:`plugadd__title`,children:r(`web.ui.cap.plug_add_title`)})]}),(0,L.jsx)(`div`,{className:`plugadd__pane`,children:(0,L.jsx)(tx,{client:e,onStaged:n})})]})}var cx=`none`;function lx(e,t){let n=[],r=new Map,i=(e,t)=>{for(let n of t){let t=r.get(n.id);t===void 0&&(t={id:n.id,label:n.label,children:[]},r.set(n.id,t),e.push(t)),i(t.children,n.children)}};for(let t of e)i(n,t.categories);let a=[...new Set(t.map(e=>e.category).filter(e=>e!==null))].filter(e=>!r.has(e)).sort((e,t)=>e.localeCompare(t));for(let e of a){let t={id:e,label:e,children:[]};r.set(e,t),n.push(t)}let o=(e,t)=>{let n=e.children.map(e=>o(e,t+1)),r=new Set([e.id]);for(let e of n)for(let t of e.ids)r.add(t);return{id:e.id,label:e.label,depth:t,children:n,ids:r}};return n.map(e=>o(e,0))}function ux(e){let t=new Map,n=e=>{for(let r of e)t.set(`c:${r.id}`,r.ids),n(r.children)};return n(e),t}function dx(e,t,n){if(t===`all`)return!0;if(t===`none`)return e===null;let r=n.get(t);return r===void 0||e!==null&&r.has(e)}function fx(e,t,n){return e===`all`?`all`:e===`none`?n?cx:`all`:t.has(e)?e:`all`}function px(e){let t=[],n=e=>{for(let r of e)t.push(r),n(r.children)};return n(e),t}function mx(e,t){return px(e).length+ +!!t>=2}function hx({client:e,onBack:t,options:n}){let r=R(),[i,a]=v.useState();return(0,L.jsxs)(`div`,{className:`plugadd`,children:[(0,L.jsxs)(`div`,{className:`plugadd__head`,children:[(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:()=>i===void 0?t():a(void 0),children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),r(i===void 0?`web.ui.cap.plug_add_back`:`web.ui.cap.plug_upload_reselect`)]}),(0,L.jsx)(`b`,{className:`plugadd__title`,children:r(`web.ui.cap.plug_upload_title`)})]}),i===void 0?(0,L.jsx)(gx,{client:e,onPick:a}):(0,L.jsx)(_x,{client:e,path:i,options:n,onDone:t})]})}function gx({client:e,onPick:t}){return(0,L.jsx)(`div`,{className:`plugadd__pane`,children:(0,L.jsx)(tx,{client:e,onStaged:t})})}function _x({client:e,path:t,options:n,onDone:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState(),[l,u]=v.useState(!1),[d,f]=v.useState(),[p,m]=v.useState({});return v.useEffect(()=>{let n=!0;return f(void 0),e.previewPluginUpload(t).then(e=>{n&&(o(e),m(e.prefill??{}))}).catch(e=>{n&&f(wx(e))}),()=>{n=!1}},[e,t]),(0,L.jsxs)(`div`,{className:`plugadd__pane`,children:[(0,L.jsx)(`p`,{className:`plugupl__target`,children:(0,L.jsx)(`code`,{children:t})}),d!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:d})]}),s===void 0?a===void 0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)}):!a.ok||a.plan===null?(0,L.jsx)(`div`,{className:`plug__result`,children:(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:a.detail??i(`web.ui.cap.plug_upload_preview_failed`)})})}):(0,L.jsx)(vx,{plan:a.plan,busy:l,onConfirm:()=>{l||!a?.ok||a.token===null||(u(!0),f(void 0),e.uploadPlugin(t,a.token,p).then(e=>{c({ok:e.ok,detail:e.detail!==null&&e.detail.length>0?e.detail:i(e.ok?`web.ui.cap.plug_upload_done`:`web.ui.cap.plug_upload_failed`)})}).catch(e=>f(wx(e))).finally(()=>u(!1)))},options:n,form:p,fromManifest:a.fromManifest??[],onField:(e,t)=>m(n=>({...n,[e]:t}))}):(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,...s.ok?{}:{"data-tone":`warn`},children:(0,L.jsx)(`p`,{children:s.detail})}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,onClick:r,children:i(`web.ui.cap.plug_back`)})]})]})}function vx({plan:e,busy:t,onConfirm:n,options:r,form:i,fromManifest:a,onField:o}){let s=R(),c=me.flatMap(e=>{let t=r[e];return t===null?[]:[{name:e,shape:t}]}),l=c.flatMap(({name:e,shape:t})=>t.required&&t.editable&&e!==`visibility`&&(i[e]??``)===``?[e]:[]);return(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`p`,{className:`plug__title`,children:s(`web.ui.cap.plug_upload_will`,{name:e.name,version:e.version})}),e.description&&(0,L.jsx)(`p`,{className:`cap__lede`,children:e.description}),(0,L.jsxs)(`dl`,{className:`plug__facts`,children:[e.author!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:s(`web.ui.cap.plug_author`)}),(0,L.jsx)(`dd`,{children:e.author})]}),(0,L.jsx)(`dt`,{children:s(`web.ui.cap.plug_upload_size`)}),(0,L.jsx)(`dd`,{children:Cx(e.totalBytes)})]}),e.suspicious.length>0&&(0,L.jsxs)(`div`,{className:`note-block`,"data-tone":`warn`,children:[(0,L.jsx)(`p`,{children:(0,L.jsx)(`b`,{children:s(`web.ui.cap.plug_upload_secrets`,{count:e.suspicious.length})})}),(0,L.jsx)(`ul`,{className:`plugupl__secrets`,children:e.suspicious.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))}),(0,L.jsx)(`p`,{children:s(`web.ui.cap.plug_upload_secrets_why`)})]}),(0,L.jsx)(`p`,{className:`plug__brings`,children:s(`web.ui.cap.plug_upload_files`,{count:e.files.length})}),(0,L.jsx)(`ul`,{className:`plugupl__files`,children:e.files.map(e=>(0,L.jsxs)(`li`,{children:[(0,L.jsx)(`code`,{children:e.path}),(0,L.jsx)(`i`,{children:Cx(e.bytes)})]},e.path))}),e.skippedLinks.length>0&&(0,L.jsx)(`p`,{className:`plugupl__skipped`,children:s(`web.ui.cap.plug_upload_skipped`,{count:e.skippedLinks.length,names:e.skippedLinks.join(s(`web.ui.cap.list_sep`))})}),c.length>0&&(0,L.jsx)(`div`,{className:`plugupl__form`,children:c.map(({name:e,shape:t})=>(0,L.jsxs)(v.Fragment,{children:[(0,L.jsxs)(`span`,{className:`plugupl__label`,children:[s(yx[e]),t.required&&t.editable&&(0,L.jsx)(`b`,{className:`plugupl__req`,"aria-hidden":`true`,children:`*`})]}),t.editable?e===`visibility`?(0,L.jsx)(`span`,{className:`plugupl__radios`,children:[`private`,`public`].map(e=>(0,L.jsxs)(`label`,{className:`plugupl__radio`,children:[(0,L.jsx)(`input`,{type:`radio`,name:`plug-upload-visibility`,checked:(i.visibility??`private`)===e,onChange:()=>o(`visibility`,e)}),s(e===`public`?`web.ui.cap.plug_upload_vis_public`:`web.ui.cap.plug_upload_vis_private`)]},e))}):t.choices.length>0?(0,L.jsx)(Hb,{className:`plugupl__pick`,items:xx(t.choices,t.required?null:s(`web.ui.cap.plug_upload_pick_none`)),value:i[e]??``,onPick:t=>o(e,t),label:s(yx[e]),placeholder:s(`web.ui.cap.plug_upload_pick`),required:t.required}):e===`changelog`?(0,L.jsx)(`textarea`,{className:`input plugupl__changelog`,rows:2,value:i.changelog??``,required:t.required,placeholder:s(`web.ui.cap.plug_upload_changelog_placeholder`),onChange:e=>o(`changelog`,e.target.value),"aria-label":s(yx[e])}):(0,L.jsx)(`input`,{className:`input`,type:`text`,value:i[e]??``,required:t.required,placeholder:s(bx[e]),onChange:t=>o(e,t.target.value),"aria-label":s(yx[e])}):(0,L.jsx)(`span`,{className:`plugupl__fixed`,children:Sx(s,e,t.value)}),e===`visibility`&&(i.visibility??`private`)===`public`&&(0,L.jsx)(`span`,{className:`plugupl__hint`,children:s(`web.ui.cap.plug_upload_vis_public_why`)}),a.includes(e)&&(0,L.jsx)(`span`,{className:`plugupl__hint`,children:s(`web.ui.cap.plug_upload_from_manifest`)})]},e))}),(0,L.jsxs)(`div`,{className:`plug__act`,children:[l.length>0&&(0,L.jsx)(`span`,{className:`plugupl__missing`,role:`status`,children:s(`web.ui.cap.plug_upload_required_left`,{fields:l.map(e=>s(yx[e])).join(s(`web.ui.cap.list_sep`))})}),(0,L.jsx)(`button`,{className:`btn btn--primary`,type:`button`,disabled:t||l.length>0,onClick:n,children:s(`web.ui.cap.plug_upload_confirm`)})]})]})}var yx={displayName:`web.ui.cap.plug_upload_f_display_name`,description:`web.ui.cap.plug_upload_f_description`,category:`web.ui.cap.plug_upload_f_category`,homepage:`web.ui.cap.plug_upload_f_homepage`,icon:`web.ui.cap.plug_upload_f_icon`,visibility:`web.ui.cap.plug_upload_visibility`,changelog:`web.ui.cap.plug_upload_changelog`},bx={displayName:`web.ui.cap.plug_upload_f_display_name_hint`,category:`web.ui.cap.plug_upload_f_category_hint`,description:`web.ui.cap.plug_upload_f_description_hint`,homepage:`web.ui.cap.plug_upload_f_homepage_hint`,icon:`web.ui.cap.plug_upload_f_icon_hint`,visibility:`web.ui.cap.plug_upload_visibility`,changelog:`web.ui.cap.plug_upload_changelog_placeholder`};function xx(e,t){let n=e=>({value:e.value,label:e.label,children:e.children.map(n)});return[...t===null?[]:[{value:``,label:t,children:[]}],...e.map(n)]}function Sx(e,t,n){return t===`visibility`?e(n===`public`?`web.ui.cap.plug_upload_vis_public`:`web.ui.cap.plug_upload_vis_private`):n}function Cx(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function wx(e){if(typeof e==`object`&&e&&`detail`in e){let t=e.detail;if(typeof t==`string`&&t.length>0)return t}return e instanceof Error?e.message:String(e)}var Tx={market:`web.ui.cap.plug_tab_market`,installed:`web.ui.cap.plug_tab_installed`},Ex=[`market`,`installed`],Dx={active:`web.ui.cap.plug_state_active`,pending:`web.ui.cap.plug_state_pending`,disabled:`web.ui.cap.plug_state_disabled`,stale:`web.ui.cap.plug_state_stale`,off:`web.ui.cap.plug_state_off`},Ox={listed:`web.ui.cap.plug_status_listed`,reviewing:`web.ui.cap.plug_status_reviewing`,rejected:`web.ui.cap.plug_status_rejected`,offline:`web.ui.cap.plug_status_offline`},kx={off:0,stale:1,pending:2,disabled:3,active:4};function Ax({client:e,query:t,lanExposed:n}){let r=R(),[i,a]=v.useState(),[o,s]=v.useState(),[c,l]=v.useState({kind:`list`}),[u,d]=v.useState(0),[f,p]=v.useState(()=>new Set),[m,h]=v.useState(!1),[g,_]=v.useState(),[y,b]=v.useState(`market`),[x,S]=v.useState(`all`),C=v.useId(),w=Rb(640);v.useEffect(()=>{let t=!0;return s(void 0),e.plugins().then(e=>{t&&a(e)}).catch(e=>{t&&s(Gx(e))}),()=>{t=!1}},[e,u]);let T=()=>{m||(h(!0),_(void 0),Promise.resolve().then(()=>e.refreshPlugins()).then(e=>{if(e.ok){e.plugins&&a(e.plugins),e.detail&&_({tone:`warn`,text:e.detail});return}_({tone:`error`,text:e.detail??r(`web.ui.cap.plug_refresh_failed`)})}).catch(e=>_({tone:`error`,text:Gx(e).detail})).finally(()=>h(!1)))},E=v.useRef(!1);if(v.useEffect(()=>{E.current||n||i===void 0||!i.refreshEnabled||(E.current=!0,T())},[i,n]),o)return(0,L.jsx)(Vx,{failure:o});if(!i)return(0,L.jsx)(`p`,{className:`cap__foot`,children:r(`web.ui.cap.loading`)});if(c.kind===`add`)return(0,L.jsx)(sx,{client:e,onBack:()=>l({kind:`list`}),onPreviewLocal:e=>l({kind:`preview`,mode:`local`,path:e})});if(c.kind===`upload`)return(0,L.jsx)(hx,{client:e,options:i.uploadOptions,onBack:()=>l({kind:`list`})});if(c.kind===`preview`)return(0,L.jsx)(zx,{client:e,screen:c,onBack:()=>l({kind:`list`}),onDone:e=>{d(e=>e+1),p(t=>new Set(t).add(e))}});let D=i.installed.filter(e=>Kx(t,e.name,e.source)).map(e=>({entry:e,state:Lx(e,i.pendingRestart,f.has(e.name))})).sort((e,t)=>kx[e.state]-kx[t.state]||e.entry.name.localeCompare(t.entry.name)),O=i.hits.filter(e=>Kx(t,e.name,e.displayName??``,e.description,e.marketplace,e.author??``,...e.keywords)),ee=lx(i.marketplaces,i.hits),te=ux(ee),k=i.hits.some(e=>e.category===null),ne=fx(x,te,k),re=mx(ee,k),ie=O.filter(e=>dx(e.category,ne,te)),ae=ie.some(e=>e.status!==null||e.visibility!==null||e.downloads!==null);return(0,L.jsxs)(`div`,{className:`plug`,children:[(0,L.jsxs)(`div`,{className:`plug__top`,children:[(0,L.jsx)(jx,{baseId:C,pane:y,onPick:b,counts:{market:ie.length,installed:D.length}}),!n&&(0,L.jsxs)(`div`,{className:`plug__acts`,children:[i.refreshEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__refresh`,type:`button`,disabled:m,onClick:T,children:[m?(0,L.jsx)(`span`,{className:`card__spin`,"aria-hidden":!0}):(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),r(m?`web.ui.cap.plug_refreshing`:`web.ui.cap.plug_refresh`)]}),i.uploadEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__upload`,type:`button`,onClick:()=>l({kind:`upload`}),children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),r(`web.ui.cap.plug_upload`)]}),(0,L.jsxs)(`button`,{className:`btn btn--primary plug__add`,type:`button`,onClick:()=>l({kind:`add`}),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),r(`web.ui.cap.plug_add`)]})]})]}),i.pendingRestart&&(0,L.jsx)(Px,{}),g!==void 0&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":g.tone,role:`status`,children:(0,L.jsx)(`p`,{children:g.text})}),n&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:r(`web.ui.cap.plug_locked_lan`)})}),y===`installed`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${C}-panel`,role:`tabpanel`,"aria-labelledby":`${C}-installed`,children:D.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:r(`web.ui.cap.plug_installed_empty`)}):(0,L.jsx)(`ul`,{className:`cards cards--plug`,...n?{}:{"data-act":`true`},children:D.map(({entry:t,state:r},a)=>{let o=i.hits.find(e=>e.name===t.name&&e.updateAvailable)?.version??null;return(0,L.jsx)(Ix,{entry:t,state:r,hue:Ly(a),canWrite:!n,freshVersion:o,canUpdate:!t.linked&&(!i.refreshEnabled||o!==null),onUpdate:()=>l({kind:`preview`,mode:`update`,name:t.name}),onUninstalled:()=>d(e=>e+1),client:e},t.name)})})},`installed`),y===`market`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${C}-panel`,role:`tabpanel`,"aria-labelledby":`${C}-market`,children:(0,L.jsxs)(`div`,{className:`plug__browse`,...re?{"data-cats":`true`}:{},children:[re&&(0,L.jsx)(Nx,{nodes:ee,current:ne,onPick:S,hasNone:k,narrow:w}),(0,L.jsx)(`div`,{className:`plug__grid`,children:ie.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:r(i.marketplaces.length===0?`web.ui.cap.plug_market_none_added`:`web.ui.cap.plug_market_empty`)}):(0,L.jsx)(`ul`,{className:`cards cards--plug`,...n?{}:{"data-act":`true`},children:ie.map((e,t)=>(0,L.jsx)(Rx,{hit:e,canWrite:!n,hue:Ly(t),reserveCrown:ae,onInstall:()=>l({kind:`preview`,mode:`install`,ref:e.ref}),onUpdate:()=>l({kind:`preview`,mode:`update`,name:e.name})},e.ref))})})]})},`market`)]})}function jx({baseId:e,pane:t,onPick:n,counts:r}){let i=R();return(0,L.jsx)(`div`,{className:`plug__tabs`,role:`tablist`,"aria-label":i(`web.ui.cap.plugins`),children:Ex.map(a=>(0,L.jsxs)(`button`,{id:`${e}-${a}`,className:`plug__tab`,type:`button`,role:`tab`,"aria-selected":t===a,"aria-controls":`${e}-panel`,onClick:()=>n(a),children:[i(Tx[a]),(0,L.jsx)(`span`,{className:`plug__tabn`,children:r[a]})]},a))})}function Mx(e,t,n){let r=e=>({value:`c:${e.id}`,label:e.label,children:e.children.map(r)});return[{value:`all`,label:t(`web.ui.cap.plug_cat_all`),children:[]},...e.map(r),...n?[{value:cx,label:t(`web.ui.cap.plug_cat_none`),children:[]}]:[]]}function Nx({nodes:e,current:t,onPick:n,hasNone:r,narrow:i}){let a=R();if(i)return(0,L.jsxs)(`label`,{className:`plug__filter`,children:[(0,L.jsx)(`span`,{children:a(`web.ui.cap.plug_cat_label`)}),(0,L.jsx)(Hb,{items:Mx(e,a,r),value:t,onPick:n,label:a(`web.ui.cap.plug_cat_label`),placeholder:a(`web.ui.cap.plug_cat_all`)})]});let o=e=>(0,L.jsx)(`ul`,{className:`plug__cattree`,children:e.map(e=>(0,L.jsxs)(`li`,{children:[(0,L.jsx)(`button`,{className:`plug__cat`,type:`button`,style:{"--cat-depth":e.depth},...e.depth===0?{"data-top":`true`}:{},...t===`c:${e.id}`?{"aria-current":`true`}:{},onClick:()=>n(`c:${e.id}`),children:(0,L.jsx)(`span`,{className:`plug__catname`,children:e.label})}),e.children.length>0&&o(e.children)]},e.id))}),s=(e,r)=>(0,L.jsx)(`ul`,{className:`plug__cattree`,children:(0,L.jsx)(`li`,{children:(0,L.jsx)(`button`,{className:`plug__cat`,type:`button`,"data-lead":`true`,style:{"--cat-depth":0},...t===e?{"aria-current":`true`}:{},onClick:()=>n(e),children:(0,L.jsx)(`span`,{className:`plug__catname`,children:r})})})});return(0,L.jsxs)(`nav`,{className:`plug__cats`,"aria-label":a(`web.ui.cap.plug_cat_label`),children:[s(`all`,a(`web.ui.cap.plug_cat_all`)),o(e),r&&s(`none`,a(`web.ui.cap.plug_cat_none`))]})}function Px(){let e=R();return(0,L.jsxs)(`div`,{className:`note-block plug__note plug__restart`,"data-tone":`warn`,role:`status`,children:[(0,L.jsxs)(`p`,{className:`plug__restart-head`,children:[(0,L.jsx)(z,{name:`triangle-alert`,size:`sm`}),(0,L.jsx)(`b`,{children:e(`web.ui.cap.plug_restart`)})]}),(0,L.jsx)(`p`,{children:e(`web.ui.cap.plug_restart_why`)})]})}function Fx({icon:e,hue:t}){return(0,L.jsxs)(`span`,{className:`plug__face`,"data-hue":t,children:[(0,L.jsx)(z,{name:`layers`}),e!==null&&(0,L.jsx)(`img`,{className:`plug__icon`,src:e,alt:``,onError:e=>{e.currentTarget.style.display=`none`}})]})}function Ix({entry:e,state:t,hue:n,canWrite:r,freshVersion:i,canUpdate:a,onUpdate:o,onUninstalled:s,client:c}){let l=R(),[u,d]=v.useState(!1),[f,p]=v.useState(!1),[m,h]=v.useState(),g=e.counts!==null||i!==null,_=e.linked||e.marketplace!==null;return(0,L.jsxs)(`li`,{className:`card card--plug`,"data-state":t,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(Fx,{icon:null,hue:n}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsxs)(`span`,{className:`card__nameline`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.displayName??e.name}),(0,L.jsxs)(`span`,{className:`card__badge`,children:[`@`,e.version]})]}),e.displayName!==null&&(0,L.jsx)(`span`,{className:`card__src plug__key`,children:e.name}),!u&&(0,L.jsxs)(`span`,{className:`card__src card__state`,"data-state":t,children:[(0,L.jsx)(`span`,{className:`card__statedot`,"aria-hidden":!0}),l(Dx[t])]})]})]}),u?(0,L.jsx)(`p`,{className:`card__desc plug__ask`,children:l(`web.ui.cap.plug_uninstall_ask`,{name:e.name})}):g&&(0,L.jsxs)(`p`,{className:`card__meta`,children:[e.counts&&(0,L.jsx)(`span`,{className:`card__stat`,children:Ux(l,e.counts)}),i!==null&&(0,L.jsx)(`span`,{className:`plug__fresh`,children:l(`web.ui.cap.plug_has_update`,{version:i})})]}),m!==void 0&&(0,L.jsx)(`p`,{className:`card__desc plug__err`,children:m}),(_||r)&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[_&&(0,L.jsxs)(`p`,{className:`plug__by`,children:[e.linked&&(0,L.jsx)(`span`,{className:`card__stat`,children:l(`web.ui.cap.plug_linked`)}),e.marketplace!==null&&(0,L.jsx)(`span`,{className:`card__stat`,children:e.marketplace})]}),r&&(u?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm card__act`,type:`button`,disabled:f,onClick:()=>{f||(p(!0),h(void 0),c.uninstallPlugin(e.name).then(e=>{if(e.ok)return s();h(e.detail??``)}).catch(e=>h(Gx(e).detail)).finally(()=>p(!1)))},children:l(`web.ui.cap.plug_uninstall_yes`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__act`,type:`button`,onClick:()=>d(!1),children:l(`web.ui.cap.plug_cancel`)})]}):(0,L.jsxs)(L.Fragment,{children:[a&&(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,onClick:o,children:l(`web.ui.cap.plug_update`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__act`,type:`button`,onClick:()=>d(!0),children:l(`web.ui.cap.plug_uninstall`)})]}))]})]})}function Lx(e,t,n){return e.active?`active`:e.enabled?n?`pending`:t?`stale`:`off`:`disabled`}function Rx({hit:e,hue:t,reserveCrown:n,canWrite:r,onInstall:i,onUpdate:a}){let o=R(),s=Wx(o,e),c=s!==``||!e.installable||e.updateAvailable,l=e.author!==null||e.category!==null;return(0,L.jsxs)(`li`,{className:`card card--plug card--hit`,...e.status===null?{}:{"data-status":e.status},children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(Fx,{icon:e.icon,hue:t}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsxs)(`span`,{className:`card__nameline`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.displayName??e.name}),e.version!==null&&(0,L.jsxs)(`span`,{className:`card__badge`,children:[`@`,e.version]})]}),(0,L.jsxs)(`span`,{className:`card__src plug__key`,children:[e.marketplace,`/`,e.name]})]})]}),(n||e.status!==null||e.visibility!==null||e.downloads!==null)&&(0,L.jsxs)(`p`,{className:`plug__crown`,children:[e.status!==null&&(0,L.jsx)(`span`,{className:`plug__tag plug__status`,"data-status":e.status,children:o(Ox[e.status])}),e.visibility!==null&&(0,L.jsx)(`span`,{className:`plug__tag`,"data-vis":e.visibility,children:o(e.visibility===`public`?`web.ui.cap.plug_vis_public`:`web.ui.cap.plug_vis_private`)}),e.downloads!==null&&(0,L.jsxs)(`span`,{className:`plug__dl`,children:[(0,L.jsx)(z,{name:`arrow-down`,size:`sm`}),e.downloads]})]}),(0,L.jsx)(`p`,{className:`card__desc`,children:e.description||o(`web.ui.cap.plug_no_desc`)}),c&&(0,L.jsxs)(`p`,{className:`card__meta`,children:[s!==``&&(0,L.jsx)(`span`,{className:`card__stat`,children:s}),!e.installable&&(0,L.jsx)(`b`,{className:`plug__warn`,children:o(e.sourceType===null?`web.ui.cap.plug_bad_source`:`web.ui.cap.plug_remote_off`)}),e.updateAvailable&&(0,L.jsx)(`span`,{className:`plug__fresh`,children:o(`web.ui.cap.plug_has_update`,{version:e.version??``})})]}),(l||r)&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[l&&(0,L.jsxs)(`p`,{className:`plug__by`,children:[e.author!==null&&(0,L.jsxs)(`span`,{className:`card__stat plug__author`,title:o(`web.ui.cap.plug_author`),children:[(0,L.jsx)(z,{name:`user-round`,size:`sm`}),e.author]}),e.category!==null&&(0,L.jsx)(`span`,{className:`card__stat`,children:e.category})]}),r&&(e.installed?e.updateAvailable?(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,onClick:a,children:o(`web.ui.cap.plug_update`)}):(0,L.jsx)(`span`,{className:`plug__tag`,children:o(`web.ui.cap.plug_already`)}):(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,disabled:!e.installable,onClick:i,children:o(`web.ui.cap.plug_install`)}))]})]})}function zx({client:e,screen:t,onBack:n,onDone:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState(),[l,u]=v.useState(!1),[d,f]=v.useState(),p=t.mode===`install`?t.ref:t.mode===`local`?t.path:t.name;return v.useEffect(()=>{let n=!0;return f(void 0),(t.mode===`install`?e.previewPluginInstall(t.ref):t.mode===`local`?e.previewLocalPluginInstall(t.path):e.previewPluginUpdate(t.name)).then(e=>{n&&o(e)}).catch(e=>{n&&f(Gx(e).detail)}),()=>{n=!1}},[e,t.mode,p]),(0,L.jsxs)(`div`,{className:`plug__prev`,children:[(0,L.jsxs)(`div`,{className:`plug__prev-head`,children:[(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:n,children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),i(`web.ui.cap.plug_back`)]}),(0,L.jsx)(`b`,{className:`plugadd__title`,children:p})]}),d!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:d})]}),s===void 0?a===void 0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)}):(0,L.jsx)(Bx,{seen:a,mode:t.mode===`update`?`update`:`install`,busy:l,onConfirm:()=>{if(l||!a?.ok||a.token===null)return;u(!0),f(void 0);let n=a.token;(t.mode===`install`?e.installPlugin(t.ref,n):t.mode===`local`?e.installLocalPlugin(t.path,n):e.updatePlugin(t.name,n)).then(e=>{c({ok:e.ok,detail:e.detail??i(t.mode===`update`?`web.ui.cap.plug_done_update`:`web.ui.cap.plug_done`,{name:e.entry?.name??p,version:e.entry?.version??``})}),e.ok&&r(e.entry?.name??(t.mode===`update`?t.name:``))}).catch(e=>f(Gx(e).detail)).finally(()=>u(!1))}}):(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,...s.ok?{}:{"data-tone":`warn`},children:(0,L.jsx)(`p`,{children:s.detail})}),s.ok&&(0,L.jsx)(Px,{}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,onClick:n,children:i(`web.ui.cap.plug_back`)})]})]})}function Bx({seen:e,mode:t,busy:n,onConfirm:r}){let i=R();if(!e.ok||e.preview===null)return(0,L.jsx)(`div`,{className:`plug__result`,children:(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.detail??i(`web.ui.cap.plug_preview_failed`)})})});let a=e.preview,o=a.commands.length===0&&a.roles.length===0&&a.skills.length===0&&a.hooks.length===0&&a.mcpServers.length===0&&a.denyRules===0;return(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`p`,{className:`plug__title`,children:i(t===`install`?`web.ui.cap.plug_will_install`:`web.ui.cap.plug_will_update`,{name:a.name,version:a.version})}),a.description&&(0,L.jsx)(`p`,{className:`cap__lede`,children:a.description}),(0,L.jsxs)(`dl`,{className:`plug__facts`,children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_source`)}),(0,L.jsxs)(`dd`,{children:[(0,L.jsx)(`code`,{children:a.source}),` `,(0,L.jsxs)(`i`,{children:[`(`,a.sourceType,`)`]})]}),a.checksum!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_checksum`)}),(0,L.jsx)(`dd`,{children:(0,L.jsx)(`code`,{children:a.checksum})})]}),a.author!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_author`)}),(0,L.jsx)(`dd`,{children:a.author})]}),a.homepage!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_homepage`)}),(0,L.jsx)(`dd`,{children:a.homepage})]})]}),(0,L.jsx)(`p`,{className:`plug__brings`,children:i(`web.ui.cap.plug_brings`)}),(0,L.jsxs)(`ul`,{className:`plug__inv`,children:[o&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_brings_nothing`)}),a.commands.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_commands`,{count:a.commands.length,names:Hx(i,a.commands)})}),a.roles.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_roles`,{count:a.roles.length,names:Hx(i,a.roles)})}),a.skills.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_skills`,{count:a.skills.length,names:Hx(i,a.skills)})}),a.hooks.length>0&&(0,L.jsx)(`li`,{className:`plug__danger`,children:i(`web.ui.cap.plug_inv_hooks`,{count:a.hooks.reduce((e,t)=>e+t.count,0),tally:Hx(i,a.hooks.map(e=>`${e.type} × ${e.count}`))})}),a.mcpServers.length>0&&(0,L.jsx)(`li`,{className:`plug__danger`,children:i(`web.ui.cap.plug_inv_mcp`,{count:a.mcpServers.length,names:Hx(i,a.mcpServers)})}),a.denyRules>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_deny`,{count:a.denyRules})}),a.ignoredBuckets.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_ignored`,{buckets:Hx(i,a.ignoredBuckets)})}),a.hasJsTools&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_js`)})]}),a.conflict!==null&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.cap.plug_conflict`,{name:a.conflict.name,version:a.conflict.version})})}),(0,L.jsxs)(`div`,{className:`plug__act`,children:[(0,L.jsx)(`p`,{className:`plug__pending-hint`,children:i(`web.ui.cap.plug_pending_hint`)}),(0,L.jsx)(`button`,{className:`btn btn--primary`,type:`button`,disabled:n||a.conflict!==null,onClick:r,children:i(t===`install`?`web.ui.cap.plug_confirm`:`web.ui.cap.plug_confirm_update`)})]})]})}function Vx({failure:e}){let t=R();return e.code===`no-plugin-control`?(0,L.jsx)(`div`,{className:`plug`,children:(0,L.jsxs)(`div`,{className:`note-block`,children:[(0,L.jsx)(`p`,{children:(0,L.jsx)(`b`,{children:t(`web.ui.cap.plug_no_path`)})}),(0,L.jsx)(`p`,{children:e.detail})]})}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:e.detail})]})}function Hx(e,t){return t.join(e(`web.ui.cap.list_sep`))}function Ux(e,t){let n=[],r=(t,r)=>{t>0&&n.push(e(r,{count:t}))};return r(t.commands,`web.ui.cap.plug_n_commands`),r(t.roles,`web.ui.cap.plug_n_roles`),r(t.skills,`web.ui.cap.plug_n_skills`),r(t.hooks,`web.ui.cap.plug_n_hooks`),r(t.denyRules,`web.ui.cap.plug_n_deny`),r(t.mcpServers,`web.ui.cap.plug_n_mcp`),n.length===0?e(`web.ui.cap.plug_brings_nothing`):n.join(` · `)}function Wx(e,t){return t.likes===null?``:e(`web.ui.cap.plug_likes`,{count:t.likes})}function Gx(e){let t=e,n=typeof t?.code==`string`?t.code:``,r=typeof t?.detail==`string`&&t.detail.length>0?t.detail:``;return r?{code:n,detail:r}:{code:n,detail:e instanceof Error?e.message:String(e)}}function Kx(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function qx(e){let t=R(),[n,r]=v.useState({kind:`idle`}),{client:i,sessionId:a,root:o,want:s,available:c,onRecheck:l}=e;return!c||!i||a===void 0?(0,L.jsx)(`div`,{className:`locked__act`,children:(0,L.jsx)(ob,{cmd:`epoch trust add ${o}${s===`exec`?` --exec`:``}`})}):(0,L.jsx)(`div`,{className:`locked__act`,children:n.kind===`asked`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`locked__why`,children:t(`web.ui.trust.asked`)}),l&&(0,L.jsx)(`button`,{type:`button`,className:`btn`,onClick:l,children:t(`web.ui.trust.recheck`)})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>{r({kind:`asking`}),i.requestTrust(a,o,s).then(()=>r({kind:`asked`})).catch(e=>{r({kind:`failed`,message:e instanceof Error?e.message:t(`web.ui.trust.ask_failed`)})})},disabled:n.kind===`asking`,children:t(s===`exec`?`web.ui.trust.ask_exec`:`web.ui.trust.ask_read`)}),n.kind===`failed`&&(0,L.jsx)(`p`,{className:`locked__why`,children:n.message})]})})}function Jx({inventory:e,tier:t}){let n=R(),r=[];return t===`read`?(e.instructionFiles.length>0&&r.push(n(`web.ui.trust.n_instructions`,{n:e.instructionFiles.length})),e.skills>0&&r.push(n(`web.ui.trust.n_skills`,{n:e.skills})),e.roles>0&&r.push(n(`web.ui.trust.n_roles`,{n:e.roles})),e.commands>0&&r.push(n(`web.ui.trust.n_commands`,{n:e.commands}))):(e.hookFiles.length>0&&r.push(n(`web.ui.trust.n_hooks`,{files:e.hookFiles.join(`, `)})),e.policies>0&&r.push(n(`web.ui.trust.n_policies`,{n:e.policies})),e.settingsFiles.length>0&&r.push(n(`web.ui.trust.n_settings`,{files:e.settingsFiles.join(`, `)}))),r.length===0?null:(0,L.jsx)(`ul`,{className:`locked__list`,children:r.map(e=>(0,L.jsx)(`li`,{children:e},e))})}function Yx({client:e,onStaged:t}){let n=R(),[r,i]=v.useState({kind:`idle`}),a=v.useRef(0),[o,s]=v.useState(!1),c=v.useRef(null),l=v.useRef(null),u=v.useRef(!0);v.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let d=()=>{a.current=0,s(!1)},f=r=>{if(r.kind===`bad`)return i({kind:`error`,message:Xx(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`file`?new Uint8Array(await r.file.arrayBuffer()):Jb(await qb(r.files)),o=await e.stageSkillBytes(r.name,a);if(!u.current)return;if(!o.ok||o.path===null)return i({kind:`error`,message:o.detail??n(`web.ui.cap.skill_drop_failed`)});i({kind:`idle`}),t(o.path)}catch(e){u.current&&i({kind:`error`,message:$b(e)})}})()},p=r.kind===`busy`;return(0,L.jsxs)(`div`,{className:`plugdrop`,children:[(0,L.jsxs)(`div`,{className:`plugdrop__box`,"data-over":o?``:void 0,"data-busy":p?``:void 0,onDragEnter:e=>{e.preventDefault(),a.current+=1,s(!0)},onDragOver:e=>{e.preventDefault()},onDragLeave:()=>{--a.current,a.current<=0&&d()},onDrop:e=>{e.preventDefault(),d(),!p&&Zx(e.dataTransfer).then(f)},children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),(0,L.jsx)(`p`,{className:`plugdrop__lede`,children:n(o?`web.ui.cap.skill_drop_over`:`web.ui.cap.skill_drop_hint`)}),(0,L.jsxs)(`div`,{className:`plugdrop__acts`,children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>c.current?.click(),children:n(`web.ui.cap.skill_drop_folder`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>l.current?.click(),children:n(`web.ui.cap.skill_drop_file`)})]}),p&&(0,L.jsx)(`p`,{className:`plugdrop__busy`,children:n(`web.ui.cap.skill_drop_busy`)})]}),(0,L.jsx)(`input`,{ref:c,className:`plugdrop__file`,type:`file`,multiple:!0,webkitdirectory:``,directory:``,onChange:e=>{f(Qx(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:de.join(`,`),onChange:e=>{f(Qx(e.target.files,`file`)),e.target.value=``}}),r.kind===`error`&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r.message})]})]})}function Xx(e,t){let n=t.name===``?`—`:t.name;return t.code===`one-only`?e(`web.ui.cap.skill_drop_one`):t.code===`unreadable`?e(`web.ui.cap.skill_drop_unreadable`):t.code===`empty`?e(`web.ui.cap.skill_drop_empty`,{name:n}):e(`web.ui.cap.skill_drop_not_supported`,{name:n,suffixes:de.join(` / `)})}async function Zx(e){let{entries:t,files:n}=Ub(e);if(t.length===0||t.length>1)return{kind:`bad`,code:`one-only`,name:``};let r=t[0],i=n[0];if(!r)return i&&fe(i.name)?{kind:`file`,name:i.name,file:i}:{kind:`bad`,code:`unreadable`,name:i?.name??``};if(r.isFile)return i?fe(i.name)?{kind:`file`,name:i.name,file:i}:{kind:`bad`,code:`not-supported`,name:i.name}:{kind:`bad`,code:`one-only`,name:r.name};let a=await Wb(r,r.name);return $x(r.name,a)}function Qx(e,t){let n=Array.from(e??[]);if(n.length===0)return{kind:`bad`,code:`one-only`,name:``};if(t===`file`){let e=n[0];return e?fe(e.name)?{kind:`file`,name:e.name,file:e}:{kind:`bad`,code:`not-supported`,name:e.name}:{kind:`bad`,code:`one-only`,name:``}}let r=Gb(e);return $x(Kb(r),r)}function $x(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:{kind:`folder`,name:`${e||`skills`}.zip`,files:t}}var eS={markdown:`web.ui.cap.import_form_markdown`,"skill-dir":`web.ui.cap.import_form_skill-dir`,tree:`web.ui.cap.import_form_tree`,archive:`web.ui.cap.import_form_archive`};function tS({client:e,onBack:t,onImported:n,nativeDirPicker:r=!1,lanExposed:i=!1}){let a=R(),[o,s]=v.useState(``),[c,l]=v.useState(),[u,d]=v.useState(),[f,p]=v.useState(!1),[m,h]=v.useState(),[g,_]=v.useState(!1),y=Kt(e,g),b=$t(e,r),x=t=>{let n=(t??o).trim();f||n.length===0||(p(!0),d(void 0),h(void 0),e.previewSkillImport(n).then(l).catch(e=>h(sS(e))).finally(()=>p(!1)))};return(0,L.jsxs)(`div`,{className:`skimport`,children:[(0,L.jsxs)(`div`,{className:`skimport__head`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm skimport__back`,type:`button`,onClick:t,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),a(`web.ui.cap.skill_back`)]}),(0,L.jsx)(`b`,{className:`skimport__title`,children:a(`web.ui.cap.import_title`)})]}),(0,L.jsx)(`p`,{className:`cap__lede`,children:a(`web.ui.cap.import_lede`)}),(0,L.jsxs)(`p`,{className:`note`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-help`,size:`sm`})}),(0,L.jsx)(`span`,{children:a(i?`web.ui.cap.import_hint_lan`:`web.ui.cap.import_hint_local`)})]}),(0,L.jsxs)(`form`,{className:`skimport__form`,onSubmit:e=>{e.preventDefault(),x()},children:[(0,L.jsx)(`input`,{className:`input input--mono skimport__path`,type:`text`,value:o,spellCheck:!1,placeholder:a(`web.ui.cap.import_placeholder`),onChange:e=>s(e.target.value),"aria-label":a(`web.ui.cap.import_path_label`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`submit`,disabled:f||o.trim().length===0,children:a(`web.ui.cap.import_look`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm skimport__pick`,type:`button`,disabled:b.busy,onClick:()=>{if(g)return _(!1);if(!b.available)return _(!0);b.run().then(e=>{if(e.kind===`picked`)return s(e.path);e.kind!==`canceled`&&(h(e.message),_(!0))})},children:a(g?`web.ui.cap.import_browse_off`:`web.ui.cap.import_browse`)})]}),g&&(0,L.jsx)(nS,{browser:y,onPick:s}),!i&&(0,L.jsx)(Yx,{client:e,onStaged:e=>x(e)}),m!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:m})]}),u===void 0?c!==void 0&&(0,L.jsx)(rS,{preview:c,busy:f,onConfirm:()=>{f||!c?.ok||(p(!0),h(void 0),e.importSkills(c.source,c.token).then(e=>{d(e),e.imported.length>0&&n()}).catch(e=>h(sS(e))).finally(()=>p(!1)))}}):(0,L.jsx)(aS,{done:u,onAgain:()=>d(void 0)})]})}function nS({browser:e,onPick:t}){let n=R(),{view:r,go:i,showHidden:a,setShowHidden:o}=e;return(0,L.jsxs)(`div`,{className:`skimport__browse`,children:[(0,L.jsxs)(`div`,{className:`skimport__crumb`,children:[(0,L.jsx)(`span`,{title:r.state===`ready`?r.path??``:``,children:r.state===`ready`?r.path??n(`web.ui.dirpick.anchors`):``}),r.state===`ready`&&r.path!==null&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>t(r.path??``),children:n(`web.ui.cap.import_pick_here`)})]}),r.state===`ready`&&r.path!==null&&(0,L.jsx)(Wt,{on:a,hidden:r.hidden,onToggle:o,className:`skimport__hidden`}),r.state===`loading`&&(0,L.jsx)(`p`,{className:`cap__foot`,children:n(`web.ui.dirpick.loading`)}),r.state===`error`&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r.message})]}),r.state===`ready`&&(0,L.jsxs)(`ul`,{className:`skimport__dirs`,children:[r.parent!==null&&(0,L.jsx)(`li`,{children:(0,L.jsx)(`button`,{className:`skimport__dir`,type:`button`,onClick:()=>i(r.parent??void 0),children:n(`web.ui.dirpick.up`)})}),r.entries.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`button`,{className:`skimport__dir`,type:`button`,disabled:!e.readable,title:e.path,onClick:()=>i(e.path),children:e.name})},e.path)),r.omitted>0&&(0,L.jsx)(`li`,{className:`skimport__omitted`,children:n(`web.ui.dirpick.omitted`,{count:r.omitted})})]})]})}function rS({preview:e,busy:t,onConfirm:n}){let r=R();if(!e.ok)return(0,L.jsxs)(`div`,{className:`skimport__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.detail??r(`web.ui.cap.import_failed`)})}),(0,L.jsx)(oS,{issues:e.issues,title:r(`web.ui.cap.import_issues`)})]});let i=e.skills.filter(e=>e.conflict?.verdict!==`refuse`);return(0,L.jsxs)(`div`,{className:`skimport__result`,children:[(0,L.jsx)(`p`,{className:`skimport__count`,children:r(`web.ui.cap.import_count`,{count:i.length,form:r(eS[e.form??`tree`])})}),(0,L.jsx)(`ul`,{className:`slots`,children:e.skills.map(e=>(0,L.jsx)(iS,{skill:e},`${e.category}/${e.name}`))}),(0,L.jsx)(oS,{issues:e.issues,title:r(`web.ui.cap.import_issues`)}),(0,L.jsx)(`div`,{className:`skimport__act`,children:(0,L.jsx)(`button`,{className:`btn btn--primary btn--sm`,type:`button`,disabled:t||i.length===0,onClick:n,children:r(`web.ui.cap.import_confirm`,{count:i.length})})})]})}function iS({skill:e}){let t=R(),n=e.conflict;return(0,L.jsxs)(`li`,{className:`slot`,"data-conflict":n?.verdict??void 0,children:[(0,L.jsxs)(`span`,{className:`slot__path`,children:[(0,L.jsxs)(`i`,{children:[e.category,`/`]}),(0,L.jsx)(`b`,{children:e.name})]}),(0,L.jsxs)(`span`,{className:`slot__desc`,children:[e.description||t(`web.ui.cap.import_no_desc`),n&&(0,L.jsx)(`b`,{className:`skimport__warn`,children:t(n.verdict===`refuse`?`web.ui.cap.import_conflict_refuse`:`web.ui.cap.import_conflict_shadowed`)})]}),(0,L.jsx)(`span`,{className:`slot__stat`,children:t(`web.ui.cap.import_files`,{files:e.files,bytes:e.bytes})})]})}function aS({done:e,onAgain:t}){let n=R();return(0,L.jsxs)(`div`,{className:`skimport__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,...e.ok?{}:{"data-tone":`warn`},children:(0,L.jsx)(`p`,{children:e.detail??n(`web.ui.cap.import_done`,{count:e.imported.length,skipped:e.skipped.length})})}),e.imported.length>0&&(0,L.jsx)(`ul`,{className:`skimport__names`,children:e.imported.map(e=>(0,L.jsx)(`li`,{children:e},e))}),(0,L.jsx)(oS,{issues:e.skipped,title:n(`web.ui.cap.import_skipped`)}),(0,L.jsx)(`div`,{className:`skimport__act`,children:(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:t,children:n(`web.ui.cap.import_again`)})})]})}function oS({issues:e,title:t}){return e.length===0?null:(0,L.jsxs)(`div`,{className:`skimport__issues`,children:[(0,L.jsx)(`p`,{className:`skimport__issues-head`,children:t}),(0,L.jsx)(`ul`,{children:e.map((e,t)=>(0,L.jsxs)(`li`,{children:[(0,L.jsx)(`code`,{children:e.path}),(0,L.jsx)(`span`,{children:e.message})]},`${e.path}-${t}`))})]})}function sS(e){let t=e?.detail;return typeof t==`string`&&t.length>0?t:e instanceof Error?e.message:String(e)}var cS=[{scope:`user`,title:`web.ui.cap.g_user`,note:`web.ui.cap.g_user_skills`},{scope:`plugin`,title:`web.ui.cap.g_plugin`,note:`web.ui.cap.g_plugin_skills`},{scope:`host`,title:`web.ui.cap.g_host`,note:`web.ui.cap.g_host_skills`},{scope:`project`,title:`web.ui.cap.g_project`,note:`web.ui.cap.g_project_skills`}];function lS({skills:e,project:t,client:n,sessionId:r,onWrote:i,nativeDirPicker:a,lanExposed:o}){let s=R(),[c,l]=v.useState(),[u,d]=v.useState(!1),[f,p]=v.useState(),m=n!==void 0&&r!==void 0,h=n!==void 0&&i!==void 0,g=e.filter(e=>e.residency===`capped`).length,_=e.filter(e=>e.residency===`role`).length;return c!==void 0&&n&&r?(0,L.jsx)(dS,{client:n,sessionId:r,name:c,onBack:()=>l(void 0)}):u&&n&&i?(0,L.jsx)(tS,{client:n,onBack:()=>d(!1),onImported:i,...o===void 0?{}:{lanExposed:o},...a===void 0?{}:{nativeDirPicker:a}}):(0,L.jsxs)(L.Fragment,{children:[g>0&&(0,L.jsxs)(`p`,{className:`note`,"data-testid":`skills-capped-note`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`info`,size:`sm`})}),(0,L.jsx)(`span`,{children:s(`web.ui.cap.skills_capped_note`,{count:g})})]}),_>0&&(0,L.jsxs)(`p`,{className:`note`,"data-testid":`skills-role-note`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`info`,size:`sm`})}),(0,L.jsx)(`span`,{children:s(`web.ui.cap.skills_role_note`,{count:_})})]}),h&&(0,L.jsx)(`div`,{className:`skimport__entry`,children:(0,L.jsxs)(`button`,{className:`btn btn--sm`,type:`button`,onClick:()=>d(!0),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),s(`web.ui.cap.import_entry`)]})}),f&&(0,L.jsxs)(`div`,{className:`note-block skills__removed`,"data-testid":`skill-removed-note`,children:[(0,L.jsx)(`p`,{children:s(`web.ui.cap.skill_removed`,{name:f.name})}),(0,L.jsx)(`p`,{children:(0,L.jsx)(`code`,{children:f.path})})]}),cS.map(a=>{let o=e.filter(e=>e.scope===a.scope),c=a.scope===`project`&&t.root!==null&&!t.trusted;return o.length===0&&!c?null:(0,L.jsx)(sb,{title:s(a.title),note:s(a.note),...a.scope===`user`?{tip:s(`web.ui.cap.no_toggle`)}:{},trust:a.scope===`project`&&t.root!==null?t:null,children:c?(0,L.jsx)(fS,{root:t.root??``,project:t,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}}):(0,L.jsx)(`ul`,{className:`slots`,...m||h&&a.scope===`user`?{"data-act":``}:{},children:o.map(e=>(0,L.jsx)(uS,{skill:e,...m?{onView:()=>l(e.name)}:{},...h&&a.scope===`user`&&n&&i?{remove:{client:n,onRemoved:t=>{p({name:e.name,path:t}),i()}}}:{}},`${e.category}/${e.name}`))})},a.scope)})]})}function uS({skill:e,onView:t,remove:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(!1),[c,l]=v.useState();return(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsxs)(`span`,{className:`slot__path`,children:[(0,L.jsxs)(`i`,{children:[e.category,`/`]}),(0,L.jsx)(`b`,{children:e.name})]}),(0,L.jsxs)(`span`,{className:`slot__desc`,children:[i?(0,L.jsx)(`b`,{className:`skill__ask`,children:r(`web.ui.cap.skill_remove_ask`,{name:e.name})}):e.description,c!==void 0&&(0,L.jsx)(`b`,{className:`skill__err`,children:c})]}),(0,L.jsx)(`span`,{className:`slot__stat`,"data-residency":e.residency,children:e.residency===`indexed`?r(`web.ui.cap.skill_tokens`,{tokens:e.tokens}):r(`web.ui.cap.skill_unindexed`)}),(t||n)&&(0,L.jsx)(`span`,{className:`slot__act`,children:i?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:o,onClick:()=>{!n||o||(s(!0),l(void 0),n.client.removeSkill(e.name).then(e=>{if(e.ok)return n.onRemoved(e.path??``);l(e.detail??``),a(!1)}).catch(e=>{l(e instanceof Error?e.message:String(e)),a(!1)}).finally(()=>s(!1)))},children:r(`web.ui.cap.skill_remove_yes`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>a(!1),children:r(`web.ui.cap.skill_cancel`)})]}):(0,L.jsxs)(L.Fragment,{children:[t&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:t,children:r(`web.ui.cap.skill_view`)}),n&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>a(!0),children:r(`web.ui.cap.skill_remove`)})]})})]})}function dS({client:e,sessionId:t,name:n,onBack:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState();return v.useEffect(()=>{let r=!0;return o(void 0),c(void 0),e.skillBody(t,n).then(e=>{r&&o({text:e.body,truncated:e.truncated,bytes:e.bytes})}).catch(e=>{r&&c(e instanceof Error?e.message:String(e))}),()=>{r=!1}},[e,t,n]),(0,L.jsxs)(`div`,{className:`skillbody`,children:[(0,L.jsxs)(`div`,{className:`skillbody__head`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:r,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),i(`web.ui.cap.skill_back`)]}),(0,L.jsx)(`b`,{className:`skillbody__name`,children:n})]}),(0,L.jsx)(`p`,{className:`skillbody__note`,children:i(`web.ui.cap.skill_view_no_count`)}),s===void 0?a===void 0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)}):(0,L.jsxs)(L.Fragment,{children:[a.truncated&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.cap.skill_truncated`,{bytes:a.bytes})})}),(0,L.jsx)(w_,{text:a.text}),(0,L.jsx)(`p`,{className:`skillbody__size`,children:i(`web.ui.cap.skill_bytes`,{bytes:a.bytes})})]}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:s})]})]})}function fS({root:e,project:t,client:n,sessionId:r,onRecheck:i}){let a=R();return(0,L.jsxs)(`div`,{className:`locked`,children:[(0,L.jsx)(`p`,{className:`locked__line`,children:a(`web.ui.cap.locked_line`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:a(`web.ui.cap.locked_why`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:a(`web.ui.cap.locked_gate`)}),(0,L.jsx)(Jx,{inventory:t.inventory,tier:`read`}),(0,L.jsx)(qx,{root:e,want:`read`,available:t.trustRequest,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}})]})}var pS=[{id:`experts`,icon:`user-round`,title:`web.ui.cap.experts`,tip:`web.ui.cap.experts_lede`},{id:`skills`,icon:`sparkles`,title:`web.ui.cap.skills`,tip:`web.ui.cap.skills_lede`},{id:`connectors`,icon:`blocks`,title:`web.ui.cap.connectors`,tip:`web.ui.cap.connectors_lede`},{id:`plugins`,icon:`layers`,title:`web.ui.cap.plugins`,tip:`web.ui.cap.plug_lede`}];function mS(e){return pS.find(t=>t.id===e)?.title??``}function hS(e){return pS.find(t=>t.id===e)?.tip??``}function gS({client:e,sessionId:t,tab:n,onBack:r,sidebar:i,onSummon:a,onTakeOver:o,pinnedRole:s,canSummon:c,newSession:l,lanExposed:u,nativeDirPicker:d}){let f=R(),[p,m]=v.useState(``),[h,g]=v.useState(),[_,y]=v.useState(),[b,x]=v.useState(0);v.useEffect(()=>{if(!t)return;let n=!0;return y(void 0),e.capabilities(t).then(e=>{n&&g(e)}).catch(e=>{n&&y(e instanceof Error?e.message:String(e))}),()=>{n=!1}},[e,t,b]);let S=n===`experts`?h?.roles.length:n===`skills`?h?.skills.length:n===`connectors`?h&&h.builtinConnectors.length+h.mcpServers.length:void 0;return(0,L.jsxs)(`section`,{className:`panelcol`,"data-tab":n,children:[(0,L.jsxs)(`div`,{className:`panelcol__head`,children:[i&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon panelcol__nav`,type:`button`,"aria-pressed":i.open,"aria-label":f(`web.ui.topbar.sidebar`),title:f(`web.ui.topbar.sidebar`),onClick:i.onToggle,children:(0,L.jsx)(z,{name:`panel-right`})}),(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:r,children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),f(`web.ui.cap.back`)]}),(0,L.jsxs)(`h1`,{className:`panelcol__title cap__title`,children:[f(mS(n)),(0,L.jsx)(bt,{text:f(hS(n)),about:f(mS(n))})]}),(0,L.jsx)(`span`,{className:`panelcol__n`,children:S??``}),(0,L.jsxs)(`label`,{className:`cap__search`,children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`search`,value:p,onChange:e=>m(e.target.value),placeholder:f(`web.ui.cap.search`),"aria-label":f(`web.ui.cap.search`)})]})]}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:(0,L.jsx)(`div`,{className:`cap__pane`,children:(0,L.jsx)(_S,{onWrote:()=>x(e=>e+1),tab:n,query:p.trim().toLowerCase(),data:h,..._===void 0?{}:{error:_},client:e,...t===void 0?{}:{sessionId:t},onSummon:a,onTakeOver:o,...s===void 0?{}:{pinnedRole:s},canSummon:c,...l?{newSession:l}:{},lanExposed:u,...d===void 0?{}:{nativeDirPicker:d}})})})]})}function _S({tab:e,query:t,data:n,error:r,client:i,sessionId:a,onSummon:o,onTakeOver:s,pinnedRole:c,canSummon:l,newSession:u,onWrote:d,lanExposed:f,nativeDirPicker:p}){let m=R();if(e===`plugins`)return(0,L.jsx)(Ax,{client:i,query:t,lanExposed:f});if(a===void 0)return(0,L.jsx)(`p`,{className:`cap__foot`,children:m(`web.ui.cap.no_session`)});if(r)return(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r})]});if(!n)return(0,L.jsx)(`p`,{className:`cap__foot`,children:m(`web.ui.cap.loading`)});if(e===`experts`){let e=n.roles.filter(e=>vS(t,e.name,e.description)||(e.tools??[]).some(e=>vS(t,e))||e.toolsCut.some(e=>vS(t,e)));return(0,L.jsx)(Mb,{roles:e,project:n.project,onSummon:o,onTakeOver:s,...c===void 0?{}:{pinnedRole:c},canSummon:l,...u?{newSession:u}:{},client:i,lanExposed:f,onWrote:d})}if(e===`skills`){let e=n.skills.filter(e=>vS(t,e.name,e.category,e.description));return(0,L.jsx)(lS,{skills:e,project:n.project,client:i,sessionId:a,onWrote:d,lanExposed:f,...p===void 0?{}:{nativeDirPicker:p}})}return(0,L.jsx)(Tb,{builtin:n.builtinConnectors.filter(e=>vS(t,e.name)),mcp:n.mcpServers.filter(e=>vS(t,e.name)),client:i,lanExposed:f})}function vS(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function yS(e,t,n){let[r,i]=v.useState();return v.useEffect(()=>{if(!t)return;let n=!0;return Promise.resolve().then(()=>e.plugins()).then(e=>{n&&i(e.hits.filter(e=>e.installed&&e.updateAvailable).length)}).catch(()=>{n&&i(void 0)}),()=>{n=!1}},[e,t,n]),r}var bS=[],xS=[];function SS(e){return e.length===0?xS:e.map(e=>({kind:`prompt`,name:e.name,description:e.description,...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint}}))}function CS(e,t){let[n,r]=v.useState(bS);return v.useEffect(()=>{if(!e||!t){r(bS);return}let n=!0;return e.commands(t).then(e=>{n&&r(e.commands)}).catch(()=>{n&&r(bS)}),()=>{n=!1}},[e,t]),n}function wS(e,t){if(!t.startsWith(`/`)||t.includes(`
375
- `))return xS;let n=t.slice(1);if(/\s/.test(n))return xS;let r=n.toLowerCase();return r?e.filter(e=>e.name.startsWith(r)):e}function TS(e,t){return e.length===0?t:t.length===0?e:[...e,...t]}function ES(e){return`/${e.name} `}function DS(e){return`cmdopt-${e}`}var OS=`cmdpalette`;function kS({matched:e,activeIndex:t,onPick:n,onHover:r}){let i=R(),a=Pt(t,e.length,r);return(0,L.jsx)(`ul`,{ref:a.ref,id:OS,className:`cmdpalette`,role:`listbox`,"aria-label":i(`web.ui.composer.commands_label`),children:e.map((e,r)=>(0,L.jsxs)(`li`,{id:DS(e.name),role:`option`,"aria-selected":r===t,className:`cmdpalette__row`,"data-active":r===t?`on`:void 0,"data-kind":e.kind,onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:e=>a.hover(r,e),children:[(0,L.jsxs)(`span`,{className:`cmdpalette__name`,children:[`/`,e.name]}),e.kind===`prompt`&&e.argumentHint&&(0,L.jsx)(`span`,{className:`cmdpalette__hint`,children:e.argumentHint}),(0,L.jsx)(`span`,{className:`cmdpalette__desc`,children:e.description})]},e.name))})}function AS(e,t){return t.ran?t.after>=t.before?{command:`compact`,text:e(`web.ui.cmd.compact_no_change`,{n:t.before}),pending:!1,tone:`warn`}:{command:`compact`,text:e(`web.ui.cmd.compact_done`,{before:t.before,after:t.after}),pending:!1,tone:`ok`}:{command:`compact`,text:t.reason??e(`web.ui.cmd.compact_not_run`),pending:!1,tone:`warn`}}function jS(e){let{client:t,sessionId:n,readOnly:r,busy:i,t:a,openContextPane:o,setNotice:s}=e;if(!t||n===void 0||r)return xS;let c=[{kind:`action`,name:`context`,description:a(`web.ui.cmd.context_desc`),run:o}];return i||c.push({kind:`action`,name:`compact`,description:a(`web.ui.cmd.compact_desc`),run:()=>{s({command:`compact`,text:a(`web.ui.cmd.compact_running`),pending:!0,tone:`ok`}),t.compact(n).then(e=>s(AS(a,e))).catch(()=>{s({command:`compact`,text:a(`web.ui.cmd.compact_failed`),pending:!1,tone:`warn`})})}}),c}var MS=4194304,NS=16777216,PS=64,FS=64;function IS(e,t){let n=FS;for(let e of t)e.kind!==`file`&&(n+=e.bytes+(e.part.mediaType?.length??0)+PS);if(!e)return n;n+=PS;let r=n+e.length*6;return r<=16777216?r:n+new TextEncoder().encode(JSON.stringify(e)).length}function LS(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`read failed`)),r.onload=()=>t(String(r.result)),r.readAsDataURL(e)})}async function RS(e,t,n=[]){let r=[],i=[],a=n.map(e=>t(`web.ui.composer.reject_directory`,{name:e}));for(let n of e){if(!n.type.startsWith(`image/`)){i.push(n);continue}if(n.size>4194304){a.push(t(`web.ui.composer.reject_too_big`,{name:n.name,size:Math.round(n.size/1024/1024),max:Math.round(MS/1024/1024)}));continue}try{let e=await LS(n);r.push({kind:`image`,name:n.name,bytes:e.length,part:{type:`image`,image:e,mediaType:n.type}})}catch{a.push(t(`web.ui.composer.reject_unreadable`,{name:n.name}))}}return{ok:r,rejected:a,uploads:i}}function zS({disabled:e,onPick:t}){let n=R(),r=v.useRef(null);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`btn btn--icon`,disabled:e,"aria-label":n(`web.ui.composer.attach`),title:n(`web.ui.composer.attach`),onClick:()=>r.current?.click(),children:(0,L.jsx)(z,{name:`plus`})}),(0,L.jsx)(`input`,{ref:r,type:`file`,multiple:!0,hidden:!0,onChange:e=>{t([...e.target.files??[]]),e.target.value=``}})]})}function BS({attachments:e,reading:t=[],showBytes:n=!1,onRemove:r}){let i=R(),a=v.useRef(null),o=e.length+t.length,s=v.useRef(o);return v.useEffect(()=>{let e=a.current;e&&o>s.current&&(e.scrollTop=e.scrollHeight),s.current=o},[o]),e.length===0&&t.length===0?null:(0,L.jsxs)(`div`,{className:`shots`,ref:a,children:[e.map((e,t)=>e.kind===`file`?(0,L.jsxs)(`div`,{className:`shot shot--file`,title:e.name,children:[(0,L.jsx)(z,{name:`file`,size:`sm`}),(0,L.jsx)(`span`,{className:`shot__name`,children:e.name}),(0,L.jsx)(`span`,{className:`shot__note`,children:Ci(e.bytes)}),(0,L.jsx)(`button`,{type:`button`,className:`shot__x`,"aria-label":i(`web.ui.composer.remove_attach`,{name:e.name}),onClick:()=>r(t),children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]},`${e.name}-${t}`):(0,L.jsxs)(`figure`,{className:`shot`,title:e.name,children:[(0,L.jsx)(`img`,{className:`shot__img`,src:e.part.image,alt:e.name}),n&&(0,L.jsx)(`figcaption`,{className:`shot__size`,children:Ci(e.bytes)}),(0,L.jsx)(`button`,{type:`button`,className:`shot__x`,"aria-label":i(`web.ui.composer.remove_attach`,{name:e.name}),onClick:()=>r(t),children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]},`${e.name}-${t}`)),t.map((e,t)=>(0,L.jsxs)(`div`,{className:`shot shot--reading`,title:e,children:[(0,L.jsx)(`span`,{className:`shot__spin`,"aria-hidden":`true`}),(0,L.jsx)(`span`,{className:`shot__name`,children:e}),(0,L.jsx)(`span`,{className:`shot__note`,children:i(`web.ui.composer.reading`)})]},`reading-${e}-${t}`))]})}var VS={text:``,attachments:[],rejected:[],reading:[],paletteClosed:!1};function HS(e){return e.text===``&&e.attachments.length===0&&e.rejected.length===0&&e.reading.length===0&&!e.paletteClosed}function US(e,t){return e.trim()?`${e.trimEnd()}\n${t}`:t}function WS(e,t,n){return{...e,reading:t.length>0?e.reading.filter(e=>e!==t):e.reading,attachments:[...e.attachments,...n.ok],rejected:n.rejected.length>0?[...new Set([...e.rejected,...n.rejected])]:e.rejected}}function GS(e){let t=e.text.trim();if(!t&&e.attachments.length===0)return;let n=e.attachments.filter(e=>e.kind===`image`);return n.length===0?t||(e.attachments.length>0?[]:void 0):[...t?[{type:`text`,text:t}]:[],...n.map(e=>e.part)]}function KS(e){return e.attachments.filter(e=>e.kind===`file`).map(e=>e.name)}function qS(e){let[t,n]=v.useState(()=>new Map),r=v.useCallback((e,t)=>{n(n=>{let r=t(n.get(e)??VS),i=new Map(n);return HS(r)?i.delete(e):i.set(e,r),i})},[]),i=v.useCallback(t=>r(e,t),[r,e]);return{slot:t.get(e)??VS,patch:r,here:i}}function JS(e,t){let n=R(),{slot:r,patch:i,here:a}=qS(t),o=v.useCallback(async(t,r)=>{let i=[],a=[];for(let o of r)try{let n=await e.uploadAttachment(t,o);i.push({kind:`file`,name:n.name,bytes:n.bytes})}catch{a.push(n(`web.ui.composer.reject_upload_failed`,{name:o.name}))}return{ok:i,rejected:a}},[e,n]),s=v.useCallback(e=>a(t=>({...t,text:e})),[a]),c=v.useCallback(e=>a(t=>({...t,text:US(t.text,e)})),[a]),l=v.useCallback((e,r=[])=>{if(e.length===0&&r.length===0)return;let a=t,s=e.map(e=>e.name);s.length>0&&i(a,e=>({...e,reading:[...e.reading,s]})),RS(e,n,r).then(async e=>{let t=a===void 0?{ok:[],rejected:e.uploads.map(e=>n(`web.ui.composer.reject_upload_failed`,{name:e.name}))}:await o(a,e.uploads);i(a,n=>WS(n,s,{ok:[...e.ok,...t.ok],rejected:[...e.rejected,...t.rejected]}))})},[i,t,n,o]),u=v.useCallback(e=>a(t=>({...t,attachments:t.attachments.filter((t,n)=>n!==e)})),[a]),d=v.useCallback(()=>a(e=>({...e,rejected:[]})),[a]),f=v.useCallback(e=>a(t=>({...t,paletteClosed:e})),[a]),p=v.useCallback(()=>a(e=>({...VS,reading:e.reading})),[a]),m=v.useMemo(()=>IS(r.text,r.attachments),[r.text,r.attachments]),h=v.useCallback(()=>GS(r),[r]),g=v.useCallback(()=>KS(r),[r]);return v.useMemo(()=>({...r,bytes:m,oversize:m>NS,setText:s,append:c,pick:l,removeAttachment:u,dismissRejected:d,setPaletteClosed:f,toMessage:h,toAttachmentNames:g,sent:p}),[r,m,s,c,l,u,d,f,h,g,p])}function YS(e){let t=[],n=[],r=Array.from(e?.items??[]).filter(e=>e.kind===`file`);for(let[i,a]of[...e?.files??[]].entries())r[i]?.webkitGetAsEntry?.()?.isDirectory?n.push(a.name):t.push(a);return{files:t,directories:n}}var XS=new Set([`text/plain`,`text/html`]),ZS=[`dragenter`,`dragover`,`drop`];function QS(e){let t=Array.from(e?.types??[]);return t.length===0||t.some(e=>!XS.has(e))}function $S({onFiles:e,disabled:t=!1}){let n=v.useRef(0),[r,i]=v.useState(!1),a=()=>{n.current=0,i(!1)};return v.useEffect(()=>{let e=e=>{e.defaultPrevented||QS(e.dataTransfer)&&e.preventDefault()};for(let t of ZS)window.addEventListener(t,e);return()=>{for(let t of ZS)window.removeEventListener(t,e)}},[]),{active:r&&!t,zone:{onDragEnter:e=>{e.preventDefault(),n.current+=1,i(!0)},onDragOver:e=>e.preventDefault(),onDragLeave:()=>{--n.current,n.current<=0&&a()},onDrop:n=>{n.preventDefault(),a(),!t&&e(YS(n.dataTransfer))}}}}function eC(){let e=R();return(0,L.jsx)(`div`,{className:`dropzone`,role:`status`,children:(0,L.jsxs)(`span`,{className:`dropzone__box`,children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),e(`web.ui.composer.drop_hint`)]})})}function tC(e){let[t,n]=v.useState(()=>new Map),r=v.useCallback(t=>{n(n=>n.get(e)===t?n:new Map(n).set(e,t))},[e]),i=v.useCallback(()=>{n(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[e]),a=t.get(e);return v.useMemo(()=>({role:a,pin:r,clear:i}),[a,r,i])}function nC({role:e,onClear:t}){let n=R();return(0,L.jsxs)(`span`,{className:`xchip`,title:n(`web.ui.composer.expert_chip_title`,{role:e}),children:[(0,L.jsx)(`button`,{className:`xchip__x`,type:`button`,"aria-label":n(`web.ui.composer.expert_remove`,{role:e}),onClick:t,children:(0,L.jsx)(z,{name:`x`,size:`sm`})}),e]})}var rC=`refpalette`;function iC(e){return`refopt-${e}`}function aC(e){return e?e.split(/[\\/]/).filter(Boolean).pop()??e:``}function oC(e,t){let n=new Date(e),r=new Date(t).toDateString()===n.toDateString(),i=e=>String(e).padStart(2,`0`);return r?`${i(n.getHours())}:${i(n.getMinutes())}`:`${n.getMonth()+1}/${n.getDate()}`}function sC({candidates:e,activeIndex:t,onPick:n,onHover:r}){let i=R(),a=Date.now(),o=Pt(t,e.length,r);return(0,L.jsxs)(`ul`,{ref:o.ref,id:rC,className:`cmdpalette`,role:`listbox`,"aria-label":i(`web.ui.mention.palette_label`),children:[(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:i(`web.ui.mention.group_sessions`)}),e.map((e,r)=>(0,L.jsxs)(`li`,{id:iC(e.sessionId),role:`option`,"aria-selected":r===t,className:`cmdpalette__row`,"data-active":r===t?`on`:void 0,onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:e=>o.hover(r,e),children:[(0,L.jsx)(`span`,{className:`refopt__title`,children:e.title}),(0,L.jsx)(`span`,{className:`refopt__meta`,children:e.sameWorkspace?i(`web.ui.mention.candidate_here`,{when:oC(e.updatedAt,a),count:e.messageCount}):i(`web.ui.mention.candidate_elsewhere`,{when:oC(e.updatedAt,a),count:e.messageCount,where:aC(e.cwd)})})]},e.sessionId))]})}var cC=`filepalette`;function lC(e){return`fileopt-${e}`}function uC(e){let t=e.split(`/`),n=t[t.length-1]??e,r=t.slice(0,-1).join(`/`);return{title:n,dir:r===``?null:r}}function dC({candidates:e,activeIndex:t,onPick:n,onHover:r,unmentionable:i,truncated:a}){let o=R(),s=Pt(t,e.length,r);return(0,L.jsxs)(`ul`,{ref:s.ref,id:cC,className:`cmdpalette`,role:`listbox`,"aria-label":o(`web.ui.mention.file_palette_label`),children:[(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:o(`web.ui.mention.group_files`)}),e.map((e,r)=>{let{title:i,dir:a}=uC(e.path);return(0,L.jsxs)(`li`,{id:lC(e.path),role:`option`,"aria-selected":r===t,className:`cmdpalette__row`,"data-active":r===t?`on`:void 0,onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:e=>s.hover(r,e),children:[(0,L.jsx)(`span`,{className:`refopt__title`,children:i}),a!==null&&(0,L.jsx)(`span`,{className:`refopt__meta`,children:a})]},e.path)}),i>0&&(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:o(`web.ui.mention.file_unmentionable`,{count:i})}),a&&(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:o(`web.ui.mention.file_truncated`)})]})}var fC=`@:`;function pC(e){let t=-1;for(let n=e.length-1;n>=0;n--){let r=e[n]??``;if(/\s/.test(r))return-1;if(r===`@`){t=n;break}}if(t===-1)return-1;let n=t===0?``:e[t-1]??``;return n!==``&&!/\s/.test(n)?-1:t}function mC(e,t){let n=e.slice(0,Math.max(0,Math.min(t,e.length))),r=pC(n);return r===-1||!n.startsWith(fC,r)?null:{at:r,query:n.slice(r+2)}}function hC(e,t){let n=e.slice(0,Math.max(0,Math.min(t,e.length))),r=pC(n);return r===-1||n.startsWith(fC,r)?null:{at:r,query:n.slice(r+1)}}function gC(e,t,n){let r=`${e.slice(0,t.at)}${fC}${n} `;return{text:`${r}${e.slice(t.at+2+t.query.length)}`,caret:r.length}}function _C(e,t,n){let r=`${e.slice(0,t.at)}@${n} `;return{text:`${r}${e.slice(t.at+1+t.query.length)}`,caret:r.length}}var vC=[];function yC(e,t){return bC(e,t,vC)}function bC(e,t,n){let[r,i]=v.useState(n);return v.useEffect(()=>{if(!e||t===null){i(n);return}let r=!0,a=setTimeout(()=>{e(t).then(e=>{r&&i(e)}).catch(()=>{r&&i(n)})},120);return()=>{r=!1,clearTimeout(a)}},[e,t,n]),r}var xC={candidates:[],unmentionable:0,truncated:!1};function SC(e,t){return bC(e,t,xC)}var CC={idle:`web.ui.composer.placeholder_idle`,running:`web.ui.composer.placeholder_running`,"awaiting-approval":`web.ui.composer.placeholder_approval`,"awaiting-question":`web.ui.composer.placeholder_question`},wC={"no-provider":`web.ui.composer.placeholder_no_provider`,history:`web.ui.composer.placeholder_history`,gone:`web.ui.composer.placeholder_gone`},TC=[],EC={session:`web.ui.composer.usage_session`,run:`web.ui.composer.usage_run`};function DC(e){let t=e.turn===`awaiting-approval`||e.turn===`awaiting-question`;return!!e.disabled||!!e.readOnly||t||e.connection!==`open`}function OC(e){let t=e.scrollTop;e.style.height=`auto`;let n=e.scrollHeight;n>0&&(e.style.height=`${n}px`),e.scrollTop=t}function kC(e,t){v.useLayoutEffect(()=>{let t=e.current;t&&OC(t)},[e,t]),v.useLayoutEffect(()=>{let t=e.current;if(!t)return;let n=t.clientWidth,r=new ResizeObserver(()=>{t.clientWidth!==n&&(n=t.clientWidth,OC(t))});return r.observe(t),()=>r.disconnect()},[e])}function AC({draft:e,turn:t,connection:n,disabled:r=!1,readOnly:i=!1,prefill:a,onPrefillDone:o,commands:s=bS,builtins:c=xS,commandNotice:l,builtinNotice:u,dropped:d,onDroppedDone:f,expert:p,usage:m,listSessionCandidates:h,listFileCandidates:g,onSend:_}){let y=R(),[b,x]=v.useState(!1),[S,C]=v.useState(0),[w,T]=v.useState(0),[E,D]=v.useState(0),[O,ee]=v.useState(0),te=v.useRef(!1),k=v.useRef(null),{append:ne,pick:ie,setText:ae}=e;kC(k,e.text),v.useEffect(()=>{if(!a)return;a.replace===!0?ae(a.text):ne(a.text);let e=k.current,t=e&&requestAnimationFrame(()=>{e.focus(),e.setSelectionRange(e.value.length,e.value.length)});return o?.(),()=>{t&&cancelAnimationFrame(t)}},[a,o,ne,ae]);let A=e.reading.length>0;v.useEffect(()=>{if(!A){x(!1);return}let e=setTimeout(()=>x(!0),250);return()=>clearTimeout(e)},[A]);let j=n!==`open`,oe=DC({turn:t,connection:n,disabled:r,readOnly:i}),se=wS(v.useMemo(()=>TS(c,SS(s)),[c,s]),e.text),ce=!oe&&!e.paletteClosed&&se.length>0,le=Math.min(S,se.length-1),ue=se[le],M=mC(e.text,O),de=yC(h,M===null?null:M.query),fe=!oe&&!e.paletteClosed&&M!==null&&de.length>0,pe=Math.min(w,de.length-1),N=de[pe],me=hC(e.text,O),P=SC(g,me===null?null:me.query),he=!oe&&!e.paletteClosed&&me!==null&&P.candidates.length>0,F=Math.min(E,P.candidates.length-1),ge=P.candidates[F],_e=t=>{let n=se.find(e=>e.name===t);if(n){if(n.kind===`action`){e.setText(``),e.setPaletteClosed(!1),C(0),k.current?.focus(),n.run();return}e.setText(ES(n)),C(0),k.current?.focus()}},ve=t=>{if(!M)return;let n=gC(e.text,M,t);e.setText(n.text),ee(n.caret),T(0);let r=k.current;r&&requestAnimationFrame(()=>{r.focus(),r.setSelectionRange(n.caret,n.caret)})},ye=t=>{if(!me)return;let n=_C(e.text,me,t);e.setText(n.text),ee(n.caret),D(0);let r=k.current;r&&requestAnimationFrame(()=>{r.focus(),r.setSelectionRange(n.caret,n.caret)})},be=()=>{if(oe||e.oversize)return;let t=e.toMessage();if(t===void 0)return;let n=e.toAttachmentNames();n.length>0?_(t,n):_(t),e.sent()},xe=t=>{if(!(te.current||t.nativeEvent.isComposing)){if(ce&&ue){let n=se.length;if(t.key===`ArrowDown`)return t.preventDefault(),C(e=>(Math.min(e,n-1)+1)%n);if(t.key===`ArrowUp`)return t.preventDefault(),C(e=>(Math.min(e,n-1)-1+n)%n);if(t.key===`Escape`)return t.preventDefault(),e.setPaletteClosed(!0);if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey)return t.preventDefault(),_e(ue.name)}if(fe&&N&&M){let n=de.length;if(t.key===`ArrowDown`)return t.preventDefault(),T(e=>(Math.min(e,n-1)+1)%n);if(t.key===`ArrowUp`)return t.preventDefault(),T(e=>(Math.min(e,n-1)-1+n)%n);if(t.key===`Escape`)return t.preventDefault(),e.setPaletteClosed(!0);if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey)return t.preventDefault(),ve(N.sessionId)}if(he&&ge&&me){let n=P.candidates.length;if(t.key===`ArrowDown`)return t.preventDefault(),D(e=>(Math.min(e,n-1)+1)%n);if(t.key===`ArrowUp`)return t.preventDefault(),D(e=>(Math.min(e,n-1)-1+n)%n);if(t.key===`Escape`)return t.preventDefault(),e.setPaletteClosed(!0);if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey)return t.preventDefault(),ye(ge.path)}t.key!==`Enter`||t.shiftKey||(t.preventDefault(),be())}};v.useEffect(()=>{d&&(ie(d.files,d.directories),f?.())},[d,f,ie]);let Se=e=>{oe||ie([...e.clipboardData?.files??[]])},Ce=r?`web.ui.composer.placeholder_no_session`:i?wC[i]:j?`web.ui.composer.placeholder_offline`:CC[t];return(0,L.jsxs)(`form`,{className:`composer`,"aria-disabled":oe,"aria-busy":A,onSubmit:e=>{e.preventDefault(),be()},children:[ce&&(0,L.jsx)(kS,{matched:se,activeIndex:le,onPick:e=>_e(e.name),onHover:C}),fe&&(0,L.jsx)(sC,{candidates:de,activeIndex:pe,onPick:e=>ve(e.sessionId),onHover:T}),he&&(0,L.jsx)(dC,{candidates:P.candidates,activeIndex:F,onPick:e=>ye(e.path),onHover:D,unmentionable:P.unmentionable,truncated:P.truncated}),(0,L.jsx)(BS,{attachments:e.attachments,reading:b?e.reading.flat():TC,showBytes:e.oversize,onRemove:e.removeAttachment}),(0,L.jsx)(`textarea`,{ref:k,className:`composer__input`,value:e.text,rows:2,disabled:oe,placeholder:y(Ce),"aria-label":y(`web.ui.composer.label`),role:`combobox`,"aria-expanded":ce||fe||he,"aria-controls":he?cC:fe?rC:OS,"aria-autocomplete":`list`,...ce&&ue?{"aria-activedescendant":DS(ue.name)}:{},...fe&&N?{"aria-activedescendant":iC(N.sessionId)}:{},...he&&ge?{"aria-activedescendant":lC(ge.path)}:{},onChange:t=>{let n=t.target.value;e.setText(n),C(0),T(0),D(0),ee(t.target.selectionStart??0);let r=t.target.selectionStart??0;!n.startsWith(`/`)&&mC(n,r)===null&&hC(n,r)===null&&e.setPaletteClosed(!1)},onKeyDown:xe,onKeyUp:e=>ee(e.currentTarget.selectionStart??0),onClick:e=>ee(e.currentTarget.selectionStart??0),onSelect:e=>ee(e.currentTarget.selectionStart??0),onPaste:Se,onCompositionStart:()=>te.current=!0,onCompositionEnd:()=>te.current=!1}),e.rejected.length>0&&(0,L.jsxs)(`div`,{className:`composer__rejects`,role:`status`,children:[(0,L.jsx)(`ul`,{className:`composer__reject`,children:e.rejected.map(e=>(0,L.jsx)(`li`,{children:e},e))}),(0,L.jsx)(`button`,{type:`button`,className:`composer__reject-x`,"aria-label":y(`web.ui.composer.reject_dismiss`),onClick:e.dismissRejected,children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]}),l&&l.warnings.length>0&&(0,L.jsxs)(`ul`,{className:`composer__reject`,role:`status`,children:[(0,L.jsx)(`li`,{className:`composer__notice-head`,children:y(`web.ui.composer.command_warnings`,{name:l.name})}),l.warnings.map(e=>(0,L.jsx)(`li`,{children:e},e))]}),u&&(0,L.jsxs)(`ul`,{className:`composer__reject`,role:`status`,"data-tone":u.tone,children:[(0,L.jsx)(`li`,{className:`composer__notice-head`,children:y(`web.ui.composer.builtin_notice`,{name:u.command})}),(0,L.jsxs)(`li`,{children:[u.pending&&(0,L.jsx)(`span`,{className:`composer__notice-spin`,"aria-hidden":`true`}),u.text]})]}),e.oversize&&(0,L.jsx)(`p`,{className:`composer__oversize`,role:`alert`,children:y(`web.ui.composer.too_big`,{size:Ci(e.bytes),max:Ci(16777216)})}),(0,L.jsxs)(`div`,{className:`composer__bar`,children:[(0,L.jsx)(zS,{disabled:oe,onPick:ie}),p?.role!==void 0&&(0,L.jsx)(nC,{role:p.role,onClear:p.clear}),m&&(0,L.jsxs)(`span`,{className:`composer__usage`,title:y(`web.ui.composer.usage_detail`,{scope:y(EC[m.scope]),up:rv(re(m.tokens)),down:rv(m.tokens.outputTokens)}),children:[(0,L.jsx)(`span`,{className:`composer__usage-scope`,children:y(EC[m.scope])}),(0,L.jsxs)(`b`,{children:[iv(re(m.tokens)),`↑ `,iv(m.tokens.outputTokens),`↓`]})]}),(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary`,disabled:oe||e.oversize||e.toMessage()===void 0,children:y(`web.ui.composer.send`)})]})]})}var jC={level:null,editable:!1,blocked:[],busy:!1,set:()=>{}};function MC(e,t,n,r,i){let[a,o]=v.useState(jC),s=v.useRef(0);v.useEffect(()=>{if(!e||!t){o(jC);return}let n=!0,r=s.current;return e.permission(t).then(e=>{!n||s.current!==r||o({level:e.level,editable:e.editable,blocked:e.blocked,busy:!1})}).catch(()=>{n&&s.current===r&&o(e=>({...e,editable:!1,busy:!1}))}),()=>{n=!1}},[e,t,n]);let{adopt:c}=r,l=v.useCallback(n=>{!e||!t||(s.current+=1,o(e=>{let{error:t,...n}=e;return{...n,busy:!0}}),e.setPermission(t,n).then(e=>{o({level:e.state.level,editable:e.state.editable,blocked:e.state.blocked,busy:!1,...e.ok?{}:{error:{kind:`refused`,reason:e.refused??`managed`}},...e.notRemembered?{notRemembered:e.notRemembered}:{}}),c(e.state.planMode)}).catch(e=>{o(t=>({...t,busy:!1,error:{kind:`failed`,message:e instanceof Error?e.message:String(e)}}))}))},[e,t,c]);return v.useMemo(()=>({...a,level:a.level??i??null,set:l}),[a,i,l])}var NC={available:!1,active:!1,from:null,busy:!1,toggle:()=>{},adopt:()=>{}};function PC(e,t,n){let[r,i]=v.useState(NC),a=v.useRef(0);v.useEffect(()=>{if(!e||!t){i(NC);return}let n=!0,r=a.current;return e.plan(t).then(({mode:e})=>{!n||a.current!==r||i({available:e!==null,active:e?.active??!1,from:e?.from??null,busy:!1})}).catch(()=>{n&&a.current===r&&i(NC)}),()=>{n=!1}},[e,t,n]);let o=v.useCallback(()=>{if(!e||!t)return;let n=r.active?`exit`:`enter`;a.current+=1,i(e=>{let{error:t,...n}=e;return{...n,busy:!0}}),e.planMode(t,n).then(({mode:e})=>{i({available:!0,active:e.active,from:e.from,busy:!1})}).catch(e=>{i(t=>({...t,busy:!1,error:e instanceof Error?e.message:String(e)}))})},[e,t,r.active]),s=v.useCallback(e=>{a.current+=1,i({available:e!==null,active:e?.active??!1,from:e?.from??null,busy:!1})},[]);return v.useMemo(()=>({...r,toggle:o,adopt:s}),[r,o,s])}function FC({mode:e,readOnly:t=!1}){let n=R();return!e.available||t?null:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`button`,{type:`button`,className:`fact fact--toggle`,"aria-pressed":e.active,"data-on":e.active?``:void 0,disabled:e.busy,title:n(e.active?`web.ui.composer.plan_off_hint`:`web.ui.composer.plan_on_hint`),onClick:e.toggle,children:[(0,L.jsx)(z,{name:`list-checks`,size:`sm`}),n(`web.ui.composer.plan_mode`)]}),e.active&&(0,L.jsx)(`span`,{className:`fact fact--plan`,children:n(`web.ui.composer.plan_mode_why`)}),e.error&&(0,L.jsx)(`span`,{className:`fact fact--err`,role:`alert`,children:e.error})]})}function IC({role:e}){let t=R();return e?(0,L.jsxs)(`span`,{className:`fact`,title:t(`web.ui.composer.identity_title`,{role:e.name}),children:[(0,L.jsx)(z,{name:`user-round`,size:`sm`}),e.name]}):null}var LC={state:`pending`};function RC(e){return e.state===`bound`?{state:`bound`,workspace:e.workspace}:{state:e.state}}function zC(e,t,n=`idle`){let[r,i]=v.useState(LC),[a,o]=v.useState(!1),[s,c]=v.useState(),[l,u]=v.useState(0),d=v.useCallback(n=>{!e||!t||a||(o(!0),c(void 0),e.bindWorkspace(t,n).then(({binding:e})=>{o(!1),i(RC(e))}).catch(e=>{o(!1);let t=e?.detail??(e instanceof Error?e.message:``);c(typeof t==`string`&&t?t:String(e))}))},[a,e,t]);v.useEffect(()=>{if(!e||!t){i(LC);return}i(LC),o(!1),c(void 0);let n=!0;return e.sessionWorkspace(t).then(({binding:e})=>{n&&i(RC(e))}).catch(()=>{n&&i({state:`unknown`})}),()=>{n=!1}},[e,t,l]);let f=v.useRef(!0);return v.useEffect(()=>{let e=n===`idle`,t=f.current;f.current=e,!(e||!t)&&r.state===`unknown`&&u(e=>e+1)},[n,r.state]),v.useMemo(()=>r.state===`unbound`?{state:`unbound`,pick:d,busy:a,...s===void 0?{}:{error:s}}:r,[r,d,a,s])}function BC({view:e,onOpenDiff:t,choices:n=[],client:r,nativeDirPicker:i}){let a=R(),[o,s]=v.useState(!1),c=v.useRef(null),l=v.useCallback(()=>s(!1),[]);if(e.state===`pending`)return null;if(e.state===`unbound`)return(0,L.jsx)(en,{view:e,choices:n,open:o,setOpen:s,close:l,triggerRef:c,...r?{client:r}:{},...i===void 0?{}:{nativeDirPicker:i}});let u=e.state===`bound`?e.workspace.root:e.state===`unknown`?a(`web.ui.composer.workspace_unknown_hint`):void 0;return e.state===`bound`&&t?(0,L.jsxs)(`button`,{className:`fact fact--link`,type:`button`,onClick:t,title:`${e.workspace.root}\n${a(`web.ui.composer.workspace_diff_hint`)}`,children:[(0,L.jsx)(z,{name:`layers`,size:`sm`}),e.workspace.name]}):(0,L.jsxs)(`span`,{className:`fact`,...u===void 0?{}:{title:u},children:[(0,L.jsx)(z,{name:`layers`,size:`sm`}),e.state===`bound`?e.workspace.name:a(e.state===`none`?`web.ui.composer.no_workspace`:`web.ui.composer.workspace_unknown`)]})}function VC({workspace:e=LC,workspaceChoices:t,nativeDirPicker:n,client:r,onOpenDiff:i,permission:a=jC,planMode:o=NC,readOnly:s=!1,role:c}){return(0,L.jsxs)(`div`,{className:`composer__foot`,children:[(0,L.jsx)(BC,{view:e,...i?{onOpenDiff:i}:{},...t?{choices:t}:{},...r?{client:r}:{},...n===void 0?{}:{nativeDirPicker:n}}),(0,L.jsx)(IC,{...c===void 0?{}:{role:c}}),(0,L.jsx)(pn,{view:a}),(0,L.jsx)(FC,{mode:o,readOnly:s})]})}function HC({kind:e,icon:t,title:n,queue:r,children:i,exits:a}){return(0,L.jsxs)(`div`,{className:`dock`,"data-kind":e,role:`group`,"aria-label":n,children:[(0,L.jsxs)(`div`,{className:`dock__head`,children:[(0,L.jsx)(`span`,{className:`dock__sign`,children:(0,L.jsx)(z,{name:t})}),(0,L.jsx)(`span`,{className:`dock__title`,children:n}),r&&(0,L.jsx)(`span`,{className:`dock__queue`,children:r})]}),(0,L.jsx)(`div`,{className:`dock__body`,children:i}),(0,L.jsx)(`div`,{className:`dock__foot`,children:(0,L.jsx)(`div`,{className:`dock__exits`,children:a})})]})}function UC({label:e,hint:t,tone:n,primary:r,onClick:i}){return(0,L.jsxs)(`button`,{type:`button`,className:n===`danger`?`btn btn--danger`:n===`primary`?`btn btn--primary`:`btn`,autoFocus:r,onClick:i,children:[e,t&&(0,L.jsx)(`small`,{children:t})]})}function WC(e,t){switch(e){case`file_read`:return t(`web.ui.dock.act_file_read`);case`file_write`:return t(`web.ui.dock.act_file_write`);case`command`:return t(`web.ui.dock.act_command`);case`network`:return t(`web.ui.dock.act_network`);case`code_exec`:return t(`web.ui.dock.act_code_exec`)}}function GC({children:e}){let t=R(),n=v.useRef(null),[r,i]=v.useState(0);return v.useEffect(()=>{let e=n.current;if(!e)return;let t=()=>{let t=parseFloat(getComputedStyle(e).lineHeight),n=e.scrollHeight-e.scrollTop-e.clientHeight;if(!(t>0)||n<=1){i(0);return}i(Math.max(1,Math.round(n/t)))};t(),e.addEventListener(`scroll`,t,{passive:!0});let r=new ResizeObserver(t);return r.observe(e),()=>{e.removeEventListener(`scroll`,t),r.disconnect()}},[e]),(0,L.jsxs)(`dd`,{children:[(0,L.jsx)(`div`,{className:`facts__scroll`,ref:n,children:e}),r>0&&(0,L.jsx)(`span`,{className:`facts__more`,children:t(`web.ui.dock.more_lines`,{count:r})})]})}function KC({request:e,remaining:t,onRespond:n}){let r=R(),i=e.detail&&e.detail!==e.target?e.detail:void 0,a=e.rememberable!==!1;return(0,L.jsxs)(HC,{kind:`permission`,icon:`flag`,title:r(`web.ui.dock.title_permission`),...t>0?{queue:r(`web.ui.dock.queue`,{count:t})}:{},exits:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(UC,{label:r(`approval.deny`),tone:`danger`,onClick:()=>n(`deny`)}),a&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(UC,{label:r(`web.ui.dock.allow_always`),onClick:()=>n(`allow-always`)}),(0,L.jsx)(UC,{label:r(`web.ui.dock.allow_session`),onClick:()=>n(`allow-session`)})]}),(0,L.jsx)(UC,{label:r(`web.ui.dock.allow_once`),tone:`primary`,primary:!0,onClick:()=>n(`allow-once`)})]}),children:[(0,L.jsxs)(`dl`,{className:`facts`,children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_action`)}),(0,L.jsxs)(GC,{children:[(0,L.jsx)(`code`,{children:e.toolName}),` `,WC(e.type,r)]}),(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_target`)}),(0,L.jsx)(GC,{children:e.target||r(`web.ui.dock.target_none`)}),i&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_detail`)}),(0,L.jsx)(GC,{children:i})]}),e.reason&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_reason`)}),(0,L.jsx)(GC,{children:(0,L.jsx)(`em`,{children:e.reason})})]})]}),!a&&(0,L.jsx)(`p`,{className:`dock__note`,children:r(`web.ui.dock.not_rememberable`)})]})}function qC(e){return e.kind===`schedule`?e.schedule.at:e.goal.goal.updatedAt}function JC(e,t,n){let r=[...e.map(e=>({kind:`schedule`,schedule:e})),...t.filter(e=>e.sessionId!==n).map(e=>({kind:`goal`,goal:e}))].sort((e,t)=>qC(e)-qC(t)),i=r[0];return i?{item:i,more:r.length-1}:null}function YC({item:e,more:t,onFix:n,onOpen:r,onOpenSession:i}){let a=R(),[o,s]=v.useState(!1),c=e.kind===`goal`;return(0,L.jsxs)(`div`,{className:`autobar`,role:`status`,"data-kind":e.kind,children:[(0,L.jsx)(`span`,{className:`autobar__sign`,children:(0,L.jsx)(z,{name:c?`target`:`rotate-ccw`,size:`sm`})}),(0,L.jsx)(`span`,{className:`autobar__who`,children:e.kind===`goal`?a(`web.ui.autobar.goal_blocked`,{title:e.goal.sessionTitle||a(`web.ui.topbar.untitled`)}):a(`web.ui.autobar.pending`,{name:e.schedule.scheduleName,count:e.schedule.approvals.length})}),(0,L.jsx)(`code`,{className:`autobar__rule`,...e.kind===`goal`&&e.goal.goal.block?{title:e.goal.goal.block.message}:{},children:e.kind===`goal`?e.goal.goal.block?.code:e.schedule.approvals[0]?.suggestedRule}),t>0&&(0,L.jsx)(`span`,{className:`autobar__more`,children:a(`web.ui.autobar.more`,{count:t})}),e.kind===`schedule`&&n&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary btn--sm`,disabled:o,onClick:()=>{s(!0),n(e.schedule.scheduleId,e.schedule.runId).finally(()=>s(!1))},children:a(o?`web.ui.autobar.fixing`:`web.ui.autobar.fix`)}),e.kind===`goal`&&i&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary btn--sm`,onClick:()=>i(e.goal.sessionId),children:a(`web.ui.autobar.goal_open`)}),e.kind===`schedule`&&r&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:r,children:a(`web.ui.autobar.open`)})]})}function XC({run:e,onOpen:t}){let n=R(),r=Vy(e.startedAt);return(0,L.jsxs)(`div`,{className:`autobar`,role:`status`,"data-kind":`running`,children:[(0,L.jsx)(`span`,{className:`autobar__sign`,children:(0,L.jsx)(`span`,{className:`autobar__spin`,"aria-hidden":`true`})}),(0,L.jsx)(`span`,{className:`autobar__who`,children:n(`web.ui.auto.running`,{name:e.name})}),(0,L.jsx)(`span`,{className:`autobar__more`,"aria-hidden":`true`,children:n(`web.ui.auto.running_for`,{dur:Sy(r)})}),t&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:t,children:n(`web.ui.autobar.open`)})]})}function ZC(e,t){return e.updatedAt===t.updatedAt?e.id<t.id?-1:1:e.updatedAt===null?1:t.updatedAt===null?-1:e.updatedAt-t.updatedAt}function QC(e,t){let n=[...e.filter(e=>e.id!==t&&e.pendingApprovals+e.pendingQuestions>0)].sort(ZC),r=n[0];return r?{row:r,more:n.length-1}:null}function $C(e){return e.pendingApprovals>0?e.pendingApprovals===1?{key:`web.ui.crossbar.approval_one`,count:1}:{key:`web.ui.crossbar.approval_n`,count:e.pendingApprovals}:e.pendingQuestions===1?{key:`web.ui.crossbar.question_one`,count:1}:{key:`web.ui.crossbar.question_n`,count:e.pendingQuestions}}function ew({pick:e,onOpen:t}){let n=R(),{lang:r}=ot(),{row:i,more:a}=e,o=i.title||n(`web.ui.topbar.untitled`),s=$C(i);return(0,L.jsxs)(`div`,{className:`crossbar`,role:`status`,children:[(0,L.jsx)(`span`,{className:`crossbar__sign`,children:(0,L.jsx)(z,{name:`flag`,size:`sm`})}),(0,L.jsx)(`span`,{className:`crossbar__who`,children:n(s.key,{title:o,count:s.count})}),!i.live&&(0,L.jsx)(`span`,{className:`crossbar__cold`,title:n(`web.ui.crossbar.cold_hint`),children:n(`web.ui.crossbar.cold`)}),i.pendingSince!==null&&(0,L.jsx)(`span`,{className:`crossbar__age`,title:n(`web.ui.crossbar.waited`),children:tr(i.pendingSince,Date.now(),r)}),a>0&&(0,L.jsx)(`span`,{className:`crossbar__more`,children:n(`web.ui.crossbar.more`,{count:a})}),(0,L.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>t(i.id),children:n(`web.ui.crossbar.go`)})]})}function tw({plan:e,remaining:t,onRespond:n}){let r=R(),[i,a]=v.useState(``),o=()=>{let e=i.trim();e?n(`plan-revise`,e):n(`plan-revise`)};return(0,L.jsxs)(HC,{kind:`plan`,icon:`list-checks`,title:r(`web.ui.dock.title_plan`),...t>0?{queue:r(`web.ui.dock.queue`,{count:t})}:{},exits:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(UC,{label:r(`approval.deny`),tone:`danger`,onClick:()=>n(`deny`)}),(0,L.jsx)(UC,{label:r(`approval.plan_revise`),onClick:o}),(0,L.jsx)(UC,{label:r(`approval.plan_readonly`),hint:e.canExecute?r(`web.ui.dock.plan_readonly_hint`):r(`web.ui.dock.plan_readonly_forced`),onClick:()=>n(`plan-readonly`)}),e.canExecute&&(0,L.jsx)(UC,{label:r(`approval.plan_execute`),hint:r(`web.ui.dock.plan_execute_hint`,{level:e.previousLevel}),tone:`primary`,primary:!0,onClick:()=>n(`plan-execute`)})]}),children:[(0,L.jsx)(`div`,{className:`dock__plan`,children:(0,L.jsx)(w_,{text:e.markdown})}),(0,L.jsxs)(`label`,{className:`dock__note`,children:[(0,L.jsx)(`span`,{children:r(`web.ui.dock.note_label`)}),(0,L.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:r(`web.ui.dock.note_placeholder`)})]})]})}function nw(){return{picked:[],free:``}}function rw(e,t){let n=t.free.trim();if(e.multiSelect){let e=n?[...t.picked,n]:t.picked;return e.length>0?e:void 0}return n||t.picked[0]}function iw(e,t){let n={};return e.questions.forEach((e,r)=>{let i=rw(e,t[r]??nw());i!==void 0&&(n[e.question]=i)}),n}var aw=e=>`q-tab-${e}`,ow=e=>`q-panel-${e}`;function sw({request:e,active:t,answered:n,onPick:r}){let i=R(),a=e.questions.length,o=(e,t)=>{let n=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:0;if(n===0)return;e.preventDefault();let i=(t+n+a)%a;r(i),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[i]?.focus()};return(0,L.jsx)(`div`,{className:`qtabs`,role:`tablist`,"aria-label":i(`web.ui.dock.q_tabs`),children:e.questions.map((e,a)=>(0,L.jsxs)(`button`,{type:`button`,role:`tab`,id:aw(a),className:`qtabs__tab`,"aria-selected":a===t,"aria-controls":ow(a),tabIndex:a===t?0:-1,...n[a]?{"data-answered":``}:{},onClick:()=>r(a),onKeyDown:e=>o(e,a),children:[(0,L.jsx)(`span`,{className:`qtabs__ord`,children:a+1}),(0,L.jsx)(`span`,{className:`qtabs__name`,children:e.header.slice(0,12)}),n[a]&&(0,L.jsx)(z,{name:`check`,size:`sm`,label:i(`web.ui.dock.q_tab_answered`)})]},e.question))})}function cw({item:e,index:t,draft:n,onChange:r,onDone:i}){let a=R(),o=`q-${t}`,s=t=>{if(!e.multiSelect){r({...n,picked:[t]}),i();return}let a=n.picked.includes(t)?n.picked.filter(e=>e!==t):[...n.picked,t];r({...n,picked:a})};return(0,L.jsxs)(`fieldset`,{className:`question__item`,role:`tabpanel`,id:ow(t),"aria-labelledby":aw(t),children:[(0,L.jsx)(`legend`,{className:`question__legend`,children:e.question}),e.options.map(t=>(0,L.jsxs)(`label`,{className:`question__option`,children:[(0,L.jsx)(`input`,{type:e.multiSelect?`checkbox`:`radio`,name:o,"aria-label":t.label,checked:n.picked.includes(t.label),onChange:()=>s(t.label)}),(0,L.jsx)(`span`,{className:`question__label`,children:t.label}),t.description&&(0,L.jsx)(`small`,{children:t.description})]},t.label)),(0,L.jsxs)(`label`,{className:`question__free`,children:[(0,L.jsx)(`span`,{children:a(`web.ui.dock.q_free`)}),(0,L.jsx)(`input`,{type:`text`,value:n.free,onChange:e=>r({...n,free:e.target.value}),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),i())},placeholder:a(`web.ui.dock.q_free_placeholder`)})]})]})}function lw({request:e,remaining:t,onAnswer:n}){let r=R(),i=v.useRef(null),[a,o]=v.useState(()=>e.questions.map(nw)),[s,c]=v.useState(0);v.useEffect(()=>{o(e.questions.map(nw)),c(0),i.current?.querySelector(`input`)?.focus()},[e]);let l=v.useRef(!1);v.useEffect(()=>{l.current&&(l.current=!1,i.current?.querySelector(`input`)?.focus())},[s]);let u=t=>{t+1>=e.questions.length||(l.current=!0,c(t+1))},d=iw(e,a),f=Object.keys(d).length,p=e.questions.length-f;return(0,L.jsxs)(HC,{kind:`question`,icon:`info`,title:r(`web.ui.dock.title_question`),...t>0?{queue:r(`web.ui.dock.queue_questions`,{count:t})}:{},exits:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(UC,{label:r(`web.ui.dock.q_skip`),hint:r(`web.ui.dock.q_skip_hint`),onClick:()=>n(d,!0)}),(0,L.jsx)(UC,{label:r(`web.ui.dock.q_submit`),...p>0?{hint:r(`web.ui.dock.q_submit_partial`,{count:p})}:{},tone:`primary`,onClick:()=>n(d,p>0)})]}),children:[e.questions.length>1&&(0,L.jsx)(sw,{request:e,active:s,answered:e.questions.map((e,t)=>rw(e,a[t]??nw())!==void 0),onPick:c}),(0,L.jsx)(`div`,{ref:i,className:`question__list`,children:(()=>{let t=Math.min(s,e.questions.length-1),n=e.questions[t];return n?(0,L.jsx)(cw,{item:n,index:t,draft:a[t]??nw(),onChange:e=>o(n=>n.map((n,r)=>r===t?e:n)),onDone:()=>u(t)},n.question):null})()})]})}function uw({approvals:e,questions:t,onRespond:n,onAnswer:r,sessions:i,currentSessionId:a,onOpenSession:o,pending:s,onFixPending:c,onOpenAutomation:l,blockedGoals:u,running:d}){let f=e[0];if(f){let t=e.length-1,r=f.request.plan;return r?(0,L.jsx)(tw,{plan:r,remaining:t,onRespond:(e,t)=>t===void 0?n(f.requestId,e):n(f.requestId,e,t)}):(0,L.jsx)(KC,{request:f.request,remaining:t,onRespond:e=>n(f.requestId,e)})}let p=t[0];if(p)return(0,L.jsx)(lw,{request:p.request,remaining:t.length-1,onAnswer:(e,t)=>r(p.requestId,e,t)});let m=o?QC(i??[],a):null;if(m&&o)return(0,L.jsx)(ew,{pick:m,onOpen:o});let h=JC(s??[],u??[],a);return h?(0,L.jsx)(YC,{item:h.item,more:h.more,...c?{onFix:c}:{},...l?{onOpen:l}:{},...o?{onOpenSession:o}:{}}):d?(0,L.jsx)(XC,{run:d,...l?{onOpen:l}:{}}):null}function dw(e,t){let n=[],r=(e,t)=>{e.type===`diff`&&n.push({key:t,filePath:e.filePath,...e.oldContent===void 0?{}:{oldContent:e.oldContent},...e.newContent===void 0?{}:{newContent:e.newContent},...e.seq===void 0?{}:{seq:e.seq}})};for(let t of e)r(t,`h${t.id}`);for(let[e,n]of t.entries())r(n,`p${e}`);return n}function fw({patches:e,onLocate:t}){let n=R(),r=ci(li(e));return e.length===0?(0,L.jsx)(ai,{icon:`file-diff`,title:n(`web.ui.inspector.no_patch`)}):(0,L.jsx)(`div`,{className:`patches`,children:e.map(e=>(0,L.jsxs)(`div`,{className:`patches__item`,children:[(0,L.jsx)(H_,{filePath:e.filePath,...e.oldContent===void 0?{}:{oldContent:e.oldContent},...e.newContent===void 0?{}:{newContent:e.newContent}}),e.seq!==void 0&&t&&(0,L.jsx)(di,{seq:e.seq,anchored:r(e.seq),onLocate:t,className:`patches__locate`,label:!0})]},e.key))})}var pw={goal:null,loading:!0,busy:!1};function mw(e){return e instanceof Error?e.message:String(e)}function hw(e,t,n,r=!0){let[i,a]=v.useState(pw),o=n===void 0||n===`idle`;v.useEffect(()=>{if(!r||!e||!t)return;let n=!0;return e.goal(t).then(({goal:e,limits:t})=>{n&&a({goal:e,limits:t,loading:!1,busy:!1})}).catch(e=>{n&&a({goal:null,loading:!1,busy:!1,error:mw(e)})}),()=>{n=!1}},[r,e,t,o]);let s=v.useCallback(async e=>{a(e=>({...e,busy:!0,error:void 0,refusal:void 0}));try{let t=await e();return a(e=>({...e,busy:!1,goal:t.ok?t.goal??null:e.goal,...t.ok?{}:{refusal:t.reason}})),t.ok}catch(e){return a(t=>({...t,busy:!1,error:mw(e)})),!1}},[]),c=v.useCallback(async(n,r)=>!e||!t?!1:s(()=>e.createGoal(t,{objective:n,...r===void 0?{}:{maxRounds:r}})),[e,t,s]),l=v.useCallback(async n=>!e||!t?!1:s(()=>e.updateGoal(t,n)),[e,t,s]),u=v.useCallback(async()=>!e||!t?!1:s(async()=>{let n=await e.clearGoal(t);return n.ok?{ok:!0,goal:null}:{ok:!1,...n.reason?{reason:n.reason}:{}}}),[e,t,s]);return{...i,create:c,update:l,clear:u}}function gw(e,t,n){let[r,i]=v.useState([]),a=t===void 0||t===`idle`;return v.useEffect(()=>{let t=!0;return e.blockedGoals().then(e=>{t&&i(e.items)}).catch(()=>{t&&i([])}),()=>{t=!1}},[e,a,n]),{items:r}}function _w(e,t){return e.map(e=>({root:e.root,name:e.name,current:e.root===t}))}function vw(e,t){let[n,r]=v.useState(!1),[i,a]=v.useState(),o=v.useCallback(()=>a(void 0),[]),s=v.useCallback((i,o)=>{n||(r(!0),a(void 0),e.createSession(i).then(e=>{r(!1),t(e.sessionId),o?.(e.sessionId)}).catch(e=>{r(!1);let t=e?.detail??(e instanceof Error?e.message:``);a(typeof t==`string`&&t?t:String(e))}))},[n,e,t]);return{create:v.useCallback((e,t)=>s({...e===null?{}:{workspace:e},create:!0,...t===void 0?{}:{role:t}}),[s]),createDeferred:v.useCallback(e=>s({create:!0,deferWorkspace:!0},e),[s]),busy:n,reset:o,...i===void 0?{}:{error:i}}}var yw={"unknown-session":`web.ui.slist.err_gone`,"bad-title":`web.ui.slist.err_title`,"no-session-store":`web.ui.slist.err_no_store`};function bw(e,t){let n=R(),{currentSessionId:r,homeSessionId:i,openSession:a,reloadCurrent:o}=t,s=v.useCallback(e=>{let t=e?.code,r=typeof t==`string`?yw[t]:void 0;if(r)return n(r);let i=e?.detail;return typeof i==`string`&&i?i:e instanceof Error?e.message:String(e)},[n]),c=v.useCallback(e=>{if(e===r){if(i&&i!==e&&a){a(i);return}o()}},[r,i,a,o]),l=v.useCallback(async t=>{try{await e.deleteSession(t)}catch(e){if(!Te(e))return{ok:!1,message:s(e)}}return c(t),{ok:!0}},[e,s,c]),u=v.useCallback(async(t,n)=>{try{await e.renameSession(t,n)}catch(e){return{ok:!1,message:s(e)}}return{ok:!0}},[e,s]),d=v.useCallback(async(t,n)=>{try{await e.setSessionArchived(t,n)}catch(e){return{ok:!1,message:s(e)}}return{ok:!0}},[e,s]);return v.useMemo(()=>({rename:u,remove:l,setArchived:d}),[u,l,d])}var xw=[He,`light`,`dark`],Sw=`(prefers-color-scheme: dark)`;function Cw(e,t){return e===`light`||e===`dark`?e:t?`dark`:`light`}function ww(){return globalThis.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}function Tw(){return Ue(Le,xw,He)}function Ew(e){We(Le,e)}function Dw(e){document.documentElement.dataset.theme=e}function Ow(e){let t=globalThis.matchMedia?.(Sw);if(!t)return()=>void 0;let n=t=>e(t.matches);return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}function kw(){let[e,t]=v.useState(Tw),[n,r]=v.useState(ww);v.useEffect(()=>Ow(r),[]);let i=Cw(e,n);return v.useEffect(()=>Dw(i),[i]),{pref:e,theme:i,prefersDark:n,setPref:v.useCallback(e=>{Ew(e),t(e)},[])}}var Aw={ok:`check`,warn:`triangle-alert`,failed:`circle-alert`,skipped:`info`};function jw({about:e,diagnostics:t}){let n=R();if(!e)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:n(`web.ui.about.loading`)});let r=t??[];return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:n(`web.ui.about.g_machine`)}),(0,L.jsx)(Mw,{name:n(`web.ui.about.k_version`),value:n(`web.ui.about.version_line`,{version:e.version,node:e.nodeVersion,platform:e.platform})}),(0,L.jsx)(Mw,{name:n(`web.ui.about.k_home`),value:e.homeDir}),(0,L.jsx)(Mw,{name:n(`web.ui.about.k_db`),value:e.dbPath}),e.profile!==void 0&&(0,L.jsx)(Mw,{name:n(`web.ui.about.k_profile`),value:e.profile})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:n(`web.ui.about.g_diag`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:n(`web.ui.about.diag_lede`)}),r.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:n(`web.ui.about.diag_none`)}):(0,L.jsx)(`ul`,{className:`diag`,children:r.map((e,t)=>(0,L.jsxs)(`li`,{"data-level":e.status,children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:Aw[e.status],size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.about.diag_line`,{module:e.module,detail:e.detail})})]},`diag-${t}`))})]})]})}function Mw({name:e,value:t}){return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:e})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(`code`,{className:`cmd`,children:t})})]})}var Nw=100;function Pw(e,t,n){let[r,i]=v.useState({breakdown:null,loading:!0}),[a,o]=v.useState(0);v.useEffect(()=>{if(!e||t===void 0||!n){i({breakdown:null,loading:!1});return}let r=!0;return i({breakdown:null,loading:!0}),e.context(t).then(e=>{r&&i({breakdown:e.breakdown,loading:!1})}).catch(()=>{r&&i({breakdown:null,loading:!1,error:!0})}),()=>{r=!1}},[e,t,n,a]);let s=v.useCallback(()=>o(e=>e+1),[]);return{...r,reload:s}}function Fw(e,t){return t.ran?t.after>=t.before?e(`web.ui.cmd.compact_no_change`,{n:t.before}):e(`web.ui.cmd.compact_done`,{before:t.before,after:t.after}):t.reason??e(`web.ui.cmd.compact_not_run`)}function Iw({client:e,sessionId:t,readOnly:n=!1}){let r=R(),i=!n&&e!==void 0&&t!==void 0,a=Pw(e,t,i),[o,s]=v.useState(!1),[c,l]=v.useState();if(!i)return null;if(a.loading)return(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.set.budget_loading`)});if(a.error)return(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.set.budget_error`)});let u=a.breakdown;if(!u)return null;let d=Math.max(...u.segments.map(e=>e.tokens),1),f=u.limit>0?Math.round(u.used/u.limit*100):null;return(0,L.jsxs)(`div`,{className:`setctx setbudget`,children:[(0,L.jsx)(`h3`,{className:`setbudget__title`,children:r(`web.ui.set.budget_title`)}),(0,L.jsx)(`p`,{className:`setctx__line`,children:f===null?r(`web.ui.set.budget_used_only`,{used:iv(u.used)}):r(`web.ui.set.budget_used`,{used:iv(u.used),limit:iv(u.limit),percent:String(f)})}),(0,L.jsx)(`ul`,{className:`setbudget__rows`,children:u.segments.map(e=>(0,L.jsxs)(`li`,{className:`setbudget__row`,children:[(0,L.jsx)(`span`,{className:`setbudget__label`,children:e.label}),(0,L.jsx)(`span`,{className:`setbudget__n`,title:String(e.tokens),children:iv(e.tokens)}),(0,L.jsx)(`span`,{className:`setbudget__bar`,"aria-hidden":`true`,children:(0,L.jsx)(`i`,{style:{width:`${Math.max(1,Math.round(e.tokens/d*Nw))}%`}})}),e.detail&&(0,L.jsx)(`span`,{className:`setbudget__detail`,children:e.detail})]},e.label))}),u.hints.length>0&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:u.hints.map(e=>(0,L.jsx)(`p`,{children:e},e))}),(0,L.jsxs)(`div`,{className:`setbudget__act`,children:[(0,L.jsx)(`button`,{className:`btn`,type:`button`,disabled:o,onClick:()=>{!e||t===void 0||(s(!0),l(void 0),e.compact(t).then(e=>{l(Fw(r,e)),a.reload()}).catch(()=>l(r(`web.ui.cmd.compact_failed`))).finally(()=>s(!1)))},children:r(o?`web.ui.set.budget_compacting`:`web.ui.set.budget_compact`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.set.budget_compact_hint`)})]}),c&&(0,L.jsx)(`p`,{className:`setbudget__done`,role:`status`,children:c})]})}var Lw=`compression.enabled`,Rw=[Lw,`compression.threshold`];function zw(e,t){return e.find(e=>e.key===t)?.value}function Bw({rows:e,compression:t}){let n=R(),r=zw(e,Lw);if(!t)return null;let{contextLength:i,threshold:a}=t,o=ie(i,a),s=Math.round(a*100);return(0,L.jsxs)(`div`,{className:`setctx`,children:[(0,L.jsx)(`p`,{className:`setctx__line`,children:n(`web.ui.set.ctx_line`,{tokens:rv(Math.floor(o)),window:rv(i),percent:String(s)})}),(0,L.jsx)(`p`,{className:`field__hint`,children:n(`web.ui.set.ctx_line_caveat`)}),r===!1&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:n(`web.ui.set.ctx_off`)})})]})}var Vw={builtin:`web.ui.sec.layer_builtin`,plugin:`web.ui.sec.layer_plugin`,user:`web.ui.sec.layer_user`,env:`web.ui.sec.layer_env`,project:`web.ui.sec.layer_project`,projectLocal:`web.ui.sec.layer_project_local`,cli:`web.ui.sec.layer_cli`,managed:`web.ui.sec.layer_managed`,unknown:`web.ui.sec.layer_unknown`};function Hw(e,t){let n=Vw[e];return n?t(n):e}function Uw({error:e,noProvider:t=!1,globalScope:n=!1}){let r=R();return Te(e)?(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(t?`web.ui.settings.no_provider_elsewhere`:n?`web.ui.settings.history_only_global`:`web.ui.settings.history_only`)}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:e instanceof Error?e.message:String(e)})]})}var Ww=[`sessions.autoPrune`,`sessions.retentionDays`,`sessions.vacuumAfterPrune`],Gw=[`automation.keepRuns`,`automation.maxRecordingMb`],Kw=[`sessionSearch.allWorkspaces`],qw=[`memory.memoryCharLimit`,`memory.userCharLimit`,`memory.indexCharLimit`],Jw={model:[`model`,`models.utility`,`fallback.model`,`fallback.providers`],memory:[`contextLength`,`maxOutputTokens`,`maxTurns`,...Rw,...qw],budget:[`budget.maxCostUsd`,`budget.maxTokens`,`budget.warnAtPercent`,`budget.onUnknownPricing`],sessions:[...Ww,...Gw,...Kw]},Yw={model:`web.ui.set.k_model`,"models.utility":`web.ui.set.k_models_utility`,"fallback.model":`web.ui.set.k_fallback_model`,"fallback.providers":`web.ui.set.k_fallback_providers`,contextLength:`web.ui.set.k_context_length`,maxOutputTokens:`web.ui.set.k_max_output_tokens`,maxTurns:`web.ui.set.k_max_turns`,"compression.enabled":`web.ui.set.k_compression_enabled`,"compression.threshold":`web.ui.set.k_compression_threshold`,"memory.memoryCharLimit":`web.ui.set.k_memory_char_limit`,"memory.userCharLimit":`web.ui.set.k_memory_user_char_limit`,"memory.indexCharLimit":`web.ui.set.k_memory_index_char_limit`,"budget.maxCostUsd":`web.ui.set.k_budget_max_cost`,"budget.maxTokens":`web.ui.set.k_budget_max_tokens`,"budget.warnAtPercent":`web.ui.set.k_budget_warn_at`,"budget.onUnknownPricing":`web.ui.set.k_budget_unknown_pricing`,"sessions.autoPrune":`web.ui.set.k_sessions_auto_prune`,"sessions.retentionDays":`web.ui.set.k_sessions_retention_days`,"sessions.vacuumAfterPrune":`web.ui.set.k_sessions_vacuum`,"automation.keepRuns":`web.ui.set.k_automation_keep_runs`,"automation.maxRecordingMb":`web.ui.set.k_automation_max_recording_mb`,"sessionSearch.allWorkspaces":`web.ui.set.k_session_search_all_workspaces`},Xw={"models.utility":`web.ui.set.h_models_utility`,"fallback.providers":`web.ui.set.h_fallback_providers`,contextLength:`web.ui.set.h_context_length`,maxOutputTokens:`web.ui.set.h_max_output_tokens`,maxTurns:`web.ui.set.h_max_turns`,"compression.enabled":`web.ui.set.h_compression_enabled`,"compression.threshold":`web.ui.set.h_compression_threshold`,"memory.memoryCharLimit":`web.ui.set.h_memory_char_limit`,"memory.userCharLimit":`web.ui.set.h_memory_user_char_limit`,"memory.indexCharLimit":`web.ui.set.h_memory_index_char_limit`,"budget.maxCostUsd":`web.ui.set.h_budget_max_cost`,"budget.maxTokens":`web.ui.set.h_budget_max_tokens`,"budget.warnAtPercent":`web.ui.set.h_budget_warn_at`,"budget.onUnknownPricing":`web.ui.set.h_budget_unknown_pricing`,"sessions.autoPrune":`web.ui.set.h_sessions_auto_prune`,"sessions.retentionDays":`web.ui.set.h_sessions_retention_days`,"sessions.vacuumAfterPrune":`web.ui.set.h_sessions_vacuum`,"automation.keepRuns":`web.ui.set.h_automation_keep_runs`,"automation.maxRecordingMb":`web.ui.set.h_automation_max_recording_mb`,"sessionSearch.allWorkspaces":`web.ui.set.h_session_search_all_workspaces`},Zw={"budget.maxCostUsd":`web.ui.set.ex_budget_max_cost`,"budget.maxTokens":`web.ui.set.ex_budget_max_tokens`,"budget.warnAtPercent":`web.ui.set.ex_budget_warn_at`},Qw={model:{title:`web.ui.settings.pane_model`},memory:{title:`web.ui.settings.pane_memory`},budget:{title:`web.ui.settings.pane_budget`},sessions:{title:`web.ui.settings.pane_sessions_retention`}};function $w(e){return Qw[e].title}function eT(e,t,n){let[r,i]=v.useState(),[a,o]=v.useState();v.useEffect(()=>{if(!n||!t)return;let r=!0;return o(void 0),e.settings(t).then(e=>{r&&i(e)}).catch(e=>{r&&o(e)}),()=>{r=!1}},[e,t,n]);let s=v.useCallback((e,t)=>{i(n=>n===void 0?n:{...n,rows:n.rows.map(n=>{if(n.key!==e)return n;let{key:r,...i}=t;if(i.value===n.value){let{pending:e,...t}=n;return t}return{...n,pending:i}})})},[]);return{...r?{data:r}:{},...a===void 0?{}:{error:a},noteWrite:s}}var tT=[`model`,`models.utility`,`fallback.model`],nT=`model`;function rT({catalog:e,client:t}){let n=R(),[r,i]=v.useState(``),[a,o]=v.useState(!1),[s,c]=v.useState(),[l,u]=v.useState(),d=r.trim()!==``&&r.trim()!==l?.value,f=()=>{if(!d||a)return;o(!0),c(void 0);let e=r.trim();t.setDefaultModel(e).then(t=>{u({path:t.path,value:e}),o(!1)}).catch(e=>{c(e instanceof Error?e.message:String(e)),o(!1)})};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`panelcol__lede`,children:n(`web.ui.set.no_provider_lede`)}),(0,L.jsx)(`div`,{className:`setgroup`,children:(0,L.jsx)(`div`,{className:`field`,children:(0,L.jsx)(Ft,{catalog:e,value:r,onChange:i,onPick:i,onSubmit:f,busy:a,keyField:!0,...d?{trailing:(0,L.jsx)(`span`,{className:`setwrite__dirty`,children:n(`web.ui.set.dirty`)})}:{}})})}),(0,L.jsx)(`p`,{className:`panelcol__lede`,children:n(`web.ui.set.no_provider_restart`)}),(0,L.jsxs)(`div`,{className:`setwrite`,children:[(0,L.jsx)(`div`,{className:`setwrite__actions`,children:(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:!d||a,onClick:f,children:n(a?`web.ui.set.no_provider_model_saving`:`web.ui.set.no_provider_model_save`)})}),s===void 0?l?(0,L.jsx)(`p`,{className:`setwrite__hint`,role:`status`,children:n(`web.ui.set.no_provider_model_saved`,{path:l.path})}):(0,L.jsx)(`p`,{className:`setwrite__hint`,children:n(`web.ui.set.no_provider_model`)}):(0,L.jsx)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:s})]})]})}function iT({pane:e,data:t,error:n,sessionId:r,client:i,compression:a,catalog:o,noProvider:s=!1,readOnly:c=!1,noteWrite:l}){let u=R();if(s&&e===`model`&&o)return(0,L.jsx)(rT,{catalog:o,client:i});if(!r)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:u(`web.ui.set.no_session`)});if(n!==void 0)return(0,L.jsx)(Uw,{error:n,noProvider:s,globalScope:!0});if(!t)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:u(`web.ui.set.loading`)});let{own:d,quota:f,search:p,orphans:m}=aT(e,t.rows);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[e===`sessions`&&(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(Qw[e].title)}),d.map(e=>(0,L.jsx)(oT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{},...o&&tT.includes(e.key)?{catalog:o}:{}},e.key)),e===`memory`&&(0,L.jsx)(Bw,{rows:t.rows,...a?{compression:a}:{}}),e===`memory`&&(0,L.jsx)(Iw,{client:i,...r===void 0?{}:{sessionId:r},readOnly:c})]}),f.length>0&&(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(`web.ui.set.g_memory_quota`)}),f.map(e=>(0,L.jsx)(oT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]}),p.length>0&&(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(`web.ui.set.g_session_search`)}),p.map(e=>(0,L.jsx)(oT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]}),m.length>0&&(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(`web.ui.set.g_other`)}),m.map(e=>(0,L.jsx)(oT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]})]})}function aT(e,t){let n=new Set(Jw[e]),r=new Set(Object.values(Jw).flat()),i=Jw[e].map(e=>t.find(t=>t.key===e)).filter(e=>e!==void 0&&n.has(e.key)),a=e=>qw.includes(e)||Kw.includes(e);return{own:i.filter(e=>!a(e.key)),quota:i.filter(e=>qw.includes(e.key)),search:i.filter(e=>Kw.includes(e.key)),orphans:e===`model`?t.filter(e=>!r.has(e.key)):[]}}function oT({row:e,managedPath:t,client:n,sessionId:r,catalog:i,noteWrite:a}){let o=R(),s=Yw[e.key],c=Xw[e.key],[l,u]=v.useState(!1),[d,f]=v.useState(),p=d??e.pending;return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:s?o(s):e.key}),c&&(0,L.jsx)(bt,{text:o(c),about:s?o(s):e.key}),p&&(0,L.jsx)(lT,{pending:p}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":e.layer,children:Hw(e.layer,o)})]}),(0,L.jsxs)(`div`,{className:`field__ctl`,children:[(0,L.jsx)(`code`,{className:`cmd`,children:e.value===void 0?o(`web.ui.set.unset`):bT(e.value)}),e.writes.length>0&&!l&&(0,L.jsx)(`button`,{className:`btn btn--icon`,type:`button`,onClick:()=>u(!0),"aria-label":o(`web.ui.set.edit`),title:o(`web.ui.set.edit`),children:(0,L.jsx)(z,{name:`pencil`})})]}),e.layer===`managed`&&(0,L.jsx)(_T,{path:t}),l&&(0,L.jsx)(sT,{row:e,client:n,sessionId:r,...i?{catalog:i}:{},onDone:t=>{f(t),a?.(e.key,t),u(!1)},onCancel:()=>u(!1)}),p&&(0,L.jsx)(uT,{receipt:p,row:e}),e.overridable&&(0,L.jsx)(vT,{row:e,t:o})]})}function sT({row:e,client:t,sessionId:n,catalog:r,onDone:i,onCancel:a}){let o=R(),s=e.writes[0],c=e.value===void 0?``:bT(e.value),[l,u]=v.useState(c),[d,f]=v.useState(s.layer),[p,m]=v.useState(!1),[h,g]=v.useState(),_=e.writes.find(e=>e.layer===d)??s,y=fT(l,dT(e)),b=l!==c||d!==s.layer,x=hT(e),S=Zw[e.key],C=b&&y===null?pT(l,e,x!==null,o):null,w=()=>{y===null||!b||p||(m(!0),g(void 0),t.writeSetting(n,{key:e.key,layer:d,value:y}).then(i).catch(e=>{g(e instanceof Error?e.message:String(e)),m(!1)}))},T=b?(0,L.jsx)(`span`,{className:`setwrite__dirty`,children:o(`web.ui.set.dirty`)}):null;return(0,L.jsxs)(`div`,{className:`setwrite`,children:[r&&e.key===nT?(0,L.jsx)(Ft,{catalog:r,value:l,onChange:u,onPick:e=>u(e),onSubmit:w,busy:p,keyField:!0,...T?{trailing:T}:{}}):r?(0,L.jsx)(Rt,{catalog:r,value:l,onChange:u,onPick:e=>u(e),onSubmit:w,busy:p,idBase:`mpick-${e.key.replace(/\./g,`-`)}`,...T?{trailing:T}:{}}):(0,L.jsxs)(`div`,{className:`setwrite__line setwrite__value`,children:[(0,L.jsx)(`span`,{className:`setwrite__label`,children:o(`web.ui.set.new_value`)}),(0,L.jsxs)(`div`,{className:`setwrite__field`,children:[x?(0,L.jsx)(mT,{choices:x,value:l.trim(),busy:p,label:o(`web.ui.set.new_value`),onPick:u}):(0,L.jsx)(`input`,{className:`input input--mono input--wide`,value:l,disabled:p,"aria-label":o(`web.ui.set.new_value`),...S?{placeholder:o(S)}:{},onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&w()}}),T]})]}),(0,L.jsxs)(`div`,{className:`setwrite__line setwrite__layer`,children:[(0,L.jsx)(`span`,{className:`setwrite__label`,children:o(`web.ui.set.write_layer`)}),(0,L.jsx)(`div`,{className:`seg`,role:`group`,"aria-label":o(`web.ui.set.write_layer`),children:e.writes.map(e=>(0,L.jsx)(`button`,{type:`button`,"aria-pressed":e.layer===d,disabled:p,onClick:()=>f(e.layer),children:Hw(e.layer,o)},e.layer))})]}),(0,L.jsxs)(`p`,{className:`setwrite__label setwrite__where`,children:[(0,L.jsx)(`span`,{children:o(`web.ui.set.write_file`)}),(0,L.jsx)(`code`,{children:_.path})]}),(0,L.jsx)(cT,{write:_}),h&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:h})]}),(0,L.jsxs)(`div`,{className:`setwrite__line setwrite__foot`,children:[C&&(0,L.jsxs)(`p`,{className:`setwrite__blocked`,role:`status`,children:[(0,L.jsx)(z,{name:`circle-alert`,size:`sm`}),(0,L.jsx)(`span`,{children:C})]}),(0,L.jsxs)(`div`,{className:`setwrite__actions`,children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:a,children:o(`web.ui.set.cancel`)}),(0,L.jsx)(`button`,{className:`btn btn--sm btn--primary`,type:`button`,disabled:p||!b||y===null,onClick:w,children:o(`web.ui.set.save`)})]})]})]})}function cT({write:e}){let t=R();return e.futile?(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.futile.reason===`shadowed`?t(`web.ui.set.futile_shadowed`,{layer:Hw(e.layer,t),by:e.futile.by?Hw(e.futile.by,t):``}):t(`web.ui.set.futile_untrusted`,{layer:Hw(e.layer,t)})})}):null}function lT({pending:e}){let t=R()(e.futile?`web.ui.set.pending_futile`:e.apply===`new-session`?`web.ui.set.pending_new_session`:`web.ui.set.pending_restart`);return(0,L.jsx)(`span`,{className:`field__pending`,"data-tone":e.futile?`warn`:`info`,title:t,children:t})}function uT({receipt:e,row:t}){let n=R();return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setwrite__receipt`,children:[(0,L.jsx)(`span`,{children:n(`web.ui.set.wrote`,{layer:Hw(e.layer,n),value:bT(e.value)})}),(0,L.jsx)(`code`,{children:e.path}),(0,L.jsx)(`span`,{children:n(e.apply===`new-session`?`web.ui.set.wrote_new_session`:`web.ui.set.wrote_stale`,{value:t.value===void 0?n(`web.ui.set.unset`):bT(t.value)})})]}),e.futile&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.futile.reason===`shadowed`?n(`web.ui.set.futile_shadowed`,{layer:Hw(e.layer,n),by:e.futile.by?Hw(e.futile.by,n):``}):n(`web.ui.set.futile_untrusted`,{layer:Hw(e.layer,n)})})})]})}function dT(e){return e.valueKind??`string`}function fT(e,t){let n=e.trim();if(n.length===0)return null;if(t===`boolean`)return n===`true`||n!==`false`&&null;if(t!==`number`)return n;let r=Number(n);return Number.isFinite(r)?r:null}function pT(e,t,n,r){return e.trim().length===0?r(n?`web.ui.set.blocked_pick`:`web.ui.set.blocked_empty`):dT(t)===`boolean`?r(`web.ui.set.blocked_boolean`):r(`web.ui.set.blocked_number`,{text:e.trim()})}function mT({choices:e,value:t,busy:n,label:r,onPick:i}){return(0,L.jsx)(`div`,{className:`seg`,role:`group`,"aria-label":r,children:e.map(e=>(0,L.jsx)(`button`,{type:`button`,"aria-pressed":e===t,disabled:n,onClick:()=>i(e),children:(0,L.jsx)(`code`,{children:e})},e))})}function hT(e){return e.choices&&e.choices.length>0?e.choices:dT(e)===`boolean`?gT:null}var gT=[`true`,`false`];function _T({path:e}){let t=R();return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`p`,{className:`lockline`,children:[(0,L.jsx)(z,{name:`lock`,size:`sm`}),(0,L.jsx)(`span`,{children:t(`web.ui.set.managed_locked`)})]}),e!==null&&(0,L.jsx)(`p`,{className:`field__hint`,children:(0,L.jsx)(`code`,{children:e})})]})}function vT({row:e,t}){let n=e.chain.findIndex(t=>t.layer===e.layer);return(0,L.jsxs)(`details`,{className:`why`,children:[(0,L.jsxs)(`summary`,{children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),t(`web.ui.set.why`)]}),(0,L.jsx)(`dl`,{className:`chain`,children:e.chain.map((e,r)=>(0,L.jsx)(yT,{step:e,won:r===n,t},e.layer))})]})}function yT({step:e,won:t,t:n}){return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:Hw(e.layer,n)}),(0,L.jsx)(`dd`,{...t?{"data-win":``}:{},children:e.value===void 0?`—`:bT(e.value)}),(0,L.jsx)(`dd`,{className:`chain__win`,children:t?n(`web.ui.set.chain_win`):``})]})}function bT(e){return Array.isArray(e)?e.join(` → `):String(e)}var xT=`allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin`,ST=8e3;function CT(e,t){try{return new URL(e).hostname===t.hostname}catch{return!0}}function wT({item:e,here:t}){let n=R(),[r,i]=v.useState(!1),a=CT(e.url,t);return v.useEffect(()=>{if(a)return;i(!1);let e=setTimeout(()=>i(!0),ST);return()=>clearTimeout(e)},[e.url,a]),a?(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.settings.host_pane_same_origin`,{url:e.url})})]}):(0,L.jsxs)(`div`,{className:`hostpane`,children:[r&&(0,L.jsxs)(`p`,{className:`note hostpane__hint`,"data-tone":`info`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`info`,size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.settings.host_pane_slow`,{url:e.url})})]}),(0,L.jsx)(`iframe`,{className:`hostpane__frame`,title:e.label,src:e.url,sandbox:xT,referrerPolicy:`no-referrer`,onLoad:()=>i(!1)},e.url)]})}var TT={"dangerous-command":`web.ui.sec.audit_code_dangerous_command`,"sensitive-path":`web.ui.sec.audit_code_sensitive_path`,obfuscated:`web.ui.sec.audit_code_obfuscated`,"rule-match":`web.ui.sec.audit_code_rule_match`,"policy-rule":`web.ui.sec.audit_code_policy_rule`,"approval-cache":`web.ui.sec.audit_code_approval_cache`,"sandbox-isolation":`web.ui.sec.audit_code_sandbox_isolation`,"level-default":`web.ui.sec.audit_code_level_default`,"headless-preauthorized":`web.ui.sec.audit_code_headless_preauthorized`,"headless-unauthorized":`web.ui.sec.audit_code_headless_unauthorized`,"user-approved":`web.ui.sec.audit_code_user_approved`,"user-denied":`web.ui.sec.audit_code_user_denied`};function ET(e,t){let n=TT[e];return n?t(n):e}function DT({audit:e}){let t=R();if(e.rows.length===0)return null;let n=[...e.rows].reverse();return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:t(`web.ui.sec.g_audit`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.audit_lede`)}),(0,L.jsxs)(`div`,{className:`audit`,children:[(0,L.jsxs)(`div`,{className:`audit__head`,"aria-hidden":`true`,children:[(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_at`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_tool`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_type`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_target`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_outcome`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_code`)})]}),n.map((e,n)=>(0,L.jsx)(OT,{row:e,t},`${e.at}:${e.toolName}:${n}`))]}),e.dropped>0&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.audit_dropped`,{dropped:e.dropped})})}),(0,L.jsx)(`div`,{className:`note-block`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.audit_ephemeral`)})})]})}function OT({row:e,t}){let n=new Date(e.at),r=ET(e.code,t);return(0,L.jsxs)(`div`,{className:`audit__row`,"data-outcome":e.outcome,children:[(0,L.jsx)(`span`,{className:`audit__at`,title:n.toLocaleString(),children:n.toLocaleTimeString()}),(0,L.jsx)(`span`,{className:`audit__tool`,title:e.toolName,children:e.toolName}),(0,L.jsx)(`span`,{className:`audit__type`,children:e.type}),(0,L.jsx)(`span`,{className:`audit__target`,title:e.target,children:e.target}),(0,L.jsx)(`span`,{className:`audit__outcome`,children:t(e.outcome===`granted`?`web.ui.sec.audit_granted`:`web.ui.sec.audit_denied`)}),(0,L.jsx)(`span`,{className:`audit__code`,title:r,children:r})]})}var kT={shadowed:`web.ui.sec.shadow_shadowed`,partial:`web.ui.sec.shadow_partial`,redundant:`web.ui.sec.shadow_redundant`},AT={deny:`web.ui.sec.cached_d_deny`,"allow-session":`web.ui.sec.cached_d_session`,"allow-always":`web.ui.sec.cached_d_always`};function jT({permission:e,client:t,sessionId:n}){let r=R(),{level:i,configured:a,configuredLayer:o,rules:s,shadows:c,managed:l}=e;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.sec.g_perm`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:r(`web.ui.sec.perm_field`)}),(0,L.jsx)(bt,{text:r(`web.ui.sec.perm_hint`),about:r(`web.ui.sec.perm_field`)})]}),(0,L.jsxs)(`div`,{className:`field__ctl`,children:[(0,L.jsxs)(`div`,{className:`permrow`,children:[(0,L.jsx)(`span`,{className:`permrow__when`,children:r(`web.ui.sec.perm_now`)}),(0,L.jsx)(`code`,{className:`cmd`,children:i===`unknown`?r(`web.ui.sec.perm_unknown`):i}),i!==a&&i!==`unknown`&&(0,L.jsx)(`span`,{className:`permrow__note`,children:r(`web.ui.sec.perm_now_changed`)})]}),(0,L.jsxs)(`div`,{className:`permrow`,children:[(0,L.jsx)(`span`,{className:`permrow__when`,children:r(`web.ui.sec.perm_default`)}),(0,L.jsx)(`code`,{className:`cmd`,children:a===`unknown`?r(`web.ui.sec.perm_unknown`):a}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":o,children:Hw(o,r)})]})]})]}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:r(`web.ui.sec.managed_field`)}),l.present&&(0,L.jsx)(`span`,{className:`layer`,"data-layer":`managed`,children:r(`web.ui.sec.layer_managed`)})]}),l.present?(0,L.jsxs)(`p`,{className:`lockline`,children:[(0,L.jsx)(z,{name:`lock`,size:`sm`}),(0,L.jsx)(`span`,{children:r(`web.ui.sec.managed_on`)})]}):(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.sec.managed_off`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:(0,L.jsx)(`code`,{children:l.path})}),l.rulesOnly&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`danger`,children:(0,L.jsx)(`p`,{children:r(`web.ui.sec.managed_rules_only`)})}),l.bypassDisabled&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:r(`web.ui.sec.managed_bypass_off`)})})]})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.sec.g_rules`)}),s.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.rules_empty`)}):(0,L.jsx)(`div`,{className:`rules`,children:s.map((e,t)=>(0,L.jsxs)(`div`,{className:`rule`,"data-verdict":e.verdict,children:[(0,L.jsx)(`span`,{className:`rule__verdict`,children:e.verdict}),(0,L.jsx)(`span`,{className:`rule__pattern`,title:e.rule,children:e.rule}),(0,L.jsx)(`span`,{className:`rule__src`,title:Hw(e.layer,r),children:Hw(e.layer,r)})]},`${e.verdict}:${e.rule}:${t}`))}),c.length>0&&(0,L.jsxs)(`div`,{className:`note-block`,"data-tone":`warn`,children:[(0,L.jsx)(`p`,{children:r(`web.ui.sec.shadow_lede`)}),c.map((e,t)=>(0,L.jsx)(`p`,{children:r(kT[e.kind],{rule:e.rule,by:e.by})},`${e.kind}:${e.rule}:${e.by}:${t}`))]})]}),(0,L.jsx)(MT,{cached:e.cached,level:i,client:t,sid:n})]})}function MT({cached:e,level:t,client:n,sid:r}){let i=R(),[a,o]=v.useState(null),[s,c]=v.useState(null),[l,u]=v.useState();v.useEffect(()=>{o(null),u(void 0)},[e]);let d=a??e;if(d.length===0)return null;let f=e=>{c(e),u(void 0),n.revokeApproval(r,e).then(e=>o(e.cached)).catch(e=>u(e instanceof Error?e.message:String(e))).finally(()=>c(null))};return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:i(`web.ui.sec.g_cached`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:i(`web.ui.sec.cached_lede`)}),(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.sec.cached_not_rules`)})}),t===`bypass`&&(0,L.jsx)(`div`,{className:`note-block`,children:(0,L.jsx)(`p`,{children:i(`web.ui.sec.cached_bypass`)})}),(0,L.jsx)(`div`,{className:`approvals`,children:d.map(e=>(0,L.jsx)(NT,{row:e,t:i,busy:s===e.id,onRevoke:()=>f(e.id)},e.id))}),l!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:i(`web.ui.sec.cached_failed`,{message:l})})]}),(0,L.jsx)(`p`,{className:`field__hint`,children:i(`web.ui.sec.cached_where`)})]})}function NT({row:e,t,busy:n,onRevoke:r}){let i=new Date(e.at);return(0,L.jsxs)(`div`,{className:`approval`,"data-decision":e.decision,children:[(0,L.jsx)(`span`,{className:`approval__decision`,children:t(AT[e.decision])}),(0,L.jsx)(`span`,{className:`approval__tool`,title:e.toolName,children:e.toolName}),(0,L.jsx)(`span`,{className:`approval__target`,title:e.target,children:e.target}),(0,L.jsx)(`span`,{className:`approval__scope`,children:t(e.scope===`prefix`?`web.ui.sec.cached_scope_prefix`:`web.ui.sec.cached_scope_exact`)}),(0,L.jsx)(`span`,{className:`approval__at`,title:i.toLocaleString(),children:i.toLocaleTimeString()}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm approval__revoke`,disabled:n,"aria-label":t(`web.ui.sec.cached_revoke_one`,{target:e.target}),onClick:r,children:t(n?`web.ui.sec.cached_revoking`:`web.ui.sec.cached_revoke`)})]})}function PT({policy:e}){let t=R(),{dirs:n,projectSkipped:r,skippedDir:i}=e;return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:t(`web.ui.sec.g_policy`)}),n.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:t(`web.ui.sec.policy_none`)}):(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`policy`,children:n.map(e=>(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsx)(`code`,{className:`slot__path`,children:e.dir}),(0,L.jsx)(`span`,{className:`slot__desc`,children:t(FT(e))}),(0,L.jsx)(`span`,{className:`slot__stat`,children:t(`web.ui.sec.policy_n`,{count:e.ruleCount})})]},`${e.source}:${e.dir}`))}),r&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.policy_skipped`,{dir:i??``})})})]})}function FT(e){return e.source===`user`?`web.ui.sec.policy_user`:`web.ui.sec.policy_project`}var IT={"os-isolated":`web.ui.sec.sb_os_isolated`,"backend-unavailable":`web.ui.sec.sb_backend_unavailable`,"backend-missing":`web.ui.sec.sb_backend_missing`,"platform-unsupported":`web.ui.sec.sb_platform_unsupported`};function LT({sandbox:e}){let t=R();return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:t(`web.ui.sec.g_sandbox`)}),e?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.sb_field`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(`code`,{className:`cmd`,children:e.backend})}),(0,L.jsx)(`p`,{className:`field__hint`,children:t(IT[e.reason],{backend:e.backend,platform:e.platform})})]}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.sb_switch`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(`code`,{className:`cmd`,children:t(e.terminalEnabled===!1?`web.ui.sec.sb_switch_off`:`web.ui.sec.sb_switch_on`)})}),e.terminalEnabled===!1?(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`danger`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.sb_switch_off_hint`)})}):(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.sb_switch_on_hint`)})]}),(0,L.jsx)(RT,{nameKey:`web.ui.sec.sb_covers`,tools:e.covers,emptyKey:`web.ui.sec.sb_covers_none`}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.sb_excludes`)})}),e.excludes.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.sb_excludes_none`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`field__ctl`,children:e.excludes.map(e=>(0,L.jsx)(`code`,{className:`cmd`,children:e},e))}),(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`danger`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.sb_excludes_why`)})})]})]})]}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`triangle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.sb_absent_long`)})]})]})}function RT({nameKey:e,hintKey:t,tools:n,emptyKey:r}){let i=R();return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:i(e)})}),n.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:i(r)}):(0,L.jsx)(`div`,{className:`field__ctl`,children:n.map(e=>(0,L.jsx)(`code`,{className:`cmd`,children:e},e))}),t!==void 0&&(0,L.jsx)(`p`,{className:`field__hint`,children:i(t)})]})}function zT({workspace:e,known:t,client:n,sessionId:r,onRecheck:i}){let a=R(),[o,s]=v.useState(),c=t.filter(e=>e.exists),l=t.filter(e=>!e.exists),u=n&&r!==void 0&&i?e=>{s(void 0),n.forgetWorkspace(r,e).then(()=>i()).catch(e=>{s(e instanceof Error?e.message:a(`web.ui.sec.known_forget_failed`))})}:void 0;return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:a(`web.ui.sec.g_space`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:a(`web.ui.sec.known_field`)})}),t.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:a(`web.ui.sec.known_empty`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(BT,{rows:c,t:a,...u?{onForget:u}:{}}),l.length>0&&(0,L.jsxs)(`details`,{className:`sec__gone`,children:[(0,L.jsx)(`summary`,{children:a(`web.ui.sec.known_gone_n`,{count:l.length})}),(0,L.jsx)(`p`,{className:`field__hint`,children:a(`web.ui.sec.known_gone_why`)}),(0,L.jsx)(BT,{rows:l,t:a,dim:!0,...u?{onForget:u}:{}})]})]}),(0,L.jsx)(`p`,{className:`field__hint`,children:a(`web.ui.sec.known_hint`)}),o!==void 0&&(0,L.jsx)(`p`,{className:`field__hint`,children:o})]}),e?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(UT,{workspace:e,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}}),(0,L.jsx)(WT,{workspace:e})]}):(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:a(`web.ui.sec.bound_field`)})}),(0,L.jsx)(`p`,{className:`field__hint`,children:a(`web.ui.sec.unbound`)})]})]})}function BT({rows:e,t,onForget:n,dim:r=!1}){return(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`space`,children:e.map(e=>(0,L.jsxs)(`li`,{className:r?`slot sec__gone-row`:`slot`,...e.current?{"aria-current":`true`}:{},children:[(0,L.jsx)(`code`,{className:`slot__path`,children:e.root}),(0,L.jsx)(`span`,{className:`slot__desc`,children:t(HT(e.level,e.trusted,e.execTrusted))}),(0,L.jsx)(`span`,{className:`slot__stat`,children:e.current?t(`web.ui.sec.ws_current`):n?(0,L.jsx)(`button`,{type:`button`,className:`sec__forget`,onClick:()=>n(e.root),title:t(`web.ui.sec.known_forget_title`),children:t(`web.ui.sec.known_forget`)}):``})]},e.root))})}function VT(e){return e.hookFiles.some(e=>e===`.epoch/hooks.json`||e===`.epoch\\hooks.json`)||e.policies>0}function HT(e,t,n=!0){return t?e===`trusted`?n?`web.ui.sec.ws_trusted`:`web.ui.sec.ws_trusted_read`:`web.ui.sec.ws_gate_off`:e===`untrusted`?`web.ui.sec.ws_refused`:`web.ui.sec.ws_unknown`}function UT({workspace:e,client:t,sessionId:n,onRecheck:r}){let i=R();return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:i(`web.ui.sec.main_field`,{name:e.name})}),(0,L.jsxs)(`span`,{className:`sec__trust`,"data-trust":e.trusted?`on`:`off`,children:[(0,L.jsx)(z,{name:e.trusted?`check`:`triangle-alert`,size:`sm`}),i(HT(e.trustLevel,e.trusted))]})]}),(0,L.jsx)(`p`,{className:`field__hint`,children:(0,L.jsx)(`code`,{children:e.root})}),(0,L.jsx)(`p`,{className:`field__hint`,children:i(`web.ui.sec.main_hint`)}),(0,L.jsx)(GT,{titleKey:`web.ui.sec.loaded_files`,emptyKey:`web.ui.sec.loaded_none`,files:e.instructionFiles}),e.skippedInstructionFiles.length>0&&(0,L.jsxs)(`div`,{className:`locked`,children:[(0,L.jsx)(`p`,{className:`locked__line`,children:i(`web.ui.sec.skipped_line`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:i(`web.ui.sec.skipped_why`)}),(0,L.jsx)(`ul`,{className:`sec__files`,children:e.skippedInstructionFiles.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))}),(0,L.jsx)(qx,{root:e.root,want:`read`,available:e.trustRequest,...t?{client:t}:{},...n===void 0?{}:{sessionId:n},...r?{onRecheck:r}:{}})]}),e.trusted&&!e.execTrusted&&VT(e.inventory)&&(0,L.jsxs)(`div`,{className:`locked`,children:[(0,L.jsx)(`p`,{className:`locked__line`,children:i(`web.ui.sec.exec_line`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:i(`web.ui.sec.exec_why`)}),(0,L.jsx)(Jx,{inventory:e.inventory,tier:`exec`}),(0,L.jsx)(qx,{root:e.root,want:`exec`,available:e.trustRequest,...t?{client:t}:{},...n===void 0?{}:{sessionId:n},...r?{onRecheck:r}:{}})]})]})}function WT({workspace:e}){let t=R();return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.extra_field`)}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":`cli`,children:t(`web.ui.sec.layer_add_dir`)})]}),e.extraRoots.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:t(`web.ui.sec.extra_none`)}):(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`root`,children:e.extraRoots.map(e=>(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsx)(`code`,{className:`slot__path`,children:e}),(0,L.jsx)(`span`,{className:`slot__desc`,children:t(`web.ui.sec.extra_desc`)})]},e))}),(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.extra_hint`)}),e.unloadedExtraInstructionFiles.length>0&&(0,L.jsxs)(`div`,{className:`note-block`,"data-tone":`warn`,children:[(0,L.jsx)(`p`,{children:t(`web.ui.sec.unloaded_extra`)}),(0,L.jsx)(`ul`,{className:`sec__files`,children:e.unloadedExtraInstructionFiles.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))}),(0,L.jsx)(`p`,{children:t(`web.ui.sec.unloaded_extra_way`)})]})]})}function GT({titleKey:e,emptyKey:t,files:n}){let r=R();return n.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:r(t)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`field__hint`,children:r(e)}),(0,L.jsx)(`ul`,{className:`sec__files`,children:n.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))})]})}function KT({client:e,sessionId:t,noProvider:n=!1}){let r=R(),[i,a]=v.useState(),[o,s]=v.useState(),[c,l]=v.useState(0);return v.useEffect(()=>{if(!t)return;let n=!0;return s(void 0),e.security(t).then(e=>{n&&a(e)}).catch(e=>{n&&s(e)}),()=>{n=!1}},[e,t,c]),t?o===void 0?i?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`seccards`,children:JT(i,r).map(e=>(0,L.jsxs)(`div`,{className:`seccard`,...e.tone?{"data-tone":e.tone}:{},children:[(0,L.jsx)(`span`,{className:`seccard__k`,children:r(e.label)}),(0,L.jsx)(`b`,{className:`seccard__v`,children:e.value}),(0,L.jsx)(`span`,{className:`seccard__d`,children:e.desc})]},e.label))}),(0,L.jsx)(jT,{permission:i.permission,client:e,sessionId:t}),(0,L.jsx)(zT,{workspace:i.workspace,known:i.knownWorkspaces,client:e,sessionId:t,onRecheck:()=>l(e=>e+1)}),(0,L.jsx)(LT,{sandbox:i.sandbox}),(0,L.jsx)(PT,{policy:i.policy}),(0,L.jsx)(DT,{audit:i.audit})]}):(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.loading`)}):(0,L.jsx)(Uw,{error:o,noProvider:n}):(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.no_session`)})}function qT(e,t,n,r){return{label:e,value:t,desc:n,...r?{tone:r}:{}}}function JT(e,t){let{managed:n,level:r,rules:i,shadows:a}=e.permission,o=e.policy.dirs.reduce((e,t)=>e+t.ruleCount,0),s=n.present&&(n.rulesOnly||n.bypassDisabled),c=r===`bypass`||r===`unknown`?`warn`:s?`lock`:`ok`,l=a.some(e=>e.kind===`shadowed`);return[XT(e.sandbox,t),qT(`web.ui.sec.card_perm`,r===`unknown`?t(`web.ui.sec.perm_unknown`):r,t(s?`web.ui.sec.perm_d_managed`:`web.ui.sec.perm_d_local`),c),YT(e,t),qT(`web.ui.sec.card_rules`,t(`web.ui.sec.rules_n`,{count:i.length,policy:o}),ZT(i,t),l?`warn`:void 0)]}function YT(e,t){let n=e.workspace,r=e.knownWorkspaces.length,i=n?t(`web.ui.sec.space_at`,{root:n.root}):t(`web.ui.sec.space_unbound`);if(!n)return qT(`web.ui.sec.card_space`,t(`web.ui.sec.space_no_ws`,{count:r}),i,void 0);let a=n.inventory.instructionFiles.length>0||n.inventory.skills>0||n.inventory.roles>0||n.inventory.commands>0;return n.trusted?!n.execTrusted&&VT(n.inventory)?qT(`web.ui.sec.card_space`,t(`web.ui.sec.space_read_only`),i,`warn`):qT(`web.ui.sec.card_space`,t(`web.ui.sec.space_trusted`),i,`ok`):qT(`web.ui.sec.card_space`,t(`web.ui.sec.space_untrusted_ws`),i,a?`warn`:void 0)}function XT(e,t){if(!e)return qT(`web.ui.sec.card_sandbox`,t(`web.ui.sec.sb_absent`),t(`web.ui.sec.sb_absent_d`),`warn`);let n={backend:e.backend,platform:e.platform};return qT(`web.ui.sec.card_sandbox`,e.level===`os`?t(`web.ui.sec.sb_os`,n):t(`web.ui.sec.sb_process`,n),t(IT[e.reason],n),e.level===`os`?`ok`:`warn`)}function ZT(e,t){if(e.length===0)return t(`web.ui.sec.rules_none`);let n=new Map;for(let t of e)n.set(t.layer,(n.get(t.layer)??0)+1);return[...n].map(([e,n])=>`${Hw(e,t)} ${n}`).join(` / `)}var QT={binary:`message_part.file_binary`,denied:`message_part.file_denied`,unreadable:`message_part.file_unreadable`,"over-limit":`message_part.file_over_limit`,"not-restored":`message_part.file_not_restored`},$T={"invalid-reference":`message_part.session_invalid_reference`,"self-reference":`message_part.session_self_reference`,"too-many":`message_part.session_too_many`,"not-authorized":`message_part.session_not_authorized`,"budget-exceeded":`message_part.session_budget_exceeded`,"not-restored":`message_part.session_not_restored`};function eE(e,t){return e.omitted?t(QT[e.omitted],{path:e.path}):e.truncatedTo===void 0?t(`message_part.file`,{path:e.path}):t(`message_part.file_truncated`,{path:e.path,bytes:e.truncatedTo})}function tE(e,t){let n=e.title??e.sessionId??e.ref;return e.omitted?t($T[e.omitted],{name:n}):e.messageCount===void 0?t(`message_part.session`,{name:n}):e.totalMessages===void 0?t(`message_part.session_counted`,{name:n,count:e.messageCount}):t(`message_part.session_counted_of_total`,{name:n,count:e.messageCount,total:e.totalMessages})}function nE(e,t){return e.mediaType===void 0?t(`message_part.image_unknown_type`):t(`message_part.image`,{mediaType:e.mediaType})}function rE(e,t,n={}){return typeof e==`string`?e:e.map(e=>e.type===`text`?e.text:e.type===`file`?eE(e,t):e.type===`session`?tE(e,t):e.type===`image`?n.imagesShownAsThumbnails?void 0:nE(e,t):te(e)).filter(e=>e!==void 0).join(`
376
- `)}function iE(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r?.type!==`tool_group`)continue;let i=r.tools.findIndex(e=>e.callId===t.toolCallId);if(i===-1)continue;let a=[...r.tools];a[i]={...a[i],status:`done`,result:t.output,...t.artifacts&&t.artifacts.length>0?{artifacts:t.artifacts}:{}},e[n]={...r,tools:a};return}}function aE(e,t){let n=t.reasoning?.trim();if(n&&e.push({type:`thinking`,thought:n}),t.content&&e.push({type:`assistant`,text:t.content}),!t.toolCalls||t.toolCalls.length===0)return;let r=t.toolCalls.map(e=>({callId:e.toolCallId,toolName:e.toolName,request:e.input,status:`pending`}));e.push({type:`tool_group`,tools:r})}var oE={stop:null,"max-turns":`web.ui.thread.finish_max_turns`,stalled:`web.ui.thread.finish_stalled`,looping:`web.ui.thread.finish_looping`,aborted:`web.ui.thread.finish_aborted`,"content-filter":`web.ui.thread.finish_filtered`,compliance:`web.ui.thread.finish_compliance`,length:`web.ui.thread.finish_length`,blank:`web.ui.thread.finish_blank`,"budget-exceeded":`web.ui.thread.finish_budget`,error:`web.ui.thread.finish_error`};function sE(e,t){if(!e)return null;let n=oE[e];return n?t(n):null}function cE(e,t){let n=[],r=[];for(let i of e)switch(i.role){case`user`:n.push({type:`user`,text:rE(i.parts??i.content,t,{imagesShownAsThumbnails:!0}),...lE(i)});break;case`assistant`:{let e=n.length;aE(n,i),i.turnFacts&&n.length>e&&r.push({itemIndex:n.length-1,facts:i.turnFacts});let a=sE(i.finishReason,t);a&&n.push({type:`info`,text:a});break}case`tool`:for(let e of i.toolResults??[])iE(n,e)}return{items:n,turns:r}}function lE(e){let t=[],n=[],r=[];for(let i of e.parts??[])if(i.type===`session`){let{type:e,text:n,...r}=i;t.push(r)}else if(i.type===`file`){let{type:e,text:t,...r}=i;n.push(r)}else if(i.type===`image`){let{type:e,...t}=i;r.push(t)}return{...t.length>0?{references:t}:{},...n.length>0?{files:n}:{},...r.length>0?{images:r}:{}}}function uE({sessionId:e,client:t}){let n=R(),[r,i]=v.useState(null),[a,o]=v.useState(!1);return v.useEffect(()=>{let r=!0;return i(null),o(!1),t.messages(e).then(e=>{if(!r)return;let t=cE(e.messages,n);i(zr(hr,{type:`replay`,items:t.items,turns:t.turns,approvals:[],questions:[],turn:`idle`,readOnly:`history`,...e.usage?{usage:e.usage}:{}}))},()=>{r&&o(!0)}),()=>{r=!1}},[t,e,n]),a?(0,L.jsx)(`p`,{className:`setsess__hint`,children:n(`web.ui.set.sess_body_failed`)}):r?(0,L.jsx)(sy,{history:r.history,pending:r.stream.pending,thought:r.stream.thought,thoughtParts:r.thoughtParts,approvals:r.approvals,turn:`idle`,turns:r.turns,heads:r.heads}):(0,L.jsx)(`p`,{className:`setsess__hint`,children:n(`web.ui.set.sess_body_loading`)})}function dE({client:e,onLoad:t,onOpenSession:n,acts:r,configPane:i}){let a=R(),{lang:o}=ot(),s=Date.now(),[c,l]=v.useState(null),[u,d]=v.useState(null),f=v.useCallback(()=>{t().then(e=>l(e),()=>l([]))},[t]);v.useEffect(f,[f]);let p=e=>{r&&r.setArchived(e,!1).then(()=>{f(),d(t=>t===e?null:t)})};return(0,L.jsx)(`div`,{className:`setsess`,children:(0,L.jsxs)(`div`,{className:`setsess__cols`,children:[(0,L.jsx)(`div`,{className:`setsess__list`,children:c===null?(0,L.jsx)(`p`,{className:`setsess__hint`,children:a(`web.ui.set.sess_loading`)}):c.length===0?(0,L.jsx)(`p`,{className:`setsess__hint`,children:a(`web.ui.slist.archived_empty`)}):(0,L.jsx)(`ul`,{className:`setsess__ul`,children:c.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{type:`button`,className:`setsess__row`,"aria-current":u===e.id?`true`:void 0,onClick:()=>d(e.id),children:[(0,L.jsx)(`span`,{className:`setsess__title`,children:e.title||a(`web.ui.topbar.untitled`)}),e.updatedAt!==null&&(0,L.jsx)(`span`,{className:`setsess__meta`,title:a(`web.ui.slist.updated_at`),children:tr(e.updatedAt,s,o)})]})},e.id))})}),(0,L.jsxs)(`div`,{className:`setsess__right`,children:[(0,L.jsx)(`div`,{className:`setsess__body`,children:u===null?(0,L.jsx)(`p`,{className:`setsess__hint`,children:a(`web.ui.set.sess_pick`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setsess__bar`,children:[r&&(0,L.jsxs)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:()=>p(u),children:[(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),(0,L.jsx)(`span`,{children:a(`web.ui.set.sess_unarchive`)})]}),n&&(0,L.jsxs)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:()=>n(u),children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),(0,L.jsx)(`span`,{children:a(`web.ui.set.sess_open`)})]})]}),(0,L.jsx)(uE,{sessionId:u,client:e})]})}),!Te(i.error)&&(0,L.jsx)(iT,{pane:`sessions`,...i})]})]})})}var fE=100,pE=4;function mE(e,t){return t===void 0?e:(e??0)+t}function hE(e){let t={},n=0,r=0,i;for(let a of e){let e=a.usage;e&&(n+=1,t.input=mE(t.input,e.inputTokens),t.output=mE(t.output,e.outputTokens),t.cacheHit=mE(t.cacheHit,e.cacheHitTokens),t.cacheWrite=mE(t.cacheWrite,e.cacheWriteTokens),t.reasoning=mE(t.reasoning,e.reasoningTokens),t.total=mE(t.total,A(e)),e.costUsd!==void 0&&(r+=1,i=(i??0)+e.costUsd))}return{turns:e.length,measured:n,priced:r,tokens:t,costUsd:i}}var gE=[{pick:`input`,label:`web.ui.spend.tok_input`},{pick:`cacheHit`,label:`web.ui.spend.tok_cache_hit`,tier:`cheap`},{pick:`cacheWrite`,label:`web.ui.spend.tok_cache_write`},{pick:`output`,label:`web.ui.spend.tok_output`}];function _E({sessionId:e,turns:t,hasHistory:n}){let r=R();if(e===void 0)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(`web.ui.spend.no_session`)});let i=hE(t);return(0,L.jsx)(L.Fragment,{children:i.turns===0?(0,L.jsx)(`p`,{className:`field__hint`,children:r(n?`web.ui.spend.none_recorded`:`web.ui.spend.none_yet`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.spend.g_total`)}),(0,L.jsx)(yE,{tally:i,t:r})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.spend.g_turns`)}),(0,L.jsx)(xE,{turns:t,t:r})]})]})})}function vE({label:e,value:t,title:n,badge:r}){return(0,L.jsxs)(`div`,{className:`spend__stat`,children:[(0,L.jsx)(`span`,{className:`spend__stat-n`,...n===void 0?{}:{title:n},children:t}),(0,L.jsxs)(`span`,{className:`spend__stat-k`,children:[(0,L.jsx)(`span`,{className:`spend__stat-label`,children:e}),r]})]})}function yE({tally:e,t}){let{turns:n,measured:r,priced:i,tokens:a,costUsd:o}=e,s=a.total,c=Jn();return(0,L.jsxs)(`div`,{className:`spend`,children:[(0,L.jsxs)(`div`,{className:`spend__hero`,children:[(0,L.jsx)(vE,{label:t(`web.ui.spend.col_turn`),value:String(n)}),r>0&&s!==void 0&&(0,L.jsx)(vE,{label:t(`web.ui.spend.col_tokens`),value:iv(s),title:rv(s)}),o!==void 0&&(0,L.jsx)(vE,{label:t(`web.ui.spend.col_cost`),value:c(o,pE),badge:(0,L.jsx)(`span`,{className:`est`,children:t(`web.ui.sidebar.cost_est`)})})]}),(r===0||s===void 0)&&(0,L.jsx)(`p`,{className:`spend__line`,children:t(`web.ui.spend.total_unmeasured`,{turns:String(n)})}),i>0&&i<r&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:t(`web.ui.spend.partial`,{priced:String(i),unpriced:String(r-i)})})}),(0,L.jsx)(bE,{tokens:a,t})]})}function bE({tokens:e,t}){let n=gE.map(t=>({...t,n:e[t.pick]})).filter(e=>e.n!==void 0);if(n.length===0)return null;let r=Math.max(...n.map(e=>e.n),1);return(0,L.jsx)(`ul`,{className:`spend__rows`,children:n.map(n=>(0,L.jsxs)(`li`,{className:`spend__row`,...`tier`in n?{"data-tier":n.tier}:{},children:[(0,L.jsx)(`span`,{className:`spend__label`,children:t(n.label)}),(0,L.jsx)(`span`,{className:`spend__n`,title:rv(n.n),children:iv(n.n)}),(0,L.jsx)(`span`,{className:`spend__bar`,"aria-hidden":`true`,children:(0,L.jsx)(`i`,{style:{width:`${Math.max(1,Math.round(n.n/r*fE))}%`}})}),n.pick===`output`&&e.reasoning!==void 0&&(0,L.jsx)(`span`,{className:`spend__detail`,children:t(`web.ui.spend.tok_reasoning`,{n:iv(e.reasoning)})}),n.pick===`cacheHit`&&(0,L.jsx)(`span`,{className:`spend__detail`,children:t(`web.ui.spend.tok_cache_note`)})]},n.pick))})}function xE({turns:e,t}){return(0,L.jsxs)(`div`,{className:`spendturns`,children:[(0,L.jsxs)(`div`,{className:`spendturns__head`,"aria-hidden":`true`,children:[(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_turn`)}),(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_model`)}),(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_tokens`)}),(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_cost`)})]}),e.map((e,n)=>(0,L.jsx)(SE,{n:n+1,turn:e,t},e.itemId??e.seq))]})}function SE({n:e,turn:t,t:n}){let r=t.usage,i=r?A(r):void 0,a=r?.costUsd,o=Jn();return(0,L.jsxs)(`div`,{className:`spendturn`,children:[(0,L.jsx)(`span`,{className:`spendturn__idx`,children:n(`web.ui.spend.turn_n`,{n:String(e)})}),(0,L.jsx)(`span`,{className:`spendturn__model`,...t.model?{title:t.model}:{},children:t.model??``}),(0,L.jsx)(`span`,{className:`spendturn__tokens`,...i===void 0?{}:{title:rv(i)},children:i===void 0?``:iv(i)}),(0,L.jsx)(`span`,{className:`spendturn__usd`,children:a===void 0?``:o(a,pE)}),(0,L.jsx)(`span`,{className:`spendturn__meta`,children:r===void 0?n(`web.ui.spend.turn_unmeasured`):[...t.durationMs===void 0?[]:[n(`web.ui.spend.turn_took`,{d:av(t.durationMs)})],n(`web.ui.spend.turn_tools`,{n:String(t.toolCalls)})].join(` · `)})]})}var CE={file_read:`web.ui.tools.t_file_read`,file_write:`web.ui.tools.t_file_write`,command:`web.ui.tools.t_command`,network:`web.ui.tools.t_network`,code_exec:`web.ui.tools.t_code_exec`},wE=[`file_read`,`file_write`,`command`,`network`,`code_exec`],TE={allow:`web.ui.tools.v_allow`,ask:`web.ui.tools.v_ask`,deny:`web.ui.tools.v_deny`,depends:`web.ui.tools.v_depends`};function EE({client:e,sessionId:t,noProvider:n=!1}){let r=R(),[i,a]=v.useState(),[o,s]=v.useState();if(v.useEffect(()=>{if(!t)return;let n=!0;return s(void 0),e.tools(t).then(e=>{n&&a(e)}).catch(e=>{n&&s(e)}),()=>{n=!1}},[e,t]),!t)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(`web.ui.tools.no_session`)});if(o!==void 0)return(0,L.jsx)(Uw,{error:o,noProvider:n});if(!i)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(`web.ui.tools.loading`)});let c=i.tools.some(e=>e.gate!==void 0);return(0,L.jsxs)(L.Fragment,{children:[i.level===`unknown`&&(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.tools.level_unknown`)}),!c&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:r(i.level===`unknown`?`web.ui.tools.ungraded_no_session`:`web.ui.tools.ungraded_no_layer`)})}),c?DE(i.tools).map(e=>(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:e.type===null?r(`web.ui.tools.t_other`):r(CE[e.type])}),(0,L.jsx)(OE,{rows:e.rows,level:i.level,t:r})]},e.type)):(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.tools.g_all`)}),(0,L.jsx)(OE,{rows:i.tools,level:i.level,t:r})]})]})}function DE(e){let t=[];for(let n of wE){let r=e.filter(e=>e.type===n);r.length>0&&t.push({type:n,rows:r})}let n=e.filter(e=>!wE.includes(e.type));return n.length>0&&t.push({type:null,rows:n}),t}function OE({rows:e,level:t,t:n}){return(0,L.jsxs)(`div`,{className:`settools`,children:[(0,L.jsxs)(`div`,{className:`settools__head`,"aria-hidden":`true`,children:[(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_tool`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_source`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_desc`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_gate`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_calls`)})]}),e.map(e=>(0,L.jsx)(kE,{row:e,level:t,t:n},e.name))]})}function kE({row:e,level:t,t:n}){let r=e.gate,i=AE(r,t,n);return(0,L.jsxs)(`div`,{className:`settool`,"data-verdict":r?.verdict??`none`,"data-calls":e.calls,children:[(0,L.jsx)(`span`,{className:`settool__name`,title:e.name,children:e.name}),(0,L.jsx)(`span`,{className:`settool__src`,title:e.source,children:e.source}),(0,L.jsx)(`span`,{className:`settool__desc`,title:e.description,children:e.description}),(0,L.jsxs)(`span`,{className:`settool__gate`,children:[(0,L.jsx)(`span`,{className:`settool__verdict`,children:n(r?TE[r.verdict]:`web.ui.tools.v_none`)}),(0,L.jsx)(`span`,{className:`settool__by`,title:i,children:i}),r!==void 0&&r.conditional>0&&(0,L.jsx)(bt,{className:`settool__cond`,text:n(`web.ui.tools.cond`,{count:r.conditional}),about:e.name})]}),(0,L.jsx)(`span`,{className:`settool__calls`,children:e.calls})]})}function AE(e,t,n){if(e===void 0)return n(`web.ui.tools.by_none`);if(e.by===`sandbox`)return n(`web.ui.tools.by_sandbox`);if(e.by===`level`)return n(`web.ui.tools.by_level`,{level:t});let r=e.rule??n(`web.ui.tools.by_rule`);return e.layer===void 0?r:`${r} · ${Hw(e.layer,n)}`}var jE={system:`web.ui.settings.theme_system`,light:`web.ui.settings.theme_light`,dark:`web.ui.settings.theme_dark`},ME={zh:`web.ui.settings.lang_zh`,en:`web.ui.settings.lang_en`};function NE({options:e,value:t,ariaLabel:n,onPick:r}){return(0,L.jsx)(`div`,{className:`seg`,role:`group`,"aria-label":n,children:e.map(e=>(0,L.jsx)(`button`,{type:`button`,"aria-pressed":e.value===t,onClick:()=>r(e.value),children:e.label},e.value))})}var PE=`blocks`;function FE(e){return ky(e,PE)}var IE=[`global`,`session`],LE=[{id:`model`,title:`web.ui.settings.pane_model`,icon:`cpu`,group:`global`},{id:`memory`,title:`web.ui.settings.pane_memory`,icon:`layers`,group:`global`},{id:`sessions`,title:`web.ui.settings.pane_sessions`,icon:`folder`,group:`global`},{id:`budget`,title:`web.ui.settings.pane_budget`,icon:`wallet`,group:`global`},{id:`appearance`,title:`web.ui.settings.appearance`,icon:`sun-moon`,group:`global`},{id:`security`,title:`web.ui.settings.security`,icon:`shield`,group:`session`},{id:`tools`,title:`web.ui.settings.pane_tools`,icon:`wrench`,group:`session`},{id:`spend`,title:`web.ui.settings.pane_spend`,icon:`gauge`,group:`session`},{id:`about`,title:`web.ui.settings.pane_about`,icon:`info`,group:null}];function RE(e){return e===`model`||e===`memory`||e===`budget`||e===`sessions`}function zE(e){let t=new Set(e.hidden??[]),n=LE.filter(n=>(n.id!==`sessions`||e.archived)&&!t.has(n.id)),r=e=>e===null?IE.length:IE.indexOf(e);return[...n].sort((e,t)=>r(e.group)-r(t.group))}function BE({onBack:e,client:t,sessionId:n,compression:r,about:i,diagnostics:a,initialPane:o,readOnly:s=!1,noProvider:c=!1,turns:l,hasHistory:u=!1,onLoadArchived:d,onOpenSession:f,acts:p,hiddenPanes:m,hostPanes:h}){let g=R(),_=v.useMemo(()=>zE({...m?{hidden:m}:{},archived:d!==void 0}),[d,m]),y=v.useMemo(()=>h??[],[h]),b=v.useMemo(()=>{let e=new Set(_.map(e=>e.id)),t=[],n=e=>({id:e.id,icon:FE(e.icon),label:e.label,host:!0});for(let e of _){for(let r of y)r.before===e.id&&t.push(n(r));t.push({id:e.id,icon:e.icon,label:e.title,host:!1})}for(let r of y)(r.before===void 0||!e.has(r.before))&&t.push(n(r));return t},[_,y]),[x,S]=v.useState(o??`model`),C=v.useMemo(()=>b.map(e=>e.id),[b]),w=C.includes(x)?x:C[0],T=y.find(e=>e.id===w),E=T===void 0?w:void 0,D=eT(t,n,E!==void 0&&RE(E)),O=pt(t);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`nav`,{className:`navcol`,children:[(0,L.jsxs)(`div`,{className:`navcol__head`,children:[g(`web.ui.settings.title`),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm navcol__back`,type:`button`,onClick:e,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),g(`web.ui.settings.back`)]})]}),(0,L.jsx)(`ul`,{className:`navcol__list`,children:b.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{type:`button`,"data-pane":e.id,...e.host?{"data-host-pane":`true`}:{},...e.id===w?{"aria-current":`true`}:{},onClick:()=>S(e.id),children:[(0,L.jsx)(`span`,{className:`navcol__sign`,children:(0,L.jsx)(z,{name:e.icon,size:`lg`})}),(0,L.jsx)(`span`,{children:e.host?e.label:g(e.label)}),(0,L.jsx)(`span`,{})]})},e.id))})]}),w!==void 0&&(0,L.jsxs)(`section`,{className:`panelcol`,"data-pane":w,...T?{"data-host-pane":`true`}:{},children:[(0,L.jsx)(`div`,{className:`panelcol__head`,children:(0,L.jsx)(`h1`,{className:`panelcol__title`,children:T?T.label:g(VE(E))})}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:T?(0,L.jsx)(wT,{item:T,here:new URL(window.location.href)}):w===`sessions`?(0,L.jsx)(dE,{client:t,onLoad:d,...f?{onOpenSession:f}:{},...p?{acts:p}:{},configPane:{sessionId:n,client:t,readOnly:s,noProvider:c,...D}}):(0,L.jsx)(`div`,{className:`panelcol__inner`,children:E!==void 0&&RE(E)?(0,L.jsx)(iT,{pane:E,sessionId:n,client:t,catalog:O,readOnly:s,noProvider:c,...r?{compression:r}:{},...D}):E===`security`?(0,L.jsx)(KT,{client:t,sessionId:n,noProvider:c}):E===`tools`?(0,L.jsx)(EE,{client:t,sessionId:n,noProvider:c}):E===`spend`?(0,L.jsx)(_E,{sessionId:n,turns:l??[],hasHistory:u}):E===`about`?(0,L.jsx)(jw,{...i?{about:i}:{},...a?{diagnostics:a}:{}}):(0,L.jsx)(HE,{})})})]})]})}function VE(e){return e===`sessions`?`web.ui.settings.pane_sessions`:RE(e)?$w(e):e===`security`?`web.ui.settings.security`:e===`tools`?`web.ui.settings.pane_tools`:e===`spend`?`web.ui.settings.pane_spend`:e===`about`?`web.ui.settings.pane_about`:`web.ui.settings.appearance`}function HE(){let e=R(),t=kw(),n=ot(),r=xw.map(t=>({value:t,label:e(jE[t])})),i=[{value:He,label:e(`web.ui.settings.lang_system`)},...he.map(t=>({value:t,label:e(ME[t])}))];return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:e(`web.ui.settings.theme`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:e(`web.ui.settings.theme_field`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(NE,{options:r,value:t.pref,ariaLabel:e(`web.ui.settings.theme_field`),onPick:t.setPref})})]})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:e(`web.ui.settings.lang`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:e(`web.ui.settings.lang_field`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(NE,{options:i,value:n.pref,ariaLabel:e(`web.ui.settings.lang_field`),onPick:n.setPref})})]})]})]})}var UE=1500;function WE({row:e,root:t,onBack:n}){let r=R(),i=st(e.path),a=e.path.slice(0,e.path.length-i.length),o=JE(t,e.path),s=e.newContent??``,c=v.useMemo(()=>M_(s),[s]),l=v.useMemo(()=>N_(s),[s]),u=c.kind===`text`?void 0:j_[c.kind];return(0,L.jsxs)(`div`,{className:`preview`,children:[(0,L.jsxs)(`header`,{className:`preview__head`,children:[(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon`,type:`button`,"aria-label":r(`web.ui.art.back`),title:r(`web.ui.art.back`),onClick:n,children:(0,L.jsx)(z,{name:`arrow-left`})}),(0,L.jsxs)(`span`,{className:`path preview__path`,title:o,children:[(0,L.jsx)(`i`,{children:a}),(0,L.jsx)(`b`,{children:i})]}),(0,L.jsx)(`span`,{className:`preview__ro`,children:r(`web.ui.art.readonly`)}),(0,L.jsx)(qE,{path:o,t:r})]}),(0,L.jsx)(`p`,{className:`preview__meta`,children:KE(e,c,r)}),(0,L.jsx)(`div`,{className:`preview__body`,children:u?(0,L.jsx)(B,{text:r(u.why)}):(0,L.jsx)(`pre`,{className:`preview__code`,children:(0,L.jsx)(`code`,{children:l.text})})}),!u&&l.clipped&&(0,L.jsx)(B,{className:`preview__note`,text:GE(l,r)}),!u&&c.lost>0&&(0,L.jsx)(B,{className:`preview__note`,text:r(`web.ui.art.lossy`,{count:c.lost})}),(0,L.jsx)(B,{className:`preview__note`,text:r(`web.ui.art.binary_note`)})]})}function GE(e,t){return e.by===`chars`?t(`web.ui.art.clip_chars`,{line:e.shownLines,total:e.totalLines}):t(`web.ui.art.clip_lines`,{shown:e.shownLines,total:e.totalLines})}function KE(e,t,n){let r=e.newContent??``,i=[];return t.kind===`text`?(i.push(n(`web.ui.art.lines`,{count:bi(r)})),t.lost===0&&i.push(Ci(new TextEncoder().encode(r).length))):i.push(n(j_[t.kind].label)),e.tool&&i.push(n(e.oldContent===void 0?`web.ui.art.by_created`:`web.ui.art.by_changed`,{tool:e.tool})),i.join(` · `)}function qE({path:e,t}){let[n,r]=v.useState(!1);return v.useEffect(()=>{if(!n)return;let e=setTimeout(()=>r(!1),UE);return()=>clearTimeout(e)},[n]),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>r(!0))},children:[(0,L.jsx)(z,{name:n?`check`:`copy`,size:`sm`}),t(n?`web.ui.thread.copied`:`web.ui.art.copy_path`)]})}function JE(e,t){if(e===null||YE(t))return t;let n=e.includes(`\\`)?`\\`:`/`;return`${e.endsWith(n)?e.slice(0,-1):e}${n}${n===`\\`?t.replaceAll(`/`,`\\`):t}`}function YE(e){return/^([a-zA-Z]:[\\/]|[\\/])/.test(e)}function XE(e,t,n){let[r,i]=v.useState({phase:`loading`}),a=R();return v.useEffect(()=>{if(!t||!n){i({phase:`error`,message:a(`web.ui.file.no_session`)});return}let r=!0;return i({phase:`loading`}),(async()=>{try{let o=(await t.fileStat(n,[e])).files[0];if(!r)return;if(!o)return i({phase:`error`,message:a(`web.ui.file.no_answer`)});if(!o.ok)return i({phase:`error`,message:a(ZE[o.refusal])});if(o.kind!==`text`)return i({phase:`ready`,stat:o});let s=await t.fileText(n,e);r&&i({phase:`ready`,stat:o,text:s.text})}catch(e){r&&i({phase:`error`,message:QE(e,a)})}})(),()=>{r=!1}},[e,t,n,a]),r}var ZE={denied:`web.ui.file.denied`,missing:`web.ui.file.missing`,"not-a-file":`web.ui.file.not_a_file`,"too-large":`web.ui.file.too_large`,unreadable:`web.ui.file.unreadable`};function QE(e,t){let n=e instanceof Error?e.message:String(e);return n.trim()===``?t(`web.ui.file.unreadable`):n}function $E({path:e,client:t,sessionId:n,onBack:r}){let i=R(),a=XE(e,t,n),o=st(e),s=e.slice(0,e.length-o.length);return(0,L.jsxs)(`div`,{className:`preview`,children:[(0,L.jsxs)(`header`,{className:`preview__head`,children:[(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon`,type:`button`,"aria-label":i(`web.ui.art.back`),title:i(`web.ui.art.back`),onClick:r,children:(0,L.jsx)(z,{name:`arrow-left`})}),(0,L.jsxs)(`span`,{className:`path preview__path`,title:e,children:[(0,L.jsx)(`i`,{children:s}),(0,L.jsx)(`b`,{children:o})]}),(0,L.jsx)(`span`,{className:`preview__ro`,children:i(`web.ui.art.readonly`)}),(0,L.jsx)(qE,{path:e,t:i})]}),a.phase===`loading`&&(0,L.jsx)(`p`,{className:`preview__meta`,children:i(`web.ui.file.loading`)}),a.phase===`error`&&(0,L.jsx)(`div`,{className:`preview__body`,children:(0,L.jsx)(B,{tone:`error`,text:a.message})}),a.phase===`ready`&&a.stat.ok&&(0,L.jsx)(eD,{stat:a.stat,...a.text===void 0?{}:{text:a.text},path:e,...t?{client:t}:{},...n?{sessionId:n}:{}})]})}function eD({stat:e,text:t,path:n,client:r,sessionId:i}){let a=R(),o=r&&i?r.fileBytesUrl(i,n):void 0;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`preview__meta`,children:rD(e,t,a)}),(0,L.jsx)(`div`,{className:`preview__body`,children:(0,L.jsx)(tD,{kind:e.kind,...t===void 0?{}:{text:t},...o?{src:o}:{}})}),t!==void 0&&(0,L.jsx)(nD,{text:t}),e.kind===`opaque`&&(0,L.jsx)(iD,{stat:e,path:n,...r?{client:r}:{},...i?{sessionId:i}:{},...o?{src:o}:{}})]})}function tD({kind:e,text:t,src:n}){let r=R();if(e===`text`){let e=M_(t??``);return e.kind===`text`?(0,L.jsx)(`pre`,{className:`preview__code`,children:(0,L.jsx)(`code`,{children:N_(t??``).text})}):(0,L.jsx)(B,{text:r(j_[e.kind].why)})}return n?e===`image`?(0,L.jsx)(`img`,{className:`preview__media`,src:n,alt:``}):e===`pdf`?(0,L.jsx)(`iframe`,{className:`preview__pdf`,src:n,title:``}):e===`audio`?(0,L.jsx)(`audio`,{className:`preview__media`,src:n,controls:!0}):e===`video`?(0,L.jsx)(`video`,{className:`preview__media`,src:n,controls:!0}):(0,L.jsx)(B,{text:r(`web.ui.file.opaque`)}):(0,L.jsx)(B,{text:r(`web.ui.file.no_session`)})}function nD({text:e}){let t=R(),n=N_(e);return n.clipped?(0,L.jsx)(B,{className:`preview__note`,text:n.by===`chars`?t(`web.ui.art.clip_chars`,{line:n.shownLines,total:n.totalLines}):t(`web.ui.art.clip_lines`,{shown:n.shownLines,total:n.totalLines})}):null}function rD(e,t,n){let r=[];return t!==void 0&&r.push(n(`web.ui.art.lines`,{count:bi(t)})),r.push(Ci(e.bytes)),e.mtimeMs>0&&r.push(new Date(e.mtimeMs).toLocaleString()),r.join(` · `)}function iD({stat:e,path:t,client:n,sessionId:r,src:i}){let a=R(),[o,s]=v.useState();return(0,L.jsxs)(`div`,{className:`preview__acts`,children:[e.openable&&n&&r&&(0,L.jsxs)(`button`,{className:`btn btn--sm`,type:`button`,onClick:()=>{s(void 0),n.openFile(r,t).then(e=>s(e.ok?void 0:e.message)).catch(e=>s(QE(e,a)))},children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),a(`web.ui.file.open_with_app`)]}),i&&(0,L.jsx)(`a`,{className:`btn btn--ghost btn--sm`,href:i,download:st(t),children:a(`web.ui.file.download`)}),o&&(0,L.jsx)(B,{tone:`error`,className:`preview__note`,text:o})]})}function aD({limits:e,busy:t,initial:n,mode:r,onSubmit:i,onCancel:a}){let o=R(),[s,c]=v.useState(n??``),[l,u]=v.useState(``);return(0,L.jsxs)(`form`,{className:`goal__form`,onSubmit:e=>{e.preventDefault();let t=l.trim();i(s,t===``?void 0:Number(t))},children:[(0,L.jsxs)(`label`,{className:`goal__field`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:o(`web.ui.goal.objective_label`)}),(0,L.jsx)(`textarea`,{className:`goal__text`,value:s,rows:3,disabled:t,placeholder:o(`web.ui.goal.objective_hint`),...e?{maxLength:e.maxObjectiveChars}:{},onChange:e=>c(e.target.value)})]}),r===void 0&&(0,L.jsxs)(`label`,{className:`goal__field goal__field--inline`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:o(`web.ui.goal.budget_label`)}),(0,L.jsx)(`input`,{className:`goal__num`,type:`number`,inputMode:`numeric`,min:1,value:l,disabled:t,placeholder:e?String(e.defaultMaxRounds):``,...e?{max:e.maxRounds}:{},onChange:e=>u(e.target.value)}),e&&(0,L.jsx)(`span`,{className:`goal__hint`,children:o(`web.ui.goal.budget_hint`,{n:e.defaultMaxRounds,max:e.maxRounds})})]}),(0,L.jsxs)(`div`,{className:`goal__acts`,children:[(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary btn--sm`,disabled:t,children:o(r===`edit`?`web.ui.goal.save_edit`:`web.ui.goal.save_create`)}),a&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:a,children:o(`web.ui.goal.cancel`)})]})]})}function oD({limits:e,busy:t,initial:n,onSubmit:r,onCancel:i}){let a=R(),[o,s]=v.useState(String(n));return(0,L.jsxs)(`form`,{className:`goal__form`,onSubmit:e=>{e.preventDefault(),r(Number(o.trim()))},children:[(0,L.jsxs)(`label`,{className:`goal__field goal__field--inline`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:a(`web.ui.goal.budget_label`)}),(0,L.jsx)(`input`,{className:`goal__num`,type:`number`,inputMode:`numeric`,min:1,value:o,disabled:t,...e?{max:e.maxRounds}:{},onChange:e=>s(e.target.value)})]}),(0,L.jsx)(B,{text:a(`web.ui.goal.budget_warn`)}),(0,L.jsxs)(`div`,{className:`goal__acts`,children:[(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary btn--sm`,disabled:t,children:a(`web.ui.goal.save_budget`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:i,children:a(`web.ui.goal.cancel`)})]})]})}function sD({limits:e,busy:t,onSubmit:n,onCancel:r}){let i=R(),[a,o]=v.useState(``);return(0,L.jsxs)(`form`,{className:`goal__form`,onSubmit:e=>{e.preventDefault(),n(a)},children:[(0,L.jsxs)(`label`,{className:`goal__field`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:i(`web.ui.goal.evidence_label`)}),(0,L.jsx)(`textarea`,{className:`goal__text`,value:a,rows:2,disabled:t,placeholder:i(`web.ui.goal.evidence_hint`),...e?{maxLength:e.maxReasonChars}:{},onChange:e=>o(e.target.value)})]}),(0,L.jsxs)(`div`,{className:`goal__acts`,children:[(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary btn--sm`,disabled:t,children:i(`web.ui.goal.save_complete`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:r,children:i(`web.ui.goal.cancel`)})]})]})}var cD={active:{icon:`target`,key:`web.ui.goal.phase_active`},paused:{icon:`square`,key:`web.ui.goal.phase_paused`},blocked:{icon:`triangle-alert`,key:`web.ui.goal.phase_blocked`,tone:`warn`},complete:{icon:`check`,key:`web.ui.goal.phase_complete`,tone:`done`}},lD={busy:`web.ui.goal.refuse.busy`,"no-goal":`web.ui.goal.refuse.no_goal`,"empty-objective":`web.ui.goal.refuse.empty_objective`,"objective-too-long":`web.ui.goal.refuse.objective_too_long`,"bad-budget":`web.ui.goal.refuse.bad_budget`,"bad-block-code":`web.ui.goal.refuse.bad_block_code`,"empty-block-message":`web.ui.goal.refuse.empty_block_message`,"empty-evidence":`web.ui.goal.refuse.empty_evidence`,"wrong-phase":`web.ui.goal.refuse.wrong_phase`,unavailable:`web.ui.goal.refuse.unavailable`};function uD(e){let t=R(),{goal:n,limits:r,loading:i,error:a,refusal:o,busy:s}=e;return a?(0,L.jsx)(B,{text:a,tone:`error`}):n===null?i?(0,L.jsx)(ai,{icon:`target`,title:t(`web.ui.goal.loading`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ai,{icon:`target`,title:t(`web.ui.goal.empty`),hint:t(`web.ui.goal.empty_hint`)}),o&&(0,L.jsx)(pD,{code:o,limits:r}),(0,L.jsx)(aD,{...r?{limits:r}:{},busy:s,onSubmit:(t,n)=>e.create(t,n)})]}):(0,L.jsx)(dD,{goal:n,...r?{limits:r}:{},busy:s,...o?{refusal:o}:{},onUpdate:e.update,onClear:e.clear})}function dD({goal:e,limits:t,busy:n,refusal:r,onUpdate:i,onClear:a}){let o=R(),[s,c]=v.useState(null),l=cD[e.phase],u=async e=>{await i(e)&&c(null)};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`p`,{className:`goal__phase`,...l.tone?{"data-tone":l.tone}:{},children:[(0,L.jsx)(`span`,{className:`goal__sign`,children:(0,L.jsx)(z,{name:l.icon,size:`sm`})}),(0,L.jsx)(`span`,{children:o(l.key)}),(0,L.jsx)(`span`,{className:`goal__rounds`,title:o(`web.ui.goal.rounds_hint`),children:o(`web.ui.goal.rounds`,{used:e.roundsUsed,max:e.maxRounds})})]}),(0,L.jsx)(`p`,{className:`goal__objective`,children:e.objective}),e.block&&(0,L.jsxs)(`div`,{className:`goal__block`,role:`note`,children:[(0,L.jsx)(`code`,{className:`goal__code`,children:e.block.code}),(0,L.jsx)(`span`,{children:e.block.message})]}),e.completeEvidence!==void 0&&(0,L.jsxs)(`div`,{className:`goal__evidence`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:o(`web.ui.goal.evidence`)}),(0,L.jsx)(`span`,{children:e.completeEvidence})]}),r&&(0,L.jsx)(pD,{code:r,limits:t}),(0,L.jsx)(fD,{goal:e,busy:n,open:s,onOpen:c,onUpdate:u,onClear:a}),s===`edit`&&(0,L.jsx)(aD,{...t?{limits:t}:{},busy:n,initial:e.objective,mode:`edit`,onSubmit:e=>u({action:`edit`,objective:e}),onCancel:()=>c(null)}),s===`budget`&&(0,L.jsx)(oD,{...t?{limits:t}:{},busy:n,initial:e.maxRounds,onSubmit:e=>u({action:`budget`,maxRounds:e}),onCancel:()=>c(null)}),s===`complete`&&(0,L.jsx)(sD,{...t?{limits:t}:{},busy:n,onSubmit:e=>u({action:`complete`,evidence:e}),onCancel:()=>c(null)})]})}function fD({goal:e,busy:t,open:n,onOpen:r,onUpdate:i,onClear:a}){let o=R(),s=e.phase===`complete`;return(0,L.jsxs)(`div`,{className:`goal__acts`,children:[!s&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,"aria-pressed":n===`edit`,onClick:()=>r(n===`edit`?null:`edit`),children:o(`web.ui.goal.act_edit`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,"aria-pressed":n===`budget`,onClick:()=>r(n===`budget`?null:`budget`),children:o(`web.ui.goal.act_budget`)}),e.phase===`active`?(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,onClick:()=>void i({action:`pause`}),children:o(`web.ui.goal.act_pause`)}):(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,onClick:()=>void i({action:`resume`}),children:o(`web.ui.goal.act_resume`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,"aria-pressed":n===`complete`,onClick:()=>r(n===`complete`?null:`complete`),children:o(`web.ui.goal.act_complete`)})]}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,disabled:t,onClick:()=>void a(),children:o(`web.ui.goal.act_clear`)})]})}function pD({code:e,limits:t}){let n=R(),r=t===void 0?void 0:{chars:t.maxObjectiveChars,max:t.maxRounds};return(0,L.jsx)(B,{text:n(lD[e],r),tone:`error`})}function mD(e,t,n,r=!0){let[i,a]=v.useState({markdown:null,loading:!0}),o=n===void 0||n===`idle`;return v.useEffect(()=>{if(!r||!e||!t||!o)return;let n=!0;return e.plan(t).then(({plan:e})=>{n&&a({markdown:e,loading:!1})}).catch(e=>{n&&a({markdown:null,loading:!1,error:e instanceof Error?e.message:String(e)})}),()=>{n=!1}},[r,e,t,o]),i}function hD({markdown:e,loading:t,error:n}){let r=R();return n?(0,L.jsx)(gD,{text:n}):e===null?t?(0,L.jsx)(ai,{icon:`list-checks`,title:r(`web.ui.plan.loading`)}):(0,L.jsx)(ai,{icon:`list-checks`,title:r(`web.ui.plan.empty`),hint:r(`web.ui.plan.empty_hint`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`header`,{className:`ipane__head`,children:[(0,L.jsx)(`h3`,{className:`ipane__title`,children:r(`web.ui.inspector.plan`)}),(0,L.jsx)(bt,{text:r(`web.ui.plan.note`),about:r(`web.ui.inspector.plan`)})]}),(0,L.jsx)(w_,{text:e})]})}function gD({text:e}){return(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:e})]})}var _D=`data-dense`;function vD(e){let t=v.useRef(null);return v.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{e.removeAttribute(_D);let t=getComputedStyle(e),n=e=>Number.parseFloat(e)||0,r=[...e.children],i=n(t.paddingInlineStart)+n(t.paddingInlineEnd);i+=n(t.columnGap)*Math.max(0,r.length-1);for(let e of r)i+=e.getBoundingClientRect().width;i-e.clientWidth>1&&e.setAttribute(_D,`true`)};n();let r=new ResizeObserver(n);return r.observe(e),()=>r.disconnect()},[e]),t}var yD=[{id:`patch`,key:`web.ui.inspector.patch`,icon:`file-diff`},{id:`output`,key:`web.ui.inspector.output`,icon:`terminal`},{id:`artifact`,key:`web.ui.inspector.artifact`,icon:`layers`},{id:`plan`,key:`web.ui.inspector.plan`,icon:`list-checks`},{id:`goal`,key:`web.ui.inspector.goal`,icon:`target`}];function bD({patches:e=[],onLocate:t,client:n,sessionId:r,turn:i,previewPath:a,onClosePreviewPath:o,toolArtifacts:s=[],resolveArtifact:c,tasks:l=hy,rootRef:u}){let d=R(),[f,p]=v.useState(yD[0]?.id??`patch`),[m,h]=v.useState(),g=hi(n,r,i),_=v.useMemo(()=>fi(g.changes,e),[g.changes,e]),y=mD(n,r,i,f===`plan`),b=hw(n,r,i,f===`goal`),x={patch:e.length,artifact:_.length,output:l.tasks.length},S=vD(yD.map(e=>`${d(e.key)}:${x[e.id]??0}`).join(`|`));return(0,L.jsxs)(`aside`,{className:`inspector`,"data-mode":m||a!==void 0?`preview`:`list`,ref:u,tabIndex:-1,"aria-label":d(`web.ui.topbar.inspector`),children:[(0,L.jsx)(`div`,{className:`tabs`,role:`tablist`,ref:S,children:yD.map(e=>(0,L.jsxs)(`button`,{id:`tab-${e.id}`,className:`tab`,role:`tab`,type:`button`,"aria-selected":e.id===f,"aria-controls":`panel-${e.id}`,"aria-label":d(e.key),title:d(e.key),onClick:()=>p(e.id),children:[(0,L.jsx)(z,{name:e.icon,size:`sm`}),(0,L.jsx)(`span`,{className:`tab__label`,children:d(e.key)}),(x[e.id]??0)>0&&(0,L.jsx)(`span`,{className:`tab__n`,children:x[e.id]})]},e.id))}),(0,L.jsx)(`div`,{className:`inspector__body`,children:yD.map(n=>(0,L.jsx)(`section`,{className:`inspector__panel`,id:`panel-${n.id}`,role:`tabpanel`,"aria-labelledby":`tab-${n.id}`,hidden:f!==n.id,children:n.id===`patch`?(0,L.jsx)(fw,{patches:e,...t?{onLocate:t}:{}}):n.id===`artifact`?(0,L.jsx)(gi,{changes:_,artifacts:s,bound:g.root!==null,loading:g.loading,...g.error===void 0?{}:{error:g.error},onOpen:h,...t?{onLocate:t}:{},...c?{resolveArtifact:c}:{}}):n.id===`plan`?(0,L.jsx)(hD,{markdown:y.markdown,loading:y.loading,...y.error===void 0?{}:{error:y.error}}):n.id===`goal`?(0,L.jsx)(uD,{goal:b.goal,...b.limits?{limits:b.limits}:{},loading:b.loading,busy:b.busy,...b.error===void 0?{}:{error:b.error},...b.refusal===void 0?{}:{refusal:b.refusal},create:b.create,update:b.update,clear:b.clear}):n.id===`output`?(0,L.jsx)(_y,{tasks:l.tasks,loading:l.loading,...l.error===void 0?{}:{error:l.error}}):null},n.id))}),a===void 0?m&&(0,L.jsx)(WE,{row:m,root:g.root,onBack:()=>h(void 0)}):(0,L.jsx)($E,{path:a,...n?{client:n}:{},...r?{sessionId:r}:{},onBack:()=>o?.()})]})}function xD(e,t,n){let[r,i]=v.useState(),[a,o]=v.useState(),[s,c]=v.useState([]),[l,u]=v.useState(),[d,f]=v.useState(!1);v.useEffect(()=>{if(!t){i(void 0);return}let n=!0;return e.model(t).then(e=>{n&&(i(e.selection??void 0),o(e.configured??void 0))}).catch(()=>void 0),()=>{n=!1}},[e,t]);let p=v.useCallback(async r=>{if(!t)return null;f(!0);try{let a=await e.setModel(t,r,n===void 0?{}:{usedTokens:n});return a.ok?(i(a.selection),c(a.caveats),u(void 0),a):(u(a.rejection),c([]),a)}catch{return u(void 0),null}finally{f(!1)}},[e,t,n]);return{...r?{selection:r}:{},...a?{configured:a}:{},switchTo:p,caveats:s,...l?{rejection:l}:{},busy:d}}function SD({draft:e,busy:t,onChange:n,onSubmit:r}){let i=R();return(0,L.jsxs)(`form`,{className:`menu__search`,onSubmit:t=>{t.preventDefault();let n=e.trim();n&&r(n)},children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`text`,value:e,placeholder:i(`web.ui.model.placeholder`),"aria-label":i(`web.ui.model.placeholder`),disabled:t,onChange:e=>n(e.target.value)})]})}function CD(e,t){switch(t.code){case`no-credential`:return t.envVar?e(`web.ui.model.rej_no_credential`,{provider:t.provider,env:t.envVar}):e(`web.ui.model.rej_no_credential_bare`,{provider:t.provider});case`images-unsupported`:return e(`web.ui.model.rej_images`,{model:t.model});case`context-overflow`:return e(`web.ui.model.rej_context`,{model:t.model,used:TD(t.usedTokens),window:TD(t.contextLength)})}}function wD(e,t){switch(t.code){case`context-tight`:return e(`web.ui.model.cav_context_tight`,{model:t.model,used:TD(t.usedTokens),window:TD(t.contextLength)});case`no-tools`:return e(`web.ui.model.cav_no_tools`,{model:t.model})}}function TD(e){return e>=1e3?`${Math.round(e/1e3)}k`:String(e)}function ED({model:e,catalog:t,onConfigureKey:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(``),c=v.useRef(null),l=v.useCallback(()=>a(!1),[]),u=e.selection;if(!u)return null;let d=async n=>{let r=await e.switchTo(Ut(n,t?.provider,u.provider));r?.ok&&r.caveats.length===0&&(s(``),a(!1))};return(0,L.jsxs)(`span`,{children:[(0,L.jsxs)(`button`,{type:`button`,ref:c,className:`btn btn--ghost`,"aria-expanded":i,"aria-haspopup":`true`,"aria-label":r(`web.ui.model.trigger`,{model:u.model}),onClick:()=>a(e=>!e),children:[u.model,(0,L.jsx)(z,{name:`chevron-down`,size:`sm`})]}),(0,L.jsxs)(Et,{open:i,onClose:l,triggerRef:c,label:r(`web.ui.model.label`),children:[(0,L.jsx)(Dt,{checked:!0,disabled:!0,title:u.model,detail:r(`web.ui.model.current`,{provider:u.provider}),onSelect:()=>void 0}),e.configured&&(0,L.jsx)(Dt,{disabled:u.origin===`config`||e.busy,title:r(`web.ui.model.reset`),detail:e.configured,onSelect:()=>void d(null)}),(0,L.jsx)(Ot,{}),t?(0,L.jsx)(Ft,{catalog:t,value:o,onChange:s,busy:e.busy,onPick:e=>void d(e),onSubmit:e=>void d(e),...n?{onConfigureKey:()=>{a(!1),n()}}:{}}):(0,L.jsx)(SD,{draft:o,busy:e.busy,onChange:s,onSubmit:e=>void d(e)}),e.rejection&&(0,L.jsx)(kt,{tone:`warn`,children:(0,L.jsx)(`p`,{children:CD(r,e.rejection)})}),e.caveats.length>0&&(0,L.jsx)(kt,{tone:`warn`,children:e.caveats.map(e=>(0,L.jsx)(`p`,{children:wD(r,e)},e.code))})]})]})}function DD({handle:e}){let t=R();return(0,L.jsxs)(`div`,{className:`newsession`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row`,type:`button`,disabled:e.busy,onClick:()=>e.createDeferred(),children:[(0,L.jsx)(z,{name:`plus`}),t(`web.ui.newsession.open`)]}),e.error&&(0,L.jsx)(`p`,{className:`newsession__err`,role:`alert`,children:e.error})]})}function OD(e,t){let n=e.map(e=>e.code===void 0?t(`web.ui.sidebar.diag_fix_line`,{status:e.status,module:e.module,detail:e.detail}):t(`web.ui.sidebar.diag_fix_line_code`,{status:e.status,module:e.module,detail:e.detail,code:e.code}));return[t(`web.ui.sidebar.diag_fix_intro`),``,...n].join(`
377
- `)}var kD=`nav-capability-sub`;function AD({open:e,onToggle:t,onOpen:n,current:r,pluginUpdates:i}){let a=R(),o=r!==void 0;return(0,L.jsxs)(`div`,{className:`navgroup`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row navgroup__head`,type:`button`,"aria-expanded":e,"aria-controls":kD,...o?{"aria-disabled":!0}:{},onClick:()=>{o||t()},children:[(0,L.jsx)(z,{name:`user-round`}),a(`web.ui.cap.title`),(0,L.jsx)(`span`,{className:`navgroup__mark`,"aria-hidden":`true`,children:(0,L.jsx)(z,{name:e?`chevron-down`:`chevron-right`,size:`sm`})})]}),e&&(0,L.jsx)(`ul`,{className:`navgroup__sub`,id:kD,children:pS.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row`,type:`button`,"aria-current":e.id===r?`true`:void 0,onClick:()=>n(e.id),children:[(0,L.jsx)(z,{name:e.icon,size:`sm`}),a(e.title),e.id===`plugins`&&i!==void 0&&i>0&&(0,L.jsx)(`span`,{className:`btn__dot btn__dot--accent`,title:a(`web.ui.sidebar.plugin_updates`,{count:i}),"aria-label":a(`web.ui.sidebar.plugin_updates`,{count:i})})]})},e.id))})]})}var jD={warn:`triangle-alert`,failed:`circle-alert`},MD=1,ND=`sidebar-diag-list`,PD=200;function FD({sessionId:e,brand:t,usage:n,usageScope:r,maxCostUsd:i,diagnostics:a,diagnosticsHandoff:o,newSession:s,acts:c,menu:l,userMenu:u,onMenuSelect:d,user:f,onOpenSettings:p,onOpenCapability:m,capTab:h,onOpenAutomation:g,pendingAutomation:_,automationRunning:y,pluginUpdates:b,onCapExpandedChange:x,sessions:S,hits:C,onOpenSession:w,onSearch:T,rootRef:E}){let D=R(),O=Jn(),[ee,te]=v.useState(``),[k,ne]=v.useState(!1),[re,ie]=v.useState(!1),ae=C??S,A=h!==void 0||k;v.useEffect(()=>{x?.(A)},[A,x]),v.useEffect(()=>{let e=setTimeout(()=>T(ee.trim()||void 0),PD);return()=>clearTimeout(e)},[ee,T]);let j=v.useCallback(()=>{T(ee.trim()||void 0)},[T,ee]),oe=(a??[]).filter(e=>e.status===`failed`||e.status===`warn`),se=oe.length>MD,ce=oe.filter(e=>e.status===`failed`).length,le=oe.length-ce,ue=ce>0&&le>0?D(`web.ui.sidebar.diag_sum`,{total:oe.length,failed:ce}):ce>0?D(`web.ui.sidebar.diag_sum_failed`,{failed:ce}):D(`web.ui.sidebar.diag_sum_warn`,{warn:le}),M=o===void 0?null:(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--icon diagsum__act`,"aria-label":D(`web.ui.sidebar.diag_fix`),title:D(`web.ui.sidebar.diag_fix`),onClick:()=>o.onHandoff(OD(o.all,D)),children:(0,L.jsx)(z,{name:`wrench`,size:`sm`})}),de=e&&r===`session`&&i!==void 0&&n?.costUsd!==void 0?{spent:n.costUsd,limit:i}:void 0,fe=de!==void 0,pe=fe||oe.length>0,N=l!==void 0&&l.length>0&&d!==void 0?{items:l,onSelect:d}:void 0,me=u!==void 0&&u.length>0&&d!==void 0?{items:u,onSelect:d}:void 0;return(0,L.jsxs)(`aside`,{className:`sidebar`,ref:E,tabIndex:-1,"aria-label":D(`web.ui.topbar.sidebar`),children:[(0,L.jsxs)(`div`,{className:`sidebar__head`,children:[t!==void 0&&(0,L.jsx)(`span`,{className:`brandslot`,title:t,children:t}),(0,L.jsxs)(`label`,{className:`ssearch`,children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`search`,value:ee,onChange:e=>te(e.target.value),placeholder:D(`web.ui.sidebar.search`),"aria-label":D(`web.ui.sidebar.search`)})]})]}),(0,L.jsxs)(`div`,{className:`sidebar__scroll`,children:[(0,L.jsxs)(`div`,{className:`actions`,children:[s&&(0,L.jsx)(DD,{...s}),(0,L.jsx)(AD,{open:A,onToggle:()=>ne(e=>!e),onOpen:m,...h?{current:h}:{},...b===void 0?{}:{pluginUpdates:b}}),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row`,type:`button`,onClick:g,children:[(0,L.jsx)(z,{name:`rotate-ccw`}),D(`web.ui.sidebar.automation`),y===!0&&(0,L.jsx)(`span`,{className:`btn__spin`,title:D(`web.ui.sidebar.automation_running`),"aria-label":D(`web.ui.sidebar.automation_running`)}),_!==void 0&&_>0&&(0,L.jsx)(`span`,{className:`btn__dot`,title:D(`web.ui.sidebar.automation_pending`,{count:_}),"aria-label":D(`web.ui.sidebar.automation_pending`,{count:_})})]})]}),(0,L.jsx)(rr,{sessions:ae,...e?{currentSessionId:e}:{},onOpen:w,searching:ee.trim().length>0,...c?{acts:{...c,reload:j}}:{},...s?{newSession:s.handle}:{}})]}),pe&&(0,L.jsxs)(`div`,{className:`sidebar__foot`,children:[fe&&(0,L.jsx)(`div`,{className:`meter`,children:de&&(0,L.jsxs)(`div`,{className:`meter__row`,children:[(0,L.jsx)(`span`,{children:D(`web.ui.sidebar.cost`)}),(0,L.jsxs)(`b`,{children:[D(`web.ui.sidebar.cost_of`,{spent:O(de.spent,3),limit:O(de.limit,2)}),` `,(0,L.jsx)(`span`,{className:`est`,children:D(`web.ui.sidebar.cost_est`)})]})]})}),se&&(0,L.jsxs)(`div`,{className:`diagsum-row`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`diagsum`,"data-level":ce>0?`failed`:`warn`,"aria-expanded":re,"aria-controls":ND,"aria-label":re?D(`web.ui.sidebar.diag_less`):D(`web.ui.sidebar.diag_more`,{count:oe.length}),onClick:()=>ie(e=>!e),children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:jD[ce>0?`failed`:`warn`],size:`sm`})}),(0,L.jsx)(`span`,{className:`diagsum__text`,children:ue}),(0,L.jsx)(`span`,{className:`diagsum__mark`,"aria-hidden":`true`,children:(0,L.jsx)(z,{name:re?`chevron-down`:`chevron-right`,size:`sm`})})]}),M]}),oe.length>0&&(!se||re)&&(0,L.jsx)(`ul`,{className:`diag`,id:ND,children:oe.map((e,t)=>{let n=D(`web.ui.sidebar.diagnostic`,{module:e.module,detail:e.detail});return(0,L.jsxs)(`li`,{"data-level":e.status,children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:jD[e.status],size:`sm`})}),(0,L.jsx)(xt,{text:n,children:(0,L.jsx)(`span`,{className:`diag__text`,children:n})}),!se&&M]},`diag-${t}`)})})]}),(0,L.jsxs)(`div`,{className:`sidebar__end`,children:[N&&(0,L.jsx)(Ny,{...N}),(0,L.jsx)(Py,{...f?{user:f}:{},...me?{host:me}:{},...p?{onOpenSettings:p}:{}})]})]})}var ID=48,LD=240;function RD({children:e}){let t=R(),n=v.useRef(null),[r,i]=v.useState(!0),[a,o]=v.useState(!1),s=()=>{let e=n.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight;i(t<=ID),o(t>LD)};return v.useEffect(()=>{let e=n.current;e&&(r&&(e.scrollTop=e.scrollHeight),s())}),(0,L.jsxs)(`div`,{className:`thread`,ref:n,onScroll:s,children:[(0,L.jsx)(`div`,{className:`thread__column`,role:`log`,children:e}),a&&(0,L.jsx)(`div`,{className:`thread__tail`,children:(0,L.jsx)(`button`,{type:`button`,className:`tobottom`,onClick:()=>{let e=n.current;e&&(e.scrollTop=e.scrollHeight,s())},"aria-label":t(`web.ui.thread.to_bottom`),title:t(`web.ui.thread.to_bottom`),children:(0,L.jsx)(z,{name:`arrow-down`})})})]})}function zD(e,t,n){let r=new Map(e.map(e=>[e.id,e]));return t.filter(e=>{if(e.id===n)return!1;let t=r.get(e.id);return t===void 0||t.state===`idle`||e.state!==`idle`?!1:!(t.live&&!e.live)})}function BD(e,t){let[n,r]=v.useState([]),i=v.useRef(e),a=v.useRef(0);return v.useEffect(()=>{let n=zD(i.current,e,t);i.current=e,n.length!==0&&r(e=>[...e,...n.map(e=>(a.current+=1,{sessionId:e.id,title:e.title,finish:e.lastFinish??null,key:`${e.id}#${a.current}`}))].slice(-50))},[e,t]),{receipts:n,drop:v.useCallback(e=>{r(t=>t.filter(t=>t.key!==e))},[])}}var VD={stop:{tone:`ok`,icon:`check`,key:`web.ui.toast.done`},"max-turns":{tone:`error`,icon:`x`,key:`web.ui.toast.max_turns`},stalled:{tone:`error`,icon:`x`,key:`web.ui.toast.stalled`},looping:{tone:`error`,icon:`x`,key:`web.ui.toast.looping`},aborted:{tone:`error`,icon:`x`,key:`web.ui.toast.aborted`},"content-filter":{tone:`error`,icon:`x`,key:`web.ui.toast.filtered`},compliance:{tone:`error`,icon:`x`,key:`web.ui.toast.compliance`},length:{tone:`error`,icon:`x`,key:`web.ui.toast.truncated`},blank:{tone:`error`,icon:`x`,key:`web.ui.toast.blank`},"budget-exceeded":{tone:`error`,icon:`x`,key:`web.ui.toast.budget`},error:{tone:`error`,icon:`x`,key:`web.ui.toast.failed`}};function HD(e){return e?VD[e.reason]:null}function UD(e){if(!e)return null;let t={...e.durationMs===null?{}:{duration:av(e.durationMs)},...e.runUsage===null?{}:{tokens:iv(A(e.runUsage))}};return t.duration===void 0&&t.tokens===void 0?null:t}function WD({receipts:e,onOpen:t,onDrop:n}){let r=R(),[i,a]=v.useState(!1),o=e.length-3,s=i&&o>0,c=s?e:e.slice(-3);return(0,L.jsxs)(`div`,{className:`toasts`,role:`status`,...s?{"data-open":``}:{},children:[o>0&&(0,L.jsx)(`button`,{type:`button`,className:`toasts__more`,"aria-expanded":s,onClick:()=>a(e=>!e),children:s?r(`web.ui.toast.collapse`):r(o===1?`web.ui.toast.more_one`:`web.ui.toast.more_n`,{count:o})}),(0,L.jsx)(`div`,{className:`toasts__stack`,children:c.map(e=>{let i=e.title||r(`web.ui.topbar.untitled`),a=HD(e.finish),o=UD(e.finish);return(0,L.jsxs)(`div`,{className:`toast`,...a?{"data-tone":a.tone}:{},children:[a&&(0,L.jsx)(`span`,{className:`toast__sign`,children:(0,L.jsx)(z,{name:a.icon,size:`sm`})}),(0,L.jsx)(`span`,{className:`toast__who`,children:r(a?.key??`web.ui.toast.done`,{title:i})}),o&&(0,L.jsx)(`span`,{className:`toast__stat`,children:[o.duration,o.tokens&&r(`web.ui.thread.facts_tokens`,{tokens:o.tokens})].filter(Boolean).join(` · `)}),t&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>{t(e.sessionId),n(e.key)},children:r(`web.ui.toast.go`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--icon`,"aria-label":r(`web.ui.toast.dismiss`),onClick:()=>n(e.key),children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]},e.key)})})]})}var GD={connecting:`web.ui.conn.connecting`,open:`web.ui.conn.open`,reconnecting:`web.ui.conn.reconnecting`,closed:`web.ui.conn.closed`};function KD({title:e,model:t,modelControl:n,modelCatalog:r,onConfigureKey:i,otherSession:a,connection:o,resyncing:s,inspectorOpen:c,onToggleInspector:l,sidebar:u}){let d=R(),f=n?.selection!==void 0,p=a?d(`web.ui.topbar.model_not_live`):void 0;return(0,L.jsxs)(`header`,{className:`topbar`,children:[u&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon topbar__nav`,type:`button`,"aria-pressed":u.open,"aria-label":d(`web.ui.topbar.sidebar`),title:d(`web.ui.topbar.sidebar`),onClick:u.onToggle,children:(0,L.jsx)(z,{name:`panel-right`})}),(0,L.jsx)(`h1`,{className:`topbar__title`,...e?{title:e}:{},children:e||d(`web.ui.topbar.untitled`)}),(0,L.jsxs)(`div`,{className:`topbar__facts`,children:[f&&n?(0,L.jsx)(ED,{model:n,...r?{catalog:r}:{},...i?{onConfigureKey:i}:{}}):t&&(p?(0,L.jsxs)(`span`,{title:p,children:[t,` `,(0,L.jsx)(z,{name:`info`,size:`sm`,label:p})]}):(0,L.jsx)(`span`,{children:t})),s&&(0,L.jsx)(`span`,{className:`topbar__resync`,children:d(`web.ui.topbar.resyncing`)}),(0,L.jsx)(`span`,{className:`conn`,"data-conn":o,children:d(GD[o])}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon`,type:`button`,"aria-pressed":c,"aria-label":d(`web.ui.topbar.inspector`),title:d(`web.ui.topbar.inspector`),onClick:l,children:(0,L.jsx)(z,{name:`panel-right`})})]})]})}function qD(e){if(e.readOnly!==`history`)return e.readOnly;let t=e.currentSummary?.workspace;return t&&t.state!==`unknown`?!1:`history`}var JD=2,YD=[500,1e3,2e3,4e3,8e3,1e4];function XD(e){let t=new EventSource(e),n={get readyState(){return t.readyState},onopen:null,onmessage:null,onerror:null,close:()=>t.close()};return t.onopen=()=>n.onopen?.(),t.onmessage=e=>n.onmessage?.({data:String(e.data)}),t.onerror=()=>n.onerror?.(),n}function ZD(e){try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return;let n=t;return typeof n.seq==`number`&&n.event?n:void 0}catch{return}}function QD(e,t){let{onFrame:n,onConnectionChange:r,onResync:i,createSource:a=XD,schedule:o=(e,t)=>void setTimeout(e,t)}=t,s,c=0,l=0,u=!1,d=()=>{if(u)return;let e=YD[Math.min(c,YD.length-1)]??1e4;c+=1,o(()=>{u||(p(),i(`hard-reconnect`))},e)},f=e=>{let t=ZD(e);if(t){if(le(t.event)&&t.event.type===`stream-reset`){i(t.event.reason);return}t.seq>0&&(l=t.seq),t.event.type!==`connected`&&n(t)}};function p(){r(c===0?`connecting`:`reconnecting`);let t=a(e);s=t,t.onopen=()=>{c=0,r(`open`)},t.onmessage=e=>f(e.data),t.onerror=()=>{if(t.readyState!==JD){r(`reconnecting`);return}t.close(),r(`reconnecting`),d()}}return p(),{close:()=>{u=!0,s?.close(),r(`closed`)},lastSeq:()=>l}}function $D(e){if(typeof e==`string`)return[];let t=[];for(let n of e){if(n.type!==`image`)continue;let{type:e,...r}=n;t.push(r)}return t}function eO({client:e,dispatch:t,stateRef:n,fail:r,resync:i,refreshSessions:a}){let o=R();return(0,v.useMemo)(()=>({send:(i,a,s=[])=>{let{sessionId:c}=n.current;if(!c||qD(n.current))return;let l=$D(i),u=rE(i,o,{imagesShownAsThumbnails:l.length>0}).trim();!u&&l.length===0&&s.length===0||(t({type:`submit`,text:u,...l.length>0?{images:l}:{}}),(s.length>0?e.send(c,i,a,s):e.send(c,i,a)).then(e=>{e?.queued&&t(e.steered===!0?{type:`steered`}:{type:`queued`}),e?.command&&t({type:`command`,notice:e.command}),e?.references&&t({type:`references`,references:e.references}),e?.files&&t({type:`files`,files:e.files})}).catch(r))},abort:()=>{let i=n.current.sessionId;i&&(t({type:`aborted`}),e.abort(i).then(e=>{e?.returned&&e.returned.length>0&&t({type:`returned`,messages:e.returned})}).catch(e=>{t({type:`abort-failed`}),r(e)}))},returnedDone:()=>t({type:`returned-done`}),respond:(n,i,a)=>{t({type:`approval-sent`,requestId:n}),e.respond(n,i,a).catch(r)},answerQuestion:(n,i)=>{t({type:`question-sent`,requestId:n}),e.respondQuestion(n,i).catch(r)},dismissError:()=>t({type:`dismiss-error`}),reloadMessages:()=>{let e=n.current.sessionId;e&&i(e)},refreshSessions:e=>a(e)}),[e,t,r,a,i,n,o])}function tO(e,t,n){let r=(0,v.useRef)(void 0),i=(0,v.useRef)(n);i.current=n;let a=(0,v.useCallback)(n=>{if(r.current=n,(async()=>{try{t({type:`sessions`,sessions:(await e.listSessions()).sessions})}catch{}})(),n===void 0){t({type:`search-hits`});return}(async()=>{try{let i=await e.listSessions(n);if(r.current!==n)return;t({type:`search-hits`,hits:i.sessions})}catch{}})()},[e,t]),o=(0,v.useCallback)(()=>a(r.current),[a]),s=(0,v.useCallback)(n=>{(async()=>{try{let{session:r}=await e.getSession(n);t({type:`current-summary`,summary:r})}catch{}})()},[e,t]);(0,v.useEffect)(()=>{a(void 0)},[a]);let c=(0,v.useRef)(void 0);(0,v.useEffect)(()=>{let e=n.sessionId;if(e===void 0||c.current===e)return;let t=c.current===void 0;c.current=e,!t&&(i.current.sessions.some(t=>t.id===e)||o())},[n.sessionId,o]);let l=(0,v.useRef)({running:!1});return(0,v.useEffect)(()=>{let{sessionId:e,turn:t,currentSummary:n}=i.current,r=t!==`idle`,a=l.current;l.current={...e?{sessionId:e}:{},running:r},!(!a.running||r||a.sessionId!==e)&&e!==void 0&&(n?.title||(o(),s(e)))},[n.turn,n.sessionId,o,s]),(0,v.useEffect)(()=>{let e=n.sessionId;e!==void 0&&n.currentSummary?.id!==e&&s(e)},[n.sessionId,n.currentSummary?.id,s]),(0,v.useEffect)(()=>{n.sessionsRevision!==0&&o()},[n.sessionsRevision,o]),{refreshSessions:a,refreshAgain:o}}function nO(e){return e.turn!==`awaiting-approval`&&e.turn!==`awaiting-question`?!1:e.approvals.length===0&&e.questions.length===0}var rO=(0,v.createContext)(hr),iO=(0,v.createContext)(void 0),aO=1500;function oO(e){return e instanceof xe&&e.detail?e.detail:e instanceof Error?e.message:String(e)}async function sO(e){try{return await e}catch(e){if(e instanceof xe&&e.status===404)return null;throw e}}function cO({client:e,children:t,sessionId:n,provider:r,createSource:i}){let[a,o]=(0,v.useReducer)(zr,hr),s=(0,v.useRef)(a);s.current=a;let c=r!==null,l=(0,v.useRef)(c);l.current=c;let u=R(),d=(0,v.useRef)(u);d.current=u;let f=(0,v.useRef)(void 0),p=(0,v.useRef)(!1),m=(0,v.useRef)(0),h=(0,v.useCallback)(async t=>{if(o({type:`session-gone`}),!p.current){p.current=!0;try{let{sessionId:n}=await e.createSession();n!==t&&o({type:`recovery`,sessionId:n})}catch{}}},[e]),g=(0,v.useCallback)(e=>{if(Te(e)&&!l.current){o({type:`session-unavailable`});return}if(Te(e)){h(f.current);return}o({type:`error`,message:oO(e)})},[h]),_=(0,v.useCallback)(async t=>{let n=++m.current,r=()=>n!==m.current;o({type:`resyncing`});try{let[n,i,a]=await Promise.all([e.messages(t),sO(e.approvals(t)),sO(e.questions(t))]);if(r())return;let s=i===null||a===null?c?`history`:`no-provider`:!1,l=cE(n.messages,d.current);o({type:`replay`,items:l.items,turns:l.turns,approvals:i?[...i.approvals]:[],questions:a?[...a.questions]:[],turn:i?.state??`idle`,readOnly:s,...n.usage?{usage:n.usage}:{},...n.inFlightThroughSeq===void 0?{}:{inFlightThroughSeq:n.inFlightThroughSeq},...n.interruptedTurnFrom===void 0?{}:{interruptedTurnFrom:n.interruptedTurnFrom}})}catch(e){if(r())return;g(e)}},[e,g,c]),{refreshSessions:y,refreshAgain:b}=tO(e,o,a);(0,v.useEffect)(()=>{let e=QD(`/api/events`,{onFrame:e=>o({type:`frame`,frame:e}),onConnectionChange:e=>o({type:`connection`,state:e}),onResync:()=>{let e=f.current;e&&_(e),b()},...i?{createSource:i}:{}});return()=>e.close()},[e,i,b,_]),(0,v.useEffect)(()=>{let t=!1;return(async()=>{let r;try{r=n??(await e.createSession()).sessionId}catch(e){t||g(e);return}t||(f.current=r,p.current=!1,o({type:`session`,sessionId:r}),await _(r))})(),()=>{t=!0}},[n,e,g,_]),(0,v.useEffect)(()=>{!a.refetchOnIdle||a.resyncing||a.turn!==`idle`||a.sessionId&&_(a.sessionId)},[a.refetchOnIdle,a.resyncing,a.turn,a.sessionId,_]),(0,v.useEffect)(()=>{if(!nO(a))return;let e=a.sessionId;if(!e)return;let t=setTimeout(()=>{s.current.resyncing||_(e)},aO);return()=>clearTimeout(t)},[a.turn,a.approvals.length,a.questions.length,a.sessionId,_]);let x=eO({client:e,dispatch:o,stateRef:s,fail:g,resync:_,refreshSessions:y});return(0,L.jsx)(rO.Provider,{value:a,children:(0,L.jsx)(iO.Provider,{value:x,children:t})})}function lO(){return(0,v.useContext)(rO)}function uO(){let e=(0,v.useContext)(iO);if(!e)throw Error(`useWebActions 必须在 WebStoreProvider 里用`);return e}var dO={binary:{plain:`web.ui.diff.omit_binary`,sized:`web.ui.diff.omit_binary_sized`},"too-large":{plain:`web.ui.diff.omit_too_large`,sized:`web.ui.diff.omit_too_large_sized`},"no-snapshot":{plain:`web.ui.diff.omit_no_snapshot`,sized:`web.ui.diff.omit_no_snapshot`}},fO={binary:j_.binary.why,"too-large":`web.ui.diff.omit_too_large_why`,"no-snapshot":`web.ui.diff.omit_no_snapshot_why`};function pO(e,t){if(!e.omitted)return;let n=e.newBytes??e.oldBytes,r=dO[e.omitted];return n===null?t(r.plain):t(r.sized,{bytes:Ci(n)})}function mO(e,t){let n=pO(e,t);if(!(n===void 0||!e.omitted))return{label:n,why:t(fO[e.omitted])}}function hO({file:e}){let t=mO(e,R());return t?(0,L.jsx)(H_,{filePath:e.path,notice:t}):(0,L.jsx)(H_,{filePath:e.path,...e.oldContent===null?{}:{oldContent:e.oldContent},...e.newContent===null?{}:{newContent:e.newContent}})}var gO={"no-changes":`web.ui.diff.note_no_changes`,"not-a-git-repo":`web.ui.diff.note_not_a_git_repo`,"no-workspace-history":`web.ui.diff.note_no_workspace_history`,"no-workspace":`web.ui.diff.note_no_workspace`,truncated:`web.ui.diff.note_truncated`},_O={added:{icon:`plus`,label:`web.ui.diff.status_added`},modified:{icon:`file-diff`,label:`web.ui.diff.status_modified`},deleted:{icon:`circle-x`,label:`web.ui.diff.status_deleted`}};function vO(e,t){let[n,r]=v.useState({state:`pending`}),[i,a]=v.useState(0);return v.useEffect(()=>{if(!e||!t){r({state:`pending`});return}r({state:`pending`});let n=!0;return e.sessionDiff(t).then(e=>{n&&r({state:`ok`,data:e})}).catch(()=>{n&&r({state:`error`})}),()=>{n=!1}},[e,t,i]),{view:n,reload:v.useCallback(()=>a(e=>e+1),[])}}function yO({client:e,sessionId:t,onBack:n}){let r=R(),{view:i,reload:a}=vO(e,t),[o,s]=v.useState(),c=i.state===`ok`?i.data.files:[],l=c.find(e=>e.path===o);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`nav`,{className:`navcol`,children:[(0,L.jsxs)(`div`,{className:`navcol__head`,children:[r(`web.ui.diff.title`),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm navcol__back`,type:`button`,onClick:n,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),r(`web.ui.diff.back`)]})]}),(0,L.jsx)(`ul`,{className:`navcol__list`,children:c.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{type:`button`,"aria-current":e.path===o?`true`:void 0,onClick:()=>s(e.path),"aria-label":`${r(_O[e.status].label)} ${e.path}`,title:`${r(_O[e.status].label)} ${e.path}`,children:[(0,L.jsx)(`span`,{className:`navcol__sign`,"data-status":e.status,children:(0,L.jsx)(z,{name:_O[e.status].icon,size:`lg`})}),(0,L.jsx)(xO,{path:e.path}),(0,L.jsx)(`span`,{className:`navcol__n`,children:pO(e,r)??``})]})},e.path))})]}),(0,L.jsxs)(`section`,{className:`panelcol`,children:[(0,L.jsxs)(`div`,{className:`panelcol__head`,children:[(0,L.jsx)(`h1`,{className:`panelcol__title wsdiff__title`,children:l?(0,L.jsx)(xO,{path:l.path}):r(`web.ui.diff.title`)}),i.state===`ok`&&i.data.root!==``&&(0,L.jsxs)(`span`,{className:`wsdiff__root`,title:i.data.root,children:[(0,L.jsx)(z,{name:`folder`,size:`sm`}),i.data.root]}),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm wsdiff__reload`,type:`button`,onClick:a,disabled:i.state===`pending`,title:r(`web.ui.diff.reload_hint`),children:[(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),r(`web.ui.diff.reload`)]})]}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:(0,L.jsx)(`div`,{className:`wsdiff__inner`,children:i.state===`pending`?(0,L.jsx)(B,{text:r(`web.ui.diff.loading`)}):i.state===`error`?(0,L.jsx)(B,{tone:`error`,text:r(`web.ui.diff.failed`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(bO,{data:i.data,t:r}),l?(0,L.jsx)(hO,{file:l}):c.length>0&&(0,L.jsx)(B,{text:r(`web.ui.diff.pick`)})]})})})]})]})}function bO({data:e,t}){return(0,L.jsxs)(L.Fragment,{children:[e.source===`git`&&e.files.length>0&&(0,L.jsx)(B,{text:t(`web.ui.diff.scope_git`)}),e.notes.map(n=>(0,L.jsx)(B,{text:t(gO[n],{count:e.files.length})},n))]})}function xO({path:e}){let t=e.lastIndexOf(`/`);return(0,L.jsxs)(`span`,{className:`wsdiff__path`,children:[t>=0&&(0,L.jsx)(`span`,{className:`wsdiff__dir`,children:e.slice(0,t+1)}),(0,L.jsx)(`span`,{className:`wsdiff__name`,children:e.slice(t+1)})]})}function SO({client:e,config:t,onOpenSession:n,sub:r}){let i=R(),a=lO(),o=uO(),{sessionId:s,recovery:c}=a,[l,u]=v.useState(null),[d,f]=v.useState(null),[p,m]=v.useState(`experts`),[h,g]=v.useState(),[_,y]=v.useState(),b=l??(r===`diff`?`diff`:`thread`),x=zb(),S=JS(e,s),C=tC(s),[w,T]=v.useState(),E=PC(e,s,a.turn),D=CS(e,s),O=zC(e,s,a.turn),ee=xD(e,s,a.lastPromptTokens),te=pt(e),k=MC(e,s,a.turn,E,t?.permission);v.useEffect(()=>{k.level&&(document.documentElement.dataset.permission=k.level)},[k.level]);let ne=zE({...t?.settingsHidden===void 0?{}:{hidden:t.settingsHidden},archived:!0}).length+(t?.settingsPanes?.length??0)>0;v.useEffect(()=>{if(!ne)return;let e=e=>{e.key!==`,`||!(e.metaKey||e.ctrlKey)||(e.preventDefault(),u(e=>e===`settings`?null:`settings`))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ne]);let re=v.useCallback(e=>{u(null),n?.(e)},[n]),ie=v.useCallback(()=>{u(null),s&&n?.(s)},[n,s]),ae=v.useCallback(e=>{u(e),x.closeDrawer()},[x.closeDrawer]),A=v.useCallback(e=>{T({text:i(`web.ui.cap.summon_prefill`,{role:e})}),ie()},[i,ie]),j=v.useCallback(e=>{C.pin(e),ie()},[C.pin,ie]),oe=v.useCallback(()=>T(void 0),[]);v.useEffect(()=>{let e=a.returned;if(!e||e.length===0)return;let t=e.map(e=>rE(e,i)).join(`
378
- `);t&&T({text:t}),o.returnedDone()},[a.returned,o,i]);let se=v.useCallback((e,t=[])=>{y(void 0),t.length>0?o.send(e,C.role,t):o.send(e,C.role)},[o,C.role]),ce=v.useCallback(async t=>s?(await e.referenceCandidates(s,t)).candidates:[],[e,s]),le=v.useCallback(async()=>(await e.listSessions(void 0,{archived:!0})).sessions,[e]),ue=v.useCallback(async t=>s?await e.fileCandidates(s,t):{candidates:[],unmentionable:0,truncated:!1},[e,s]),M=vw(e,re),[de,fe]=v.useState(),pe=v.useCallback(e=>{M.createDeferred(t=>fe({sessionId:t,text:e}))},[M.createDeferred]);v.useEffect(()=>{de!==void 0&&s===de.sessionId&&(T({text:de.text,replace:!0}),fe(void 0))},[de,s]);let N=bw(e,{...s?{currentSessionId:s}:{},...t?{homeSessionId:t.sessionId}:{},...n?{openSession:re}:{},reloadCurrent:o.reloadMessages}),me=v.useMemo(()=>{let e=a.currentSummary?.workspace;return _w(t?.knownWorkspaces??[],e?.state===`bound`?e.ref.root:null)},[t,a.currentSummary]),P=qD(a),he=v.useMemo(()=>jS({client:e,sessionId:s,readOnly:!!P,busy:a.turn!==`idle`,t:i,openContextPane:()=>{g(e=>({n:(e?.n??0)+1,pane:`memory`})),ae(`settings`)},setNotice:y}),[e,s,P,a.turn,i,ae]),F=t!==void 0&&t.provider!==null&&n!==void 0,[ge,_e]=v.useState(),ve=v.useCallback(()=>_e(void 0),[]),ye=$S({onFiles:v.useCallback(e=>_e(e),[]),disabled:DC({turn:a.turn,connection:a.connection,disabled:!s,readOnly:P})}),be=v.useCallback(e=>se(e),[se]),xe=v.useCallback(e=>T({text:e}),[]),Se=x.openInspector,Ce=Gr(e,s,a.turn),we=v.useCallback(e=>{e.messagesRemoved!==null&&o.reloadMessages(),Ce.reload()},[o,Ce]),Te=v.useCallback(t=>s?ut(t,s,e.artifactUrl):void 0,[e,s]),Ee=v.useCallback(t=>s?lt(t,s,e.artifactUrl):void 0,[e,s]),De=v.useMemo(()=>dw(a.history,a.stream.pending),[a.history,a.stream.pending]),Oe=v.useMemo(()=>mi(a.history,a.stream.pending),[a.history,a.stream.pending]),ke=gy(e,s,a.turn,a.tasksRevision),Ae=BD(a.sessions,s),je=Gy(e),Me=By(e),[I,Ne]=v.useState(!1),Pe=yS(e,I,b===`cap`&&p===`plugins`),Fe=Me.finishedAt,Ie=je.reload;v.useEffect(()=>{Fe!==void 0&&Ie()},[Fe,Ie]);let Le=gw(e,a.turn,s),Re=v.useCallback(async(t,n)=>{try{return await e.fixSchedule(t,n),je.reload(),!0}catch{return!1}},[e,je]),ze=v.useCallback(e=>{document.getElementById(ny(e))?.scrollIntoView({block:`center`})},[]),[Be,Ve]=v.useState(),He=v.useCallback(e=>{Ve(e),Se()},[Se]),Ue=v.useCallback(()=>Ve(void 0),[]);v.useEffect(()=>Ve(void 0),[s]);let We=qs(v.useMemo(()=>s?t=>e.fileStat(s,t):void 0,[e,s])),Ge=v.useMemo(()=>({open:He,verify:We}),[He,We]);return(0,L.jsx)(Gs,{value:Ge,children:(0,L.jsx)(qn,{currency:t?.currency,children:(0,L.jsxs)(`div`,{className:`app`,"data-view":b,"data-inspector":x.inspectorShown?`open`:`closed`,...x.drawer?{"data-drawer":x.drawer}:{},children:[(0,L.jsx)(ft,{}),(0,L.jsx)(Bb,{panels:x}),(0,L.jsx)(FD,{...s?{sessionId:s}:{},rootRef:x.sidebarRef,...a.usage?{usage:a.usage}:{},...t?{usageScope:t.usageScope}:{},...t?.maxCostUsd===void 0?{}:{maxCostUsd:t.maxCostUsd},...t?.brand===void 0?{}:{brand:t.brand},...t?.diagnostics?{diagnostics:t.diagnostics}:{},...F&&t?.diagnostics?{diagnosticsHandoff:{all:t.diagnostics,onHandoff:pe}}:{},...F?{newSession:{handle:M}}:{},acts:N,...t?.sidebarMenu===void 0?{}:{menu:t.sidebarMenu},...t?.userMenu===void 0?{}:{userMenu:t.userMenu},onMenuSelect:My,...t?.user===void 0?{}:{user:t.user},...ne?{onOpenSettings:()=>{g(void 0),ae(`settings`)}}:{},onOpenCapability:e=>{m(e),ae(`cap`)},...b===`cap`?{capTab:p}:{},onOpenAutomation:()=>ae(`auto`),pendingAutomation:je.items.length,automationRunning:Me.running!==void 0,onCapExpandedChange:Ne,...Pe===void 0?{}:{pluginUpdates:Pe},sessions:a.sessions,hits:a.searchHits,onOpenSession:re,onSearch:o.refreshSessions}),b===`settings`?(0,L.jsx)(BE,{...h?{initialPane:h.pane}:{},onBack:()=>u(null),client:e,...s?{sessionId:s}:{},...t?{compression:t.compression}:{},...t?{about:t.about}:{},...t?.diagnostics?{diagnostics:t.diagnostics}:{},...t?.settingsHidden===void 0?{}:{hiddenPanes:t.settingsHidden},...t?.settingsPanes===void 0?{}:{hostPanes:t.settingsPanes},readOnly:!!P,noProvider:t!==void 0&&t.provider===null,turns:a.turns,hasHistory:a.history.length>0,onLoadArchived:le,onOpenSession:re,acts:N},h?.n??0):b===`cap`?(0,L.jsx)(gS,{tab:p,client:e,...s?{sessionId:s}:{},onBack:()=>u(null),...x.overlaySidebar?{sidebar:{open:x.drawer===`sidebar`,onToggle:x.toggleSidebar}}:{},onSummon:A,onTakeOver:j,...C.role===void 0?{}:{pinnedRole:C.role},canSummon:s!==void 0&&!P,...F?{newSession:M}:{},lanExposed:t?.lanExposed??!0,nativeDirPicker:t?.nativeDirPicker??!1}):b===`auto`?(0,L.jsx)(nb,{client:e,workspaceChoices:me,nativeDirPicker:t?.nativeDirPicker??!1,manualRun:Me,...d?{draft:d}:{},onDraftUsed:()=>f(null),onBack:()=>u(null)}):b===`diff`?(0,L.jsx)(yO,{client:e,...s?{sessionId:s}:{},onBack:ie}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`main`,{className:`main`,...ye.zone,children:[ye.active&&(0,L.jsx)(eC,{}),(0,L.jsx)(KD,{title:a.currentSummary?.title,...t?{model:t.model}:{},modelControl:ee,modelCatalog:te,onConfigureKey:()=>{g(e=>({n:(e?.n??0)+1,pane:`model`})),ae(`settings`)},otherSession:t!==void 0&&s!==t.sessionId,connection:a.connection,resyncing:a.resyncing,inspectorOpen:x.inspectorShown,onToggleInspector:x.toggleInspector,...x.overlaySidebar?{sidebar:{open:x.drawer===`sidebar`,onToggle:x.toggleSidebar}}:{}}),(0,L.jsx)(`div`,{className:`bannerslot`,children:a.sessionGone?(0,L.jsxs)(`div`,{className:`banner`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`banner__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`p`,{children:i(c?`web.ui.banner.session_gone`:`web.ui.banner.session_gone_stuck`)}),c&&n&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>n(c),children:i(`web.ui.banner.session_gone_open`)})]}):a.error&&(0,L.jsxs)(`div`,{className:`banner`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`banner__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`p`,{children:a.error}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:o.dismissError,children:i(`web.ui.banner.dismiss`)})]})}),(0,L.jsxs)(RD,{children:[s&&!a.resyncing&&!P&&a.turn===`idle`&&a.history.length===0&&a.stream.pending.length===0&&(0,L.jsx)(Ry,{...t?.blankGreeting===void 0?{}:{greeting:t.blankGreeting},...t?.blankCards===void 0?{}:{cards:t.blankCards},onPick:e=>T({text:e.prompt,replace:!0})}),(0,L.jsx)(sy,{history:a.history,pending:a.stream.pending,thought:a.stream.thought,thoughtParts:a.thoughtParts,approvals:a.approvals,turn:a.turn,turns:a.turns,heads:a.heads,...t?{compression:t.compression}:{},...a.runUsage?{runUsage:a.runUsage}:{},...a.interruptedTurnFrom===void 0?{}:{interruptedTurn:a.interruptedTurnFrom},queued:a.queued,steered:a.steered,aborting:a.aborting,stranded:nO(a),onAbort:o.abort,resolveArtifact:Te,resolveImage:Ee,onReviewDraft:e=>{f(e),ae(`auto`)},onRerun:be,onQuote:xe,onInspect:Se,...s?{rewind:{client:e,sessionId:s,checkpoints:Ce.checkpoints,onDone:we}}:{}})]}),(0,L.jsxs)(`div`,{className:`composer-region`,children:[(0,L.jsx)(WD,{receipts:Ae.receipts,onDrop:Ae.drop,...n?{onOpen:re}:{}}),(0,L.jsx)(uw,{approvals:a.approvals,questions:a.questions,onRespond:o.respond,onAnswer:(e,t,n)=>o.answerQuestion(e,{answers:t,...n?{skipped:!0}:{}}),sessions:a.sessions,...s?{currentSessionId:s}:{},...n?{onOpenSession:re}:{},pending:je.items,onFixPending:Re,onOpenAutomation:()=>ae(`auto`),blockedGoals:Le.items,...Me.running?{running:{name:Me.running.name,startedAt:Me.running.startedAt}}:{}}),(0,L.jsx)(AC,{draft:S,turn:a.turn,sending:a.sending,connection:a.connection,disabled:!s,readOnly:P,...w?{prefill:w}:{},onPrefillDone:oe,commands:D,builtins:he,listSessionCandidates:ce,listFileCandidates:ue,...a.commandNotice?{commandNotice:a.commandNotice}:{},..._?{builtinNotice:_}:{},...ge?{dropped:ge}:{},onDroppedDone:ve,expert:C,...s&&a.usage&&t?{usage:{tokens:a.usage,scope:t.usageScope}}:{},onSend:se}),(0,L.jsx)(VC,{workspace:O,...a.currentSummary?.role?{role:a.currentSummary.role}:{},workspaceChoices:me,client:e,nativeDirPicker:t?.nativeDirPicker??!1,...s&&n?{onOpenDiff:()=>n(s,`diff`)}:{},permission:k,planMode:E,readOnly:!!P})]})]}),x.inspectorShown&&(0,L.jsx)(bD,{rootRef:x.inspectorRef,patches:De,onLocate:ze,...Be===void 0?{}:{previewPath:Be},onClosePreviewPath:Ue,client:e,...s?{sessionId:s}:{},turn:a.turn,toolArtifacts:Oe,resolveArtifact:Te,tasks:ke})]})]})})})}function CO(e,t){let{lang:n}=ot(),[r,i]=v.useState(t),a=v.useRef(n);return v.useEffect(()=>{if(a.current===n)return;a.current=n;let t=!0;return e.config().then(e=>{t&&i(e)},()=>void 0),()=>{t=!1}},[e,n]),r}var wO=`/s/`;function TO(e){if(!e.startsWith(wO))return{kind:`home`};let t=e.slice(3).split(`/`),n=t[0]??``;if(!n)return{kind:`home`};let r;try{r=decodeURIComponent(n)}catch{return{kind:`home`}}return t[1]===`diff`?{kind:`session`,sessionId:r,sub:`diff`}:{kind:`session`,sessionId:r}}function EO(e,t){let n=`${wO}${encodeURIComponent(e)}`;return t===void 0?n:`${n}/${t}`}function DO(){return{pathname:()=>window.location.pathname,push:e=>window.history.pushState(null,``,e),replace:e=>window.history.replaceState(null,``,e),onPopState:e=>(window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e))}}function OO(e,t){let[n,r]=v.useState(()=>TO(e.pathname()));v.useEffect(()=>e.onPopState(()=>r(TO(e.pathname()))),[e]),v.useEffect(()=>{n.kind!==`home`||!t||(e.replace(EO(t)),r({kind:`session`,sessionId:t}))},[e,n.kind,t]);let i=v.useRef(n);return i.current=n,{route:n,go:v.useCallback((t,n)=>{let a=i.current;(a.kind!==`session`||a.sessionId!==t||a.sub!==n)&&(e.push(EO(t,n)),r(n===void 0?{kind:`session`,sessionId:t}:{kind:`session`,sessionId:t,sub:n}))},[e])}}function kO({client:e,config:t,env:n}){let r=v.useMemo(DO,[]),i=n??r,a=CO(e,t),o=a.lastSessionId??a.sessionId,{route:s,go:c}=OO(i,o),l=s.kind===`session`?s.sessionId:o,u=s.kind===`session`?s.sub:void 0;return v.useEffect(()=>{e.markLastSession(l).catch(()=>{})},[e,l]),(0,L.jsx)(cO,{client:e,sessionId:l,provider:a.provider,children:(0,L.jsx)(i_,{children:(0,L.jsx)(SO,{client:e,config:a,onOpenSession:c,sub:u})})})}function AO({titleKey:e,hintKey:t,hint:n}){let r=R();return(0,L.jsxs)(`div`,{className:`fatal`,role:`alert`,children:[(0,L.jsx)(`h1`,{children:r(e)}),(0,L.jsx)(`p`,{children:t?r(t):n})]})}async function jO(){let e=document.getElementById(`root`);if(!e)throw Error(`index.html 里没有 #root`);let t=(0,y.createRoot)(e),n=Pe((e,t)=>fetch(e,t),()=>$e(et())),r=await je(n,ke());if(!r.ok){t.render((0,L.jsx)(v.StrictMode,{children:(0,L.jsx)(at,{children:r.unauthorized?(0,L.jsx)(AO,{titleKey:`web.ui.fatal.unauthorized`,hintKey:`web.ui.fatal.unauthorized_hint`}):(0,L.jsx)(AO,{titleKey:`web.ui.fatal.offline`,hint:r.message})})}));return}t.render((0,L.jsx)(v.StrictMode,{children:(0,L.jsx)(at,{children:(0,L.jsx)(kO,{client:n,config:r.config})})}))}jO();
374
+ `).map(e=>e.trim()).filter(e=>e.length>0)}function kb({client:e,lanExposed:t,onAdded:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(Db),[c,l]=v.useState(!1),[u,d]=v.useState(),f=o.name.trim().length>0&&o.description.trim().length>0;return t?(0,L.jsx)(`p`,{className:`cap__foot`,"data-testid":`roleadd-locked`,children:r(`web.ui.cap.role_add_locked`)}):i?(0,L.jsxs)(`form`,{className:`roleadd`,onSubmit:t=>{if(t.preventDefault(),!f||c)return;l(!0),d(void 0);let r=Ob(o.tools),i=Ob(o.skills),u=Number(o.maxTurns.trim()),p={name:o.name.trim(),description:o.description.trim(),...o.prompt.trim()?{prompt:o.prompt}:{},...r.length>0?{tools:r}:{},...i.length>0?{skills:i}:{},...o.maxTurns.trim()!==``&&Number.isInteger(u)&&u>=0?{maxTurns:u}:{}};e.addRole(p).then(e=>{n(e.role,e.path),a(!1),s(Db)}).catch(e=>d(e instanceof Error?e.message:String(e))).finally(()=>l(!1))},children:[(0,L.jsx)(`h3`,{className:`roleadd__title`,children:r(`web.ui.cap.role_add_title`)}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_name`)}),(0,L.jsx)(`input`,{type:`text`,value:o.name,autoFocus:!0,onChange:e=>s(t=>({...t,name:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_name_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_desc`)}),(0,L.jsx)(`textarea`,{rows:2,value:o.description,onChange:e=>s(t=>({...t,description:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_desc_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_prompt`)}),(0,L.jsx)(`textarea`,{rows:6,value:o.prompt,onChange:e=>s(t=>({...t,prompt:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_prompt_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_tools`)}),(0,L.jsx)(`textarea`,{className:`roleadd__mono`,rows:3,value:o.tools,onChange:e=>s(t=>({...t,tools:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_tools_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_skills`)}),(0,L.jsx)(`textarea`,{className:`roleadd__mono`,rows:3,value:o.skills,onChange:e=>s(t=>({...t,skills:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_skills_hint`)})]}),(0,L.jsxs)(`label`,{children:[(0,L.jsx)(`span`,{className:`field__label`,children:r(`web.ui.cap.role_add_turns`)}),(0,L.jsx)(`input`,{type:`number`,min:0,value:o.maxTurns,onChange:e=>s(t=>({...t,maxTurns:e.target.value}))}),(0,L.jsx)(`span`,{className:`field__hint`,children:r(`web.ui.cap.role_add_turns_hint`)})]}),u!==void 0&&(0,L.jsxs)(`p`,{className:`roleadd__error`,role:`alert`,children:[(0,L.jsx)(z,{name:`circle-x`,size:`sm`}),(0,L.jsx)(`span`,{children:u})]}),(0,L.jsx)(`p`,{className:`note-block`,children:r(`web.ui.cap.role_add_scope`)}),(0,L.jsxs)(`div`,{className:`roleadd__act`,children:[(0,L.jsx)(`button`,{className:`btn btn--primary btn--sm`,type:`submit`,disabled:!f||c,children:r(c?`web.ui.cap.role_add_submitting`:`web.ui.cap.role_add_submit`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:c,onClick:()=>{a(!1),d(void 0)},children:r(`web.ui.cap.role_add_cancel`)})]})]}):(0,L.jsx)(`div`,{className:`roleadd__bar`,children:(0,L.jsxs)(`button`,{className:`btn btn--sm`,type:`button`,onClick:()=>a(!0),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),r(`web.ui.cap.role_add`)]})})}var Ab=[{source:`builtin`,title:`web.ui.cap.g_builtin`,note:`web.ui.cap.g_builtin_roles`},{source:`plugin`,title:`web.ui.cap.g_plugin`,note:`web.ui.cap.g_plugin_roles`},{source:`host`,title:`web.ui.cap.g_host`,note:`web.ui.cap.g_host_roles`},{source:`user`,title:`web.ui.cap.g_user`,note:`web.ui.cap.g_user_roles`},{source:`project`,title:`web.ui.cap.g_project`,note:`web.ui.cap.g_project_roles`}],jb={builtin:`web.ui.cap.g_builtin`,plugin:`web.ui.cap.g_plugin`,host:`web.ui.cap.g_host`,user:`web.ui.cap.g_user`,project:`web.ui.cap.g_project`};function Mb({roles:e,project:t,onSummon:n,onTakeOver:r,pinnedRole:i,canSummon:a,newSession:o,client:s,lanExposed:c,onWrote:l}){let u=R(),[d,f]=v.useState(),[p,m]=v.useState(),[h,g]=v.useState(),_=v.useCallback(e=>{g(e),o?.create(t.root,e)},[o,t.root]);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(kb,{client:s,lanExposed:c,onAdded:(e,t)=>{f(t),m(void 0),l()}}),d!==void 0&&(0,L.jsx)(`p`,{className:`cap__foot`,children:u(`web.ui.cap.role_add_done`,{path:d})}),p&&(0,L.jsxs)(`div`,{className:`note-block`,"data-testid":`role-removed-note`,children:[(0,L.jsx)(`p`,{children:u(`web.ui.cap.role_removed`,{name:p.name})}),(0,L.jsx)(`p`,{children:(0,L.jsx)(`code`,{children:p.path})}),p.takenOverBy!==null&&(0,L.jsx)(`p`,{children:u(`web.ui.cap.role_removed_taken_over`,{name:p.name,layer:u(jb[p.takenOverBy])})})]}),Ab.map(d=>{let p=e.filter(e=>e.source===d.source),g=d.source===`project`&&t.root!==null&&!t.trusted;return p.length===0&&!g?null:(0,L.jsx)(sb,{title:u(d.title),note:u(d.note),trust:d.source===`project`&&t.root!==null?t:null,children:g?(0,L.jsx)(`p`,{className:`cap__foot`,children:u(`web.ui.cap.project_locked_roles`)}):(0,L.jsx)(`div`,{className:`cards`,children:p.map((e,u)=>(0,L.jsx)(Nb,{role:e,hue:Ly(u),onSummon:n,onTakeOver:r,pinned:i===e.name,canSummon:a,root:t.root,...o?{open:_,opening:o.busy,...o.error!==void 0&&h===e.name?{error:o.error}:{}}:{},...d.source===`user`&&!c?{remove:{client:s,onRemoved:(t,n)=>{m({name:e.name,path:t,takenOverBy:n}),f(void 0),l()}}}:{}},e.name))})},d.source)})]})}function Nb({role:e,hue:t,onSummon:n,onTakeOver:r,pinned:i,canSummon:a,root:o,open:s,opening:c,error:l,remove:u}){let d=R(),f=e.toolsCut.length>0,[p,m]=v.useState(!1),[h,g]=v.useState(!1),[_,y]=v.useState(),b=()=>{!u||h||(g(!0),y(void 0),u.client.removeRole(e.name).then(e=>{if(e.ok)return u.onRemoved(e.path??``,e.takenOverBy);y(e.detail??``),m(!1)}).catch(e=>{y(e instanceof Error?e.message:String(e)),m(!1)}).finally(()=>g(!1)))},x=e=>e===null?d(`web.ui.cap.turns_global`):e===0?d(`web.ui.cap.unlimited`):String(e),S=o===null?d(`web.ui.cap.open_session_nows`,{role:e.name}):d(`web.ui.cap.open_session_here`,{role:e.name,root:o}),C=d(i?`web.ui.cap.take_over_on_title`:`web.ui.cap.take_over_title`,{role:e.name});return(0,L.jsxs)(`article`,{className:`card`,"data-source":e.source,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(`span`,{className:`card__ava`,"data-hue":t,"aria-hidden":!0,children:e.name.slice(0,2)}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.name}),f&&(0,L.jsx)(`span`,{className:`card__src`,children:d(`web.ui.cap.overrides_builtin`)})]}),u&&!p&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__kill`,type:`button`,"aria-label":d(`web.ui.cap.role_remove_title`,{role:e.name}),title:d(`web.ui.cap.role_remove_title`,{role:e.name}),onClick:()=>m(!0),children:d(`web.ui.cap.role_remove`)})]}),p?(0,L.jsx)(`p`,{className:`card__desc role__ask`,children:d(`web.ui.cap.role_remove_ask`,{name:e.name})}):(0,L.jsx)(my,{text:e.description}),(0,L.jsxs)(`p`,{className:`card__meta`,children:[(0,L.jsxs)(`span`,{className:`card__stat`,children:[d(`web.ui.cap.stat_tools`),` `,(0,L.jsx)(`b`,{children:e.tools===null?d(`web.ui.cap.unlimited`):e.tools.length})]}),(0,L.jsxs)(`span`,{className:`card__stat`,children:[d(`web.ui.cap.stat_turns`),` `,(0,L.jsx)(`b`,{children:x(e.maxTurns)})]})]}),(0,L.jsxs)(`details`,{className:`card__tools`,children:[(0,L.jsxs)(`summary`,{children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),e.tools===null?d(`web.ui.cap.toolset`):d(`web.ui.cap.toolset_n`,{count:e.tools.length})]}),e.tools===null?(0,L.jsx)(`p`,{className:`card__hint`,children:d(`web.ui.cap.unlimited_hint`)}):(0,L.jsxs)(`div`,{className:`chips`,children:[e.tools.map(e=>(0,L.jsx)(`code`,{className:`chip`,children:e},e)),e.toolsCut.map(e=>(0,L.jsx)(`code`,{className:`chip`,"data-cut":``,children:e},`cut-${e}`))]})]}),e.skills!==null&&(0,L.jsxs)(`details`,{className:`card__tools`,"data-testid":`role-skills`,children:[(0,L.jsxs)(`summary`,{children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),d(`web.ui.cap.skillset_n`,{count:e.skills.length})]}),e.skills.length===0?(0,L.jsx)(`p`,{className:`card__hint`,children:d(`web.ui.cap.skillset_none`)}):(0,L.jsx)(`div`,{className:`card__skillnames`,children:e.skills.map(e=>(0,L.jsx)(`code`,{className:`card__skill`,children:e},e))}),(0,L.jsx)(`p`,{className:`card__hint`,children:d(`web.ui.cap.skillset_hint`)})]}),(0,L.jsxs)(`footer`,{className:`card__foot`,children:[!p&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,disabled:!a,onClick:()=>n(e.name),children:d(`web.ui.cap.summon`)}),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm card__takeover`,type:`button`,disabled:!a||i,"aria-label":C,title:C,"aria-pressed":i,onClick:()=>r(e.name),children:[(0,L.jsx)(z,{name:`user-round`,size:`sm`}),d(i?`web.ui.cap.take_over_on`:`web.ui.cap.take_over`)]}),s&&(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm card__open`,type:`button`,disabled:c,"aria-label":S,title:S,onClick:()=>s(e.name),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),d(`web.ui.cap.open_session`)]})]}),u&&p&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm card__act`,type:`button`,disabled:h,onClick:b,children:d(`web.ui.cap.role_remove_yes`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__act`,type:`button`,onClick:()=>m(!1),children:d(`web.ui.cap.role_cancel`)})]})]}),_!==void 0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-tone":`error`,role:`alert`,"data-testid":`role-remove-failed`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:_})]}),l!==void 0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:d(`web.ui.cap.open_session_failed`,{detail:l})})]}),f&&(0,L.jsxs)(`p`,{className:`card__notice`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:d(`web.ui.cap.narrowed`,{role:e.name,cut:e.toolsCut.join(d(`web.ui.cap.list_sep`))})})]}),e.skillsCut.length>0&&(0,L.jsxs)(`p`,{className:`card__notice`,"data-testid":`role-skills-narrowed`,children:[(0,L.jsx)(`span`,{className:`card__nsign`,children:(0,L.jsx)(z,{name:`circle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:d(`web.ui.cap.narrowed_skills`,{role:e.name,cut:e.skillsCut.join(d(`web.ui.cap.list_sep`))})})]})]})}function Pb(e,t){let n=e instanceof Element?e:null;for(;n;){if(n.scrollWidth-n.clientWidth>1){let e=globalThis.getComputedStyle(n).overflowX;if(e===`auto`||e===`scroll`)return!0}if(n===t)return!1;n=n.parentElement}return!1}function Fb({side:e,panelRef:t,scrimRef:n,closeDrawer:r}){v.useEffect(()=>{let i=t.current;if(e===null||!i)return;let a=n.current,o=null,s=(t,n)=>{let r=e===`left`?-t:t;i.style.setProperty(`--drawer-drag`,`${Math.round(r)}px`),a?.style.setProperty(`--drawer-progress`,(1-Math.min(1,t/n)).toFixed(3))},c=()=>{for(let e of[i,a])e?.style.setProperty(`--drawer-settle`,`var(--dur)`);i.style.setProperty(`--drawer-drag`,`0px`),a?.style.setProperty(`--drawer-progress`,`1`)},l=e=>{o=null;let t=e.touches.length===1?e.touches[0]:void 0;if(!t||Pb(e.target,i))return;let n=i.getBoundingClientRect().width;if(!(n<=0)){for(let e of[i,a])e?.style.removeProperty(`--drawer-settle`);o={id:t.identifier,x0:t.clientX,y0:t.clientY,width:n,axis:null,travel:0,mark:{travel:0,at:e.timeStamp},speed:0,speedAt:e.timeStamp}}},u=t=>{if(!o)return;let n=t.touches.length===1?t.touches[0]:void 0;if(!n||n.identifier!==o.id){o=null,c();return}let r=n.clientX-o.x0,i=n.clientY-o.y0;if(o.axis===null){if(Math.abs(r)<10&&Math.abs(i)<10)return;if(Math.abs(i)>=Math.abs(r)){o=null;return}o.axis=`x`}t.preventDefault();let a=Math.max(0,e===`left`?-r:r),l=t.timeStamp-o.mark.at;l>0&&(o.speed=(a-o.mark.travel)/l,o.speedAt=t.timeStamp,o.mark={travel:a,at:t.timeStamp}),o.travel=a,s(a,o.width)},d=e=>{let t=o;if(o=null,!(!t||t.axis===null)){if(e.timeStamp-t.speedAt<=100&&t.speed>=.4||t.travel>=t.width*.5){r();return}c()}},f=()=>{o&&(o=null,c())};return i.addEventListener(`touchstart`,l,{passive:!0}),i.addEventListener(`touchmove`,u,{passive:!1}),i.addEventListener(`touchend`,d,{passive:!0}),i.addEventListener(`touchcancel`,f,{passive:!0}),()=>{i.removeEventListener(`touchstart`,l),i.removeEventListener(`touchmove`,u),i.removeEventListener(`touchend`,d),i.removeEventListener(`touchcancel`,f);for(let e of[i,a])e?.style.removeProperty(`--drawer-drag`),e?.style.removeProperty(`--drawer-progress`),e?.style.removeProperty(`--drawer-settle`)}},[e,t,n,r])}var Ib=1100,Lb=1180;function Rb(e){let t=`(width <= ${e}px)`,n=v.useCallback(e=>{let n=globalThis.matchMedia?.(t);return n?(n.addEventListener(`change`,e),()=>n.removeEventListener(`change`,e)):()=>void 0},[t]),r=v.useCallback(()=>globalThis.matchMedia?.(t).matches??!1,[t]);return v.useSyncExternalStore(n,r,()=>!1)}function zb(){let e=Rb(Ib),t=Rb(Lb),[n,r]=v.useState(!1),[i,a]=v.useState(null),o=v.useRef(null),s=v.useRef(null);return v.useEffect(()=>{a(n=>n===`sidebar`&&!e||n===`inspector`&&!t?null:n)},[e,t]),{inspectorShown:t?i===`inspector`:n,drawer:i,overlaySidebar:e,sidebarRef:o,inspectorRef:s,toggleInspector:v.useCallback(()=>{t?a(e=>e===`inspector`?null:`inspector`):r(e=>!e)},[t]),openInspector:v.useCallback(()=>{t?a(`inspector`):r(!0)},[t]),toggleSidebar:v.useCallback(()=>{a(e=>e===`sidebar`?null:`sidebar`)},[]),closeDrawer:v.useCallback(()=>a(null),[])}}function Bb({panels:e}){let{drawer:t,closeDrawer:n,sidebarRef:r,inspectorRef:i}=e,a=t!==null,o=t===`sidebar`?r:i,s=v.useRef(null);return Fb({side:t===null?null:t===`sidebar`?`left`:`right`,panelRef:o,scrimRef:s,closeDrawer:n}),v.useEffect(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&n()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a,n]),v.useEffect(()=>{if(!a)return;let e=document.activeElement;return o.current?.focus(),()=>{e instanceof HTMLElement&&e.focus()}},[a,o]),a?(0,L.jsx)(`div`,{className:`drawer-scrim`,role:`presentation`,ref:s,onClick:n}):null}function Vb(e,t){for(let n of e){if(n.value===t)return[n];let e=Vb(n.children,t);if(e.length>0)return[n,...e]}return[]}function Hb({items:e,value:t,onPick:n,label:r,placeholder:i,required:a,className:o}){let[s,c]=v.useState(!1),l=v.useRef(null),u=v.useRef(null),d=Vb(e,t),f=[e];for(let e of d)e.children.length>0&&f.push(e.children);let p=v.useCallback(()=>{c(!1),l.current?.focus()},[]);v.useEffect(()=>{if(!s)return;let e=e=>{let t=e.target;t&&l.current?.contains(t)!==!0&&u.current?.contains(t)!==!0&&c(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[s]);let m=d.length>0?d.map(e=>e.label).join(` / `):i;return(0,L.jsxs)(`div`,{className:o===void 0?`cascade`:`cascade ${o}`,children:[(0,L.jsxs)(`button`,{className:`cascade__btn`,type:`button`,ref:l,"aria-label":r,"aria-haspopup":`dialog`,"aria-expanded":s,...a===!0?{"aria-required":`true`}:{},...d.length===0?{"data-empty":`true`}:{},onClick:()=>c(e=>!e),children:[(0,L.jsx)(`span`,{className:`cascade__value`,children:m}),(0,L.jsx)(z,{name:`chevron-down`,size:`sm`})]}),(0,L.jsx)(jt,{open:s,anchorRef:l,onClose:()=>c(!1),className:`cascade__pop`,width:`content`,children:(0,L.jsx)(`div`,{className:`cascade__cols`,ref:u,role:`dialog`,"aria-label":r,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),p())},children:f.map((e,r)=>(0,L.jsx)(`ul`,{className:`cascade__col`,children:e.map(e=>{let i=d[r]?.value===e.value;return(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{className:`cascade__item`,type:`button`,...e.value===t?{"aria-current":`true`}:{},...i?{"data-open":`true`}:{},onClick:()=>{n(e.value),e.children.length===0&&p()},children:[(0,L.jsx)(`span`,{className:`cascade__name`,children:e.label}),e.children.length>0&&(0,L.jsx)(z,{name:`chevron-right`,size:`sm`,"aria-hidden":!0})]})},e.value)})},r))})})]})}function Ub(e){return{entries:Array.from(e?.items??[]).filter(e=>e.kind===`file`).map(e=>e.webkitGetAsEntry?.()??null),files:Array.from(e?.files??[])}}async function Wb(e,t){let n=e.createReader(),r=[];for(;;){let e=await new Promise(e=>{n.readEntries(e,()=>e([]))});if(e.length===0)break;for(let n of e){let e=`${t}/${n.name}`;if(n.isDirectory){r.push(...await Wb(n,e));continue}let i=await new Promise(e=>{n.file(e,()=>e(null))});i&&r.push({path:e,file:i})}}return r}function Gb(e){return Array.from(e??[]).flatMap(e=>{let t=e.webkitRelativePath;return t===``?[]:[{path:t,file:e}]})}function Kb(e){return e[0]?.path.split(`/`)[0]??``}async function qb(e){let t=[];for(let n of e)t.push({path:n.path,data:new Uint8Array(await n.file.arrayBuffer())});return t}function Jb(e){let t=new TextEncoder,n=[],r=[],i=0;for(let a of e){let e=t.encode(a.path),o=Qb(a.data),[s,c]=Xb(),l=new Uint8Array(30+e.length),u=new DataView(l.buffer);u.setUint32(0,67324752,!0),u.setUint16(4,20,!0),u.setUint16(6,2048,!0),u.setUint16(8,0,!0),u.setUint16(10,s,!0),u.setUint16(12,c,!0),u.setUint32(14,o,!0),u.setUint32(18,a.data.length,!0),u.setUint32(22,a.data.length,!0),u.setUint16(26,e.length,!0),u.setUint16(28,0,!0),l.set(e,30);let d=new Uint8Array(46+e.length),f=new DataView(d.buffer);f.setUint32(0,33639248,!0),f.setUint16(4,20,!0),f.setUint16(6,20,!0),f.setUint16(8,2048,!0),f.setUint16(10,0,!0),f.setUint16(12,s,!0),f.setUint16(14,c,!0),f.setUint32(16,o,!0),f.setUint32(20,a.data.length,!0),f.setUint32(24,a.data.length,!0),f.setUint16(28,e.length,!0),f.setUint16(30,0,!0),f.setUint16(32,0,!0),f.setUint16(34,0,!0),f.setUint16(36,0,!0),f.setUint32(38,0,!0),f.setUint32(42,i,!0),d.set(e,46),n.push(l,a.data),r.push(d),i+=l.length+a.data.length}let a=r.reduce((e,t)=>e+t.length,0),o=new Uint8Array(22),s=new DataView(o.buffer);return s.setUint32(0,101010256,!0),s.setUint16(4,0,!0),s.setUint16(6,0,!0),s.setUint16(8,e.length,!0),s.setUint16(10,e.length,!0),s.setUint32(12,a,!0),s.setUint32(16,i,!0),s.setUint16(20,0,!0),Yb([...n,...r,o])}function Yb(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Xb(){let e=new Date,t=Math.max(1980,e.getFullYear())-1980<<9|e.getMonth()+1<<5|e.getDate();return[e.getHours()<<11|e.getMinutes()<<5|e.getSeconds()>>1,t]}var Zb;function Qb(e){if(!Zb){Zb=new Uint32Array(256);for(let e=0;e<256;e+=1){let t=e;for(let e=0;e<8;e+=1)t=t&1?3988292384^t>>>1:t>>>1;Zb[e]=t>>>0}}let t=4294967295;for(let n of e)t=Zb[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}function $b(e){if(typeof e==`object`&&e&&`detail`in e){let t=e.detail;if(typeof t==`string`&&t.length>0)return t}return e instanceof Error?e.message:String(e)}var ex=`epoch-plugin.json`;function tx({client:e,onStaged:t}){let n=R(),[r,i]=v.useState({kind:`idle`}),a=v.useRef(0),[o,s]=v.useState(!1),c=v.useRef(null),l=v.useRef(null),u=v.useRef(!0);v.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let d=()=>{a.current=0,s(!1)},f=r=>{if(r.kind===`bad`)return i({kind:`error`,message:nx(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`archive`?new Uint8Array(await r.file.arrayBuffer()):Jb(await qb(r.files)),o=await e.stagePluginBytes(r.name,a);if(!u.current)return;if(!o.ok||o.path===null)return i({kind:`error`,message:o.detail??n(`web.ui.cap.plug_drop_failed`)});i({kind:`idle`}),t(o.path)}catch(e){u.current&&i({kind:`error`,message:$b(e)})}})()},p=r.kind===`busy`;return(0,L.jsxs)(`div`,{className:`plugdrop`,children:[(0,L.jsxs)(`div`,{className:`plugdrop__box`,"data-over":o?``:void 0,"data-busy":p?``:void 0,onDragEnter:e=>{e.preventDefault(),a.current+=1,s(!0)},onDragOver:e=>{e.preventDefault()},onDragLeave:()=>{--a.current,a.current<=0&&d()},onDrop:e=>{e.preventDefault(),d(),!p&&rx(e.dataTransfer).then(f)},children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),(0,L.jsx)(`p`,{className:`plugdrop__lede`,children:n(o?`web.ui.cap.plug_drop_over`:`web.ui.cap.plug_drop_hint`)}),(0,L.jsxs)(`div`,{className:`plugdrop__acts`,children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>c.current?.click(),children:n(`web.ui.cap.plug_drop_folder`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>l.current?.click(),children:n(`web.ui.cap.plug_drop_archive`)})]}),p&&(0,L.jsx)(`p`,{className:`plugdrop__busy`,children:n(`web.ui.cap.plug_drop_busy`)})]}),(0,L.jsx)(`input`,{ref:c,className:`plugdrop__file`,type:`file`,multiple:!0,webkitdirectory:``,directory:``,onChange:e=>{f(ix(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:pe.join(`,`),onChange:e=>{f(ix(e.target.files,`archive`)),e.target.value=``}}),r.kind===`error`&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r.message})]})]})}function nx(e,t){let n=t.name===``?`—`:t.name;return t.code===`one-only`?e(`web.ui.cap.plug_drop_one`):t.code===`unsupported`?e(`web.ui.cap.plug_drop_unsupported`):t.code===`empty`?e(`web.ui.cap.plug_drop_empty`,{name:n}):t.code===`no-manifest`?e(`web.ui.cap.plug_drop_no_manifest`,{name:n,file:ex}):e(`web.ui.cap.plug_drop_not_archive`,{name:n,suffixes:pe.join(` / `)})}async function rx(e){let{entries:t,files:n}=Ub(e);if(t.length===0||t.length>1)return{kind:`bad`,code:`one-only`,name:``};let r=t[0],i=n[0];if(!r)return i&&N(i.name)?{kind:`archive`,name:i.name,file:i}:{kind:`bad`,code:`unsupported`,name:i?.name??``};if(r.isFile)return i?N(i.name)?{kind:`archive`,name:i.name,file:i}:{kind:`bad`,code:`not-archive`,name:i.name}:{kind:`bad`,code:`one-only`,name:r.name};let a=await Wb(r,r.name);return ax(r.name,a)}function ix(e,t){let n=Array.from(e??[]);if(n.length===0)return{kind:`bad`,code:`one-only`,name:``};if(t===`archive`){let e=n[0];return e?N(e.name)?{kind:`archive`,name:e.name,file:e}:{kind:`bad`,code:`not-archive`,name:e.name}:{kind:`bad`,code:`one-only`,name:``}}let r=Gb(e);return ax(Kb(r),r)}function ax(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:ox(t.map(e=>e.path))?{kind:`folder`,name:`${e||`plugin`}.zip`,files:t}:{kind:`bad`,code:`no-manifest`,name:e}}function ox(e){if(e.includes(ex))return!0;let t=new Set(e.map(e=>e.split(`/`)[0]??``));if(t.size!==1)return!1;let[n]=[...t];return e.includes(`${n}/${ex}`)}function sx({client:e,onBack:t,onPreviewLocal:n}){let r=R();return(0,L.jsxs)(`div`,{className:`plugadd`,children:[(0,L.jsxs)(`div`,{className:`plugadd__head`,children:[(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:t,children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),r(`web.ui.cap.plug_add_back`)]}),(0,L.jsx)(`b`,{className:`plugadd__title`,children:r(`web.ui.cap.plug_add_title`)})]}),(0,L.jsx)(`div`,{className:`plugadd__pane`,children:(0,L.jsx)(tx,{client:e,onStaged:n})})]})}var cx=`none`;function lx(e,t){let n=[],r=new Map,i=(e,t)=>{for(let n of t){let t=r.get(n.id);t===void 0&&(t={id:n.id,label:n.label,children:[]},r.set(n.id,t),e.push(t)),i(t.children,n.children)}};for(let t of e)i(n,t.categories);let a=[...new Set(t.map(e=>e.category).filter(e=>e!==null))].filter(e=>!r.has(e)).sort((e,t)=>e.localeCompare(t));for(let e of a){let t={id:e,label:e,children:[]};r.set(e,t),n.push(t)}let o=(e,t)=>{let n=e.children.map(e=>o(e,t+1)),r=new Set([e.id]);for(let e of n)for(let t of e.ids)r.add(t);return{id:e.id,label:e.label,depth:t,children:n,ids:r}};return n.map(e=>o(e,0))}function ux(e){let t=new Map,n=e=>{for(let r of e)t.set(`c:${r.id}`,r.ids),n(r.children)};return n(e),t}function dx(e,t,n){if(t===`all`)return!0;if(t===`none`)return e===null;let r=n.get(t);return r===void 0||e!==null&&r.has(e)}function fx(e,t,n){return e===`all`?`all`:e===`none`?n?cx:`all`:t.has(e)?e:`all`}function px(e){let t=[],n=e=>{for(let r of e)t.push(r),n(r.children)};return n(e),t}function mx(e,t){return px(e).length+ +!!t>=2}function hx({client:e,onBack:t,options:n}){let r=R(),[i,a]=v.useState();return(0,L.jsxs)(`div`,{className:`plugadd`,children:[(0,L.jsxs)(`div`,{className:`plugadd__head`,children:[(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:()=>i===void 0?t():a(void 0),children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),r(i===void 0?`web.ui.cap.plug_add_back`:`web.ui.cap.plug_upload_reselect`)]}),(0,L.jsx)(`b`,{className:`plugadd__title`,children:r(`web.ui.cap.plug_upload_title`)})]}),i===void 0?(0,L.jsx)(gx,{client:e,onPick:a}):(0,L.jsx)(_x,{client:e,path:i,options:n,onDone:t})]})}function gx({client:e,onPick:t}){return(0,L.jsx)(`div`,{className:`plugadd__pane`,children:(0,L.jsx)(tx,{client:e,onStaged:t})})}function _x({client:e,path:t,options:n,onDone:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState(),[l,u]=v.useState(!1),[d,f]=v.useState(),[p,m]=v.useState({});return v.useEffect(()=>{let n=!0;return f(void 0),e.previewPluginUpload(t).then(e=>{n&&(o(e),m(e.prefill??{}))}).catch(e=>{n&&f(Tx(e))}),()=>{n=!1}},[e,t]),(0,L.jsxs)(`div`,{className:`plugadd__pane`,children:[(0,L.jsx)(`p`,{className:`plugupl__target`,children:(0,L.jsx)(`code`,{children:t})}),d!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:d})]}),s===void 0?a===void 0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)}):!a.ok||a.plan===null?(0,L.jsx)(`div`,{className:`plug__result`,children:(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:a.detail??i(`web.ui.cap.plug_upload_preview_failed`)})})}):(0,L.jsx)(vx,{plan:a.plan,busy:l,onConfirm:()=>{l||!a?.ok||a.token===null||(u(!0),f(void 0),e.uploadPlugin(t,a.token,p).then(e=>{c({ok:e.ok,detail:e.detail!==null&&e.detail.length>0?e.detail:i(e.ok?`web.ui.cap.plug_upload_done`:`web.ui.cap.plug_upload_failed`)})}).catch(e=>f(Tx(e))).finally(()=>u(!1)))},options:n,form:p,fromManifest:a.fromManifest??[],onField:(e,t)=>m(n=>({...n,[e]:t}))}):(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,...s.ok?{}:{"data-tone":`warn`},children:(0,L.jsx)(`p`,{children:s.detail})}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,onClick:r,children:i(`web.ui.cap.plug_back`)})]})]})}function vx({plan:e,busy:t,onConfirm:n,options:r,form:i,fromManifest:a,onField:o}){let s=R(),c=me.flatMap(e=>{let t=r[e];return t===null?[]:[{name:e,shape:t}]}),l=c.flatMap(({name:e,shape:t})=>t.required&&t.editable&&e!==`visibility`&&(i[e]??``)===``?[e]:[]);return(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`p`,{className:`plug__title`,children:s(`web.ui.cap.plug_upload_will`,{name:e.name,version:e.version})}),e.description&&(0,L.jsx)(`p`,{className:`cap__lede`,children:e.description}),(0,L.jsxs)(`dl`,{className:`plug__facts`,children:[e.author!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:s(`web.ui.cap.plug_author`)}),(0,L.jsx)(`dd`,{children:e.author})]}),(0,L.jsx)(`dt`,{children:s(`web.ui.cap.plug_upload_size`)}),(0,L.jsx)(`dd`,{children:wx(e.totalBytes)})]}),e.suspicious.length>0&&(0,L.jsxs)(`div`,{className:`note-block`,"data-tone":`warn`,children:[(0,L.jsx)(`p`,{children:(0,L.jsx)(`b`,{children:s(`web.ui.cap.plug_upload_secrets`,{count:e.suspicious.length})})}),(0,L.jsx)(`ul`,{className:`plugupl__secrets`,children:e.suspicious.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))}),(0,L.jsx)(`p`,{children:s(`web.ui.cap.plug_upload_secrets_why`)})]}),(0,L.jsx)(`p`,{className:`plug__brings`,children:s(`web.ui.cap.plug_upload_files`,{count:e.files.length})}),(0,L.jsx)(`ul`,{className:`plugupl__files`,children:e.files.map(e=>(0,L.jsxs)(`li`,{children:[(0,L.jsx)(`code`,{children:e.path}),(0,L.jsx)(`i`,{children:wx(e.bytes)})]},e.path))}),e.skippedLinks.length>0&&(0,L.jsx)(`p`,{className:`plugupl__skipped`,children:s(`web.ui.cap.plug_upload_skipped`,{count:e.skippedLinks.length,names:e.skippedLinks.join(s(`web.ui.cap.list_sep`))})}),c.length>0&&(0,L.jsx)(`div`,{className:`plugupl__form`,children:c.map(({name:e,shape:t})=>{let n=Cx(s,e,i,a);return(0,L.jsxs)(v.Fragment,{children:[(0,L.jsxs)(`span`,{className:`plugupl__label`,children:[s(yx[e]),t.required&&t.editable&&(0,L.jsx)(`b`,{className:`plugupl__req`,"aria-hidden":`true`,children:`*`}),n.length>0&&(0,L.jsx)(bt,{className:`plugupl__tip`,text:n.join(``),about:s(yx[e])})]}),t.editable?e===`visibility`?(0,L.jsx)(`span`,{className:`plugupl__radios`,children:[`private`,`public`].map(e=>(0,L.jsxs)(`label`,{className:`plugupl__radio`,children:[(0,L.jsx)(`input`,{type:`radio`,name:`plug-upload-visibility`,checked:(i.visibility??`private`)===e,onChange:()=>o(`visibility`,e)}),s(e===`public`?`web.ui.cap.plug_upload_vis_public`:`web.ui.cap.plug_upload_vis_private`)]},e))}):t.choices.length>0?(0,L.jsx)(Hb,{className:`plugupl__pick`,items:xx(t.choices,t.required?null:s(`web.ui.cap.plug_upload_pick_none`)),value:i[e]??``,onPick:t=>o(e,t),label:s(yx[e]),placeholder:s(`web.ui.cap.plug_upload_pick`),required:t.required}):e===`changelog`?(0,L.jsx)(`textarea`,{className:`input plugupl__changelog`,rows:4,value:i.changelog??``,required:t.required,placeholder:s(`web.ui.cap.plug_upload_changelog_placeholder`),onChange:e=>o(`changelog`,e.target.value),"aria-label":s(yx[e])}):(0,L.jsx)(`input`,{className:`input`,type:`text`,value:i[e]??``,required:t.required,placeholder:s(bx[e]),onChange:t=>o(e,t.target.value),"aria-label":s(yx[e])}):(0,L.jsx)(`span`,{className:`plugupl__fixed`,children:Sx(s,e,t.value)})]},e)})}),(0,L.jsxs)(`div`,{className:`plug__act`,children:[l.length>0&&(0,L.jsx)(`span`,{className:`plugupl__missing`,role:`status`,children:s(`web.ui.cap.plug_upload_required_left`,{fields:l.map(e=>s(yx[e])).join(s(`web.ui.cap.list_sep`))})}),(0,L.jsx)(`button`,{className:`btn btn--primary`,type:`button`,disabled:t||l.length>0,onClick:n,children:s(`web.ui.cap.plug_upload_confirm`)})]})]})}var yx={displayName:`web.ui.cap.plug_upload_f_display_name`,description:`web.ui.cap.plug_upload_f_description`,category:`web.ui.cap.plug_upload_f_category`,homepage:`web.ui.cap.plug_upload_f_homepage`,icon:`web.ui.cap.plug_upload_f_icon`,visibility:`web.ui.cap.plug_upload_visibility`,changelog:`web.ui.cap.plug_upload_changelog`},bx={displayName:`web.ui.cap.plug_upload_f_display_name_hint`,category:`web.ui.cap.plug_upload_f_category_hint`,description:`web.ui.cap.plug_upload_f_description_hint`,homepage:`web.ui.cap.plug_upload_f_homepage_hint`,icon:`web.ui.cap.plug_upload_f_icon_hint`,visibility:`web.ui.cap.plug_upload_visibility`,changelog:`web.ui.cap.plug_upload_changelog_placeholder`};function xx(e,t){let n=e=>({value:e.value,label:e.label,children:e.children.map(n)});return[...t===null?[]:[{value:``,label:t,children:[]}],...e.map(n)]}function Sx(e,t,n){return t===`visibility`?e(n===`public`?`web.ui.cap.plug_upload_vis_public`:`web.ui.cap.plug_upload_vis_private`):n}function Cx(e,t,n,r){let i=[];return t===`visibility`&&(n.visibility??`private`)===`public`&&i.push(e(`web.ui.cap.plug_upload_vis_public_why`)),r.includes(t)&&i.push(e(`web.ui.cap.plug_upload_from_manifest`)),i}function wx(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function Tx(e){if(typeof e==`object`&&e&&`detail`in e){let t=e.detail;if(typeof t==`string`&&t.length>0)return t}return e instanceof Error?e.message:String(e)}var Ex={market:`web.ui.cap.plug_tab_market`,installed:`web.ui.cap.plug_tab_installed`},Dx=[`market`,`installed`],Ox={active:`web.ui.cap.plug_state_active`,pending:`web.ui.cap.plug_state_pending`,disabled:`web.ui.cap.plug_state_disabled`,stale:`web.ui.cap.plug_state_stale`,off:`web.ui.cap.plug_state_off`},kx={listed:`web.ui.cap.plug_status_listed`,reviewing:`web.ui.cap.plug_status_reviewing`,rejected:`web.ui.cap.plug_status_rejected`,offline:`web.ui.cap.plug_status_offline`},Ax={off:0,stale:1,pending:2,disabled:3,active:4};function jx({client:e,query:t,lanExposed:n}){let r=R(),[i,a]=v.useState(),[o,s]=v.useState(),[c,l]=v.useState({kind:`list`}),[u,d]=v.useState(0),[f,p]=v.useState(()=>new Set),[m,h]=v.useState(!1),[g,_]=v.useState(),[y,b]=v.useState(`market`),[x,S]=v.useState(`all`),C=v.useId(),w=Rb(640);v.useEffect(()=>{let t=!0;return s(void 0),e.plugins().then(e=>{t&&a(e)}).catch(e=>{t&&s(Kx(e))}),()=>{t=!1}},[e,u]);let T=()=>{m||(h(!0),_(void 0),Promise.resolve().then(()=>e.refreshPlugins()).then(e=>{if(e.ok){e.plugins&&a(e.plugins),e.detail&&_({tone:`warn`,text:e.detail});return}_({tone:`error`,text:e.detail??r(`web.ui.cap.plug_refresh_failed`)})}).catch(e=>_({tone:`error`,text:Kx(e).detail})).finally(()=>h(!1)))},E=v.useRef(!1);if(v.useEffect(()=>{E.current||n||i===void 0||!i.refreshEnabled||(E.current=!0,T())},[i,n]),o)return(0,L.jsx)(Hx,{failure:o});if(!i)return(0,L.jsx)(`p`,{className:`cap__foot`,children:r(`web.ui.cap.loading`)});if(c.kind===`add`)return(0,L.jsx)(sx,{client:e,onBack:()=>l({kind:`list`}),onPreviewLocal:e=>l({kind:`preview`,mode:`local`,path:e})});if(c.kind===`upload`)return(0,L.jsx)(hx,{client:e,options:i.uploadOptions,onBack:()=>l({kind:`list`})});if(c.kind===`preview`)return(0,L.jsx)(Bx,{client:e,screen:c,onBack:()=>l({kind:`list`}),onDone:e=>{d(e=>e+1),p(t=>new Set(t).add(e))}});let D=i.installed.filter(e=>qx(t,e.name,e.source)).map(e=>({entry:e,state:Rx(e,i.pendingRestart,f.has(e.name))})).sort((e,t)=>Ax[e.state]-Ax[t.state]||e.entry.name.localeCompare(t.entry.name)),O=i.hits.filter(e=>qx(t,e.name,e.displayName??``,e.description,e.marketplace,e.author??``,...e.keywords)),ee=lx(i.marketplaces,i.hits),te=ux(ee),k=i.hits.some(e=>e.category===null),ne=fx(x,te,k),re=mx(ee,k),ie=O.filter(e=>dx(e.category,ne,te)),ae=ie.some(e=>e.status!==null||e.visibility!==null||e.downloads!==null);return(0,L.jsxs)(`div`,{className:`plug`,children:[(0,L.jsxs)(`div`,{className:`plug__top`,children:[(0,L.jsx)(Mx,{baseId:C,pane:y,onPick:b,counts:{market:ie.length,installed:D.length}}),!n&&(0,L.jsxs)(`div`,{className:`plug__acts`,children:[i.refreshEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__refresh`,type:`button`,disabled:m,onClick:T,children:[m?(0,L.jsx)(`span`,{className:`card__spin`,"aria-hidden":!0}):(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),r(m?`web.ui.cap.plug_refreshing`:`web.ui.cap.plug_refresh`)]}),i.uploadEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__upload`,type:`button`,onClick:()=>l({kind:`upload`}),children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),r(`web.ui.cap.plug_upload`)]}),(0,L.jsxs)(`button`,{className:`btn btn--primary plug__add`,type:`button`,onClick:()=>l({kind:`add`}),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),r(`web.ui.cap.plug_add`)]})]})]}),i.pendingRestart&&(0,L.jsx)(Fx,{}),g!==void 0&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":g.tone,role:`status`,children:(0,L.jsx)(`p`,{children:g.text})}),n&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:r(`web.ui.cap.plug_locked_lan`)})}),y===`installed`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${C}-panel`,role:`tabpanel`,"aria-labelledby":`${C}-installed`,children:D.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:r(`web.ui.cap.plug_installed_empty`)}):(0,L.jsx)(`ul`,{className:`cards cards--plug`,...n?{}:{"data-act":`true`},children:D.map(({entry:t,state:r},a)=>{let o=i.hits.find(e=>e.name===t.name&&e.updateAvailable)?.version??null;return(0,L.jsx)(Lx,{entry:t,state:r,hue:Ly(a),canWrite:!n,freshVersion:o,canUpdate:!t.linked&&(!i.refreshEnabled||o!==null),onUpdate:()=>l({kind:`preview`,mode:`update`,name:t.name}),onUninstalled:()=>d(e=>e+1),client:e},t.name)})})},`installed`),y===`market`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${C}-panel`,role:`tabpanel`,"aria-labelledby":`${C}-market`,children:(0,L.jsxs)(`div`,{className:`plug__browse`,...re?{"data-cats":`true`}:{},children:[re&&(0,L.jsx)(Px,{nodes:ee,current:ne,onPick:S,hasNone:k,narrow:w}),(0,L.jsx)(`div`,{className:`plug__grid`,children:ie.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:r(i.marketplaces.length===0?`web.ui.cap.plug_market_none_added`:`web.ui.cap.plug_market_empty`)}):(0,L.jsx)(`ul`,{className:`cards cards--plug`,...n?{}:{"data-act":`true`},children:ie.map((e,t)=>(0,L.jsx)(zx,{hit:e,canWrite:!n,hue:Ly(t),reserveCrown:ae,onInstall:()=>l({kind:`preview`,mode:`install`,ref:e.ref}),onUpdate:()=>l({kind:`preview`,mode:`update`,name:e.name})},e.ref))})})]})},`market`)]})}function Mx({baseId:e,pane:t,onPick:n,counts:r}){let i=R();return(0,L.jsx)(`div`,{className:`plug__tabs`,role:`tablist`,"aria-label":i(`web.ui.cap.plugins`),children:Dx.map(a=>(0,L.jsxs)(`button`,{id:`${e}-${a}`,className:`plug__tab`,type:`button`,role:`tab`,"aria-selected":t===a,"aria-controls":`${e}-panel`,onClick:()=>n(a),children:[i(Ex[a]),(0,L.jsx)(`span`,{className:`plug__tabn`,children:r[a]})]},a))})}function Nx(e,t,n){let r=e=>({value:`c:${e.id}`,label:e.label,children:e.children.map(r)});return[{value:`all`,label:t(`web.ui.cap.plug_cat_all`),children:[]},...e.map(r),...n?[{value:cx,label:t(`web.ui.cap.plug_cat_none`),children:[]}]:[]]}function Px({nodes:e,current:t,onPick:n,hasNone:r,narrow:i}){let a=R();if(i)return(0,L.jsxs)(`label`,{className:`plug__filter`,children:[(0,L.jsx)(`span`,{children:a(`web.ui.cap.plug_cat_label`)}),(0,L.jsx)(Hb,{items:Nx(e,a,r),value:t,onPick:n,label:a(`web.ui.cap.plug_cat_label`),placeholder:a(`web.ui.cap.plug_cat_all`)})]});let o=e=>(0,L.jsx)(`ul`,{className:`plug__cattree`,children:e.map(e=>(0,L.jsxs)(`li`,{children:[(0,L.jsx)(`button`,{className:`plug__cat`,type:`button`,style:{"--cat-depth":e.depth},...e.depth===0?{"data-top":`true`}:{},...t===`c:${e.id}`?{"aria-current":`true`}:{},onClick:()=>n(`c:${e.id}`),children:(0,L.jsx)(`span`,{className:`plug__catname`,children:e.label})}),e.children.length>0&&o(e.children)]},e.id))}),s=(e,r)=>(0,L.jsx)(`ul`,{className:`plug__cattree`,children:(0,L.jsx)(`li`,{children:(0,L.jsx)(`button`,{className:`plug__cat`,type:`button`,"data-lead":`true`,style:{"--cat-depth":0},...t===e?{"aria-current":`true`}:{},onClick:()=>n(e),children:(0,L.jsx)(`span`,{className:`plug__catname`,children:r})})})});return(0,L.jsxs)(`nav`,{className:`plug__cats`,"aria-label":a(`web.ui.cap.plug_cat_label`),children:[s(`all`,a(`web.ui.cap.plug_cat_all`)),o(e),r&&s(`none`,a(`web.ui.cap.plug_cat_none`))]})}function Fx(){let e=R();return(0,L.jsxs)(`div`,{className:`note-block plug__note plug__restart`,"data-tone":`warn`,role:`status`,children:[(0,L.jsxs)(`p`,{className:`plug__restart-head`,children:[(0,L.jsx)(z,{name:`triangle-alert`,size:`sm`}),(0,L.jsx)(`b`,{children:e(`web.ui.cap.plug_restart`)})]}),(0,L.jsx)(`p`,{children:e(`web.ui.cap.plug_restart_why`)})]})}function Ix({icon:e,hue:t}){return(0,L.jsxs)(`span`,{className:`plug__face`,"data-hue":t,children:[(0,L.jsx)(z,{name:`layers`}),e!==null&&(0,L.jsx)(`img`,{className:`plug__icon`,src:e,alt:``,onError:e=>{e.currentTarget.style.display=`none`}})]})}function Lx({entry:e,state:t,hue:n,canWrite:r,freshVersion:i,canUpdate:a,onUpdate:o,onUninstalled:s,client:c}){let l=R(),[u,d]=v.useState(!1),[f,p]=v.useState(!1),[m,h]=v.useState(),g=e.counts!==null||i!==null,_=e.linked||e.marketplace!==null;return(0,L.jsxs)(`li`,{className:`card card--plug`,"data-state":t,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(Ix,{icon:null,hue:n}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsxs)(`span`,{className:`card__nameline`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.displayName??e.name}),(0,L.jsxs)(`span`,{className:`card__badge`,children:[`@`,e.version]})]}),e.displayName!==null&&(0,L.jsx)(`span`,{className:`card__src plug__key`,children:e.name}),!u&&(0,L.jsxs)(`span`,{className:`card__src card__state`,"data-state":t,children:[(0,L.jsx)(`span`,{className:`card__statedot`,"aria-hidden":!0}),l(Ox[t])]})]})]}),u?(0,L.jsx)(`p`,{className:`card__desc plug__ask`,children:l(`web.ui.cap.plug_uninstall_ask`,{name:e.name})}):g&&(0,L.jsxs)(`p`,{className:`card__meta`,children:[e.counts&&(0,L.jsx)(`span`,{className:`card__stat`,children:Wx(l,e.counts)}),i!==null&&(0,L.jsx)(`span`,{className:`plug__fresh`,children:l(`web.ui.cap.plug_has_update`,{version:i})})]}),m!==void 0&&(0,L.jsx)(`p`,{className:`card__desc plug__err`,children:m}),(_||r)&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[_&&(0,L.jsxs)(`p`,{className:`plug__by`,children:[e.linked&&(0,L.jsx)(`span`,{className:`card__stat`,children:l(`web.ui.cap.plug_linked`)}),e.marketplace!==null&&(0,L.jsx)(`span`,{className:`card__stat`,children:e.marketplace})]}),r&&(u?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm card__act`,type:`button`,disabled:f,onClick:()=>{f||(p(!0),h(void 0),c.uninstallPlugin(e.name).then(e=>{if(e.ok)return s();h(e.detail??``)}).catch(e=>h(Kx(e).detail)).finally(()=>p(!1)))},children:l(`web.ui.cap.plug_uninstall_yes`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__act`,type:`button`,onClick:()=>d(!1),children:l(`web.ui.cap.plug_cancel`)})]}):(0,L.jsxs)(L.Fragment,{children:[a&&(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,onClick:o,children:l(`web.ui.cap.plug_update`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm card__act`,type:`button`,onClick:()=>d(!0),children:l(`web.ui.cap.plug_uninstall`)})]}))]})]})}function Rx(e,t,n){return e.active?`active`:e.enabled?n?`pending`:t?`stale`:`off`:`disabled`}function zx({hit:e,hue:t,reserveCrown:n,canWrite:r,onInstall:i,onUpdate:a}){let o=R(),s=Gx(o,e),c=s!==``||!e.installable||e.updateAvailable,l=e.author!==null||e.category!==null;return(0,L.jsxs)(`li`,{className:`card card--plug card--hit`,...e.status===null?{}:{"data-status":e.status},children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(Ix,{icon:e.icon,hue:t}),(0,L.jsxs)(`span`,{className:`card__id`,children:[(0,L.jsxs)(`span`,{className:`card__nameline`,children:[(0,L.jsx)(`span`,{className:`card__name`,children:e.displayName??e.name}),e.version!==null&&(0,L.jsxs)(`span`,{className:`card__badge`,children:[`@`,e.version]})]}),(0,L.jsxs)(`span`,{className:`card__src plug__key`,children:[e.marketplace,`/`,e.name]})]})]}),(n||e.status!==null||e.visibility!==null||e.downloads!==null)&&(0,L.jsxs)(`p`,{className:`plug__crown`,children:[e.status!==null&&(0,L.jsx)(`span`,{className:`plug__tag plug__status`,"data-status":e.status,children:o(kx[e.status])}),e.visibility!==null&&(0,L.jsx)(`span`,{className:`plug__tag`,"data-vis":e.visibility,children:o(e.visibility===`public`?`web.ui.cap.plug_vis_public`:`web.ui.cap.plug_vis_private`)}),e.downloads!==null&&(0,L.jsxs)(`span`,{className:`plug__dl`,children:[(0,L.jsx)(z,{name:`arrow-down`,size:`sm`}),e.downloads]})]}),(0,L.jsx)(`p`,{className:`card__desc`,children:e.description||o(`web.ui.cap.plug_no_desc`)}),c&&(0,L.jsxs)(`p`,{className:`card__meta`,children:[s!==``&&(0,L.jsx)(`span`,{className:`card__stat`,children:s}),!e.installable&&(0,L.jsx)(`b`,{className:`plug__warn`,children:o(e.sourceType===null?`web.ui.cap.plug_bad_source`:`web.ui.cap.plug_remote_off`)}),e.updateAvailable&&(0,L.jsx)(`span`,{className:`plug__fresh`,children:o(`web.ui.cap.plug_has_update`,{version:e.version??``})})]}),(l||r)&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[l&&(0,L.jsxs)(`p`,{className:`plug__by`,children:[e.author!==null&&(0,L.jsxs)(`span`,{className:`card__stat plug__author`,title:o(`web.ui.cap.plug_author`),children:[(0,L.jsx)(z,{name:`user-round`,size:`sm`}),e.author]}),e.category!==null&&(0,L.jsx)(`span`,{className:`card__stat`,children:e.category})]}),r&&(e.installed?e.updateAvailable?(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,onClick:a,children:o(`web.ui.cap.plug_update`)}):(0,L.jsx)(`span`,{className:`plug__tag`,children:o(`web.ui.cap.plug_already`)}):(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,disabled:!e.installable,onClick:i,children:o(`web.ui.cap.plug_install`)}))]})]})}function Bx({client:e,screen:t,onBack:n,onDone:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState(),[l,u]=v.useState(!1),[d,f]=v.useState(),p=t.mode===`install`?t.ref:t.mode===`local`?t.path:t.name;return v.useEffect(()=>{let n=!0;return f(void 0),(t.mode===`install`?e.previewPluginInstall(t.ref):t.mode===`local`?e.previewLocalPluginInstall(t.path):e.previewPluginUpdate(t.name)).then(e=>{n&&o(e)}).catch(e=>{n&&f(Kx(e).detail)}),()=>{n=!1}},[e,t.mode,p]),(0,L.jsxs)(`div`,{className:`plug__prev`,children:[(0,L.jsxs)(`div`,{className:`plug__prev-head`,children:[(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:n,children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),i(`web.ui.cap.plug_back`)]}),(0,L.jsx)(`b`,{className:`plugadd__title`,children:p})]}),d!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:d})]}),s===void 0?a===void 0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)}):(0,L.jsx)(Vx,{seen:a,mode:t.mode===`update`?`update`:`install`,busy:l,onConfirm:()=>{if(l||!a?.ok||a.token===null)return;u(!0),f(void 0);let n=a.token;(t.mode===`install`?e.installPlugin(t.ref,n):t.mode===`local`?e.installLocalPlugin(t.path,n):e.updatePlugin(t.name,n)).then(e=>{c({ok:e.ok,detail:e.detail??i(t.mode===`update`?`web.ui.cap.plug_done_update`:`web.ui.cap.plug_done`,{name:e.entry?.name??p,version:e.entry?.version??``})}),e.ok&&r(e.entry?.name??(t.mode===`update`?t.name:``))}).catch(e=>f(Kx(e).detail)).finally(()=>u(!1))}}):(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,...s.ok?{}:{"data-tone":`warn`},children:(0,L.jsx)(`p`,{children:s.detail})}),s.ok&&(0,L.jsx)(Fx,{}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,onClick:n,children:i(`web.ui.cap.plug_back`)})]})]})}function Vx({seen:e,mode:t,busy:n,onConfirm:r}){let i=R();if(!e.ok||e.preview===null)return(0,L.jsx)(`div`,{className:`plug__result`,children:(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.detail??i(`web.ui.cap.plug_preview_failed`)})})});let a=e.preview,o=a.commands.length===0&&a.roles.length===0&&a.skills.length===0&&a.hooks.length===0&&a.mcpServers.length===0&&a.denyRules===0;return(0,L.jsxs)(`div`,{className:`plug__result`,children:[(0,L.jsx)(`p`,{className:`plug__title`,children:i(t===`install`?`web.ui.cap.plug_will_install`:`web.ui.cap.plug_will_update`,{name:a.name,version:a.version})}),a.description&&(0,L.jsx)(`p`,{className:`cap__lede`,children:a.description}),(0,L.jsxs)(`dl`,{className:`plug__facts`,children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_source`)}),(0,L.jsxs)(`dd`,{children:[(0,L.jsx)(`code`,{children:a.source}),` `,(0,L.jsxs)(`i`,{children:[`(`,a.sourceType,`)`]})]}),a.checksum!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_checksum`)}),(0,L.jsx)(`dd`,{children:(0,L.jsx)(`code`,{children:a.checksum})})]}),a.author!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_author`)}),(0,L.jsx)(`dd`,{children:a.author})]}),a.homepage!==null&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:i(`web.ui.cap.plug_homepage`)}),(0,L.jsx)(`dd`,{children:a.homepage})]})]}),(0,L.jsx)(`p`,{className:`plug__brings`,children:i(`web.ui.cap.plug_brings`)}),(0,L.jsxs)(`ul`,{className:`plug__inv`,children:[o&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_brings_nothing`)}),a.commands.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_commands`,{count:a.commands.length,names:Ux(i,a.commands)})}),a.roles.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_roles`,{count:a.roles.length,names:Ux(i,a.roles)})}),a.skills.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_skills`,{count:a.skills.length,names:Ux(i,a.skills)})}),a.hooks.length>0&&(0,L.jsx)(`li`,{className:`plug__danger`,children:i(`web.ui.cap.plug_inv_hooks`,{count:a.hooks.reduce((e,t)=>e+t.count,0),tally:Ux(i,a.hooks.map(e=>`${e.type} × ${e.count}`))})}),a.mcpServers.length>0&&(0,L.jsx)(`li`,{className:`plug__danger`,children:i(`web.ui.cap.plug_inv_mcp`,{count:a.mcpServers.length,names:Ux(i,a.mcpServers)})}),a.denyRules>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_deny`,{count:a.denyRules})}),a.ignoredBuckets.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_ignored`,{buckets:Ux(i,a.ignoredBuckets)})}),a.hasJsTools&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_js`)})]}),a.conflict!==null&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.cap.plug_conflict`,{name:a.conflict.name,version:a.conflict.version})})}),(0,L.jsxs)(`div`,{className:`plug__act`,children:[(0,L.jsx)(`p`,{className:`plug__pending-hint`,children:i(`web.ui.cap.plug_pending_hint`)}),(0,L.jsx)(`button`,{className:`btn btn--primary`,type:`button`,disabled:n||a.conflict!==null,onClick:r,children:i(t===`install`?`web.ui.cap.plug_confirm`:`web.ui.cap.plug_confirm_update`)})]})]})}function Hx({failure:e}){let t=R();return e.code===`no-plugin-control`?(0,L.jsx)(`div`,{className:`plug`,children:(0,L.jsxs)(`div`,{className:`note-block`,children:[(0,L.jsx)(`p`,{children:(0,L.jsx)(`b`,{children:t(`web.ui.cap.plug_no_path`)})}),(0,L.jsx)(`p`,{children:e.detail})]})}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:e.detail})]})}function Ux(e,t){return t.join(e(`web.ui.cap.list_sep`))}function Wx(e,t){let n=[],r=(t,r)=>{t>0&&n.push(e(r,{count:t}))};return r(t.commands,`web.ui.cap.plug_n_commands`),r(t.roles,`web.ui.cap.plug_n_roles`),r(t.skills,`web.ui.cap.plug_n_skills`),r(t.hooks,`web.ui.cap.plug_n_hooks`),r(t.denyRules,`web.ui.cap.plug_n_deny`),r(t.mcpServers,`web.ui.cap.plug_n_mcp`),n.length===0?e(`web.ui.cap.plug_brings_nothing`):n.join(` · `)}function Gx(e,t){return t.likes===null?``:e(`web.ui.cap.plug_likes`,{count:t.likes})}function Kx(e){let t=e,n=typeof t?.code==`string`?t.code:``,r=typeof t?.detail==`string`&&t.detail.length>0?t.detail:``;return r?{code:n,detail:r}:{code:n,detail:e instanceof Error?e.message:String(e)}}function qx(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function Jx(e){let t=R(),[n,r]=v.useState({kind:`idle`}),{client:i,sessionId:a,root:o,want:s,available:c,onRecheck:l}=e;return!c||!i||a===void 0?(0,L.jsx)(`div`,{className:`locked__act`,children:(0,L.jsx)(ob,{cmd:`epoch trust add ${o}${s===`exec`?` --exec`:``}`})}):(0,L.jsx)(`div`,{className:`locked__act`,children:n.kind===`asked`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`locked__why`,children:t(`web.ui.trust.asked`)}),l&&(0,L.jsx)(`button`,{type:`button`,className:`btn`,onClick:l,children:t(`web.ui.trust.recheck`)})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>{r({kind:`asking`}),i.requestTrust(a,o,s).then(()=>r({kind:`asked`})).catch(e=>{r({kind:`failed`,message:e instanceof Error?e.message:t(`web.ui.trust.ask_failed`)})})},disabled:n.kind===`asking`,children:t(s===`exec`?`web.ui.trust.ask_exec`:`web.ui.trust.ask_read`)}),n.kind===`failed`&&(0,L.jsx)(`p`,{className:`locked__why`,children:n.message})]})})}function Yx({inventory:e,tier:t}){let n=R(),r=[];return t===`read`?(e.instructionFiles.length>0&&r.push(n(`web.ui.trust.n_instructions`,{n:e.instructionFiles.length})),e.skills>0&&r.push(n(`web.ui.trust.n_skills`,{n:e.skills})),e.roles>0&&r.push(n(`web.ui.trust.n_roles`,{n:e.roles})),e.commands>0&&r.push(n(`web.ui.trust.n_commands`,{n:e.commands}))):(e.hookFiles.length>0&&r.push(n(`web.ui.trust.n_hooks`,{files:e.hookFiles.join(`, `)})),e.policies>0&&r.push(n(`web.ui.trust.n_policies`,{n:e.policies})),e.settingsFiles.length>0&&r.push(n(`web.ui.trust.n_settings`,{files:e.settingsFiles.join(`, `)}))),r.length===0?null:(0,L.jsx)(`ul`,{className:`locked__list`,children:r.map(e=>(0,L.jsx)(`li`,{children:e},e))})}function Xx({client:e,onStaged:t}){let n=R(),[r,i]=v.useState({kind:`idle`}),a=v.useRef(0),[o,s]=v.useState(!1),c=v.useRef(null),l=v.useRef(null),u=v.useRef(!0);v.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let d=()=>{a.current=0,s(!1)},f=r=>{if(r.kind===`bad`)return i({kind:`error`,message:Zx(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`file`?new Uint8Array(await r.file.arrayBuffer()):Jb(await qb(r.files)),o=await e.stageSkillBytes(r.name,a);if(!u.current)return;if(!o.ok||o.path===null)return i({kind:`error`,message:o.detail??n(`web.ui.cap.skill_drop_failed`)});i({kind:`idle`}),t(o.path)}catch(e){u.current&&i({kind:`error`,message:$b(e)})}})()},p=r.kind===`busy`;return(0,L.jsxs)(`div`,{className:`plugdrop`,children:[(0,L.jsxs)(`div`,{className:`plugdrop__box`,"data-over":o?``:void 0,"data-busy":p?``:void 0,onDragEnter:e=>{e.preventDefault(),a.current+=1,s(!0)},onDragOver:e=>{e.preventDefault()},onDragLeave:()=>{--a.current,a.current<=0&&d()},onDrop:e=>{e.preventDefault(),d(),!p&&Qx(e.dataTransfer).then(f)},children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),(0,L.jsx)(`p`,{className:`plugdrop__lede`,children:n(o?`web.ui.cap.skill_drop_over`:`web.ui.cap.skill_drop_hint`)}),(0,L.jsxs)(`div`,{className:`plugdrop__acts`,children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>c.current?.click(),children:n(`web.ui.cap.skill_drop_folder`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:()=>l.current?.click(),children:n(`web.ui.cap.skill_drop_file`)})]}),p&&(0,L.jsx)(`p`,{className:`plugdrop__busy`,children:n(`web.ui.cap.skill_drop_busy`)})]}),(0,L.jsx)(`input`,{ref:c,className:`plugdrop__file`,type:`file`,multiple:!0,webkitdirectory:``,directory:``,onChange:e=>{f($x(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:de.join(`,`),onChange:e=>{f($x(e.target.files,`file`)),e.target.value=``}}),r.kind===`error`&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r.message})]})]})}function Zx(e,t){let n=t.name===``?`—`:t.name;return t.code===`one-only`?e(`web.ui.cap.skill_drop_one`):t.code===`unreadable`?e(`web.ui.cap.skill_drop_unreadable`):t.code===`empty`?e(`web.ui.cap.skill_drop_empty`,{name:n}):e(`web.ui.cap.skill_drop_not_supported`,{name:n,suffixes:de.join(` / `)})}async function Qx(e){let{entries:t,files:n}=Ub(e);if(t.length===0||t.length>1)return{kind:`bad`,code:`one-only`,name:``};let r=t[0],i=n[0];if(!r)return i&&fe(i.name)?{kind:`file`,name:i.name,file:i}:{kind:`bad`,code:`unreadable`,name:i?.name??``};if(r.isFile)return i?fe(i.name)?{kind:`file`,name:i.name,file:i}:{kind:`bad`,code:`not-supported`,name:i.name}:{kind:`bad`,code:`one-only`,name:r.name};let a=await Wb(r,r.name);return eS(r.name,a)}function $x(e,t){let n=Array.from(e??[]);if(n.length===0)return{kind:`bad`,code:`one-only`,name:``};if(t===`file`){let e=n[0];return e?fe(e.name)?{kind:`file`,name:e.name,file:e}:{kind:`bad`,code:`not-supported`,name:e.name}:{kind:`bad`,code:`one-only`,name:``}}let r=Gb(e);return eS(Kb(r),r)}function eS(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:{kind:`folder`,name:`${e||`skills`}.zip`,files:t}}var tS={markdown:`web.ui.cap.import_form_markdown`,"skill-dir":`web.ui.cap.import_form_skill-dir`,tree:`web.ui.cap.import_form_tree`,archive:`web.ui.cap.import_form_archive`};function nS({client:e,onBack:t,onImported:n,nativeDirPicker:r=!1,lanExposed:i=!1}){let a=R(),[o,s]=v.useState(``),[c,l]=v.useState(),[u,d]=v.useState(),[f,p]=v.useState(!1),[m,h]=v.useState(),[g,_]=v.useState(!1),y=Kt(e,g),b=$t(e,r),x=t=>{let n=(t??o).trim();f||n.length===0||(p(!0),d(void 0),h(void 0),e.previewSkillImport(n).then(l).catch(e=>h(cS(e))).finally(()=>p(!1)))};return(0,L.jsxs)(`div`,{className:`skimport`,children:[(0,L.jsxs)(`div`,{className:`skimport__head`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm skimport__back`,type:`button`,onClick:t,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),a(`web.ui.cap.skill_back`)]}),(0,L.jsx)(`b`,{className:`skimport__title`,children:a(`web.ui.cap.import_title`)})]}),(0,L.jsx)(`p`,{className:`cap__lede`,children:a(`web.ui.cap.import_lede`)}),(0,L.jsxs)(`p`,{className:`note`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-help`,size:`sm`})}),(0,L.jsx)(`span`,{children:a(i?`web.ui.cap.import_hint_lan`:`web.ui.cap.import_hint_local`)})]}),(0,L.jsxs)(`form`,{className:`skimport__form`,onSubmit:e=>{e.preventDefault(),x()},children:[(0,L.jsx)(`input`,{className:`input input--mono skimport__path`,type:`text`,value:o,spellCheck:!1,placeholder:a(`web.ui.cap.import_placeholder`),onChange:e=>s(e.target.value),"aria-label":a(`web.ui.cap.import_path_label`)}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`submit`,disabled:f||o.trim().length===0,children:a(`web.ui.cap.import_look`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm skimport__pick`,type:`button`,disabled:b.busy,onClick:()=>{if(g)return _(!1);if(!b.available)return _(!0);b.run().then(e=>{if(e.kind===`picked`)return s(e.path);e.kind!==`canceled`&&(h(e.message),_(!0))})},children:a(g?`web.ui.cap.import_browse_off`:`web.ui.cap.import_browse`)})]}),g&&(0,L.jsx)(rS,{browser:y,onPick:s}),!i&&(0,L.jsx)(Xx,{client:e,onStaged:e=>x(e)}),m!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:m})]}),u===void 0?c!==void 0&&(0,L.jsx)(iS,{preview:c,busy:f,onConfirm:()=>{f||!c?.ok||(p(!0),h(void 0),e.importSkills(c.source,c.token).then(e=>{d(e),e.imported.length>0&&n()}).catch(e=>h(cS(e))).finally(()=>p(!1)))}}):(0,L.jsx)(oS,{done:u,onAgain:()=>d(void 0)})]})}function rS({browser:e,onPick:t}){let n=R(),{view:r,go:i,showHidden:a,setShowHidden:o}=e;return(0,L.jsxs)(`div`,{className:`skimport__browse`,children:[(0,L.jsxs)(`div`,{className:`skimport__crumb`,children:[(0,L.jsx)(`span`,{title:r.state===`ready`?r.path??``:``,children:r.state===`ready`?r.path??n(`web.ui.dirpick.anchors`):``}),r.state===`ready`&&r.path!==null&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>t(r.path??``),children:n(`web.ui.cap.import_pick_here`)})]}),r.state===`ready`&&r.path!==null&&(0,L.jsx)(Wt,{on:a,hidden:r.hidden,onToggle:o,className:`skimport__hidden`}),r.state===`loading`&&(0,L.jsx)(`p`,{className:`cap__foot`,children:n(`web.ui.dirpick.loading`)}),r.state===`error`&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r.message})]}),r.state===`ready`&&(0,L.jsxs)(`ul`,{className:`skimport__dirs`,children:[r.parent!==null&&(0,L.jsx)(`li`,{children:(0,L.jsx)(`button`,{className:`skimport__dir`,type:`button`,onClick:()=>i(r.parent??void 0),children:n(`web.ui.dirpick.up`)})}),r.entries.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`button`,{className:`skimport__dir`,type:`button`,disabled:!e.readable,title:e.path,onClick:()=>i(e.path),children:e.name})},e.path)),r.omitted>0&&(0,L.jsx)(`li`,{className:`skimport__omitted`,children:n(`web.ui.dirpick.omitted`,{count:r.omitted})})]})]})}function iS({preview:e,busy:t,onConfirm:n}){let r=R();if(!e.ok)return(0,L.jsxs)(`div`,{className:`skimport__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.detail??r(`web.ui.cap.import_failed`)})}),(0,L.jsx)(sS,{issues:e.issues,title:r(`web.ui.cap.import_issues`)})]});let i=e.skills.filter(e=>e.conflict?.verdict!==`refuse`);return(0,L.jsxs)(`div`,{className:`skimport__result`,children:[(0,L.jsx)(`p`,{className:`skimport__count`,children:r(`web.ui.cap.import_count`,{count:i.length,form:r(tS[e.form??`tree`])})}),(0,L.jsx)(`ul`,{className:`slots`,children:e.skills.map(e=>(0,L.jsx)(aS,{skill:e},`${e.category}/${e.name}`))}),(0,L.jsx)(sS,{issues:e.issues,title:r(`web.ui.cap.import_issues`)}),(0,L.jsx)(`div`,{className:`skimport__act`,children:(0,L.jsx)(`button`,{className:`btn btn--primary btn--sm`,type:`button`,disabled:t||i.length===0,onClick:n,children:r(`web.ui.cap.import_confirm`,{count:i.length})})})]})}function aS({skill:e}){let t=R(),n=e.conflict;return(0,L.jsxs)(`li`,{className:`slot`,"data-conflict":n?.verdict??void 0,children:[(0,L.jsxs)(`span`,{className:`slot__path`,children:[(0,L.jsxs)(`i`,{children:[e.category,`/`]}),(0,L.jsx)(`b`,{children:e.name})]}),(0,L.jsxs)(`span`,{className:`slot__desc`,children:[e.description||t(`web.ui.cap.import_no_desc`),n&&(0,L.jsx)(`b`,{className:`skimport__warn`,children:t(n.verdict===`refuse`?`web.ui.cap.import_conflict_refuse`:`web.ui.cap.import_conflict_shadowed`)})]}),(0,L.jsx)(`span`,{className:`slot__stat`,children:t(`web.ui.cap.import_files`,{files:e.files,bytes:e.bytes})})]})}function oS({done:e,onAgain:t}){let n=R();return(0,L.jsxs)(`div`,{className:`skimport__result`,children:[(0,L.jsx)(`div`,{className:`note-block`,...e.ok?{}:{"data-tone":`warn`},children:(0,L.jsx)(`p`,{children:e.detail??n(`web.ui.cap.import_done`,{count:e.imported.length,skipped:e.skipped.length})})}),e.imported.length>0&&(0,L.jsx)(`ul`,{className:`skimport__names`,children:e.imported.map(e=>(0,L.jsx)(`li`,{children:e},e))}),(0,L.jsx)(sS,{issues:e.skipped,title:n(`web.ui.cap.import_skipped`)}),(0,L.jsx)(`div`,{className:`skimport__act`,children:(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:t,children:n(`web.ui.cap.import_again`)})})]})}function sS({issues:e,title:t}){return e.length===0?null:(0,L.jsxs)(`div`,{className:`skimport__issues`,children:[(0,L.jsx)(`p`,{className:`skimport__issues-head`,children:t}),(0,L.jsx)(`ul`,{children:e.map((e,t)=>(0,L.jsxs)(`li`,{children:[(0,L.jsx)(`code`,{children:e.path}),(0,L.jsx)(`span`,{children:e.message})]},`${e.path}-${t}`))})]})}function cS(e){let t=e?.detail;return typeof t==`string`&&t.length>0?t:e instanceof Error?e.message:String(e)}var lS=[{scope:`user`,title:`web.ui.cap.g_user`,note:`web.ui.cap.g_user_skills`},{scope:`plugin`,title:`web.ui.cap.g_plugin`,note:`web.ui.cap.g_plugin_skills`},{scope:`host`,title:`web.ui.cap.g_host`,note:`web.ui.cap.g_host_skills`},{scope:`project`,title:`web.ui.cap.g_project`,note:`web.ui.cap.g_project_skills`}];function uS({skills:e,project:t,client:n,sessionId:r,onWrote:i,nativeDirPicker:a,lanExposed:o}){let s=R(),[c,l]=v.useState(),[u,d]=v.useState(!1),[f,p]=v.useState(),m=n!==void 0&&r!==void 0,h=n!==void 0&&i!==void 0,g=e.filter(e=>e.residency===`capped`).length,_=e.filter(e=>e.residency===`role`).length;return c!==void 0&&n&&r?(0,L.jsx)(fS,{client:n,sessionId:r,name:c,onBack:()=>l(void 0)}):u&&n&&i?(0,L.jsx)(nS,{client:n,onBack:()=>d(!1),onImported:i,...o===void 0?{}:{lanExposed:o},...a===void 0?{}:{nativeDirPicker:a}}):(0,L.jsxs)(L.Fragment,{children:[g>0&&(0,L.jsxs)(`p`,{className:`note`,"data-testid":`skills-capped-note`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`info`,size:`sm`})}),(0,L.jsx)(`span`,{children:s(`web.ui.cap.skills_capped_note`,{count:g})})]}),_>0&&(0,L.jsxs)(`p`,{className:`note`,"data-testid":`skills-role-note`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`info`,size:`sm`})}),(0,L.jsx)(`span`,{children:s(`web.ui.cap.skills_role_note`,{count:_})})]}),h&&(0,L.jsx)(`div`,{className:`skimport__entry`,children:(0,L.jsxs)(`button`,{className:`btn btn--sm`,type:`button`,onClick:()=>d(!0),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),s(`web.ui.cap.import_entry`)]})}),f&&(0,L.jsxs)(`div`,{className:`note-block skills__removed`,"data-testid":`skill-removed-note`,children:[(0,L.jsx)(`p`,{children:s(`web.ui.cap.skill_removed`,{name:f.name})}),(0,L.jsx)(`p`,{children:(0,L.jsx)(`code`,{children:f.path})})]}),lS.map(a=>{let o=e.filter(e=>e.scope===a.scope),c=a.scope===`project`&&t.root!==null&&!t.trusted;return o.length===0&&!c?null:(0,L.jsx)(sb,{title:s(a.title),note:s(a.note),...a.scope===`user`?{tip:s(`web.ui.cap.no_toggle`)}:{},trust:a.scope===`project`&&t.root!==null?t:null,children:c?(0,L.jsx)(pS,{root:t.root??``,project:t,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}}):(0,L.jsx)(`ul`,{className:`slots`,...m||h&&a.scope===`user`?{"data-act":``}:{},children:o.map(e=>(0,L.jsx)(dS,{skill:e,...m?{onView:()=>l(e.name)}:{},...h&&a.scope===`user`&&n&&i?{remove:{client:n,onRemoved:t=>{p({name:e.name,path:t}),i()}}}:{}},`${e.category}/${e.name}`))})},a.scope)})]})}function dS({skill:e,onView:t,remove:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(!1),[c,l]=v.useState();return(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsxs)(`span`,{className:`slot__path`,children:[(0,L.jsxs)(`i`,{children:[e.category,`/`]}),(0,L.jsx)(`b`,{children:e.name})]}),(0,L.jsxs)(`span`,{className:`slot__desc`,children:[i?(0,L.jsx)(`b`,{className:`skill__ask`,children:r(`web.ui.cap.skill_remove_ask`,{name:e.name})}):e.description,c!==void 0&&(0,L.jsx)(`b`,{className:`skill__err`,children:c})]}),(0,L.jsx)(`span`,{className:`slot__stat`,"data-residency":e.residency,children:e.residency===`indexed`?r(`web.ui.cap.skill_tokens`,{tokens:e.tokens}):r(`web.ui.cap.skill_unindexed`)}),(t||n)&&(0,L.jsx)(`span`,{className:`slot__act`,children:i?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:o,onClick:()=>{!n||o||(s(!0),l(void 0),n.client.removeSkill(e.name).then(e=>{if(e.ok)return n.onRemoved(e.path??``);l(e.detail??``),a(!1)}).catch(e=>{l(e instanceof Error?e.message:String(e)),a(!1)}).finally(()=>s(!1)))},children:r(`web.ui.cap.skill_remove_yes`)}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>a(!1),children:r(`web.ui.cap.skill_cancel`)})]}):(0,L.jsxs)(L.Fragment,{children:[t&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:t,children:r(`web.ui.cap.skill_view`)}),n&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>a(!0),children:r(`web.ui.cap.skill_remove`)})]})})]})}function fS({client:e,sessionId:t,name:n,onBack:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState();return v.useEffect(()=>{let r=!0;return o(void 0),c(void 0),e.skillBody(t,n).then(e=>{r&&o({text:e.body,truncated:e.truncated,bytes:e.bytes})}).catch(e=>{r&&c(e instanceof Error?e.message:String(e))}),()=>{r=!1}},[e,t,n]),(0,L.jsxs)(`div`,{className:`skillbody`,children:[(0,L.jsxs)(`div`,{className:`skillbody__head`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:r,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),i(`web.ui.cap.skill_back`)]}),(0,L.jsx)(`b`,{className:`skillbody__name`,children:n})]}),(0,L.jsx)(`p`,{className:`skillbody__note`,children:i(`web.ui.cap.skill_view_no_count`)}),s===void 0?a===void 0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)}):(0,L.jsxs)(L.Fragment,{children:[a.truncated&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.cap.skill_truncated`,{bytes:a.bytes})})}),(0,L.jsx)(w_,{text:a.text}),(0,L.jsx)(`p`,{className:`skillbody__size`,children:i(`web.ui.cap.skill_bytes`,{bytes:a.bytes})})]}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:s})]})]})}function pS({root:e,project:t,client:n,sessionId:r,onRecheck:i}){let a=R();return(0,L.jsxs)(`div`,{className:`locked`,children:[(0,L.jsx)(`p`,{className:`locked__line`,children:a(`web.ui.cap.locked_line`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:a(`web.ui.cap.locked_why`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:a(`web.ui.cap.locked_gate`)}),(0,L.jsx)(Yx,{inventory:t.inventory,tier:`read`}),(0,L.jsx)(Jx,{root:e,want:`read`,available:t.trustRequest,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}})]})}var mS=[{id:`experts`,icon:`user-round`,title:`web.ui.cap.experts`,tip:`web.ui.cap.experts_lede`},{id:`skills`,icon:`sparkles`,title:`web.ui.cap.skills`,tip:`web.ui.cap.skills_lede`},{id:`connectors`,icon:`blocks`,title:`web.ui.cap.connectors`,tip:`web.ui.cap.connectors_lede`},{id:`plugins`,icon:`layers`,title:`web.ui.cap.plugins`,tip:`web.ui.cap.plug_lede`}];function hS(e){return mS.find(t=>t.id===e)?.title??``}function gS(e){return mS.find(t=>t.id===e)?.tip??``}function _S({client:e,sessionId:t,tab:n,onBack:r,sidebar:i,onSummon:a,onTakeOver:o,pinnedRole:s,canSummon:c,newSession:l,lanExposed:u,nativeDirPicker:d}){let f=R(),[p,m]=v.useState(``),[h,g]=v.useState(),[_,y]=v.useState(),[b,x]=v.useState(0);v.useEffect(()=>{if(!t)return;let n=!0;return y(void 0),e.capabilities(t).then(e=>{n&&g(e)}).catch(e=>{n&&y(e instanceof Error?e.message:String(e))}),()=>{n=!1}},[e,t,b]);let S=n===`experts`?h?.roles.length:n===`skills`?h?.skills.length:n===`connectors`?h&&h.builtinConnectors.length+h.mcpServers.length:void 0;return(0,L.jsxs)(`section`,{className:`panelcol`,"data-tab":n,children:[(0,L.jsxs)(`div`,{className:`panelcol__head`,children:[i&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon panelcol__nav`,type:`button`,"aria-pressed":i.open,"aria-label":f(`web.ui.topbar.sidebar`),title:f(`web.ui.topbar.sidebar`),onClick:i.onToggle,children:(0,L.jsx)(z,{name:`panel-right`})}),(0,L.jsxs)(`button`,{className:`cap__back`,type:`button`,onClick:r,children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),f(`web.ui.cap.back`)]}),(0,L.jsxs)(`h1`,{className:`panelcol__title cap__title`,children:[f(hS(n)),(0,L.jsx)(bt,{text:f(gS(n)),about:f(hS(n))})]}),(0,L.jsx)(`span`,{className:`panelcol__n`,children:S??``}),(0,L.jsxs)(`label`,{className:`cap__search`,children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`search`,value:p,onChange:e=>m(e.target.value),placeholder:f(`web.ui.cap.search`),"aria-label":f(`web.ui.cap.search`)})]})]}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:(0,L.jsx)(`div`,{className:`cap__pane`,children:(0,L.jsx)(vS,{onWrote:()=>x(e=>e+1),tab:n,query:p.trim().toLowerCase(),data:h,..._===void 0?{}:{error:_},client:e,...t===void 0?{}:{sessionId:t},onSummon:a,onTakeOver:o,...s===void 0?{}:{pinnedRole:s},canSummon:c,...l?{newSession:l}:{},lanExposed:u,...d===void 0?{}:{nativeDirPicker:d}})})})]})}function vS({tab:e,query:t,data:n,error:r,client:i,sessionId:a,onSummon:o,onTakeOver:s,pinnedRole:c,canSummon:l,newSession:u,onWrote:d,lanExposed:f,nativeDirPicker:p}){let m=R();if(e===`plugins`)return(0,L.jsx)(jx,{client:i,query:t,lanExposed:f});if(a===void 0)return(0,L.jsx)(`p`,{className:`cap__foot`,children:m(`web.ui.cap.no_session`)});if(r)return(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:r})]});if(!n)return(0,L.jsx)(`p`,{className:`cap__foot`,children:m(`web.ui.cap.loading`)});if(e===`experts`){let e=n.roles.filter(e=>yS(t,e.name,e.description)||(e.tools??[]).some(e=>yS(t,e))||e.toolsCut.some(e=>yS(t,e)));return(0,L.jsx)(Mb,{roles:e,project:n.project,onSummon:o,onTakeOver:s,...c===void 0?{}:{pinnedRole:c},canSummon:l,...u?{newSession:u}:{},client:i,lanExposed:f,onWrote:d})}if(e===`skills`){let e=n.skills.filter(e=>yS(t,e.name,e.category,e.description));return(0,L.jsx)(uS,{skills:e,project:n.project,client:i,sessionId:a,onWrote:d,lanExposed:f,...p===void 0?{}:{nativeDirPicker:p}})}return(0,L.jsx)(Tb,{builtin:n.builtinConnectors.filter(e=>yS(t,e.name)),mcp:n.mcpServers.filter(e=>yS(t,e.name)),client:i,lanExposed:f})}function yS(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function bS(e,t,n){let[r,i]=v.useState();return v.useEffect(()=>{if(!t)return;let n=!0;return Promise.resolve().then(()=>e.plugins()).then(e=>{n&&i(e.hits.filter(e=>e.installed&&e.updateAvailable).length)}).catch(()=>{n&&i(void 0)}),()=>{n=!1}},[e,t,n]),r}var xS=[],SS=[];function CS(e){return e.length===0?SS:e.map(e=>({kind:`prompt`,name:e.name,description:e.description,...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint}}))}function wS(e,t){let[n,r]=v.useState(xS);return v.useEffect(()=>{if(!e||!t){r(xS);return}let n=!0;return e.commands(t).then(e=>{n&&r(e.commands)}).catch(()=>{n&&r(xS)}),()=>{n=!1}},[e,t]),n}function TS(e,t){if(!t.startsWith(`/`)||t.includes(`
375
+ `))return SS;let n=t.slice(1);if(/\s/.test(n))return SS;let r=n.toLowerCase();return r?e.filter(e=>e.name.startsWith(r)):e}function ES(e,t){return e.length===0?t:t.length===0?e:[...e,...t]}function DS(e){return`/${e.name} `}function OS(e){return`cmdopt-${e}`}var kS=`cmdpalette`;function AS({matched:e,activeIndex:t,onPick:n,onHover:r}){let i=R(),a=Pt(t,e.length,r);return(0,L.jsx)(`ul`,{ref:a.ref,id:kS,className:`cmdpalette`,role:`listbox`,"aria-label":i(`web.ui.composer.commands_label`),children:e.map((e,r)=>(0,L.jsxs)(`li`,{id:OS(e.name),role:`option`,"aria-selected":r===t,className:`cmdpalette__row`,"data-active":r===t?`on`:void 0,"data-kind":e.kind,onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:e=>a.hover(r,e),children:[(0,L.jsxs)(`span`,{className:`cmdpalette__name`,children:[`/`,e.name]}),e.kind===`prompt`&&e.argumentHint&&(0,L.jsx)(`span`,{className:`cmdpalette__hint`,children:e.argumentHint}),(0,L.jsx)(`span`,{className:`cmdpalette__desc`,children:e.description})]},e.name))})}function jS(e,t){return t.ran?t.after>=t.before?{command:`compact`,text:e(`web.ui.cmd.compact_no_change`,{n:t.before}),pending:!1,tone:`warn`}:{command:`compact`,text:e(`web.ui.cmd.compact_done`,{before:t.before,after:t.after}),pending:!1,tone:`ok`}:{command:`compact`,text:t.reason??e(`web.ui.cmd.compact_not_run`),pending:!1,tone:`warn`}}function MS(e){let{client:t,sessionId:n,readOnly:r,busy:i,t:a,openContextPane:o,setNotice:s}=e;if(!t||n===void 0||r)return SS;let c=[{kind:`action`,name:`context`,description:a(`web.ui.cmd.context_desc`),run:o}];return i||c.push({kind:`action`,name:`compact`,description:a(`web.ui.cmd.compact_desc`),run:()=>{s({command:`compact`,text:a(`web.ui.cmd.compact_running`),pending:!0,tone:`ok`}),t.compact(n).then(e=>s(jS(a,e))).catch(()=>{s({command:`compact`,text:a(`web.ui.cmd.compact_failed`),pending:!1,tone:`warn`})})}}),c}var NS=4194304,PS=16777216,FS=64,IS=64;function LS(e,t){let n=IS;for(let e of t)e.kind!==`file`&&(n+=e.bytes+(e.part.mediaType?.length??0)+FS);if(!e)return n;n+=FS;let r=n+e.length*6;return r<=16777216?r:n+new TextEncoder().encode(JSON.stringify(e)).length}function RS(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`read failed`)),r.onload=()=>t(String(r.result)),r.readAsDataURL(e)})}async function zS(e,t,n=[]){let r=[],i=[],a=n.map(e=>t(`web.ui.composer.reject_directory`,{name:e}));for(let n of e){if(!n.type.startsWith(`image/`)){i.push(n);continue}if(n.size>4194304){a.push(t(`web.ui.composer.reject_too_big`,{name:n.name,size:Math.round(n.size/1024/1024),max:Math.round(NS/1024/1024)}));continue}try{let e=await RS(n);r.push({kind:`image`,name:n.name,bytes:e.length,part:{type:`image`,image:e,mediaType:n.type}})}catch{a.push(t(`web.ui.composer.reject_unreadable`,{name:n.name}))}}return{ok:r,rejected:a,uploads:i}}function BS({disabled:e,onPick:t}){let n=R(),r=v.useRef(null);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`btn btn--icon`,disabled:e,"aria-label":n(`web.ui.composer.attach`),title:n(`web.ui.composer.attach`),onClick:()=>r.current?.click(),children:(0,L.jsx)(z,{name:`plus`})}),(0,L.jsx)(`input`,{ref:r,type:`file`,multiple:!0,hidden:!0,onChange:e=>{t([...e.target.files??[]]),e.target.value=``}})]})}function VS({attachments:e,reading:t=[],showBytes:n=!1,onRemove:r}){let i=R(),a=v.useRef(null),o=e.length+t.length,s=v.useRef(o);return v.useEffect(()=>{let e=a.current;e&&o>s.current&&(e.scrollTop=e.scrollHeight),s.current=o},[o]),e.length===0&&t.length===0?null:(0,L.jsxs)(`div`,{className:`shots`,ref:a,children:[e.map((e,t)=>e.kind===`file`?(0,L.jsxs)(`div`,{className:`shot shot--file`,title:e.name,children:[(0,L.jsx)(z,{name:`file`,size:`sm`}),(0,L.jsx)(`span`,{className:`shot__name`,children:e.name}),(0,L.jsx)(`span`,{className:`shot__note`,children:Ci(e.bytes)}),(0,L.jsx)(`button`,{type:`button`,className:`shot__x`,"aria-label":i(`web.ui.composer.remove_attach`,{name:e.name}),onClick:()=>r(t),children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]},`${e.name}-${t}`):(0,L.jsxs)(`figure`,{className:`shot`,title:e.name,children:[(0,L.jsx)(`img`,{className:`shot__img`,src:e.part.image,alt:e.name}),n&&(0,L.jsx)(`figcaption`,{className:`shot__size`,children:Ci(e.bytes)}),(0,L.jsx)(`button`,{type:`button`,className:`shot__x`,"aria-label":i(`web.ui.composer.remove_attach`,{name:e.name}),onClick:()=>r(t),children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]},`${e.name}-${t}`)),t.map((e,t)=>(0,L.jsxs)(`div`,{className:`shot shot--reading`,title:e,children:[(0,L.jsx)(`span`,{className:`shot__spin`,"aria-hidden":`true`}),(0,L.jsx)(`span`,{className:`shot__name`,children:e}),(0,L.jsx)(`span`,{className:`shot__note`,children:i(`web.ui.composer.reading`)})]},`reading-${e}-${t}`))]})}var HS={text:``,attachments:[],rejected:[],reading:[],paletteClosed:!1};function US(e){return e.text===``&&e.attachments.length===0&&e.rejected.length===0&&e.reading.length===0&&!e.paletteClosed}function WS(e,t){return e.trim()?`${e.trimEnd()}\n${t}`:t}function GS(e,t,n){return{...e,reading:t.length>0?e.reading.filter(e=>e!==t):e.reading,attachments:[...e.attachments,...n.ok],rejected:n.rejected.length>0?[...new Set([...e.rejected,...n.rejected])]:e.rejected}}function KS(e){let t=e.text.trim();if(!t&&e.attachments.length===0)return;let n=e.attachments.filter(e=>e.kind===`image`);return n.length===0?t||(e.attachments.length>0?[]:void 0):[...t?[{type:`text`,text:t}]:[],...n.map(e=>e.part)]}function qS(e){return e.attachments.filter(e=>e.kind===`file`).map(e=>e.name)}function JS(e){let[t,n]=v.useState(()=>new Map),r=v.useCallback((e,t)=>{n(n=>{let r=t(n.get(e)??HS),i=new Map(n);return US(r)?i.delete(e):i.set(e,r),i})},[]),i=v.useCallback(t=>r(e,t),[r,e]);return{slot:t.get(e)??HS,patch:r,here:i}}function YS(e,t){let n=R(),{slot:r,patch:i,here:a}=JS(t),o=v.useCallback(async(t,r)=>{let i=[],a=[];for(let o of r)try{let n=await e.uploadAttachment(t,o);i.push({kind:`file`,name:n.name,bytes:n.bytes})}catch{a.push(n(`web.ui.composer.reject_upload_failed`,{name:o.name}))}return{ok:i,rejected:a}},[e,n]),s=v.useCallback(e=>a(t=>({...t,text:e})),[a]),c=v.useCallback(e=>a(t=>({...t,text:WS(t.text,e)})),[a]),l=v.useCallback((e,r=[])=>{if(e.length===0&&r.length===0)return;let a=t,s=e.map(e=>e.name);s.length>0&&i(a,e=>({...e,reading:[...e.reading,s]})),zS(e,n,r).then(async e=>{let t=a===void 0?{ok:[],rejected:e.uploads.map(e=>n(`web.ui.composer.reject_upload_failed`,{name:e.name}))}:await o(a,e.uploads);i(a,n=>GS(n,s,{ok:[...e.ok,...t.ok],rejected:[...e.rejected,...t.rejected]}))})},[i,t,n,o]),u=v.useCallback(e=>a(t=>({...t,attachments:t.attachments.filter((t,n)=>n!==e)})),[a]),d=v.useCallback(()=>a(e=>({...e,rejected:[]})),[a]),f=v.useCallback(e=>a(t=>({...t,paletteClosed:e})),[a]),p=v.useCallback(()=>a(e=>({...HS,reading:e.reading})),[a]),m=v.useMemo(()=>LS(r.text,r.attachments),[r.text,r.attachments]),h=v.useCallback(()=>KS(r),[r]),g=v.useCallback(()=>qS(r),[r]);return v.useMemo(()=>({...r,bytes:m,oversize:m>PS,setText:s,append:c,pick:l,removeAttachment:u,dismissRejected:d,setPaletteClosed:f,toMessage:h,toAttachmentNames:g,sent:p}),[r,m,s,c,l,u,d,f,h,g,p])}function XS(e){let t=[],n=[],r=Array.from(e?.items??[]).filter(e=>e.kind===`file`);for(let[i,a]of[...e?.files??[]].entries())r[i]?.webkitGetAsEntry?.()?.isDirectory?n.push(a.name):t.push(a);return{files:t,directories:n}}var ZS=new Set([`text/plain`,`text/html`]),QS=[`dragenter`,`dragover`,`drop`];function $S(e){let t=Array.from(e?.types??[]);return t.length===0||t.some(e=>!ZS.has(e))}function eC({onFiles:e,disabled:t=!1}){let n=v.useRef(0),[r,i]=v.useState(!1),a=()=>{n.current=0,i(!1)};return v.useEffect(()=>{let e=e=>{e.defaultPrevented||$S(e.dataTransfer)&&e.preventDefault()};for(let t of QS)window.addEventListener(t,e);return()=>{for(let t of QS)window.removeEventListener(t,e)}},[]),{active:r&&!t,zone:{onDragEnter:e=>{e.preventDefault(),n.current+=1,i(!0)},onDragOver:e=>e.preventDefault(),onDragLeave:()=>{--n.current,n.current<=0&&a()},onDrop:n=>{n.preventDefault(),a(),!t&&e(XS(n.dataTransfer))}}}}function tC(){let e=R();return(0,L.jsx)(`div`,{className:`dropzone`,role:`status`,children:(0,L.jsxs)(`span`,{className:`dropzone__box`,children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),e(`web.ui.composer.drop_hint`)]})})}function nC(e){let[t,n]=v.useState(()=>new Map),r=v.useCallback(t=>{n(n=>n.get(e)===t?n:new Map(n).set(e,t))},[e]),i=v.useCallback(()=>{n(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[e]),a=t.get(e);return v.useMemo(()=>({role:a,pin:r,clear:i}),[a,r,i])}function rC({role:e,onClear:t}){let n=R();return(0,L.jsxs)(`span`,{className:`xchip`,title:n(`web.ui.composer.expert_chip_title`,{role:e}),children:[(0,L.jsx)(`button`,{className:`xchip__x`,type:`button`,"aria-label":n(`web.ui.composer.expert_remove`,{role:e}),onClick:t,children:(0,L.jsx)(z,{name:`x`,size:`sm`})}),e]})}var iC=`refpalette`;function aC(e){return`refopt-${e}`}function oC(e){return e?e.split(/[\\/]/).filter(Boolean).pop()??e:``}function sC(e,t){let n=new Date(e),r=new Date(t).toDateString()===n.toDateString(),i=e=>String(e).padStart(2,`0`);return r?`${i(n.getHours())}:${i(n.getMinutes())}`:`${n.getMonth()+1}/${n.getDate()}`}function cC({candidates:e,activeIndex:t,onPick:n,onHover:r}){let i=R(),a=Date.now(),o=Pt(t,e.length,r);return(0,L.jsxs)(`ul`,{ref:o.ref,id:iC,className:`cmdpalette`,role:`listbox`,"aria-label":i(`web.ui.mention.palette_label`),children:[(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:i(`web.ui.mention.group_sessions`)}),e.map((e,r)=>(0,L.jsxs)(`li`,{id:aC(e.sessionId),role:`option`,"aria-selected":r===t,className:`cmdpalette__row`,"data-active":r===t?`on`:void 0,onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:e=>o.hover(r,e),children:[(0,L.jsx)(`span`,{className:`refopt__title`,children:e.title}),(0,L.jsx)(`span`,{className:`refopt__meta`,children:e.sameWorkspace?i(`web.ui.mention.candidate_here`,{when:sC(e.updatedAt,a),count:e.messageCount}):i(`web.ui.mention.candidate_elsewhere`,{when:sC(e.updatedAt,a),count:e.messageCount,where:oC(e.cwd)})})]},e.sessionId))]})}var lC=`filepalette`;function uC(e){return`fileopt-${e}`}function dC(e){let t=e.split(`/`),n=t[t.length-1]??e,r=t.slice(0,-1).join(`/`);return{title:n,dir:r===``?null:r}}function fC({candidates:e,activeIndex:t,onPick:n,onHover:r,unmentionable:i,truncated:a}){let o=R(),s=Pt(t,e.length,r);return(0,L.jsxs)(`ul`,{ref:s.ref,id:lC,className:`cmdpalette`,role:`listbox`,"aria-label":o(`web.ui.mention.file_palette_label`),children:[(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:o(`web.ui.mention.group_files`)}),e.map((e,r)=>{let{title:i,dir:a}=dC(e.path);return(0,L.jsxs)(`li`,{id:uC(e.path),role:`option`,"aria-selected":r===t,className:`cmdpalette__row`,"data-active":r===t?`on`:void 0,onMouseDown:t=>{t.preventDefault(),n(e)},onMouseEnter:e=>s.hover(r,e),children:[(0,L.jsx)(`span`,{className:`refopt__title`,children:i}),a!==null&&(0,L.jsx)(`span`,{className:`refopt__meta`,children:a})]},e.path)}),i>0&&(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:o(`web.ui.mention.file_unmentionable`,{count:i})}),a&&(0,L.jsx)(`li`,{className:`cmdpalette__group`,role:`presentation`,children:o(`web.ui.mention.file_truncated`)})]})}var pC=`@:`;function mC(e){let t=-1;for(let n=e.length-1;n>=0;n--){let r=e[n]??``;if(/\s/.test(r))return-1;if(r===`@`){t=n;break}}if(t===-1)return-1;let n=t===0?``:e[t-1]??``;return n!==``&&!/\s/.test(n)?-1:t}function hC(e,t){let n=e.slice(0,Math.max(0,Math.min(t,e.length))),r=mC(n);return r===-1||!n.startsWith(pC,r)?null:{at:r,query:n.slice(r+2)}}function gC(e,t){let n=e.slice(0,Math.max(0,Math.min(t,e.length))),r=mC(n);return r===-1||n.startsWith(pC,r)?null:{at:r,query:n.slice(r+1)}}function _C(e,t,n){let r=`${e.slice(0,t.at)}${pC}${n} `;return{text:`${r}${e.slice(t.at+2+t.query.length)}`,caret:r.length}}function vC(e,t,n){let r=`${e.slice(0,t.at)}@${n} `;return{text:`${r}${e.slice(t.at+1+t.query.length)}`,caret:r.length}}var yC=[];function bC(e,t){return xC(e,t,yC)}function xC(e,t,n){let[r,i]=v.useState(n);return v.useEffect(()=>{if(!e||t===null){i(n);return}let r=!0,a=setTimeout(()=>{e(t).then(e=>{r&&i(e)}).catch(()=>{r&&i(n)})},120);return()=>{r=!1,clearTimeout(a)}},[e,t,n]),r}var SC={candidates:[],unmentionable:0,truncated:!1};function CC(e,t){return xC(e,t,SC)}var wC={idle:`web.ui.composer.placeholder_idle`,running:`web.ui.composer.placeholder_running`,"awaiting-approval":`web.ui.composer.placeholder_approval`,"awaiting-question":`web.ui.composer.placeholder_question`},TC={"no-provider":`web.ui.composer.placeholder_no_provider`,history:`web.ui.composer.placeholder_history`,gone:`web.ui.composer.placeholder_gone`},EC=[],DC={session:`web.ui.composer.usage_session`,run:`web.ui.composer.usage_run`};function OC(e){let t=e.turn===`awaiting-approval`||e.turn===`awaiting-question`;return!!e.disabled||!!e.readOnly||t||e.connection!==`open`}function kC(e){let t=e.scrollTop;e.style.height=`auto`;let n=e.scrollHeight;n>0&&(e.style.height=`${n}px`),e.scrollTop=t}function AC(e,t){v.useLayoutEffect(()=>{let t=e.current;t&&kC(t)},[e,t]),v.useLayoutEffect(()=>{let t=e.current;if(!t)return;let n=t.clientWidth,r=new ResizeObserver(()=>{t.clientWidth!==n&&(n=t.clientWidth,kC(t))});return r.observe(t),()=>r.disconnect()},[e])}function jC({draft:e,turn:t,connection:n,disabled:r=!1,readOnly:i=!1,prefill:a,onPrefillDone:o,commands:s=xS,builtins:c=SS,commandNotice:l,builtinNotice:u,dropped:d,onDroppedDone:f,expert:p,usage:m,listSessionCandidates:h,listFileCandidates:g,onSend:_}){let y=R(),[b,x]=v.useState(!1),[S,C]=v.useState(0),[w,T]=v.useState(0),[E,D]=v.useState(0),[O,ee]=v.useState(0),te=v.useRef(!1),k=v.useRef(null),{append:ne,pick:ie,setText:ae}=e;AC(k,e.text),v.useEffect(()=>{if(!a)return;a.replace===!0?ae(a.text):ne(a.text);let e=k.current,t=e&&requestAnimationFrame(()=>{e.focus(),e.setSelectionRange(e.value.length,e.value.length)});return o?.(),()=>{t&&cancelAnimationFrame(t)}},[a,o,ne,ae]);let A=e.reading.length>0;v.useEffect(()=>{if(!A){x(!1);return}let e=setTimeout(()=>x(!0),250);return()=>clearTimeout(e)},[A]);let j=n!==`open`,oe=OC({turn:t,connection:n,disabled:r,readOnly:i}),se=TS(v.useMemo(()=>ES(c,CS(s)),[c,s]),e.text),ce=!oe&&!e.paletteClosed&&se.length>0,le=Math.min(S,se.length-1),ue=se[le],M=hC(e.text,O),de=bC(h,M===null?null:M.query),fe=!oe&&!e.paletteClosed&&M!==null&&de.length>0,pe=Math.min(w,de.length-1),N=de[pe],me=gC(e.text,O),P=CC(g,me===null?null:me.query),he=!oe&&!e.paletteClosed&&me!==null&&P.candidates.length>0,F=Math.min(E,P.candidates.length-1),ge=P.candidates[F],_e=t=>{let n=se.find(e=>e.name===t);if(n){if(n.kind===`action`){e.setText(``),e.setPaletteClosed(!1),C(0),k.current?.focus(),n.run();return}e.setText(DS(n)),C(0),k.current?.focus()}},ve=t=>{if(!M)return;let n=_C(e.text,M,t);e.setText(n.text),ee(n.caret),T(0);let r=k.current;r&&requestAnimationFrame(()=>{r.focus(),r.setSelectionRange(n.caret,n.caret)})},ye=t=>{if(!me)return;let n=vC(e.text,me,t);e.setText(n.text),ee(n.caret),D(0);let r=k.current;r&&requestAnimationFrame(()=>{r.focus(),r.setSelectionRange(n.caret,n.caret)})},be=()=>{if(oe||e.oversize)return;let t=e.toMessage();if(t===void 0)return;let n=e.toAttachmentNames();n.length>0?_(t,n):_(t),e.sent()},xe=t=>{if(!(te.current||t.nativeEvent.isComposing)){if(ce&&ue){let n=se.length;if(t.key===`ArrowDown`)return t.preventDefault(),C(e=>(Math.min(e,n-1)+1)%n);if(t.key===`ArrowUp`)return t.preventDefault(),C(e=>(Math.min(e,n-1)-1+n)%n);if(t.key===`Escape`)return t.preventDefault(),e.setPaletteClosed(!0);if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey)return t.preventDefault(),_e(ue.name)}if(fe&&N&&M){let n=de.length;if(t.key===`ArrowDown`)return t.preventDefault(),T(e=>(Math.min(e,n-1)+1)%n);if(t.key===`ArrowUp`)return t.preventDefault(),T(e=>(Math.min(e,n-1)-1+n)%n);if(t.key===`Escape`)return t.preventDefault(),e.setPaletteClosed(!0);if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey)return t.preventDefault(),ve(N.sessionId)}if(he&&ge&&me){let n=P.candidates.length;if(t.key===`ArrowDown`)return t.preventDefault(),D(e=>(Math.min(e,n-1)+1)%n);if(t.key===`ArrowUp`)return t.preventDefault(),D(e=>(Math.min(e,n-1)-1+n)%n);if(t.key===`Escape`)return t.preventDefault(),e.setPaletteClosed(!0);if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey)return t.preventDefault(),ye(ge.path)}t.key!==`Enter`||t.shiftKey||(t.preventDefault(),be())}};v.useEffect(()=>{d&&(ie(d.files,d.directories),f?.())},[d,f,ie]);let Se=e=>{oe||ie([...e.clipboardData?.files??[]])},Ce=r?`web.ui.composer.placeholder_no_session`:i?TC[i]:j?`web.ui.composer.placeholder_offline`:wC[t];return(0,L.jsxs)(`form`,{className:`composer`,"aria-disabled":oe,"aria-busy":A,onSubmit:e=>{e.preventDefault(),be()},children:[ce&&(0,L.jsx)(AS,{matched:se,activeIndex:le,onPick:e=>_e(e.name),onHover:C}),fe&&(0,L.jsx)(cC,{candidates:de,activeIndex:pe,onPick:e=>ve(e.sessionId),onHover:T}),he&&(0,L.jsx)(fC,{candidates:P.candidates,activeIndex:F,onPick:e=>ye(e.path),onHover:D,unmentionable:P.unmentionable,truncated:P.truncated}),(0,L.jsx)(VS,{attachments:e.attachments,reading:b?e.reading.flat():EC,showBytes:e.oversize,onRemove:e.removeAttachment}),(0,L.jsx)(`textarea`,{ref:k,className:`composer__input`,value:e.text,rows:2,disabled:oe,placeholder:y(Ce),"aria-label":y(`web.ui.composer.label`),role:`combobox`,"aria-expanded":ce||fe||he,"aria-controls":he?lC:fe?iC:kS,"aria-autocomplete":`list`,...ce&&ue?{"aria-activedescendant":OS(ue.name)}:{},...fe&&N?{"aria-activedescendant":aC(N.sessionId)}:{},...he&&ge?{"aria-activedescendant":uC(ge.path)}:{},onChange:t=>{let n=t.target.value;e.setText(n),C(0),T(0),D(0),ee(t.target.selectionStart??0);let r=t.target.selectionStart??0;!n.startsWith(`/`)&&hC(n,r)===null&&gC(n,r)===null&&e.setPaletteClosed(!1)},onKeyDown:xe,onKeyUp:e=>ee(e.currentTarget.selectionStart??0),onClick:e=>ee(e.currentTarget.selectionStart??0),onSelect:e=>ee(e.currentTarget.selectionStart??0),onPaste:Se,onCompositionStart:()=>te.current=!0,onCompositionEnd:()=>te.current=!1}),e.rejected.length>0&&(0,L.jsxs)(`div`,{className:`composer__rejects`,role:`status`,children:[(0,L.jsx)(`ul`,{className:`composer__reject`,children:e.rejected.map(e=>(0,L.jsx)(`li`,{children:e},e))}),(0,L.jsx)(`button`,{type:`button`,className:`composer__reject-x`,"aria-label":y(`web.ui.composer.reject_dismiss`),onClick:e.dismissRejected,children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]}),l&&l.warnings.length>0&&(0,L.jsxs)(`ul`,{className:`composer__reject`,role:`status`,children:[(0,L.jsx)(`li`,{className:`composer__notice-head`,children:y(`web.ui.composer.command_warnings`,{name:l.name})}),l.warnings.map(e=>(0,L.jsx)(`li`,{children:e},e))]}),u&&(0,L.jsxs)(`ul`,{className:`composer__reject`,role:`status`,"data-tone":u.tone,children:[(0,L.jsx)(`li`,{className:`composer__notice-head`,children:y(`web.ui.composer.builtin_notice`,{name:u.command})}),(0,L.jsxs)(`li`,{children:[u.pending&&(0,L.jsx)(`span`,{className:`composer__notice-spin`,"aria-hidden":`true`}),u.text]})]}),e.oversize&&(0,L.jsx)(`p`,{className:`composer__oversize`,role:`alert`,children:y(`web.ui.composer.too_big`,{size:Ci(e.bytes),max:Ci(16777216)})}),(0,L.jsxs)(`div`,{className:`composer__bar`,children:[(0,L.jsx)(BS,{disabled:oe,onPick:ie}),p?.role!==void 0&&(0,L.jsx)(rC,{role:p.role,onClear:p.clear}),m&&(0,L.jsxs)(`span`,{className:`composer__usage`,title:y(`web.ui.composer.usage_detail`,{scope:y(DC[m.scope]),up:rv(re(m.tokens)),down:rv(m.tokens.outputTokens)}),children:[(0,L.jsx)(`span`,{className:`composer__usage-scope`,children:y(DC[m.scope])}),(0,L.jsxs)(`b`,{children:[iv(re(m.tokens)),`↑ `,iv(m.tokens.outputTokens),`↓`]})]}),(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary`,disabled:oe||e.oversize||e.toMessage()===void 0,children:y(`web.ui.composer.send`)})]})]})}var MC={level:null,editable:!1,blocked:[],busy:!1,set:()=>{}};function NC(e,t,n,r,i){let[a,o]=v.useState(MC),s=v.useRef(0);v.useEffect(()=>{if(!e||!t){o(MC);return}let n=!0,r=s.current;return e.permission(t).then(e=>{!n||s.current!==r||o({level:e.level,editable:e.editable,blocked:e.blocked,busy:!1})}).catch(()=>{n&&s.current===r&&o(e=>({...e,editable:!1,busy:!1}))}),()=>{n=!1}},[e,t,n]);let{adopt:c}=r,l=v.useCallback(n=>{!e||!t||(s.current+=1,o(e=>{let{error:t,...n}=e;return{...n,busy:!0}}),e.setPermission(t,n).then(e=>{o({level:e.state.level,editable:e.state.editable,blocked:e.state.blocked,busy:!1,...e.ok?{}:{error:{kind:`refused`,reason:e.refused??`managed`}},...e.notRemembered?{notRemembered:e.notRemembered}:{}}),c(e.state.planMode)}).catch(e=>{o(t=>({...t,busy:!1,error:{kind:`failed`,message:e instanceof Error?e.message:String(e)}}))}))},[e,t,c]);return v.useMemo(()=>({...a,level:a.level??i??null,set:l}),[a,i,l])}var PC={available:!1,active:!1,from:null,busy:!1,toggle:()=>{},adopt:()=>{}};function FC(e,t,n){let[r,i]=v.useState(PC),a=v.useRef(0);v.useEffect(()=>{if(!e||!t){i(PC);return}let n=!0,r=a.current;return e.plan(t).then(({mode:e})=>{!n||a.current!==r||i({available:e!==null,active:e?.active??!1,from:e?.from??null,busy:!1})}).catch(()=>{n&&a.current===r&&i(PC)}),()=>{n=!1}},[e,t,n]);let o=v.useCallback(()=>{if(!e||!t)return;let n=r.active?`exit`:`enter`;a.current+=1,i(e=>{let{error:t,...n}=e;return{...n,busy:!0}}),e.planMode(t,n).then(({mode:e})=>{i({available:!0,active:e.active,from:e.from,busy:!1})}).catch(e=>{i(t=>({...t,busy:!1,error:e instanceof Error?e.message:String(e)}))})},[e,t,r.active]),s=v.useCallback(e=>{a.current+=1,i({available:e!==null,active:e?.active??!1,from:e?.from??null,busy:!1})},[]);return v.useMemo(()=>({...r,toggle:o,adopt:s}),[r,o,s])}function IC({mode:e,readOnly:t=!1}){let n=R();return!e.available||t?null:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`button`,{type:`button`,className:`fact fact--toggle`,"aria-pressed":e.active,"data-on":e.active?``:void 0,disabled:e.busy,title:n(e.active?`web.ui.composer.plan_off_hint`:`web.ui.composer.plan_on_hint`),onClick:e.toggle,children:[(0,L.jsx)(z,{name:`list-checks`,size:`sm`}),n(`web.ui.composer.plan_mode`)]}),e.active&&(0,L.jsx)(`span`,{className:`fact fact--plan`,children:n(`web.ui.composer.plan_mode_why`)}),e.error&&(0,L.jsx)(`span`,{className:`fact fact--err`,role:`alert`,children:e.error})]})}function LC({role:e}){let t=R();return e?(0,L.jsxs)(`span`,{className:`fact`,title:t(`web.ui.composer.identity_title`,{role:e.name}),children:[(0,L.jsx)(z,{name:`user-round`,size:`sm`}),e.name]}):null}var RC={state:`pending`};function zC(e){return e.state===`bound`?{state:`bound`,workspace:e.workspace}:{state:e.state}}function BC(e,t,n=`idle`){let[r,i]=v.useState(RC),[a,o]=v.useState(!1),[s,c]=v.useState(),[l,u]=v.useState(0),d=v.useCallback(n=>{!e||!t||a||(o(!0),c(void 0),e.bindWorkspace(t,n).then(({binding:e})=>{o(!1),i(zC(e))}).catch(e=>{o(!1);let t=e?.detail??(e instanceof Error?e.message:``);c(typeof t==`string`&&t?t:String(e))}))},[a,e,t]);v.useEffect(()=>{if(!e||!t){i(RC);return}i(RC),o(!1),c(void 0);let n=!0;return e.sessionWorkspace(t).then(({binding:e})=>{n&&i(zC(e))}).catch(()=>{n&&i({state:`unknown`})}),()=>{n=!1}},[e,t,l]);let f=v.useRef(!0);return v.useEffect(()=>{let e=n===`idle`,t=f.current;f.current=e,!(e||!t)&&r.state===`unknown`&&u(e=>e+1)},[n,r.state]),v.useMemo(()=>r.state===`unbound`?{state:`unbound`,pick:d,busy:a,...s===void 0?{}:{error:s}}:r,[r,d,a,s])}function VC({view:e,onOpenDiff:t,choices:n=[],client:r,nativeDirPicker:i}){let a=R(),[o,s]=v.useState(!1),c=v.useRef(null),l=v.useCallback(()=>s(!1),[]);if(e.state===`pending`)return null;if(e.state===`unbound`)return(0,L.jsx)(en,{view:e,choices:n,open:o,setOpen:s,close:l,triggerRef:c,...r?{client:r}:{},...i===void 0?{}:{nativeDirPicker:i}});let u=e.state===`bound`?e.workspace.root:e.state===`unknown`?a(`web.ui.composer.workspace_unknown_hint`):void 0;return e.state===`bound`&&t?(0,L.jsxs)(`button`,{className:`fact fact--link`,type:`button`,onClick:t,title:`${e.workspace.root}\n${a(`web.ui.composer.workspace_diff_hint`)}`,children:[(0,L.jsx)(z,{name:`layers`,size:`sm`}),e.workspace.name]}):(0,L.jsxs)(`span`,{className:`fact`,...u===void 0?{}:{title:u},children:[(0,L.jsx)(z,{name:`layers`,size:`sm`}),e.state===`bound`?e.workspace.name:a(e.state===`none`?`web.ui.composer.no_workspace`:`web.ui.composer.workspace_unknown`)]})}function HC({workspace:e=RC,workspaceChoices:t,nativeDirPicker:n,client:r,onOpenDiff:i,permission:a=MC,planMode:o=PC,readOnly:s=!1,role:c}){return(0,L.jsxs)(`div`,{className:`composer__foot`,children:[(0,L.jsx)(VC,{view:e,...i?{onOpenDiff:i}:{},...t?{choices:t}:{},...r?{client:r}:{},...n===void 0?{}:{nativeDirPicker:n}}),(0,L.jsx)(LC,{...c===void 0?{}:{role:c}}),(0,L.jsx)(pn,{view:a}),(0,L.jsx)(IC,{mode:o,readOnly:s})]})}function UC({kind:e,icon:t,title:n,queue:r,children:i,exits:a}){return(0,L.jsxs)(`div`,{className:`dock`,"data-kind":e,role:`group`,"aria-label":n,children:[(0,L.jsxs)(`div`,{className:`dock__head`,children:[(0,L.jsx)(`span`,{className:`dock__sign`,children:(0,L.jsx)(z,{name:t})}),(0,L.jsx)(`span`,{className:`dock__title`,children:n}),r&&(0,L.jsx)(`span`,{className:`dock__queue`,children:r})]}),(0,L.jsx)(`div`,{className:`dock__body`,children:i}),(0,L.jsx)(`div`,{className:`dock__foot`,children:(0,L.jsx)(`div`,{className:`dock__exits`,children:a})})]})}function WC({label:e,hint:t,tone:n,primary:r,onClick:i}){return(0,L.jsxs)(`button`,{type:`button`,className:n===`danger`?`btn btn--danger`:n===`primary`?`btn btn--primary`:`btn`,autoFocus:r,onClick:i,children:[e,t&&(0,L.jsx)(`small`,{children:t})]})}function GC(e,t){switch(e){case`file_read`:return t(`web.ui.dock.act_file_read`);case`file_write`:return t(`web.ui.dock.act_file_write`);case`command`:return t(`web.ui.dock.act_command`);case`network`:return t(`web.ui.dock.act_network`);case`code_exec`:return t(`web.ui.dock.act_code_exec`)}}function KC({children:e}){let t=R(),n=v.useRef(null),[r,i]=v.useState(0);return v.useEffect(()=>{let e=n.current;if(!e)return;let t=()=>{let t=parseFloat(getComputedStyle(e).lineHeight),n=e.scrollHeight-e.scrollTop-e.clientHeight;if(!(t>0)||n<=1){i(0);return}i(Math.max(1,Math.round(n/t)))};t(),e.addEventListener(`scroll`,t,{passive:!0});let r=new ResizeObserver(t);return r.observe(e),()=>{e.removeEventListener(`scroll`,t),r.disconnect()}},[e]),(0,L.jsxs)(`dd`,{children:[(0,L.jsx)(`div`,{className:`facts__scroll`,ref:n,children:e}),r>0&&(0,L.jsx)(`span`,{className:`facts__more`,children:t(`web.ui.dock.more_lines`,{count:r})})]})}function qC({request:e,remaining:t,onRespond:n}){let r=R(),i=e.detail&&e.detail!==e.target?e.detail:void 0,a=e.rememberable!==!1;return(0,L.jsxs)(UC,{kind:`permission`,icon:`flag`,title:r(`web.ui.dock.title_permission`),...t>0?{queue:r(`web.ui.dock.queue`,{count:t})}:{},exits:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(WC,{label:r(`approval.deny`),tone:`danger`,onClick:()=>n(`deny`)}),a&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(WC,{label:r(`web.ui.dock.allow_always`),onClick:()=>n(`allow-always`)}),(0,L.jsx)(WC,{label:r(`web.ui.dock.allow_session`),onClick:()=>n(`allow-session`)})]}),(0,L.jsx)(WC,{label:r(`web.ui.dock.allow_once`),tone:`primary`,primary:!0,onClick:()=>n(`allow-once`)})]}),children:[(0,L.jsxs)(`dl`,{className:`facts`,children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_action`)}),(0,L.jsxs)(KC,{children:[(0,L.jsx)(`code`,{children:e.toolName}),` `,GC(e.type,r)]}),(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_target`)}),(0,L.jsx)(KC,{children:e.target||r(`web.ui.dock.target_none`)}),i&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_detail`)}),(0,L.jsx)(KC,{children:i})]}),e.reason&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_reason`)}),(0,L.jsx)(KC,{children:(0,L.jsx)(`em`,{children:e.reason})})]})]}),!a&&(0,L.jsx)(`p`,{className:`dock__note`,children:r(`web.ui.dock.not_rememberable`)})]})}function JC(e){return e.kind===`schedule`?e.schedule.at:e.goal.goal.updatedAt}function YC(e,t,n){let r=[...e.map(e=>({kind:`schedule`,schedule:e})),...t.filter(e=>e.sessionId!==n).map(e=>({kind:`goal`,goal:e}))].sort((e,t)=>JC(e)-JC(t)),i=r[0];return i?{item:i,more:r.length-1}:null}function XC({item:e,more:t,onFix:n,onOpen:r,onOpenSession:i}){let a=R(),[o,s]=v.useState(!1),c=e.kind===`goal`;return(0,L.jsxs)(`div`,{className:`autobar`,role:`status`,"data-kind":e.kind,children:[(0,L.jsx)(`span`,{className:`autobar__sign`,children:(0,L.jsx)(z,{name:c?`target`:`rotate-ccw`,size:`sm`})}),(0,L.jsx)(`span`,{className:`autobar__who`,children:e.kind===`goal`?a(`web.ui.autobar.goal_blocked`,{title:e.goal.sessionTitle||a(`web.ui.topbar.untitled`)}):a(`web.ui.autobar.pending`,{name:e.schedule.scheduleName,count:e.schedule.approvals.length})}),(0,L.jsx)(`code`,{className:`autobar__rule`,...e.kind===`goal`&&e.goal.goal.block?{title:e.goal.goal.block.message}:{},children:e.kind===`goal`?e.goal.goal.block?.code:e.schedule.approvals[0]?.suggestedRule}),t>0&&(0,L.jsx)(`span`,{className:`autobar__more`,children:a(`web.ui.autobar.more`,{count:t})}),e.kind===`schedule`&&n&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary btn--sm`,disabled:o,onClick:()=>{s(!0),n(e.schedule.scheduleId,e.schedule.runId).finally(()=>s(!1))},children:a(o?`web.ui.autobar.fixing`:`web.ui.autobar.fix`)}),e.kind===`goal`&&i&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary btn--sm`,onClick:()=>i(e.goal.sessionId),children:a(`web.ui.autobar.goal_open`)}),e.kind===`schedule`&&r&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:r,children:a(`web.ui.autobar.open`)})]})}function ZC({run:e,onOpen:t}){let n=R(),r=Vy(e.startedAt);return(0,L.jsxs)(`div`,{className:`autobar`,role:`status`,"data-kind":`running`,children:[(0,L.jsx)(`span`,{className:`autobar__sign`,children:(0,L.jsx)(`span`,{className:`autobar__spin`,"aria-hidden":`true`})}),(0,L.jsx)(`span`,{className:`autobar__who`,children:n(`web.ui.auto.running`,{name:e.name})}),(0,L.jsx)(`span`,{className:`autobar__more`,"aria-hidden":`true`,children:n(`web.ui.auto.running_for`,{dur:Sy(r)})}),t&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:t,children:n(`web.ui.autobar.open`)})]})}function QC(e,t){return e.updatedAt===t.updatedAt?e.id<t.id?-1:1:e.updatedAt===null?1:t.updatedAt===null?-1:e.updatedAt-t.updatedAt}function $C(e,t){let n=[...e.filter(e=>e.id!==t&&e.pendingApprovals+e.pendingQuestions>0)].sort(QC),r=n[0];return r?{row:r,more:n.length-1}:null}function ew(e){return e.pendingApprovals>0?e.pendingApprovals===1?{key:`web.ui.crossbar.approval_one`,count:1}:{key:`web.ui.crossbar.approval_n`,count:e.pendingApprovals}:e.pendingQuestions===1?{key:`web.ui.crossbar.question_one`,count:1}:{key:`web.ui.crossbar.question_n`,count:e.pendingQuestions}}function tw({pick:e,onOpen:t}){let n=R(),{lang:r}=ot(),{row:i,more:a}=e,o=i.title||n(`web.ui.topbar.untitled`),s=ew(i);return(0,L.jsxs)(`div`,{className:`crossbar`,role:`status`,children:[(0,L.jsx)(`span`,{className:`crossbar__sign`,children:(0,L.jsx)(z,{name:`flag`,size:`sm`})}),(0,L.jsx)(`span`,{className:`crossbar__who`,children:n(s.key,{title:o,count:s.count})}),!i.live&&(0,L.jsx)(`span`,{className:`crossbar__cold`,title:n(`web.ui.crossbar.cold_hint`),children:n(`web.ui.crossbar.cold`)}),i.pendingSince!==null&&(0,L.jsx)(`span`,{className:`crossbar__age`,title:n(`web.ui.crossbar.waited`),children:tr(i.pendingSince,Date.now(),r)}),a>0&&(0,L.jsx)(`span`,{className:`crossbar__more`,children:n(`web.ui.crossbar.more`,{count:a})}),(0,L.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>t(i.id),children:n(`web.ui.crossbar.go`)})]})}function nw({plan:e,remaining:t,onRespond:n}){let r=R(),[i,a]=v.useState(``),o=()=>{let e=i.trim();e?n(`plan-revise`,e):n(`plan-revise`)};return(0,L.jsxs)(UC,{kind:`plan`,icon:`list-checks`,title:r(`web.ui.dock.title_plan`),...t>0?{queue:r(`web.ui.dock.queue`,{count:t})}:{},exits:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(WC,{label:r(`approval.deny`),tone:`danger`,onClick:()=>n(`deny`)}),(0,L.jsx)(WC,{label:r(`approval.plan_revise`),onClick:o}),(0,L.jsx)(WC,{label:r(`approval.plan_readonly`),hint:e.canExecute?r(`web.ui.dock.plan_readonly_hint`):r(`web.ui.dock.plan_readonly_forced`),onClick:()=>n(`plan-readonly`)}),e.canExecute&&(0,L.jsx)(WC,{label:r(`approval.plan_execute`),hint:r(`web.ui.dock.plan_execute_hint`,{level:e.previousLevel}),tone:`primary`,primary:!0,onClick:()=>n(`plan-execute`)})]}),children:[(0,L.jsx)(`div`,{className:`dock__plan`,children:(0,L.jsx)(w_,{text:e.markdown})}),(0,L.jsxs)(`label`,{className:`dock__note`,children:[(0,L.jsx)(`span`,{children:r(`web.ui.dock.note_label`)}),(0,L.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:r(`web.ui.dock.note_placeholder`)})]})]})}function rw(){return{picked:[],free:``}}function iw(e,t){let n=t.free.trim();if(e.multiSelect){let e=n?[...t.picked,n]:t.picked;return e.length>0?e:void 0}return n||t.picked[0]}function aw(e,t){let n={};return e.questions.forEach((e,r)=>{let i=iw(e,t[r]??rw());i!==void 0&&(n[e.question]=i)}),n}var ow=e=>`q-tab-${e}`,sw=e=>`q-panel-${e}`;function cw({request:e,active:t,answered:n,onPick:r}){let i=R(),a=e.questions.length,o=(e,t)=>{let n=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:0;if(n===0)return;e.preventDefault();let i=(t+n+a)%a;r(i),e.currentTarget.parentElement?.querySelectorAll(`[role="tab"]`)[i]?.focus()};return(0,L.jsx)(`div`,{className:`qtabs`,role:`tablist`,"aria-label":i(`web.ui.dock.q_tabs`),children:e.questions.map((e,a)=>(0,L.jsxs)(`button`,{type:`button`,role:`tab`,id:ow(a),className:`qtabs__tab`,"aria-selected":a===t,"aria-controls":sw(a),tabIndex:a===t?0:-1,...n[a]?{"data-answered":``}:{},onClick:()=>r(a),onKeyDown:e=>o(e,a),children:[(0,L.jsx)(`span`,{className:`qtabs__ord`,children:a+1}),(0,L.jsx)(`span`,{className:`qtabs__name`,children:e.header.slice(0,12)}),n[a]&&(0,L.jsx)(z,{name:`check`,size:`sm`,label:i(`web.ui.dock.q_tab_answered`)})]},e.question))})}function lw({item:e,index:t,draft:n,onChange:r,onDone:i}){let a=R(),o=`q-${t}`,s=t=>{if(!e.multiSelect){r({...n,picked:[t]}),i();return}let a=n.picked.includes(t)?n.picked.filter(e=>e!==t):[...n.picked,t];r({...n,picked:a})};return(0,L.jsxs)(`fieldset`,{className:`question__item`,role:`tabpanel`,id:sw(t),"aria-labelledby":ow(t),children:[(0,L.jsx)(`legend`,{className:`question__legend`,children:e.question}),e.options.map(t=>(0,L.jsxs)(`label`,{className:`question__option`,children:[(0,L.jsx)(`input`,{type:e.multiSelect?`checkbox`:`radio`,name:o,"aria-label":t.label,checked:n.picked.includes(t.label),onChange:()=>s(t.label)}),(0,L.jsx)(`span`,{className:`question__label`,children:t.label}),t.description&&(0,L.jsx)(`small`,{children:t.description})]},t.label)),(0,L.jsxs)(`label`,{className:`question__free`,children:[(0,L.jsx)(`span`,{children:a(`web.ui.dock.q_free`)}),(0,L.jsx)(`input`,{type:`text`,value:n.free,onChange:e=>r({...n,free:e.target.value}),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),i())},placeholder:a(`web.ui.dock.q_free_placeholder`)})]})]})}function uw({request:e,remaining:t,onAnswer:n}){let r=R(),i=v.useRef(null),[a,o]=v.useState(()=>e.questions.map(rw)),[s,c]=v.useState(0);v.useEffect(()=>{o(e.questions.map(rw)),c(0),i.current?.querySelector(`input`)?.focus()},[e]);let l=v.useRef(!1);v.useEffect(()=>{l.current&&(l.current=!1,i.current?.querySelector(`input`)?.focus())},[s]);let u=t=>{t+1>=e.questions.length||(l.current=!0,c(t+1))},d=aw(e,a),f=Object.keys(d).length,p=e.questions.length-f;return(0,L.jsxs)(UC,{kind:`question`,icon:`info`,title:r(`web.ui.dock.title_question`),...t>0?{queue:r(`web.ui.dock.queue_questions`,{count:t})}:{},exits:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(WC,{label:r(`web.ui.dock.q_skip`),hint:r(`web.ui.dock.q_skip_hint`),onClick:()=>n(d,!0)}),(0,L.jsx)(WC,{label:r(`web.ui.dock.q_submit`),...p>0?{hint:r(`web.ui.dock.q_submit_partial`,{count:p})}:{},tone:`primary`,onClick:()=>n(d,p>0)})]}),children:[e.questions.length>1&&(0,L.jsx)(cw,{request:e,active:s,answered:e.questions.map((e,t)=>iw(e,a[t]??rw())!==void 0),onPick:c}),(0,L.jsx)(`div`,{ref:i,className:`question__list`,children:(()=>{let t=Math.min(s,e.questions.length-1),n=e.questions[t];return n?(0,L.jsx)(lw,{item:n,index:t,draft:a[t]??rw(),onChange:e=>o(n=>n.map((n,r)=>r===t?e:n)),onDone:()=>u(t)},n.question):null})()})]})}function dw({approvals:e,questions:t,onRespond:n,onAnswer:r,sessions:i,currentSessionId:a,onOpenSession:o,pending:s,onFixPending:c,onOpenAutomation:l,blockedGoals:u,running:d}){let f=e[0];if(f){let t=e.length-1,r=f.request.plan;return r?(0,L.jsx)(nw,{plan:r,remaining:t,onRespond:(e,t)=>t===void 0?n(f.requestId,e):n(f.requestId,e,t)}):(0,L.jsx)(qC,{request:f.request,remaining:t,onRespond:e=>n(f.requestId,e)})}let p=t[0];if(p)return(0,L.jsx)(uw,{request:p.request,remaining:t.length-1,onAnswer:(e,t)=>r(p.requestId,e,t)});let m=o?$C(i??[],a):null;if(m&&o)return(0,L.jsx)(tw,{pick:m,onOpen:o});let h=YC(s??[],u??[],a);return h?(0,L.jsx)(XC,{item:h.item,more:h.more,...c?{onFix:c}:{},...l?{onOpen:l}:{},...o?{onOpenSession:o}:{}}):d?(0,L.jsx)(ZC,{run:d,...l?{onOpen:l}:{}}):null}function fw(e,t){let n=[],r=(e,t)=>{e.type===`diff`&&n.push({key:t,filePath:e.filePath,...e.oldContent===void 0?{}:{oldContent:e.oldContent},...e.newContent===void 0?{}:{newContent:e.newContent},...e.seq===void 0?{}:{seq:e.seq}})};for(let t of e)r(t,`h${t.id}`);for(let[e,n]of t.entries())r(n,`p${e}`);return n}function pw({patches:e,onLocate:t}){let n=R(),r=ci(li(e));return e.length===0?(0,L.jsx)(ai,{icon:`file-diff`,title:n(`web.ui.inspector.no_patch`)}):(0,L.jsx)(`div`,{className:`patches`,children:e.map(e=>(0,L.jsxs)(`div`,{className:`patches__item`,children:[(0,L.jsx)(H_,{filePath:e.filePath,...e.oldContent===void 0?{}:{oldContent:e.oldContent},...e.newContent===void 0?{}:{newContent:e.newContent}}),e.seq!==void 0&&t&&(0,L.jsx)(di,{seq:e.seq,anchored:r(e.seq),onLocate:t,className:`patches__locate`,label:!0})]},e.key))})}var mw={goal:null,loading:!0,busy:!1};function hw(e){return e instanceof Error?e.message:String(e)}function gw(e,t,n,r=!0){let[i,a]=v.useState(mw),o=n===void 0||n===`idle`;v.useEffect(()=>{if(!r||!e||!t)return;let n=!0;return e.goal(t).then(({goal:e,limits:t})=>{n&&a({goal:e,limits:t,loading:!1,busy:!1})}).catch(e=>{n&&a({goal:null,loading:!1,busy:!1,error:hw(e)})}),()=>{n=!1}},[r,e,t,o]);let s=v.useCallback(async e=>{a(e=>({...e,busy:!0,error:void 0,refusal:void 0}));try{let t=await e();return a(e=>({...e,busy:!1,goal:t.ok?t.goal??null:e.goal,...t.ok?{}:{refusal:t.reason}})),t.ok}catch(e){return a(t=>({...t,busy:!1,error:hw(e)})),!1}},[]),c=v.useCallback(async(n,r)=>!e||!t?!1:s(()=>e.createGoal(t,{objective:n,...r===void 0?{}:{maxRounds:r}})),[e,t,s]),l=v.useCallback(async n=>!e||!t?!1:s(()=>e.updateGoal(t,n)),[e,t,s]),u=v.useCallback(async()=>!e||!t?!1:s(async()=>{let n=await e.clearGoal(t);return n.ok?{ok:!0,goal:null}:{ok:!1,...n.reason?{reason:n.reason}:{}}}),[e,t,s]);return{...i,create:c,update:l,clear:u}}function _w(e,t,n){let[r,i]=v.useState([]),a=t===void 0||t===`idle`;return v.useEffect(()=>{let t=!0;return e.blockedGoals().then(e=>{t&&i(e.items)}).catch(()=>{t&&i([])}),()=>{t=!1}},[e,a,n]),{items:r}}function vw(e,t){return e.map(e=>({root:e.root,name:e.name,current:e.root===t}))}function yw(e,t){let[n,r]=v.useState(!1),[i,a]=v.useState(),o=v.useCallback(()=>a(void 0),[]),s=v.useCallback((i,o)=>{n||(r(!0),a(void 0),e.createSession(i).then(e=>{r(!1),t(e.sessionId),o?.(e.sessionId)}).catch(e=>{r(!1);let t=e?.detail??(e instanceof Error?e.message:``);a(typeof t==`string`&&t?t:String(e))}))},[n,e,t]);return{create:v.useCallback((e,t)=>s({...e===null?{}:{workspace:e},create:!0,...t===void 0?{}:{role:t}}),[s]),createDeferred:v.useCallback(e=>s({create:!0,deferWorkspace:!0},e),[s]),busy:n,reset:o,...i===void 0?{}:{error:i}}}var bw={"unknown-session":`web.ui.slist.err_gone`,"bad-title":`web.ui.slist.err_title`,"no-session-store":`web.ui.slist.err_no_store`};function xw(e,t){let n=R(),{currentSessionId:r,homeSessionId:i,openSession:a,reloadCurrent:o}=t,s=v.useCallback(e=>{let t=e?.code,r=typeof t==`string`?bw[t]:void 0;if(r)return n(r);let i=e?.detail;return typeof i==`string`&&i?i:e instanceof Error?e.message:String(e)},[n]),c=v.useCallback(e=>{if(e===r){if(i&&i!==e&&a){a(i);return}o()}},[r,i,a,o]),l=v.useCallback(async t=>{try{await e.deleteSession(t)}catch(e){if(!Te(e))return{ok:!1,message:s(e)}}return c(t),{ok:!0}},[e,s,c]),u=v.useCallback(async(t,n)=>{try{await e.renameSession(t,n)}catch(e){return{ok:!1,message:s(e)}}return{ok:!0}},[e,s]),d=v.useCallback(async(t,n)=>{try{await e.setSessionArchived(t,n)}catch(e){return{ok:!1,message:s(e)}}return{ok:!0}},[e,s]);return v.useMemo(()=>({rename:u,remove:l,setArchived:d}),[u,l,d])}var Sw=[He,`light`,`dark`],Cw=`(prefers-color-scheme: dark)`;function ww(e,t){return e===`light`||e===`dark`?e:t?`dark`:`light`}function Tw(){return globalThis.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}function Ew(){return Ue(Le,Sw,He)}function Dw(e){We(Le,e)}function Ow(e){document.documentElement.dataset.theme=e}function kw(e){let t=globalThis.matchMedia?.(Cw);if(!t)return()=>void 0;let n=t=>e(t.matches);return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}function Aw(){let[e,t]=v.useState(Ew),[n,r]=v.useState(Tw);v.useEffect(()=>kw(r),[]);let i=ww(e,n);return v.useEffect(()=>Ow(i),[i]),{pref:e,theme:i,prefersDark:n,setPref:v.useCallback(e=>{Dw(e),t(e)},[])}}var jw={ok:`check`,warn:`triangle-alert`,failed:`circle-alert`,skipped:`info`};function Mw({about:e,diagnostics:t}){let n=R();if(!e)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:n(`web.ui.about.loading`)});let r=t??[];return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:n(`web.ui.about.g_machine`)}),(0,L.jsx)(Nw,{name:n(`web.ui.about.k_version`),value:n(`web.ui.about.version_line`,{version:e.version,node:e.nodeVersion,platform:e.platform})}),(0,L.jsx)(Nw,{name:n(`web.ui.about.k_home`),value:e.homeDir}),(0,L.jsx)(Nw,{name:n(`web.ui.about.k_db`),value:e.dbPath}),e.profile!==void 0&&(0,L.jsx)(Nw,{name:n(`web.ui.about.k_profile`),value:e.profile})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:n(`web.ui.about.g_diag`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:n(`web.ui.about.diag_lede`)}),r.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:n(`web.ui.about.diag_none`)}):(0,L.jsx)(`ul`,{className:`diag`,children:r.map((e,t)=>(0,L.jsxs)(`li`,{"data-level":e.status,children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:jw[e.status],size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.about.diag_line`,{module:e.module,detail:e.detail})})]},`diag-${t}`))})]})]})}function Nw({name:e,value:t}){return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:e})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(`code`,{className:`cmd`,children:t})})]})}var Pw=100;function Fw(e,t,n){let[r,i]=v.useState({breakdown:null,loading:!0}),[a,o]=v.useState(0);v.useEffect(()=>{if(!e||t===void 0||!n){i({breakdown:null,loading:!1});return}let r=!0;return i({breakdown:null,loading:!0}),e.context(t).then(e=>{r&&i({breakdown:e.breakdown,loading:!1})}).catch(()=>{r&&i({breakdown:null,loading:!1,error:!0})}),()=>{r=!1}},[e,t,n,a]);let s=v.useCallback(()=>o(e=>e+1),[]);return{...r,reload:s}}function Iw(e,t){return t.ran?t.after>=t.before?e(`web.ui.cmd.compact_no_change`,{n:t.before}):e(`web.ui.cmd.compact_done`,{before:t.before,after:t.after}):t.reason??e(`web.ui.cmd.compact_not_run`)}function Lw({client:e,sessionId:t,readOnly:n=!1}){let r=R(),i=!n&&e!==void 0&&t!==void 0,a=Fw(e,t,i),[o,s]=v.useState(!1),[c,l]=v.useState();if(!i)return null;if(a.loading)return(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.set.budget_loading`)});if(a.error)return(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.set.budget_error`)});let u=a.breakdown;if(!u)return null;let d=Math.max(...u.segments.map(e=>e.tokens),1),f=u.limit>0?Math.round(u.used/u.limit*100):null;return(0,L.jsxs)(`div`,{className:`setctx setbudget`,children:[(0,L.jsx)(`h3`,{className:`setbudget__title`,children:r(`web.ui.set.budget_title`)}),(0,L.jsx)(`p`,{className:`setctx__line`,children:f===null?r(`web.ui.set.budget_used_only`,{used:iv(u.used)}):r(`web.ui.set.budget_used`,{used:iv(u.used),limit:iv(u.limit),percent:String(f)})}),(0,L.jsx)(`ul`,{className:`setbudget__rows`,children:u.segments.map(e=>(0,L.jsxs)(`li`,{className:`setbudget__row`,children:[(0,L.jsx)(`span`,{className:`setbudget__label`,children:e.label}),(0,L.jsx)(`span`,{className:`setbudget__n`,title:String(e.tokens),children:iv(e.tokens)}),(0,L.jsx)(`span`,{className:`setbudget__bar`,"aria-hidden":`true`,children:(0,L.jsx)(`i`,{style:{width:`${Math.max(1,Math.round(e.tokens/d*Pw))}%`}})}),e.detail&&(0,L.jsx)(`span`,{className:`setbudget__detail`,children:e.detail})]},e.label))}),u.hints.length>0&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:u.hints.map(e=>(0,L.jsx)(`p`,{children:e},e))}),(0,L.jsxs)(`div`,{className:`setbudget__act`,children:[(0,L.jsx)(`button`,{className:`btn`,type:`button`,disabled:o,onClick:()=>{!e||t===void 0||(s(!0),l(void 0),e.compact(t).then(e=>{l(Iw(r,e)),a.reload()}).catch(()=>l(r(`web.ui.cmd.compact_failed`))).finally(()=>s(!1)))},children:r(o?`web.ui.set.budget_compacting`:`web.ui.set.budget_compact`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.set.budget_compact_hint`)})]}),c&&(0,L.jsx)(`p`,{className:`setbudget__done`,role:`status`,children:c})]})}var Rw=`compression.enabled`,zw=[Rw,`compression.threshold`];function Bw(e,t){return e.find(e=>e.key===t)?.value}function Vw({rows:e,compression:t}){let n=R(),r=Bw(e,Rw);if(!t)return null;let{contextLength:i,threshold:a}=t,o=ie(i,a),s=Math.round(a*100);return(0,L.jsxs)(`div`,{className:`setctx`,children:[(0,L.jsx)(`p`,{className:`setctx__line`,children:n(`web.ui.set.ctx_line`,{tokens:rv(Math.floor(o)),window:rv(i),percent:String(s)})}),(0,L.jsx)(`p`,{className:`field__hint`,children:n(`web.ui.set.ctx_line_caveat`)}),r===!1&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:n(`web.ui.set.ctx_off`)})})]})}var Hw={builtin:`web.ui.sec.layer_builtin`,plugin:`web.ui.sec.layer_plugin`,user:`web.ui.sec.layer_user`,env:`web.ui.sec.layer_env`,project:`web.ui.sec.layer_project`,projectLocal:`web.ui.sec.layer_project_local`,cli:`web.ui.sec.layer_cli`,managed:`web.ui.sec.layer_managed`,unknown:`web.ui.sec.layer_unknown`};function Uw(e,t){let n=Hw[e];return n?t(n):e}function Ww({error:e,noProvider:t=!1,globalScope:n=!1}){let r=R();return Te(e)?(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(t?`web.ui.settings.no_provider_elsewhere`:n?`web.ui.settings.history_only_global`:`web.ui.settings.history_only`)}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:e instanceof Error?e.message:String(e)})]})}var Gw=[`sessions.autoPrune`,`sessions.retentionDays`,`sessions.vacuumAfterPrune`],Kw=[`automation.keepRuns`,`automation.maxRecordingMb`],qw=[`sessionSearch.allWorkspaces`],Jw=[`memory.memoryCharLimit`,`memory.userCharLimit`,`memory.indexCharLimit`],Yw={model:[`model`,`models.utility`,`fallback.model`,`fallback.providers`],memory:[`contextLength`,`maxOutputTokens`,`maxTurns`,...zw,...Jw],budget:[`budget.maxCostUsd`,`budget.maxTokens`,`budget.warnAtPercent`,`budget.onUnknownPricing`],sessions:[...Gw,...Kw,...qw]},Xw={model:`web.ui.set.k_model`,"models.utility":`web.ui.set.k_models_utility`,"fallback.model":`web.ui.set.k_fallback_model`,"fallback.providers":`web.ui.set.k_fallback_providers`,contextLength:`web.ui.set.k_context_length`,maxOutputTokens:`web.ui.set.k_max_output_tokens`,maxTurns:`web.ui.set.k_max_turns`,"compression.enabled":`web.ui.set.k_compression_enabled`,"compression.threshold":`web.ui.set.k_compression_threshold`,"memory.memoryCharLimit":`web.ui.set.k_memory_char_limit`,"memory.userCharLimit":`web.ui.set.k_memory_user_char_limit`,"memory.indexCharLimit":`web.ui.set.k_memory_index_char_limit`,"budget.maxCostUsd":`web.ui.set.k_budget_max_cost`,"budget.maxTokens":`web.ui.set.k_budget_max_tokens`,"budget.warnAtPercent":`web.ui.set.k_budget_warn_at`,"budget.onUnknownPricing":`web.ui.set.k_budget_unknown_pricing`,"sessions.autoPrune":`web.ui.set.k_sessions_auto_prune`,"sessions.retentionDays":`web.ui.set.k_sessions_retention_days`,"sessions.vacuumAfterPrune":`web.ui.set.k_sessions_vacuum`,"automation.keepRuns":`web.ui.set.k_automation_keep_runs`,"automation.maxRecordingMb":`web.ui.set.k_automation_max_recording_mb`,"sessionSearch.allWorkspaces":`web.ui.set.k_session_search_all_workspaces`},Zw={"models.utility":`web.ui.set.h_models_utility`,"fallback.providers":`web.ui.set.h_fallback_providers`,contextLength:`web.ui.set.h_context_length`,maxOutputTokens:`web.ui.set.h_max_output_tokens`,maxTurns:`web.ui.set.h_max_turns`,"compression.enabled":`web.ui.set.h_compression_enabled`,"compression.threshold":`web.ui.set.h_compression_threshold`,"memory.memoryCharLimit":`web.ui.set.h_memory_char_limit`,"memory.userCharLimit":`web.ui.set.h_memory_user_char_limit`,"memory.indexCharLimit":`web.ui.set.h_memory_index_char_limit`,"budget.maxCostUsd":`web.ui.set.h_budget_max_cost`,"budget.maxTokens":`web.ui.set.h_budget_max_tokens`,"budget.warnAtPercent":`web.ui.set.h_budget_warn_at`,"budget.onUnknownPricing":`web.ui.set.h_budget_unknown_pricing`,"sessions.autoPrune":`web.ui.set.h_sessions_auto_prune`,"sessions.retentionDays":`web.ui.set.h_sessions_retention_days`,"sessions.vacuumAfterPrune":`web.ui.set.h_sessions_vacuum`,"automation.keepRuns":`web.ui.set.h_automation_keep_runs`,"automation.maxRecordingMb":`web.ui.set.h_automation_max_recording_mb`,"sessionSearch.allWorkspaces":`web.ui.set.h_session_search_all_workspaces`},Qw={"budget.maxCostUsd":`web.ui.set.ex_budget_max_cost`,"budget.maxTokens":`web.ui.set.ex_budget_max_tokens`,"budget.warnAtPercent":`web.ui.set.ex_budget_warn_at`},$w={model:{title:`web.ui.settings.pane_model`},memory:{title:`web.ui.settings.pane_memory`},budget:{title:`web.ui.settings.pane_budget`},sessions:{title:`web.ui.settings.pane_sessions_retention`}};function eT(e){return $w[e].title}function tT(e,t,n){let[r,i]=v.useState(),[a,o]=v.useState();v.useEffect(()=>{if(!n||!t)return;let r=!0;return o(void 0),e.settings(t).then(e=>{r&&i(e)}).catch(e=>{r&&o(e)}),()=>{r=!1}},[e,t,n]);let s=v.useCallback((e,t)=>{i(n=>n===void 0?n:{...n,rows:n.rows.map(n=>{if(n.key!==e)return n;let{key:r,...i}=t;if(i.value===n.value){let{pending:e,...t}=n;return t}return{...n,pending:i}})})},[]);return{...r?{data:r}:{},...a===void 0?{}:{error:a},noteWrite:s}}var nT=[`model`,`models.utility`,`fallback.model`],rT=`model`;function iT({catalog:e,client:t}){let n=R(),[r,i]=v.useState(``),[a,o]=v.useState(!1),[s,c]=v.useState(),[l,u]=v.useState(),d=r.trim()!==``&&r.trim()!==l?.value,f=()=>{if(!d||a)return;o(!0),c(void 0);let e=r.trim();t.setDefaultModel(e).then(t=>{u({path:t.path,value:e}),o(!1)}).catch(e=>{c(e instanceof Error?e.message:String(e)),o(!1)})};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`panelcol__lede`,children:n(`web.ui.set.no_provider_lede`)}),(0,L.jsx)(`div`,{className:`setgroup`,children:(0,L.jsx)(`div`,{className:`field`,children:(0,L.jsx)(Ft,{catalog:e,value:r,onChange:i,onPick:i,onSubmit:f,busy:a,keyField:!0,...d?{trailing:(0,L.jsx)(`span`,{className:`setwrite__dirty`,children:n(`web.ui.set.dirty`)})}:{}})})}),(0,L.jsx)(`p`,{className:`panelcol__lede`,children:n(`web.ui.set.no_provider_restart`)}),(0,L.jsxs)(`div`,{className:`setwrite`,children:[(0,L.jsx)(`div`,{className:`setwrite__actions`,children:(0,L.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:!d||a,onClick:f,children:n(a?`web.ui.set.no_provider_model_saving`:`web.ui.set.no_provider_model_save`)})}),s===void 0?l?(0,L.jsx)(`p`,{className:`setwrite__hint`,role:`status`,children:n(`web.ui.set.no_provider_model_saved`,{path:l.path})}):(0,L.jsx)(`p`,{className:`setwrite__hint`,children:n(`web.ui.set.no_provider_model`)}):(0,L.jsx)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:s})]})]})}function aT({pane:e,data:t,error:n,sessionId:r,client:i,compression:a,catalog:o,noProvider:s=!1,readOnly:c=!1,noteWrite:l}){let u=R();if(s&&e===`model`&&o)return(0,L.jsx)(iT,{catalog:o,client:i});if(!r)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:u(`web.ui.set.no_session`)});if(n!==void 0)return(0,L.jsx)(Ww,{error:n,noProvider:s,globalScope:!0});if(!t)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:u(`web.ui.set.loading`)});let{own:d,quota:f,search:p,orphans:m}=oT(e,t.rows);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[e===`sessions`&&(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u($w[e].title)}),d.map(e=>(0,L.jsx)(sT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{},...o&&nT.includes(e.key)?{catalog:o}:{}},e.key)),e===`memory`&&(0,L.jsx)(Vw,{rows:t.rows,...a?{compression:a}:{}}),e===`memory`&&(0,L.jsx)(Lw,{client:i,...r===void 0?{}:{sessionId:r},readOnly:c})]}),f.length>0&&(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(`web.ui.set.g_memory_quota`)}),f.map(e=>(0,L.jsx)(sT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]}),p.length>0&&(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(`web.ui.set.g_session_search`)}),p.map(e=>(0,L.jsx)(sT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]}),m.length>0&&(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:u(`web.ui.set.g_other`)}),m.map(e=>(0,L.jsx)(sT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]})]})}function oT(e,t){let n=new Set(Yw[e]),r=new Set(Object.values(Yw).flat()),i=Yw[e].map(e=>t.find(t=>t.key===e)).filter(e=>e!==void 0&&n.has(e.key)),a=e=>Jw.includes(e)||qw.includes(e);return{own:i.filter(e=>!a(e.key)),quota:i.filter(e=>Jw.includes(e.key)),search:i.filter(e=>qw.includes(e.key)),orphans:e===`model`?t.filter(e=>!r.has(e.key)):[]}}function sT({row:e,managedPath:t,client:n,sessionId:r,catalog:i,noteWrite:a}){let o=R(),s=Xw[e.key],c=Zw[e.key],[l,u]=v.useState(!1),[d,f]=v.useState(),p=d??e.pending;return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:s?o(s):e.key}),c&&(0,L.jsx)(bt,{text:o(c),about:s?o(s):e.key}),p&&(0,L.jsx)(uT,{pending:p}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":e.layer,children:Uw(e.layer,o)})]}),(0,L.jsxs)(`div`,{className:`field__ctl`,children:[(0,L.jsx)(`code`,{className:`cmd`,children:e.value===void 0?o(`web.ui.set.unset`):xT(e.value)}),e.writes.length>0&&!l&&(0,L.jsx)(`button`,{className:`btn btn--icon`,type:`button`,onClick:()=>u(!0),"aria-label":o(`web.ui.set.edit`),title:o(`web.ui.set.edit`),children:(0,L.jsx)(z,{name:`pencil`})})]}),e.layer===`managed`&&(0,L.jsx)(vT,{path:t}),l&&(0,L.jsx)(cT,{row:e,client:n,sessionId:r,...i?{catalog:i}:{},onDone:t=>{f(t),a?.(e.key,t),u(!1)},onCancel:()=>u(!1)}),p&&(0,L.jsx)(dT,{receipt:p,row:e}),e.overridable&&(0,L.jsx)(yT,{row:e,t:o})]})}function cT({row:e,client:t,sessionId:n,catalog:r,onDone:i,onCancel:a}){let o=R(),s=e.writes[0],c=e.value===void 0?``:xT(e.value),[l,u]=v.useState(c),[d,f]=v.useState(s.layer),[p,m]=v.useState(!1),[h,g]=v.useState(),_=e.writes.find(e=>e.layer===d)??s,y=pT(l,fT(e)),b=l!==c||d!==s.layer,x=gT(e),S=Qw[e.key],C=b&&y===null?mT(l,e,x!==null,o):null,w=()=>{y===null||!b||p||(m(!0),g(void 0),t.writeSetting(n,{key:e.key,layer:d,value:y}).then(i).catch(e=>{g(e instanceof Error?e.message:String(e)),m(!1)}))},T=b?(0,L.jsx)(`span`,{className:`setwrite__dirty`,children:o(`web.ui.set.dirty`)}):null;return(0,L.jsxs)(`div`,{className:`setwrite`,children:[r&&e.key===rT?(0,L.jsx)(Ft,{catalog:r,value:l,onChange:u,onPick:e=>u(e),onSubmit:w,busy:p,keyField:!0,...T?{trailing:T}:{}}):r?(0,L.jsx)(Rt,{catalog:r,value:l,onChange:u,onPick:e=>u(e),onSubmit:w,busy:p,idBase:`mpick-${e.key.replace(/\./g,`-`)}`,...T?{trailing:T}:{}}):(0,L.jsxs)(`div`,{className:`setwrite__line setwrite__value`,children:[(0,L.jsx)(`span`,{className:`setwrite__label`,children:o(`web.ui.set.new_value`)}),(0,L.jsxs)(`div`,{className:`setwrite__field`,children:[x?(0,L.jsx)(hT,{choices:x,value:l.trim(),busy:p,label:o(`web.ui.set.new_value`),onPick:u}):(0,L.jsx)(`input`,{className:`input input--mono input--wide`,value:l,disabled:p,"aria-label":o(`web.ui.set.new_value`),...S?{placeholder:o(S)}:{},onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&w()}}),T]})]}),(0,L.jsxs)(`div`,{className:`setwrite__line setwrite__layer`,children:[(0,L.jsx)(`span`,{className:`setwrite__label`,children:o(`web.ui.set.write_layer`)}),(0,L.jsx)(`div`,{className:`seg`,role:`group`,"aria-label":o(`web.ui.set.write_layer`),children:e.writes.map(e=>(0,L.jsx)(`button`,{type:`button`,"aria-pressed":e.layer===d,disabled:p,onClick:()=>f(e.layer),children:Uw(e.layer,o)},e.layer))})]}),(0,L.jsxs)(`p`,{className:`setwrite__label setwrite__where`,children:[(0,L.jsx)(`span`,{children:o(`web.ui.set.write_file`)}),(0,L.jsx)(`code`,{children:_.path})]}),(0,L.jsx)(lT,{write:_}),h&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:h})]}),(0,L.jsxs)(`div`,{className:`setwrite__line setwrite__foot`,children:[C&&(0,L.jsxs)(`p`,{className:`setwrite__blocked`,role:`status`,children:[(0,L.jsx)(z,{name:`circle-alert`,size:`sm`}),(0,L.jsx)(`span`,{children:C})]}),(0,L.jsxs)(`div`,{className:`setwrite__actions`,children:[(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,disabled:p,onClick:a,children:o(`web.ui.set.cancel`)}),(0,L.jsx)(`button`,{className:`btn btn--sm btn--primary`,type:`button`,disabled:p||!b||y===null,onClick:w,children:o(`web.ui.set.save`)})]})]})]})}function lT({write:e}){let t=R();return e.futile?(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.futile.reason===`shadowed`?t(`web.ui.set.futile_shadowed`,{layer:Uw(e.layer,t),by:e.futile.by?Uw(e.futile.by,t):``}):t(`web.ui.set.futile_untrusted`,{layer:Uw(e.layer,t)})})}):null}function uT({pending:e}){let t=R()(e.futile?`web.ui.set.pending_futile`:e.apply===`new-session`?`web.ui.set.pending_new_session`:`web.ui.set.pending_restart`);return(0,L.jsx)(`span`,{className:`field__pending`,"data-tone":e.futile?`warn`:`info`,title:t,children:t})}function dT({receipt:e,row:t}){let n=R();return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setwrite__receipt`,children:[(0,L.jsx)(`span`,{children:n(`web.ui.set.wrote`,{layer:Uw(e.layer,n),value:xT(e.value)})}),(0,L.jsx)(`code`,{children:e.path}),(0,L.jsx)(`span`,{children:n(e.apply===`new-session`?`web.ui.set.wrote_new_session`:`web.ui.set.wrote_stale`,{value:t.value===void 0?n(`web.ui.set.unset`):xT(t.value)})})]}),e.futile&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:e.futile.reason===`shadowed`?n(`web.ui.set.futile_shadowed`,{layer:Uw(e.layer,n),by:e.futile.by?Uw(e.futile.by,n):``}):n(`web.ui.set.futile_untrusted`,{layer:Uw(e.layer,n)})})})]})}function fT(e){return e.valueKind??`string`}function pT(e,t){let n=e.trim();if(n.length===0)return null;if(t===`boolean`)return n===`true`||n!==`false`&&null;if(t!==`number`)return n;let r=Number(n);return Number.isFinite(r)?r:null}function mT(e,t,n,r){return e.trim().length===0?r(n?`web.ui.set.blocked_pick`:`web.ui.set.blocked_empty`):fT(t)===`boolean`?r(`web.ui.set.blocked_boolean`):r(`web.ui.set.blocked_number`,{text:e.trim()})}function hT({choices:e,value:t,busy:n,label:r,onPick:i}){return(0,L.jsx)(`div`,{className:`seg`,role:`group`,"aria-label":r,children:e.map(e=>(0,L.jsx)(`button`,{type:`button`,"aria-pressed":e===t,disabled:n,onClick:()=>i(e),children:(0,L.jsx)(`code`,{children:e})},e))})}function gT(e){return e.choices&&e.choices.length>0?e.choices:fT(e)===`boolean`?_T:null}var _T=[`true`,`false`];function vT({path:e}){let t=R();return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`p`,{className:`lockline`,children:[(0,L.jsx)(z,{name:`lock`,size:`sm`}),(0,L.jsx)(`span`,{children:t(`web.ui.set.managed_locked`)})]}),e!==null&&(0,L.jsx)(`p`,{className:`field__hint`,children:(0,L.jsx)(`code`,{children:e})})]})}function yT({row:e,t}){let n=e.chain.findIndex(t=>t.layer===e.layer);return(0,L.jsxs)(`details`,{className:`why`,children:[(0,L.jsxs)(`summary`,{children:[(0,L.jsx)(z,{name:`chevron-right`,size:`sm`}),t(`web.ui.set.why`)]}),(0,L.jsx)(`dl`,{className:`chain`,children:e.chain.map((e,r)=>(0,L.jsx)(bT,{step:e,won:r===n,t},e.layer))})]})}function bT({step:e,won:t,t:n}){return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:Uw(e.layer,n)}),(0,L.jsx)(`dd`,{...t?{"data-win":``}:{},children:e.value===void 0?`—`:xT(e.value)}),(0,L.jsx)(`dd`,{className:`chain__win`,children:t?n(`web.ui.set.chain_win`):``})]})}function xT(e){return Array.isArray(e)?e.join(` → `):String(e)}var ST=`allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin`,CT=8e3;function wT(e,t){try{return new URL(e).hostname===t.hostname}catch{return!0}}function TT({item:e,here:t}){let n=R(),[r,i]=v.useState(!1),a=wT(e.url,t);return v.useEffect(()=>{if(a)return;i(!1);let e=setTimeout(()=>i(!0),CT);return()=>clearTimeout(e)},[e.url,a]),a?(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.settings.host_pane_same_origin`,{url:e.url})})]}):(0,L.jsxs)(`div`,{className:`hostpane`,children:[r&&(0,L.jsxs)(`p`,{className:`note hostpane__hint`,"data-tone":`info`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`info`,size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.settings.host_pane_slow`,{url:e.url})})]}),(0,L.jsx)(`iframe`,{className:`hostpane__frame`,title:e.label,src:e.url,sandbox:ST,referrerPolicy:`no-referrer`,onLoad:()=>i(!1)},e.url)]})}var ET={"dangerous-command":`web.ui.sec.audit_code_dangerous_command`,"sensitive-path":`web.ui.sec.audit_code_sensitive_path`,obfuscated:`web.ui.sec.audit_code_obfuscated`,"rule-match":`web.ui.sec.audit_code_rule_match`,"policy-rule":`web.ui.sec.audit_code_policy_rule`,"approval-cache":`web.ui.sec.audit_code_approval_cache`,"sandbox-isolation":`web.ui.sec.audit_code_sandbox_isolation`,"level-default":`web.ui.sec.audit_code_level_default`,"headless-preauthorized":`web.ui.sec.audit_code_headless_preauthorized`,"headless-unauthorized":`web.ui.sec.audit_code_headless_unauthorized`,"user-approved":`web.ui.sec.audit_code_user_approved`,"user-denied":`web.ui.sec.audit_code_user_denied`};function DT(e,t){let n=ET[e];return n?t(n):e}function OT({audit:e}){let t=R();if(e.rows.length===0)return null;let n=[...e.rows].reverse();return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:t(`web.ui.sec.g_audit`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.audit_lede`)}),(0,L.jsxs)(`div`,{className:`audit`,children:[(0,L.jsxs)(`div`,{className:`audit__head`,"aria-hidden":`true`,children:[(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_at`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_tool`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_type`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_target`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_outcome`)}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.audit_col_code`)})]}),n.map((e,n)=>(0,L.jsx)(kT,{row:e,t},`${e.at}:${e.toolName}:${n}`))]}),e.dropped>0&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.audit_dropped`,{dropped:e.dropped})})}),(0,L.jsx)(`div`,{className:`note-block`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.audit_ephemeral`)})})]})}function kT({row:e,t}){let n=new Date(e.at),r=DT(e.code,t);return(0,L.jsxs)(`div`,{className:`audit__row`,"data-outcome":e.outcome,children:[(0,L.jsx)(`span`,{className:`audit__at`,title:n.toLocaleString(),children:n.toLocaleTimeString()}),(0,L.jsx)(`span`,{className:`audit__tool`,title:e.toolName,children:e.toolName}),(0,L.jsx)(`span`,{className:`audit__type`,children:e.type}),(0,L.jsx)(`span`,{className:`audit__target`,title:e.target,children:e.target}),(0,L.jsx)(`span`,{className:`audit__outcome`,children:t(e.outcome===`granted`?`web.ui.sec.audit_granted`:`web.ui.sec.audit_denied`)}),(0,L.jsx)(`span`,{className:`audit__code`,title:r,children:r})]})}var AT={shadowed:`web.ui.sec.shadow_shadowed`,partial:`web.ui.sec.shadow_partial`,redundant:`web.ui.sec.shadow_redundant`},jT={deny:`web.ui.sec.cached_d_deny`,"allow-session":`web.ui.sec.cached_d_session`,"allow-always":`web.ui.sec.cached_d_always`};function MT({permission:e,client:t,sessionId:n}){let r=R(),{level:i,configured:a,configuredLayer:o,rules:s,shadows:c,managed:l}=e;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.sec.g_perm`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:r(`web.ui.sec.perm_field`)}),(0,L.jsx)(bt,{text:r(`web.ui.sec.perm_hint`),about:r(`web.ui.sec.perm_field`)})]}),(0,L.jsxs)(`div`,{className:`field__ctl`,children:[(0,L.jsxs)(`div`,{className:`permrow`,children:[(0,L.jsx)(`span`,{className:`permrow__when`,children:r(`web.ui.sec.perm_now`)}),(0,L.jsx)(`code`,{className:`cmd`,children:i===`unknown`?r(`web.ui.sec.perm_unknown`):i}),i!==a&&i!==`unknown`&&(0,L.jsx)(`span`,{className:`permrow__note`,children:r(`web.ui.sec.perm_now_changed`)})]}),(0,L.jsxs)(`div`,{className:`permrow`,children:[(0,L.jsx)(`span`,{className:`permrow__when`,children:r(`web.ui.sec.perm_default`)}),(0,L.jsx)(`code`,{className:`cmd`,children:a===`unknown`?r(`web.ui.sec.perm_unknown`):a}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":o,children:Uw(o,r)})]})]})]}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:r(`web.ui.sec.managed_field`)}),l.present&&(0,L.jsx)(`span`,{className:`layer`,"data-layer":`managed`,children:r(`web.ui.sec.layer_managed`)})]}),l.present?(0,L.jsxs)(`p`,{className:`lockline`,children:[(0,L.jsx)(z,{name:`lock`,size:`sm`}),(0,L.jsx)(`span`,{children:r(`web.ui.sec.managed_on`)})]}):(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.sec.managed_off`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:(0,L.jsx)(`code`,{children:l.path})}),l.rulesOnly&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`danger`,children:(0,L.jsx)(`p`,{children:r(`web.ui.sec.managed_rules_only`)})}),l.bypassDisabled&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:r(`web.ui.sec.managed_bypass_off`)})})]})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.sec.g_rules`)}),s.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.rules_empty`)}):(0,L.jsx)(`div`,{className:`rules`,children:s.map((e,t)=>(0,L.jsxs)(`div`,{className:`rule`,"data-verdict":e.verdict,children:[(0,L.jsx)(`span`,{className:`rule__verdict`,children:e.verdict}),(0,L.jsx)(`span`,{className:`rule__pattern`,title:e.rule,children:e.rule}),(0,L.jsx)(`span`,{className:`rule__src`,title:Uw(e.layer,r),children:Uw(e.layer,r)})]},`${e.verdict}:${e.rule}:${t}`))}),c.length>0&&(0,L.jsxs)(`div`,{className:`note-block`,"data-tone":`warn`,children:[(0,L.jsx)(`p`,{children:r(`web.ui.sec.shadow_lede`)}),c.map((e,t)=>(0,L.jsx)(`p`,{children:r(AT[e.kind],{rule:e.rule,by:e.by})},`${e.kind}:${e.rule}:${e.by}:${t}`))]})]}),(0,L.jsx)(NT,{cached:e.cached,level:i,client:t,sid:n})]})}function NT({cached:e,level:t,client:n,sid:r}){let i=R(),[a,o]=v.useState(null),[s,c]=v.useState(null),[l,u]=v.useState();v.useEffect(()=>{o(null),u(void 0)},[e]);let d=a??e;if(d.length===0)return null;let f=e=>{c(e),u(void 0),n.revokeApproval(r,e).then(e=>o(e.cached)).catch(e=>u(e instanceof Error?e.message:String(e))).finally(()=>c(null))};return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:i(`web.ui.sec.g_cached`)}),(0,L.jsx)(`p`,{className:`field__hint`,children:i(`web.ui.sec.cached_lede`)}),(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.sec.cached_not_rules`)})}),t===`bypass`&&(0,L.jsx)(`div`,{className:`note-block`,children:(0,L.jsx)(`p`,{children:i(`web.ui.sec.cached_bypass`)})}),(0,L.jsx)(`div`,{className:`approvals`,children:d.map(e=>(0,L.jsx)(PT,{row:e,t:i,busy:s===e.id,onRevoke:()=>f(e.id)},e.id))}),l!==void 0&&(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:i(`web.ui.sec.cached_failed`,{message:l})})]}),(0,L.jsx)(`p`,{className:`field__hint`,children:i(`web.ui.sec.cached_where`)})]})}function PT({row:e,t,busy:n,onRevoke:r}){let i=new Date(e.at);return(0,L.jsxs)(`div`,{className:`approval`,"data-decision":e.decision,children:[(0,L.jsx)(`span`,{className:`approval__decision`,children:t(jT[e.decision])}),(0,L.jsx)(`span`,{className:`approval__tool`,title:e.toolName,children:e.toolName}),(0,L.jsx)(`span`,{className:`approval__target`,title:e.target,children:e.target}),(0,L.jsx)(`span`,{className:`approval__scope`,children:t(e.scope===`prefix`?`web.ui.sec.cached_scope_prefix`:`web.ui.sec.cached_scope_exact`)}),(0,L.jsx)(`span`,{className:`approval__at`,title:i.toLocaleString(),children:i.toLocaleTimeString()}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm approval__revoke`,disabled:n,"aria-label":t(`web.ui.sec.cached_revoke_one`,{target:e.target}),onClick:r,children:t(n?`web.ui.sec.cached_revoking`:`web.ui.sec.cached_revoke`)})]})}function FT({policy:e}){let t=R(),{dirs:n,projectSkipped:r,skippedDir:i}=e;return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:t(`web.ui.sec.g_policy`)}),n.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:t(`web.ui.sec.policy_none`)}):(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`policy`,children:n.map(e=>(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsx)(`code`,{className:`slot__path`,children:e.dir}),(0,L.jsx)(`span`,{className:`slot__desc`,children:t(IT(e))}),(0,L.jsx)(`span`,{className:`slot__stat`,children:t(`web.ui.sec.policy_n`,{count:e.ruleCount})})]},`${e.source}:${e.dir}`))}),r&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.policy_skipped`,{dir:i??``})})})]})}function IT(e){return e.source===`user`?`web.ui.sec.policy_user`:`web.ui.sec.policy_project`}var LT={"os-isolated":`web.ui.sec.sb_os_isolated`,"backend-unavailable":`web.ui.sec.sb_backend_unavailable`,"backend-missing":`web.ui.sec.sb_backend_missing`,"platform-unsupported":`web.ui.sec.sb_platform_unsupported`};function RT({sandbox:e}){let t=R();return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:t(`web.ui.sec.g_sandbox`)}),e?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.sb_field`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(`code`,{className:`cmd`,children:e.backend})}),(0,L.jsx)(`p`,{className:`field__hint`,children:t(LT[e.reason],{backend:e.backend,platform:e.platform})})]}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.sb_switch`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(`code`,{className:`cmd`,children:t(e.terminalEnabled===!1?`web.ui.sec.sb_switch_off`:`web.ui.sec.sb_switch_on`)})}),e.terminalEnabled===!1?(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`danger`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.sb_switch_off_hint`)})}):(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.sb_switch_on_hint`)})]}),(0,L.jsx)(zT,{nameKey:`web.ui.sec.sb_covers`,tools:e.covers,emptyKey:`web.ui.sec.sb_covers_none`}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.sb_excludes`)})}),e.excludes.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.sb_excludes_none`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`field__ctl`,children:e.excludes.map(e=>(0,L.jsx)(`code`,{className:`cmd`,children:e},e))}),(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`danger`,children:(0,L.jsx)(`p`,{children:t(`web.ui.sec.sb_excludes_why`)})})]})]})]}):(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`triangle-alert`,size:`sm`})}),(0,L.jsx)(`span`,{children:t(`web.ui.sec.sb_absent_long`)})]})]})}function zT({nameKey:e,hintKey:t,tools:n,emptyKey:r}){let i=R();return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:i(e)})}),n.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:i(r)}):(0,L.jsx)(`div`,{className:`field__ctl`,children:n.map(e=>(0,L.jsx)(`code`,{className:`cmd`,children:e},e))}),t!==void 0&&(0,L.jsx)(`p`,{className:`field__hint`,children:i(t)})]})}function BT({workspace:e,known:t,client:n,sessionId:r,onRecheck:i}){let a=R(),[o,s]=v.useState(),c=t.filter(e=>e.exists),l=t.filter(e=>!e.exists),u=n&&r!==void 0&&i?e=>{s(void 0),n.forgetWorkspace(r,e).then(()=>i()).catch(e=>{s(e instanceof Error?e.message:a(`web.ui.sec.known_forget_failed`))})}:void 0;return(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:a(`web.ui.sec.g_space`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:a(`web.ui.sec.known_field`)})}),t.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:a(`web.ui.sec.known_empty`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(VT,{rows:c,t:a,...u?{onForget:u}:{}}),l.length>0&&(0,L.jsxs)(`details`,{className:`sec__gone`,children:[(0,L.jsx)(`summary`,{children:a(`web.ui.sec.known_gone_n`,{count:l.length})}),(0,L.jsx)(`p`,{className:`field__hint`,children:a(`web.ui.sec.known_gone_why`)}),(0,L.jsx)(VT,{rows:l,t:a,dim:!0,...u?{onForget:u}:{}})]})]}),(0,L.jsx)(`p`,{className:`field__hint`,children:a(`web.ui.sec.known_hint`)}),o!==void 0&&(0,L.jsx)(`p`,{className:`field__hint`,children:o})]}),e?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(WT,{workspace:e,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}}),(0,L.jsx)(GT,{workspace:e})]}):(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:a(`web.ui.sec.bound_field`)})}),(0,L.jsx)(`p`,{className:`field__hint`,children:a(`web.ui.sec.unbound`)})]})]})}function VT({rows:e,t,onForget:n,dim:r=!1}){return(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`space`,children:e.map(e=>(0,L.jsxs)(`li`,{className:r?`slot sec__gone-row`:`slot`,...e.current?{"aria-current":`true`}:{},children:[(0,L.jsx)(`code`,{className:`slot__path`,children:e.root}),(0,L.jsx)(`span`,{className:`slot__desc`,children:t(UT(e.level,e.trusted,e.execTrusted))}),(0,L.jsx)(`span`,{className:`slot__stat`,children:e.current?t(`web.ui.sec.ws_current`):n?(0,L.jsx)(`button`,{type:`button`,className:`sec__forget`,onClick:()=>n(e.root),title:t(`web.ui.sec.known_forget_title`),children:t(`web.ui.sec.known_forget`)}):``})]},e.root))})}function HT(e){return e.hookFiles.some(e=>e===`.epoch/hooks.json`||e===`.epoch\\hooks.json`)||e.policies>0}function UT(e,t,n=!0){return t?e===`trusted`?n?`web.ui.sec.ws_trusted`:`web.ui.sec.ws_trusted_read`:`web.ui.sec.ws_gate_off`:e===`untrusted`?`web.ui.sec.ws_refused`:`web.ui.sec.ws_unknown`}function WT({workspace:e,client:t,sessionId:n,onRecheck:r}){let i=R();return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:i(`web.ui.sec.main_field`,{name:e.name})}),(0,L.jsxs)(`span`,{className:`sec__trust`,"data-trust":e.trusted?`on`:`off`,children:[(0,L.jsx)(z,{name:e.trusted?`check`:`triangle-alert`,size:`sm`}),i(UT(e.trustLevel,e.trusted))]})]}),(0,L.jsx)(`p`,{className:`field__hint`,children:(0,L.jsx)(`code`,{children:e.root})}),(0,L.jsx)(`p`,{className:`field__hint`,children:i(`web.ui.sec.main_hint`)}),(0,L.jsx)(KT,{titleKey:`web.ui.sec.loaded_files`,emptyKey:`web.ui.sec.loaded_none`,files:e.instructionFiles}),e.skippedInstructionFiles.length>0&&(0,L.jsxs)(`div`,{className:`locked`,children:[(0,L.jsx)(`p`,{className:`locked__line`,children:i(`web.ui.sec.skipped_line`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:i(`web.ui.sec.skipped_why`)}),(0,L.jsx)(`ul`,{className:`sec__files`,children:e.skippedInstructionFiles.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))}),(0,L.jsx)(Jx,{root:e.root,want:`read`,available:e.trustRequest,...t?{client:t}:{},...n===void 0?{}:{sessionId:n},...r?{onRecheck:r}:{}})]}),e.trusted&&!e.execTrusted&&HT(e.inventory)&&(0,L.jsxs)(`div`,{className:`locked`,children:[(0,L.jsx)(`p`,{className:`locked__line`,children:i(`web.ui.sec.exec_line`)}),(0,L.jsx)(`p`,{className:`locked__why`,children:i(`web.ui.sec.exec_why`)}),(0,L.jsx)(Yx,{inventory:e.inventory,tier:`exec`}),(0,L.jsx)(Jx,{root:e.root,want:`exec`,available:e.trustRequest,...t?{client:t}:{},...n===void 0?{}:{sessionId:n},...r?{onRecheck:r}:{}})]})]})}function GT({workspace:e}){let t=R();return(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsxs)(`div`,{className:`field__head`,children:[(0,L.jsx)(`span`,{className:`field__name`,children:t(`web.ui.sec.extra_field`)}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":`cli`,children:t(`web.ui.sec.layer_add_dir`)})]}),e.extraRoots.length===0?(0,L.jsx)(`p`,{className:`sec__foot`,children:t(`web.ui.sec.extra_none`)}):(0,L.jsx)(`ul`,{className:`slots`,"data-kind":`root`,children:e.extraRoots.map(e=>(0,L.jsxs)(`li`,{className:`slot`,children:[(0,L.jsx)(`code`,{className:`slot__path`,children:e}),(0,L.jsx)(`span`,{className:`slot__desc`,children:t(`web.ui.sec.extra_desc`)})]},e))}),(0,L.jsx)(`p`,{className:`field__hint`,children:t(`web.ui.sec.extra_hint`)}),e.unloadedExtraInstructionFiles.length>0&&(0,L.jsxs)(`div`,{className:`note-block`,"data-tone":`warn`,children:[(0,L.jsx)(`p`,{children:t(`web.ui.sec.unloaded_extra`)}),(0,L.jsx)(`ul`,{className:`sec__files`,children:e.unloadedExtraInstructionFiles.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))}),(0,L.jsx)(`p`,{children:t(`web.ui.sec.unloaded_extra_way`)})]})]})}function KT({titleKey:e,emptyKey:t,files:n}){let r=R();return n.length===0?(0,L.jsx)(`p`,{className:`field__hint`,children:r(t)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`field__hint`,children:r(e)}),(0,L.jsx)(`ul`,{className:`sec__files`,children:n.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsx)(`code`,{children:e})},e))})]})}function qT({client:e,sessionId:t,noProvider:n=!1}){let r=R(),[i,a]=v.useState(),[o,s]=v.useState(),[c,l]=v.useState(0);return v.useEffect(()=>{if(!t)return;let n=!0;return s(void 0),e.security(t).then(e=>{n&&a(e)}).catch(e=>{n&&s(e)}),()=>{n=!1}},[e,t,c]),t?o===void 0?i?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`seccards`,children:YT(i,r).map(e=>(0,L.jsxs)(`div`,{className:`seccard`,...e.tone?{"data-tone":e.tone}:{},children:[(0,L.jsx)(`span`,{className:`seccard__k`,children:r(e.label)}),(0,L.jsx)(`b`,{className:`seccard__v`,children:e.value}),(0,L.jsx)(`span`,{className:`seccard__d`,children:e.desc})]},e.label))}),(0,L.jsx)(MT,{permission:i.permission,client:e,sessionId:t}),(0,L.jsx)(BT,{workspace:i.workspace,known:i.knownWorkspaces,client:e,sessionId:t,onRecheck:()=>l(e=>e+1)}),(0,L.jsx)(RT,{sandbox:i.sandbox}),(0,L.jsx)(FT,{policy:i.policy}),(0,L.jsx)(OT,{audit:i.audit})]}):(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.loading`)}):(0,L.jsx)(Ww,{error:o,noProvider:n}):(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.no_session`)})}function JT(e,t,n,r){return{label:e,value:t,desc:n,...r?{tone:r}:{}}}function YT(e,t){let{managed:n,level:r,rules:i,shadows:a}=e.permission,o=e.policy.dirs.reduce((e,t)=>e+t.ruleCount,0),s=n.present&&(n.rulesOnly||n.bypassDisabled),c=r===`bypass`||r===`unknown`?`warn`:s?`lock`:`ok`,l=a.some(e=>e.kind===`shadowed`);return[ZT(e.sandbox,t),JT(`web.ui.sec.card_perm`,r===`unknown`?t(`web.ui.sec.perm_unknown`):r,t(s?`web.ui.sec.perm_d_managed`:`web.ui.sec.perm_d_local`),c),XT(e,t),JT(`web.ui.sec.card_rules`,t(`web.ui.sec.rules_n`,{count:i.length,policy:o}),QT(i,t),l?`warn`:void 0)]}function XT(e,t){let n=e.workspace,r=e.knownWorkspaces.length,i=n?t(`web.ui.sec.space_at`,{root:n.root}):t(`web.ui.sec.space_unbound`);if(!n)return JT(`web.ui.sec.card_space`,t(`web.ui.sec.space_no_ws`,{count:r}),i,void 0);let a=n.inventory.instructionFiles.length>0||n.inventory.skills>0||n.inventory.roles>0||n.inventory.commands>0;return n.trusted?!n.execTrusted&&HT(n.inventory)?JT(`web.ui.sec.card_space`,t(`web.ui.sec.space_read_only`),i,`warn`):JT(`web.ui.sec.card_space`,t(`web.ui.sec.space_trusted`),i,`ok`):JT(`web.ui.sec.card_space`,t(`web.ui.sec.space_untrusted_ws`),i,a?`warn`:void 0)}function ZT(e,t){if(!e)return JT(`web.ui.sec.card_sandbox`,t(`web.ui.sec.sb_absent`),t(`web.ui.sec.sb_absent_d`),`warn`);let n={backend:e.backend,platform:e.platform};return JT(`web.ui.sec.card_sandbox`,e.level===`os`?t(`web.ui.sec.sb_os`,n):t(`web.ui.sec.sb_process`,n),t(LT[e.reason],n),e.level===`os`?`ok`:`warn`)}function QT(e,t){if(e.length===0)return t(`web.ui.sec.rules_none`);let n=new Map;for(let t of e)n.set(t.layer,(n.get(t.layer)??0)+1);return[...n].map(([e,n])=>`${Uw(e,t)} ${n}`).join(` / `)}var $T={binary:`message_part.file_binary`,denied:`message_part.file_denied`,unreadable:`message_part.file_unreadable`,"over-limit":`message_part.file_over_limit`,"not-restored":`message_part.file_not_restored`},eE={"invalid-reference":`message_part.session_invalid_reference`,"self-reference":`message_part.session_self_reference`,"too-many":`message_part.session_too_many`,"not-authorized":`message_part.session_not_authorized`,"budget-exceeded":`message_part.session_budget_exceeded`,"not-restored":`message_part.session_not_restored`};function tE(e,t){return e.omitted?t($T[e.omitted],{path:e.path}):e.truncatedTo===void 0?t(`message_part.file`,{path:e.path}):t(`message_part.file_truncated`,{path:e.path,bytes:e.truncatedTo})}function nE(e,t){let n=e.title??e.sessionId??e.ref;return e.omitted?t(eE[e.omitted],{name:n}):e.messageCount===void 0?t(`message_part.session`,{name:n}):e.totalMessages===void 0?t(`message_part.session_counted`,{name:n,count:e.messageCount}):t(`message_part.session_counted_of_total`,{name:n,count:e.messageCount,total:e.totalMessages})}function rE(e,t){return e.mediaType===void 0?t(`message_part.image_unknown_type`):t(`message_part.image`,{mediaType:e.mediaType})}function iE(e,t,n={}){return typeof e==`string`?e:e.map(e=>e.type===`text`?e.text:e.type===`file`?tE(e,t):e.type===`session`?nE(e,t):e.type===`image`?n.imagesShownAsThumbnails?void 0:rE(e,t):te(e)).filter(e=>e!==void 0).join(`
376
+ `)}function aE(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r?.type!==`tool_group`)continue;let i=r.tools.findIndex(e=>e.callId===t.toolCallId);if(i===-1)continue;let a=[...r.tools];a[i]={...a[i],status:`done`,result:t.output,...t.artifacts&&t.artifacts.length>0?{artifacts:t.artifacts}:{}},e[n]={...r,tools:a};return}}function oE(e,t){let n=t.reasoning?.trim();if(n&&e.push({type:`thinking`,thought:n}),t.content&&e.push({type:`assistant`,text:t.content}),!t.toolCalls||t.toolCalls.length===0)return;let r=t.toolCalls.map(e=>({callId:e.toolCallId,toolName:e.toolName,request:e.input,status:`pending`}));e.push({type:`tool_group`,tools:r})}var sE={stop:null,"max-turns":`web.ui.thread.finish_max_turns`,stalled:`web.ui.thread.finish_stalled`,looping:`web.ui.thread.finish_looping`,aborted:`web.ui.thread.finish_aborted`,"content-filter":`web.ui.thread.finish_filtered`,compliance:`web.ui.thread.finish_compliance`,length:`web.ui.thread.finish_length`,blank:`web.ui.thread.finish_blank`,"budget-exceeded":`web.ui.thread.finish_budget`,error:`web.ui.thread.finish_error`};function cE(e,t){if(!e)return null;let n=sE[e];return n?t(n):null}function lE(e,t){let n=[],r=[];for(let i of e)switch(i.role){case`user`:n.push({type:`user`,text:iE(i.parts??i.content,t,{imagesShownAsThumbnails:!0}),...uE(i)});break;case`assistant`:{let e=n.length;oE(n,i),i.turnFacts&&n.length>e&&r.push({itemIndex:n.length-1,facts:i.turnFacts});let a=cE(i.finishReason,t);a&&n.push({type:`info`,text:a});break}case`tool`:for(let e of i.toolResults??[])aE(n,e)}return{items:n,turns:r}}function uE(e){let t=[],n=[],r=[];for(let i of e.parts??[])if(i.type===`session`){let{type:e,text:n,...r}=i;t.push(r)}else if(i.type===`file`){let{type:e,text:t,...r}=i;n.push(r)}else if(i.type===`image`){let{type:e,...t}=i;r.push(t)}return{...t.length>0?{references:t}:{},...n.length>0?{files:n}:{},...r.length>0?{images:r}:{}}}function dE({sessionId:e,client:t}){let n=R(),[r,i]=v.useState(null),[a,o]=v.useState(!1);return v.useEffect(()=>{let r=!0;return i(null),o(!1),t.messages(e).then(e=>{if(!r)return;let t=lE(e.messages,n);i(zr(hr,{type:`replay`,items:t.items,turns:t.turns,approvals:[],questions:[],turn:`idle`,readOnly:`history`,...e.usage?{usage:e.usage}:{}}))},()=>{r&&o(!0)}),()=>{r=!1}},[t,e,n]),a?(0,L.jsx)(`p`,{className:`setsess__hint`,children:n(`web.ui.set.sess_body_failed`)}):r?(0,L.jsx)(sy,{history:r.history,pending:r.stream.pending,thought:r.stream.thought,thoughtParts:r.thoughtParts,approvals:r.approvals,turn:`idle`,turns:r.turns,heads:r.heads}):(0,L.jsx)(`p`,{className:`setsess__hint`,children:n(`web.ui.set.sess_body_loading`)})}function fE({client:e,onLoad:t,onOpenSession:n,acts:r,configPane:i}){let a=R(),{lang:o}=ot(),s=Date.now(),[c,l]=v.useState(null),[u,d]=v.useState(null),f=v.useCallback(()=>{t().then(e=>l(e),()=>l([]))},[t]);v.useEffect(f,[f]);let p=e=>{r&&r.setArchived(e,!1).then(()=>{f(),d(t=>t===e?null:t)})};return(0,L.jsx)(`div`,{className:`setsess`,children:(0,L.jsxs)(`div`,{className:`setsess__cols`,children:[(0,L.jsx)(`div`,{className:`setsess__list`,children:c===null?(0,L.jsx)(`p`,{className:`setsess__hint`,children:a(`web.ui.set.sess_loading`)}):c.length===0?(0,L.jsx)(`p`,{className:`setsess__hint`,children:a(`web.ui.slist.archived_empty`)}):(0,L.jsx)(`ul`,{className:`setsess__ul`,children:c.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{type:`button`,className:`setsess__row`,"aria-current":u===e.id?`true`:void 0,onClick:()=>d(e.id),children:[(0,L.jsx)(`span`,{className:`setsess__title`,children:e.title||a(`web.ui.topbar.untitled`)}),e.updatedAt!==null&&(0,L.jsx)(`span`,{className:`setsess__meta`,title:a(`web.ui.slist.updated_at`),children:tr(e.updatedAt,s,o)})]})},e.id))})}),(0,L.jsxs)(`div`,{className:`setsess__right`,children:[(0,L.jsx)(`div`,{className:`setsess__body`,children:u===null?(0,L.jsx)(`p`,{className:`setsess__hint`,children:a(`web.ui.set.sess_pick`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setsess__bar`,children:[r&&(0,L.jsxs)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:()=>p(u),children:[(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),(0,L.jsx)(`span`,{children:a(`web.ui.set.sess_unarchive`)})]}),n&&(0,L.jsxs)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:()=>n(u),children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),(0,L.jsx)(`span`,{children:a(`web.ui.set.sess_open`)})]})]}),(0,L.jsx)(dE,{sessionId:u,client:e})]})}),!Te(i.error)&&(0,L.jsx)(aT,{pane:`sessions`,...i})]})]})})}var pE=100,mE=4;function hE(e,t){return t===void 0?e:(e??0)+t}function gE(e){let t={},n=0,r=0,i;for(let a of e){let e=a.usage;e&&(n+=1,t.input=hE(t.input,e.inputTokens),t.output=hE(t.output,e.outputTokens),t.cacheHit=hE(t.cacheHit,e.cacheHitTokens),t.cacheWrite=hE(t.cacheWrite,e.cacheWriteTokens),t.reasoning=hE(t.reasoning,e.reasoningTokens),t.total=hE(t.total,A(e)),e.costUsd!==void 0&&(r+=1,i=(i??0)+e.costUsd))}return{turns:e.length,measured:n,priced:r,tokens:t,costUsd:i}}var _E=[{pick:`input`,label:`web.ui.spend.tok_input`},{pick:`cacheHit`,label:`web.ui.spend.tok_cache_hit`,tier:`cheap`},{pick:`cacheWrite`,label:`web.ui.spend.tok_cache_write`},{pick:`output`,label:`web.ui.spend.tok_output`}];function vE({sessionId:e,turns:t,hasHistory:n}){let r=R();if(e===void 0)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(`web.ui.spend.no_session`)});let i=gE(t);return(0,L.jsx)(L.Fragment,{children:i.turns===0?(0,L.jsx)(`p`,{className:`field__hint`,children:r(n?`web.ui.spend.none_recorded`:`web.ui.spend.none_yet`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.spend.g_total`)}),(0,L.jsx)(bE,{tally:i,t:r})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.spend.g_turns`)}),(0,L.jsx)(SE,{turns:t,t:r})]})]})})}function yE({label:e,value:t,title:n,badge:r}){return(0,L.jsxs)(`div`,{className:`spend__stat`,children:[(0,L.jsx)(`span`,{className:`spend__stat-n`,...n===void 0?{}:{title:n},children:t}),(0,L.jsxs)(`span`,{className:`spend__stat-k`,children:[(0,L.jsx)(`span`,{className:`spend__stat-label`,children:e}),r]})]})}function bE({tally:e,t}){let{turns:n,measured:r,priced:i,tokens:a,costUsd:o}=e,s=a.total,c=Jn();return(0,L.jsxs)(`div`,{className:`spend`,children:[(0,L.jsxs)(`div`,{className:`spend__hero`,children:[(0,L.jsx)(yE,{label:t(`web.ui.spend.col_turn`),value:String(n)}),r>0&&s!==void 0&&(0,L.jsx)(yE,{label:t(`web.ui.spend.col_tokens`),value:iv(s),title:rv(s)}),o!==void 0&&(0,L.jsx)(yE,{label:t(`web.ui.spend.col_cost`),value:c(o,mE),badge:(0,L.jsx)(`span`,{className:`est`,children:t(`web.ui.sidebar.cost_est`)})})]}),(r===0||s===void 0)&&(0,L.jsx)(`p`,{className:`spend__line`,children:t(`web.ui.spend.total_unmeasured`,{turns:String(n)})}),i>0&&i<r&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:t(`web.ui.spend.partial`,{priced:String(i),unpriced:String(r-i)})})}),(0,L.jsx)(xE,{tokens:a,t})]})}function xE({tokens:e,t}){let n=_E.map(t=>({...t,n:e[t.pick]})).filter(e=>e.n!==void 0);if(n.length===0)return null;let r=Math.max(...n.map(e=>e.n),1);return(0,L.jsx)(`ul`,{className:`spend__rows`,children:n.map(n=>(0,L.jsxs)(`li`,{className:`spend__row`,...`tier`in n?{"data-tier":n.tier}:{},children:[(0,L.jsx)(`span`,{className:`spend__label`,children:t(n.label)}),(0,L.jsx)(`span`,{className:`spend__n`,title:rv(n.n),children:iv(n.n)}),(0,L.jsx)(`span`,{className:`spend__bar`,"aria-hidden":`true`,children:(0,L.jsx)(`i`,{style:{width:`${Math.max(1,Math.round(n.n/r*pE))}%`}})}),n.pick===`output`&&e.reasoning!==void 0&&(0,L.jsx)(`span`,{className:`spend__detail`,children:t(`web.ui.spend.tok_reasoning`,{n:iv(e.reasoning)})}),n.pick===`cacheHit`&&(0,L.jsx)(`span`,{className:`spend__detail`,children:t(`web.ui.spend.tok_cache_note`)})]},n.pick))})}function SE({turns:e,t}){return(0,L.jsxs)(`div`,{className:`spendturns`,children:[(0,L.jsxs)(`div`,{className:`spendturns__head`,"aria-hidden":`true`,children:[(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_turn`)}),(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_model`)}),(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_tokens`)}),(0,L.jsx)(`span`,{children:t(`web.ui.spend.col_cost`)})]}),e.map((e,n)=>(0,L.jsx)(CE,{n:n+1,turn:e,t},e.itemId??e.seq))]})}function CE({n:e,turn:t,t:n}){let r=t.usage,i=r?A(r):void 0,a=r?.costUsd,o=Jn();return(0,L.jsxs)(`div`,{className:`spendturn`,children:[(0,L.jsx)(`span`,{className:`spendturn__idx`,children:n(`web.ui.spend.turn_n`,{n:String(e)})}),(0,L.jsx)(`span`,{className:`spendturn__model`,...t.model?{title:t.model}:{},children:t.model??``}),(0,L.jsx)(`span`,{className:`spendturn__tokens`,...i===void 0?{}:{title:rv(i)},children:i===void 0?``:iv(i)}),(0,L.jsx)(`span`,{className:`spendturn__usd`,children:a===void 0?``:o(a,mE)}),(0,L.jsx)(`span`,{className:`spendturn__meta`,children:r===void 0?n(`web.ui.spend.turn_unmeasured`):[...t.durationMs===void 0?[]:[n(`web.ui.spend.turn_took`,{d:av(t.durationMs)})],n(`web.ui.spend.turn_tools`,{n:String(t.toolCalls)})].join(` · `)})]})}var wE={file_read:`web.ui.tools.t_file_read`,file_write:`web.ui.tools.t_file_write`,command:`web.ui.tools.t_command`,network:`web.ui.tools.t_network`,code_exec:`web.ui.tools.t_code_exec`},TE=[`file_read`,`file_write`,`command`,`network`,`code_exec`],EE={allow:`web.ui.tools.v_allow`,ask:`web.ui.tools.v_ask`,deny:`web.ui.tools.v_deny`,depends:`web.ui.tools.v_depends`};function DE({client:e,sessionId:t,noProvider:n=!1}){let r=R(),[i,a]=v.useState(),[o,s]=v.useState();if(v.useEffect(()=>{if(!t)return;let n=!0;return s(void 0),e.tools(t).then(e=>{n&&a(e)}).catch(e=>{n&&s(e)}),()=>{n=!1}},[e,t]),!t)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(`web.ui.tools.no_session`)});if(o!==void 0)return(0,L.jsx)(Ww,{error:o,noProvider:n});if(!i)return(0,L.jsx)(`p`,{className:`panelcol__lede`,children:r(`web.ui.tools.loading`)});let c=i.tools.some(e=>e.gate!==void 0);return(0,L.jsxs)(L.Fragment,{children:[i.level===`unknown`&&(0,L.jsx)(`p`,{className:`field__hint`,children:r(`web.ui.tools.level_unknown`)}),!c&&(0,L.jsx)(`div`,{className:`note-block`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:r(i.level===`unknown`?`web.ui.tools.ungraded_no_session`:`web.ui.tools.ungraded_no_layer`)})}),c?OE(i.tools).map(e=>(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:e.type===null?r(`web.ui.tools.t_other`):r(wE[e.type])}),(0,L.jsx)(kE,{rows:e.rows,level:i.level,t:r})]},e.type)):(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:r(`web.ui.tools.g_all`)}),(0,L.jsx)(kE,{rows:i.tools,level:i.level,t:r})]})]})}function OE(e){let t=[];for(let n of TE){let r=e.filter(e=>e.type===n);r.length>0&&t.push({type:n,rows:r})}let n=e.filter(e=>!TE.includes(e.type));return n.length>0&&t.push({type:null,rows:n}),t}function kE({rows:e,level:t,t:n}){return(0,L.jsxs)(`div`,{className:`settools`,children:[(0,L.jsxs)(`div`,{className:`settools__head`,"aria-hidden":`true`,children:[(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_tool`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_source`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_desc`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_gate`)}),(0,L.jsx)(`span`,{children:n(`web.ui.tools.col_calls`)})]}),e.map(e=>(0,L.jsx)(AE,{row:e,level:t,t:n},e.name))]})}function AE({row:e,level:t,t:n}){let r=e.gate,i=jE(r,t,n);return(0,L.jsxs)(`div`,{className:`settool`,"data-verdict":r?.verdict??`none`,"data-calls":e.calls,children:[(0,L.jsx)(`span`,{className:`settool__name`,title:e.name,children:e.name}),(0,L.jsx)(`span`,{className:`settool__src`,title:e.source,children:e.source}),(0,L.jsx)(`span`,{className:`settool__desc`,title:e.description,children:e.description}),(0,L.jsxs)(`span`,{className:`settool__gate`,children:[(0,L.jsx)(`span`,{className:`settool__verdict`,children:n(r?EE[r.verdict]:`web.ui.tools.v_none`)}),(0,L.jsx)(`span`,{className:`settool__by`,title:i,children:i}),r!==void 0&&r.conditional>0&&(0,L.jsx)(bt,{className:`settool__cond`,text:n(`web.ui.tools.cond`,{count:r.conditional}),about:e.name})]}),(0,L.jsx)(`span`,{className:`settool__calls`,children:e.calls})]})}function jE(e,t,n){if(e===void 0)return n(`web.ui.tools.by_none`);if(e.by===`sandbox`)return n(`web.ui.tools.by_sandbox`);if(e.by===`level`)return n(`web.ui.tools.by_level`,{level:t});let r=e.rule??n(`web.ui.tools.by_rule`);return e.layer===void 0?r:`${r} · ${Uw(e.layer,n)}`}var ME={system:`web.ui.settings.theme_system`,light:`web.ui.settings.theme_light`,dark:`web.ui.settings.theme_dark`},NE={zh:`web.ui.settings.lang_zh`,en:`web.ui.settings.lang_en`};function PE({options:e,value:t,ariaLabel:n,onPick:r}){return(0,L.jsx)(`div`,{className:`seg`,role:`group`,"aria-label":n,children:e.map(e=>(0,L.jsx)(`button`,{type:`button`,"aria-pressed":e.value===t,onClick:()=>r(e.value),children:e.label},e.value))})}var FE=`blocks`;function IE(e){return ky(e,FE)}var LE=[`global`,`session`],RE=[{id:`model`,title:`web.ui.settings.pane_model`,icon:`cpu`,group:`global`},{id:`memory`,title:`web.ui.settings.pane_memory`,icon:`layers`,group:`global`},{id:`sessions`,title:`web.ui.settings.pane_sessions`,icon:`folder`,group:`global`},{id:`budget`,title:`web.ui.settings.pane_budget`,icon:`wallet`,group:`global`},{id:`appearance`,title:`web.ui.settings.appearance`,icon:`sun-moon`,group:`global`},{id:`security`,title:`web.ui.settings.security`,icon:`shield`,group:`session`},{id:`tools`,title:`web.ui.settings.pane_tools`,icon:`wrench`,group:`session`},{id:`spend`,title:`web.ui.settings.pane_spend`,icon:`gauge`,group:`session`},{id:`about`,title:`web.ui.settings.pane_about`,icon:`info`,group:null}];function zE(e){return e===`model`||e===`memory`||e===`budget`||e===`sessions`}function BE(e){let t=new Set(e.hidden??[]),n=RE.filter(n=>(n.id!==`sessions`||e.archived)&&!t.has(n.id)),r=e=>e===null?LE.length:LE.indexOf(e);return[...n].sort((e,t)=>r(e.group)-r(t.group))}function VE({onBack:e,client:t,sessionId:n,compression:r,about:i,diagnostics:a,initialPane:o,readOnly:s=!1,noProvider:c=!1,turns:l,hasHistory:u=!1,onLoadArchived:d,onOpenSession:f,acts:p,hiddenPanes:m,hostPanes:h}){let g=R(),_=v.useMemo(()=>BE({...m?{hidden:m}:{},archived:d!==void 0}),[d,m]),y=v.useMemo(()=>h??[],[h]),b=v.useMemo(()=>{let e=new Set(_.map(e=>e.id)),t=[],n=e=>({id:e.id,icon:IE(e.icon),label:e.label,host:!0});for(let e of _){for(let r of y)r.before===e.id&&t.push(n(r));t.push({id:e.id,icon:e.icon,label:e.title,host:!1})}for(let r of y)(r.before===void 0||!e.has(r.before))&&t.push(n(r));return t},[_,y]),[x,S]=v.useState(o??`model`),C=v.useMemo(()=>b.map(e=>e.id),[b]),w=C.includes(x)?x:C[0],T=y.find(e=>e.id===w),E=T===void 0?w:void 0,D=tT(t,n,E!==void 0&&zE(E)),O=pt(t);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`nav`,{className:`navcol`,children:[(0,L.jsxs)(`div`,{className:`navcol__head`,children:[g(`web.ui.settings.title`),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm navcol__back`,type:`button`,onClick:e,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),g(`web.ui.settings.back`)]})]}),(0,L.jsx)(`ul`,{className:`navcol__list`,children:b.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{type:`button`,"data-pane":e.id,...e.host?{"data-host-pane":`true`}:{},...e.id===w?{"aria-current":`true`}:{},onClick:()=>S(e.id),children:[(0,L.jsx)(`span`,{className:`navcol__sign`,children:(0,L.jsx)(z,{name:e.icon,size:`lg`})}),(0,L.jsx)(`span`,{children:e.host?e.label:g(e.label)}),(0,L.jsx)(`span`,{})]})},e.id))})]}),w!==void 0&&(0,L.jsxs)(`section`,{className:`panelcol`,"data-pane":w,...T?{"data-host-pane":`true`}:{},children:[(0,L.jsx)(`div`,{className:`panelcol__head`,children:(0,L.jsx)(`h1`,{className:`panelcol__title`,children:T?T.label:g(HE(E))})}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:T?(0,L.jsx)(TT,{item:T,here:new URL(window.location.href)}):w===`sessions`?(0,L.jsx)(fE,{client:t,onLoad:d,...f?{onOpenSession:f}:{},...p?{acts:p}:{},configPane:{sessionId:n,client:t,readOnly:s,noProvider:c,...D}}):(0,L.jsx)(`div`,{className:`panelcol__inner`,children:E!==void 0&&zE(E)?(0,L.jsx)(aT,{pane:E,sessionId:n,client:t,catalog:O,readOnly:s,noProvider:c,...r?{compression:r}:{},...D}):E===`security`?(0,L.jsx)(qT,{client:t,sessionId:n,noProvider:c}):E===`tools`?(0,L.jsx)(DE,{client:t,sessionId:n,noProvider:c}):E===`spend`?(0,L.jsx)(vE,{sessionId:n,turns:l??[],hasHistory:u}):E===`about`?(0,L.jsx)(Mw,{...i?{about:i}:{},...a?{diagnostics:a}:{}}):(0,L.jsx)(UE,{})})})]})]})}function HE(e){return e===`sessions`?`web.ui.settings.pane_sessions`:zE(e)?eT(e):e===`security`?`web.ui.settings.security`:e===`tools`?`web.ui.settings.pane_tools`:e===`spend`?`web.ui.settings.pane_spend`:e===`about`?`web.ui.settings.pane_about`:`web.ui.settings.appearance`}function UE(){let e=R(),t=Aw(),n=ot(),r=Sw.map(t=>({value:t,label:e(ME[t])})),i=[{value:He,label:e(`web.ui.settings.lang_system`)},...he.map(t=>({value:t,label:e(NE[t])}))];return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:e(`web.ui.settings.theme`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:e(`web.ui.settings.theme_field`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(PE,{options:r,value:t.pref,ariaLabel:e(`web.ui.settings.theme_field`),onPick:t.setPref})})]})]}),(0,L.jsxs)(`div`,{className:`setgroup`,children:[(0,L.jsx)(`h2`,{className:`setgroup__title`,children:e(`web.ui.settings.lang`)}),(0,L.jsxs)(`div`,{className:`field`,children:[(0,L.jsx)(`div`,{className:`field__head`,children:(0,L.jsx)(`span`,{className:`field__name`,children:e(`web.ui.settings.lang_field`)})}),(0,L.jsx)(`div`,{className:`field__ctl`,children:(0,L.jsx)(PE,{options:i,value:n.pref,ariaLabel:e(`web.ui.settings.lang_field`),onPick:n.setPref})})]})]})]})}var WE=1500;function GE({row:e,root:t,onBack:n}){let r=R(),i=st(e.path),a=e.path.slice(0,e.path.length-i.length),o=YE(t,e.path),s=e.newContent??``,c=v.useMemo(()=>M_(s),[s]),l=v.useMemo(()=>N_(s),[s]),u=c.kind===`text`?void 0:j_[c.kind];return(0,L.jsxs)(`div`,{className:`preview`,children:[(0,L.jsxs)(`header`,{className:`preview__head`,children:[(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon`,type:`button`,"aria-label":r(`web.ui.art.back`),title:r(`web.ui.art.back`),onClick:n,children:(0,L.jsx)(z,{name:`arrow-left`})}),(0,L.jsxs)(`span`,{className:`path preview__path`,title:o,children:[(0,L.jsx)(`i`,{children:a}),(0,L.jsx)(`b`,{children:i})]}),(0,L.jsx)(`span`,{className:`preview__ro`,children:r(`web.ui.art.readonly`)}),(0,L.jsx)(JE,{path:o,t:r})]}),(0,L.jsx)(`p`,{className:`preview__meta`,children:qE(e,c,r)}),(0,L.jsx)(`div`,{className:`preview__body`,children:u?(0,L.jsx)(B,{text:r(u.why)}):(0,L.jsx)(`pre`,{className:`preview__code`,children:(0,L.jsx)(`code`,{children:l.text})})}),!u&&l.clipped&&(0,L.jsx)(B,{className:`preview__note`,text:KE(l,r)}),!u&&c.lost>0&&(0,L.jsx)(B,{className:`preview__note`,text:r(`web.ui.art.lossy`,{count:c.lost})}),(0,L.jsx)(B,{className:`preview__note`,text:r(`web.ui.art.binary_note`)})]})}function KE(e,t){return e.by===`chars`?t(`web.ui.art.clip_chars`,{line:e.shownLines,total:e.totalLines}):t(`web.ui.art.clip_lines`,{shown:e.shownLines,total:e.totalLines})}function qE(e,t,n){let r=e.newContent??``,i=[];return t.kind===`text`?(i.push(n(`web.ui.art.lines`,{count:bi(r)})),t.lost===0&&i.push(Ci(new TextEncoder().encode(r).length))):i.push(n(j_[t.kind].label)),e.tool&&i.push(n(e.oldContent===void 0?`web.ui.art.by_created`:`web.ui.art.by_changed`,{tool:e.tool})),i.join(` · `)}function JE({path:e,t}){let[n,r]=v.useState(!1);return v.useEffect(()=>{if(!n)return;let e=setTimeout(()=>r(!1),WE);return()=>clearTimeout(e)},[n]),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm`,type:`button`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>r(!0))},children:[(0,L.jsx)(z,{name:n?`check`:`copy`,size:`sm`}),t(n?`web.ui.thread.copied`:`web.ui.art.copy_path`)]})}function YE(e,t){if(e===null||XE(t))return t;let n=e.includes(`\\`)?`\\`:`/`;return`${e.endsWith(n)?e.slice(0,-1):e}${n}${n===`\\`?t.replaceAll(`/`,`\\`):t}`}function XE(e){return/^([a-zA-Z]:[\\/]|[\\/])/.test(e)}function ZE(e,t,n){let[r,i]=v.useState({phase:`loading`}),a=R();return v.useEffect(()=>{if(!t||!n){i({phase:`error`,message:a(`web.ui.file.no_session`)});return}let r=!0;return i({phase:`loading`}),(async()=>{try{let o=(await t.fileStat(n,[e])).files[0];if(!r)return;if(!o)return i({phase:`error`,message:a(`web.ui.file.no_answer`)});if(!o.ok)return i({phase:`error`,message:a(QE[o.refusal])});if(o.kind!==`text`)return i({phase:`ready`,stat:o});let s=await t.fileText(n,e);r&&i({phase:`ready`,stat:o,text:s.text})}catch(e){r&&i({phase:`error`,message:$E(e,a)})}})(),()=>{r=!1}},[e,t,n,a]),r}var QE={denied:`web.ui.file.denied`,missing:`web.ui.file.missing`,"not-a-file":`web.ui.file.not_a_file`,"too-large":`web.ui.file.too_large`,unreadable:`web.ui.file.unreadable`};function $E(e,t){let n=e instanceof Error?e.message:String(e);return n.trim()===``?t(`web.ui.file.unreadable`):n}function eD({path:e,client:t,sessionId:n,onBack:r}){let i=R(),a=ZE(e,t,n),o=st(e),s=e.slice(0,e.length-o.length);return(0,L.jsxs)(`div`,{className:`preview`,children:[(0,L.jsxs)(`header`,{className:`preview__head`,children:[(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon`,type:`button`,"aria-label":i(`web.ui.art.back`),title:i(`web.ui.art.back`),onClick:r,children:(0,L.jsx)(z,{name:`arrow-left`})}),(0,L.jsxs)(`span`,{className:`path preview__path`,title:e,children:[(0,L.jsx)(`i`,{children:s}),(0,L.jsx)(`b`,{children:o})]}),(0,L.jsx)(`span`,{className:`preview__ro`,children:i(`web.ui.art.readonly`)}),(0,L.jsx)(JE,{path:e,t:i})]}),a.phase===`loading`&&(0,L.jsx)(`p`,{className:`preview__meta`,children:i(`web.ui.file.loading`)}),a.phase===`error`&&(0,L.jsx)(`div`,{className:`preview__body`,children:(0,L.jsx)(B,{tone:`error`,text:a.message})}),a.phase===`ready`&&a.stat.ok&&(0,L.jsx)(tD,{stat:a.stat,...a.text===void 0?{}:{text:a.text},path:e,...t?{client:t}:{},...n?{sessionId:n}:{}})]})}function tD({stat:e,text:t,path:n,client:r,sessionId:i}){let a=R(),o=r&&i?r.fileBytesUrl(i,n):void 0;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`p`,{className:`preview__meta`,children:iD(e,t,a)}),(0,L.jsx)(`div`,{className:`preview__body`,children:(0,L.jsx)(nD,{kind:e.kind,...t===void 0?{}:{text:t},...o?{src:o}:{}})}),t!==void 0&&(0,L.jsx)(rD,{text:t}),e.kind===`opaque`&&(0,L.jsx)(aD,{stat:e,path:n,...r?{client:r}:{},...i?{sessionId:i}:{},...o?{src:o}:{}})]})}function nD({kind:e,text:t,src:n}){let r=R();if(e===`text`){let e=M_(t??``);return e.kind===`text`?(0,L.jsx)(`pre`,{className:`preview__code`,children:(0,L.jsx)(`code`,{children:N_(t??``).text})}):(0,L.jsx)(B,{text:r(j_[e.kind].why)})}return n?e===`image`?(0,L.jsx)(`img`,{className:`preview__media`,src:n,alt:``}):e===`pdf`?(0,L.jsx)(`iframe`,{className:`preview__pdf`,src:n,title:``}):e===`audio`?(0,L.jsx)(`audio`,{className:`preview__media`,src:n,controls:!0}):e===`video`?(0,L.jsx)(`video`,{className:`preview__media`,src:n,controls:!0}):(0,L.jsx)(B,{text:r(`web.ui.file.opaque`)}):(0,L.jsx)(B,{text:r(`web.ui.file.no_session`)})}function rD({text:e}){let t=R(),n=N_(e);return n.clipped?(0,L.jsx)(B,{className:`preview__note`,text:n.by===`chars`?t(`web.ui.art.clip_chars`,{line:n.shownLines,total:n.totalLines}):t(`web.ui.art.clip_lines`,{shown:n.shownLines,total:n.totalLines})}):null}function iD(e,t,n){let r=[];return t!==void 0&&r.push(n(`web.ui.art.lines`,{count:bi(t)})),r.push(Ci(e.bytes)),e.mtimeMs>0&&r.push(new Date(e.mtimeMs).toLocaleString()),r.join(` · `)}function aD({stat:e,path:t,client:n,sessionId:r,src:i}){let a=R(),[o,s]=v.useState();return(0,L.jsxs)(`div`,{className:`preview__acts`,children:[e.openable&&n&&r&&(0,L.jsxs)(`button`,{className:`btn btn--sm`,type:`button`,onClick:()=>{s(void 0),n.openFile(r,t).then(e=>s(e.ok?void 0:e.message)).catch(e=>s($E(e,a)))},children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),a(`web.ui.file.open_with_app`)]}),i&&(0,L.jsx)(`a`,{className:`btn btn--ghost btn--sm`,href:i,download:st(t),children:a(`web.ui.file.download`)}),o&&(0,L.jsx)(B,{tone:`error`,className:`preview__note`,text:o})]})}function oD({limits:e,busy:t,initial:n,mode:r,onSubmit:i,onCancel:a}){let o=R(),[s,c]=v.useState(n??``),[l,u]=v.useState(``);return(0,L.jsxs)(`form`,{className:`goal__form`,onSubmit:e=>{e.preventDefault();let t=l.trim();i(s,t===``?void 0:Number(t))},children:[(0,L.jsxs)(`label`,{className:`goal__field`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:o(`web.ui.goal.objective_label`)}),(0,L.jsx)(`textarea`,{className:`goal__text`,value:s,rows:3,disabled:t,placeholder:o(`web.ui.goal.objective_hint`),...e?{maxLength:e.maxObjectiveChars}:{},onChange:e=>c(e.target.value)})]}),r===void 0&&(0,L.jsxs)(`label`,{className:`goal__field goal__field--inline`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:o(`web.ui.goal.budget_label`)}),(0,L.jsx)(`input`,{className:`goal__num`,type:`number`,inputMode:`numeric`,min:1,value:l,disabled:t,placeholder:e?String(e.defaultMaxRounds):``,...e?{max:e.maxRounds}:{},onChange:e=>u(e.target.value)}),e&&(0,L.jsx)(`span`,{className:`goal__hint`,children:o(`web.ui.goal.budget_hint`,{n:e.defaultMaxRounds,max:e.maxRounds})})]}),(0,L.jsxs)(`div`,{className:`goal__acts`,children:[(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary btn--sm`,disabled:t,children:o(r===`edit`?`web.ui.goal.save_edit`:`web.ui.goal.save_create`)}),a&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:a,children:o(`web.ui.goal.cancel`)})]})]})}function sD({limits:e,busy:t,initial:n,onSubmit:r,onCancel:i}){let a=R(),[o,s]=v.useState(String(n));return(0,L.jsxs)(`form`,{className:`goal__form`,onSubmit:e=>{e.preventDefault(),r(Number(o.trim()))},children:[(0,L.jsxs)(`label`,{className:`goal__field goal__field--inline`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:a(`web.ui.goal.budget_label`)}),(0,L.jsx)(`input`,{className:`goal__num`,type:`number`,inputMode:`numeric`,min:1,value:o,disabled:t,...e?{max:e.maxRounds}:{},onChange:e=>s(e.target.value)})]}),(0,L.jsx)(B,{text:a(`web.ui.goal.budget_warn`)}),(0,L.jsxs)(`div`,{className:`goal__acts`,children:[(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary btn--sm`,disabled:t,children:a(`web.ui.goal.save_budget`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:i,children:a(`web.ui.goal.cancel`)})]})]})}function cD({limits:e,busy:t,onSubmit:n,onCancel:r}){let i=R(),[a,o]=v.useState(``);return(0,L.jsxs)(`form`,{className:`goal__form`,onSubmit:e=>{e.preventDefault(),n(a)},children:[(0,L.jsxs)(`label`,{className:`goal__field`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:i(`web.ui.goal.evidence_label`)}),(0,L.jsx)(`textarea`,{className:`goal__text`,value:a,rows:2,disabled:t,placeholder:i(`web.ui.goal.evidence_hint`),...e?{maxLength:e.maxReasonChars}:{},onChange:e=>o(e.target.value)})]}),(0,L.jsxs)(`div`,{className:`goal__acts`,children:[(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary btn--sm`,disabled:t,children:i(`web.ui.goal.save_complete`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:r,children:i(`web.ui.goal.cancel`)})]})]})}var lD={active:{icon:`target`,key:`web.ui.goal.phase_active`},paused:{icon:`square`,key:`web.ui.goal.phase_paused`},blocked:{icon:`triangle-alert`,key:`web.ui.goal.phase_blocked`,tone:`warn`},complete:{icon:`check`,key:`web.ui.goal.phase_complete`,tone:`done`}},uD={busy:`web.ui.goal.refuse.busy`,"no-goal":`web.ui.goal.refuse.no_goal`,"empty-objective":`web.ui.goal.refuse.empty_objective`,"objective-too-long":`web.ui.goal.refuse.objective_too_long`,"bad-budget":`web.ui.goal.refuse.bad_budget`,"bad-block-code":`web.ui.goal.refuse.bad_block_code`,"empty-block-message":`web.ui.goal.refuse.empty_block_message`,"empty-evidence":`web.ui.goal.refuse.empty_evidence`,"wrong-phase":`web.ui.goal.refuse.wrong_phase`,unavailable:`web.ui.goal.refuse.unavailable`};function dD(e){let t=R(),{goal:n,limits:r,loading:i,error:a,refusal:o,busy:s}=e;return a?(0,L.jsx)(B,{text:a,tone:`error`}):n===null?i?(0,L.jsx)(ai,{icon:`target`,title:t(`web.ui.goal.loading`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(ai,{icon:`target`,title:t(`web.ui.goal.empty`),hint:t(`web.ui.goal.empty_hint`)}),o&&(0,L.jsx)(mD,{code:o,limits:r}),(0,L.jsx)(oD,{...r?{limits:r}:{},busy:s,onSubmit:(t,n)=>e.create(t,n)})]}):(0,L.jsx)(fD,{goal:n,...r?{limits:r}:{},busy:s,...o?{refusal:o}:{},onUpdate:e.update,onClear:e.clear})}function fD({goal:e,limits:t,busy:n,refusal:r,onUpdate:i,onClear:a}){let o=R(),[s,c]=v.useState(null),l=lD[e.phase],u=async e=>{await i(e)&&c(null)};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`p`,{className:`goal__phase`,...l.tone?{"data-tone":l.tone}:{},children:[(0,L.jsx)(`span`,{className:`goal__sign`,children:(0,L.jsx)(z,{name:l.icon,size:`sm`})}),(0,L.jsx)(`span`,{children:o(l.key)}),(0,L.jsx)(`span`,{className:`goal__rounds`,title:o(`web.ui.goal.rounds_hint`),children:o(`web.ui.goal.rounds`,{used:e.roundsUsed,max:e.maxRounds})})]}),(0,L.jsx)(`p`,{className:`goal__objective`,children:e.objective}),e.block&&(0,L.jsxs)(`div`,{className:`goal__block`,role:`note`,children:[(0,L.jsx)(`code`,{className:`goal__code`,children:e.block.code}),(0,L.jsx)(`span`,{children:e.block.message})]}),e.completeEvidence!==void 0&&(0,L.jsxs)(`div`,{className:`goal__evidence`,children:[(0,L.jsx)(`span`,{className:`goal__label`,children:o(`web.ui.goal.evidence`)}),(0,L.jsx)(`span`,{children:e.completeEvidence})]}),r&&(0,L.jsx)(mD,{code:r,limits:t}),(0,L.jsx)(pD,{goal:e,busy:n,open:s,onOpen:c,onUpdate:u,onClear:a}),s===`edit`&&(0,L.jsx)(oD,{...t?{limits:t}:{},busy:n,initial:e.objective,mode:`edit`,onSubmit:e=>u({action:`edit`,objective:e}),onCancel:()=>c(null)}),s===`budget`&&(0,L.jsx)(sD,{...t?{limits:t}:{},busy:n,initial:e.maxRounds,onSubmit:e=>u({action:`budget`,maxRounds:e}),onCancel:()=>c(null)}),s===`complete`&&(0,L.jsx)(cD,{...t?{limits:t}:{},busy:n,onSubmit:e=>u({action:`complete`,evidence:e}),onCancel:()=>c(null)})]})}function pD({goal:e,busy:t,open:n,onOpen:r,onUpdate:i,onClear:a}){let o=R(),s=e.phase===`complete`;return(0,L.jsxs)(`div`,{className:`goal__acts`,children:[!s&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,"aria-pressed":n===`edit`,onClick:()=>r(n===`edit`?null:`edit`),children:o(`web.ui.goal.act_edit`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,"aria-pressed":n===`budget`,onClick:()=>r(n===`budget`?null:`budget`),children:o(`web.ui.goal.act_budget`)}),e.phase===`active`?(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,onClick:()=>void i({action:`pause`}),children:o(`web.ui.goal.act_pause`)}):(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,onClick:()=>void i({action:`resume`}),children:o(`web.ui.goal.act_resume`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:t,"aria-pressed":n===`complete`,onClick:()=>r(n===`complete`?null:`complete`),children:o(`web.ui.goal.act_complete`)})]}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,disabled:t,onClick:()=>void a(),children:o(`web.ui.goal.act_clear`)})]})}function mD({code:e,limits:t}){let n=R(),r=t===void 0?void 0:{chars:t.maxObjectiveChars,max:t.maxRounds};return(0,L.jsx)(B,{text:n(uD[e],r),tone:`error`})}function hD(e,t,n,r=!0){let[i,a]=v.useState({markdown:null,loading:!0}),o=n===void 0||n===`idle`;return v.useEffect(()=>{if(!r||!e||!t||!o)return;let n=!0;return e.plan(t).then(({plan:e})=>{n&&a({markdown:e,loading:!1})}).catch(e=>{n&&a({markdown:null,loading:!1,error:e instanceof Error?e.message:String(e)})}),()=>{n=!1}},[r,e,t,o]),i}function gD({markdown:e,loading:t,error:n}){let r=R();return n?(0,L.jsx)(_D,{text:n}):e===null?t?(0,L.jsx)(ai,{icon:`list-checks`,title:r(`web.ui.plan.loading`)}):(0,L.jsx)(ai,{icon:`list-checks`,title:r(`web.ui.plan.empty`),hint:r(`web.ui.plan.empty_hint`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`header`,{className:`ipane__head`,children:[(0,L.jsx)(`h3`,{className:`ipane__title`,children:r(`web.ui.inspector.plan`)}),(0,L.jsx)(bt,{text:r(`web.ui.plan.note`),about:r(`web.ui.inspector.plan`)})]}),(0,L.jsx)(w_,{text:e})]})}function _D({text:e}){return(0,L.jsxs)(`p`,{className:`note`,"data-tone":`error`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`note__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`span`,{children:e})]})}var vD=`data-dense`;function yD(e){let t=v.useRef(null);return v.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{e.removeAttribute(vD);let t=getComputedStyle(e),n=e=>Number.parseFloat(e)||0,r=[...e.children],i=n(t.paddingInlineStart)+n(t.paddingInlineEnd);i+=n(t.columnGap)*Math.max(0,r.length-1);for(let e of r)i+=e.getBoundingClientRect().width;i-e.clientWidth>1&&e.setAttribute(vD,`true`)};n();let r=new ResizeObserver(n);return r.observe(e),()=>r.disconnect()},[e]),t}var bD=[{id:`patch`,key:`web.ui.inspector.patch`,icon:`file-diff`},{id:`output`,key:`web.ui.inspector.output`,icon:`terminal`},{id:`artifact`,key:`web.ui.inspector.artifact`,icon:`layers`},{id:`plan`,key:`web.ui.inspector.plan`,icon:`list-checks`},{id:`goal`,key:`web.ui.inspector.goal`,icon:`target`}];function xD({patches:e=[],onLocate:t,client:n,sessionId:r,turn:i,previewPath:a,onClosePreviewPath:o,toolArtifacts:s=[],resolveArtifact:c,tasks:l=hy,rootRef:u}){let d=R(),[f,p]=v.useState(bD[0]?.id??`patch`),[m,h]=v.useState(),g=hi(n,r,i),_=v.useMemo(()=>fi(g.changes,e),[g.changes,e]),y=hD(n,r,i,f===`plan`),b=gw(n,r,i,f===`goal`),x={patch:e.length,artifact:_.length,output:l.tasks.length},S=yD(bD.map(e=>`${d(e.key)}:${x[e.id]??0}`).join(`|`));return(0,L.jsxs)(`aside`,{className:`inspector`,"data-mode":m||a!==void 0?`preview`:`list`,ref:u,tabIndex:-1,"aria-label":d(`web.ui.topbar.inspector`),children:[(0,L.jsx)(`div`,{className:`tabs`,role:`tablist`,ref:S,children:bD.map(e=>(0,L.jsxs)(`button`,{id:`tab-${e.id}`,className:`tab`,role:`tab`,type:`button`,"aria-selected":e.id===f,"aria-controls":`panel-${e.id}`,"aria-label":d(e.key),title:d(e.key),onClick:()=>p(e.id),children:[(0,L.jsx)(z,{name:e.icon,size:`sm`}),(0,L.jsx)(`span`,{className:`tab__label`,children:d(e.key)}),(x[e.id]??0)>0&&(0,L.jsx)(`span`,{className:`tab__n`,children:x[e.id]})]},e.id))}),(0,L.jsx)(`div`,{className:`inspector__body`,children:bD.map(n=>(0,L.jsx)(`section`,{className:`inspector__panel`,id:`panel-${n.id}`,role:`tabpanel`,"aria-labelledby":`tab-${n.id}`,hidden:f!==n.id,children:n.id===`patch`?(0,L.jsx)(pw,{patches:e,...t?{onLocate:t}:{}}):n.id===`artifact`?(0,L.jsx)(gi,{changes:_,artifacts:s,bound:g.root!==null,loading:g.loading,...g.error===void 0?{}:{error:g.error},onOpen:h,...t?{onLocate:t}:{},...c?{resolveArtifact:c}:{}}):n.id===`plan`?(0,L.jsx)(gD,{markdown:y.markdown,loading:y.loading,...y.error===void 0?{}:{error:y.error}}):n.id===`goal`?(0,L.jsx)(dD,{goal:b.goal,...b.limits?{limits:b.limits}:{},loading:b.loading,busy:b.busy,...b.error===void 0?{}:{error:b.error},...b.refusal===void 0?{}:{refusal:b.refusal},create:b.create,update:b.update,clear:b.clear}):n.id===`output`?(0,L.jsx)(_y,{tasks:l.tasks,loading:l.loading,...l.error===void 0?{}:{error:l.error}}):null},n.id))}),a===void 0?m&&(0,L.jsx)(GE,{row:m,root:g.root,onBack:()=>h(void 0)}):(0,L.jsx)(eD,{path:a,...n?{client:n}:{},...r?{sessionId:r}:{},onBack:()=>o?.()})]})}function SD(e,t,n){let[r,i]=v.useState(),[a,o]=v.useState(),[s,c]=v.useState([]),[l,u]=v.useState(),[d,f]=v.useState(!1);v.useEffect(()=>{if(!t){i(void 0);return}let n=!0;return e.model(t).then(e=>{n&&(i(e.selection??void 0),o(e.configured??void 0))}).catch(()=>void 0),()=>{n=!1}},[e,t]);let p=v.useCallback(async r=>{if(!t)return null;f(!0);try{let a=await e.setModel(t,r,n===void 0?{}:{usedTokens:n});return a.ok?(i(a.selection),c(a.caveats),u(void 0),a):(u(a.rejection),c([]),a)}catch{return u(void 0),null}finally{f(!1)}},[e,t,n]);return{...r?{selection:r}:{},...a?{configured:a}:{},switchTo:p,caveats:s,...l?{rejection:l}:{},busy:d}}function CD({draft:e,busy:t,onChange:n,onSubmit:r}){let i=R();return(0,L.jsxs)(`form`,{className:`menu__search`,onSubmit:t=>{t.preventDefault();let n=e.trim();n&&r(n)},children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`text`,value:e,placeholder:i(`web.ui.model.placeholder`),"aria-label":i(`web.ui.model.placeholder`),disabled:t,onChange:e=>n(e.target.value)})]})}function wD(e,t){switch(t.code){case`no-credential`:return t.envVar?e(`web.ui.model.rej_no_credential`,{provider:t.provider,env:t.envVar}):e(`web.ui.model.rej_no_credential_bare`,{provider:t.provider});case`images-unsupported`:return e(`web.ui.model.rej_images`,{model:t.model});case`context-overflow`:return e(`web.ui.model.rej_context`,{model:t.model,used:ED(t.usedTokens),window:ED(t.contextLength)})}}function TD(e,t){switch(t.code){case`context-tight`:return e(`web.ui.model.cav_context_tight`,{model:t.model,used:ED(t.usedTokens),window:ED(t.contextLength)});case`no-tools`:return e(`web.ui.model.cav_no_tools`,{model:t.model})}}function ED(e){return e>=1e3?`${Math.round(e/1e3)}k`:String(e)}function DD({model:e,catalog:t,onConfigureKey:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(``),c=v.useRef(null),l=v.useCallback(()=>a(!1),[]),u=e.selection;if(!u)return null;let d=async n=>{let r=await e.switchTo(Ut(n,t?.provider,u.provider));r?.ok&&r.caveats.length===0&&(s(``),a(!1))};return(0,L.jsxs)(`span`,{children:[(0,L.jsxs)(`button`,{type:`button`,ref:c,className:`btn btn--ghost`,"aria-expanded":i,"aria-haspopup":`true`,"aria-label":r(`web.ui.model.trigger`,{model:u.model}),onClick:()=>a(e=>!e),children:[u.model,(0,L.jsx)(z,{name:`chevron-down`,size:`sm`})]}),(0,L.jsxs)(Et,{open:i,onClose:l,triggerRef:c,label:r(`web.ui.model.label`),children:[(0,L.jsx)(Dt,{checked:!0,disabled:!0,title:u.model,detail:r(`web.ui.model.current`,{provider:u.provider}),onSelect:()=>void 0}),e.configured&&(0,L.jsx)(Dt,{disabled:u.origin===`config`||e.busy,title:r(`web.ui.model.reset`),detail:e.configured,onSelect:()=>void d(null)}),(0,L.jsx)(Ot,{}),t?(0,L.jsx)(Ft,{catalog:t,value:o,onChange:s,busy:e.busy,onPick:e=>void d(e),onSubmit:e=>void d(e),...n?{onConfigureKey:()=>{a(!1),n()}}:{}}):(0,L.jsx)(CD,{draft:o,busy:e.busy,onChange:s,onSubmit:e=>void d(e)}),e.rejection&&(0,L.jsx)(kt,{tone:`warn`,children:(0,L.jsx)(`p`,{children:wD(r,e.rejection)})}),e.caveats.length>0&&(0,L.jsx)(kt,{tone:`warn`,children:e.caveats.map(e=>(0,L.jsx)(`p`,{children:TD(r,e)},e.code))})]})]})}function OD({handle:e}){let t=R();return(0,L.jsxs)(`div`,{className:`newsession`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row`,type:`button`,disabled:e.busy,onClick:()=>e.createDeferred(),children:[(0,L.jsx)(z,{name:`plus`}),t(`web.ui.newsession.open`)]}),e.error&&(0,L.jsx)(`p`,{className:`newsession__err`,role:`alert`,children:e.error})]})}function kD(e,t){let n=e.map(e=>e.code===void 0?t(`web.ui.sidebar.diag_fix_line`,{status:e.status,module:e.module,detail:e.detail}):t(`web.ui.sidebar.diag_fix_line_code`,{status:e.status,module:e.module,detail:e.detail,code:e.code}));return[t(`web.ui.sidebar.diag_fix_intro`),``,...n].join(`
377
+ `)}var AD=`nav-capability-sub`;function jD({open:e,onToggle:t,onOpen:n,current:r,pluginUpdates:i}){let a=R(),o=r!==void 0;return(0,L.jsxs)(`div`,{className:`navgroup`,children:[(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row navgroup__head`,type:`button`,"aria-expanded":e,"aria-controls":AD,...o?{"aria-disabled":!0}:{},onClick:()=>{o||t()},children:[(0,L.jsx)(z,{name:`user-round`}),a(`web.ui.cap.title`),(0,L.jsx)(`span`,{className:`navgroup__mark`,"aria-hidden":`true`,children:(0,L.jsx)(z,{name:e?`chevron-down`:`chevron-right`,size:`sm`})})]}),e&&(0,L.jsx)(`ul`,{className:`navgroup__sub`,id:AD,children:mS.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row`,type:`button`,"aria-current":e.id===r?`true`:void 0,onClick:()=>n(e.id),children:[(0,L.jsx)(z,{name:e.icon,size:`sm`}),a(e.title),e.id===`plugins`&&i!==void 0&&i>0&&(0,L.jsx)(`span`,{className:`btn__dot btn__dot--accent`,title:a(`web.ui.sidebar.plugin_updates`,{count:i}),"aria-label":a(`web.ui.sidebar.plugin_updates`,{count:i})})]})},e.id))})]})}var MD={warn:`triangle-alert`,failed:`circle-alert`},ND=1,PD=`sidebar-diag-list`,FD=200;function ID({sessionId:e,brand:t,usage:n,usageScope:r,maxCostUsd:i,diagnostics:a,diagnosticsHandoff:o,newSession:s,acts:c,menu:l,userMenu:u,onMenuSelect:d,user:f,onOpenSettings:p,onOpenCapability:m,capTab:h,onOpenAutomation:g,pendingAutomation:_,automationRunning:y,pluginUpdates:b,onCapExpandedChange:x,sessions:S,hits:C,onOpenSession:w,onSearch:T,rootRef:E}){let D=R(),O=Jn(),[ee,te]=v.useState(``),[k,ne]=v.useState(!1),[re,ie]=v.useState(!1),ae=C??S,A=h!==void 0||k;v.useEffect(()=>{x?.(A)},[A,x]),v.useEffect(()=>{let e=setTimeout(()=>T(ee.trim()||void 0),FD);return()=>clearTimeout(e)},[ee,T]);let j=v.useCallback(()=>{T(ee.trim()||void 0)},[T,ee]),oe=(a??[]).filter(e=>e.status===`failed`||e.status===`warn`),se=oe.length>ND,ce=oe.filter(e=>e.status===`failed`).length,le=oe.length-ce,ue=ce>0&&le>0?D(`web.ui.sidebar.diag_sum`,{total:oe.length,failed:ce}):ce>0?D(`web.ui.sidebar.diag_sum_failed`,{failed:ce}):D(`web.ui.sidebar.diag_sum_warn`,{warn:le}),M=o===void 0?null:(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--icon diagsum__act`,"aria-label":D(`web.ui.sidebar.diag_fix`),title:D(`web.ui.sidebar.diag_fix`),onClick:()=>o.onHandoff(kD(o.all,D)),children:(0,L.jsx)(z,{name:`wrench`,size:`sm`})}),de=e&&r===`session`&&i!==void 0&&n?.costUsd!==void 0?{spent:n.costUsd,limit:i}:void 0,fe=de!==void 0,pe=fe||oe.length>0,N=l!==void 0&&l.length>0&&d!==void 0?{items:l,onSelect:d}:void 0,me=u!==void 0&&u.length>0&&d!==void 0?{items:u,onSelect:d}:void 0;return(0,L.jsxs)(`aside`,{className:`sidebar`,ref:E,tabIndex:-1,"aria-label":D(`web.ui.topbar.sidebar`),children:[(0,L.jsxs)(`div`,{className:`sidebar__head`,children:[t!==void 0&&(0,L.jsx)(`span`,{className:`brandslot`,title:t,children:t}),(0,L.jsxs)(`label`,{className:`ssearch`,children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`search`,value:ee,onChange:e=>te(e.target.value),placeholder:D(`web.ui.sidebar.search`),"aria-label":D(`web.ui.sidebar.search`)})]})]}),(0,L.jsxs)(`div`,{className:`sidebar__scroll`,children:[(0,L.jsxs)(`div`,{className:`actions`,children:[s&&(0,L.jsx)(OD,{...s}),(0,L.jsx)(jD,{open:A,onToggle:()=>ne(e=>!e),onOpen:m,...h?{current:h}:{},...b===void 0?{}:{pluginUpdates:b}}),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--row`,type:`button`,onClick:g,children:[(0,L.jsx)(z,{name:`rotate-ccw`}),D(`web.ui.sidebar.automation`),y===!0&&(0,L.jsx)(`span`,{className:`btn__spin`,title:D(`web.ui.sidebar.automation_running`),"aria-label":D(`web.ui.sidebar.automation_running`)}),_!==void 0&&_>0&&(0,L.jsx)(`span`,{className:`btn__dot`,title:D(`web.ui.sidebar.automation_pending`,{count:_}),"aria-label":D(`web.ui.sidebar.automation_pending`,{count:_})})]})]}),(0,L.jsx)(rr,{sessions:ae,...e?{currentSessionId:e}:{},onOpen:w,searching:ee.trim().length>0,...c?{acts:{...c,reload:j}}:{},...s?{newSession:s.handle}:{}})]}),pe&&(0,L.jsxs)(`div`,{className:`sidebar__foot`,children:[fe&&(0,L.jsx)(`div`,{className:`meter`,children:de&&(0,L.jsxs)(`div`,{className:`meter__row`,children:[(0,L.jsx)(`span`,{children:D(`web.ui.sidebar.cost`)}),(0,L.jsxs)(`b`,{children:[D(`web.ui.sidebar.cost_of`,{spent:O(de.spent,3),limit:O(de.limit,2)}),` `,(0,L.jsx)(`span`,{className:`est`,children:D(`web.ui.sidebar.cost_est`)})]})]})}),se&&(0,L.jsxs)(`div`,{className:`diagsum-row`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`diagsum`,"data-level":ce>0?`failed`:`warn`,"aria-expanded":re,"aria-controls":PD,"aria-label":re?D(`web.ui.sidebar.diag_less`):D(`web.ui.sidebar.diag_more`,{count:oe.length}),onClick:()=>ie(e=>!e),children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:MD[ce>0?`failed`:`warn`],size:`sm`})}),(0,L.jsx)(`span`,{className:`diagsum__text`,children:ue}),(0,L.jsx)(`span`,{className:`diagsum__mark`,"aria-hidden":`true`,children:(0,L.jsx)(z,{name:re?`chevron-down`:`chevron-right`,size:`sm`})})]}),M]}),oe.length>0&&(!se||re)&&(0,L.jsx)(`ul`,{className:`diag`,id:PD,children:oe.map((e,t)=>{let n=D(`web.ui.sidebar.diagnostic`,{module:e.module,detail:e.detail});return(0,L.jsxs)(`li`,{"data-level":e.status,children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:MD[e.status],size:`sm`})}),(0,L.jsx)(xt,{text:n,children:(0,L.jsx)(`span`,{className:`diag__text`,children:n})}),!se&&M]},`diag-${t}`)})})]}),(0,L.jsxs)(`div`,{className:`sidebar__end`,children:[N&&(0,L.jsx)(Ny,{...N}),(0,L.jsx)(Py,{...f?{user:f}:{},...me?{host:me}:{},...p?{onOpenSettings:p}:{}})]})]})}var LD=48,RD=240;function zD({children:e}){let t=R(),n=v.useRef(null),[r,i]=v.useState(!0),[a,o]=v.useState(!1),s=()=>{let e=n.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight;i(t<=LD),o(t>RD)};return v.useEffect(()=>{let e=n.current;e&&(r&&(e.scrollTop=e.scrollHeight),s())}),(0,L.jsxs)(`div`,{className:`thread`,ref:n,onScroll:s,children:[(0,L.jsx)(`div`,{className:`thread__column`,role:`log`,children:e}),a&&(0,L.jsx)(`div`,{className:`thread__tail`,children:(0,L.jsx)(`button`,{type:`button`,className:`tobottom`,onClick:()=>{let e=n.current;e&&(e.scrollTop=e.scrollHeight,s())},"aria-label":t(`web.ui.thread.to_bottom`),title:t(`web.ui.thread.to_bottom`),children:(0,L.jsx)(z,{name:`arrow-down`})})})]})}function BD(e,t,n){let r=new Map(e.map(e=>[e.id,e]));return t.filter(e=>{if(e.id===n)return!1;let t=r.get(e.id);return t===void 0||t.state===`idle`||e.state!==`idle`?!1:!(t.live&&!e.live)})}function VD(e,t){let[n,r]=v.useState([]),i=v.useRef(e),a=v.useRef(0);return v.useEffect(()=>{let n=BD(i.current,e,t);i.current=e,n.length!==0&&r(e=>[...e,...n.map(e=>(a.current+=1,{sessionId:e.id,title:e.title,finish:e.lastFinish??null,key:`${e.id}#${a.current}`}))].slice(-50))},[e,t]),{receipts:n,drop:v.useCallback(e=>{r(t=>t.filter(t=>t.key!==e))},[])}}var HD={stop:{tone:`ok`,icon:`check`,key:`web.ui.toast.done`},"max-turns":{tone:`error`,icon:`x`,key:`web.ui.toast.max_turns`},stalled:{tone:`error`,icon:`x`,key:`web.ui.toast.stalled`},looping:{tone:`error`,icon:`x`,key:`web.ui.toast.looping`},aborted:{tone:`error`,icon:`x`,key:`web.ui.toast.aborted`},"content-filter":{tone:`error`,icon:`x`,key:`web.ui.toast.filtered`},compliance:{tone:`error`,icon:`x`,key:`web.ui.toast.compliance`},length:{tone:`error`,icon:`x`,key:`web.ui.toast.truncated`},blank:{tone:`error`,icon:`x`,key:`web.ui.toast.blank`},"budget-exceeded":{tone:`error`,icon:`x`,key:`web.ui.toast.budget`},error:{tone:`error`,icon:`x`,key:`web.ui.toast.failed`}};function UD(e){return e?HD[e.reason]:null}function WD(e){if(!e)return null;let t={...e.durationMs===null?{}:{duration:av(e.durationMs)},...e.runUsage===null?{}:{tokens:iv(A(e.runUsage))}};return t.duration===void 0&&t.tokens===void 0?null:t}function GD({receipts:e,onOpen:t,onDrop:n}){let r=R(),[i,a]=v.useState(!1),o=e.length-3,s=i&&o>0,c=s?e:e.slice(-3);return(0,L.jsxs)(`div`,{className:`toasts`,role:`status`,...s?{"data-open":``}:{},children:[o>0&&(0,L.jsx)(`button`,{type:`button`,className:`toasts__more`,"aria-expanded":s,onClick:()=>a(e=>!e),children:s?r(`web.ui.toast.collapse`):r(o===1?`web.ui.toast.more_one`:`web.ui.toast.more_n`,{count:o})}),(0,L.jsx)(`div`,{className:`toasts__stack`,children:c.map(e=>{let i=e.title||r(`web.ui.topbar.untitled`),a=UD(e.finish),o=WD(e.finish);return(0,L.jsxs)(`div`,{className:`toast`,...a?{"data-tone":a.tone}:{},children:[a&&(0,L.jsx)(`span`,{className:`toast__sign`,children:(0,L.jsx)(z,{name:a.icon,size:`sm`})}),(0,L.jsx)(`span`,{className:`toast__who`,children:r(a?.key??`web.ui.toast.done`,{title:i})}),o&&(0,L.jsx)(`span`,{className:`toast__stat`,children:[o.duration,o.tokens&&r(`web.ui.thread.facts_tokens`,{tokens:o.tokens})].filter(Boolean).join(` · `)}),t&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>{t(e.sessionId),n(e.key)},children:r(`web.ui.toast.go`)}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--icon`,"aria-label":r(`web.ui.toast.dismiss`),onClick:()=>n(e.key),children:(0,L.jsx)(z,{name:`x`,size:`sm`})})]},e.key)})})]})}var KD={connecting:`web.ui.conn.connecting`,open:`web.ui.conn.open`,reconnecting:`web.ui.conn.reconnecting`,closed:`web.ui.conn.closed`};function qD({title:e,model:t,modelControl:n,modelCatalog:r,onConfigureKey:i,otherSession:a,connection:o,resyncing:s,inspectorOpen:c,onToggleInspector:l,sidebar:u}){let d=R(),f=n?.selection!==void 0,p=a?d(`web.ui.topbar.model_not_live`):void 0;return(0,L.jsxs)(`header`,{className:`topbar`,children:[u&&(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon topbar__nav`,type:`button`,"aria-pressed":u.open,"aria-label":d(`web.ui.topbar.sidebar`),title:d(`web.ui.topbar.sidebar`),onClick:u.onToggle,children:(0,L.jsx)(z,{name:`panel-right`})}),(0,L.jsx)(`h1`,{className:`topbar__title`,...e?{title:e}:{},children:e||d(`web.ui.topbar.untitled`)}),(0,L.jsxs)(`div`,{className:`topbar__facts`,children:[f&&n?(0,L.jsx)(DD,{model:n,...r?{catalog:r}:{},...i?{onConfigureKey:i}:{}}):t&&(p?(0,L.jsxs)(`span`,{title:p,children:[t,` `,(0,L.jsx)(z,{name:`info`,size:`sm`,label:p})]}):(0,L.jsx)(`span`,{children:t})),s&&(0,L.jsx)(`span`,{className:`topbar__resync`,children:d(`web.ui.topbar.resyncing`)}),(0,L.jsx)(`span`,{className:`conn`,"data-conn":o,children:d(KD[o])}),(0,L.jsx)(`button`,{className:`btn btn--ghost btn--icon`,type:`button`,"aria-pressed":c,"aria-label":d(`web.ui.topbar.inspector`),title:d(`web.ui.topbar.inspector`),onClick:l,children:(0,L.jsx)(z,{name:`panel-right`})})]})]})}function JD(e){if(e.readOnly!==`history`)return e.readOnly;let t=e.currentSummary?.workspace;return t&&t.state!==`unknown`?!1:`history`}var YD=2,XD=[500,1e3,2e3,4e3,8e3,1e4];function ZD(e){let t=new EventSource(e),n={get readyState(){return t.readyState},onopen:null,onmessage:null,onerror:null,close:()=>t.close()};return t.onopen=()=>n.onopen?.(),t.onmessage=e=>n.onmessage?.({data:String(e.data)}),t.onerror=()=>n.onerror?.(),n}function QD(e){try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return;let n=t;return typeof n.seq==`number`&&n.event?n:void 0}catch{return}}function $D(e,t){let{onFrame:n,onConnectionChange:r,onResync:i,createSource:a=ZD,schedule:o=(e,t)=>void setTimeout(e,t)}=t,s,c=0,l=0,u=!1,d=()=>{if(u)return;let e=XD[Math.min(c,XD.length-1)]??1e4;c+=1,o(()=>{u||(p(),i(`hard-reconnect`))},e)},f=e=>{let t=QD(e);if(t){if(le(t.event)&&t.event.type===`stream-reset`){i(t.event.reason);return}t.seq>0&&(l=t.seq),t.event.type!==`connected`&&n(t)}};function p(){r(c===0?`connecting`:`reconnecting`);let t=a(e);s=t,t.onopen=()=>{c=0,r(`open`)},t.onmessage=e=>f(e.data),t.onerror=()=>{if(t.readyState!==YD){r(`reconnecting`);return}t.close(),r(`reconnecting`),d()}}return p(),{close:()=>{u=!0,s?.close(),r(`closed`)},lastSeq:()=>l}}function eO(e){if(typeof e==`string`)return[];let t=[];for(let n of e){if(n.type!==`image`)continue;let{type:e,...r}=n;t.push(r)}return t}function tO({client:e,dispatch:t,stateRef:n,fail:r,resync:i,refreshSessions:a}){let o=R();return(0,v.useMemo)(()=>({send:(i,a,s=[])=>{let{sessionId:c}=n.current;if(!c||JD(n.current))return;let l=eO(i),u=iE(i,o,{imagesShownAsThumbnails:l.length>0}).trim();!u&&l.length===0&&s.length===0||(t({type:`submit`,text:u,...l.length>0?{images:l}:{}}),(s.length>0?e.send(c,i,a,s):e.send(c,i,a)).then(e=>{e?.queued&&t(e.steered===!0?{type:`steered`}:{type:`queued`}),e?.command&&t({type:`command`,notice:e.command}),e?.references&&t({type:`references`,references:e.references}),e?.files&&t({type:`files`,files:e.files})}).catch(r))},abort:()=>{let i=n.current.sessionId;i&&(t({type:`aborted`}),e.abort(i).then(e=>{e?.returned&&e.returned.length>0&&t({type:`returned`,messages:e.returned})}).catch(e=>{t({type:`abort-failed`}),r(e)}))},returnedDone:()=>t({type:`returned-done`}),respond:(n,i,a)=>{t({type:`approval-sent`,requestId:n}),e.respond(n,i,a).catch(r)},answerQuestion:(n,i)=>{t({type:`question-sent`,requestId:n}),e.respondQuestion(n,i).catch(r)},dismissError:()=>t({type:`dismiss-error`}),reloadMessages:()=>{let e=n.current.sessionId;e&&i(e)},refreshSessions:e=>a(e)}),[e,t,r,a,i,n,o])}function nO(e,t,n){let r=(0,v.useRef)(void 0),i=(0,v.useRef)(n);i.current=n;let a=(0,v.useCallback)(n=>{if(r.current=n,(async()=>{try{t({type:`sessions`,sessions:(await e.listSessions()).sessions})}catch{}})(),n===void 0){t({type:`search-hits`});return}(async()=>{try{let i=await e.listSessions(n);if(r.current!==n)return;t({type:`search-hits`,hits:i.sessions})}catch{}})()},[e,t]),o=(0,v.useCallback)(()=>a(r.current),[a]),s=(0,v.useCallback)(n=>{(async()=>{try{let{session:r}=await e.getSession(n);t({type:`current-summary`,summary:r})}catch{}})()},[e,t]);(0,v.useEffect)(()=>{a(void 0)},[a]);let c=(0,v.useRef)(void 0);(0,v.useEffect)(()=>{let e=n.sessionId;if(e===void 0||c.current===e)return;let t=c.current===void 0;c.current=e,!t&&(i.current.sessions.some(t=>t.id===e)||o())},[n.sessionId,o]);let l=(0,v.useRef)({running:!1});return(0,v.useEffect)(()=>{let{sessionId:e,turn:t,currentSummary:n}=i.current,r=t!==`idle`,a=l.current;l.current={...e?{sessionId:e}:{},running:r},!(!a.running||r||a.sessionId!==e)&&e!==void 0&&(n?.title||(o(),s(e)))},[n.turn,n.sessionId,o,s]),(0,v.useEffect)(()=>{let e=n.sessionId;e!==void 0&&n.currentSummary?.id!==e&&s(e)},[n.sessionId,n.currentSummary?.id,s]),(0,v.useEffect)(()=>{n.sessionsRevision!==0&&o()},[n.sessionsRevision,o]),{refreshSessions:a,refreshAgain:o}}function rO(e){return e.turn!==`awaiting-approval`&&e.turn!==`awaiting-question`?!1:e.approvals.length===0&&e.questions.length===0}var iO=(0,v.createContext)(hr),aO=(0,v.createContext)(void 0),oO=1500;function sO(e){return e instanceof xe&&e.detail?e.detail:e instanceof Error?e.message:String(e)}async function cO(e){try{return await e}catch(e){if(e instanceof xe&&e.status===404)return null;throw e}}function lO({client:e,children:t,sessionId:n,provider:r,createSource:i}){let[a,o]=(0,v.useReducer)(zr,hr),s=(0,v.useRef)(a);s.current=a;let c=r!==null,l=(0,v.useRef)(c);l.current=c;let u=R(),d=(0,v.useRef)(u);d.current=u;let f=(0,v.useRef)(void 0),p=(0,v.useRef)(!1),m=(0,v.useRef)(0),h=(0,v.useCallback)(async t=>{if(o({type:`session-gone`}),!p.current){p.current=!0;try{let{sessionId:n}=await e.createSession();n!==t&&o({type:`recovery`,sessionId:n})}catch{}}},[e]),g=(0,v.useCallback)(e=>{if(Te(e)&&!l.current){o({type:`session-unavailable`});return}if(Te(e)){h(f.current);return}o({type:`error`,message:sO(e)})},[h]),_=(0,v.useCallback)(async t=>{let n=++m.current,r=()=>n!==m.current;o({type:`resyncing`});try{let[n,i,a]=await Promise.all([e.messages(t),cO(e.approvals(t)),cO(e.questions(t))]);if(r())return;let s=i===null||a===null?c?`history`:`no-provider`:!1,l=lE(n.messages,d.current);o({type:`replay`,items:l.items,turns:l.turns,approvals:i?[...i.approvals]:[],questions:a?[...a.questions]:[],turn:i?.state??`idle`,readOnly:s,...n.usage?{usage:n.usage}:{},...n.inFlightThroughSeq===void 0?{}:{inFlightThroughSeq:n.inFlightThroughSeq},...n.interruptedTurnFrom===void 0?{}:{interruptedTurnFrom:n.interruptedTurnFrom}})}catch(e){if(r())return;g(e)}},[e,g,c]),{refreshSessions:y,refreshAgain:b}=nO(e,o,a);(0,v.useEffect)(()=>{let e=$D(`/api/events`,{onFrame:e=>o({type:`frame`,frame:e}),onConnectionChange:e=>o({type:`connection`,state:e}),onResync:()=>{let e=f.current;e&&_(e),b()},...i?{createSource:i}:{}});return()=>e.close()},[e,i,b,_]),(0,v.useEffect)(()=>{let t=!1;return(async()=>{let r;try{r=n??(await e.createSession()).sessionId}catch(e){t||g(e);return}t||(f.current=r,p.current=!1,o({type:`session`,sessionId:r}),await _(r))})(),()=>{t=!0}},[n,e,g,_]),(0,v.useEffect)(()=>{!a.refetchOnIdle||a.resyncing||a.turn!==`idle`||a.sessionId&&_(a.sessionId)},[a.refetchOnIdle,a.resyncing,a.turn,a.sessionId,_]),(0,v.useEffect)(()=>{if(!rO(a))return;let e=a.sessionId;if(!e)return;let t=setTimeout(()=>{s.current.resyncing||_(e)},oO);return()=>clearTimeout(t)},[a.turn,a.approvals.length,a.questions.length,a.sessionId,_]);let x=tO({client:e,dispatch:o,stateRef:s,fail:g,resync:_,refreshSessions:y});return(0,L.jsx)(iO.Provider,{value:a,children:(0,L.jsx)(aO.Provider,{value:x,children:t})})}function uO(){return(0,v.useContext)(iO)}function dO(){let e=(0,v.useContext)(aO);if(!e)throw Error(`useWebActions 必须在 WebStoreProvider 里用`);return e}var fO={binary:{plain:`web.ui.diff.omit_binary`,sized:`web.ui.diff.omit_binary_sized`},"too-large":{plain:`web.ui.diff.omit_too_large`,sized:`web.ui.diff.omit_too_large_sized`},"no-snapshot":{plain:`web.ui.diff.omit_no_snapshot`,sized:`web.ui.diff.omit_no_snapshot`}},pO={binary:j_.binary.why,"too-large":`web.ui.diff.omit_too_large_why`,"no-snapshot":`web.ui.diff.omit_no_snapshot_why`};function mO(e,t){if(!e.omitted)return;let n=e.newBytes??e.oldBytes,r=fO[e.omitted];return n===null?t(r.plain):t(r.sized,{bytes:Ci(n)})}function hO(e,t){let n=mO(e,t);if(!(n===void 0||!e.omitted))return{label:n,why:t(pO[e.omitted])}}function gO({file:e}){let t=hO(e,R());return t?(0,L.jsx)(H_,{filePath:e.path,notice:t}):(0,L.jsx)(H_,{filePath:e.path,...e.oldContent===null?{}:{oldContent:e.oldContent},...e.newContent===null?{}:{newContent:e.newContent}})}var _O={"no-changes":`web.ui.diff.note_no_changes`,"not-a-git-repo":`web.ui.diff.note_not_a_git_repo`,"no-workspace-history":`web.ui.diff.note_no_workspace_history`,"no-workspace":`web.ui.diff.note_no_workspace`,truncated:`web.ui.diff.note_truncated`},vO={added:{icon:`plus`,label:`web.ui.diff.status_added`},modified:{icon:`file-diff`,label:`web.ui.diff.status_modified`},deleted:{icon:`circle-x`,label:`web.ui.diff.status_deleted`}};function yO(e,t){let[n,r]=v.useState({state:`pending`}),[i,a]=v.useState(0);return v.useEffect(()=>{if(!e||!t){r({state:`pending`});return}r({state:`pending`});let n=!0;return e.sessionDiff(t).then(e=>{n&&r({state:`ok`,data:e})}).catch(()=>{n&&r({state:`error`})}),()=>{n=!1}},[e,t,i]),{view:n,reload:v.useCallback(()=>a(e=>e+1),[])}}function bO({client:e,sessionId:t,onBack:n}){let r=R(),{view:i,reload:a}=yO(e,t),[o,s]=v.useState(),c=i.state===`ok`?i.data.files:[],l=c.find(e=>e.path===o);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`nav`,{className:`navcol`,children:[(0,L.jsxs)(`div`,{className:`navcol__head`,children:[r(`web.ui.diff.title`),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm navcol__back`,type:`button`,onClick:n,children:[(0,L.jsx)(z,{name:`arrow-left`,size:`sm`}),r(`web.ui.diff.back`)]})]}),(0,L.jsx)(`ul`,{className:`navcol__list`,children:c.map(e=>(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{type:`button`,"aria-current":e.path===o?`true`:void 0,onClick:()=>s(e.path),"aria-label":`${r(vO[e.status].label)} ${e.path}`,title:`${r(vO[e.status].label)} ${e.path}`,children:[(0,L.jsx)(`span`,{className:`navcol__sign`,"data-status":e.status,children:(0,L.jsx)(z,{name:vO[e.status].icon,size:`lg`})}),(0,L.jsx)(SO,{path:e.path}),(0,L.jsx)(`span`,{className:`navcol__n`,children:mO(e,r)??``})]})},e.path))})]}),(0,L.jsxs)(`section`,{className:`panelcol`,children:[(0,L.jsxs)(`div`,{className:`panelcol__head`,children:[(0,L.jsx)(`h1`,{className:`panelcol__title wsdiff__title`,children:l?(0,L.jsx)(SO,{path:l.path}):r(`web.ui.diff.title`)}),i.state===`ok`&&i.data.root!==``&&(0,L.jsxs)(`span`,{className:`wsdiff__root`,title:i.data.root,children:[(0,L.jsx)(z,{name:`folder`,size:`sm`}),i.data.root]}),(0,L.jsxs)(`button`,{className:`btn btn--ghost btn--sm wsdiff__reload`,type:`button`,onClick:a,disabled:i.state===`pending`,title:r(`web.ui.diff.reload_hint`),children:[(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),r(`web.ui.diff.reload`)]})]}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:(0,L.jsx)(`div`,{className:`wsdiff__inner`,children:i.state===`pending`?(0,L.jsx)(B,{text:r(`web.ui.diff.loading`)}):i.state===`error`?(0,L.jsx)(B,{tone:`error`,text:r(`web.ui.diff.failed`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(xO,{data:i.data,t:r}),l?(0,L.jsx)(gO,{file:l}):c.length>0&&(0,L.jsx)(B,{text:r(`web.ui.diff.pick`)})]})})})]})]})}function xO({data:e,t}){return(0,L.jsxs)(L.Fragment,{children:[e.source===`git`&&e.files.length>0&&(0,L.jsx)(B,{text:t(`web.ui.diff.scope_git`)}),e.notes.map(n=>(0,L.jsx)(B,{text:t(_O[n],{count:e.files.length})},n))]})}function SO({path:e}){let t=e.lastIndexOf(`/`);return(0,L.jsxs)(`span`,{className:`wsdiff__path`,children:[t>=0&&(0,L.jsx)(`span`,{className:`wsdiff__dir`,children:e.slice(0,t+1)}),(0,L.jsx)(`span`,{className:`wsdiff__name`,children:e.slice(t+1)})]})}function CO({client:e,config:t,onOpenSession:n,sub:r}){let i=R(),a=uO(),o=dO(),{sessionId:s,recovery:c}=a,[l,u]=v.useState(null),[d,f]=v.useState(null),[p,m]=v.useState(`experts`),[h,g]=v.useState(),[_,y]=v.useState(),b=l??(r===`diff`?`diff`:`thread`),x=zb(),S=YS(e,s),C=nC(s),[w,T]=v.useState(),E=FC(e,s,a.turn),D=wS(e,s),O=BC(e,s,a.turn),ee=SD(e,s,a.lastPromptTokens),te=pt(e),k=NC(e,s,a.turn,E,t?.permission);v.useEffect(()=>{k.level&&(document.documentElement.dataset.permission=k.level)},[k.level]);let ne=BE({...t?.settingsHidden===void 0?{}:{hidden:t.settingsHidden},archived:!0}).length+(t?.settingsPanes?.length??0)>0;v.useEffect(()=>{if(!ne)return;let e=e=>{e.key!==`,`||!(e.metaKey||e.ctrlKey)||(e.preventDefault(),u(e=>e===`settings`?null:`settings`))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ne]);let re=v.useCallback(e=>{u(null),n?.(e)},[n]),ie=v.useCallback(()=>{u(null),s&&n?.(s)},[n,s]),ae=v.useCallback(e=>{u(e),x.closeDrawer()},[x.closeDrawer]),A=v.useCallback(e=>{T({text:i(`web.ui.cap.summon_prefill`,{role:e})}),ie()},[i,ie]),j=v.useCallback(e=>{C.pin(e),ie()},[C.pin,ie]),oe=v.useCallback(()=>T(void 0),[]);v.useEffect(()=>{let e=a.returned;if(!e||e.length===0)return;let t=e.map(e=>iE(e,i)).join(`
378
+ `);t&&T({text:t}),o.returnedDone()},[a.returned,o,i]);let se=v.useCallback((e,t=[])=>{y(void 0),t.length>0?o.send(e,C.role,t):o.send(e,C.role)},[o,C.role]),ce=v.useCallback(async t=>s?(await e.referenceCandidates(s,t)).candidates:[],[e,s]),le=v.useCallback(async()=>(await e.listSessions(void 0,{archived:!0})).sessions,[e]),ue=v.useCallback(async t=>s?await e.fileCandidates(s,t):{candidates:[],unmentionable:0,truncated:!1},[e,s]),M=yw(e,re),[de,fe]=v.useState(),pe=v.useCallback(e=>{M.createDeferred(t=>fe({sessionId:t,text:e}))},[M.createDeferred]);v.useEffect(()=>{de!==void 0&&s===de.sessionId&&(T({text:de.text,replace:!0}),fe(void 0))},[de,s]);let N=xw(e,{...s?{currentSessionId:s}:{},...t?{homeSessionId:t.sessionId}:{},...n?{openSession:re}:{},reloadCurrent:o.reloadMessages}),me=v.useMemo(()=>{let e=a.currentSummary?.workspace;return vw(t?.knownWorkspaces??[],e?.state===`bound`?e.ref.root:null)},[t,a.currentSummary]),P=JD(a),he=v.useMemo(()=>MS({client:e,sessionId:s,readOnly:!!P,busy:a.turn!==`idle`,t:i,openContextPane:()=>{g(e=>({n:(e?.n??0)+1,pane:`memory`})),ae(`settings`)},setNotice:y}),[e,s,P,a.turn,i,ae]),F=t!==void 0&&t.provider!==null&&n!==void 0,[ge,_e]=v.useState(),ve=v.useCallback(()=>_e(void 0),[]),ye=eC({onFiles:v.useCallback(e=>_e(e),[]),disabled:OC({turn:a.turn,connection:a.connection,disabled:!s,readOnly:P})}),be=v.useCallback(e=>se(e),[se]),xe=v.useCallback(e=>T({text:e}),[]),Se=x.openInspector,Ce=Gr(e,s,a.turn),we=v.useCallback(e=>{e.messagesRemoved!==null&&o.reloadMessages(),Ce.reload()},[o,Ce]),Te=v.useCallback(t=>s?ut(t,s,e.artifactUrl):void 0,[e,s]),Ee=v.useCallback(t=>s?lt(t,s,e.artifactUrl):void 0,[e,s]),De=v.useMemo(()=>fw(a.history,a.stream.pending),[a.history,a.stream.pending]),Oe=v.useMemo(()=>mi(a.history,a.stream.pending),[a.history,a.stream.pending]),ke=gy(e,s,a.turn,a.tasksRevision),Ae=VD(a.sessions,s),je=Gy(e),Me=By(e),[I,Ne]=v.useState(!1),Pe=bS(e,I,b===`cap`&&p===`plugins`),Fe=Me.finishedAt,Ie=je.reload;v.useEffect(()=>{Fe!==void 0&&Ie()},[Fe,Ie]);let Le=_w(e,a.turn,s),Re=v.useCallback(async(t,n)=>{try{return await e.fixSchedule(t,n),je.reload(),!0}catch{return!1}},[e,je]),ze=v.useCallback(e=>{document.getElementById(ny(e))?.scrollIntoView({block:`center`})},[]),[Be,Ve]=v.useState(),He=v.useCallback(e=>{Ve(e),Se()},[Se]),Ue=v.useCallback(()=>Ve(void 0),[]);v.useEffect(()=>Ve(void 0),[s]);let We=qs(v.useMemo(()=>s?t=>e.fileStat(s,t):void 0,[e,s])),Ge=v.useMemo(()=>({open:He,verify:We}),[He,We]);return(0,L.jsx)(Gs,{value:Ge,children:(0,L.jsx)(qn,{currency:t?.currency,children:(0,L.jsxs)(`div`,{className:`app`,"data-view":b,"data-inspector":x.inspectorShown?`open`:`closed`,...x.drawer?{"data-drawer":x.drawer}:{},children:[(0,L.jsx)(ft,{}),(0,L.jsx)(Bb,{panels:x}),(0,L.jsx)(ID,{...s?{sessionId:s}:{},rootRef:x.sidebarRef,...a.usage?{usage:a.usage}:{},...t?{usageScope:t.usageScope}:{},...t?.maxCostUsd===void 0?{}:{maxCostUsd:t.maxCostUsd},...t?.brand===void 0?{}:{brand:t.brand},...t?.diagnostics?{diagnostics:t.diagnostics}:{},...F&&t?.diagnostics?{diagnosticsHandoff:{all:t.diagnostics,onHandoff:pe}}:{},...F?{newSession:{handle:M}}:{},acts:N,...t?.sidebarMenu===void 0?{}:{menu:t.sidebarMenu},...t?.userMenu===void 0?{}:{userMenu:t.userMenu},onMenuSelect:My,...t?.user===void 0?{}:{user:t.user},...ne?{onOpenSettings:()=>{g(void 0),ae(`settings`)}}:{},onOpenCapability:e=>{m(e),ae(`cap`)},...b===`cap`?{capTab:p}:{},onOpenAutomation:()=>ae(`auto`),pendingAutomation:je.items.length,automationRunning:Me.running!==void 0,onCapExpandedChange:Ne,...Pe===void 0?{}:{pluginUpdates:Pe},sessions:a.sessions,hits:a.searchHits,onOpenSession:re,onSearch:o.refreshSessions}),b===`settings`?(0,L.jsx)(VE,{...h?{initialPane:h.pane}:{},onBack:()=>u(null),client:e,...s?{sessionId:s}:{},...t?{compression:t.compression}:{},...t?{about:t.about}:{},...t?.diagnostics?{diagnostics:t.diagnostics}:{},...t?.settingsHidden===void 0?{}:{hiddenPanes:t.settingsHidden},...t?.settingsPanes===void 0?{}:{hostPanes:t.settingsPanes},readOnly:!!P,noProvider:t!==void 0&&t.provider===null,turns:a.turns,hasHistory:a.history.length>0,onLoadArchived:le,onOpenSession:re,acts:N},h?.n??0):b===`cap`?(0,L.jsx)(_S,{tab:p,client:e,...s?{sessionId:s}:{},onBack:()=>u(null),...x.overlaySidebar?{sidebar:{open:x.drawer===`sidebar`,onToggle:x.toggleSidebar}}:{},onSummon:A,onTakeOver:j,...C.role===void 0?{}:{pinnedRole:C.role},canSummon:s!==void 0&&!P,...F?{newSession:M}:{},lanExposed:t?.lanExposed??!0,nativeDirPicker:t?.nativeDirPicker??!1}):b===`auto`?(0,L.jsx)(nb,{client:e,workspaceChoices:me,nativeDirPicker:t?.nativeDirPicker??!1,manualRun:Me,...d?{draft:d}:{},onDraftUsed:()=>f(null),onBack:()=>u(null)}):b===`diff`?(0,L.jsx)(bO,{client:e,...s?{sessionId:s}:{},onBack:ie}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`main`,{className:`main`,...ye.zone,children:[ye.active&&(0,L.jsx)(tC,{}),(0,L.jsx)(qD,{title:a.currentSummary?.title,...t?{model:t.model}:{},modelControl:ee,modelCatalog:te,onConfigureKey:()=>{g(e=>({n:(e?.n??0)+1,pane:`model`})),ae(`settings`)},otherSession:t!==void 0&&s!==t.sessionId,connection:a.connection,resyncing:a.resyncing,inspectorOpen:x.inspectorShown,onToggleInspector:x.toggleInspector,...x.overlaySidebar?{sidebar:{open:x.drawer===`sidebar`,onToggle:x.toggleSidebar}}:{}}),(0,L.jsx)(`div`,{className:`bannerslot`,children:a.sessionGone?(0,L.jsxs)(`div`,{className:`banner`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`banner__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`p`,{children:i(c?`web.ui.banner.session_gone`:`web.ui.banner.session_gone_stuck`)}),c&&n&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>n(c),children:i(`web.ui.banner.session_gone_open`)})]}):a.error&&(0,L.jsxs)(`div`,{className:`banner`,role:`alert`,children:[(0,L.jsx)(`span`,{className:`banner__sign`,children:(0,L.jsx)(z,{name:`circle-x`,size:`sm`})}),(0,L.jsx)(`p`,{children:a.error}),(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:o.dismissError,children:i(`web.ui.banner.dismiss`)})]})}),(0,L.jsxs)(zD,{children:[s&&!a.resyncing&&!P&&a.turn===`idle`&&a.history.length===0&&a.stream.pending.length===0&&(0,L.jsx)(Ry,{...t?.blankGreeting===void 0?{}:{greeting:t.blankGreeting},...t?.blankCards===void 0?{}:{cards:t.blankCards},onPick:e=>T({text:e.prompt,replace:!0})}),(0,L.jsx)(sy,{history:a.history,pending:a.stream.pending,thought:a.stream.thought,thoughtParts:a.thoughtParts,approvals:a.approvals,turn:a.turn,turns:a.turns,heads:a.heads,...t?{compression:t.compression}:{},...a.runUsage?{runUsage:a.runUsage}:{},...a.interruptedTurnFrom===void 0?{}:{interruptedTurn:a.interruptedTurnFrom},queued:a.queued,steered:a.steered,aborting:a.aborting,stranded:rO(a),onAbort:o.abort,resolveArtifact:Te,resolveImage:Ee,onReviewDraft:e=>{f(e),ae(`auto`)},onRerun:be,onQuote:xe,onInspect:Se,...s?{rewind:{client:e,sessionId:s,checkpoints:Ce.checkpoints,onDone:we}}:{}})]}),(0,L.jsxs)(`div`,{className:`composer-region`,children:[(0,L.jsx)(GD,{receipts:Ae.receipts,onDrop:Ae.drop,...n?{onOpen:re}:{}}),(0,L.jsx)(dw,{approvals:a.approvals,questions:a.questions,onRespond:o.respond,onAnswer:(e,t,n)=>o.answerQuestion(e,{answers:t,...n?{skipped:!0}:{}}),sessions:a.sessions,...s?{currentSessionId:s}:{},...n?{onOpenSession:re}:{},pending:je.items,onFixPending:Re,onOpenAutomation:()=>ae(`auto`),blockedGoals:Le.items,...Me.running?{running:{name:Me.running.name,startedAt:Me.running.startedAt}}:{}}),(0,L.jsx)(jC,{draft:S,turn:a.turn,sending:a.sending,connection:a.connection,disabled:!s,readOnly:P,...w?{prefill:w}:{},onPrefillDone:oe,commands:D,builtins:he,listSessionCandidates:ce,listFileCandidates:ue,...a.commandNotice?{commandNotice:a.commandNotice}:{},..._?{builtinNotice:_}:{},...ge?{dropped:ge}:{},onDroppedDone:ve,expert:C,...s&&a.usage&&t?{usage:{tokens:a.usage,scope:t.usageScope}}:{},onSend:se}),(0,L.jsx)(HC,{workspace:O,...a.currentSummary?.role?{role:a.currentSummary.role}:{},workspaceChoices:me,client:e,nativeDirPicker:t?.nativeDirPicker??!1,...s&&n?{onOpenDiff:()=>n(s,`diff`)}:{},permission:k,planMode:E,readOnly:!!P})]})]}),x.inspectorShown&&(0,L.jsx)(xD,{rootRef:x.inspectorRef,patches:De,onLocate:ze,...Be===void 0?{}:{previewPath:Be},onClosePreviewPath:Ue,client:e,...s?{sessionId:s}:{},turn:a.turn,toolArtifacts:Oe,resolveArtifact:Te,tasks:ke})]})]})})})}function wO(e,t){let{lang:n}=ot(),[r,i]=v.useState(t),a=v.useRef(n);return v.useEffect(()=>{if(a.current===n)return;a.current=n;let t=!0;return e.config().then(e=>{t&&i(e)},()=>void 0),()=>{t=!1}},[e,n]),r}var TO=`/s/`;function EO(e){if(!e.startsWith(TO))return{kind:`home`};let t=e.slice(3).split(`/`),n=t[0]??``;if(!n)return{kind:`home`};let r;try{r=decodeURIComponent(n)}catch{return{kind:`home`}}return t[1]===`diff`?{kind:`session`,sessionId:r,sub:`diff`}:{kind:`session`,sessionId:r}}function DO(e,t){let n=`${TO}${encodeURIComponent(e)}`;return t===void 0?n:`${n}/${t}`}function OO(){return{pathname:()=>window.location.pathname,push:e=>window.history.pushState(null,``,e),replace:e=>window.history.replaceState(null,``,e),onPopState:e=>(window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e))}}function kO(e,t){let[n,r]=v.useState(()=>EO(e.pathname()));v.useEffect(()=>e.onPopState(()=>r(EO(e.pathname()))),[e]),v.useEffect(()=>{n.kind!==`home`||!t||(e.replace(DO(t)),r({kind:`session`,sessionId:t}))},[e,n.kind,t]);let i=v.useRef(n);return i.current=n,{route:n,go:v.useCallback((t,n)=>{let a=i.current;(a.kind!==`session`||a.sessionId!==t||a.sub!==n)&&(e.push(DO(t,n)),r(n===void 0?{kind:`session`,sessionId:t}:{kind:`session`,sessionId:t,sub:n}))},[e])}}function AO({client:e,config:t,env:n}){let r=v.useMemo(OO,[]),i=n??r,a=wO(e,t),o=a.lastSessionId??a.sessionId,{route:s,go:c}=kO(i,o),l=s.kind===`session`?s.sessionId:o,u=s.kind===`session`?s.sub:void 0;return v.useEffect(()=>{e.markLastSession(l).catch(()=>{})},[e,l]),(0,L.jsx)(lO,{client:e,sessionId:l,provider:a.provider,children:(0,L.jsx)(i_,{children:(0,L.jsx)(CO,{client:e,config:a,onOpenSession:c,sub:u})})})}function jO({titleKey:e,hintKey:t,hint:n}){let r=R();return(0,L.jsxs)(`div`,{className:`fatal`,role:`alert`,children:[(0,L.jsx)(`h1`,{children:r(e)}),(0,L.jsx)(`p`,{children:t?r(t):n})]})}async function MO(){let e=document.getElementById(`root`);if(!e)throw Error(`index.html 里没有 #root`);let t=(0,y.createRoot)(e),n=Pe((e,t)=>fetch(e,t),()=>$e(et())),r=await je(n,ke());if(!r.ok){t.render((0,L.jsx)(v.StrictMode,{children:(0,L.jsx)(at,{children:r.unauthorized?(0,L.jsx)(jO,{titleKey:`web.ui.fatal.unauthorized`,hintKey:`web.ui.fatal.unauthorized_hint`}):(0,L.jsx)(jO,{titleKey:`web.ui.fatal.offline`,hint:r.message})})}));return}t.render((0,L.jsx)(v.StrictMode,{children:(0,L.jsx)(at,{children:(0,L.jsx)(AO,{client:n,config:r.config})})}))}MO();