@epoch-agent/server 0.20.0 → 0.20.1
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,7 +371,7 @@ XID_Start XIDS`.split(/\s/).map(e=>[Ym(e),e])),Hh=new Map([[`s`,Dh(383)],[Dh(383
|
|
|
371
371
|
`]},n)),a&&`
|
|
372
372
|
`]})}function wb(e){return e.map(e=>e.map(e=>e.text).join(``)).join(`
|
|
373
373
|
`)}function Tb(e){return e instanceof Error?e.message:String(e)}var Eb={connected:`ok`,failed:`failed`,"needs-login":`login`},Db={connected:`web.ui.cap.mcp_connected`,failed:`web.ui.cap.mcp_failed`,"needs-login":`web.ui.cap.mcp_login`},Ob=[{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 kb({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:[Ob.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)(db,{title:i(e.title),note:i(e.note),children:[e.source===`user`&&n&&(0,L.jsxs)(`div`,{className:`cap__gacts`,children:[(0,L.jsx)(gb,{client:n,lanExposed:r,onAdded:(e,t)=>{c(t=>[e,...t]),u(t)}}),(0,L.jsx)(yb,{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)(Ab,{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)(db,{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 Ab({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":Eb[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":Eb[e.state],children:[(0,L.jsx)(`span`,{className:`card__statedot`,"aria-hidden":!0}),r(Db[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)(vy,{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)(ub,{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)(Tt,{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 jb={name:``,description:``,prompt:``,tools:``,skills:``,maxTurns:``};function Mb(e){return e.split(`
|
|
374
|
-
`).map(e=>e.trim()).filter(e=>e.length>0)}function Nb({client:e,lanExposed:t,onAdded:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(jb),[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=Mb(o.tools),i=Mb(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(jb)}).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 Pb=[{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`}],Fb={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 Ib({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)(Nb,{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(Fb[p.takenOverBy])})})]}),Pb.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)(db,{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)(Lb,{role:e,hue:Vy(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 Lb({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)(vy,{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 Rb(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 zb({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||Rb(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 Bb=1100,Vb=1180;function Hb(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 Ub(){let e=Hb(Bb),t=Hb(Vb),[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 Wb({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 zb({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 Gb(e,t){for(let n of e){if(n.value===t)return[n];let e=Gb(n.children,t);if(e.length>0)return[n,...e]}return[]}function Kb(e,t){for(let n of e){if(n.value===t)return n;let e=Kb(n.children,t);if(e!==void 0)return e}}function qb(e){let{items:t,label:n,placeholder:r,required:i,className:a}=e,[o,s]=v.useState(!1),c=v.useRef(null),l=v.useRef(null),u=e.multiple===!0?e.values:e.value===``?[]:[e.value],[d,f]=v.useState(``),p=d===``?u[0]??``:d,m=Gb(t,e.multiple===!0?p:e.value),h=[t];for(let e of m)e.children.length>0&&h.push(e.children);let g=v.useCallback(()=>{s(!1),c.current?.focus()},[]);v.useEffect(()=>{if(!o)return;let e=e=>{let t=e.target;t&&c.current?.contains(t)!==!0&&l.current?.contains(t)!==!0&&s(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[o]);let _=t=>{if(e.multiple===!0){if(t.value===``){e.onPick([]);return}f(t.value),e.onPick(u.includes(t.value)?u.filter(e=>e!==t.value):[...u,t.value]);return}e.onPick(t.value),t.children.length===0&&g()},y=u.map(e=>Kb(t,e)).filter(e=>e!==void 0),b=y.length===0?r:e.multiple===!0?y.map(e=>e.label).join(F):m.map(e=>e.label).join(` / `);return(0,L.jsxs)(`div`,{className:a===void 0?`cascade`:`cascade ${a}`,children:[(0,L.jsxs)(`button`,{className:`cascade__btn`,type:`button`,ref:c,"aria-label":n,"aria-haspopup":`dialog`,"aria-expanded":o,...i===!0?{"aria-required":`true`}:{},...y.length===0?{"data-empty":`true`}:{},onClick:()=>s(e=>!e),children:[(0,L.jsx)(`span`,{className:`cascade__value`,children:b}),(0,L.jsx)(z,{name:`chevron-down`,size:`sm`})]}),(0,L.jsx)(Ft,{open:o,anchorRef:c,onClose:()=>s(!1),className:`cascade__pop`,width:`content`,children:(0,L.jsx)(`div`,{className:`cascade__cols`,ref:l,role:`dialog`,"aria-label":n,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),g())},children:h.map((t,n)=>(0,L.jsx)(`ul`,{className:`cascade__col`,children:t.map(t=>{let r=m[n]?.value===t.value,i=u.includes(t.value);return(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{className:`cascade__item`,type:`button`,...e.multiple===!0?{"aria-pressed":i}:i?{"aria-current":`true`}:{},...r?{"data-open":`true`}:{},onClick:()=>_(t),children:[(0,L.jsx)(`span`,{className:`cascade__name`,children:t.label}),t.children.length>0&&(0,L.jsx)(z,{name:`chevron-right`,size:`sm`,"aria-hidden":!0})]})},t.value)})},n))})})]})}function Jb(e){return{entries:Array.from(e?.items??[]).filter(e=>e.kind===`file`).map(e=>e.webkitGetAsEntry?.()??null),files:Array.from(e?.files??[])}}async function Yb(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 Yb(n,e));continue}let i=await new Promise(e=>{n.file(e,()=>e(null))});i&&r.push({path:e,file:i})}}return r}function Xb(e){return Array.from(e??[]).flatMap(e=>{let t=e.webkitRelativePath;return t===``?[]:[{path:t,file:e}]})}function Zb(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 $b(e){let t=new TextEncoder,n=[],r=[],i=0;for(let a of e){let e=t.encode(a.path),o=rx(a.data),[s,c]=tx(),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),ex([...n,...r,o])}function ex(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 tx(){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 nx;function rx(e){if(!nx){nx=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;nx[e]=t>>>0}}let t=4294967295;for(let n of e)t=nx[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}function ix(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 ax=`epoch-plugin.json`;function ox({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:sx(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`archive`?new Uint8Array(await r.file.arrayBuffer()):$b(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:ix(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&&cx(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(lx(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:fe.join(`,`),onChange:e=>{f(lx(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 sx(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:ax}):e(`web.ui.cap.plug_drop_not_archive`,{name:n,suffixes:fe.join(` / `)})}async function cx(e){let{entries:t,files:n}=Jb(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&&P(i.name)?{kind:`archive`,name:i.name,file:i}:{kind:`bad`,code:`unsupported`,name:i?.name??``};if(r.isFile)return i?P(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 Yb(r,r.name);return ux(r.name,a)}function lx(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?P(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=Xb(e);return ux(Zb(r),r)}function ux(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:dx(t.map(e=>e.path))?{kind:`folder`,name:`${e||`plugin`}.zip`,files:t}:{kind:`bad`,code:`no-manifest`,name:e}}function dx(e){if(e.includes(ax))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}/${ax}`)}function fx({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)(ox,{client:e,onStaged:n})})]})}var px=`none`;function mx(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.flatMap(e=>e.categories??[]))].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 hx(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 gx(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&&e.some(e=>r.has(e))}function _x(e,t,n){return e===`all`?`all`:e===`none`?n?px:`all`:t.has(e)?e:`all`}function vx(e){let t=[],n=e=>{for(let r of e)t.push(r),n(r.children)};return n(e),t}function yx(e,t){return vx(e).length+ +!!t>=2}function bx({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)(xx,{client:e,onPick:a}):(0,L.jsx)(Sx,{client:e,path:i,options:n,onDone:t})]})}function xx({client:e,onPick:t}){return(0,L.jsx)(`div`,{className:`plugadd__pane`,children:(0,L.jsx)(ox,{client:e,onStaged:t})})}function Sx({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(Ax(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)(Cx,{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(Ax(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 Cx({plan:e,busy:t,onConfirm:n,options:r,form:i,fromManifest:a,onField:o}){let s=R(),c=pe.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:kx(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:kx(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=Ox(s,e,i,a);return(0,L.jsxs)(v.Fragment,{children:[(0,L.jsxs)(`span`,{className:`plugupl__label`,children:[s(wx[e]),t.required&&t.editable&&(0,L.jsx)(`b`,{className:`plugupl__req`,"aria-hidden":`true`,children:`*`}),n.length>0&&(0,L.jsx)(wt,{className:`plugupl__tip`,text:n.join(``),about:s(wx[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?t.multiple?(0,L.jsx)(qb,{multiple:!0,className:`plugupl__pick`,items:Ex(t.choices,t.required?null:s(`web.ui.cap.plug_upload_pick_none`)),values:me(i[e]),onPick:t=>o(e,he(t)),label:s(wx[e]),placeholder:s(`web.ui.cap.plug_upload_pick`),required:t.required}):(0,L.jsx)(qb,{className:`plugupl__pick`,items:Ex(t.choices,t.required?null:s(`web.ui.cap.plug_upload_pick_none`)),value:i[e]??``,onPick:t=>o(e,t),label:s(wx[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(wx[e])}):(0,L.jsx)(`input`,{className:`input`,type:`text`,value:i[e]??``,required:t.required,placeholder:s(Tx[e]),onChange:t=>o(e,t.target.value),"aria-label":s(wx[e])}):(0,L.jsx)(`span`,{className:`plugupl__fixed`,children:Dx(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(wx[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 wx={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`},Tx={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 Ex(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 Dx(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 Ox(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 kx(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function Ax(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 jx={market:`web.ui.cap.plug_tab_market`,installed:`web.ui.cap.plug_tab_installed`},Mx=[`market`,`installed`],Nx={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`},Px={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`},Fx={off:0,stale:1,pending:2,disabled:3,active:4};function Ix({client:e,query:t,lanExposed:n,revision:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState(),[l,u]=v.useState({kind:`list`}),[d,f]=v.useState(0),[p,m]=v.useState(()=>new Set),[h,g]=v.useState(!1),[_,y]=v.useState(),[b,x]=v.useState(`market`),[S,C]=v.useState(`all`),w=v.useId(),T=Hb(640);v.useEffect(()=>{let t=!0;return c(void 0),e.plugins().then(e=>{t&&o(e)}).catch(e=>{t&&c(Qx(e))}),()=>{t=!1}},[e,d,r]);let E=()=>{h||(g(!0),y(void 0),Promise.resolve().then(()=>e.refreshPlugins()).then(e=>{if(e.ok){e.plugins&&o(e.plugins),e.detail&&y({tone:`warn`,text:e.detail});return}y({tone:`error`,text:e.detail??i(`web.ui.cap.plug_refresh_failed`)})}).catch(e=>y({tone:`error`,text:Qx(e).detail})).finally(()=>g(!1)))},D=v.useRef(!1);if(v.useEffect(()=>{D.current||n||a===void 0||!a.refreshEnabled||(D.current=!0,E())},[a,n]),s)return(0,L.jsx)(Jx,{failure:s});if(!a)return(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)});if(l.kind===`add`)return(0,L.jsx)(fx,{client:e,onBack:()=>u({kind:`list`}),onPreviewLocal:e=>u({kind:`preview`,mode:`local`,path:e})});if(l.kind===`upload`)return(0,L.jsx)(bx,{client:e,options:a.uploadOptions,onBack:()=>u({kind:`list`})});if(l.kind===`preview`)return(0,L.jsx)(Kx,{client:e,screen:l,onBack:()=>u({kind:`list`}),onDone:e=>{f(e=>e+1),m(t=>new Set(t).add(e))}});let O=a.installed.filter(e=>$x(t,e.name,e.source)).map(e=>({entry:e,state:Ux(e,a.pendingRestart,p.has(e.name))})).sort((e,t)=>Fx[e.state]-Fx[t.state]||e.entry.name.localeCompare(t.entry.name)),ee=a.hits.filter(e=>$x(t,e.name,e.displayName??``,e.description,e.marketplace,e.author??``,...e.keywords)),te=mx(a.marketplaces,a.hits),k=hx(te),ne=a.hits.some(e=>e.categories===null),re=_x(S,k,ne),ie=yx(te,ne),ae=ee.filter(e=>gx(e.categories,re,k)),A=ae.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)(Lx,{baseId:w,pane:b,onPick:x,counts:{market:ae.length,installed:O.length}}),!n&&(0,L.jsxs)(`div`,{className:`plug__acts`,children:[a.refreshEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__refresh`,type:`button`,disabled:h,onClick:E,children:[h?(0,L.jsx)(`span`,{className:`card__spin`,"aria-hidden":!0}):(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),i(h?`web.ui.cap.plug_refreshing`:`web.ui.cap.plug_refresh`)]}),a.uploadEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__upload`,type:`button`,onClick:()=>u({kind:`upload`}),children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),i(`web.ui.cap.plug_upload`)]}),a.localInstallEnabled&&(0,L.jsxs)(`button`,{className:`btn btn--primary plug__add`,type:`button`,onClick:()=>u({kind:`add`}),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),i(`web.ui.cap.plug_add`)]})]})]}),a.pendingRestart&&(0,L.jsx)(Bx,{}),_!==void 0&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":_.tone,role:`status`,children:(0,L.jsx)(`p`,{children:_.text})}),n&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.cap.plug_locked_lan`)})}),b===`installed`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${w}-panel`,role:`tabpanel`,"aria-labelledby":`${w}-installed`,children:O.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.plug_installed_empty`)}):(0,L.jsx)(`ul`,{className:`cards cards--plug`,...n?{}:{"data-act":`true`},children:O.map(({entry:t,state:r},i)=>{let o=a.hits.find(e=>e.name===t.name&&e.updateAvailable)?.version??null;return(0,L.jsx)(Hx,{entry:t,state:r,hue:Vy(i),canWrite:!n,freshVersion:o,canUpdate:t.updateAllowed&&!t.linked&&(!a.refreshEnabled||o!==null),onUpdate:()=>u({kind:`preview`,mode:`update`,name:t.name}),onUninstalled:()=>f(e=>e+1),client:e},t.name)})})},`installed`),b===`market`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${w}-panel`,role:`tabpanel`,"aria-labelledby":`${w}-market`,children:(0,L.jsxs)(`div`,{className:`plug__browse`,...ie?{"data-cats":`true`}:{},children:[ie&&(0,L.jsx)(zx,{nodes:te,current:re,onPick:C,hasNone:ne,narrow:T}),(0,L.jsx)(`div`,{className:`plug__grid`,children:ae.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(a.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:ae.map((e,t)=>(0,L.jsx)(Wx,{hit:e,canWrite:!n,hue:Vy(t),reserveCrown:A,onInstall:()=>u({kind:`preview`,mode:`install`,ref:e.ref}),onUpdate:()=>u({kind:`preview`,mode:`update`,name:e.name})},e.ref))})})]})},`market`)]})}function Lx({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:Mx.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(jx[a]),(0,L.jsx)(`span`,{className:`plug__tabn`,children:r[a]})]},a))})}function Rx(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:px,label:t(`web.ui.cap.plug_cat_none`),children:[]}]:[]]}function zx({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)(qb,{items:Rx(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 Bx(){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 Vx({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 Hx({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,y=r&&(a||e.uninstallAllowed);return(0,L.jsxs)(`li`,{className:`card card--plug`,"data-state":t,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(Vx,{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(Nx[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:Xx(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}),(_||y)&&(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(Qx(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`)}),e.uninstallAllowed&&(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 Ux(e,t,n){return e.active?`active`:e.enabled?n?`pending`:t?`stale`:`off`:`disabled`}function Wx({hit:e,hue:t,reserveCrown:n,canWrite:r,onInstall:i,onUpdate:a}){let o=R(),s=Zx(o,e),c=!e.installable&&e.installAllowed,l=s!==``||c||e.updateAvailable,u=e.author!==null||e.categories!==null,d=r?e.installed?e.updateAvailable&&e.updateAllowed?`update`:`already`:e.installAllowed?`install`:null: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)(Vx,{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]})]}),r&&e.menu.length>0&&(0,L.jsx)(Gx,{hit:e})]}),(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(Px[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`)}),l&&(0,L.jsxs)(`p`,{className:`card__meta`,children:[s!==``&&(0,L.jsx)(`span`,{className:`card__stat`,children:s}),c&&(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??``})})]}),(u||d!==null)&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[u&&(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.categories!==null&&(0,L.jsx)(`span`,{className:`card__stat`,children:e.categories.join(F)})]}),d===`update`&&(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,onClick:a,children:o(`web.ui.cap.plug_update`)}),d===`already`&&(0,L.jsx)(`span`,{className:`plug__tag`,children:o(`web.ui.cap.plug_already`)}),d===`install`&&(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 Gx({hit:e}){let t=R(),[n,r]=v.useState(!1),i=v.useRef(null),a=t(`web.ui.cap.plug_more`,{name:e.displayName??e.name}),o=t=>{r(!1);let n={type:_e,id:t,ref:e.ref};window.parent.postMessage(n,`*`)};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`plug__menu`,type:`button`,ref:i,"aria-label":a,"aria-haspopup":`true`,"aria-expanded":n,onClick:()=>r(e=>!e),children:(0,L.jsx)(z,{name:`ellipsis-vertical`,size:`sm`})}),(0,L.jsx)(At,{open:n,onClose:()=>r(!1),triggerRef:i,label:a,children:e.menu.map(e=>(0,L.jsx)(jt,{title:e.label,...e.danger?{danger:!0}:{},onSelect:()=>o(e.id)},e.id))})]})}function Kx({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(Qx(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)(qx,{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(Qx(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)(Bx,{}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,onClick:n,children:i(`web.ui.cap.plug_back`)})]})]})}function qx({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:Yx(i,a.commands)})}),a.roles.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_roles`,{count:a.roles.length,names:Yx(i,a.roles)})}),a.skills.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_skills`,{count:a.skills.length,names:Yx(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:Yx(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:Yx(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:Yx(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 Jx({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 Yx(e,t){return t.join(e(`web.ui.cap.list_sep`))}function Xx(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 Zx(e,t){return t.likes===null?``:e(`web.ui.cap.plug_likes`,{count:t.likes})}function Qx(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 $x(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function eS(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)(ub,{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 tS({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 nS({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:rS(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`file`?new Uint8Array(await r.file.arrayBuffer()):$b(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:ix(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&&iS(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(aS(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:ue.join(`,`),onChange:e=>{f(aS(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 rS(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:ue.join(` / `)})}async function iS(e){let{entries:t,files:n}=Jb(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&&de(i.name)?{kind:`file`,name:i.name,file:i}:{kind:`bad`,code:`unreadable`,name:i?.name??``};if(r.isFile)return i?de(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 Yb(r,r.name);return oS(r.name,a)}function aS(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?de(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=Xb(e);return oS(Zb(r),r)}function oS(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:{kind:`folder`,name:`${e||`skills`}.zip`,files:t}}var sS={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 cS({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=Xt(e,g),b=rn(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(mS(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)(lS,{browser:y,onPick:s}),!i&&(0,L.jsx)(nS,{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)(uS,{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(mS(e))).finally(()=>p(!1)))}}):(0,L.jsx)(fS,{done:u,onAgain:()=>d(void 0)})]})}function lS({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)(Jt,{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 uS({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)(pS,{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(sS[e.form??`tree`])})}),(0,L.jsx)(`ul`,{className:`slots`,children:e.skills.map(e=>(0,L.jsx)(dS,{skill:e},`${e.category}/${e.name}`))}),(0,L.jsx)(pS,{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 dS({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 fS({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)(pS,{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 pS({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 mS(e){let t=e?.detail;return typeof t==`string`&&t.length>0?t:e instanceof Error?e.message:String(e)}var hS=[{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 gS({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)(vS,{client:n,sessionId:r,name:c,onBack:()=>l(void 0)}):u&&n&&i?(0,L.jsx)(cS,{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})})]}),hS.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)(db,{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)(yS,{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)(_S,{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 _S({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 vS({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)(O_,{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 yS({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)(tS,{inventory:t.inventory,tier:`read`}),(0,L.jsx)(eS,{root:e,want:`read`,available:t.trustRequest,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}})]})}var bS=[{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 xS(e){return bS.find(t=>t.id===e)?.title??``}function SS(e){return bS.find(t=>t.id===e)?.tip??``}function CS({client:e,sessionId:t,tab:n,onBack:r,sidebar:i,onSummon:a,onTakeOver:o,pinnedRole:s,canSummon:c,newSession:l,lanExposed:u,nativeDirPicker:d,pluginsRevision:f}){let p=R(),[m,h]=v.useState(``),[g,_]=v.useState(),[y,b]=v.useState(),[x,S]=v.useState(0);v.useEffect(()=>{if(!t)return;let n=!0;return b(void 0),e.capabilities(t).then(e=>{n&&_(e)}).catch(e=>{n&&b(e instanceof Error?e.message:String(e))}),()=>{n=!1}},[e,t,x]);let C=n===`experts`?g?.roles.length:n===`skills`?g?.skills.length:n===`connectors`?g&&g.builtinConnectors.length+g.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":p(`web.ui.topbar.sidebar`),title:p(`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`}),p(`web.ui.cap.back`)]}),(0,L.jsxs)(`h1`,{className:`panelcol__title cap__title`,children:[p(xS(n)),(0,L.jsx)(wt,{text:p(SS(n)),about:p(xS(n))})]}),(0,L.jsx)(`span`,{className:`panelcol__n`,children:C??``}),(0,L.jsxs)(`label`,{className:`cap__search`,children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:p(`web.ui.cap.search`),"aria-label":p(`web.ui.cap.search`)})]})]}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:(0,L.jsx)(`div`,{className:`cap__pane`,children:(0,L.jsx)(wS,{onWrote:()=>S(e=>e+1),tab:n,query:m.trim().toLowerCase(),data:g,...y===void 0?{}:{error:y},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},pluginsRevision:f})})})]})}function wS({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,pluginsRevision:m}){let h=R();if(e===`plugins`)return(0,L.jsx)(Ix,{client:i,query:t,lanExposed:f,revision:m});if(a===void 0)return(0,L.jsx)(`p`,{className:`cap__foot`,children:h(`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:h(`web.ui.cap.loading`)});if(e===`experts`){let e=n.roles.filter(e=>TS(t,e.name,e.description)||(e.tools??[]).some(e=>TS(t,e))||e.toolsCut.some(e=>TS(t,e)));return(0,L.jsx)(Ib,{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=>TS(t,e.name,e.category,e.description));return(0,L.jsx)(gS,{skills:e,project:n.project,client:i,sessionId:a,onWrote:d,lanExposed:f,...p===void 0?{}:{nativeDirPicker:p}})}return(0,L.jsx)(kb,{builtin:n.builtinConnectors.filter(e=>TS(t,e.name)),mcp:n.mcpServers.filter(e=>TS(t,e.name)),client:i,lanExposed:f})}function TS(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function ES(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 DS=[],OS=[];function kS(e){return e.length===0?OS:e.map(e=>({kind:`prompt`,name:e.name,description:e.description,...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint}}))}function AS(e,t){let[n,r]=v.useState(DS);return v.useEffect(()=>{if(!e||!t){r(DS);return}let n=!0;return e.commands(t).then(e=>{n&&r(e.commands)}).catch(()=>{n&&r(DS)}),()=>{n=!1}},[e,t]),n}function jS(e,t){if(!t.startsWith(`/`)||t.includes(`
|
|
374
|
+
`).map(e=>e.trim()).filter(e=>e.length>0)}function Nb({client:e,lanExposed:t,onAdded:n}){let r=R(),[i,a]=v.useState(!1),[o,s]=v.useState(jb),[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=Mb(o.tools),i=Mb(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(jb)}).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 Pb=[{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`}],Fb={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 Ib({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)(Nb,{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(Fb[p.takenOverBy])})})]}),Pb.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)(db,{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)(Lb,{role:e,hue:Vy(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 Lb({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)(vy,{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 Rb(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 zb({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||Rb(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 Bb=1100,Vb=1180;function Hb(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 Ub(){let e=Hb(Bb),t=Hb(Vb),[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 Wb({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 zb({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 Gb(e,t){for(let n of e){if(n.value===t)return[n];let e=Gb(n.children,t);if(e.length>0)return[n,...e]}return[]}function Kb(e,t){for(let n of e){if(n.value===t)return n;let e=Kb(n.children,t);if(e!==void 0)return e}}function qb(e){let{items:t,label:n,placeholder:r,required:i,className:a}=e,[o,s]=v.useState(!1),c=v.useRef(null),l=v.useRef(null),u=e.multiple===!0?e.values:e.value===``?[]:[e.value],[d,f]=v.useState(``),p=d===``?u[0]??``:d,m=Gb(t,e.multiple===!0?p:e.value),h=[t];for(let e of m)e.children.length>0&&h.push(e.children);let g=v.useCallback(()=>{s(!1),c.current?.focus()},[]);v.useEffect(()=>{if(!o)return;let e=e=>{let t=e.target;t&&c.current?.contains(t)!==!0&&l.current?.contains(t)!==!0&&s(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[o]);let _=t=>{if(e.multiple===!0){if(t.value===``){e.onPick([]);return}f(t.value),e.onPick(u.includes(t.value)?u.filter(e=>e!==t.value):[...u,t.value]);return}e.onPick(t.value),t.children.length===0&&g()},y=u.map(e=>Kb(t,e)).filter(e=>e!==void 0),b=y.length===0?r:e.multiple===!0?y.map(e=>e.label).join(F):m.map(e=>e.label).join(` / `);return(0,L.jsxs)(`div`,{className:a===void 0?`cascade`:`cascade ${a}`,children:[(0,L.jsxs)(`button`,{className:`cascade__btn`,type:`button`,ref:c,"aria-label":n,"aria-haspopup":`dialog`,"aria-expanded":o,...i===!0?{"aria-required":`true`}:{},...y.length===0?{"data-empty":`true`}:{},onClick:()=>s(e=>!e),children:[(0,L.jsx)(`span`,{className:`cascade__value`,children:b}),(0,L.jsx)(z,{name:`chevron-down`,size:`sm`})]}),(0,L.jsx)(Ft,{open:o,anchorRef:c,onClose:()=>s(!1),className:`cascade__pop`,width:`content`,children:(0,L.jsx)(`div`,{className:`cascade__cols`,ref:l,role:`dialog`,"aria-label":n,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),g())},children:h.map((t,n)=>(0,L.jsx)(`ul`,{className:`cascade__col`,children:t.map(t=>{let r=m[n]?.value===t.value,i=u.includes(t.value);return(0,L.jsx)(`li`,{children:(0,L.jsxs)(`button`,{className:`cascade__item`,type:`button`,...e.multiple===!0?{"aria-pressed":i}:i?{"aria-current":`true`}:{},...r?{"data-open":`true`}:{},onClick:()=>_(t),children:[e.multiple===!0&&(0,L.jsx)(z,{name:`check`,size:`sm`,className:`cascade__tick`}),(0,L.jsx)(`span`,{className:`cascade__name`,children:t.label}),t.children.length>0&&(0,L.jsx)(z,{name:`chevron-right`,size:`sm`,"aria-hidden":!0})]})},t.value)})},n))})})]})}function Jb(e){return{entries:Array.from(e?.items??[]).filter(e=>e.kind===`file`).map(e=>e.webkitGetAsEntry?.()??null),files:Array.from(e?.files??[])}}async function Yb(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 Yb(n,e));continue}let i=await new Promise(e=>{n.file(e,()=>e(null))});i&&r.push({path:e,file:i})}}return r}function Xb(e){return Array.from(e??[]).flatMap(e=>{let t=e.webkitRelativePath;return t===``?[]:[{path:t,file:e}]})}function Zb(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 $b(e){let t=new TextEncoder,n=[],r=[],i=0;for(let a of e){let e=t.encode(a.path),o=rx(a.data),[s,c]=tx(),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),ex([...n,...r,o])}function ex(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 tx(){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 nx;function rx(e){if(!nx){nx=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;nx[e]=t>>>0}}let t=4294967295;for(let n of e)t=nx[(t^n)&255]^t>>>8;return(t^4294967295)>>>0}function ix(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 ax=`epoch-plugin.json`;function ox({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:sx(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`archive`?new Uint8Array(await r.file.arrayBuffer()):$b(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:ix(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&&cx(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(lx(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:fe.join(`,`),onChange:e=>{f(lx(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 sx(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:ax}):e(`web.ui.cap.plug_drop_not_archive`,{name:n,suffixes:fe.join(` / `)})}async function cx(e){let{entries:t,files:n}=Jb(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&&P(i.name)?{kind:`archive`,name:i.name,file:i}:{kind:`bad`,code:`unsupported`,name:i?.name??``};if(r.isFile)return i?P(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 Yb(r,r.name);return ux(r.name,a)}function lx(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?P(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=Xb(e);return ux(Zb(r),r)}function ux(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:dx(t.map(e=>e.path))?{kind:`folder`,name:`${e||`plugin`}.zip`,files:t}:{kind:`bad`,code:`no-manifest`,name:e}}function dx(e){if(e.includes(ax))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}/${ax}`)}function fx({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)(ox,{client:e,onStaged:n})})]})}var px=`none`;function mx(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.flatMap(e=>e.categories??[]))].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 hx(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 gx(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&&e.some(e=>r.has(e))}function _x(e,t,n){return e===`all`?`all`:e===`none`?n?px:`all`:t.has(e)?e:`all`}function vx(e){let t=[],n=e=>{for(let r of e)t.push(r),n(r.children)};return n(e),t}function yx(e,t){return vx(e).length+ +!!t>=2}function bx({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)(xx,{client:e,onPick:a}):(0,L.jsx)(Sx,{client:e,path:i,options:n,onDone:t})]})}function xx({client:e,onPick:t}){return(0,L.jsx)(`div`,{className:`plugadd__pane`,children:(0,L.jsx)(ox,{client:e,onStaged:t})})}function Sx({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(Ax(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)(Cx,{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(Ax(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 Cx({plan:e,busy:t,onConfirm:n,options:r,form:i,fromManifest:a,onField:o}){let s=R(),c=pe.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:kx(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:kx(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=Ox(s,e,i,a);return(0,L.jsxs)(v.Fragment,{children:[(0,L.jsxs)(`span`,{className:`plugupl__label`,children:[s(wx[e]),t.required&&t.editable&&(0,L.jsx)(`b`,{className:`plugupl__req`,"aria-hidden":`true`,children:`*`}),n.length>0&&(0,L.jsx)(wt,{className:`plugupl__tip`,text:n.join(``),about:s(wx[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?t.multiple?(0,L.jsx)(qb,{multiple:!0,className:`plugupl__pick`,items:Ex(t.choices,t.required?null:s(`web.ui.cap.plug_upload_pick_none`)),values:me(i[e]),onPick:t=>o(e,he(t)),label:s(wx[e]),placeholder:s(`web.ui.cap.plug_upload_pick`),required:t.required}):(0,L.jsx)(qb,{className:`plugupl__pick`,items:Ex(t.choices,t.required?null:s(`web.ui.cap.plug_upload_pick_none`)),value:i[e]??``,onPick:t=>o(e,t),label:s(wx[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(wx[e])}):(0,L.jsx)(`input`,{className:`input`,type:`text`,value:i[e]??``,required:t.required,placeholder:s(Tx[e]),onChange:t=>o(e,t.target.value),"aria-label":s(wx[e])}):(0,L.jsx)(`span`,{className:`plugupl__fixed`,children:Dx(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(wx[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 wx={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`},Tx={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 Ex(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 Dx(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 Ox(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 kx(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function Ax(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 jx={market:`web.ui.cap.plug_tab_market`,installed:`web.ui.cap.plug_tab_installed`},Mx=[`market`,`installed`],Nx={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`},Px={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`},Fx={off:0,stale:1,pending:2,disabled:3,active:4};function Ix({client:e,query:t,lanExposed:n,revision:r}){let i=R(),[a,o]=v.useState(),[s,c]=v.useState(),[l,u]=v.useState({kind:`list`}),[d,f]=v.useState(0),[p,m]=v.useState(()=>new Set),[h,g]=v.useState(!1),[_,y]=v.useState(),[b,x]=v.useState(`market`),[S,C]=v.useState(`all`),w=v.useId(),T=Hb(640);v.useEffect(()=>{let t=!0;return c(void 0),e.plugins().then(e=>{t&&o(e)}).catch(e=>{t&&c(Qx(e))}),()=>{t=!1}},[e,d,r]);let E=()=>{h||(g(!0),y(void 0),Promise.resolve().then(()=>e.refreshPlugins()).then(e=>{if(e.ok){e.plugins&&o(e.plugins),e.detail&&y({tone:`warn`,text:e.detail});return}y({tone:`error`,text:e.detail??i(`web.ui.cap.plug_refresh_failed`)})}).catch(e=>y({tone:`error`,text:Qx(e).detail})).finally(()=>g(!1)))},D=v.useRef(!1);if(v.useEffect(()=>{D.current||n||a===void 0||!a.refreshEnabled||(D.current=!0,E())},[a,n]),s)return(0,L.jsx)(Jx,{failure:s});if(!a)return(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.loading`)});if(l.kind===`add`)return(0,L.jsx)(fx,{client:e,onBack:()=>u({kind:`list`}),onPreviewLocal:e=>u({kind:`preview`,mode:`local`,path:e})});if(l.kind===`upload`)return(0,L.jsx)(bx,{client:e,options:a.uploadOptions,onBack:()=>u({kind:`list`})});if(l.kind===`preview`)return(0,L.jsx)(Kx,{client:e,screen:l,onBack:()=>u({kind:`list`}),onDone:e=>{f(e=>e+1),m(t=>new Set(t).add(e))}});let O=a.installed.filter(e=>$x(t,e.name,e.source)).map(e=>({entry:e,state:Ux(e,a.pendingRestart,p.has(e.name))})).sort((e,t)=>Fx[e.state]-Fx[t.state]||e.entry.name.localeCompare(t.entry.name)),ee=a.hits.filter(e=>$x(t,e.name,e.displayName??``,e.description,e.marketplace,e.author??``,...e.keywords)),te=mx(a.marketplaces,a.hits),k=hx(te),ne=a.hits.some(e=>e.categories===null),re=_x(S,k,ne),ie=yx(te,ne),ae=ee.filter(e=>gx(e.categories,re,k)),A=ae.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)(Lx,{baseId:w,pane:b,onPick:x,counts:{market:ae.length,installed:O.length}}),!n&&(0,L.jsxs)(`div`,{className:`plug__acts`,children:[a.refreshEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__refresh`,type:`button`,disabled:h,onClick:E,children:[h?(0,L.jsx)(`span`,{className:`card__spin`,"aria-hidden":!0}):(0,L.jsx)(z,{name:`rotate-ccw`,size:`sm`}),i(h?`web.ui.cap.plug_refreshing`:`web.ui.cap.plug_refresh`)]}),a.uploadEnabled&&(0,L.jsxs)(`button`,{className:`btn plug__upload`,type:`button`,onClick:()=>u({kind:`upload`}),children:[(0,L.jsx)(z,{name:`arrow-up-right`,size:`sm`}),i(`web.ui.cap.plug_upload`)]}),a.localInstallEnabled&&(0,L.jsxs)(`button`,{className:`btn btn--primary plug__add`,type:`button`,onClick:()=>u({kind:`add`}),children:[(0,L.jsx)(z,{name:`plus`,size:`sm`}),i(`web.ui.cap.plug_add`)]})]})]}),a.pendingRestart&&(0,L.jsx)(Bx,{}),_!==void 0&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":_.tone,role:`status`,children:(0,L.jsx)(`p`,{children:_.text})}),n&&(0,L.jsx)(`div`,{className:`note-block plug__note`,"data-tone":`warn`,children:(0,L.jsx)(`p`,{children:i(`web.ui.cap.plug_locked_lan`)})}),b===`installed`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${w}-panel`,role:`tabpanel`,"aria-labelledby":`${w}-installed`,children:O.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(`web.ui.cap.plug_installed_empty`)}):(0,L.jsx)(`ul`,{className:`cards cards--plug`,...n?{}:{"data-act":`true`},children:O.map(({entry:t,state:r},i)=>{let o=a.hits.find(e=>e.name===t.name&&e.updateAvailable)?.version??null;return(0,L.jsx)(Hx,{entry:t,state:r,hue:Vy(i),canWrite:!n,freshVersion:o,canUpdate:t.updateAllowed&&!t.linked&&(!a.refreshEnabled||o!==null),onUpdate:()=>u({kind:`preview`,mode:`update`,name:t.name}),onUninstalled:()=>f(e=>e+1),client:e},t.name)})})},`installed`),b===`market`&&(0,L.jsx)(`section`,{className:`plug__sec`,id:`${w}-panel`,role:`tabpanel`,"aria-labelledby":`${w}-market`,children:(0,L.jsxs)(`div`,{className:`plug__browse`,...ie?{"data-cats":`true`}:{},children:[ie&&(0,L.jsx)(zx,{nodes:te,current:re,onPick:C,hasNone:ne,narrow:T}),(0,L.jsx)(`div`,{className:`plug__grid`,children:ae.length===0?(0,L.jsx)(`p`,{className:`cap__foot`,children:i(a.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:ae.map((e,t)=>(0,L.jsx)(Wx,{hit:e,canWrite:!n,hue:Vy(t),reserveCrown:A,onInstall:()=>u({kind:`preview`,mode:`install`,ref:e.ref}),onUpdate:()=>u({kind:`preview`,mode:`update`,name:e.name})},e.ref))})})]})},`market`)]})}function Lx({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:Mx.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(jx[a]),(0,L.jsx)(`span`,{className:`plug__tabn`,children:r[a]})]},a))})}function Rx(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:px,label:t(`web.ui.cap.plug_cat_none`),children:[]}]:[]]}function zx({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)(qb,{items:Rx(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 Bx(){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 Vx({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 Hx({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,y=r&&(a||e.uninstallAllowed);return(0,L.jsxs)(`li`,{className:`card card--plug`,"data-state":t,children:[(0,L.jsxs)(`header`,{className:`card__head`,children:[(0,L.jsx)(Vx,{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(Nx[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:Xx(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}),(_||y)&&(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(Qx(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`)}),e.uninstallAllowed&&(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 Ux(e,t,n){return e.active?`active`:e.enabled?n?`pending`:t?`stale`:`off`:`disabled`}function Wx({hit:e,hue:t,reserveCrown:n,canWrite:r,onInstall:i,onUpdate:a}){let o=R(),s=Zx(o,e),c=!e.installable&&e.installAllowed,l=s!==``||c||e.updateAvailable,u=e.author!==null||e.categories!==null,d=r?e.installed?e.updateAvailable&&e.updateAllowed?`update`:`already`:e.installAllowed?`install`:null: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)(Vx,{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]})]}),r&&e.menu.length>0&&(0,L.jsx)(Gx,{hit:e})]}),(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(Px[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`)}),l&&(0,L.jsxs)(`p`,{className:`card__meta`,children:[s!==``&&(0,L.jsx)(`span`,{className:`card__stat`,children:s}),c&&(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??``})})]}),(u||d!==null)&&(0,L.jsxs)(`footer`,{className:`card__foot`,children:[u&&(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.categories!==null&&(0,L.jsx)(`span`,{className:`card__stat`,children:e.categories.join(F)})]}),d===`update`&&(0,L.jsx)(`button`,{className:`btn btn--sm card__call`,type:`button`,onClick:a,children:o(`web.ui.cap.plug_update`)}),d===`already`&&(0,L.jsx)(`span`,{className:`plug__tag`,children:o(`web.ui.cap.plug_already`)}),d===`install`&&(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 Gx({hit:e}){let t=R(),[n,r]=v.useState(!1),i=v.useRef(null),a=t(`web.ui.cap.plug_more`,{name:e.displayName??e.name}),o=t=>{r(!1);let n={type:_e,id:t,ref:e.ref};window.parent.postMessage(n,`*`)};return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{className:`plug__menu`,type:`button`,ref:i,"aria-label":a,"aria-haspopup":`true`,"aria-expanded":n,onClick:()=>r(e=>!e),children:(0,L.jsx)(z,{name:`ellipsis-vertical`,size:`sm`})}),(0,L.jsx)(At,{open:n,onClose:()=>r(!1),triggerRef:i,label:a,children:e.menu.map(e=>(0,L.jsx)(jt,{title:e.label,...e.danger?{danger:!0}:{},onSelect:()=>o(e.id)},e.id))})]})}function Kx({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(Qx(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)(qx,{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(Qx(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)(Bx,{}),(0,L.jsx)(`button`,{className:`btn btn--sm`,type:`button`,onClick:n,children:i(`web.ui.cap.plug_back`)})]})]})}function qx({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:Yx(i,a.commands)})}),a.roles.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_roles`,{count:a.roles.length,names:Yx(i,a.roles)})}),a.skills.length>0&&(0,L.jsx)(`li`,{children:i(`web.ui.cap.plug_inv_skills`,{count:a.skills.length,names:Yx(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:Yx(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:Yx(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:Yx(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 Jx({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 Yx(e,t){return t.join(e(`web.ui.cap.list_sep`))}function Xx(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 Zx(e,t){return t.likes===null?``:e(`web.ui.cap.plug_likes`,{count:t.likes})}function Qx(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 $x(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function eS(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)(ub,{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 tS({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 nS({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:rS(n,r)});i({kind:`busy`}),(async()=>{try{let a=r.kind===`file`?new Uint8Array(await r.file.arrayBuffer()):$b(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:ix(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&&iS(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(aS(e.target.files,`folder`)),e.target.value=``}}),(0,L.jsx)(`input`,{ref:l,className:`plugdrop__file`,type:`file`,accept:ue.join(`,`),onChange:e=>{f(aS(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 rS(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:ue.join(` / `)})}async function iS(e){let{entries:t,files:n}=Jb(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&&de(i.name)?{kind:`file`,name:i.name,file:i}:{kind:`bad`,code:`unreadable`,name:i?.name??``};if(r.isFile)return i?de(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 Yb(r,r.name);return oS(r.name,a)}function aS(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?de(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=Xb(e);return oS(Zb(r),r)}function oS(e,t){return t.length===0?{kind:`bad`,code:`empty`,name:e}:{kind:`folder`,name:`${e||`skills`}.zip`,files:t}}var sS={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 cS({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=Xt(e,g),b=rn(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(mS(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)(lS,{browser:y,onPick:s}),!i&&(0,L.jsx)(nS,{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)(uS,{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(mS(e))).finally(()=>p(!1)))}}):(0,L.jsx)(fS,{done:u,onAgain:()=>d(void 0)})]})}function lS({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)(Jt,{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 uS({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)(pS,{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(sS[e.form??`tree`])})}),(0,L.jsx)(`ul`,{className:`slots`,children:e.skills.map(e=>(0,L.jsx)(dS,{skill:e},`${e.category}/${e.name}`))}),(0,L.jsx)(pS,{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 dS({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 fS({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)(pS,{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 pS({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 mS(e){let t=e?.detail;return typeof t==`string`&&t.length>0?t:e instanceof Error?e.message:String(e)}var hS=[{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 gS({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)(vS,{client:n,sessionId:r,name:c,onBack:()=>l(void 0)}):u&&n&&i?(0,L.jsx)(cS,{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})})]}),hS.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)(db,{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)(yS,{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)(_S,{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 _S({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 vS({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)(O_,{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 yS({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)(tS,{inventory:t.inventory,tier:`read`}),(0,L.jsx)(eS,{root:e,want:`read`,available:t.trustRequest,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}})]})}var bS=[{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 xS(e){return bS.find(t=>t.id===e)?.title??``}function SS(e){return bS.find(t=>t.id===e)?.tip??``}function CS({client:e,sessionId:t,tab:n,onBack:r,sidebar:i,onSummon:a,onTakeOver:o,pinnedRole:s,canSummon:c,newSession:l,lanExposed:u,nativeDirPicker:d,pluginsRevision:f}){let p=R(),[m,h]=v.useState(``),[g,_]=v.useState(),[y,b]=v.useState(),[x,S]=v.useState(0);v.useEffect(()=>{if(!t)return;let n=!0;return b(void 0),e.capabilities(t).then(e=>{n&&_(e)}).catch(e=>{n&&b(e instanceof Error?e.message:String(e))}),()=>{n=!1}},[e,t,x]);let C=n===`experts`?g?.roles.length:n===`skills`?g?.skills.length:n===`connectors`?g&&g.builtinConnectors.length+g.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":p(`web.ui.topbar.sidebar`),title:p(`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`}),p(`web.ui.cap.back`)]}),(0,L.jsxs)(`h1`,{className:`panelcol__title cap__title`,children:[p(xS(n)),(0,L.jsx)(wt,{text:p(SS(n)),about:p(xS(n))})]}),(0,L.jsx)(`span`,{className:`panelcol__n`,children:C??``}),(0,L.jsxs)(`label`,{className:`cap__search`,children:[(0,L.jsx)(z,{name:`search`,size:`sm`}),(0,L.jsx)(`input`,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:p(`web.ui.cap.search`),"aria-label":p(`web.ui.cap.search`)})]})]}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:(0,L.jsx)(`div`,{className:`cap__pane`,children:(0,L.jsx)(wS,{onWrote:()=>S(e=>e+1),tab:n,query:m.trim().toLowerCase(),data:g,...y===void 0?{}:{error:y},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},pluginsRevision:f})})})]})}function wS({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,pluginsRevision:m}){let h=R();if(e===`plugins`)return(0,L.jsx)(Ix,{client:i,query:t,lanExposed:f,revision:m});if(a===void 0)return(0,L.jsx)(`p`,{className:`cap__foot`,children:h(`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:h(`web.ui.cap.loading`)});if(e===`experts`){let e=n.roles.filter(e=>TS(t,e.name,e.description)||(e.tools??[]).some(e=>TS(t,e))||e.toolsCut.some(e=>TS(t,e)));return(0,L.jsx)(Ib,{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=>TS(t,e.name,e.category,e.description));return(0,L.jsx)(gS,{skills:e,project:n.project,client:i,sessionId:a,onWrote:d,lanExposed:f,...p===void 0?{}:{nativeDirPicker:p}})}return(0,L.jsx)(kb,{builtin:n.builtinConnectors.filter(e=>TS(t,e.name)),mcp:n.mcpServers.filter(e=>TS(t,e.name)),client:i,lanExposed:f})}function TS(e,...t){return!e||t.some(t=>t.toLowerCase().includes(e))}function ES(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 DS=[],OS=[];function kS(e){return e.length===0?OS:e.map(e=>({kind:`prompt`,name:e.name,description:e.description,...e.argumentHint===void 0?{}:{argumentHint:e.argumentHint}}))}function AS(e,t){let[n,r]=v.useState(DS);return v.useEffect(()=>{if(!e||!t){r(DS);return}let n=!0;return e.commands(t).then(e=>{n&&r(e.commands)}).catch(()=>{n&&r(DS)}),()=>{n=!1}},[e,t]),n}function jS(e,t){if(!t.startsWith(`/`)||t.includes(`
|
|
375
375
|
`))return OS;let n=t.slice(1);if(/\s/.test(n))return OS;let r=n.toLowerCase();return r?e.filter(e=>e.name.startsWith(r)):e}function MS(e,t){return e.length===0?t:t.length===0?e:[...e,...t]}function NS(e){return`/${e.name} `}function PS(e){return`cmdopt-${e}`}var FS=`cmdpalette`;function IS({matched:e,activeIndex:t,onPick:n,onHover:r}){let i=R(),a=Rt(t,e.length,r);return(0,L.jsx)(`ul`,{ref:a.ref,id:FS,className:`cmdpalette`,role:`listbox`,"aria-label":i(`web.ui.composer.commands_label`),children:e.map((e,r)=>(0,L.jsxs)(`li`,{id:PS(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 LS(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 RS(e){let{client:t,sessionId:n,readOnly:r,busy:i,t:a,openContextPane:o,setNotice:s}=e;if(!t||n===void 0||r)return OS;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(LS(a,e))).catch(()=>{s({command:`compact`,text:a(`web.ui.cmd.compact_failed`),pending:!1,tone:`warn`})})}}),c}var zS=4194304,BS=16777216,VS=64,HS=64;function US(e,t){let n=HS;for(let e of t)e.kind!==`file`&&(n+=e.bytes+(e.part.mediaType?.length??0)+VS);if(!e)return n;n+=VS;let r=n+e.length*6;return r<=16777216?r:n+new TextEncoder().encode(JSON.stringify(e)).length}function WS(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 GS(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(zS/1024/1024)}));continue}try{let e=await WS(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 KS({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 qS({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:Di(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:Di(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 JS={text:``,attachments:[],rejected:[],reading:[],paletteClosed:!1};function YS(e){return e.text===``&&e.attachments.length===0&&e.rejected.length===0&&e.reading.length===0&&!e.paletteClosed}function XS(e,t){return e.trim()?`${e.trimEnd()}\n${t}`:t}function ZS(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 QS(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 $S(e){return e.attachments.filter(e=>e.kind===`file`).map(e=>e.name)}function eC(e){let[t,n]=v.useState(()=>new Map),r=v.useCallback((e,t)=>{n(n=>{let r=t(n.get(e)??JS),i=new Map(n);return YS(r)?i.delete(e):i.set(e,r),i})},[]),i=v.useCallback(t=>r(e,t),[r,e]);return{slot:t.get(e)??JS,patch:r,here:i}}function tC(e,t){let n=R(),{slot:r,patch:i,here:a}=eC(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:XS(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]})),GS(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=>ZS(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=>({...JS,reading:e.reading})),[a]),m=v.useMemo(()=>US(r.text,r.attachments),[r.text,r.attachments]),h=v.useCallback(()=>QS(r),[r]),g=v.useCallback(()=>$S(r),[r]);return v.useMemo(()=>({...r,bytes:m,oversize:m>BS,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 nC(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 rC=new Set([`text/plain`,`text/html`]),iC=[`dragenter`,`dragover`,`drop`];function aC(e){let t=Array.from(e?.types??[]);return t.length===0||t.some(e=>!rC.has(e))}function oC({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||aC(e.dataTransfer)&&e.preventDefault()};for(let t of iC)window.addEventListener(t,e);return()=>{for(let t of iC)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(nC(n.dataTransfer))}}}}function sC(){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 cC(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 lC({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 uC=`refpalette`;function dC(e){return`refopt-${e}`}function fC(e){return e?e.split(/[\\/]/).filter(Boolean).pop()??e:``}function pC(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 mC({candidates:e,activeIndex:t,onPick:n,onHover:r}){let i=R(),a=Date.now(),o=Rt(t,e.length,r);return(0,L.jsxs)(`ul`,{ref:o.ref,id:uC,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:dC(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:pC(e.updatedAt,a),count:e.messageCount}):i(`web.ui.mention.candidate_elsewhere`,{when:pC(e.updatedAt,a),count:e.messageCount,where:fC(e.cwd)})})]},e.sessionId))]})}var hC=`filepalette`;function gC(e){return`fileopt-${e}`}function _C(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 vC({candidates:e,activeIndex:t,onPick:n,onHover:r,unmentionable:i,truncated:a}){let o=R(),s=Rt(t,e.length,r);return(0,L.jsxs)(`ul`,{ref:s.ref,id:hC,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}=_C(e.path);return(0,L.jsxs)(`li`,{id:gC(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 yC=`@:`;function bC(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 xC(e,t){let n=e.slice(0,Math.max(0,Math.min(t,e.length))),r=bC(n);return r===-1||!n.startsWith(yC,r)?null:{at:r,query:n.slice(r+2)}}function SC(e,t){let n=e.slice(0,Math.max(0,Math.min(t,e.length))),r=bC(n);return r===-1||n.startsWith(yC,r)?null:{at:r,query:n.slice(r+1)}}function CC(e,t,n){let r=`${e.slice(0,t.at)}${yC}${n} `;return{text:`${r}${e.slice(t.at+2+t.query.length)}`,caret:r.length}}function wC(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 TC=[];function EC(e,t){return DC(e,t,TC)}function DC(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 OC={candidates:[],unmentionable:0,truncated:!1};function kC(e,t){return DC(e,t,OC)}var AC={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`},jC={"no-provider":`web.ui.composer.placeholder_no_provider`,history:`web.ui.composer.placeholder_history`,gone:`web.ui.composer.placeholder_gone`},MC=[],NC={session:`web.ui.composer.usage_session`,run:`web.ui.composer.usage_run`};function PC(e){let t=e.turn===`awaiting-approval`||e.turn===`awaiting-question`;return!!e.disabled||!!e.readOnly||t||e.connection!==`open`}function FC(e){let t=e.scrollTop;e.style.height=`auto`;let n=e.scrollHeight;n>0&&(e.style.height=`${n}px`),e.scrollTop=t}function IC(e,t){v.useLayoutEffect(()=>{let t=e.current;t&&FC(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,FC(t))});return r.observe(t),()=>r.disconnect()},[e])}function LC({draft:e,turn:t,connection:n,disabled:r=!1,readOnly:i=!1,prefill:a,onPrefillDone:o,commands:s=DS,builtins:c=OS,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;IC(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`,M=PC({turn:t,connection:n,disabled:r,readOnly:i}),oe=jS(v.useMemo(()=>MS(c,kS(s)),[c,s]),e.text),se=!M&&!e.paletteClosed&&oe.length>0,ce=Math.min(S,oe.length-1),le=oe[ce],N=xC(e.text,O),ue=EC(h,N===null?null:N.query),de=!M&&!e.paletteClosed&&N!==null&&ue.length>0,fe=Math.min(w,ue.length-1),P=ue[fe],pe=SC(e.text,O),F=kC(g,pe===null?null:pe.query),me=!M&&!e.paletteClosed&&pe!==null&&F.candidates.length>0,he=Math.min(E,F.candidates.length-1),ge=F.candidates[he],_e=t=>{let n=oe.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(NS(n)),C(0),k.current?.focus()}},ve=t=>{if(!N)return;let n=CC(e.text,N,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(!pe)return;let n=wC(e.text,pe,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(M||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(se&&le){let n=oe.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(le.name)}if(de&&P&&N){let n=ue.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(P.sessionId)}if(me&&ge&&pe){let n=F.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=>{M||ie([...e.clipboardData?.files??[]])},Ce=r?`web.ui.composer.placeholder_no_session`:i?jC[i]:j?`web.ui.composer.placeholder_offline`:AC[t];return(0,L.jsxs)(`form`,{className:`composer`,"aria-disabled":M,"aria-busy":A,onSubmit:e=>{e.preventDefault(),be()},children:[se&&(0,L.jsx)(IS,{matched:oe,activeIndex:ce,onPick:e=>_e(e.name),onHover:C}),de&&(0,L.jsx)(mC,{candidates:ue,activeIndex:fe,onPick:e=>ve(e.sessionId),onHover:T}),me&&(0,L.jsx)(vC,{candidates:F.candidates,activeIndex:he,onPick:e=>ye(e.path),onHover:D,unmentionable:F.unmentionable,truncated:F.truncated}),(0,L.jsx)(qS,{attachments:e.attachments,reading:b?e.reading.flat():MC,showBytes:e.oversize,onRemove:e.removeAttachment}),(0,L.jsx)(`textarea`,{ref:k,className:`composer__input`,value:e.text,rows:2,disabled:M,placeholder:y(Ce),"aria-label":y(`web.ui.composer.label`),role:`combobox`,"aria-expanded":se||de||me,"aria-controls":me?hC:de?uC:FS,"aria-autocomplete":`list`,...se&&le?{"aria-activedescendant":PS(le.name)}:{},...de&&P?{"aria-activedescendant":dC(P.sessionId)}:{},...me&&ge?{"aria-activedescendant":gC(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(`/`)&&xC(n,r)===null&&SC(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:Di(e.bytes),max:Di(16777216)})}),(0,L.jsxs)(`div`,{className:`composer__bar`,children:[(0,L.jsx)(KS,{disabled:M,onPick:ie}),p?.role!==void 0&&(0,L.jsx)(lC,{role:p.role,onClear:p.clear}),m&&(0,L.jsxs)(`span`,{className:`composer__usage`,title:y(`web.ui.composer.usage_detail`,{scope:y(NC[m.scope]),up:sv(re(m.tokens)),down:sv(m.tokens.outputTokens)}),children:[(0,L.jsx)(`span`,{className:`composer__usage-scope`,children:y(NC[m.scope])}),(0,L.jsxs)(`b`,{children:[cv(re(m.tokens)),`↑ `,cv(m.tokens.outputTokens),`↓`]})]}),(0,L.jsx)(`button`,{type:`submit`,className:`btn btn--primary`,disabled:M||e.oversize||e.toMessage()===void 0,children:y(`web.ui.composer.send`)})]})]})}var RC={level:null,editable:!1,blocked:[],busy:!1,set:()=>{}};function zC(e,t,n,r,i){let[a,o]=v.useState(RC),s=v.useRef(0);v.useEffect(()=>{if(!e||!t){o(RC);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 BC={available:!1,active:!1,from:null,busy:!1,toggle:()=>{},adopt:()=>{}};function VC(e,t,n){let[r,i]=v.useState(BC),a=v.useRef(0);v.useEffect(()=>{if(!e||!t){i(BC);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(BC)}),()=>{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 HC({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 UC({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 WC={state:`pending`};function GC(e){return e.state===`bound`?{state:`bound`,workspace:e.workspace}:{state:e.state}}function KC(e,t,n=`idle`){let[r,i]=v.useState(WC),[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(GC(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(WC);return}i(WC),o(!1),c(void 0);let n=!0;return e.sessionWorkspace(t).then(({binding:e})=>{n&&i(GC(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 qC({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)(an,{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 JC({workspace:e=WC,workspaceChoices:t,nativeDirPicker:n,client:r,onOpenDiff:i,permission:a=RC,planMode:o=BC,readOnly:s=!1,role:c}){return(0,L.jsxs)(`div`,{className:`composer__foot`,children:[(0,L.jsx)(qC,{view:e,...i?{onOpenDiff:i}:{},...t?{choices:t}:{},...r?{client:r}:{},...n===void 0?{}:{nativeDirPicker:n}}),(0,L.jsx)(UC,{...c===void 0?{}:{role:c}}),(0,L.jsx)(_n,{view:a}),(0,L.jsx)(HC,{mode:o,readOnly:s})]})}function YC({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 XC({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 ZC(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 QC({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 $C({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)(YC,{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)(XC,{label:r(`approval.deny`),tone:`danger`,onClick:()=>n(`deny`)}),a&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(XC,{label:r(`web.ui.dock.allow_always`),onClick:()=>n(`allow-always`)}),(0,L.jsx)(XC,{label:r(`web.ui.dock.allow_session`),onClick:()=>n(`allow-session`)})]}),(0,L.jsx)(XC,{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)(QC,{children:[(0,L.jsx)(`code`,{children:e.toolName}),` `,ZC(e.type,r)]}),(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_target`)}),(0,L.jsx)(QC,{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)(QC,{children:i})]}),e.reason&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:r(`web.ui.dock.fact_reason`)}),(0,L.jsx)(QC,{children:(0,L.jsx)(`em`,{children:e.reason})})]})]}),!a&&(0,L.jsx)(`p`,{className:`dock__note`,children:r(`web.ui.dock.not_rememberable`)})]})}function ew(e){return e.kind===`schedule`?e.schedule.at:e.goal.goal.updatedAt}function tw(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)=>ew(e)-ew(t)),i=r[0];return i?{item:i,more:r.length-1}:null}function nw({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 rw({run:e,onOpen:t}){let n=R(),r=Gy(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:Ey(r)})}),t&&(0,L.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:t,children:n(`web.ui.autobar.open`)})]})}function iw(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 aw(e,t){let n=[...e.filter(e=>e.id!==t&&e.pendingApprovals+e.pendingQuestions>0)].sort(iw),r=n[0];return r?{row:r,more:n.length-1}:null}function ow(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 sw({pick:e,onOpen:t}){let n=R(),{lang:r}=ut(),{row:i,more:a}=e,o=i.title||n(`web.ui.topbar.untitled`),s=ow(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:ar(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 cw({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)(YC,{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)(XC,{label:r(`approval.deny`),tone:`danger`,onClick:()=>n(`deny`)}),(0,L.jsx)(XC,{label:r(`approval.plan_revise`),onClick:o}),(0,L.jsx)(XC,{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)(XC,{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)(O_,{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 lw(){return{picked:[],free:``}}function uw(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 dw(e,t){let n={};return e.questions.forEach((e,r)=>{let i=uw(e,t[r]??lw());i!==void 0&&(n[e.question]=i)}),n}var fw=e=>`q-tab-${e}`,pw=e=>`q-panel-${e}`;function mw({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:fw(a),className:`qtabs__tab`,"aria-selected":a===t,"aria-controls":pw(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 hw({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:pw(t),"aria-labelledby":fw(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 gw({request:e,remaining:t,onAnswer:n}){let r=R(),i=v.useRef(null),[a,o]=v.useState(()=>e.questions.map(lw)),[s,c]=v.useState(0);v.useEffect(()=>{o(e.questions.map(lw)),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=dw(e,a),f=Object.keys(d).length,p=e.questions.length-f;return(0,L.jsxs)(YC,{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)(XC,{label:r(`web.ui.dock.q_skip`),hint:r(`web.ui.dock.q_skip_hint`),onClick:()=>n(d,!0)}),(0,L.jsx)(XC,{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)(mw,{request:e,active:s,answered:e.questions.map((e,t)=>uw(e,a[t]??lw())!==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)(hw,{item:n,index:t,draft:a[t]??lw(),onChange:e=>o(n=>n.map((n,r)=>r===t?e:n)),onDone:()=>u(t)},n.question):null})()})]})}function _w({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)(cw,{plan:r,remaining:t,onRespond:(e,t)=>t===void 0?n(f.requestId,e):n(f.requestId,e,t)}):(0,L.jsx)($C,{request:f.request,remaining:t,onRespond:e=>n(f.requestId,e)})}let p=t[0];if(p)return(0,L.jsx)(gw,{request:p.request,remaining:t.length-1,onAnswer:(e,t)=>r(p.requestId,e,t)});let m=o?aw(i??[],a):null;if(m&&o)return(0,L.jsx)(sw,{pick:m,onOpen:o});let h=tw(s??[],u??[],a);return h?(0,L.jsx)(nw,{item:h.item,more:h.more,...c?{onFix:c}:{},...l?{onOpen:l}:{},...o?{onOpenSession:o}:{}}):d?(0,L.jsx)(rw,{run:d,...l?{onOpen:l}:{}}):null}function vw(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 yw({patches:e,onLocate:t}){let n=R(),r=fi(pi(e));return e.length===0?(0,L.jsx)(li,{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)(K_,{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)(hi,{seq:e.seq,anchored:r(e.seq),onLocate:t,className:`patches__locate`,label:!0})]},e.key))})}var bw={goal:null,loading:!0,busy:!1};function xw(e){return e instanceof Error?e.message:String(e)}function Sw(e,t,n,r=!0){let[i,a]=v.useState(bw),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:xw(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:xw(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 Cw(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 ww(e,t){return e.map(e=>({root:e.root,name:e.name,current:e.root===t}))}function Tw(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}}}function Ew(e){let{pending:t,sessionId:n,onThread:r,draft:i,openSession:a,setPrefill:o,done:s,take:c,send:l,locked:u,readOnly:d}=e,[f,p]=v.useState(),m=v.useRef(new Set),h=v.useRef(!1),g=v.useCallback(e=>{m.current.add(e),h.current=!1,s(e),p(void 0)},[s]),_=v.useCallback(()=>{o(void 0),p(e=>e!==void 0&&!e.landed?{...e,landed:!0}:e)},[o]);return v.useEffect(()=>{if(f!==void 0)return;let e=t.find(e=>!m.current.has(e.id));e!==void 0&&(h.current=!1,p({item:e,filled:!1,landed:!1,claimed:!1}),a(e.sessionId))},[f,t,a]),v.useEffect(()=>{f===void 0||f.filled||n!==f.item.sessionId||!r||(f.item.text!==``&&o({text:f.item.text,replace:!0}),p(e=>e===void 0?e:{...e,filled:!0,landed:e.item.text===``}))},[f,n,r,o]),v.useEffect(()=>{if(f===void 0||!f.filled||f.claimed)return;let{item:e}=f;if(f.landed){if(!e.autoSend||e.text===``){g(e.id);return}if(i.text!==e.text){g(e.id);return}u||d||h.current||(h.current=!0,p(e=>e===void 0?e:{...e,claimed:!0}),c(e.id).then(t=>{if(t){let e=i.toMessage();e!==void 0&&(l(e),i.setText(``))}g(e.id)}))}},[f,i,u,d,c,l,g]),{onPrefillDone:_}}var Dw={"unknown-session":`web.ui.slist.err_gone`,"bad-title":`web.ui.slist.err_title`,"no-session-store":`web.ui.slist.err_no_store`};function Ow(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`?Dw[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(!ke(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 kw=[Ke,`light`,`dark`],Aw=`(prefers-color-scheme: dark)`;function jw(e,t){return e===`light`||e===`dark`?e:t?`dark`:`light`}function Mw(){return globalThis.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}function Nw(){return qe(Ve,kw,Ke)}function Pw(e){Je(Ve,e)}function Fw(e){document.documentElement.dataset.theme=e}function Iw(e){let t=globalThis.matchMedia?.(Aw);if(!t)return()=>void 0;let n=t=>e(t.matches);return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}function Lw(){let[e,t]=v.useState(Nw),[n,r]=v.useState(Mw);v.useEffect(()=>Iw(r),[]);let i=jw(e,n);return v.useEffect(()=>Fw(i),[i]),{pref:e,theme:i,prefersDark:n,setPref:v.useCallback(e=>{Pw(e),t(e)},[])}}var Rw={ok:`check`,warn:`triangle-alert`,failed:`circle-alert`,skipped:`info`};function zw({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)(Bw,{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)(Bw,{name:n(`web.ui.about.k_home`),value:e.homeDir}),(0,L.jsx)(Bw,{name:n(`web.ui.about.k_db`),value:e.dbPath}),e.profile!==void 0&&(0,L.jsx)(Bw,{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:Rw[e.status],size:`sm`})}),(0,L.jsx)(`span`,{children:n(`web.ui.about.diag_line`,{module:e.module,detail:e.detail})})]},`diag-${t}`))})]})]})}function Bw({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 Vw=100;function Hw(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 Uw(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 Ww({client:e,sessionId:t,readOnly:n=!1}){let r=R(),i=!n&&e!==void 0&&t!==void 0,a=Hw(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:cv(u.used)}):r(`web.ui.set.budget_used`,{used:cv(u.used),limit:cv(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:cv(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*Vw))}%`}})}),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(Uw(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 Gw=`compression.enabled`,Kw=[Gw,`compression.threshold`];function qw(e,t){return e.find(e=>e.key===t)?.value}function Jw({rows:e,compression:t}){let n=R(),r=qw(e,Gw);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:sv(Math.floor(o)),window:sv(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 Yw={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 Xw(e,t){let n=Yw[e];return n?t(n):e}function Zw({error:e,noProvider:t=!1,globalScope:n=!1}){let r=R();return ke(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 Qw=[`sessions.autoPrune`,`sessions.retentionDays`,`sessions.vacuumAfterPrune`],$w=[`automation.keepRuns`,`automation.maxRecordingMb`],eT=[`sessionSearch.allWorkspaces`],tT=[`memory.memoryCharLimit`,`memory.userCharLimit`,`memory.indexCharLimit`],nT={model:[`model`,`models.utility`,`fallback.model`,`fallback.providers`],memory:[`contextLength`,`maxOutputTokens`,`maxTurns`,...Kw,...tT],budget:[`budget.maxCostUsd`,`budget.maxTokens`,`budget.warnAtPercent`,`budget.onUnknownPricing`],sessions:[...Qw,...$w,...eT]},rT={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`},iT={"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`},aT={"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`},oT={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 sT(e){return oT[e].title}function cT(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 lT=[`model`,`models.utility`,`fallback.model`],uT=`model`;function dT({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)(zt,{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 fT({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)(dT,{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)(Zw,{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}=pT(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(oT[e].title)}),d.map(e=>(0,L.jsx)(mT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{},...o&&lT.includes(e.key)?{catalog:o}:{}},e.key)),e===`memory`&&(0,L.jsx)(Jw,{rows:t.rows,...a?{compression:a}:{}}),e===`memory`&&(0,L.jsx)(Ww,{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)(mT,{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)(mT,{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)(mT,{row:e,managedPath:t.managedPath,client:i,sessionId:r,...l?{noteWrite:l}:{}},e.key))]})]})}function pT(e,t){let n=new Set(nT[e]),r=new Set(Object.values(nT).flat()),i=nT[e].map(e=>t.find(t=>t.key===e)).filter(e=>e!==void 0&&n.has(e.key)),a=e=>tT.includes(e)||eT.includes(e);return{own:i.filter(e=>!a(e.key)),quota:i.filter(e=>tT.includes(e.key)),search:i.filter(e=>eT.includes(e.key)),orphans:e===`model`?t.filter(e=>!r.has(e.key)):[]}}function mT({row:e,managedPath:t,client:n,sessionId:r,catalog:i,noteWrite:a}){let o=R(),s=rT[e.key],c=iT[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)(wt,{text:o(c),about:s?o(s):e.key}),p&&(0,L.jsx)(_T,{pending:p}),(0,L.jsx)(`span`,{className:`layer`,"data-layer":e.layer,children:Xw(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`):OT(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)(TT,{path:t}),l&&(0,L.jsx)(hT,{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)(vT,{receipt:p,row:e}),e.overridable&&(0,L.jsx)(ET,{row:e,t:o})]})}function hT({row:e,client:t,sessionId:n,catalog:r,onDone:i,onCancel:a}){let o=R(),s=e.writes[0],c=e.value===void 0?``:OT(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=bT(l,yT(e)),b=l!==c||d!==s.layer,x=CT(e),S=aT[e.key],C=b&&y===null?xT(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===uT?(0,L.jsx)(zt,{catalog:r,value:l,onChange:u,onPick:e=>u(e),onSubmit:w,busy:p,keyField:!0,...T?{trailing:T}:{}}):r?(0,L.jsx)(Ht,{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)(ST,{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:Xw(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)(gT,{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 gT({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:Xw(e.layer,t),by:e.futile.by?Xw(e.futile.by,t):``}):t(`web.ui.set.futile_untrusted`,{layer:Xw(e.layer,t)})})}):null}function _T({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 vT({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:Xw(e.layer,n),value:OT(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`):OT(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:Xw(e.layer,n),by:e.futile.by?Xw(e.futile.by,n):``}):n(`web.ui.set.futile_untrusted`,{layer:Xw(e.layer,n)})})})]})}function yT(e){return e.valueKind??`string`}function bT(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 xT(e,t,n,r){return e.trim().length===0?r(n?`web.ui.set.blocked_pick`:`web.ui.set.blocked_empty`):yT(t)===`boolean`?r(`web.ui.set.blocked_boolean`):r(`web.ui.set.blocked_number`,{text:e.trim()})}function ST({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 CT(e){return e.choices&&e.choices.length>0?e.choices:yT(e)===`boolean`?wT:null}var wT=[`true`,`false`];function TT({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 ET({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)(DT,{step:e,won:r===n,t},e.layer))})]})}function DT({step:e,won:t,t:n}){return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{children:Xw(e.layer,n)}),(0,L.jsx)(`dd`,{...t?{"data-win":``}:{},children:e.value===void 0?`—`:OT(e.value)}),(0,L.jsx)(`dd`,{className:`chain__win`,children:t?n(`web.ui.set.chain_win`):``})]})}function OT(e){return Array.isArray(e)?e.join(` → `):String(e)}var kT=`allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin`,AT=8e3;function jT(e,t){try{return new URL(e).hostname===t.hostname}catch{return!0}}function MT({item:e,here:t}){let n=R(),[r,i]=v.useState(!1),a=jT(e.url,t);return v.useEffect(()=>{if(a)return;i(!1);let e=setTimeout(()=>i(!0),AT);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:kT,referrerPolicy:`no-referrer`,onLoad:()=>i(!1)},e.url)]})}var NT={"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 PT(e,t){let n=NT[e];return n?t(n):e}function FT({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)(IT,{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 IT({row:e,t}){let n=new Date(e.at),r=PT(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 LT={shadowed:`web.ui.sec.shadow_shadowed`,partial:`web.ui.sec.shadow_partial`,redundant:`web.ui.sec.shadow_redundant`},RT={deny:`web.ui.sec.cached_d_deny`,"allow-session":`web.ui.sec.cached_d_session`,"allow-always":`web.ui.sec.cached_d_always`};function zT({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)(wt,{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:Xw(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:Xw(e.layer,r),children:Xw(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(LT[e.kind],{rule:e.rule,by:e.by})},`${e.kind}:${e.rule}:${e.by}:${t}`))]})]}),(0,L.jsx)(BT,{cached:e.cached,level:i,client:t,sid:n})]})}function BT({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)(VT,{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 VT({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(RT[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 HT({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(UT(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 UT(e){return e.source===`user`?`web.ui.sec.policy_user`:`web.ui.sec.policy_project`}var WT={"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 GT({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(WT[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)(KT,{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 KT({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 qT({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)(JT,{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)(JT,{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)(ZT,{workspace:e,...n?{client:n}:{},...r===void 0?{}:{sessionId:r},...i?{onRecheck:i}:{}}),(0,L.jsx)(QT,{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 JT({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(XT(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 YT(e){return e.hookFiles.some(e=>e===`.epoch/hooks.json`||e===`.epoch\\hooks.json`)||e.policies>0}function XT(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 ZT({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(XT(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)($T,{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)(eS,{root:e.root,want:`read`,available:e.trustRequest,...t?{client:t}:{},...n===void 0?{}:{sessionId:n},...r?{onRecheck:r}:{}})]}),e.trusted&&!e.execTrusted&&YT(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)(tS,{inventory:e.inventory,tier:`exec`}),(0,L.jsx)(eS,{root:e.root,want:`exec`,available:e.trustRequest,...t?{client:t}:{},...n===void 0?{}:{sessionId:n},...r?{onRecheck:r}:{}})]})]})}function QT({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 $T({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 eE({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:nE(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)(zT,{permission:i.permission,client:e,sessionId:t}),(0,L.jsx)(qT,{workspace:i.workspace,known:i.knownWorkspaces,client:e,sessionId:t,onRecheck:()=>l(e=>e+1)}),(0,L.jsx)(GT,{sandbox:i.sandbox}),(0,L.jsx)(HT,{policy:i.policy}),(0,L.jsx)(FT,{audit:i.audit})]}):(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.loading`)}):(0,L.jsx)(Zw,{error:o,noProvider:n}):(0,L.jsx)(`p`,{className:`sec__foot`,children:r(`web.ui.sec.no_session`)})}function tE(e,t,n,r){return{label:e,value:t,desc:n,...r?{tone:r}:{}}}function nE(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[iE(e.sandbox,t),tE(`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),rE(e,t),tE(`web.ui.sec.card_rules`,t(`web.ui.sec.rules_n`,{count:i.length,policy:o}),aE(i,t),l?`warn`:void 0)]}function rE(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 tE(`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&&YT(n.inventory)?tE(`web.ui.sec.card_space`,t(`web.ui.sec.space_read_only`),i,`warn`):tE(`web.ui.sec.card_space`,t(`web.ui.sec.space_trusted`),i,`ok`):tE(`web.ui.sec.card_space`,t(`web.ui.sec.space_untrusted_ws`),i,a?`warn`:void 0)}function iE(e,t){if(!e)return tE(`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 tE(`web.ui.sec.card_sandbox`,e.level===`os`?t(`web.ui.sec.sb_os`,n):t(`web.ui.sec.sb_process`,n),t(WT[e.reason],n),e.level===`os`?`ok`:`warn`)}function aE(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])=>`${Xw(e,t)} ${n}`).join(` / `)}var oE={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`},sE={"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 cE(e,t){return e.omitted?t(oE[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 lE(e,t){let n=e.title??e.sessionId??e.ref;return e.omitted?t(sE[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 uE(e,t){return e.mediaType===void 0?t(`message_part.image_unknown_type`):t(`message_part.image`,{mediaType:e.mediaType})}function dE(e,t,n={}){return typeof e==`string`?e:e.map(e=>e.type===`text`?e.text:e.type===`file`?cE(e,t):e.type===`session`?lE(e,t):e.type===`image`?n.imagesShownAsThumbnails?void 0:uE(e,t):te(e)).filter(e=>e!==void 0).join(`
|
|
376
376
|
`)}function fE(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 pE(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 mE={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 hE(e,t){if(!e)return null;let n=mE[e];return n?t(n):null}function gE(e,t){let n=[],r=[];for(let i of e)switch(i.role){case`user`:n.push({type:`user`,text:dE(i.parts??i.content,t,{imagesShownAsThumbnails:!0}),..._E(i)});break;case`assistant`:{let e=n.length;pE(n,i),i.turnFacts&&n.length>e&&r.push({itemIndex:n.length-1,facts:i.turnFacts});let a=hE(i.finishReason,t);a&&n.push({type:`info`,text:a});break}case`tool`:for(let e of i.toolResults??[])fE(n,e)}return{items:n,turns:r}}function _E(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 vE({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=gE(e.messages,n);i(Ur(yr,{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)(dy,{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 yE({client:e,onLoad:t,onOpenSession:n,acts:r,configPane:i}){let a=R(),{lang:o}=ut(),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:ar(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)(vE,{sessionId:u,client:e})]})}),!ke(i.error)&&(0,L.jsx)(fT,{pane:`sessions`,...i})]})]})})}var bE=100,xE=4;function SE(e,t){return t===void 0?e:(e??0)+t}function CE(e){let t={},n=0,r=0,i;for(let a of e){let e=a.usage;e&&(n+=1,t.input=SE(t.input,e.inputTokens),t.output=SE(t.output,e.outputTokens),t.cacheHit=SE(t.cacheHit,e.cacheHitTokens),t.cacheWrite=SE(t.cacheWrite,e.cacheWriteTokens),t.reasoning=SE(t.reasoning,e.reasoningTokens),t.total=SE(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 wE=[{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 TE({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=CE(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)(DE,{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)(kE,{turns:t,t:r})]})]})})}function EE({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 DE({tally:e,t}){let{turns:n,measured:r,priced:i,tokens:a,costUsd:o}=e,s=a.total,c=Qn();return(0,L.jsxs)(`div`,{className:`spend`,children:[(0,L.jsxs)(`div`,{className:`spend__hero`,children:[(0,L.jsx)(EE,{label:t(`web.ui.spend.col_turn`),value:String(n)}),r>0&&s!==void 0&&(0,L.jsx)(EE,{label:t(`web.ui.spend.col_tokens`),value:cv(s),title:sv(s)}),o!==void 0&&(0,L.jsx)(EE,{label:t(`web.ui.spend.col_cost`),value:c(o,xE),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)(OE,{tokens:a,t})]})}function OE({tokens:e,t}){let n=wE.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:sv(n.n),children:cv(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*bE))}%`}})}),n.pick===`output`&&e.reasoning!==void 0&&(0,L.jsx)(`span`,{className:`spend__detail`,children:t(`web.ui.spend.tok_reasoning`,{n:cv(e.reasoning)})}),n.pick===`cacheHit`&&(0,L.jsx)(`span`,{className:`spend__detail`,children:t(`web.ui.spend.tok_cache_note`)})]},n.pick))})}function kE({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)(AE,{n:n+1,turn:e,t},e.itemId??e.seq))]})}function AE({n:e,turn:t,t:n}){let r=t.usage,i=r?A(r):void 0,a=r?.costUsd,o=Qn();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:sv(i)},children:i===void 0?``:cv(i)}),(0,L.jsx)(`span`,{className:`spendturn__usd`,children:a===void 0?``:o(a,xE)}),(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:lv(t.durationMs)})],n(`web.ui.spend.turn_tools`,{n:String(t.toolCalls)})].join(` · `)})]})}var jE={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`},ME=[`file_read`,`file_write`,`command`,`network`,`code_exec`],NE={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 PE({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)(Zw,{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?FE(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(jE[e.type])}),(0,L.jsx)(IE,{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)(IE,{rows:i.tools,level:i.level,t:r})]})]})}function FE(e){let t=[];for(let n of ME){let r=e.filter(e=>e.type===n);r.length>0&&t.push({type:n,rows:r})}let n=e.filter(e=>!ME.includes(e.type));return n.length>0&&t.push({type:null,rows:n}),t}function IE({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)(LE,{row:e,level:t,t:n},e.name))]})}function LE({row:e,level:t,t:n}){let r=e.gate,i=RE(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?NE[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)(wt,{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 RE(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} · ${Xw(e.layer,n)}`}var zE={system:`web.ui.settings.theme_system`,light:`web.ui.settings.theme_light`,dark:`web.ui.settings.theme_dark`},BE={zh:`web.ui.settings.lang_zh`,en:`web.ui.settings.lang_en`};function VE({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 HE=`blocks`;function UE(e){return Ny(e,HE)}var WE=[`global`,`session`],GE=[{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 KE(e){return e===`model`||e===`memory`||e===`budget`||e===`sessions`}function qE(e){let t=new Set(e.hidden??[]),n=GE.filter(n=>(n.id!==`sessions`||e.archived)&&!t.has(n.id)),r=e=>e===null?WE.length:WE.indexOf(e);return[...n].sort((e,t)=>r(e.group)-r(t.group))}function JE({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(()=>qE({...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:UE(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=cT(t,n,E!==void 0&&KE(E)),O=_t(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(YE(E))})}),(0,L.jsx)(`div`,{className:`panelcol__body`,children:T?(0,L.jsx)(MT,{item:T,here:new URL(window.location.href)}):w===`sessions`?(0,L.jsx)(yE,{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&&KE(E)?(0,L.jsx)(fT,{pane:E,sessionId:n,client:t,catalog:O,readOnly:s,noProvider:c,...r?{compression:r}:{},...D}):E===`security`?(0,L.jsx)(eE,{client:t,sessionId:n,noProvider:c}):E===`tools`?(0,L.jsx)(PE,{client:t,sessionId:n,noProvider:c}):E===`spend`?(0,L.jsx)(TE,{sessionId:n,turns:l??[],hasHistory:u}):E===`about`?(0,L.jsx)(zw,{...i?{about:i}:{},...a?{diagnostics:a}:{}}):(0,L.jsx)(XE,{})})})]})]})}function YE(e){return e===`sessions`?`web.ui.settings.pane_sessions`:KE(e)?sT(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 XE(){let e=R(),t=Lw(),n=ut(),r=kw.map(t=>({value:t,label:e(zE[t])})),i=[{value:Ke,label:e(`web.ui.settings.lang_system`)},...ve.map(t=>({value:t,label:e(BE[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)(VE,{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)(VE,{options:i,value:n.pref,ariaLabel:e(`web.ui.settings.lang_field`),onPick:n.setPref})})]})]})]})}var ZE=1500;function QE({row:e,root:t,onBack:n}){let r=R(),i=dt(e.path),a=e.path.slice(0,e.path.length-i.length),o=nD(t,e.path),s=e.newContent??``,c=v.useMemo(()=>I_(s),[s]),l=v.useMemo(()=>L_(s),[s]),u=c.kind===`text`?void 0:F_[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)(tD,{path:o,t:r})]}),(0,L.jsx)(`p`,{className:`preview__meta`,children:eD(e,c,r)}),(0,L.jsx)(`div`,{className:`preview__body`,children:u?(0,L.jsx)(Oi,{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)(Oi,{className:`preview__note`,text:$E(l,r)}),!u&&c.lost>0&&(0,L.jsx)(Oi,{className:`preview__note`,text:r(`web.ui.art.lossy`,{count:c.lost})}),(0,L.jsx)(Oi,{className:`preview__note`,text:r(`web.ui.art.binary_note`)})]})}function $E(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 eD(e,t,n){let r=e.newContent??``,i=[];return t.kind===`text`?(i.push(n(`web.ui.art.lines`,{count:wi(r)})),t.lost===0&&i.push(Di(new TextEncoder().encode(r).length))):i.push(n(F_[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 tD({path:e,t}){let[n,r]=v.useState(!1);return v.useEffect(()=>{if(!n)return;let e=setTimeout(()=>r(!1),ZE);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 nD(e,t){if(e===null||rD(t))return t;let n=e.includes(`\\`)?`\\`:`/`;return`${e.endsWith(n)?e.slice(0,-1):e}${n}${n===`\\`?t.replaceAll(`/`,`\\`):t}`}function rD(e){return/^([a-zA-Z]:[\\/]|[\\/])/.test(e)}function iD(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(aD[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:oD(e,a)})}})(),()=>{r=!1}},[e,t,n,a]),r}var aD={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 oD(e,t){let n=e instanceof Error?e.message:String(e);return n.trim()===``?t(`web.ui.file.unreadable`):n}function sD({path:e,client:t,sessionId:n,onBack:r}){let i=R(),a=iD(e,t,n),o=dt(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)(tD,{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)(Oi,{tone:`error`,text:a.message})}),a.phase===`ready`&&a.stat.ok&&(0,L.jsx)(cD,{stat:a.stat,...a.text===void 0?{}:{text:a.text},path:e,...t?{client:t}:{},...n?{sessionId:n}:{}})]})}function cD({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:dD(e,t,a)}),(0,L.jsx)(`div`,{className:`preview__body`,children:(0,L.jsx)(lD,{kind:e.kind,...t===void 0?{}:{text:t},...o?{src:o}:{}})}),t!==void 0&&(0,L.jsx)(uD,{text:t}),e.kind===`opaque`&&(0,L.jsx)(fD,{stat:e,path:n,...r?{client:r}:{},...i?{sessionId:i}:{},...o?{src:o}:{}})]})}function lD({kind:e,text:t,src:n}){let r=R();if(e===`text`){let e=I_(t??``);return e.kind===`text`?(0,L.jsx)(`pre`,{className:`preview__code`,children:(0,L.jsx)(`code`,{children:L_(t??``).text})}):(0,L.jsx)(Oi,{text:r(F_[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)(Oi,{text:r(`web.ui.file.opaque`)}):(0,L.jsx)(Oi,{text:r(`web.ui.file.no_session`)})}function uD({text:e}){let t=R(),n=L_(e);return n.clipped?(0,L.jsx)(Oi,{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 dD(e,t,n){let r=[];return t!==void 0&&r.push(n(`web.ui.art.lines`,{count:wi(t)})),r.push(Di(e.bytes)),e.mtimeMs>0&&r.push(new Date(e.mtimeMs).toLocaleString()),r.join(` · `)}function fD({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(oD(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:dt(t),children:a(`web.ui.file.download`)}),o&&(0,L.jsx)(Oi,{tone:`error`,className:`preview__note`,text:o})]})}function pD({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 mD({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)(Oi,{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 hD({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 gD={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`}},_D={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 vD(e){let t=R(),{goal:n,limits:r,loading:i,error:a,refusal:o,busy:s}=e;return a?(0,L.jsx)(Oi,{text:a,tone:`error`}):n===null?i?(0,L.jsx)(li,{icon:`target`,title:t(`web.ui.goal.loading`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(li,{icon:`target`,title:t(`web.ui.goal.empty`),hint:t(`web.ui.goal.empty_hint`)}),o&&(0,L.jsx)(xD,{code:o,limits:r}),(0,L.jsx)(pD,{...r?{limits:r}:{},busy:s,onSubmit:(t,n)=>e.create(t,n)})]}):(0,L.jsx)(yD,{goal:n,...r?{limits:r}:{},busy:s,...o?{refusal:o}:{},onUpdate:e.update,onClear:e.clear})}function yD({goal:e,limits:t,busy:n,refusal:r,onUpdate:i,onClear:a}){let o=R(),[s,c]=v.useState(null),l=gD[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)(xD,{code:r,limits:t}),(0,L.jsx)(bD,{goal:e,busy:n,open:s,onOpen:c,onUpdate:u,onClear:a}),s===`edit`&&(0,L.jsx)(pD,{...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)(mD,{...t?{limits:t}:{},busy:n,initial:e.maxRounds,onSubmit:e=>u({action:`budget`,maxRounds:e}),onCancel:()=>c(null)}),s===`complete`&&(0,L.jsx)(hD,{...t?{limits:t}:{},busy:n,onSubmit:e=>u({action:`complete`,evidence:e}),onCancel:()=>c(null)})]})}function bD({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 xD({code:e,limits:t}){let n=R(),r=t===void 0?void 0:{chars:t.maxObjectiveChars,max:t.maxRounds};return(0,L.jsx)(Oi,{text:n(_D[e],r),tone:`error`})}function SD(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 CD({markdown:e,loading:t,error:n}){let r=R();return n?(0,L.jsx)(wD,{text:n}):e===null?t?(0,L.jsx)(li,{icon:`list-checks`,title:r(`web.ui.plan.loading`)}):(0,L.jsx)(li,{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)(wt,{text:r(`web.ui.plan.note`),about:r(`web.ui.inspector.plan`)})]}),(0,L.jsx)(O_,{text:e})]})}function wD({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 TD=`data-dense`;function ED(e){let t=v.useRef(null);return v.useLayoutEffect(()=>{let e=t.current;if(!e)return;let n=()=>{e.removeAttribute(TD);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(TD,`true`)};n();let r=new ResizeObserver(n);return r.observe(e),()=>r.disconnect()},[e]),t}var DD=[{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 OD({patches:e=[],onLocate:t,client:n,sessionId:r,turn:i,previewPath:a,onClosePreviewPath:o,toolArtifacts:s=[],resolveArtifact:c,tasks:l=yy,rootRef:u}){let d=R(),[f,p]=v.useState(DD[0]?.id??`patch`),[m,h]=v.useState(),g=yi(n,r,i),_=v.useMemo(()=>gi(g.changes,e),[g.changes,e]),y=SD(n,r,i,f===`plan`),b=Sw(n,r,i,f===`goal`),x={patch:e.length,artifact:_.length,output:l.tasks.length},S=ED(DD.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:DD.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:DD.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)(yw,{patches:e,...t?{onLocate:t}:{}}):n.id===`artifact`?(0,L.jsx)(bi,{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)(CD,{markdown:y.markdown,loading:y.loading,...y.error===void 0?{}:{error:y.error}}):n.id===`goal`?(0,L.jsx)(vD,{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)(xy,{tasks:l.tasks,loading:l.loading,...l.error===void 0?{}:{error:l.error}}):null},n.id))}),a===void 0?m&&(0,L.jsx)(QE,{row:m,root:g.root,onBack:()=>h(void 0)}):(0,L.jsx)(sD,{path:a,...n?{client:n}:{},...r?{sessionId:r}:{},onBack:()=>o?.()})]})}function kD(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 AD({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 jD(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:ND(t.usedTokens),window:ND(t.contextLength)})}}function MD(e,t){switch(t.code){case`context-tight`:return e(`web.ui.model.cav_context_tight`,{model:t.model,used:ND(t.usedTokens),window:ND(t.contextLength)});case`no-tools`:return e(`web.ui.model.cav_no_tools`,{model:t.model})}}function ND(e){return e>=1e3?`${Math.round(e/1e3)}k`:String(e)}function PD({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(qt(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)(At,{open:i,onClose:l,triggerRef:c,label:r(`web.ui.model.label`),children:[(0,L.jsx)(jt,{checked:!0,disabled:!0,title:u.model,detail:r(`web.ui.model.current`,{provider:u.provider}),onSelect:()=>void 0}),e.configured&&(0,L.jsx)(jt,{disabled:u.origin===`config`||e.busy,title:r(`web.ui.model.reset`),detail:e.configured,onSelect:()=>void d(null)}),(0,L.jsx)(Mt,{}),t?(0,L.jsx)(zt,{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)(AD,{draft:o,busy:e.busy,onChange:s,onSubmit:e=>void d(e)}),e.rejection&&(0,L.jsx)(Nt,{tone:`warn`,children:(0,L.jsx)(`p`,{children:jD(r,e.rejection)})}),e.caveats.length>0&&(0,L.jsx)(Nt,{tone:`warn`,children:e.caveats.map(e=>(0,L.jsx)(`p`,{children:MD(r,e)},e.code))})]})]})}function FD({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 ID(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
377
|
`)}var LD=`nav-capability-sub`;function RD({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":LD,...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:LD,children:bS.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 zD={warn:`triangle-alert`,failed:`circle-alert`},BD=1,VD=`sidebar-diag-list`,HD=200;function UD({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=Qn(),[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),HD);return()=>clearTimeout(e)},[ee,T]);let j=v.useCallback(()=>{T(ee.trim()||void 0)},[T,ee]),M=(a??[]).filter(e=>e.status===`failed`||e.status===`warn`),oe=M.length>BD,se=M.filter(e=>e.status===`failed`).length,ce=M.length-se,le=se>0&&ce>0?D(`web.ui.sidebar.diag_sum`,{total:M.length,failed:se}):se>0?D(`web.ui.sidebar.diag_sum_failed`,{failed:se}):D(`web.ui.sidebar.diag_sum_warn`,{warn:ce}),N=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(ID(o.all,D)),children:(0,L.jsx)(z,{name:`wrench`,size:`sm`})}),ue=e&&r===`session`&&i!==void 0&&n?.costUsd!==void 0?{spent:n.costUsd,limit:i}:void 0,de=ue!==void 0,fe=de||M.length>0,P=l!==void 0&&l.length>0&&d!==void 0?{items:l,onSelect:d}:void 0,pe=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)(FD,{...s}),(0,L.jsx)(RD,{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)(sr,{sessions:ae,...e?{currentSessionId:e}:{},onOpen:w,searching:ee.trim().length>0,...c?{acts:{...c,reload:j}}:{},...s?{newSession:s.handle}:{}})]}),fe&&(0,L.jsxs)(`div`,{className:`sidebar__foot`,children:[de&&(0,L.jsx)(`div`,{className:`meter`,children:ue&&(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(ue.spent,3),limit:O(ue.limit,2)}),` `,(0,L.jsx)(`span`,{className:`est`,children:D(`web.ui.sidebar.cost_est`)})]})]})}),oe&&(0,L.jsxs)(`div`,{className:`diagsum-row`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`diagsum`,"data-level":se>0?`failed`:`warn`,"aria-expanded":re,"aria-controls":VD,"aria-label":re?D(`web.ui.sidebar.diag_less`):D(`web.ui.sidebar.diag_more`,{count:M.length}),onClick:()=>ie(e=>!e),children:[(0,L.jsx)(`span`,{className:`diag__sign`,children:(0,L.jsx)(z,{name:zD[se>0?`failed`:`warn`],size:`sm`})}),(0,L.jsx)(`span`,{className:`diagsum__text`,children:le}),(0,L.jsx)(`span`,{className:`diagsum__mark`,"aria-hidden":`true`,children:(0,L.jsx)(z,{name:re?`chevron-down`:`chevron-right`,size:`sm`})})]}),N]}),M.length>0&&(!oe||re)&&(0,L.jsx)(`ul`,{className:`diag`,id:VD,children:M.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:zD[e.status],size:`sm`})}),(0,L.jsx)(Tt,{text:n,children:(0,L.jsx)(`span`,{className:`diag__text`,children:n})}),!oe&&N]},`diag-${t}`)})})]}),(0,L.jsxs)(`div`,{className:`sidebar__end`,children:[P&&(0,L.jsx)(Ly,{...P}),(0,L.jsx)(Ry,{...f?{user:f}:{},...pe?{host:pe}:{},...p?{onOpenSettings:p}:{}})]})]})}var WD=48,GD=240;function KD({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<=WD),o(t>GD)};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 qD(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 JD(e,t){let[n,r]=v.useState([]),i=v.useRef(e),a=v.useRef(0);return v.useEffect(()=>{let n=qD(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 YD={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 XD(e){return e?YD[e.reason]:null}function ZD(e){if(!e)return null;let t={...e.durationMs===null?{}:{duration:lv(e.durationMs)},...e.runUsage===null?{}:{tokens:cv(A(e.runUsage))}};return t.duration===void 0&&t.tokens===void 0?null:t}function QD({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=XD(e.finish),o=ZD(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 $D={connecting:`web.ui.conn.connecting`,open:`web.ui.conn.open`,reconnecting:`web.ui.conn.reconnecting`,closed:`web.ui.conn.closed`};function eO({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)(PD,{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($D[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 tO(e){if(e.readOnly!==`history`)return e.readOnly;let t=e.currentSummary?.workspace;return t&&t.state!==`unknown`?!1:`history`}var nO=2,rO=[500,1e3,2e3,4e3,8e3,1e4];function iO(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 aO(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 oO(e,t){let{onFrame:n,onConnectionChange:r,onResync:i,createSource:a=iO,schedule:o=(e,t)=>void setTimeout(e,t)}=t,s,c=0,l=0,u=!1,d=()=>{if(u)return;let e=rO[Math.min(c,rO.length-1)]??1e4;c+=1,o(()=>{u||(p(),i(`hard-reconnect`))},e)},f=e=>{let t=aO(e);if(t){if(ce(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!==nO){r(`reconnecting`);return}t.close(),r(`reconnecting`),d()}}return p(),{close:()=>{u=!0,s?.close(),r(`closed`)},lastSeq:()=>l}}function sO(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 cO({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||tO(n.current))return;let l=sO(i),u=dE(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`}),hostComposeDone:e=>t({type:`host-compose-done`,id:e}),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 lO(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 uO(e){return e.turn!==`awaiting-approval`&&e.turn!==`awaiting-question`?!1:e.approvals.length===0&&e.questions.length===0}var dO=(0,v.createContext)(yr),fO=(0,v.createContext)(void 0),pO=1500;function mO(e){return e instanceof Te&&e.detail?e.detail:e instanceof Error?e.message:String(e)}async function hO(e){try{return await e}catch(e){if(e instanceof Te&&e.status===404)return null;throw e}}function gO({client:e,children:t,sessionId:n,provider:r,createSource:i}){let[a,o]=(0,v.useReducer)(Ur,yr),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(ke(e)&&!l.current){o({type:`session-unavailable`});return}if(ke(e)){h(f.current);return}o({type:`error`,message:mO(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),hO(e.approvals(t)),hO(e.questions(t))]);if(r())return;let s=i===null||a===null?c?`history`:`no-provider`:!1,l=gE(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}=lO(e,o,a),x=(0,v.useCallback)(()=>{e.hostComposeState().then(e=>{e.compose&&o({type:`host-compose`,compose:e.compose})}).catch(()=>{})},[e]);(0,v.useEffect)(()=>{let e=oO(`/api/events`,{onFrame:e=>o({type:`frame`,frame:e}),onConnectionChange:e=>{o({type:`connection`,state:e}),e===`open`&&x()},onResync:()=>{let e=f.current;e&&_(e),b()},...i?{createSource:i}:{}});return()=>e.close()},[e,i,b,_,x]),(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(!uO(a))return;let e=a.sessionId;if(!e)return;let t=setTimeout(()=>{s.current.resyncing||_(e)},pO);return()=>clearTimeout(t)},[a.turn,a.approvals.length,a.questions.length,a.sessionId,_]);let S=cO({client:e,dispatch:o,stateRef:s,fail:g,resync:_,refreshSessions:y});return(0,L.jsx)(dO.Provider,{value:a,children:(0,L.jsx)(fO.Provider,{value:S,children:t})})}function _O(){return(0,v.useContext)(dO)}function vO(){let e=(0,v.useContext)(fO);if(!e)throw Error(`useWebActions 必须在 WebStoreProvider 里用`);return e}var yO={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`}},bO={binary:F_.binary.why,"too-large":`web.ui.diff.omit_too_large_why`,"no-snapshot":`web.ui.diff.omit_no_snapshot_why`};function xO(e,t){if(!e.omitted)return;let n=e.newBytes??e.oldBytes,r=yO[e.omitted];return n===null?t(r.plain):t(r.sized,{bytes:Di(n)})}function SO(e,t){let n=xO(e,t);if(!(n===void 0||!e.omitted))return{label:n,why:t(bO[e.omitted])}}function CO({file:e}){let t=SO(e,R());return t?(0,L.jsx)(K_,{filePath:e.path,notice:t}):(0,L.jsx)(K_,{filePath:e.path,...e.oldContent===null?{}:{oldContent:e.oldContent},...e.newContent===null?{}:{newContent:e.newContent}})}var wO={"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`},TO={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 EO(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 DO({client:e,sessionId:t,onBack:n}){let r=R(),{view:i,reload:a}=EO(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(TO[e.status].label)} ${e.path}`,title:`${r(TO[e.status].label)} ${e.path}`,children:[(0,L.jsx)(`span`,{className:`navcol__sign`,"data-status":e.status,children:(0,L.jsx)(z,{name:TO[e.status].icon,size:`lg`})}),(0,L.jsx)(kO,{path:e.path}),(0,L.jsx)(`span`,{className:`navcol__n`,children:xO(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)(kO,{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)(Oi,{text:r(`web.ui.diff.loading`)}):i.state===`error`?(0,L.jsx)(Oi,{tone:`error`,text:r(`web.ui.diff.failed`)}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(OO,{data:i.data,t:r}),l?(0,L.jsx)(CO,{file:l}):c.length>0&&(0,L.jsx)(Oi,{text:r(`web.ui.diff.pick`)})]})})})]})]})}function OO({data:e,t}){return(0,L.jsxs)(L.Fragment,{children:[e.source===`git`&&e.files.length>0&&(0,L.jsx)(Oi,{text:t(`web.ui.diff.scope_git`)}),e.notes.map(n=>(0,L.jsx)(Oi,{text:t(wO[n],{count:e.files.length})},n))]})}function kO({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 AO({client:e,config:t,onOpenSession:n,sub:r}){let i=R(),a=_O(),o=vO(),{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=Ub(),S=tC(e,s),C=cC(s),[w,T]=v.useState(),E=VC(e,s,a.turn),D=AS(e,s),O=KC(e,s,a.turn),ee=kD(e,s,a.lastPromptTokens),te=_t(e),k=zC(e,s,a.turn,E,t?.permission);v.useEffect(()=>{k.level&&(document.documentElement.dataset.permission=k.level)},[k.level]);let ne=qE({...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]);v.useEffect(()=>{let e=a.returned;if(!e||e.length===0)return;let t=e.map(e=>dE(e,i)).join(`
|