crewly 1.20.5 → 1.20.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/backend/src/constants.d.ts +16 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +16 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +117 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +232 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +21 -4
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +16 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +2 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +4 -1
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +16 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +16 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +117 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +232 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +16 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +2 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +4 -1
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- package/frontend/dist/assets/{index-676764de.js → index-26f03bbd.js} +34 -34
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -4907,55 +4907,55 @@ vTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;
|
|
|
4907
4907
|
|
|
4908
4908
|
You are a...`,className:"font-mono text-sm"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Markdown supported. This prompt defines the agent's behavior."})]})]}),i.jsxs("div",{className:"p-6 space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Assigned Skills"}),i.jsxs("div",{className:"space-y-2",children:[a==null?void 0:a.map(b=>i.jsxs("label",{className:`flex items-start gap-3 p-3 bg-background-dark border border-border-dark rounded-lg cursor-pointer hover:border-primary/50 transition-colors ${o.assignedSkills.includes(b.id)?"border-primary/50 bg-primary/5":""}`,children:[i.jsx(os,{size:"sm",checked:o.assignedSkills.includes(b.id),onChange:()=>m(b.id)}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark block",children:b.name}),i.jsx("span",{className:"text-xs text-text-secondary-dark block mt-0.5",children:b.description})]}),o.assignedSkills.includes(b.id)&&i.jsx(br,{className:"w-4 h-4 text-primary flex-shrink-0"})]},b.id)),(!a||a.length===0)&&i.jsx("p",{className:"text-sm text-text-secondary-dark text-center py-6",children:"No skills available. Create skills in the Skills tab."})]})]})]}),i.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-border-dark bg-background-dark sticky bottom-0",children:[i.jsx(ze,{variant:"secondary",onClick:e,type:"button",children:"Cancel"}),i.jsx(ze,{type:"submit",onClick:g,disabled:c,loading:c,children:c?"Saving...":f?"Create Role":"Save Changes"})]})]})})},hme={development:"bg-blue-500/15 text-blue-400",management:"bg-amber-500/15 text-amber-400",quality:"bg-emerald-500/15 text-emerald-400",design:"bg-pink-500/15 text-pink-400",sales:"bg-primary/15 text-primary",support:"bg-cyan-500/15 text-cyan-400",automation:"bg-orange-500/15 text-orange-400"},fme=[{value:"",label:"All Categories"},{value:"development",label:"Development"},{value:"management",label:"Management"},{value:"quality",label:"Quality"},{value:"design",label:"Design"},{value:"sales",label:"Sales"},{value:"support",label:"Support"},{value:"automation",label:"Automation"}],pme=()=>{const{roles:t,isLoading:e,error:n,createRole:r,updateRole:s,deleteRole:a,refreshFromDisk:o}=R6(),[l,c]=k.useState(null),[d,u]=k.useState(!1),[h,f]=k.useState(!1),[p,x]=k.useState(""),[y,m]=k.useState(""),[g,v]=k.useState(!1),b=k.useMemo(()=>t?t.filter(A=>{if(y&&A.category!==y)return!1;if(p){const M=p.toLowerCase();return A.displayName.toLowerCase().includes(M)||A.description.toLowerCase().includes(M)||A.category.toLowerCase().includes(M)}return!0}):[],[t,p,y]),S=()=>{c(null),f(!0),u(!0)},C=A=>{c(A),f(!1),u(!0)},E=async(A,M)=>{if(M){window.alert("Built-in roles cannot be deleted");return}window.confirm("Are you sure you want to delete this role?")&&await a(A)},N=()=>{u(!1),c(null),f(!1)},T=async()=>{v(!0);try{await o()}finally{v(!1)}};return i.jsxs("div",{className:"space-y-6",children:[i.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-4",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Roles Management"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Create and manage AI agent roles"})]}),i.jsx(ze,{onClick:S,icon:vr,children:"New Role"})]}),i.jsxs("div",{className:"flex flex-col md:flex-row items-end gap-4",children:[i.jsxs("div",{className:"flex-1 w-full md:w-auto",children:[i.jsx(Tt,{htmlFor:"category-filter",children:"Category"}),i.jsx(dr,{id:"category-filter",value:y,onChange:A=>m(A.target.value),children:fme.map(A=>i.jsx("option",{value:A.value,children:A.label},A.value))})]}),i.jsxs("div",{className:"flex-1 w-full md:w-auto",children:[i.jsx(Tt,{htmlFor:"search-filter",children:"Search"}),i.jsx(on,{id:"search-filter",type:"text",placeholder:"Search roles...",value:p,onChange:A=>x(A.target.value)})]}),i.jsx(ze,{variant:"secondary",onClick:T,disabled:e||g,icon:zn,className:g?"animate-spin":"",children:g?"Refreshing...":"Refresh"})]}),n&&i.jsx(Bt,{variant:"error",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{children:["Error: ",n]}),i.jsx(ze,{variant:"outline",size:"sm",onClick:T,children:"Retry"})]})}),e&&b.length===0&&i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading roles..."})}),!e&&b.length===0&&!n&&i.jsxs("div",{className:"text-center py-16",children:[i.jsx("div",{className:"flex justify-center mb-4",children:i.jsx(Ku,{className:"w-12 h-12 text-text-secondary-dark"})}),i.jsx("h3",{className:"text-lg font-semibold mb-2",children:"No Roles Found"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-6",children:p||y?"Try adjusting your filters":"Create your first role to get started"}),!p&&!y&&i.jsx(ze,{onClick:S,icon:vr,children:"Create Role"})]}),b.length>0&&i.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:b.map(A=>i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-lg p-4 hover:border-primary/50 transition-colors flex flex-col",children:[i.jsxs("div",{className:"flex items-start justify-between gap-2 mb-3",children:[i.jsx("h3",{className:"font-medium text-text-primary-dark",children:A.displayName}),i.jsx("span",{className:`text-xs font-medium px-2 py-0.5 rounded-full ${hme[A.category]}`,children:TM[A.category]})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark flex-grow mb-3 line-clamp-2",children:A.description}),i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:[A.skillCount," skills assigned"]}),A.isDefault&&i.jsx("span",{className:"text-xs font-medium px-2 py-0.5 rounded-full bg-primary/15 text-primary",children:"Default"})]}),i.jsxs("div",{className:"flex items-center justify-between pt-3 border-t border-border-dark mt-auto",children:[A.isBuiltin&&i.jsx("span",{className:"text-xs text-text-secondary-dark italic",children:"Built-in"}),!A.isBuiltin&&i.jsx("span",{}),i.jsxs("div",{className:"flex gap-2 ml-auto",children:[i.jsx(ze,{variant:"secondary",size:"sm",onClick:()=>C(A.id),children:"Edit"}),!A.isBuiltin&&i.jsx(ze,{variant:"outline",size:"sm",onClick:()=>E(A.id,A.isBuiltin),className:"text-rose-400 hover:text-rose-300 hover:border-rose-400",icon:Vi,children:"Delete"})]})]})]},A.id))}),d&&i.jsx(ume,{roleId:h?null:l,onClose:N,onSave:async A=>{h?await r(A):l&&await s(l,A)}})]})},mme=()=>[{value:"",label:"All Categories"},...cQ.map(t=>({value:t,label:D6(t)}))],FH=mme(),gme={development:"bg-blue-500/15 text-blue-400",design:"bg-pink-500/15 text-pink-400",communication:"bg-emerald-500/15 text-emerald-400",research:"bg-primary/15 text-primary","content-creation":"bg-amber-500/15 text-amber-400",automation:"bg-primary/15 text-primary",analysis:"bg-cyan-500/15 text-cyan-400",integration:"bg-rose-500/15 text-rose-400",management:"bg-orange-500/15 text-orange-400",monitoring:"bg-teal-500/15 text-teal-400",memory:"bg-primary/15 text-primary",system:"bg-slate-500/15 text-slate-400","task-management":"bg-sky-500/15 text-sky-400",quality:"bg-lime-500/15 text-lime-400"},xme={"claude-skill":"bg-primary/15 text-primary","web-page":"bg-blue-500/15 text-blue-400"},yme=()=>{var R;const{settings:t,updateSettings:e}=XN(),[n,r]=k.useState(null),[s,a]=k.useState(!1),[o,l]=k.useState("idle");k.useEffect(()=>{t&&(r(t.skills),a(!1))},[t]);const c=(D,G)=>{n&&(r({...n,[D]:G}),a(!0),l("idle"))},d=(D,G)=>{n&&(r({...n,browserProfile:{...n.browserProfile,[D]:G}}),a(!0),l("idle"))},u=async()=>{if(n){l("saving");try{await e({skills:n}),l("saved"),a(!1),setTimeout(()=>l("idle"),2e3)}catch{l("error")}}},[h,f]=k.useState(""),[p,x]=k.useState(""),[y,m]=k.useState(!1),[g,v]=k.useState(null),[b,S]=k.useState(null),C=k.useMemo(()=>({category:h||void 0,search:p||void 0}),[h,p]),{skills:E,loading:N,error:T,refresh:A,create:M,update:P,remove:I,selectSkill:B,selectedSkill:V,clearSelection:K}=U1(C),H=k.useCallback(()=>{v(null),m(!0)},[]),$=k.useCallback(async D=>{v(D),await B(D.id),m(!0)},[B]),L=k.useCallback(async D=>{try{g!=null&&g.id?await P(g.id,D):await M(D),m(!1),v(null)}catch(G){console.error("Failed to save skill:",G)}},[g,P,M]),U=k.useCallback(async D=>{try{await I(D),S(null)}catch(G){console.error("Failed to delete skill:",G)}},[I]);return i.jsxs("div",{className:"space-y-6",children:[n&&i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[i.jsx(go,{className:"w-5 h-5 text-primary"}),i.jsx("h2",{className:"text-lg font-semibold",children:"Browser Automation"})]}),i.jsxs("div",{className:"space-y-5",children:[i.jsx(os,{id:"enableBrowserAutomation",label:"Enable Browser Automation",description:"Allow agents to use Playwright for browser tasks (navigate, click, screenshot, etc.)",checked:n.enableBrowserAutomation,onChange:D=>c("enableBrowserAutomation",D.target.checked)}),n.enableBrowserAutomation&&n.browserProfile&&i.jsxs("div",{className:"pl-4 border-l-2 border-border-dark space-y-4",children:[i.jsx(os,{id:"headless",label:"Headless Mode",description:"Run browser invisibly in the background (recommended)",checked:n.browserProfile.headless,onChange:D=>d("headless",D.target.checked)}),i.jsx(os,{id:"stealth",label:"Stealth Mode",description:"Use anti-detection features to avoid bot blocking (uses community fork)",checked:n.browserProfile.stealth,onChange:D=>d("stealth",D.target.checked)}),i.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"humanDelayMin",children:"Min Delay (ms)"}),i.jsx(on,{id:"humanDelayMin",type:"number",min:0,max:n.browserProfile.humanDelayMaxMs,value:n.browserProfile.humanDelayMinMs,onChange:D=>d("humanDelayMinMs",parseInt(D.target.value,10)||0)}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Minimum delay between actions"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"humanDelayMax",children:"Max Delay (ms)"}),i.jsx(on,{id:"humanDelayMax",type:"number",min:n.browserProfile.humanDelayMinMs,max:1e4,value:n.browserProfile.humanDelayMaxMs,onChange:D=>d("humanDelayMaxMs",parseInt(D.target.value,10)||0)}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Maximum delay between actions"})]})]})]})]}),i.jsxs("div",{className:"flex items-center justify-end gap-3 mt-6 pt-4 border-t border-border-dark",children:[o==="saved"&&i.jsxs("span",{className:"text-sm text-emerald-400 flex items-center gap-1",children:[i.jsx(br,{className:"w-4 h-4"})," Saved"]}),o==="error"&&i.jsxs("span",{className:"text-sm text-rose-400 flex items-center gap-1",children:[i.jsx(Or,{className:"w-4 h-4"})," Save failed"]}),i.jsx(ze,{onClick:u,disabled:!s||o==="saving",icon:$c,size:"sm",children:o==="saving"?"Saving...":"Save"})]})]}),i.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-4",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Skills Management"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Create and manage AI agent skills"})]}),i.jsx(ze,{onClick:H,icon:vr,children:"New Skill"})]}),i.jsxs("div",{className:"flex flex-col md:flex-row items-end gap-4",children:[i.jsxs("div",{className:"flex-1 w-full md:w-auto",children:[i.jsx(Tt,{htmlFor:"category-filter",children:"Category"}),i.jsx(dr,{id:"category-filter",value:h,onChange:D=>f(D.target.value),children:FH.map(D=>i.jsx("option",{value:D.value,children:D.label},D.value))})]}),i.jsxs("div",{className:"flex-1 w-full md:w-auto",children:[i.jsx(Tt,{htmlFor:"search-filter",children:"Search"}),i.jsx(on,{id:"search-filter",type:"text",placeholder:"Search skills...",value:p,onChange:D=>x(D.target.value)})]}),i.jsx(ze,{variant:"secondary",onClick:A,disabled:N,icon:zn,className:N?"animate-spin":"",children:N?"Refreshing...":"Refresh"})]}),T&&i.jsx(Bt,{variant:"error",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{children:["Error: ",T]}),i.jsx(ze,{variant:"outline",size:"sm",onClick:A,children:"Retry"})]})}),N&&E.length===0&&i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading skills..."})}),!N&&E.length===0&&!T&&i.jsxs("div",{className:"text-center py-16",children:[i.jsx("div",{className:"flex justify-center mb-4",children:i.jsx(Mu,{className:"w-12 h-12 text-text-secondary-dark"})}),i.jsx("h3",{className:"text-lg font-semibold mb-2",children:"No Skills Found"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-6",children:p||h?"Try adjusting your filters":"Create your first skill to get started"}),!p&&!h&&i.jsx(ze,{onClick:H,icon:vr,children:"Create Skill"})]}),E.length>0&&i.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:E.map(D=>i.jsx(Sme,{skill:D,onEdit:()=>$(D),onDelete:()=>S(D.id)},D.id))}),y&&i.jsx(wme,{skill:V||g,onSave:L,onClose:()=>{m(!1),v(null),K()}}),b&&i.jsx(kme,{skillId:b,skillName:((R=E.find(D=>D.id===b))==null?void 0:R.name)||"",onConfirm:()=>U(b),onCancel:()=>S(null)})]})},vme=t=>{switch(t){case"claude-skill":return i.jsx(y3,{className:"w-3.5 h-3.5"});case"web-page":return i.jsx(vA,{className:"w-3.5 h-3.5"});default:return i.jsx(y3,{className:"w-3.5 h-3.5"})}},bme=t=>{switch(t){case"warning":return i.jsx(mp,{className:"w-4 h-4"});case"requirement":return i.jsx(Or,{className:"w-4 h-4"});case"info":default:return i.jsx(Tu,{className:"w-4 h-4"})}},_me={info:{bg:"bg-blue-500/10",border:"border-blue-500/20",icon:"text-blue-400"},warning:{bg:"bg-amber-500/10",border:"border-amber-500/20",icon:"text-amber-400"},requirement:{bg:"bg-rose-500/10",border:"border-rose-500/20",icon:"text-rose-400"}},Sme=({skill:t,onEdit:e,onDelete:n})=>{const r=t.skillType||"claude-skill";return i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-lg p-4 hover:border-primary/50 transition-colors flex flex-col",children:[i.jsxs("div",{className:"flex items-start justify-between gap-2 mb-3",children:[i.jsx("h3",{className:"font-medium text-text-primary-dark",children:t.name}),i.jsx("span",{className:`text-xs font-medium px-2 py-0.5 rounded-full ${gme[t.category]}`,children:D6(t.category)})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark flex-grow mb-3 line-clamp-2",children:t.description}),i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsxs("span",{className:`inline-flex items-center gap-1 text-xs font-medium px-2 py-0.5 rounded ${xme[r]}`,children:[vme(r),i.jsx("span",{children:dQ(r)})]}),i.jsx("span",{className:`text-xs font-medium px-2 py-0.5 rounded-full ${t.isEnabled?"bg-emerald-500/10 text-emerald-400":"bg-gray-500/10 text-gray-400"}`,children:t.isEnabled?"Enabled":"Disabled"})]}),t.notices&&t.notices.length>0&&i.jsx("div",{className:"space-y-2 mb-3",children:t.notices.map((s,a)=>{const o=_me[s.type];return i.jsxs("div",{className:`flex gap-2 p-2 rounded ${o.bg} border ${o.border}`,children:[i.jsx("div",{className:`flex-shrink-0 ${o.icon}`,children:bme(s.type)}),i.jsxs("div",{className:"text-xs space-y-0.5",children:[i.jsx("span",{className:"font-medium text-text-primary-dark block",children:s.title}),i.jsx("span",{className:"text-text-secondary-dark block",children:s.message}),s.link&&i.jsxs("a",{href:s.link,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:[s.linkText||"Learn more",i.jsx(Ps,{className:"w-3 h-3"})]})]})]},a)})}),i.jsxs("div",{className:"flex items-center justify-between pt-3 border-t border-border-dark mt-auto",children:[t.isBuiltin&&i.jsx("span",{className:"text-xs text-text-secondary-dark italic",children:"Built-in"}),i.jsxs("div",{className:"flex gap-1 ml-auto",children:[i.jsx($i,{icon:E1,onClick:e,variant:"ghost",size:"sm","aria-label":"Edit skill"}),!t.isBuiltin&&i.jsx($i,{icon:Vi,onClick:n,variant:"danger-ghost",size:"sm","aria-label":"Delete skill"})]})]})]})},wme=({skill:t,onSave:e,onClose:n})=>{const r=(t==null?void 0:t.isBuiltin)??!1,[s,a]=k.useState({name:(t==null?void 0:t.name)||"",displayName:(t==null?void 0:t.name)||"",description:(t==null?void 0:t.description)||"",category:(t==null?void 0:t.category)||"development",promptContent:(t==null?void 0:t.promptContent)||"",triggers:[],tags:[]}),[o,l]=k.useState(!1),[c,d]=k.useState(null),u=async f=>{if(f.preventDefault(),d(null),!s.displayName.trim()){d("Display Name is required");return}if(!s.name.trim()){d("ID is required");return}if(!s.description.trim()){d("Description is required");return}l(!0);try{await e(s)}catch(p){d(p instanceof Error?p.message:"Failed to save skill")}finally{l(!1)}},h=f=>{f.target===f.currentTarget&&n()};return i.jsx("div",{className:"fixed inset-0 bg-background-dark/80 backdrop-blur-sm flex items-center justify-center z-50",onClick:h,children:i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl shadow-lg w-full max-w-lg m-4 max-h-[90vh] overflow-hidden flex flex-col",onClick:f=>f.stopPropagation(),children:[i.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-border-dark",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:t?"Edit Skill":"Create Skill"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:t?"Modify skill configuration":"Configure a new skill for your agents"})]}),i.jsx($i,{icon:On,onClick:n,variant:"ghost","aria-label":"Close"})]}),r&&t&&i.jsxs("div",{className:"mx-6 mt-4 bg-blue-500/10 border border-blue-500/30 text-blue-400 px-4 py-3 rounded-lg text-sm",children:[i.jsx("strong",{children:"Built-in Skill:"})," Changes will be saved as a user override. You can reset to defaults anytime."]}),c&&i.jsx("div",{className:"mx-6 mt-4",children:i.jsx(Bt,{variant:"error",children:c})}),i.jsxs("form",{onSubmit:u,className:"flex-1 overflow-y-auto p-6 space-y-4",children:[i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"skill-display-name",required:!0,children:"Display Name"}),i.jsx(on,{id:"skill-display-name",type:"text",value:s.displayName,onChange:f=>a({...s,displayName:f.target.value}),placeholder:"Code Review",required:!0})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"skill-name",required:!0,children:"ID"}),i.jsx(on,{id:"skill-name",type:"text",value:s.name,onChange:f=>a({...s,name:f.target.value}),placeholder:"code-review",required:!0,disabled:!!t}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Lowercase letters, numbers, and hyphens only"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"skill-description",required:!0,children:"Description"}),i.jsx(Ko,{id:"skill-description",value:s.description,onChange:f=>a({...s,description:f.target.value}),placeholder:"Describe what this skill does...",rows:3,required:!0})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"skill-category",children:"Category"}),i.jsx(dr,{id:"skill-category",value:s.category,onChange:f=>a({...s,category:f.target.value}),children:FH.filter(f=>f.value).map(f=>i.jsx("option",{value:f.value,children:f.label},f.value))})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"skill-prompt",children:"Instructions (Markdown)"}),i.jsx(Ko,{id:"skill-prompt",value:s.promptContent,onChange:f=>a({...s,promptContent:f.target.value}),placeholder:`# Skill Instructions
|
|
4909
4909
|
|
|
4910
|
-
Provide detailed instructions for this skill...`,rows:8,className:"font-mono text-sm"})]})]}),i.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-border-dark bg-background-dark",children:[i.jsx(ze,{variant:"secondary",onClick:n,type:"button",children:"Cancel"}),i.jsx(ze,{type:"submit",onClick:u,disabled:o,loading:o,children:o?"Saving...":"Save Skill"})]})]})})},kme=({skillName:t,onConfirm:e,onCancel:n})=>{const r=s=>{s.target===s.currentTarget&&n()};return i.jsx("div",{className:"fixed inset-0 bg-background-dark/80 backdrop-blur-sm flex items-center justify-center z-50",onClick:r,children:i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl shadow-lg w-full max-w-md m-4",onClick:s=>s.stopPropagation(),children:[i.jsx("div",{className:"p-6 border-b border-border-dark",children:i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:"Delete Skill"})}),i.jsx("div",{className:"p-6",children:i.jsxs("p",{className:"text-text-secondary-dark",children:["Are you sure you want to delete ",i.jsx("strong",{className:"text-text-primary-dark",children:t}),"? This action cannot be undone."]})}),i.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-border-dark bg-background-dark rounded-b-xl",children:[i.jsx(ze,{variant:"secondary",onClick:n,children:"Cancel"}),i.jsx(ze,{variant:"danger",onClick:e,children:"Delete"})]})]})})};async function _v(t){const e=await t.json();if(!t.ok||!(e!=null&&e.success))throw new Error((e==null?void 0:e.error)||`Request failed (${t.status})`);return e.data}const Cme=()=>{const[t,e]=k.useState(null),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState(""),[c,d]=k.useState({}),[u,h]=k.useState(null),f=k.useCallback(async()=>{try{a(null);const m=await fetch("/api/slack/team-channels"),g=await _v(m),v=Array.isArray(g==null?void 0:g.teams)?g.teams:[],b=(g==null?void 0:g.settings)??{autoCreate:!0,channelPrefix:""};e({settings:b,teams:v}),l(b.channelPrefix??"")}catch(m){a(m instanceof Error?m.message:"Failed to load team channels")}finally{r(!1)}},[]);k.useEffect(()=>{f()},[f]);const p=async m=>{try{a(null);const g=await fetch("/api/slack/team-channels/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)}),v=await _v(g);e(b=>b&&{...b,settings:v}),l(v.channelPrefix??"")}catch(g){a(g instanceof Error?g.message:"Failed to save settings")}},x=async(m,g)=>{h(m);try{a(null);const v=await fetch("/api/slack/team-channels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g?{teamId:m,slackChannelId:g}:{teamId:m})});await _v(v),d(b=>({...b,[m]:""})),await f()}catch(v){a(v instanceof Error?v.message:"Failed to create channel")}finally{h(null)}},y=async m=>{if(!m.mapping)return;const g=m.mapping.autoCreated?window.confirm(`Also archive #${m.mapping.slackChannelName} in Slack?`):!1;h(m.teamId);try{a(null);const v=await fetch(`/api/slack/team-channels/${encodeURIComponent(m.teamId)}${g?"?archive=true":""}`,{method:"DELETE"});await _v(v),await f()}catch(v){a(v instanceof Error?v.message:"Failed to unlink channel")}finally{h(null)}};return i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-4",children:[i.jsxs("div",{children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Team Channels"}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["Each team gets its own Slack channel. Everyone on the team sees the conversation,",i.jsx("code",{className:"mx-1 text-xs bg-background-dark px-1 py-0.5 rounded",children:"@name"}),"picks a specific agent, and replies show up under each agent's own name."]})]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:f,icon:zn,"aria-label":"Reload team channels",children:"Reload"})]}),s&&i.jsx("div",{className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>a(null),children:s})}),n?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Loading team channels..."}):t?i.jsxs("div",{className:"space-y-5",children:[i.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-end sm:justify-between",children:[i.jsx(os,{id:"slack-team-channels-auto",label:"Auto-create a channel for every new team",checked:t.settings.autoCreate,onChange:m=>p({autoCreate:m.target.checked})}),i.jsxs("div",{className:"flex items-end gap-2",children:[i.jsxs("div",{children:[i.jsx("label",{htmlFor:"slack-team-channels-prefix",className:"block text-xs text-text-secondary-dark mb-1",children:"Channel name prefix"}),i.jsx(on,{id:"slack-team-channels-prefix",value:o,onChange:m=>l(m.target.value),placeholder:"e.g. crew-",className:"w-40"})]}),i.jsx(ze,{variant:"secondary",size:"sm",disabled:o===(t.settings.channelPrefix??""),onClick:()=>p({channelPrefix:o}),children:"Save prefix"})]})]}),t.teams.length>0&&i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:[t.teams.filter(m=>m.mapping).length," of ",t.teams.length," teams have a channel.",t.teams.some(m=>!m.mapping)&&" Teams without one are listed below."]}),t.teams.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No teams yet. Create a team and its channel will appear here."}):i.jsx("ul",{className:"divide-y divide-border-dark",children:[...t.teams].sort((m,g)=>+!!g.mapping-+!!m.mapping).map(m=>i.jsxs("li",{className:"py-3 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[i.jsxs("div",{className:"min-w-0",children:[i.jsx("div",{className:"text-sm font-medium truncate",children:m.teamName}),i.jsxs("div",{className:"text-xs text-text-secondary-dark",children:[m.memberCount," ",m.memberCount===1?"agent":"agents",m.mapping&&i.jsxs(i.Fragment,{children:[" · ",i.jsx(bA,{className:"inline w-3 h-3 -mt-0.5"}),m.mapping.slackChannelName," · ",m.mapping.autoCreated?"created by Crewly":"linked"]})]})]}),m.mapping?i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:id,disabled:u===m.teamId,onClick:()=>y(m),children:"Unlink"}):i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(on,{"aria-label":`Slack channel ID to link for ${m.teamName}`,value:c[m.teamId]??"",onChange:g=>d(v=>({...v,[m.teamId]:g.target.value})),placeholder:"C0123… to link",className:"w-40"}),i.jsx(ze,{variant:"secondary",size:"sm",icon:Sl,disabled:u===m.teamId||!(c[m.teamId]??"").trim(),onClick:()=>x(m.teamId,(c[m.teamId]??"").trim()),children:"Link"}),i.jsx(ze,{variant:"primary",size:"sm",icon:bA,disabled:u===m.teamId,loading:u===m.teamId,onClick:()=>x(m.teamId),children:"Create channel"})]})]},m.teamId))})]}):null]})};async function Sv(t){const e=await t.json();if(!t.ok||!(e!=null&&e.success))throw new Error((e==null?void 0:e.error)||`Request failed (${t.status})`);return e.data}const Eme=({pendingInstalls:t=[]})=>{var K,H,$,L,U,R;const[e,n]=k.useState(null),[r,s]=k.useState({}),[a,o]=k.useState(!1);k.useEffect(()=>{let D=!1;return fetch("/api/teams").then(G=>G.json()).then(G=>{if(D||!(G!=null&&G.success)||!Array.isArray(G.data))return;const F={};for(const J of G.data)for(const q of J.members??[])q.sessionName&&(F[q.sessionName]={teamName:J.name??"Team",memberName:q.name??q.sessionName});s(F)}).catch(()=>{}),()=>{D=!0}},[]);const l=async()=>{o(!0),p(null);try{await Sv(await fetch("/api/slack/cloud/agents/sync",{method:"POST"})),await S(!0)}catch(D){p(D instanceof Error?D.message:"Sync failed")}finally{o(!1)}},[c,d]=k.useState(null),[u,h]=k.useState(!0),[f,p]=k.useState(null),[x,y]=k.useState(""),[m,g]=k.useState(""),[v,b]=k.useState(!1),S=k.useCallback(async(D=!1)=>{var G,F;try{p(null);const J=await fetch(`/api/slack/agent-identities${D?"?refresh=1":""}`),q=await J.json();if(J.status===401||J.status===503){d((q==null?void 0:q.error)||"Unavailable"),n(null);return}if(!J.ok||!(q!=null&&q.success))throw new Error((q==null?void 0:q.error)||`Request failed (${J.status})`);d(null),n({cloud:(G=q.data)==null?void 0:G.cloud,identities:Array.isArray((F=q.data)==null?void 0:F.identities)?q.data.identities:[]})}catch(J){p(J instanceof Error?J.message:"Failed to load agent identities")}finally{h(!1)}},[]);k.useEffect(()=>{S()},[S]);const C=async D=>{D.preventDefault(),b(!0);try{p(null);const G=await fetch("/api/slack/agent-identities/config-token",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:x,refreshToken:m})});await Sv(G),y(""),g(""),await S()}catch(G){p(G instanceof Error?G.message:"Failed to save the configuration token")}finally{b(!1)}},E=async()=>{if(window.confirm("Remove the Slack app configuration token from Crewly Cloud?"))try{p(null),await Sv(await fetch("/api/slack/agent-identities/config-token",{method:"DELETE"})),await S()}catch(D){p(D instanceof Error?D.message:"Failed to remove the token")}},N=async D=>{if(window.confirm(`Delete the Slack app for ${D.displayName}?`))try{p(null),await Sv(await fetch(`/api/slack/agent-identities/${encodeURIComponent(D.agentSession)}`,{method:"DELETE"})),await S()}catch(G){p(G instanceof Error?G.message:"Failed to delete the identity")}},T=!!((H=(K=e==null?void 0:e.cloud)==null?void 0:K.configToken)!=null&&H.configured),A=((L=($=e==null?void 0:e.cloud)==null?void 0:$.configToken)==null?void 0:L.status)==="invalid",M=new Set(((e==null?void 0:e.identities)??[]).map(D=>D.agentSession)),P=t.filter(D=>!M.has(D.agentSession)),I=[...(e==null?void 0:e.identities)??[],...P.map(D=>{var G;return{agentSession:D.agentSession,displayName:((G=r[D.agentSession])==null?void 0:G.memberName)??D.agentSession,appId:"",status:"pending_install",installUrl:D.url,hasToken:!1}})],B=new Map;for(const D of I){const G=((U=r[D.agentSession])==null?void 0:U.teamName)??"Other agents";B.has(G)||B.set(G,[]),B.get(G).push(D)}const V=I.filter(D=>D.status==="installed").length;return i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-4",children:[i.jsxs("div",{children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Agent Identities"}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["Give each agent its own Slack bot user, so it shows up in the member list and can be",i.jsx("code",{className:"mx-1 text-xs bg-background-dark px-1 py-0.5 rounded",children:"@"}),"mentioned natively. Provisioned through Crewly Cloud; each new agent needs one install click from you."]})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(ze,{variant:"ghost",size:"sm",onClick:l,loading:a,disabled:a,"aria-label":"Sync agents with Crewly Cloud",children:"Sync agents"}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>S(!0),icon:zn,"aria-label":"Refresh agent identities",children:"Refresh"})]})]}),f&&i.jsx("div",{className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>p(null),children:f})}),u?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Loading agent identities..."}):c?i.jsx(Bt,{variant:"warning",children:c}):e&&!((R=e.cloud)!=null&&R.enabled)?i.jsx(Bt,{variant:"warning",children:"Agent identities are not enabled on Crewly Cloud yet."}):e?i.jsxs("div",{className:"space-y-5",children:[T?i.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[i.jsxs("span",{children:[i.jsx(C1,{className:"inline w-4 h-4 -mt-0.5 mr-1"}),A?i.jsxs("span",{className:"text-red-400",children:["Configuration token is no longer valid",e.cloud.configToken.lastError?` (${e.cloud.configToken.lastError})`:"",". Paste a new one below."]}):i.jsx("span",{children:"Slack app configuration token stored on Crewly Cloud."})]}),i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:Vi,onClick:E,children:"Remove token"})]}):null,(!T||A)&&i.jsxs("form",{onSubmit:C,className:"space-y-3",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Generate an ",i.jsx("strong",{children:"App Configuration Token"})," at"," ",i.jsxs("a",{href:"https://api.slack.com/apps",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["api.slack.com/apps",i.jsx(Ps,{className:"w-3 h-3"})]})," ","(“Your App Configuration Tokens” → Generate) and paste both values. Crewly Cloud keeps it refreshed."]}),i.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[i.jsxs("div",{children:[i.jsx("label",{htmlFor:"slack-config-token",className:"block text-xs text-text-secondary-dark mb-1",children:"Access token (xoxe.xoxp-…)"}),i.jsx(on,{id:"slack-config-token",type:"password",value:x,onChange:D=>y(D.target.value),placeholder:"xoxe.xoxp-…",autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx("label",{htmlFor:"slack-config-refresh",className:"block text-xs text-text-secondary-dark mb-1",children:"Refresh token (xoxe-…)"}),i.jsx(on,{id:"slack-config-refresh",type:"password",value:m,onChange:D=>g(D.target.value),placeholder:"xoxe-…",autoComplete:"off",required:!0})]})]}),i.jsx(ze,{type:"submit",size:"sm",disabled:v||!m.trim(),loading:v,children:v?"Saving…":"Save configuration token"})]}),I.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No agent identities yet. They are created automatically for members of teams that have a Slack channel."}):i.jsxs("div",{className:"space-y-4","data-testid":"slack-identity-groups",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:[V," of ",I.length," agents installed. Installed agents join their team channel by themselves."]}),[...B.entries()].map(([D,G])=>{const F=G.filter(J=>J.status==="installed").length;return i.jsxs("details",{open:F<G.length,className:"group",children:[i.jsxs("summary",{className:"cursor-pointer list-none flex items-center justify-between gap-3 py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm font-medium",children:D}),i.jsx("span",{className:`text-xs ${F===G.length?"text-green-400":"text-text-secondary-dark"}`,children:F===G.length?"all installed":`${F} / ${G.length} installed`})]}),i.jsx("ul",{className:"divide-y divide-border-dark",children:G.map(J=>i.jsxs("li",{className:"py-2 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[i.jsxs("div",{className:"min-w-0",children:[i.jsxs("div",{className:"text-sm truncate",children:[J.status==="installed"&&i.jsx("span",{className:"text-green-400 mr-1",children:"✓"}),J.displayName]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark",children:[J.status==="installed"&&`Installed · bot ${J.botUserId??""}`,J.status==="pending_install"&&"Waiting for your install click",J.status==="error"&&`Install failed${J.error?`: ${J.error}`:""}`]})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[J.status!=="installed"&&J.installUrl&&i.jsxs("a",{href:J.installUrl,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-primary hover:underline inline-flex items-center gap-1",children:["Install ",J.displayName,i.jsx(Ps,{className:"w-3 h-3"})]}),J.appId&&i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:Vi,onClick:()=>N(J),"aria-label":`Delete identity for ${J.displayName}`,children:"Delete"})]})]},J.agentSession))})]},D)})]})]}):null]})};async function wv(t){const e=await t.json();if(!t.ok||!(e!=null&&e.success))throw new Error((e==null?void 0:e.error)||`Request failed (${t.status})`);return e.data}function Ame(){return`${window.location.origin}/settings?tab=slack`}const Tme=({status:t,onRefresh:e})=>{const[n,r]=k.useState(null),[s,a]=k.useState(null),[o,l]=k.useState(""),c=async(b,S)=>{r(b),a(null);try{await S()}catch(C){a(C instanceof Error?C.message:"Request failed")}finally{r(null)}},d=()=>c("connect",async()=>{const b=await fetch(`/api/slack/cloud/install-url?returnUrl=${encodeURIComponent(Ame())}`),{url:S}=await wv(b);window.location.assign(S)}),u=b=>c("workspace",async()=>{await wv(await fetch("/api/slack/cloud/workspace",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({slackTeamId:b})})),await e(!0)}),h=b=>c("primary",async()=>{await wv(await fetch("/api/slack/cloud/primary",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({primary:b})})),await e()}),f=()=>c("disconnect",async()=>{window.confirm("Remove this Slack workspace from your Crewly account? Every Crewly instance serving it loses Slack.")&&(await wv(await fetch("/api/slack/cloud/workspace",{method:"DELETE"})),await e())}),p=(t==null?void 0:t.workspace)??null,x=!!(t!=null&&t.cloudConnected),y=(t==null?void 0:t.sourceMode)==="env",m=t!=null&&t.availableWorkspaces&&t.availableWorkspaces.length>0?t.availableWorkspaces:null,g=t!=null&&t.workspaces&&t.workspaces.length>1?t.workspaces:null,v=(b,S)=>i.jsxs("div",{className:"flex items-center gap-2","data-testid":"slack-cloud-workspace-picker",children:[i.jsxs("select",{className:"bg-background-dark border border-border-dark rounded px-2 py-1.5 text-sm",value:o||S||"",onChange:C=>l(C.target.value),"aria-label":"Slack workspace for this instance",disabled:n!==null,children:[!S&&!o&&i.jsx("option",{value:"",children:"Choose a workspace…"}),b.map(C=>i.jsx("option",{value:C.slackTeamId,children:C.slackTeamName},C.slackTeamId))]}),i.jsx(ze,{size:"sm",onClick:()=>u(o||S||""),loading:n==="workspace",disabled:n!==null||!(o||S)||(o||S)===S,children:"Use this workspace"})]});return i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-4",children:[i.jsxs("div",{children:[i.jsxs("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:[i.jsx(Hf,{className:"inline w-4 h-4 -mt-0.5 mr-1"}),"Slack via Crewly Cloud"]}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Install the Crewly app in your Slack workspace once; every Crewly instance signed in to your Crewly account gets team channels and agent identities automatically — no tokens to copy."})]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>e(!0),icon:zn,"aria-label":"Refresh Cloud Slack status",children:"Refresh"})]}),s&&i.jsx("div",{className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>a(null),children:s})}),t?y?i.jsxs(Bt,{variant:"info",children:[i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"CREWLY_SLACK_SOURCE=env"})," is set: this instance only uses its self-hosted Slack app tokens (see Advanced below)."]}):x?!p&&m?i.jsxs("div",{className:"space-y-3",children:[i.jsxs("p",{className:"text-sm text-text-secondary-dark",children:["Your Crewly account has ",m.length," Slack workspaces. Pick the one this instance should serve, or connect another one."]}),v(m,null),i.jsx(ze,{variant:"ghost",size:"sm",onClick:d,loading:n==="connect",disabled:n!==null,icon:Ps,children:"Connect another workspace"})]}):p?i.jsxs("div",{className:"space-y-5",children:[i.jsxs("div",{className:"space-y-2","data-testid":"slack-cloud-workspace-card",children:[i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Workspace"}),i.jsx("span",{className:"text-sm font-medium",children:p.slackTeamName})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot user"}),i.jsx("span",{className:"text-sm font-medium font-mono",children:p.botUserId})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Events"}),i.jsx("span",{className:"text-sm font-medium",children:t.connected&&t.transport==="cloud"?"Delivered by Crewly Cloud (no Socket Mode)":t.connected?"Self-hosted Socket Mode (Cloud config ignored)":"Not connected on this instance yet"})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Agent identities"}),i.jsxs("span",{className:"text-sm font-medium",children:[p.agentIdentities," installed"]})]}),i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"This instance"}),i.jsxs("span",{className:"text-sm font-medium",children:[t.instanceId?i.jsx("code",{className:"text-xs",children:t.instanceId}):"not registered",t.lastHeartbeatAt&&i.jsxs("span",{className:"text-xs text-text-secondary-dark ml-2",children:["· registered ",new Date(t.lastHeartbeatAt).toLocaleString()]})]})]}),t.registryError&&i.jsxs("p",{className:"text-xs text-amber-400/80",children:["Registry: ",t.registryError]})]}),i.jsxs("div",{className:"space-y-2",children:[g&&i.jsxs(i.Fragment,{children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Your account has ",g.length," workspaces. This instance serves one of them:"]}),v(g,p.slackTeamId)]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:d,loading:n==="connect",disabled:n!==null,icon:Ps,children:"Connect another workspace"})]}),i.jsx("div",{className:"flex items-start gap-3",children:i.jsx(os,{id:"slack-cloud-primary",checked:t.primary,disabled:n!==null,onChange:b=>h(b.target.checked),label:"Make this the primary instance","aria-label":"Make this the primary instance"})}),i.jsx("p",{className:"text-xs text-text-secondary-dark -mt-3",children:"Direct messages to the Crewly bot and channels no team owns go to the primary instance. Team channels always reach the instance running that team."}),i.jsx("div",{className:"flex items-center gap-3",children:i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:id,onClick:f,loading:n==="disconnect",disabled:n!==null,children:"Disconnect workspace"})})]}):i.jsxs("div",{className:"space-y-3",children:[i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No Slack workspace is connected to your Crewly account yet."}),i.jsx(ze,{onClick:d,loading:n==="connect",disabled:n!==null,icon:Ps,children:n==="connect"?"Opening Slack...":"Connect Slack"}),t.configError&&i.jsxs("p",{className:"text-xs text-amber-400/80",children:["Last Cloud check failed: ",t.configError]})]}):i.jsxs(Bt,{variant:"warning",children:["Log in to Crewly Cloud first (",i.jsx("a",{href:"/cloud",className:"underline",children:"Settings → Cloud"}),") — Slack is installed through your Crewly account."]}):i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Loading Cloud Slack status..."})]})};function pO(){try{return new URLSearchParams(window.location.search).get("slack")==="connected"}catch{return!1}}const Mme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(!1),[c,d]=k.useState(null),[u,h]=k.useState(()=>pO()),[f,p]=k.useState(!1),[x,y]=k.useState({botToken:"",appToken:"",signingSecret:"",defaultChannel:""}),m=k.useCallback(async()=>{var T,A,M,P,I,B,V;try{d(null);const H=await(await fetch("/api/slack/status")).json();H.success?e({connected:((T=H.data)==null?void 0:T.isConfigured)||!1,workspaceName:(A=H.data)==null?void 0:A.workspaceName,botName:(M=H.data)==null?void 0:M.botName,channels:(P=H.data)==null?void 0:P.channels,lastMessageAt:(I=H.data)==null?void 0:I.lastMessageAt,messagesSent:(B=H.data)==null?void 0:B.messagesSent,messagesReceived:(V=H.data)==null?void 0:V.messagesReceived}):e({connected:!1,error:H.error})}catch{e({connected:!1,error:"Failed to fetch status"})}finally{a(!1)}},[]),g=k.useCallback(async(T=!1)=>{try{const A=await fetch(`/api/slack/cloud/status${T?"?refresh=1":""}`),M=await A.json();A.ok&&(M!=null&&M.success)&&M.data&&typeof M.data.cloudConnected=="boolean"?r(M.data):r(null)}catch{r(null)}},[]),v=k.useCallback(async(T=!1)=>{await g(T),await m()},[g,m]);k.useEffect(()=>{g(pO()),m()},[m,g]),k.useEffect(()=>{((n==null?void 0:n.activeSource)==="env"||n&&!n.workspace&&(n.local.env||n.local.saved))&&p(!0)},[n]);const b=T=>{const{name:A,value:M}=T.target;y(P=>({...P,[A]:M}))},S=async T=>{T.preventDefault(),l(!0),d(null);try{const A=await fetch("/api/slack/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({botToken:x.botToken,appToken:x.appToken,signingSecret:x.signingSecret,defaultChannelId:x.defaultChannel||void 0})}),M=await A.json();if(!A.ok||!M.success)throw new Error(M.error||"Connection failed");y({botToken:"",appToken:"",signingSecret:"",defaultChannel:""}),await m()}catch(A){d(A instanceof Error?A.message:"Failed to connect to Slack")}finally{l(!1)}},C=async()=>{if(window.confirm("Are you sure you want to disconnect from Slack?"))try{d(null);const T=await fetch("/api/slack/disconnect",{method:"POST"}),A=await T.json();if(!T.ok||!A.success)throw new Error(A.error||"Disconnect failed");await m()}catch(T){d(T instanceof Error?T.message:"Failed to disconnect")}};if(s)return i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Slack status..."})});const E=(n==null?void 0:n.activeSource)==="cloud",N=i.jsxs("details",{open:f,onToggle:T=>p(T.currentTarget.open),className:"group","data-testid":"slack-advanced",children:[i.jsx("summary",{className:"cursor-pointer text-sm font-medium text-text-secondary-dark hover:text-text-primary-dark select-none",children:"Advanced: self-hosted app"}),i.jsxs("div",{className:"mt-4 space-y-6",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Run your own Slack app with Socket Mode instead of Crewly Cloud. Set"," ",i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"CREWLY_SLACK_SOURCE=env"})," to keep using it even when a Cloud workspace exists."]}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Setup Instructions"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Create a Slack App at"," ",i.jsxs("a",{href:"https://api.slack.com/apps",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["api.slack.com/apps",i.jsx(Ps,{className:"w-3 h-3"})]})]}),i.jsx("li",{children:"Enable Socket Mode in your app settings and create an App Token (starts with xapp-)"}),i.jsxs("li",{children:["Add Bot Token Scopes under OAuth & Permissions:",i.jsxs("ul",{className:"list-disc list-inside ml-4 mt-1.5 space-y-1",children:[i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"chat:write"})," - Send messages"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"channels:read"})," - View channels"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"app_mentions:read"})," - Respond to mentions"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"im:read"}),", ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"im:write"})," - Direct messages"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"files:read"})," - Receive images from Slack"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"files:write"})," - Upload images to Slack"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"reactions:write"})," - Typing/completion indicators (optional)"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"channels:manage"}),", ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"channels:join"})," - Create and join team channels"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"chat:write.customize"})," - Let each agent post under its own name and icon"]})]}),i.jsxs("p",{className:"text-xs text-amber-400/80 mt-1.5 ml-4",children:["Note: Adding ",i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"files:read"})," and ",i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"files:write"})," scopes requires reinstalling the app to your workspace."]})]}),i.jsx("li",{children:"Install the app to your workspace"}),i.jsx("li",{children:"Copy the Bot Token (xoxb-...), App Token (xapp-...), and Signing Secret"})]})]}),i.jsx(Ot,{padding:"lg",children:i.jsxs("form",{onSubmit:S,className:"space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Self-hosted app credentials"}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"botToken",required:!0,children:"Bot Token (xoxb-...)"}),i.jsx(on,{id:"botToken",name:"botToken",type:"password",value:x.botToken,onChange:b,placeholder:"xoxb-your-bot-token",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"appToken",required:!0,children:"App Token (xapp-...)"}),i.jsx(on,{id:"appToken",name:"appToken",type:"password",value:x.appToken,onChange:b,placeholder:"xapp-your-app-token",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"signingSecret",required:!0,children:"Signing Secret"}),i.jsx(on,{id:"signingSecret",name:"signingSecret",type:"password",value:x.signingSecret,onChange:b,placeholder:"Your signing secret",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"defaultChannel",children:"Default Channel (optional)"}),i.jsx(on,{id:"defaultChannel",name:"defaultChannel",type:"text",value:x.defaultChannel,onChange:b,placeholder:"C1234567890 or #crewly"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Channel ID or name where notifications will be sent by default"})]}),i.jsx("div",{className:"pt-2",children:i.jsx(ze,{type:"submit",disabled:o||!x.botToken||!x.appToken||!x.signingSecret,loading:o,fullWidth:!0,children:o?"Connecting...":"Connect to Slack"})})]})})]})]});return i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-lg font-semibold",children:"Slack Integration"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect Slack to talk to the orchestrator and your teams from your phone or desktop Slack app."})]}),c&&i.jsx(Bt,{variant:"error",onClose:()=>d(null),children:c}),u&&i.jsx(Bt,{variant:"success",onClose:()=>h(!1),children:"Slack workspace connected to your Crewly account. This instance picks it up automatically."}),t.connected?i.jsxs(Bt,{variant:"success",children:["Connected to Slack",E?" via Crewly Cloud":""]}):i.jsx(Bt,{variant:"warning",children:"Not connected to Slack"}),i.jsx(Tme,{status:n,onRefresh:v}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[t.workspaceName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Workspace"}),i.jsx("span",{className:"text-sm font-medium",children:t.workspaceName})]}),t.botName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot Name"}),i.jsx("span",{className:"text-sm font-medium",children:t.botName})]}),t.channels&&t.channels.length>0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Channels"}),i.jsx("span",{className:"text-sm font-medium",children:t.channels.join(", ")})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]}),t.lastMessageAt&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Last Activity"}),i.jsx("span",{className:"text-sm font-medium",children:new Date(t.lastMessageAt).toLocaleString()})]})]})]}),i.jsx(Cme,{}),i.jsx(Eme,{pendingInstalls:(n==null?void 0:n.pendingInstalls)??[]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:()=>v(),icon:zn,children:"Refresh Status"}),!E&&i.jsx(ze,{variant:"danger",onClick:C,icon:id,children:"Disconnect"})]}),N]}):i.jsx("div",{className:"space-y-6",children:N})]})},Nme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),c=k.useCallback(async()=>{var h,f,p,x,y,m;try{l(null);const v=await(await fetch("/api/whatsapp/status")).json();v.success?e({connected:((h=v.data)==null?void 0:h.isConfigured)||((f=v.data)==null?void 0:f.connected)||!1,phoneNumber:(p=v.data)==null?void 0:p.phoneNumber,qrCode:(x=v.data)==null?void 0:x.qrCode,messagesSent:(y=v.data)==null?void 0:y.messagesSent,messagesReceived:(m=v.data)==null?void 0:m.messagesReceived}):e({connected:!1,error:v.error})}catch{e({connected:!1,error:"Failed to fetch WhatsApp status"})}finally{r(!1)}},[]);k.useEffect(()=>{c()},[c]);const d=async()=>{var h;a(!0),l(null);try{const f=await fetch("/api/whatsapp/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),p=await f.json();if(!f.ok||!p.success)throw new Error(p.error||"Connection failed");(h=p.data)!=null&&h.qrCode&&e(x=>({...x,qrCode:p.data.qrCode})),await c()}catch(f){l(f instanceof Error?f.message:"Failed to connect WhatsApp")}finally{a(!1)}},u=async()=>{if(window.confirm("Are you sure you want to disconnect from WhatsApp?"))try{l(null);const h=await fetch("/api/whatsapp/disconnect",{method:"POST"}),f=await h.json();if(!h.ok||!f.success)throw new Error(f.error||"Disconnect failed");await c()}catch(h){l(h instanceof Error?h.message:"Failed to disconnect")}};return n?i.jsx("div",{className:"flex justify-center py-8",children:i.jsx(sr,{size:"md",text:"Loading WhatsApp status..."})}):i.jsxs("div",{className:"space-y-5",children:[o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),t.connected?i.jsxs("div",{className:"space-y-5",children:[i.jsx(Bt,{variant:"success",children:"Connected to WhatsApp"}),i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-5",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:"Connection Details"}),i.jsxs("div",{className:"space-y-2",children:[t.phoneNumber&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Phone Number"}),i.jsx("span",{className:"text-sm font-medium",children:t.phoneNumber})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:c,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:u,icon:id,children:"Disconnect"})]})]}):i.jsx("div",{className:"space-y-5",children:t.qrCode?i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-6 flex flex-col items-center gap-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Scan QR Code"}),i.jsx("p",{className:"text-xs text-text-secondary-dark text-center max-w-sm",children:"Open WhatsApp on your phone, go to Settings > Linked Devices > Link a Device, then scan this QR code."}),i.jsx("div",{className:"bg-white p-4 rounded-lg",children:i.jsx("img",{src:`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(t.qrCode)}`,alt:"WhatsApp QR Code",className:"w-48 h-48","data-testid":"whatsapp-qr-code"})}),i.jsx(ze,{variant:"secondary",onClick:c,icon:zn,children:"Refresh QR Code"})]}):i.jsxs("div",{className:"space-y-4",children:[i.jsx(Bt,{variant:"warning",children:"Not connected to WhatsApp"}),i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-5",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:"How to Connect"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsx("li",{children:'Click "Connect WhatsApp" below to generate a QR code'}),i.jsx("li",{children:"Open WhatsApp on your phone"}),i.jsxs("li",{children:["Go to ",i.jsx("strong",{children:"Settings"})," > ",i.jsx("strong",{children:"Linked Devices"})," > ",i.jsx("strong",{children:"Link a Device"})]}),i.jsx("li",{children:"Scan the QR code displayed here"})]})]}),i.jsx(ze,{onClick:d,disabled:s,loading:s,icon:JF,fullWidth:!0,children:s?"Initializing...":"Connect WhatsApp"})]})})]})},jme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState("pubsub"),[u,h]=k.useState("service_account"),[f,p]=k.useState(""),[x,y]=k.useState(""),[m,g]=k.useState(""),[v,b]=k.useState(""),[S,C]=k.useState(!1),[E,N]=k.useState(null),[T,A]=k.useState(!1),[M,P]=k.useState(null),[I,B]=k.useState(""),[V,K]=k.useState(""),H=k.useRef(null),$=k.useCallback(async()=>{var q;try{l(null);const z=await(await fetch("/api/messengers/status")).json();if(z.success&&Array.isArray(z.data)){const Q=z.data.find(re=>re.platform==="google-chat");if(Q){let re=Q.details||{};if(Q.connected&&((q=Q.details)==null?void 0:q.mode)==="pubsub")try{const de=await(await fetch("/api/messengers/google-chat/status")).json();de.success&&(re={...re,...de.data})}catch{}e({connected:Q.connected,mode:re.mode,authMode:re.authMode,serviceAccountEmail:re.serviceAccountEmail,pullActive:re.pullActive,pullPaused:re.pullPaused,subscriptionName:re.subscriptionName,projectId:re.projectId,consecutiveFailures:re.consecutiveFailures,lastPullAt:re.lastPullAt})}}}catch{e({connected:!1,error:"Failed to fetch status"})}finally{r(!1)}},[]);k.useEffect(()=>{$()},[$]),k.useEffect(()=>(t.connected&&t.mode==="pubsub"&&(H.current=setInterval(()=>{$()},1e4)),()=>{H.current&&(clearInterval(H.current),H.current=null)}),[t.connected,t.mode,$]);const L=async q=>{q.preventDefault(),a(!0),l(null);try{let te;c==="webhook"?te={webhookUrl:f}:u==="adc"?(te={authMode:"adc"},c==="pubsub"&&(te.projectId=m,te.subscriptionName=v),V.trim()&&(te.serviceAccountEmail=V.trim())):c==="service-account"?te={serviceAccountKey:x}:te={serviceAccountKey:x,projectId:m,subscriptionName:v};const z=await fetch("/api/messengers/google-chat/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te)}),Q=await z.json();if(!z.ok||!Q.success)throw new Error(Q.error||"Connection failed");p(""),y(""),g(""),b(""),K(""),await $()}catch(te){l(te instanceof Error?te.message:"Failed to connect")}finally{a(!1)}},U=async()=>{if(window.confirm("Are you sure you want to disconnect from Google Chat?"))try{l(null);const q=await fetch("/api/messengers/google-chat/disconnect",{method:"POST"}),te=await q.json();if(!q.ok||!te.success)throw new Error(te.error||"Disconnect failed");await $()}catch(q){l(q instanceof Error?q.message:"Failed to disconnect")}},R=async()=>{C(!0),N(null);try{const q=await fetch("/api/messengers/google-chat/pull",{method:"POST"}),te=await q.json();if(!q.ok||!te.success)throw new Error(te.error||"Pull failed");const z=te.messagesReceived||0;N(z>0?`Pulled ${z} message${z!==1?"s":""}`:"No new messages"),await $()}catch(q){N(q instanceof Error?q.message:"Pull failed")}finally{C(!1)}},D=async()=>{if(I.trim()){A(!0),P(null);try{const q=await fetch("/api/messengers/google-chat/test-send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({space:I.trim(),text:"Test message from Crewly"})}),te=await q.json();if(!q.ok||!te.success)throw new Error(te.error||"Test send failed");P("Message sent successfully")}catch(q){P(q instanceof Error?q.message:"Test send failed")}finally{A(!1)}}},G=q=>{switch(q){case"webhook":return"Webhook";case"service-account":return"Service Account";case"pubsub":return"Pub/Sub (Bidirectional)";default:return"Unknown"}},F=q=>q==="adc"?"Application Default Credentials":"Service Account Key",J=()=>c==="webhook"?!!f:u==="adc"?c==="pubsub"?!!(m&&v):!0:c==="service-account"?!!x:!!(x&&m&&v);return n?i.jsx("div",{className:"flex justify-center py-8",children:i.jsx(sr,{size:"md",text:"Loading Google Chat status..."})}):i.jsxs("div",{className:"space-y-5",children:[o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:i.jsx("span",{className:"text-sm",children:o})}),t.connected?i.jsxs("div",{className:"space-y-5",children:[i.jsx(Bt,{variant:"success",children:i.jsx("span",{className:"font-medium text-sm",children:"Connected to Google Chat"})}),i.jsxs(Ot,{padding:"lg",className:"bg-background-dark",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:"Connection Details"}),i.jsxs("div",{className:"space-y-2",children:[i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Mode"}),i.jsx("span",{className:"text-sm font-medium",children:G(t.mode)})]}),(t.mode==="pubsub"||t.mode==="service-account")&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Auth"}),i.jsx("span",{className:"text-sm font-medium",children:F(t.authMode)})]}),t.serviceAccountEmail&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Impersonating"}),i.jsx("span",{className:"text-sm font-mono truncate max-w-[280px]","data-testid":"sa-email-display",children:t.serviceAccountEmail})]}),t.mode==="pubsub"&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Project ID"}),i.jsx("span",{className:"text-sm font-mono",children:t.projectId})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Subscription"}),i.jsx("span",{className:"text-sm font-mono text-text-secondary-dark/80 truncate max-w-[240px]",children:t.subscriptionName})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Pull Loop"}),i.jsxs("span",{className:"flex items-center gap-2",children:[i.jsx("span",{className:`w-2 h-2 rounded-full ${t.pullPaused?"bg-amber-400":t.pullActive?"bg-emerald-400 animate-pulse":"bg-gray-500"}`}),i.jsx("span",{className:`text-sm font-medium ${t.pullPaused?"text-amber-400":t.pullActive?"text-emerald-400":"text-text-secondary-dark"}`,children:t.pullPaused?"Paused (errors)":t.pullActive?"Running":"Stopped"})]})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Last Pull"}),i.jsx("span",{className:"text-sm font-mono","data-testid":"last-pull-at",children:t.lastPullAt?new Date(t.lastPullAt).toLocaleTimeString():"Never"})]}),(t.consecutiveFailures??0)>0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Consecutive Failures"}),i.jsx("span",{className:"text-sm font-medium text-amber-400","data-testid":"consecutive-failures",children:t.consecutiveFailures})]})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[t.mode==="pubsub"&&i.jsx(ze,{variant:"primary",onClick:R,disabled:S,loading:S,icon:gp,"data-testid":"pull-now-btn",children:S?"Pulling...":"Pull Now"}),i.jsx(ze,{variant:"secondary",onClick:$,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:U,icon:id,children:"Disconnect"})]}),E&&i.jsx("div",{className:`text-sm px-3 py-2 rounded-lg ${E.startsWith("Pulled")?"bg-emerald-500/10 text-emerald-400":E==="No new messages"?"bg-blue-500/10 text-blue-400":"bg-rose-500/10 text-rose-400"}`,"data-testid":"pull-result",children:E}),(t.mode==="pubsub"||t.mode==="service-account")&&i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-4 space-y-3",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Test Send"}),i.jsxs("div",{className:"flex items-end gap-2",children:[i.jsxs("div",{className:"flex-1",children:[i.jsx(Tt,{htmlFor:"test-send-space",children:"Space Name"}),i.jsx(on,{id:"test-send-space",name:"testSendSpace",type:"text",value:I,onChange:q=>B(q.target.value),placeholder:"spaces/AAAA...",autoComplete:"off","data-testid":"test-send-space"})]}),i.jsx(ze,{variant:"primary",onClick:D,disabled:T||!I.trim(),loading:T,icon:Q2,"data-testid":"test-send-btn",children:T?"Sending...":"Test Send"})]}),M&&i.jsx("div",{className:`text-sm px-3 py-2 rounded-lg ${M==="Message sent successfully"?"bg-emerald-500/10 text-emerald-400":"bg-rose-500/10 text-rose-400"}`,"data-testid":"test-send-result",children:M})]})]}):i.jsxs("div",{className:"space-y-5",children:[i.jsx(Bt,{variant:"warning",children:i.jsx("span",{className:"font-medium text-sm",children:"Not connected to Google Chat"})}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx("button",{className:`px-4 py-2 text-sm rounded-lg border transition-colors ${c==="pubsub"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>d("pubsub"),"data-testid":"mode-pubsub",children:"Pub/Sub (Recommended)"}),i.jsx("button",{className:`px-4 py-2 text-sm rounded-lg border transition-colors ${c==="webhook"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>d("webhook"),"data-testid":"mode-webhook",children:"Webhook"}),i.jsx("button",{className:`px-4 py-2 text-sm rounded-lg border transition-colors ${c==="service-account"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>d("service-account"),"data-testid":"mode-service-account",children:"Service Account"})]}),i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-5",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:c==="pubsub"?"Pub/Sub Setup (Bidirectional)":c==="webhook"?"Webhook Setup (Send-only)":"Service Account Setup (Send-only)"}),c==="pubsub"?i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Go to ",i.jsx("strong",{children:"Google Cloud Console"})," > ",i.jsx("strong",{children:"APIs & Services"})]}),i.jsxs("li",{children:["Enable the ",i.jsx("strong",{children:"Google Chat API"})," and ",i.jsx("strong",{children:"Cloud Pub/Sub API"})]}),i.jsxs("li",{children:["Create a ",i.jsx("strong",{children:"Service Account"})," and download the JSON key"]}),i.jsxs("li",{children:["In the Chat API settings, create a ",i.jsx("strong",{children:"Chat App"})," and select ",i.jsx("strong",{children:"Cloud Pub/Sub"})," as the connection type"]}),i.jsxs("li",{children:["Enter a ",i.jsx("strong",{children:"Pub/Sub topic name"})," (e.g., ",i.jsx("code",{className:"bg-surface-dark px-1 rounded",children:"projects/my-project/topics/google-chat-events"}),")"]}),i.jsxs("li",{children:["Create a ",i.jsx("strong",{children:"Pub/Sub subscription"})," for that topic (pull mode)"]}),i.jsxs("li",{children:["Grant the service account ",i.jsx("strong",{children:"Pub/Sub Subscriber"})," role on the subscription"]}),i.jsx("li",{children:"Fill in the details below"})]}):c==="webhook"?i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsx("li",{children:"Open your Google Chat space"}),i.jsxs("li",{children:["Click the space name > ",i.jsx("strong",{children:"Apps & integrations"})," > ",i.jsx("strong",{children:"Manage webhooks"})]}),i.jsx("li",{children:"Create a new webhook and copy the URL"}),i.jsx("li",{children:"Paste the webhook URL below"})]}):i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Go to the ",i.jsx("strong",{children:"Google Cloud Console"})," > ",i.jsx("strong",{children:"APIs & Services"})]}),i.jsxs("li",{children:["Enable the ",i.jsx("strong",{children:"Google Chat API"})]}),i.jsxs("li",{children:["Create a ",i.jsx("strong",{children:"Service Account"})," and download the JSON key"]}),i.jsx("li",{children:"Grant the service account access to your Chat space"}),i.jsx("li",{children:"Paste the JSON key contents below"})]})]}),i.jsxs("form",{onSubmit:L,className:"space-y-4",children:[c==="webhook"?i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-webhook",required:!0,children:"Webhook URL"}),i.jsx(on,{id:"gchat-webhook",name:"webhookUrl",type:"url",value:f,onChange:q=>p(q.target.value),placeholder:"https://chat.googleapis.com/v1/spaces/...",required:!0,autoComplete:"off"})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{children:[i.jsx(Tt,{children:"Authentication Method"}),i.jsxs("div",{className:"flex gap-2 mt-1",children:[i.jsx("button",{type:"button",className:`px-3 py-1.5 text-xs rounded-lg border transition-colors ${u==="service_account"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>h("service_account"),"data-testid":"auth-service-account",children:"Service Account Key"}),i.jsx("button",{type:"button",className:`px-3 py-1.5 text-xs rounded-lg border transition-colors ${u==="adc"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>h("adc"),"data-testid":"auth-adc",children:"Application Default Credentials"})]})]}),c==="pubsub"&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-project-id",required:!0,children:"GCP Project ID"}),i.jsx(on,{id:"gchat-project-id",name:"projectId",type:"text",value:m,onChange:q=>g(q.target.value),placeholder:"my-gcp-project-id",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-subscription",required:!0,children:"Pub/Sub Subscription Name"}),i.jsx(on,{id:"gchat-subscription",name:"subscriptionName",type:"text",value:v,onChange:q=>b(q.target.value),placeholder:"google-chat-events-sub",required:!0,autoComplete:"off"}),i.jsx("p",{className:"mt-1 text-xs text-text-secondary-dark",children:"Just the subscription name, not the full resource path"})]})]}),u==="adc"?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"bg-blue-500/10 border border-blue-500/30 rounded-lg p-4",children:[i.jsx("p",{className:"text-sm text-blue-300 mb-2",children:"Using Application Default Credentials from your local gcloud CLI."}),i.jsx("p",{className:"text-xs text-text-secondary-dark mb-2",children:"Run this command if you haven't already:"}),i.jsx("code",{className:"block bg-background-dark px-3 py-2 rounded text-xs text-text-primary-dark font-mono break-all",children:"gcloud auth application-default login --scopes=https://www.googleapis.com/auth/chat.bot,https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/cloud-platform"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-sa-email",children:"Service Account Email (for impersonation)"}),i.jsx(on,{id:"gchat-sa-email",name:"serviceAccountEmail",type:"email",value:V,onChange:q=>K(q.target.value),placeholder:"chatbot@project.iam.gserviceaccount.com",autoComplete:"off","data-testid":"sa-email-input"}),i.jsx("p",{className:"mt-1 text-xs text-text-secondary-dark",children:"Required for sending messages. Your user needs the Service Account Token Creator IAM role."})]})]}):i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-sa-key",required:!0,children:"Service Account Key (JSON)"}),i.jsx(Ko,{id:"gchat-sa-key",name:"serviceAccountKey",value:x,onChange:q=>y(q.target.value),placeholder:'{"type": "service_account", "project_id": "...", ...}',required:!0,rows:6,className:"font-mono"})]})]}),i.jsx(ze,{type:"submit",disabled:s||!J(),loading:s,fullWidth:!0,children:s?"Connecting...":"Connect Google Chat"})]})]})]})},Rme="/api/messengers/status",Ime="/api/messengers/telegram/connect",Pme="/api/messengers/telegram/disconnect",Lme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState({botToken:"",allowedChats:""}),u=k.useCallback(async()=>{var x,y,m,g;try{l(null);const b=await(await fetch(Rme)).json();if(b.success&&Array.isArray(b.data)){const S=b.data.find(C=>C.platform==="telegram");e(S?{connected:S.connected,botName:(x=S.details)==null?void 0:x.botName,botId:(y=S.details)==null?void 0:y.botId,messagesSent:(m=S.details)==null?void 0:m.messagesSent,messagesReceived:(g=S.details)==null?void 0:g.messagesReceived}:{connected:!1})}else e({connected:!1,error:b.error||"Failed to fetch status"})}catch{e({connected:!1,error:"Failed to fetch status"})}finally{r(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=x=>{const{name:y,value:m}=x.target;d(g=>({...g,[y]:m}))},f=async x=>{x.preventDefault(),a(!0),l(null);try{const y={token:c.botToken};c.allowedChats.trim()&&(y.allowedChats=c.allowedChats.split(",").map(v=>v.trim()).filter(Boolean));const m=await fetch(Ime,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),g=await m.json();if(!m.ok||!g.success)throw new Error(g.error||"Connection failed");d({botToken:"",allowedChats:""}),await u()}catch(y){l(y instanceof Error?y.message:"Failed to connect to Telegram")}finally{a(!1)}},p=async()=>{if(window.confirm("Are you sure you want to disconnect from Telegram?"))try{l(null);const x=await fetch(Pme,{method:"POST"}),y=await x.json();if(!x.ok||!y.success)throw new Error(y.error||"Disconnect failed");await u()}catch(x){l(x instanceof Error?x.message:"Failed to disconnect")}};return n?i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Telegram status..."})}):i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Telegram Integration"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect a Telegram bot to communicate with the orchestrator via Telegram."})]}),o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"success",children:"Connected to Telegram"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[t.botName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot Name"}),i.jsx("span",{className:"text-sm font-medium",children:t.botName})]}),t.botId&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot ID"}),i.jsx("span",{className:"text-sm font-medium",children:t.botId})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:u,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:p,icon:id,children:"Disconnect"})]})]}):i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"warning",children:"Not connected to Telegram"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Setup Instructions"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Open Telegram and search for"," ",i.jsxs("a",{href:"https://t.me/BotFather",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["@BotFather",i.jsx(Ps,{className:"w-3 h-3"})]})]}),i.jsxs("li",{children:["Send ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"/newbot"})," and follow the prompts to create a bot"]}),i.jsx("li",{children:"Copy the HTTP API token provided by BotFather"}),i.jsx("li",{children:"Paste the token below and click Connect"})]})]}),i.jsx(Ot,{padding:"lg",children:i.jsxs("form",{onSubmit:f,className:"space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connect to Telegram"}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"botToken",required:!0,children:"Bot Token"}),i.jsx(on,{id:"botToken",name:"botToken",type:"password",value:c.botToken,onChange:h,placeholder:"123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",required:!0,autoComplete:"off"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"The HTTP API token from @BotFather"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"allowedChats",children:"Allowed Chats (optional)"}),i.jsx(on,{id:"allowedChats",name:"allowedChats",type:"text",value:c.allowedChats,onChange:h,placeholder:"-1001234567890, -1009876543210"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Comma-separated chat IDs to restrict the bot to specific groups"})]}),i.jsx("div",{className:"pt-2",children:i.jsx(ze,{type:"submit",disabled:s||!c.botToken,loading:s,fullWidth:!0,children:s?"Connecting...":"Connect to Telegram"})})]})})]})]})},Dme="/api/messengers/status",Ome="/api/messengers/discord/connect",Bme="/api/messengers/discord/disconnect",Fme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState({token:"",allowedChannels:""}),u=k.useCallback(async()=>{var x,y,m,g;try{l(null);const b=await(await fetch(Dme)).json();if(b.success&&Array.isArray(b.data)){const S=b.data.find(C=>C.platform==="discord");e(S?{connected:S.connected,botName:(x=S.details)==null?void 0:x.botName,botId:(y=S.details)==null?void 0:y.botId,messagesSent:(m=S.details)==null?void 0:m.messagesSent,messagesReceived:(g=S.details)==null?void 0:g.messagesReceived}:{connected:!1})}else e({connected:!1,error:b.error||"Failed to fetch status"})}catch{e({connected:!1,error:"Failed to fetch status"})}finally{r(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=x=>{const{name:y,value:m}=x.target;d(g=>({...g,[y]:m}))},f=async x=>{x.preventDefault(),a(!0),l(null);try{const y={token:c.token};c.allowedChannels.trim()&&(y.allowedChannels=c.allowedChannels.split(",").map(v=>v.trim()).filter(Boolean));const m=await fetch(Ome,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),g=await m.json();if(!m.ok||!g.success)throw new Error(g.error||"Connection failed");d({token:"",allowedChannels:""}),await u()}catch(y){l(y instanceof Error?y.message:"Failed to connect to Discord")}finally{a(!1)}},p=async()=>{if(window.confirm("Are you sure you want to disconnect from Discord?"))try{l(null);const x=await fetch(Bme,{method:"POST"}),y=await x.json();if(!x.ok||!y.success)throw new Error(y.error||"Disconnect failed");await u()}catch(x){l(x instanceof Error?x.message:"Failed to disconnect")}};return n?i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Discord status..."})}):i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Discord Integration"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect a Discord bot to communicate with the orchestrator via your Discord server."})]}),o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"success",children:"Connected to Discord"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[t.botName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot Name"}),i.jsx("span",{className:"text-sm font-medium",children:t.botName})]}),t.botId&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot ID"}),i.jsx("span",{className:"text-sm font-medium",children:t.botId})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:u,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:p,icon:id,children:"Disconnect"})]})]}):i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"warning",children:"Not connected to Discord"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Setup Instructions"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Go to the"," ",i.jsxs("a",{href:"https://discord.com/developers/applications",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["Discord Developer Portal",i.jsx(Ps,{className:"w-3 h-3"})]})]}),i.jsx("li",{children:"Create a New Application and navigate to the Bot section"}),i.jsx("li",{children:'Click "Reset Token" to generate a bot token and copy it'}),i.jsxs("li",{children:["Under OAuth2 → URL Generator, select the"," ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"bot"})," scope and grant permissions:",i.jsxs("ul",{className:"list-disc list-inside ml-4 mt-1.5 space-y-1",children:[i.jsx("li",{children:i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"Send Messages"})}),i.jsx("li",{children:i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"Read Message History"})}),i.jsx("li",{children:i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"Add Reactions"})})]})]}),i.jsx("li",{children:"Use the generated URL to invite the bot to your server"}),i.jsx("li",{children:"Paste the bot token below and click Connect"})]})]}),i.jsx(Ot,{padding:"lg",children:i.jsxs("form",{onSubmit:f,className:"space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connect to Discord"}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"token",required:!0,children:"Bot Token"}),i.jsx(on,{id:"token",name:"token",type:"password",value:c.token,onChange:h,placeholder:"MTEyMzQ1Njc4OTAxMjM0NTY3OC...",required:!0,autoComplete:"off"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"The bot token from Discord Developer Portal"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"allowedChannels",children:"Allowed Channels (optional)"}),i.jsx(on,{id:"allowedChannels",name:"allowedChannels",type:"text",value:c.allowedChannels,onChange:h,placeholder:"1234567890123456789, 9876543210987654321"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Comma-separated channel IDs to restrict the bot to specific channels"})]}),i.jsx("div",{className:"pt-2",children:i.jsx(ze,{type:"submit",disabled:s||!c.token,loading:s,fullWidth:!0,children:s?"Connecting...":"Connect to Discord"})})]})})]})]})},Ume="/api/google/status",zme="/api/google/connect-url",Hme="/api/google/disconnect",Gme="/settings?tab=integrations",Wme="google",Vme={"https://www.googleapis.com/auth/gmail.readonly":"Read mail","https://www.googleapis.com/auth/gmail.send":"Send mail","https://www.googleapis.com/auth/calendar.readonly":"Read calendar","https://www.googleapis.com/auth/calendar.events":"Manage events","https://www.googleapis.com/auth/drive.readonly":"Read Drive","https://www.googleapis.com/auth/drive.file":"Drive files","https://www.googleapis.com/auth/documents.readonly":"Read Docs"};function $me(t){return(t??[]).map(e=>Vme[e]).filter(e=>!!e)}const Kme=()=>{const[t,e]=k.useState({connected:!1,cloudConnected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState(null),u=k.useCallback(async()=>{try{l(null);const x=await fetch(Ume),y=await x.json();x.ok&&y.success?e(y.data):(e({connected:!1,cloudConnected:!1}),l(y.hint||y.message||y.error||"Failed to fetch Google Workspace status"))}catch{e({connected:!1,cloudConnected:!1}),l("Failed to fetch Google Workspace status")}finally{r(!1)}},[]);k.useEffect(()=>{u();try{const x=new URLSearchParams(window.location.search).get(Wme);x==="connected"?d("Google Workspace connected."):x==="error"&&l("Google Workspace connection failed. Please try again.")}catch{}},[u]);const h=async()=>{var x;a(!0),l(null);try{const y=`${window.location.origin}${Gme}`,m=await fetch(`${zme}?returnUrl=${encodeURIComponent(y)}`),g=await m.json();if(!m.ok||!g.success||!((x=g.data)!=null&&x.url))throw new Error(g.hint||g.message||g.error||"Could not start Google sign-in");window.location.href=g.data.url}catch(y){l(y instanceof Error?y.message:"Could not start Google sign-in"),a(!1)}},f=async()=>{if(window.confirm("Disconnect Google Workspace? Agents will no longer be able to read mail or the calendar.")){a(!0),l(null);try{const x=await fetch(Hme,{method:"DELETE"}),y=await x.json();if(!x.ok||!y.success)throw new Error(y.hint||y.message||y.error||"Disconnect failed");d(null),await u()}catch(x){l(x instanceof Error?x.message:"Failed to disconnect")}finally{a(!1)}}};if(n)return i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Google Workspace status..."})});const p=$me(t.scopes);return i.jsxs("div",{className:"space-y-6 max-w-3xl","data-testid":"google-workspace-tab",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Google Workspace"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Let agents read your Gmail, send mail on your behalf and manage your calendar. Crewly Cloud keeps the Google sign-in; mail content goes straight from Google to this instance."})]}),o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),c&&i.jsx(Bt,{variant:"success",onClose:()=>d(null),children:c}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsxs(Bt,{variant:"success",children:["Connected as ",t.email??"your Google account"]}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Account"}),i.jsx("span",{className:"text-sm font-medium","data-testid":"google-workspace-email",children:t.email??"—"})]}),p.length>0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Access"}),i.jsx("span",{className:"text-sm font-medium",children:p.join(", ")})]}),t.grantedAt&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Connected"}),i.jsx("span",{className:"text-sm font-medium",children:new Date(t.grantedAt).toLocaleString()})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:u,icon:zn,disabled:s,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:f,icon:id,loading:s,children:"Disconnect"})]})]}):i.jsx("div",{className:"space-y-6",children:t.cloudConnected?i.jsxs(i.Fragment,{children:[i.jsx(Bt,{variant:"warning",children:"Google Workspace is not connected"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("p",{className:"text-sm text-text-secondary-dark mb-4",children:"You will be sent to Google to approve access for the account you use with Crewly Cloud, then brought back here."}),i.jsx(ze,{variant:"primary",onClick:h,icon:Ps,loading:s,children:"Connect Google Workspace"})]})]}):i.jsx(Bt,{variant:"info",children:"Sign in to Crewly Cloud first (Settings → Cloud), then connect Google Workspace here."})})]})},UH=[{id:"slack",name:"Slack",description:"Connect your Slack workspace for team communication with the orchestrator.",icon:bA,available:!0,component:Mme},{id:"whatsapp",name:"WhatsApp",description:"Connect via WhatsApp Web to communicate with the orchestrator from your phone.",icon:UK,available:!0,component:Nme},{id:"discord",name:"Discord",description:"Connect a Discord bot to communicate with the orchestrator via Discord server.",icon:$F,available:!0,component:Fme},{id:"telegram",name:"Telegram",description:"Connect a Telegram bot for messaging the orchestrator via Telegram.",icon:Q2,available:!0,component:Lme},{id:"google-chat",name:"Google Chat",description:"Connect Google Chat for workspace communication with the orchestrator.",icon:Ax,available:!0,component:jme},{id:"google-workspace",name:"Google Workspace",description:"Let agents read your Gmail, send mail on your behalf and manage your Google Calendar.",icon:VF,available:!0,component:Kme}];function qme(){try{const t=new URLSearchParams(window.location.search),e=t.get("platform")??(t.get("tab")==="slack"?"slack":null);return UH.some(n=>n.id===e&&n.available)?e:null}catch{return null}}const Xme=()=>{const[t,e]=k.useState(()=>qme()),n=r=>{e(s=>s===r?null:r)};return i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Messaging Integrations"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect messaging platforms to communicate with the orchestrator from anywhere."})]}),i.jsx("div",{className:"space-y-3",children:UH.map(r=>{const s=t===r.id,a=r.icon;return i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-lg overflow-hidden","data-testid":`platform-card-${r.id}`,children:[i.jsxs("button",{className:`w-full flex items-center gap-4 p-4 text-left transition-colors ${r.available?"hover:bg-background-dark cursor-pointer":"opacity-60 cursor-default"}`,onClick:()=>r.available&&n(r.id),disabled:!r.available,"data-testid":`platform-toggle-${r.id}`,children:[i.jsx("div",{className:"flex items-center justify-center w-10 h-10 rounded-lg bg-background-dark border border-border-dark",children:i.jsx(a,{className:"w-5 h-5 text-text-secondary-dark"})}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-sm font-semibold",children:r.name}),!r.available&&i.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-background-dark text-text-secondary-dark border border-border-dark",children:"Coming Soon"})]}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-0.5 truncate",children:r.description})]}),r.available&&i.jsx("div",{className:"text-text-secondary-dark",children:s?i.jsx(ei,{className:"w-5 h-5"}):i.jsx(Si,{className:"w-5 h-5"})})]}),s&&r.component&&i.jsx("div",{className:"border-t border-border-dark p-6","data-testid":`platform-content-${r.id}`,children:i.jsx(r.component,{})})]},r.id)})})]})},UC={gemini:"Google Gemini",anthropic:"Anthropic",openai:"OpenAI",deepseek:"DeepSeek"},mO={gemini:"GOOGLE_GENERATIVE_AI_API_KEY",anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",deepseek:"DEEPSEEK_API_KEY"},Yme=2e3,Jme=()=>{const{settings:t,updateSettings:e,isLoading:n,error:r}=XN(),[s,a]=k.useState({global:{},runtimeOverrides:{},skillOverrides:{}}),[o,l]=k.useState(!1),[c,d]=k.useState("idle"),[u,h]=k.useState(null),[f,p]=k.useState({}),[x,y]=k.useState({}),[m,g]=k.useState({}),[v,b]=k.useState({});k.useEffect(()=>{t!=null&&t.apiKeys&&(a(t.apiKeys),l(!1))},[t]);const S=k.useCallback((P,I)=>{a(B=>({...B,global:{...B.global,[P]:I}})),l(!0),d("idle"),y(B=>({...B,[`global-${P}`]:"idle"}))},[]),C=k.useCallback((P,I,B,V)=>{a(K=>{var L,U,R;const $={...((U=(L=K.runtimeOverrides)==null?void 0:L[P])==null?void 0:U[I])??{key:"",source:"global"},[B]:V};return{...K,runtimeOverrides:{...K.runtimeOverrides,[P]:{...(R=K.runtimeOverrides)==null?void 0:R[P],[I]:$}}}}),l(!0),d("idle")},[]),E=async()=>{d("saving"),h(null);try{await e({apiKeys:s}),d("saved"),l(!1),setTimeout(()=>d("idle"),Yme)}catch(P){d("error"),h(P instanceof Error?P.message:"Failed to save")}},N=async(P,I,B)=>{if(!(!I||I.startsWith("••••"))){y(V=>({...V,[B]:"testing"})),g(V=>({...V,[B]:""}));try{const V=await xf.testApiKey(P,I);y(K=>({...K,[B]:V.valid?"valid":"invalid"})),!V.valid&&V.error&&g(K=>({...K,[B]:V.error}))}catch{y(V=>({...V,[B]:"invalid"})),g(V=>({...V,[B]:"Connection failed"}))}}},T=P=>{p(I=>({...I,[P]:!I[P]}))},A=P=>{b(I=>({...I,[P]:!I[P]}))},M=(P,I)=>{const B=x[I];return B==="testing"?i.jsx("span",{className:"text-xs text-text-secondary-dark animate-pulse",children:"Testing..."}):B==="valid"?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-green-400",children:[i.jsx(br,{className:"w-3 h-3"})," Valid"]}):B==="invalid"?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-red-400",children:[i.jsx(Or,{className:"w-3 h-3"})," ",m[I]||"Invalid"]}):P&&!P.startsWith("••••")?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-green-400",children:[i.jsx(br,{className:"w-3 h-3"})," Configured"]}):P&&P.startsWith("••••")?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-blue-400",children:[i.jsx(Kb,{className:"w-3 h-3"})," Saved"]}):i.jsxs("span",{className:"flex items-center gap-1 text-xs text-text-secondary-dark",children:[i.jsx(Or,{className:"w-3 h-3"})," Not set"]})};return n?i.jsx("div",{className:"text-text-secondary-dark",children:"Loading settings..."}):r?i.jsx(Bt,{variant:"error",children:r}):i.jsxs("div",{className:"space-y-8",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-lg font-semibold",children:"API Keys"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Configure AI provider API keys. Keys are encrypted at rest and never logged."})]}),i.jsx("div",{className:"flex gap-2",children:i.jsx(ze,{variant:"secondary",size:"sm",onClick:E,disabled:!o||c==="saving",children:c==="saving"?i.jsxs(i.Fragment,{children:[i.jsx(J2,{className:"w-4 h-4 animate-spin"})," Saving..."]}):c==="saved"?i.jsxs(i.Fragment,{children:[i.jsx(br,{className:"w-4 h-4"})," Saved"]}):i.jsxs(i.Fragment,{children:[i.jsx($c,{className:"w-4 h-4"})," Save Changes"]})})})]}),c==="error"&&u&&i.jsx(Bt,{variant:"error",children:u}),i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[i.jsx(Kb,{className:"w-5 h-5 text-primary"}),i.jsx("h3",{className:"text-lg font-medium",children:"Global API Keys"})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-6",children:"These keys are used system-wide as defaults. Runtimes and skills can override them with their own keys."}),i.jsx("div",{className:"space-y-5",children:dP.map(P=>{const I=s.global[P]||"",B=`global-${P}`,V=f[B];return i.jsxs("div",{className:"space-y-1",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx(Tt,{htmlFor:`global-${P}`,children:UC[P]}),M(I,B)]}),i.jsxs("div",{className:"flex gap-2",children:[i.jsxs("div",{className:"relative flex-1",children:[i.jsx(on,{id:`global-${P}`,type:V?"text":"password",value:I,onChange:K=>S(P,K.target.value),placeholder:`Enter ${mO[P]}`,className:"pr-10 font-mono text-sm"}),i.jsx("button",{type:"button",onClick:()=>T(B),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-secondary-dark hover:text-text-primary-dark","aria-label":V?"Hide key":"Show key",children:V?i.jsx(v3,{className:"w-4 h-4"}):i.jsx(xA,{className:"w-4 h-4"})})]}),i.jsxs(ze,{variant:"secondary",size:"sm",onClick:()=>N(P,I,B),disabled:!I||I.startsWith("••••")||x[B]==="testing",children:[i.jsx(Uc,{className:"w-4 h-4"}),"Test"]})]}),i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Env var: ",i.jsx("code",{className:"bg-surface-dark px-1 rounded",children:mO[P]})]})]},P)})})]}),i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[i.jsx(Uc,{className:"w-5 h-5 text-primary"}),i.jsx("h3",{className:"text-lg font-medium",children:"Runtime Overrides"})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-4",children:"Override global keys for specific AI runtimes. By default, runtimes use the global key."}),i.jsx("div",{className:"space-y-2",children:L6.map(P=>{const I=v[P];return i.jsxs("div",{className:"border border-border-dark rounded-lg",children:[i.jsxs("button",{type:"button",onClick:()=>A(P),className:"w-full flex items-center justify-between px-4 py-3 text-sm font-medium hover:bg-surface-dark/50 rounded-lg",children:[i.jsx("span",{children:dg[P]}),I?i.jsx(ei,{className:"w-4 h-4 text-text-secondary-dark"}):i.jsx(Si,{className:"w-4 h-4 text-text-secondary-dark"})]}),I&&i.jsx("div",{className:"px-4 pb-4 space-y-4 border-t border-border-dark pt-4",children:dP.map(B=>{var L,U;const V=(U=(L=s.runtimeOverrides)==null?void 0:L[P])==null?void 0:U[B],K=(V==null?void 0:V.source)==="custom",H=K&&(V==null?void 0:V.key)||"",$=`runtime-${P}-${B}`;return i.jsxs("div",{className:"space-y-2",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx(Tt,{htmlFor:`${P}-${B}-toggle`,children:UC[B]}),i.jsx(os,{id:`${P}-${B}-toggle`,size:"sm",label:K?"Custom key":"Use global",checked:K,onChange:R=>C(P,B,"source",R.target.checked?"custom":"global")})]}),K&&i.jsxs("div",{className:"flex gap-2",children:[i.jsxs("div",{className:"relative flex-1",children:[i.jsx(on,{type:f[$]?"text":"password",value:H,onChange:R=>C(P,B,"key",R.target.value),placeholder:`Custom ${UC[B]} key for ${dg[P]}`,className:"pr-10 font-mono text-sm"}),i.jsx("button",{type:"button",onClick:()=>T($),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-secondary-dark hover:text-text-primary-dark",children:f[$]?i.jsx(v3,{className:"w-4 h-4"}):i.jsx(xA,{className:"w-4 h-4"})})]}),i.jsxs(ze,{variant:"secondary",size:"sm",onClick:()=>N(B,H,$),disabled:!H||H.startsWith("••••")||x[$]==="testing",children:[i.jsx(Uc,{className:"w-4 h-4"}),"Test"]})]})]},B)})})]},P)})})]})]})},xl="/api/credentials";function gO(t,e){var n;if(Ye.isAxiosError(t)){const r=(n=t.response)==null?void 0:n.data;return r&&typeof r.error=="string"&&r.error.length>0?new Error(r.error):new Error(t.message||e)}return t instanceof Error?t:new Error(e)}class Zme{async list(){const e=await Ye.get(xl);if(!e.data.success||!e.data.data)throw new Error(e.data.error||"Failed to list credentials");return e.data.data}async get(e){const n=await Ye.get(`${xl}/${e}`);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to get credential");return n.data.data}async addApiKey(e){const n=await Ye.post(`${xl}/api-key`,e);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to add API key");return n.data.data}async importFromGeminiCli(e){const n=await Ye.post(`${xl}/oauth/import-gemini-cli`,e);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to import from gemini-cli");return n.data.data}async clearGeminiCliExtensionFile(){const e=await Ye.post(`${xl}/oauth/gemini-cli/clear-extension-file`);if(!e.data.success)throw new Error(e.data.error||"Failed to clear extension file")}async startGoogleOAuth(e={}){const n={};e.scopes&&e.scopes.length>0&&(n.scopes=e.scopes);try{const r=await Ye.post(`${xl}/oauth/google/start`,n);if(!r.data.success||!r.data.data)throw new Error(r.data.error||"Failed to start Google OAuth");return r.data.data}catch(r){throw gO(r,"Failed to start Google OAuth")}}async completeGoogleOAuth(e){try{const n=await Ye.post(`${xl}/oauth/google/complete`,e);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to save Google credential");return n.data.data}catch(n){throw gO(n,"Failed to save Google credential")}}async update(e,n){const r=await Ye.patch(`${xl}/${e}`,n);if(!r.data.success||!r.data.data)throw new Error(r.data.error||"Failed to update credential");return r.data.data}async delete(e){const n=await Ye.delete(`${xl}/${e}`);if(!n.data.success)throw new Error(n.data.error||"Failed to delete credential")}}const mc=new Zme;function Qme(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useCallback(async()=>{r(!0),a(null);try{const x=await mc.list();e(x)}catch(x){a(x instanceof Error?x.message:"Failed to load credentials")}finally{r(!1)}},[]);k.useEffect(()=>{o()},[o]);const l=k.useCallback(async x=>{const y=await mc.addApiKey(x);return await o(),y},[o]),c=k.useCallback(async x=>{const y=await mc.importFromGeminiCli(x);return await o(),y},[o]),d=k.useCallback(async()=>{await mc.clearGeminiCliExtensionFile()},[]),u=k.useCallback(async(x={})=>mc.startGoogleOAuth(x),[]),h=k.useCallback(async x=>{const y=await mc.completeGoogleOAuth(x);return await o(),y},[o]),f=k.useCallback(async(x,y)=>{const m=await mc.update(x,y);return await o(),m},[o]),p=k.useCallback(async x=>{await mc.delete(x),await o()},[o]);return{credentials:t,isLoading:n,error:s,refresh:o,addApiKey:l,importFromGeminiCli:c,clearGeminiCliExtensionFile:d,startGoogleOAuth:u,completeGoogleOAuth:h,update:f,remove:p}}const xO=["openid","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/gmail.modify"],ege=[{value:"gemini",label:"Google Gemini"},{value:"anthropic",label:"Anthropic (Claude)"},{value:"openai",label:"OpenAI"},{value:"other",label:"Other (custom)"}],tge=()=>{const{credentials:t,isLoading:e,error:n,refresh:r,addApiKey:s,importFromGeminiCli:a,clearGeminiCliExtensionFile:o,startGoogleOAuth:l,completeGoogleOAuth:c,remove:d}=Qme(),[u,h]=k.useState(null),[f,p]=k.useState(null),[x,y]=k.useState(null),m=k.useCallback((C,E)=>{y({kind:C,message:E}),setTimeout(()=>y(null),4e3)},[]),g=t.filter(C=>C.type==="google-oauth"),v=t.filter(C=>C.type==="api-key"),b=C=>{p(C),h("deleteConfirm")},S=async()=>{if(f)try{await d(f.id),m("success",`Deleted "${f.name}"`)}catch(C){m("error",C instanceof Error?C.message:"Delete failed")}finally{p(null),h(null)}};return i.jsxs("div",{className:"space-y-6",children:[i.jsx("div",{children:i.jsxs("div",{className:"flex items-start gap-2 p-4 bg-surface-dark rounded-lg border border-border-dark",children:[i.jsx(Tu,{className:"w-4 h-4 text-text-secondary-dark mt-0.5 flex-shrink-0"}),i.jsxs("div",{className:"text-sm text-text-secondary-dark",children:[i.jsx("p",{className:"font-medium text-text-primary-dark mb-1",children:"Credentials for third-party services your agents call"}),i.jsxs("p",{children:["Add Google accounts (Gmail, Drive, Calendar, etc.) and service API keys that skills use to act on your behalf. For the AI model powering your agents themselves, use the ",i.jsx("strong",{children:"API Keys"})," tab instead."]})]})]})}),x&&i.jsx(Bt,{variant:x.kind==="success"?"success":"error",children:x.message}),n&&!e&&i.jsx(Bt,{variant:"error",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{children:["Failed to load credentials: ",n]}),i.jsxs(ze,{variant:"secondary",size:"sm",onClick:()=>r(),children:[i.jsx(zn,{className:"w-3 h-3 mr-1"})," Retry"]})]})}),i.jsxs("section",{children:[i.jsxs("div",{className:"flex items-center justify-between mb-3",children:[i.jsxs("h3",{className:"text-lg font-semibold flex items-center gap-2",children:[i.jsx(Sl,{className:"w-5 h-5"}),"Google Accounts",i.jsxs("span",{className:"text-sm font-normal text-text-secondary-dark",children:["(",g.length,")"]})]}),i.jsx("div",{className:"flex items-center gap-2",children:i.jsxs(ze,{variant:"primary",size:"sm",onClick:()=>h("addGoogleOAuth"),children:[i.jsx(vr,{className:"w-3 h-3 mr-1"})," Add Google Account"]})})]}),g.length===0&&!e&&i.jsxs(Ot,{className:"p-6 text-center text-sm text-text-secondary-dark",children:["No Google accounts added yet. Click ",i.jsx("strong",{children:"Add Google Account"})," above to sign in and link one — no CLI install required."]}),g.length>0&&i.jsx("div",{className:"space-y-2",children:g.map(C=>i.jsx(yO,{cred:C,onDelete:()=>b(C)},C.id))}),i.jsxs("div",{className:"mt-3 flex items-center gap-2 text-xs text-text-secondary-dark",children:[i.jsx(Zg,{className:"w-3 h-3"}),i.jsx("span",{children:"Developer option:"}),i.jsx("button",{type:"button",onClick:()=>h("importGeminiCli"),className:"text-primary hover:underline",children:"Import from Gemini CLI"})]})]}),i.jsxs("section",{children:[i.jsxs("div",{className:"flex items-center justify-between mb-3",children:[i.jsxs("h3",{className:"text-lg font-semibold flex items-center gap-2",children:[i.jsx(Kb,{className:"w-5 h-5"}),"Service API Keys",i.jsxs("span",{className:"text-sm font-normal text-text-secondary-dark",children:["(",v.length,")"]})]}),i.jsxs(ze,{variant:"primary",size:"sm",onClick:()=>h("addApiKey"),children:[i.jsx(vr,{className:"w-3 h-3 mr-1"})," Add API Key"]})]}),v.length===0&&!e&&i.jsx(Ot,{className:"p-6 text-center text-sm text-text-secondary-dark",children:"No service API keys added yet. These are for skills that call third-party services (e.g., Gemini API for image generation)."}),v.length>0&&i.jsx("div",{className:"space-y-2",children:v.map(C=>i.jsx(yO,{cred:C,onDelete:()=>b(C)},C.id))})]}),u==="addApiKey"&&i.jsx(nge,{onClose:()=>h(null),onSubmit:async C=>{await s(C),m("success",`Added "${C.name}"`),h(null)}}),u==="addGoogleOAuth"&&i.jsx(sge,{onClose:()=>h(null),onStart:l,onComplete:async(C,E)=>{const N=await c({name:C,credentialsJson:E}),T=N.accountEmail?`${N.name} (${N.accountEmail})`:N.name;m("success",`Added Google account ${T}`),h(null)}}),u==="importGeminiCli"&&i.jsx(ige,{onClose:()=>h(null),onImport:async C=>{await a({name:C}),m("success",`Added Google account "${C}"`)},onClearExtensionFile:o}),u==="deleteConfirm"&&f&&i.jsx(B1,{isOpen:!0,title:"Delete credential?",message:`Delete "${f.name}"? This cannot be undone. Skills using this credential will fail until you add a replacement.`,confirmLabel:"Delete",confirmVariant:"danger",onConfirm:S,onCancel:()=>{h(null),p(null)}})]})},yO=({cred:t,onDelete:e})=>{const n=t.type==="google-oauth",r=t.status==="revoked";return i.jsx(Ot,{className:"p-4",children:i.jsxs("div",{className:"flex items-start justify-between gap-4",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx("span",{className:"font-medium",children:t.name}),r&&i.jsxs("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded bg-red-500/10 text-red-400",children:[i.jsx(Or,{className:"w-3 h-3"}),"Revoked"]}),!r&&n&&i.jsxs("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded bg-green-500/10 text-green-400",children:[i.jsx(Wu,{className:"w-3 h-3"}),"Active"]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark space-y-0.5",children:[i.jsxs("div",{children:["Provider: ",i.jsx("span",{className:"font-mono",children:t.provider}),n&&t.helper&&i.jsxs(i.Fragment,{children:[" · ","Helper: ",i.jsx("span",{className:"font-mono",children:t.helper})]})]}),t.accountEmail&&i.jsxs("div",{children:["Account: ",i.jsx("span",{className:"font-mono",children:t.accountEmail})]}),t.scopes&&t.scopes.length>0&&i.jsxs("div",{className:"truncate",title:t.scopes.join(" "),children:["Scopes (",t.scopes.length,"):"," ",i.jsx("span",{className:"font-mono",children:t.scopes.map(s=>s.replace("https://www.googleapis.com/auth/","")).join(", ")})]}),i.jsxs("div",{children:["Added ",new Date(t.createdAt).toLocaleDateString(),t.lastUsedAt&&` · Last used ${new Date(t.lastUsedAt).toLocaleDateString()}`]})]})]}),i.jsx(ze,{variant:"secondary",size:"sm",onClick:e,"aria-label":"Delete credential",children:i.jsx(Vi,{className:"w-3 h-3"})})]})})},nge=({onClose:t,onSubmit:e})=>{const[n,r]=k.useState(""),[s,a]=k.useState("gemini"),[o,l]=k.useState(""),[c,d]=k.useState(""),[u,h]=k.useState(!1),[f,p]=k.useState(null),x=async y=>{y.preventDefault(),p(null);const m=s==="other"?o.trim():s;if(!n.trim()||!m||!c.trim()){p("All fields are required");return}h(!0);try{await e({name:n.trim(),provider:m,value:c.trim()})}catch(g){p(g instanceof Error?g.message:"Failed to add API key"),h(!1)}};return i.jsx(Ka,{isOpen:!0,onClose:t,title:"Add API Key",size:"md",children:i.jsxs("form",{onSubmit:x,className:"space-y-4",children:[i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-name",children:"Name"}),i.jsx(on,{id:"cred-apikey-name",type:"text",value:n,onChange:y=>r(y.target.value),placeholder:"e.g. gemini-main, openai-personal",required:!0})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-provider",children:"Provider"}),i.jsx("select",{id:"cred-apikey-provider",value:s,onChange:y=>a(y.target.value),className:"w-full px-3 py-2 bg-surface-dark border border-border-dark rounded text-sm",children:ege.map(y=>i.jsx("option",{value:y.value,children:y.label},y.value))})]}),s==="other"&&i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-custom-provider",children:"Custom provider identifier"}),i.jsx(on,{id:"cred-apikey-custom-provider",type:"text",value:o,onChange:y=>l(y.target.value),placeholder:"lowercase, e.g. 'groq', 'mistral'",required:!0})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-value",children:"API Key"}),i.jsx(on,{id:"cred-apikey-value",type:"password",value:c,onChange:y=>d(y.target.value),placeholder:"paste your API key",required:!0})]}),f&&i.jsx(Bt,{variant:"error",children:f}),i.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[i.jsx(ze,{type:"button",variant:"secondary",onClick:t,disabled:u,children:"Cancel"}),i.jsx(ze,{type:"submit",variant:"primary",disabled:u,children:u?"Adding…":"Add"})]})]})})};function rge(t){const e=t.toLowerCase();return e.includes("access_token")||e.includes("refresh_token")?"The sign-in info you pasted is incomplete. Open the success page again and copy the entire JSON block (from the opening { to the closing }).":e.includes("not valid json")?"That doesn't look like the JSON from the success page. Copy the whole block — don't edit it.":e.includes("app")&&(e.includes("block")||e.includes("denied"))?`This Google account doesn't allow sign-in with this app. Try the "Gmail only" scope, or use a different Google / Workspace account.`:e.includes("already")&&e.includes("exist")?"This Google account is already linked. Check the list above — it's already there.":t}const sge=({onClose:t,onStart:e,onComplete:n})=>{const[r,s]=k.useState("configure"),[a,o]=k.useState(""),[l,c]=k.useState("gmail-only"),[d,u]=k.useState(xO.join(`
|
|
4910
|
+
Provide detailed instructions for this skill...`,rows:8,className:"font-mono text-sm"})]})]}),i.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-border-dark bg-background-dark",children:[i.jsx(ze,{variant:"secondary",onClick:n,type:"button",children:"Cancel"}),i.jsx(ze,{type:"submit",onClick:u,disabled:o,loading:o,children:o?"Saving...":"Save Skill"})]})]})})},kme=({skillName:t,onConfirm:e,onCancel:n})=>{const r=s=>{s.target===s.currentTarget&&n()};return i.jsx("div",{className:"fixed inset-0 bg-background-dark/80 backdrop-blur-sm flex items-center justify-center z-50",onClick:r,children:i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl shadow-lg w-full max-w-md m-4",onClick:s=>s.stopPropagation(),children:[i.jsx("div",{className:"p-6 border-b border-border-dark",children:i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:"Delete Skill"})}),i.jsx("div",{className:"p-6",children:i.jsxs("p",{className:"text-text-secondary-dark",children:["Are you sure you want to delete ",i.jsx("strong",{className:"text-text-primary-dark",children:t}),"? This action cannot be undone."]})}),i.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-border-dark bg-background-dark rounded-b-xl",children:[i.jsx(ze,{variant:"secondary",onClick:n,children:"Cancel"}),i.jsx(ze,{variant:"danger",onClick:e,children:"Delete"})]})]})})};async function _v(t){const e=await t.json();if(!t.ok||!(e!=null&&e.success))throw new Error((e==null?void 0:e.error)||`Request failed (${t.status})`);return e.data}const Cme=()=>{const[t,e]=k.useState(null),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState(""),[c,d]=k.useState({}),[u,h]=k.useState(null),f=k.useCallback(async()=>{try{a(null);const m=await fetch("/api/slack/team-channels"),g=await _v(m),v=Array.isArray(g==null?void 0:g.teams)?g.teams:[],b=(g==null?void 0:g.settings)??{autoCreate:!0,channelPrefix:""};e({settings:b,teams:v}),l(b.channelPrefix??"")}catch(m){a(m instanceof Error?m.message:"Failed to load team channels")}finally{r(!1)}},[]);k.useEffect(()=>{f()},[f]);const p=async m=>{try{a(null);const g=await fetch("/api/slack/team-channels/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)}),v=await _v(g);e(b=>b&&{...b,settings:v}),l(v.channelPrefix??"")}catch(g){a(g instanceof Error?g.message:"Failed to save settings")}},x=async(m,g)=>{h(m);try{a(null);const v=await fetch("/api/slack/team-channels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g?{teamId:m,slackChannelId:g}:{teamId:m})});await _v(v),d(b=>({...b,[m]:""})),await f()}catch(v){a(v instanceof Error?v.message:"Failed to create channel")}finally{h(null)}},y=async m=>{if(!m.mapping)return;const g=m.mapping.autoCreated?window.confirm(`Also archive #${m.mapping.slackChannelName} in Slack?`):!1;h(m.teamId);try{a(null);const v=await fetch(`/api/slack/team-channels/${encodeURIComponent(m.teamId)}${g?"?archive=true":""}`,{method:"DELETE"});await _v(v),await f()}catch(v){a(v instanceof Error?v.message:"Failed to unlink channel")}finally{h(null)}};return i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-4",children:[i.jsxs("div",{children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Team Channels"}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["Each team gets its own Slack channel. Everyone on the team sees the conversation,",i.jsx("code",{className:"mx-1 text-xs bg-background-dark px-1 py-0.5 rounded",children:"@name"}),"picks a specific agent, and replies show up under each agent's own name."]})]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:f,icon:zn,"aria-label":"Reload team channels",children:"Reload"})]}),s&&i.jsx("div",{className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>a(null),children:s})}),n?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Loading team channels..."}):t?i.jsxs("div",{className:"space-y-5",children:[i.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-end sm:justify-between",children:[i.jsx(os,{id:"slack-team-channels-auto",label:"Auto-create a channel for every new team",checked:t.settings.autoCreate,onChange:m=>p({autoCreate:m.target.checked})}),i.jsxs("div",{className:"flex items-end gap-2",children:[i.jsxs("div",{children:[i.jsx("label",{htmlFor:"slack-team-channels-prefix",className:"block text-xs text-text-secondary-dark mb-1",children:"Channel name prefix"}),i.jsx(on,{id:"slack-team-channels-prefix",value:o,onChange:m=>l(m.target.value),placeholder:"e.g. crew-",className:"w-40"})]}),i.jsx(ze,{variant:"secondary",size:"sm",disabled:o===(t.settings.channelPrefix??""),onClick:()=>p({channelPrefix:o}),children:"Save prefix"})]})]}),t.teams.length>0&&i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:[t.teams.filter(m=>m.mapping).length," of ",t.teams.length," teams have a channel.",t.teams.some(m=>!m.mapping)&&" Teams without one are listed below."]}),t.teams.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No teams yet. Create a team and its channel will appear here."}):i.jsx("ul",{className:"divide-y divide-border-dark",children:[...t.teams].sort((m,g)=>+!!g.mapping-+!!m.mapping).map(m=>i.jsxs("li",{className:"py-3 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[i.jsxs("div",{className:"min-w-0",children:[i.jsx("div",{className:"text-sm font-medium truncate",children:m.teamName}),i.jsxs("div",{className:"text-xs text-text-secondary-dark",children:[m.memberCount," ",m.memberCount===1?"agent":"agents",m.mapping&&i.jsxs(i.Fragment,{children:[" · ",i.jsx(bA,{className:"inline w-3 h-3 -mt-0.5"}),m.mapping.slackChannelName," · ",m.mapping.autoCreated?"created by Crewly":"linked"]})]})]}),m.mapping?i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:id,disabled:u===m.teamId,onClick:()=>y(m),children:"Unlink"}):i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(on,{"aria-label":`Slack channel ID to link for ${m.teamName}`,value:c[m.teamId]??"",onChange:g=>d(v=>({...v,[m.teamId]:g.target.value})),placeholder:"C0123… to link",className:"w-40"}),i.jsx(ze,{variant:"secondary",size:"sm",icon:Sl,disabled:u===m.teamId||!(c[m.teamId]??"").trim(),onClick:()=>x(m.teamId,(c[m.teamId]??"").trim()),children:"Link"}),i.jsx(ze,{variant:"primary",size:"sm",icon:bA,disabled:u===m.teamId,loading:u===m.teamId,onClick:()=>x(m.teamId),children:"Create channel"})]})]},m.teamId))})]}):null]})};async function Sv(t){const e=await t.json();if(!t.ok||!(e!=null&&e.success))throw new Error((e==null?void 0:e.error)||`Request failed (${t.status})`);return e.data}function Eme(t){const e=r=>r.toLowerCase().replace(/\s+/g,"-"),n={};for(const r of t)for(const s of r.members??[]){const a=s.sessionName||(s.id&&s.name&&r.name?`${e(r.name)}-${e(s.name)}-${s.id.substring(0,8)}`:"");a&&(n[a]={teamName:r.name??"Team",memberName:s.name??a})}return n}const Ame=({pendingInstalls:t=[]})=>{var K,H,$,L,U,R;const[e,n]=k.useState(null),[r,s]=k.useState({}),[a,o]=k.useState(!1);k.useEffect(()=>{let D=!1;return fetch("/api/teams").then(G=>G.json()).then(G=>{D||!(G!=null&&G.success)||!Array.isArray(G.data)||s(Eme(G.data))}).catch(()=>{}),()=>{D=!0}},[]);const l=async()=>{o(!0),p(null);try{await Sv(await fetch("/api/slack/cloud/agents/sync",{method:"POST"})),await S(!0)}catch(D){p(D instanceof Error?D.message:"Sync failed")}finally{o(!1)}},[c,d]=k.useState(null),[u,h]=k.useState(!0),[f,p]=k.useState(null),[x,y]=k.useState(""),[m,g]=k.useState(""),[v,b]=k.useState(!1),S=k.useCallback(async(D=!1)=>{var G,F;try{p(null);const J=await fetch(`/api/slack/agent-identities${D?"?refresh=1":""}`),q=await J.json();if(J.status===401||J.status===503){d((q==null?void 0:q.error)||"Unavailable"),n(null);return}if(!J.ok||!(q!=null&&q.success))throw new Error((q==null?void 0:q.error)||`Request failed (${J.status})`);d(null),n({cloud:(G=q.data)==null?void 0:G.cloud,identities:Array.isArray((F=q.data)==null?void 0:F.identities)?q.data.identities:[]})}catch(J){p(J instanceof Error?J.message:"Failed to load agent identities")}finally{h(!1)}},[]);k.useEffect(()=>{S()},[S]);const C=async D=>{D.preventDefault(),b(!0);try{p(null);const G=await fetch("/api/slack/agent-identities/config-token",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:x,refreshToken:m})});await Sv(G),y(""),g(""),await S()}catch(G){p(G instanceof Error?G.message:"Failed to save the configuration token")}finally{b(!1)}},E=async()=>{if(window.confirm("Remove the Slack app configuration token from Crewly Cloud?"))try{p(null),await Sv(await fetch("/api/slack/agent-identities/config-token",{method:"DELETE"})),await S()}catch(D){p(D instanceof Error?D.message:"Failed to remove the token")}},N=async D=>{if(window.confirm(`Delete the Slack app for ${D.displayName}?`))try{p(null),await Sv(await fetch(`/api/slack/agent-identities/${encodeURIComponent(D.agentSession)}`,{method:"DELETE"})),await S()}catch(G){p(G instanceof Error?G.message:"Failed to delete the identity")}},T=!!((H=(K=e==null?void 0:e.cloud)==null?void 0:K.configToken)!=null&&H.configured),A=((L=($=e==null?void 0:e.cloud)==null?void 0:$.configToken)==null?void 0:L.status)==="invalid",M=new Set(((e==null?void 0:e.identities)??[]).map(D=>D.agentSession)),P=t.filter(D=>!M.has(D.agentSession)),I=[...(e==null?void 0:e.identities)??[],...P.map(D=>{var G;return{agentSession:D.agentSession,displayName:((G=r[D.agentSession])==null?void 0:G.memberName)??D.agentSession,appId:"",status:"pending_install",installUrl:D.url,hasToken:!1}})],B=new Map;for(const D of I){const G=((U=r[D.agentSession])==null?void 0:U.teamName)??"Other agents";B.has(G)||B.set(G,[]),B.get(G).push(D)}const V=I.filter(D=>D.status==="installed").length;return i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-4",children:[i.jsxs("div",{children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Agent Identities"}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["Give each agent its own Slack bot user, so it shows up in the member list and can be",i.jsx("code",{className:"mx-1 text-xs bg-background-dark px-1 py-0.5 rounded",children:"@"}),"mentioned natively. Provisioned through Crewly Cloud; each new agent needs one install click from you."]})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(ze,{variant:"ghost",size:"sm",onClick:l,loading:a,disabled:a,"aria-label":"Sync agents with Crewly Cloud",children:"Sync agents"}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>S(!0),icon:zn,"aria-label":"Refresh agent identities",children:"Refresh"})]})]}),f&&i.jsx("div",{className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>p(null),children:f})}),u?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Loading agent identities..."}):c?i.jsx(Bt,{variant:"warning",children:c}):e&&!((R=e.cloud)!=null&&R.enabled)?i.jsx(Bt,{variant:"warning",children:"Agent identities are not enabled on Crewly Cloud yet."}):e?i.jsxs("div",{className:"space-y-5",children:[T?i.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[i.jsxs("span",{children:[i.jsx(C1,{className:"inline w-4 h-4 -mt-0.5 mr-1"}),A?i.jsxs("span",{className:"text-red-400",children:["Configuration token is no longer valid",e.cloud.configToken.lastError?` (${e.cloud.configToken.lastError})`:"",". Paste a new one below."]}):i.jsx("span",{children:"Slack app configuration token stored on Crewly Cloud."})]}),i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:Vi,onClick:E,children:"Remove token"})]}):null,(!T||A)&&i.jsxs("form",{onSubmit:C,className:"space-y-3",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Generate an ",i.jsx("strong",{children:"App Configuration Token"})," at"," ",i.jsxs("a",{href:"https://api.slack.com/apps",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["api.slack.com/apps",i.jsx(Ps,{className:"w-3 h-3"})]})," ","(“Your App Configuration Tokens” → Generate) and paste both values. Crewly Cloud keeps it refreshed."]}),i.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[i.jsxs("div",{children:[i.jsx("label",{htmlFor:"slack-config-token",className:"block text-xs text-text-secondary-dark mb-1",children:"Access token (xoxe.xoxp-…)"}),i.jsx(on,{id:"slack-config-token",type:"password",value:x,onChange:D=>y(D.target.value),placeholder:"xoxe.xoxp-…",autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx("label",{htmlFor:"slack-config-refresh",className:"block text-xs text-text-secondary-dark mb-1",children:"Refresh token (xoxe-…)"}),i.jsx(on,{id:"slack-config-refresh",type:"password",value:m,onChange:D=>g(D.target.value),placeholder:"xoxe-…",autoComplete:"off",required:!0})]})]}),i.jsx(ze,{type:"submit",size:"sm",disabled:v||!m.trim(),loading:v,children:v?"Saving…":"Save configuration token"})]}),I.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No agent identities yet. They are created automatically for members of teams that have a Slack channel."}):i.jsxs("div",{className:"space-y-4","data-testid":"slack-identity-groups",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:[V," of ",I.length," agents installed. Installed agents join their team channel by themselves."]}),[...B.entries()].map(([D,G])=>{const F=G.filter(J=>J.status==="installed").length;return i.jsxs("details",{open:F<G.length,className:"group",children:[i.jsxs("summary",{className:"cursor-pointer list-none flex items-center justify-between gap-3 py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm font-medium",children:D}),i.jsx("span",{className:`text-xs ${F===G.length?"text-green-400":"text-text-secondary-dark"}`,children:F===G.length?"all installed":`${F} / ${G.length} installed`})]}),i.jsx("ul",{className:"divide-y divide-border-dark",children:G.map(J=>i.jsxs("li",{className:"py-2 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[i.jsxs("div",{className:"min-w-0",children:[i.jsxs("div",{className:"text-sm truncate",children:[J.status==="installed"&&i.jsx("span",{className:"text-green-400 mr-1",children:"✓"}),J.displayName]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark",children:[J.status==="installed"&&`Installed · bot ${J.botUserId??""}`,J.status==="pending_install"&&"Waiting for your install click",J.status==="error"&&`Install failed${J.error?`: ${J.error}`:""}`]})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[J.status!=="installed"&&J.installUrl&&i.jsxs("a",{href:J.installUrl,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-primary hover:underline inline-flex items-center gap-1",children:["Install ",J.displayName,i.jsx(Ps,{className:"w-3 h-3"})]}),J.appId&&i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:Vi,onClick:()=>N(J),"aria-label":`Delete identity for ${J.displayName}`,children:"Delete"})]})]},J.agentSession))})]},D)})]})]}):null]})};async function wv(t){const e=await t.json();if(!t.ok||!(e!=null&&e.success))throw new Error((e==null?void 0:e.error)||`Request failed (${t.status})`);return e.data}function Tme(){return`${window.location.origin}/settings?tab=slack`}const Mme=({status:t,onRefresh:e})=>{const[n,r]=k.useState(null),[s,a]=k.useState(null),[o,l]=k.useState(""),c=async(b,S)=>{r(b),a(null);try{await S()}catch(C){a(C instanceof Error?C.message:"Request failed")}finally{r(null)}},d=()=>c("connect",async()=>{const b=await fetch(`/api/slack/cloud/install-url?returnUrl=${encodeURIComponent(Tme())}`),{url:S}=await wv(b);window.location.assign(S)}),u=b=>c("workspace",async()=>{await wv(await fetch("/api/slack/cloud/workspace",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({slackTeamId:b})})),await e(!0)}),h=b=>c("primary",async()=>{await wv(await fetch("/api/slack/cloud/primary",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({primary:b})})),await e()}),f=()=>c("disconnect",async()=>{window.confirm("Remove this Slack workspace from your Crewly account? Every Crewly instance serving it loses Slack.")&&(await wv(await fetch("/api/slack/cloud/workspace",{method:"DELETE"})),await e())}),p=(t==null?void 0:t.workspace)??null,x=!!(t!=null&&t.cloudConnected),y=(t==null?void 0:t.sourceMode)==="env",m=t!=null&&t.availableWorkspaces&&t.availableWorkspaces.length>0?t.availableWorkspaces:null,g=t!=null&&t.workspaces&&t.workspaces.length>1?t.workspaces:null,v=(b,S)=>i.jsxs("div",{className:"flex items-center gap-2","data-testid":"slack-cloud-workspace-picker",children:[i.jsxs("select",{className:"bg-background-dark border border-border-dark rounded px-2 py-1.5 text-sm",value:o||S||"",onChange:C=>l(C.target.value),"aria-label":"Slack workspace for this instance",disabled:n!==null,children:[!S&&!o&&i.jsx("option",{value:"",children:"Choose a workspace…"}),b.map(C=>i.jsx("option",{value:C.slackTeamId,children:C.slackTeamName},C.slackTeamId))]}),i.jsx(ze,{size:"sm",onClick:()=>u(o||S||""),loading:n==="workspace",disabled:n!==null||!(o||S)||(o||S)===S,children:"Use this workspace"})]});return i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-4",children:[i.jsxs("div",{children:[i.jsxs("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:[i.jsx(Hf,{className:"inline w-4 h-4 -mt-0.5 mr-1"}),"Slack via Crewly Cloud"]}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Install the Crewly app in your Slack workspace once; every Crewly instance signed in to your Crewly account gets team channels and agent identities automatically — no tokens to copy."})]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>e(!0),icon:zn,"aria-label":"Refresh Cloud Slack status",children:"Refresh"})]}),s&&i.jsx("div",{className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>a(null),children:s})}),t?y?i.jsxs(Bt,{variant:"info",children:[i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"CREWLY_SLACK_SOURCE=env"})," is set: this instance only uses its self-hosted Slack app tokens (see Advanced below)."]}):x?!p&&m?i.jsxs("div",{className:"space-y-3",children:[i.jsxs("p",{className:"text-sm text-text-secondary-dark",children:["Your Crewly account has ",m.length," Slack workspaces. Pick the one this instance should serve, or connect another one."]}),v(m,null),i.jsx(ze,{variant:"ghost",size:"sm",onClick:d,loading:n==="connect",disabled:n!==null,icon:Ps,children:"Connect another workspace"})]}):p?i.jsxs("div",{className:"space-y-5",children:[i.jsxs("div",{className:"space-y-2","data-testid":"slack-cloud-workspace-card",children:[i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Workspace"}),i.jsx("span",{className:"text-sm font-medium",children:p.slackTeamName})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot user"}),i.jsx("span",{className:"text-sm font-medium font-mono",children:p.botUserId})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Events"}),i.jsx("span",{className:"text-sm font-medium",children:t.connected&&t.transport==="cloud"?"Delivered by Crewly Cloud (no Socket Mode)":t.connected?"Self-hosted Socket Mode (Cloud config ignored)":"Not connected on this instance yet"})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Agent identities"}),i.jsxs("span",{className:"text-sm font-medium",children:[p.agentIdentities," installed"]})]}),i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"This instance"}),i.jsxs("span",{className:"text-sm font-medium",children:[t.instanceId?i.jsx("code",{className:"text-xs",children:t.instanceId}):"not registered",t.lastHeartbeatAt&&i.jsxs("span",{className:"text-xs text-text-secondary-dark ml-2",children:["· registered ",new Date(t.lastHeartbeatAt).toLocaleString()]})]})]}),t.registryError&&i.jsxs("p",{className:"text-xs text-amber-400/80",children:["Registry: ",t.registryError]})]}),i.jsxs("div",{className:"space-y-2",children:[g&&i.jsxs(i.Fragment,{children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Your account has ",g.length," workspaces. This instance serves one of them:"]}),v(g,p.slackTeamId)]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:d,loading:n==="connect",disabled:n!==null,icon:Ps,children:"Connect another workspace"})]}),i.jsx("div",{className:"flex items-start gap-3",children:i.jsx(os,{id:"slack-cloud-primary",checked:t.primary,disabled:n!==null,onChange:b=>h(b.target.checked),label:"Make this the primary instance","aria-label":"Make this the primary instance"})}),i.jsx("p",{className:"text-xs text-text-secondary-dark -mt-3",children:"Direct messages to the Crewly bot and channels no team owns go to the primary instance. Team channels always reach the instance running that team."}),i.jsx("div",{className:"flex items-center gap-3",children:i.jsx(ze,{variant:"danger-ghost",size:"sm",icon:id,onClick:f,loading:n==="disconnect",disabled:n!==null,children:"Disconnect workspace"})})]}):i.jsxs("div",{className:"space-y-3",children:[i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No Slack workspace is connected to your Crewly account yet."}),i.jsx(ze,{onClick:d,loading:n==="connect",disabled:n!==null,icon:Ps,children:n==="connect"?"Opening Slack...":"Connect Slack"}),t.configError&&i.jsxs("p",{className:"text-xs text-amber-400/80",children:["Last Cloud check failed: ",t.configError]})]}):i.jsxs(Bt,{variant:"warning",children:["Log in to Crewly Cloud first (",i.jsx("a",{href:"/cloud",className:"underline",children:"Settings → Cloud"}),") — Slack is installed through your Crewly account."]}):i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Loading Cloud Slack status..."})]})};function pO(){try{return new URLSearchParams(window.location.search).get("slack")==="connected"}catch{return!1}}const Nme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(!1),[c,d]=k.useState(null),[u,h]=k.useState(()=>pO()),[f,p]=k.useState(!1),[x,y]=k.useState({botToken:"",appToken:"",signingSecret:"",defaultChannel:""}),m=k.useCallback(async()=>{var T,A,M,P,I,B,V;try{d(null);const H=await(await fetch("/api/slack/status")).json();H.success?e({connected:((T=H.data)==null?void 0:T.isConfigured)||!1,workspaceName:(A=H.data)==null?void 0:A.workspaceName,botName:(M=H.data)==null?void 0:M.botName,channels:(P=H.data)==null?void 0:P.channels,lastMessageAt:(I=H.data)==null?void 0:I.lastMessageAt,messagesSent:(B=H.data)==null?void 0:B.messagesSent,messagesReceived:(V=H.data)==null?void 0:V.messagesReceived}):e({connected:!1,error:H.error})}catch{e({connected:!1,error:"Failed to fetch status"})}finally{a(!1)}},[]),g=k.useCallback(async(T=!1)=>{try{const A=await fetch(`/api/slack/cloud/status${T?"?refresh=1":""}`),M=await A.json();A.ok&&(M!=null&&M.success)&&M.data&&typeof M.data.cloudConnected=="boolean"?r(M.data):r(null)}catch{r(null)}},[]),v=k.useCallback(async(T=!1)=>{await g(T),await m()},[g,m]);k.useEffect(()=>{g(pO()),m()},[m,g]),k.useEffect(()=>{((n==null?void 0:n.activeSource)==="env"||n&&!n.workspace&&(n.local.env||n.local.saved))&&p(!0)},[n]);const b=T=>{const{name:A,value:M}=T.target;y(P=>({...P,[A]:M}))},S=async T=>{T.preventDefault(),l(!0),d(null);try{const A=await fetch("/api/slack/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({botToken:x.botToken,appToken:x.appToken,signingSecret:x.signingSecret,defaultChannelId:x.defaultChannel||void 0})}),M=await A.json();if(!A.ok||!M.success)throw new Error(M.error||"Connection failed");y({botToken:"",appToken:"",signingSecret:"",defaultChannel:""}),await m()}catch(A){d(A instanceof Error?A.message:"Failed to connect to Slack")}finally{l(!1)}},C=async()=>{if(window.confirm("Are you sure you want to disconnect from Slack?"))try{d(null);const T=await fetch("/api/slack/disconnect",{method:"POST"}),A=await T.json();if(!T.ok||!A.success)throw new Error(A.error||"Disconnect failed");await m()}catch(T){d(T instanceof Error?T.message:"Failed to disconnect")}};if(s)return i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Slack status..."})});const E=(n==null?void 0:n.activeSource)==="cloud",N=i.jsxs("details",{open:f,onToggle:T=>p(T.currentTarget.open),className:"group","data-testid":"slack-advanced",children:[i.jsx("summary",{className:"cursor-pointer text-sm font-medium text-text-secondary-dark hover:text-text-primary-dark select-none",children:"Advanced: self-hosted app"}),i.jsxs("div",{className:"mt-4 space-y-6",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Run your own Slack app with Socket Mode instead of Crewly Cloud. Set"," ",i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"CREWLY_SLACK_SOURCE=env"})," to keep using it even when a Cloud workspace exists."]}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Setup Instructions"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Create a Slack App at"," ",i.jsxs("a",{href:"https://api.slack.com/apps",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["api.slack.com/apps",i.jsx(Ps,{className:"w-3 h-3"})]})]}),i.jsx("li",{children:"Enable Socket Mode in your app settings and create an App Token (starts with xapp-)"}),i.jsxs("li",{children:["Add Bot Token Scopes under OAuth & Permissions:",i.jsxs("ul",{className:"list-disc list-inside ml-4 mt-1.5 space-y-1",children:[i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"chat:write"})," - Send messages"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"channels:read"})," - View channels"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"app_mentions:read"})," - Respond to mentions"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"im:read"}),", ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"im:write"})," - Direct messages"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"files:read"})," - Receive images from Slack"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"files:write"})," - Upload images to Slack"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"reactions:write"})," - Typing/completion indicators (optional)"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"channels:manage"}),", ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"channels:join"})," - Create and join team channels"]}),i.jsxs("li",{children:[i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"chat:write.customize"})," - Let each agent post under its own name and icon"]})]}),i.jsxs("p",{className:"text-xs text-amber-400/80 mt-1.5 ml-4",children:["Note: Adding ",i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"files:read"})," and ",i.jsx("code",{className:"text-xs bg-background-dark px-1 py-0.5 rounded",children:"files:write"})," scopes requires reinstalling the app to your workspace."]})]}),i.jsx("li",{children:"Install the app to your workspace"}),i.jsx("li",{children:"Copy the Bot Token (xoxb-...), App Token (xapp-...), and Signing Secret"})]})]}),i.jsx(Ot,{padding:"lg",children:i.jsxs("form",{onSubmit:S,className:"space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Self-hosted app credentials"}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"botToken",required:!0,children:"Bot Token (xoxb-...)"}),i.jsx(on,{id:"botToken",name:"botToken",type:"password",value:x.botToken,onChange:b,placeholder:"xoxb-your-bot-token",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"appToken",required:!0,children:"App Token (xapp-...)"}),i.jsx(on,{id:"appToken",name:"appToken",type:"password",value:x.appToken,onChange:b,placeholder:"xapp-your-app-token",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"signingSecret",required:!0,children:"Signing Secret"}),i.jsx(on,{id:"signingSecret",name:"signingSecret",type:"password",value:x.signingSecret,onChange:b,placeholder:"Your signing secret",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"defaultChannel",children:"Default Channel (optional)"}),i.jsx(on,{id:"defaultChannel",name:"defaultChannel",type:"text",value:x.defaultChannel,onChange:b,placeholder:"C1234567890 or #crewly"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Channel ID or name where notifications will be sent by default"})]}),i.jsx("div",{className:"pt-2",children:i.jsx(ze,{type:"submit",disabled:o||!x.botToken||!x.appToken||!x.signingSecret,loading:o,fullWidth:!0,children:o?"Connecting...":"Connect to Slack"})})]})})]})]});return i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-lg font-semibold",children:"Slack Integration"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect Slack to talk to the orchestrator and your teams from your phone or desktop Slack app."})]}),c&&i.jsx(Bt,{variant:"error",onClose:()=>d(null),children:c}),u&&i.jsx(Bt,{variant:"success",onClose:()=>h(!1),children:"Slack workspace connected to your Crewly account. This instance picks it up automatically."}),t.connected?i.jsxs(Bt,{variant:"success",children:["Connected to Slack",E?" via Crewly Cloud":""]}):i.jsx(Bt,{variant:"warning",children:"Not connected to Slack"}),i.jsx(Mme,{status:n,onRefresh:v}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[t.workspaceName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Workspace"}),i.jsx("span",{className:"text-sm font-medium",children:t.workspaceName})]}),t.botName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot Name"}),i.jsx("span",{className:"text-sm font-medium",children:t.botName})]}),t.channels&&t.channels.length>0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Channels"}),i.jsx("span",{className:"text-sm font-medium",children:t.channels.join(", ")})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]}),t.lastMessageAt&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Last Activity"}),i.jsx("span",{className:"text-sm font-medium",children:new Date(t.lastMessageAt).toLocaleString()})]})]})]}),i.jsx(Cme,{}),i.jsx(Ame,{pendingInstalls:(n==null?void 0:n.pendingInstalls)??[]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:()=>v(),icon:zn,children:"Refresh Status"}),!E&&i.jsx(ze,{variant:"danger",onClick:C,icon:id,children:"Disconnect"})]}),N]}):i.jsx("div",{className:"space-y-6",children:N})]})},jme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),c=k.useCallback(async()=>{var h,f,p,x,y,m;try{l(null);const v=await(await fetch("/api/whatsapp/status")).json();v.success?e({connected:((h=v.data)==null?void 0:h.isConfigured)||((f=v.data)==null?void 0:f.connected)||!1,phoneNumber:(p=v.data)==null?void 0:p.phoneNumber,qrCode:(x=v.data)==null?void 0:x.qrCode,messagesSent:(y=v.data)==null?void 0:y.messagesSent,messagesReceived:(m=v.data)==null?void 0:m.messagesReceived}):e({connected:!1,error:v.error})}catch{e({connected:!1,error:"Failed to fetch WhatsApp status"})}finally{r(!1)}},[]);k.useEffect(()=>{c()},[c]);const d=async()=>{var h;a(!0),l(null);try{const f=await fetch("/api/whatsapp/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),p=await f.json();if(!f.ok||!p.success)throw new Error(p.error||"Connection failed");(h=p.data)!=null&&h.qrCode&&e(x=>({...x,qrCode:p.data.qrCode})),await c()}catch(f){l(f instanceof Error?f.message:"Failed to connect WhatsApp")}finally{a(!1)}},u=async()=>{if(window.confirm("Are you sure you want to disconnect from WhatsApp?"))try{l(null);const h=await fetch("/api/whatsapp/disconnect",{method:"POST"}),f=await h.json();if(!h.ok||!f.success)throw new Error(f.error||"Disconnect failed");await c()}catch(h){l(h instanceof Error?h.message:"Failed to disconnect")}};return n?i.jsx("div",{className:"flex justify-center py-8",children:i.jsx(sr,{size:"md",text:"Loading WhatsApp status..."})}):i.jsxs("div",{className:"space-y-5",children:[o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),t.connected?i.jsxs("div",{className:"space-y-5",children:[i.jsx(Bt,{variant:"success",children:"Connected to WhatsApp"}),i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-5",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:"Connection Details"}),i.jsxs("div",{className:"space-y-2",children:[t.phoneNumber&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Phone Number"}),i.jsx("span",{className:"text-sm font-medium",children:t.phoneNumber})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:c,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:u,icon:id,children:"Disconnect"})]})]}):i.jsx("div",{className:"space-y-5",children:t.qrCode?i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-6 flex flex-col items-center gap-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Scan QR Code"}),i.jsx("p",{className:"text-xs text-text-secondary-dark text-center max-w-sm",children:"Open WhatsApp on your phone, go to Settings > Linked Devices > Link a Device, then scan this QR code."}),i.jsx("div",{className:"bg-white p-4 rounded-lg",children:i.jsx("img",{src:`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(t.qrCode)}`,alt:"WhatsApp QR Code",className:"w-48 h-48","data-testid":"whatsapp-qr-code"})}),i.jsx(ze,{variant:"secondary",onClick:c,icon:zn,children:"Refresh QR Code"})]}):i.jsxs("div",{className:"space-y-4",children:[i.jsx(Bt,{variant:"warning",children:"Not connected to WhatsApp"}),i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-5",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:"How to Connect"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsx("li",{children:'Click "Connect WhatsApp" below to generate a QR code'}),i.jsx("li",{children:"Open WhatsApp on your phone"}),i.jsxs("li",{children:["Go to ",i.jsx("strong",{children:"Settings"})," > ",i.jsx("strong",{children:"Linked Devices"})," > ",i.jsx("strong",{children:"Link a Device"})]}),i.jsx("li",{children:"Scan the QR code displayed here"})]})]}),i.jsx(ze,{onClick:d,disabled:s,loading:s,icon:JF,fullWidth:!0,children:s?"Initializing...":"Connect WhatsApp"})]})})]})},Rme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState("pubsub"),[u,h]=k.useState("service_account"),[f,p]=k.useState(""),[x,y]=k.useState(""),[m,g]=k.useState(""),[v,b]=k.useState(""),[S,C]=k.useState(!1),[E,N]=k.useState(null),[T,A]=k.useState(!1),[M,P]=k.useState(null),[I,B]=k.useState(""),[V,K]=k.useState(""),H=k.useRef(null),$=k.useCallback(async()=>{var q;try{l(null);const z=await(await fetch("/api/messengers/status")).json();if(z.success&&Array.isArray(z.data)){const Q=z.data.find(re=>re.platform==="google-chat");if(Q){let re=Q.details||{};if(Q.connected&&((q=Q.details)==null?void 0:q.mode)==="pubsub")try{const de=await(await fetch("/api/messengers/google-chat/status")).json();de.success&&(re={...re,...de.data})}catch{}e({connected:Q.connected,mode:re.mode,authMode:re.authMode,serviceAccountEmail:re.serviceAccountEmail,pullActive:re.pullActive,pullPaused:re.pullPaused,subscriptionName:re.subscriptionName,projectId:re.projectId,consecutiveFailures:re.consecutiveFailures,lastPullAt:re.lastPullAt})}}}catch{e({connected:!1,error:"Failed to fetch status"})}finally{r(!1)}},[]);k.useEffect(()=>{$()},[$]),k.useEffect(()=>(t.connected&&t.mode==="pubsub"&&(H.current=setInterval(()=>{$()},1e4)),()=>{H.current&&(clearInterval(H.current),H.current=null)}),[t.connected,t.mode,$]);const L=async q=>{q.preventDefault(),a(!0),l(null);try{let te;c==="webhook"?te={webhookUrl:f}:u==="adc"?(te={authMode:"adc"},c==="pubsub"&&(te.projectId=m,te.subscriptionName=v),V.trim()&&(te.serviceAccountEmail=V.trim())):c==="service-account"?te={serviceAccountKey:x}:te={serviceAccountKey:x,projectId:m,subscriptionName:v};const z=await fetch("/api/messengers/google-chat/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(te)}),Q=await z.json();if(!z.ok||!Q.success)throw new Error(Q.error||"Connection failed");p(""),y(""),g(""),b(""),K(""),await $()}catch(te){l(te instanceof Error?te.message:"Failed to connect")}finally{a(!1)}},U=async()=>{if(window.confirm("Are you sure you want to disconnect from Google Chat?"))try{l(null);const q=await fetch("/api/messengers/google-chat/disconnect",{method:"POST"}),te=await q.json();if(!q.ok||!te.success)throw new Error(te.error||"Disconnect failed");await $()}catch(q){l(q instanceof Error?q.message:"Failed to disconnect")}},R=async()=>{C(!0),N(null);try{const q=await fetch("/api/messengers/google-chat/pull",{method:"POST"}),te=await q.json();if(!q.ok||!te.success)throw new Error(te.error||"Pull failed");const z=te.messagesReceived||0;N(z>0?`Pulled ${z} message${z!==1?"s":""}`:"No new messages"),await $()}catch(q){N(q instanceof Error?q.message:"Pull failed")}finally{C(!1)}},D=async()=>{if(I.trim()){A(!0),P(null);try{const q=await fetch("/api/messengers/google-chat/test-send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({space:I.trim(),text:"Test message from Crewly"})}),te=await q.json();if(!q.ok||!te.success)throw new Error(te.error||"Test send failed");P("Message sent successfully")}catch(q){P(q instanceof Error?q.message:"Test send failed")}finally{A(!1)}}},G=q=>{switch(q){case"webhook":return"Webhook";case"service-account":return"Service Account";case"pubsub":return"Pub/Sub (Bidirectional)";default:return"Unknown"}},F=q=>q==="adc"?"Application Default Credentials":"Service Account Key",J=()=>c==="webhook"?!!f:u==="adc"?c==="pubsub"?!!(m&&v):!0:c==="service-account"?!!x:!!(x&&m&&v);return n?i.jsx("div",{className:"flex justify-center py-8",children:i.jsx(sr,{size:"md",text:"Loading Google Chat status..."})}):i.jsxs("div",{className:"space-y-5",children:[o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:i.jsx("span",{className:"text-sm",children:o})}),t.connected?i.jsxs("div",{className:"space-y-5",children:[i.jsx(Bt,{variant:"success",children:i.jsx("span",{className:"font-medium text-sm",children:"Connected to Google Chat"})}),i.jsxs(Ot,{padding:"lg",className:"bg-background-dark",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:"Connection Details"}),i.jsxs("div",{className:"space-y-2",children:[i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Mode"}),i.jsx("span",{className:"text-sm font-medium",children:G(t.mode)})]}),(t.mode==="pubsub"||t.mode==="service-account")&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Auth"}),i.jsx("span",{className:"text-sm font-medium",children:F(t.authMode)})]}),t.serviceAccountEmail&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Impersonating"}),i.jsx("span",{className:"text-sm font-mono truncate max-w-[280px]","data-testid":"sa-email-display",children:t.serviceAccountEmail})]}),t.mode==="pubsub"&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Project ID"}),i.jsx("span",{className:"text-sm font-mono",children:t.projectId})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Subscription"}),i.jsx("span",{className:"text-sm font-mono text-text-secondary-dark/80 truncate max-w-[240px]",children:t.subscriptionName})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Pull Loop"}),i.jsxs("span",{className:"flex items-center gap-2",children:[i.jsx("span",{className:`w-2 h-2 rounded-full ${t.pullPaused?"bg-amber-400":t.pullActive?"bg-emerald-400 animate-pulse":"bg-gray-500"}`}),i.jsx("span",{className:`text-sm font-medium ${t.pullPaused?"text-amber-400":t.pullActive?"text-emerald-400":"text-text-secondary-dark"}`,children:t.pullPaused?"Paused (errors)":t.pullActive?"Running":"Stopped"})]})]}),i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Last Pull"}),i.jsx("span",{className:"text-sm font-mono","data-testid":"last-pull-at",children:t.lastPullAt?new Date(t.lastPullAt).toLocaleTimeString():"Never"})]}),(t.consecutiveFailures??0)>0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-t border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Consecutive Failures"}),i.jsx("span",{className:"text-sm font-medium text-amber-400","data-testid":"consecutive-failures",children:t.consecutiveFailures})]})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[t.mode==="pubsub"&&i.jsx(ze,{variant:"primary",onClick:R,disabled:S,loading:S,icon:gp,"data-testid":"pull-now-btn",children:S?"Pulling...":"Pull Now"}),i.jsx(ze,{variant:"secondary",onClick:$,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:U,icon:id,children:"Disconnect"})]}),E&&i.jsx("div",{className:`text-sm px-3 py-2 rounded-lg ${E.startsWith("Pulled")?"bg-emerald-500/10 text-emerald-400":E==="No new messages"?"bg-blue-500/10 text-blue-400":"bg-rose-500/10 text-rose-400"}`,"data-testid":"pull-result",children:E}),(t.mode==="pubsub"||t.mode==="service-account")&&i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-4 space-y-3",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide",children:"Test Send"}),i.jsxs("div",{className:"flex items-end gap-2",children:[i.jsxs("div",{className:"flex-1",children:[i.jsx(Tt,{htmlFor:"test-send-space",children:"Space Name"}),i.jsx(on,{id:"test-send-space",name:"testSendSpace",type:"text",value:I,onChange:q=>B(q.target.value),placeholder:"spaces/AAAA...",autoComplete:"off","data-testid":"test-send-space"})]}),i.jsx(ze,{variant:"primary",onClick:D,disabled:T||!I.trim(),loading:T,icon:Q2,"data-testid":"test-send-btn",children:T?"Sending...":"Test Send"})]}),M&&i.jsx("div",{className:`text-sm px-3 py-2 rounded-lg ${M==="Message sent successfully"?"bg-emerald-500/10 text-emerald-400":"bg-rose-500/10 text-rose-400"}`,"data-testid":"test-send-result",children:M})]})]}):i.jsxs("div",{className:"space-y-5",children:[i.jsx(Bt,{variant:"warning",children:i.jsx("span",{className:"font-medium text-sm",children:"Not connected to Google Chat"})}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx("button",{className:`px-4 py-2 text-sm rounded-lg border transition-colors ${c==="pubsub"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>d("pubsub"),"data-testid":"mode-pubsub",children:"Pub/Sub (Recommended)"}),i.jsx("button",{className:`px-4 py-2 text-sm rounded-lg border transition-colors ${c==="webhook"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>d("webhook"),"data-testid":"mode-webhook",children:"Webhook"}),i.jsx("button",{className:`px-4 py-2 text-sm rounded-lg border transition-colors ${c==="service-account"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>d("service-account"),"data-testid":"mode-service-account",children:"Service Account"})]}),i.jsxs("div",{className:"bg-background-dark border border-border-dark rounded-lg p-5",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wide mb-3",children:c==="pubsub"?"Pub/Sub Setup (Bidirectional)":c==="webhook"?"Webhook Setup (Send-only)":"Service Account Setup (Send-only)"}),c==="pubsub"?i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Go to ",i.jsx("strong",{children:"Google Cloud Console"})," > ",i.jsx("strong",{children:"APIs & Services"})]}),i.jsxs("li",{children:["Enable the ",i.jsx("strong",{children:"Google Chat API"})," and ",i.jsx("strong",{children:"Cloud Pub/Sub API"})]}),i.jsxs("li",{children:["Create a ",i.jsx("strong",{children:"Service Account"})," and download the JSON key"]}),i.jsxs("li",{children:["In the Chat API settings, create a ",i.jsx("strong",{children:"Chat App"})," and select ",i.jsx("strong",{children:"Cloud Pub/Sub"})," as the connection type"]}),i.jsxs("li",{children:["Enter a ",i.jsx("strong",{children:"Pub/Sub topic name"})," (e.g., ",i.jsx("code",{className:"bg-surface-dark px-1 rounded",children:"projects/my-project/topics/google-chat-events"}),")"]}),i.jsxs("li",{children:["Create a ",i.jsx("strong",{children:"Pub/Sub subscription"})," for that topic (pull mode)"]}),i.jsxs("li",{children:["Grant the service account ",i.jsx("strong",{children:"Pub/Sub Subscriber"})," role on the subscription"]}),i.jsx("li",{children:"Fill in the details below"})]}):c==="webhook"?i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsx("li",{children:"Open your Google Chat space"}),i.jsxs("li",{children:["Click the space name > ",i.jsx("strong",{children:"Apps & integrations"})," > ",i.jsx("strong",{children:"Manage webhooks"})]}),i.jsx("li",{children:"Create a new webhook and copy the URL"}),i.jsx("li",{children:"Paste the webhook URL below"})]}):i.jsxs("ol",{className:"list-decimal list-inside space-y-2 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Go to the ",i.jsx("strong",{children:"Google Cloud Console"})," > ",i.jsx("strong",{children:"APIs & Services"})]}),i.jsxs("li",{children:["Enable the ",i.jsx("strong",{children:"Google Chat API"})]}),i.jsxs("li",{children:["Create a ",i.jsx("strong",{children:"Service Account"})," and download the JSON key"]}),i.jsx("li",{children:"Grant the service account access to your Chat space"}),i.jsx("li",{children:"Paste the JSON key contents below"})]})]}),i.jsxs("form",{onSubmit:L,className:"space-y-4",children:[c==="webhook"?i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-webhook",required:!0,children:"Webhook URL"}),i.jsx(on,{id:"gchat-webhook",name:"webhookUrl",type:"url",value:f,onChange:q=>p(q.target.value),placeholder:"https://chat.googleapis.com/v1/spaces/...",required:!0,autoComplete:"off"})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{children:[i.jsx(Tt,{children:"Authentication Method"}),i.jsxs("div",{className:"flex gap-2 mt-1",children:[i.jsx("button",{type:"button",className:`px-3 py-1.5 text-xs rounded-lg border transition-colors ${u==="service_account"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>h("service_account"),"data-testid":"auth-service-account",children:"Service Account Key"}),i.jsx("button",{type:"button",className:`px-3 py-1.5 text-xs rounded-lg border transition-colors ${u==="adc"?"bg-primary/10 border-primary text-primary":"bg-surface-dark border-border-dark text-text-secondary-dark hover:text-text-primary-dark"}`,onClick:()=>h("adc"),"data-testid":"auth-adc",children:"Application Default Credentials"})]})]}),c==="pubsub"&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-project-id",required:!0,children:"GCP Project ID"}),i.jsx(on,{id:"gchat-project-id",name:"projectId",type:"text",value:m,onChange:q=>g(q.target.value),placeholder:"my-gcp-project-id",required:!0,autoComplete:"off"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-subscription",required:!0,children:"Pub/Sub Subscription Name"}),i.jsx(on,{id:"gchat-subscription",name:"subscriptionName",type:"text",value:v,onChange:q=>b(q.target.value),placeholder:"google-chat-events-sub",required:!0,autoComplete:"off"}),i.jsx("p",{className:"mt-1 text-xs text-text-secondary-dark",children:"Just the subscription name, not the full resource path"})]})]}),u==="adc"?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"bg-blue-500/10 border border-blue-500/30 rounded-lg p-4",children:[i.jsx("p",{className:"text-sm text-blue-300 mb-2",children:"Using Application Default Credentials from your local gcloud CLI."}),i.jsx("p",{className:"text-xs text-text-secondary-dark mb-2",children:"Run this command if you haven't already:"}),i.jsx("code",{className:"block bg-background-dark px-3 py-2 rounded text-xs text-text-primary-dark font-mono break-all",children:"gcloud auth application-default login --scopes=https://www.googleapis.com/auth/chat.bot,https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/cloud-platform"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-sa-email",children:"Service Account Email (for impersonation)"}),i.jsx(on,{id:"gchat-sa-email",name:"serviceAccountEmail",type:"email",value:V,onChange:q=>K(q.target.value),placeholder:"chatbot@project.iam.gserviceaccount.com",autoComplete:"off","data-testid":"sa-email-input"}),i.jsx("p",{className:"mt-1 text-xs text-text-secondary-dark",children:"Required for sending messages. Your user needs the Service Account Token Creator IAM role."})]})]}):i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"gchat-sa-key",required:!0,children:"Service Account Key (JSON)"}),i.jsx(Ko,{id:"gchat-sa-key",name:"serviceAccountKey",value:x,onChange:q=>y(q.target.value),placeholder:'{"type": "service_account", "project_id": "...", ...}',required:!0,rows:6,className:"font-mono"})]})]}),i.jsx(ze,{type:"submit",disabled:s||!J(),loading:s,fullWidth:!0,children:s?"Connecting...":"Connect Google Chat"})]})]})]})},Ime="/api/messengers/status",Pme="/api/messengers/telegram/connect",Lme="/api/messengers/telegram/disconnect",Dme=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState({botToken:"",allowedChats:""}),u=k.useCallback(async()=>{var x,y,m,g;try{l(null);const b=await(await fetch(Ime)).json();if(b.success&&Array.isArray(b.data)){const S=b.data.find(C=>C.platform==="telegram");e(S?{connected:S.connected,botName:(x=S.details)==null?void 0:x.botName,botId:(y=S.details)==null?void 0:y.botId,messagesSent:(m=S.details)==null?void 0:m.messagesSent,messagesReceived:(g=S.details)==null?void 0:g.messagesReceived}:{connected:!1})}else e({connected:!1,error:b.error||"Failed to fetch status"})}catch{e({connected:!1,error:"Failed to fetch status"})}finally{r(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=x=>{const{name:y,value:m}=x.target;d(g=>({...g,[y]:m}))},f=async x=>{x.preventDefault(),a(!0),l(null);try{const y={token:c.botToken};c.allowedChats.trim()&&(y.allowedChats=c.allowedChats.split(",").map(v=>v.trim()).filter(Boolean));const m=await fetch(Pme,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),g=await m.json();if(!m.ok||!g.success)throw new Error(g.error||"Connection failed");d({botToken:"",allowedChats:""}),await u()}catch(y){l(y instanceof Error?y.message:"Failed to connect to Telegram")}finally{a(!1)}},p=async()=>{if(window.confirm("Are you sure you want to disconnect from Telegram?"))try{l(null);const x=await fetch(Lme,{method:"POST"}),y=await x.json();if(!x.ok||!y.success)throw new Error(y.error||"Disconnect failed");await u()}catch(x){l(x instanceof Error?x.message:"Failed to disconnect")}};return n?i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Telegram status..."})}):i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Telegram Integration"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect a Telegram bot to communicate with the orchestrator via Telegram."})]}),o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"success",children:"Connected to Telegram"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[t.botName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot Name"}),i.jsx("span",{className:"text-sm font-medium",children:t.botName})]}),t.botId&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot ID"}),i.jsx("span",{className:"text-sm font-medium",children:t.botId})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:u,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:p,icon:id,children:"Disconnect"})]})]}):i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"warning",children:"Not connected to Telegram"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Setup Instructions"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Open Telegram and search for"," ",i.jsxs("a",{href:"https://t.me/BotFather",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["@BotFather",i.jsx(Ps,{className:"w-3 h-3"})]})]}),i.jsxs("li",{children:["Send ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"/newbot"})," and follow the prompts to create a bot"]}),i.jsx("li",{children:"Copy the HTTP API token provided by BotFather"}),i.jsx("li",{children:"Paste the token below and click Connect"})]})]}),i.jsx(Ot,{padding:"lg",children:i.jsxs("form",{onSubmit:f,className:"space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connect to Telegram"}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"botToken",required:!0,children:"Bot Token"}),i.jsx(on,{id:"botToken",name:"botToken",type:"password",value:c.botToken,onChange:h,placeholder:"123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",required:!0,autoComplete:"off"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"The HTTP API token from @BotFather"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"allowedChats",children:"Allowed Chats (optional)"}),i.jsx(on,{id:"allowedChats",name:"allowedChats",type:"text",value:c.allowedChats,onChange:h,placeholder:"-1001234567890, -1009876543210"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Comma-separated chat IDs to restrict the bot to specific groups"})]}),i.jsx("div",{className:"pt-2",children:i.jsx(ze,{type:"submit",disabled:s||!c.botToken,loading:s,fullWidth:!0,children:s?"Connecting...":"Connect to Telegram"})})]})})]})]})},Ome="/api/messengers/status",Bme="/api/messengers/discord/connect",Fme="/api/messengers/discord/disconnect",Ume=()=>{const[t,e]=k.useState({connected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState({token:"",allowedChannels:""}),u=k.useCallback(async()=>{var x,y,m,g;try{l(null);const b=await(await fetch(Ome)).json();if(b.success&&Array.isArray(b.data)){const S=b.data.find(C=>C.platform==="discord");e(S?{connected:S.connected,botName:(x=S.details)==null?void 0:x.botName,botId:(y=S.details)==null?void 0:y.botId,messagesSent:(m=S.details)==null?void 0:m.messagesSent,messagesReceived:(g=S.details)==null?void 0:g.messagesReceived}:{connected:!1})}else e({connected:!1,error:b.error||"Failed to fetch status"})}catch{e({connected:!1,error:"Failed to fetch status"})}finally{r(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=x=>{const{name:y,value:m}=x.target;d(g=>({...g,[y]:m}))},f=async x=>{x.preventDefault(),a(!0),l(null);try{const y={token:c.token};c.allowedChannels.trim()&&(y.allowedChannels=c.allowedChannels.split(",").map(v=>v.trim()).filter(Boolean));const m=await fetch(Bme,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),g=await m.json();if(!m.ok||!g.success)throw new Error(g.error||"Connection failed");d({token:"",allowedChannels:""}),await u()}catch(y){l(y instanceof Error?y.message:"Failed to connect to Discord")}finally{a(!1)}},p=async()=>{if(window.confirm("Are you sure you want to disconnect from Discord?"))try{l(null);const x=await fetch(Fme,{method:"POST"}),y=await x.json();if(!x.ok||!y.success)throw new Error(y.error||"Disconnect failed");await u()}catch(x){l(x instanceof Error?x.message:"Failed to disconnect")}};return n?i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Discord status..."})}):i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Discord Integration"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect a Discord bot to communicate with the orchestrator via your Discord server."})]}),o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"success",children:"Connected to Discord"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[t.botName&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot Name"}),i.jsx("span",{className:"text-sm font-medium",children:t.botName})]}),t.botId&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Bot ID"}),i.jsx("span",{className:"text-sm font-medium",children:t.botId})]}),t.messagesSent!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Sent"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesSent})]}),t.messagesReceived!==void 0&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Messages Received"}),i.jsx("span",{className:"text-sm font-medium",children:t.messagesReceived})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:u,icon:zn,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:p,icon:id,children:"Disconnect"})]})]}):i.jsxs("div",{className:"space-y-6",children:[i.jsx(Bt,{variant:"warning",children:"Not connected to Discord"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Setup Instructions"}),i.jsxs("ol",{className:"list-decimal list-inside space-y-3 text-sm text-text-secondary-dark",children:[i.jsxs("li",{children:["Go to the"," ",i.jsxs("a",{href:"https://discord.com/developers/applications",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline inline-flex items-center gap-1",children:["Discord Developer Portal",i.jsx(Ps,{className:"w-3 h-3"})]})]}),i.jsx("li",{children:"Create a New Application and navigate to the Bot section"}),i.jsx("li",{children:'Click "Reset Token" to generate a bot token and copy it'}),i.jsxs("li",{children:["Under OAuth2 → URL Generator, select the"," ",i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"bot"})," scope and grant permissions:",i.jsxs("ul",{className:"list-disc list-inside ml-4 mt-1.5 space-y-1",children:[i.jsx("li",{children:i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"Send Messages"})}),i.jsx("li",{children:i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"Read Message History"})}),i.jsx("li",{children:i.jsx("code",{className:"text-xs bg-background-dark px-1.5 py-0.5 rounded",children:"Add Reactions"})})]})]}),i.jsx("li",{children:"Use the generated URL to invite the bot to your server"}),i.jsx("li",{children:"Paste the bot token below and click Connect"})]})]}),i.jsx(Ot,{padding:"lg",children:i.jsxs("form",{onSubmit:f,className:"space-y-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connect to Discord"}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"token",required:!0,children:"Bot Token"}),i.jsx(on,{id:"token",name:"token",type:"password",value:c.token,onChange:h,placeholder:"MTEyMzQ1Njc4OTAxMjM0NTY3OC...",required:!0,autoComplete:"off"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"The bot token from Discord Developer Portal"})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"allowedChannels",children:"Allowed Channels (optional)"}),i.jsx(on,{id:"allowedChannels",name:"allowedChannels",type:"text",value:c.allowedChannels,onChange:h,placeholder:"1234567890123456789, 9876543210987654321"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Comma-separated channel IDs to restrict the bot to specific channels"})]}),i.jsx("div",{className:"pt-2",children:i.jsx(ze,{type:"submit",disabled:s||!c.token,loading:s,fullWidth:!0,children:s?"Connecting...":"Connect to Discord"})})]})})]})]})},zme="/api/google/status",Hme="/api/google/connect-url",Gme="/api/google/disconnect",Wme="/settings?tab=integrations",Vme="google",$me={"https://www.googleapis.com/auth/gmail.readonly":"Read mail","https://www.googleapis.com/auth/gmail.send":"Send mail","https://www.googleapis.com/auth/calendar.readonly":"Read calendar","https://www.googleapis.com/auth/calendar.events":"Manage events","https://www.googleapis.com/auth/drive.readonly":"Read Drive","https://www.googleapis.com/auth/drive.file":"Drive files","https://www.googleapis.com/auth/documents.readonly":"Read Docs"};function Kme(t){return(t??[]).map(e=>$me[e]).filter(e=>!!e)}const qme=()=>{const[t,e]=k.useState({connected:!1,cloudConnected:!1}),[n,r]=k.useState(!0),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState(null),u=k.useCallback(async()=>{try{l(null);const x=await fetch(zme),y=await x.json();x.ok&&y.success?e(y.data):(e({connected:!1,cloudConnected:!1}),l(y.hint||y.message||y.error||"Failed to fetch Google Workspace status"))}catch{e({connected:!1,cloudConnected:!1}),l("Failed to fetch Google Workspace status")}finally{r(!1)}},[]);k.useEffect(()=>{u();try{const x=new URLSearchParams(window.location.search).get(Vme);x==="connected"?d("Google Workspace connected."):x==="error"&&l("Google Workspace connection failed. Please try again.")}catch{}},[u]);const h=async()=>{var x;a(!0),l(null);try{const y=`${window.location.origin}${Wme}`,m=await fetch(`${Hme}?returnUrl=${encodeURIComponent(y)}`),g=await m.json();if(!m.ok||!g.success||!((x=g.data)!=null&&x.url))throw new Error(g.hint||g.message||g.error||"Could not start Google sign-in");window.location.href=g.data.url}catch(y){l(y instanceof Error?y.message:"Could not start Google sign-in"),a(!1)}},f=async()=>{if(window.confirm("Disconnect Google Workspace? Agents will no longer be able to read mail or the calendar.")){a(!0),l(null);try{const x=await fetch(Gme,{method:"DELETE"}),y=await x.json();if(!x.ok||!y.success)throw new Error(y.hint||y.message||y.error||"Disconnect failed");d(null),await u()}catch(x){l(x instanceof Error?x.message:"Failed to disconnect")}finally{a(!1)}}};if(n)return i.jsx("div",{className:"flex justify-center py-16",children:i.jsx(sr,{text:"Loading Google Workspace status..."})});const p=Kme(t.scopes);return i.jsxs("div",{className:"space-y-6 max-w-3xl","data-testid":"google-workspace-tab",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Google Workspace"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Let agents read your Gmail, send mail on your behalf and manage your calendar. Crewly Cloud keeps the Google sign-in; mail content goes straight from Google to this instance."})]}),o&&i.jsx(Bt,{variant:"error",onClose:()=>l(null),children:o}),c&&i.jsx(Bt,{variant:"success",onClose:()=>d(null),children:c}),t.connected?i.jsxs("div",{className:"space-y-6",children:[i.jsxs(Bt,{variant:"success",children:["Connected as ",t.email??"your Google account"]}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-4",children:"Connection Details"}),i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Account"}),i.jsx("span",{className:"text-sm font-medium","data-testid":"google-workspace-email",children:t.email??"—"})]}),p.length>0&&i.jsxs("div",{className:"flex items-center justify-between py-2 border-b border-border-dark",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Access"}),i.jsx("span",{className:"text-sm font-medium",children:p.join(", ")})]}),t.grantedAt&&i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark",children:"Connected"}),i.jsx("span",{className:"text-sm font-medium",children:new Date(t.grantedAt).toLocaleString()})]})]})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx(ze,{variant:"secondary",onClick:u,icon:zn,disabled:s,children:"Refresh Status"}),i.jsx(ze,{variant:"danger",onClick:f,icon:id,loading:s,children:"Disconnect"})]})]}):i.jsx("div",{className:"space-y-6",children:t.cloudConnected?i.jsxs(i.Fragment,{children:[i.jsx(Bt,{variant:"warning",children:"Google Workspace is not connected"}),i.jsxs(Ot,{padding:"lg",children:[i.jsx("p",{className:"text-sm text-text-secondary-dark mb-4",children:"You will be sent to Google to approve access for the account you use with Crewly Cloud, then brought back here."}),i.jsx(ze,{variant:"primary",onClick:h,icon:Ps,loading:s,children:"Connect Google Workspace"})]})]}):i.jsx(Bt,{variant:"info",children:"Sign in to Crewly Cloud first (Settings → Cloud), then connect Google Workspace here."})})]})},UH=[{id:"slack",name:"Slack",description:"Connect your Slack workspace for team communication with the orchestrator.",icon:bA,available:!0,component:Nme},{id:"whatsapp",name:"WhatsApp",description:"Connect via WhatsApp Web to communicate with the orchestrator from your phone.",icon:UK,available:!0,component:jme},{id:"discord",name:"Discord",description:"Connect a Discord bot to communicate with the orchestrator via Discord server.",icon:$F,available:!0,component:Ume},{id:"telegram",name:"Telegram",description:"Connect a Telegram bot for messaging the orchestrator via Telegram.",icon:Q2,available:!0,component:Dme},{id:"google-chat",name:"Google Chat",description:"Connect Google Chat for workspace communication with the orchestrator.",icon:Ax,available:!0,component:Rme},{id:"google-workspace",name:"Google Workspace",description:"Let agents read your Gmail, send mail on your behalf and manage your Google Calendar.",icon:VF,available:!0,component:qme}];function Xme(){try{const t=new URLSearchParams(window.location.search),e=t.get("platform")??(t.get("tab")==="slack"?"slack":null);return UH.some(n=>n.id===e&&n.available)?e:null}catch{return null}}const Yme=()=>{const[t,e]=k.useState(()=>Xme()),n=r=>{e(s=>s===r?null:r)};return i.jsxs("div",{className:"space-y-6 max-w-3xl",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold",children:"Messaging Integrations"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Connect messaging platforms to communicate with the orchestrator from anywhere."})]}),i.jsx("div",{className:"space-y-3",children:UH.map(r=>{const s=t===r.id,a=r.icon;return i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-lg overflow-hidden","data-testid":`platform-card-${r.id}`,children:[i.jsxs("button",{className:`w-full flex items-center gap-4 p-4 text-left transition-colors ${r.available?"hover:bg-background-dark cursor-pointer":"opacity-60 cursor-default"}`,onClick:()=>r.available&&n(r.id),disabled:!r.available,"data-testid":`platform-toggle-${r.id}`,children:[i.jsx("div",{className:"flex items-center justify-center w-10 h-10 rounded-lg bg-background-dark border border-border-dark",children:i.jsx(a,{className:"w-5 h-5 text-text-secondary-dark"})}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-sm font-semibold",children:r.name}),!r.available&&i.jsx("span",{className:"text-xs px-2 py-0.5 rounded-full bg-background-dark text-text-secondary-dark border border-border-dark",children:"Coming Soon"})]}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-0.5 truncate",children:r.description})]}),r.available&&i.jsx("div",{className:"text-text-secondary-dark",children:s?i.jsx(ei,{className:"w-5 h-5"}):i.jsx(Si,{className:"w-5 h-5"})})]}),s&&r.component&&i.jsx("div",{className:"border-t border-border-dark p-6","data-testid":`platform-content-${r.id}`,children:i.jsx(r.component,{})})]},r.id)})})]})},UC={gemini:"Google Gemini",anthropic:"Anthropic",openai:"OpenAI",deepseek:"DeepSeek"},mO={gemini:"GOOGLE_GENERATIVE_AI_API_KEY",anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",deepseek:"DEEPSEEK_API_KEY"},Jme=2e3,Zme=()=>{const{settings:t,updateSettings:e,isLoading:n,error:r}=XN(),[s,a]=k.useState({global:{},runtimeOverrides:{},skillOverrides:{}}),[o,l]=k.useState(!1),[c,d]=k.useState("idle"),[u,h]=k.useState(null),[f,p]=k.useState({}),[x,y]=k.useState({}),[m,g]=k.useState({}),[v,b]=k.useState({});k.useEffect(()=>{t!=null&&t.apiKeys&&(a(t.apiKeys),l(!1))},[t]);const S=k.useCallback((P,I)=>{a(B=>({...B,global:{...B.global,[P]:I}})),l(!0),d("idle"),y(B=>({...B,[`global-${P}`]:"idle"}))},[]),C=k.useCallback((P,I,B,V)=>{a(K=>{var L,U,R;const $={...((U=(L=K.runtimeOverrides)==null?void 0:L[P])==null?void 0:U[I])??{key:"",source:"global"},[B]:V};return{...K,runtimeOverrides:{...K.runtimeOverrides,[P]:{...(R=K.runtimeOverrides)==null?void 0:R[P],[I]:$}}}}),l(!0),d("idle")},[]),E=async()=>{d("saving"),h(null);try{await e({apiKeys:s}),d("saved"),l(!1),setTimeout(()=>d("idle"),Jme)}catch(P){d("error"),h(P instanceof Error?P.message:"Failed to save")}},N=async(P,I,B)=>{if(!(!I||I.startsWith("••••"))){y(V=>({...V,[B]:"testing"})),g(V=>({...V,[B]:""}));try{const V=await xf.testApiKey(P,I);y(K=>({...K,[B]:V.valid?"valid":"invalid"})),!V.valid&&V.error&&g(K=>({...K,[B]:V.error}))}catch{y(V=>({...V,[B]:"invalid"})),g(V=>({...V,[B]:"Connection failed"}))}}},T=P=>{p(I=>({...I,[P]:!I[P]}))},A=P=>{b(I=>({...I,[P]:!I[P]}))},M=(P,I)=>{const B=x[I];return B==="testing"?i.jsx("span",{className:"text-xs text-text-secondary-dark animate-pulse",children:"Testing..."}):B==="valid"?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-green-400",children:[i.jsx(br,{className:"w-3 h-3"})," Valid"]}):B==="invalid"?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-red-400",children:[i.jsx(Or,{className:"w-3 h-3"})," ",m[I]||"Invalid"]}):P&&!P.startsWith("••••")?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-green-400",children:[i.jsx(br,{className:"w-3 h-3"})," Configured"]}):P&&P.startsWith("••••")?i.jsxs("span",{className:"flex items-center gap-1 text-xs text-blue-400",children:[i.jsx(Kb,{className:"w-3 h-3"})," Saved"]}):i.jsxs("span",{className:"flex items-center gap-1 text-xs text-text-secondary-dark",children:[i.jsx(Or,{className:"w-3 h-3"})," Not set"]})};return n?i.jsx("div",{className:"text-text-secondary-dark",children:"Loading settings..."}):r?i.jsx(Bt,{variant:"error",children:r}):i.jsxs("div",{className:"space-y-8",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-lg font-semibold",children:"API Keys"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Configure AI provider API keys. Keys are encrypted at rest and never logged."})]}),i.jsx("div",{className:"flex gap-2",children:i.jsx(ze,{variant:"secondary",size:"sm",onClick:E,disabled:!o||c==="saving",children:c==="saving"?i.jsxs(i.Fragment,{children:[i.jsx(J2,{className:"w-4 h-4 animate-spin"})," Saving..."]}):c==="saved"?i.jsxs(i.Fragment,{children:[i.jsx(br,{className:"w-4 h-4"})," Saved"]}):i.jsxs(i.Fragment,{children:[i.jsx($c,{className:"w-4 h-4"})," Save Changes"]})})})]}),c==="error"&&u&&i.jsx(Bt,{variant:"error",children:u}),i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[i.jsx(Kb,{className:"w-5 h-5 text-primary"}),i.jsx("h3",{className:"text-lg font-medium",children:"Global API Keys"})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-6",children:"These keys are used system-wide as defaults. Runtimes and skills can override them with their own keys."}),i.jsx("div",{className:"space-y-5",children:dP.map(P=>{const I=s.global[P]||"",B=`global-${P}`,V=f[B];return i.jsxs("div",{className:"space-y-1",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx(Tt,{htmlFor:`global-${P}`,children:UC[P]}),M(I,B)]}),i.jsxs("div",{className:"flex gap-2",children:[i.jsxs("div",{className:"relative flex-1",children:[i.jsx(on,{id:`global-${P}`,type:V?"text":"password",value:I,onChange:K=>S(P,K.target.value),placeholder:`Enter ${mO[P]}`,className:"pr-10 font-mono text-sm"}),i.jsx("button",{type:"button",onClick:()=>T(B),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-secondary-dark hover:text-text-primary-dark","aria-label":V?"Hide key":"Show key",children:V?i.jsx(v3,{className:"w-4 h-4"}):i.jsx(xA,{className:"w-4 h-4"})})]}),i.jsxs(ze,{variant:"secondary",size:"sm",onClick:()=>N(P,I,B),disabled:!I||I.startsWith("••••")||x[B]==="testing",children:[i.jsx(Uc,{className:"w-4 h-4"}),"Test"]})]}),i.jsxs("p",{className:"text-xs text-text-secondary-dark",children:["Env var: ",i.jsx("code",{className:"bg-surface-dark px-1 rounded",children:mO[P]})]})]},P)})})]}),i.jsxs(Ot,{padding:"lg",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[i.jsx(Uc,{className:"w-5 h-5 text-primary"}),i.jsx("h3",{className:"text-lg font-medium",children:"Runtime Overrides"})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-4",children:"Override global keys for specific AI runtimes. By default, runtimes use the global key."}),i.jsx("div",{className:"space-y-2",children:L6.map(P=>{const I=v[P];return i.jsxs("div",{className:"border border-border-dark rounded-lg",children:[i.jsxs("button",{type:"button",onClick:()=>A(P),className:"w-full flex items-center justify-between px-4 py-3 text-sm font-medium hover:bg-surface-dark/50 rounded-lg",children:[i.jsx("span",{children:dg[P]}),I?i.jsx(ei,{className:"w-4 h-4 text-text-secondary-dark"}):i.jsx(Si,{className:"w-4 h-4 text-text-secondary-dark"})]}),I&&i.jsx("div",{className:"px-4 pb-4 space-y-4 border-t border-border-dark pt-4",children:dP.map(B=>{var L,U;const V=(U=(L=s.runtimeOverrides)==null?void 0:L[P])==null?void 0:U[B],K=(V==null?void 0:V.source)==="custom",H=K&&(V==null?void 0:V.key)||"",$=`runtime-${P}-${B}`;return i.jsxs("div",{className:"space-y-2",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx(Tt,{htmlFor:`${P}-${B}-toggle`,children:UC[B]}),i.jsx(os,{id:`${P}-${B}-toggle`,size:"sm",label:K?"Custom key":"Use global",checked:K,onChange:R=>C(P,B,"source",R.target.checked?"custom":"global")})]}),K&&i.jsxs("div",{className:"flex gap-2",children:[i.jsxs("div",{className:"relative flex-1",children:[i.jsx(on,{type:f[$]?"text":"password",value:H,onChange:R=>C(P,B,"key",R.target.value),placeholder:`Custom ${UC[B]} key for ${dg[P]}`,className:"pr-10 font-mono text-sm"}),i.jsx("button",{type:"button",onClick:()=>T($),className:"absolute right-2 top-1/2 -translate-y-1/2 text-text-secondary-dark hover:text-text-primary-dark",children:f[$]?i.jsx(v3,{className:"w-4 h-4"}):i.jsx(xA,{className:"w-4 h-4"})})]}),i.jsxs(ze,{variant:"secondary",size:"sm",onClick:()=>N(B,H,$),disabled:!H||H.startsWith("••••")||x[$]==="testing",children:[i.jsx(Uc,{className:"w-4 h-4"}),"Test"]})]})]},B)})})]},P)})})]})]})},xl="/api/credentials";function gO(t,e){var n;if(Ye.isAxiosError(t)){const r=(n=t.response)==null?void 0:n.data;return r&&typeof r.error=="string"&&r.error.length>0?new Error(r.error):new Error(t.message||e)}return t instanceof Error?t:new Error(e)}class Qme{async list(){const e=await Ye.get(xl);if(!e.data.success||!e.data.data)throw new Error(e.data.error||"Failed to list credentials");return e.data.data}async get(e){const n=await Ye.get(`${xl}/${e}`);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to get credential");return n.data.data}async addApiKey(e){const n=await Ye.post(`${xl}/api-key`,e);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to add API key");return n.data.data}async importFromGeminiCli(e){const n=await Ye.post(`${xl}/oauth/import-gemini-cli`,e);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to import from gemini-cli");return n.data.data}async clearGeminiCliExtensionFile(){const e=await Ye.post(`${xl}/oauth/gemini-cli/clear-extension-file`);if(!e.data.success)throw new Error(e.data.error||"Failed to clear extension file")}async startGoogleOAuth(e={}){const n={};e.scopes&&e.scopes.length>0&&(n.scopes=e.scopes);try{const r=await Ye.post(`${xl}/oauth/google/start`,n);if(!r.data.success||!r.data.data)throw new Error(r.data.error||"Failed to start Google OAuth");return r.data.data}catch(r){throw gO(r,"Failed to start Google OAuth")}}async completeGoogleOAuth(e){try{const n=await Ye.post(`${xl}/oauth/google/complete`,e);if(!n.data.success||!n.data.data)throw new Error(n.data.error||"Failed to save Google credential");return n.data.data}catch(n){throw gO(n,"Failed to save Google credential")}}async update(e,n){const r=await Ye.patch(`${xl}/${e}`,n);if(!r.data.success||!r.data.data)throw new Error(r.data.error||"Failed to update credential");return r.data.data}async delete(e){const n=await Ye.delete(`${xl}/${e}`);if(!n.data.success)throw new Error(n.data.error||"Failed to delete credential")}}const mc=new Qme;function ege(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useCallback(async()=>{r(!0),a(null);try{const x=await mc.list();e(x)}catch(x){a(x instanceof Error?x.message:"Failed to load credentials")}finally{r(!1)}},[]);k.useEffect(()=>{o()},[o]);const l=k.useCallback(async x=>{const y=await mc.addApiKey(x);return await o(),y},[o]),c=k.useCallback(async x=>{const y=await mc.importFromGeminiCli(x);return await o(),y},[o]),d=k.useCallback(async()=>{await mc.clearGeminiCliExtensionFile()},[]),u=k.useCallback(async(x={})=>mc.startGoogleOAuth(x),[]),h=k.useCallback(async x=>{const y=await mc.completeGoogleOAuth(x);return await o(),y},[o]),f=k.useCallback(async(x,y)=>{const m=await mc.update(x,y);return await o(),m},[o]),p=k.useCallback(async x=>{await mc.delete(x),await o()},[o]);return{credentials:t,isLoading:n,error:s,refresh:o,addApiKey:l,importFromGeminiCli:c,clearGeminiCliExtensionFile:d,startGoogleOAuth:u,completeGoogleOAuth:h,update:f,remove:p}}const xO=["openid","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/gmail.modify"],tge=[{value:"gemini",label:"Google Gemini"},{value:"anthropic",label:"Anthropic (Claude)"},{value:"openai",label:"OpenAI"},{value:"other",label:"Other (custom)"}],nge=()=>{const{credentials:t,isLoading:e,error:n,refresh:r,addApiKey:s,importFromGeminiCli:a,clearGeminiCliExtensionFile:o,startGoogleOAuth:l,completeGoogleOAuth:c,remove:d}=ege(),[u,h]=k.useState(null),[f,p]=k.useState(null),[x,y]=k.useState(null),m=k.useCallback((C,E)=>{y({kind:C,message:E}),setTimeout(()=>y(null),4e3)},[]),g=t.filter(C=>C.type==="google-oauth"),v=t.filter(C=>C.type==="api-key"),b=C=>{p(C),h("deleteConfirm")},S=async()=>{if(f)try{await d(f.id),m("success",`Deleted "${f.name}"`)}catch(C){m("error",C instanceof Error?C.message:"Delete failed")}finally{p(null),h(null)}};return i.jsxs("div",{className:"space-y-6",children:[i.jsx("div",{children:i.jsxs("div",{className:"flex items-start gap-2 p-4 bg-surface-dark rounded-lg border border-border-dark",children:[i.jsx(Tu,{className:"w-4 h-4 text-text-secondary-dark mt-0.5 flex-shrink-0"}),i.jsxs("div",{className:"text-sm text-text-secondary-dark",children:[i.jsx("p",{className:"font-medium text-text-primary-dark mb-1",children:"Credentials for third-party services your agents call"}),i.jsxs("p",{children:["Add Google accounts (Gmail, Drive, Calendar, etc.) and service API keys that skills use to act on your behalf. For the AI model powering your agents themselves, use the ",i.jsx("strong",{children:"API Keys"})," tab instead."]})]})]})}),x&&i.jsx(Bt,{variant:x.kind==="success"?"success":"error",children:x.message}),n&&!e&&i.jsx(Bt,{variant:"error",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{children:["Failed to load credentials: ",n]}),i.jsxs(ze,{variant:"secondary",size:"sm",onClick:()=>r(),children:[i.jsx(zn,{className:"w-3 h-3 mr-1"})," Retry"]})]})}),i.jsxs("section",{children:[i.jsxs("div",{className:"flex items-center justify-between mb-3",children:[i.jsxs("h3",{className:"text-lg font-semibold flex items-center gap-2",children:[i.jsx(Sl,{className:"w-5 h-5"}),"Google Accounts",i.jsxs("span",{className:"text-sm font-normal text-text-secondary-dark",children:["(",g.length,")"]})]}),i.jsx("div",{className:"flex items-center gap-2",children:i.jsxs(ze,{variant:"primary",size:"sm",onClick:()=>h("addGoogleOAuth"),children:[i.jsx(vr,{className:"w-3 h-3 mr-1"})," Add Google Account"]})})]}),g.length===0&&!e&&i.jsxs(Ot,{className:"p-6 text-center text-sm text-text-secondary-dark",children:["No Google accounts added yet. Click ",i.jsx("strong",{children:"Add Google Account"})," above to sign in and link one — no CLI install required."]}),g.length>0&&i.jsx("div",{className:"space-y-2",children:g.map(C=>i.jsx(yO,{cred:C,onDelete:()=>b(C)},C.id))}),i.jsxs("div",{className:"mt-3 flex items-center gap-2 text-xs text-text-secondary-dark",children:[i.jsx(Zg,{className:"w-3 h-3"}),i.jsx("span",{children:"Developer option:"}),i.jsx("button",{type:"button",onClick:()=>h("importGeminiCli"),className:"text-primary hover:underline",children:"Import from Gemini CLI"})]})]}),i.jsxs("section",{children:[i.jsxs("div",{className:"flex items-center justify-between mb-3",children:[i.jsxs("h3",{className:"text-lg font-semibold flex items-center gap-2",children:[i.jsx(Kb,{className:"w-5 h-5"}),"Service API Keys",i.jsxs("span",{className:"text-sm font-normal text-text-secondary-dark",children:["(",v.length,")"]})]}),i.jsxs(ze,{variant:"primary",size:"sm",onClick:()=>h("addApiKey"),children:[i.jsx(vr,{className:"w-3 h-3 mr-1"})," Add API Key"]})]}),v.length===0&&!e&&i.jsx(Ot,{className:"p-6 text-center text-sm text-text-secondary-dark",children:"No service API keys added yet. These are for skills that call third-party services (e.g., Gemini API for image generation)."}),v.length>0&&i.jsx("div",{className:"space-y-2",children:v.map(C=>i.jsx(yO,{cred:C,onDelete:()=>b(C)},C.id))})]}),u==="addApiKey"&&i.jsx(rge,{onClose:()=>h(null),onSubmit:async C=>{await s(C),m("success",`Added "${C.name}"`),h(null)}}),u==="addGoogleOAuth"&&i.jsx(ige,{onClose:()=>h(null),onStart:l,onComplete:async(C,E)=>{const N=await c({name:C,credentialsJson:E}),T=N.accountEmail?`${N.name} (${N.accountEmail})`:N.name;m("success",`Added Google account ${T}`),h(null)}}),u==="importGeminiCli"&&i.jsx(age,{onClose:()=>h(null),onImport:async C=>{await a({name:C}),m("success",`Added Google account "${C}"`)},onClearExtensionFile:o}),u==="deleteConfirm"&&f&&i.jsx(B1,{isOpen:!0,title:"Delete credential?",message:`Delete "${f.name}"? This cannot be undone. Skills using this credential will fail until you add a replacement.`,confirmLabel:"Delete",confirmVariant:"danger",onConfirm:S,onCancel:()=>{h(null),p(null)}})]})},yO=({cred:t,onDelete:e})=>{const n=t.type==="google-oauth",r=t.status==="revoked";return i.jsx(Ot,{className:"p-4",children:i.jsxs("div",{className:"flex items-start justify-between gap-4",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx("span",{className:"font-medium",children:t.name}),r&&i.jsxs("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded bg-red-500/10 text-red-400",children:[i.jsx(Or,{className:"w-3 h-3"}),"Revoked"]}),!r&&n&&i.jsxs("span",{className:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded bg-green-500/10 text-green-400",children:[i.jsx(Wu,{className:"w-3 h-3"}),"Active"]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark space-y-0.5",children:[i.jsxs("div",{children:["Provider: ",i.jsx("span",{className:"font-mono",children:t.provider}),n&&t.helper&&i.jsxs(i.Fragment,{children:[" · ","Helper: ",i.jsx("span",{className:"font-mono",children:t.helper})]})]}),t.accountEmail&&i.jsxs("div",{children:["Account: ",i.jsx("span",{className:"font-mono",children:t.accountEmail})]}),t.scopes&&t.scopes.length>0&&i.jsxs("div",{className:"truncate",title:t.scopes.join(" "),children:["Scopes (",t.scopes.length,"):"," ",i.jsx("span",{className:"font-mono",children:t.scopes.map(s=>s.replace("https://www.googleapis.com/auth/","")).join(", ")})]}),i.jsxs("div",{children:["Added ",new Date(t.createdAt).toLocaleDateString(),t.lastUsedAt&&` · Last used ${new Date(t.lastUsedAt).toLocaleDateString()}`]})]})]}),i.jsx(ze,{variant:"secondary",size:"sm",onClick:e,"aria-label":"Delete credential",children:i.jsx(Vi,{className:"w-3 h-3"})})]})})},rge=({onClose:t,onSubmit:e})=>{const[n,r]=k.useState(""),[s,a]=k.useState("gemini"),[o,l]=k.useState(""),[c,d]=k.useState(""),[u,h]=k.useState(!1),[f,p]=k.useState(null),x=async y=>{y.preventDefault(),p(null);const m=s==="other"?o.trim():s;if(!n.trim()||!m||!c.trim()){p("All fields are required");return}h(!0);try{await e({name:n.trim(),provider:m,value:c.trim()})}catch(g){p(g instanceof Error?g.message:"Failed to add API key"),h(!1)}};return i.jsx(Ka,{isOpen:!0,onClose:t,title:"Add API Key",size:"md",children:i.jsxs("form",{onSubmit:x,className:"space-y-4",children:[i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-name",children:"Name"}),i.jsx(on,{id:"cred-apikey-name",type:"text",value:n,onChange:y=>r(y.target.value),placeholder:"e.g. gemini-main, openai-personal",required:!0})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-provider",children:"Provider"}),i.jsx("select",{id:"cred-apikey-provider",value:s,onChange:y=>a(y.target.value),className:"w-full px-3 py-2 bg-surface-dark border border-border-dark rounded text-sm",children:tge.map(y=>i.jsx("option",{value:y.value,children:y.label},y.value))})]}),s==="other"&&i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-custom-provider",children:"Custom provider identifier"}),i.jsx(on,{id:"cred-apikey-custom-provider",type:"text",value:o,onChange:y=>l(y.target.value),placeholder:"lowercase, e.g. 'groq', 'mistral'",required:!0})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-apikey-value",children:"API Key"}),i.jsx(on,{id:"cred-apikey-value",type:"password",value:c,onChange:y=>d(y.target.value),placeholder:"paste your API key",required:!0})]}),f&&i.jsx(Bt,{variant:"error",children:f}),i.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[i.jsx(ze,{type:"button",variant:"secondary",onClick:t,disabled:u,children:"Cancel"}),i.jsx(ze,{type:"submit",variant:"primary",disabled:u,children:u?"Adding…":"Add"})]})]})})};function sge(t){const e=t.toLowerCase();return e.includes("access_token")||e.includes("refresh_token")?"The sign-in info you pasted is incomplete. Open the success page again and copy the entire JSON block (from the opening { to the closing }).":e.includes("not valid json")?"That doesn't look like the JSON from the success page. Copy the whole block — don't edit it.":e.includes("app")&&(e.includes("block")||e.includes("denied"))?`This Google account doesn't allow sign-in with this app. Try the "Gmail only" scope, or use a different Google / Workspace account.`:e.includes("already")&&e.includes("exist")?"This Google account is already linked. Check the list above — it's already there.":t}const ige=({onClose:t,onStart:e,onComplete:n})=>{const[r,s]=k.useState("configure"),[a,o]=k.useState(""),[l,c]=k.useState("gmail-only"),[d,u]=k.useState(xO.join(`
|
|
4911
4911
|
`)),[h,f]=k.useState(null),[p,x]=k.useState(""),[y,m]=k.useState(null),[g,v]=k.useState(!1),[b,S]=k.useState(!1);k.useEffect(()=>{if(!g)return;const M=setTimeout(()=>v(!1),1500);return()=>clearTimeout(M)},[g]);const C=k.useMemo(()=>{if(l==="gmail-only")return[...xO];if(l!=="full-workspace")return d.split(`
|
|
4912
|
-
`).map(M=>M.trim()).filter(M=>M.length>0)},[l,d]),E=async()=>{if(m(null),!a.trim()){m('Please give this account a name (e.g. "personal-gmail").');return}if(l==="custom"&&(!C||C.length===0)){m("Custom scopes list is empty. Add at least one scope URL.");return}S(!0);try{const M=await e(C?{scopes:C}:void 0);f(M.authUrl),s("signin")}catch(M){m(M instanceof Error?M.message:"Failed to generate sign-in link")}finally{S(!1)}},N=async()=>{if(h)try{await navigator.clipboard.writeText(h),v(!0)}catch{const M=document.createElement("textarea");M.value=h,document.body.appendChild(M),M.select();try{document.execCommand("copy"),v(!0)}catch{m("Could not copy to clipboard. Copy the link manually.")}finally{document.body.removeChild(M)}}},T=async()=>{if(m(null),!p.trim()){m("Paste the JSON block from the success page below.");return}s("saving");try{await n(a.trim(),p.trim())}catch(M){const P=M instanceof Error?M.message:"Failed to save account";m(
|
|
4912
|
+
`).map(M=>M.trim()).filter(M=>M.length>0)},[l,d]),E=async()=>{if(m(null),!a.trim()){m('Please give this account a name (e.g. "personal-gmail").');return}if(l==="custom"&&(!C||C.length===0)){m("Custom scopes list is empty. Add at least one scope URL.");return}S(!0);try{const M=await e(C?{scopes:C}:void 0);f(M.authUrl),s("signin")}catch(M){m(M instanceof Error?M.message:"Failed to generate sign-in link")}finally{S(!1)}},N=async()=>{if(h)try{await navigator.clipboard.writeText(h),v(!0)}catch{const M=document.createElement("textarea");M.value=h,document.body.appendChild(M),M.select();try{document.execCommand("copy"),v(!0)}catch{m("Could not copy to clipboard. Copy the link manually.")}finally{document.body.removeChild(M)}}},T=async()=>{if(m(null),!p.trim()){m("Paste the JSON block from the success page below.");return}s("saving");try{await n(a.trim(),p.trim())}catch(M){const P=M instanceof Error?M.message:"Failed to save account";m(sge(P)),s("signin")}},A=r==="configure"?"Add Google account":"Sign in on any device";return i.jsxs(Ka,{isOpen:!0,onClose:t,title:A,size:"lg",children:[r==="configure"&&i.jsxs("div",{className:"space-y-4",children:[i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Link a Google account so your agents can use it for Gmail, Drive, Calendar, etc. You'll sign in on your phone or another device — no terminal needed."}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-goog-name",children:"Name (internal)"}),i.jsx(on,{id:"cred-goog-name",type:"text",value:a,onChange:M=>o(M.target.value),placeholder:"e.g. personal-gmail, info-steam-fun",autoFocus:!0}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"You'll use this name to tell agents which account to use."})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-goog-scope",children:"Access scope"}),i.jsxs("select",{id:"cred-goog-scope",value:l,onChange:M=>c(M.target.value),className:"w-full px-3 py-2 bg-surface-dark border border-border-dark rounded text-sm",children:[i.jsx("option",{value:"gmail-only",children:"Gmail only (recommended for personal accounts)"}),i.jsx("option",{value:"full-workspace",children:"Full Workspace (Gmail, Drive, Calendar, Photos)"}),i.jsx("option",{value:"custom",children:"Custom — pick scopes manually"})]}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["If Google blocks the sign-in page, try ",i.jsx("strong",{children:"Gmail only"})," ","first — broader scopes require a Workspace account."]})]}),l==="custom"&&i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-goog-custom-scopes",children:"Scopes (one per line)"}),i.jsx("textarea",{id:"cred-goog-custom-scopes",value:d,onChange:M=>u(M.target.value),rows:5,className:"w-full px-3 py-2 bg-surface-dark border border-border-dark rounded text-xs font-mono",spellCheck:!1}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"Paste full OAuth scope URLs (one per line). Advanced."})]}),y&&i.jsx(Bt,{variant:"error",children:y}),i.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,disabled:b,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:E,disabled:b,children:b?"Generating…":"Generate sign-in link"})]})]}),r==="signin"&&h&&i.jsxs("div",{className:"space-y-4",children:[i.jsx(Bt,{variant:"info",children:"Sign in as the Google account you want to link. After signing in, Google will show a success page with a JSON block — copy it and paste below."}),i.jsxs("div",{className:"flex flex-col items-center gap-3 py-2",children:[i.jsx("div",{className:"bg-white p-3 rounded-lg",children:i.jsx(aM,{value:h,size:256,level:"M",includeMargin:!1})}),i.jsx("div",{className:"text-xs text-text-secondary-dark text-center",children:"Scan with your phone camera"})]}),i.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[i.jsxs("a",{href:h,target:"_blank",rel:"noreferrer",className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-2 bg-primary text-white rounded-md text-sm hover:opacity-90",children:[i.jsx(Ps,{className:"w-4 h-4"})," Open sign-in page"]}),i.jsx(ze,{variant:"secondary",onClick:N,type:"button",children:g?i.jsxs(i.Fragment,{children:[i.jsx(br,{className:"w-4 h-4 mr-1"})," Copied"]}):i.jsxs(i.Fragment,{children:[i.jsx(K2,{className:"w-4 h-4 mr-1"})," Copy link"]})})]}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-goog-json",children:"After signing in, paste the JSON from the success page here:"}),i.jsx("textarea",{id:"cred-goog-json",value:p,onChange:M=>x(M.target.value),rows:8,placeholder:`{
|
|
4913
4913
|
"access_token": "...",
|
|
4914
4914
|
"refresh_token": "...",
|
|
4915
4915
|
...
|
|
4916
|
-
}`,className:"w-full px-3 py-2 bg-surface-dark border border-border-dark rounded text-xs font-mono",spellCheck:!1}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["Copy the entire block from the opening ",i.jsx("code",{children:"{"})," to the closing ",i.jsx("code",{children:"}"}),"."]})]}),y&&i.jsx(Bt,{variant:"error",children:y}),i.jsxs("div",{className:"flex justify-between items-center pt-2",children:[i.jsx("button",{type:"button",onClick:()=>{s("configure"),x(""),m(null),f(null)},className:"text-xs text-text-secondary-dark hover:underline",children:"← Back (change scope)"}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:T,children:"Save credential"})]})]})]}),r==="saving"&&i.jsxs("div",{className:"flex items-center gap-3 py-8 justify-center",children:[i.jsx(zn,{className:"w-4 h-4 animate-spin"}),i.jsx("span",{className:"text-sm",children:"Saving credential…"})]})]})},ige=({onClose:t,onImport:e,onClearExtensionFile:n})=>{const[r,s]=k.useState("name"),[a,o]=k.useState(""),[l,c]=k.useState(null),[d]=k.useState(null),[u,h]=k.useState(!1),f=()=>{if(!a.trim()){c('Please provide a name (e.g. "info-steam-fun", "personal-gmail")');return}c(null),s("instructions")},p=async()=>{c(null),s("importing");try{await e(a.trim()),s("done")}catch(m){c(m instanceof Error?m.message:"Import failed"),s("instructions")}},x=async()=>{h(!0);try{await n(),s("name"),o("")}catch(m){c(m instanceof Error?m.message:"Failed to clear extension file")}finally{h(!1)}},y=r==="done"?"Google account added":"Import from Gemini CLI";return i.jsxs(Ka,{isOpen:!0,onClose:t,title:y,size:"lg",children:[r==="name"&&i.jsxs("div",{className:"space-y-4",children:[i.jsxs(Bt,{variant:"info",children:["This option is for developers who already run the Gemini CLI workspace extension locally. For the regular flow, close this and click ",i.jsx("strong",{children:"Add Google Account"}),"."]}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Pick a name for this Google account. You'll use this name to tell agents which account to use for a task."}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-gemcli-name",children:"Name"}),i.jsx(on,{id:"cred-gemcli-name",type:"text",value:a,onChange:m=>o(m.target.value),placeholder:"e.g. info-steam-fun, personal-gmail",autoFocus:!0})]}),l&&i.jsx(Bt,{variant:"error",children:l}),i.jsxs("div",{className:"flex justify-end gap-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:f,children:"Next"})]})]}),r==="instructions"&&i.jsxs("div",{className:"space-y-4",children:[i.jsx(Bt,{variant:"info",children:"You'll sign in via the Gemini CLI Workspace extension. Crewly will then copy the resulting tokens into its own encrypted store."}),i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium mb-1",children:"1. Open a terminal and run:"}),i.jsx("pre",{className:"bg-surface-dark border border-border-dark rounded p-3 text-xs font-mono overflow-x-auto",children:"GEMINI_CLI_WORKSPACE_FORCE_FILE_STORAGE=true gemini"})]}),i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium mb-1",children:"2. Inside gemini, type:"}),i.jsx("pre",{className:"bg-surface-dark border border-border-dark rounded p-3 text-xs font-mono overflow-x-auto",children:"list my calendar events for today"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"This triggers the workspace extension to open a browser for Google sign-in."})]}),i.jsxs("div",{children:[i.jsxs("div",{className:"text-sm font-medium mb-1",children:["3. In the browser: sign in as ",i.jsx("span",{className:"font-mono",children:a})]}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Grant the requested scopes. You can close the browser after the success page appears."})]}),i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium mb-1",children:"4. Come back here and click Import."}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Crewly will read the extension's token file and save an encrypted copy."})]})]}),i.jsxs("a",{href:"https://github.com/gemini-cli-extensions/workspace",target:"_blank",rel:"noreferrer",className:"text-xs text-primary inline-flex items-center gap-1 hover:underline",children:["About the workspace extension ",i.jsx(Ps,{className:"w-3 h-3"})]}),l&&i.jsx(Bt,{variant:"error",children:l}),i.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:p,children:"Import"})]})]}),r==="importing"&&i.jsxs("div",{className:"flex items-center gap-3 py-4",children:[i.jsx(zn,{className:"w-4 h-4 animate-spin"}),i.jsx("span",{className:"text-sm",children:"Reading the extension's token file…"})]}),r==="done"&&i.jsxs("div",{className:"space-y-4",children:[i.jsxs(Bt,{variant:"success",children:["Google account ",i.jsx("strong",{children:a})," added.",d&&i.jsxs(i.Fragment,{children:[" (",d,")"]})]}),i.jsx("div",{className:"text-sm text-text-secondary-dark",children:"To add another Google account, Crewly needs to clear the extension's cached token so your next sign-in captures a different account."}),l&&i.jsx(Bt,{variant:"error",children:l}),i.jsxs("div",{className:"flex justify-end gap-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Done"}),i.jsx(ze,{variant:"primary",onClick:x,disabled:u,children:u?"Clearing…":"Add another account"})]})]})]})},age=1e4;function oge(t){const e=[];for(const n of t)for(const r of n.members)e.push({memberId:r.id,name:r.name,sessionName:r.sessionName,role:r.role,teamName:n.name,teamId:n.id,agentStatus:r.agentStatus,workingStatus:r.workingStatus,readyAt:r.readyAt??null,lastActivityCheck:r.lastActivityCheck??null,runtimeType:r.runtimeType});return e}function lge(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useRef(!0),l=k.useCallback(async()=>{try{const d=await ft.getTeams(!0);o.current&&(e(oge(d)),a(null))}catch(d){o.current&&a(d instanceof Error?d.message:"Failed to fetch agent heartbeats")}},[]),c=k.useCallback(async()=>{await l()},[l]);return k.useEffect(()=>{o.current=!0,(async()=>{await l(),o.current&&r(!1)})();const u=setInterval(l,age);return()=>{o.current=!1,clearInterval(u)}},[l]),{agents:t,isLoading:n,error:s,refresh:c}}const cge={active:{label:"Active",color:"text-green-400",bgColor:"bg-green-500/10"},started:{label:"Started",color:"text-blue-400",bgColor:"bg-blue-500/10"},starting:{label:"Starting",color:"text-yellow-400",bgColor:"bg-yellow-500/10"},activating:{label:"Activating",color:"text-yellow-400",bgColor:"bg-yellow-500/10"},inactive:{label:"Offline",color:"text-gray-400",bgColor:"bg-gray-500/10"},suspended:{label:"Suspended",color:"text-red-400",bgColor:"bg-red-500/10"}};function dge(t){return t?tx(t):"Never"}const uge=({agent:t})=>{const e=cge[t.agentStatus],n=t.agentStatus==="active"||t.agentStatus==="started";return i.jsxs("div",{className:"border border-border-dark rounded-lg p-4 hover:bg-surface-dark/30 transition-colors",children:[i.jsxs("div",{className:"flex items-start justify-between mb-3",children:[i.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[i.jsx("div",{className:`w-2 h-2 rounded-full shrink-0 ${n?"bg-green-400":"bg-gray-500"}`}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark truncate",children:t.name})]}),i.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium shrink-0 ${e.bgColor} ${e.color}`,children:e.label})]}),i.jsxs("div",{className:"space-y-2 text-xs",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Role"}),i.jsx("span",{className:"text-text-primary-dark capitalize",children:t.role})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Team"}),i.jsx("span",{className:"text-text-primary-dark truncate ml-2",children:t.teamName})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Working"}),i.jsx("span",{className:t.workingStatus==="in_progress"?"text-yellow-400":"text-text-secondary-dark",children:t.workingStatus==="in_progress"?"In Progress":"Idle"})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Runtime"}),i.jsx("span",{className:"text-text-primary-dark",children:t.runtimeType})]}),i.jsxs("div",{className:"flex justify-between items-center",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Connection"}),n?i.jsx(nM,{className:"w-3.5 h-3.5 text-green-400"}):i.jsx(qK,{className:"w-3.5 h-3.5 text-gray-500"})]})]}),i.jsxs("div",{className:"mt-3 pt-3 border-t border-border-dark flex justify-between text-xs",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Last active"}),i.jsx("span",{className:"text-text-secondary-dark",children:dge(t.lastActivityCheck??t.readyAt)})]})]})},hge=()=>{const{agents:t,isLoading:e,error:n,refresh:r}=lge(),s=t.filter(a=>a.agentStatus==="active"||a.agentStatus==="started").length;return e?i.jsx("div",{className:"flex items-center justify-center py-12",children:i.jsx(sr,{size:"sm",text:"Loading heartbeat status..."})}):n?i.jsxs("div",{className:"flex items-center gap-2 p-4 rounded-lg bg-red-500/10 border border-red-500/20",children:[i.jsx(Or,{className:"w-5 h-5 text-red-400 shrink-0"}),i.jsx("span",{className:"text-sm text-red-400",children:n})]}):i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between mb-4",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx($o,{className:"w-5 h-5 text-text-secondary-dark"}),i.jsx("h3",{className:"text-lg font-semibold text-text-primary-dark",children:"Agent Heartbeat"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark bg-surface-dark px-2 py-0.5 rounded-full",children:[s,"/",t.length," online"]})]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:r,icon:zn,children:"Refresh"})]}),t.length===0?i.jsxs("div",{className:"text-center py-12 text-text-secondary-dark",children:[i.jsx($o,{className:"w-10 h-10 mx-auto mb-3 opacity-40"}),i.jsx("p",{className:"text-sm",children:"No agents found"}),i.jsx("p",{className:"text-xs mt-1 opacity-60",children:"Agent heartbeats will appear when teams have members configured"})]}):i.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:t.map(a=>i.jsx(uge,{agent:a},`${a.teamId}-${a.memberId}`))})]})},fge=()=>i.jsx("div",{className:"space-y-8",children:i.jsx(hge,{})}),pge=new Set(["general","roles","skills","integrations","api-keys","credentials","system"]),mge=()=>{const[t]=pp(),e=_r(),n=t.get("tab");k.useEffect(()=>{n==="cloud"&&e("/cloud",{replace:!0})},[n,e]);const r=n==="slack"?"integrations":n&&pge.has(n)?n:"general",[s,a]=k.useState(r),o=[{id:"general",label:"General",icon:ZF},{id:"roles",label:"Roles",icon:Ku},{id:"skills",label:"Skills",icon:iU},{id:"integrations",label:"Integrations",icon:Sl},{id:"api-keys",label:"API Keys",icon:Kb},{id:"credentials",label:"Credentials",icon:qb},{id:"system",label:"System",icon:go}],l=()=>{switch(s){case"general":return i.jsx(cme,{});case"roles":return i.jsx(pme,{});case"skills":return i.jsx(yme,{});case"integrations":return i.jsx(Xme,{});case"api-keys":return i.jsx(Jme,{});case"credentials":return i.jsx(tge,{});case"system":return i.jsx(fge,{});default:return null}};return i.jsxs("div",{className:"max-w-7xl mx-auto",children:[i.jsxs("div",{className:"mb-8",children:[i.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Settings"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Configure Crewly behavior and manage roles and skills"})]}),i.jsx("nav",{className:"flex gap-1 border-b border-border-dark mb-6",role:"tablist",children:o.map(c=>i.jsxs("button",{className:`flex items-center gap-2 px-4 py-3 text-sm font-medium border-b-2 transition-colors -mb-px ${s===c.id?"border-primary text-primary":"border-transparent text-text-secondary-dark hover:text-text-primary-dark hover:bg-surface-dark"}`,onClick:()=>a(c.id),"aria-selected":s===c.id,role:"tab",id:`tab-${c.id}`,"aria-controls":`panel-${c.id}`,children:[i.jsx(c.icon,{className:"w-4 h-4"}),i.jsx("span",{children:c.label})]},c.id))}),i.jsx("main",{role:"tabpanel",id:`panel-${s}`,"aria-labelledby":`tab-${s}`,children:l()})]})};function AS(t){if(t!=null)return new Date(t).toISOString()}function YN(t){return t==="starting"?"online":t}function gge(t,e){return t==="system"?"System":e}function xge(t){if(!t)return;const e=t.clientMessageId;return typeof e=="string"&&e.length>0?e:void 0}function zC(t){return{id:t.id,agentSession:t.agentSession,name:t.name,purpose:t.purpose,createdAt:new Date(t.createdAt).toISOString(),lastMessageAt:AS(t.lastMessageAt),presence:YN(t.agentPresence.status),type:t.type??"dm",teamId:t.teamId,projectId:t.projectId,targetMemberId:t.targetMemberId}}function yge(t){return{id:t.id,kind:"image",url:t.url,filename:t.originalName,size:t.sizeBytes,mimeType:t.mimeType}}function CT(t){var e;return{id:t.id,channelId:t.channelId,seq:t.seq,author:{role:t.senderType,id:t.senderId,name:gge(t.senderType,t.senderId)},content:t.content,attachments:(e=t.attachments)==null?void 0:e.map(yge),createdAt:new Date(t.createdAt).toISOString(),clientMessageId:xge(t.metadata),deliveryStatus:"sent",mentions:Array.isArray(t.mentions)?t.mentions:[],threadId:t.threadId,replyCount:typeof t.replyCount=="number"?t.replyCount:void 0,lastReplyAt:AS(t.lastReplyAt)}}function vge(t){return{agentId:t.agentSession,status:YN(t.status),lastSeen:AS(t.lastSeenAt)}}function bge(t){if(!t||typeof t!="object")return null;const e=t;if(e.type==="message"){const n=t.payload;return!n||typeof n.channelId!="string"||!n.message?null:{type:"message",channelId:n.channelId,message:CT(n.message)}}if(e.type==="presence"){const n=t.payload;return!n||typeof n.agentSession!="string"||typeof n.status!="string"?null:{type:"presence",agentSession:n.agentSession,status:YN(n.status),lastSeen:AS(n.lastSeenAt??null)}}if(e.type==="pong"){const n=t.ts;return{type:"pong",ts:typeof n=="number"?n:0}}if(e.type==="error"){const n=t.code,r=t.message;return{type:"error",code:typeof n=="string"?n:"unknown",message:typeof r=="string"?r:""}}return null}const _ge=["validation_error","not_found","channel_not_found","agent_not_found","forbidden","agent_already_bound","payload_too_large","rate_limited","invalid_cursor","channel_archived","attachment_not_found","internal_error","network_error","unknown_error"];class gx extends Error{constructor(n){super(n.message);In(this,"code");In(this,"httpStatus");In(this,"details");this.name="ChatApiError",this.code=n.code,this.httpStatus=n.httpStatus,this.details=n.details}static async fromResponse(n){let r;try{r=await n.json()}catch{r=void 0}if(r&&typeof r=="object"&&"error"in r&&r.error&&typeof r.error=="object"){const s=r.error,a=Sge(s.code),o=typeof s.message=="string"?s.message:`Chat API error ${n.status}`,l=s.details&&typeof s.details=="object"?s.details:void 0;return new gx({code:a,httpStatus:n.status,message:o,details:l})}return new gx({code:"unknown_error",httpStatus:n.status,message:`Chat API error ${n.status}`})}}function Sge(t){return typeof t!="string"?"unknown_error":_ge.includes(t)?t:"unknown_error"}const wge={id:"__me__",name:"You"},kge=25e3,Cge=1e4,Ege=1e3;function Age(){const t=globalThis;return t.crypto&&typeof t.crypto.randomUUID=="function"?t.crypto.randomUUID():`cmid-${Math.random().toString(16).slice(2)}-${Date.now().toString(16)}`}class Tge{constructor(e){In(this,"backendURL");In(this,"authToken");In(this,"fetchImpl");In(this,"websocketImpl");In(this,"idGenerator");In(this,"currentUser");In(this,"heartbeatIntervalMs");In(this,"pongTimeoutMs");In(this,"reconnectDelayMs");In(this,"now");In(this,"localSubscribers",new Set);this.backendURL=e.backendURL.replace(/\/+$/,""),this.authToken=e.authToken,this.fetchImpl=e.fetchImpl??(typeof globalThis.fetch=="function"?globalThis.fetch.bind(globalThis):void 0),this.websocketImpl=e.websocketImpl??globalThis.WebSocket,this.idGenerator=e.idGenerator??Age,this.currentUser=e.currentUser??wge,this.heartbeatIntervalMs=e.heartbeatIntervalMs??kge,this.pongTimeoutMs=e.pongTimeoutMs??Cge,this.reconnectDelayMs=e.reconnectDelayMs??Ege,this.now=e.now??Date.now}headers(e){const n={"Content-Type":"application/json",...e};return this.authToken&&(n.Authorization=`Bearer ${this.authToken}`),n}async request(e,n){let r;try{r=await this.fetchImpl(`${this.backendURL}${e}`,{...n,headers:this.headers(n==null?void 0:n.headers)})}catch(a){throw new gx({code:"network_error",httpStatus:0,message:a instanceof Error?a.message:String(a)})}if(!r.ok)throw await gx.fromResponse(r);return(await r.json()).data}async listChannels(){return(await this.request("/api/chat/channels")).channels.map(zC)}async createChannel(e){const n=await this.request("/api/chat/channels",{method:"POST",body:JSON.stringify(e)});return zC(n)}async createHuddle(e){const n=await this.request("/api/chat/channels/huddle",{method:"POST",body:JSON.stringify(e)});return zC(n)}async listMessages(e,n={}){const r=new URLSearchParams;n.cursor&&r.set("cursor",n.cursor),n.limit&&r.set("limit",String(n.limit));const s=r.toString()?`?${r.toString()}`:"",a=await this.request(`/api/chat/channels/${encodeURIComponent(e)}/messages${s}`);return{messages:a.messages.map(CT),nextCursor:a.nextCursor}}async sendMessage(e,n){const r=n.clientMessageId??this.idGenerator(),s=this.buildOptimisticMessage(e,n,r);this.emitLocal(e,{type:"message",channelId:e,message:s});const a={content:n.content,contentType:"markdown",clientMessageId:r};n.mentions&&n.mentions.length>0&&(a.mentions=n.mentions),n.threadId&&(a.threadId=n.threadId);let o;try{o=await this.request(`/api/chat/channels/${encodeURIComponent(e)}/messages`,{method:"POST",body:JSON.stringify(a)})}catch(c){throw this.emitLocal(e,{type:"message",channelId:e,message:{...s,deliveryStatus:"failed"}}),c}const l=CT(o);return l.clientMessageId||(l.clientMessageId=r),this.emitLocal(e,{type:"message",channelId:e,message:l}),l}async getAgentPresence(e){const n=await this.request(`/api/chat/presence/${encodeURIComponent(e)}`);return vge(n)}subscribeToChannel(e,n){const r={channelId:e,onEvent:n};this.localSubscribers.add(r);const s=this.openWebsocketConnection(e,n);return{unsubscribe:()=>{this.localSubscribers.delete(r),s.close()}}}buildOptimisticMessage(e,n,r){return{id:r,channelId:e,seq:-1,author:{role:"user",id:this.currentUser.id,name:this.currentUser.name},content:n.content,attachments:n.attachments,createdAt:new Date(this.now()).toISOString(),clientMessageId:r,deliveryStatus:"pending",mentions:n.mentions??[],threadId:n.threadId}}emitLocal(e,n){for(const r of this.localSubscribers)if(r.channelId===e)try{r.onEvent(n)}catch{}}openWebsocketConnection(e,n){let r=null,s=null,a=null,o=null,l=0,c=!1;const d=()=>{s&&(clearInterval(s),s=null),a&&(clearTimeout(a),a=null),o&&(clearTimeout(o),o=null)},u=()=>{if(r)try{(r.readyState===r.OPEN||r.readyState===r.CONNECTING)&&r.close()}catch{}},h=()=>{c||(d(),o=setTimeout(()=>{o=null,p()},this.reconnectDelayMs))},f=()=>{if(!(!r||r.readyState!==r.OPEN)){try{r.send(JSON.stringify({type:"ping",ts:this.now()}))}catch{return}a&&clearTimeout(a),a=setTimeout(()=>{u()},this.pongTimeoutMs)}},p=()=>{if(c)return;const x=this.backendURL.replace(/^http/,"ws"),y=new URLSearchParams({channelId:e});this.authToken&&y.set("token",this.authToken),l>0&&y.set("lastSeenSeq",String(l));try{r=new this.websocketImpl(`${x}/ws/chat?${y.toString()}`)}catch{h();return}const m=b=>{let S;try{S=JSON.parse(typeof b.data=="string"?b.data:"")}catch{return}const C=bge(S);if(C){if(C.type==="pong"){a&&(clearTimeout(a),a=null),n(C);return}if(C.type==="message"&&C.message.seq>l&&(l=C.message.seq),C.type==="error"){n(C),c=!0,d(),u();return}n(C)}},g=()=>{s&&clearInterval(s),s=setInterval(f,this.heartbeatIntervalMs)},v=()=>{h()};r.addEventListener("message",m),r.addEventListener("open",g),r.addEventListener("close",v)};return p(),{close(){c=!0,d(),u()}}}}const vO="demo-user",bO="Steve",Mge=800,Nge=()=>{let t=1;return e=>`${e}-${t++}`};class jge{constructor(e={}){In(this,"channels");In(this,"messages");In(this,"subscribers",{});In(this,"replyDelay");In(this,"nextId",Nge());this.channels=e.initialChannels??Rge(),this.messages=e.initialMessages??Ige(this.channels),this.replyDelay=e.agentReplyDelayMs??Mge}async listChannels(){return[...this.channels]}async createChannel(e){const n=e.type??"dm",r={id:this.nextId("ch"),agentSession:n==="dm"?e.agentSession??"":"",name:e.name,purpose:e.purpose,createdAt:new Date().toISOString(),presence:"online",type:n,teamId:e.teamId,projectId:e.projectId,targetMemberId:e.targetMemberId};return this.channels=[...this.channels,r],this.messages[r.id]=[],r}async createHuddle(e){const n={id:this.nextId("ch"),agentSession:"",name:e.name,purpose:e.purpose,createdAt:new Date().toISOString(),presence:"online",type:"huddle"};return this.channels=[...this.channels,n],this.messages[n.id]=[],n}async listMessages(e,n={}){const r=this.messages[e]??[],s=n.limit??50;return{messages:r.slice(-s),nextCursor:r.length>s?"mock-older":null}}async sendMessage(e,n){var d,u;const r=this.channels.find(h=>h.id===e);if(!r)throw new Error(`Unknown channel: ${e}`);const s=n.clientMessageId??this.nextId("cmid"),a=n.mentions??[],o=n.threadId,l={id:s,channelId:e,seq:-1,author:{role:"user",id:vO,name:bO},content:n.content,attachments:n.attachments,createdAt:new Date().toISOString(),clientMessageId:s,deliveryStatus:"pending",mentions:a,threadId:o};this.emit(e,{type:"message",channelId:e,message:l});const c={id:this.nextId("m"),channelId:e,seq:(((d=this.messages[e])==null?void 0:d.length)??0)+1,author:{role:"user",id:vO,name:bO},content:n.content,attachments:n.attachments,createdAt:l.createdAt,clientMessageId:s,deliveryStatus:"sent",mentions:a,threadId:o};return((u=this.messages)[e]||(u[e]=[])).push(c),this.emit(e,{type:"message",channelId:e,message:c}),window.setTimeout(()=>{var f,p;const h={id:this.nextId("m"),channelId:e,seq:(((f=this.messages[e])==null?void 0:f.length)??0)+1,author:{role:"agent",id:r.agentSession,name:r.name},content:`(mock reply) you said: "${n.content}"`,createdAt:new Date().toISOString(),deliveryStatus:"sent",mentions:[],threadId:o};((p=this.messages)[e]||(p[e]=[])).push(h),this.emit(e,{type:"message",channelId:e,message:h})},this.replyDelay),c}async getAgentPresence(e){const n=this.channels.find(r=>r.agentSession===e);return{agentId:e,status:(n==null?void 0:n.presence)??"offline",lastSeen:new Date().toISOString()}}subscribeToChannel(e,n){var r;return((r=this.subscribers)[e]||(r[e]=[])).push(n),{unsubscribe:()=>{const s=this.subscribers[e];s&&(this.subscribers[e]=s.filter(a=>a!==n))}}}emit(e,n){const r=this.subscribers[e];if(r)for(const s of r)try{s(n)}catch{}}}function Rge(){const t=new Date().toISOString();return[{id:"ch-ella",agentSession:"crewly-marketing-ella",name:"Ella · Marketing",purpose:"Marketing strategy + content planning",createdAt:t,lastMessageAt:t,presence:"online",type:"dm"},{id:"ch-sam",agentSession:"crewly-product-sam",name:"Sam · Engineering",purpose:"Platform architecture + delivery",createdAt:t,lastMessageAt:t,presence:"busy",type:"dm"},{id:"ch-offline",agentSession:"crewly-offline-demo",name:"Dormant Agent",purpose:"Shows the offline state",createdAt:t,presence:"offline",type:"dm"}]}function Ige(t){var n;const e={};for(const r of t)e[r.id]=[{id:`${r.id}-welcome`,channelId:r.id,seq:1,author:{role:"agent",id:r.agentSession,name:r.name},content:`Welcome — I'm **${((n=r.name.split("·")[0])==null?void 0:n.trim())??r.name}**. Ask me anything.`,createdAt:r.createdAt,mentions:[]}];return e}const zH=k.createContext(null);function Pge({children:t,backendURL:e,authToken:n,mode:r="real",client:s}){const a=k.useMemo(()=>{if(s)return{client:s,mode:r};if(r==="mock")return{client:new jge,mode:r};if(!e)throw new Error('[@crewly/chat-ui] ChatAPIProvider requires `backendURL` when mode="real".');return{client:new Tge({backendURL:e,authToken:n}),mode:r}},[e,n,r,s]);return i.jsx(zH.Provider,{value:a,children:t})}function Mp(){const t=k.useContext(zH);if(!t)throw new Error("[@crewly/chat-ui] useChatApiClient must be called inside <ChatAPIProvider>.");return t.client}function Lge(t,e){const n=Mp(),[r,s]=k.useState("offline"),[a,o]=k.useState(void 0),[l,c]=k.useState(!!t),[d,u]=k.useState(null);return k.useEffect(()=>{if(!t){s("offline"),c(!1);return}let h=!1;return c(!0),u(null),n.getAgentPresence(t).then(f=>{h||(s(f.status),o(f.lastSeen))}).catch(f=>{h||u(f instanceof Error?f:new Error(String(f)))}).finally(()=>{h||c(!1)}),()=>{h=!0}},[t,n]),k.useEffect(()=>{if(!t||!e)return;const h=n.subscribeToChannel(e,f=>{f.type==="presence"&&f.agentSession===t&&(s(f.status),o(f.lastSeen))});return()=>h.unsubscribe()},[t,e,n]),{status:r,lastSeen:a,loading:l,error:d}}const Dge={online:"online",busy:"busy",idle:"idle",offline:"offline",inactive:"inactive"},_O={online:"Online",busy:"Busy",idle:"Idle",offline:"Offline",inactive:"Inactive"},Oge={online:"bg-emerald-400",busy:"bg-amber-400",idle:"bg-amber-400",offline:"bg-gray-500",inactive:"bg-gray-500"},Bge={online:"text-emerald-400",busy:"text-amber-400",idle:"text-amber-400",offline:"text-text-secondary-dark",inactive:"text-text-secondary-dark"};function Fge({status:t,agentId:e,channelId:n,compact:r=!1,className:s=""}){const a=Uge({status:t,agentId:e,channelId:n});return i.jsxs("span",{className:`inline-flex items-center gap-1.5 ${s}`,"data-testid":"agent-status-badge","data-status":a,children:[i.jsx("span",{"aria-hidden":"true",className:`inline-block h-2 w-2 rounded-full ${Oge[a]}`}),!r&&i.jsx("span",{className:`text-xs font-medium ${Bge[a]}`,children:_O[a]}),i.jsx("span",{className:"sr-only",children:_O[a]})]})}function Uge(t){const e=Lge(t.status?null:t.agentId??null,t.channelId??null),n=t.status??e.status;return Dge[n]}function zge(){const t=Mp(),[e,n]=k.useState([]),[r,s]=k.useState(!0),[a,o]=k.useState(null),l=k.useCallback(async()=>{s(!0),o(null);try{const c=await t.listChannels();n(c)}catch(c){o(c instanceof Error?c:new Error(String(c)))}finally{s(!1)}},[t]);return k.useEffect(()=>{l()},[l]),{channels:e,loading:r,error:a,refresh:l}}function HH(t,e){if(e.clientMessageId){const r=t.findIndex(s=>s.clientMessageId&&s.clientMessageId===e.clientMessageId);if(r>=0){const s=t.slice();return s[r]=e,s}}const n=t.findIndex(r=>r.id===e.id);if(n>=0){const r=t.slice();return r[n]=e,r}return[...t,e]}function SO(t){return[...t].sort((e,n)=>e.seq-n.seq)}function Hge(t,e){return t.filter(n=>n.threadId===e).sort((n,r)=>n.seq-r.seq)}function ET(t){if(t.length===0)return!1;const e=t[t.length-1];return e.author.role!=="user"?!1:!!e.clientMessageId}function GH(t){const e=Mp(),[n,r]=k.useState([]),[s,a]=k.useState(!1),[o,l]=k.useState(null),c=k.useRef(null),[d,u]=k.useState(!1),[h,f]=k.useState(!1);k.useEffect(()=>{if(!t){r([]),u(!1),f(!1);return}let y=!1;return a(!0),l(null),c.current=null,f(!1),e.listMessages(t).then(m=>{y||(r(SO(m.messages)),c.current=m.nextCursor,u(m.nextCursor!==null))}).catch(m=>{y||l(m instanceof Error?m:new Error(String(m)))}).finally(()=>{y||a(!1)}),()=>{y=!0}},[t,e]),k.useEffect(()=>{if(!t)return;const y=e.subscribeToChannel(t,m=>{m.type==="message"&&r(g=>{const v=HH(g,m.message);return f(ET(v)),v})});return()=>y.unsubscribe()},[t,e]);const p=k.useCallback(async()=>{if(!t||!c.current)return;const y=c.current;try{const m=await e.listMessages(t,{cursor:y});r(g=>[...SO(m.messages),...g]),c.current=m.nextCursor,u(m.nextCursor!==null)}catch(m){l(m instanceof Error?m:new Error(String(m)))}},[t,e]),x=k.useCallback(async y=>{if(!t)throw new Error("sendMessage called without an active channel.");return await e.sendMessage(t,y)},[t,e]);return{messages:n,loading:s,error:o,hasMore:d,agentThinking:h,loadMore:p,sendMessage:x}}function WH(t){const e=t.replace(/\r\n/g,`
|
|
4917
|
-
`).split(/\n\n+/);return i.jsx(i.Fragment,{children:e.map((n,r)=>i.jsx(
|
|
4918
|
-
`),n=e.every(s=>/^\s*[-*]\s+/.test(s)),r=e.every(s=>/^\s*\d+\.\s+/.test(s));return n&&e.length>0?i.jsx("ul",{className:"my-1 list-disc pl-5",children:e.map((s,a)=>i.jsx("li",{children:HC(s.replace(/^\s*[-*]\s+/,""))},a))}):r&&e.length>0?i.jsx("ol",{className:"my-1 list-decimal pl-5",children:e.map((s,a)=>i.jsx("li",{children:HC(s.replace(/^\s*\d+\.\s+/,""))},a))}):i.jsx("p",{className:"whitespace-pre-wrap",children:HC(t)})}function HC(t){const e=/(\*\*[^*]+\*\*|\*[^*]+\*|`[^`]+`)/g,n=t.split(e);return i.jsx(i.Fragment,{children:n.map((r,s)=>/^\*\*[^*]+\*\*$/.test(r)?i.jsx("strong",{children:r.slice(2,-2)},s):/^\*[^*]+\*$/.test(r)?i.jsx("em",{children:r.slice(1,-1)},s):/^`[^`]+`$/.test(r)?i.jsx("code",{className:"rounded bg-primary/10 px-1 font-mono text-[0.85em] text-primary",children:r.slice(1,-1)},s):i.jsx(k.Fragment,{children:r},s))})}function Wge({channelId:t,agentName:e,className:n="",emptyState:r,unreadAfterSeq:s=null,unreadDividerLabel:a="New",layout:o="bubble",onReplyInThread:l,hideReplies:c=!1,messages:d,agentThinking:u,loading:h,hasMore:f,onLoadMore:p}){const x=d!==void 0,y=GH(x?null:t),m=x?d:y.messages,g=x?h??!1:y.loading,v=x?null:y.error,b=x?f??!1:y.hasMore,S=x?u??!1:y.agentThinking,C=x?p??(()=>{}):y.loadMore,E=c?m.filter(M=>!M.threadId):m,N=k.useRef(null),T=E.length>0?E[E.length-1].id:null;if(k.useEffect(()=>{var M;(M=N.current)==null||M.scrollIntoView({behavior:"smooth",block:"end"})},[T,t,S]),!t)return i.jsx("div",{className:`flex h-full items-center justify-center text-sm text-text-secondary-dark ${n}`,role:"status",children:r??"Select a channel to start chatting."});const A=o==="flat";return i.jsxs("div",{className:`chat-scrollbar flex h-full flex-col overflow-y-auto bg-background-dark ${n}`,"aria-label":"Message thread","data-testid":"message-thread",children:[b&&i.jsx("div",{className:"sticky top-0 z-10 flex justify-center py-2 backdrop-blur bg-background-dark/80",children:i.jsx("button",{type:"button",onClick:()=>void C(),className:A?"rounded-full border border-border-dark px-3 py-1 text-xs text-text-secondary-dark hover:bg-white/5":"rounded-full border border-border-dark px-3 py-1 text-xs text-text-secondary-dark hover:bg-surface-dark",children:"Load older"})}),i.jsxs("ul",{role:"list",className:`flex flex-1 flex-col ${A?"gap-0 px-4 py-4":"gap-3 px-4 py-4"}`,children:[Vge({messages:E,unreadAfterSeq:s,unreadDividerLabel:a,layout:o,onReplyInThread:l}),S&&i.jsx(exe,{agentName:e,layout:o}),g&&i.jsx("li",{className:"text-xs text-text-secondary-dark",role:"status",children:"Loading messages…"}),v&&i.jsxs("li",{className:"text-xs text-red-500",role:"alert",children:["Failed to load messages: ",v.message]})]}),i.jsx("div",{ref:N})]})}function Vge(t){const{messages:e,unreadAfterSeq:n,unreadDividerLabel:r,layout:s,onReplyInThread:a}=t,o=[];let l=null,c=null;const d=n!=null&&e.some(h=>h.seq===n);n!=null&&!d&&e.length>0&&o.push(i.jsx(wO,{label:r,layout:s},"unread-divider"));let u=!1;for(const h of e){s==="flat"&&rxe(c,h.createdAt)&&(o.push(i.jsx(Yge,{label:nxe(h.createdAt)},`day-${h.id}`)),l=null),c=h.createdAt;const f=s!=="flat"||l!==h.author.id;o.push(i.jsx($ge,{message:h,layout:s,groupStart:f,onReplyInThread:a},h.id)),l=h.author.id,!u&&d&&h.seq===n&&(o.push(i.jsx(wO,{label:r,layout:s},"unread-divider")),u=!0,l=null)}return o}function wO({label:t,layout:e}){return e==="flat"?i.jsxs("li",{className:"flex items-center gap-4 py-1","data-testid":"unread-divider",role:"separator","aria-label":`${t} messages below`,children:[i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/20","aria-hidden":"true"}),i.jsx("span",{className:"text-[11px] font-bold uppercase tracking-widest text-text-secondary-dark",children:t}),i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/20","aria-hidden":"true"})]}):i.jsxs("li",{className:"flex items-center gap-2 py-1","data-testid":"unread-divider",role:"separator","aria-label":`${t} messages below`,children:[i.jsx("span",{className:"h-px flex-1 bg-rose-400/70","aria-hidden":"true"}),i.jsx("span",{className:"rounded-full bg-rose-500 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-white",children:t}),i.jsx("span",{className:"h-px flex-1 bg-rose-400/70","aria-hidden":"true"})]})}function $ge({message:t,layout:e="bubble",groupStart:n=!0,onReplyInThread:r}){var d;if(e==="flat")return i.jsx(Kge,{message:t,groupStart:n,onReplyInThread:r});const s=t.author.role==="user",a=s?"items-end":"items-start",o=t.deliveryStatus,l=s?"bg-primary text-white":"bg-surface-dark text-text-primary-dark",c=o==="pending"?`${l} opacity-60`:o==="failed"?`${l} ring-2 ring-red-400`:l;return i.jsxs("li",{className:`flex flex-col ${a}`,"data-author-role":t.author.role,"data-delivery-status":o??"sent",children:[i.jsx("div",{className:"mb-0.5 text-xs text-text-secondary-dark",children:t.author.name??t.author.id}),i.jsxs("div",{className:`max-w-prose rounded-2xl px-3 py-2 text-sm shadow-sm ${c}`,children:[WH(t.content),(d=t.attachments)==null?void 0:d.map(u=>u.kind==="image"?i.jsx("img",{src:u.url,alt:u.filename??"attachment",className:"mt-2 max-h-64 max-w-full rounded-lg"},u.id):null)]}),i.jsx(Qge,{message:t})]})}function Kge({message:t,groupStart:e,onReplyInThread:n}){var p;const r=t.deliveryStatus,s=t.author.name??t.author.id,a=t.author.role!=="user",l=r==="pending"?"opacity-50":"",c=typeof n=="function",d=t.replyCount??0,u=c&&d>0,h=c&&r!=="pending"&&r!=="failed",f=$H(t.content);return i.jsxs("li",{className:`group relative flex gap-3 rounded-md py-0.5 pl-2 pr-2 transition-colors hover:bg-white/[0.03] ${e?"mt-3":"mt-px"}`,"data-author-role":t.author.role,"data-delivery-status":r??"sent",children:[a&&e&&i.jsx("span",{"aria-hidden":"true",className:"absolute left-0 top-1 h-[calc(100%-0.5rem)] w-[2px] rounded-full bg-primary/40"}),i.jsx("div",{className:"w-9 shrink-0 select-none",children:e?i.jsx(Zge,{name:s,isAgent:a}):i.jsx("time",{className:"block w-9 pt-[3px] text-right text-[10px] leading-5 tabular-nums text-transparent group-hover:text-text-secondary-dark",children:AT(t.createdAt)})}),i.jsxs("div",{className:"min-w-0 flex-1",children:[e&&i.jsxs("div",{className:"flex items-baseline gap-2",children:[i.jsx("span",{className:`text-[13px] font-bold leading-5 ${a?"text-primary":"text-text-primary-dark"}`,children:s}),a&&i.jsx("span",{className:"rounded border border-border-dark bg-white/5 px-1.5 py-px text-[9px] font-semibold uppercase tracking-wide text-text-secondary-dark",children:"Agent"}),i.jsx("time",{className:"text-[10px] tabular-nums text-text-secondary-dark",children:AT(t.createdAt)})]}),i.jsxs("div",{className:`mt-0.5 max-w-[760px] text-[13px] leading-[1.45] text-text-primary-dark [&_a]:text-primary [&_a]:underline ${l}`,children:[WH(f),(p=t.attachments)==null?void 0:p.map(x=>x.kind==="image"?i.jsx("img",{src:x.url,alt:x.filename??"attachment",className:"mt-2 max-h-64 max-w-full rounded-lg"},x.id):null)]}),r==="pending"&&i.jsx("span",{className:"mt-0.5 inline-flex items-center gap-1 text-[10px] italic text-text-secondary-dark",children:"Sending…"}),r==="failed"&&i.jsx("span",{className:"mt-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-amber-300",role:"alert",children:"Send failed — tap to retry"}),u&&i.jsx(Xge,{message:t,onOpen:()=>n==null?void 0:n(t)})]}),h&&i.jsx(qge,{message:t,onReplyInThread:n})]})}function kv({label:t,children:e,onClick:n,...r}){return i.jsx("button",{type:"button","aria-label":t,title:t,onClick:n,className:"flex h-7 w-7 items-center justify-center rounded-md text-text-secondary-dark transition-colors hover:bg-white/5 hover:text-text-primary-dark",...r,children:e})}function qge({message:t,onReplyInThread:e}){return i.jsxs("div",{"data-testid":`msg-toolbar-${t.id}`,className:"absolute -top-3 right-2 z-10 hidden items-center gap-0.5 rounded-lg border border-border-dark bg-surface-dark p-0.5 shadow-md group-hover:flex",children:[i.jsx(kv,{label:"Add reaction",children:i.jsx(WK,{size:15})}),i.jsx(kv,{label:"Reply in thread","data-testid":`msg-reply-action-${t.id}`,onClick:()=>e(t),children:i.jsx(Ax,{size:15})}),i.jsx(kv,{label:"Copy link",children:i.jsx(_A,{size:15})}),i.jsx(kv,{label:"More actions",children:i.jsx(KF,{size:15})})]})}function Xge({message:t,onOpen:e}){const n=t.replyCount??0,s=[t.author.name??t.author.id].slice(0,3);return i.jsxs("button",{type:"button","data-testid":`msg-thread-summary-${t.id}`,onClick:e,className:"group/chip mt-1 flex w-fit items-center gap-2 rounded-md px-1.5 py-1 text-left transition-colors hover:bg-white/5",children:[i.jsx("span",{className:"flex -space-x-1.5",children:s.map(a=>i.jsx("span",{className:`flex h-5 w-5 items-center justify-center rounded-md text-[9px] font-bold text-white ring-2 ring-background-dark ${Jge(a)}`,"aria-hidden":"true",children:VH(a)},a))}),i.jsxs("span",{className:"text-[12px] font-semibold text-primary group-hover/chip:underline",children:[n," ",n===1?"reply":"replies"]}),t.lastReplyAt&&i.jsxs("span",{className:"text-[11px] font-normal text-text-secondary-dark",children:["Last reply ",txe(t.lastReplyAt)]})]})}function Yge({label:t}){return i.jsxs("li",{className:"relative my-3 flex items-center justify-center",role:"separator","aria-label":t,"data-testid":"day-divider",children:[i.jsx("span",{className:"absolute inset-x-2 top-1/2 h-px -translate-y-1/2 bg-border-dark/50","aria-hidden":"true"}),i.jsx("span",{className:"relative rounded-full border border-border-dark bg-background-dark px-3 py-0.5 text-[11px] font-semibold text-text-secondary-dark",children:t})]})}const kO=["bg-rose-500","bg-orange-500","bg-amber-500","bg-emerald-500","bg-teal-500","bg-sky-500","bg-indigo-500","bg-violet-500","bg-fuchsia-500"];function VH(t){const e=t.split(/[\s\-_.]+/).filter(Boolean);return e.length===0?"?":e.length===1?e[0].slice(0,2).toUpperCase():(e[0][0]+e[1][0]).toUpperCase()}function Jge(t){let e=0;for(let n=0;n<t.length;n+=1)e=e*31+t.charCodeAt(n)>>>0;return kO[e%kO.length]}function Zge({name:t,isAgent:e}){return i.jsx("span",{className:`flex h-9 w-9 items-center justify-center rounded-lg text-[12px] font-bold ${e?"bg-primary/20 text-primary":"bg-indigo-500/20 text-indigo-300"}`,"aria-hidden":"true",children:e?i.jsx($2,{size:16}):VH(t)})}function Qge({message:t}){return t.deliveryStatus==="pending"?i.jsx("span",{className:"mt-0.5 text-[10px] italic text-text-secondary-dark",children:"Sending…"}):t.deliveryStatus==="failed"?i.jsx("span",{className:"mt-0.5 text-[10px] font-medium text-red-500",role:"alert",children:"Send failed — tap to retry"}):i.jsx("time",{className:"mt-0.5 text-[10px] text-text-secondary-dark",children:AT(t.createdAt)})}function exe({agentName:t,layout:e="bubble"}){const n=t?`${t} is thinking`:"Agent is thinking";return e==="flat"?i.jsxs("li",{className:"mt-3 flex items-center gap-3 px-2",role:"status","aria-live":"polite","data-testid":"agent-thinking",children:[i.jsx("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/20 text-primary",children:i.jsx($2,{size:16})}),i.jsxs("span",{className:"inline-flex items-center gap-2 text-[13px] text-text-secondary-dark",children:[i.jsxs("span",{"aria-hidden":"true",className:"flex gap-0.5",children:[i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.3s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.15s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark"})]}),i.jsxs("span",{children:[n,"…"]})]})]}):i.jsx("li",{className:"flex flex-col items-start",role:"status","aria-live":"polite","data-testid":"agent-thinking",children:i.jsx("div",{className:"rounded-2xl bg-surface-dark px-3 py-2 text-sm text-text-secondary-dark shadow-sm",children:i.jsxs("span",{className:"inline-flex items-center gap-1",children:[i.jsxs("span",{"aria-hidden":"true",className:"flex gap-0.5",children:[i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.3s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.15s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark"})]}),i.jsxs("span",{children:[n,"…"]})]})})})}function txe(t){try{const e=new Date(t).getTime();if(Number.isNaN(e))return"";const n=Date.now()-e,r=Math.floor(n/6e4);if(r<1)return"now";if(r<60)return`${r}m`;const s=Math.floor(r/60);if(s<24)return`${s}h`;const a=Math.floor(s/24);return a<7?`${a}d`:new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch{return""}}function AT(t){try{return new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return t}}function nxe(t){try{const e=new Date(t);if(Number.isNaN(e.getTime()))return t;const n=o=>new Date(o.getFullYear(),o.getMonth(),o.getDate()).getTime(),r=n(new Date),s=n(e),a=864e5;return s===r?"Today":s===r-a?"Yesterday":e.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"})}catch{return t}}function rxe(t,e){if(!t)return!0;const n=new Date(t),r=new Date(e);return Number.isNaN(n.getTime())||Number.isNaN(r.getTime())?!1:n.getFullYear()!==r.getFullYear()||n.getMonth()!==r.getMonth()||n.getDate()!==r.getDate()}function $H(t){return t.replace(/\s*\[Thread context file:[^\]]*\]/gi,"").replace(/[ \t]+$/gm,"").trim()}function sxe(){const t=Mp(),[e,n]=k.useState(!1),[r,s]=k.useState(null),a=k.useCallback(async(l,c)=>{n(!0),s(null);try{return await t.sendMessage(l,c)}catch(d){const u=d instanceof Error?d:new Error(String(d));throw s(u),u}finally{n(!1)}},[t]),o=k.useCallback(()=>{s(null),n(!1)},[]);return{send:a,sending:e,error:r,reset:o}}const KH="crewly-chat-collapsed-groups",CO=["bg-blue-500/20 text-blue-400","bg-purple-500/20 text-purple-400","bg-cyan-500/20 text-cyan-400","bg-indigo-500/20 text-indigo-400"];function ixe(t){let e=0;for(let n=0;n<t.length;n+=1)e=e*31+t.charCodeAt(n)>>>0;return CO[e%CO.length]}function axe(){try{const t=localStorage.getItem(KH);if(t){const e=JSON.parse(t);if(Array.isArray(e))return new Set(e.filter(n=>typeof n=="string"))}}catch{}return null}function oxe({workspaceName:t,groups:e,activeConversationId:n=null,onSelectConversation:r,emptyState:s,headerAction:a,isPinned:o,onTogglePin:l,defaultCollapsedGroupIds:c,className:d=""}){const[u,h]=k.useState(""),f=k.useMemo(()=>lxe(e,u),[e,u]),p=k.useMemo(()=>f.reduce((g,v)=>g+TS(v),0),[f]),[x,y]=k.useState(()=>axe()??new Set(c??[])),m=k.useCallback(g=>{y(v=>{const b=new Set(v);b.has(g)?b.delete(g):b.add(g);try{localStorage.setItem(KH,JSON.stringify([...b]))}catch{}return b})},[]);return i.jsxs("aside",{className:`flex h-full w-[240px] flex-col border-r border-border-dark bg-[#232d3b] ${d}`,"aria-label":t?`${t} conversations`:"Conversations","data-testid":"conversation-list-panel",children:[(t||a)&&i.jsxs("header",{className:"border-b border-border-dark p-4",children:[i.jsxs("div",{className:"flex items-center justify-between gap-2",children:[i.jsx("h2",{className:"truncate text-base font-bold text-text-primary-dark",children:t??""}),a]}),i.jsx("div",{className:"relative mt-3",children:i.jsx("input",{type:"text",value:u,onChange:g=>h(g.target.value),placeholder:"Find...","aria-label":"Find a conversation","data-testid":"conv-search",className:"w-full rounded-lg border border-border-dark bg-background-dark px-3 py-1.5 text-[13px] text-text-primary-dark outline-none placeholder:text-text-secondary-dark focus:border-primary focus:ring-1 focus:ring-primary"})})]}),i.jsx("div",{className:"chat-scrollbar flex-1 overflow-y-auto p-2",children:p===0?i.jsx("div",{className:"px-2 py-6 text-[13px] text-text-secondary-dark",role:"status",children:u?"No conversations match your search.":s??"No conversations in this workspace yet."}):f.map(g=>qH(g)?i.jsx(XH,{group:g,activeConversationId:n,onSelectConversation:r,collapsed:x,onToggleCollapse:m,isPinned:o,onTogglePin:l},g.id):null)})]})}function TS(t){var e;return t.rows.length+(((e=t.subGroups)==null?void 0:e.reduce((n,r)=>n+TS(r),0))??0)}function qH(t){return TS(t)>0}function lxe(t,e){const n=e.trim().toLowerCase();if(!n)return t;const r=s=>{var a;return{...s,rows:s.rows.filter(o=>o.title.toLowerCase().includes(n)),subGroups:(a=s.subGroups)==null?void 0:a.map(r)}};return t.map(r)}function XH({group:t,activeConversationId:e,onSelectConversation:n,collapsed:r,onToggleCollapse:s,isPinned:a,onTogglePin:o,depth:l=0}){const c=r.has(t.id),d=(t.subGroups??[]).filter(qH);return i.jsxs("section",{className:l===0?"mb-4":"mt-2","aria-labelledby":`conv-group-${t.id}`,"data-testid":`conv-group-${t.id}`,children:[i.jsxs("button",{type:"button",id:`conv-group-${t.id}`,onClick:()=>s(t.id),"aria-expanded":!c,"data-testid":`conv-group-toggle-${t.id}`,className:"mb-2 flex w-full items-center justify-between px-2",style:{paddingLeft:`${.5+l*.75}rem`},children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(ei,{size:16,className:`text-text-secondary-dark transition-transform ${c?"-rotate-90":""}`}),i.jsx("span",{className:"truncate text-[11px] font-bold uppercase tracking-wider text-text-secondary-dark",children:t.label})]}),i.jsx("span",{className:"text-[10px] text-text-secondary-dark",children:TS(t)})]}),!c&&i.jsxs(i.Fragment,{children:[t.rows.length>0&&i.jsx("ul",{role:"list",className:"flex flex-col gap-0.5",children:t.rows.map(u=>i.jsx("li",{children:i.jsx(cxe,{row:u,isActive:e===u.id,onSelect:n,pinned:(a==null?void 0:a(u))??!1,onTogglePin:o})},u.id))}),d.map(u=>i.jsx(XH,{group:u,activeConversationId:e,onSelectConversation:n,collapsed:r,onToggleCollapse:s,isPinned:a,onTogglePin:o,depth:l+1},u.id))]})]})}function cxe({row:t,isActive:e,onSelect:n,pinned:r,onTogglePin:s}){const a=(t.unreadCount??0)>0,o=(t.mentionCount??0)>0,l=t.kind==="channel",c=l?e?"flex items-center gap-2 rounded-lg border border-primary/20 bg-primary/10 px-3 py-1.5 text-primary":"flex items-center gap-2 rounded-lg px-3 py-1.5 text-text-secondary-dark hover:bg-white/5":e?"group flex items-center gap-3 rounded-lg border border-primary/20 bg-primary/10 px-3 py-2 text-primary":"group flex items-center gap-3 rounded-lg px-3 py-2 text-text-secondary-dark hover:bg-white/5";return i.jsxs("div",{className:"group/row relative flex w-full items-center",children:[i.jsxs("button",{type:"button",onClick:()=>n==null?void 0:n(t),"data-testid":`conv-row-${t.id}`,"data-active":e?"true":"false","data-kind":t.kind,"data-unread":a?"true":"false",className:`min-w-0 flex-1 text-left ${c}`,"aria-current":e?"page":void 0,children:[i.jsx(uxe,{row:t}),l?i.jsx("span",{className:["min-w-0 flex-1 truncate text-[13px]",a?"font-semibold text-text-primary-dark":""].join(" "),children:t.title.replace(/^#+\s*/,"")}):i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:["truncate text-[13px] font-medium",a?"font-semibold text-text-primary-dark":"text-text-primary-dark group-hover:text-primary"].join(" "),children:t.title}),t.badge&&i.jsx("span",{className:"shrink-0 rounded bg-primary/15 px-1.5 py-px text-[10px] font-semibold uppercase tracking-wide text-primary","data-testid":`conv-badge-${t.id}`,children:t.badge}),t.lastMessageAt&&i.jsx("time",{className:"ml-auto shrink-0 text-[10px] text-text-secondary-dark",dateTime:t.lastMessageAt,children:fxe(t.lastMessageAt)})]}),t.lastMessagePreview&&i.jsx("div",{className:"truncate text-[10px] opacity-70",children:t.lastMessagePreview}),t.subtitle&&!t.lastMessagePreview&&i.jsx("div",{className:"truncate text-[10px] opacity-70",children:t.subtitle})]}),o?i.jsxs("span",{className:"inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-rose-500 px-1 text-[10px] font-semibold text-white","data-testid":`conv-mention-pill-${t.id}`,"aria-label":`${t.mentionCount} mentions`,children:["@",t.mentionCount]}):a?i.jsx("span",{className:"inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[10px] font-semibold text-white","data-testid":`conv-unread-pill-${t.id}`,"aria-label":`${t.unreadCount} unread`,children:t.unreadCount}):null]}),s&&i.jsx("button",{type:"button",onClick:d=>{d.stopPropagation(),s(t)},"data-testid":`conv-pin-${t.id}`,"aria-label":r?`Unpin ${t.title}`:`Pin ${t.title}`,"aria-pressed":r,title:r?"Unpin":"Pin",className:["ml-1 shrink-0 rounded p-1 text-text-secondary-dark hover:text-amber-400",r?"text-amber-400":"opacity-0 group-hover/row:opacity-100"].join(" "),children:i.jsx(dxe,{filled:r??!1})})]})}function dxe({filled:t}){return i.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 16 16",className:"h-3.5 w-3.5",children:i.jsx("path",{d:"M9.5 1.5l5 5-2 .5-2.5 2.5L9 13 7 11 3.5 14.5 3 14l3.5-3.5L4.5 8.5 7 6l.5-2.5 2-2z",fill:t?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})})}function uxe({row:t}){return t.kind==="channel"?i.jsx("span",{"aria-hidden":"true",className:"flex shrink-0 items-center justify-center text-base font-medium","data-testid":`conv-icon-${t.id}`,children:"#"}):t.kind==="dm"?i.jsxs("span",{"aria-hidden":"true",className:`relative flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[10px] font-bold uppercase ${ixe(t.title)}`,"data-testid":`conv-icon-${t.id}`,children:[hxe(t.title),t.presence&&i.jsx("span",{className:"absolute -bottom-0.5 -right-0.5 rounded-full bg-surface-dark p-[1px]",children:i.jsx(Fge,{status:t.presence,compact:!0})})]}):i.jsx("span",{"aria-hidden":"true",className:"flex h-8 w-8 shrink-0 items-center justify-center text-xs text-text-secondary-dark","data-testid":`conv-icon-${t.id}`,children:"⟳"})}function hxe(t){const e=t.trim().split(/\s+/).filter(Boolean);return e.length===0?"?":e.length===1?e[0].slice(0,2).toUpperCase():(e[0][0]+e[1][0]).toUpperCase()}function fxe(t){try{const e=new Date(t).getTime(),r=Date.now()-e,s=Math.floor(r/6e4);if(s<1)return"now";if(s<60)return`${s}m`;const a=Math.floor(s/60);if(a<24)return`${a}h`;const o=Math.floor(a/24);return o<7?`${o}d`:new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch{return""}}const pxe="Message — try @ to mention a team or agent",mxe={online:"bg-emerald-400",busy:"bg-amber-400",idle:"bg-amber-400",offline:"bg-gray-500",inactive:"bg-gray-500"};function YH({mentionables:t,placeholder:e=pxe,disabled:n=!1,inactiveHelper:r,onSend:s,className:a=""}){const[o,l]=k.useState(""),[c,d]=k.useState([]),[u,h]=k.useState(!1),[f,p]=k.useState(""),x=k.useRef(null),y=k.useRef(!1),m=k.useMemo(()=>yxe(t,f),[t,f]),g=m.teams.length+m.agents.length,v=k.useCallback(I=>{const B=I.target.value;l(B);const V=AO(B,I.target.selectionStart??B.length);V?(h(!0),p(V.partial)):(h(!1),p(""))},[]),b=k.useCallback(I=>{var K,H;d($=>$.find(L=>L.id===I.id)?$:[...$,I]);const B=((K=x.current)==null?void 0:K.selectionStart)??o.length,V=AO(o,B);if(V){const $=o.slice(0,V.start),L=o.slice(B),U=`@${I.label} `;l($+U+L)}else l($=>`${$}@${I.label} `);h(!1),p(""),(H=x.current)==null||H.focus()},[o]),S=k.useCallback(I=>{d(B=>B.filter(V=>V.id!==I))},[]),C=!n&&(o.trim().length>0||c.length>0),E=k.useCallback(()=>{C&&(s==null||s({content:o.trim(),mentions:c}),l(""),d([]),h(!1),p(""))},[C,c,s,o]),N=k.useCallback(I=>{if(I.key==="Escape"&&u){I.preventDefault(),h(!1);return}if(I.key==="Enter"&&!I.shiftKey){if(y.current||I.nativeEvent.isComposing)return;I.preventDefault(),E()}},[E,u]),T=k.useCallback(()=>{y.current=!0},[]),A=k.useCallback(()=>{y.current=!1},[]),M=k.useCallback(()=>{var I;n||(l(B=>{const V=B.length>0&&!/\s$/.test(B);return`${B}${V?" ":""}@`}),p(""),h(!0),(I=x.current)==null||I.focus())},[n]),P=k.useMemo(()=>{if(r)return r;const I=c[c.length-1];return I?I.routingHint?I.routingHint:I.kind==="team"?"Sent to team channel; TL is primary responder":`Directly notifies ${I.label}`:null},[r,c]);return i.jsxs("div",{className:`relative px-4 pb-4 pt-2 ${a}`,"data-testid":"mention-composer",children:[c.length>0&&i.jsx("ul",{className:"mb-2 flex flex-wrap gap-1.5","aria-label":"Pending mentions","data-testid":"mention-chip-strip",children:c.map(I=>i.jsx("li",{children:i.jsx(xxe,{target:I,onRemove:()=>S(I.id)})},I.id))}),i.jsxs("div",{className:"glass-panel flex flex-col gap-2 rounded-2xl bg-background-dark/50 p-2 focus-within:ring-1 focus-within:ring-primary/50",children:[i.jsx("textarea",{ref:x,value:o,onChange:v,onKeyDown:N,onCompositionStart:T,onCompositionEnd:A,disabled:n,placeholder:e,rows:1,"data-testid":"mention-textarea",className:"min-h-[44px] w-full resize-none border-none bg-transparent px-4 py-2 text-sm text-text-primary-dark placeholder:text-text-secondary-dark focus:outline-none focus:ring-0 disabled:opacity-50"}),i.jsxs("div",{className:"flex items-center justify-between px-2 pb-1",children:[i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(Cv,{label:"Attach",disabled:!0,children:i.jsx(vr,{size:16})}),i.jsx(Cv,{label:"Mention",onClick:M,disabled:n,children:i.jsx(bK,{size:16})}),i.jsx(Cv,{label:"Emoji",disabled:!0,children:i.jsx(VK,{size:16})}),i.jsx(Cv,{label:"Code",disabled:!0,children:i.jsx(AK,{size:16})})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("span",{className:"text-[11px] text-text-secondary-dark",children:"Markdown supported"}),i.jsxs("button",{type:"button",onClick:E,disabled:!C,"data-testid":"mention-send",className:"flex h-8 items-center gap-2 rounded-lg bg-primary px-4 text-[13px] font-bold text-white transition hover:bg-primary/90 active:scale-95 disabled:cursor-not-allowed disabled:opacity-50",children:[i.jsx(Q2,{size:14}),"Send"]})]})]})]}),P&&i.jsx("p",{className:"mt-1 text-[11px] text-text-secondary-dark","data-testid":"mention-helper",children:P}),u&&g>0&&i.jsx(gxe,{teams:m.teams,agents:m.agents,onSelect:b})]})}function Cv({label:t,onClick:e,disabled:n,children:r}){return i.jsx("button",{type:"button",onClick:e,disabled:n,"aria-label":t,title:t,className:"flex h-8 w-8 items-center justify-center rounded-lg text-text-secondary-dark transition hover:bg-white/5 disabled:opacity-40",children:r})}function gxe({teams:t,agents:e,onSelect:n}){return i.jsxs("div",{role:"listbox","data-testid":"mention-suggestions",className:"absolute bottom-[110%] left-4 right-4 z-10 max-h-72 overflow-y-auto rounded-xl border border-border-dark bg-surface-dark shadow-lg",children:[t.length>0&&i.jsx(EO,{label:"Teams",items:t,onSelect:n,testid:"teams"}),e.length>0&&i.jsx(EO,{label:"Agents",items:e,onSelect:n,testid:"agents"})]})}function EO({label:t,items:e,onSelect:n,testid:r}){return i.jsxs("div",{"data-testid":`mention-group-${r}`,children:[i.jsx("div",{className:"border-b border-border-dark bg-background-dark px-3 py-1 text-[10px] font-semibold uppercase tracking-wide text-text-secondary-dark",children:t}),i.jsx("ul",{role:"list",children:e.map(s=>i.jsx("li",{children:i.jsxs("button",{type:"button",onClick:()=>n(s),"data-testid":`mention-suggestion-${s.id}`,className:"flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-white/5",children:[i.jsx(JH,{target:s}),i.jsx("span",{className:"min-w-0 flex-1 truncate text-text-primary-dark",children:s.label}),s.routingHint&&i.jsx("span",{className:"shrink-0 text-[11px] text-text-secondary-dark",children:s.routingHint})]})},s.id))})]})}function xxe({target:t,onRemove:e}){const n=t.kind==="team";return i.jsxs("span",{"data-testid":`mention-chip-${t.id}`,"data-kind":t.kind,className:["inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium ring-1",n?"bg-primary/15 text-primary ring-primary/30":"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30"].join(" "),children:[i.jsx(JH,{target:t,compact:!0}),i.jsxs("span",{children:["@",t.label]}),i.jsx("button",{type:"button",onClick:e,"aria-label":`Remove mention of ${t.label}`,className:"text-current opacity-60 hover:opacity-100",children:"×"})]})}function JH({target:t,compact:e=!1}){var n;return t.kind==="team"?i.jsx("span",{"aria-hidden":"true",className:`inline-flex items-center justify-center rounded ${e?"h-3 w-3 text-[8px]":"h-5 w-5 text-[10px]"} bg-primary/20 font-semibold text-primary`,children:"T"}):i.jsxs("span",{"aria-hidden":"true",className:`relative inline-flex items-center justify-center rounded-full bg-emerald-500/20 font-semibold text-emerald-300 ${e?"h-3 w-3 text-[8px]":"h-5 w-5 text-[10px]"}`,children:[((n=t.label[0])==null?void 0:n.toUpperCase())??"?",t.presence&&i.jsx("span",{"aria-hidden":"true",className:`absolute -bottom-0.5 -right-0.5 inline-block h-1.5 w-1.5 rounded-full ring-2 ring-surface-dark ${mxe[t.presence]}`})]})}function AO(t,e){const n=t.slice(0,e),r=n.lastIndexOf("@");if(r<0||r>0&&!/\s/.test(n[r-1]))return null;const s=n.slice(r+1);return/\s/.test(s)?null:{start:r,partial:s}}function yxe(t,e){const n=e.trim().toLowerCase(),r=s=>!n||s.label.toLowerCase().includes(n);return{teams:t.filter(s=>s.kind==="team"&&r(s)),agents:t.filter(s=>s.kind==="agent"&&r(s))}}const TO=20,vxe=50;function MO(t){return[...t].sort((e,n)=>{const r=Date.parse(e.createdAt),s=Date.parse(n.createdAt);return Number.isFinite(r)&&Number.isFinite(s)&&r!==s?r-s:e.seq!==n.seq?e.seq-n.seq:e.id<n.id?-1:e.id>n.id?1:0})}const bxe=1e4;function NO(t){const e=[],n=new Set;for(const r of t){if(n.has(r.id))continue;const s=Date.parse(r.createdAt);e.some(o=>{var c,d;if(o.channelId!==r.channelId||(((c=o.author)==null?void 0:c.id)??"")!==(((d=r.author)==null?void 0:d.id)??"")||o.content!==r.content)return!1;const l=Date.parse(o.createdAt);return!Number.isFinite(s)||!Number.isFinite(l)?!0:Math.abs(s-l)<=bxe})||(n.add(r.id),e.push(r))}return e}function _xe(t){const e=Mp(),[n,r]=k.useState([]),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState(!1),u=[...t].sort().join("\0"),h=k.useRef(t);h.current=t;const[f,p]=k.useState(TO);k.useEffect(()=>{p(TO)},[u]);const x=k.useCallback(()=>{p(g=>g+vxe)},[]);k.useEffect(()=>{const g=h.current;if(g.length===0){r([]),d(!1),a(!1);return}let v=!1;return a(!0),l(null),Promise.all(g.map(b=>e.listMessages(b).then(S=>S.messages).catch(()=>[]))).then(b=>{if(v)return;const S=NO(MO(b.flat()));r(S),d(ET(S))}).catch(b=>{v||l(b instanceof Error?b:new Error(String(b)))}).finally(()=>{v||a(!1)}),()=>{v=!0}},[u,e]),k.useEffect(()=>{const g=h.current;if(g.length===0)return;const v=g.map(b=>e.subscribeToChannel(b,S=>{S.type==="message"&&r(C=>{const E=NO(MO(HH(C,S.message)));return d(ET(E)),E})}));return()=>v.forEach(b=>b.unsubscribe())},[u,e]);const y=k.useMemo(()=>n.length>f?n.slice(n.length-f):n,[n,f]),m=n.length>f;return{messages:y,loading:s,error:o,agentThinking:c,hasMore:m,loadMore:x}}function Sxe(t,e={}){const n=[],r=[],s=[];for(const a of t){const o=a.type??"dm";if(o==="huddle")r.push(GC(a,"channel"));else if(o==="channel"){if(e.workspaceId&&a.teamId!==e.workspaceId)continue;n.push(GC(a,"channel"))}else s.push(GC(a,"dm"))}return n.sort(WC),r.sort(WC),s.sort(WC),[{id:"channels",label:"Channels",rows:n},{id:"huddles",label:"Huddles",rows:r},{id:"dms",label:"Direct Messages",rows:s}]}function wxe(t,e={}){return k.useMemo(()=>Sxe(t,e),[t,e.workspaceId])}function GC(t,e){return{id:t.id,kind:e,title:t.name,subtitle:t.purpose,lastMessageAt:t.lastMessageAt,presence:e==="dm"?kxe(t.presence):void 0,agentSession:e==="dm"?t.agentSession:void 0}}function kxe(t){if(t)return t}function WC(t,e){const n=t.lastMessageAt?Date.parse(t.lastMessageAt):NaN,r=e.lastMessageAt?Date.parse(e.lastMessageAt):NaN,s=Number.isFinite(n),a=Number.isFinite(r);return s&&a?r-n:s?-1:a?1:t.title.localeCompare(e.title)}function TT({headline:t,body:e,cta:n,testId:r}){return i.jsxs("div",{role:"status","data-testid":r,className:"flex h-full flex-col items-center justify-center gap-3 px-8 py-12 text-center",children:[i.jsx("h3",{className:"text-base font-semibold text-text-primary-dark",children:t}),i.jsx("div",{className:"max-w-md text-sm text-text-secondary-dark",children:e}),n&&i.jsx("div",{className:"mt-2",children:n})]})}function Cxe({teamName:t}){return i.jsx(TT,{testId:"empty-no-channels",headline:`${t} has no conversations yet.`,body:i.jsx(i.Fragment,{children:"Channels are project-level discussions; direct messages are private pings to a single agent. Try one of the quick actions below to get started."}),cta:i.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xs",children:[i.jsx("button",{type:"button",className:"rounded-lg bg-surface-dark px-3 py-1.5 font-medium text-text-primary-dark ring-1 ring-border-dark hover:bg-white/5",children:"Message team lead"}),i.jsx("button",{type:"button",className:"rounded-lg bg-surface-dark px-3 py-1.5 font-medium text-text-primary-dark ring-1 ring-border-dark hover:bg-white/5",children:"Open project channel"}),i.jsx("button",{type:"button",className:"rounded-lg bg-surface-dark px-3 py-1.5 font-medium text-text-primary-dark ring-1 ring-border-dark hover:bg-white/5",children:"Start DM"})]})})}function Exe({kind:t,recipientName:e}){return t==="dm"?i.jsx(TT,{testId:"empty-no-messages-dm",headline:e?`Start a private chat with ${e}`:"Start a private chat",body:i.jsxs(i.Fragment,{children:["Direct messages notify ",e??"this agent"," without broadcasting to the team. Try a starter prompt:",i.jsxs("ul",{className:"mt-3 flex list-inside list-disc flex-col items-start gap-1 text-left",children:[i.jsx("li",{children:'"What are you working on right now?"'}),i.jsx("li",{children:'"Pull the latest from main and share the diff"'})]})]})}):i.jsx(TT,{testId:"empty-no-messages-channel",headline:"No messages yet",body:i.jsxs(i.Fragment,{children:["Use this channel for project coordination and handoffs. Try a starter prompt:",i.jsxs("ul",{className:"mt-3 flex list-inside list-disc flex-col items-start gap-1 text-left",children:[i.jsx("li",{children:'"@team — kicking off the next sprint, blockers welcome"'}),i.jsx("li",{children:'"Anyone able to review PR #326?"'})]})]})})}function Axe({message:t,detail:e,onDismiss:n}){return i.jsxs("div",{role:"alert","data-testid":"chat-error-toast",className:"fixed bottom-4 right-4 z-50 flex max-w-md items-start gap-3 rounded-lg border border-rose-300 bg-rose-50 px-4 py-3 text-sm text-rose-800 shadow-lg dark:border-rose-700/40 dark:bg-rose-900/30 dark:text-rose-100",children:[i.jsxs("div",{className:"flex-1",children:[i.jsx("div",{className:"font-medium",children:t}),e&&i.jsx("div",{className:"mt-0.5 text-xs opacity-80","data-testid":"chat-error-toast-detail",children:e})]}),n&&i.jsx("button",{type:"button",onClick:n,"aria-label":"Dismiss error","data-testid":"chat-error-toast-dismiss",className:"shrink-0 rounded p-0.5 text-rose-700 hover:bg-rose-100 dark:text-rose-200 dark:hover:bg-rose-800/40",children:"×"})]})}async function Txe(){var n;const e=await(await fetch("/api/chat/agents")).json();return((n=e==null?void 0:e.data)==null?void 0:n.agents)??[]}function Mxe({onClose:t,onCreate:e,loadAgents:n=Txe}){const[r,s]=k.useState([]),[a,o]=k.useState(!0),[l,c]=k.useState(null),[d,u]=k.useState(""),[h,f]=k.useState(new Set),[p,x]=k.useState(!1),[y,m]=k.useState(null);k.useEffect(()=>{let S=!1;return(async()=>{try{const C=await n();S||s(C)}catch(C){S||c(C instanceof Error?C.message:String(C))}finally{S||o(!1)}})(),()=>{S=!0}},[n]);const g=S=>{f(C=>{const E=new Set(C);return E.has(S)?E.delete(S):E.add(S),E})},v=k.useMemo(()=>d.trim().length>0&&h.size>=2&&!p,[d,h,p]),b=async()=>{if(v){x(!0),m(null);try{await e(d.trim(),[...h])}catch(S){m(S instanceof Error?S.message:String(S)),x(!1)}}};return i.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",role:"dialog","aria-modal":"true","aria-label":"Create group chat","data-testid":"create-group-modal",children:i.jsxs("div",{className:"flex max-h-[80vh] w-full max-w-md flex-col rounded-lg border border-border-dark bg-surface-dark shadow-xl",children:[i.jsxs("header",{className:"border-b border-border-dark px-4 py-3",children:[i.jsx("h2",{className:"text-base font-semibold text-text-primary-dark",children:"New group chat"}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Pull two or more agents into one room. Messages reach everyone."})]}),i.jsx("div",{className:"px-4 py-3",children:i.jsx("input",{type:"text",value:d,onChange:S=>u(S.target.value),placeholder:"Group name (e.g. Launch crew)",className:"mb-3 w-full rounded-md border border-border-dark bg-background-dark px-3 py-2 text-sm text-text-primary-dark placeholder:text-text-secondary-dark focus:border-primary focus:outline-none","aria-label":"Group name"})}),i.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto border-t border-border-dark px-2 py-2",children:[a&&i.jsx("p",{className:"px-2 py-2 text-sm text-text-secondary-dark",children:"Loading agents…"}),l&&i.jsxs("p",{className:"px-2 py-2 text-sm text-red-400",role:"alert",children:["Failed to load agents: ",l]}),!a&&!l&&r.length===0&&i.jsx("p",{className:"px-2 py-2 text-sm text-text-secondary-dark",children:"No agents available."}),r.map(S=>{const C=h.has(S.agentSession);return i.jsxs("label",{className:"flex cursor-pointer items-center gap-3 rounded-md px-2 py-2 hover:bg-background-dark",children:[i.jsx("input",{type:"checkbox",checked:C,onChange:()=>g(S.agentSession),className:"h-4 w-4"}),i.jsxs("span",{className:"min-w-0",children:[i.jsx("span",{className:"block truncate text-sm text-text-primary-dark",children:S.name}),i.jsx("span",{className:"block truncate text-xs text-text-secondary-dark",children:S.role})]})]},S.agentSession)})]}),y&&i.jsx("p",{className:"px-4 py-1 text-xs text-red-400",role:"alert",children:y}),i.jsxs("footer",{className:"flex items-center justify-between border-t border-border-dark px-4 py-3",children:[i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:[h.size," selected"]}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx("button",{type:"button",onClick:t,className:"rounded-md border border-border-dark px-3 py-1.5 text-sm text-text-secondary-dark hover:bg-background-dark",children:"Cancel"}),i.jsx("button",{type:"button",onClick:()=>void b(),disabled:!v,className:"rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-white hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"create-group-submit",children:p?"Creating…":"Create group"})]})]})]})})}const ZH="crewly-chat-pinned",Nxe=[ug];function jxe(){try{const t=localStorage.getItem(ZH);if(t){const e=JSON.parse(t);if(Array.isArray(e))return new Set(e.filter(n=>typeof n=="string"))}}catch{}return new Set(Nxe)}function Rxe(){const[t,e]=k.useState(jxe),n=k.useCallback(s=>{e(a=>{const o=new Set(a);o.has(s)?o.delete(s):o.add(s);try{localStorage.setItem(ZH,JSON.stringify([...o]))}catch{}return o})},[]),r=k.useCallback(s=>t.has(s),[t]);return{pinned:t,isPinned:r,toggle:n}}const Ixe="home";function Pxe(t){return`team:${t}`}function Lxe({backendURL:t,authToken:e,client:n,mentionables:r=[],initialConversationId:s,directoryAgents:a=[],teams:o=[],onEnsureDm:l}){return i.jsx(Pge,{mode:"real",backendURL:t,authToken:e,client:n,children:i.jsx(Dxe,{mentionables:r,initialConversationId:s,directoryAgents:a,teams:o,onEnsureDm:l})})}const VC="agent:",mb="slack-";function Im(t){return t.id.startsWith(mb)?t.id:t.agentSession||t.id}function MT(t){return t.flatMap(e=>[...e.rows,...MT(e.subGroups??[])])}function Dxe({mentionables:t,initialConversationId:e,directoryAgents:n,teams:r,onEnsureDm:s}){var V;const{channels:a,loading:o,error:l,refresh:c}=zge(),d=Mp(),u=Rxe(),[h,f]=k.useState(!1),p=k.useMemo(()=>{const K=new Set(a.filter($=>($.type??"dm")==="dm"&&$.agentSession).map($=>$.agentSession)),H=n.filter($=>$.agentSession&&!K.has($.agentSession)).map($=>({id:`${VC}${$.agentSession}`,agentSession:$.agentSession,name:$.name,purpose:$.role,createdAt:"",type:"dm",presence:$.presence==="online"?"online":$.presence==="busy"?"busy":"offline"}));return H.length>0?[...a,...H]:a},[a,n]),[x,y]=k.useState(e??null),m=wxe(p,{workspaceId:void 0}),g=k.useMemo(()=>{var K;return((K=m.find(H=>H.id==="channels"))==null?void 0:K.rows)??[]},[m]),v=k.useMemo(()=>{var K;return((K=m.find(H=>H.id==="huddles"))==null?void 0:K.rows)??[]},[m]),b=k.useMemo(()=>{var K;return((K=m.find(H=>H.id==="dms"))==null?void 0:K.rows)??[]},[m]),S=k.useMemo(()=>{var K;return(K=b.find(H=>H.agentSession===ug&&!H.id.startsWith(mb)))==null?void 0:K.id},[b]),C=k.useMemo(()=>b.filter(K=>K.id.startsWith(mb)).map(K=>K.id),[b]),E=k.useMemo(()=>{const K=new Map;for(const H of p)(H.type??"dm")==="channel"&&H.teamId&&K.set(H.id,H.teamId);return K},[p]),N=k.useMemo(()=>{const K=new Map(n.map(Q=>[Q.agentSession,Q.role])),H=new Set(r.flatMap(Q=>Q.leaderSessions)),$=Q=>Q==="team-leader",L=Q=>{const re=Q.agentSession?K.get(Q.agentSession):void 0,ie=!!Q.agentSession&&H.has(Q.agentSession)||$(re);let de=Q;return re&&(de={...de,subtitle:re}),ie&&(de={...de,badge:"Lead"}),de},U=Q=>{var ie;const re=E.get(Q);return re?(ie=r.find(de=>de.id===re))==null?void 0:ie.name:void 0},R=g.map(Q=>{const re=U(Q.id);return re?{...Q,title:re}:Q}),D=b.filter(Q=>Q.agentSession&&!Q.id.startsWith(mb)),G=Q=>Q==="online"?0:Q==="busy"?1:Q==="offline"?2:3,F=(Q,re)=>{if(Q.agentSession===ug)return-1;if(re.agentSession===ug)return 1;const ie=G(Q.presence)-G(re.presence);if(ie!==0)return ie;const de=Q.lastMessageAt??"",ee=re.lastMessageAt??"";return de!==ee?ee.localeCompare(de):Q.title.localeCompare(re.title)},J=[...D].filter(Q=>u.isPinned(Im(Q))).sort(F).map(L),q=new Set(J.map(Q=>Im(Q))),te=[...D].filter(Q=>!q.has(Im(Q))).sort(F).map(L),z=[];return J.length>0&&z.push({id:"pinned",label:"Pinned",rows:J}),R.length>0&&z.push({id:"channels",label:"Channels",rows:R}),te.length>0&&z.push({id:"dms",label:"Direct messages",rows:te}),v.length>0&&z.push({id:"huddles",label:"Group chats",rows:v}),z},[r,b,v,g,E,u,n]),T=k.useMemo(()=>N.reduce((K,H)=>K+H.rows.length,0),[N]),A=x??((V=MT(N).find(K=>!K.id.startsWith(VC)))==null?void 0:V.id)??null,M=k.useCallback(async K=>{if(K.id.startsWith(VC)&&K.agentSession&&s){const H=await s(K.agentSession);await c(),y(H);return}y(K.id)},[s,c]),P=k.useCallback(async(K,H)=>{const $=await d.createHuddle({name:K,memberSessions:H});await c(),y($.id),f(!1)},[d,c]),I=k.useMemo(()=>MT(N).find(K=>K.id===A),[N,A]),B=k.useMemo(()=>!S||(I==null?void 0:I.id)!==S||C.length===0?null:[S,...C],[I,S,C]);return i.jsxs("div",{className:"flex h-full w-full bg-background-dark","data-testid":"team-chat-page","data-loading":o?"true":"false","data-error":l?"true":"false",children:[i.jsx(oxe,{workspaceName:"Home",groups:N,activeConversationId:A,onSelectConversation:M,isPinned:K=>u.isPinned(Im(K)),onTogglePin:K=>u.toggle(Im(K)),headerAction:i.jsx("button",{type:"button",onClick:()=>f(!0),className:"flex h-6 w-6 items-center justify-center rounded bg-surface-dark text-text-secondary-dark transition hover:text-primary","data-testid":"new-group-button",title:"Create a multi-agent group chat","aria-label":"Create a multi-agent group chat",children:i.jsx(vr,{size:16})}),emptyState:T===0&&!o?i.jsx(Cxe,{teamName:"This workspace"}):void 0}),i.jsx(Oxe,{conversation:I,mentionables:t,mergeChannelIds:B}),h&&i.jsx(Mxe,{onClose:()=>f(!1),onCreate:P})]})}function Oxe({conversation:t,mentionables:e,mergeChannelIds:n}){return t?n&&n.length>0?i.jsx(Fxe,{conversation:t,mentionables:e,channelIds:n}):i.jsx(Bxe,{conversation:t,mentionables:e}):i.jsx("section",{className:"flex flex-1 items-center justify-center bg-background-dark text-sm text-text-secondary-dark","data-testid":"team-chat-right-panel","aria-label":"Conversation thread",children:"Select a conversation from the list to start chatting."})}function Bxe({conversation:t,mentionables:e}){const{messages:n,agentThinking:r,hasMore:s,loadMore:a}=GH(t.id);return i.jsx(QH,{conversation:t,mentionables:e,messages:n,agentThinking:r,hasMore:s,onLoadMore:a})}function Fxe({conversation:t,mentionables:e,channelIds:n}){const{messages:r,agentThinking:s,hasMore:a,loadMore:o}=_xe(n);return i.jsx(QH,{conversation:t,mentionables:e,messages:r,agentThinking:s,hasMore:a,onLoadMore:o})}function QH({conversation:t,mentionables:e,messages:n,agentThinking:r,hasMore:s,onLoadMore:a}){const{send:o,error:l,reset:c}=sxe(),[d,u]=k.useState(null);k.useEffect(()=>{u(null)},[t.id]);const h=k.useMemo(()=>zxe(l),[l]),f=t.kind==="dm"?t.title:void 0,p=k.useMemo(()=>d?n.find(b=>b.id===d):void 0,[n,d]),x=k.useMemo(()=>d?Hge(n,d):[],[n,d]),y=k.useCallback(async b=>{const S=b.mentions.map(C=>C.id);try{await o(t.id,{content:b.content,mentions:S,threadId:d??void 0})}catch{}},[t.id,o,d]),m=k.useCallback(b=>{u(b.id)},[]),g=k.useCallback(()=>{u(null)},[]),v=d!==null;return i.jsxs("section",{className:"flex flex-1 bg-background-dark","data-testid":"team-chat-right-panel","aria-label":`Conversation with ${t.title}`,"data-thread-active":v?"true":"false",children:[i.jsxs("div",{className:"flex min-w-0 flex-1 flex-col bg-background-dark",children:[i.jsxs("header",{className:"flex items-center justify-between gap-4 border-b border-border-dark bg-background-dark/30 px-6 py-3 backdrop-blur-md",children:[i.jsxs("div",{className:"min-w-0 leading-tight",children:[i.jsx("h2",{className:"truncate text-base font-bold text-text-primary-dark",children:t.kind==="channel"?`#${t.title.replace(/^#+\s*/,"")}`:t.title}),t.subtitle&&i.jsx("p",{className:"truncate text-[11px] text-text-secondary-dark",children:t.subtitle})]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(jO,{label:"Search",children:i.jsx(Z2,{size:18})}),i.jsx(jO,{label:"Conversation info",children:i.jsx(Tu,{size:18})})]})]}),i.jsx(Wge,{channelId:t.id,agentName:f,layout:"flat",hideReplies:!0,onReplyInThread:m,messages:n,agentThinking:r,hasMore:s,onLoadMore:a,emptyState:i.jsx(Exe,{kind:t.kind==="dm"?"dm":"channel",recipientName:f})}),i.jsx(YH,{mentionables:e,onSend:y})]}),v&&i.jsx(Uxe,{rootMessage:p,replies:x,mentionables:e,onClose:g,onSend:y}),h&&i.jsx(Axe,{message:h.message,detail:h.detail,onDismiss:c})]})}function jO({label:t,children:e}){return i.jsx("button",{type:"button","aria-label":t,title:t,className:"flex h-9 w-9 items-center justify-center rounded-lg text-text-secondary-dark transition hover:bg-white/5 hover:text-text-primary-dark",children:e})}function Uxe({rootMessage:t,replies:e,mentionables:n,onClose:r,onSend:s}){const a=e.length;return i.jsxs("aside",{"data-testid":"thread-panel","aria-label":"Thread",className:"flex w-[380px] shrink-0 flex-col border-l border-border-dark bg-background-dark",children:[i.jsxs("header",{className:"flex items-center justify-between gap-4 border-b border-border-dark bg-background-dark/30 px-4 py-3 backdrop-blur-md",children:[i.jsxs("div",{className:"leading-tight",children:[i.jsx("h3",{className:"text-sm font-bold text-text-primary-dark",children:"Thread"}),a>0&&i.jsxs("p",{className:"text-[11px] text-text-secondary-dark",children:[a," ",a===1?"reply":"replies"]})]}),i.jsx("button",{type:"button",onClick:r,"data-testid":"thread-close","aria-label":"Close thread",className:"flex h-8 w-8 items-center justify-center rounded-lg text-text-secondary-dark transition hover:bg-white/5 hover:text-text-primary-dark",children:i.jsx(On,{size:18})})]}),i.jsxs("div",{className:"chat-scrollbar flex flex-1 flex-col gap-3 overflow-y-auto px-4 py-4",children:[t?i.jsx(RO,{message:t,isRoot:!0}):i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Thread root unavailable."}),i.jsxs("div",{className:"flex items-center gap-3 py-1",children:[i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/30","aria-hidden":"true"}),i.jsxs("span",{className:"text-[10px] font-bold uppercase tracking-widest text-text-secondary-dark",children:[a," ",a===1?"reply":"replies"]}),i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/30","aria-hidden":"true"})]}),e.map(o=>i.jsx(RO,{message:o},o.id))]}),i.jsx(YH,{mentionables:n,onSend:s,placeholder:"Reply…"})]})}function RO({message:t,isRoot:e=!1}){const n=t.author.role!=="user",r=t.author.name??t.author.id,s=(()=>{try{return new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}})();return i.jsxs("div",{className:"flex flex-col","data-testid":`thread-msg-${t.id}`,"data-author-role":t.author.role,children:[i.jsxs("div",{className:"flex items-baseline gap-2",children:[i.jsx("span",{className:`text-[13px] font-bold ${n?"text-primary":"text-text-primary-dark"}`,children:r}),i.jsx("time",{className:"text-[10px] text-text-secondary-dark",children:s})]}),i.jsx("div",{className:"mt-0.5 max-w-full whitespace-pre-wrap break-words text-sm leading-relaxed text-text-primary-dark",children:$H(t.content)})]})}function zxe(t){if(!t)return null;const e=t;switch(e.code){case"validation_error":return{message:"Could not send message — request was rejected.",detail:e.message};case"payload_too_large":return{message:"Message is too large to send.",detail:e.message};case"channel_not_found":case"channel_archived":return{message:"This conversation is no longer available.",detail:e.message};case"forbidden":return{message:"You do not have permission to send here.",detail:e.message};case"rate_limited":return{message:"Slow down — too many sends in a short window.",detail:e.message};case"network_error":return{message:"Network error — message did not send.",detail:e.message};default:return{message:"Could not send message.",detail:t.message}}}function Hxe(){return({}.VITE_CHAT_MODE??"").toString().toLowerCase()==="mock"?"mock":"real"}function Gxe(){const t=({}.VITE_CHAT_BACKEND_URL??"").toString();return t?t.replace(/\/+$/,""):typeof window<"u"?window.location.origin:""}async function $C(t,e){var n;try{const s=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).json();return((n=s==null?void 0:s.data)==null?void 0:n.id)??null}catch{return null}}function Wxe(){const[t]=pp(),{teams:e}=P6(),{isCollapsed:n,collapseSidebar:r,expandSidebar:s}=T1();k.useEffect(()=>{const E=!n;return r(),()=>{E&&s()}},[]);const a=Hxe(),o=a==="real"?Gxe():void 0,l=k.useMemo(()=>_Q(e),[e]),c=k.useMemo(()=>SQ(e),[e]),d=k.useMemo(()=>{const E=new Set,N=[];for(const T of e)for(const A of T.members??[]){const M=A.sessionName;!M||E.has(M)||(E.add(M),N.push({agentSession:M,name:A.name,presence:F6(A.agentStatus),teamName:T.name,role:A.role}))}return N},[e]),u=k.useMemo(()=>e.map(E=>{var I;const N=(I=E.leaderIds)!=null&&I.length?E.leaderIds:E.leaderId?[E.leaderId]:[],T=new Set(N),A=E.members??[],M=A.filter(B=>B.sessionName&&(T.has(B.id)||B.hierarchyLevel===1)).map(B=>B.sessionName),P=A.filter(B=>B.sessionName).map(B=>B.sessionName);return{id:E.id,name:E.name,leaderSessions:M,memberSessions:P,parentTeamId:E.parentTeamId}}),[e]),h=t.get(Ml)||null,f=k.useCallback(async E=>{const N=d.find(A=>A.agentSession===E);return await $C("/api/chat/channels/dm/ensure",{agentSession:E,name:(N==null?void 0:N.name)??E})??""},[d]),p=k.useMemo(()=>u.map(E=>E.id),[u]),x=`${h??"__none__"}|${p.join(",")}`,[y,m]=k.useState(null),[g,v]=k.useState(null),b=a!=="real"||y===x;if(k.useEffect(()=>{if(a!=="real")return;let E=!1;return(async()=>{const N=await $C("/api/chat/channels/dm/ensure",{agentSession:ug,name:bQ,purpose:"Talk to the orchestrator"});await Promise.all(p.map(T=>$C("/api/chat/channels/team/ensure",{teamId:T}))),E||(N&&v(N),m(x))})(),()=>{E=!0}},[a,x,p]),!b)return i.jsx("div",{className:"flex h-full items-center justify-center text-sm text-text-secondary-dark",role:"status",children:"Opening chat…"});const S=h?Pxe(h):Ixe,C=h?null:g;return i.jsx(Lxe,{backendURL:o,teamLabels:l,mentionables:c,initialWorkspaceId:S,initialConversationId:C,directoryAgents:d,teams:u,onEnsureDm:f})}const hd="/api/marketplace";async function Vxe(t){const e=new URLSearchParams;t!=null&&t.type&&e.set("type",t.type),t!=null&&t.search&&e.set("search",t.search),t!=null&&t.sort&&e.set("sort",t.sort);const n=e.toString(),r=`${hd}${n?`?${n}`:""}`;return(await Ye.get(r)).data.data}async function $xe(t){return(await Ye.get(`${hd}/${t}`)).data.data}async function eG(t){return(await Ye.post(`${hd}/${t}/install`)).data}async function tG(t){return(await Ye.post(`${hd}/${t}/uninstall`)).data}async function Kxe(t){return(await Ye.post(`${hd}/${t}/update`)).data}async function IO(){await Ye.post(`${hd}/refresh`)}async function qxe(t){const e=t?`?status=${t}`:"";return(await Ye.get(`${hd}/submissions${e}`)).data.data}async function Xxe(t,e,n){return(await Ye.post(`${hd}/submissions/${t}/review`,{action:e,notes:n})).data}const Yxe=4e3;function nG(){const[t,e]=k.useState([]),n=k.useRef(0),r=k.useCallback((a,o="info")=>{const l=`toast-${++n.current}`,c={id:l,message:a,type:o};e(d=>[...d,c]),setTimeout(()=>{e(d=>d.filter(u=>u.id!==l))},Yxe)},[]),s=k.useCallback(a=>{e(o=>o.filter(l=>l.id!==a))},[]);return{toasts:t,addToast:r,dismissToast:s}}const Jxe={success:"border-green-500 bg-green-500/10 text-green-300",error:"border-red-500 bg-red-500/10 text-red-300",info:"border-blue-500 bg-blue-500/10 text-blue-300"};function rG({toasts:t,onDismiss:e}){return t.length===0?null:i.jsx("div",{className:"fixed bottom-4 right-4 z-50 flex flex-col gap-2 max-w-sm",role:"log","aria-live":"polite",children:t.map(n=>i.jsxs("div",{"data-testid":`toast-${n.type}`,className:`flex items-center gap-3 px-4 py-3 rounded-lg border text-sm shadow-lg backdrop-blur-sm ${Jxe[n.type]}`,children:[i.jsx("span",{className:"flex-1",children:n.message}),i.jsx("button",{onClick:()=>e(n.id),className:"text-gray-400 hover:text-white transition-colors shrink-0","aria-label":"Dismiss notification",children:i.jsx(On,{className:"w-3.5 h-3.5"})})]},n.id))})}const Zxe=[{label:"All",value:"all"},{label:"Skills",value:"skill"},{label:"3D Models",value:"model"},{label:"Roles",value:"role"},{label:"MCP Tools",value:"mcp_tool"}],Qxe=[{label:"Popular",value:"popular"},{label:"Highest Rated",value:"rating"},{label:"Newest",value:"newest"}];function e0e(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}const t0e={skill:"bg-blue-500/20 text-blue-400",model:"bg-primary/20 text-primary",role:"bg-emerald-500/20 text-emerald-400",mcp_tool:"bg-orange-500/20 text-orange-400"};function n0e(){const[t,e]=k.useState("browse"),[n,r]=k.useState([]),[s,a]=k.useState([]),[o,l]=k.useState(!0),[c,d]=k.useState("all"),[u,h]=k.useState(""),[f,p]=k.useState("popular"),[x,y]=k.useState(null),[m,g]=k.useState(null),{toasts:v,addToast:b,dismissToast:S}=nG(),C=k.useCallback(async()=>{try{l(!0),g(null);const I=await Vxe({type:c==="all"?void 0:c,search:u||void 0,sort:f});r(I)}catch{g("Failed to load marketplace items")}finally{l(!1)}},[c,u,f]);k.useEffect(()=>{C()},[C]);const E=async I=>{y(I);try{const B=await eG(I);b(B.message||`Installed ${I}`,B.success?"success":"error"),await C()}catch(B){const V=B instanceof Error?B.message:"Install failed";b(V,"error")}y(null)},N=async I=>{y(I);try{const B=await tG(I);b(B.message||`Uninstalled ${I}`,B.success?"success":"error"),await C()}catch(B){const V=B instanceof Error?B.message:"Uninstall failed";b(V,"error")}y(null)},T=async I=>{y(I);try{const B=await Kxe(I);b(B.message||`Updated ${I}`,B.success?"success":"error"),await C()}catch(B){const V=B instanceof Error?B.message:"Update failed";b(V,"error")}y(null)},A=async()=>{try{await IO(),b("Registry refreshed","success"),await C()}catch{b("Failed to refresh registry","error")}},M=k.useCallback(async()=>{try{l(!0),g(null);const I=await qxe();a(I)}catch{g("Failed to load submissions")}finally{l(!1)}},[]);k.useEffect(()=>{t==="submissions"&&M()},[t,M]);const P=async(I,B)=>{y(I);try{const V=await Xxe(I,B);b(V.message||`${B==="approve"?"Approved":"Rejected"}`,V.success?"success":"error"),await M(),B==="approve"&&await IO()}catch(V){const K=V instanceof Error?V.message:"Review failed";b(K,"error")}y(null)};return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto",children:[i.jsxs("div",{className:"flex items-center justify-between mb-6",children:[i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Marketplace"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Browse and install skills, models, and tools."})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsxs("div",{className:"flex gap-1 bg-surface-dark border border-border-dark rounded-lg p-1",children:[i.jsxs("button",{onClick:()=>e("browse"),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-colors ${t==="browse"?"bg-primary/10 text-primary":"text-text-secondary-dark hover:text-text-primary-dark"}`,children:[i.jsx(SA,{className:"w-3.5 h-3.5"}),"Browse"]}),i.jsxs("button",{onClick:()=>e("submissions"),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-colors ${t==="submissions"?"bg-primary/10 text-primary":"text-text-secondary-dark hover:text-text-primary-dark"}`,children:[i.jsx(nU,{className:"w-3.5 h-3.5"}),"Submissions"]})]}),i.jsxs("button",{onClick:A,className:"flex items-center gap-2 px-3 py-1.5 text-sm bg-surface-dark hover:bg-background-dark text-text-secondary-dark hover:text-text-primary-dark border border-border-dark rounded-lg transition-colors","aria-label":"Refresh marketplace",children:[i.jsx(zn,{className:"w-4 h-4"}),"Refresh"]})]})]}),t==="browse"&&i.jsxs(i.Fragment,{children:[i.jsx(ld,{tabs:Zxe.map(I=>({value:I.value,label:I.label})),activeTab:c,onTabChange:I=>d(I),searchPlaceholder:"Search...",searchValue:u,onSearchChange:h,searchDebounceMs:0,trailing:i.jsx(Mx,{options:Qxe,value:f,onChange:I=>p(I),"aria-label":"Sort by",className:"w-[140px]"}),className:"mb-6"}),o?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",role:"status",children:"Loading marketplace..."}):m?i.jsx("div",{className:"text-center py-16 text-red-400",role:"alert",children:m}):n.length===0?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",children:"No items found."}):i.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:n.map(I=>i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl p-5 hover:border-primary/30 transition-colors","data-testid":`marketplace-item-${I.id}`,children:[i.jsxs("div",{className:"flex items-start justify-between mb-3",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${t0e[I.type]}`,children:I.type}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["v",I.version]})]}),I.installStatus==="installed"&&i.jsx(br,{className:"w-4 h-4 text-green-400","aria-label":"Installed"}),I.installStatus==="update_available"&&i.jsx(Xg,{className:"w-4 h-4 text-yellow-400","aria-label":"Update available"})]}),i.jsx("h3",{className:"text-base font-semibold text-white mb-1",children:I.name}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-3 line-clamp-2",children:I.description}),i.jsxs("div",{className:"flex items-center justify-between text-xs text-text-secondary-dark mb-4",children:[i.jsxs("span",{children:["by ",I.author]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(tM,{className:"w-3 h-3 text-yellow-500"}),I.rating.toFixed(1)]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(gp,{className:"w-3 h-3"}),e0e(I.downloads)]})]})]}),i.jsxs("div",{className:"flex gap-2",children:[I.installStatus==="not_installed"&&i.jsxs("button",{onClick:()=>E(I.id),disabled:x===I.id,className:"flex-1 flex items-center justify-center gap-1 px-3 py-1.5 text-sm bg-primary hover:bg-primary/90 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(SA,{className:"w-3 h-3"}),x===I.id?"Installing...":"Install"]}),I.installStatus==="installed"&&i.jsx("button",{onClick:()=>N(I.id),disabled:x===I.id,className:"flex-1 px-3 py-1.5 text-sm bg-background-dark hover:bg-red-900/50 text-text-primary-dark hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:x===I.id?"Removing...":"Uninstall"}),I.installStatus==="update_available"&&i.jsxs(i.Fragment,{children:[i.jsxs("button",{onClick:()=>T(I.id),disabled:x===I.id,className:"flex-1 flex items-center justify-center gap-1 px-3 py-1.5 text-sm bg-yellow-600 hover:bg-yellow-500 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(Xg,{className:"w-3 h-3"}),x===I.id?"Updating...":"Update"]}),i.jsx("button",{onClick:()=>N(I.id),disabled:x===I.id,className:"px-3 py-1.5 text-sm bg-background-dark hover:bg-red-900/50 text-text-primary-dark hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:"Remove"})]})]})]},I.id))})]}),t==="submissions"&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"mb-6",children:i.jsxs("p",{className:"text-sm text-text-secondary-dark",children:["Submit skills via CLI: ",i.jsx("code",{className:"bg-background-dark px-2 py-0.5 rounded text-xs text-text-primary-dark",children:"crewly publish path/to/skill --submit"})]})}),o?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",role:"status",children:"Loading submissions..."}):m?i.jsx("div",{className:"text-center py-16 text-red-400",role:"alert",children:m}):s.length===0?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",children:"No submissions yet."}):i.jsx("div",{className:"space-y-3",children:s.map(I=>i.jsx("div",{className:"bg-surface-dark border border-border-dark rounded-xl p-5 hover:border-primary/30 transition-colors","data-testid":`submission-${I.id}`,children:i.jsxs("div",{className:"flex items-start justify-between",children:[i.jsxs("div",{className:"flex-1",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx("h3",{className:"text-base font-semibold text-white",children:I.name}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["v",I.version]}),i.jsxs("span",{className:`flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium ${I.status==="pending"?"bg-yellow-500/20 text-yellow-400":I.status==="approved"?"bg-green-500/20 text-green-400":"bg-red-500/20 text-red-400"}`,children:[I.status==="pending"&&i.jsx(fr,{className:"w-3 h-3"}),I.status==="approved"&&i.jsx(fa,{className:"w-3 h-3"}),I.status==="rejected"&&i.jsx(Fl,{className:"w-3 h-3"}),I.status]})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-2",children:I.description}),i.jsxs("div",{className:"flex items-center gap-4 text-xs text-text-secondary-dark",children:[i.jsxs("span",{children:["by ",I.author]}),i.jsx("span",{children:I.category}),i.jsx("span",{children:new Date(I.submittedAt).toLocaleDateString()})]}),I.reviewNotes&&i.jsxs("p",{className:"mt-2 text-xs text-text-secondary-dark italic",children:["Review: ",I.reviewNotes]})]}),I.status==="pending"&&i.jsxs("div",{className:"flex gap-2 ml-4",children:[i.jsxs("button",{onClick:()=>P(I.id,"approve"),disabled:x===I.id,className:"flex items-center gap-1 px-3 py-1.5 text-sm bg-green-600 hover:bg-green-500 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(fa,{className:"w-3 h-3"}),x===I.id?"...":"Approve"]}),i.jsx("button",{onClick:()=>P(I.id,"reject"),disabled:x===I.id,className:"px-3 py-1.5 text-sm bg-background-dark hover:bg-red-900/50 text-text-primary-dark hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:"Reject"})]})]})},I.id))})]}),i.jsx(rG,{toasts:v,onDismiss:S})]})}const r0e={skill:"bg-blue-500/20 text-blue-400",model:"bg-primary/20 text-primary",role:"bg-emerald-500/20 text-emerald-400",mcp_tool:"bg-orange-500/20 text-orange-400"};function s0e(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function i0e(){var v;const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(!1),[u,h]=k.useState(!1),{toasts:f,addToast:p,dismissToast:x}=nG();k.useEffect(()=>{t&&y(t)},[t]);const y=async b=>{try{a(!0),l(null);const S=await $xe(b);r(S)}catch{l("Failed to load item details")}finally{a(!1)}},m=async()=>{if(n){d(!0);try{const b=await eG(n.id);p(b.message||`Installed ${n.name}`,b.success?"success":"error"),await y(n.id)}catch(b){p(b instanceof Error?b.message:"Install failed","error")}d(!1)}},g=async()=>{if(n){h(!1),d(!0);try{const b=await tG(n.id);p(b.message||`Uninstalled ${n.name}`,b.success?"success":"error"),await y(n.id)}catch(b){p(b instanceof Error?b.message:"Uninstall failed","error")}d(!1)}};return s?i.jsx("div",{className:"p-6 max-w-5xl mx-auto",children:i.jsx("div",{className:"text-center py-16 text-gray-400",role:"status",children:"Loading item details..."})}):o||!n?i.jsxs("div",{className:"p-6 max-w-5xl mx-auto",children:[i.jsxs("button",{onClick:()=>e("/marketplace"),className:"flex items-center gap-2 text-gray-400 hover:text-white mb-6 transition-colors",children:[i.jsx(Ua,{className:"w-4 h-4"}),"Back to Marketplace"]}),i.jsx("div",{className:"text-center py-16 text-red-400",role:"alert",children:o||"Item not found"})]}):i.jsxs("div",{className:"p-6 max-w-5xl mx-auto",children:[i.jsxs("button",{onClick:()=>e("/marketplace"),className:"flex items-center gap-2 text-gray-400 hover:text-white mb-6 transition-colors","data-testid":"back-to-marketplace",children:[i.jsx(Ua,{className:"w-4 h-4"}),"Back to Marketplace"]}),i.jsx("div",{className:"bg-gray-900 border border-gray-800 rounded-xl p-6 mb-6",children:i.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-4",children:[i.jsxs("div",{className:"flex-1",children:[i.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[i.jsx("h1",{className:"text-2xl font-bold text-white","data-testid":"item-name",children:n.name}),i.jsx("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${r0e[n.type]}`,children:n.type}),i.jsxs("span",{className:"text-xs text-gray-500",children:["v",n.version]}),n.installStatus==="installed"&&i.jsx(br,{className:"w-4 h-4 text-green-400","aria-label":"Installed"}),n.installStatus==="update_available"&&i.jsx(Xg,{className:"w-4 h-4 text-yellow-400","aria-label":"Update available"})]}),i.jsx("p",{className:"text-gray-400 mb-4","data-testid":"item-description",children:n.description}),i.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-sm text-gray-500",children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Ku,{className:"w-3.5 h-3.5"}),n.author]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(tM,{className:"w-3.5 h-3.5 text-yellow-500"}),n.rating.toFixed(1)]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(gp,{className:"w-3.5 h-3.5"}),s0e(n.downloads)]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx($u,{className:"w-3.5 h-3.5"}),n.license]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(mA,{className:"w-3.5 h-3.5"}),new Date(n.updatedAt).toLocaleDateString()]})]})]}),i.jsxs("div",{className:"flex gap-2 shrink-0",children:[n.installStatus==="not_installed"&&i.jsxs("button",{onClick:m,disabled:c,className:"flex items-center gap-2 px-4 py-2 text-sm bg-primary hover:bg-primary/90 text-white rounded-lg disabled:opacity-50 transition-colors","data-testid":"install-btn",children:[i.jsx(SA,{className:"w-4 h-4"}),c?"Installing...":"Install"]}),n.installStatus==="installed"&&i.jsx("button",{onClick:()=>h(!0),disabled:c,className:"px-4 py-2 text-sm bg-gray-800 hover:bg-red-900/50 text-gray-300 hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors","data-testid":"uninstall-btn",children:c?"Removing...":"Uninstall"}),n.installStatus==="update_available"&&i.jsxs(i.Fragment,{children:[i.jsxs("button",{onClick:m,disabled:c,className:"flex items-center gap-2 px-4 py-2 text-sm bg-yellow-600 hover:bg-yellow-500 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(Xg,{className:"w-4 h-4"}),c?"Updating...":"Update"]}),i.jsx("button",{onClick:()=>h(!0),disabled:c,className:"px-4 py-2 text-sm bg-gray-800 hover:bg-red-900/50 text-gray-300 hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:"Remove"})]})]})]})}),n.tags&&n.tags.length>0&&i.jsxs("div",{className:"flex items-center gap-2 mb-6 flex-wrap",children:[i.jsx(eU,{className:"w-4 h-4 text-gray-500"}),n.tags.map(b=>i.jsx("span",{className:"px-2 py-0.5 bg-gray-800 text-gray-400 text-xs rounded-full",children:b},b))]}),i.jsxs("div",{className:"bg-gray-900 border border-gray-800 rounded-xl p-6","data-testid":"readme-section",children:[i.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:"README"}),i.jsx("div",{className:"prose prose-invert prose-sm max-w-none text-gray-300",children:(v=n.metadata)!=null&&v.readme?i.jsx("pre",{className:"whitespace-pre-wrap font-sans text-sm leading-relaxed",children:String(n.metadata.readme)}):i.jsx("p",{className:"text-gray-500 italic",children:"No README available for this item."})})]}),i.jsx(B1,{isOpen:u,onCancel:()=>h(!1),onConfirm:g,title:"Uninstall Item",message:`Are you sure you want to uninstall ${n.name}? This action cannot be undone.`,confirmLabel:"Uninstall",confirmVariant:"danger"}),i.jsx(rG,{toasts:f,onDismiss:x})]})}function a0e(t,e){const n=e||{};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const o0e=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,l0e=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,c0e={};function PO(t,e){return((e||c0e).jsx?l0e:o0e).test(t)}const d0e=/[ \t\n\f\r]/g;function u0e(t){return typeof t=="object"?t.type==="text"?LO(t.value):!1:LO(t)}function LO(t){return t.replace(d0e,"")===""}class Yx{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}Yx.prototype.normal={};Yx.prototype.property={};Yx.prototype.space=void 0;function sG(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new Yx(n,r,e)}function NT(t){return t.toLowerCase()}class Ki{constructor(e,n){this.attribute=n,this.property=e}}Ki.prototype.attribute="";Ki.prototype.booleanish=!1;Ki.prototype.boolean=!1;Ki.prototype.commaOrSpaceSeparated=!1;Ki.prototype.commaSeparated=!1;Ki.prototype.defined=!1;Ki.prototype.mustUseProperty=!1;Ki.prototype.number=!1;Ki.prototype.overloadedBoolean=!1;Ki.prototype.property="";Ki.prototype.spaceSeparated=!1;Ki.prototype.space=void 0;let h0e=0;const pn=Qu(),Zr=Qu(),jT=Qu(),gt=Qu(),ar=Qu(),If=Qu(),sa=Qu();function Qu(){return 2**++h0e}const RT=Object.freeze(Object.defineProperty({__proto__:null,boolean:pn,booleanish:Zr,commaOrSpaceSeparated:sa,commaSeparated:If,number:gt,overloadedBoolean:jT,spaceSeparated:ar},Symbol.toStringTag,{value:"Module"})),KC=Object.keys(RT);class JN extends Ki{constructor(e,n,r,s){let a=-1;if(super(e,n),DO(this,"space",s),typeof r=="number")for(;++a<KC.length;){const o=KC[a];DO(this,KC[a],(r&RT[o])===RT[o])}}}JN.prototype.defined=!0;function DO(t,e,n){n&&(t[e]=n)}function Np(t){const e={},n={};for(const[r,s]of Object.entries(t.properties)){const a=new JN(r,t.transform(t.attributes||{},r),s,t.space);t.mustUseProperty&&t.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),e[r]=a,n[NT(r)]=r,n[NT(a.attribute)]=r}return new Yx(e,n,t.space)}const iG=Np({properties:{ariaActiveDescendant:null,ariaAtomic:Zr,ariaAutoComplete:null,ariaBusy:Zr,ariaChecked:Zr,ariaColCount:gt,ariaColIndex:gt,ariaColSpan:gt,ariaControls:ar,ariaCurrent:null,ariaDescribedBy:ar,ariaDetails:null,ariaDisabled:Zr,ariaDropEffect:ar,ariaErrorMessage:null,ariaExpanded:Zr,ariaFlowTo:ar,ariaGrabbed:Zr,ariaHasPopup:null,ariaHidden:Zr,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:ar,ariaLevel:gt,ariaLive:null,ariaModal:Zr,ariaMultiLine:Zr,ariaMultiSelectable:Zr,ariaOrientation:null,ariaOwns:ar,ariaPlaceholder:null,ariaPosInSet:gt,ariaPressed:Zr,ariaReadOnly:Zr,ariaRelevant:null,ariaRequired:Zr,ariaRoleDescription:ar,ariaRowCount:gt,ariaRowIndex:gt,ariaRowSpan:gt,ariaSelected:Zr,ariaSetSize:gt,ariaSort:null,ariaValueMax:gt,ariaValueMin:gt,ariaValueNow:gt,ariaValueText:null,role:null},transform(t,e){return e==="role"?e:"aria-"+e.slice(4).toLowerCase()}});function aG(t,e){return e in t?t[e]:e}function oG(t,e){return aG(t,e.toLowerCase())}const f0e=Np({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:If,acceptCharset:ar,accessKey:ar,action:null,allow:null,allowFullScreen:pn,allowPaymentRequest:pn,allowUserMedia:pn,alt:null,as:null,async:pn,autoCapitalize:null,autoComplete:ar,autoFocus:pn,autoPlay:pn,blocking:ar,capture:null,charSet:null,checked:pn,cite:null,className:ar,cols:gt,colSpan:null,content:null,contentEditable:Zr,controls:pn,controlsList:ar,coords:gt|If,crossOrigin:null,data:null,dateTime:null,decoding:null,default:pn,defer:pn,dir:null,dirName:null,disabled:pn,download:jT,draggable:Zr,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:pn,formTarget:null,headers:ar,height:gt,hidden:jT,high:gt,href:null,hrefLang:null,htmlFor:ar,httpEquiv:ar,id:null,imageSizes:null,imageSrcSet:null,inert:pn,inputMode:null,integrity:null,is:null,isMap:pn,itemId:null,itemProp:ar,itemRef:ar,itemScope:pn,itemType:ar,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:pn,low:gt,manifest:null,max:null,maxLength:gt,media:null,method:null,min:null,minLength:gt,multiple:pn,muted:pn,name:null,nonce:null,noModule:pn,noValidate:pn,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:pn,optimum:gt,pattern:null,ping:ar,placeholder:null,playsInline:pn,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:pn,referrerPolicy:null,rel:ar,required:pn,reversed:pn,rows:gt,rowSpan:gt,sandbox:ar,scope:null,scoped:pn,seamless:pn,selected:pn,shadowRootClonable:pn,shadowRootDelegatesFocus:pn,shadowRootMode:null,shape:null,size:gt,sizes:null,slot:null,span:gt,spellCheck:Zr,src:null,srcDoc:null,srcLang:null,srcSet:null,start:gt,step:null,style:null,tabIndex:gt,target:null,title:null,translate:null,type:null,typeMustMatch:pn,useMap:null,value:Zr,width:gt,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:ar,axis:null,background:null,bgColor:null,border:gt,borderColor:null,bottomMargin:gt,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:pn,declare:pn,event:null,face:null,frame:null,frameBorder:null,hSpace:gt,leftMargin:gt,link:null,longDesc:null,lowSrc:null,marginHeight:gt,marginWidth:gt,noResize:pn,noHref:pn,noShade:pn,noWrap:pn,object:null,profile:null,prompt:null,rev:null,rightMargin:gt,rules:null,scheme:null,scrolling:Zr,standby:null,summary:null,text:null,topMargin:gt,valueType:null,version:null,vAlign:null,vLink:null,vSpace:gt,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:pn,disableRemotePlayback:pn,prefix:null,property:null,results:gt,security:null,unselectable:null},space:"html",transform:oG}),p0e=Np({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:sa,accentHeight:gt,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:gt,amplitude:gt,arabicForm:null,ascent:gt,attributeName:null,attributeType:null,azimuth:gt,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:gt,by:null,calcMode:null,capHeight:gt,className:ar,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:gt,diffuseConstant:gt,direction:null,display:null,dur:null,divisor:gt,dominantBaseline:null,download:pn,dx:null,dy:null,edgeMode:null,editable:null,elevation:gt,enableBackground:null,end:null,event:null,exponent:gt,externalResourcesRequired:null,fill:null,fillOpacity:gt,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:If,g2:If,glyphName:If,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:gt,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:gt,horizOriginX:gt,horizOriginY:gt,id:null,ideographic:gt,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:gt,k:gt,k1:gt,k2:gt,k3:gt,k4:gt,kernelMatrix:sa,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:gt,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:gt,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:gt,overlineThickness:gt,paintOrder:null,panose1:null,path:null,pathLength:gt,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:ar,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:gt,pointsAtY:gt,pointsAtZ:gt,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:sa,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:sa,rev:sa,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:sa,requiredFeatures:sa,requiredFonts:sa,requiredFormats:sa,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:gt,specularExponent:gt,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:gt,strikethroughThickness:gt,string:null,stroke:null,strokeDashArray:sa,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:gt,strokeOpacity:gt,strokeWidth:null,style:null,surfaceScale:gt,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:sa,tabIndex:gt,tableValues:null,target:null,targetX:gt,targetY:gt,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:sa,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:gt,underlineThickness:gt,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:gt,values:null,vAlphabetic:gt,vMathematical:gt,vectorEffect:null,vHanging:gt,vIdeographic:gt,version:null,vertAdvY:gt,vertOriginX:gt,vertOriginY:gt,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:gt,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:aG}),lG=Np({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(t,e){return"xlink:"+e.slice(5).toLowerCase()}}),cG=Np({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:oG}),dG=Np({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(t,e){return"xml:"+e.slice(3).toLowerCase()}}),m0e={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},g0e=/[A-Z]/g,OO=/-[a-z]/g,x0e=/^data[-\w.:]+$/i;function y0e(t,e){const n=NT(e);let r=e,s=Ki;if(n in t.normal)return t.property[t.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&x0e.test(e)){if(e.charAt(4)==="-"){const a=e.slice(5).replace(OO,b0e);r="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=e.slice(4);if(!OO.test(a)){let o=a.replace(g0e,v0e);o.charAt(0)!=="-"&&(o="-"+o),e="data"+o}}s=JN}return new s(r,e)}function v0e(t){return"-"+t.toLowerCase()}function b0e(t){return t.charAt(1).toUpperCase()}const _0e=sG([iG,f0e,lG,cG,dG],"html"),ZN=sG([iG,p0e,lG,cG,dG],"svg");function S0e(t){return t.join(" ").trim()}var QN={},BO=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,w0e=/\n/g,k0e=/^\s*/,C0e=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,E0e=/^:\s*/,A0e=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,T0e=/^[;\s]*/,M0e=/^\s+|\s+$/g,N0e=`
|
|
4919
|
-
`,FO="/",UO="*",Zd="",j0e="comment",R0e="declaration";function I0e(t,e){if(typeof t!="string")throw new TypeError("First argument must be a string");if(!t)return[];e=e||{};var n=1,r=1;function s(x){var y=x.match(w0e);y&&(n+=y.length);var m=x.lastIndexOf(N0e);r=~m?x.length-m:r+x.length}function a(){var x={line:n,column:r};return function(y){return y.position=new o(x),d(),y}}function o(x){this.start=x,this.end={line:n,column:r},this.source=e.source}o.prototype.content=t;function l(x){var y=new Error(e.source+":"+n+":"+r+": "+x);if(y.reason=x,y.filename=e.source,y.line=n,y.column=r,y.source=t,!e.silent)throw y}function c(x){var y=x.exec(t);if(y){var m=y[0];return s(m),t=t.slice(m.length),y}}function d(){c(k0e)}function u(x){var y;for(x=x||[];y=h();)y!==!1&&x.push(y);return x}function h(){var x=a();if(!(FO!=t.charAt(0)||UO!=t.charAt(1))){for(var y=2;Zd!=t.charAt(y)&&(UO!=t.charAt(y)||FO!=t.charAt(y+1));)++y;if(y+=2,Zd===t.charAt(y-1))return l("End of comment missing");var m=t.slice(2,y-2);return r+=2,s(m),t=t.slice(y),r+=2,x({type:j0e,comment:m})}}function f(){var x=a(),y=c(C0e);if(y){if(h(),!c(E0e))return l("property missing ':'");var m=c(A0e),g=x({type:R0e,property:zO(y[0].replace(BO,Zd)),value:m?zO(m[0].replace(BO,Zd)):Zd});return c(T0e),g}}function p(){var x=[];u(x);for(var y;y=f();)y!==!1&&(x.push(y),u(x));return x}return d(),p()}function zO(t){return t?t.replace(M0e,Zd):Zd}var P0e=I0e,L0e=Tg&&Tg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QN,"__esModule",{value:!0});QN.default=O0e;const D0e=L0e(P0e);function O0e(t,e){let n=null;if(!t||typeof t!="string")return n;const r=(0,D0e.default)(t),s=typeof e=="function";return r.forEach(a=>{if(a.type!=="declaration")return;const{property:o,value:l}=a;s?e(o,l,a):l&&(n=n||{},n[o]=l)}),n}var MS={};Object.defineProperty(MS,"__esModule",{value:!0});MS.camelCase=void 0;var B0e=/^--[a-zA-Z0-9_-]+$/,F0e=/-([a-z])/g,U0e=/^[^-]+$/,z0e=/^-(webkit|moz|ms|o|khtml)-/,H0e=/^-(ms)-/,G0e=function(t){return!t||U0e.test(t)||B0e.test(t)},W0e=function(t,e){return e.toUpperCase()},HO=function(t,e){return"".concat(e,"-")},V0e=function(t,e){return e===void 0&&(e={}),G0e(t)?t:(t=t.toLowerCase(),e.reactCompat?t=t.replace(H0e,HO):t=t.replace(z0e,HO),t.replace(F0e,W0e))};MS.camelCase=V0e;var $0e=Tg&&Tg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},K0e=$0e(QN),q0e=MS;function IT(t,e){var n={};return!t||typeof t!="string"||(0,K0e.default)(t,function(r,s){r&&s&&(n[(0,q0e.camelCase)(r,e)]=s)}),n}IT.default=IT;var X0e=IT;const Y0e=lp(X0e),uG=hG("end"),ej=hG("start");function hG(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function J0e(t){const e=ej(t),n=uG(t);if(e&&n)return{start:e,end:n}}function kg(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?GO(t.position):"start"in t||"end"in t?GO(t):"line"in t||"column"in t?PT(t):""}function PT(t){return WO(t&&t.line)+":"+WO(t&&t.column)}function GO(t){return PT(t&&t.start)+"-"+PT(t&&t.end)}function WO(t){return t&&typeof t=="number"?t:1}class ri extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",a={},o=!1;if(n&&("line"in n&&"column"in n?a={place:n}:"start"in n&&"end"in n?a={place:n}:"type"in n?a={ancestors:[n],place:n.position}:a={...n}),typeof e=="string"?s=e:!a.cause&&e&&(o=!0,s=e.message,a.cause=e),!a.ruleId&&!a.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?a.ruleId=r:(a.source=r.slice(0,c),a.ruleId=r.slice(c+1))}if(!a.place&&a.ancestors&&a.ancestors){const c=a.ancestors[a.ancestors.length-1];c&&(a.place=c.position)}const l=a.place&&"start"in a.place?a.place.start:a.place;this.ancestors=a.ancestors||void 0,this.cause=a.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=kg(a.place)||"1:1",this.place=a.place||void 0,this.reason=this.message,this.ruleId=a.ruleId||void 0,this.source=a.source||void 0,this.stack=o&&a.cause&&typeof a.cause.stack=="string"?a.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}ri.prototype.file="";ri.prototype.name="";ri.prototype.reason="";ri.prototype.message="";ri.prototype.stack="";ri.prototype.column=void 0;ri.prototype.line=void 0;ri.prototype.ancestors=void 0;ri.prototype.cause=void 0;ri.prototype.fatal=void 0;ri.prototype.place=void 0;ri.prototype.ruleId=void 0;ri.prototype.source=void 0;const tj={}.hasOwnProperty,Z0e=new Map,Q0e=/[A-Z]/g,eye=new Set(["table","tbody","thead","tfoot","tr"]),tye=new Set(["td","th"]),fG="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function nye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=dye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=cye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?ZN:_0e,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},a=pG(s,t,void 0);return a&&typeof a!="string"?a:s.create(t,s.Fragment,{children:a||void 0},void 0)}function pG(t,e,n){if(e.type==="element")return rye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return sye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return aye(t,e,n);if(e.type==="mdxjsEsm")return iye(t,e);if(e.type==="root")return oye(t,e,n);if(e.type==="text")return lye(t,e)}function rye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=ZN,t.schema=s),t.ancestors.push(e);const a=gG(t,e.tagName,!1),o=uye(t,e);let l=rj(t,e);return eye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!u0e(c):!0})),mG(t,o,a,e),nj(o,l),t.ancestors.pop(),t.schema=r,t.create(e,a,o,n)}function sye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}xx(t,e.position)}function iye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);xx(t,e.position)}function aye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=ZN,t.schema=s),t.ancestors.push(e);const a=e.name===null?t.Fragment:gG(t,e.name,!0),o=hye(t,e),l=rj(t,e);return mG(t,o,a,e),nj(o,l),t.ancestors.pop(),t.schema=r,t.create(e,a,o,n)}function oye(t,e,n){const r={};return nj(r,rj(t,e)),t.create(e,t.Fragment,r,n)}function lye(t,e){return e.value}function mG(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function nj(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function cye(t,e,n){return r;function r(s,a,o,l){const d=Array.isArray(o.children)?n:e;return l?d(a,o,l):d(a,o)}}function dye(t,e){return n;function n(r,s,a,o){const l=Array.isArray(a.children),c=ej(r);return e(s,a,o,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function uye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&tj.call(e.properties,s)){const a=fye(t,s,e.properties[s]);if(a){const[o,l]=a;t.tableCellAlignToStyle&&o==="align"&&typeof l=="string"&&tye.has(e.tagName)?r=l:n[o]=l}}if(r){const a=n.style||(n.style={});a[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function hye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const a=r.data.estree.body[0];a.type;const o=a.expression;o.type;const l=o.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else xx(t,e.position);else{const s=r.name;let a;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,a=t.evaluater.evaluateExpression(l.expression)}else xx(t,e.position);else a=r.value===null?!0:r.value;n[s]=a}return n}function rj(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:Z0e;for(;++r<e.children.length;){const a=e.children[r];let o;if(t.passKeys){const c=a.type==="element"?a.tagName:a.type==="mdxJsxFlowElement"||a.type==="mdxJsxTextElement"?a.name:void 0;if(c){const d=s.get(c)||0;o=c+"-"+d,s.set(c,d+1)}}const l=pG(t,a,o);l!==void 0&&n.push(l)}return n}function fye(t,e,n){const r=y0e(t.schema,e);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?a0e(n):S0e(n)),r.property==="style"){let s=typeof n=="object"?n:pye(t,String(n));return t.stylePropertyNameCase==="css"&&(s=mye(s)),["style",s]}return[t.elementAttributeNameCase==="react"&&r.space?m0e[r.property]||r.property:r.attribute,n]}}function pye(t,e){try{return Y0e(e,{reactCompat:!0})}catch(n){if(t.ignoreInvalidStyle)return{};const r=n,s=new ri("Cannot parse `style` attribute",{ancestors:t.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw s.file=t.filePath||void 0,s.url=fG+"#cannot-parse-style-attribute",s}}function gG(t,e,n){let r;if(!n)r={type:"Literal",value:e};else if(e.includes(".")){const s=e.split(".");let a=-1,o;for(;++a<s.length;){const l=PO(s[a])?{type:"Identifier",name:s[a]}:{type:"Literal",value:s[a]};o=o?{type:"MemberExpression",object:o,property:l,computed:!!(a&&l.type==="Literal"),optional:!1}:l}r=o}else r=PO(e)&&!/^[a-z]/.test(e)?{type:"Identifier",name:e}:{type:"Literal",value:e};if(r.type==="Literal"){const s=r.value;return tj.call(t.components,s)?t.components[s]:s}if(t.evaluater)return t.evaluater.evaluateExpression(r);xx(t)}function xx(t,e){const n=new ri("Cannot handle MDX estrees without `createEvaluater`",{ancestors:t.ancestors,place:e,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=t.filePath||void 0,n.url=fG+"#cannot-handle-mdx-estrees-without-createevaluater",n}function mye(t){const e={};let n;for(n in t)tj.call(t,n)&&(e[gye(n)]=t[n]);return e}function gye(t){let e=t.replace(Q0e,xye);return e.slice(0,3)==="ms-"&&(e="-"+e),e}function xye(t){return"-"+t.toLowerCase()}const qC={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},yye={};function sj(t,e){const n=e||yye,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,s=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return xG(t,r,s)}function xG(t,e,n){if(vye(t)){if("value"in t)return t.type==="html"&&!n?"":t.value;if(e&&"alt"in t&&t.alt)return t.alt;if("children"in t)return VO(t.children,e,n)}return Array.isArray(t)?VO(t,e,n):""}function VO(t,e,n){const r=[];let s=-1;for(;++s<t.length;)r[s]=xG(t[s],e,n);return r.join("")}function vye(t){return!!(t&&typeof t=="object")}const $O=document.createElement("i");function ij(t){const e="&"+t+";";$O.innerHTML=e;const n=$O.textContent;return n.charCodeAt(n.length-1)===59&&t!=="semi"||n===e?!1:n}function ua(t,e,n,r){const s=t.length;let a=0,o;if(e<0?e=-e>s?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(e,n),t.splice(...o);else for(n&&t.splice(e,n);a<r.length;)o=r.slice(a,a+1e4),o.unshift(e,0),t.splice(...o),a+=1e4,e+=1e4}function Da(t,e){return t.length>0?(ua(t,t.length,0,e),t):e}const KO={}.hasOwnProperty;function yG(t){const e={};let n=-1;for(;++n<t.length;)bye(e,t[n]);return e}function bye(t,e){let n;for(n in e){const s=(KO.call(t,n)?t[n]:void 0)||(t[n]={}),a=e[n];let o;if(a)for(o in a){KO.call(s,o)||(s[o]=[]);const l=a[o];_ye(s[o],Array.isArray(l)?l:l?[l]:[])}}}function _ye(t,e){let n=-1;const r=[];for(;++n<e.length;)(e[n].add==="after"?t:r).push(e[n]);ua(t,0,0,r)}function vG(t,e){const n=Number.parseInt(t,e);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function po(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const xi=fd(/[A-Za-z]/),Ys=fd(/[\dA-Za-z]/),Sye=fd(/[#-'*+\--9=?A-Z^-~]/);function Z_(t){return t!==null&&(t<32||t===127)}const LT=fd(/\d/),wye=fd(/[\dA-Fa-f]/),kye=fd(/[!-/:-@[-`{-~]/);function Kt(t){return t!==null&&t<-2}function ir(t){return t!==null&&(t<0||t===32)}function Cn(t){return t===-2||t===-1||t===32}const NS=fd(/\p{P}|\p{S}/u),Uu=fd(/\s/);function fd(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function jp(t){const e=[];let n=-1,r=0,s=0;for(;++n<t.length;){const a=t.charCodeAt(n);let o="";if(a===37&&Ys(t.charCodeAt(n+1))&&Ys(t.charCodeAt(n+2)))s=2;else if(a<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(a))||(o=String.fromCharCode(a));else if(a>55295&&a<57344){const l=t.charCodeAt(n+1);a<56320&&l>56319&&l<57344?(o=String.fromCharCode(a,l),s=1):o="�"}else o=String.fromCharCode(a);o&&(e.push(t.slice(r,n),encodeURIComponent(o)),r=n+s+1,o=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function Ln(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let a=0;return o;function o(c){return Cn(c)?(t.enter(n),l(c)):e(c)}function l(c){return Cn(c)&&a++<s?(t.consume(c),l):(t.exit(n),e(c))}}const Cye={tokenize:Eye};function Eye(t){const e=t.attempt(this.parser.constructs.contentInitial,r,s);let n;return e;function r(l){if(l===null){t.consume(l);return}return t.enter("lineEnding"),t.consume(l),t.exit("lineEnding"),Ln(t,e,"linePrefix")}function s(l){return t.enter("paragraph"),a(l)}function a(l){const c=t.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=c),n=c,o(l)}function o(l){if(l===null){t.exit("chunkText"),t.exit("paragraph"),t.consume(l);return}return Kt(l)?(t.consume(l),t.exit("chunkText"),a):(t.consume(l),o)}}const Aye={tokenize:Tye},qO={tokenize:Mye};function Tye(t){const e=this,n=[];let r=0,s,a,o;return l;function l(b){if(r<n.length){const S=n[r];return e.containerState=S[1],t.attempt(S[0].continuation,c,d)(b)}return d(b)}function c(b){if(r++,e.containerState._closeFlow){e.containerState._closeFlow=void 0,s&&v();const S=e.events.length;let C=S,E;for(;C--;)if(e.events[C][0]==="exit"&&e.events[C][1].type==="chunkFlow"){E=e.events[C][1].end;break}g(r);let N=S;for(;N<e.events.length;)e.events[N][1].end={...E},N++;return ua(e.events,C+1,0,e.events.slice(S)),e.events.length=N,d(b)}return l(b)}function d(b){if(r===n.length){if(!s)return f(b);if(s.currentConstruct&&s.currentConstruct.concrete)return x(b);e.interrupt=!!(s.currentConstruct&&!s._gfmTableDynamicInterruptHack)}return e.containerState={},t.check(qO,u,h)(b)}function u(b){return s&&v(),g(r),f(b)}function h(b){return e.parser.lazy[e.now().line]=r!==n.length,o=e.now().offset,x(b)}function f(b){return e.containerState={},t.attempt(qO,p,x)(b)}function p(b){return r++,n.push([e.currentConstruct,e.containerState]),f(b)}function x(b){if(b===null){s&&v(),g(0),t.consume(b);return}return s=s||e.parser.flow(e.now()),t.enter("chunkFlow",{_tokenizer:s,contentType:"flow",previous:a}),y(b)}function y(b){if(b===null){m(t.exit("chunkFlow"),!0),g(0),t.consume(b);return}return Kt(b)?(t.consume(b),m(t.exit("chunkFlow")),r=0,e.interrupt=void 0,l):(t.consume(b),y)}function m(b,S){const C=e.sliceStream(b);if(S&&C.push(null),b.previous=a,a&&(a.next=b),a=b,s.defineSkip(b.start),s.write(C),e.parser.lazy[b.start.line]){let E=s.events.length;for(;E--;)if(s.events[E][1].start.offset<o&&(!s.events[E][1].end||s.events[E][1].end.offset>o))return;const N=e.events.length;let T=N,A,M;for(;T--;)if(e.events[T][0]==="exit"&&e.events[T][1].type==="chunkFlow"){if(A){M=e.events[T][1].end;break}A=!0}for(g(r),E=N;E<e.events.length;)e.events[E][1].end={...M},E++;ua(e.events,T+1,0,e.events.slice(N)),e.events.length=E}}function g(b){let S=n.length;for(;S-- >b;){const C=n[S];e.containerState=C[1],C[0].exit.call(e,t)}n.length=b}function v(){s.write([null]),a=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Mye(t,e,n){return Ln(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ap(t){if(t===null||ir(t)||Uu(t))return 1;if(NS(t))return 2}function jS(t,e,n){const r=[];let s=-1;for(;++s<t.length;){const a=t[s].resolveAll;a&&!r.includes(a)&&(e=a(e,n),r.push(a))}return e}const DT={name:"attention",resolveAll:Nye,tokenize:jye};function Nye(t,e){let n=-1,r,s,a,o,l,c,d,u;for(;++n<t.length;)if(t[n][0]==="enter"&&t[n][1].type==="attentionSequence"&&t[n][1]._close){for(r=n;r--;)if(t[r][0]==="exit"&&t[r][1].type==="attentionSequence"&&t[r][1]._open&&e.sliceSerialize(t[r][1]).charCodeAt(0)===e.sliceSerialize(t[n][1]).charCodeAt(0)){if((t[r][1]._close||t[n][1]._open)&&(t[n][1].end.offset-t[n][1].start.offset)%3&&!((t[r][1].end.offset-t[r][1].start.offset+t[n][1].end.offset-t[n][1].start.offset)%3))continue;c=t[r][1].end.offset-t[r][1].start.offset>1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const h={...t[r][1].end},f={...t[n][1].start};XO(h,-c),XO(f,c),o={type:c>1?"strongSequence":"emphasisSequence",start:h,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:f},a={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...o.start},end:{...l.end}},t[r][1].end={...o.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=Da(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=Da(d,[["enter",s,e],["enter",o,e],["exit",o,e],["enter",a,e]]),d=Da(d,jS(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=Da(d,[["exit",a,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(u=2,d=Da(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):u=0,ua(t,r-1,n-r+3,d),n=r+d.length-u-2;break}}for(n=-1;++n<t.length;)t[n][1].type==="attentionSequence"&&(t[n][1].type="data");return t}function jye(t,e){const n=this.parser.constructs.attentionMarkers.null,r=this.previous,s=ap(r);let a;return o;function o(c){return a=c,t.enter("attentionSequence"),l(c)}function l(c){if(c===a)return t.consume(c),l;const d=t.exit("attentionSequence"),u=ap(c),h=!u||u===2&&s||n.includes(c),f=!s||s===2&&u||n.includes(r);return d._open=!!(a===42?h:h&&(s||!f)),d._close=!!(a===42?f:f&&(u||!h)),e(c)}}function XO(t,e){t.column+=e,t.offset+=e,t._bufferIndex+=e}const Rye={name:"autolink",tokenize:Iye};function Iye(t,e,n){let r=0;return s;function s(p){return t.enter("autolink"),t.enter("autolinkMarker"),t.consume(p),t.exit("autolinkMarker"),t.enter("autolinkProtocol"),a}function a(p){return xi(p)?(t.consume(p),o):p===64?n(p):d(p)}function o(p){return p===43||p===45||p===46||Ys(p)?(r=1,l(p)):d(p)}function l(p){return p===58?(t.consume(p),r=0,c):(p===43||p===45||p===46||Ys(p))&&r++<32?(t.consume(p),l):(r=0,d(p))}function c(p){return p===62?(t.exit("autolinkProtocol"),t.enter("autolinkMarker"),t.consume(p),t.exit("autolinkMarker"),t.exit("autolink"),e):p===null||p===32||p===60||Z_(p)?n(p):(t.consume(p),c)}function d(p){return p===64?(t.consume(p),u):Sye(p)?(t.consume(p),d):n(p)}function u(p){return Ys(p)?h(p):n(p)}function h(p){return p===46?(t.consume(p),r=0,u):p===62?(t.exit("autolinkProtocol").type="autolinkEmail",t.enter("autolinkMarker"),t.consume(p),t.exit("autolinkMarker"),t.exit("autolink"),e):f(p)}function f(p){if((p===45||Ys(p))&&r++<63){const x=p===45?f:h;return t.consume(p),x}return n(p)}}const Jx={partial:!0,tokenize:Pye};function Pye(t,e,n){return r;function r(a){return Cn(a)?Ln(t,s,"linePrefix")(a):s(a)}function s(a){return a===null||Kt(a)?e(a):n(a)}}const bG={continuation:{tokenize:Dye},exit:Oye,name:"blockQuote",tokenize:Lye};function Lye(t,e,n){const r=this;return s;function s(o){if(o===62){const l=r.containerState;return l.open||(t.enter("blockQuote",{_container:!0}),l.open=!0),t.enter("blockQuotePrefix"),t.enter("blockQuoteMarker"),t.consume(o),t.exit("blockQuoteMarker"),a}return n(o)}function a(o){return Cn(o)?(t.enter("blockQuotePrefixWhitespace"),t.consume(o),t.exit("blockQuotePrefixWhitespace"),t.exit("blockQuotePrefix"),e):(t.exit("blockQuotePrefix"),e(o))}}function Dye(t,e,n){const r=this;return s;function s(o){return Cn(o)?Ln(t,a,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):a(o)}function a(o){return t.attempt(bG,e,n)(o)}}function Oye(t){t.exit("blockQuote")}const _G={name:"characterEscape",tokenize:Bye};function Bye(t,e,n){return r;function r(a){return t.enter("characterEscape"),t.enter("escapeMarker"),t.consume(a),t.exit("escapeMarker"),s}function s(a){return kye(a)?(t.enter("characterEscapeValue"),t.consume(a),t.exit("characterEscapeValue"),t.exit("characterEscape"),e):n(a)}}const SG={name:"characterReference",tokenize:Fye};function Fye(t,e,n){const r=this;let s=0,a,o;return l;function l(h){return t.enter("characterReference"),t.enter("characterReferenceMarker"),t.consume(h),t.exit("characterReferenceMarker"),c}function c(h){return h===35?(t.enter("characterReferenceMarkerNumeric"),t.consume(h),t.exit("characterReferenceMarkerNumeric"),d):(t.enter("characterReferenceValue"),a=31,o=Ys,u(h))}function d(h){return h===88||h===120?(t.enter("characterReferenceMarkerHexadecimal"),t.consume(h),t.exit("characterReferenceMarkerHexadecimal"),t.enter("characterReferenceValue"),a=6,o=wye,u):(t.enter("characterReferenceValue"),a=7,o=LT,u(h))}function u(h){if(h===59&&s){const f=t.exit("characterReferenceValue");return o===Ys&&!ij(r.sliceSerialize(f))?n(h):(t.enter("characterReferenceMarker"),t.consume(h),t.exit("characterReferenceMarker"),t.exit("characterReference"),e)}return o(h)&&s++<a?(t.consume(h),u):n(h)}}const YO={partial:!0,tokenize:zye},JO={concrete:!0,name:"codeFenced",tokenize:Uye};function Uye(t,e,n){const r=this,s={partial:!0,tokenize:C};let a=0,o=0,l;return c;function c(E){return d(E)}function d(E){const N=r.events[r.events.length-1];return a=N&&N[1].type==="linePrefix"?N[2].sliceSerialize(N[1],!0).length:0,l=E,t.enter("codeFenced"),t.enter("codeFencedFence"),t.enter("codeFencedFenceSequence"),u(E)}function u(E){return E===l?(o++,t.consume(E),u):o<3?n(E):(t.exit("codeFencedFenceSequence"),Cn(E)?Ln(t,h,"whitespace")(E):h(E))}function h(E){return E===null||Kt(E)?(t.exit("codeFencedFence"),r.interrupt?e(E):t.check(YO,y,S)(E)):(t.enter("codeFencedFenceInfo"),t.enter("chunkString",{contentType:"string"}),f(E))}function f(E){return E===null||Kt(E)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),h(E)):Cn(E)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),Ln(t,p,"whitespace")(E)):E===96&&E===l?n(E):(t.consume(E),f)}function p(E){return E===null||Kt(E)?h(E):(t.enter("codeFencedFenceMeta"),t.enter("chunkString",{contentType:"string"}),x(E))}function x(E){return E===null||Kt(E)?(t.exit("chunkString"),t.exit("codeFencedFenceMeta"),h(E)):E===96&&E===l?n(E):(t.consume(E),x)}function y(E){return t.attempt(s,S,m)(E)}function m(E){return t.enter("lineEnding"),t.consume(E),t.exit("lineEnding"),g}function g(E){return a>0&&Cn(E)?Ln(t,v,"linePrefix",a+1)(E):v(E)}function v(E){return E===null||Kt(E)?t.check(YO,y,S)(E):(t.enter("codeFlowValue"),b(E))}function b(E){return E===null||Kt(E)?(t.exit("codeFlowValue"),v(E)):(t.consume(E),b)}function S(E){return t.exit("codeFenced"),e(E)}function C(E,N,T){let A=0;return M;function M(K){return E.enter("lineEnding"),E.consume(K),E.exit("lineEnding"),P}function P(K){return E.enter("codeFencedFence"),Cn(K)?Ln(E,I,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(K):I(K)}function I(K){return K===l?(E.enter("codeFencedFenceSequence"),B(K)):T(K)}function B(K){return K===l?(A++,E.consume(K),B):A>=o?(E.exit("codeFencedFenceSequence"),Cn(K)?Ln(E,V,"whitespace")(K):V(K)):T(K)}function V(K){return K===null||Kt(K)?(E.exit("codeFencedFence"),N(K)):T(K)}}}function zye(t,e,n){const r=this;return s;function s(o){return o===null?n(o):(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),a)}function a(o){return r.parser.lazy[r.now().line]?n(o):e(o)}}const XC={name:"codeIndented",tokenize:Gye},Hye={partial:!0,tokenize:Wye};function Gye(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),Ln(t,a,"linePrefix",4+1)(d)}function a(d){const u=r.events[r.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?o(d):n(d)}function o(d){return d===null?c(d):Kt(d)?t.attempt(Hye,o,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||Kt(d)?(t.exit("codeFlowValue"),o(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function Wye(t,e,n){const r=this;return s;function s(o){return r.parser.lazy[r.now().line]?n(o):Kt(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),s):Ln(t,a,"linePrefix",4+1)(o)}function a(o){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(o):Kt(o)?s(o):n(o)}}const Vye={name:"codeText",previous:Kye,resolve:$ye,tokenize:qye};function $ye(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r<e;)if(t[r][1].type==="codeTextData"){t[n][1].type="codeTextPadding",t[e][1].type="codeTextPadding",n+=2,e-=2;break}}for(r=n-1,e++;++r<=e;)s===void 0?r!==e&&t[r][1].type!=="lineEnding"&&(s=r):(r===e||t[r][1].type==="lineEnding")&&(t[s][1].type="codeTextData",r!==s+2&&(t[s][1].end=t[r-1][1].end,t.splice(s+2,r-s-2),e-=r-s-2,r=s+2),s=void 0);return t}function Kye(t){return t!==96||this.events[this.events.length-1][1].type==="characterEscape"}function qye(t,e,n){let r=0,s,a;return o;function o(h){return t.enter("codeText"),t.enter("codeTextSequence"),l(h)}function l(h){return h===96?(t.consume(h),r++,l):(t.exit("codeTextSequence"),c(h))}function c(h){return h===null?n(h):h===32?(t.enter("space"),t.consume(h),t.exit("space"),c):h===96?(a=t.enter("codeTextSequence"),s=0,u(h)):Kt(h)?(t.enter("lineEnding"),t.consume(h),t.exit("lineEnding"),c):(t.enter("codeTextData"),d(h))}function d(h){return h===null||h===32||h===96||Kt(h)?(t.exit("codeTextData"),c(h)):(t.consume(h),d)}function u(h){return h===96?(t.consume(h),s++,u):s===r?(t.exit("codeTextSequence"),t.exit("codeText"),e(h)):(a.type="codeTextData",d(h))}}class Xye{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return e<this.left.length?this.left[e]:this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,n){const r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(e,r):e>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const a=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Pm(this.left,r),a.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Pm(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Pm(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e<this.left.length){const n=this.left.splice(e,Number.POSITIVE_INFINITY);Pm(this.right,n.reverse())}else{const n=this.right.splice(this.left.length+this.right.length-e,Number.POSITIVE_INFINITY);Pm(this.left,n.reverse())}}}function Pm(t,e){let n=0;if(e.length<1e4)t.push(...e);else for(;n<e.length;)t.push(...e.slice(n,n+1e4)),n+=1e4}function wG(t){const e={};let n=-1,r,s,a,o,l,c,d;const u=new Xye(t);for(;++n<u.length;){for(;n in e;)n=e[n];if(r=u.get(n),n&&r[1].type==="chunkFlow"&&u.get(n-1)[1].type==="listItemPrefix"&&(c=r[1]._tokenizer.events,a=0,a<c.length&&c[a][1].type==="lineEndingBlank"&&(a+=2),a<c.length&&c[a][1].type==="content"))for(;++a<c.length&&c[a][1].type!=="content";)c[a][1].type==="chunkText"&&(c[a][1]._isInFirstContentOfListItem=!0,a++);if(r[0]==="enter")r[1].contentType&&(Object.assign(e,Yye(u,n)),n=e[n],d=!0);else if(r[1]._container){for(a=n,s=void 0;a--;)if(o=u.get(a),o[1].type==="lineEnding"||o[1].type==="lineEndingBlank")o[0]==="enter"&&(s&&(u.get(s)[1].type="lineEndingBlank"),o[1].type="lineEnding",s=a);else if(!(o[1].type==="linePrefix"||o[1].type==="listItemIndent"))break;s&&(r[1].end={...u.get(s)[1].start},l=u.slice(s,n),l.unshift(r),u.splice(s,n-s+1,l))}}return ua(t,0,Number.POSITIVE_INFINITY,u.slice(0)),!d}function Yye(t,e){const n=t.get(e)[1],r=t.get(e)[2];let s=e-1;const a=[];let o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));const l=o.events,c=[],d={};let u,h,f=-1,p=n,x=0,y=0;const m=[y];for(;p;){for(;t.get(++s)[1]!==p;);a.push(s),p._tokenizer||(u=r.sliceStream(p),p.next||u.push(null),h&&o.defineSkip(p.start),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(u),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),h=p,p=p.next}for(p=n;++f<l.length;)l[f][0]==="exit"&&l[f-1][0]==="enter"&&l[f][1].type===l[f-1][1].type&&l[f][1].start.line!==l[f][1].end.line&&(y=f+1,m.push(y),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(o.events=[],p?(p._tokenizer=void 0,p.previous=void 0):m.pop(),f=m.length;f--;){const g=l.slice(m[f],m[f+1]),v=a.pop();c.push([v,v+g.length-1]),t.splice(v,2,g)}for(c.reverse(),f=-1;++f<c.length;)d[x+c[f][0]]=x+c[f][1],x+=c[f][1]-c[f][0]-1;return d}const Jye={resolve:Qye,tokenize:eve},Zye={partial:!0,tokenize:tve};function Qye(t){return wG(t),t}function eve(t,e){let n;return r;function r(l){return t.enter("content"),n=t.enter("chunkContent",{contentType:"content"}),s(l)}function s(l){return l===null?a(l):Kt(l)?t.check(Zye,o,a)(l):(t.consume(l),s)}function a(l){return t.exit("chunkContent"),t.exit("content"),e(l)}function o(l){return t.consume(l),t.exit("chunkContent"),n.next=t.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,s}}function tve(t,e,n){const r=this;return s;function s(o){return t.exit("chunkContent"),t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),Ln(t,a,"linePrefix")}function a(o){if(o===null||Kt(o))return n(o);const l=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(o):t.interrupt(r.parser.constructs.flow,n,e)(o)}}function kG(t,e,n,r,s,a,o,l,c){const d=c||Number.POSITIVE_INFINITY;let u=0;return h;function h(g){return g===60?(t.enter(r),t.enter(s),t.enter(a),t.consume(g),t.exit(a),f):g===null||g===32||g===41||Z_(g)?n(g):(t.enter(r),t.enter(o),t.enter(l),t.enter("chunkString",{contentType:"string"}),y(g))}function f(g){return g===62?(t.enter(a),t.consume(g),t.exit(a),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),p(g))}function p(g){return g===62?(t.exit("chunkString"),t.exit(l),f(g)):g===null||g===60||Kt(g)?n(g):(t.consume(g),g===92?x:p)}function x(g){return g===60||g===62||g===92?(t.consume(g),p):p(g)}function y(g){return!u&&(g===null||g===41||ir(g))?(t.exit("chunkString"),t.exit(l),t.exit(o),t.exit(r),e(g)):u<d&&g===40?(t.consume(g),u++,y):g===41?(t.consume(g),u--,y):g===null||g===32||g===40||Z_(g)?n(g):(t.consume(g),g===92?m:y)}function m(g){return g===40||g===41||g===92?(t.consume(g),y):y(g)}}function CG(t,e,n,r,s,a){const o=this;let l=0,c;return d;function d(p){return t.enter(r),t.enter(s),t.consume(p),t.exit(s),t.enter(a),u}function u(p){return l>999||p===null||p===91||p===93&&!c||p===94&&!l&&"_hiddenFootnoteSupport"in o.parser.constructs?n(p):p===93?(t.exit(a),t.enter(s),t.consume(p),t.exit(s),t.exit(r),e):Kt(p)?(t.enter("lineEnding"),t.consume(p),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),h(p))}function h(p){return p===null||p===91||p===93||Kt(p)||l++>999?(t.exit("chunkString"),u(p)):(t.consume(p),c||(c=!Cn(p)),p===92?f:h)}function f(p){return p===91||p===92||p===93?(t.consume(p),l++,h):h(p)}}function EG(t,e,n,r,s,a){let o;return l;function l(f){return f===34||f===39||f===40?(t.enter(r),t.enter(s),t.consume(f),t.exit(s),o=f===40?41:f,c):n(f)}function c(f){return f===o?(t.enter(s),t.consume(f),t.exit(s),t.exit(r),e):(t.enter(a),d(f))}function d(f){return f===o?(t.exit(a),c(o)):f===null?n(f):Kt(f)?(t.enter("lineEnding"),t.consume(f),t.exit("lineEnding"),Ln(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(f))}function u(f){return f===o||f===null||Kt(f)?(t.exit("chunkString"),d(f)):(t.consume(f),f===92?h:u)}function h(f){return f===o||f===92?(t.consume(f),u):u(f)}}function Cg(t,e){let n;return r;function r(s){return Kt(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):Cn(s)?Ln(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const nve={name:"definition",tokenize:sve},rve={partial:!0,tokenize:ive};function sve(t,e,n){const r=this;let s;return a;function a(p){return t.enter("definition"),o(p)}function o(p){return CG.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function l(p){return s=po(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),p===58?(t.enter("definitionMarker"),t.consume(p),t.exit("definitionMarker"),c):n(p)}function c(p){return ir(p)?Cg(t,d)(p):d(p)}function d(p){return kG(t,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function u(p){return t.attempt(rve,h,h)(p)}function h(p){return Cn(p)?Ln(t,f,"whitespace")(p):f(p)}function f(p){return p===null||Kt(p)?(t.exit("definition"),r.parser.defined.push(s),e(p)):n(p)}}function ive(t,e,n){return r;function r(l){return ir(l)?Cg(t,s)(l):n(l)}function s(l){return EG(t,a,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function a(l){return Cn(l)?Ln(t,o,"whitespace")(l):o(l)}function o(l){return l===null||Kt(l)?e(l):n(l)}}const ave={name:"hardBreakEscape",tokenize:ove};function ove(t,e,n){return r;function r(a){return t.enter("hardBreakEscape"),t.consume(a),s}function s(a){return Kt(a)?(t.exit("hardBreakEscape"),e(a)):n(a)}}const lve={name:"headingAtx",resolve:cve,tokenize:dve};function cve(t,e){let n=t.length-2,r=3,s,a;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},a={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},ua(t,r,n-r+1,[["enter",s,e],["enter",a,e],["exit",a,e],["exit",s,e]])),t}function dve(t,e,n){let r=0;return s;function s(u){return t.enter("atxHeading"),a(u)}function a(u){return t.enter("atxHeadingSequence"),o(u)}function o(u){return u===35&&r++<6?(t.consume(u),o):u===null||ir(u)?(t.exit("atxHeadingSequence"),l(u)):n(u)}function l(u){return u===35?(t.enter("atxHeadingSequence"),c(u)):u===null||Kt(u)?(t.exit("atxHeading"),e(u)):Cn(u)?Ln(t,l,"whitespace")(u):(t.enter("atxHeadingText"),d(u))}function c(u){return u===35?(t.consume(u),c):(t.exit("atxHeadingSequence"),l(u))}function d(u){return u===null||u===35||ir(u)?(t.exit("atxHeadingText"),l(u)):(t.consume(u),d)}}const uve=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ZO=["pre","script","style","textarea"],hve={concrete:!0,name:"htmlFlow",resolveTo:mve,tokenize:gve},fve={partial:!0,tokenize:yve},pve={partial:!0,tokenize:xve};function mve(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function gve(t,e,n){const r=this;let s,a,o,l,c;return d;function d(F){return u(F)}function u(F){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(F),h}function h(F){return F===33?(t.consume(F),f):F===47?(t.consume(F),a=!0,y):F===63?(t.consume(F),s=3,r.interrupt?e:R):xi(F)?(t.consume(F),o=String.fromCharCode(F),m):n(F)}function f(F){return F===45?(t.consume(F),s=2,p):F===91?(t.consume(F),s=5,l=0,x):xi(F)?(t.consume(F),s=4,r.interrupt?e:R):n(F)}function p(F){return F===45?(t.consume(F),r.interrupt?e:R):n(F)}function x(F){const J="CDATA[";return F===J.charCodeAt(l++)?(t.consume(F),l===J.length?r.interrupt?e:I:x):n(F)}function y(F){return xi(F)?(t.consume(F),o=String.fromCharCode(F),m):n(F)}function m(F){if(F===null||F===47||F===62||ir(F)){const J=F===47,q=o.toLowerCase();return!J&&!a&&ZO.includes(q)?(s=1,r.interrupt?e(F):I(F)):uve.includes(o.toLowerCase())?(s=6,J?(t.consume(F),g):r.interrupt?e(F):I(F)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(F):a?v(F):b(F))}return F===45||Ys(F)?(t.consume(F),o+=String.fromCharCode(F),m):n(F)}function g(F){return F===62?(t.consume(F),r.interrupt?e:I):n(F)}function v(F){return Cn(F)?(t.consume(F),v):M(F)}function b(F){return F===47?(t.consume(F),M):F===58||F===95||xi(F)?(t.consume(F),S):Cn(F)?(t.consume(F),b):M(F)}function S(F){return F===45||F===46||F===58||F===95||Ys(F)?(t.consume(F),S):C(F)}function C(F){return F===61?(t.consume(F),E):Cn(F)?(t.consume(F),C):b(F)}function E(F){return F===null||F===60||F===61||F===62||F===96?n(F):F===34||F===39?(t.consume(F),c=F,N):Cn(F)?(t.consume(F),E):T(F)}function N(F){return F===c?(t.consume(F),c=null,A):F===null||Kt(F)?n(F):(t.consume(F),N)}function T(F){return F===null||F===34||F===39||F===47||F===60||F===61||F===62||F===96||ir(F)?C(F):(t.consume(F),T)}function A(F){return F===47||F===62||Cn(F)?b(F):n(F)}function M(F){return F===62?(t.consume(F),P):n(F)}function P(F){return F===null||Kt(F)?I(F):Cn(F)?(t.consume(F),P):n(F)}function I(F){return F===45&&s===2?(t.consume(F),H):F===60&&s===1?(t.consume(F),$):F===62&&s===4?(t.consume(F),D):F===63&&s===3?(t.consume(F),R):F===93&&s===5?(t.consume(F),U):Kt(F)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(fve,G,B)(F)):F===null||Kt(F)?(t.exit("htmlFlowData"),B(F)):(t.consume(F),I)}function B(F){return t.check(pve,V,G)(F)}function V(F){return t.enter("lineEnding"),t.consume(F),t.exit("lineEnding"),K}function K(F){return F===null||Kt(F)?B(F):(t.enter("htmlFlowData"),I(F))}function H(F){return F===45?(t.consume(F),R):I(F)}function $(F){return F===47?(t.consume(F),o="",L):I(F)}function L(F){if(F===62){const J=o.toLowerCase();return ZO.includes(J)?(t.consume(F),D):I(F)}return xi(F)&&o.length<8?(t.consume(F),o+=String.fromCharCode(F),L):I(F)}function U(F){return F===93?(t.consume(F),R):I(F)}function R(F){return F===62?(t.consume(F),D):F===45&&s===2?(t.consume(F),R):I(F)}function D(F){return F===null||Kt(F)?(t.exit("htmlFlowData"),G(F)):(t.consume(F),D)}function G(F){return t.exit("htmlFlow"),e(F)}}function xve(t,e,n){const r=this;return s;function s(o){return Kt(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),a):n(o)}function a(o){return r.parser.lazy[r.now().line]?n(o):e(o)}}function yve(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(Jx,e,n)}}const vve={name:"htmlText",tokenize:bve};function bve(t,e,n){const r=this;let s,a,o;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),C):R===63?(t.consume(R),b):xi(R)?(t.consume(R),T):n(R)}function d(R){return R===45?(t.consume(R),u):R===91?(t.consume(R),a=0,x):xi(R)?(t.consume(R),v):n(R)}function u(R){return R===45?(t.consume(R),p):n(R)}function h(R){return R===null?n(R):R===45?(t.consume(R),f):Kt(R)?(o=h,$(R)):(t.consume(R),h)}function f(R){return R===45?(t.consume(R),p):h(R)}function p(R){return R===62?H(R):R===45?f(R):h(R)}function x(R){const D="CDATA[";return R===D.charCodeAt(a++)?(t.consume(R),a===D.length?y:x):n(R)}function y(R){return R===null?n(R):R===93?(t.consume(R),m):Kt(R)?(o=y,$(R)):(t.consume(R),y)}function m(R){return R===93?(t.consume(R),g):y(R)}function g(R){return R===62?H(R):R===93?(t.consume(R),g):y(R)}function v(R){return R===null||R===62?H(R):Kt(R)?(o=v,$(R)):(t.consume(R),v)}function b(R){return R===null?n(R):R===63?(t.consume(R),S):Kt(R)?(o=b,$(R)):(t.consume(R),b)}function S(R){return R===62?H(R):b(R)}function C(R){return xi(R)?(t.consume(R),E):n(R)}function E(R){return R===45||Ys(R)?(t.consume(R),E):N(R)}function N(R){return Kt(R)?(o=N,$(R)):Cn(R)?(t.consume(R),N):H(R)}function T(R){return R===45||Ys(R)?(t.consume(R),T):R===47||R===62||ir(R)?A(R):n(R)}function A(R){return R===47?(t.consume(R),H):R===58||R===95||xi(R)?(t.consume(R),M):Kt(R)?(o=A,$(R)):Cn(R)?(t.consume(R),A):H(R)}function M(R){return R===45||R===46||R===58||R===95||Ys(R)?(t.consume(R),M):P(R)}function P(R){return R===61?(t.consume(R),I):Kt(R)?(o=P,$(R)):Cn(R)?(t.consume(R),P):A(R)}function I(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,B):Kt(R)?(o=I,$(R)):Cn(R)?(t.consume(R),I):(t.consume(R),V)}function B(R){return R===s?(t.consume(R),s=void 0,K):R===null?n(R):Kt(R)?(o=B,$(R)):(t.consume(R),B)}function V(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||ir(R)?A(R):(t.consume(R),V)}function K(R){return R===47||R===62||ir(R)?A(R):n(R)}function H(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function $(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),L}function L(R){return Cn(R)?Ln(t,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):U(R)}function U(R){return t.enter("htmlTextData"),o(R)}}const aj={name:"labelEnd",resolveAll:kve,resolveTo:Cve,tokenize:Eve},_ve={tokenize:Ave},Sve={tokenize:Tve},wve={tokenize:Mve};function kve(t){let e=-1;const n=[];for(;++e<t.length;){const r=t[e][1];if(n.push(t[e]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){const s=r.type==="labelImage"?4:2;r.type="data",e+=s}}return t.length!==n.length&&ua(t,0,t.length,n),t}function Cve(t,e){let n=t.length,r=0,s,a,o,l;for(;n--;)if(s=t[n][1],a){if(s.type==="link"||s.type==="labelLink"&&s._inactive)break;t[n][0]==="enter"&&s.type==="labelLink"&&(s._inactive=!0)}else if(o){if(t[n][0]==="enter"&&(s.type==="labelImage"||s.type==="labelLink")&&!s._balanced&&(a=n,s.type!=="labelLink")){r=2;break}}else s.type==="labelEnd"&&(o=n);const c={type:t[a][1].type==="labelLink"?"link":"image",start:{...t[a][1].start},end:{...t[t.length-1][1].end}},d={type:"label",start:{...t[a][1].start},end:{...t[o][1].end}},u={type:"labelText",start:{...t[a+r+2][1].end},end:{...t[o-2][1].start}};return l=[["enter",c,e],["enter",d,e]],l=Da(l,t.slice(a+1,a+r+3)),l=Da(l,[["enter",u,e]]),l=Da(l,jS(e.parser.constructs.insideSpan.null,t.slice(a+r+4,o-3),e)),l=Da(l,[["exit",u,e],t[o-2],t[o-1],["exit",d,e]]),l=Da(l,t.slice(o+1)),l=Da(l,[["exit",c,e]]),ua(t,a,t.length,l),t}function Eve(t,e,n){const r=this;let s=r.events.length,a,o;for(;s--;)if((r.events[s][1].type==="labelImage"||r.events[s][1].type==="labelLink")&&!r.events[s][1]._balanced){a=r.events[s][1];break}return l;function l(f){return a?a._inactive?h(f):(o=r.parser.defined.includes(po(r.sliceSerialize({start:a.end,end:r.now()}))),t.enter("labelEnd"),t.enter("labelMarker"),t.consume(f),t.exit("labelMarker"),t.exit("labelEnd"),c):n(f)}function c(f){return f===40?t.attempt(_ve,u,o?u:h)(f):f===91?t.attempt(Sve,u,o?d:h)(f):o?u(f):h(f)}function d(f){return t.attempt(wve,u,h)(f)}function u(f){return e(f)}function h(f){return a._balanced=!0,n(f)}}function Ave(t,e,n){return r;function r(h){return t.enter("resource"),t.enter("resourceMarker"),t.consume(h),t.exit("resourceMarker"),s}function s(h){return ir(h)?Cg(t,a)(h):a(h)}function a(h){return h===41?u(h):kG(t,o,l,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(h)}function o(h){return ir(h)?Cg(t,c)(h):u(h)}function l(h){return n(h)}function c(h){return h===34||h===39||h===40?EG(t,d,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(h):u(h)}function d(h){return ir(h)?Cg(t,u)(h):u(h)}function u(h){return h===41?(t.enter("resourceMarker"),t.consume(h),t.exit("resourceMarker"),t.exit("resource"),e):n(h)}}function Tve(t,e,n){const r=this;return s;function s(l){return CG.call(r,t,a,o,"reference","referenceMarker","referenceString")(l)}function a(l){return r.parser.defined.includes(po(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?e(l):n(l)}function o(l){return n(l)}}function Mve(t,e,n){return r;function r(a){return t.enter("reference"),t.enter("referenceMarker"),t.consume(a),t.exit("referenceMarker"),s}function s(a){return a===93?(t.enter("referenceMarker"),t.consume(a),t.exit("referenceMarker"),t.exit("reference"),e):n(a)}}const Nve={name:"labelStartImage",resolveAll:aj.resolveAll,tokenize:jve};function jve(t,e,n){const r=this;return s;function s(l){return t.enter("labelImage"),t.enter("labelImageMarker"),t.consume(l),t.exit("labelImageMarker"),a}function a(l){return l===91?(t.enter("labelMarker"),t.consume(l),t.exit("labelMarker"),t.exit("labelImage"),o):n(l)}function o(l){return l===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(l):e(l)}}const Rve={name:"labelStartLink",resolveAll:aj.resolveAll,tokenize:Ive};function Ive(t,e,n){const r=this;return s;function s(o){return t.enter("labelLink"),t.enter("labelMarker"),t.consume(o),t.exit("labelMarker"),t.exit("labelLink"),a}function a(o){return o===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(o):e(o)}}const YC={name:"lineEnding",tokenize:Pve};function Pve(t,e){return n;function n(r){return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),Ln(t,e,"linePrefix")}}const gb={name:"thematicBreak",tokenize:Lve};function Lve(t,e,n){let r=0,s;return a;function a(d){return t.enter("thematicBreak"),o(d)}function o(d){return s=d,l(d)}function l(d){return d===s?(t.enter("thematicBreakSequence"),c(d)):r>=3&&(d===null||Kt(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),Cn(d)?Ln(t,l,"whitespace")(d):l(d))}}const Pi={continuation:{tokenize:Fve},exit:zve,name:"list",tokenize:Bve},Dve={partial:!0,tokenize:Hve},Ove={partial:!0,tokenize:Uve};function Bve(t,e,n){const r=this,s=r.events[r.events.length-1];let a=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,o=0;return l;function l(p){const x=r.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!r.containerState.marker||p===r.containerState.marker:LT(p)){if(r.containerState.type||(r.containerState.type=x,t.enter(x,{_container:!0})),x==="listUnordered")return t.enter("listItemPrefix"),p===42||p===45?t.check(gb,n,d)(p):d(p);if(!r.interrupt||p===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(p)}return n(p)}function c(p){return LT(p)&&++o<10?(t.consume(p),c):(!r.interrupt||o<2)&&(r.containerState.marker?p===r.containerState.marker:p===41||p===46)?(t.exit("listItemValue"),d(p)):n(p)}function d(p){return t.enter("listItemMarker"),t.consume(p),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||p,t.check(Jx,r.interrupt?n:u,t.attempt(Dve,f,h))}function u(p){return r.containerState.initialBlankLine=!0,a++,f(p)}function h(p){return Cn(p)?(t.enter("listItemPrefixWhitespace"),t.consume(p),t.exit("listItemPrefixWhitespace"),f):n(p)}function f(p){return r.containerState.size=a+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(p)}}function Fve(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(Jx,s,a);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Ln(t,e,"listItemIndent",r.containerState.size+1)(l)}function a(l){return r.containerState.furtherBlankLines||!Cn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(Ove,e,o)(l))}function o(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,Ln(t,t.attempt(Pi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function Uve(t,e,n){const r=this;return Ln(t,s,"listItemIndent",r.containerState.size+1);function s(a){const o=r.events[r.events.length-1];return o&&o[1].type==="listItemIndent"&&o[2].sliceSerialize(o[1],!0).length===r.containerState.size?e(a):n(a)}}function zve(t){t.exit(this.containerState.type)}function Hve(t,e,n){const r=this;return Ln(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function s(a){const o=r.events[r.events.length-1];return!Cn(a)&&o&&o[1].type==="listItemPrefixWhitespace"?e(a):n(a)}}const QO={name:"setextUnderline",resolveTo:Gve,tokenize:Wve};function Gve(t,e){let n=t.length,r,s,a;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!a&&t[n][1].type==="definition"&&(a=n);const o={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",a?(t.splice(s,0,["enter",o,e]),t.splice(a+1,0,["exit",t[r][1],e]),t[r][1].end={...t[a][1].end}):t[r][1]=o,t.push(["exit",o,e]),t}function Wve(t,e,n){const r=this;let s;return a;function a(d){let u=r.events.length,h;for(;u--;)if(r.events[u][1].type!=="lineEnding"&&r.events[u][1].type!=="linePrefix"&&r.events[u][1].type!=="content"){h=r.events[u][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||h)?(t.enter("setextHeadingLine"),s=d,o(d)):n(d)}function o(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),Cn(d)?Ln(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||Kt(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const Vve={tokenize:$ve};function $ve(t){const e=this,n=t.attempt(Jx,r,t.attempt(this.parser.constructs.flowInitial,s,Ln(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Jye,s)),"linePrefix")));return n;function r(a){if(a===null){t.consume(a);return}return t.enter("lineEndingBlank"),t.consume(a),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(a){if(a===null){t.consume(a);return}return t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const Kve={resolveAll:TG()},qve=AG("string"),Xve=AG("text");function AG(t){return{resolveAll:TG(t==="text"?Yve:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],a=n.attempt(s,o,l);return o;function o(u){return d(u)?a(u):l(u)}function l(u){if(u===null){n.consume(u);return}return n.enter("data"),n.consume(u),c}function c(u){return d(u)?(n.exit("data"),a(u)):(n.consume(u),c)}function d(u){if(u===null)return!0;const h=s[u];let f=-1;if(h)for(;++f<h.length;){const p=h[f];if(!p.previous||p.previous.call(r,r.previous))return!0}return!1}}}function TG(t){return e;function e(n,r){let s=-1,a;for(;++s<=n.length;)a===void 0?n[s]&&n[s][1].type==="data"&&(a=s,s++):(!n[s]||n[s][1].type!=="data")&&(s!==a+2&&(n[a][1].end=n[s-1][1].end,n.splice(a+2,s-a-2),s=a+2),a=void 0);return t?t(n,r):n}}function Yve(t,e){let n=0;for(;++n<=t.length;)if((n===t.length||t[n][1].type==="lineEnding")&&t[n-1][1].type==="data"){const r=t[n-1][1],s=e.sliceStream(r);let a=s.length,o=-1,l=0,c;for(;a--;){const d=s[a];if(typeof d=="string"){for(o=d.length;d.charCodeAt(o-1)===32;)l++,o--;if(o)break;o=-1}else if(d===-2)c=!0,l++;else if(d!==-1){a++;break}}if(e._contentTypeTextTrailing&&n===t.length&&(l=0),l){const d={type:n===t.length||c||l<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:a?o:r.start._bufferIndex+o,_index:r.start._index+a,line:r.end.line,column:r.end.column-l,offset:r.end.offset-l},end:{...r.end}};r.end={...d.start},r.start.offset===r.end.offset?Object.assign(r,d):(t.splice(n,0,["enter",d,e],["exit",d,e]),n+=2)}n++}return t}const Jve={42:Pi,43:Pi,45:Pi,48:Pi,49:Pi,50:Pi,51:Pi,52:Pi,53:Pi,54:Pi,55:Pi,56:Pi,57:Pi,62:bG},Zve={91:nve},Qve={[-2]:XC,[-1]:XC,32:XC},ebe={35:lve,42:gb,45:[QO,gb],60:hve,61:QO,95:gb,96:JO,126:JO},tbe={38:SG,92:_G},nbe={[-5]:YC,[-4]:YC,[-3]:YC,33:Nve,38:SG,42:DT,60:[Rye,vve],91:Rve,92:[ave,_G],93:aj,95:DT,96:Vye},rbe={null:[DT,Kve]},sbe={null:[42,95]},ibe={null:[]},abe=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:sbe,contentInitial:Zve,disable:ibe,document:Jve,flow:ebe,flowInitial:Qve,insideSpan:rbe,string:tbe,text:nbe},Symbol.toStringTag,{value:"Module"}));function obe(t,e,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0};const s={},a=[];let o=[],l=[];const c={attempt:N(C),check:N(E),consume:v,enter:b,exit:S,interrupt:N(E,{interrupt:!0})},d={code:null,containerState:{},defineSkip:y,events:[],now:x,parser:t,previous:null,sliceSerialize:f,sliceStream:p,write:h};let u=e.tokenize.call(d,c);return e.resolveAll&&a.push(e),d;function h(P){return o=Da(o,P),m(),o[o.length-1]!==null?[]:(T(e,0),d.events=jS(a,d.events,d),d.events)}function f(P,I){return cbe(p(P),I)}function p(P){return lbe(o,P)}function x(){const{_bufferIndex:P,_index:I,line:B,column:V,offset:K}=r;return{_bufferIndex:P,_index:I,line:B,column:V,offset:K}}function y(P){s[P.line]=P.column,M()}function m(){let P;for(;r._index<o.length;){const I=o[r._index];if(typeof I=="string")for(P=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===P&&r._bufferIndex<I.length;)g(I.charCodeAt(r._bufferIndex));else g(I)}}function g(P){u=u(P)}function v(P){Kt(P)?(r.line++,r.column=1,r.offset+=P===-3?2:1,M()):P!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),d.previous=P}function b(P,I){const B=I||{};return B.type=P,B.start=x(),d.events.push(["enter",B,d]),l.push(B),B}function S(P){const I=l.pop();return I.end=x(),d.events.push(["exit",I,d]),I}function C(P,I){T(P,I.from)}function E(P,I){I.restore()}function N(P,I){return B;function B(V,K,H){let $,L,U,R;return Array.isArray(V)?G(V):"tokenize"in V?G([V]):D(V);function D(te){return z;function z(Q){const re=Q!==null&&te[Q],ie=Q!==null&&te.null,de=[...Array.isArray(re)?re:re?[re]:[],...Array.isArray(ie)?ie:ie?[ie]:[]];return G(de)(Q)}}function G(te){return $=te,L=0,te.length===0?H:F(te[L])}function F(te){return z;function z(Q){return R=A(),U=te,te.partial||(d.currentConstruct=te),te.name&&d.parser.constructs.disable.null.includes(te.name)?q():te.tokenize.call(I?Object.assign(Object.create(d),I):d,c,J,q)(Q)}}function J(te){return P(U,R),K}function q(te){return R.restore(),++L<$.length?F($[L]):H}}}function T(P,I){P.resolveAll&&!a.includes(P)&&a.push(P),P.resolve&&ua(d.events,I,d.events.length-I,P.resolve(d.events.slice(I),d)),P.resolveTo&&(d.events=P.resolveTo(d.events,d))}function A(){const P=x(),I=d.previous,B=d.currentConstruct,V=d.events.length,K=Array.from(l);return{from:V,restore:H};function H(){r=P,d.previous=I,d.currentConstruct=B,d.events.length=V,l=K,M()}}function M(){r.line in s&&r.column<2&&(r.column=s[r.line],r.offset+=s[r.line]-1)}}function lbe(t,e){const n=e.start._index,r=e.start._bufferIndex,s=e.end._index,a=e.end._bufferIndex;let o;if(n===s)o=[t[n].slice(r,a)];else{if(o=t.slice(n,s),r>-1){const l=o[0];typeof l=="string"?o[0]=l.slice(r):o.shift()}a>0&&o.push(t[s].slice(0,a))}return o}function cbe(t,e){let n=-1;const r=[];let s;for(;++n<t.length;){const a=t[n];let o;if(typeof a=="string")o=a;else switch(a){case-5:{o="\r";break}case-4:{o=`
|
|
4916
|
+
}`,className:"w-full px-3 py-2 bg-surface-dark border border-border-dark rounded text-xs font-mono",spellCheck:!1}),i.jsxs("p",{className:"text-xs text-text-secondary-dark mt-1",children:["Copy the entire block from the opening ",i.jsx("code",{children:"{"})," to the closing ",i.jsx("code",{children:"}"}),"."]})]}),y&&i.jsx(Bt,{variant:"error",children:y}),i.jsxs("div",{className:"flex justify-between items-center pt-2",children:[i.jsx("button",{type:"button",onClick:()=>{s("configure"),x(""),m(null),f(null)},className:"text-xs text-text-secondary-dark hover:underline",children:"← Back (change scope)"}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:T,children:"Save credential"})]})]})]}),r==="saving"&&i.jsxs("div",{className:"flex items-center gap-3 py-8 justify-center",children:[i.jsx(zn,{className:"w-4 h-4 animate-spin"}),i.jsx("span",{className:"text-sm",children:"Saving credential…"})]})]})},age=({onClose:t,onImport:e,onClearExtensionFile:n})=>{const[r,s]=k.useState("name"),[a,o]=k.useState(""),[l,c]=k.useState(null),[d]=k.useState(null),[u,h]=k.useState(!1),f=()=>{if(!a.trim()){c('Please provide a name (e.g. "info-steam-fun", "personal-gmail")');return}c(null),s("instructions")},p=async()=>{c(null),s("importing");try{await e(a.trim()),s("done")}catch(m){c(m instanceof Error?m.message:"Import failed"),s("instructions")}},x=async()=>{h(!0);try{await n(),s("name"),o("")}catch(m){c(m instanceof Error?m.message:"Failed to clear extension file")}finally{h(!1)}},y=r==="done"?"Google account added":"Import from Gemini CLI";return i.jsxs(Ka,{isOpen:!0,onClose:t,title:y,size:"lg",children:[r==="name"&&i.jsxs("div",{className:"space-y-4",children:[i.jsxs(Bt,{variant:"info",children:["This option is for developers who already run the Gemini CLI workspace extension locally. For the regular flow, close this and click ",i.jsx("strong",{children:"Add Google Account"}),"."]}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Pick a name for this Google account. You'll use this name to tell agents which account to use for a task."}),i.jsxs("div",{children:[i.jsx(Tt,{htmlFor:"cred-gemcli-name",children:"Name"}),i.jsx(on,{id:"cred-gemcli-name",type:"text",value:a,onChange:m=>o(m.target.value),placeholder:"e.g. info-steam-fun, personal-gmail",autoFocus:!0})]}),l&&i.jsx(Bt,{variant:"error",children:l}),i.jsxs("div",{className:"flex justify-end gap-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:f,children:"Next"})]})]}),r==="instructions"&&i.jsxs("div",{className:"space-y-4",children:[i.jsx(Bt,{variant:"info",children:"You'll sign in via the Gemini CLI Workspace extension. Crewly will then copy the resulting tokens into its own encrypted store."}),i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium mb-1",children:"1. Open a terminal and run:"}),i.jsx("pre",{className:"bg-surface-dark border border-border-dark rounded p-3 text-xs font-mono overflow-x-auto",children:"GEMINI_CLI_WORKSPACE_FORCE_FILE_STORAGE=true gemini"})]}),i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium mb-1",children:"2. Inside gemini, type:"}),i.jsx("pre",{className:"bg-surface-dark border border-border-dark rounded p-3 text-xs font-mono overflow-x-auto",children:"list my calendar events for today"}),i.jsx("p",{className:"text-xs text-text-secondary-dark mt-1",children:"This triggers the workspace extension to open a browser for Google sign-in."})]}),i.jsxs("div",{children:[i.jsxs("div",{className:"text-sm font-medium mb-1",children:["3. In the browser: sign in as ",i.jsx("span",{className:"font-mono",children:a})]}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Grant the requested scopes. You can close the browser after the success page appears."})]}),i.jsxs("div",{children:[i.jsx("div",{className:"text-sm font-medium mb-1",children:"4. Come back here and click Import."}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Crewly will read the extension's token file and save an encrypted copy."})]})]}),i.jsxs("a",{href:"https://github.com/gemini-cli-extensions/workspace",target:"_blank",rel:"noreferrer",className:"text-xs text-primary inline-flex items-center gap-1 hover:underline",children:["About the workspace extension ",i.jsx(Ps,{className:"w-3 h-3"})]}),l&&i.jsx(Bt,{variant:"error",children:l}),i.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Cancel"}),i.jsx(ze,{variant:"primary",onClick:p,children:"Import"})]})]}),r==="importing"&&i.jsxs("div",{className:"flex items-center gap-3 py-4",children:[i.jsx(zn,{className:"w-4 h-4 animate-spin"}),i.jsx("span",{className:"text-sm",children:"Reading the extension's token file…"})]}),r==="done"&&i.jsxs("div",{className:"space-y-4",children:[i.jsxs(Bt,{variant:"success",children:["Google account ",i.jsx("strong",{children:a})," added.",d&&i.jsxs(i.Fragment,{children:[" (",d,")"]})]}),i.jsx("div",{className:"text-sm text-text-secondary-dark",children:"To add another Google account, Crewly needs to clear the extension's cached token so your next sign-in captures a different account."}),l&&i.jsx(Bt,{variant:"error",children:l}),i.jsxs("div",{className:"flex justify-end gap-2",children:[i.jsx(ze,{variant:"secondary",onClick:t,children:"Done"}),i.jsx(ze,{variant:"primary",onClick:x,disabled:u,children:u?"Clearing…":"Add another account"})]})]})]})},oge=1e4;function lge(t){const e=[];for(const n of t)for(const r of n.members)e.push({memberId:r.id,name:r.name,sessionName:r.sessionName,role:r.role,teamName:n.name,teamId:n.id,agentStatus:r.agentStatus,workingStatus:r.workingStatus,readyAt:r.readyAt??null,lastActivityCheck:r.lastActivityCheck??null,runtimeType:r.runtimeType});return e}function cge(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useRef(!0),l=k.useCallback(async()=>{try{const d=await ft.getTeams(!0);o.current&&(e(lge(d)),a(null))}catch(d){o.current&&a(d instanceof Error?d.message:"Failed to fetch agent heartbeats")}},[]),c=k.useCallback(async()=>{await l()},[l]);return k.useEffect(()=>{o.current=!0,(async()=>{await l(),o.current&&r(!1)})();const u=setInterval(l,oge);return()=>{o.current=!1,clearInterval(u)}},[l]),{agents:t,isLoading:n,error:s,refresh:c}}const dge={active:{label:"Active",color:"text-green-400",bgColor:"bg-green-500/10"},started:{label:"Started",color:"text-blue-400",bgColor:"bg-blue-500/10"},starting:{label:"Starting",color:"text-yellow-400",bgColor:"bg-yellow-500/10"},activating:{label:"Activating",color:"text-yellow-400",bgColor:"bg-yellow-500/10"},inactive:{label:"Offline",color:"text-gray-400",bgColor:"bg-gray-500/10"},suspended:{label:"Suspended",color:"text-red-400",bgColor:"bg-red-500/10"}};function uge(t){return t?tx(t):"Never"}const hge=({agent:t})=>{const e=dge[t.agentStatus],n=t.agentStatus==="active"||t.agentStatus==="started";return i.jsxs("div",{className:"border border-border-dark rounded-lg p-4 hover:bg-surface-dark/30 transition-colors",children:[i.jsxs("div",{className:"flex items-start justify-between mb-3",children:[i.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[i.jsx("div",{className:`w-2 h-2 rounded-full shrink-0 ${n?"bg-green-400":"bg-gray-500"}`}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark truncate",children:t.name})]}),i.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium shrink-0 ${e.bgColor} ${e.color}`,children:e.label})]}),i.jsxs("div",{className:"space-y-2 text-xs",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Role"}),i.jsx("span",{className:"text-text-primary-dark capitalize",children:t.role})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Team"}),i.jsx("span",{className:"text-text-primary-dark truncate ml-2",children:t.teamName})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Working"}),i.jsx("span",{className:t.workingStatus==="in_progress"?"text-yellow-400":"text-text-secondary-dark",children:t.workingStatus==="in_progress"?"In Progress":"Idle"})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Runtime"}),i.jsx("span",{className:"text-text-primary-dark",children:t.runtimeType})]}),i.jsxs("div",{className:"flex justify-between items-center",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Connection"}),n?i.jsx(nM,{className:"w-3.5 h-3.5 text-green-400"}):i.jsx(qK,{className:"w-3.5 h-3.5 text-gray-500"})]})]}),i.jsxs("div",{className:"mt-3 pt-3 border-t border-border-dark flex justify-between text-xs",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Last active"}),i.jsx("span",{className:"text-text-secondary-dark",children:uge(t.lastActivityCheck??t.readyAt)})]})]})},fge=()=>{const{agents:t,isLoading:e,error:n,refresh:r}=cge(),s=t.filter(a=>a.agentStatus==="active"||a.agentStatus==="started").length;return e?i.jsx("div",{className:"flex items-center justify-center py-12",children:i.jsx(sr,{size:"sm",text:"Loading heartbeat status..."})}):n?i.jsxs("div",{className:"flex items-center gap-2 p-4 rounded-lg bg-red-500/10 border border-red-500/20",children:[i.jsx(Or,{className:"w-5 h-5 text-red-400 shrink-0"}),i.jsx("span",{className:"text-sm text-red-400",children:n})]}):i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between mb-4",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx($o,{className:"w-5 h-5 text-text-secondary-dark"}),i.jsx("h3",{className:"text-lg font-semibold text-text-primary-dark",children:"Agent Heartbeat"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark bg-surface-dark px-2 py-0.5 rounded-full",children:[s,"/",t.length," online"]})]}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:r,icon:zn,children:"Refresh"})]}),t.length===0?i.jsxs("div",{className:"text-center py-12 text-text-secondary-dark",children:[i.jsx($o,{className:"w-10 h-10 mx-auto mb-3 opacity-40"}),i.jsx("p",{className:"text-sm",children:"No agents found"}),i.jsx("p",{className:"text-xs mt-1 opacity-60",children:"Agent heartbeats will appear when teams have members configured"})]}):i.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:t.map(a=>i.jsx(hge,{agent:a},`${a.teamId}-${a.memberId}`))})]})},pge=()=>i.jsx("div",{className:"space-y-8",children:i.jsx(fge,{})}),mge=new Set(["general","roles","skills","integrations","api-keys","credentials","system"]),gge=()=>{const[t]=pp(),e=_r(),n=t.get("tab");k.useEffect(()=>{n==="cloud"&&e("/cloud",{replace:!0})},[n,e]);const r=n==="slack"?"integrations":n&&mge.has(n)?n:"general",[s,a]=k.useState(r),o=[{id:"general",label:"General",icon:ZF},{id:"roles",label:"Roles",icon:Ku},{id:"skills",label:"Skills",icon:iU},{id:"integrations",label:"Integrations",icon:Sl},{id:"api-keys",label:"API Keys",icon:Kb},{id:"credentials",label:"Credentials",icon:qb},{id:"system",label:"System",icon:go}],l=()=>{switch(s){case"general":return i.jsx(cme,{});case"roles":return i.jsx(pme,{});case"skills":return i.jsx(yme,{});case"integrations":return i.jsx(Yme,{});case"api-keys":return i.jsx(Zme,{});case"credentials":return i.jsx(nge,{});case"system":return i.jsx(pge,{});default:return null}};return i.jsxs("div",{className:"max-w-7xl mx-auto",children:[i.jsxs("div",{className:"mb-8",children:[i.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Settings"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Configure Crewly behavior and manage roles and skills"})]}),i.jsx("nav",{className:"flex gap-1 border-b border-border-dark mb-6",role:"tablist",children:o.map(c=>i.jsxs("button",{className:`flex items-center gap-2 px-4 py-3 text-sm font-medium border-b-2 transition-colors -mb-px ${s===c.id?"border-primary text-primary":"border-transparent text-text-secondary-dark hover:text-text-primary-dark hover:bg-surface-dark"}`,onClick:()=>a(c.id),"aria-selected":s===c.id,role:"tab",id:`tab-${c.id}`,"aria-controls":`panel-${c.id}`,children:[i.jsx(c.icon,{className:"w-4 h-4"}),i.jsx("span",{children:c.label})]},c.id))}),i.jsx("main",{role:"tabpanel",id:`panel-${s}`,"aria-labelledby":`tab-${s}`,children:l()})]})};function AS(t){if(t!=null)return new Date(t).toISOString()}function YN(t){return t==="starting"?"online":t}function xge(t,e){return t==="system"?"System":e}function yge(t){if(!t)return;const e=t.clientMessageId;return typeof e=="string"&&e.length>0?e:void 0}function zC(t){return{id:t.id,agentSession:t.agentSession,name:t.name,purpose:t.purpose,createdAt:new Date(t.createdAt).toISOString(),lastMessageAt:AS(t.lastMessageAt),presence:YN(t.agentPresence.status),type:t.type??"dm",teamId:t.teamId,projectId:t.projectId,targetMemberId:t.targetMemberId}}function vge(t){return{id:t.id,kind:"image",url:t.url,filename:t.originalName,size:t.sizeBytes,mimeType:t.mimeType}}function CT(t){var e;return{id:t.id,channelId:t.channelId,seq:t.seq,author:{role:t.senderType,id:t.senderId,name:xge(t.senderType,t.senderId)},content:t.content,attachments:(e=t.attachments)==null?void 0:e.map(vge),createdAt:new Date(t.createdAt).toISOString(),clientMessageId:yge(t.metadata),deliveryStatus:"sent",mentions:Array.isArray(t.mentions)?t.mentions:[],threadId:t.threadId,replyCount:typeof t.replyCount=="number"?t.replyCount:void 0,lastReplyAt:AS(t.lastReplyAt)}}function bge(t){return{agentId:t.agentSession,status:YN(t.status),lastSeen:AS(t.lastSeenAt)}}function _ge(t){if(!t||typeof t!="object")return null;const e=t;if(e.type==="message"){const n=t.payload;return!n||typeof n.channelId!="string"||!n.message?null:{type:"message",channelId:n.channelId,message:CT(n.message)}}if(e.type==="presence"){const n=t.payload;return!n||typeof n.agentSession!="string"||typeof n.status!="string"?null:{type:"presence",agentSession:n.agentSession,status:YN(n.status),lastSeen:AS(n.lastSeenAt??null)}}if(e.type==="pong"){const n=t.ts;return{type:"pong",ts:typeof n=="number"?n:0}}if(e.type==="error"){const n=t.code,r=t.message;return{type:"error",code:typeof n=="string"?n:"unknown",message:typeof r=="string"?r:""}}return null}const Sge=["validation_error","not_found","channel_not_found","agent_not_found","forbidden","agent_already_bound","payload_too_large","rate_limited","invalid_cursor","channel_archived","attachment_not_found","internal_error","network_error","unknown_error"];class gx extends Error{constructor(n){super(n.message);In(this,"code");In(this,"httpStatus");In(this,"details");this.name="ChatApiError",this.code=n.code,this.httpStatus=n.httpStatus,this.details=n.details}static async fromResponse(n){let r;try{r=await n.json()}catch{r=void 0}if(r&&typeof r=="object"&&"error"in r&&r.error&&typeof r.error=="object"){const s=r.error,a=wge(s.code),o=typeof s.message=="string"?s.message:`Chat API error ${n.status}`,l=s.details&&typeof s.details=="object"?s.details:void 0;return new gx({code:a,httpStatus:n.status,message:o,details:l})}return new gx({code:"unknown_error",httpStatus:n.status,message:`Chat API error ${n.status}`})}}function wge(t){return typeof t!="string"?"unknown_error":Sge.includes(t)?t:"unknown_error"}const kge={id:"__me__",name:"You"},Cge=25e3,Ege=1e4,Age=1e3;function Tge(){const t=globalThis;return t.crypto&&typeof t.crypto.randomUUID=="function"?t.crypto.randomUUID():`cmid-${Math.random().toString(16).slice(2)}-${Date.now().toString(16)}`}class Mge{constructor(e){In(this,"backendURL");In(this,"authToken");In(this,"fetchImpl");In(this,"websocketImpl");In(this,"idGenerator");In(this,"currentUser");In(this,"heartbeatIntervalMs");In(this,"pongTimeoutMs");In(this,"reconnectDelayMs");In(this,"now");In(this,"localSubscribers",new Set);this.backendURL=e.backendURL.replace(/\/+$/,""),this.authToken=e.authToken,this.fetchImpl=e.fetchImpl??(typeof globalThis.fetch=="function"?globalThis.fetch.bind(globalThis):void 0),this.websocketImpl=e.websocketImpl??globalThis.WebSocket,this.idGenerator=e.idGenerator??Tge,this.currentUser=e.currentUser??kge,this.heartbeatIntervalMs=e.heartbeatIntervalMs??Cge,this.pongTimeoutMs=e.pongTimeoutMs??Ege,this.reconnectDelayMs=e.reconnectDelayMs??Age,this.now=e.now??Date.now}headers(e){const n={"Content-Type":"application/json",...e};return this.authToken&&(n.Authorization=`Bearer ${this.authToken}`),n}async request(e,n){let r;try{r=await this.fetchImpl(`${this.backendURL}${e}`,{...n,headers:this.headers(n==null?void 0:n.headers)})}catch(a){throw new gx({code:"network_error",httpStatus:0,message:a instanceof Error?a.message:String(a)})}if(!r.ok)throw await gx.fromResponse(r);return(await r.json()).data}async listChannels(){return(await this.request("/api/chat/channels")).channels.map(zC)}async createChannel(e){const n=await this.request("/api/chat/channels",{method:"POST",body:JSON.stringify(e)});return zC(n)}async createHuddle(e){const n=await this.request("/api/chat/channels/huddle",{method:"POST",body:JSON.stringify(e)});return zC(n)}async listMessages(e,n={}){const r=new URLSearchParams;n.cursor&&r.set("cursor",n.cursor),n.limit&&r.set("limit",String(n.limit));const s=r.toString()?`?${r.toString()}`:"",a=await this.request(`/api/chat/channels/${encodeURIComponent(e)}/messages${s}`);return{messages:a.messages.map(CT),nextCursor:a.nextCursor}}async sendMessage(e,n){const r=n.clientMessageId??this.idGenerator(),s=this.buildOptimisticMessage(e,n,r);this.emitLocal(e,{type:"message",channelId:e,message:s});const a={content:n.content,contentType:"markdown",clientMessageId:r};n.mentions&&n.mentions.length>0&&(a.mentions=n.mentions),n.threadId&&(a.threadId=n.threadId);let o;try{o=await this.request(`/api/chat/channels/${encodeURIComponent(e)}/messages`,{method:"POST",body:JSON.stringify(a)})}catch(c){throw this.emitLocal(e,{type:"message",channelId:e,message:{...s,deliveryStatus:"failed"}}),c}const l=CT(o);return l.clientMessageId||(l.clientMessageId=r),this.emitLocal(e,{type:"message",channelId:e,message:l}),l}async getAgentPresence(e){const n=await this.request(`/api/chat/presence/${encodeURIComponent(e)}`);return bge(n)}subscribeToChannel(e,n){const r={channelId:e,onEvent:n};this.localSubscribers.add(r);const s=this.openWebsocketConnection(e,n);return{unsubscribe:()=>{this.localSubscribers.delete(r),s.close()}}}buildOptimisticMessage(e,n,r){return{id:r,channelId:e,seq:-1,author:{role:"user",id:this.currentUser.id,name:this.currentUser.name},content:n.content,attachments:n.attachments,createdAt:new Date(this.now()).toISOString(),clientMessageId:r,deliveryStatus:"pending",mentions:n.mentions??[],threadId:n.threadId}}emitLocal(e,n){for(const r of this.localSubscribers)if(r.channelId===e)try{r.onEvent(n)}catch{}}openWebsocketConnection(e,n){let r=null,s=null,a=null,o=null,l=0,c=!1;const d=()=>{s&&(clearInterval(s),s=null),a&&(clearTimeout(a),a=null),o&&(clearTimeout(o),o=null)},u=()=>{if(r)try{(r.readyState===r.OPEN||r.readyState===r.CONNECTING)&&r.close()}catch{}},h=()=>{c||(d(),o=setTimeout(()=>{o=null,p()},this.reconnectDelayMs))},f=()=>{if(!(!r||r.readyState!==r.OPEN)){try{r.send(JSON.stringify({type:"ping",ts:this.now()}))}catch{return}a&&clearTimeout(a),a=setTimeout(()=>{u()},this.pongTimeoutMs)}},p=()=>{if(c)return;const x=this.backendURL.replace(/^http/,"ws"),y=new URLSearchParams({channelId:e});this.authToken&&y.set("token",this.authToken),l>0&&y.set("lastSeenSeq",String(l));try{r=new this.websocketImpl(`${x}/ws/chat?${y.toString()}`)}catch{h();return}const m=b=>{let S;try{S=JSON.parse(typeof b.data=="string"?b.data:"")}catch{return}const C=_ge(S);if(C){if(C.type==="pong"){a&&(clearTimeout(a),a=null),n(C);return}if(C.type==="message"&&C.message.seq>l&&(l=C.message.seq),C.type==="error"){n(C),c=!0,d(),u();return}n(C)}},g=()=>{s&&clearInterval(s),s=setInterval(f,this.heartbeatIntervalMs)},v=()=>{h()};r.addEventListener("message",m),r.addEventListener("open",g),r.addEventListener("close",v)};return p(),{close(){c=!0,d(),u()}}}}const vO="demo-user",bO="Steve",Nge=800,jge=()=>{let t=1;return e=>`${e}-${t++}`};class Rge{constructor(e={}){In(this,"channels");In(this,"messages");In(this,"subscribers",{});In(this,"replyDelay");In(this,"nextId",jge());this.channels=e.initialChannels??Ige(),this.messages=e.initialMessages??Pge(this.channels),this.replyDelay=e.agentReplyDelayMs??Nge}async listChannels(){return[...this.channels]}async createChannel(e){const n=e.type??"dm",r={id:this.nextId("ch"),agentSession:n==="dm"?e.agentSession??"":"",name:e.name,purpose:e.purpose,createdAt:new Date().toISOString(),presence:"online",type:n,teamId:e.teamId,projectId:e.projectId,targetMemberId:e.targetMemberId};return this.channels=[...this.channels,r],this.messages[r.id]=[],r}async createHuddle(e){const n={id:this.nextId("ch"),agentSession:"",name:e.name,purpose:e.purpose,createdAt:new Date().toISOString(),presence:"online",type:"huddle"};return this.channels=[...this.channels,n],this.messages[n.id]=[],n}async listMessages(e,n={}){const r=this.messages[e]??[],s=n.limit??50;return{messages:r.slice(-s),nextCursor:r.length>s?"mock-older":null}}async sendMessage(e,n){var d,u;const r=this.channels.find(h=>h.id===e);if(!r)throw new Error(`Unknown channel: ${e}`);const s=n.clientMessageId??this.nextId("cmid"),a=n.mentions??[],o=n.threadId,l={id:s,channelId:e,seq:-1,author:{role:"user",id:vO,name:bO},content:n.content,attachments:n.attachments,createdAt:new Date().toISOString(),clientMessageId:s,deliveryStatus:"pending",mentions:a,threadId:o};this.emit(e,{type:"message",channelId:e,message:l});const c={id:this.nextId("m"),channelId:e,seq:(((d=this.messages[e])==null?void 0:d.length)??0)+1,author:{role:"user",id:vO,name:bO},content:n.content,attachments:n.attachments,createdAt:l.createdAt,clientMessageId:s,deliveryStatus:"sent",mentions:a,threadId:o};return((u=this.messages)[e]||(u[e]=[])).push(c),this.emit(e,{type:"message",channelId:e,message:c}),window.setTimeout(()=>{var f,p;const h={id:this.nextId("m"),channelId:e,seq:(((f=this.messages[e])==null?void 0:f.length)??0)+1,author:{role:"agent",id:r.agentSession,name:r.name},content:`(mock reply) you said: "${n.content}"`,createdAt:new Date().toISOString(),deliveryStatus:"sent",mentions:[],threadId:o};((p=this.messages)[e]||(p[e]=[])).push(h),this.emit(e,{type:"message",channelId:e,message:h})},this.replyDelay),c}async getAgentPresence(e){const n=this.channels.find(r=>r.agentSession===e);return{agentId:e,status:(n==null?void 0:n.presence)??"offline",lastSeen:new Date().toISOString()}}subscribeToChannel(e,n){var r;return((r=this.subscribers)[e]||(r[e]=[])).push(n),{unsubscribe:()=>{const s=this.subscribers[e];s&&(this.subscribers[e]=s.filter(a=>a!==n))}}}emit(e,n){const r=this.subscribers[e];if(r)for(const s of r)try{s(n)}catch{}}}function Ige(){const t=new Date().toISOString();return[{id:"ch-ella",agentSession:"crewly-marketing-ella",name:"Ella · Marketing",purpose:"Marketing strategy + content planning",createdAt:t,lastMessageAt:t,presence:"online",type:"dm"},{id:"ch-sam",agentSession:"crewly-product-sam",name:"Sam · Engineering",purpose:"Platform architecture + delivery",createdAt:t,lastMessageAt:t,presence:"busy",type:"dm"},{id:"ch-offline",agentSession:"crewly-offline-demo",name:"Dormant Agent",purpose:"Shows the offline state",createdAt:t,presence:"offline",type:"dm"}]}function Pge(t){var n;const e={};for(const r of t)e[r.id]=[{id:`${r.id}-welcome`,channelId:r.id,seq:1,author:{role:"agent",id:r.agentSession,name:r.name},content:`Welcome — I'm **${((n=r.name.split("·")[0])==null?void 0:n.trim())??r.name}**. Ask me anything.`,createdAt:r.createdAt,mentions:[]}];return e}const zH=k.createContext(null);function Lge({children:t,backendURL:e,authToken:n,mode:r="real",client:s}){const a=k.useMemo(()=>{if(s)return{client:s,mode:r};if(r==="mock")return{client:new Rge,mode:r};if(!e)throw new Error('[@crewly/chat-ui] ChatAPIProvider requires `backendURL` when mode="real".');return{client:new Mge({backendURL:e,authToken:n}),mode:r}},[e,n,r,s]);return i.jsx(zH.Provider,{value:a,children:t})}function Mp(){const t=k.useContext(zH);if(!t)throw new Error("[@crewly/chat-ui] useChatApiClient must be called inside <ChatAPIProvider>.");return t.client}function Dge(t,e){const n=Mp(),[r,s]=k.useState("offline"),[a,o]=k.useState(void 0),[l,c]=k.useState(!!t),[d,u]=k.useState(null);return k.useEffect(()=>{if(!t){s("offline"),c(!1);return}let h=!1;return c(!0),u(null),n.getAgentPresence(t).then(f=>{h||(s(f.status),o(f.lastSeen))}).catch(f=>{h||u(f instanceof Error?f:new Error(String(f)))}).finally(()=>{h||c(!1)}),()=>{h=!0}},[t,n]),k.useEffect(()=>{if(!t||!e)return;const h=n.subscribeToChannel(e,f=>{f.type==="presence"&&f.agentSession===t&&(s(f.status),o(f.lastSeen))});return()=>h.unsubscribe()},[t,e,n]),{status:r,lastSeen:a,loading:l,error:d}}const Oge={online:"online",busy:"busy",idle:"idle",offline:"offline",inactive:"inactive"},_O={online:"Online",busy:"Busy",idle:"Idle",offline:"Offline",inactive:"Inactive"},Bge={online:"bg-emerald-400",busy:"bg-amber-400",idle:"bg-amber-400",offline:"bg-gray-500",inactive:"bg-gray-500"},Fge={online:"text-emerald-400",busy:"text-amber-400",idle:"text-amber-400",offline:"text-text-secondary-dark",inactive:"text-text-secondary-dark"};function Uge({status:t,agentId:e,channelId:n,compact:r=!1,className:s=""}){const a=zge({status:t,agentId:e,channelId:n});return i.jsxs("span",{className:`inline-flex items-center gap-1.5 ${s}`,"data-testid":"agent-status-badge","data-status":a,children:[i.jsx("span",{"aria-hidden":"true",className:`inline-block h-2 w-2 rounded-full ${Bge[a]}`}),!r&&i.jsx("span",{className:`text-xs font-medium ${Fge[a]}`,children:_O[a]}),i.jsx("span",{className:"sr-only",children:_O[a]})]})}function zge(t){const e=Dge(t.status?null:t.agentId??null,t.channelId??null),n=t.status??e.status;return Oge[n]}function Hge(){const t=Mp(),[e,n]=k.useState([]),[r,s]=k.useState(!0),[a,o]=k.useState(null),l=k.useCallback(async()=>{s(!0),o(null);try{const c=await t.listChannels();n(c)}catch(c){o(c instanceof Error?c:new Error(String(c)))}finally{s(!1)}},[t]);return k.useEffect(()=>{l()},[l]),{channels:e,loading:r,error:a,refresh:l}}function HH(t,e){if(e.clientMessageId){const r=t.findIndex(s=>s.clientMessageId&&s.clientMessageId===e.clientMessageId);if(r>=0){const s=t.slice();return s[r]=e,s}}const n=t.findIndex(r=>r.id===e.id);if(n>=0){const r=t.slice();return r[n]=e,r}return[...t,e]}function SO(t){return[...t].sort((e,n)=>e.seq-n.seq)}function Gge(t,e){return t.filter(n=>n.threadId===e).sort((n,r)=>n.seq-r.seq)}function ET(t){if(t.length===0)return!1;const e=t[t.length-1];return e.author.role!=="user"?!1:!!e.clientMessageId}function GH(t){const e=Mp(),[n,r]=k.useState([]),[s,a]=k.useState(!1),[o,l]=k.useState(null),c=k.useRef(null),[d,u]=k.useState(!1),[h,f]=k.useState(!1);k.useEffect(()=>{if(!t){r([]),u(!1),f(!1);return}let y=!1;return a(!0),l(null),c.current=null,f(!1),e.listMessages(t).then(m=>{y||(r(SO(m.messages)),c.current=m.nextCursor,u(m.nextCursor!==null))}).catch(m=>{y||l(m instanceof Error?m:new Error(String(m)))}).finally(()=>{y||a(!1)}),()=>{y=!0}},[t,e]),k.useEffect(()=>{if(!t)return;const y=e.subscribeToChannel(t,m=>{m.type==="message"&&r(g=>{const v=HH(g,m.message);return f(ET(v)),v})});return()=>y.unsubscribe()},[t,e]);const p=k.useCallback(async()=>{if(!t||!c.current)return;const y=c.current;try{const m=await e.listMessages(t,{cursor:y});r(g=>[...SO(m.messages),...g]),c.current=m.nextCursor,u(m.nextCursor!==null)}catch(m){l(m instanceof Error?m:new Error(String(m)))}},[t,e]),x=k.useCallback(async y=>{if(!t)throw new Error("sendMessage called without an active channel.");return await e.sendMessage(t,y)},[t,e]);return{messages:n,loading:s,error:o,hasMore:d,agentThinking:h,loadMore:p,sendMessage:x}}function WH(t){const e=t.replace(/\r\n/g,`
|
|
4917
|
+
`).split(/\n\n+/);return i.jsx(i.Fragment,{children:e.map((n,r)=>i.jsx(Wge,{block:n},r))})}function Wge({block:t}){const e=t.split(`
|
|
4918
|
+
`),n=e.every(s=>/^\s*[-*]\s+/.test(s)),r=e.every(s=>/^\s*\d+\.\s+/.test(s));return n&&e.length>0?i.jsx("ul",{className:"my-1 list-disc pl-5",children:e.map((s,a)=>i.jsx("li",{children:HC(s.replace(/^\s*[-*]\s+/,""))},a))}):r&&e.length>0?i.jsx("ol",{className:"my-1 list-decimal pl-5",children:e.map((s,a)=>i.jsx("li",{children:HC(s.replace(/^\s*\d+\.\s+/,""))},a))}):i.jsx("p",{className:"whitespace-pre-wrap",children:HC(t)})}function HC(t){const e=/(\*\*[^*]+\*\*|\*[^*]+\*|`[^`]+`)/g,n=t.split(e);return i.jsx(i.Fragment,{children:n.map((r,s)=>/^\*\*[^*]+\*\*$/.test(r)?i.jsx("strong",{children:r.slice(2,-2)},s):/^\*[^*]+\*$/.test(r)?i.jsx("em",{children:r.slice(1,-1)},s):/^`[^`]+`$/.test(r)?i.jsx("code",{className:"rounded bg-primary/10 px-1 font-mono text-[0.85em] text-primary",children:r.slice(1,-1)},s):i.jsx(k.Fragment,{children:r},s))})}function Vge({channelId:t,agentName:e,className:n="",emptyState:r,unreadAfterSeq:s=null,unreadDividerLabel:a="New",layout:o="bubble",onReplyInThread:l,hideReplies:c=!1,messages:d,agentThinking:u,loading:h,hasMore:f,onLoadMore:p}){const x=d!==void 0,y=GH(x?null:t),m=x?d:y.messages,g=x?h??!1:y.loading,v=x?null:y.error,b=x?f??!1:y.hasMore,S=x?u??!1:y.agentThinking,C=x?p??(()=>{}):y.loadMore,E=c?m.filter(M=>!M.threadId):m,N=k.useRef(null),T=E.length>0?E[E.length-1].id:null;if(k.useEffect(()=>{var M;(M=N.current)==null||M.scrollIntoView({behavior:"smooth",block:"end"})},[T,t,S]),!t)return i.jsx("div",{className:`flex h-full items-center justify-center text-sm text-text-secondary-dark ${n}`,role:"status",children:r??"Select a channel to start chatting."});const A=o==="flat";return i.jsxs("div",{className:`chat-scrollbar flex h-full flex-col overflow-y-auto bg-background-dark ${n}`,"aria-label":"Message thread","data-testid":"message-thread",children:[b&&i.jsx("div",{className:"sticky top-0 z-10 flex justify-center py-2 backdrop-blur bg-background-dark/80",children:i.jsx("button",{type:"button",onClick:()=>void C(),className:A?"rounded-full border border-border-dark px-3 py-1 text-xs text-text-secondary-dark hover:bg-white/5":"rounded-full border border-border-dark px-3 py-1 text-xs text-text-secondary-dark hover:bg-surface-dark",children:"Load older"})}),i.jsxs("ul",{role:"list",className:`flex flex-1 flex-col ${A?"gap-0 px-4 py-4":"gap-3 px-4 py-4"}`,children:[$ge({messages:E,unreadAfterSeq:s,unreadDividerLabel:a,layout:o,onReplyInThread:l}),S&&i.jsx(txe,{agentName:e,layout:o}),g&&i.jsx("li",{className:"text-xs text-text-secondary-dark",role:"status",children:"Loading messages…"}),v&&i.jsxs("li",{className:"text-xs text-red-500",role:"alert",children:["Failed to load messages: ",v.message]})]}),i.jsx("div",{ref:N})]})}function $ge(t){const{messages:e,unreadAfterSeq:n,unreadDividerLabel:r,layout:s,onReplyInThread:a}=t,o=[];let l=null,c=null;const d=n!=null&&e.some(h=>h.seq===n);n!=null&&!d&&e.length>0&&o.push(i.jsx(wO,{label:r,layout:s},"unread-divider"));let u=!1;for(const h of e){s==="flat"&&sxe(c,h.createdAt)&&(o.push(i.jsx(Jge,{label:rxe(h.createdAt)},`day-${h.id}`)),l=null),c=h.createdAt;const f=s!=="flat"||l!==h.author.id;o.push(i.jsx(Kge,{message:h,layout:s,groupStart:f,onReplyInThread:a},h.id)),l=h.author.id,!u&&d&&h.seq===n&&(o.push(i.jsx(wO,{label:r,layout:s},"unread-divider")),u=!0,l=null)}return o}function wO({label:t,layout:e}){return e==="flat"?i.jsxs("li",{className:"flex items-center gap-4 py-1","data-testid":"unread-divider",role:"separator","aria-label":`${t} messages below`,children:[i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/20","aria-hidden":"true"}),i.jsx("span",{className:"text-[11px] font-bold uppercase tracking-widest text-text-secondary-dark",children:t}),i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/20","aria-hidden":"true"})]}):i.jsxs("li",{className:"flex items-center gap-2 py-1","data-testid":"unread-divider",role:"separator","aria-label":`${t} messages below`,children:[i.jsx("span",{className:"h-px flex-1 bg-rose-400/70","aria-hidden":"true"}),i.jsx("span",{className:"rounded-full bg-rose-500 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-white",children:t}),i.jsx("span",{className:"h-px flex-1 bg-rose-400/70","aria-hidden":"true"})]})}function Kge({message:t,layout:e="bubble",groupStart:n=!0,onReplyInThread:r}){var d;if(e==="flat")return i.jsx(qge,{message:t,groupStart:n,onReplyInThread:r});const s=t.author.role==="user",a=s?"items-end":"items-start",o=t.deliveryStatus,l=s?"bg-primary text-white":"bg-surface-dark text-text-primary-dark",c=o==="pending"?`${l} opacity-60`:o==="failed"?`${l} ring-2 ring-red-400`:l;return i.jsxs("li",{className:`flex flex-col ${a}`,"data-author-role":t.author.role,"data-delivery-status":o??"sent",children:[i.jsx("div",{className:"mb-0.5 text-xs text-text-secondary-dark",children:t.author.name??t.author.id}),i.jsxs("div",{className:`max-w-prose rounded-2xl px-3 py-2 text-sm shadow-sm ${c}`,children:[WH(t.content),(d=t.attachments)==null?void 0:d.map(u=>u.kind==="image"?i.jsx("img",{src:u.url,alt:u.filename??"attachment",className:"mt-2 max-h-64 max-w-full rounded-lg"},u.id):null)]}),i.jsx(exe,{message:t})]})}function qge({message:t,groupStart:e,onReplyInThread:n}){var p;const r=t.deliveryStatus,s=t.author.name??t.author.id,a=t.author.role!=="user",l=r==="pending"?"opacity-50":"",c=typeof n=="function",d=t.replyCount??0,u=c&&d>0,h=c&&r!=="pending"&&r!=="failed",f=$H(t.content);return i.jsxs("li",{className:`group relative flex gap-3 rounded-md py-0.5 pl-2 pr-2 transition-colors hover:bg-white/[0.03] ${e?"mt-3":"mt-px"}`,"data-author-role":t.author.role,"data-delivery-status":r??"sent",children:[a&&e&&i.jsx("span",{"aria-hidden":"true",className:"absolute left-0 top-1 h-[calc(100%-0.5rem)] w-[2px] rounded-full bg-primary/40"}),i.jsx("div",{className:"w-9 shrink-0 select-none",children:e?i.jsx(Qge,{name:s,isAgent:a}):i.jsx("time",{className:"block w-9 pt-[3px] text-right text-[10px] leading-5 tabular-nums text-transparent group-hover:text-text-secondary-dark",children:AT(t.createdAt)})}),i.jsxs("div",{className:"min-w-0 flex-1",children:[e&&i.jsxs("div",{className:"flex items-baseline gap-2",children:[i.jsx("span",{className:`text-[13px] font-bold leading-5 ${a?"text-primary":"text-text-primary-dark"}`,children:s}),a&&i.jsx("span",{className:"rounded border border-border-dark bg-white/5 px-1.5 py-px text-[9px] font-semibold uppercase tracking-wide text-text-secondary-dark",children:"Agent"}),i.jsx("time",{className:"text-[10px] tabular-nums text-text-secondary-dark",children:AT(t.createdAt)})]}),i.jsxs("div",{className:`mt-0.5 max-w-[760px] text-[13px] leading-[1.45] text-text-primary-dark [&_a]:text-primary [&_a]:underline ${l}`,children:[WH(f),(p=t.attachments)==null?void 0:p.map(x=>x.kind==="image"?i.jsx("img",{src:x.url,alt:x.filename??"attachment",className:"mt-2 max-h-64 max-w-full rounded-lg"},x.id):null)]}),r==="pending"&&i.jsx("span",{className:"mt-0.5 inline-flex items-center gap-1 text-[10px] italic text-text-secondary-dark",children:"Sending…"}),r==="failed"&&i.jsx("span",{className:"mt-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-amber-300",role:"alert",children:"Send failed — tap to retry"}),u&&i.jsx(Yge,{message:t,onOpen:()=>n==null?void 0:n(t)})]}),h&&i.jsx(Xge,{message:t,onReplyInThread:n})]})}function kv({label:t,children:e,onClick:n,...r}){return i.jsx("button",{type:"button","aria-label":t,title:t,onClick:n,className:"flex h-7 w-7 items-center justify-center rounded-md text-text-secondary-dark transition-colors hover:bg-white/5 hover:text-text-primary-dark",...r,children:e})}function Xge({message:t,onReplyInThread:e}){return i.jsxs("div",{"data-testid":`msg-toolbar-${t.id}`,className:"absolute -top-3 right-2 z-10 hidden items-center gap-0.5 rounded-lg border border-border-dark bg-surface-dark p-0.5 shadow-md group-hover:flex",children:[i.jsx(kv,{label:"Add reaction",children:i.jsx(WK,{size:15})}),i.jsx(kv,{label:"Reply in thread","data-testid":`msg-reply-action-${t.id}`,onClick:()=>e(t),children:i.jsx(Ax,{size:15})}),i.jsx(kv,{label:"Copy link",children:i.jsx(_A,{size:15})}),i.jsx(kv,{label:"More actions",children:i.jsx(KF,{size:15})})]})}function Yge({message:t,onOpen:e}){const n=t.replyCount??0,s=[t.author.name??t.author.id].slice(0,3);return i.jsxs("button",{type:"button","data-testid":`msg-thread-summary-${t.id}`,onClick:e,className:"group/chip mt-1 flex w-fit items-center gap-2 rounded-md px-1.5 py-1 text-left transition-colors hover:bg-white/5",children:[i.jsx("span",{className:"flex -space-x-1.5",children:s.map(a=>i.jsx("span",{className:`flex h-5 w-5 items-center justify-center rounded-md text-[9px] font-bold text-white ring-2 ring-background-dark ${Zge(a)}`,"aria-hidden":"true",children:VH(a)},a))}),i.jsxs("span",{className:"text-[12px] font-semibold text-primary group-hover/chip:underline",children:[n," ",n===1?"reply":"replies"]}),t.lastReplyAt&&i.jsxs("span",{className:"text-[11px] font-normal text-text-secondary-dark",children:["Last reply ",nxe(t.lastReplyAt)]})]})}function Jge({label:t}){return i.jsxs("li",{className:"relative my-3 flex items-center justify-center",role:"separator","aria-label":t,"data-testid":"day-divider",children:[i.jsx("span",{className:"absolute inset-x-2 top-1/2 h-px -translate-y-1/2 bg-border-dark/50","aria-hidden":"true"}),i.jsx("span",{className:"relative rounded-full border border-border-dark bg-background-dark px-3 py-0.5 text-[11px] font-semibold text-text-secondary-dark",children:t})]})}const kO=["bg-rose-500","bg-orange-500","bg-amber-500","bg-emerald-500","bg-teal-500","bg-sky-500","bg-indigo-500","bg-violet-500","bg-fuchsia-500"];function VH(t){const e=t.split(/[\s\-_.]+/).filter(Boolean);return e.length===0?"?":e.length===1?e[0].slice(0,2).toUpperCase():(e[0][0]+e[1][0]).toUpperCase()}function Zge(t){let e=0;for(let n=0;n<t.length;n+=1)e=e*31+t.charCodeAt(n)>>>0;return kO[e%kO.length]}function Qge({name:t,isAgent:e}){return i.jsx("span",{className:`flex h-9 w-9 items-center justify-center rounded-lg text-[12px] font-bold ${e?"bg-primary/20 text-primary":"bg-indigo-500/20 text-indigo-300"}`,"aria-hidden":"true",children:e?i.jsx($2,{size:16}):VH(t)})}function exe({message:t}){return t.deliveryStatus==="pending"?i.jsx("span",{className:"mt-0.5 text-[10px] italic text-text-secondary-dark",children:"Sending…"}):t.deliveryStatus==="failed"?i.jsx("span",{className:"mt-0.5 text-[10px] font-medium text-red-500",role:"alert",children:"Send failed — tap to retry"}):i.jsx("time",{className:"mt-0.5 text-[10px] text-text-secondary-dark",children:AT(t.createdAt)})}function txe({agentName:t,layout:e="bubble"}){const n=t?`${t} is thinking`:"Agent is thinking";return e==="flat"?i.jsxs("li",{className:"mt-3 flex items-center gap-3 px-2",role:"status","aria-live":"polite","data-testid":"agent-thinking",children:[i.jsx("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/20 text-primary",children:i.jsx($2,{size:16})}),i.jsxs("span",{className:"inline-flex items-center gap-2 text-[13px] text-text-secondary-dark",children:[i.jsxs("span",{"aria-hidden":"true",className:"flex gap-0.5",children:[i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.3s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.15s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark"})]}),i.jsxs("span",{children:[n,"…"]})]})]}):i.jsx("li",{className:"flex flex-col items-start",role:"status","aria-live":"polite","data-testid":"agent-thinking",children:i.jsx("div",{className:"rounded-2xl bg-surface-dark px-3 py-2 text-sm text-text-secondary-dark shadow-sm",children:i.jsxs("span",{className:"inline-flex items-center gap-1",children:[i.jsxs("span",{"aria-hidden":"true",className:"flex gap-0.5",children:[i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.3s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark [animation-delay:-0.15s]"}),i.jsx("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-text-secondary-dark"})]}),i.jsxs("span",{children:[n,"…"]})]})})})}function nxe(t){try{const e=new Date(t).getTime();if(Number.isNaN(e))return"";const n=Date.now()-e,r=Math.floor(n/6e4);if(r<1)return"now";if(r<60)return`${r}m`;const s=Math.floor(r/60);if(s<24)return`${s}h`;const a=Math.floor(s/24);return a<7?`${a}d`:new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch{return""}}function AT(t){try{return new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return t}}function rxe(t){try{const e=new Date(t);if(Number.isNaN(e.getTime()))return t;const n=o=>new Date(o.getFullYear(),o.getMonth(),o.getDate()).getTime(),r=n(new Date),s=n(e),a=864e5;return s===r?"Today":s===r-a?"Yesterday":e.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"})}catch{return t}}function sxe(t,e){if(!t)return!0;const n=new Date(t),r=new Date(e);return Number.isNaN(n.getTime())||Number.isNaN(r.getTime())?!1:n.getFullYear()!==r.getFullYear()||n.getMonth()!==r.getMonth()||n.getDate()!==r.getDate()}function $H(t){return t.replace(/\s*\[Thread context file:[^\]]*\]/gi,"").replace(/[ \t]+$/gm,"").trim()}function ixe(){const t=Mp(),[e,n]=k.useState(!1),[r,s]=k.useState(null),a=k.useCallback(async(l,c)=>{n(!0),s(null);try{return await t.sendMessage(l,c)}catch(d){const u=d instanceof Error?d:new Error(String(d));throw s(u),u}finally{n(!1)}},[t]),o=k.useCallback(()=>{s(null),n(!1)},[]);return{send:a,sending:e,error:r,reset:o}}const KH="crewly-chat-collapsed-groups",CO=["bg-blue-500/20 text-blue-400","bg-purple-500/20 text-purple-400","bg-cyan-500/20 text-cyan-400","bg-indigo-500/20 text-indigo-400"];function axe(t){let e=0;for(let n=0;n<t.length;n+=1)e=e*31+t.charCodeAt(n)>>>0;return CO[e%CO.length]}function oxe(){try{const t=localStorage.getItem(KH);if(t){const e=JSON.parse(t);if(Array.isArray(e))return new Set(e.filter(n=>typeof n=="string"))}}catch{}return null}function lxe({workspaceName:t,groups:e,activeConversationId:n=null,onSelectConversation:r,emptyState:s,headerAction:a,isPinned:o,onTogglePin:l,defaultCollapsedGroupIds:c,className:d=""}){const[u,h]=k.useState(""),f=k.useMemo(()=>cxe(e,u),[e,u]),p=k.useMemo(()=>f.reduce((g,v)=>g+TS(v),0),[f]),[x,y]=k.useState(()=>oxe()??new Set(c??[])),m=k.useCallback(g=>{y(v=>{const b=new Set(v);b.has(g)?b.delete(g):b.add(g);try{localStorage.setItem(KH,JSON.stringify([...b]))}catch{}return b})},[]);return i.jsxs("aside",{className:`flex h-full w-[240px] flex-col border-r border-border-dark bg-[#232d3b] ${d}`,"aria-label":t?`${t} conversations`:"Conversations","data-testid":"conversation-list-panel",children:[(t||a)&&i.jsxs("header",{className:"border-b border-border-dark p-4",children:[i.jsxs("div",{className:"flex items-center justify-between gap-2",children:[i.jsx("h2",{className:"truncate text-base font-bold text-text-primary-dark",children:t??""}),a]}),i.jsx("div",{className:"relative mt-3",children:i.jsx("input",{type:"text",value:u,onChange:g=>h(g.target.value),placeholder:"Find...","aria-label":"Find a conversation","data-testid":"conv-search",className:"w-full rounded-lg border border-border-dark bg-background-dark px-3 py-1.5 text-[13px] text-text-primary-dark outline-none placeholder:text-text-secondary-dark focus:border-primary focus:ring-1 focus:ring-primary"})})]}),i.jsx("div",{className:"chat-scrollbar flex-1 overflow-y-auto p-2",children:p===0?i.jsx("div",{className:"px-2 py-6 text-[13px] text-text-secondary-dark",role:"status",children:u?"No conversations match your search.":s??"No conversations in this workspace yet."}):f.map(g=>qH(g)?i.jsx(XH,{group:g,activeConversationId:n,onSelectConversation:r,collapsed:x,onToggleCollapse:m,isPinned:o,onTogglePin:l},g.id):null)})]})}function TS(t){var e;return t.rows.length+(((e=t.subGroups)==null?void 0:e.reduce((n,r)=>n+TS(r),0))??0)}function qH(t){return TS(t)>0}function cxe(t,e){const n=e.trim().toLowerCase();if(!n)return t;const r=s=>{var a;return{...s,rows:s.rows.filter(o=>o.title.toLowerCase().includes(n)),subGroups:(a=s.subGroups)==null?void 0:a.map(r)}};return t.map(r)}function XH({group:t,activeConversationId:e,onSelectConversation:n,collapsed:r,onToggleCollapse:s,isPinned:a,onTogglePin:o,depth:l=0}){const c=r.has(t.id),d=(t.subGroups??[]).filter(qH);return i.jsxs("section",{className:l===0?"mb-4":"mt-2","aria-labelledby":`conv-group-${t.id}`,"data-testid":`conv-group-${t.id}`,children:[i.jsxs("button",{type:"button",id:`conv-group-${t.id}`,onClick:()=>s(t.id),"aria-expanded":!c,"data-testid":`conv-group-toggle-${t.id}`,className:"mb-2 flex w-full items-center justify-between px-2",style:{paddingLeft:`${.5+l*.75}rem`},children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(ei,{size:16,className:`text-text-secondary-dark transition-transform ${c?"-rotate-90":""}`}),i.jsx("span",{className:"truncate text-[11px] font-bold uppercase tracking-wider text-text-secondary-dark",children:t.label})]}),i.jsx("span",{className:"text-[10px] text-text-secondary-dark",children:TS(t)})]}),!c&&i.jsxs(i.Fragment,{children:[t.rows.length>0&&i.jsx("ul",{role:"list",className:"flex flex-col gap-0.5",children:t.rows.map(u=>i.jsx("li",{children:i.jsx(dxe,{row:u,isActive:e===u.id,onSelect:n,pinned:(a==null?void 0:a(u))??!1,onTogglePin:o})},u.id))}),d.map(u=>i.jsx(XH,{group:u,activeConversationId:e,onSelectConversation:n,collapsed:r,onToggleCollapse:s,isPinned:a,onTogglePin:o,depth:l+1},u.id))]})]})}function dxe({row:t,isActive:e,onSelect:n,pinned:r,onTogglePin:s}){const a=(t.unreadCount??0)>0,o=(t.mentionCount??0)>0,l=t.kind==="channel",c=l?e?"flex items-center gap-2 rounded-lg border border-primary/20 bg-primary/10 px-3 py-1.5 text-primary":"flex items-center gap-2 rounded-lg px-3 py-1.5 text-text-secondary-dark hover:bg-white/5":e?"group flex items-center gap-3 rounded-lg border border-primary/20 bg-primary/10 px-3 py-2 text-primary":"group flex items-center gap-3 rounded-lg px-3 py-2 text-text-secondary-dark hover:bg-white/5";return i.jsxs("div",{className:"group/row relative flex w-full items-center",children:[i.jsxs("button",{type:"button",onClick:()=>n==null?void 0:n(t),"data-testid":`conv-row-${t.id}`,"data-active":e?"true":"false","data-kind":t.kind,"data-unread":a?"true":"false",className:`min-w-0 flex-1 text-left ${c}`,"aria-current":e?"page":void 0,children:[i.jsx(hxe,{row:t}),l?i.jsx("span",{className:["min-w-0 flex-1 truncate text-[13px]",a?"font-semibold text-text-primary-dark":""].join(" "),children:t.title.replace(/^#+\s*/,"")}):i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:["truncate text-[13px] font-medium",a?"font-semibold text-text-primary-dark":"text-text-primary-dark group-hover:text-primary"].join(" "),children:t.title}),t.badge&&i.jsx("span",{className:"shrink-0 rounded bg-primary/15 px-1.5 py-px text-[10px] font-semibold uppercase tracking-wide text-primary","data-testid":`conv-badge-${t.id}`,children:t.badge}),t.lastMessageAt&&i.jsx("time",{className:"ml-auto shrink-0 text-[10px] text-text-secondary-dark",dateTime:t.lastMessageAt,children:pxe(t.lastMessageAt)})]}),t.lastMessagePreview&&i.jsx("div",{className:"truncate text-[10px] opacity-70",children:t.lastMessagePreview}),t.subtitle&&!t.lastMessagePreview&&i.jsx("div",{className:"truncate text-[10px] opacity-70",children:t.subtitle})]}),o?i.jsxs("span",{className:"inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-rose-500 px-1 text-[10px] font-semibold text-white","data-testid":`conv-mention-pill-${t.id}`,"aria-label":`${t.mentionCount} mentions`,children:["@",t.mentionCount]}):a?i.jsx("span",{className:"inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-[10px] font-semibold text-white","data-testid":`conv-unread-pill-${t.id}`,"aria-label":`${t.unreadCount} unread`,children:t.unreadCount}):null]}),s&&i.jsx("button",{type:"button",onClick:d=>{d.stopPropagation(),s(t)},"data-testid":`conv-pin-${t.id}`,"aria-label":r?`Unpin ${t.title}`:`Pin ${t.title}`,"aria-pressed":r,title:r?"Unpin":"Pin",className:["ml-1 shrink-0 rounded p-1 text-text-secondary-dark hover:text-amber-400",r?"text-amber-400":"opacity-0 group-hover/row:opacity-100"].join(" "),children:i.jsx(uxe,{filled:r??!1})})]})}function uxe({filled:t}){return i.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 16 16",className:"h-3.5 w-3.5",children:i.jsx("path",{d:"M9.5 1.5l5 5-2 .5-2.5 2.5L9 13 7 11 3.5 14.5 3 14l3.5-3.5L4.5 8.5 7 6l.5-2.5 2-2z",fill:t?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round"})})}function hxe({row:t}){return t.kind==="channel"?i.jsx("span",{"aria-hidden":"true",className:"flex shrink-0 items-center justify-center text-base font-medium","data-testid":`conv-icon-${t.id}`,children:"#"}):t.kind==="dm"?i.jsxs("span",{"aria-hidden":"true",className:`relative flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[10px] font-bold uppercase ${axe(t.title)}`,"data-testid":`conv-icon-${t.id}`,children:[fxe(t.title),t.presence&&i.jsx("span",{className:"absolute -bottom-0.5 -right-0.5 rounded-full bg-surface-dark p-[1px]",children:i.jsx(Uge,{status:t.presence,compact:!0})})]}):i.jsx("span",{"aria-hidden":"true",className:"flex h-8 w-8 shrink-0 items-center justify-center text-xs text-text-secondary-dark","data-testid":`conv-icon-${t.id}`,children:"⟳"})}function fxe(t){const e=t.trim().split(/\s+/).filter(Boolean);return e.length===0?"?":e.length===1?e[0].slice(0,2).toUpperCase():(e[0][0]+e[1][0]).toUpperCase()}function pxe(t){try{const e=new Date(t).getTime(),r=Date.now()-e,s=Math.floor(r/6e4);if(s<1)return"now";if(s<60)return`${s}m`;const a=Math.floor(s/60);if(a<24)return`${a}h`;const o=Math.floor(a/24);return o<7?`${o}d`:new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch{return""}}const mxe="Message — try @ to mention a team or agent",gxe={online:"bg-emerald-400",busy:"bg-amber-400",idle:"bg-amber-400",offline:"bg-gray-500",inactive:"bg-gray-500"};function YH({mentionables:t,placeholder:e=mxe,disabled:n=!1,inactiveHelper:r,onSend:s,className:a=""}){const[o,l]=k.useState(""),[c,d]=k.useState([]),[u,h]=k.useState(!1),[f,p]=k.useState(""),x=k.useRef(null),y=k.useRef(!1),m=k.useMemo(()=>vxe(t,f),[t,f]),g=m.teams.length+m.agents.length,v=k.useCallback(I=>{const B=I.target.value;l(B);const V=AO(B,I.target.selectionStart??B.length);V?(h(!0),p(V.partial)):(h(!1),p(""))},[]),b=k.useCallback(I=>{var K,H;d($=>$.find(L=>L.id===I.id)?$:[...$,I]);const B=((K=x.current)==null?void 0:K.selectionStart)??o.length,V=AO(o,B);if(V){const $=o.slice(0,V.start),L=o.slice(B),U=`@${I.label} `;l($+U+L)}else l($=>`${$}@${I.label} `);h(!1),p(""),(H=x.current)==null||H.focus()},[o]),S=k.useCallback(I=>{d(B=>B.filter(V=>V.id!==I))},[]),C=!n&&(o.trim().length>0||c.length>0),E=k.useCallback(()=>{C&&(s==null||s({content:o.trim(),mentions:c}),l(""),d([]),h(!1),p(""))},[C,c,s,o]),N=k.useCallback(I=>{if(I.key==="Escape"&&u){I.preventDefault(),h(!1);return}if(I.key==="Enter"&&!I.shiftKey){if(y.current||I.nativeEvent.isComposing)return;I.preventDefault(),E()}},[E,u]),T=k.useCallback(()=>{y.current=!0},[]),A=k.useCallback(()=>{y.current=!1},[]),M=k.useCallback(()=>{var I;n||(l(B=>{const V=B.length>0&&!/\s$/.test(B);return`${B}${V?" ":""}@`}),p(""),h(!0),(I=x.current)==null||I.focus())},[n]),P=k.useMemo(()=>{if(r)return r;const I=c[c.length-1];return I?I.routingHint?I.routingHint:I.kind==="team"?"Sent to team channel; TL is primary responder":`Directly notifies ${I.label}`:null},[r,c]);return i.jsxs("div",{className:`relative px-4 pb-4 pt-2 ${a}`,"data-testid":"mention-composer",children:[c.length>0&&i.jsx("ul",{className:"mb-2 flex flex-wrap gap-1.5","aria-label":"Pending mentions","data-testid":"mention-chip-strip",children:c.map(I=>i.jsx("li",{children:i.jsx(yxe,{target:I,onRemove:()=>S(I.id)})},I.id))}),i.jsxs("div",{className:"glass-panel flex flex-col gap-2 rounded-2xl bg-background-dark/50 p-2 focus-within:ring-1 focus-within:ring-primary/50",children:[i.jsx("textarea",{ref:x,value:o,onChange:v,onKeyDown:N,onCompositionStart:T,onCompositionEnd:A,disabled:n,placeholder:e,rows:1,"data-testid":"mention-textarea",className:"min-h-[44px] w-full resize-none border-none bg-transparent px-4 py-2 text-sm text-text-primary-dark placeholder:text-text-secondary-dark focus:outline-none focus:ring-0 disabled:opacity-50"}),i.jsxs("div",{className:"flex items-center justify-between px-2 pb-1",children:[i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(Cv,{label:"Attach",disabled:!0,children:i.jsx(vr,{size:16})}),i.jsx(Cv,{label:"Mention",onClick:M,disabled:n,children:i.jsx(bK,{size:16})}),i.jsx(Cv,{label:"Emoji",disabled:!0,children:i.jsx(VK,{size:16})}),i.jsx(Cv,{label:"Code",disabled:!0,children:i.jsx(AK,{size:16})})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("span",{className:"text-[11px] text-text-secondary-dark",children:"Markdown supported"}),i.jsxs("button",{type:"button",onClick:E,disabled:!C,"data-testid":"mention-send",className:"flex h-8 items-center gap-2 rounded-lg bg-primary px-4 text-[13px] font-bold text-white transition hover:bg-primary/90 active:scale-95 disabled:cursor-not-allowed disabled:opacity-50",children:[i.jsx(Q2,{size:14}),"Send"]})]})]})]}),P&&i.jsx("p",{className:"mt-1 text-[11px] text-text-secondary-dark","data-testid":"mention-helper",children:P}),u&&g>0&&i.jsx(xxe,{teams:m.teams,agents:m.agents,onSelect:b})]})}function Cv({label:t,onClick:e,disabled:n,children:r}){return i.jsx("button",{type:"button",onClick:e,disabled:n,"aria-label":t,title:t,className:"flex h-8 w-8 items-center justify-center rounded-lg text-text-secondary-dark transition hover:bg-white/5 disabled:opacity-40",children:r})}function xxe({teams:t,agents:e,onSelect:n}){return i.jsxs("div",{role:"listbox","data-testid":"mention-suggestions",className:"absolute bottom-[110%] left-4 right-4 z-10 max-h-72 overflow-y-auto rounded-xl border border-border-dark bg-surface-dark shadow-lg",children:[t.length>0&&i.jsx(EO,{label:"Teams",items:t,onSelect:n,testid:"teams"}),e.length>0&&i.jsx(EO,{label:"Agents",items:e,onSelect:n,testid:"agents"})]})}function EO({label:t,items:e,onSelect:n,testid:r}){return i.jsxs("div",{"data-testid":`mention-group-${r}`,children:[i.jsx("div",{className:"border-b border-border-dark bg-background-dark px-3 py-1 text-[10px] font-semibold uppercase tracking-wide text-text-secondary-dark",children:t}),i.jsx("ul",{role:"list",children:e.map(s=>i.jsx("li",{children:i.jsxs("button",{type:"button",onClick:()=>n(s),"data-testid":`mention-suggestion-${s.id}`,className:"flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-white/5",children:[i.jsx(JH,{target:s}),i.jsx("span",{className:"min-w-0 flex-1 truncate text-text-primary-dark",children:s.label}),s.routingHint&&i.jsx("span",{className:"shrink-0 text-[11px] text-text-secondary-dark",children:s.routingHint})]})},s.id))})]})}function yxe({target:t,onRemove:e}){const n=t.kind==="team";return i.jsxs("span",{"data-testid":`mention-chip-${t.id}`,"data-kind":t.kind,className:["inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium ring-1",n?"bg-primary/15 text-primary ring-primary/30":"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30"].join(" "),children:[i.jsx(JH,{target:t,compact:!0}),i.jsxs("span",{children:["@",t.label]}),i.jsx("button",{type:"button",onClick:e,"aria-label":`Remove mention of ${t.label}`,className:"text-current opacity-60 hover:opacity-100",children:"×"})]})}function JH({target:t,compact:e=!1}){var n;return t.kind==="team"?i.jsx("span",{"aria-hidden":"true",className:`inline-flex items-center justify-center rounded ${e?"h-3 w-3 text-[8px]":"h-5 w-5 text-[10px]"} bg-primary/20 font-semibold text-primary`,children:"T"}):i.jsxs("span",{"aria-hidden":"true",className:`relative inline-flex items-center justify-center rounded-full bg-emerald-500/20 font-semibold text-emerald-300 ${e?"h-3 w-3 text-[8px]":"h-5 w-5 text-[10px]"}`,children:[((n=t.label[0])==null?void 0:n.toUpperCase())??"?",t.presence&&i.jsx("span",{"aria-hidden":"true",className:`absolute -bottom-0.5 -right-0.5 inline-block h-1.5 w-1.5 rounded-full ring-2 ring-surface-dark ${gxe[t.presence]}`})]})}function AO(t,e){const n=t.slice(0,e),r=n.lastIndexOf("@");if(r<0||r>0&&!/\s/.test(n[r-1]))return null;const s=n.slice(r+1);return/\s/.test(s)?null:{start:r,partial:s}}function vxe(t,e){const n=e.trim().toLowerCase(),r=s=>!n||s.label.toLowerCase().includes(n);return{teams:t.filter(s=>s.kind==="team"&&r(s)),agents:t.filter(s=>s.kind==="agent"&&r(s))}}const TO=20,bxe=50;function MO(t){return[...t].sort((e,n)=>{const r=Date.parse(e.createdAt),s=Date.parse(n.createdAt);return Number.isFinite(r)&&Number.isFinite(s)&&r!==s?r-s:e.seq!==n.seq?e.seq-n.seq:e.id<n.id?-1:e.id>n.id?1:0})}const _xe=1e4;function NO(t){const e=[],n=new Set;for(const r of t){if(n.has(r.id))continue;const s=Date.parse(r.createdAt);e.some(o=>{var c,d;if(o.channelId!==r.channelId||(((c=o.author)==null?void 0:c.id)??"")!==(((d=r.author)==null?void 0:d.id)??"")||o.content!==r.content)return!1;const l=Date.parse(o.createdAt);return!Number.isFinite(s)||!Number.isFinite(l)?!0:Math.abs(s-l)<=_xe})||(n.add(r.id),e.push(r))}return e}function Sxe(t){const e=Mp(),[n,r]=k.useState([]),[s,a]=k.useState(!1),[o,l]=k.useState(null),[c,d]=k.useState(!1),u=[...t].sort().join("\0"),h=k.useRef(t);h.current=t;const[f,p]=k.useState(TO);k.useEffect(()=>{p(TO)},[u]);const x=k.useCallback(()=>{p(g=>g+bxe)},[]);k.useEffect(()=>{const g=h.current;if(g.length===0){r([]),d(!1),a(!1);return}let v=!1;return a(!0),l(null),Promise.all(g.map(b=>e.listMessages(b).then(S=>S.messages).catch(()=>[]))).then(b=>{if(v)return;const S=NO(MO(b.flat()));r(S),d(ET(S))}).catch(b=>{v||l(b instanceof Error?b:new Error(String(b)))}).finally(()=>{v||a(!1)}),()=>{v=!0}},[u,e]),k.useEffect(()=>{const g=h.current;if(g.length===0)return;const v=g.map(b=>e.subscribeToChannel(b,S=>{S.type==="message"&&r(C=>{const E=NO(MO(HH(C,S.message)));return d(ET(E)),E})}));return()=>v.forEach(b=>b.unsubscribe())},[u,e]);const y=k.useMemo(()=>n.length>f?n.slice(n.length-f):n,[n,f]),m=n.length>f;return{messages:y,loading:s,error:o,agentThinking:c,hasMore:m,loadMore:x}}function wxe(t,e={}){const n=[],r=[],s=[];for(const a of t){const o=a.type??"dm";if(o==="huddle")r.push(GC(a,"channel"));else if(o==="channel"){if(e.workspaceId&&a.teamId!==e.workspaceId)continue;n.push(GC(a,"channel"))}else s.push(GC(a,"dm"))}return n.sort(WC),r.sort(WC),s.sort(WC),[{id:"channels",label:"Channels",rows:n},{id:"huddles",label:"Huddles",rows:r},{id:"dms",label:"Direct Messages",rows:s}]}function kxe(t,e={}){return k.useMemo(()=>wxe(t,e),[t,e.workspaceId])}function GC(t,e){return{id:t.id,kind:e,title:t.name,subtitle:t.purpose,lastMessageAt:t.lastMessageAt,presence:e==="dm"?Cxe(t.presence):void 0,agentSession:e==="dm"?t.agentSession:void 0}}function Cxe(t){if(t)return t}function WC(t,e){const n=t.lastMessageAt?Date.parse(t.lastMessageAt):NaN,r=e.lastMessageAt?Date.parse(e.lastMessageAt):NaN,s=Number.isFinite(n),a=Number.isFinite(r);return s&&a?r-n:s?-1:a?1:t.title.localeCompare(e.title)}function TT({headline:t,body:e,cta:n,testId:r}){return i.jsxs("div",{role:"status","data-testid":r,className:"flex h-full flex-col items-center justify-center gap-3 px-8 py-12 text-center",children:[i.jsx("h3",{className:"text-base font-semibold text-text-primary-dark",children:t}),i.jsx("div",{className:"max-w-md text-sm text-text-secondary-dark",children:e}),n&&i.jsx("div",{className:"mt-2",children:n})]})}function Exe({teamName:t}){return i.jsx(TT,{testId:"empty-no-channels",headline:`${t} has no conversations yet.`,body:i.jsx(i.Fragment,{children:"Channels are project-level discussions; direct messages are private pings to a single agent. Try one of the quick actions below to get started."}),cta:i.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xs",children:[i.jsx("button",{type:"button",className:"rounded-lg bg-surface-dark px-3 py-1.5 font-medium text-text-primary-dark ring-1 ring-border-dark hover:bg-white/5",children:"Message team lead"}),i.jsx("button",{type:"button",className:"rounded-lg bg-surface-dark px-3 py-1.5 font-medium text-text-primary-dark ring-1 ring-border-dark hover:bg-white/5",children:"Open project channel"}),i.jsx("button",{type:"button",className:"rounded-lg bg-surface-dark px-3 py-1.5 font-medium text-text-primary-dark ring-1 ring-border-dark hover:bg-white/5",children:"Start DM"})]})})}function Axe({kind:t,recipientName:e}){return t==="dm"?i.jsx(TT,{testId:"empty-no-messages-dm",headline:e?`Start a private chat with ${e}`:"Start a private chat",body:i.jsxs(i.Fragment,{children:["Direct messages notify ",e??"this agent"," without broadcasting to the team. Try a starter prompt:",i.jsxs("ul",{className:"mt-3 flex list-inside list-disc flex-col items-start gap-1 text-left",children:[i.jsx("li",{children:'"What are you working on right now?"'}),i.jsx("li",{children:'"Pull the latest from main and share the diff"'})]})]})}):i.jsx(TT,{testId:"empty-no-messages-channel",headline:"No messages yet",body:i.jsxs(i.Fragment,{children:["Use this channel for project coordination and handoffs. Try a starter prompt:",i.jsxs("ul",{className:"mt-3 flex list-inside list-disc flex-col items-start gap-1 text-left",children:[i.jsx("li",{children:'"@team — kicking off the next sprint, blockers welcome"'}),i.jsx("li",{children:'"Anyone able to review PR #326?"'})]})]})})}function Txe({message:t,detail:e,onDismiss:n}){return i.jsxs("div",{role:"alert","data-testid":"chat-error-toast",className:"fixed bottom-4 right-4 z-50 flex max-w-md items-start gap-3 rounded-lg border border-rose-300 bg-rose-50 px-4 py-3 text-sm text-rose-800 shadow-lg dark:border-rose-700/40 dark:bg-rose-900/30 dark:text-rose-100",children:[i.jsxs("div",{className:"flex-1",children:[i.jsx("div",{className:"font-medium",children:t}),e&&i.jsx("div",{className:"mt-0.5 text-xs opacity-80","data-testid":"chat-error-toast-detail",children:e})]}),n&&i.jsx("button",{type:"button",onClick:n,"aria-label":"Dismiss error","data-testid":"chat-error-toast-dismiss",className:"shrink-0 rounded p-0.5 text-rose-700 hover:bg-rose-100 dark:text-rose-200 dark:hover:bg-rose-800/40",children:"×"})]})}async function Mxe(){var n;const e=await(await fetch("/api/chat/agents")).json();return((n=e==null?void 0:e.data)==null?void 0:n.agents)??[]}function Nxe({onClose:t,onCreate:e,loadAgents:n=Mxe}){const[r,s]=k.useState([]),[a,o]=k.useState(!0),[l,c]=k.useState(null),[d,u]=k.useState(""),[h,f]=k.useState(new Set),[p,x]=k.useState(!1),[y,m]=k.useState(null);k.useEffect(()=>{let S=!1;return(async()=>{try{const C=await n();S||s(C)}catch(C){S||c(C instanceof Error?C.message:String(C))}finally{S||o(!1)}})(),()=>{S=!0}},[n]);const g=S=>{f(C=>{const E=new Set(C);return E.has(S)?E.delete(S):E.add(S),E})},v=k.useMemo(()=>d.trim().length>0&&h.size>=2&&!p,[d,h,p]),b=async()=>{if(v){x(!0),m(null);try{await e(d.trim(),[...h])}catch(S){m(S instanceof Error?S.message:String(S)),x(!1)}}};return i.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",role:"dialog","aria-modal":"true","aria-label":"Create group chat","data-testid":"create-group-modal",children:i.jsxs("div",{className:"flex max-h-[80vh] w-full max-w-md flex-col rounded-lg border border-border-dark bg-surface-dark shadow-xl",children:[i.jsxs("header",{className:"border-b border-border-dark px-4 py-3",children:[i.jsx("h2",{className:"text-base font-semibold text-text-primary-dark",children:"New group chat"}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Pull two or more agents into one room. Messages reach everyone."})]}),i.jsx("div",{className:"px-4 py-3",children:i.jsx("input",{type:"text",value:d,onChange:S=>u(S.target.value),placeholder:"Group name (e.g. Launch crew)",className:"mb-3 w-full rounded-md border border-border-dark bg-background-dark px-3 py-2 text-sm text-text-primary-dark placeholder:text-text-secondary-dark focus:border-primary focus:outline-none","aria-label":"Group name"})}),i.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto border-t border-border-dark px-2 py-2",children:[a&&i.jsx("p",{className:"px-2 py-2 text-sm text-text-secondary-dark",children:"Loading agents…"}),l&&i.jsxs("p",{className:"px-2 py-2 text-sm text-red-400",role:"alert",children:["Failed to load agents: ",l]}),!a&&!l&&r.length===0&&i.jsx("p",{className:"px-2 py-2 text-sm text-text-secondary-dark",children:"No agents available."}),r.map(S=>{const C=h.has(S.agentSession);return i.jsxs("label",{className:"flex cursor-pointer items-center gap-3 rounded-md px-2 py-2 hover:bg-background-dark",children:[i.jsx("input",{type:"checkbox",checked:C,onChange:()=>g(S.agentSession),className:"h-4 w-4"}),i.jsxs("span",{className:"min-w-0",children:[i.jsx("span",{className:"block truncate text-sm text-text-primary-dark",children:S.name}),i.jsx("span",{className:"block truncate text-xs text-text-secondary-dark",children:S.role})]})]},S.agentSession)})]}),y&&i.jsx("p",{className:"px-4 py-1 text-xs text-red-400",role:"alert",children:y}),i.jsxs("footer",{className:"flex items-center justify-between border-t border-border-dark px-4 py-3",children:[i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:[h.size," selected"]}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx("button",{type:"button",onClick:t,className:"rounded-md border border-border-dark px-3 py-1.5 text-sm text-text-secondary-dark hover:bg-background-dark",children:"Cancel"}),i.jsx("button",{type:"button",onClick:()=>void b(),disabled:!v,className:"rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-white hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"create-group-submit",children:p?"Creating…":"Create group"})]})]})]})})}const ZH="crewly-chat-pinned",jxe=[ug];function Rxe(){try{const t=localStorage.getItem(ZH);if(t){const e=JSON.parse(t);if(Array.isArray(e))return new Set(e.filter(n=>typeof n=="string"))}}catch{}return new Set(jxe)}function Ixe(){const[t,e]=k.useState(Rxe),n=k.useCallback(s=>{e(a=>{const o=new Set(a);o.has(s)?o.delete(s):o.add(s);try{localStorage.setItem(ZH,JSON.stringify([...o]))}catch{}return o})},[]),r=k.useCallback(s=>t.has(s),[t]);return{pinned:t,isPinned:r,toggle:n}}const Pxe="home";function Lxe(t){return`team:${t}`}function Dxe({backendURL:t,authToken:e,client:n,mentionables:r=[],initialConversationId:s,directoryAgents:a=[],teams:o=[],onEnsureDm:l}){return i.jsx(Lge,{mode:"real",backendURL:t,authToken:e,client:n,children:i.jsx(Oxe,{mentionables:r,initialConversationId:s,directoryAgents:a,teams:o,onEnsureDm:l})})}const VC="agent:",mb="slack-";function Im(t){return t.id.startsWith(mb)?t.id:t.agentSession||t.id}function MT(t){return t.flatMap(e=>[...e.rows,...MT(e.subGroups??[])])}function Oxe({mentionables:t,initialConversationId:e,directoryAgents:n,teams:r,onEnsureDm:s}){var V;const{channels:a,loading:o,error:l,refresh:c}=Hge(),d=Mp(),u=Ixe(),[h,f]=k.useState(!1),p=k.useMemo(()=>{const K=new Set(a.filter($=>($.type??"dm")==="dm"&&$.agentSession).map($=>$.agentSession)),H=n.filter($=>$.agentSession&&!K.has($.agentSession)).map($=>({id:`${VC}${$.agentSession}`,agentSession:$.agentSession,name:$.name,purpose:$.role,createdAt:"",type:"dm",presence:$.presence==="online"?"online":$.presence==="busy"?"busy":"offline"}));return H.length>0?[...a,...H]:a},[a,n]),[x,y]=k.useState(e??null),m=kxe(p,{workspaceId:void 0}),g=k.useMemo(()=>{var K;return((K=m.find(H=>H.id==="channels"))==null?void 0:K.rows)??[]},[m]),v=k.useMemo(()=>{var K;return((K=m.find(H=>H.id==="huddles"))==null?void 0:K.rows)??[]},[m]),b=k.useMemo(()=>{var K;return((K=m.find(H=>H.id==="dms"))==null?void 0:K.rows)??[]},[m]),S=k.useMemo(()=>{var K;return(K=b.find(H=>H.agentSession===ug&&!H.id.startsWith(mb)))==null?void 0:K.id},[b]),C=k.useMemo(()=>b.filter(K=>K.id.startsWith(mb)).map(K=>K.id),[b]),E=k.useMemo(()=>{const K=new Map;for(const H of p)(H.type??"dm")==="channel"&&H.teamId&&K.set(H.id,H.teamId);return K},[p]),N=k.useMemo(()=>{const K=new Map(n.map(Q=>[Q.agentSession,Q.role])),H=new Set(r.flatMap(Q=>Q.leaderSessions)),$=Q=>Q==="team-leader",L=Q=>{const re=Q.agentSession?K.get(Q.agentSession):void 0,ie=!!Q.agentSession&&H.has(Q.agentSession)||$(re);let de=Q;return re&&(de={...de,subtitle:re}),ie&&(de={...de,badge:"Lead"}),de},U=Q=>{var ie;const re=E.get(Q);return re?(ie=r.find(de=>de.id===re))==null?void 0:ie.name:void 0},R=g.map(Q=>{const re=U(Q.id);return re?{...Q,title:re}:Q}),D=b.filter(Q=>Q.agentSession&&!Q.id.startsWith(mb)),G=Q=>Q==="online"?0:Q==="busy"?1:Q==="offline"?2:3,F=(Q,re)=>{if(Q.agentSession===ug)return-1;if(re.agentSession===ug)return 1;const ie=G(Q.presence)-G(re.presence);if(ie!==0)return ie;const de=Q.lastMessageAt??"",ee=re.lastMessageAt??"";return de!==ee?ee.localeCompare(de):Q.title.localeCompare(re.title)},J=[...D].filter(Q=>u.isPinned(Im(Q))).sort(F).map(L),q=new Set(J.map(Q=>Im(Q))),te=[...D].filter(Q=>!q.has(Im(Q))).sort(F).map(L),z=[];return J.length>0&&z.push({id:"pinned",label:"Pinned",rows:J}),R.length>0&&z.push({id:"channels",label:"Channels",rows:R}),te.length>0&&z.push({id:"dms",label:"Direct messages",rows:te}),v.length>0&&z.push({id:"huddles",label:"Group chats",rows:v}),z},[r,b,v,g,E,u,n]),T=k.useMemo(()=>N.reduce((K,H)=>K+H.rows.length,0),[N]),A=x??((V=MT(N).find(K=>!K.id.startsWith(VC)))==null?void 0:V.id)??null,M=k.useCallback(async K=>{if(K.id.startsWith(VC)&&K.agentSession&&s){const H=await s(K.agentSession);await c(),y(H);return}y(K.id)},[s,c]),P=k.useCallback(async(K,H)=>{const $=await d.createHuddle({name:K,memberSessions:H});await c(),y($.id),f(!1)},[d,c]),I=k.useMemo(()=>MT(N).find(K=>K.id===A),[N,A]),B=k.useMemo(()=>!S||(I==null?void 0:I.id)!==S||C.length===0?null:[S,...C],[I,S,C]);return i.jsxs("div",{className:"flex h-full w-full bg-background-dark","data-testid":"team-chat-page","data-loading":o?"true":"false","data-error":l?"true":"false",children:[i.jsx(lxe,{workspaceName:"Home",groups:N,activeConversationId:A,onSelectConversation:M,isPinned:K=>u.isPinned(Im(K)),onTogglePin:K=>u.toggle(Im(K)),headerAction:i.jsx("button",{type:"button",onClick:()=>f(!0),className:"flex h-6 w-6 items-center justify-center rounded bg-surface-dark text-text-secondary-dark transition hover:text-primary","data-testid":"new-group-button",title:"Create a multi-agent group chat","aria-label":"Create a multi-agent group chat",children:i.jsx(vr,{size:16})}),emptyState:T===0&&!o?i.jsx(Exe,{teamName:"This workspace"}):void 0}),i.jsx(Bxe,{conversation:I,mentionables:t,mergeChannelIds:B}),h&&i.jsx(Nxe,{onClose:()=>f(!1),onCreate:P})]})}function Bxe({conversation:t,mentionables:e,mergeChannelIds:n}){return t?n&&n.length>0?i.jsx(Uxe,{conversation:t,mentionables:e,channelIds:n}):i.jsx(Fxe,{conversation:t,mentionables:e}):i.jsx("section",{className:"flex flex-1 items-center justify-center bg-background-dark text-sm text-text-secondary-dark","data-testid":"team-chat-right-panel","aria-label":"Conversation thread",children:"Select a conversation from the list to start chatting."})}function Fxe({conversation:t,mentionables:e}){const{messages:n,agentThinking:r,hasMore:s,loadMore:a}=GH(t.id);return i.jsx(QH,{conversation:t,mentionables:e,messages:n,agentThinking:r,hasMore:s,onLoadMore:a})}function Uxe({conversation:t,mentionables:e,channelIds:n}){const{messages:r,agentThinking:s,hasMore:a,loadMore:o}=Sxe(n);return i.jsx(QH,{conversation:t,mentionables:e,messages:r,agentThinking:s,hasMore:a,onLoadMore:o})}function QH({conversation:t,mentionables:e,messages:n,agentThinking:r,hasMore:s,onLoadMore:a}){const{send:o,error:l,reset:c}=ixe(),[d,u]=k.useState(null);k.useEffect(()=>{u(null)},[t.id]);const h=k.useMemo(()=>Hxe(l),[l]),f=t.kind==="dm"?t.title:void 0,p=k.useMemo(()=>d?n.find(b=>b.id===d):void 0,[n,d]),x=k.useMemo(()=>d?Gge(n,d):[],[n,d]),y=k.useCallback(async b=>{const S=b.mentions.map(C=>C.id);try{await o(t.id,{content:b.content,mentions:S,threadId:d??void 0})}catch{}},[t.id,o,d]),m=k.useCallback(b=>{u(b.id)},[]),g=k.useCallback(()=>{u(null)},[]),v=d!==null;return i.jsxs("section",{className:"flex flex-1 bg-background-dark","data-testid":"team-chat-right-panel","aria-label":`Conversation with ${t.title}`,"data-thread-active":v?"true":"false",children:[i.jsxs("div",{className:"flex min-w-0 flex-1 flex-col bg-background-dark",children:[i.jsxs("header",{className:"flex items-center justify-between gap-4 border-b border-border-dark bg-background-dark/30 px-6 py-3 backdrop-blur-md",children:[i.jsxs("div",{className:"min-w-0 leading-tight",children:[i.jsx("h2",{className:"truncate text-base font-bold text-text-primary-dark",children:t.kind==="channel"?`#${t.title.replace(/^#+\s*/,"")}`:t.title}),t.subtitle&&i.jsx("p",{className:"truncate text-[11px] text-text-secondary-dark",children:t.subtitle})]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(jO,{label:"Search",children:i.jsx(Z2,{size:18})}),i.jsx(jO,{label:"Conversation info",children:i.jsx(Tu,{size:18})})]})]}),i.jsx(Vge,{channelId:t.id,agentName:f,layout:"flat",hideReplies:!0,onReplyInThread:m,messages:n,agentThinking:r,hasMore:s,onLoadMore:a,emptyState:i.jsx(Axe,{kind:t.kind==="dm"?"dm":"channel",recipientName:f})}),i.jsx(YH,{mentionables:e,onSend:y})]}),v&&i.jsx(zxe,{rootMessage:p,replies:x,mentionables:e,onClose:g,onSend:y}),h&&i.jsx(Txe,{message:h.message,detail:h.detail,onDismiss:c})]})}function jO({label:t,children:e}){return i.jsx("button",{type:"button","aria-label":t,title:t,className:"flex h-9 w-9 items-center justify-center rounded-lg text-text-secondary-dark transition hover:bg-white/5 hover:text-text-primary-dark",children:e})}function zxe({rootMessage:t,replies:e,mentionables:n,onClose:r,onSend:s}){const a=e.length;return i.jsxs("aside",{"data-testid":"thread-panel","aria-label":"Thread",className:"flex w-[380px] shrink-0 flex-col border-l border-border-dark bg-background-dark",children:[i.jsxs("header",{className:"flex items-center justify-between gap-4 border-b border-border-dark bg-background-dark/30 px-4 py-3 backdrop-blur-md",children:[i.jsxs("div",{className:"leading-tight",children:[i.jsx("h3",{className:"text-sm font-bold text-text-primary-dark",children:"Thread"}),a>0&&i.jsxs("p",{className:"text-[11px] text-text-secondary-dark",children:[a," ",a===1?"reply":"replies"]})]}),i.jsx("button",{type:"button",onClick:r,"data-testid":"thread-close","aria-label":"Close thread",className:"flex h-8 w-8 items-center justify-center rounded-lg text-text-secondary-dark transition hover:bg-white/5 hover:text-text-primary-dark",children:i.jsx(On,{size:18})})]}),i.jsxs("div",{className:"chat-scrollbar flex flex-1 flex-col gap-3 overflow-y-auto px-4 py-4",children:[t?i.jsx(RO,{message:t,isRoot:!0}):i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"Thread root unavailable."}),i.jsxs("div",{className:"flex items-center gap-3 py-1",children:[i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/30","aria-hidden":"true"}),i.jsxs("span",{className:"text-[10px] font-bold uppercase tracking-widest text-text-secondary-dark",children:[a," ",a===1?"reply":"replies"]}),i.jsx("span",{className:"h-[1px] flex-1 bg-border-dark/30","aria-hidden":"true"})]}),e.map(o=>i.jsx(RO,{message:o},o.id))]}),i.jsx(YH,{mentionables:n,onSend:s,placeholder:"Reply…"})]})}function RO({message:t,isRoot:e=!1}){const n=t.author.role!=="user",r=t.author.name??t.author.id,s=(()=>{try{return new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}})();return i.jsxs("div",{className:"flex flex-col","data-testid":`thread-msg-${t.id}`,"data-author-role":t.author.role,children:[i.jsxs("div",{className:"flex items-baseline gap-2",children:[i.jsx("span",{className:`text-[13px] font-bold ${n?"text-primary":"text-text-primary-dark"}`,children:r}),i.jsx("time",{className:"text-[10px] text-text-secondary-dark",children:s})]}),i.jsx("div",{className:"mt-0.5 max-w-full whitespace-pre-wrap break-words text-sm leading-relaxed text-text-primary-dark",children:$H(t.content)})]})}function Hxe(t){if(!t)return null;const e=t;switch(e.code){case"validation_error":return{message:"Could not send message — request was rejected.",detail:e.message};case"payload_too_large":return{message:"Message is too large to send.",detail:e.message};case"channel_not_found":case"channel_archived":return{message:"This conversation is no longer available.",detail:e.message};case"forbidden":return{message:"You do not have permission to send here.",detail:e.message};case"rate_limited":return{message:"Slow down — too many sends in a short window.",detail:e.message};case"network_error":return{message:"Network error — message did not send.",detail:e.message};default:return{message:"Could not send message.",detail:t.message}}}function Gxe(){return({}.VITE_CHAT_MODE??"").toString().toLowerCase()==="mock"?"mock":"real"}function Wxe(){const t=({}.VITE_CHAT_BACKEND_URL??"").toString();return t?t.replace(/\/+$/,""):typeof window<"u"?window.location.origin:""}async function $C(t,e){var n;try{const s=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).json();return((n=s==null?void 0:s.data)==null?void 0:n.id)??null}catch{return null}}function Vxe(){const[t]=pp(),{teams:e}=P6(),{isCollapsed:n,collapseSidebar:r,expandSidebar:s}=T1();k.useEffect(()=>{const E=!n;return r(),()=>{E&&s()}},[]);const a=Gxe(),o=a==="real"?Wxe():void 0,l=k.useMemo(()=>_Q(e),[e]),c=k.useMemo(()=>SQ(e),[e]),d=k.useMemo(()=>{const E=new Set,N=[];for(const T of e)for(const A of T.members??[]){const M=A.sessionName;!M||E.has(M)||(E.add(M),N.push({agentSession:M,name:A.name,presence:F6(A.agentStatus),teamName:T.name,role:A.role}))}return N},[e]),u=k.useMemo(()=>e.map(E=>{var I;const N=(I=E.leaderIds)!=null&&I.length?E.leaderIds:E.leaderId?[E.leaderId]:[],T=new Set(N),A=E.members??[],M=A.filter(B=>B.sessionName&&(T.has(B.id)||B.hierarchyLevel===1)).map(B=>B.sessionName),P=A.filter(B=>B.sessionName).map(B=>B.sessionName);return{id:E.id,name:E.name,leaderSessions:M,memberSessions:P,parentTeamId:E.parentTeamId}}),[e]),h=t.get(Ml)||null,f=k.useCallback(async E=>{const N=d.find(A=>A.agentSession===E);return await $C("/api/chat/channels/dm/ensure",{agentSession:E,name:(N==null?void 0:N.name)??E})??""},[d]),p=k.useMemo(()=>u.map(E=>E.id),[u]),x=`${h??"__none__"}|${p.join(",")}`,[y,m]=k.useState(null),[g,v]=k.useState(null),b=a!=="real"||y===x;if(k.useEffect(()=>{if(a!=="real")return;let E=!1;return(async()=>{const N=await $C("/api/chat/channels/dm/ensure",{agentSession:ug,name:bQ,purpose:"Talk to the orchestrator"});await Promise.all(p.map(T=>$C("/api/chat/channels/team/ensure",{teamId:T}))),E||(N&&v(N),m(x))})(),()=>{E=!0}},[a,x,p]),!b)return i.jsx("div",{className:"flex h-full items-center justify-center text-sm text-text-secondary-dark",role:"status",children:"Opening chat…"});const S=h?Lxe(h):Pxe,C=h?null:g;return i.jsx(Dxe,{backendURL:o,teamLabels:l,mentionables:c,initialWorkspaceId:S,initialConversationId:C,directoryAgents:d,teams:u,onEnsureDm:f})}const hd="/api/marketplace";async function $xe(t){const e=new URLSearchParams;t!=null&&t.type&&e.set("type",t.type),t!=null&&t.search&&e.set("search",t.search),t!=null&&t.sort&&e.set("sort",t.sort);const n=e.toString(),r=`${hd}${n?`?${n}`:""}`;return(await Ye.get(r)).data.data}async function Kxe(t){return(await Ye.get(`${hd}/${t}`)).data.data}async function eG(t){return(await Ye.post(`${hd}/${t}/install`)).data}async function tG(t){return(await Ye.post(`${hd}/${t}/uninstall`)).data}async function qxe(t){return(await Ye.post(`${hd}/${t}/update`)).data}async function IO(){await Ye.post(`${hd}/refresh`)}async function Xxe(t){const e=t?`?status=${t}`:"";return(await Ye.get(`${hd}/submissions${e}`)).data.data}async function Yxe(t,e,n){return(await Ye.post(`${hd}/submissions/${t}/review`,{action:e,notes:n})).data}const Jxe=4e3;function nG(){const[t,e]=k.useState([]),n=k.useRef(0),r=k.useCallback((a,o="info")=>{const l=`toast-${++n.current}`,c={id:l,message:a,type:o};e(d=>[...d,c]),setTimeout(()=>{e(d=>d.filter(u=>u.id!==l))},Jxe)},[]),s=k.useCallback(a=>{e(o=>o.filter(l=>l.id!==a))},[]);return{toasts:t,addToast:r,dismissToast:s}}const Zxe={success:"border-green-500 bg-green-500/10 text-green-300",error:"border-red-500 bg-red-500/10 text-red-300",info:"border-blue-500 bg-blue-500/10 text-blue-300"};function rG({toasts:t,onDismiss:e}){return t.length===0?null:i.jsx("div",{className:"fixed bottom-4 right-4 z-50 flex flex-col gap-2 max-w-sm",role:"log","aria-live":"polite",children:t.map(n=>i.jsxs("div",{"data-testid":`toast-${n.type}`,className:`flex items-center gap-3 px-4 py-3 rounded-lg border text-sm shadow-lg backdrop-blur-sm ${Zxe[n.type]}`,children:[i.jsx("span",{className:"flex-1",children:n.message}),i.jsx("button",{onClick:()=>e(n.id),className:"text-gray-400 hover:text-white transition-colors shrink-0","aria-label":"Dismiss notification",children:i.jsx(On,{className:"w-3.5 h-3.5"})})]},n.id))})}const Qxe=[{label:"All",value:"all"},{label:"Skills",value:"skill"},{label:"3D Models",value:"model"},{label:"Roles",value:"role"},{label:"MCP Tools",value:"mcp_tool"}],e0e=[{label:"Popular",value:"popular"},{label:"Highest Rated",value:"rating"},{label:"Newest",value:"newest"}];function t0e(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}const n0e={skill:"bg-blue-500/20 text-blue-400",model:"bg-primary/20 text-primary",role:"bg-emerald-500/20 text-emerald-400",mcp_tool:"bg-orange-500/20 text-orange-400"};function r0e(){const[t,e]=k.useState("browse"),[n,r]=k.useState([]),[s,a]=k.useState([]),[o,l]=k.useState(!0),[c,d]=k.useState("all"),[u,h]=k.useState(""),[f,p]=k.useState("popular"),[x,y]=k.useState(null),[m,g]=k.useState(null),{toasts:v,addToast:b,dismissToast:S}=nG(),C=k.useCallback(async()=>{try{l(!0),g(null);const I=await $xe({type:c==="all"?void 0:c,search:u||void 0,sort:f});r(I)}catch{g("Failed to load marketplace items")}finally{l(!1)}},[c,u,f]);k.useEffect(()=>{C()},[C]);const E=async I=>{y(I);try{const B=await eG(I);b(B.message||`Installed ${I}`,B.success?"success":"error"),await C()}catch(B){const V=B instanceof Error?B.message:"Install failed";b(V,"error")}y(null)},N=async I=>{y(I);try{const B=await tG(I);b(B.message||`Uninstalled ${I}`,B.success?"success":"error"),await C()}catch(B){const V=B instanceof Error?B.message:"Uninstall failed";b(V,"error")}y(null)},T=async I=>{y(I);try{const B=await qxe(I);b(B.message||`Updated ${I}`,B.success?"success":"error"),await C()}catch(B){const V=B instanceof Error?B.message:"Update failed";b(V,"error")}y(null)},A=async()=>{try{await IO(),b("Registry refreshed","success"),await C()}catch{b("Failed to refresh registry","error")}},M=k.useCallback(async()=>{try{l(!0),g(null);const I=await Xxe();a(I)}catch{g("Failed to load submissions")}finally{l(!1)}},[]);k.useEffect(()=>{t==="submissions"&&M()},[t,M]);const P=async(I,B)=>{y(I);try{const V=await Yxe(I,B);b(V.message||`${B==="approve"?"Approved":"Rejected"}`,V.success?"success":"error"),await M(),B==="approve"&&await IO()}catch(V){const K=V instanceof Error?V.message:"Review failed";b(K,"error")}y(null)};return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto",children:[i.jsxs("div",{className:"flex items-center justify-between mb-6",children:[i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Marketplace"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Browse and install skills, models, and tools."})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsxs("div",{className:"flex gap-1 bg-surface-dark border border-border-dark rounded-lg p-1",children:[i.jsxs("button",{onClick:()=>e("browse"),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-colors ${t==="browse"?"bg-primary/10 text-primary":"text-text-secondary-dark hover:text-text-primary-dark"}`,children:[i.jsx(SA,{className:"w-3.5 h-3.5"}),"Browse"]}),i.jsxs("button",{onClick:()=>e("submissions"),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-colors ${t==="submissions"?"bg-primary/10 text-primary":"text-text-secondary-dark hover:text-text-primary-dark"}`,children:[i.jsx(nU,{className:"w-3.5 h-3.5"}),"Submissions"]})]}),i.jsxs("button",{onClick:A,className:"flex items-center gap-2 px-3 py-1.5 text-sm bg-surface-dark hover:bg-background-dark text-text-secondary-dark hover:text-text-primary-dark border border-border-dark rounded-lg transition-colors","aria-label":"Refresh marketplace",children:[i.jsx(zn,{className:"w-4 h-4"}),"Refresh"]})]})]}),t==="browse"&&i.jsxs(i.Fragment,{children:[i.jsx(ld,{tabs:Qxe.map(I=>({value:I.value,label:I.label})),activeTab:c,onTabChange:I=>d(I),searchPlaceholder:"Search...",searchValue:u,onSearchChange:h,searchDebounceMs:0,trailing:i.jsx(Mx,{options:e0e,value:f,onChange:I=>p(I),"aria-label":"Sort by",className:"w-[140px]"}),className:"mb-6"}),o?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",role:"status",children:"Loading marketplace..."}):m?i.jsx("div",{className:"text-center py-16 text-red-400",role:"alert",children:m}):n.length===0?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",children:"No items found."}):i.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:n.map(I=>i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl p-5 hover:border-primary/30 transition-colors","data-testid":`marketplace-item-${I.id}`,children:[i.jsxs("div",{className:"flex items-start justify-between mb-3",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${n0e[I.type]}`,children:I.type}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["v",I.version]})]}),I.installStatus==="installed"&&i.jsx(br,{className:"w-4 h-4 text-green-400","aria-label":"Installed"}),I.installStatus==="update_available"&&i.jsx(Xg,{className:"w-4 h-4 text-yellow-400","aria-label":"Update available"})]}),i.jsx("h3",{className:"text-base font-semibold text-white mb-1",children:I.name}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-3 line-clamp-2",children:I.description}),i.jsxs("div",{className:"flex items-center justify-between text-xs text-text-secondary-dark mb-4",children:[i.jsxs("span",{children:["by ",I.author]}),i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(tM,{className:"w-3 h-3 text-yellow-500"}),I.rating.toFixed(1)]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(gp,{className:"w-3 h-3"}),t0e(I.downloads)]})]})]}),i.jsxs("div",{className:"flex gap-2",children:[I.installStatus==="not_installed"&&i.jsxs("button",{onClick:()=>E(I.id),disabled:x===I.id,className:"flex-1 flex items-center justify-center gap-1 px-3 py-1.5 text-sm bg-primary hover:bg-primary/90 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(SA,{className:"w-3 h-3"}),x===I.id?"Installing...":"Install"]}),I.installStatus==="installed"&&i.jsx("button",{onClick:()=>N(I.id),disabled:x===I.id,className:"flex-1 px-3 py-1.5 text-sm bg-background-dark hover:bg-red-900/50 text-text-primary-dark hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:x===I.id?"Removing...":"Uninstall"}),I.installStatus==="update_available"&&i.jsxs(i.Fragment,{children:[i.jsxs("button",{onClick:()=>T(I.id),disabled:x===I.id,className:"flex-1 flex items-center justify-center gap-1 px-3 py-1.5 text-sm bg-yellow-600 hover:bg-yellow-500 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(Xg,{className:"w-3 h-3"}),x===I.id?"Updating...":"Update"]}),i.jsx("button",{onClick:()=>N(I.id),disabled:x===I.id,className:"px-3 py-1.5 text-sm bg-background-dark hover:bg-red-900/50 text-text-primary-dark hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:"Remove"})]})]})]},I.id))})]}),t==="submissions"&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"mb-6",children:i.jsxs("p",{className:"text-sm text-text-secondary-dark",children:["Submit skills via CLI: ",i.jsx("code",{className:"bg-background-dark px-2 py-0.5 rounded text-xs text-text-primary-dark",children:"crewly publish path/to/skill --submit"})]})}),o?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",role:"status",children:"Loading submissions..."}):m?i.jsx("div",{className:"text-center py-16 text-red-400",role:"alert",children:m}):s.length===0?i.jsx("div",{className:"text-center py-16 text-text-secondary-dark",children:"No submissions yet."}):i.jsx("div",{className:"space-y-3",children:s.map(I=>i.jsx("div",{className:"bg-surface-dark border border-border-dark rounded-xl p-5 hover:border-primary/30 transition-colors","data-testid":`submission-${I.id}`,children:i.jsxs("div",{className:"flex items-start justify-between",children:[i.jsxs("div",{className:"flex-1",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx("h3",{className:"text-base font-semibold text-white",children:I.name}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["v",I.version]}),i.jsxs("span",{className:`flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium ${I.status==="pending"?"bg-yellow-500/20 text-yellow-400":I.status==="approved"?"bg-green-500/20 text-green-400":"bg-red-500/20 text-red-400"}`,children:[I.status==="pending"&&i.jsx(fr,{className:"w-3 h-3"}),I.status==="approved"&&i.jsx(fa,{className:"w-3 h-3"}),I.status==="rejected"&&i.jsx(Fl,{className:"w-3 h-3"}),I.status]})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-2",children:I.description}),i.jsxs("div",{className:"flex items-center gap-4 text-xs text-text-secondary-dark",children:[i.jsxs("span",{children:["by ",I.author]}),i.jsx("span",{children:I.category}),i.jsx("span",{children:new Date(I.submittedAt).toLocaleDateString()})]}),I.reviewNotes&&i.jsxs("p",{className:"mt-2 text-xs text-text-secondary-dark italic",children:["Review: ",I.reviewNotes]})]}),I.status==="pending"&&i.jsxs("div",{className:"flex gap-2 ml-4",children:[i.jsxs("button",{onClick:()=>P(I.id,"approve"),disabled:x===I.id,className:"flex items-center gap-1 px-3 py-1.5 text-sm bg-green-600 hover:bg-green-500 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(fa,{className:"w-3 h-3"}),x===I.id?"...":"Approve"]}),i.jsx("button",{onClick:()=>P(I.id,"reject"),disabled:x===I.id,className:"px-3 py-1.5 text-sm bg-background-dark hover:bg-red-900/50 text-text-primary-dark hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:"Reject"})]})]})},I.id))})]}),i.jsx(rG,{toasts:v,onDismiss:S})]})}const s0e={skill:"bg-blue-500/20 text-blue-400",model:"bg-primary/20 text-primary",role:"bg-emerald-500/20 text-emerald-400",mcp_tool:"bg-orange-500/20 text-orange-400"};function i0e(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function a0e(){var v;const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(!1),[u,h]=k.useState(!1),{toasts:f,addToast:p,dismissToast:x}=nG();k.useEffect(()=>{t&&y(t)},[t]);const y=async b=>{try{a(!0),l(null);const S=await Kxe(b);r(S)}catch{l("Failed to load item details")}finally{a(!1)}},m=async()=>{if(n){d(!0);try{const b=await eG(n.id);p(b.message||`Installed ${n.name}`,b.success?"success":"error"),await y(n.id)}catch(b){p(b instanceof Error?b.message:"Install failed","error")}d(!1)}},g=async()=>{if(n){h(!1),d(!0);try{const b=await tG(n.id);p(b.message||`Uninstalled ${n.name}`,b.success?"success":"error"),await y(n.id)}catch(b){p(b instanceof Error?b.message:"Uninstall failed","error")}d(!1)}};return s?i.jsx("div",{className:"p-6 max-w-5xl mx-auto",children:i.jsx("div",{className:"text-center py-16 text-gray-400",role:"status",children:"Loading item details..."})}):o||!n?i.jsxs("div",{className:"p-6 max-w-5xl mx-auto",children:[i.jsxs("button",{onClick:()=>e("/marketplace"),className:"flex items-center gap-2 text-gray-400 hover:text-white mb-6 transition-colors",children:[i.jsx(Ua,{className:"w-4 h-4"}),"Back to Marketplace"]}),i.jsx("div",{className:"text-center py-16 text-red-400",role:"alert",children:o||"Item not found"})]}):i.jsxs("div",{className:"p-6 max-w-5xl mx-auto",children:[i.jsxs("button",{onClick:()=>e("/marketplace"),className:"flex items-center gap-2 text-gray-400 hover:text-white mb-6 transition-colors","data-testid":"back-to-marketplace",children:[i.jsx(Ua,{className:"w-4 h-4"}),"Back to Marketplace"]}),i.jsx("div",{className:"bg-gray-900 border border-gray-800 rounded-xl p-6 mb-6",children:i.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-4",children:[i.jsxs("div",{className:"flex-1",children:[i.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[i.jsx("h1",{className:"text-2xl font-bold text-white","data-testid":"item-name",children:n.name}),i.jsx("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${s0e[n.type]}`,children:n.type}),i.jsxs("span",{className:"text-xs text-gray-500",children:["v",n.version]}),n.installStatus==="installed"&&i.jsx(br,{className:"w-4 h-4 text-green-400","aria-label":"Installed"}),n.installStatus==="update_available"&&i.jsx(Xg,{className:"w-4 h-4 text-yellow-400","aria-label":"Update available"})]}),i.jsx("p",{className:"text-gray-400 mb-4","data-testid":"item-description",children:n.description}),i.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-sm text-gray-500",children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Ku,{className:"w-3.5 h-3.5"}),n.author]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(tM,{className:"w-3.5 h-3.5 text-yellow-500"}),n.rating.toFixed(1)]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(gp,{className:"w-3.5 h-3.5"}),i0e(n.downloads)]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx($u,{className:"w-3.5 h-3.5"}),n.license]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(mA,{className:"w-3.5 h-3.5"}),new Date(n.updatedAt).toLocaleDateString()]})]})]}),i.jsxs("div",{className:"flex gap-2 shrink-0",children:[n.installStatus==="not_installed"&&i.jsxs("button",{onClick:m,disabled:c,className:"flex items-center gap-2 px-4 py-2 text-sm bg-primary hover:bg-primary/90 text-white rounded-lg disabled:opacity-50 transition-colors","data-testid":"install-btn",children:[i.jsx(SA,{className:"w-4 h-4"}),c?"Installing...":"Install"]}),n.installStatus==="installed"&&i.jsx("button",{onClick:()=>h(!0),disabled:c,className:"px-4 py-2 text-sm bg-gray-800 hover:bg-red-900/50 text-gray-300 hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors","data-testid":"uninstall-btn",children:c?"Removing...":"Uninstall"}),n.installStatus==="update_available"&&i.jsxs(i.Fragment,{children:[i.jsxs("button",{onClick:m,disabled:c,className:"flex items-center gap-2 px-4 py-2 text-sm bg-yellow-600 hover:bg-yellow-500 text-white rounded-lg disabled:opacity-50 transition-colors",children:[i.jsx(Xg,{className:"w-4 h-4"}),c?"Updating...":"Update"]}),i.jsx("button",{onClick:()=>h(!0),disabled:c,className:"px-4 py-2 text-sm bg-gray-800 hover:bg-red-900/50 text-gray-300 hover:text-red-300 rounded-lg disabled:opacity-50 transition-colors",children:"Remove"})]})]})]})}),n.tags&&n.tags.length>0&&i.jsxs("div",{className:"flex items-center gap-2 mb-6 flex-wrap",children:[i.jsx(eU,{className:"w-4 h-4 text-gray-500"}),n.tags.map(b=>i.jsx("span",{className:"px-2 py-0.5 bg-gray-800 text-gray-400 text-xs rounded-full",children:b},b))]}),i.jsxs("div",{className:"bg-gray-900 border border-gray-800 rounded-xl p-6","data-testid":"readme-section",children:[i.jsx("h2",{className:"text-lg font-semibold text-white mb-4",children:"README"}),i.jsx("div",{className:"prose prose-invert prose-sm max-w-none text-gray-300",children:(v=n.metadata)!=null&&v.readme?i.jsx("pre",{className:"whitespace-pre-wrap font-sans text-sm leading-relaxed",children:String(n.metadata.readme)}):i.jsx("p",{className:"text-gray-500 italic",children:"No README available for this item."})})]}),i.jsx(B1,{isOpen:u,onCancel:()=>h(!1),onConfirm:g,title:"Uninstall Item",message:`Are you sure you want to uninstall ${n.name}? This action cannot be undone.`,confirmLabel:"Uninstall",confirmVariant:"danger"}),i.jsx(rG,{toasts:f,onDismiss:x})]})}function o0e(t,e){const n=e||{};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const l0e=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,c0e=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,d0e={};function PO(t,e){return((e||d0e).jsx?c0e:l0e).test(t)}const u0e=/[ \t\n\f\r]/g;function h0e(t){return typeof t=="object"?t.type==="text"?LO(t.value):!1:LO(t)}function LO(t){return t.replace(u0e,"")===""}class Yx{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}Yx.prototype.normal={};Yx.prototype.property={};Yx.prototype.space=void 0;function sG(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new Yx(n,r,e)}function NT(t){return t.toLowerCase()}class Ki{constructor(e,n){this.attribute=n,this.property=e}}Ki.prototype.attribute="";Ki.prototype.booleanish=!1;Ki.prototype.boolean=!1;Ki.prototype.commaOrSpaceSeparated=!1;Ki.prototype.commaSeparated=!1;Ki.prototype.defined=!1;Ki.prototype.mustUseProperty=!1;Ki.prototype.number=!1;Ki.prototype.overloadedBoolean=!1;Ki.prototype.property="";Ki.prototype.spaceSeparated=!1;Ki.prototype.space=void 0;let f0e=0;const pn=Qu(),Zr=Qu(),jT=Qu(),gt=Qu(),ar=Qu(),If=Qu(),sa=Qu();function Qu(){return 2**++f0e}const RT=Object.freeze(Object.defineProperty({__proto__:null,boolean:pn,booleanish:Zr,commaOrSpaceSeparated:sa,commaSeparated:If,number:gt,overloadedBoolean:jT,spaceSeparated:ar},Symbol.toStringTag,{value:"Module"})),KC=Object.keys(RT);class JN extends Ki{constructor(e,n,r,s){let a=-1;if(super(e,n),DO(this,"space",s),typeof r=="number")for(;++a<KC.length;){const o=KC[a];DO(this,KC[a],(r&RT[o])===RT[o])}}}JN.prototype.defined=!0;function DO(t,e,n){n&&(t[e]=n)}function Np(t){const e={},n={};for(const[r,s]of Object.entries(t.properties)){const a=new JN(r,t.transform(t.attributes||{},r),s,t.space);t.mustUseProperty&&t.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),e[r]=a,n[NT(r)]=r,n[NT(a.attribute)]=r}return new Yx(e,n,t.space)}const iG=Np({properties:{ariaActiveDescendant:null,ariaAtomic:Zr,ariaAutoComplete:null,ariaBusy:Zr,ariaChecked:Zr,ariaColCount:gt,ariaColIndex:gt,ariaColSpan:gt,ariaControls:ar,ariaCurrent:null,ariaDescribedBy:ar,ariaDetails:null,ariaDisabled:Zr,ariaDropEffect:ar,ariaErrorMessage:null,ariaExpanded:Zr,ariaFlowTo:ar,ariaGrabbed:Zr,ariaHasPopup:null,ariaHidden:Zr,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:ar,ariaLevel:gt,ariaLive:null,ariaModal:Zr,ariaMultiLine:Zr,ariaMultiSelectable:Zr,ariaOrientation:null,ariaOwns:ar,ariaPlaceholder:null,ariaPosInSet:gt,ariaPressed:Zr,ariaReadOnly:Zr,ariaRelevant:null,ariaRequired:Zr,ariaRoleDescription:ar,ariaRowCount:gt,ariaRowIndex:gt,ariaRowSpan:gt,ariaSelected:Zr,ariaSetSize:gt,ariaSort:null,ariaValueMax:gt,ariaValueMin:gt,ariaValueNow:gt,ariaValueText:null,role:null},transform(t,e){return e==="role"?e:"aria-"+e.slice(4).toLowerCase()}});function aG(t,e){return e in t?t[e]:e}function oG(t,e){return aG(t,e.toLowerCase())}const p0e=Np({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:If,acceptCharset:ar,accessKey:ar,action:null,allow:null,allowFullScreen:pn,allowPaymentRequest:pn,allowUserMedia:pn,alt:null,as:null,async:pn,autoCapitalize:null,autoComplete:ar,autoFocus:pn,autoPlay:pn,blocking:ar,capture:null,charSet:null,checked:pn,cite:null,className:ar,cols:gt,colSpan:null,content:null,contentEditable:Zr,controls:pn,controlsList:ar,coords:gt|If,crossOrigin:null,data:null,dateTime:null,decoding:null,default:pn,defer:pn,dir:null,dirName:null,disabled:pn,download:jT,draggable:Zr,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:pn,formTarget:null,headers:ar,height:gt,hidden:jT,high:gt,href:null,hrefLang:null,htmlFor:ar,httpEquiv:ar,id:null,imageSizes:null,imageSrcSet:null,inert:pn,inputMode:null,integrity:null,is:null,isMap:pn,itemId:null,itemProp:ar,itemRef:ar,itemScope:pn,itemType:ar,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:pn,low:gt,manifest:null,max:null,maxLength:gt,media:null,method:null,min:null,minLength:gt,multiple:pn,muted:pn,name:null,nonce:null,noModule:pn,noValidate:pn,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:pn,optimum:gt,pattern:null,ping:ar,placeholder:null,playsInline:pn,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:pn,referrerPolicy:null,rel:ar,required:pn,reversed:pn,rows:gt,rowSpan:gt,sandbox:ar,scope:null,scoped:pn,seamless:pn,selected:pn,shadowRootClonable:pn,shadowRootDelegatesFocus:pn,shadowRootMode:null,shape:null,size:gt,sizes:null,slot:null,span:gt,spellCheck:Zr,src:null,srcDoc:null,srcLang:null,srcSet:null,start:gt,step:null,style:null,tabIndex:gt,target:null,title:null,translate:null,type:null,typeMustMatch:pn,useMap:null,value:Zr,width:gt,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:ar,axis:null,background:null,bgColor:null,border:gt,borderColor:null,bottomMargin:gt,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:pn,declare:pn,event:null,face:null,frame:null,frameBorder:null,hSpace:gt,leftMargin:gt,link:null,longDesc:null,lowSrc:null,marginHeight:gt,marginWidth:gt,noResize:pn,noHref:pn,noShade:pn,noWrap:pn,object:null,profile:null,prompt:null,rev:null,rightMargin:gt,rules:null,scheme:null,scrolling:Zr,standby:null,summary:null,text:null,topMargin:gt,valueType:null,version:null,vAlign:null,vLink:null,vSpace:gt,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:pn,disableRemotePlayback:pn,prefix:null,property:null,results:gt,security:null,unselectable:null},space:"html",transform:oG}),m0e=Np({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:sa,accentHeight:gt,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:gt,amplitude:gt,arabicForm:null,ascent:gt,attributeName:null,attributeType:null,azimuth:gt,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:gt,by:null,calcMode:null,capHeight:gt,className:ar,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:gt,diffuseConstant:gt,direction:null,display:null,dur:null,divisor:gt,dominantBaseline:null,download:pn,dx:null,dy:null,edgeMode:null,editable:null,elevation:gt,enableBackground:null,end:null,event:null,exponent:gt,externalResourcesRequired:null,fill:null,fillOpacity:gt,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:If,g2:If,glyphName:If,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:gt,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:gt,horizOriginX:gt,horizOriginY:gt,id:null,ideographic:gt,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:gt,k:gt,k1:gt,k2:gt,k3:gt,k4:gt,kernelMatrix:sa,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:gt,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:gt,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:gt,overlineThickness:gt,paintOrder:null,panose1:null,path:null,pathLength:gt,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:ar,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:gt,pointsAtY:gt,pointsAtZ:gt,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:sa,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:sa,rev:sa,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:sa,requiredFeatures:sa,requiredFonts:sa,requiredFormats:sa,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:gt,specularExponent:gt,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:gt,strikethroughThickness:gt,string:null,stroke:null,strokeDashArray:sa,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:gt,strokeOpacity:gt,strokeWidth:null,style:null,surfaceScale:gt,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:sa,tabIndex:gt,tableValues:null,target:null,targetX:gt,targetY:gt,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:sa,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:gt,underlineThickness:gt,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:gt,values:null,vAlphabetic:gt,vMathematical:gt,vectorEffect:null,vHanging:gt,vIdeographic:gt,version:null,vertAdvY:gt,vertOriginX:gt,vertOriginY:gt,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:gt,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:aG}),lG=Np({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(t,e){return"xlink:"+e.slice(5).toLowerCase()}}),cG=Np({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:oG}),dG=Np({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(t,e){return"xml:"+e.slice(3).toLowerCase()}}),g0e={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},x0e=/[A-Z]/g,OO=/-[a-z]/g,y0e=/^data[-\w.:]+$/i;function v0e(t,e){const n=NT(e);let r=e,s=Ki;if(n in t.normal)return t.property[t.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&y0e.test(e)){if(e.charAt(4)==="-"){const a=e.slice(5).replace(OO,_0e);r="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=e.slice(4);if(!OO.test(a)){let o=a.replace(x0e,b0e);o.charAt(0)!=="-"&&(o="-"+o),e="data"+o}}s=JN}return new s(r,e)}function b0e(t){return"-"+t.toLowerCase()}function _0e(t){return t.charAt(1).toUpperCase()}const S0e=sG([iG,p0e,lG,cG,dG],"html"),ZN=sG([iG,m0e,lG,cG,dG],"svg");function w0e(t){return t.join(" ").trim()}var QN={},BO=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,k0e=/\n/g,C0e=/^\s*/,E0e=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,A0e=/^:\s*/,T0e=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,M0e=/^[;\s]*/,N0e=/^\s+|\s+$/g,j0e=`
|
|
4919
|
+
`,FO="/",UO="*",Zd="",R0e="comment",I0e="declaration";function P0e(t,e){if(typeof t!="string")throw new TypeError("First argument must be a string");if(!t)return[];e=e||{};var n=1,r=1;function s(x){var y=x.match(k0e);y&&(n+=y.length);var m=x.lastIndexOf(j0e);r=~m?x.length-m:r+x.length}function a(){var x={line:n,column:r};return function(y){return y.position=new o(x),d(),y}}function o(x){this.start=x,this.end={line:n,column:r},this.source=e.source}o.prototype.content=t;function l(x){var y=new Error(e.source+":"+n+":"+r+": "+x);if(y.reason=x,y.filename=e.source,y.line=n,y.column=r,y.source=t,!e.silent)throw y}function c(x){var y=x.exec(t);if(y){var m=y[0];return s(m),t=t.slice(m.length),y}}function d(){c(C0e)}function u(x){var y;for(x=x||[];y=h();)y!==!1&&x.push(y);return x}function h(){var x=a();if(!(FO!=t.charAt(0)||UO!=t.charAt(1))){for(var y=2;Zd!=t.charAt(y)&&(UO!=t.charAt(y)||FO!=t.charAt(y+1));)++y;if(y+=2,Zd===t.charAt(y-1))return l("End of comment missing");var m=t.slice(2,y-2);return r+=2,s(m),t=t.slice(y),r+=2,x({type:R0e,comment:m})}}function f(){var x=a(),y=c(E0e);if(y){if(h(),!c(A0e))return l("property missing ':'");var m=c(T0e),g=x({type:I0e,property:zO(y[0].replace(BO,Zd)),value:m?zO(m[0].replace(BO,Zd)):Zd});return c(M0e),g}}function p(){var x=[];u(x);for(var y;y=f();)y!==!1&&(x.push(y),u(x));return x}return d(),p()}function zO(t){return t?t.replace(N0e,Zd):Zd}var L0e=P0e,D0e=Tg&&Tg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QN,"__esModule",{value:!0});QN.default=B0e;const O0e=D0e(L0e);function B0e(t,e){let n=null;if(!t||typeof t!="string")return n;const r=(0,O0e.default)(t),s=typeof e=="function";return r.forEach(a=>{if(a.type!=="declaration")return;const{property:o,value:l}=a;s?e(o,l,a):l&&(n=n||{},n[o]=l)}),n}var MS={};Object.defineProperty(MS,"__esModule",{value:!0});MS.camelCase=void 0;var F0e=/^--[a-zA-Z0-9_-]+$/,U0e=/-([a-z])/g,z0e=/^[^-]+$/,H0e=/^-(webkit|moz|ms|o|khtml)-/,G0e=/^-(ms)-/,W0e=function(t){return!t||z0e.test(t)||F0e.test(t)},V0e=function(t,e){return e.toUpperCase()},HO=function(t,e){return"".concat(e,"-")},$0e=function(t,e){return e===void 0&&(e={}),W0e(t)?t:(t=t.toLowerCase(),e.reactCompat?t=t.replace(G0e,HO):t=t.replace(H0e,HO),t.replace(U0e,V0e))};MS.camelCase=$0e;var K0e=Tg&&Tg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},q0e=K0e(QN),X0e=MS;function IT(t,e){var n={};return!t||typeof t!="string"||(0,q0e.default)(t,function(r,s){r&&s&&(n[(0,X0e.camelCase)(r,e)]=s)}),n}IT.default=IT;var Y0e=IT;const J0e=lp(Y0e),uG=hG("end"),ej=hG("start");function hG(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Z0e(t){const e=ej(t),n=uG(t);if(e&&n)return{start:e,end:n}}function kg(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?GO(t.position):"start"in t||"end"in t?GO(t):"line"in t||"column"in t?PT(t):""}function PT(t){return WO(t&&t.line)+":"+WO(t&&t.column)}function GO(t){return PT(t&&t.start)+"-"+PT(t&&t.end)}function WO(t){return t&&typeof t=="number"?t:1}class ri extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",a={},o=!1;if(n&&("line"in n&&"column"in n?a={place:n}:"start"in n&&"end"in n?a={place:n}:"type"in n?a={ancestors:[n],place:n.position}:a={...n}),typeof e=="string"?s=e:!a.cause&&e&&(o=!0,s=e.message,a.cause=e),!a.ruleId&&!a.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?a.ruleId=r:(a.source=r.slice(0,c),a.ruleId=r.slice(c+1))}if(!a.place&&a.ancestors&&a.ancestors){const c=a.ancestors[a.ancestors.length-1];c&&(a.place=c.position)}const l=a.place&&"start"in a.place?a.place.start:a.place;this.ancestors=a.ancestors||void 0,this.cause=a.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=kg(a.place)||"1:1",this.place=a.place||void 0,this.reason=this.message,this.ruleId=a.ruleId||void 0,this.source=a.source||void 0,this.stack=o&&a.cause&&typeof a.cause.stack=="string"?a.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}ri.prototype.file="";ri.prototype.name="";ri.prototype.reason="";ri.prototype.message="";ri.prototype.stack="";ri.prototype.column=void 0;ri.prototype.line=void 0;ri.prototype.ancestors=void 0;ri.prototype.cause=void 0;ri.prototype.fatal=void 0;ri.prototype.place=void 0;ri.prototype.ruleId=void 0;ri.prototype.source=void 0;const tj={}.hasOwnProperty,Q0e=new Map,eye=/[A-Z]/g,tye=new Set(["table","tbody","thead","tfoot","tr"]),nye=new Set(["td","th"]),fG="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function rye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=uye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=dye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?ZN:S0e,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},a=pG(s,t,void 0);return a&&typeof a!="string"?a:s.create(t,s.Fragment,{children:a||void 0},void 0)}function pG(t,e,n){if(e.type==="element")return sye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return iye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return oye(t,e,n);if(e.type==="mdxjsEsm")return aye(t,e);if(e.type==="root")return lye(t,e,n);if(e.type==="text")return cye(t,e)}function sye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=ZN,t.schema=s),t.ancestors.push(e);const a=gG(t,e.tagName,!1),o=hye(t,e);let l=rj(t,e);return tye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!h0e(c):!0})),mG(t,o,a,e),nj(o,l),t.ancestors.pop(),t.schema=r,t.create(e,a,o,n)}function iye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}xx(t,e.position)}function aye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);xx(t,e.position)}function oye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=ZN,t.schema=s),t.ancestors.push(e);const a=e.name===null?t.Fragment:gG(t,e.name,!0),o=fye(t,e),l=rj(t,e);return mG(t,o,a,e),nj(o,l),t.ancestors.pop(),t.schema=r,t.create(e,a,o,n)}function lye(t,e,n){const r={};return nj(r,rj(t,e)),t.create(e,t.Fragment,r,n)}function cye(t,e){return e.value}function mG(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function nj(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function dye(t,e,n){return r;function r(s,a,o,l){const d=Array.isArray(o.children)?n:e;return l?d(a,o,l):d(a,o)}}function uye(t,e){return n;function n(r,s,a,o){const l=Array.isArray(a.children),c=ej(r);return e(s,a,o,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function hye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&tj.call(e.properties,s)){const a=pye(t,s,e.properties[s]);if(a){const[o,l]=a;t.tableCellAlignToStyle&&o==="align"&&typeof l=="string"&&nye.has(e.tagName)?r=l:n[o]=l}}if(r){const a=n.style||(n.style={});a[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function fye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const a=r.data.estree.body[0];a.type;const o=a.expression;o.type;const l=o.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else xx(t,e.position);else{const s=r.name;let a;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,a=t.evaluater.evaluateExpression(l.expression)}else xx(t,e.position);else a=r.value===null?!0:r.value;n[s]=a}return n}function rj(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:Q0e;for(;++r<e.children.length;){const a=e.children[r];let o;if(t.passKeys){const c=a.type==="element"?a.tagName:a.type==="mdxJsxFlowElement"||a.type==="mdxJsxTextElement"?a.name:void 0;if(c){const d=s.get(c)||0;o=c+"-"+d,s.set(c,d+1)}}const l=pG(t,a,o);l!==void 0&&n.push(l)}return n}function pye(t,e,n){const r=v0e(t.schema,e);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?o0e(n):w0e(n)),r.property==="style"){let s=typeof n=="object"?n:mye(t,String(n));return t.stylePropertyNameCase==="css"&&(s=gye(s)),["style",s]}return[t.elementAttributeNameCase==="react"&&r.space?g0e[r.property]||r.property:r.attribute,n]}}function mye(t,e){try{return J0e(e,{reactCompat:!0})}catch(n){if(t.ignoreInvalidStyle)return{};const r=n,s=new ri("Cannot parse `style` attribute",{ancestors:t.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw s.file=t.filePath||void 0,s.url=fG+"#cannot-parse-style-attribute",s}}function gG(t,e,n){let r;if(!n)r={type:"Literal",value:e};else if(e.includes(".")){const s=e.split(".");let a=-1,o;for(;++a<s.length;){const l=PO(s[a])?{type:"Identifier",name:s[a]}:{type:"Literal",value:s[a]};o=o?{type:"MemberExpression",object:o,property:l,computed:!!(a&&l.type==="Literal"),optional:!1}:l}r=o}else r=PO(e)&&!/^[a-z]/.test(e)?{type:"Identifier",name:e}:{type:"Literal",value:e};if(r.type==="Literal"){const s=r.value;return tj.call(t.components,s)?t.components[s]:s}if(t.evaluater)return t.evaluater.evaluateExpression(r);xx(t)}function xx(t,e){const n=new ri("Cannot handle MDX estrees without `createEvaluater`",{ancestors:t.ancestors,place:e,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=t.filePath||void 0,n.url=fG+"#cannot-handle-mdx-estrees-without-createevaluater",n}function gye(t){const e={};let n;for(n in t)tj.call(t,n)&&(e[xye(n)]=t[n]);return e}function xye(t){let e=t.replace(eye,yye);return e.slice(0,3)==="ms-"&&(e="-"+e),e}function yye(t){return"-"+t.toLowerCase()}const qC={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},vye={};function sj(t,e){const n=e||vye,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,s=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return xG(t,r,s)}function xG(t,e,n){if(bye(t)){if("value"in t)return t.type==="html"&&!n?"":t.value;if(e&&"alt"in t&&t.alt)return t.alt;if("children"in t)return VO(t.children,e,n)}return Array.isArray(t)?VO(t,e,n):""}function VO(t,e,n){const r=[];let s=-1;for(;++s<t.length;)r[s]=xG(t[s],e,n);return r.join("")}function bye(t){return!!(t&&typeof t=="object")}const $O=document.createElement("i");function ij(t){const e="&"+t+";";$O.innerHTML=e;const n=$O.textContent;return n.charCodeAt(n.length-1)===59&&t!=="semi"||n===e?!1:n}function ua(t,e,n,r){const s=t.length;let a=0,o;if(e<0?e=-e>s?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(e,n),t.splice(...o);else for(n&&t.splice(e,n);a<r.length;)o=r.slice(a,a+1e4),o.unshift(e,0),t.splice(...o),a+=1e4,e+=1e4}function Da(t,e){return t.length>0?(ua(t,t.length,0,e),t):e}const KO={}.hasOwnProperty;function yG(t){const e={};let n=-1;for(;++n<t.length;)_ye(e,t[n]);return e}function _ye(t,e){let n;for(n in e){const s=(KO.call(t,n)?t[n]:void 0)||(t[n]={}),a=e[n];let o;if(a)for(o in a){KO.call(s,o)||(s[o]=[]);const l=a[o];Sye(s[o],Array.isArray(l)?l:l?[l]:[])}}}function Sye(t,e){let n=-1;const r=[];for(;++n<e.length;)(e[n].add==="after"?t:r).push(e[n]);ua(t,0,0,r)}function vG(t,e){const n=Number.parseInt(t,e);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function po(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const xi=fd(/[A-Za-z]/),Ys=fd(/[\dA-Za-z]/),wye=fd(/[#-'*+\--9=?A-Z^-~]/);function Z_(t){return t!==null&&(t<32||t===127)}const LT=fd(/\d/),kye=fd(/[\dA-Fa-f]/),Cye=fd(/[!-/:-@[-`{-~]/);function Kt(t){return t!==null&&t<-2}function ir(t){return t!==null&&(t<0||t===32)}function Cn(t){return t===-2||t===-1||t===32}const NS=fd(/\p{P}|\p{S}/u),Uu=fd(/\s/);function fd(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function jp(t){const e=[];let n=-1,r=0,s=0;for(;++n<t.length;){const a=t.charCodeAt(n);let o="";if(a===37&&Ys(t.charCodeAt(n+1))&&Ys(t.charCodeAt(n+2)))s=2;else if(a<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(a))||(o=String.fromCharCode(a));else if(a>55295&&a<57344){const l=t.charCodeAt(n+1);a<56320&&l>56319&&l<57344?(o=String.fromCharCode(a,l),s=1):o="�"}else o=String.fromCharCode(a);o&&(e.push(t.slice(r,n),encodeURIComponent(o)),r=n+s+1,o=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function Ln(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let a=0;return o;function o(c){return Cn(c)?(t.enter(n),l(c)):e(c)}function l(c){return Cn(c)&&a++<s?(t.consume(c),l):(t.exit(n),e(c))}}const Eye={tokenize:Aye};function Aye(t){const e=t.attempt(this.parser.constructs.contentInitial,r,s);let n;return e;function r(l){if(l===null){t.consume(l);return}return t.enter("lineEnding"),t.consume(l),t.exit("lineEnding"),Ln(t,e,"linePrefix")}function s(l){return t.enter("paragraph"),a(l)}function a(l){const c=t.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=c),n=c,o(l)}function o(l){if(l===null){t.exit("chunkText"),t.exit("paragraph"),t.consume(l);return}return Kt(l)?(t.consume(l),t.exit("chunkText"),a):(t.consume(l),o)}}const Tye={tokenize:Mye},qO={tokenize:Nye};function Mye(t){const e=this,n=[];let r=0,s,a,o;return l;function l(b){if(r<n.length){const S=n[r];return e.containerState=S[1],t.attempt(S[0].continuation,c,d)(b)}return d(b)}function c(b){if(r++,e.containerState._closeFlow){e.containerState._closeFlow=void 0,s&&v();const S=e.events.length;let C=S,E;for(;C--;)if(e.events[C][0]==="exit"&&e.events[C][1].type==="chunkFlow"){E=e.events[C][1].end;break}g(r);let N=S;for(;N<e.events.length;)e.events[N][1].end={...E},N++;return ua(e.events,C+1,0,e.events.slice(S)),e.events.length=N,d(b)}return l(b)}function d(b){if(r===n.length){if(!s)return f(b);if(s.currentConstruct&&s.currentConstruct.concrete)return x(b);e.interrupt=!!(s.currentConstruct&&!s._gfmTableDynamicInterruptHack)}return e.containerState={},t.check(qO,u,h)(b)}function u(b){return s&&v(),g(r),f(b)}function h(b){return e.parser.lazy[e.now().line]=r!==n.length,o=e.now().offset,x(b)}function f(b){return e.containerState={},t.attempt(qO,p,x)(b)}function p(b){return r++,n.push([e.currentConstruct,e.containerState]),f(b)}function x(b){if(b===null){s&&v(),g(0),t.consume(b);return}return s=s||e.parser.flow(e.now()),t.enter("chunkFlow",{_tokenizer:s,contentType:"flow",previous:a}),y(b)}function y(b){if(b===null){m(t.exit("chunkFlow"),!0),g(0),t.consume(b);return}return Kt(b)?(t.consume(b),m(t.exit("chunkFlow")),r=0,e.interrupt=void 0,l):(t.consume(b),y)}function m(b,S){const C=e.sliceStream(b);if(S&&C.push(null),b.previous=a,a&&(a.next=b),a=b,s.defineSkip(b.start),s.write(C),e.parser.lazy[b.start.line]){let E=s.events.length;for(;E--;)if(s.events[E][1].start.offset<o&&(!s.events[E][1].end||s.events[E][1].end.offset>o))return;const N=e.events.length;let T=N,A,M;for(;T--;)if(e.events[T][0]==="exit"&&e.events[T][1].type==="chunkFlow"){if(A){M=e.events[T][1].end;break}A=!0}for(g(r),E=N;E<e.events.length;)e.events[E][1].end={...M},E++;ua(e.events,T+1,0,e.events.slice(N)),e.events.length=E}}function g(b){let S=n.length;for(;S-- >b;){const C=n[S];e.containerState=C[1],C[0].exit.call(e,t)}n.length=b}function v(){s.write([null]),a=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Nye(t,e,n){return Ln(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ap(t){if(t===null||ir(t)||Uu(t))return 1;if(NS(t))return 2}function jS(t,e,n){const r=[];let s=-1;for(;++s<t.length;){const a=t[s].resolveAll;a&&!r.includes(a)&&(e=a(e,n),r.push(a))}return e}const DT={name:"attention",resolveAll:jye,tokenize:Rye};function jye(t,e){let n=-1,r,s,a,o,l,c,d,u;for(;++n<t.length;)if(t[n][0]==="enter"&&t[n][1].type==="attentionSequence"&&t[n][1]._close){for(r=n;r--;)if(t[r][0]==="exit"&&t[r][1].type==="attentionSequence"&&t[r][1]._open&&e.sliceSerialize(t[r][1]).charCodeAt(0)===e.sliceSerialize(t[n][1]).charCodeAt(0)){if((t[r][1]._close||t[n][1]._open)&&(t[n][1].end.offset-t[n][1].start.offset)%3&&!((t[r][1].end.offset-t[r][1].start.offset+t[n][1].end.offset-t[n][1].start.offset)%3))continue;c=t[r][1].end.offset-t[r][1].start.offset>1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const h={...t[r][1].end},f={...t[n][1].start};XO(h,-c),XO(f,c),o={type:c>1?"strongSequence":"emphasisSequence",start:h,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:f},a={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...o.start},end:{...l.end}},t[r][1].end={...o.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=Da(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=Da(d,[["enter",s,e],["enter",o,e],["exit",o,e],["enter",a,e]]),d=Da(d,jS(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=Da(d,[["exit",a,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(u=2,d=Da(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):u=0,ua(t,r-1,n-r+3,d),n=r+d.length-u-2;break}}for(n=-1;++n<t.length;)t[n][1].type==="attentionSequence"&&(t[n][1].type="data");return t}function Rye(t,e){const n=this.parser.constructs.attentionMarkers.null,r=this.previous,s=ap(r);let a;return o;function o(c){return a=c,t.enter("attentionSequence"),l(c)}function l(c){if(c===a)return t.consume(c),l;const d=t.exit("attentionSequence"),u=ap(c),h=!u||u===2&&s||n.includes(c),f=!s||s===2&&u||n.includes(r);return d._open=!!(a===42?h:h&&(s||!f)),d._close=!!(a===42?f:f&&(u||!h)),e(c)}}function XO(t,e){t.column+=e,t.offset+=e,t._bufferIndex+=e}const Iye={name:"autolink",tokenize:Pye};function Pye(t,e,n){let r=0;return s;function s(p){return t.enter("autolink"),t.enter("autolinkMarker"),t.consume(p),t.exit("autolinkMarker"),t.enter("autolinkProtocol"),a}function a(p){return xi(p)?(t.consume(p),o):p===64?n(p):d(p)}function o(p){return p===43||p===45||p===46||Ys(p)?(r=1,l(p)):d(p)}function l(p){return p===58?(t.consume(p),r=0,c):(p===43||p===45||p===46||Ys(p))&&r++<32?(t.consume(p),l):(r=0,d(p))}function c(p){return p===62?(t.exit("autolinkProtocol"),t.enter("autolinkMarker"),t.consume(p),t.exit("autolinkMarker"),t.exit("autolink"),e):p===null||p===32||p===60||Z_(p)?n(p):(t.consume(p),c)}function d(p){return p===64?(t.consume(p),u):wye(p)?(t.consume(p),d):n(p)}function u(p){return Ys(p)?h(p):n(p)}function h(p){return p===46?(t.consume(p),r=0,u):p===62?(t.exit("autolinkProtocol").type="autolinkEmail",t.enter("autolinkMarker"),t.consume(p),t.exit("autolinkMarker"),t.exit("autolink"),e):f(p)}function f(p){if((p===45||Ys(p))&&r++<63){const x=p===45?f:h;return t.consume(p),x}return n(p)}}const Jx={partial:!0,tokenize:Lye};function Lye(t,e,n){return r;function r(a){return Cn(a)?Ln(t,s,"linePrefix")(a):s(a)}function s(a){return a===null||Kt(a)?e(a):n(a)}}const bG={continuation:{tokenize:Oye},exit:Bye,name:"blockQuote",tokenize:Dye};function Dye(t,e,n){const r=this;return s;function s(o){if(o===62){const l=r.containerState;return l.open||(t.enter("blockQuote",{_container:!0}),l.open=!0),t.enter("blockQuotePrefix"),t.enter("blockQuoteMarker"),t.consume(o),t.exit("blockQuoteMarker"),a}return n(o)}function a(o){return Cn(o)?(t.enter("blockQuotePrefixWhitespace"),t.consume(o),t.exit("blockQuotePrefixWhitespace"),t.exit("blockQuotePrefix"),e):(t.exit("blockQuotePrefix"),e(o))}}function Oye(t,e,n){const r=this;return s;function s(o){return Cn(o)?Ln(t,a,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):a(o)}function a(o){return t.attempt(bG,e,n)(o)}}function Bye(t){t.exit("blockQuote")}const _G={name:"characterEscape",tokenize:Fye};function Fye(t,e,n){return r;function r(a){return t.enter("characterEscape"),t.enter("escapeMarker"),t.consume(a),t.exit("escapeMarker"),s}function s(a){return Cye(a)?(t.enter("characterEscapeValue"),t.consume(a),t.exit("characterEscapeValue"),t.exit("characterEscape"),e):n(a)}}const SG={name:"characterReference",tokenize:Uye};function Uye(t,e,n){const r=this;let s=0,a,o;return l;function l(h){return t.enter("characterReference"),t.enter("characterReferenceMarker"),t.consume(h),t.exit("characterReferenceMarker"),c}function c(h){return h===35?(t.enter("characterReferenceMarkerNumeric"),t.consume(h),t.exit("characterReferenceMarkerNumeric"),d):(t.enter("characterReferenceValue"),a=31,o=Ys,u(h))}function d(h){return h===88||h===120?(t.enter("characterReferenceMarkerHexadecimal"),t.consume(h),t.exit("characterReferenceMarkerHexadecimal"),t.enter("characterReferenceValue"),a=6,o=kye,u):(t.enter("characterReferenceValue"),a=7,o=LT,u(h))}function u(h){if(h===59&&s){const f=t.exit("characterReferenceValue");return o===Ys&&!ij(r.sliceSerialize(f))?n(h):(t.enter("characterReferenceMarker"),t.consume(h),t.exit("characterReferenceMarker"),t.exit("characterReference"),e)}return o(h)&&s++<a?(t.consume(h),u):n(h)}}const YO={partial:!0,tokenize:Hye},JO={concrete:!0,name:"codeFenced",tokenize:zye};function zye(t,e,n){const r=this,s={partial:!0,tokenize:C};let a=0,o=0,l;return c;function c(E){return d(E)}function d(E){const N=r.events[r.events.length-1];return a=N&&N[1].type==="linePrefix"?N[2].sliceSerialize(N[1],!0).length:0,l=E,t.enter("codeFenced"),t.enter("codeFencedFence"),t.enter("codeFencedFenceSequence"),u(E)}function u(E){return E===l?(o++,t.consume(E),u):o<3?n(E):(t.exit("codeFencedFenceSequence"),Cn(E)?Ln(t,h,"whitespace")(E):h(E))}function h(E){return E===null||Kt(E)?(t.exit("codeFencedFence"),r.interrupt?e(E):t.check(YO,y,S)(E)):(t.enter("codeFencedFenceInfo"),t.enter("chunkString",{contentType:"string"}),f(E))}function f(E){return E===null||Kt(E)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),h(E)):Cn(E)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),Ln(t,p,"whitespace")(E)):E===96&&E===l?n(E):(t.consume(E),f)}function p(E){return E===null||Kt(E)?h(E):(t.enter("codeFencedFenceMeta"),t.enter("chunkString",{contentType:"string"}),x(E))}function x(E){return E===null||Kt(E)?(t.exit("chunkString"),t.exit("codeFencedFenceMeta"),h(E)):E===96&&E===l?n(E):(t.consume(E),x)}function y(E){return t.attempt(s,S,m)(E)}function m(E){return t.enter("lineEnding"),t.consume(E),t.exit("lineEnding"),g}function g(E){return a>0&&Cn(E)?Ln(t,v,"linePrefix",a+1)(E):v(E)}function v(E){return E===null||Kt(E)?t.check(YO,y,S)(E):(t.enter("codeFlowValue"),b(E))}function b(E){return E===null||Kt(E)?(t.exit("codeFlowValue"),v(E)):(t.consume(E),b)}function S(E){return t.exit("codeFenced"),e(E)}function C(E,N,T){let A=0;return M;function M(K){return E.enter("lineEnding"),E.consume(K),E.exit("lineEnding"),P}function P(K){return E.enter("codeFencedFence"),Cn(K)?Ln(E,I,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(K):I(K)}function I(K){return K===l?(E.enter("codeFencedFenceSequence"),B(K)):T(K)}function B(K){return K===l?(A++,E.consume(K),B):A>=o?(E.exit("codeFencedFenceSequence"),Cn(K)?Ln(E,V,"whitespace")(K):V(K)):T(K)}function V(K){return K===null||Kt(K)?(E.exit("codeFencedFence"),N(K)):T(K)}}}function Hye(t,e,n){const r=this;return s;function s(o){return o===null?n(o):(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),a)}function a(o){return r.parser.lazy[r.now().line]?n(o):e(o)}}const XC={name:"codeIndented",tokenize:Wye},Gye={partial:!0,tokenize:Vye};function Wye(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),Ln(t,a,"linePrefix",4+1)(d)}function a(d){const u=r.events[r.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?o(d):n(d)}function o(d){return d===null?c(d):Kt(d)?t.attempt(Gye,o,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||Kt(d)?(t.exit("codeFlowValue"),o(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function Vye(t,e,n){const r=this;return s;function s(o){return r.parser.lazy[r.now().line]?n(o):Kt(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),s):Ln(t,a,"linePrefix",4+1)(o)}function a(o){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(o):Kt(o)?s(o):n(o)}}const $ye={name:"codeText",previous:qye,resolve:Kye,tokenize:Xye};function Kye(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r<e;)if(t[r][1].type==="codeTextData"){t[n][1].type="codeTextPadding",t[e][1].type="codeTextPadding",n+=2,e-=2;break}}for(r=n-1,e++;++r<=e;)s===void 0?r!==e&&t[r][1].type!=="lineEnding"&&(s=r):(r===e||t[r][1].type==="lineEnding")&&(t[s][1].type="codeTextData",r!==s+2&&(t[s][1].end=t[r-1][1].end,t.splice(s+2,r-s-2),e-=r-s-2,r=s+2),s=void 0);return t}function qye(t){return t!==96||this.events[this.events.length-1][1].type==="characterEscape"}function Xye(t,e,n){let r=0,s,a;return o;function o(h){return t.enter("codeText"),t.enter("codeTextSequence"),l(h)}function l(h){return h===96?(t.consume(h),r++,l):(t.exit("codeTextSequence"),c(h))}function c(h){return h===null?n(h):h===32?(t.enter("space"),t.consume(h),t.exit("space"),c):h===96?(a=t.enter("codeTextSequence"),s=0,u(h)):Kt(h)?(t.enter("lineEnding"),t.consume(h),t.exit("lineEnding"),c):(t.enter("codeTextData"),d(h))}function d(h){return h===null||h===32||h===96||Kt(h)?(t.exit("codeTextData"),c(h)):(t.consume(h),d)}function u(h){return h===96?(t.consume(h),s++,u):s===r?(t.exit("codeTextSequence"),t.exit("codeText"),e(h)):(a.type="codeTextData",d(h))}}class Yye{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return e<this.left.length?this.left[e]:this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,n){const r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(e,r):e>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const a=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Pm(this.left,r),a.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Pm(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Pm(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e<this.left.length){const n=this.left.splice(e,Number.POSITIVE_INFINITY);Pm(this.right,n.reverse())}else{const n=this.right.splice(this.left.length+this.right.length-e,Number.POSITIVE_INFINITY);Pm(this.left,n.reverse())}}}function Pm(t,e){let n=0;if(e.length<1e4)t.push(...e);else for(;n<e.length;)t.push(...e.slice(n,n+1e4)),n+=1e4}function wG(t){const e={};let n=-1,r,s,a,o,l,c,d;const u=new Yye(t);for(;++n<u.length;){for(;n in e;)n=e[n];if(r=u.get(n),n&&r[1].type==="chunkFlow"&&u.get(n-1)[1].type==="listItemPrefix"&&(c=r[1]._tokenizer.events,a=0,a<c.length&&c[a][1].type==="lineEndingBlank"&&(a+=2),a<c.length&&c[a][1].type==="content"))for(;++a<c.length&&c[a][1].type!=="content";)c[a][1].type==="chunkText"&&(c[a][1]._isInFirstContentOfListItem=!0,a++);if(r[0]==="enter")r[1].contentType&&(Object.assign(e,Jye(u,n)),n=e[n],d=!0);else if(r[1]._container){for(a=n,s=void 0;a--;)if(o=u.get(a),o[1].type==="lineEnding"||o[1].type==="lineEndingBlank")o[0]==="enter"&&(s&&(u.get(s)[1].type="lineEndingBlank"),o[1].type="lineEnding",s=a);else if(!(o[1].type==="linePrefix"||o[1].type==="listItemIndent"))break;s&&(r[1].end={...u.get(s)[1].start},l=u.slice(s,n),l.unshift(r),u.splice(s,n-s+1,l))}}return ua(t,0,Number.POSITIVE_INFINITY,u.slice(0)),!d}function Jye(t,e){const n=t.get(e)[1],r=t.get(e)[2];let s=e-1;const a=[];let o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));const l=o.events,c=[],d={};let u,h,f=-1,p=n,x=0,y=0;const m=[y];for(;p;){for(;t.get(++s)[1]!==p;);a.push(s),p._tokenizer||(u=r.sliceStream(p),p.next||u.push(null),h&&o.defineSkip(p.start),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(u),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),h=p,p=p.next}for(p=n;++f<l.length;)l[f][0]==="exit"&&l[f-1][0]==="enter"&&l[f][1].type===l[f-1][1].type&&l[f][1].start.line!==l[f][1].end.line&&(y=f+1,m.push(y),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(o.events=[],p?(p._tokenizer=void 0,p.previous=void 0):m.pop(),f=m.length;f--;){const g=l.slice(m[f],m[f+1]),v=a.pop();c.push([v,v+g.length-1]),t.splice(v,2,g)}for(c.reverse(),f=-1;++f<c.length;)d[x+c[f][0]]=x+c[f][1],x+=c[f][1]-c[f][0]-1;return d}const Zye={resolve:eve,tokenize:tve},Qye={partial:!0,tokenize:nve};function eve(t){return wG(t),t}function tve(t,e){let n;return r;function r(l){return t.enter("content"),n=t.enter("chunkContent",{contentType:"content"}),s(l)}function s(l){return l===null?a(l):Kt(l)?t.check(Qye,o,a)(l):(t.consume(l),s)}function a(l){return t.exit("chunkContent"),t.exit("content"),e(l)}function o(l){return t.consume(l),t.exit("chunkContent"),n.next=t.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,s}}function nve(t,e,n){const r=this;return s;function s(o){return t.exit("chunkContent"),t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),Ln(t,a,"linePrefix")}function a(o){if(o===null||Kt(o))return n(o);const l=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(o):t.interrupt(r.parser.constructs.flow,n,e)(o)}}function kG(t,e,n,r,s,a,o,l,c){const d=c||Number.POSITIVE_INFINITY;let u=0;return h;function h(g){return g===60?(t.enter(r),t.enter(s),t.enter(a),t.consume(g),t.exit(a),f):g===null||g===32||g===41||Z_(g)?n(g):(t.enter(r),t.enter(o),t.enter(l),t.enter("chunkString",{contentType:"string"}),y(g))}function f(g){return g===62?(t.enter(a),t.consume(g),t.exit(a),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),p(g))}function p(g){return g===62?(t.exit("chunkString"),t.exit(l),f(g)):g===null||g===60||Kt(g)?n(g):(t.consume(g),g===92?x:p)}function x(g){return g===60||g===62||g===92?(t.consume(g),p):p(g)}function y(g){return!u&&(g===null||g===41||ir(g))?(t.exit("chunkString"),t.exit(l),t.exit(o),t.exit(r),e(g)):u<d&&g===40?(t.consume(g),u++,y):g===41?(t.consume(g),u--,y):g===null||g===32||g===40||Z_(g)?n(g):(t.consume(g),g===92?m:y)}function m(g){return g===40||g===41||g===92?(t.consume(g),y):y(g)}}function CG(t,e,n,r,s,a){const o=this;let l=0,c;return d;function d(p){return t.enter(r),t.enter(s),t.consume(p),t.exit(s),t.enter(a),u}function u(p){return l>999||p===null||p===91||p===93&&!c||p===94&&!l&&"_hiddenFootnoteSupport"in o.parser.constructs?n(p):p===93?(t.exit(a),t.enter(s),t.consume(p),t.exit(s),t.exit(r),e):Kt(p)?(t.enter("lineEnding"),t.consume(p),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),h(p))}function h(p){return p===null||p===91||p===93||Kt(p)||l++>999?(t.exit("chunkString"),u(p)):(t.consume(p),c||(c=!Cn(p)),p===92?f:h)}function f(p){return p===91||p===92||p===93?(t.consume(p),l++,h):h(p)}}function EG(t,e,n,r,s,a){let o;return l;function l(f){return f===34||f===39||f===40?(t.enter(r),t.enter(s),t.consume(f),t.exit(s),o=f===40?41:f,c):n(f)}function c(f){return f===o?(t.enter(s),t.consume(f),t.exit(s),t.exit(r),e):(t.enter(a),d(f))}function d(f){return f===o?(t.exit(a),c(o)):f===null?n(f):Kt(f)?(t.enter("lineEnding"),t.consume(f),t.exit("lineEnding"),Ln(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(f))}function u(f){return f===o||f===null||Kt(f)?(t.exit("chunkString"),d(f)):(t.consume(f),f===92?h:u)}function h(f){return f===o||f===92?(t.consume(f),u):u(f)}}function Cg(t,e){let n;return r;function r(s){return Kt(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):Cn(s)?Ln(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const rve={name:"definition",tokenize:ive},sve={partial:!0,tokenize:ave};function ive(t,e,n){const r=this;let s;return a;function a(p){return t.enter("definition"),o(p)}function o(p){return CG.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function l(p){return s=po(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),p===58?(t.enter("definitionMarker"),t.consume(p),t.exit("definitionMarker"),c):n(p)}function c(p){return ir(p)?Cg(t,d)(p):d(p)}function d(p){return kG(t,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function u(p){return t.attempt(sve,h,h)(p)}function h(p){return Cn(p)?Ln(t,f,"whitespace")(p):f(p)}function f(p){return p===null||Kt(p)?(t.exit("definition"),r.parser.defined.push(s),e(p)):n(p)}}function ave(t,e,n){return r;function r(l){return ir(l)?Cg(t,s)(l):n(l)}function s(l){return EG(t,a,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function a(l){return Cn(l)?Ln(t,o,"whitespace")(l):o(l)}function o(l){return l===null||Kt(l)?e(l):n(l)}}const ove={name:"hardBreakEscape",tokenize:lve};function lve(t,e,n){return r;function r(a){return t.enter("hardBreakEscape"),t.consume(a),s}function s(a){return Kt(a)?(t.exit("hardBreakEscape"),e(a)):n(a)}}const cve={name:"headingAtx",resolve:dve,tokenize:uve};function dve(t,e){let n=t.length-2,r=3,s,a;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},a={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},ua(t,r,n-r+1,[["enter",s,e],["enter",a,e],["exit",a,e],["exit",s,e]])),t}function uve(t,e,n){let r=0;return s;function s(u){return t.enter("atxHeading"),a(u)}function a(u){return t.enter("atxHeadingSequence"),o(u)}function o(u){return u===35&&r++<6?(t.consume(u),o):u===null||ir(u)?(t.exit("atxHeadingSequence"),l(u)):n(u)}function l(u){return u===35?(t.enter("atxHeadingSequence"),c(u)):u===null||Kt(u)?(t.exit("atxHeading"),e(u)):Cn(u)?Ln(t,l,"whitespace")(u):(t.enter("atxHeadingText"),d(u))}function c(u){return u===35?(t.consume(u),c):(t.exit("atxHeadingSequence"),l(u))}function d(u){return u===null||u===35||ir(u)?(t.exit("atxHeadingText"),l(u)):(t.consume(u),d)}}const hve=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ZO=["pre","script","style","textarea"],fve={concrete:!0,name:"htmlFlow",resolveTo:gve,tokenize:xve},pve={partial:!0,tokenize:vve},mve={partial:!0,tokenize:yve};function gve(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function xve(t,e,n){const r=this;let s,a,o,l,c;return d;function d(F){return u(F)}function u(F){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(F),h}function h(F){return F===33?(t.consume(F),f):F===47?(t.consume(F),a=!0,y):F===63?(t.consume(F),s=3,r.interrupt?e:R):xi(F)?(t.consume(F),o=String.fromCharCode(F),m):n(F)}function f(F){return F===45?(t.consume(F),s=2,p):F===91?(t.consume(F),s=5,l=0,x):xi(F)?(t.consume(F),s=4,r.interrupt?e:R):n(F)}function p(F){return F===45?(t.consume(F),r.interrupt?e:R):n(F)}function x(F){const J="CDATA[";return F===J.charCodeAt(l++)?(t.consume(F),l===J.length?r.interrupt?e:I:x):n(F)}function y(F){return xi(F)?(t.consume(F),o=String.fromCharCode(F),m):n(F)}function m(F){if(F===null||F===47||F===62||ir(F)){const J=F===47,q=o.toLowerCase();return!J&&!a&&ZO.includes(q)?(s=1,r.interrupt?e(F):I(F)):hve.includes(o.toLowerCase())?(s=6,J?(t.consume(F),g):r.interrupt?e(F):I(F)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(F):a?v(F):b(F))}return F===45||Ys(F)?(t.consume(F),o+=String.fromCharCode(F),m):n(F)}function g(F){return F===62?(t.consume(F),r.interrupt?e:I):n(F)}function v(F){return Cn(F)?(t.consume(F),v):M(F)}function b(F){return F===47?(t.consume(F),M):F===58||F===95||xi(F)?(t.consume(F),S):Cn(F)?(t.consume(F),b):M(F)}function S(F){return F===45||F===46||F===58||F===95||Ys(F)?(t.consume(F),S):C(F)}function C(F){return F===61?(t.consume(F),E):Cn(F)?(t.consume(F),C):b(F)}function E(F){return F===null||F===60||F===61||F===62||F===96?n(F):F===34||F===39?(t.consume(F),c=F,N):Cn(F)?(t.consume(F),E):T(F)}function N(F){return F===c?(t.consume(F),c=null,A):F===null||Kt(F)?n(F):(t.consume(F),N)}function T(F){return F===null||F===34||F===39||F===47||F===60||F===61||F===62||F===96||ir(F)?C(F):(t.consume(F),T)}function A(F){return F===47||F===62||Cn(F)?b(F):n(F)}function M(F){return F===62?(t.consume(F),P):n(F)}function P(F){return F===null||Kt(F)?I(F):Cn(F)?(t.consume(F),P):n(F)}function I(F){return F===45&&s===2?(t.consume(F),H):F===60&&s===1?(t.consume(F),$):F===62&&s===4?(t.consume(F),D):F===63&&s===3?(t.consume(F),R):F===93&&s===5?(t.consume(F),U):Kt(F)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(pve,G,B)(F)):F===null||Kt(F)?(t.exit("htmlFlowData"),B(F)):(t.consume(F),I)}function B(F){return t.check(mve,V,G)(F)}function V(F){return t.enter("lineEnding"),t.consume(F),t.exit("lineEnding"),K}function K(F){return F===null||Kt(F)?B(F):(t.enter("htmlFlowData"),I(F))}function H(F){return F===45?(t.consume(F),R):I(F)}function $(F){return F===47?(t.consume(F),o="",L):I(F)}function L(F){if(F===62){const J=o.toLowerCase();return ZO.includes(J)?(t.consume(F),D):I(F)}return xi(F)&&o.length<8?(t.consume(F),o+=String.fromCharCode(F),L):I(F)}function U(F){return F===93?(t.consume(F),R):I(F)}function R(F){return F===62?(t.consume(F),D):F===45&&s===2?(t.consume(F),R):I(F)}function D(F){return F===null||Kt(F)?(t.exit("htmlFlowData"),G(F)):(t.consume(F),D)}function G(F){return t.exit("htmlFlow"),e(F)}}function yve(t,e,n){const r=this;return s;function s(o){return Kt(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),a):n(o)}function a(o){return r.parser.lazy[r.now().line]?n(o):e(o)}}function vve(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(Jx,e,n)}}const bve={name:"htmlText",tokenize:_ve};function _ve(t,e,n){const r=this;let s,a,o;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),C):R===63?(t.consume(R),b):xi(R)?(t.consume(R),T):n(R)}function d(R){return R===45?(t.consume(R),u):R===91?(t.consume(R),a=0,x):xi(R)?(t.consume(R),v):n(R)}function u(R){return R===45?(t.consume(R),p):n(R)}function h(R){return R===null?n(R):R===45?(t.consume(R),f):Kt(R)?(o=h,$(R)):(t.consume(R),h)}function f(R){return R===45?(t.consume(R),p):h(R)}function p(R){return R===62?H(R):R===45?f(R):h(R)}function x(R){const D="CDATA[";return R===D.charCodeAt(a++)?(t.consume(R),a===D.length?y:x):n(R)}function y(R){return R===null?n(R):R===93?(t.consume(R),m):Kt(R)?(o=y,$(R)):(t.consume(R),y)}function m(R){return R===93?(t.consume(R),g):y(R)}function g(R){return R===62?H(R):R===93?(t.consume(R),g):y(R)}function v(R){return R===null||R===62?H(R):Kt(R)?(o=v,$(R)):(t.consume(R),v)}function b(R){return R===null?n(R):R===63?(t.consume(R),S):Kt(R)?(o=b,$(R)):(t.consume(R),b)}function S(R){return R===62?H(R):b(R)}function C(R){return xi(R)?(t.consume(R),E):n(R)}function E(R){return R===45||Ys(R)?(t.consume(R),E):N(R)}function N(R){return Kt(R)?(o=N,$(R)):Cn(R)?(t.consume(R),N):H(R)}function T(R){return R===45||Ys(R)?(t.consume(R),T):R===47||R===62||ir(R)?A(R):n(R)}function A(R){return R===47?(t.consume(R),H):R===58||R===95||xi(R)?(t.consume(R),M):Kt(R)?(o=A,$(R)):Cn(R)?(t.consume(R),A):H(R)}function M(R){return R===45||R===46||R===58||R===95||Ys(R)?(t.consume(R),M):P(R)}function P(R){return R===61?(t.consume(R),I):Kt(R)?(o=P,$(R)):Cn(R)?(t.consume(R),P):A(R)}function I(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,B):Kt(R)?(o=I,$(R)):Cn(R)?(t.consume(R),I):(t.consume(R),V)}function B(R){return R===s?(t.consume(R),s=void 0,K):R===null?n(R):Kt(R)?(o=B,$(R)):(t.consume(R),B)}function V(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||ir(R)?A(R):(t.consume(R),V)}function K(R){return R===47||R===62||ir(R)?A(R):n(R)}function H(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function $(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),L}function L(R){return Cn(R)?Ln(t,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):U(R)}function U(R){return t.enter("htmlTextData"),o(R)}}const aj={name:"labelEnd",resolveAll:Cve,resolveTo:Eve,tokenize:Ave},Sve={tokenize:Tve},wve={tokenize:Mve},kve={tokenize:Nve};function Cve(t){let e=-1;const n=[];for(;++e<t.length;){const r=t[e][1];if(n.push(t[e]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){const s=r.type==="labelImage"?4:2;r.type="data",e+=s}}return t.length!==n.length&&ua(t,0,t.length,n),t}function Eve(t,e){let n=t.length,r=0,s,a,o,l;for(;n--;)if(s=t[n][1],a){if(s.type==="link"||s.type==="labelLink"&&s._inactive)break;t[n][0]==="enter"&&s.type==="labelLink"&&(s._inactive=!0)}else if(o){if(t[n][0]==="enter"&&(s.type==="labelImage"||s.type==="labelLink")&&!s._balanced&&(a=n,s.type!=="labelLink")){r=2;break}}else s.type==="labelEnd"&&(o=n);const c={type:t[a][1].type==="labelLink"?"link":"image",start:{...t[a][1].start},end:{...t[t.length-1][1].end}},d={type:"label",start:{...t[a][1].start},end:{...t[o][1].end}},u={type:"labelText",start:{...t[a+r+2][1].end},end:{...t[o-2][1].start}};return l=[["enter",c,e],["enter",d,e]],l=Da(l,t.slice(a+1,a+r+3)),l=Da(l,[["enter",u,e]]),l=Da(l,jS(e.parser.constructs.insideSpan.null,t.slice(a+r+4,o-3),e)),l=Da(l,[["exit",u,e],t[o-2],t[o-1],["exit",d,e]]),l=Da(l,t.slice(o+1)),l=Da(l,[["exit",c,e]]),ua(t,a,t.length,l),t}function Ave(t,e,n){const r=this;let s=r.events.length,a,o;for(;s--;)if((r.events[s][1].type==="labelImage"||r.events[s][1].type==="labelLink")&&!r.events[s][1]._balanced){a=r.events[s][1];break}return l;function l(f){return a?a._inactive?h(f):(o=r.parser.defined.includes(po(r.sliceSerialize({start:a.end,end:r.now()}))),t.enter("labelEnd"),t.enter("labelMarker"),t.consume(f),t.exit("labelMarker"),t.exit("labelEnd"),c):n(f)}function c(f){return f===40?t.attempt(Sve,u,o?u:h)(f):f===91?t.attempt(wve,u,o?d:h)(f):o?u(f):h(f)}function d(f){return t.attempt(kve,u,h)(f)}function u(f){return e(f)}function h(f){return a._balanced=!0,n(f)}}function Tve(t,e,n){return r;function r(h){return t.enter("resource"),t.enter("resourceMarker"),t.consume(h),t.exit("resourceMarker"),s}function s(h){return ir(h)?Cg(t,a)(h):a(h)}function a(h){return h===41?u(h):kG(t,o,l,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(h)}function o(h){return ir(h)?Cg(t,c)(h):u(h)}function l(h){return n(h)}function c(h){return h===34||h===39||h===40?EG(t,d,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(h):u(h)}function d(h){return ir(h)?Cg(t,u)(h):u(h)}function u(h){return h===41?(t.enter("resourceMarker"),t.consume(h),t.exit("resourceMarker"),t.exit("resource"),e):n(h)}}function Mve(t,e,n){const r=this;return s;function s(l){return CG.call(r,t,a,o,"reference","referenceMarker","referenceString")(l)}function a(l){return r.parser.defined.includes(po(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?e(l):n(l)}function o(l){return n(l)}}function Nve(t,e,n){return r;function r(a){return t.enter("reference"),t.enter("referenceMarker"),t.consume(a),t.exit("referenceMarker"),s}function s(a){return a===93?(t.enter("referenceMarker"),t.consume(a),t.exit("referenceMarker"),t.exit("reference"),e):n(a)}}const jve={name:"labelStartImage",resolveAll:aj.resolveAll,tokenize:Rve};function Rve(t,e,n){const r=this;return s;function s(l){return t.enter("labelImage"),t.enter("labelImageMarker"),t.consume(l),t.exit("labelImageMarker"),a}function a(l){return l===91?(t.enter("labelMarker"),t.consume(l),t.exit("labelMarker"),t.exit("labelImage"),o):n(l)}function o(l){return l===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(l):e(l)}}const Ive={name:"labelStartLink",resolveAll:aj.resolveAll,tokenize:Pve};function Pve(t,e,n){const r=this;return s;function s(o){return t.enter("labelLink"),t.enter("labelMarker"),t.consume(o),t.exit("labelMarker"),t.exit("labelLink"),a}function a(o){return o===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(o):e(o)}}const YC={name:"lineEnding",tokenize:Lve};function Lve(t,e){return n;function n(r){return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),Ln(t,e,"linePrefix")}}const gb={name:"thematicBreak",tokenize:Dve};function Dve(t,e,n){let r=0,s;return a;function a(d){return t.enter("thematicBreak"),o(d)}function o(d){return s=d,l(d)}function l(d){return d===s?(t.enter("thematicBreakSequence"),c(d)):r>=3&&(d===null||Kt(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),Cn(d)?Ln(t,l,"whitespace")(d):l(d))}}const Pi={continuation:{tokenize:Uve},exit:Hve,name:"list",tokenize:Fve},Ove={partial:!0,tokenize:Gve},Bve={partial:!0,tokenize:zve};function Fve(t,e,n){const r=this,s=r.events[r.events.length-1];let a=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,o=0;return l;function l(p){const x=r.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!r.containerState.marker||p===r.containerState.marker:LT(p)){if(r.containerState.type||(r.containerState.type=x,t.enter(x,{_container:!0})),x==="listUnordered")return t.enter("listItemPrefix"),p===42||p===45?t.check(gb,n,d)(p):d(p);if(!r.interrupt||p===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(p)}return n(p)}function c(p){return LT(p)&&++o<10?(t.consume(p),c):(!r.interrupt||o<2)&&(r.containerState.marker?p===r.containerState.marker:p===41||p===46)?(t.exit("listItemValue"),d(p)):n(p)}function d(p){return t.enter("listItemMarker"),t.consume(p),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||p,t.check(Jx,r.interrupt?n:u,t.attempt(Ove,f,h))}function u(p){return r.containerState.initialBlankLine=!0,a++,f(p)}function h(p){return Cn(p)?(t.enter("listItemPrefixWhitespace"),t.consume(p),t.exit("listItemPrefixWhitespace"),f):n(p)}function f(p){return r.containerState.size=a+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(p)}}function Uve(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(Jx,s,a);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Ln(t,e,"listItemIndent",r.containerState.size+1)(l)}function a(l){return r.containerState.furtherBlankLines||!Cn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(Bve,e,o)(l))}function o(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,Ln(t,t.attempt(Pi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function zve(t,e,n){const r=this;return Ln(t,s,"listItemIndent",r.containerState.size+1);function s(a){const o=r.events[r.events.length-1];return o&&o[1].type==="listItemIndent"&&o[2].sliceSerialize(o[1],!0).length===r.containerState.size?e(a):n(a)}}function Hve(t){t.exit(this.containerState.type)}function Gve(t,e,n){const r=this;return Ln(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function s(a){const o=r.events[r.events.length-1];return!Cn(a)&&o&&o[1].type==="listItemPrefixWhitespace"?e(a):n(a)}}const QO={name:"setextUnderline",resolveTo:Wve,tokenize:Vve};function Wve(t,e){let n=t.length,r,s,a;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!a&&t[n][1].type==="definition"&&(a=n);const o={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",a?(t.splice(s,0,["enter",o,e]),t.splice(a+1,0,["exit",t[r][1],e]),t[r][1].end={...t[a][1].end}):t[r][1]=o,t.push(["exit",o,e]),t}function Vve(t,e,n){const r=this;let s;return a;function a(d){let u=r.events.length,h;for(;u--;)if(r.events[u][1].type!=="lineEnding"&&r.events[u][1].type!=="linePrefix"&&r.events[u][1].type!=="content"){h=r.events[u][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||h)?(t.enter("setextHeadingLine"),s=d,o(d)):n(d)}function o(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),Cn(d)?Ln(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||Kt(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const $ve={tokenize:Kve};function Kve(t){const e=this,n=t.attempt(Jx,r,t.attempt(this.parser.constructs.flowInitial,s,Ln(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Zye,s)),"linePrefix")));return n;function r(a){if(a===null){t.consume(a);return}return t.enter("lineEndingBlank"),t.consume(a),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(a){if(a===null){t.consume(a);return}return t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const qve={resolveAll:TG()},Xve=AG("string"),Yve=AG("text");function AG(t){return{resolveAll:TG(t==="text"?Jve:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],a=n.attempt(s,o,l);return o;function o(u){return d(u)?a(u):l(u)}function l(u){if(u===null){n.consume(u);return}return n.enter("data"),n.consume(u),c}function c(u){return d(u)?(n.exit("data"),a(u)):(n.consume(u),c)}function d(u){if(u===null)return!0;const h=s[u];let f=-1;if(h)for(;++f<h.length;){const p=h[f];if(!p.previous||p.previous.call(r,r.previous))return!0}return!1}}}function TG(t){return e;function e(n,r){let s=-1,a;for(;++s<=n.length;)a===void 0?n[s]&&n[s][1].type==="data"&&(a=s,s++):(!n[s]||n[s][1].type!=="data")&&(s!==a+2&&(n[a][1].end=n[s-1][1].end,n.splice(a+2,s-a-2),s=a+2),a=void 0);return t?t(n,r):n}}function Jve(t,e){let n=0;for(;++n<=t.length;)if((n===t.length||t[n][1].type==="lineEnding")&&t[n-1][1].type==="data"){const r=t[n-1][1],s=e.sliceStream(r);let a=s.length,o=-1,l=0,c;for(;a--;){const d=s[a];if(typeof d=="string"){for(o=d.length;d.charCodeAt(o-1)===32;)l++,o--;if(o)break;o=-1}else if(d===-2)c=!0,l++;else if(d!==-1){a++;break}}if(e._contentTypeTextTrailing&&n===t.length&&(l=0),l){const d={type:n===t.length||c||l<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:a?o:r.start._bufferIndex+o,_index:r.start._index+a,line:r.end.line,column:r.end.column-l,offset:r.end.offset-l},end:{...r.end}};r.end={...d.start},r.start.offset===r.end.offset?Object.assign(r,d):(t.splice(n,0,["enter",d,e],["exit",d,e]),n+=2)}n++}return t}const Zve={42:Pi,43:Pi,45:Pi,48:Pi,49:Pi,50:Pi,51:Pi,52:Pi,53:Pi,54:Pi,55:Pi,56:Pi,57:Pi,62:bG},Qve={91:rve},ebe={[-2]:XC,[-1]:XC,32:XC},tbe={35:cve,42:gb,45:[QO,gb],60:fve,61:QO,95:gb,96:JO,126:JO},nbe={38:SG,92:_G},rbe={[-5]:YC,[-4]:YC,[-3]:YC,33:jve,38:SG,42:DT,60:[Iye,bve],91:Ive,92:[ove,_G],93:aj,95:DT,96:$ye},sbe={null:[DT,qve]},ibe={null:[42,95]},abe={null:[]},obe=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:ibe,contentInitial:Qve,disable:abe,document:Zve,flow:tbe,flowInitial:ebe,insideSpan:sbe,string:nbe,text:rbe},Symbol.toStringTag,{value:"Module"}));function lbe(t,e,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0};const s={},a=[];let o=[],l=[];const c={attempt:N(C),check:N(E),consume:v,enter:b,exit:S,interrupt:N(E,{interrupt:!0})},d={code:null,containerState:{},defineSkip:y,events:[],now:x,parser:t,previous:null,sliceSerialize:f,sliceStream:p,write:h};let u=e.tokenize.call(d,c);return e.resolveAll&&a.push(e),d;function h(P){return o=Da(o,P),m(),o[o.length-1]!==null?[]:(T(e,0),d.events=jS(a,d.events,d),d.events)}function f(P,I){return dbe(p(P),I)}function p(P){return cbe(o,P)}function x(){const{_bufferIndex:P,_index:I,line:B,column:V,offset:K}=r;return{_bufferIndex:P,_index:I,line:B,column:V,offset:K}}function y(P){s[P.line]=P.column,M()}function m(){let P;for(;r._index<o.length;){const I=o[r._index];if(typeof I=="string")for(P=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===P&&r._bufferIndex<I.length;)g(I.charCodeAt(r._bufferIndex));else g(I)}}function g(P){u=u(P)}function v(P){Kt(P)?(r.line++,r.column=1,r.offset+=P===-3?2:1,M()):P!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),d.previous=P}function b(P,I){const B=I||{};return B.type=P,B.start=x(),d.events.push(["enter",B,d]),l.push(B),B}function S(P){const I=l.pop();return I.end=x(),d.events.push(["exit",I,d]),I}function C(P,I){T(P,I.from)}function E(P,I){I.restore()}function N(P,I){return B;function B(V,K,H){let $,L,U,R;return Array.isArray(V)?G(V):"tokenize"in V?G([V]):D(V);function D(te){return z;function z(Q){const re=Q!==null&&te[Q],ie=Q!==null&&te.null,de=[...Array.isArray(re)?re:re?[re]:[],...Array.isArray(ie)?ie:ie?[ie]:[]];return G(de)(Q)}}function G(te){return $=te,L=0,te.length===0?H:F(te[L])}function F(te){return z;function z(Q){return R=A(),U=te,te.partial||(d.currentConstruct=te),te.name&&d.parser.constructs.disable.null.includes(te.name)?q():te.tokenize.call(I?Object.assign(Object.create(d),I):d,c,J,q)(Q)}}function J(te){return P(U,R),K}function q(te){return R.restore(),++L<$.length?F($[L]):H}}}function T(P,I){P.resolveAll&&!a.includes(P)&&a.push(P),P.resolve&&ua(d.events,I,d.events.length-I,P.resolve(d.events.slice(I),d)),P.resolveTo&&(d.events=P.resolveTo(d.events,d))}function A(){const P=x(),I=d.previous,B=d.currentConstruct,V=d.events.length,K=Array.from(l);return{from:V,restore:H};function H(){r=P,d.previous=I,d.currentConstruct=B,d.events.length=V,l=K,M()}}function M(){r.line in s&&r.column<2&&(r.column=s[r.line],r.offset+=s[r.line]-1)}}function cbe(t,e){const n=e.start._index,r=e.start._bufferIndex,s=e.end._index,a=e.end._bufferIndex;let o;if(n===s)o=[t[n].slice(r,a)];else{if(o=t.slice(n,s),r>-1){const l=o[0];typeof l=="string"?o[0]=l.slice(r):o.shift()}a>0&&o.push(t[s].slice(0,a))}return o}function dbe(t,e){let n=-1;const r=[];let s;for(;++n<t.length;){const a=t[n];let o;if(typeof a=="string")o=a;else switch(a){case-5:{o="\r";break}case-4:{o=`
|
|
4920
4920
|
`;break}case-3:{o=`\r
|
|
4921
|
-
`;break}case-2:{o=e?" ":" ";break}case-1:{if(!e&&s)continue;o=" ";break}default:o=String.fromCharCode(a)}s=a===-2,r.push(o)}return r.join("")}function dbe(t){const r={constructs:yG([abe,...(t||{}).extensions||[]]),content:s(Cye),defined:[],document:s(Aye),flow:s(Vve),lazy:{},string:s(qve),text:s(Xve)};return r;function s(a){return o;function o(l){return obe(r,a,l)}}}function ube(t){for(;!wG(t););return t}const eB=/[\0\t\n\r]/g;function hbe(){let t=1,e="",n=!0,r;return s;function s(a,o,l){const c=[];let d,u,h,f,p;for(a=e+(typeof a=="string"?a.toString():new TextDecoder(o||void 0).decode(a)),h=0,e="",n&&(a.charCodeAt(0)===65279&&h++,n=void 0);h<a.length;){if(eB.lastIndex=h,d=eB.exec(a),f=d&&d.index!==void 0?d.index:a.length,p=a.charCodeAt(f),!d){e=a.slice(h);break}if(p===10&&h===f&&r)c.push(-3),r=void 0;else switch(r&&(c.push(-5),r=void 0),h<f&&(c.push(a.slice(h,f)),t+=f-h),p){case 0:{c.push(65533),t++;break}case 9:{for(u=Math.ceil(t/4)*4,c.push(-2);t++<u;)c.push(-1);break}case 10:{c.push(-4),t=1;break}default:r=!0,t=1}h=f+1}return l&&(r&&c.push(-5),e&&c.push(e),c.push(null)),c}}const fbe=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function pbe(t){return t.replace(fbe,mbe)}function mbe(t,e,n){if(e)return e;if(n.charCodeAt(0)===35){const s=n.charCodeAt(1),a=s===120||s===88;return vG(n.slice(a?2:1),a?16:10)}return ij(n)||t}const MG={}.hasOwnProperty;function gbe(t,e,n){return e&&typeof e=="object"&&(n=e,e=void 0),xbe(n)(ube(dbe(n).document().write(hbe()(t,e,!0))))}function xbe(t){const e={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:a(ve),autolinkProtocol:A,autolinkEmail:A,atxHeading:a(ge),blockQuote:a(ie),characterEscape:A,characterReference:A,codeFenced:a(de),codeFencedFenceInfo:o,codeFencedFenceMeta:o,codeIndented:a(de,o),codeText:a(ee,o),codeTextData:A,data:A,codeFlowValue:A,definition:a(ke),definitionDestinationString:o,definitionLabelString:o,definitionTitleString:o,emphasis:a(ae),hardBreakEscape:a(xe),hardBreakTrailing:a(xe),htmlFlow:a(Ce,o),htmlFlowData:A,htmlText:a(Ce,o),htmlTextData:A,image:a(Y),label:o,link:a(ve),listItem:a(_e),listItemValue:f,listOrdered:a(be,h),listUnordered:a(be),paragraph:a(Me),reference:F,referenceString:o,resourceDestinationString:o,resourceTitleString:o,setextHeading:a(ge),strong:a(ne),thematicBreak:a(ue)},exit:{atxHeading:c(),atxHeadingSequence:C,autolink:c(),autolinkEmail:re,autolinkProtocol:Q,blockQuote:c(),characterEscapeValue:M,characterReferenceMarkerHexadecimal:q,characterReferenceMarkerNumeric:q,characterReferenceValue:te,characterReference:z,codeFenced:c(m),codeFencedFence:y,codeFencedFenceInfo:p,codeFencedFenceMeta:x,codeFlowValue:M,codeIndented:c(g),codeText:c(K),codeTextData:M,data:M,definition:c(),definitionDestinationString:S,definitionLabelString:v,definitionTitleString:b,emphasis:c(),hardBreakEscape:c(I),hardBreakTrailing:c(I),htmlFlow:c(B),htmlFlowData:M,htmlText:c(V),htmlTextData:M,image:c($),label:U,labelText:L,lineEnding:P,link:c(H),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:J,resourceDestinationString:R,resourceTitleString:D,resource:G,setextHeading:c(T),setextHeadingLineSequence:N,setextHeadingText:E,strong:c(),thematicBreak:c()}};NG(e,(t||{}).mdastExtensions||[]);const n={};return r;function r(se){let le={type:"root",children:[]};const fe={stack:[le],tokenStack:[],config:e,enter:l,exit:d,buffer:o,resume:u,data:n},Te=[];let Ne=-1;for(;++Ne<se.length;)if(se[Ne][1].type==="listOrdered"||se[Ne][1].type==="listUnordered")if(se[Ne][0]==="enter")Te.push(Ne);else{const He=Te.pop();Ne=s(se,He,Ne)}for(Ne=-1;++Ne<se.length;){const He=e[se[Ne][0]];MG.call(He,se[Ne][1].type)&&He[se[Ne][1].type].call(Object.assign({sliceSerialize:se[Ne][2].sliceSerialize},fe),se[Ne][1])}if(fe.tokenStack.length>0){const He=fe.tokenStack[fe.tokenStack.length-1];(He[1]||tB).call(fe,void 0,He[0])}for(le.position={start:gc(se.length>0?se[0][1].start:{line:1,column:1,offset:0}),end:gc(se.length>0?se[se.length-2][1].end:{line:1,column:1,offset:0})},Ne=-1;++Ne<e.transforms.length;)le=e.transforms[Ne](le)||le;return le}function s(se,le,fe){let Te=le-1,Ne=-1,He=!1,$e,De,qe,Ke;for(;++Te<=fe;){const ce=se[Te];switch(ce[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{ce[0]==="enter"?Ne++:Ne--,Ke=void 0;break}case"lineEndingBlank":{ce[0]==="enter"&&($e&&!Ke&&!Ne&&!qe&&(qe=Te),Ke=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:Ke=void 0}if(!Ne&&ce[0]==="enter"&&ce[1].type==="listItemPrefix"||Ne===-1&&ce[0]==="exit"&&(ce[1].type==="listUnordered"||ce[1].type==="listOrdered")){if($e){let we=Te;for(De=void 0;we--;){const Ge=se[we];if(Ge[1].type==="lineEnding"||Ge[1].type==="lineEndingBlank"){if(Ge[0]==="exit")continue;De&&(se[De][1].type="lineEndingBlank",He=!0),Ge[1].type="lineEnding",De=we}else if(!(Ge[1].type==="linePrefix"||Ge[1].type==="blockQuotePrefix"||Ge[1].type==="blockQuotePrefixWhitespace"||Ge[1].type==="blockQuoteMarker"||Ge[1].type==="listItemIndent"))break}qe&&(!De||qe<De)&&($e._spread=!0),$e.end=Object.assign({},De?se[De][1].start:ce[1].end),se.splice(De||Te,0,["exit",$e,ce[2]]),Te++,fe++}if(ce[1].type==="listItemPrefix"){const we={type:"listItem",_spread:!1,start:Object.assign({},ce[1].start),end:void 0};$e=we,se.splice(Te,0,["enter",we,ce[2]]),Te++,fe++,qe=void 0,Ke=!0}}}return se[le][1]._spread=He,fe}function a(se,le){return fe;function fe(Te){l.call(this,se(Te),Te),le&&le.call(this,Te)}}function o(){this.stack.push({type:"fragment",children:[]})}function l(se,le,fe){this.stack[this.stack.length-1].children.push(se),this.stack.push(se),this.tokenStack.push([le,fe||void 0]),se.position={start:gc(le.start),end:void 0}}function c(se){return le;function le(fe){se&&se.call(this,fe),d.call(this,fe)}}function d(se,le){const fe=this.stack.pop(),Te=this.tokenStack.pop();if(Te)Te[0].type!==se.type&&(le?le.call(this,se,Te[0]):(Te[1]||tB).call(this,se,Te[0]));else throw new Error("Cannot close `"+se.type+"` ("+kg({start:se.start,end:se.end})+"): it’s not open");fe.position.end=gc(se.end)}function u(){return sj(this.stack.pop())}function h(){this.data.expectingFirstListItemValue=!0}function f(se){if(this.data.expectingFirstListItemValue){const le=this.stack[this.stack.length-2];le.start=Number.parseInt(this.sliceSerialize(se),10),this.data.expectingFirstListItemValue=void 0}}function p(){const se=this.resume(),le=this.stack[this.stack.length-1];le.lang=se}function x(){const se=this.resume(),le=this.stack[this.stack.length-1];le.meta=se}function y(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function m(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function g(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se.replace(/(\r?\n|\r)$/g,"")}function v(se){const le=this.resume(),fe=this.stack[this.stack.length-1];fe.label=le,fe.identifier=po(this.sliceSerialize(se)).toLowerCase()}function b(){const se=this.resume(),le=this.stack[this.stack.length-1];le.title=se}function S(){const se=this.resume(),le=this.stack[this.stack.length-1];le.url=se}function C(se){const le=this.stack[this.stack.length-1];if(!le.depth){const fe=this.sliceSerialize(se).length;le.depth=fe}}function E(){this.data.setextHeadingSlurpLineEnding=!0}function N(se){const le=this.stack[this.stack.length-1];le.depth=this.sliceSerialize(se).codePointAt(0)===61?1:2}function T(){this.data.setextHeadingSlurpLineEnding=void 0}function A(se){const fe=this.stack[this.stack.length-1].children;let Te=fe[fe.length-1];(!Te||Te.type!=="text")&&(Te=X(),Te.position={start:gc(se.start),end:void 0},fe.push(Te)),this.stack.push(Te)}function M(se){const le=this.stack.pop();le.value+=this.sliceSerialize(se),le.position.end=gc(se.end)}function P(se){const le=this.stack[this.stack.length-1];if(this.data.atHardBreak){const fe=le.children[le.children.length-1];fe.position.end=gc(se.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&e.canContainEols.includes(le.type)&&(A.call(this,se),M.call(this,se))}function I(){this.data.atHardBreak=!0}function B(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se}function V(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se}function K(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se}function H(){const se=this.stack[this.stack.length-1];if(this.data.inReference){const le=this.data.referenceType||"shortcut";se.type+="Reference",se.referenceType=le,delete se.url,delete se.title}else delete se.identifier,delete se.label;this.data.referenceType=void 0}function $(){const se=this.stack[this.stack.length-1];if(this.data.inReference){const le=this.data.referenceType||"shortcut";se.type+="Reference",se.referenceType=le,delete se.url,delete se.title}else delete se.identifier,delete se.label;this.data.referenceType=void 0}function L(se){const le=this.sliceSerialize(se),fe=this.stack[this.stack.length-2];fe.label=pbe(le),fe.identifier=po(le).toLowerCase()}function U(){const se=this.stack[this.stack.length-1],le=this.resume(),fe=this.stack[this.stack.length-1];if(this.data.inReference=!0,fe.type==="link"){const Te=se.children;fe.children=Te}else fe.alt=le}function R(){const se=this.resume(),le=this.stack[this.stack.length-1];le.url=se}function D(){const se=this.resume(),le=this.stack[this.stack.length-1];le.title=se}function G(){this.data.inReference=void 0}function F(){this.data.referenceType="collapsed"}function J(se){const le=this.resume(),fe=this.stack[this.stack.length-1];fe.label=le,fe.identifier=po(this.sliceSerialize(se)).toLowerCase(),this.data.referenceType="full"}function q(se){this.data.characterReferenceType=se.type}function te(se){const le=this.sliceSerialize(se),fe=this.data.characterReferenceType;let Te;fe?(Te=vG(le,fe==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):Te=ij(le);const Ne=this.stack[this.stack.length-1];Ne.value+=Te}function z(se){const le=this.stack.pop();le.position.end=gc(se.end)}function Q(se){M.call(this,se);const le=this.stack[this.stack.length-1];le.url=this.sliceSerialize(se)}function re(se){M.call(this,se);const le=this.stack[this.stack.length-1];le.url="mailto:"+this.sliceSerialize(se)}function ie(){return{type:"blockquote",children:[]}}function de(){return{type:"code",lang:null,meta:null,value:""}}function ee(){return{type:"inlineCode",value:""}}function ke(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function ae(){return{type:"emphasis",children:[]}}function ge(){return{type:"heading",depth:0,children:[]}}function xe(){return{type:"break"}}function Ce(){return{type:"html",value:""}}function Y(){return{type:"image",title:null,url:"",alt:null}}function ve(){return{type:"link",title:null,url:"",children:[]}}function be(se){return{type:"list",ordered:se.type==="listOrdered",start:null,spread:se._spread,children:[]}}function _e(se){return{type:"listItem",spread:se._spread,checked:null,children:[]}}function Me(){return{type:"paragraph",children:[]}}function ne(){return{type:"strong",children:[]}}function X(){return{type:"text",value:""}}function ue(){return{type:"thematicBreak"}}}function gc(t){return{line:t.line,column:t.column,offset:t.offset}}function NG(t,e){let n=-1;for(;++n<e.length;){const r=e[n];Array.isArray(r)?NG(t,r):ybe(t,r)}}function ybe(t,e){let n;for(n in e)if(MG.call(e,n))switch(n){case"canContainEols":{const r=e[n];r&&t[n].push(...r);break}case"transforms":{const r=e[n];r&&t[n].push(...r);break}case"enter":case"exit":{const r=e[n];r&&Object.assign(t[n],r);break}}}function tB(t,e){throw t?new Error("Cannot close `"+t.type+"` ("+kg({start:t.start,end:t.end})+"): a different token (`"+e.type+"`, "+kg({start:e.start,end:e.end})+") is open"):new Error("Cannot close document, a token (`"+e.type+"`, "+kg({start:e.start,end:e.end})+") is still open")}function vbe(t){const e=this;e.parser=n;function n(r){return gbe(r,{...e.data("settings"),...t,extensions:e.data("micromarkExtensions")||[],mdastExtensions:e.data("fromMarkdownExtensions")||[]})}}function bbe(t,e){const n={type:"element",tagName:"blockquote",properties:{},children:t.wrap(t.all(e),!0)};return t.patch(e,n),t.applyData(e,n)}function _be(t,e){const n={type:"element",tagName:"br",properties:{},children:[]};return t.patch(e,n),[t.applyData(e,n),{type:"text",value:`
|
|
4922
|
-
`}]}function
|
|
4923
|
-
`:"",r={},s=e.lang?e.lang.split(/\s+/):[];s.length>0&&(r.className=["language-"+s[0]]);let a={type:"element",tagName:"code",properties:r,children:[{type:"text",value:n}]};return e.meta&&(a.data={meta:e.meta}),t.patch(e,a),a=t.applyData(e,a),a={type:"element",tagName:"pre",properties:{},children:[a]},t.patch(e,a),a}function
|
|
4921
|
+
`;break}case-2:{o=e?" ":" ";break}case-1:{if(!e&&s)continue;o=" ";break}default:o=String.fromCharCode(a)}s=a===-2,r.push(o)}return r.join("")}function ube(t){const r={constructs:yG([obe,...(t||{}).extensions||[]]),content:s(Eye),defined:[],document:s(Tye),flow:s($ve),lazy:{},string:s(Xve),text:s(Yve)};return r;function s(a){return o;function o(l){return lbe(r,a,l)}}}function hbe(t){for(;!wG(t););return t}const eB=/[\0\t\n\r]/g;function fbe(){let t=1,e="",n=!0,r;return s;function s(a,o,l){const c=[];let d,u,h,f,p;for(a=e+(typeof a=="string"?a.toString():new TextDecoder(o||void 0).decode(a)),h=0,e="",n&&(a.charCodeAt(0)===65279&&h++,n=void 0);h<a.length;){if(eB.lastIndex=h,d=eB.exec(a),f=d&&d.index!==void 0?d.index:a.length,p=a.charCodeAt(f),!d){e=a.slice(h);break}if(p===10&&h===f&&r)c.push(-3),r=void 0;else switch(r&&(c.push(-5),r=void 0),h<f&&(c.push(a.slice(h,f)),t+=f-h),p){case 0:{c.push(65533),t++;break}case 9:{for(u=Math.ceil(t/4)*4,c.push(-2);t++<u;)c.push(-1);break}case 10:{c.push(-4),t=1;break}default:r=!0,t=1}h=f+1}return l&&(r&&c.push(-5),e&&c.push(e),c.push(null)),c}}const pbe=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function mbe(t){return t.replace(pbe,gbe)}function gbe(t,e,n){if(e)return e;if(n.charCodeAt(0)===35){const s=n.charCodeAt(1),a=s===120||s===88;return vG(n.slice(a?2:1),a?16:10)}return ij(n)||t}const MG={}.hasOwnProperty;function xbe(t,e,n){return e&&typeof e=="object"&&(n=e,e=void 0),ybe(n)(hbe(ube(n).document().write(fbe()(t,e,!0))))}function ybe(t){const e={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:a(ve),autolinkProtocol:A,autolinkEmail:A,atxHeading:a(ge),blockQuote:a(ie),characterEscape:A,characterReference:A,codeFenced:a(de),codeFencedFenceInfo:o,codeFencedFenceMeta:o,codeIndented:a(de,o),codeText:a(ee,o),codeTextData:A,data:A,codeFlowValue:A,definition:a(ke),definitionDestinationString:o,definitionLabelString:o,definitionTitleString:o,emphasis:a(ae),hardBreakEscape:a(xe),hardBreakTrailing:a(xe),htmlFlow:a(Ce,o),htmlFlowData:A,htmlText:a(Ce,o),htmlTextData:A,image:a(Y),label:o,link:a(ve),listItem:a(_e),listItemValue:f,listOrdered:a(be,h),listUnordered:a(be),paragraph:a(Me),reference:F,referenceString:o,resourceDestinationString:o,resourceTitleString:o,setextHeading:a(ge),strong:a(ne),thematicBreak:a(ue)},exit:{atxHeading:c(),atxHeadingSequence:C,autolink:c(),autolinkEmail:re,autolinkProtocol:Q,blockQuote:c(),characterEscapeValue:M,characterReferenceMarkerHexadecimal:q,characterReferenceMarkerNumeric:q,characterReferenceValue:te,characterReference:z,codeFenced:c(m),codeFencedFence:y,codeFencedFenceInfo:p,codeFencedFenceMeta:x,codeFlowValue:M,codeIndented:c(g),codeText:c(K),codeTextData:M,data:M,definition:c(),definitionDestinationString:S,definitionLabelString:v,definitionTitleString:b,emphasis:c(),hardBreakEscape:c(I),hardBreakTrailing:c(I),htmlFlow:c(B),htmlFlowData:M,htmlText:c(V),htmlTextData:M,image:c($),label:U,labelText:L,lineEnding:P,link:c(H),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:J,resourceDestinationString:R,resourceTitleString:D,resource:G,setextHeading:c(T),setextHeadingLineSequence:N,setextHeadingText:E,strong:c(),thematicBreak:c()}};NG(e,(t||{}).mdastExtensions||[]);const n={};return r;function r(se){let le={type:"root",children:[]};const fe={stack:[le],tokenStack:[],config:e,enter:l,exit:d,buffer:o,resume:u,data:n},Te=[];let Ne=-1;for(;++Ne<se.length;)if(se[Ne][1].type==="listOrdered"||se[Ne][1].type==="listUnordered")if(se[Ne][0]==="enter")Te.push(Ne);else{const He=Te.pop();Ne=s(se,He,Ne)}for(Ne=-1;++Ne<se.length;){const He=e[se[Ne][0]];MG.call(He,se[Ne][1].type)&&He[se[Ne][1].type].call(Object.assign({sliceSerialize:se[Ne][2].sliceSerialize},fe),se[Ne][1])}if(fe.tokenStack.length>0){const He=fe.tokenStack[fe.tokenStack.length-1];(He[1]||tB).call(fe,void 0,He[0])}for(le.position={start:gc(se.length>0?se[0][1].start:{line:1,column:1,offset:0}),end:gc(se.length>0?se[se.length-2][1].end:{line:1,column:1,offset:0})},Ne=-1;++Ne<e.transforms.length;)le=e.transforms[Ne](le)||le;return le}function s(se,le,fe){let Te=le-1,Ne=-1,He=!1,$e,De,qe,Ke;for(;++Te<=fe;){const ce=se[Te];switch(ce[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{ce[0]==="enter"?Ne++:Ne--,Ke=void 0;break}case"lineEndingBlank":{ce[0]==="enter"&&($e&&!Ke&&!Ne&&!qe&&(qe=Te),Ke=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:Ke=void 0}if(!Ne&&ce[0]==="enter"&&ce[1].type==="listItemPrefix"||Ne===-1&&ce[0]==="exit"&&(ce[1].type==="listUnordered"||ce[1].type==="listOrdered")){if($e){let we=Te;for(De=void 0;we--;){const Ge=se[we];if(Ge[1].type==="lineEnding"||Ge[1].type==="lineEndingBlank"){if(Ge[0]==="exit")continue;De&&(se[De][1].type="lineEndingBlank",He=!0),Ge[1].type="lineEnding",De=we}else if(!(Ge[1].type==="linePrefix"||Ge[1].type==="blockQuotePrefix"||Ge[1].type==="blockQuotePrefixWhitespace"||Ge[1].type==="blockQuoteMarker"||Ge[1].type==="listItemIndent"))break}qe&&(!De||qe<De)&&($e._spread=!0),$e.end=Object.assign({},De?se[De][1].start:ce[1].end),se.splice(De||Te,0,["exit",$e,ce[2]]),Te++,fe++}if(ce[1].type==="listItemPrefix"){const we={type:"listItem",_spread:!1,start:Object.assign({},ce[1].start),end:void 0};$e=we,se.splice(Te,0,["enter",we,ce[2]]),Te++,fe++,qe=void 0,Ke=!0}}}return se[le][1]._spread=He,fe}function a(se,le){return fe;function fe(Te){l.call(this,se(Te),Te),le&&le.call(this,Te)}}function o(){this.stack.push({type:"fragment",children:[]})}function l(se,le,fe){this.stack[this.stack.length-1].children.push(se),this.stack.push(se),this.tokenStack.push([le,fe||void 0]),se.position={start:gc(le.start),end:void 0}}function c(se){return le;function le(fe){se&&se.call(this,fe),d.call(this,fe)}}function d(se,le){const fe=this.stack.pop(),Te=this.tokenStack.pop();if(Te)Te[0].type!==se.type&&(le?le.call(this,se,Te[0]):(Te[1]||tB).call(this,se,Te[0]));else throw new Error("Cannot close `"+se.type+"` ("+kg({start:se.start,end:se.end})+"): it’s not open");fe.position.end=gc(se.end)}function u(){return sj(this.stack.pop())}function h(){this.data.expectingFirstListItemValue=!0}function f(se){if(this.data.expectingFirstListItemValue){const le=this.stack[this.stack.length-2];le.start=Number.parseInt(this.sliceSerialize(se),10),this.data.expectingFirstListItemValue=void 0}}function p(){const se=this.resume(),le=this.stack[this.stack.length-1];le.lang=se}function x(){const se=this.resume(),le=this.stack[this.stack.length-1];le.meta=se}function y(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function m(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function g(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se.replace(/(\r?\n|\r)$/g,"")}function v(se){const le=this.resume(),fe=this.stack[this.stack.length-1];fe.label=le,fe.identifier=po(this.sliceSerialize(se)).toLowerCase()}function b(){const se=this.resume(),le=this.stack[this.stack.length-1];le.title=se}function S(){const se=this.resume(),le=this.stack[this.stack.length-1];le.url=se}function C(se){const le=this.stack[this.stack.length-1];if(!le.depth){const fe=this.sliceSerialize(se).length;le.depth=fe}}function E(){this.data.setextHeadingSlurpLineEnding=!0}function N(se){const le=this.stack[this.stack.length-1];le.depth=this.sliceSerialize(se).codePointAt(0)===61?1:2}function T(){this.data.setextHeadingSlurpLineEnding=void 0}function A(se){const fe=this.stack[this.stack.length-1].children;let Te=fe[fe.length-1];(!Te||Te.type!=="text")&&(Te=X(),Te.position={start:gc(se.start),end:void 0},fe.push(Te)),this.stack.push(Te)}function M(se){const le=this.stack.pop();le.value+=this.sliceSerialize(se),le.position.end=gc(se.end)}function P(se){const le=this.stack[this.stack.length-1];if(this.data.atHardBreak){const fe=le.children[le.children.length-1];fe.position.end=gc(se.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&e.canContainEols.includes(le.type)&&(A.call(this,se),M.call(this,se))}function I(){this.data.atHardBreak=!0}function B(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se}function V(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se}function K(){const se=this.resume(),le=this.stack[this.stack.length-1];le.value=se}function H(){const se=this.stack[this.stack.length-1];if(this.data.inReference){const le=this.data.referenceType||"shortcut";se.type+="Reference",se.referenceType=le,delete se.url,delete se.title}else delete se.identifier,delete se.label;this.data.referenceType=void 0}function $(){const se=this.stack[this.stack.length-1];if(this.data.inReference){const le=this.data.referenceType||"shortcut";se.type+="Reference",se.referenceType=le,delete se.url,delete se.title}else delete se.identifier,delete se.label;this.data.referenceType=void 0}function L(se){const le=this.sliceSerialize(se),fe=this.stack[this.stack.length-2];fe.label=mbe(le),fe.identifier=po(le).toLowerCase()}function U(){const se=this.stack[this.stack.length-1],le=this.resume(),fe=this.stack[this.stack.length-1];if(this.data.inReference=!0,fe.type==="link"){const Te=se.children;fe.children=Te}else fe.alt=le}function R(){const se=this.resume(),le=this.stack[this.stack.length-1];le.url=se}function D(){const se=this.resume(),le=this.stack[this.stack.length-1];le.title=se}function G(){this.data.inReference=void 0}function F(){this.data.referenceType="collapsed"}function J(se){const le=this.resume(),fe=this.stack[this.stack.length-1];fe.label=le,fe.identifier=po(this.sliceSerialize(se)).toLowerCase(),this.data.referenceType="full"}function q(se){this.data.characterReferenceType=se.type}function te(se){const le=this.sliceSerialize(se),fe=this.data.characterReferenceType;let Te;fe?(Te=vG(le,fe==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):Te=ij(le);const Ne=this.stack[this.stack.length-1];Ne.value+=Te}function z(se){const le=this.stack.pop();le.position.end=gc(se.end)}function Q(se){M.call(this,se);const le=this.stack[this.stack.length-1];le.url=this.sliceSerialize(se)}function re(se){M.call(this,se);const le=this.stack[this.stack.length-1];le.url="mailto:"+this.sliceSerialize(se)}function ie(){return{type:"blockquote",children:[]}}function de(){return{type:"code",lang:null,meta:null,value:""}}function ee(){return{type:"inlineCode",value:""}}function ke(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function ae(){return{type:"emphasis",children:[]}}function ge(){return{type:"heading",depth:0,children:[]}}function xe(){return{type:"break"}}function Ce(){return{type:"html",value:""}}function Y(){return{type:"image",title:null,url:"",alt:null}}function ve(){return{type:"link",title:null,url:"",children:[]}}function be(se){return{type:"list",ordered:se.type==="listOrdered",start:null,spread:se._spread,children:[]}}function _e(se){return{type:"listItem",spread:se._spread,checked:null,children:[]}}function Me(){return{type:"paragraph",children:[]}}function ne(){return{type:"strong",children:[]}}function X(){return{type:"text",value:""}}function ue(){return{type:"thematicBreak"}}}function gc(t){return{line:t.line,column:t.column,offset:t.offset}}function NG(t,e){let n=-1;for(;++n<e.length;){const r=e[n];Array.isArray(r)?NG(t,r):vbe(t,r)}}function vbe(t,e){let n;for(n in e)if(MG.call(e,n))switch(n){case"canContainEols":{const r=e[n];r&&t[n].push(...r);break}case"transforms":{const r=e[n];r&&t[n].push(...r);break}case"enter":case"exit":{const r=e[n];r&&Object.assign(t[n],r);break}}}function tB(t,e){throw t?new Error("Cannot close `"+t.type+"` ("+kg({start:t.start,end:t.end})+"): a different token (`"+e.type+"`, "+kg({start:e.start,end:e.end})+") is open"):new Error("Cannot close document, a token (`"+e.type+"`, "+kg({start:e.start,end:e.end})+") is still open")}function bbe(t){const e=this;e.parser=n;function n(r){return xbe(r,{...e.data("settings"),...t,extensions:e.data("micromarkExtensions")||[],mdastExtensions:e.data("fromMarkdownExtensions")||[]})}}function _be(t,e){const n={type:"element",tagName:"blockquote",properties:{},children:t.wrap(t.all(e),!0)};return t.patch(e,n),t.applyData(e,n)}function Sbe(t,e){const n={type:"element",tagName:"br",properties:{},children:[]};return t.patch(e,n),[t.applyData(e,n),{type:"text",value:`
|
|
4922
|
+
`}]}function wbe(t,e){const n=e.value?e.value+`
|
|
4923
|
+
`:"",r={},s=e.lang?e.lang.split(/\s+/):[];s.length>0&&(r.className=["language-"+s[0]]);let a={type:"element",tagName:"code",properties:r,children:[{type:"text",value:n}]};return e.meta&&(a.data={meta:e.meta}),t.patch(e,a),a=t.applyData(e,a),a={type:"element",tagName:"pre",properties:{},children:[a]},t.patch(e,a),a}function kbe(t,e){const n={type:"element",tagName:"del",properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Cbe(t,e){const n={type:"element",tagName:"em",properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Ebe(t,e){const n=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",r=String(e.identifier).toUpperCase(),s=jp(r.toLowerCase()),a=t.footnoteOrder.indexOf(r);let o,l=t.footnoteCounts.get(r);l===void 0?(l=0,t.footnoteOrder.push(r),o=t.footnoteOrder.length):o=a+1,l+=1,t.footnoteCounts.set(r,l);const c={type:"element",tagName:"a",properties:{href:"#"+n+"fn-"+s,id:n+"fnref-"+s+(l>1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(o)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Abe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Tbe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function jG(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),a=s[0];a&&a.type==="text"?a.value="["+a.value:s.unshift({type:"text",value:"["});const o=s[s.length-1];return o&&o.type==="text"?o.value+=r:s.push({type:"text",value:r}),s}function Mbe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return jG(t,e);const s={src:jp(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const a={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,a),t.applyData(e,a)}function Nbe(t,e){const n={src:jp(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function jbe(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function Rbe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return jG(t,e);const s={href:jp(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const a={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,a),t.applyData(e,a)}function Ibe(t,e){const n={href:jp(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function Pbe(t,e,n){const r=t.all(e),s=n?Lbe(n):RG(e),a={},o=[];if(typeof e.checked=="boolean"){const u=r[0];let h;u&&u.type==="element"&&u.tagName==="p"?h=u:(h={type:"element",tagName:"p",properties:{},children:[]},r.unshift(h)),h.children.length>0&&h.children.unshift({type:"text",value:" "}),h.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),a.className=["task-list-item"]}let l=-1;for(;++l<r.length;){const u=r[l];(s||l!==0||u.type!=="element"||u.tagName!=="p")&&o.push({type:"text",value:`
|
|
4924
4924
|
`}),u.type==="element"&&u.tagName==="p"&&!s?o.push(...u.children):o.push(u)}const c=r[r.length-1];c&&(s||c.type!=="element"||c.tagName!=="p")&&o.push({type:"text",value:`
|
|
4925
|
-
`});const d={type:"element",tagName:"li",properties:a,children:o};return t.patch(e,d),t.applyData(e,d)}function
|
|
4925
|
+
`});const d={type:"element",tagName:"li",properties:a,children:o};return t.patch(e,d),t.applyData(e,d)}function Lbe(t){let e=!1;if(t.type==="list"){e=t.spread||!1;const n=t.children;let r=-1;for(;!e&&++r<n.length;)e=RG(n[r])}return e}function RG(t){const e=t.spread;return e??t.children.length>1}function Dbe(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s<r.length;){const o=r[s];if(o.type==="element"&&o.tagName==="li"&&o.properties&&Array.isArray(o.properties.className)&&o.properties.className.includes("task-list-item")){n.className=["contains-task-list"];break}}const a={type:"element",tagName:e.ordered?"ol":"ul",properties:n,children:t.wrap(r,!0)};return t.patch(e,a),t.applyData(e,a)}function Obe(t,e){const n={type:"element",tagName:"p",properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Bbe(t,e){const n={type:"root",children:t.wrap(t.all(e))};return t.patch(e,n),t.applyData(e,n)}function Fbe(t,e){const n={type:"element",tagName:"strong",properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Ube(t,e){const n=t.all(e),r=n.shift(),s=[];if(r){const o={type:"element",tagName:"thead",properties:{},children:t.wrap([r],!0)};t.patch(e.children[0],o),s.push(o)}if(n.length>0){const o={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=ej(e.children[1]),c=uG(e.children[e.children.length-1]);l&&c&&(o.position={start:l,end:c}),s.push(o)}const a={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,a),t.applyData(e,a)}function zbe(t,e,n){const r=n?n.children:void 0,a=(r?r.indexOf(e):1)===0?"th":"td",o=n&&n.type==="table"?n.align:void 0,l=o?o.length:e.children.length;let c=-1;const d=[];for(;++c<l;){const h=e.children[c],f={},p=o?o[c]:void 0;p&&(f.align=p);let x={type:"element",tagName:a,properties:f,children:[]};h&&(x.children=t.all(h),t.patch(h,x),x=t.applyData(h,x)),d.push(x)}const u={type:"element",tagName:"tr",properties:{},children:t.wrap(d,!0)};return t.patch(e,u),t.applyData(e,u)}function Hbe(t,e){const n={type:"element",tagName:"td",properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}const nB=9,rB=32;function Gbe(t){const e=String(t),n=/\r?\n|\r/g;let r=n.exec(e),s=0;const a=[];for(;r;)a.push(sB(e.slice(s,r.index),s>0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return a.push(sB(e.slice(s),s>0,!1)),a.join("")}function sB(t,e,n){let r=0,s=t.length;if(e){let a=t.codePointAt(r);for(;a===nB||a===rB;)r++,a=t.codePointAt(r)}if(n){let a=t.codePointAt(s-1);for(;a===nB||a===rB;)s--,a=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function Wbe(t,e){const n={type:"text",value:Gbe(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function Vbe(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const $be={blockquote:_be,break:Sbe,code:wbe,delete:kbe,emphasis:Cbe,footnoteReference:Ebe,heading:Abe,html:Tbe,imageReference:Mbe,image:Nbe,inlineCode:jbe,linkReference:Rbe,link:Ibe,listItem:Pbe,list:Dbe,paragraph:Obe,root:Bbe,strong:Fbe,table:Ube,tableCell:Hbe,tableRow:zbe,text:Wbe,thematicBreak:Vbe,toml:Ev,yaml:Ev,definition:Ev,footnoteDefinition:Ev};function Ev(){}const IG=-1,RS=0,Eg=1,Q_=2,oj=3,lj=4,cj=5,dj=6,PG=7,LG=8,iB=typeof self=="object"?self:globalThis,Kbe=(t,e)=>{const n=(s,a)=>(t.set(a,s),s),r=s=>{if(t.has(s))return t.get(s);const[a,o]=e[s];switch(a){case RS:case IG:return n(o,s);case Eg:{const l=n([],s);for(const c of o)l.push(r(c));return l}case Q_:{const l=n({},s);for(const[c,d]of o)l[r(c)]=r(d);return l}case oj:return n(new Date(o),s);case lj:{const{source:l,flags:c}=o;return n(new RegExp(l,c),s)}case cj:{const l=n(new Map,s);for(const[c,d]of o)l.set(r(c),r(d));return l}case dj:{const l=n(new Set,s);for(const c of o)l.add(r(c));return l}case PG:{const{name:l,message:c}=o;return n(new iB[l](c),s)}case LG:return n(BigInt(o),s);case"BigInt":return n(Object(BigInt(o)),s);case"ArrayBuffer":return n(new Uint8Array(o).buffer,o);case"DataView":{const{buffer:l}=new Uint8Array(o);return n(new DataView(l),o)}}return n(new iB[a](o),s)};return r},aB=t=>Kbe(new Map,t)(0),Wh="",{toString:qbe}={},{keys:Xbe}=Object,Lm=t=>{const e=typeof t;if(e!=="object"||!t)return[RS,e];const n=qbe.call(t).slice(8,-1);switch(n){case"Array":return[Eg,Wh];case"Object":return[Q_,Wh];case"Date":return[oj,Wh];case"RegExp":return[lj,Wh];case"Map":return[cj,Wh];case"Set":return[dj,Wh];case"DataView":return[Eg,n]}return n.includes("Array")?[Eg,n]:n.includes("Error")?[PG,n]:[Q_,n]},Av=([t,e])=>t===RS&&(e==="function"||e==="symbol"),Ybe=(t,e,n,r)=>{const s=(o,l)=>{const c=r.push(o)-1;return n.set(l,c),c},a=o=>{if(n.has(o))return n.get(o);let[l,c]=Lm(o);switch(l){case RS:{let u=o;switch(c){case"bigint":l=LG,u=o.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);u=null;break;case"undefined":return s([IG],o)}return s([l,u],o)}case Eg:{if(c){let f=o;return c==="DataView"?f=new Uint8Array(o.buffer):c==="ArrayBuffer"&&(f=new Uint8Array(o)),s([c,[...f]],o)}const u=[],h=s([l,u],o);for(const f of o)u.push(a(f));return h}case Q_:{if(c)switch(c){case"BigInt":return s([c,o.toString()],o);case"Boolean":case"Number":case"String":return s([c,o.valueOf()],o)}if(e&&"toJSON"in o)return a(o.toJSON());const u=[],h=s([l,u],o);for(const f of Xbe(o))(t||!Av(Lm(o[f])))&&u.push([a(f),a(o[f])]);return h}case oj:return s([l,o.toISOString()],o);case lj:{const{source:u,flags:h}=o;return s([l,{source:u,flags:h}],o)}case cj:{const u=[],h=s([l,u],o);for(const[f,p]of o)(t||!(Av(Lm(f))||Av(Lm(p))))&&u.push([a(f),a(p)]);return h}case dj:{const u=[],h=s([l,u],o);for(const f of o)(t||!Av(Lm(f)))&&u.push(a(f));return h}}const{message:d}=o;return s([l,{name:c,message:d}],o)};return a},oB=(t,{json:e,lossy:n}={})=>{const r=[];return Ybe(!(e||n),!!e,new Map,r)(t),r},e1=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?aB(oB(t,e)):structuredClone(t):(t,e)=>aB(oB(t,e));function Jbe(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function Zbe(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function Qbe(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||Jbe,r=t.options.footnoteBackLabel||Zbe,s=t.options.footnoteLabel||"Footnotes",a=t.options.footnoteLabelTagName||"h2",o=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c<t.footnoteOrder.length;){const d=t.footnoteById.get(t.footnoteOrder[c]);if(!d)continue;const u=t.all(d),h=String(d.identifier).toUpperCase(),f=jp(h.toLowerCase());let p=0;const x=[],y=t.footnoteCounts.get(h);for(;y!==void 0&&++p<=y;){x.length>0&&x.push({type:"text",value:" "});let v=typeof n=="string"?n:n(c,p);typeof v=="string"&&(v={type:"text",value:v}),x.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+f+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,p),className:["data-footnote-backref"]},children:Array.isArray(v)?v:[v]})}const m=u[u.length-1];if(m&&m.type==="element"&&m.tagName==="p"){const v=m.children[m.children.length-1];v&&v.type==="text"?v.value+=" ":m.children.push({type:"text",value:" "}),m.children.push(...x)}else u.push(...x);const g={type:"element",tagName:"li",properties:{id:e+"fn-"+f},children:t.wrap(u,!0)};t.patch(d,g),l.push(g)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:a,properties:{...e1(o),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:`
|
|
4926
4926
|
`},{type:"element",tagName:"ol",properties:{},children:t.wrap(l,!0)},{type:"text",value:`
|
|
4927
|
-
`}]}}const Zx=function(t){if(t==null)return
|
|
4927
|
+
`}]}}const Zx=function(t){if(t==null)return r_e;if(typeof t=="function")return IS(t);if(typeof t=="object")return Array.isArray(t)?e_e(t):t_e(t);if(typeof t=="string")return n_e(t);throw new Error("Expected function, string, or object as test")};function e_e(t){const e=[];let n=-1;for(;++n<t.length;)e[n]=Zx(t[n]);return IS(r);function r(...s){let a=-1;for(;++a<e.length;)if(e[a].apply(this,s))return!0;return!1}}function t_e(t){const e=t;return IS(n);function n(r){const s=r;let a;for(a in t)if(s[a]!==e[a])return!1;return!0}}function n_e(t){return IS(e);function e(n){return n&&n.type===t}}function IS(t){return e;function e(n,r,s){return!!(s_e(n)&&t.call(this,n,typeof r=="number"?r:void 0,s||void 0))}}function r_e(){return!0}function s_e(t){return t!==null&&typeof t=="object"&&"type"in t}const DG=[],i_e=!0,OT=!1,OG="skip";function BG(t,e,n,r){let s;typeof e=="function"&&typeof n!="function"?(r=n,n=e):s=e;const a=Zx(s),o=r?-1:1;l(t,void 0,[])();function l(c,d,u){const h=c&&typeof c=="object"?c:{};if(typeof h.type=="string"){const p=typeof h.tagName=="string"?h.tagName:typeof h.name=="string"?h.name:void 0;Object.defineProperty(f,"name",{value:"node ("+(c.type+(p?"<"+p+">":""))+")"})}return f;function f(){let p=DG,x,y,m;if((!e||a(c,d,u[u.length-1]||void 0))&&(p=a_e(n(c,u)),p[0]===OT))return p;if("children"in c&&c.children){const g=c;if(g.children&&p[0]!==OG)for(y=(r?g.children.length:-1)+o,m=u.concat(g);y>-1&&y<g.children.length;){const v=g.children[y];if(x=l(v,y,m)(),x[0]===OT)return x;y=typeof x[1]=="number"?x[1]:y+o}}return p}}}function a_e(t){return Array.isArray(t)?t:typeof t=="number"?[i_e,t]:t==null?DG:[t]}function Qx(t,e,n,r){let s,a,o;typeof e=="function"&&typeof n!="function"?(a=void 0,o=e,s=n):(a=e,o=n,s=r),BG(t,a,l,s);function l(c,d){const u=d[d.length-1],h=u?u.children.indexOf(c):void 0;return o(c,h,u)}}const BT={}.hasOwnProperty,o_e={};function l_e(t,e){const n=e||o_e,r=new Map,s=new Map,a=new Map,o={...$be,...n.handlers},l={all:d,applyData:d_e,definitionById:r,footnoteById:s,footnoteCounts:a,footnoteOrder:[],handlers:o,one:c,options:n,patch:c_e,wrap:h_e};return Qx(t,function(u){if(u.type==="definition"||u.type==="footnoteDefinition"){const h=u.type==="definition"?r:s,f=String(u.identifier).toUpperCase();h.has(f)||h.set(f,u)}}),l;function c(u,h){const f=u.type,p=l.handlers[f];if(BT.call(l.handlers,f)&&p)return p(l,u,h);if(l.options.passThrough&&l.options.passThrough.includes(f)){if("children"in u){const{children:y,...m}=u,g=e1(m);return g.children=l.all(u),g}return e1(u)}return(l.options.unknownHandler||u_e)(l,u,h)}function d(u){const h=[];if("children"in u){const f=u.children;let p=-1;for(;++p<f.length;){const x=l.one(f[p],u);if(x){if(p&&f[p-1].type==="break"&&(!Array.isArray(x)&&x.type==="text"&&(x.value=lB(x.value)),!Array.isArray(x)&&x.type==="element")){const y=x.children[0];y&&y.type==="text"&&(y.value=lB(y.value))}Array.isArray(x)?h.push(...x):h.push(x)}}}return h}}function c_e(t,e){t.position&&(e.position=Z0e(t))}function d_e(t,e){let n=e;if(t&&t.data){const r=t.data.hName,s=t.data.hChildren,a=t.data.hProperties;if(typeof r=="string")if(n.type==="element")n.tagName=r;else{const o="children"in n?n.children:[n];n={type:"element",tagName:r,properties:{},children:o}}n.type==="element"&&a&&Object.assign(n.properties,e1(a)),"children"in n&&n.children&&s!==null&&s!==void 0&&(n.children=s)}return n}function u_e(t,e){const n=e.data||{},r="value"in e&&!(BT.call(n,"hProperties")||BT.call(n,"hChildren"))?{type:"text",value:e.value}:{type:"element",tagName:"div",properties:{},children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function h_e(t,e){const n=[];let r=-1;for(e&&n.push({type:"text",value:`
|
|
4928
4928
|
`});++r<t.length;)r&&n.push({type:"text",value:`
|
|
4929
4929
|
`}),n.push(t[r]);return e&&t.length>0&&n.push({type:"text",value:`
|
|
4930
|
-
`}),n}function lB(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function cB(t,e){const n=
|
|
4931
|
-
`},s),a}function h_e(t,e){return t&&"run"in t?async function(n,r){const s=cB(n,{file:r,...e});await t.run(s,r)}:function(n,r){return cB(n,{file:r,...t||e})}}function dB(t){if(t)throw t}var xb=Object.prototype.hasOwnProperty,FG=Object.prototype.toString,uB=Object.defineProperty,hB=Object.getOwnPropertyDescriptor,fB=function(e){return typeof Array.isArray=="function"?Array.isArray(e):FG.call(e)==="[object Array]"},pB=function(e){if(!e||FG.call(e)!=="[object Object]")return!1;var n=xb.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&xb.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;var s;for(s in e);return typeof s>"u"||xb.call(e,s)},mB=function(e,n){uB&&n.name==="__proto__"?uB(e,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):e[n.name]=n.newValue},gB=function(e,n){if(n==="__proto__")if(xb.call(e,n)){if(hB)return hB(e,n).value}else return;return e[n]},f_e=function t(){var e,n,r,s,a,o,l=arguments[0],c=1,d=arguments.length,u=!1;for(typeof l=="boolean"&&(u=l,l=arguments[1]||{},c=2),(l==null||typeof l!="object"&&typeof l!="function")&&(l={});c<d;++c)if(e=arguments[c],e!=null)for(n in e)r=gB(l,n),s=gB(e,n),l!==s&&(u&&s&&(pB(s)||(a=fB(s)))?(a?(a=!1,o=r&&fB(r)?r:[]):o=r&&pB(r)?r:{},mB(l,{name:n,newValue:t(u,o,s)})):typeof s<"u"&&mB(l,{name:n,newValue:s}));return l};const JC=lp(f_e);function FT(t){if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}function p_e(){const t=[],e={run:n,use:r};return e;function n(...s){let a=-1;const o=s.pop();if(typeof o!="function")throw new TypeError("Expected function as last argument, not "+o);l(null,...s);function l(c,...d){const u=t[++a];let h=-1;if(c){o(c);return}for(;++h<s.length;)(d[h]===null||d[h]===void 0)&&(d[h]=s[h]);s=d,u?m_e(u,l)(...d):o(null,...d)}}function r(s){if(typeof s!="function")throw new TypeError("Expected `middelware` to be a function, not "+s);return t.push(s),e}}function m_e(t,e){let n;return r;function r(...o){const l=t.length>o.length;let c;l&&o.push(s);try{c=t.apply(this,o)}catch(d){const u=d;if(l&&n)throw u;return s(u)}l||(c&&c.then&&typeof c.then=="function"?c.then(a,s):c instanceof Error?s(c):a(c))}function s(o,...l){n||(n=!0,e(o,...l))}function a(o){s(null,o)}}const Oo={basename:g_e,dirname:x_e,extname:y_e,join:v_e,sep:"/"};function g_e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');e0(t);let n=0,r=-1,s=t.length,a;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(a){n=s+1;break}}else r<0&&(a=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let o=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(a){n=s+1;break}}else o<0&&(a=!0,o=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=o));return n===r?r=o:r<0&&(r=t.length),t.slice(n,r)}function x_e(t){if(e0(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function y_e(t){e0(t);let e=t.length,n=-1,r=0,s=-1,a=0,o;for(;e--;){const l=t.codePointAt(e);if(l===47){if(o){r=e+1;break}continue}n<0&&(o=!0,n=e+1),l===46?s<0?s=e:a!==1&&(a=1):s>-1&&(a=-1)}return s<0||n<0||a===0||a===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function v_e(...t){let e=-1,n;for(;++e<t.length;)e0(t[e]),t[e]&&(n=n===void 0?t[e]:n+"/"+t[e]);return n===void 0?".":b_e(n)}function b_e(t){e0(t);const e=t.codePointAt(0)===47;let n=__e(t,!e);return n.length===0&&!e&&(n="."),n.length>0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function __e(t,e){let n="",r=0,s=-1,a=0,o=-1,l,c;for(;++o<=t.length;){if(o<t.length)l=t.codePointAt(o);else{if(l===47)break;l=47}if(l===47){if(!(s===o-1||a===1))if(s!==o-1&&a===2){if(n.length<2||r!==2||n.codePointAt(n.length-1)!==46||n.codePointAt(n.length-2)!==46){if(n.length>2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=o,a=0;continue}}else if(n.length>0){n="",r=0,s=o,a=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,o):n=t.slice(s+1,o),r=o-s-1;s=o,a=0}else l===46&&a>-1?a++:a=-1}return n}function e0(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const S_e={cwd:w_e};function w_e(){return"/"}function UT(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function k_e(t){if(typeof t=="string")t=new URL(t);else if(!UT(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return C_e(t)}function C_e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n<e.length;)if(e.codePointAt(n)===37&&e.codePointAt(n+1)===50){const r=e.codePointAt(n+2);if(r===70||r===102){const s=new TypeError("File URL path must not include encoded / characters");throw s.code="ERR_INVALID_FILE_URL_PATH",s}}return decodeURIComponent(e)}const ZC=["history","path","basename","stem","extname","dirname"];class UG{constructor(e){let n;e?UT(e)?n={path:e}:typeof e=="string"||E_e(e)?n={value:e}:n=e:n={},this.cwd="cwd"in n?"":S_e.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let r=-1;for(;++r<ZC.length;){const a=ZC[r];a in n&&n[a]!==void 0&&n[a]!==null&&(this[a]=a==="history"?[...n[a]]:n[a])}let s;for(s in n)ZC.includes(s)||(this[s]=n[s])}get basename(){return typeof this.path=="string"?Oo.basename(this.path):void 0}set basename(e){eE(e,"basename"),QC(e,"basename"),this.path=Oo.join(this.dirname||"",e)}get dirname(){return typeof this.path=="string"?Oo.dirname(this.path):void 0}set dirname(e){xB(this.basename,"dirname"),this.path=Oo.join(e||"",this.basename)}get extname(){return typeof this.path=="string"?Oo.extname(this.path):void 0}set extname(e){if(QC(e,"extname"),xB(this.dirname,"extname"),e){if(e.codePointAt(0)!==46)throw new Error("`extname` must start with `.`");if(e.includes(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Oo.join(this.dirname,this.stem+(e||""))}get path(){return this.history[this.history.length-1]}set path(e){UT(e)&&(e=k_e(e)),eE(e,"path"),this.path!==e&&this.history.push(e)}get stem(){return typeof this.path=="string"?Oo.basename(this.path,this.extname):void 0}set stem(e){eE(e,"stem"),QC(e,"stem"),this.path=Oo.join(this.dirname||"",e+(this.extname||""))}fail(e,n,r){const s=this.message(e,n,r);throw s.fatal=!0,s}info(e,n,r){const s=this.message(e,n,r);return s.fatal=void 0,s}message(e,n,r){const s=new ri(e,n,r);return this.path&&(s.name=this.path+":"+s.name,s.file=this.path),s.fatal=!1,this.messages.push(s),s}toString(e){return this.value===void 0?"":typeof this.value=="string"?this.value:new TextDecoder(e||void 0).decode(this.value)}}function QC(t,e){if(t&&t.includes(Oo.sep))throw new Error("`"+e+"` cannot be a path: did not expect `"+Oo.sep+"`")}function eE(t,e){if(!t)throw new Error("`"+e+"` cannot be empty")}function xB(t,e){if(!t)throw new Error("Setting `"+e+"` requires `path` to be set too")}function E_e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const A_e=function(t){const r=this.constructor.prototype,s=r[t],a=function(){return s.apply(a,arguments)};return Object.setPrototypeOf(a,r),a},T_e={}.hasOwnProperty;class uj extends A_e{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=p_e()}copy(){const e=new uj;let n=-1;for(;++n<this.attachers.length;){const r=this.attachers[n];e.use(...r)}return e.data(JC(!0,{},this.namespace)),e}data(e,n){return typeof e=="string"?arguments.length===2?(rE("data",this.frozen),this.namespace[e]=n,this):T_e.call(this.namespace,e)&&this.namespace[e]||void 0:e?(rE("data",this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;const e=this;for(;++this.freezeIndex<this.attachers.length;){const[n,...r]=this.attachers[this.freezeIndex];if(r[0]===!1)continue;r[0]===!0&&(r[0]=void 0);const s=n.call(e,...r);typeof s=="function"&&this.transformers.use(s)}return this.frozen=!0,this.freezeIndex=Number.POSITIVE_INFINITY,this}parse(e){this.freeze();const n=Tv(e),r=this.parser||this.Parser;return tE("parse",r),r(String(n),n)}process(e,n){const r=this;return this.freeze(),tE("process",this.parser||this.Parser),nE("process",this.compiler||this.Compiler),n?s(void 0,n):new Promise(s);function s(a,o){const l=Tv(e),c=r.parse(l);r.run(c,l,function(u,h,f){if(u||!h||!f)return d(u);const p=h,x=r.stringify(p,f);j_e(x)?f.value=x:f.result=x,d(u,f)});function d(u,h){u||!h?o(u):a?a(h):n(void 0,h)}}}processSync(e){let n=!1,r;return this.freeze(),tE("processSync",this.parser||this.Parser),nE("processSync",this.compiler||this.Compiler),this.process(e,s),vB("processSync","process",n),r;function s(a,o){n=!0,dB(a),r=o}}run(e,n,r){yB(e),this.freeze();const s=this.transformers;return!r&&typeof n=="function"&&(r=n,n=void 0),r?a(void 0,r):new Promise(a);function a(o,l){const c=Tv(n);s.run(e,c,d);function d(u,h,f){const p=h||e;u?l(u):o?o(p):r(void 0,p,f)}}}runSync(e,n){let r=!1,s;return this.run(e,n,a),vB("runSync","run",r),s;function a(o,l){dB(o),s=l,r=!0}}stringify(e,n){this.freeze();const r=Tv(n),s=this.compiler||this.Compiler;return nE("stringify",s),yB(e),s(e,r)}use(e,...n){const r=this.attachers,s=this.namespace;if(rE("use",this.frozen),e!=null)if(typeof e=="function")c(e,n);else if(typeof e=="object")Array.isArray(e)?l(e):o(e);else throw new TypeError("Expected usable value, not `"+e+"`");return this;function a(d){if(typeof d=="function")c(d,[]);else if(typeof d=="object")if(Array.isArray(d)){const[u,...h]=d;c(u,h)}else o(d);else throw new TypeError("Expected usable value, not `"+d+"`")}function o(d){if(!("plugins"in d)&&!("settings"in d))throw new Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");l(d.plugins),d.settings&&(s.settings=JC(!0,s.settings,d.settings))}function l(d){let u=-1;if(d!=null)if(Array.isArray(d))for(;++u<d.length;){const h=d[u];a(h)}else throw new TypeError("Expected a list of plugins, not `"+d+"`")}function c(d,u){let h=-1,f=-1;for(;++h<r.length;)if(r[h][0]===d){f=h;break}if(f===-1)r.push([d,...u]);else if(u.length>0){let[p,...x]=u;const y=r[f][1];FT(y)&&FT(p)&&(p=JC(!0,y,p)),r[f]=[d,p,...x]}}}}const M_e=new uj().freeze();function tE(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function nE(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function rE(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function yB(t){if(!FT(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function vB(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function Tv(t){return N_e(t)?t:new UG(t)}function N_e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function j_e(t){return typeof t=="string"||R_e(t)}function R_e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const I_e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",bB=[],_B={allowDangerousHtml:!0},P_e=/^(https?|ircs?|mailto|xmpp)$/i,L_e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function D_e(t){const e=O_e(t),n=B_e(t);return F_e(e.runSync(e.parse(n),n),t)}function O_e(t){const e=t.rehypePlugins||bB,n=t.remarkPlugins||bB,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,..._B}:_B;return M_e().use(vbe).use(n).use(h_e,r).use(e)}function B_e(t){const e=t.children||"",n=new UG;return typeof e=="string"&&(n.value=e),n}function F_e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,a=e.disallowedElements,o=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||U_e;for(const u of L_e)Object.hasOwn(e,u.from)&&(""+u.from+(u.to?"use `"+u.to+"` instead":"remove it")+I_e+u.id,void 0);return e.className&&(t={type:"element",tagName:"div",properties:{className:e.className},children:t.type==="root"?t.children:[t]}),Qx(t,d),nye(t,{Fragment:i.Fragment,components:s,ignoreInvalidStyle:!0,jsx:i.jsx,jsxs:i.jsxs,passKeys:!0,passNode:!0});function d(u,h,f){if(u.type==="raw"&&f&&typeof h=="number")return o?f.children.splice(h,1):f.children[h]={type:"text",value:u.value},h;if(u.type==="element"){let p;for(p in qC)if(Object.hasOwn(qC,p)&&Object.hasOwn(u.properties,p)){const x=u.properties[p],y=qC[p];(y===null||y.includes(u.tagName))&&(u.properties[p]=c(String(x||""),p,u))}}if(u.type==="element"){let p=n?!n.includes(u.tagName):a?a.includes(u.tagName):!1;if(!p&&r&&typeof h=="number"&&(p=!r(u,h,f)),p&&f&&typeof h=="number")return l&&u.children?f.children.splice(h,1,...u.children):f.children.splice(h,1),h}}}function U_e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||P_e.test(t.slice(0,e))?t:""}function SB(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function z_e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function H_e(t,e,n){const s=Zx((n||{}).ignore||[]),a=G_e(e);let o=-1;for(;++o<a.length;)BG(t,"text",l);function l(d,u){let h=-1,f;for(;++h<u.length;){const p=u[h],x=f?f.children:void 0;if(s(p,x?x.indexOf(p):void 0,f))return;f=p}if(f)return c(d,u)}function c(d,u){const h=u[u.length-1],f=a[o][0],p=a[o][1];let x=0;const m=h.children.indexOf(d);let g=!1,v=[];f.lastIndex=0;let b=f.exec(d.value);for(;b;){const S=b.index,C={index:b.index,input:b.input,stack:[...u,d]};let E=p(...b,C);if(typeof E=="string"&&(E=E.length>0?{type:"text",value:E}:void 0),E===!1?f.lastIndex=S+1:(x!==S&&v.push({type:"text",value:d.value.slice(x,S)}),Array.isArray(E)?v.push(...E):E&&v.push(E),x=S+b[0].length,g=!0),!f.global)break;b=f.exec(d.value)}return g?(x<d.value.length&&v.push({type:"text",value:d.value.slice(x)}),h.children.splice(m,1,...v)):v=[d],m+v.length}}function G_e(t){const e=[];if(!Array.isArray(t))throw new TypeError("Expected find and replace tuple or list of tuples");const n=!t[0]||Array.isArray(t[0])?t:[t];let r=-1;for(;++r<n.length;){const s=n[r];e.push([W_e(s[0]),V_e(s[1])])}return e}function W_e(t){return typeof t=="string"?new RegExp(z_e(t),"g"):t}function V_e(t){return typeof t=="function"?t:function(){return t}}const sE="phrasing",iE=["autolink","link","image","label"];function $_e(){return{transforms:[Q_e],enter:{literalAutolink:q_e,literalAutolinkEmail:aE,literalAutolinkHttp:aE,literalAutolinkWww:aE},exit:{literalAutolink:Z_e,literalAutolinkEmail:J_e,literalAutolinkHttp:X_e,literalAutolinkWww:Y_e}}}function K_e(){return{unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:sE,notInConstruct:iE},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:sE,notInConstruct:iE},{character:":",before:"[ps]",after:"\\/",inConstruct:sE,notInConstruct:iE}]}}function q_e(t){this.enter({type:"link",title:null,url:"",children:[]},t)}function aE(t){this.config.enter.autolinkProtocol.call(this,t)}function X_e(t){this.config.exit.autolinkProtocol.call(this,t)}function Y_e(t){this.config.exit.data.call(this,t);const e=this.stack[this.stack.length-1];e.type,e.url="http://"+this.sliceSerialize(t)}function J_e(t){this.config.exit.autolinkEmail.call(this,t)}function Z_e(t){this.exit(t)}function Q_e(t){H_e(t,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,e1e],[new RegExp("(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)","gu"),t1e]],{ignore:["link","linkReference"]})}function e1e(t,e,n,r,s){let a="";if(!zG(s)||(/^w/i.test(e)&&(n=e+n,e="",a="http://"),!n1e(n)))return!1;const o=r1e(n+r);if(!o[0])return!1;const l={type:"link",title:null,url:a+e+o[0],children:[{type:"text",value:e+o[0]}]};return o[1]?[l,{type:"text",value:o[1]}]:l}function t1e(t,e,n,r){return!zG(r,!0)||/[-\d_]$/.test(n)?!1:{type:"link",title:null,url:"mailto:"+e+"@"+n,children:[{type:"text",value:e+"@"+n}]}}function n1e(t){const e=t.split(".");return!(e.length<2||e[e.length-1]&&(/_/.test(e[e.length-1])||!/[a-zA-Z\d]/.test(e[e.length-1]))||e[e.length-2]&&(/_/.test(e[e.length-2])||!/[a-zA-Z\d]/.test(e[e.length-2])))}function r1e(t){const e=/[!"&'),.:;<>?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=SB(t,"(");let a=SB(t,")");for(;r!==-1&&s>a;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),a++;return[t,n]}function zG(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||Uu(n)||NS(n))&&(!e||n!==47)}HG.peek=h1e;function s1e(){this.buffer()}function i1e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function a1e(){this.buffer()}function o1e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function l1e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=po(this.sliceSerialize(t)).toLowerCase(),n.label=e}function c1e(t){this.exit(t)}function d1e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=po(this.sliceSerialize(t)).toLowerCase(),n.label=e}function u1e(t){this.exit(t)}function h1e(){return"["}function HG(t,e,n,r){const s=n.createTracker(r);let a=s.move("[^");const o=n.enter("footnoteReference"),l=n.enter("reference");return a+=s.move(n.safe(n.associationId(t),{after:"]",before:a})),l(),o(),a+=s.move("]"),a}function f1e(){return{enter:{gfmFootnoteCallString:s1e,gfmFootnoteCall:i1e,gfmFootnoteDefinitionLabelString:a1e,gfmFootnoteDefinition:o1e},exit:{gfmFootnoteCallString:l1e,gfmFootnoteCall:c1e,gfmFootnoteDefinitionLabelString:d1e,gfmFootnoteDefinition:u1e}}}function p1e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:HG},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,a,o){const l=a.createTracker(o);let c=l.move("[^");const d=a.enter("footnoteDefinition"),u=a.enter("label");return c+=l.move(a.safe(a.associationId(r),{before:c,after:"]"})),u(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?`
|
|
4932
|
-
`:" ")+a.indentLines(a.containerFlow(r,l.current()),e?GG:
|
|
4933
|
-
`)}function
|
|
4934
|
-
`&&
|
|
4935
|
-
`}function
|
|
4930
|
+
`}),n}function lB(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function cB(t,e){const n=l_e(t,e),r=n.one(t,void 0),s=Qbe(n),a=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&a.children.push({type:"text",value:`
|
|
4931
|
+
`},s),a}function f_e(t,e){return t&&"run"in t?async function(n,r){const s=cB(n,{file:r,...e});await t.run(s,r)}:function(n,r){return cB(n,{file:r,...t||e})}}function dB(t){if(t)throw t}var xb=Object.prototype.hasOwnProperty,FG=Object.prototype.toString,uB=Object.defineProperty,hB=Object.getOwnPropertyDescriptor,fB=function(e){return typeof Array.isArray=="function"?Array.isArray(e):FG.call(e)==="[object Array]"},pB=function(e){if(!e||FG.call(e)!=="[object Object]")return!1;var n=xb.call(e,"constructor"),r=e.constructor&&e.constructor.prototype&&xb.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!r)return!1;var s;for(s in e);return typeof s>"u"||xb.call(e,s)},mB=function(e,n){uB&&n.name==="__proto__"?uB(e,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):e[n.name]=n.newValue},gB=function(e,n){if(n==="__proto__")if(xb.call(e,n)){if(hB)return hB(e,n).value}else return;return e[n]},p_e=function t(){var e,n,r,s,a,o,l=arguments[0],c=1,d=arguments.length,u=!1;for(typeof l=="boolean"&&(u=l,l=arguments[1]||{},c=2),(l==null||typeof l!="object"&&typeof l!="function")&&(l={});c<d;++c)if(e=arguments[c],e!=null)for(n in e)r=gB(l,n),s=gB(e,n),l!==s&&(u&&s&&(pB(s)||(a=fB(s)))?(a?(a=!1,o=r&&fB(r)?r:[]):o=r&&pB(r)?r:{},mB(l,{name:n,newValue:t(u,o,s)})):typeof s<"u"&&mB(l,{name:n,newValue:s}));return l};const JC=lp(p_e);function FT(t){if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}function m_e(){const t=[],e={run:n,use:r};return e;function n(...s){let a=-1;const o=s.pop();if(typeof o!="function")throw new TypeError("Expected function as last argument, not "+o);l(null,...s);function l(c,...d){const u=t[++a];let h=-1;if(c){o(c);return}for(;++h<s.length;)(d[h]===null||d[h]===void 0)&&(d[h]=s[h]);s=d,u?g_e(u,l)(...d):o(null,...d)}}function r(s){if(typeof s!="function")throw new TypeError("Expected `middelware` to be a function, not "+s);return t.push(s),e}}function g_e(t,e){let n;return r;function r(...o){const l=t.length>o.length;let c;l&&o.push(s);try{c=t.apply(this,o)}catch(d){const u=d;if(l&&n)throw u;return s(u)}l||(c&&c.then&&typeof c.then=="function"?c.then(a,s):c instanceof Error?s(c):a(c))}function s(o,...l){n||(n=!0,e(o,...l))}function a(o){s(null,o)}}const Oo={basename:x_e,dirname:y_e,extname:v_e,join:b_e,sep:"/"};function x_e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');e0(t);let n=0,r=-1,s=t.length,a;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(a){n=s+1;break}}else r<0&&(a=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let o=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(a){n=s+1;break}}else o<0&&(a=!0,o=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=o));return n===r?r=o:r<0&&(r=t.length),t.slice(n,r)}function y_e(t){if(e0(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function v_e(t){e0(t);let e=t.length,n=-1,r=0,s=-1,a=0,o;for(;e--;){const l=t.codePointAt(e);if(l===47){if(o){r=e+1;break}continue}n<0&&(o=!0,n=e+1),l===46?s<0?s=e:a!==1&&(a=1):s>-1&&(a=-1)}return s<0||n<0||a===0||a===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function b_e(...t){let e=-1,n;for(;++e<t.length;)e0(t[e]),t[e]&&(n=n===void 0?t[e]:n+"/"+t[e]);return n===void 0?".":__e(n)}function __e(t){e0(t);const e=t.codePointAt(0)===47;let n=S_e(t,!e);return n.length===0&&!e&&(n="."),n.length>0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function S_e(t,e){let n="",r=0,s=-1,a=0,o=-1,l,c;for(;++o<=t.length;){if(o<t.length)l=t.codePointAt(o);else{if(l===47)break;l=47}if(l===47){if(!(s===o-1||a===1))if(s!==o-1&&a===2){if(n.length<2||r!==2||n.codePointAt(n.length-1)!==46||n.codePointAt(n.length-2)!==46){if(n.length>2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=o,a=0;continue}}else if(n.length>0){n="",r=0,s=o,a=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,o):n=t.slice(s+1,o),r=o-s-1;s=o,a=0}else l===46&&a>-1?a++:a=-1}return n}function e0(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const w_e={cwd:k_e};function k_e(){return"/"}function UT(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function C_e(t){if(typeof t=="string")t=new URL(t);else if(!UT(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return E_e(t)}function E_e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n<e.length;)if(e.codePointAt(n)===37&&e.codePointAt(n+1)===50){const r=e.codePointAt(n+2);if(r===70||r===102){const s=new TypeError("File URL path must not include encoded / characters");throw s.code="ERR_INVALID_FILE_URL_PATH",s}}return decodeURIComponent(e)}const ZC=["history","path","basename","stem","extname","dirname"];class UG{constructor(e){let n;e?UT(e)?n={path:e}:typeof e=="string"||A_e(e)?n={value:e}:n=e:n={},this.cwd="cwd"in n?"":w_e.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let r=-1;for(;++r<ZC.length;){const a=ZC[r];a in n&&n[a]!==void 0&&n[a]!==null&&(this[a]=a==="history"?[...n[a]]:n[a])}let s;for(s in n)ZC.includes(s)||(this[s]=n[s])}get basename(){return typeof this.path=="string"?Oo.basename(this.path):void 0}set basename(e){eE(e,"basename"),QC(e,"basename"),this.path=Oo.join(this.dirname||"",e)}get dirname(){return typeof this.path=="string"?Oo.dirname(this.path):void 0}set dirname(e){xB(this.basename,"dirname"),this.path=Oo.join(e||"",this.basename)}get extname(){return typeof this.path=="string"?Oo.extname(this.path):void 0}set extname(e){if(QC(e,"extname"),xB(this.dirname,"extname"),e){if(e.codePointAt(0)!==46)throw new Error("`extname` must start with `.`");if(e.includes(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Oo.join(this.dirname,this.stem+(e||""))}get path(){return this.history[this.history.length-1]}set path(e){UT(e)&&(e=C_e(e)),eE(e,"path"),this.path!==e&&this.history.push(e)}get stem(){return typeof this.path=="string"?Oo.basename(this.path,this.extname):void 0}set stem(e){eE(e,"stem"),QC(e,"stem"),this.path=Oo.join(this.dirname||"",e+(this.extname||""))}fail(e,n,r){const s=this.message(e,n,r);throw s.fatal=!0,s}info(e,n,r){const s=this.message(e,n,r);return s.fatal=void 0,s}message(e,n,r){const s=new ri(e,n,r);return this.path&&(s.name=this.path+":"+s.name,s.file=this.path),s.fatal=!1,this.messages.push(s),s}toString(e){return this.value===void 0?"":typeof this.value=="string"?this.value:new TextDecoder(e||void 0).decode(this.value)}}function QC(t,e){if(t&&t.includes(Oo.sep))throw new Error("`"+e+"` cannot be a path: did not expect `"+Oo.sep+"`")}function eE(t,e){if(!t)throw new Error("`"+e+"` cannot be empty")}function xB(t,e){if(!t)throw new Error("Setting `"+e+"` requires `path` to be set too")}function A_e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const T_e=function(t){const r=this.constructor.prototype,s=r[t],a=function(){return s.apply(a,arguments)};return Object.setPrototypeOf(a,r),a},M_e={}.hasOwnProperty;class uj extends T_e{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=m_e()}copy(){const e=new uj;let n=-1;for(;++n<this.attachers.length;){const r=this.attachers[n];e.use(...r)}return e.data(JC(!0,{},this.namespace)),e}data(e,n){return typeof e=="string"?arguments.length===2?(rE("data",this.frozen),this.namespace[e]=n,this):M_e.call(this.namespace,e)&&this.namespace[e]||void 0:e?(rE("data",this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;const e=this;for(;++this.freezeIndex<this.attachers.length;){const[n,...r]=this.attachers[this.freezeIndex];if(r[0]===!1)continue;r[0]===!0&&(r[0]=void 0);const s=n.call(e,...r);typeof s=="function"&&this.transformers.use(s)}return this.frozen=!0,this.freezeIndex=Number.POSITIVE_INFINITY,this}parse(e){this.freeze();const n=Tv(e),r=this.parser||this.Parser;return tE("parse",r),r(String(n),n)}process(e,n){const r=this;return this.freeze(),tE("process",this.parser||this.Parser),nE("process",this.compiler||this.Compiler),n?s(void 0,n):new Promise(s);function s(a,o){const l=Tv(e),c=r.parse(l);r.run(c,l,function(u,h,f){if(u||!h||!f)return d(u);const p=h,x=r.stringify(p,f);R_e(x)?f.value=x:f.result=x,d(u,f)});function d(u,h){u||!h?o(u):a?a(h):n(void 0,h)}}}processSync(e){let n=!1,r;return this.freeze(),tE("processSync",this.parser||this.Parser),nE("processSync",this.compiler||this.Compiler),this.process(e,s),vB("processSync","process",n),r;function s(a,o){n=!0,dB(a),r=o}}run(e,n,r){yB(e),this.freeze();const s=this.transformers;return!r&&typeof n=="function"&&(r=n,n=void 0),r?a(void 0,r):new Promise(a);function a(o,l){const c=Tv(n);s.run(e,c,d);function d(u,h,f){const p=h||e;u?l(u):o?o(p):r(void 0,p,f)}}}runSync(e,n){let r=!1,s;return this.run(e,n,a),vB("runSync","run",r),s;function a(o,l){dB(o),s=l,r=!0}}stringify(e,n){this.freeze();const r=Tv(n),s=this.compiler||this.Compiler;return nE("stringify",s),yB(e),s(e,r)}use(e,...n){const r=this.attachers,s=this.namespace;if(rE("use",this.frozen),e!=null)if(typeof e=="function")c(e,n);else if(typeof e=="object")Array.isArray(e)?l(e):o(e);else throw new TypeError("Expected usable value, not `"+e+"`");return this;function a(d){if(typeof d=="function")c(d,[]);else if(typeof d=="object")if(Array.isArray(d)){const[u,...h]=d;c(u,h)}else o(d);else throw new TypeError("Expected usable value, not `"+d+"`")}function o(d){if(!("plugins"in d)&&!("settings"in d))throw new Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");l(d.plugins),d.settings&&(s.settings=JC(!0,s.settings,d.settings))}function l(d){let u=-1;if(d!=null)if(Array.isArray(d))for(;++u<d.length;){const h=d[u];a(h)}else throw new TypeError("Expected a list of plugins, not `"+d+"`")}function c(d,u){let h=-1,f=-1;for(;++h<r.length;)if(r[h][0]===d){f=h;break}if(f===-1)r.push([d,...u]);else if(u.length>0){let[p,...x]=u;const y=r[f][1];FT(y)&&FT(p)&&(p=JC(!0,y,p)),r[f]=[d,p,...x]}}}}const N_e=new uj().freeze();function tE(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function nE(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function rE(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function yB(t){if(!FT(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function vB(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function Tv(t){return j_e(t)?t:new UG(t)}function j_e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function R_e(t){return typeof t=="string"||I_e(t)}function I_e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const P_e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",bB=[],_B={allowDangerousHtml:!0},L_e=/^(https?|ircs?|mailto|xmpp)$/i,D_e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function O_e(t){const e=B_e(t),n=F_e(t);return U_e(e.runSync(e.parse(n),n),t)}function B_e(t){const e=t.rehypePlugins||bB,n=t.remarkPlugins||bB,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,..._B}:_B;return N_e().use(bbe).use(n).use(f_e,r).use(e)}function F_e(t){const e=t.children||"",n=new UG;return typeof e=="string"&&(n.value=e),n}function U_e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,a=e.disallowedElements,o=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||z_e;for(const u of D_e)Object.hasOwn(e,u.from)&&(""+u.from+(u.to?"use `"+u.to+"` instead":"remove it")+P_e+u.id,void 0);return e.className&&(t={type:"element",tagName:"div",properties:{className:e.className},children:t.type==="root"?t.children:[t]}),Qx(t,d),rye(t,{Fragment:i.Fragment,components:s,ignoreInvalidStyle:!0,jsx:i.jsx,jsxs:i.jsxs,passKeys:!0,passNode:!0});function d(u,h,f){if(u.type==="raw"&&f&&typeof h=="number")return o?f.children.splice(h,1):f.children[h]={type:"text",value:u.value},h;if(u.type==="element"){let p;for(p in qC)if(Object.hasOwn(qC,p)&&Object.hasOwn(u.properties,p)){const x=u.properties[p],y=qC[p];(y===null||y.includes(u.tagName))&&(u.properties[p]=c(String(x||""),p,u))}}if(u.type==="element"){let p=n?!n.includes(u.tagName):a?a.includes(u.tagName):!1;if(!p&&r&&typeof h=="number"&&(p=!r(u,h,f)),p&&f&&typeof h=="number")return l&&u.children?f.children.splice(h,1,...u.children):f.children.splice(h,1),h}}}function z_e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||L_e.test(t.slice(0,e))?t:""}function SB(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function H_e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function G_e(t,e,n){const s=Zx((n||{}).ignore||[]),a=W_e(e);let o=-1;for(;++o<a.length;)BG(t,"text",l);function l(d,u){let h=-1,f;for(;++h<u.length;){const p=u[h],x=f?f.children:void 0;if(s(p,x?x.indexOf(p):void 0,f))return;f=p}if(f)return c(d,u)}function c(d,u){const h=u[u.length-1],f=a[o][0],p=a[o][1];let x=0;const m=h.children.indexOf(d);let g=!1,v=[];f.lastIndex=0;let b=f.exec(d.value);for(;b;){const S=b.index,C={index:b.index,input:b.input,stack:[...u,d]};let E=p(...b,C);if(typeof E=="string"&&(E=E.length>0?{type:"text",value:E}:void 0),E===!1?f.lastIndex=S+1:(x!==S&&v.push({type:"text",value:d.value.slice(x,S)}),Array.isArray(E)?v.push(...E):E&&v.push(E),x=S+b[0].length,g=!0),!f.global)break;b=f.exec(d.value)}return g?(x<d.value.length&&v.push({type:"text",value:d.value.slice(x)}),h.children.splice(m,1,...v)):v=[d],m+v.length}}function W_e(t){const e=[];if(!Array.isArray(t))throw new TypeError("Expected find and replace tuple or list of tuples");const n=!t[0]||Array.isArray(t[0])?t:[t];let r=-1;for(;++r<n.length;){const s=n[r];e.push([V_e(s[0]),$_e(s[1])])}return e}function V_e(t){return typeof t=="string"?new RegExp(H_e(t),"g"):t}function $_e(t){return typeof t=="function"?t:function(){return t}}const sE="phrasing",iE=["autolink","link","image","label"];function K_e(){return{transforms:[e1e],enter:{literalAutolink:X_e,literalAutolinkEmail:aE,literalAutolinkHttp:aE,literalAutolinkWww:aE},exit:{literalAutolink:Q_e,literalAutolinkEmail:Z_e,literalAutolinkHttp:Y_e,literalAutolinkWww:J_e}}}function q_e(){return{unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:sE,notInConstruct:iE},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:sE,notInConstruct:iE},{character:":",before:"[ps]",after:"\\/",inConstruct:sE,notInConstruct:iE}]}}function X_e(t){this.enter({type:"link",title:null,url:"",children:[]},t)}function aE(t){this.config.enter.autolinkProtocol.call(this,t)}function Y_e(t){this.config.exit.autolinkProtocol.call(this,t)}function J_e(t){this.config.exit.data.call(this,t);const e=this.stack[this.stack.length-1];e.type,e.url="http://"+this.sliceSerialize(t)}function Z_e(t){this.config.exit.autolinkEmail.call(this,t)}function Q_e(t){this.exit(t)}function e1e(t){G_e(t,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,t1e],[new RegExp("(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)","gu"),n1e]],{ignore:["link","linkReference"]})}function t1e(t,e,n,r,s){let a="";if(!zG(s)||(/^w/i.test(e)&&(n=e+n,e="",a="http://"),!r1e(n)))return!1;const o=s1e(n+r);if(!o[0])return!1;const l={type:"link",title:null,url:a+e+o[0],children:[{type:"text",value:e+o[0]}]};return o[1]?[l,{type:"text",value:o[1]}]:l}function n1e(t,e,n,r){return!zG(r,!0)||/[-\d_]$/.test(n)?!1:{type:"link",title:null,url:"mailto:"+e+"@"+n,children:[{type:"text",value:e+"@"+n}]}}function r1e(t){const e=t.split(".");return!(e.length<2||e[e.length-1]&&(/_/.test(e[e.length-1])||!/[a-zA-Z\d]/.test(e[e.length-1]))||e[e.length-2]&&(/_/.test(e[e.length-2])||!/[a-zA-Z\d]/.test(e[e.length-2])))}function s1e(t){const e=/[!"&'),.:;<>?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=SB(t,"(");let a=SB(t,")");for(;r!==-1&&s>a;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),a++;return[t,n]}function zG(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||Uu(n)||NS(n))&&(!e||n!==47)}HG.peek=f1e;function i1e(){this.buffer()}function a1e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function o1e(){this.buffer()}function l1e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function c1e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=po(this.sliceSerialize(t)).toLowerCase(),n.label=e}function d1e(t){this.exit(t)}function u1e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=po(this.sliceSerialize(t)).toLowerCase(),n.label=e}function h1e(t){this.exit(t)}function f1e(){return"["}function HG(t,e,n,r){const s=n.createTracker(r);let a=s.move("[^");const o=n.enter("footnoteReference"),l=n.enter("reference");return a+=s.move(n.safe(n.associationId(t),{after:"]",before:a})),l(),o(),a+=s.move("]"),a}function p1e(){return{enter:{gfmFootnoteCallString:i1e,gfmFootnoteCall:a1e,gfmFootnoteDefinitionLabelString:o1e,gfmFootnoteDefinition:l1e},exit:{gfmFootnoteCallString:c1e,gfmFootnoteCall:d1e,gfmFootnoteDefinitionLabelString:u1e,gfmFootnoteDefinition:h1e}}}function m1e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:HG},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,a,o){const l=a.createTracker(o);let c=l.move("[^");const d=a.enter("footnoteDefinition"),u=a.enter("label");return c+=l.move(a.safe(a.associationId(r),{before:c,after:"]"})),u(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?`
|
|
4932
|
+
`:" ")+a.indentLines(a.containerFlow(r,l.current()),e?GG:g1e))),d(),c}}function g1e(t,e,n){return e===0?t:GG(t,e,n)}function GG(t,e,n){return(n?"":" ")+t}const x1e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];WG.peek=S1e;function y1e(){return{canContainEols:["delete"],enter:{strikethrough:b1e},exit:{strikethrough:_1e}}}function v1e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:x1e}],handlers:{delete:WG}}}function b1e(t){this.enter({type:"delete",children:[]},t)}function _1e(t){this.exit(t)}function WG(t,e,n,r){const s=n.createTracker(r),a=n.enter("strikethrough");let o=s.move("~~");return o+=n.containerPhrasing(t,{...s.current(),before:o,after:"~"}),o+=s.move("~~"),a(),o}function S1e(){return"~"}function w1e(t){return t.length}function k1e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||w1e,a=[],o=[],l=[],c=[];let d=0,u=-1;for(;++u<t.length;){const y=[],m=[];let g=-1;for(t[u].length>d&&(d=t[u].length);++g<t[u].length;){const v=C1e(t[u][g]);if(n.alignDelimiters!==!1){const b=s(v);m[g]=b,(c[g]===void 0||b>c[g])&&(c[g]=b)}y.push(v)}o[u]=y,l[u]=m}let h=-1;if(typeof r=="object"&&"length"in r)for(;++h<d;)a[h]=wB(r[h]);else{const y=wB(r);for(;++h<d;)a[h]=y}h=-1;const f=[],p=[];for(;++h<d;){const y=a[h];let m="",g="";y===99?(m=":",g=":"):y===108?m=":":y===114&&(g=":");let v=n.alignDelimiters===!1?1:Math.max(1,c[h]-m.length-g.length);const b=m+"-".repeat(v)+g;n.alignDelimiters!==!1&&(v=m.length+v+g.length,v>c[h]&&(c[h]=v),p[h]=v),f[h]=b}o.splice(1,0,f),l.splice(1,0,p),u=-1;const x=[];for(;++u<o.length;){const y=o[u],m=l[u];h=-1;const g=[];for(;++h<d;){const v=y[h]||"";let b="",S="";if(n.alignDelimiters!==!1){const C=c[h]-(m[h]||0),E=a[h];E===114?b=" ".repeat(C):E===99?C%2?(b=" ".repeat(C/2+.5),S=" ".repeat(C/2-.5)):(b=" ".repeat(C/2),S=b):S=" ".repeat(C)}n.delimiterStart!==!1&&!h&&g.push("|"),n.padding!==!1&&!(n.alignDelimiters===!1&&v==="")&&(n.delimiterStart!==!1||h)&&g.push(" "),n.alignDelimiters!==!1&&g.push(b),g.push(v),n.alignDelimiters!==!1&&g.push(S),n.padding!==!1&&g.push(" "),(n.delimiterEnd!==!1||h!==d-1)&&g.push("|")}x.push(n.delimiterEnd===!1?g.join("").replace(/ +$/,""):g.join(""))}return x.join(`
|
|
4933
|
+
`)}function C1e(t){return t==null?"":String(t)}function wB(t){const e=typeof t=="string"?t.codePointAt(0):0;return e===67||e===99?99:e===76||e===108?108:e===82||e===114?114:0}function E1e(t,e,n,r){const s=n.enter("blockquote"),a=n.createTracker(r);a.move("> "),a.shift(2);const o=n.indentLines(n.containerFlow(t,a.current()),A1e);return s(),o}function A1e(t,e,n){return">"+(n?"":" ")+t}function T1e(t,e){return kB(t,e.inConstruct,!0)&&!kB(t,e.notInConstruct,!1)}function kB(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++r<e.length;)if(t.includes(e[r]))return!0;return!1}function CB(t,e,n,r){let s=-1;for(;++s<n.unsafe.length;)if(n.unsafe[s].character===`
|
|
4934
|
+
`&&T1e(n.stack,n.unsafe[s]))return/[ \t]/.test(r.before)?"":" ";return`\\
|
|
4935
|
+
`}function M1e(t,e){const n=String(t);let r=n.indexOf(e),s=r,a=0,o=0;if(typeof e!="string")throw new TypeError("Expected substring");for(;r!==-1;)r===s?++a>o&&(o=a):a=1,s=r+e.length,r=n.indexOf(e,s);return o}function N1e(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function j1e(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function R1e(t,e,n,r){const s=j1e(n),a=t.value||"",o=s==="`"?"GraveAccent":"Tilde";if(N1e(t,n)){const h=n.enter("codeIndented"),f=n.indentLines(a,I1e);return h(),f}const l=n.createTracker(r),c=s.repeat(Math.max(M1e(a,s)+1,3)),d=n.enter("codeFenced");let u=l.move(c);if(t.lang){const h=n.enter(`codeFencedLang${o}`);u+=l.move(n.safe(t.lang,{before:u,after:" ",encode:["`"],...l.current()})),h()}if(t.lang&&t.meta){const h=n.enter(`codeFencedMeta${o}`);u+=l.move(" "),u+=l.move(n.safe(t.meta,{before:u,after:`
|
|
4936
4936
|
`,encode:["`"],...l.current()})),h()}return u+=l.move(`
|
|
4937
4937
|
`),a&&(u+=l.move(a+`
|
|
4938
|
-
`)),u+=l.move(c),d(),u}function
|
|
4939
|
-
`,...c.current()}))),l(),t.title&&(l=n.enter(`title${a}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),o(),d}function
|
|
4938
|
+
`)),u+=l.move(c),d(),u}function I1e(t,e,n){return(n?"":" ")+t}function hj(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function P1e(t,e,n,r){const s=hj(n),a=s==='"'?"Quote":"Apostrophe",o=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":`
|
|
4939
|
+
`,...c.current()}))),l(),t.title&&(l=n.enter(`title${a}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),o(),d}function L1e(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function yx(t){return"&#x"+t.toString(16).toUpperCase()+";"}function t1(t,e,n){const r=ap(t),s=ap(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}VG.peek=D1e;function VG(t,e,n,r){const s=L1e(n),a=n.enter("emphasis"),o=n.createTracker(r),l=o.move(s);let c=o.move(n.containerPhrasing(t,{after:s,before:l,...o.current()}));const d=c.charCodeAt(0),u=t1(r.before.charCodeAt(r.before.length-1),d,s);u.inside&&(c=yx(d)+c.slice(1));const h=c.charCodeAt(c.length-1),f=t1(r.after.charCodeAt(0),h,s);f.inside&&(c=c.slice(0,-1)+yx(h));const p=o.move(s);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},l+c+p}function D1e(t,e,n){return n.options.emphasis||"*"}function O1e(t,e){let n=!1;return Qx(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,OT}),!!((!t.depth||t.depth<3)&&sj(t)&&(e.options.setext||n))}function B1e(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),a=n.createTracker(r);if(O1e(t,n)){const u=n.enter("headingSetext"),h=n.enter("phrasing"),f=n.containerPhrasing(t,{...a.current(),before:`
|
|
4940
4940
|
`,after:`
|
|
4941
4941
|
`});return h(),u(),f+`
|
|
4942
4942
|
`+(s===1?"=":"-").repeat(f.length-(Math.max(f.lastIndexOf("\r"),f.lastIndexOf(`
|
|
4943
4943
|
`))+1))}const o="#".repeat(s),l=n.enter("headingAtx"),c=n.enter("phrasing");a.move(o+" ");let d=n.containerPhrasing(t,{before:"# ",after:`
|
|
4944
|
-
`,...a.current()});return/^[\t ]/.test(d)&&(d=yx(d.charCodeAt(0))+d.slice(1)),d=d?o+" "+d:o,n.options.closeAtx&&(d+=" "+o),c(),l(),d}$G.peek=
|
|
4944
|
+
`,...a.current()});return/^[\t ]/.test(d)&&(d=yx(d.charCodeAt(0))+d.slice(1)),d=d?o+" "+d:o,n.options.closeAtx&&(d+=" "+o),c(),l(),d}$G.peek=F1e;function $G(t){return t.value||""}function F1e(){return"<"}KG.peek=U1e;function KG(t,e,n,r){const s=hj(n),a=s==='"'?"Quote":"Apostrophe",o=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${a}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),o(),d}function U1e(){return"!"}qG.peek=z1e;function qG(t,e,n,r){const s=t.referenceType,a=n.enter("imageReference");let o=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),o();const u=n.stack;n.stack=[],o=n.enter("reference");const h=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return o(),n.stack=u,a(),s==="full"||!d||d!==h?c+=l.move(h+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function z1e(){return"!"}XG.peek=H1e;function XG(t,e,n){let r=t.value||"",s="`",a=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++a<n.unsafe.length;){const o=n.unsafe[a],l=n.compilePattern(o);let c;if(o.atBreak)for(;c=l.exec(r);){let d=c.index;r.charCodeAt(d)===10&&r.charCodeAt(d-1)===13&&d--,r=r.slice(0,d)+" "+r.slice(c.index+1)}}return s+r+s}function H1e(){return"`"}function YG(t,e){const n=sj(t);return!!(!e.options.resourceLink&&t.url&&!t.title&&t.children&&t.children.length===1&&t.children[0].type==="text"&&(n===t.url||"mailto:"+n===t.url)&&/^[a-z][a-z+.-]+:/i.test(t.url)&&!/[\0- <>\u007F]/.test(t.url))}JG.peek=G1e;function JG(t,e,n,r){const s=hj(n),a=s==='"'?"Quote":"Apostrophe",o=n.createTracker(r);let l,c;if(YG(t,n)){const u=n.stack;n.stack=[],l=n.enter("autolink");let h=o.move("<");return h+=o.move(n.containerPhrasing(t,{before:h,after:">",...o.current()})),h+=o.move(">"),l(),n.stack=u,h}l=n.enter("link"),c=n.enter("label");let d=o.move("[");return d+=o.move(n.containerPhrasing(t,{before:d,after:"](",...o.current()})),d+=o.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=o.move("<"),d+=o.move(n.safe(t.url,{before:d,after:">",...o.current()})),d+=o.move(">")):(c=n.enter("destinationRaw"),d+=o.move(n.safe(t.url,{before:d,after:t.title?" ":")",...o.current()}))),c(),t.title&&(c=n.enter(`title${a}`),d+=o.move(" "+s),d+=o.move(n.safe(t.title,{before:d,after:s,...o.current()})),d+=o.move(s),c()),d+=o.move(")"),l(),d}function G1e(t,e,n){return YG(t,n)?"<":"["}ZG.peek=W1e;function ZG(t,e,n,r){const s=t.referenceType,a=n.enter("linkReference");let o=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),o();const u=n.stack;n.stack=[],o=n.enter("reference");const h=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return o(),n.stack=u,a(),s==="full"||!d||d!==h?c+=l.move(h+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function W1e(){return"["}function fj(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function V1e(t){const e=fj(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function $1e(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function QG(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function K1e(t,e,n,r){const s=n.enter("list"),a=n.bulletCurrent;let o=t.ordered?$1e(n):fj(n);const l=t.ordered?o==="."?")":".":V1e(n);let c=e&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!t.ordered){const u=t.children?t.children[0]:void 0;if((o==="*"||o==="-")&&u&&(!u.children||!u.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),QG(n)===o&&u){let h=-1;for(;++h<t.children.length;){const f=t.children[h];if(f&&f.type==="listItem"&&f.children&&f.children[0]&&f.children[0].type==="thematicBreak"){c=!0;break}}}}c&&(o=l),n.bulletCurrent=o;const d=n.containerFlow(t,r);return n.bulletLastUsed=o,n.bulletCurrent=a,s(),d}function q1e(t){const e=t.options.listItemIndent||"one";if(e!=="tab"&&e!=="one"&&e!=="mixed")throw new Error("Cannot serialize items with `"+e+"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");return e}function X1e(t,e,n,r){const s=q1e(n);let a=n.bulletCurrent||fj(n);e&&e.type==="list"&&e.ordered&&(a=(typeof e.start=="number"&&e.start>-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+a);let o=a.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(o=Math.ceil(o/4)*4);const l=n.createTracker(r);l.move(a+" ".repeat(o-a.length)),l.shift(o);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),u);return c(),d;function u(h,f,p){return f?(p?"":" ".repeat(o))+h:(p?a:a+" ".repeat(o-a.length))+h}}function Y1e(t,e,n,r){const s=n.enter("paragraph"),a=n.enter("phrasing"),o=n.containerPhrasing(t,r);return a(),s(),o}const J1e=Zx(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function Z1e(t,e,n,r){return(t.children.some(function(o){return J1e(o)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function Q1e(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}e9.peek=eSe;function e9(t,e,n,r){const s=Q1e(n),a=n.enter("strong"),o=n.createTracker(r),l=o.move(s+s);let c=o.move(n.containerPhrasing(t,{after:s,before:l,...o.current()}));const d=c.charCodeAt(0),u=t1(r.before.charCodeAt(r.before.length-1),d,s);u.inside&&(c=yx(d)+c.slice(1));const h=c.charCodeAt(c.length-1),f=t1(r.after.charCodeAt(0),h,s);f.inside&&(c=c.slice(0,-1)+yx(h));const p=o.move(s+s);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},l+c+p}function eSe(t,e,n){return n.options.strong||"*"}function tSe(t,e,n,r){return n.safe(t.value,r)}function nSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function rSe(t,e,n){const r=(QG(n)+(n.options.ruleSpaces?" ":"")).repeat(nSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const t9={blockquote:E1e,break:CB,code:R1e,definition:P1e,emphasis:VG,hardBreak:CB,heading:B1e,html:$G,image:KG,imageReference:qG,inlineCode:XG,link:JG,linkReference:ZG,list:K1e,listItem:X1e,paragraph:Y1e,root:Z1e,strong:e9,text:tSe,thematicBreak:rSe};function sSe(){return{enter:{table:iSe,tableData:EB,tableHeader:EB,tableRow:oSe},exit:{codeText:lSe,table:aSe,tableData:oE,tableHeader:oE,tableRow:oE}}}function iSe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function aSe(t){this.exit(t),this.data.inTable=void 0}function oSe(t){this.enter({type:"tableRow",children:[]},t)}function oE(t){this.exit(t)}function EB(t){this.enter({type:"tableCell",children:[]},t)}function lSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,cSe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function cSe(t,e){return e==="|"?e:t}function dSe(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,a=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:`
|
|
4945
4945
|
`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:l}};function o(p,x,y,m){return d(u(p,y,m),p.align)}function l(p,x,y,m){const g=h(p,y,m),v=d([g]);return v.slice(0,v.indexOf(`
|
|
4946
|
-
`))}function c(p,x,y,m){const g=y.enter("tableCell"),v=y.enter("phrasing"),b=y.containerPhrasing(p,{...m,before:a,after:a});return v(),g(),b}function d(p,x){return w1e(p,{align:x,alignDelimiters:r,padding:n,stringLength:s})}function u(p,x,y){const m=p.children;let g=-1;const v=[],b=x.enter("table");for(;++g<m.length;)v[g]=h(m[g],x,y);return b(),v}function h(p,x,y){const m=p.children;let g=-1;const v=[],b=x.enter("tableRow");for(;++g<m.length;)v[g]=c(m[g],p,x,y);return b(),v}function f(p,x,y){let m=t9.inlineCode(p,x,y);return y.stack.includes("tableCell")&&(m=m.replace(/\|/g,"\\$&")),m}}function dSe(){return{exit:{taskListCheckValueChecked:AB,taskListCheckValueUnchecked:AB,paragraph:hSe}}}function uSe(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:fSe}}}function AB(t){const e=this.stack[this.stack.length-2];e.type,e.checked=t.type==="taskListCheckValueChecked"}function hSe(t){const e=this.stack[this.stack.length-2];if(e&&e.type==="listItem"&&typeof e.checked=="boolean"){const n=this.stack[this.stack.length-1];n.type;const r=n.children[0];if(r&&r.type==="text"){const s=e.children;let a=-1,o;for(;++a<s.length;){const l=s[a];if(l.type==="paragraph"){o=l;break}}o===n&&(r.value=r.value.slice(1),r.value.length===0?n.children.shift():n.position&&r.position&&typeof r.position.start.offset=="number"&&(r.position.start.column++,r.position.start.offset++,n.position.start=Object.assign({},r.position.start)))}}this.exit(t)}function fSe(t,e,n,r){const s=t.children[0],a=typeof t.checked=="boolean"&&s&&s.type==="paragraph",o="["+(t.checked?"x":" ")+"] ",l=n.createTracker(r);a&&l.move(o);let c=t9.listItem(t,e,n,{...r,...l.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,d)),c;function d(u){return u+o}}function pSe(){return[$_e(),f1e(),x1e(),rSe(),dSe()]}function mSe(t){return{extensions:[K_e(),p1e(t),y1e(),cSe(t),uSe()]}}const gSe={tokenize:SSe,partial:!0},n9={tokenize:wSe,partial:!0},r9={tokenize:kSe,partial:!0},s9={tokenize:CSe,partial:!0},xSe={tokenize:ESe,partial:!0},i9={name:"wwwAutolink",tokenize:bSe,previous:o9},a9={name:"protocolAutolink",tokenize:_Se,previous:l9},Vl={name:"emailAutolink",tokenize:vSe,previous:c9},nl={};function ySe(){return{text:nl}}let $d=48;for(;$d<123;)nl[$d]=Vl,$d++,$d===58?$d=65:$d===91&&($d=97);nl[43]=Vl;nl[45]=Vl;nl[46]=Vl;nl[95]=Vl;nl[72]=[Vl,a9];nl[104]=[Vl,a9];nl[87]=[Vl,i9];nl[119]=[Vl,i9];function vSe(t,e,n){const r=this;let s,a;return o;function o(h){return!zT(h)||!c9.call(r,r.previous)||pj(r.events)?n(h):(t.enter("literalAutolink"),t.enter("literalAutolinkEmail"),l(h))}function l(h){return zT(h)?(t.consume(h),l):h===64?(t.consume(h),c):n(h)}function c(h){return h===46?t.check(xSe,u,d)(h):h===45||h===95||Ys(h)?(a=!0,t.consume(h),c):u(h)}function d(h){return t.consume(h),s=!0,c}function u(h){return a&&s&&xi(r.previous)?(t.exit("literalAutolinkEmail"),t.exit("literalAutolink"),e(h)):n(h)}}function bSe(t,e,n){const r=this;return s;function s(o){return o!==87&&o!==119||!o9.call(r,r.previous)||pj(r.events)?n(o):(t.enter("literalAutolink"),t.enter("literalAutolinkWww"),t.check(gSe,t.attempt(n9,t.attempt(r9,a),n),n)(o))}function a(o){return t.exit("literalAutolinkWww"),t.exit("literalAutolink"),e(o)}}function _Se(t,e,n){const r=this;let s="",a=!1;return o;function o(h){return(h===72||h===104)&&l9.call(r,r.previous)&&!pj(r.events)?(t.enter("literalAutolink"),t.enter("literalAutolinkHttp"),s+=String.fromCodePoint(h),t.consume(h),l):n(h)}function l(h){if(xi(h)&&s.length<5)return s+=String.fromCodePoint(h),t.consume(h),l;if(h===58){const f=s.toLowerCase();if(f==="http"||f==="https")return t.consume(h),c}return n(h)}function c(h){return h===47?(t.consume(h),a?d:(a=!0,c)):n(h)}function d(h){return h===null||Z_(h)||ir(h)||Uu(h)||NS(h)?n(h):t.attempt(n9,t.attempt(r9,u),n)(h)}function u(h){return t.exit("literalAutolinkHttp"),t.exit("literalAutolink"),e(h)}}function SSe(t,e,n){let r=0;return s;function s(o){return(o===87||o===119)&&r<3?(r++,t.consume(o),s):o===46&&r===3?(t.consume(o),a):n(o)}function a(o){return o===null?n(o):e(o)}}function wSe(t,e,n){let r,s,a;return o;function o(d){return d===46||d===95?t.check(s9,c,l)(d):d===null||ir(d)||Uu(d)||d!==45&&NS(d)?c(d):(a=!0,t.consume(d),o)}function l(d){return d===95?r=!0:(s=r,r=void 0),t.consume(d),o}function c(d){return s||r||!a?n(d):e(d)}}function kSe(t,e){let n=0,r=0;return s;function s(o){return o===40?(n++,t.consume(o),s):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?t.check(s9,e,a)(o):o===null||ir(o)||Uu(o)?e(o):(t.consume(o),s)}function a(o){return o===41&&r++,t.consume(o),s}}function CSe(t,e,n){return r;function r(l){return l===33||l===34||l===39||l===41||l===42||l===44||l===46||l===58||l===59||l===63||l===95||l===126?(t.consume(l),r):l===38?(t.consume(l),a):l===93?(t.consume(l),s):l===60||l===null||ir(l)||Uu(l)?e(l):n(l)}function s(l){return l===null||l===40||l===91||ir(l)||Uu(l)?e(l):r(l)}function a(l){return xi(l)?o(l):n(l)}function o(l){return l===59?(t.consume(l),r):xi(l)?(t.consume(l),o):n(l)}}function ESe(t,e,n){return r;function r(a){return t.consume(a),s}function s(a){return Ys(a)?n(a):e(a)}}function o9(t){return t===null||t===40||t===42||t===95||t===91||t===93||t===126||ir(t)}function l9(t){return!xi(t)}function c9(t){return!(t===47||zT(t))}function zT(t){return t===43||t===45||t===46||t===95||Ys(t)}function pj(t){let e=t.length,n=!1;for(;e--;){const r=t[e][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return t.length>0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ASe={tokenize:LSe,partial:!0};function TSe(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:RSe,continuation:{tokenize:ISe},exit:PSe}},text:{91:{name:"gfmFootnoteCall",tokenize:jSe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:MSe,resolveTo:NSe}}}}function MSe(t,e,n){const r=this;let s=r.events.length;const a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let o;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){o=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!o||!o._balanced)return n(c);const d=po(r.sliceSerialize({start:o.end,end:r.now()}));return d.codePointAt(0)!==94||!a.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function NSe(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",a,e],["enter",o,e],["exit",o,e],["exit",a,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function jSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a=0,o;return l;function l(h){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(h),t.exit("gfmFootnoteCallLabelMarker"),c}function c(h){return h!==94?n(h):(t.enter("gfmFootnoteCallMarker"),t.consume(h),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(h){if(a>999||h===93&&!o||h===null||h===91||ir(h))return n(h);if(h===93){t.exit("chunkString");const f=t.exit("gfmFootnoteCallString");return s.includes(po(r.sliceSerialize(f)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(h),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(h)}return ir(h)||(o=!0),a++,t.consume(h),h===92?u:d}function u(h){return h===91||h===92||h===93?(t.consume(h),a++,d):d(h)}}function RSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a,o=0,l;return c;function c(x){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(x),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(x){return x===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(x),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",u):n(x)}function u(x){if(o>999||x===93&&!l||x===null||x===91||ir(x))return n(x);if(x===93){t.exit("chunkString");const y=t.exit("gfmFootnoteDefinitionLabelString");return a=po(r.sliceSerialize(y)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(x),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),f}return ir(x)||(l=!0),o++,t.consume(x),x===92?h:u}function h(x){return x===91||x===92||x===93?(t.consume(x),o++,u):u(x)}function f(x){return x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),s.includes(a)||s.push(a),Ln(t,p,"gfmFootnoteDefinitionWhitespace")):n(x)}function p(x){return e(x)}}function ISe(t,e,n){return t.check(Jx,e,t.attempt(ASe,e,n))}function PSe(t){t.exit("gfmFootnoteDefinition")}function LSe(t,e,n){const r=this;return Ln(t,s,"gfmFootnoteDefinitionIndent",4+1);function s(a){const o=r.events[r.events.length-1];return o&&o[1].type==="gfmFootnoteDefinitionIndent"&&o[2].sliceSerialize(o[1],!0).length===4?e(a):n(a)}}function DSe(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:a,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(o,l){let c=-1;for(;++c<o.length;)if(o[c][0]==="enter"&&o[c][1].type==="strikethroughSequenceTemporary"&&o[c][1]._close){let d=c;for(;d--;)if(o[d][0]==="exit"&&o[d][1].type==="strikethroughSequenceTemporary"&&o[d][1]._open&&o[c][1].end.offset-o[c][1].start.offset===o[d][1].end.offset-o[d][1].start.offset){o[c][1].type="strikethroughSequence",o[d][1].type="strikethroughSequence";const u={type:"strikethrough",start:Object.assign({},o[d][1].start),end:Object.assign({},o[c][1].end)},h={type:"strikethroughText",start:Object.assign({},o[d][1].end),end:Object.assign({},o[c][1].start)},f=[["enter",u,l],["enter",o[d][1],l],["exit",o[d][1],l],["enter",h,l]],p=l.parser.constructs.insideSpan.null;p&&ua(f,f.length,0,jS(p,o.slice(d+1,c),l)),ua(f,f.length,0,[["exit",h,l],["enter",o[c][1],l],["exit",o[c][1],l],["exit",u,l]]),ua(o,d-1,c-d+3,f),c=d+f.length-2;break}}for(c=-1;++c<o.length;)o[c][1].type==="strikethroughSequenceTemporary"&&(o[c][1].type="data");return o}function a(o,l,c){const d=this.previous,u=this.events;let h=0;return f;function f(x){return d===126&&u[u.length-1][1].type!=="characterEscape"?c(x):(o.enter("strikethroughSequenceTemporary"),p(x))}function p(x){const y=ap(d);if(x===126)return h>1?c(x):(o.consume(x),h++,p);if(h<2&&!n)return c(x);const m=o.exit("strikethroughSequenceTemporary"),g=ap(x);return m._open=!g||g===2&&!!y,m._close=!y||y===2&&!!g,l(x)}}}class OSe{constructor(){this.map=[]}add(e,n,r){BSe(this,e,n,r)}consume(e){if(this.map.sort(function(a,o){return a[0]-o[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const a of s)e.push(a);s=r.pop()}this.map.length=0}}function BSe(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s<t.map.length;){if(t.map[s][0]===e){t.map[s][1]+=n,t.map[s][2].push(...r);return}s+=1}t.map.push([e,n,r])}}function FSe(t,e){let n=!1;const r=[];for(;e<t.length;){const s=t[e];if(n){if(s[0]==="enter")s[1].type==="tableContent"&&r.push(t[e+1][1].type==="tableDelimiterMarker"?"left":"none");else if(s[1].type==="tableContent"){if(t[e-1][1].type==="tableDelimiterMarker"){const a=r.length-1;r[a]=r[a]==="left"?"center":"right"}}else if(s[1].type==="tableDelimiterRow")break}else s[0]==="enter"&&s[1].type==="tableDelimiterRow"&&(n=!0);e+=1}return r}function USe(){return{flow:{null:{name:"table",tokenize:zSe,resolveAll:HSe}}}}function zSe(t,e,n){const r=this;let s=0,a=0,o;return l;function l(M){let P=r.events.length-1;for(;P>-1;){const V=r.events[P][1].type;if(V==="lineEnding"||V==="linePrefix")P--;else break}const I=P>-1?r.events[P][1].type:null,B=I==="tableHead"||I==="tableRow"?E:c;return B===E&&r.parser.lazy[r.now().line]?n(M):B(M)}function c(M){return t.enter("tableHead"),t.enter("tableRow"),d(M)}function d(M){return M===124||(o=!0,a+=1),u(M)}function u(M){return M===null?n(M):Kt(M)?a>1?(a=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(M),t.exit("lineEnding"),p):n(M):Cn(M)?Ln(t,u,"whitespace")(M):(a+=1,o&&(o=!1,s+=1),M===124?(t.enter("tableCellDivider"),t.consume(M),t.exit("tableCellDivider"),o=!0,u):(t.enter("data"),h(M)))}function h(M){return M===null||M===124||ir(M)?(t.exit("data"),u(M)):(t.consume(M),M===92?f:h)}function f(M){return M===92||M===124?(t.consume(M),h):h(M)}function p(M){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(M):(t.enter("tableDelimiterRow"),o=!1,Cn(M)?Ln(t,x,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):x(M))}function x(M){return M===45||M===58?m(M):M===124?(o=!0,t.enter("tableCellDivider"),t.consume(M),t.exit("tableCellDivider"),y):C(M)}function y(M){return Cn(M)?Ln(t,m,"whitespace")(M):m(M)}function m(M){return M===58?(a+=1,o=!0,t.enter("tableDelimiterMarker"),t.consume(M),t.exit("tableDelimiterMarker"),g):M===45?(a+=1,g(M)):M===null||Kt(M)?S(M):C(M)}function g(M){return M===45?(t.enter("tableDelimiterFiller"),v(M)):C(M)}function v(M){return M===45?(t.consume(M),v):M===58?(o=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(M),t.exit("tableDelimiterMarker"),b):(t.exit("tableDelimiterFiller"),b(M))}function b(M){return Cn(M)?Ln(t,S,"whitespace")(M):S(M)}function S(M){return M===124?x(M):M===null||Kt(M)?!o||s!==a?C(M):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(M)):C(M)}function C(M){return n(M)}function E(M){return t.enter("tableRow"),N(M)}function N(M){return M===124?(t.enter("tableCellDivider"),t.consume(M),t.exit("tableCellDivider"),N):M===null||Kt(M)?(t.exit("tableRow"),e(M)):Cn(M)?Ln(t,N,"whitespace")(M):(t.enter("data"),T(M))}function T(M){return M===null||M===124||ir(M)?(t.exit("data"),N(M)):(t.consume(M),M===92?A:T)}function A(M){return M===92||M===124?(t.consume(M),T):T(M)}}function HSe(t,e){let n=-1,r=!0,s=0,a=[0,0,0,0],o=[0,0,0,0],l=!1,c=0,d,u,h;const f=new OSe;for(;++n<t.length;){const p=t[n],x=p[1];p[0]==="enter"?x.type==="tableHead"?(l=!1,c!==0&&(TB(f,e,c,d,u),u=void 0,c=0),d={type:"table",start:Object.assign({},x.start),end:Object.assign({},x.end)},f.add(n,0,[["enter",d,e]])):x.type==="tableRow"||x.type==="tableDelimiterRow"?(r=!0,h=void 0,a=[0,0,0,0],o=[0,n+1,0,0],l&&(l=!1,u={type:"tableBody",start:Object.assign({},x.start),end:Object.assign({},x.end)},f.add(n,0,[["enter",u,e]])),s=x.type==="tableDelimiterRow"?2:u?3:1):s&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],h=Mv(f,e,a,s,void 0,h),a=[0,0,0,0]),o[2]=n)):x.type==="tableCellDivider"&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],h=Mv(f,e,a,s,void 0,h)),a=o,o=[a[1],n,0,0])):x.type==="tableHead"?(l=!0,c=n):x.type==="tableRow"||x.type==="tableDelimiterRow"?(c=n,a[1]!==0?(o[0]=o[1],h=Mv(f,e,a,s,n,h)):o[1]!==0&&(h=Mv(f,e,o,s,n,h)),s=0):s&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")&&(o[3]=n)}for(c!==0&&TB(f,e,c,d,u),f.consume(e.events),n=-1;++n<e.events.length;){const p=e.events[n];p[0]==="enter"&&p[1].type==="table"&&(p[1]._align=FSe(e.events,n))}return t}function Mv(t,e,n,r,s,a){const o=r===1?"tableHeader":r===2?"tableDelimiter":"tableData",l="tableContent";n[0]!==0&&(a.end=Object.assign({},ef(e.events,n[0])),t.add(n[0],0,[["exit",a,e]]));const c=ef(e.events,n[1]);if(a={type:o,start:Object.assign({},c),end:Object.assign({},c)},t.add(n[1],0,[["enter",a,e]]),n[2]!==0){const d=ef(e.events,n[2]),u=ef(e.events,n[3]),h={type:l,start:Object.assign({},d),end:Object.assign({},u)};if(t.add(n[2],0,[["enter",h,e]]),r!==2){const f=e.events[n[2]],p=e.events[n[3]];if(f[1].end=Object.assign({},p[1].end),f[1].type="chunkText",f[1].contentType="text",n[3]>n[2]+1){const x=n[2]+1,y=n[3]-n[2]-1;t.add(x,y,[])}}t.add(n[3]+1,0,[["exit",h,e]])}return s!==void 0&&(a.end=Object.assign({},ef(e.events,s)),t.add(s,0,[["exit",a,e]]),a=void 0),a}function TB(t,e,n,r,s){const a=[],o=ef(e.events,n);s&&(s.end=Object.assign({},o),a.push(["exit",s,e])),r.end=Object.assign({},o),a.push(["exit",r,e]),t.add(n+1,0,a)}function ef(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const GSe={name:"tasklistCheck",tokenize:VSe};function WSe(){return{text:{91:GSe}}}function VSe(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),a)}function a(c){return ir(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),o):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),o):n(c)}function o(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return Kt(c)?e(c):Cn(c)?t.check({tokenize:$Se},e,n)(c):n(c)}}function $Se(t,e,n){return Ln(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function KSe(t){return yG([ySe(),TSe(),DSe(t),USe(),WSe()])}const qSe={};function XSe(t){const e=this,n=t||qSe,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),a=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),o=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(KSe(n)),a.push(pSe()),o.push(mSe(n))}const MB=function(t,e,n){const r=Zx(n);if(!t||!t.type||!t.children)throw new Error("Expected parent node");if(typeof e=="number"){if(e<0||e===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if(e=t.children.indexOf(e),e<0)throw new Error("Expected child node or index");for(;++e<t.children.length;)if(r(t.children[e],e,t))return t.children[e]},eh=function(t){if(t==null)return ZSe;if(typeof t=="string")return JSe(t);if(typeof t=="object")return YSe(t);if(typeof t=="function")return mj(t);throw new Error("Expected function, string, or array as `test`")};function YSe(t){const e=[];let n=-1;for(;++n<t.length;)e[n]=eh(t[n]);return mj(r);function r(...s){let a=-1;for(;++a<e.length;)if(e[a].apply(this,s))return!0;return!1}}function JSe(t){return mj(e);function e(n){return n.tagName===t}}function mj(t){return e;function e(n,r,s){return!!(QSe(n)&&t.call(this,n,typeof r=="number"?r:void 0,s||void 0))}}function ZSe(t){return!!(t&&typeof t=="object"&&"type"in t&&t.type==="element"&&"tagName"in t&&typeof t.tagName=="string")}function QSe(t){return t!==null&&typeof t=="object"&&"type"in t&&"tagName"in t}const NB=/\n/g,jB=/[\t ]+/g,HT=eh("br"),RB=eh(owe),ewe=eh("p"),IB=eh("tr"),twe=eh(["datalist","head","noembed","noframes","noscript","rp","script","style","template","title",awe,lwe]),d9=eh(["address","article","aside","blockquote","body","caption","center","dd","dialog","dir","dl","dt","div","figure","figcaption","footer","form,","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","legend","li","listing","main","menu","nav","ol","p","plaintext","pre","section","ul","xmp"]);function nwe(t,e){const n=e||{},r="children"in t?t.children:[],s=d9(t),a=f9(t,{whitespace:n.whitespace||"normal",breakBefore:!1,breakAfter:!1}),o=[];(t.type==="text"||t.type==="comment")&&o.push(...h9(t,{whitespace:a,breakBefore:!0,breakAfter:!0}));let l=-1;for(;++l<r.length;)o.push(...u9(r[l],t,{whitespace:a,breakBefore:l?void 0:s,breakAfter:l<r.length-1?HT(r[l+1]):s}));const c=[];let d;for(l=-1;++l<o.length;){const u=o[l];typeof u=="number"?d!==void 0&&u>d&&(d=u):u&&(d!==void 0&&d>-1&&c.push(`
|
|
4947
|
-
`.repeat(d)||" "),d=-1,c.push(u))}return c.join("")}function u9(t,e,n){return t.type==="element"?
|
|
4948
|
-
`:ewe(t)?(l=2,c=2):d9(t)&&(l=1,c=1);++a<s.length;)o=o.concat(u9(s[a],t,{whitespace:r,breakBefore:a?void 0:l,breakAfter:a<s.length-1?HT(s[a+1]):c}));return RB(t)&&MB(e,t,RB)&&o.push(" "),l&&o.unshift(l),c&&o.push(c),o}function h9(t,e){const n=String(t.value),r=[],s=[];let a=0;for(;a<=n.length;){NB.lastIndex=a;const c=NB.exec(n),d=c&&"index"in c?c.index:n.length;r.push(iwe(n.slice(a,d).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,""),a===0?e.breakBefore:!0,d===n.length?e.breakAfter:!0)),a=d+1}let o=-1,l;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(s.push(r[o]),l=void 0):r[o]?(typeof l=="number"&&s.push(l),s.push(r[o]),l=0):(o===0||o===r.length-1)&&s.push(0);return s}function swe(t){return[String(t.value)]}function iwe(t,e,n){const r=[];let s=0,a;for(;s<t.length;){jB.lastIndex=s;const o=jB.exec(t);a=o?o.index:t.length,!s&&!a&&o&&!e&&r.push(""),s!==a&&r.push(t.slice(s,a)),s=o?a+o[0].length:a}return s!==a&&!n&&r.push(""),r.join(" ")}function f9(t,e){if(t.type==="element"){const n=t.properties||{};switch(t.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":e.whitespace;case"textarea":return"pre-wrap"}}return e.whitespace}function awe(t){return!!(t.properties||{}).hidden}function owe(t){return t.tagName==="td"||t.tagName==="th"}function lwe(t){return t.tagName==="dialog"&&!(t.properties||{}).open}function cwe(t){const e=t.regex,n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",a="<[^<>]+>",o="(?!struct)("+r+"|"+e.optional(s)+"[a-zA-Z_]\\w*"+e.optional(a)+")",l={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},c="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+c+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},h={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:e.optional(s)+t.IDENT_RE,relevance:0},p=e.optional(s)+t.IDENT_RE+"\\s*\\(",x=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],m=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],g=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],S={type:y,keyword:x,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:m},C={className:"function.dispatch",relevance:0,keywords:{_hint:g},begin:e.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,t.IDENT_RE,e.lookahead(/(<[^<>]+>|)\s*\(/))},E=[C,h,l,n,t.C_BLOCK_COMMENT_MODE,u,d],N={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:E.concat([{begin:/\(/,end:/\)/,keywords:S,contains:E.concat(["self"]),relevance:0}]),relevance:0},T={className:"function",begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:S,relevance:0},{begin:p,returnBegin:!0,contains:[f],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,u]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,d,u,l,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,t.C_BLOCK_COMMENT_MODE,d,u,l]}]},l,n,t.C_BLOCK_COMMENT_MODE,h]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:S,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(N,T,C,E,[h,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:S,contains:["self",l]},{begin:t.IDENT_RE+"::",keywords:S},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function dwe(t){const e={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},n=cwe(t),r=n.keywords;return r.type=[...r.type,...e.type],r.literal=[...r.literal,...e.literal],r.built_in=[...r.built_in,...e.built_in],r._hints=e._hints,n.name="Arduino",n.aliases=["ino"],n.supersetOf="cpp",n}function uwe(t){const e=t.regex,n={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:e.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},r]});const s={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},a=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},l={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,n,s]};s.contains.push(l);const c={match:/\\"/},d={className:"string",begin:/'/,end:/'/},u={match:/\\'/},h={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,n]},f=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=t.SHEBANG({binary:`(${f.join("|")})`,relevance:10}),x={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],m=["true","false"],g={match:/(\/[a-z._-]+)+/},v=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],b=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],S=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],C=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:m,built_in:[...v,...b,"set","shopt",...S,...C]},contains:[p,t.SHEBANG(),x,h,a,o,g,l,c,d,u,n]}}function hwe(t){const e=t.regex,n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",a="<[^<>]+>",o="("+r+"|"+e.optional(s)+"[a-zA-Z_]\\w*"+e.optional(a)+")",l={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},c="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+c+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},h={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:e.optional(s)+t.IDENT_RE,relevance:0},p=e.optional(s)+t.IDENT_RE+"\\s*\\(",m={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},g=[h,l,n,t.C_BLOCK_COMMENT_MODE,u,d],v={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:g.concat([{begin:/\(/,end:/\)/,keywords:m,contains:g.concat(["self"]),relevance:0}]),relevance:0},b={begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:m,relevance:0},{begin:p,returnBegin:!0,contains:[t.inherit(f,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,d,u,l,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",n,t.C_BLOCK_COMMENT_MODE,d,u,l]}]},l,n,t.C_BLOCK_COMMENT_MODE,h]};return{name:"C",aliases:["h"],keywords:m,disableAutodetect:!0,illegal:"</",contains:[].concat(v,b,g,[h,{begin:t.IDENT_RE+"::",keywords:m},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:h,strings:d,keywords:m}}}function fwe(t){const e=t.regex,n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",a="<[^<>]+>",o="(?!struct)("+r+"|"+e.optional(s)+"[a-zA-Z_]\\w*"+e.optional(a)+")",l={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},c="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+c+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},h={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:e.optional(s)+t.IDENT_RE,relevance:0},p=e.optional(s)+t.IDENT_RE+"\\s*\\(",x=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],m=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],g=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],S={type:y,keyword:x,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:m},C={className:"function.dispatch",relevance:0,keywords:{_hint:g},begin:e.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,t.IDENT_RE,e.lookahead(/(<[^<>]+>|)\s*\(/))},E=[C,h,l,n,t.C_BLOCK_COMMENT_MODE,u,d],N={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:E.concat([{begin:/\(/,end:/\)/,keywords:S,contains:E.concat(["self"]),relevance:0}]),relevance:0},T={className:"function",begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:S,relevance:0},{begin:p,returnBegin:!0,contains:[f],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,u]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,d,u,l,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,t.C_BLOCK_COMMENT_MODE,d,u,l]}]},l,n,t.C_BLOCK_COMMENT_MODE,h]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:S,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(N,T,C,E,[h,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:S,contains:["self",l]},{begin:t.IDENT_RE+"::",keywords:S},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function pwe(t){const e=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],n=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],r=["default","false","null","true"],s=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],a=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],o={keyword:s.concat(a),built_in:e,literal:r},l=t.inherit(t.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),c={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},d={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},u={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},h=t.inherit(u,{illegal:/\n/}),f={className:"subst",begin:/\{/,end:/\}/,keywords:o},p=t.inherit(f,{illegal:/\n/}),x={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},t.BACKSLASH_ESCAPE,p]},y={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},f]},m=t.inherit(y,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},p]});f.contains=[y,x,u,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,c,t.C_BLOCK_COMMENT_MODE],p.contains=[m,x,h,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,c,t.inherit(t.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const g={variants:[d,y,x,u,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},v={begin:"<",end:">",contains:[{beginKeywords:"in out"},l]},b=t.IDENT_RE+"(<"+t.IDENT_RE+"(\\s*,\\s*"+t.IDENT_RE+")*>)?(\\[\\])?",S={begin:"@"+t.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:o,illegal:/::/,contains:[t.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},g,c,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},l,v,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,v,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+b+"\\s+)+"+t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:o,contains:[{beginKeywords:n.join(" "),relevance:0},{begin:t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[t.TITLE_MODE,v],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,relevance:0,contains:[g,c,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},S]}}const mwe=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),gwe=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],xwe=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],ywe=[...gwe,...xwe],vwe=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),bwe=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),_we=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Swe=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function wwe(t){const e=t.regex,n=mwe(t),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},s="and or not only",a=/@-?\w[\w]*(-\w+)*/,o="[a-zA-Z-][a-zA-Z0-9_-]*",l=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+o,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+bwe.join("|")+")"},{begin:":(:)?("+_we.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Swe.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...l,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...l,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:a},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:s,attribute:vwe.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+ywe.join("|")+")\\b"}]}}function kwe(t){const e=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}function Cwe(t){const a={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:a,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:a,illegal:/["']/}]}]}}function Ewe(t){const e=t.regex,n=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[t.HASH_COMMENT_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:e.concat(n,e.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}function Awe(t){const e=t.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:t.NUMBER_RE}]},r=t.COMMENT();r.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const s={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},a={className:"literal",begin:/\bon|off|true|false|yes|no\b/},o={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},l={begin:/\[/,end:/\]/,contains:[r,a,s,o,n,"self"],relevance:0},c=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,u=/'[^']*'/,h=e.either(c,d,u),f=e.concat(h,"(\\s*\\.\\s*",h,")*",e.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[r,{className:"section",begin:/\[+/,end:/\]+/},{begin:f,className:"attr",starts:{end:/$/,contains:[r,l,a,s,o,n]}}]}}var tf="[0-9](_*[0-9])*",Nv=`\\.(${tf})`,jv="[0-9a-fA-F](_*[0-9a-fA-F])*",PB={className:"number",variants:[{begin:`(\\b(${tf})((${Nv})|\\.)?|(${Nv}))[eE][+-]?(${tf})[fFdD]?\\b`},{begin:`\\b(${tf})((${Nv})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Nv})[fFdD]?\\b`},{begin:`\\b(${tf})[fFdD]\\b`},{begin:`\\b0[xX]((${jv})\\.?|(${jv})?\\.(${jv}))[pP][+-]?(${tf})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${jv})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function p9(t,e,n){return n===-1?"":t.replace(e,r=>p9(t,e,n-1))}function Twe(t){const e=t.regex,n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=n+p9("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),c={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},u={className:"params",begin:/\(/,end:/\)/,keywords:c,relevance:0,contains:[t.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:c,illegal:/<\/|#/,contains:[t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[t.BACKSLASH_ESCAPE]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[e.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[u,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+r+"\\s+)",t.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:c,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:c,relevance:0,contains:[d,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,PB,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},PB,d]}}const LB="[A-Za-z$_][0-9A-Za-z$_]*",Mwe=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Nwe=["true","false","null","undefined","NaN","Infinity"],m9=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],g9=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],x9=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],jwe=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Rwe=[].concat(x9,m9,g9);function Iwe(t){const e=t.regex,n=(L,{after:U})=>{const R="</"+L[0].slice(1);return L.input.indexOf(R,U)!==-1},r=LB,s={begin:"<>",end:"</>"},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(L,U)=>{const R=L[0].length+L.index,D=L.input[R];if(D==="<"||D===","){U.ignoreMatch();return}D===">"&&(n(L,{after:R})||U.ignoreMatch());let G;const F=L.input.substring(R);if(G=F.match(/^\s*=/)){U.ignoreMatch();return}if((G=F.match(/^\s+extends\s+/))&&G.index===0){U.ignoreMatch();return}}},l={$pattern:LB,keyword:Mwe,literal:Nwe,built_in:Rwe,"variable.language":jwe},c="[0-9](_?[0-9])*",d=`\\.(${c})`,u="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",h={className:"number",variants:[{begin:`(\\b(${u})((${d})|\\.)?|(${d}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},f={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,f]},v={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},b=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,{match:/\$\d+/},h];f.contains=b.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(b)});const S=[].concat(v,f.contains),C=S.concat([{begin:/(\s*)\(/,end:/\)/,keywords:l,contains:["self"].concat(S)}]),E={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C},N={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,e.concat(r,"(",e.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...m9,...g9]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[E],illegal:/%/},P={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function I(L){return e.concat("(?!",L.join("|"),")")}const B={match:e.concat(/\b/,I([...x9,"super","import"].map(L=>`${L}\\s*\\(`)),r,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},V={begin:e.concat(/\./,e.lookahead(e.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},K={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},E]},H="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",$={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(H)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[E]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,v,{match:/\$\d+/},h,T,{scope:"attr",match:r+e.lookahead(":"),relevance:0},$,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,t.REGEXP_MODE,{className:"function",begin:H,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[E,t.inherit(t.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},V,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[E]},B,P,N,K,{match:/\$[(.]/}]}}function Pwe(t){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},r=["true","false","null"],s={scope:"literal",beginKeywords:r.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:r},contains:[e,n,t.QUOTE_STRING_MODE,s,t.C_NUMBER_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var nf="[0-9](_*[0-9])*",Rv=`\\.(${nf})`,Iv="[0-9a-fA-F](_*[0-9a-fA-F])*",Lwe={className:"number",variants:[{begin:`(\\b(${nf})((${Rv})|\\.)?|(${Rv}))[eE][+-]?(${nf})[fFdD]?\\b`},{begin:`\\b(${nf})((${Rv})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Rv})[fFdD]?\\b`},{begin:`\\b(${nf})[fFdD]\\b`},{begin:`\\b0[xX]((${Iv})\\.?|(${Iv})?\\.(${Iv}))[pP][+-]?(${nf})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Iv})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Dwe(t){const e={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},r={className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"@"},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[t.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+t.UNDERSCORE_IDENT_RE},o={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[a,s]},{begin:"'",end:"'",illegal:/\n/,contains:[t.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[t.BACKSLASH_ESCAPE,a,s]}]};s.contains.push(o);const l={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+t.UNDERSCORE_IDENT_RE+")?"},c={className:"meta",begin:"@"+t.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[t.inherit(o,{className:"string"}),"self"]}]},d=Lwe,u=t.COMMENT("/\\*","\\*/",{contains:[t.C_BLOCK_COMMENT_MODE]}),h={variants:[{className:"type",begin:t.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},f=h;return f.variants[1].contains=[h],h.variants[1].contains=[f],{name:"Kotlin",aliases:["kt","kts"],keywords:e,contains:[t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),t.C_LINE_COMMENT_MODE,u,n,r,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:e,relevance:5,contains:[{begin:t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:e,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[h,t.C_LINE_COMMENT_MODE,u],relevance:0},t.C_LINE_COMMENT_MODE,u,l,c,o,t.C_NUMBER_MODE]},u]},{begin:[/class|interface|trait/,/\s+/,t.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},t.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},l,c]},o,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4949
|
-
`},d]}}const Owe=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Bwe=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Fwe=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Uwe=[...Bwe,...Fwe],zwe=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),y9=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),v9=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Hwe=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),Gwe=y9.concat(v9).sort().reverse();function Wwe(t){const e=Owe(t),n=Gwe,r="and or not only",s="[\\w-]+",a="("+s+"|@\\{"+s+"\\})",o=[],l=[],c=function(b){return{className:"string",begin:"~?"+b+".*?"+b}},d=function(b,S,C){return{className:b,begin:S,relevance:C}},u={$pattern:/[a-z-]+/,keyword:r,attribute:zwe.join(" ")},h={begin:"\\(",end:"\\)",contains:l,keywords:u,relevance:0};l.push(t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,c("'"),c('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},e.HEXCOLOR,h,d("variable","@@?"+s,10),d("variable","@\\{"+s+"\\}"),d("built_in","~?`[^`]*?`"),{className:"attribute",begin:s+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},e.IMPORTANT,{beginKeywords:"and not"},e.FUNCTION_DISPATCH);const f=l.concat({begin:/\{/,end:/\}/,contains:o}),p={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(l)},x={begin:a+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},e.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Hwe.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:l}}]},y={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:u,returnEnd:!0,contains:l,relevance:0}},m={className:"variable",variants:[{begin:"@"+s+"\\s*:",relevance:15},{begin:"@"+s}],starts:{end:"[;}]",returnEnd:!0,contains:f}},g={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,p,d("keyword","all\\b"),d("variable","@\\{"+s+"\\}"),{begin:"\\b("+Uwe.join("|")+")\\b",className:"selector-tag"},e.CSS_NUMBER_MODE,d("selector-tag",a,0),d("selector-id","#"+a),d("selector-class","\\."+a,0),d("selector-tag","&",0),e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+y9.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+v9.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:f},{begin:"!important"},e.FUNCTION_DISPATCH]},v={begin:s+`:(:)?(${n.join("|")})`,returnBegin:!0,contains:[g]};return o.push(t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,y,m,v,x,g,p,e.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:o}}function Vwe(t){const e="\\[=*\\[",n="\\]=*\\]",r={begin:e,end:n,contains:["self"]},s=[t.COMMENT("--(?!"+e+")","$"),t.COMMENT("--"+e,n,{contains:[r],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:t.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:s.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[t.inherit(t.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:s}].concat(s)},t.C_NUMBER_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"string",begin:e,end:n,contains:[r],relevance:5}])}}function $we(t){const e={className:"variable",variants:[{begin:"\\$\\("+t.UNDERSCORE_IDENT_RE+"\\)",contains:[t.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,e]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[e,n]},s={begin:"^"+t.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},a={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},o={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[e]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[t.HASH_COMMENT_MODE,e,n,r,s,a,o]}}function Kwe(t){const e=t.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},r={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},a={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},o={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},l=/[A-Za-z][A-Za-z0-9+.-]*/,c={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,l,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},u={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},h=t.inherit(d,{contains:[]}),f=t.inherit(u,{contains:[]});d.contains.push(f),u.contains.push(h);let p=[n,c];return[d,u,h,f].forEach(g=>{g.contains=g.contains.concat(p)}),p=p.concat(d,u),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:p},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:p}]}]},n,a,d,u,{className:"quote",begin:"^>\\s+",contains:p,end:"$"},s,r,c,o,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function qwe(t){const e={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},n=/[a-zA-Z@][a-zA-Z0-9_]*/,l={"variable.language":["this","super"],$pattern:n,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},c={$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:l,illegal:"</",contains:[e,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.C_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+c.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:c,contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"\\."+t.UNDERSCORE_IDENT_RE,relevance:0}]}}function Xwe(t){const e=t.regex,n=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/,keyword:n.join(" ")},a={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},o={begin:/->\{/,end:/\}/},l={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},c={scope:"variable",variants:[{begin:/\$\d/},{begin:e.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[l]},d={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},u=[t.BACKSLASH_ESCAPE,a,c],h=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],f=(y,m,g="\\1")=>{const v=g==="\\1"?g:e.concat(g,m);return e.concat(e.concat("(?:",y,")"),m,/(?:\\.|[^\\\/])*?/,v,/(?:\\.|[^\\\/])*?/,g,r)},p=(y,m,g)=>e.concat(e.concat("(?:",y,")"),m,/(?:\\.|[^\\\/])*?/,g,r),x=[c,t.HASH_COMMENT_MODE,t.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),o,{className:"string",contains:u,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[t.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},d,{begin:"(\\/\\/|"+t.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[t.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:f("s|tr|y",e.either(...h,{capture:!0}))},{begin:f("s|tr|y","\\(","\\)")},{begin:f("s|tr|y","\\[","\\]")},{begin:f("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:p("(?:m|qr)?",/\//,/\//)},{begin:p("m|qr",e.either(...h,{capture:!0}),/\1/)},{begin:p("m|qr",/\(/,/\)/)},{begin:p("m|qr",/\[/,/\]/)},{begin:p("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,l]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,l,d]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return a.contains=x,o.contains=x,{name:"Perl",aliases:["pl","pm"],keywords:s,contains:x}}function Ywe(t){const e=t.regex,n=/(?![A-Za-z0-9])(?![$])/,r=e.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),s=e.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),a=e.concat(/[A-Z]+/,n),o={scope:"variable",match:"\\$+"+r},l={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},d=t.inherit(t.APOS_STRING_MODE,{illegal:null}),u=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(c)}),h={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(V,K)=>{K.data._beginMatch=V[1]||V[2]},"on:end":(V,K)=>{K.data._beginMatch!==V[1]&&K.ignoreMatch()}},f=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),p=`[
|
|
4950
|
-
]`,x={scope:"string",variants:[u,d,h,f]},y={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},m=["false","null","true"],g=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],v=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],S={keyword:g,literal:(V=>{const K=[];return V.forEach(H=>{K.push(H),H.toLowerCase()===H?K.push(H.toUpperCase()):K.push(H.toLowerCase())}),K})(m),built_in:v},C=V=>V.map(K=>K.replace(/\|\d+$/,"")),E={variants:[{match:[/new/,e.concat(p,"+"),e.concat("(?!",C(v).join("\\b|"),"\\b)"),s],scope:{1:"keyword",4:"title.class"}}]},N=e.concat(r,"\\b(?!\\()"),T={variants:[{match:[e.concat(/::/,e.lookahead(/(?!class\b)/)),N],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[s,e.concat(/::/,e.lookahead(/(?!class\b)/)),N],scope:{1:"title.class",3:"variable.constant"}},{match:[s,e.concat("::",e.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[s,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},A={scope:"attr",match:e.concat(r,e.lookahead(":"),e.lookahead(/(?!::)/))},M={relevance:0,begin:/\(/,end:/\)/,keywords:S,contains:[A,o,T,t.C_BLOCK_COMMENT_MODE,x,y,E]},P={relevance:0,match:[/\b/,e.concat("(?!fn\\b|function\\b|",C(g).join("\\b|"),"|",C(v).join("\\b|"),"\\b)"),r,e.concat(p,"*"),e.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[M]};M.contains.push(P);const I=[A,T,t.C_BLOCK_COMMENT_MODE,x,y,E],B={begin:e.concat(/#\[\s*\\?/,e.either(s,a)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:m,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:m,keyword:["new","array"]},contains:["self",...I]},...I,{scope:"meta",variants:[{match:s},{match:a}]}]};return{case_insensitive:!1,keywords:S,contains:[B,t.HASH_COMMENT_MODE,t.COMMENT("//","$"),t.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:t.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},l,{scope:"variable.language",match:/\$this\b/},o,P,T,{match:[/const/,/\s/,r],scope:{1:"keyword",3:"variable.constant"}},E,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},t.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:S,contains:["self",B,o,T,t.C_BLOCK_COMMENT_MODE,x,y]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[t.inherit(t.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},t.UNDERSCORE_TITLE_MODE]},x,y]}}function Jwe(t){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},t.inherit(t.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}function Zwe(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}function Qwe(t){const e=t.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,r=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:r,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},c={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},u={begin:/\{\{/,relevance:0},h={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,c,u,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,c,u,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,u,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,u,d]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},f="[0-9](_?[0-9])*",p=`(\\b(${f}))?\\.(${f})|\\b(${f})\\.`,x=`\\b|${r.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b(${f})|(${p}))[eE][+-]?(${f})[jJ]?(?=${x})`},{begin:`(${p})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${x})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${x})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${x})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${x})`},{begin:`\\b(${f})[jJ](?=${x})`}]},m={className:"comment",begin:e.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},g={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",c,y,h,t.HASH_COMMENT_MODE]}]};return d.contains=[h,y,c],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|\?)|=>/,contains:[c,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},h,m,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[g]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,g,h]}]}}function eke(t){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}function tke(t){const e=t.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,r=e.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,a=e.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:n,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[t.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:e.lookahead(e.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:n},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),t.HASH_COMMENT_MODE,{scope:"string",contains:[t.BACKSLASH_ESCAPE],variants:[t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[s,r]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,r]},{scope:{1:"punctuation",2:"number"},match:[a,r]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,r]}]},{scope:{3:"operator"},match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:a},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}function nke(t){const e=t.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=e.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),s=e.concat(r,/(::\w+)*/),o={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},l={className:"doctag",begin:"@[A-Za-z]+"},c={begin:"#<",end:">"},d=[t.COMMENT("#","$",{contains:[l]}),t.COMMENT("^=begin","^=end",{contains:[l],relevance:10}),t.COMMENT("^__END__",t.MATCH_NOTHING_RE)],u={className:"subst",begin:/#\{/,end:/\}/,keywords:o},h={className:"string",contains:[t.BACKSLASH_ESCAPE,u],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:e.concat(/<<[-~]?'?/,e.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[t.BACKSLASH_ESCAPE,u]})]}]},f="[1-9](_?[0-9])*|0",p="[0-9](_?[0-9])*",x={className:"number",relevance:0,variants:[{begin:`\\b(${f})(\\.(${p}))?([eE][+-]?(${p})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},y={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:o}]},E=[h,{variants:[{match:[/class\s+/,s,/\s+<\s+/,s]},{match:[/\b(class|module)\s+/,s]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:o},{match:[/(include|extend)\s+/,s],scope:{2:"title.class"},keywords:o},{relevance:0,match:[s,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:r,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[y]},{begin:t.IDENT_RE+"::"},{className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[h,{begin:n}],relevance:0},x,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:o},{begin:"("+t.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[t.BACKSLASH_ESCAPE,u],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(c,d),relevance:0}].concat(c,d);u.contains=E,y.contains=E;const N="[>?]>",T="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",A="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",M=[{begin:/^\s*=>/,starts:{end:"$",contains:E}},{className:"meta.prompt",begin:"^("+N+"|"+T+"|"+A+")(?=[ ])",starts:{end:"$",keywords:o,contains:E}}];return d.unshift(c),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:o,illegal:/\/\*/,contains:[t.SHEBANG({binary:"ruby"})].concat(M).concat(d).concat(E)}}function rke(t){const e=t.regex,n=/(r#)?/,r=e.concat(n,t.UNDERSCORE_IDENT_RE),s=e.concat(n,t.IDENT_RE),a={className:"title.function.invoke",relevance:0,begin:e.concat(/\b/,/(?!let|for|while|if|else|match\b)/,s,e.lookahead(/\s*\(/))},o="([ui](8|16|32|64|128|size)|f(32|64))?",l=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],c=["true","false","Some","None","Ok","Err"],d=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],u=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",type:u,keyword:l,literal:c,built_in:d},illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),t.inherit(t.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+o},{begin:"\\b0o([0-7_]+)"+o},{begin:"\\b0x([A-Fa-f0-9_]+)"+o},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+o}],relevance:0},{begin:[/fn/,/\s+/,r],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,r],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,r,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,r],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,r],className:{1:"keyword",3:"title.class"}},{begin:t.IDENT_RE+"::",keywords:{keyword:"Self",built_in:d,type:u}},{className:"punctuation",begin:"->"},a]}}const ske=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),ike=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ake=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],oke=[...ike,...ake],lke=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),cke=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),dke=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),uke=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function hke(t){const e=ske(t),n=dke,r=cke,s="@[a-z-]+",a="and or not only",l={className:"variable",begin:"(\\$"+"[a-zA-Z-][a-zA-Z0-9_-]*"+")\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,e.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+oke.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+r.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+n.join("|")+")"},l,{begin:/\(/,end:/\)/,contains:[e.CSS_NUMBER_MODE]},e.CSS_VARIABLE,{className:"attribute",begin:"\\b("+uke.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[e.BLOCK_COMMENT,l,e.HEXCOLOR,e.CSS_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,e.IMPORTANT,e.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:s,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:a,attribute:lke.join(" ")},contains:[{begin:s,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},l,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,e.HEXCOLOR,e.CSS_NUMBER_MODE]},e.FUNCTION_DISPATCH]}}function fke(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}function pke(t){const e=t.regex,n=t.COMMENT("--","$"),r={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},s={begin:/"/,end:/"/,contains:[{match:/""/}]},a=["true","false","unknown"],o=["double precision","large object","with timezone","without timezone"],l=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],c=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],u=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],h=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],f=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],p=u,x=[...d,...c].filter(C=>!u.includes(C)),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},m={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},g={match:e.concat(/\b/,e.either(...p),/\s*\(/),relevance:0,keywords:{built_in:p}};function v(C){return e.concat(/\b/,e.either(...C.map(E=>E.replace(/\s+/,"\\s+"))),/\b/)}const b={scope:"keyword",match:v(f),relevance:0};function S(C,{exceptions:E,when:N}={}){const T=N;return E=E||[],C.map(A=>A.match(/\|\d+$/)||E.includes(A)?A:T(A)?`${A}|0`:A)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:S(x,{when:C=>C.length<3}),literal:a,type:l,built_in:h},contains:[{scope:"type",match:v(o)},b,g,y,r,s,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,n,m]}}function b9(t){return t?typeof t=="string"?t:t.source:null}function Dm(t){return Zn("(?=",t,")")}function Zn(...t){return t.map(n=>b9(n)).join("")}function mke(t){const e=t[t.length-1];return typeof e=="object"&&e.constructor===Object?(t.splice(t.length-1,1),e):{}}function fi(...t){return"("+(mke(t).capture?"":"?:")+t.map(r=>b9(r)).join("|")+")"}const gj=t=>Zn(/\b/,t,/\w$/.test(t)?/\b/:/\B/),gke=["Protocol","Type"].map(gj),DB=["init","self"].map(gj),xke=["Any","Self"],lE=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],OB=["false","nil","true"],yke=["assignment","associativity","higherThan","left","lowerThan","none","right"],vke=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],BB=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],_9=fi(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),S9=fi(_9,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),cE=Zn(_9,S9,"*"),w9=fi(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),n1=fi(w9,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Lo=Zn(w9,n1,"*"),Pv=Zn(/[A-Z]/,n1,"*"),bke=["attached","autoclosure",Zn(/convention\(/,fi("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",Zn(/objc\(/,Lo,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],_ke=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function Ske(t){const e={match:/\s+/,relevance:0},n=t.COMMENT("/\\*","\\*/",{contains:["self"]}),r=[t.C_LINE_COMMENT_MODE,n],s={match:[/\./,fi(...gke,...DB)],className:{2:"keyword"}},a={match:Zn(/\./,fi(...lE)),relevance:0},o=lE.filter(xe=>typeof xe=="string").concat(["_|0"]),l=lE.filter(xe=>typeof xe!="string").concat(xke).map(gj),c={variants:[{className:"keyword",match:fi(...l,...DB)}]},d={$pattern:fi(/\b\w+/,/#\w+/),keyword:o.concat(vke),literal:OB},u=[s,a,c],h={match:Zn(/\./,fi(...BB)),relevance:0},f={className:"built_in",match:Zn(/\b/,fi(...BB),/(?=\()/)},p=[h,f],x={match:/->/,relevance:0},y={className:"operator",relevance:0,variants:[{match:cE},{match:`\\.(\\.|${S9})+`}]},m=[x,y],g="([0-9]_*)+",v="([0-9a-fA-F]_*)+",b={className:"number",relevance:0,variants:[{match:`\\b(${g})(\\.(${g}))?([eE][+-]?(${g}))?\\b`},{match:`\\b0x(${v})(\\.(${v}))?([pP][+-]?(${g}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},S=(xe="")=>({className:"subst",variants:[{match:Zn(/\\/,xe,/[0\\tnr"']/)},{match:Zn(/\\/,xe,/u\{[0-9a-fA-F]{1,8}\}/)}]}),C=(xe="")=>({className:"subst",match:Zn(/\\/,xe,/[\t ]*(?:[\r\n]|\r\n)/)}),E=(xe="")=>({className:"subst",label:"interpol",begin:Zn(/\\/,xe,/\(/),end:/\)/}),N=(xe="")=>({begin:Zn(xe,/"""/),end:Zn(/"""/,xe),contains:[S(xe),C(xe),E(xe)]}),T=(xe="")=>({begin:Zn(xe,/"/),end:Zn(/"/,xe),contains:[S(xe),E(xe)]}),A={className:"string",variants:[N(),N("#"),N("##"),N("###"),T(),T("#"),T("##"),T("###")]},M=[t.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[t.BACKSLASH_ESCAPE]}],P={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:M},I=xe=>{const Ce=Zn(xe,/\//),Y=Zn(/\//,xe);return{begin:Ce,end:Y,contains:[...M,{scope:"comment",begin:`#(?!.*${Y})`,end:/$/}]}},B={scope:"regexp",variants:[I("###"),I("##"),I("#"),P]},V={match:Zn(/`/,Lo,/`/)},K={className:"variable",match:/\$\d+/},H={className:"variable",match:`\\$${n1}+`},$=[V,K,H],L={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:_ke,contains:[...m,b,A]}]}},U={scope:"keyword",match:Zn(/@/,fi(...bke),Dm(fi(/\(/,/\s+/)))},R={scope:"meta",match:Zn(/@/,Lo)},D=[L,U,R],G={match:Dm(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:Zn(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,n1,"+")},{className:"type",match:Pv,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:Zn(/\s+&\s+/,Dm(Pv)),relevance:0}]},F={begin:/</,end:/>/,keywords:d,contains:[...r,...u,...D,x,G]};G.contains.push(F);const J={match:Zn(Lo,/\s*:/),keywords:"_|0",relevance:0},q={begin:/\(/,end:/\)/,relevance:0,keywords:d,contains:["self",J,...r,B,...u,...p,...m,b,A,...$,...D,G]},te={begin:/</,end:/>/,keywords:"repeat each",contains:[...r,G]},z={begin:fi(Dm(Zn(Lo,/\s*:/)),Dm(Zn(Lo,/\s+/,Lo,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Lo}]},Q={begin:/\(/,end:/\)/,keywords:d,contains:[z,...r,...u,...m,b,A,...D,G,q],endsParent:!0,illegal:/["']/},re={match:[/(func|macro)/,/\s+/,fi(V.match,Lo,cE)],className:{1:"keyword",3:"title.function"},contains:[te,Q,e],illegal:[/\[/,/%/]},ie={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[te,Q,e],illegal:/\[|%/},de={match:[/operator/,/\s+/,cE],className:{1:"keyword",3:"title"}},ee={begin:[/precedencegroup/,/\s+/,Pv],className:{1:"keyword",3:"title"},contains:[G],keywords:[...yke,...OB],end:/}/},ke={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},ae={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},ge={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,Lo,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:d,contains:[te,...u,{begin:/:/,end:/\{/,keywords:d,contains:[{scope:"title.class.inherited",match:Pv},...u],relevance:0}]};for(const xe of A.variants){const Ce=xe.contains.find(ve=>ve.label==="interpol");Ce.keywords=d;const Y=[...u,...p,...m,b,A,...$];Ce.contains=[...Y,{begin:/\(/,end:/\)/,contains:["self",...Y]}]}return{name:"Swift",keywords:d,contains:[...r,re,ie,ke,ae,ge,de,ee,{beginKeywords:"import",end:/$/,contains:[...r],relevance:0},B,...u,...p,...m,b,A,...$,...D,G,q]}}const r1="[A-Za-z$_][0-9A-Za-z$_]*",k9=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],C9=["true","false","null","undefined","NaN","Infinity"],E9=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],A9=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],T9=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],M9=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],N9=[].concat(T9,E9,A9);function wke(t){const e=t.regex,n=(L,{after:U})=>{const R="</"+L[0].slice(1);return L.input.indexOf(R,U)!==-1},r=r1,s={begin:"<>",end:"</>"},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(L,U)=>{const R=L[0].length+L.index,D=L.input[R];if(D==="<"||D===","){U.ignoreMatch();return}D===">"&&(n(L,{after:R})||U.ignoreMatch());let G;const F=L.input.substring(R);if(G=F.match(/^\s*=/)){U.ignoreMatch();return}if((G=F.match(/^\s+extends\s+/))&&G.index===0){U.ignoreMatch();return}}},l={$pattern:r1,keyword:k9,literal:C9,built_in:N9,"variable.language":M9},c="[0-9](_?[0-9])*",d=`\\.(${c})`,u="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",h={className:"number",variants:[{begin:`(\\b(${u})((${d})|\\.)?|(${d}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},f={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,f]},v={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},b=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,{match:/\$\d+/},h];f.contains=b.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(b)});const S=[].concat(v,f.contains),C=S.concat([{begin:/(\s*)\(/,end:/\)/,keywords:l,contains:["self"].concat(S)}]),E={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C},N={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,e.concat(r,"(",e.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...E9,...A9]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[E],illegal:/%/},P={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function I(L){return e.concat("(?!",L.join("|"),")")}const B={match:e.concat(/\b/,I([...T9,"super","import"].map(L=>`${L}\\s*\\(`)),r,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},V={begin:e.concat(/\./,e.lookahead(e.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},K={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},E]},H="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",$={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(H)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[E]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,v,{match:/\$\d+/},h,T,{scope:"attr",match:r+e.lookahead(":"),relevance:0},$,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,t.REGEXP_MODE,{className:"function",begin:H,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[E,t.inherit(t.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},V,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[E]},B,P,N,K,{match:/\$[(.]/}]}}function kke(t){const e=t.regex,n=wke(t),r=r1,s=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],a={begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},o={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:s},contains:[n.exports.CLASS_REFERENCE]},l={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:r1,keyword:k9.concat(c),literal:C9,built_in:N9.concat(s),"variable.language":M9},u={className:"meta",begin:"@"+r},h=(y,m,g)=>{const v=y.contains.findIndex(b=>b.label===m);if(v===-1)throw new Error("can not find mode to replace");y.contains.splice(v,1,g)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(u);const f=n.contains.find(y=>y.scope==="attr"),p=Object.assign({},f,{match:e.concat(r,e.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,f,p]),n.contains=n.contains.concat([u,a,o,p]),h(n,"shebang",t.SHEBANG()),h(n,"use_strict",l);const x=n.contains.find(y=>y.label==="func.def");return x.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function Cke(t){const e=t.regex,n={className:"string",begin:/"(""|[^/n])"C\b/},r={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,o=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,l=/\d{1,2}(:\d{1,2}){1,2}/,c={className:"literal",variants:[{begin:e.concat(/# */,e.either(a,s),/ *#/)},{begin:e.concat(/# */,l,/ *#/)},{begin:e.concat(/# */,o,/ *#/)},{begin:e.concat(/# */,e.either(a,s),/ +/,e.either(o,l),/ *#/)}]},d={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},u={className:"label",begin:/^\w+:/},h=t.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),f=t.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[n,r,c,d,u,h,f,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[f]}]}}function Eke(t){t.regex;const e=t.COMMENT(/\(;/,/;\)/);e.contains.push("self");const n=t.COMMENT(/;;/,/$/),r=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],s={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},a={className:"variable",begin:/\$[\w_]+/},o={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},l={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},c={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},d={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:r},contains:[n,e,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},a,o,s,t.QUOTE_STRING_MODE,c,d,l]}}function Ake(t){const e=t.regex,n=e.concat(/[\p{L}_]/u,e.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,s={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=t.inherit(a,{begin:/\(/,end:/\)/}),l=t.inherit(t.APOS_STRING_MODE,{className:"string"}),c=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,c,l,o,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[a,o,c,l]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:e.concat(/</,e.lookahead(e.concat(n,e.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:d}]},{className:"tag",begin:e.concat(/<\//,e.lookahead(e.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function Tke(t){const e="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",r={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},s={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},o={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,s]},l=t.inherit(o,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),c="[0-9]{4}(-[0-9][0-9]){0,2}",d="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",u="(\\.[0-9]*)?",h="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",f={className:"number",begin:"\\b"+c+d+u+h+"\\b"},p={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},x={begin:/\{/,end:/\}/,contains:[p],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[p],illegal:"\\n",relevance:0},m=[r,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},f,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},x,y,a,o],g=[...m];return g.pop(),g.push(l),p.contains=g,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:m}}const Mke={arduino:dwe,bash:uwe,c:hwe,cpp:fwe,csharp:pwe,css:wwe,diff:kwe,go:Cwe,graphql:Ewe,ini:Awe,java:Twe,javascript:Iwe,json:Pwe,kotlin:Dwe,less:Wwe,lua:Vwe,makefile:$we,markdown:Kwe,objectivec:qwe,perl:Xwe,php:Ywe,"php-template":Jwe,plaintext:Zwe,python:Qwe,"python-repl":eke,r:tke,ruby:nke,rust:rke,scss:hke,shell:fke,sql:pke,swift:Ske,typescript:kke,vbnet:Cke,wasm:Eke,xml:Ake,yaml:Tke};function j9(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach(e=>{const n=t[e],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&j9(n)}),t}let FB=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function R9(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Nc(t,...e){const n=Object.create(null);for(const r in t)n[r]=t[r];return e.forEach(function(r){for(const s in r)n[s]=r[s]}),n}const Nke="</span>",UB=t=>!!t.scope,jke=(t,{prefix:e})=>{if(t.startsWith("language:"))return t.replace("language:","language-");if(t.includes(".")){const n=t.split(".");return[`${e}${n.shift()}`,...n.map((r,s)=>`${r}${"_".repeat(s+1)}`)].join(" ")}return`${e}${t}`};class Rke{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=R9(e)}openNode(e){if(!UB(e))return;const n=jke(e.scope,{prefix:this.classPrefix});this.span(n)}closeNode(e){UB(e)&&(this.buffer+=Nke)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}const zB=(t={})=>{const e={children:[]};return Object.assign(e,t),e};class xj{constructor(){this.rootNode=zB(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n=zB({scope:e});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return typeof n=="string"?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(r=>this._walk(e,r)),e.closeNode(n)),e}static _collapse(e){typeof e!="string"&&e.children&&(e.children.every(n=>typeof n=="string")?e.children=[e.children.join("")]:e.children.forEach(n=>{xj._collapse(n)}))}}class Ike extends xj{constructor(e){super(),this.options=e}addText(e){e!==""&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,n){const r=e.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new Rke(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function vx(t){return t?typeof t=="string"?t:t.source:null}function I9(t){return th("(?=",t,")")}function Pke(t){return th("(?:",t,")*")}function Lke(t){return th("(?:",t,")?")}function th(...t){return t.map(n=>vx(n)).join("")}function Dke(t){const e=t[t.length-1];return typeof e=="object"&&e.constructor===Object?(t.splice(t.length-1,1),e):{}}function yj(...t){return"("+(Dke(t).capture?"":"?:")+t.map(r=>vx(r)).join("|")+")"}function P9(t){return new RegExp(t.toString()+"|").exec("").length-1}function Oke(t,e){const n=t&&t.exec(e);return n&&n.index===0}const Bke=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function vj(t,{joinWith:e}){let n=0;return t.map(r=>{n+=1;const s=n;let a=vx(r),o="";for(;a.length>0;){const l=Bke.exec(a);if(!l){o+=a;break}o+=a.substring(0,l.index),a=a.substring(l.index+l[0].length),l[0][0]==="\\"&&l[1]?o+="\\"+String(Number(l[1])+s):(o+=l[0],l[0]==="("&&n++)}return o}).map(r=>`(${r})`).join(e)}const Fke=/\b\B/,L9="[a-zA-Z]\\w*",bj="[a-zA-Z_]\\w*",D9="\\b\\d+(\\.\\d+)?",O9="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",B9="\\b(0b[01]+)",Uke="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",zke=(t={})=>{const e=/^#![ ]*\//;return t.binary&&(t.begin=th(e,/.*\b/,t.binary,/\b.*/)),Nc({scope:"meta",begin:e,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},t)},bx={begin:"\\\\[\\s\\S]",relevance:0},Hke={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[bx]},Gke={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[bx]},Wke={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},PS=function(t,e,n={}){const r=Nc({scope:"comment",begin:t,end:e,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=yj("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:th(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},Vke=PS("//","$"),$ke=PS("/\\*","\\*/"),Kke=PS("#","$"),qke={scope:"number",begin:D9,relevance:0},Xke={scope:"number",begin:O9,relevance:0},Yke={scope:"number",begin:B9,relevance:0},Jke={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[bx,{begin:/\[/,end:/\]/,relevance:0,contains:[bx]}]},Zke={scope:"title",begin:L9,relevance:0},Qke={scope:"title",begin:bj,relevance:0},eCe={begin:"\\.\\s*"+bj,relevance:0},tCe=function(t){return Object.assign(t,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})};var Lv=Object.freeze({__proto__:null,APOS_STRING_MODE:Hke,BACKSLASH_ESCAPE:bx,BINARY_NUMBER_MODE:Yke,BINARY_NUMBER_RE:B9,COMMENT:PS,C_BLOCK_COMMENT_MODE:$ke,C_LINE_COMMENT_MODE:Vke,C_NUMBER_MODE:Xke,C_NUMBER_RE:O9,END_SAME_AS_BEGIN:tCe,HASH_COMMENT_MODE:Kke,IDENT_RE:L9,MATCH_NOTHING_RE:Fke,METHOD_GUARD:eCe,NUMBER_MODE:qke,NUMBER_RE:D9,PHRASAL_WORDS_MODE:Wke,QUOTE_STRING_MODE:Gke,REGEXP_MODE:Jke,RE_STARTERS_RE:Uke,SHEBANG:zke,TITLE_MODE:Zke,UNDERSCORE_IDENT_RE:bj,UNDERSCORE_TITLE_MODE:Qke});function nCe(t,e){t.input[t.index-1]==="."&&e.ignoreMatch()}function rCe(t,e){t.className!==void 0&&(t.scope=t.className,delete t.className)}function sCe(t,e){e&&t.beginKeywords&&(t.begin="\\b("+t.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",t.__beforeBegin=nCe,t.keywords=t.keywords||t.beginKeywords,delete t.beginKeywords,t.relevance===void 0&&(t.relevance=0))}function iCe(t,e){Array.isArray(t.illegal)&&(t.illegal=yj(...t.illegal))}function aCe(t,e){if(t.match){if(t.begin||t.end)throw new Error("begin & end are not supported with match");t.begin=t.match,delete t.match}}function oCe(t,e){t.relevance===void 0&&(t.relevance=1)}const lCe=(t,e)=>{if(!t.beforeMatch)return;if(t.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},t);Object.keys(t).forEach(r=>{delete t[r]}),t.keywords=n.keywords,t.begin=th(n.beforeMatch,I9(n.begin)),t.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},t.relevance=0,delete n.beforeMatch},cCe=["of","and","for","in","not","or","if","then","parent","list","value"],dCe="keyword";function F9(t,e,n=dCe){const r=Object.create(null);return typeof t=="string"?s(n,t.split(" ")):Array.isArray(t)?s(n,t):Object.keys(t).forEach(function(a){Object.assign(r,F9(t[a],e,a))}),r;function s(a,o){e&&(o=o.map(l=>l.toLowerCase())),o.forEach(function(l){const c=l.split("|");r[c[0]]=[a,uCe(c[0],c[1])]})}}function uCe(t,e){return e?Number(e):hCe(t)?0:1}function hCe(t){return cCe.includes(t.toLowerCase())}const HB={},Su=t=>{console.error(t)},GB=(t,...e)=>{console.log(`WARN: ${t}`,...e)},Vh=(t,e)=>{HB[`${t}/${e}`]||(console.log(`Deprecated as of ${t}. ${e}`),HB[`${t}/${e}`]=!0)},s1=new Error;function U9(t,e,{key:n}){let r=0;const s=t[n],a={},o={};for(let l=1;l<=e.length;l++)o[l+r]=s[l],a[l+r]=!0,r+=P9(e[l-1]);t[n]=o,t[n]._emit=a,t[n]._multi=!0}function fCe(t){if(Array.isArray(t.begin)){if(t.skip||t.excludeBegin||t.returnBegin)throw Su("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),s1;if(typeof t.beginScope!="object"||t.beginScope===null)throw Su("beginScope must be object"),s1;U9(t,t.begin,{key:"beginScope"}),t.begin=vj(t.begin,{joinWith:""})}}function pCe(t){if(Array.isArray(t.end)){if(t.skip||t.excludeEnd||t.returnEnd)throw Su("skip, excludeEnd, returnEnd not compatible with endScope: {}"),s1;if(typeof t.endScope!="object"||t.endScope===null)throw Su("endScope must be object"),s1;U9(t,t.end,{key:"endScope"}),t.end=vj(t.end,{joinWith:""})}}function mCe(t){t.scope&&typeof t.scope=="object"&&t.scope!==null&&(t.beginScope=t.scope,delete t.scope)}function gCe(t){mCe(t),typeof t.beginScope=="string"&&(t.beginScope={_wrap:t.beginScope}),typeof t.endScope=="string"&&(t.endScope={_wrap:t.endScope}),fCe(t),pCe(t)}function xCe(t){function e(o,l){return new RegExp(vx(o),"m"+(t.case_insensitive?"i":"")+(t.unicodeRegex?"u":"")+(l?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(l,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,l]),this.matchAt+=P9(l)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const l=this.regexes.map(c=>c[1]);this.matcherRe=e(vj(l,{joinWith:"|"}),!0),this.lastIndex=0}exec(l){this.matcherRe.lastIndex=this.lastIndex;const c=this.matcherRe.exec(l);if(!c)return null;const d=c.findIndex((h,f)=>f>0&&h!==void 0),u=this.matchIndexes[d];return c.splice(0,d),Object.assign(c,u)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(l){if(this.multiRegexes[l])return this.multiRegexes[l];const c=new n;return this.rules.slice(l).forEach(([d,u])=>c.addRule(d,u)),c.compile(),this.multiRegexes[l]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(l,c){this.rules.push([l,c]),c.type==="begin"&&this.count++}exec(l){const c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let d=c.exec(l);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const u=this.getMatcher(0);u.lastIndex=this.lastIndex+1,d=u.exec(l)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function s(o){const l=new r;return o.contains.forEach(c=>l.addRule(c.begin,{rule:c,type:"begin"})),o.terminatorEnd&&l.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&l.addRule(o.illegal,{type:"illegal"}),l}function a(o,l){const c=o;if(o.isCompiled)return c;[rCe,aCe,gCe,lCe].forEach(u=>u(o,l)),t.compilerExtensions.forEach(u=>u(o,l)),o.__beforeBegin=null,[sCe,iCe,oCe].forEach(u=>u(o,l)),o.isCompiled=!0;let d=null;return typeof o.keywords=="object"&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),d=o.keywords.$pattern,delete o.keywords.$pattern),d=d||/\w+/,o.keywords&&(o.keywords=F9(o.keywords,t.case_insensitive)),c.keywordPatternRe=e(d,!0),l&&(o.begin||(o.begin=/\B|\b/),c.beginRe=e(c.begin),!o.end&&!o.endsWithParent&&(o.end=/\B|\b/),o.end&&(c.endRe=e(c.end)),c.terminatorEnd=vx(c.end)||"",o.endsWithParent&&l.terminatorEnd&&(c.terminatorEnd+=(o.end?"|":"")+l.terminatorEnd)),o.illegal&&(c.illegalRe=e(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(u){return yCe(u==="self"?o:u)})),o.contains.forEach(function(u){a(u,c)}),o.starts&&a(o.starts,l),c.matcher=s(c),c}if(t.compilerExtensions||(t.compilerExtensions=[]),t.contains&&t.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return t.classNameAliases=Nc(t.classNameAliases||{}),a(t)}function z9(t){return t?t.endsWithParent||z9(t.starts):!1}function yCe(t){return t.variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(function(e){return Nc(t,{variants:null},e)})),t.cachedVariants?t.cachedVariants:z9(t)?Nc(t,{starts:t.starts?Nc(t.starts):null}):Object.isFrozen(t)?Nc(t):t}var vCe="11.11.1";class bCe extends Error{constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}}const dE=R9,WB=Nc,VB=Symbol("nomatch"),_Ce=7,H9=function(t){const e=Object.create(null),n=Object.create(null),r=[];let s=!0;const a="Could not find the language '{}', did you forget to load/include a language module?",o={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Ike};function c(H){return l.noHighlightRe.test(H)}function d(H){let $=H.className+" ";$+=H.parentNode?H.parentNode.className:"";const L=l.languageDetectRe.exec($);if(L){const U=T(L[1]);return U||(GB(a.replace("{}",L[1])),GB("Falling back to no-highlight mode for this block.",H)),U?L[1]:"no-highlight"}return $.split(/\s+/).find(U=>c(U)||T(U))}function u(H,$,L){let U="",R="";typeof $=="object"?(U=H,L=$.ignoreIllegals,R=$.language):(Vh("10.7.0","highlight(lang, code, ...args) has been deprecated."),Vh("10.7.0",`Please use highlight(code, options) instead.
|
|
4951
|
-
https://github.com/highlightjs/highlight.js/issues/2277`),R=H,U=$),L===void 0&&(L=!0);const D={code:U,language:R};V("before:highlight",D);const G=D.result?D.result:h(D.language,D.code,L);return G.code=D.code,V("after:highlight",G),G}function h(H,$,L,U){const R=Object.create(null);function D(se,le){return se.keywords[le]}function G(){if(!Y.keywords){be.addText(_e);return}let se=0;Y.keywordPatternRe.lastIndex=0;let le=Y.keywordPatternRe.exec(_e),fe="";for(;le;){fe+=_e.substring(se,le.index);const Te=ge.case_insensitive?le[0].toLowerCase():le[0],Ne=D(Y,Te);if(Ne){const[He,$e]=Ne;if(be.addText(fe),fe="",R[Te]=(R[Te]||0)+1,R[Te]<=
|
|
4952
|
-
`,1;if(X>1e5&&X>le.index*3)throw new Error("potential infinite loop, way more iterations than matches");return _e+=fe,fe.length}const ge=T(H);if(!ge)throw Su(a.replace("{}",H)),new Error('Unknown language: "'+H+'"');const xe=xCe(ge);let Ce="",Y=U||xe;const ve={},be=new l.__emitter(l);ee();let _e="",Me=0,ne=0,X=0,ue=!1;try{if(ge.__emitTokens)ge.__emitTokens($,be);else{for(Y.matcher.considerAll();;){X++,ue?ue=!1:Y.matcher.considerAll(),Y.matcher.lastIndex=ne;const se=Y.matcher.exec($);if(!se)break;const le=$.substring(ne,se.index),fe=ae(le,se);ne=se.index+fe}ae($.substring(ne))}return be.finalize(),Ce=be.toHTML(),{language:H,value:Ce,relevance:Me,illegal:!1,_emitter:be,_top:Y}}catch(se){if(se.message&&se.message.includes("Illegal"))return{language:H,value:dE($),illegal:!0,relevance:0,_illegalBy:{message:se.message,index:ne,context:$.slice(ne-100,ne+100),mode:se.mode,resultSoFar:Ce},_emitter:be};if(s)return{language:H,value:dE($),illegal:!1,relevance:0,errorRaised:se,_emitter:be,_top:Y};throw se}}function f(H){const $={value:dE(H),illegal:!1,relevance:0,_top:o,_emitter:new l.__emitter(l)};return $._emitter.addText(H),$}function p(H,$){$=$||l.languages||Object.keys(e);const L=f(H),U=$.filter(T).filter(M).map(J=>h(J,H,!1));U.unshift(L);const R=U.sort((J,q)=>{if(J.relevance!==q.relevance)return q.relevance-J.relevance;if(J.language&&q.language){if(T(J.language).supersetOf===q.language)return 1;if(T(q.language).supersetOf===J.language)return-1}return 0}),[D,G]=R,F=D;return F.secondBest=G,F}function x(H,$,L){const U=$&&n[$]||L;H.classList.add("hljs"),H.classList.add(`language-${U}`)}function y(H){let $=null;const L=d(H);if(c(L))return;if(V("before:highlightElement",{el:H,language:L}),H.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",H);return}if(H.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(H)),l.throwUnescapedHTML))throw new bCe("One of your code blocks includes unescaped HTML.",H.innerHTML);$=H;const U=$.textContent,R=L?u(U,{language:L,ignoreIllegals:!0}):p(U);H.innerHTML=R.value,H.dataset.highlighted="yes",x(H,L,R.language),H.result={language:R.language,re:R.relevance,relevance:R.relevance},R.secondBest&&(H.secondBest={language:R.secondBest.language,relevance:R.secondBest.relevance}),V("after:highlightElement",{el:H,result:R,text:U})}function m(H){l=WB(l,H)}const g=()=>{S(),Vh("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function v(){S(),Vh("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let b=!1;function S(){function H(){S()}if(document.readyState==="loading"){b||window.addEventListener("DOMContentLoaded",H,!1),b=!0;return}document.querySelectorAll(l.cssSelector).forEach(y)}function C(H,$){let L=null;try{L=$(t)}catch(U){if(Su("Language definition for '{}' could not be registered.".replace("{}",H)),s)Su(U);else throw U;L=o}L.name||(L.name=H),e[H]=L,L.rawDefinition=$.bind(null,t),L.aliases&&A(L.aliases,{languageName:H})}function E(H){delete e[H];for(const $ of Object.keys(n))n[$]===H&&delete n[$]}function N(){return Object.keys(e)}function T(H){return H=(H||"").toLowerCase(),e[H]||e[n[H]]}function A(H,{languageName:$}){typeof H=="string"&&(H=[H]),H.forEach(L=>{n[L.toLowerCase()]=$})}function M(H){const $=T(H);return $&&!$.disableAutodetect}function P(H){H["before:highlightBlock"]&&!H["before:highlightElement"]&&(H["before:highlightElement"]=$=>{H["before:highlightBlock"](Object.assign({block:$.el},$))}),H["after:highlightBlock"]&&!H["after:highlightElement"]&&(H["after:highlightElement"]=$=>{H["after:highlightBlock"](Object.assign({block:$.el},$))})}function I(H){P(H),r.push(H)}function B(H){const $=r.indexOf(H);$!==-1&&r.splice($,1)}function V(H,$){const L=H;r.forEach(function(U){U[L]&&U[L]($)})}function K(H){return Vh("10.7.0","highlightBlock will be removed entirely in v12.0"),Vh("10.7.0","Please use highlightElement now."),y(H)}Object.assign(t,{highlight:u,highlightAuto:p,highlightAll:S,highlightElement:y,highlightBlock:K,configure:m,initHighlighting:g,initHighlightingOnLoad:v,registerLanguage:C,unregisterLanguage:E,listLanguages:N,getLanguage:T,registerAliases:A,autoDetection:M,inherit:WB,addPlugin:I,removePlugin:B}),t.debugMode=function(){s=!1},t.safeMode=function(){s=!0},t.versionString=vCe,t.regex={concat:th,lookahead:I9,either:yj,optional:Lke,anyNumberOfTimes:Pke};for(const H in Lv)typeof Lv[H]=="object"&&j9(Lv[H]);return Object.assign(t,Lv),t},op=H9({});op.newInstance=()=>H9({});var SCe=op;op.HighlightJS=op;op.default=op;const wCe=lp(SCe),$B={},kCe="hljs-";function CCe(t){const e=wCe.newInstance();return t&&a(t),{highlight:n,highlightAuto:r,listLanguages:s,register:a,registerAlias:o,registered:l};function n(c,d,u){const h=u||$B,f=typeof h.prefix=="string"?h.prefix:kCe;if(!e.getLanguage(c))throw new Error("Unknown language: `"+c+"` is not registered");e.configure({__emitter:ECe,classPrefix:f});const p=e.highlight(d,{ignoreIllegals:!0,language:c});if(p.errorRaised)throw new Error("Could not highlight with `Highlight.js`",{cause:p.errorRaised});const x=p._emitter.root,y=x.data;return y.language=p.language,y.relevance=p.relevance,x}function r(c,d){const h=(d||$B).subset||s();let f=-1,p=0,x;for(;++f<h.length;){const y=h[f];if(!e.getLanguage(y))continue;const m=n(y,c,d);m.data&&m.data.relevance!==void 0&&m.data.relevance>p&&(p=m.data.relevance,x=m)}return x||{type:"root",children:[],data:{language:void 0,relevance:p}}}function s(){return e.listLanguages()}function a(c,d){if(typeof c=="string")e.registerLanguage(c,d);else{let u;for(u in c)Object.hasOwn(c,u)&&e.registerLanguage(u,c[u])}}function o(c,d){if(typeof c=="string")e.registerAliases(typeof d=="string"?d:[...d],{languageName:c});else{let u;for(u in c)if(Object.hasOwn(c,u)){const h=c[u];e.registerAliases(typeof h=="string"?h:[...h],{languageName:u})}}}function l(c){return!!e.getLanguage(c)}}class ECe{constructor(e){this.options=e,this.root={type:"root",children:[],data:{language:void 0,relevance:0}},this.stack=[this.root]}addText(e){if(e==="")return;const n=this.stack[this.stack.length-1],r=n.children[n.children.length-1];r&&r.type==="text"?r.value+=e:n.children.push({type:"text",value:e})}startScope(e){this.openNode(String(e))}endScope(){this.closeNode()}__addSublanguage(e,n){const r=this.stack[this.stack.length-1],s=e.root.children;n?r.children.push({type:"element",tagName:"span",properties:{className:[n]},children:s}):r.children.push(...s)}openNode(e){const n=this,r=e.split(".").map(function(o,l){return l?o+"_".repeat(l):n.options.classPrefix+o}),s=this.stack[this.stack.length-1],a={type:"element",tagName:"span",properties:{className:r},children:[]};s.children.push(a),this.stack.push(a)}closeNode(){this.stack.pop()}finalize(){}toHTML(){return""}}const ACe={};function TCe(t){const e=t||ACe,n=e.aliases,r=e.detect||!1,s=e.languages||Mke,a=e.plainText,o=e.prefix,l=e.subset;let c="hljs";const d=CCe(s);if(n&&d.registerAlias(n),o){const u=o.indexOf("-");c=u===-1?o:o.slice(0,u)}return function(u,h){Qx(u,"element",function(f,p,x){if(f.tagName!=="code"||!x||x.type!=="element"||x.tagName!=="pre")return;const y=MCe(f);if(y===!1||!y&&!r||y&&a&&a.includes(y))return;Array.isArray(f.properties.className)||(f.properties.className=[]),f.properties.className.includes(c)||f.properties.className.unshift(c);const m=nwe(f,{whitespace:"pre"});let g;try{g=y?d.highlight(y,m,{prefix:o}):d.highlightAuto(m,{prefix:o,subset:l})}catch(v){const b=v;if(y&&/Unknown language/.test(b.message)){h.message("Cannot highlight as `"+y+"`, it’s not registered",{ancestors:[x,f],cause:b,place:f.position,ruleId:"missing-language",source:"rehype-highlight"});return}throw b}!y&&g.data&&g.data.language&&f.properties.className.push("language-"+g.data.language),g.children.length>0&&(f.children=g.children)})}}function MCe(t){const e=t.properties.className;let n=-1;if(!Array.isArray(e))return;let r;for(;++n<e.length;){const s=String(e[n]);if(s==="no-highlight"||s==="nohighlight")return!1;!r&&s.slice(0,5)==="lang-"&&(r=s.slice(5)),!r&&s.slice(0,9)==="language-"&&(r=s.slice(9))}return r}const Jm="wikilink:",KB=/\[\[([^\]|]+?)(?:\|([^\]]+?))?\]\]/g;function NCe(t){const e=t.value;if(!e.includes("[["))return null;KB.lastIndex=0;const n=[];let r=0,s,a=!1;for(;(s=KB.exec(e))!==null;){a=!0;const[o,l,c]=s,d=l.trim(),u=(c??l).trim();s.index>r&&n.push({type:"text",value:e.slice(r,s.index)});const h={type:"link",url:`${Jm}${d}`,title:null,children:[{type:"text",value:u}]};n.push(h),r=s.index+o.length}return a?(r<e.length&&n.push({type:"text",value:e.slice(r)}),n):null}function jCe(){return()=>t=>{Qx(t,"text",(e,n,r)=>{if(!r||typeof n!="number"||r.type==="link")return;const s=NCe(e);if(s)return r.children.splice(n,1,...s),[OG,n+s.length]})}}function RCe(t){const e=/^?---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n)*/.exec(t);if(!e)return{title:null,body:t};const n=/^title:\s*(.+?)\s*$/m.exec(e[1]);return{title:n?n[1].replace(/^["']|["']$/g,"").trim():null,body:t.slice(e[0].length)}}function ICe({content:t,onWikilinkClick:e}){const n=k.useCallback((a,o)=>{!o||!o.startsWith(Jm)||(a.preventDefault(),e&&e(o.slice(Jm.length)))},[e]),{title:r,body:s}=RCe(t);return i.jsxs("div",{className:"wiki-md",children:[r&&i.jsx("h1",{className:"wiki-md-title",children:r}),i.jsx(D_e,{remarkPlugins:[XSe,jCe()],rehypePlugins:[[TCe,{ignoreMissing:!0}]],urlTransform:a=>typeof a=="string"&&a.startsWith(Jm)||/^(https?:|mailto:|tel:|#|\/|\.\.?\/)/i.test(a)?a:"",components:{a:({href:a,children:o,node:l,...c})=>typeof a=="string"&&a.startsWith(Jm)?i.jsx("a",{...c,href:a,className:"wiki-md-wikilink",onClick:u=>n(u,a),children:o}):i.jsx("a",{...c,href:a,target:"_blank",rel:"noopener noreferrer",children:o})},children:s})]})}function PCe({vaultPath:t,onClose:e,onChanged:n}){const[r,s]=k.useState([]),[a,o]=k.useState(!0),[l,c]=k.useState(null),[d,u]=k.useState(null),h=k.useCallback(async()=>{o(!0),c(null);try{const y=await fetch(`/api/wiki/sop-catalog?vaultPath=${encodeURIComponent(t)}`),m=await y.json();if(!y.ok||!m.success)throw new Error(m.error||`HTTP ${y.status}`);s(m.catalog)}catch(y){c(y.message)}finally{o(!1)}},[t]);k.useEffect(()=>{h()},[h]);const f=k.useCallback(async y=>{u(y.path),c(null);const m=y.installed?"uninstall":"install";try{const g=await fetch(`/api/wiki/sop-catalog/${m}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({vaultPath:t,sopPath:y.path})}),v=await g.json();if(!g.ok||!v.success)throw new Error(v.error||`HTTP ${g.status}`);s(b=>b.map(S=>S.path===y.path?{...S,installed:!y.installed}:S)),n()}catch(g){c(g.message)}finally{u(null)}},[t,n]),p=r.reduce((y,m)=>{var g;return(y[g=m.category]??(y[g]=[])).push(m),y},{}),x=r.filter(y=>y.installed).length;return i.jsx("div",{className:"sop-catalog-backdrop",onClick:e,role:"presentation",children:i.jsxs("div",{className:"sop-catalog-modal",onClick:y=>y.stopPropagation(),role:"dialog","aria-label":"SOP catalog","data-testid":"sop-catalog-modal",children:[i.jsxs("div",{className:"sop-catalog-header",children:[i.jsxs("div",{children:[i.jsx("h2",{children:"SOP Catalog"}),i.jsxs("p",{className:"sop-catalog-sub",children:["Install SOPs from the shared catalog into this team. ",x," installed."]})]}),i.jsx("button",{type:"button",className:"sop-catalog-close",onClick:e,"aria-label":"Close",children:i.jsx(On,{size:18})})]}),l&&i.jsxs("div",{className:"sop-catalog-error",children:[i.jsx(Or,{size:14})," ",l]}),i.jsxs("div",{className:"sop-catalog-body",children:[a&&i.jsx("div",{className:"sop-catalog-loading",children:"Loading catalog…"}),!a&&r.length===0&&i.jsx("div",{className:"sop-catalog-empty",children:"No SOPs in the catalog."}),!a&&Object.entries(p).map(([y,m])=>i.jsxs("div",{className:"sop-catalog-group",children:[i.jsx("div",{className:"sop-catalog-group-label",children:y}),m.map(g=>i.jsxs("div",{className:"sop-catalog-row","data-testid":`sop-row-${g.path}`,children:[i.jsxs("div",{className:"sop-catalog-row-info",children:[i.jsx("span",{className:"sop-catalog-row-title",children:g.title}),i.jsx("span",{className:"sop-catalog-row-path",children:g.path})]}),i.jsx("button",{type:"button",className:`sop-catalog-btn${g.installed?" installed":""}`,disabled:d===g.path,onClick:()=>f(g),"data-testid":`sop-toggle-${g.path}`,children:g.installed?i.jsxs(i.Fragment,{children:[i.jsx(br,{size:13})," Installed"]}):i.jsxs(i.Fragment,{children:[i.jsx(gp,{size:13})," Install"]})})]},g.path))]},y))]})]})})}const LCe={sop:"SOP","team-norm":"Team Norm"};function qB(t){return t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)}function DCe({vaultPath:t,folder:e,mode:n,initialPath:r,initialContent:s,onClose:a,onSaved:o}){const[l,c]=k.useState(()=>n==="edit"&&r?r.split("/").pop().replace(/\.md$/,""):""),[d,u]=k.useState(s??""),[h,f]=k.useState(!1),[p,x]=k.useState(null),y=LCe[e],m=k.useCallback(async()=>{const v=n==="edit"&&r?r.split("/").pop().replace(/\.md$/,""):qB(l);if(!v){x("Please enter a name.");return}const b=n==="edit"&&r?r:`${e}/${v}.md`;f(!0),x(null);try{const S=await fetch("/api/wiki/overlay-page",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({vaultPath:t,relativePath:b,content:d})}),C=await S.json();if(!S.ok||!C.success)throw new Error(C.error||`HTTP ${S.status}`);o(b)}catch(S){x(S.message)}finally{f(!1)}},[n,r,l,e,t,d,o]),g=k.useCallback(async()=>{if(!(n!=="edit"||!r)){f(!0),x(null);try{const v=await fetch("/api/wiki/overlay-page",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({vaultPath:t,relativePath:r})}),b=await v.json();if(!v.ok||!b.success)throw new Error(b.error||`HTTP ${v.status}`);o(null)}catch(v){x(v.message)}finally{f(!1)}}},[n,r,t,o]);return i.jsx("div",{className:"wiki-editor-backdrop",onClick:a,role:"presentation",children:i.jsxs("div",{className:"wiki-editor-modal",onClick:v=>v.stopPropagation(),role:"dialog","aria-label":`${n==="create"?"New":"Edit"} ${y}`,"data-testid":"wiki-page-editor",children:[i.jsxs("div",{className:"wiki-editor-header",children:[i.jsx("h2",{children:n==="create"?`New ${y}`:`Edit ${y}`}),i.jsx("button",{type:"button",className:"wiki-editor-close",onClick:a,"aria-label":"Close",children:i.jsx(On,{size:18})})]}),p&&i.jsxs("div",{className:"wiki-editor-error",children:[i.jsx(Or,{size:14})," ",p]}),i.jsxs("div",{className:"wiki-editor-body",children:[n==="create"?i.jsxs("label",{className:"wiki-editor-field",children:[i.jsx("span",{children:"Name"}),i.jsx("input",{type:"text",value:l,onChange:v=>c(v.target.value),placeholder:e==="sop"?"e.g. XHS posting checklist":"e.g. Code commit norm","data-testid":"wiki-editor-name",autoFocus:!0}),l&&i.jsxs("span",{className:"wiki-editor-filename",children:[e,"/",qB(l),".md"]})]}):i.jsxs("div",{className:"wiki-editor-field",children:[i.jsx("span",{children:"File"}),i.jsx("code",{className:"wiki-editor-filename",children:r})]}),i.jsxs("label",{className:"wiki-editor-field grow",children:[i.jsx("span",{children:"Content (markdown)"}),i.jsx("textarea",{value:d,onChange:v=>u(v.target.value),placeholder:`# ${y}
|
|
4953
|
-
|
|
4954
|
-
Describe the ${y.toLowerCase()}…`,"data-testid":"wiki-editor-content",spellCheck:!1})]})]}),i.jsxs("div",{className:"wiki-editor-footer",children:[n==="edit"&&i.jsxs("button",{type:"button",className:"wiki-editor-delete",onClick:g,disabled:h,"data-testid":"wiki-editor-delete",children:[i.jsx(Vi,{size:14})," Delete"]}),i.jsxs("div",{className:"wiki-editor-footer-right",children:[i.jsx("button",{type:"button",className:"wiki-editor-cancel",onClick:a,disabled:h,children:"Cancel"}),i.jsxs("button",{type:"button",className:"wiki-editor-save",onClick:m,disabled:h,"data-testid":"wiki-editor-save",children:[i.jsx($c,{size:14})," ",h?"Saving…":"Save"]})]})]})]})})}const OCe=250;function BCe(t,e){return t.length===0?null:(e?t.find(r=>r.scope==="team"&&r.vaultId===e):void 0)??t.find(r=>r.scope==="project")??t[0]}const FCe={sop:"SOPs","sop-overrides":"SOP Overrides","team-norm":"Team Norms",norms:"Team Norms",okr:"OKRs",okrs:"OKRs",memory:"Memory"};function UCe(t){const e=[],n=[];for(const r of t??[])r.type==="directory"&&r.frozen?e.push(r):n.push(r);return{canonicalNodes:e,workingNodes:n}}function zCe(t){return t.length>0&&t.every(e=>{var n;return(((n=e.children)==null?void 0:n.length)??0)===0})}const HCe={decision:"decisions",pattern:"patterns",gotcha:"gotchas",relationship:"relationships","learning-log":"learnings","loose-md":"loose .md","memory-entry":"agent memory"},GCe={global:"Global",team:"Team",project:"Project",unknown:"Unknown"},XB={global:0,project:1,team:2,unknown:3};function WCe(){const[t]=pp(),e=t.get(Ml),n=t.get("focus"),[r,s]=k.useState([]),[a,o]=k.useState(!0),[l,c]=k.useState(null),[d,u]=k.useState(null),[h,f]=k.useState(null),[p,x]=k.useState(!1),[y,m]=k.useState(null),[g,v]=k.useState(null),[b,S]=k.useState(null),[C,E]=k.useState(!1),[N,T]=k.useState(null),[A,M]=k.useState(null),[P,I]=k.useState(!1),[B,V]=k.useState(null),[K,H]=k.useState(""),[$,L]=k.useState(null),[U,R]=k.useState(!1),[D,G]=k.useState(null),[F,J]=k.useState(!1),[q,te]=k.useState(!0),[z,Q]=k.useState(!1),[re,ie]=k.useState(-1),[de,ee]=k.useState(null),ke=k.useRef(null),ae=k.useRef(null),[ge,xe]=k.useState(null),[Ce,Y]=k.useState(!1),[ve,be]=k.useState(null),[_e,Me]=k.useState(!1),[ne,X]=k.useState(null),[ue,se]=k.useState(new Set);k.useEffect(()=>{if(!d){se(new Set);return}try{const pe=localStorage.getItem(`wiki-tree-collapsed:${d.vaultPath}`);if(pe){const Ae=JSON.parse(pe);if(Array.isArray(Ae)){se(new Set(Ae.filter(lt=>typeof lt=="string")));return}}}catch{}se(new Set)},[d]);const le=k.useCallback(pe=>{se(Ae=>{const lt=new Set(Ae);if(lt.has(pe)?lt.delete(pe):lt.add(pe),d)try{localStorage.setItem(`wiki-tree-collapsed:${d.vaultPath}`,JSON.stringify([...lt]))}catch{}return lt})},[d]),[fe,Te]=k.useState(null),[Ne,He]=k.useState(!1),[$e,De]=k.useState(!1),[qe,Ke]=k.useState(!1),[ce,we]=k.useState(!1),[Ge,me]=k.useState(null),[Oe,je]=k.useState(null),Je=k.useCallback(async()=>{o(!0),c(null);try{const pe=await fetch("/api/wiki/vaults"),Ae=await pe.json();if(!pe.ok||!Ae.success)throw new Error(Ae.error??`HTTP ${pe.status}`);const lt=Ae.vaults.sort((xt,mn)=>{const yn=XB[xt.scope]-XB[mn.scope];return yn!==0?yn:xt.label.localeCompare(mn.label)});s(lt),lt.length>0&&!d&&u(BCe(lt,e))}catch(pe){c(pe instanceof Error?pe.message:String(pe))}finally{o(!1)}},[d,e]),Le=k.useCallback(async pe=>{x(!0),m(null),f(null),v(null),M(null);try{const Ae=await fetch(`/api/wiki/tree?vaultPath=${encodeURIComponent(pe)}`),lt=await Ae.json();if(!Ae.ok||!lt.success)throw new Error(lt.error??`HTTP ${Ae.status}`);f(lt.tree)}catch(Ae){m(Ae instanceof Error?Ae.message:String(Ae))}finally{x(!1)}},[]),Re=k.useCallback(async(pe,Ae)=>{I(!0),V(null),M(null);try{const lt=await fetch(`/api/wiki/page?vaultPath=${encodeURIComponent(pe)}&relativePath=${encodeURIComponent(Ae)}`),xt=await lt.json();if(!lt.ok||!xt.success)throw new Error(xt.error??`HTTP ${lt.status}`);M(xt)}catch(lt){V(lt instanceof Error?lt.message:String(lt))}finally{I(!1)}},[]),We=k.useCallback(async(pe,Ae,lt)=>{R(!0),G(null);try{const xt=lt?`/api/wiki/search-all?q=${encodeURIComponent(Ae)}`:`/api/wiki/search?vaultPath=${encodeURIComponent(pe)}&q=${encodeURIComponent(Ae)}`,mn=await fetch(xt),yn=await mn.json();if(!mn.ok||!yn.success)throw new Error(yn.error??`HTTP ${mn.status}`);L(yn.hits),J(!!yn.truncated)}catch(xt){G(xt instanceof Error?xt.message:String(xt)),L([])}finally{R(!1)}},[]),tt=k.useCallback(async pe=>{var Ae;try{const lt=await fetch("/api/wiki/lint",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({vaultPath:pe,staleDays:60})}),xt=await lt.json();if(!lt.ok||!xt.success){X(null);return}X({missingConcepts:((Ae=xt.report)==null?void 0:Ae.missingConcepts)??[]})}catch{X(null)}},[]),ot=k.useCallback(async()=>{He(!0),me(null);try{const pe=await fetch("/api/wiki/migrate/scan",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({includeAgentMemory:!0})}),Ae=await pe.json();if(!pe.ok||!Ae.success)throw new Error(Ae.error??`HTTP ${pe.status}`);Te({legacyDetected:Ae.legacyDetected,proposedPages:Ae.proposedPages,bootstrapNeeded:Ae.bootstrapNeeded,summary:Ae.summary})}catch(pe){me(pe instanceof Error?pe.message:String(pe))}finally{He(!1)}},[]),pt=k.useCallback(async()=>{De(!0),me(null);try{const pe=await fetch("/api/wiki/migrate/apply",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({confirm:!0,includeAgentMemory:!0})}),Ae=await pe.json();if(!pe.ok||!Ae.success)throw new Error(Ae.error??`HTTP ${pe.status}`);je({legacyDetected:Ae.legacyDetected,proposedPages:Ae.proposedPages,bootstrapNeeded:Ae.bootstrapNeeded,summary:Ae.summary,applied:Ae.applied,skipped:Ae.skipped,bootstrapped:Ae.bootstrapped}),Te(null),Je()}catch(pe){me(pe instanceof Error?pe.message:String(pe))}finally{De(!1)}},[Je]),Xt=k.useCallback(async pe=>{Me(!0),be(null);try{const Ae=await fetch(`/api/wiki/recent?vaultPath=${encodeURIComponent(pe)}&limit=8`),lt=await Ae.json();if(!Ae.ok||!lt.success){be([]);return}be(lt.entries)}catch{be([])}finally{Me(!1)}},[]),Nt=k.useCallback(async(pe,Ae)=>{Y(!0),xe(null);try{const lt=await fetch(`/api/wiki/backlinks?vaultPath=${encodeURIComponent(pe)}&relativePath=${encodeURIComponent(Ae)}`),xt=await lt.json();if(!lt.ok||!xt.success){xe([]);return}xe(xt.backlinks)}catch{xe([])}finally{Y(!1)}},[]);k.useEffect(()=>{Je()},[Je]),k.useEffect(()=>{ot()},[ot]);const Gt=k.useCallback(pe=>{u(pe),v(null),M(null),V(null),xe(null)},[]);k.useEffect(()=>{de&&(d==null?void 0:d.vaultPath)===de.vaultPath&&(v(de.relativePath),ee(null))},[de,d]);const dn=k.useCallback((pe,Ae)=>{if(Ae&&Ae!==(d==null?void 0:d.vaultPath)){const lt=r.find(xt=>xt.vaultPath===Ae);if(lt){Gt(lt),ee({vaultPath:Ae,relativePath:pe}),H(""),Q(!1);return}}v(pe),H(""),Q(!1)},[d,r,Gt]),Bn=k.useCallback(pe=>{var lt;if(pe.key==="Escape"){K&&H(""),Q(!1),(lt=ae.current)==null||lt.blur();return}const Ae=$??[];if(pe.key==="ArrowDown")pe.preventDefault(),ie(xt=>Math.min(xt+1,Ae.length-1));else if(pe.key==="ArrowUp")pe.preventDefault(),ie(xt=>Math.max(xt-1,0));else if(pe.key==="Enter"){const xt=Ae[re];xt&&dn(xt.relativePath,xt.vaultPath)}},[$,re,K,dn]);k.useEffect(()=>{if(!z)return;const pe=Ae=>{ke.current&&!ke.current.contains(Ae.target)&&Q(!1)};return document.addEventListener("mousedown",pe),()=>document.removeEventListener("mousedown",pe)},[z]),k.useEffect(()=>{d?(Le(d.vaultPath),Xt(d.vaultPath),tt(d.vaultPath)):(be(null),X(null))},[d,Le,Xt,tt]),k.useEffect(()=>{d&&g?(Re(d.vaultPath,g),Nt(d.vaultPath,g)):xe(null)},[d,g,Re,Nt]),k.useEffect(()=>{if(!q&&!d)return;const pe=K.trim();if(pe.length===0){L(null),G(null),J(!1);return}const Ae=setTimeout(()=>{We((d==null?void 0:d.vaultPath)??"",pe,q)},OCe);return()=>clearTimeout(Ae)},[K,d,We,q]),k.useEffect(()=>{H(""),L(null),G(null)},[d==null?void 0:d.vaultPath]);const Qt=k.useMemo(()=>{if(!h)return 0;let pe=0;const Ae=lt=>{for(const xt of lt)xt.type==="file"&&pe++,xt.children&&Ae(xt.children)};return Ae(h),pe},[h]),Yt=k.useMemo(()=>{const pe=[];if(!h)return pe;const Ae=lt=>{for(const xt of lt)xt.type==="file"&&pe.push(xt.relativePath),xt.children&&Ae(xt.children)};return Ae(h),pe},[h]),{canonicalNodes:nn,workingNodes:Nn}=k.useMemo(()=>UCe(h),[h]);k.useEffect(()=>{if(!n||!d||!h)return;const pe=`${d.vaultPath}:${n}`;if(b===pe)return;const Ae=Yt.find(lt=>lt===n||lt.startsWith(`${n}/`));Ae&&v(Ae),S(pe)},[n,d,h,Yt,b]);const Hn=k.useCallback(pe=>{const Ae=JCe(pe,Yt);Ae?v(Ae):V(`Wikilink target not found in this vault: [[${pe}]]`)},[Yt]);return i.jsxs("div",{className:"wiki-page",children:[i.jsxs("div",{className:"wiki-header",children:[i.jsxs("div",{className:"wiki-header-main",children:[i.jsxs("div",{className:"wiki-header-title",children:[i.jsx(Ex,{size:22}),i.jsx("h1",{children:"Wiki"})]}),i.jsxs("p",{className:"wiki-header-subtitle",children:["Agent-curated knowledge across global, team, and project vaults. Reads only — writes happen via the ",i.jsx("code",{children:"wiki-queue-add"})," →"," ",i.jsx("code",{children:"wiki-process-queue"})," agent flow."]})]}),i.jsxs("div",{className:"wiki-global-search",ref:ke,children:[i.jsxs("div",{className:`wiki-gsearch-box${z?" open":""}`,children:[i.jsx(Z2,{size:15,className:"wiki-search-icon"}),i.jsx("input",{ref:ae,type:"text",className:"wiki-gsearch-input",placeholder:"Search the wiki…",value:K,onChange:pe=>{H(pe.target.value),Q(!0),ie(-1)},onFocus:()=>Q(!0),onKeyDown:Bn,"aria-label":"Search wiki","aria-expanded":z,role:"combobox","aria-controls":"wiki-search-overlay"}),K?i.jsx("button",{type:"button",className:"wiki-search-clear",onClick:()=>{var pe;H(""),ie(-1),(pe=ae.current)==null||pe.focus()},"aria-label":"Clear search",children:i.jsx(On,{size:14})}):i.jsxs("div",{className:"wiki-search-scope",role:"radiogroup","aria-label":"Search scope",children:[i.jsx("button",{type:"button",role:"radio","aria-checked":!q,"aria-label":"Search this vault",title:"This vault",className:`wiki-search-scope-btn${q?"":" active"}`,onClick:()=>te(!1),children:i.jsx(Jg,{size:13})}),i.jsx("button",{type:"button",role:"radio","aria-checked":q,"aria-label":"Search all vaults",title:"All vaults",className:`wiki-search-scope-btn${q?" active":""}`,onClick:()=>te(!0),children:i.jsx(_3,{size:13})})]})]}),z&&K.trim().length>0&&i.jsxs("div",{className:"wiki-search-overlay",id:"wiki-search-overlay",role:"listbox",children:[i.jsxs("div",{className:"wiki-overlay-scope",role:"radiogroup","aria-label":"Search scope",children:[i.jsx("span",{className:"wiki-overlay-scope-label",children:"Scope"}),i.jsxs("button",{type:"button",role:"radio","aria-checked":!q,className:`wiki-overlay-scope-btn${q?"":" active"}`,onClick:()=>te(!1),"data-testid":"search-scope-this",children:[i.jsx(Jg,{size:12})," This vault"]}),i.jsxs("button",{type:"button",role:"radio","aria-checked":q,className:`wiki-overlay-scope-btn${q?" active":""}`,onClick:()=>te(!0),"data-testid":"search-scope-all",children:[i.jsx(_3,{size:12})," All vaults"]})]}),i.jsxs("div",{className:"wiki-overlay-body",children:[D&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",D]}),U&&i.jsx("div",{className:"wiki-loading",children:"Searching…"}),!U&&$&&$.length>0&&i.jsx(VCe,{hits:$,selected:g,showVault:q,activeIndex:re,onSelect:dn}),!U&&$&&$.length===0&&i.jsxs("div",{className:"wiki-empty",children:["No results for ",i.jsx("code",{children:K}),"."]})]}),$&&$.length>0&&i.jsxs("div",{className:"wiki-overlay-footer",children:[$.length," match",$.length===1?"":"es",F?"+":""," · ↑↓ navigate · ↵ open · Esc close"]})]})]})]}),i.jsx(KCe,{scan:fe,loading:Ne,applying:$e,expanded:ce,dismissed:qe,error:Ge,result:Oe,onApply:pt,onToggle:()=>we(pe=>!pe),onDismiss:()=>Ke(!0),onCloseResult:()=>je(null)}),i.jsxs("div",{className:"wiki-grid",children:[i.jsxs("aside",{className:"wiki-vaults",children:[i.jsxs("div",{className:"wiki-pane-header",children:[i.jsx("span",{children:"Vaults"}),i.jsx("button",{type:"button",className:"wiki-refresh",onClick:()=>Je(),"aria-label":"Refresh vaults",disabled:a,children:i.jsx(zn,{size:14,className:a?"spin":""})})]}),l&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",l]}),a&&!r.length&&i.jsx("div",{className:"wiki-loading",children:"Loading…"}),i.jsx("div",{className:"wiki-vault-list",children:r.map(pe=>{const Ae=(d==null?void 0:d.vaultPath)===pe.vaultPath;return i.jsxs("button",{type:"button",className:`wiki-vault-item${Ae?" active":""}`,onClick:()=>Gt(pe),children:[i.jsxs("div",{className:"wiki-vault-line",children:[i.jsx("span",{className:`wiki-scope-pill scope-${pe.scope}`,children:GCe[pe.scope]}),i.jsx("span",{className:"wiki-vault-label",title:pe.vaultPath,children:pe.label})]}),pe.stats&&i.jsxs("div",{className:"wiki-vault-stats",children:[pe.stats.totalMdCount," pages",pe.stats.queue.pending>0&&i.jsxs("span",{className:"wiki-vault-pending",children:[" ","· ",pe.stats.queue.pending," pending"]})]})]},pe.vaultPath)})})]}),i.jsxs("section",{className:"wiki-tree-pane",children:[i.jsx("div",{className:"wiki-pane-header",children:i.jsxs("span",{children:[d?d.label:"Pick a vault",d&&h&&i.jsxs("span",{className:"wiki-page-count",children:[" · ",Qt]})]})}),y&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",y]}),p&&i.jsx("div",{className:"wiki-loading",children:"Loading tree…"}),h&&nn.length>0&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"wiki-tree-group-label",title:"Schema-frozen folders — the source of truth referenced by the engine. Agents can't overwrite these via the wiki.",children:[i.jsx(qb,{size:11})," Canonical · source of truth"]}),nn.some(pe=>pe.name==="sop"||pe.name==="team-norm")&&i.jsxs("div",{className:"wiki-canonical-actions",children:[i.jsxs("button",{type:"button",className:"wiki-tree-group-action",onClick:()=>E(!0),"data-testid":"open-sop-catalog",title:"Browse the SOP catalog and install SOPs into this team",children:[i.jsx(gp,{size:11})," Install SOP"]}),i.jsx("button",{type:"button",className:"wiki-tree-group-action",onClick:()=>T({folder:"sop",mode:"create"}),"data-testid":"new-sop",title:"Author a custom SOP for this team",children:"+ SOP"}),i.jsx("button",{type:"button",className:"wiki-tree-group-action",onClick:()=>T({folder:"team-norm",mode:"create"}),"data-testid":"new-norm",title:"Author a team norm",children:"+ Norm"})]}),zCe(nn)&&i.jsxs("p",{className:"wiki-tree-canonical-note",children:["Reserved folders. Team SOPs & norms are currently served to agents straight from ",i.jsx("code",{children:"config/sops/"}),"; they haven't been materialised as wiki pages yet."]}),i.jsx(GT,{nodes:nn,selected:g,onSelect:pe=>v(pe),collapsed:ue,onToggleFolder:le,labelOverrides:FCe,rootClassName:"wiki-tree--flush"}),Nn.length>0&&i.jsx("div",{className:"wiki-tree-group-label",children:"Working notes"})]}),h&&Nn.length>0&&i.jsx(GT,{nodes:Nn,selected:g,onSelect:pe=>v(pe),collapsed:ue,onToggleFolder:le}),h&&h.length===0&&!p&&i.jsxs("div",{className:"wiki-empty",children:["Empty vault — no ",i.jsx("code",{children:".md"})," pages yet. They land here once agents queue + ingest worth-saving content."]})]}),i.jsxs("main",{className:"wiki-page-pane",children:[i.jsxs("div",{className:"wiki-pane-header",children:[i.jsx("span",{children:g??"Pick a page"}),A&&g&&(g.startsWith("sop/")||g.startsWith("team-norm/"))&&i.jsxs("button",{type:"button",className:"wiki-tree-group-action","data-testid":"edit-overlay-page",onClick:()=>T({folder:g.startsWith("team-norm/")?"team-norm":"sop",mode:"edit",path:g,content:A.content}),children:[i.jsx(E1,{size:11})," Edit"]}),A&&i.jsxs("span",{className:"wiki-page-meta",children:[A.bytes," B · modified"," ",new Date(A.modifiedAt).toLocaleString()]})]}),B&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",B]}),P&&i.jsx("div",{className:"wiki-loading",children:"Loading page…"}),A&&i.jsxs("div",{className:"wiki-page-body",children:[i.jsx("div",{className:"wiki-page-content",children:i.jsx(ICe,{content:A.content,onWikilinkClick:Hn})}),i.jsx($Ce,{backlinks:ge,loading:Ce,onSelect:pe=>v(pe)})]}),!g&&!P&&!B&&i.jsxs("div",{className:"wiki-empty-with-recent",children:[i.jsx("div",{className:"wiki-empty",children:"Click a page on the left to view its markdown content. Frozen folders (sop/, memory/, …) are visible but managed by the OSS code path — not editable here."}),d&&ne&&ne.missingConcepts.length>0&&i.jsx(qCe,{concepts:ne.missingConcepts,onSelect:pe=>{H(pe),Q(!0)}}),d&&i.jsx(XCe,{entries:ve,loading:_e,onSelect:pe=>v(pe)})]})]})]}),C&&d&&i.jsx(PCe,{vaultPath:d.vaultPath,onClose:()=>E(!1),onChanged:()=>Le(d.vaultPath)}),N&&d&&i.jsx(DCe,{vaultPath:d.vaultPath,folder:N.folder,mode:N.mode,initialPath:N.path,initialContent:N.content,onClose:()=>T(null),onSaved:pe=>{T(null),Le(d.vaultPath),v(pe)}})]})}function GT({nodes:t,selected:e,onSelect:n,collapsed:r,onToggleFolder:s,labelOverrides:a,rootClassName:o,depth:l=0}){return i.jsx("ul",{className:`wiki-tree${o?` ${o}`:""}`,style:{paddingLeft:l===0?0:12},children:t.map(c=>{var u;if(c.type==="directory"){const h=c.frozenDescription?`Frozen: ${c.frozenDescription}`:"Frozen — OSS code references this path by name. Agents cannot write here via wiki-ingest.",f=r.has(c.relativePath),p=((u=c.children)==null?void 0:u.length)??0;return i.jsxs("li",{className:"wiki-tree-dir",children:[i.jsxs("button",{type:"button",className:"wiki-tree-row dir",onClick:()=>s(c.relativePath),"aria-expanded":!f,"aria-label":f?"Expand folder":"Collapse folder",children:[f?i.jsx(Si,{size:12,className:"wiki-tree-chevron"}):i.jsx(ei,{size:12,className:"wiki-tree-chevron"}),i.jsx(X2,{size:14}),i.jsx("span",{className:"wiki-tree-name",children:l===0&&(a==null?void 0:a[c.name])||c.name}),p>0&&i.jsx("span",{className:"wiki-tree-child-count",children:p}),c.frozen&&i.jsxs("span",{className:"wiki-frozen-pill",title:h,children:[i.jsx(qb,{size:10})," frozen"]})]}),!f&&p>0&&i.jsx(GT,{nodes:c.children??[],selected:e,onSelect:n,collapsed:r,onToggleFolder:s,depth:l+1}),!f&&p===0&&i.jsx("div",{className:"wiki-tree-empty-hint",children:"No pages yet"})]},c.relativePath)}const d=e===c.relativePath;return i.jsx("li",{children:i.jsxs("button",{type:"button",className:`wiki-tree-row file${d?" active":""}`,onClick:()=>n(c.relativePath),children:[i.jsx(Uo,{size:14}),i.jsx("span",{className:"wiki-tree-name",children:c.name}),c.frozen&&i.jsx("span",{className:"wiki-frozen-pill",title:"Frozen folder",children:i.jsx(qb,{size:10})})]})},c.relativePath)})})}function VCe({hits:t,selected:e,showVault:n,activeIndex:r,onSelect:s}){return i.jsx("ul",{className:"wiki-search-results",children:t.map((a,o)=>{const l=e===a.relativePath&&!a.vaultPath,c=o===r;return i.jsx("li",{children:i.jsxs("button",{type:"button",role:"option","aria-selected":c,className:`wiki-search-hit${l?" active":""}${c?" kbd-active":""}`,onClick:()=>s(a.relativePath,a.vaultPath),children:[i.jsxs("div",{className:"wiki-search-path",children:[i.jsx(Uo,{size:13})," ",a.relativePath,a.matchCount>0&&i.jsxs("span",{className:"wiki-search-count",children:[" · ",a.matchCount]}),n&&a.vaultLabel&&i.jsx("span",{className:"wiki-search-vault",children:a.vaultLabel})]}),a.snippets.length>0&&i.jsx("ul",{className:"wiki-search-snippets",children:a.snippets.map(d=>i.jsxs("li",{children:[i.jsxs("span",{className:"wiki-search-line",children:["L",d.lineNumber]})," ",d.text]},d.lineNumber))})]})},`${a.vaultPath??""}:${a.relativePath}`)})})}function $Ce({backlinks:t,loading:e,onSelect:n}){return e?i.jsxs("div",{className:"wiki-backlinks",children:[i.jsxs("div",{className:"wiki-backlinks-header",children:[i.jsx(_A,{size:13})," Referenced by"]}),i.jsx("div",{className:"wiki-loading",children:"Scanning…"})]}):!t||t.length===0?null:i.jsxs("div",{className:"wiki-backlinks",children:[i.jsxs("div",{className:"wiki-backlinks-header",children:[i.jsx(_A,{size:13})," Referenced by"," ",i.jsx("span",{className:"wiki-backlinks-count",children:t.length})]}),i.jsx("ul",{className:"wiki-backlinks-list",children:t.map(r=>i.jsx("li",{children:i.jsxs("button",{type:"button",className:"wiki-backlink-row",onClick:()=>n(r.relativePath),children:[i.jsxs("div",{className:"wiki-backlink-path",children:[i.jsx(Uo,{size:12})," ",r.relativePath]}),r.snippets.map(s=>i.jsxs("div",{className:"wiki-backlink-snippet",children:[i.jsxs("span",{className:"wiki-search-line",children:["L",s.lineNumber]})," ",s.text]},s.lineNumber))]})},r.relativePath))})]})}function KCe({scan:t,loading:e,applying:n,expanded:r,dismissed:s,error:a,result:o,onApply:l,onToggle:c,onDismiss:d,onCloseResult:u}){if(o)return i.jsx("div",{className:"wiki-migrate-banner wiki-migrate-success",children:i.jsxs("div",{className:"wiki-migrate-row",children:[i.jsx(Wu,{size:16}),i.jsxs("div",{className:"wiki-migrate-text",children:["Migration complete — ",o.applied??0," page",o.applied===1?"":"s"," imported",o.skipped?`, ${o.skipped} skipped`:"",o.bootstrapped&&o.bootstrapped.length>0?`; ${o.bootstrapped.length} vault${o.bootstrapped.length===1?"":"s"} bootstrapped`:"","."]}),i.jsx("button",{type:"button",className:"wiki-migrate-dismiss",onClick:u,"aria-label":"Close",children:i.jsx(On,{size:14})})]})});if(e&&!t||s||!(t!=null&&t.legacyDetected))return null;const h=t.proposedPages.filter(y=>!y.skipReason);if(h.length===0&&!t.bootstrapNeeded.project)return null;const f={};for(const y of h){const m=HCe[y.sourceType]??y.sourceType;f[m]=(f[m]??0)+1}const p=Object.entries(f).filter(([,y])=>y>0).map(([y,m])=>`${m} ${y}`).join(" · "),x=t.summary.alreadyMigrated??0;return i.jsxs("div",{className:"wiki-migrate-banner",children:[i.jsxs("div",{className:"wiki-migrate-row",children:[i.jsx(nU,{size:16}),i.jsxs("div",{className:"wiki-migrate-text",children:["Detected legacy ",i.jsx("code",{children:".crewly/knowledge/"})," data:"," ",i.jsx("strong",{children:h.length})," new page",h.length===1?"":"s"," to import",p&&i.jsxs("span",{className:"wiki-migrate-counts",children:[" (",p,")"]}),x>0&&i.jsxs("span",{className:"wiki-migrate-counts",children:[" ","· ",i.jsx("strong",{children:x})," already migrated (skipped)"]}),".",t.bootstrapNeeded.project||t.bootstrapNeeded.global||t.bootstrapNeeded.teams.length>0?i.jsxs("span",{className:"wiki-migrate-counts",children:[" ","Will also bootstrap"," ",[t.bootstrapNeeded.project&&"project vault",t.bootstrapNeeded.global&&"global vault",t.bootstrapNeeded.teams.length>0&&`${t.bootstrapNeeded.teams.length} team vault${t.bootstrapNeeded.teams.length===1?"":"s"}`].filter(Boolean).join(", "),"."]}):null]}),i.jsx("button",{type:"button",className:"wiki-migrate-btn",onClick:c,children:r?"Hide preview":"Preview"}),i.jsx("button",{type:"button",className:"wiki-migrate-btn primary",onClick:l,disabled:n,children:n?"Migrating…":"Migrate now"}),i.jsx("button",{type:"button",className:"wiki-migrate-dismiss",onClick:d,"aria-label":"Dismiss for this session",children:i.jsx(On,{size:14})})]}),a&&i.jsxs("div",{className:"wiki-migrate-error",children:[i.jsx(Or,{size:14})," ",a]}),r&&i.jsxs("ul",{className:"wiki-migrate-preview",children:[h.slice(0,40).map(y=>i.jsxs("li",{children:[i.jsx("span",{className:`wiki-migrate-type type-${y.sourceType}`,children:y.sourceType}),i.jsx("span",{className:"wiki-migrate-title",children:y.title}),i.jsx("span",{className:"wiki-migrate-arrow",children:"→"}),i.jsx("span",{className:"wiki-migrate-target",children:y.targetRelativePath}),y.routingUncertain&&i.jsx("span",{className:"wiki-migrate-uncertain",title:"Body mentions cross-project signals — review with wiki-lint after migration.",children:"uncertain scope"})]},y.sourceId)),h.length>40&&i.jsxs("li",{className:"wiki-migrate-more",children:["… ",h.length-40," more"]})]})]})}function qCe({concepts:t,onSelect:e}){return!t||t.length===0?null:i.jsxs("div",{className:"wiki-missing-concepts",children:[i.jsxs("div",{className:"wiki-missing-header",children:[i.jsx(IK,{size:13})," Missing concepts"," ",i.jsx("span",{className:"wiki-missing-count",children:t.length})]}),i.jsx("div",{className:"wiki-missing-hint",children:"These wikilink targets are referenced 3+ times across the vault but have no dedicated page. Authoring one for each will compound the wiki's value. Click to find references via search."}),i.jsx("ul",{className:"wiki-missing-list",children:t.slice(0,12).map(n=>i.jsx("li",{children:i.jsxs("button",{type:"button",className:"wiki-missing-row",onClick:()=>e(n.target),title:`Referenced in ${n.sources.length} page${n.sources.length===1?"":"s"}`,children:[i.jsxs("span",{className:"wiki-missing-count-badge",children:[n.referenceCount,"×"]}),i.jsxs("span",{className:"wiki-missing-target",children:["[[",n.target,"]]"]})]})},n.target))})]})}function XCe({entries:t,loading:e,onSelect:n}){return e?i.jsxs("div",{className:"wiki-recent",children:[i.jsxs("div",{className:"wiki-recent-header",children:[i.jsx(fr,{size:13})," Recently updated"]}),i.jsx("div",{className:"wiki-loading",children:"Loading…"})]}):!t||t.length===0?null:i.jsxs("div",{className:"wiki-recent",children:[i.jsxs("div",{className:"wiki-recent-header",children:[i.jsx(fr,{size:13})," Recently updated"]}),i.jsx("ul",{className:"wiki-recent-list",children:t.map(r=>i.jsx("li",{children:i.jsxs("button",{type:"button",className:"wiki-recent-row",onClick:()=>n(r.relativePath),children:[i.jsxs("div",{className:"wiki-recent-path",children:[i.jsx(Uo,{size:12})," ",r.relativePath]}),i.jsx("div",{className:"wiki-recent-meta",children:YCe(r.modifiedAt)})]})},r.relativePath))})]})}function YCe(t){const e=Date.parse(t);if(!Number.isFinite(e))return t;const n=Date.now()-e,s=60*1e3,a=60*s,o=24*a;return n<s?"just now":n<a?`${Math.floor(n/s)} min ago`:n<o?`${Math.floor(n/a)} h ago`:n<7*o?`${Math.floor(n/o)} d ago`:new Date(e).toLocaleDateString()}function JCe(t,e){const n=t.trim().toLowerCase();if(!n)return null;const r=n.endsWith(".md")?n:`${n}.md`,s=n.endsWith(".md")?n.slice(0,-3):n;let a=null,o=null;for(const l of e){const c=l.toLowerCase();if(c===r||c===n)return l;if(!a&&(c.endsWith(`/${r}`)||c.endsWith(`/${n}`))&&(a=l),!o){const d=c.split("/").pop()??"";(d.endsWith(".md")?d.slice(0,-3):d)===s&&(o=l)}}return a??o}const ZCe="/api",QCe=5e3;function eEe(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useRef(!0),l=k.useCallback(async()=>{try{const u=await Ye.get(`${ZCe}/monitoring/pty-status`);if(!o.current)return;if(u.data.success&&Array.isArray(u.data.data)){const h=u.data.data.map(f=>({sessionName:f.sessionName||f.id||"unknown",agentName:f.agentName||f.name||f.sessionName||"Unknown Agent",role:f.role||"agent",agentStatus:f.agentStatus||f.status||"inactive",workingStatus:f.workingStatus||"idle",ptyPid:f.ptyPid??f.pid??null,memoryUsage:f.memoryUsage??null,uptimeSeconds:f.uptimeSeconds??null,fsScope:f.fsScope||"sandboxed",netScope:f.netScope||"localhost"}));e(h),a(null)}else e([])}catch{o.current&&(a("Failed to fetch PTY sessions"),e([]))}},[]);k.useEffect(()=>{o.current=!0,(async()=>{await l(),o.current&&r(!1)})();const h=setInterval(l,QCe);return()=>{o.current=!1,clearInterval(h)}},[l]);const c={totalAgents:t.length,isolatedCount:t.length,sharedCount:0,status:(t.length>0,"healthy")},d=k.useCallback(async()=>{await l()},[l]);return{sessions:t,summary:c,loading:n,error:s,refresh:d}}const tEe="/api",YB=[{id:"mock-1",timestamp:new Date(Date.now()-1e3*60*5).toISOString(),sessionName:"agent-sam",agentName:"Sam",toolName:"git push origin feat/auth",outcome:"approved",riskLevel:"medium"},{id:"mock-2",timestamp:new Date(Date.now()-1e3*60*10).toISOString(),sessionName:"agent-sam",agentName:"Sam",toolName:"npm install jsonwebtoken",outcome:"auto",riskLevel:"low"},{id:"mock-3",timestamp:new Date(Date.now()-1e3*60*15).toISOString(),sessionName:"agent-leo",agentName:"Leo",toolName:"rm -rf dist/",outcome:"denied",riskLevel:"high",reason:"Destructive operation on build directory"},{id:"mock-4",timestamp:new Date(Date.now()-1e3*60*20).toISOString(),sessionName:"agent-sam",agentName:"Sam",toolName:"git push --force main",outcome:"denied",riskLevel:"high",reason:"Force push to protected branch"},{id:"mock-5",timestamp:new Date(Date.now()-1e3*60*25).toISOString(),sessionName:"agent-ava",agentName:"Ava",toolName:"npx tailwindcss build",outcome:"auto",riskLevel:"low"},{id:"mock-6",timestamp:new Date(Date.now()-1e3*60*30).toISOString(),sessionName:"agent-leo",agentName:"Leo",toolName:'git commit -m "feat: ..."',outcome:"sop_block",riskLevel:"medium",reason:"Commit does not follow project SOP"}];function nEe(t){switch(t){case"approved":return"approved";case"rejected":return"denied";case"denied":return"denied";case"auto":return"auto";case"sop_block":return"sop_block";default:return"auto"}}function rEe(){const[t,e]=k.useState([]),[n,r]=k.useState({}),[s,a]=k.useState(!0),[o,l]=k.useState(null),c=k.useCallback(async f=>{try{const p=await Ye.get(`${tEe}/approvals/audit`,{signal:f});if(p.data.success&&Array.isArray(p.data.data)){const x=p.data.data.map(y=>({id:y.approvalId||y.id||`audit-${Date.now()}-${Math.random()}`,timestamp:y.timestamp,sessionName:y.sessionName||"",agentName:y.resolvedBy||y.agentName||y.sessionName||"Unknown",toolName:y.toolName||"",outcome:nEe(y.action||y.outcome),riskLevel:y.riskLevel||"medium",reason:y.reason}));e(x),l(null)}else e(YB)}catch(p){if(Ye.isCancel(p))return;e(YB),l(null)}finally{a(!1)}},[]);k.useEffect(()=>{const f=new AbortController;return c(f.signal),()=>f.abort()},[c]);const d=k.useMemo(()=>t.filter(f=>!(n.agent&&f.agentName.toLowerCase()!==n.agent.toLowerCase()||n.outcome&&f.outcome!==n.outcome)),[t,n]),u=k.useMemo(()=>{const f=new Date().toDateString(),p=t.filter(x=>new Date(x.timestamp).toDateString()===f);return{totalToday:p.length,deniedToday:p.filter(x=>x.outcome==="denied").length,bypassedToday:0,status:"enforced"}},[t]),h=k.useCallback(async()=>{a(!0),await c()},[c]);return{events:t,filteredEvents:d,summary:u,filter:n,setFilter:r,loading:s,error:o,refresh:h}}const sEe="/api",JB=[{path:"~/.crewly/memory/",type:"Agent Memory",sizeBytes:12.4*1024*1024,isExternal:!1},{path:"~/.crewly/knowledge/",type:"Vector Store",sizeBytes:28.1*1024*1024,isExternal:!1},{path:"~/.crewly/sessions/",type:"PTY Logs",sizeBytes:7.7*1024*1024,isExternal:!1},{path:"~/.crewly/teams/",type:"Config",sizeBytes:.3*1024*1024,isExternal:!1},{path:"~/.crewly/projects/",type:"Metadata",sizeBytes:.1*1024*1024,isExternal:!1}];function WT(t){if(t===0)return"0 B";const e=["B","KB","MB","GB"],n=Math.floor(Math.log(t)/Math.log(1024));return`${(t/Math.pow(1024,n)).toFixed(1)} ${e[n]}`}function iEe(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useCallback(async d=>{try{const u=await Ye.get(`${sEe}/system/storage`,{signal:d});u.data.success&&Array.isArray(u.data.data)?(e(u.data.data),a(null)):e(JB)}catch(u){if(Ye.isCancel(u))return;e(JB),a(null)}finally{r(!1)}},[]);k.useEffect(()=>{const d=new AbortController;return o(d.signal),()=>d.abort()},[o]);const l=k.useMemo(()=>({totalLocalBytes:t.filter(u=>!u.isExternal).reduce((u,h)=>u+h.sizeBytes,0),externalConnections:t.filter(u=>u.isExternal).length,cloudSync:"disabled",status:"secure",lastScan:new Date().toISOString()}),[t]),c=k.useCallback(async()=>{r(!0),await o()},[o]);return{entries:t,summary:l,loading:n,error:s,refresh:c}}const aEe={active:"bg-emerald-400",online:"bg-emerald-400",paired:"bg-emerald-400",waiting:"bg-yellow-400",connecting:"bg-yellow-400",inactive:"bg-gray-500",disconnected:"bg-gray-500",offline:"bg-gray-500",error:"bg-rose-400"},oEe={sm:"h-2 w-2",md:"h-2.5 w-2.5",lg:"h-3 w-3"},lEe=new Set(["active","online","connecting"]),Gc=({status:t,size:e="md",pulse:n,className:r=""})=>{const s=n??lEe.has(t),a=aEe[t]??"bg-gray-500",o=["inline-block rounded-full",oEe[e],a,s?"animate-pulse":"",r].filter(Boolean).join(" ");return i.jsx("span",{className:o,role:"status","aria-label":t,"data-testid":"status-dot"})};Gc.displayName="StatusDot";const ZB=["border-primary","border-primary/80","border-primary/60","border-primary/50","border-primary/40"];function cEe(t){if(t===null)return"N/A";const e=Math.floor(t/3600),n=Math.floor(t%3600/60);return`${e}h${n.toString().padStart(2,"0")}m`}function QB(t){return t===null?"N/A":`${Math.round(t/(1024*1024))}MB`}const G9=({sessions:t,loading:e})=>{const[n,r]=k.useState(!0),[s,a]=k.useState(null),o=()=>r(d=>!d),l=d=>{a(u=>u===d?null:d)},c=(d,u)=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),l(u))};return i.jsxs(Ot,{padding:"none","aria-labelledby":"pty-map-heading",role:"region",children:[i.jsxs("button",{type:"button",onClick:o,className:"flex items-center justify-between w-full px-6 py-4 text-left","aria-expanded":n,"aria-controls":"pty-map-content",children:[i.jsxs("h2",{id:"pty-map-heading",className:"text-lg font-semibold text-text-primary-dark flex items-center gap-2",children:[i.jsx(go,{size:20,"aria-hidden":"true",className:"text-primary"}),"PTY Isolation Map"]}),n?i.jsx(k1,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"}):i.jsx(ei,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"})]}),n&&i.jsx("div",{id:"pty-map-content",className:"px-6 pb-6",children:e?i.jsx(sr,{size:"sm",text:"Loading PTY sessions..."}):t.length===0?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",children:"No active agent sessions"}):i.jsxs("div",{role:"img","aria-label":`PTY isolation map showing ${t.length} isolated agent sessions with no lateral access between them`,children:[t.map((d,u)=>i.jsxs("div",{children:[i.jsxs("div",{role:"button",tabIndex:0,onClick:()=>l(d.sessionName),onKeyDown:h=>c(h,d.sessionName),className:`flex items-start gap-4 p-4 rounded-lg border-l-4 bg-zinc-900/50 cursor-pointer hover:bg-zinc-800/50 transition-colors ${ZB[u%ZB.length]}`,"aria-expanded":s===d.sessionName,"data-testid":`pty-node-${d.sessionName}`,children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx("span",{className:"font-semibold text-text-primary-dark text-sm",children:d.agentName}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["(",d.role,")"]}),i.jsxs("span",{className:"inline-flex items-center gap-1 text-xs",children:[i.jsx(Gc,{status:d.agentStatus==="active"?"active":"inactive",size:"sm"}),i.jsx("span",{className:d.agentStatus==="active"?"text-emerald-400":"text-text-secondary-dark",children:d.agentStatus==="active"?"Active":d.agentStatus})]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark",children:["working: ",d.workingStatus]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark font-mono space-y-0.5 text-right flex-shrink-0",children:[i.jsxs("div",{children:["PTY pid:",d.ptyPid??"N/A"]}),i.jsxs("div",{children:["mem: ",QB(d.memoryUsage)]}),i.jsxs("div",{children:["uptime: ",cEe(d.uptimeSeconds)]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark font-mono space-y-0.5 text-right flex-shrink-0",children:[i.jsxs("div",{children:["fs: ",d.fsScope]}),i.jsxs("div",{children:["net: ",d.netScope]})]})]}),s===d.sessionName&&i.jsxs("div",{className:"ml-4 p-3 bg-zinc-900/30 rounded-b-lg border-l border-border-dark text-xs text-text-secondary-dark font-mono",children:[i.jsxs("div",{children:["Session: ",d.sessionName]}),i.jsxs("div",{children:["Process ID: ",d.ptyPid??"Not available"]}),i.jsxs("div",{children:["Memory: ",QB(d.memoryUsage)]}),i.jsxs("div",{children:["Filesystem: ",d.fsScope," (sandboxed)"]}),i.jsxs("div",{children:["Network: ",d.netScope," only"]})]}),u<t.length-1&&i.jsxs("div",{className:"flex items-center gap-2 py-2 pl-6","aria-hidden":"true",children:[i.jsx("div",{className:"w-px h-4 bg-border-dark"}),i.jsx(On,{size:12,className:"text-red-400"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"(no lateral access)"})]})]},d.sessionName)),i.jsxs("div",{className:"flex items-center gap-4 mt-4 pt-3 border-t border-border-dark text-xs text-text-secondary-dark",children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Gc,{status:"active",size:"sm"}),"Active"]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Gc,{status:"inactive",size:"sm"}),"Inactive"]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(On,{size:10,className:"text-red-400","aria-hidden":"true"}),"No cross-session access"]})]})]})})]})};G9.displayName="PtyIsolationMap";const Dv={auto:{label:"Auto",variant:"success",icon:i.jsx(fa,{size:12})},approved:{label:"Approved",variant:"success",icon:i.jsx(fa,{size:12})},denied:{label:"Denied",variant:"error",icon:i.jsx(Fl,{size:12})},sop_block:{label:"SOP Block",variant:"warning",icon:i.jsx(mp,{size:12})}},e4=10;function dEe(t){return new Date(t).toLocaleTimeString("en-US",{hour12:!1})}function uEe(t){const e=["Timestamp","Agent","Tool/Command","Outcome","Risk Level","Reason"],n=t.map(l=>[l.timestamp,l.agentName,l.toolName,l.outcome,l.riskLevel,l.reason||""]),r=[e.join(","),...n.map(l=>l.map(c=>`"${c}"`).join(","))].join(`
|
|
4955
|
-
`),s=new Blob([r],{type:"text/csv"}),a=URL.createObjectURL(s),o=document.createElement("a");o.href=a,o.download=`approval-audit-${new Date().toISOString().split("T")[0]}.csv`,o.click(),URL.revokeObjectURL(a)}const W9=({events:t,filter:e,onFilterChange:n,loading:r})=>{const[s,a]=k.useState(!0),[o,l]=k.useState(!1),[c,d]=k.useState(e4),u=k.useMemo(()=>t.slice(0,c),[t,c]),h=k.useMemo(()=>Array.from(new Set(t.map(g=>g.agentName))),[t]),f=()=>a(g=>!g),p=g=>{n({...e,agent:g}),l(!1)},x=g=>{n({...e,outcome:g}),l(!1)},y=()=>{uEe(t)},m=()=>{d(g=>g+e4)};return i.jsxs(Ot,{padding:"none",role:"region","aria-labelledby":"audit-log-heading",children:[i.jsxs("div",{className:"flex items-center justify-between px-6 py-4",children:[i.jsxs("button",{type:"button",onClick:f,className:"flex items-center gap-2 text-left flex-1","aria-expanded":s,"aria-controls":"audit-log-content",children:[i.jsxs("h2",{id:"audit-log-heading",className:"text-lg font-semibold text-text-primary-dark flex items-center gap-2",children:[i.jsx(yA,{size:20,"aria-hidden":"true",className:"text-emerald-400"}),"Approval Audit Log"]}),s?i.jsx(k1,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"}):i.jsx(ei,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"})]}),s&&i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsxs("div",{className:"relative",children:[i.jsxs(ze,{variant:"outline",size:"sm",icon:NK,onClick:()=>l(g=>!g),"aria-label":"Filter events","data-testid":"filter-button",children:["Filter",(e.agent||e.outcome)&&i.jsx("span",{className:"ml-1 w-1.5 h-1.5 rounded-full bg-primary","aria-label":"Filter active"})]}),o&&i.jsxs("div",{className:"absolute right-0 top-full mt-1 w-48 bg-zinc-800 border border-border-dark rounded-md shadow-lg z-10",role:"menu","data-testid":"filter-menu",children:[i.jsxs("div",{className:"p-2",children:[i.jsx("div",{className:"text-xs font-semibold text-text-secondary-dark mb-1 px-2",children:"By Agent"}),i.jsx("button",{type:"button",onClick:()=>p(void 0),className:"w-full text-left px-2 py-1 text-xs text-text-primary-dark hover:bg-zinc-700 rounded",role:"menuitem",children:"All Agents"}),h.map(g=>i.jsx("button",{type:"button",onClick:()=>p(g),className:`w-full text-left px-2 py-1 text-xs hover:bg-zinc-700 rounded ${e.agent===g?"text-primary":"text-text-primary-dark"}`,role:"menuitem",children:g},g))]}),i.jsxs("div",{className:"border-t border-border-dark p-2",children:[i.jsx("div",{className:"text-xs font-semibold text-text-secondary-dark mb-1 px-2",children:"By Outcome"}),i.jsx("button",{type:"button",onClick:()=>x(void 0),className:"w-full text-left px-2 py-1 text-xs text-text-primary-dark hover:bg-zinc-700 rounded",role:"menuitem",children:"All Outcomes"}),Object.keys(Dv).map(g=>i.jsxs("button",{type:"button",onClick:()=>x(g),className:`w-full text-left px-2 py-1 text-xs hover:bg-zinc-700 rounded ${e.outcome===g?"text-primary":"text-text-primary-dark"}`,role:"menuitem",children:[Dv[g].icon," ",Dv[g].label]},g))]})]})]}),i.jsx(ze,{variant:"outline",size:"sm",icon:gp,onClick:y,"aria-label":"Export as CSV","data-testid":"export-button",children:"Export"})]})]}),s&&i.jsx("div",{id:"audit-log-content",className:"px-6 pb-6",children:r?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",role:"status",children:"Loading audit events..."}):t.length===0?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",children:"No approval events recorded"}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm",role:"table",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"border-b border-border-dark",children:[i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Time"}),i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Agent"}),i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Tool / Command"}),i.jsx("th",{scope:"col",className:"text-right py-2 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Outcome"})]})}),i.jsx("tbody",{children:u.map(g=>{const v=Dv[g.outcome];return i.jsxs("tr",{className:"border-b border-border-dark/50 hover:bg-zinc-800/30 transition-colors","data-testid":`audit-row-${g.id}`,children:[i.jsx("td",{className:"py-2.5 pr-4 font-mono text-xs text-text-secondary-dark whitespace-nowrap",children:dEe(g.timestamp)}),i.jsx("td",{className:"py-2.5 pr-4 text-text-primary-dark whitespace-nowrap",children:g.agentName}),i.jsxs("td",{className:"py-2.5 pr-4 font-mono text-xs text-text-secondary-dark",children:[g.toolName,g.reason&&i.jsx("span",{className:"block text-xs text-zinc-500 mt-0.5",title:g.reason,children:g.reason})]}),i.jsx("td",{className:"py-2.5 text-right",children:i.jsxs(tn,{variant:v.variant,size:"sm",className:"gap-1",children:[i.jsx("span",{"aria-hidden":"true",children:v.icon}),v.label]})})]},g.id)})})]})}),t.length>c&&i.jsx("div",{className:"mt-3 text-center",children:i.jsxs(ze,{variant:"ghost",size:"sm",onClick:m,"data-testid":"load-more-button",children:["Showing ",c," of ",t.length," events — Load more"]})})]})})]})};W9.displayName="ApprovalAuditLog";const V9=({entries:t,summary:e,loading:n})=>{const[r,s]=k.useState(!0),a=()=>s(o=>!o);return i.jsxs(Ot,{padding:"none","aria-labelledby":"sovereignty-heading",children:[i.jsxs("div",{className:"flex items-center justify-between px-6 py-4",children:[i.jsxs("button",{type:"button",onClick:a,className:"flex items-center gap-2 text-left flex-1","aria-expanded":r,"aria-controls":"sovereignty-content",children:[i.jsxs("h2",{id:"sovereignty-heading",className:"text-lg font-semibold text-text-primary-dark flex items-center gap-2",children:[i.jsx(MK,{size:20,"aria-hidden":"true",className:"text-purple-400"}),"Data Sovereignty Report"]}),r?i.jsx(k1,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"}):i.jsx(ei,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"})]}),i.jsx(tn,{variant:e.status==="secure"?"success":"warning",size:"sm","data-testid":"sovereignty-status",children:e.status==="secure"?"SECURE":"WARNING"})]}),r&&i.jsx("div",{id:"sovereignty-content",className:"px-6 pb-6",children:n?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",role:"status",children:"Loading storage data..."}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm",role:"table",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"border-b border-border-dark",children:[i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Storage Location"}),i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Type"}),i.jsx("th",{scope:"col",className:"text-right py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Size"}),i.jsx("th",{scope:"col",className:"text-center py-2 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"External?"})]})}),i.jsx("tbody",{children:t.map(o=>i.jsxs("tr",{className:"border-b border-border-dark/50","data-testid":`storage-row-${o.type.toLowerCase().replace(/\s+/g,"-")}`,children:[i.jsx("td",{className:"py-2.5 pr-4 font-mono text-xs text-text-secondary-dark",children:o.path}),i.jsx("td",{className:"py-2.5 pr-4 text-text-primary-dark",children:o.type}),i.jsx("td",{className:"py-2.5 pr-4 text-right font-mono text-xs text-text-secondary-dark",children:WT(o.sizeBytes)}),i.jsx("td",{className:"py-2.5 text-center",children:o.isExternal?i.jsxs(tn,{variant:"error",size:"sm",className:"gap-1","aria-label":"External: Yes",children:[i.jsx("span",{children:"Yes"}),i.jsx(Fl,{size:12,className:"inline"})]}):i.jsxs(tn,{variant:"success",size:"sm",className:"gap-1","aria-label":"External: No",children:[i.jsx("span",{children:"No"}),i.jsx(fa,{size:12,className:"inline"})]})})]},o.path))})]})}),i.jsxs("div",{className:"mt-4 pt-3 border-t border-border-dark space-y-1 text-sm text-text-secondary-dark",children:[i.jsxs("div",{children:["Total local storage:"," ",i.jsx("span",{className:"text-text-primary-dark font-medium",children:WT(e.totalLocalBytes)})]}),i.jsxs("div",{children:["External connections:"," ",i.jsx("span",{className:"text-text-primary-dark font-medium",children:e.externalConnections})]}),i.jsxs("div",{children:["Cloud sync:"," ",i.jsx("span",{className:"text-text-primary-dark font-medium capitalize",children:e.cloudSync})]}),i.jsxs("div",{className:"text-xs text-zinc-500",children:["Last scan: ",new Date(e.lastScan).toLocaleString()]})]})]})})]})};V9.displayName="DataSovereigntyReport";function hEe(t){let e=0;if(t.ptyTotalAgents===0)e+=40;else{const n=t.ptyIsolatedCount/t.ptyTotalAgents;e+=Math.round(n*40)}if(t.approvalStatus==="enforced"){e+=35;const n=Math.min(t.approvalsBypassedToday*5,15);e-=n}else t.approvalStatus==="partial"&&(e+=20);return t.storageStatus==="secure"?e+=25:t.storageStatus==="partial"&&(e+=15),Math.max(0,Math.min(100,e))}function fEe(t){return t>=90?{label:"Excellent",color:"text-emerald-400",bgColor:"bg-emerald-400"}:t>=70?{label:"Good",color:"text-blue-400",bgColor:"bg-blue-400"}:t>=50?{label:"Fair",color:"text-amber-400",bgColor:"bg-amber-400"}:{label:"Needs Attention",color:"text-red-400",bgColor:"bg-red-400"}}const pEe=({data:t,loading:e=!1})=>{const n=k.useMemo(()=>hEe(t),[t]),r=k.useMemo(()=>fEe(n),[n]),s=k.useMemo(()=>{const a=[];return t.ptyTotalAgents>0&&a.push(`${t.ptyIsolatedCount}/${t.ptyTotalAgents} agents isolated`),t.approvalStatus==="enforced"?a.push("Tool approval enforced"):t.approvalStatus==="disabled"&&a.push("Tool approval disabled"),t.approvalsBypassedToday>0&&a.push(`${t.approvalsBypassedToday} bypass${t.approvalsBypassedToday!==1?"es":""} today`),t.storageStatus==="secure"&&a.push("Data stored locally"),a},[t]);return e?i.jsx(Ot,{padding:"lg","data-testid":"security-score-widget",children:i.jsx("div",{className:"text-text-secondary-dark text-sm",role:"status",children:"Calculating score..."})}):i.jsx(Ot,{padding:"lg","data-testid":"security-score-widget",children:i.jsxs("div",{className:"flex items-start gap-4",children:[i.jsxs("div",{className:"relative flex-shrink-0",children:[i.jsxs("svg",{width:"80",height:"80",viewBox:"0 0 80 80","data-testid":"score-ring",children:[i.jsx("circle",{cx:"40",cy:"40",r:"34",fill:"none",stroke:"currentColor",strokeWidth:"6",className:"text-border-dark"}),i.jsx("circle",{cx:"40",cy:"40",r:"34",fill:"none",stroke:"currentColor",strokeWidth:"6",className:r.color,strokeDasharray:`${n/100*213.6} 213.6`,strokeLinecap:"round",transform:"rotate(-90 40 40)"})]}),i.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:i.jsx("span",{className:"text-xl font-bold","data-testid":"score-value",children:n})})]}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx($u,{className:"w-4 h-4 text-emerald-400"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Security Score"})]}),i.jsx("p",{className:`text-sm font-medium ${r.color} mb-2`,"data-testid":"score-grade",children:r.label}),i.jsx("ul",{className:"space-y-0.5",children:s.map((a,o)=>i.jsx("li",{className:"text-xs text-text-secondary-dark",children:a},o))})]})]})})},uE={healthy:"HEALTHY",secure:"SECURE",enforced:"ENFORCED",warning:"WARNING",partial:"PARTIAL",error:"ERROR",disabled:"DISABLED",compromised:"COMPROMISED"};function hE(t){switch(t){case"healthy":case"secure":case"enforced":return"active";case"warning":case"partial":return"waiting";case"error":case"disabled":case"compromised":return"error";default:return"inactive"}}const fE=({title:t,icon:e,children:n,defaultOpen:r=!1})=>{const[s,a]=k.useState(r);return i.jsxs("div",{className:"border border-border-dark rounded-lg overflow-hidden",children:[i.jsxs("button",{className:"w-full flex items-center gap-2 px-4 py-3 bg-surface-dark hover:bg-surface-dark/80 transition-colors text-left",onClick:()=>a(!s),"aria-expanded":s,children:[e,i.jsx("span",{className:"text-sm font-semibold text-text-primary-dark flex-1",children:t}),s?i.jsx(ei,{size:16,className:"text-text-secondary-dark"}):i.jsx(Si,{size:16,className:"text-text-secondary-dark"})]}),s&&i.jsx("div",{className:"p-4 border-t border-border-dark",children:n})]})},$9=()=>{const{sessions:t,summary:e,loading:n}=eEe(),{filteredEvents:r,summary:s,filter:a,setFilter:o,loading:l}=rEe(),{entries:c,summary:d,loading:u}=iEe();return i.jsxs("div",{className:"max-w-7xl mx-auto px-4 py-6 space-y-6",children:[i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx($u,{size:28,className:"text-emerald-400","aria-hidden":"true"}),i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Security"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Your instance security posture at a glance"})]})]}),i.jsx(pEe,{data:{ptyStatus:e.status,ptyTotalAgents:e.totalAgents,ptyIsolatedCount:e.isolatedCount,approvalStatus:s.status,approvalsDeniedToday:s.deniedToday,approvalsBypassedToday:s.bypassedToday,storageStatus:d.status},loading:n||l||u}),i.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4","data-testid":"summary-cards",children:[i.jsxs(Ot,{padding:"lg","data-testid":"card-pty",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsx(go,{size:18,className:"text-blue-400","aria-hidden":"true"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Agent Isolation"})]}),n?i.jsx(sr,{size:"sm"}):i.jsxs("div",{className:"space-y-1 text-sm",children:[i.jsxs("div",{className:"text-text-secondary-dark",children:[e.isolatedCount," of ",e.totalAgents," agents isolated"]}),i.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide mt-2 flex items-center gap-1.5",children:[i.jsx(Gc,{status:hE(e.status),size:"sm"}),i.jsx("span",{children:uE[e.status]})]})]})]}),i.jsxs(Ot,{padding:"lg","data-testid":"card-storage",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsx(b3,{size:18,className:"text-purple-400","aria-hidden":"true"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Data Storage"})]}),u?i.jsx(sr,{size:"sm"}):i.jsxs("div",{className:"space-y-1 text-sm",children:[i.jsxs("div",{className:"text-text-secondary-dark",children:[WT(d.totalLocalBytes)," stored locally"]}),i.jsxs("div",{className:"text-text-secondary-dark",children:[d.externalConnections," cloud connection",d.externalConnections!==1?"s":""]}),i.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide mt-2 flex items-center gap-1.5",children:[i.jsx(Gc,{status:hE(d.status),size:"sm"}),i.jsx("span",{children:uE[d.status]})]})]})]}),i.jsxs(Ot,{padding:"lg","data-testid":"card-approvals",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsx(yA,{size:18,className:"text-emerald-400","aria-hidden":"true"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Tool Approvals"})]}),l?i.jsx(sr,{size:"sm"}):i.jsxs("div",{className:"space-y-1 text-sm",children:[i.jsxs("div",{className:"text-text-secondary-dark",children:[s.totalToday," reviewed today"]}),s.deniedToday>0&&i.jsxs("div",{className:"text-amber-400 text-xs",children:[s.deniedToday," denied"]}),i.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide mt-2 flex items-center gap-1.5",children:[i.jsx(Gc,{status:hE(s.status),size:"sm"}),i.jsx("span",{children:uE[s.status]})]})]})]})]}),i.jsxs("div",{className:"space-y-3",children:[i.jsx("h3",{className:"text-sm font-medium text-text-secondary-dark uppercase tracking-wide",children:"Detailed Reports"}),i.jsx(fE,{title:"Agent Isolation Map",icon:i.jsx(go,{size:16,className:"text-blue-400"}),children:i.jsx(G9,{sessions:t,loading:n})}),i.jsx(fE,{title:"Approval Audit Log",icon:i.jsx(yA,{size:16,className:"text-emerald-400"}),children:i.jsx(W9,{events:r,filter:a,onFilterChange:o,loading:l})}),i.jsx(fE,{title:"Data Sovereignty Report",icon:i.jsx(b3,{size:16,className:"text-purple-400"}),children:i.jsx(V9,{entries:c,summary:d,loading:u})})]})]})};$9.displayName="SecurityOverview";const mEe=1e4,gEe=3e4,xEe={"claude-3-opus":{input:15e-6,output:75e-6},"claude-3-5-sonnet":{input:3e-6,output:15e-6},"claude-3-haiku":{input:25e-8,output:125e-8},"claude-opus-4":{input:15e-6,output:75e-6},"claude-sonnet-4":{input:3e-6,output:15e-6},default:{input:3e-6,output:15e-6}};function yEe(t){const e=xEe.default;return t.totalInput*e.input+t.totalOutput*e.output}function vEe(t){return t.map(e=>({sessionName:e.sessionName,agentId:e.agentId,inputTokens:e.totalInput,outputTokens:e.totalOutput,totalTokens:e.totalInput+e.totalOutput,cost:e.cost??yEe(e),eventCount:e.eventCount}))}function bEe(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState(null),[c,d]=k.useState(!1),u=k.useRef(!0),h=k.useCallback(async()=>{try{const g=await ft.getTokenUsage();if(!u.current)return;e(vEe(g)),l(new Date),d(!1),a(null)}catch(g){if(!u.current)return;a(g instanceof Error?g.message:"Failed to fetch token usage")}finally{u.current&&r(!1)}},[]);k.useEffect(()=>{u.current=!0,h();const g=setInterval(h,mEe);return()=>{u.current=!1,clearInterval(g)}},[h]),k.useEffect(()=>{const g=setInterval(()=>{if(o){const v=Date.now()-o.getTime();d(v>gEe)}},5e3);return()=>clearInterval(g)},[o]);const f=t.reduce((g,v)=>g+v.cost,0),p=t.reduce((g,v)=>g+v.totalTokens,0),x=t.length,y=t.reduce((g,v)=>g+v.eventCount,0),m=y>0?f/y:0;return{sessions:t,totalCost:f,totalTokens:p,activeAgents:x,avgCostPerTask:m,loading:n,error:s,lastUpdated:o,isStale:c,refresh:h}}const VT="crewly-budget-config",$T={dailyLimit:50,weeklyLimit:200,monthlyLimit:500,maxTokensPerTask:1e5,warningThreshold:80};function t4(t){const e={};return t.dailyLimit<=0&&(e.dailyLimit="Daily limit must be a positive number"),t.weeklyLimit<=0&&(e.weeklyLimit="Weekly limit must be a positive number"),t.monthlyLimit<=0&&(e.monthlyLimit="Monthly limit must be a positive number"),t.maxTokensPerTask<=0&&(e.maxTokensPerTask="Max tokens per task must be a positive number"),(t.warningThreshold<1||t.warningThreshold>100)&&(e.warningThreshold="Warning threshold must be between 1 and 100"),t.weeklyLimit<t.dailyLimit&&(e.weeklyLimit="Weekly limit must be greater than or equal to daily limit"),t.monthlyLimit<t.weeklyLimit&&(e.monthlyLimit="Monthly limit must be greater than or equal to weekly limit"),Object.keys(e).length>0?e:null}function n4(){try{const t=localStorage.getItem(VT);if(t){const e=JSON.parse(t);return{...$T,...e}}}catch{}return{...$T}}function _Ee(){const[t,e]=k.useState(n4);k.useEffect(()=>{e(n4())},[]);const n=k.useCallback(s=>{const a=t4(s);return a||(localStorage.setItem(VT,JSON.stringify(s)),e(s),null)},[]),r=k.useCallback(()=>{localStorage.removeItem(VT),e({...$T})},[]);return{config:t,saveConfig:n,resetConfig:r,validateConfig:t4}}function SEe(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function r4(t){return`$${t.toFixed(2)}`}const Ov=({title:t,value:e})=>i.jsxs("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark transition-all hover:shadow-lg hover:border-primary/50",children:[i.jsx("p",{className:"text-sm font-medium text-text-secondary-dark",children:t}),i.jsx("p",{className:"text-3xl font-bold mt-1",children:e})]}),wEe=({totalCost:t,totalTokens:e,activeAgents:n,avgCostPerTask:r})=>i.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6","data-testid":"token-summary-cards",children:[i.jsx(Ov,{title:"Total Cost",value:r4(t)}),i.jsx(Ov,{title:"Total Tokens",value:SEe(e)}),i.jsx(Ov,{title:"Active Agents",value:n.toString()}),i.jsx(Ov,{title:"Avg Cost / Task",value:r4(r)})]});function kEe(t){return t>=100?"bg-red-500":t>=80?"bg-orange-500":t>=60?"bg-yellow-500":"bg-green-500"}function CEe(t){return t>=100?"Over Budget":t>=80?"Near Limit":t>=60?"Moderate":"On Track"}function Om(t){return`$${t.toFixed(2)}`}const EEe=({currentCost:t,budgetConfig:e})=>{const n=e.dailyLimit>0?t/e.dailyLimit*100:0,r=Math.min(n,100),s=kEe(n),a=CEe(n);return i.jsxs("div",{className:"bg-surface-dark p-4 rounded-lg border border-border-dark","data-testid":"budget-status-bar",children:[i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:"Budget Status"}),i.jsxs("span",{className:"text-xs font-medium text-text-secondary-dark",children:[a," — ",Om(t)," / ",Om(e.dailyLimit)," daily"]})]}),i.jsx("div",{className:"w-full bg-background-dark rounded-full h-3 overflow-hidden",children:i.jsx("div",{role:"progressbar","aria-valuenow":Math.round(n),"aria-valuemin":0,"aria-valuemax":100,"aria-label":`Budget usage: ${Math.round(n)}% of daily limit`,className:`h-full rounded-full transition-all duration-300 ${s}`,style:{width:`${r}%`}})}),i.jsxs("div",{className:"flex justify-between mt-2 text-xs text-text-secondary-dark",children:[i.jsxs("span",{children:["Daily: ",Om(e.dailyLimit)]}),i.jsxs("span",{children:["Weekly: ",Om(e.weeklyLimit)]}),i.jsxs("span",{children:["Monthly: ",Om(e.monthlyLimit)]})]})]})};function $h(t){return t.toLocaleString()}function s4(t){return`$${t.toFixed(4)}`}const AEe=({sessions:t})=>{const[e,n]=k.useState("cost"),[r,s]=k.useState("desc"),a=u=>{e===u?s(h=>h==="asc"?"desc":"asc"):(n(u),s("desc"))},o=k.useMemo(()=>[...t].sort((h,f)=>{const p=h[e],x=f[e];if(typeof p=="string"&&typeof x=="string")return r==="asc"?p.localeCompare(x):x.localeCompare(p);const y=p,m=x;return r==="asc"?y-m:m-y}),[t,e,r]),l=k.useMemo(()=>({inputTokens:t.reduce((u,h)=>u+h.inputTokens,0),outputTokens:t.reduce((u,h)=>u+h.outputTokens,0),totalTokens:t.reduce((u,h)=>u+h.totalTokens,0),cost:t.reduce((u,h)=>u+h.cost,0)}),[t]),c=u=>e!==u?"":r==="asc"?" ↑":" ↓",d=[{key:"sessionName",label:"Agent"},{key:"inputTokens",label:"Input Tokens"},{key:"outputTokens",label:"Output Tokens"},{key:"totalTokens",label:"Total Tokens"},{key:"cost",label:"Cost"}];return t.length===0?i.jsx("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark text-center text-text-secondary-dark","data-testid":"agent-usage-table-empty",children:"No agent usage data available."}):i.jsx("div",{className:"bg-surface-dark rounded-lg border border-border-dark overflow-hidden","data-testid":"agent-usage-table",children:i.jsxs("table",{className:"w-full text-sm",children:[i.jsx("thead",{children:i.jsx("tr",{className:"border-b border-border-dark",children:d.map(u=>i.jsxs("th",{scope:"col",className:"px-4 py-3 text-left text-xs font-semibold text-text-secondary-dark uppercase tracking-wider cursor-pointer hover:text-text-primary-dark select-none",onClick:()=>a(u.key),"aria-sort":e===u.key?r==="asc"?"ascending":"descending":"none",children:[u.label,c(u.key)]},u.key))})}),i.jsx("tbody",{children:o.map(u=>i.jsxs("tr",{className:"border-b border-border-dark/50 hover:bg-background-dark/50 transition-colors",children:[i.jsx("td",{className:"px-4 py-3 font-medium text-text-primary-dark",children:u.sessionName}),i.jsx("td",{className:"px-4 py-3 text-text-secondary-dark",children:$h(u.inputTokens)}),i.jsx("td",{className:"px-4 py-3 text-text-secondary-dark",children:$h(u.outputTokens)}),i.jsx("td",{className:"px-4 py-3 text-text-secondary-dark",children:$h(u.totalTokens)}),i.jsx("td",{className:"px-4 py-3 text-text-primary-dark font-medium",children:s4(u.cost)})]},u.sessionName))}),i.jsx("tfoot",{children:i.jsxs("tr",{className:"border-t border-border-dark bg-background-dark/30",children:[i.jsx("td",{className:"px-4 py-3 font-semibold text-text-primary-dark",children:"Total"}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-secondary-dark",children:$h(l.inputTokens)}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-secondary-dark",children:$h(l.outputTokens)}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-secondary-dark",children:$h(l.totalTokens)}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-primary-dark",children:s4(l.cost)})]})})]})})},i4={Opus:"#8b5cf6",Sonnet:"#3b82f6",Haiku:"#10b981",Other:"#6b7280"},Zm=160,xc=Zm/2,a4=60,TEe=20;function MEe(t){const e=t.toLowerCase();return e.includes("opus")?"Opus":e.includes("sonnet")?"Sonnet":e.includes("haiku")?"Haiku":"Other"}function NEe(t){return`$${t.toFixed(2)}`}function jEe(t){const e={};t.forEach(r=>{const s=MEe(r.sessionName);e[s]=(e[s]||0)+r.totalTokens});const n=Object.values(e).reduce((r,s)=>r+s,0);return n===0?[]:Object.entries(e).map(([r,s])=>({name:r,tokens:s,percent:s/n*100,color:i4[r]||i4.Other})).sort((r,s)=>s.tokens-r.tokens)}const REe=({sessions:t,totalCost:e})=>{const n=k.useMemo(()=>jEe(t),[t]);if(n.length===0)return i.jsx("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark flex items-center justify-center h-full","data-testid":"model-mix-chart-empty",children:i.jsx("p",{className:"text-text-secondary-dark text-sm",children:"No model data available"})});const r=2*Math.PI*a4;let s=0;const a=n.map(o=>{const l=o.percent/100*r,c=r-l,d=-s;return s+=l,{...o,dashArray:`${l} ${c}`,dashOffset:d}});return i.jsxs("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark","data-testid":"model-mix-chart",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark mb-4",children:"Model Distribution"}),i.jsxs("div",{className:"flex items-center gap-6",children:[i.jsxs("svg",{width:Zm,height:Zm,viewBox:`0 0 ${Zm} ${Zm}`,"aria-label":"Token distribution by model donut chart",className:"flex-shrink-0",children:[a.map(o=>i.jsx("circle",{cx:xc,cy:xc,r:a4,fill:"none",stroke:o.color,strokeWidth:TEe,strokeDasharray:o.dashArray,strokeDashoffset:o.dashOffset,transform:`rotate(-90 ${xc} ${xc})`},o.name)),i.jsx("text",{x:xc,y:xc-6,textAnchor:"middle",className:"fill-text-secondary-dark text-[10px]",children:"Total"}),i.jsx("text",{x:xc,y:xc+10,textAnchor:"middle",className:"fill-text-primary-dark text-sm font-semibold",children:NEe(e)})]}),i.jsx("div",{className:"flex flex-col gap-2",children:n.map(o=>i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("div",{className:"w-3 h-3 rounded-full flex-shrink-0",style:{backgroundColor:o.color}}),i.jsx("span",{className:"text-sm text-text-primary-dark",children:o.name}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:[o.percent.toFixed(1),"%"]})]},o.name))})]})]})},IEe=["1h","6h","24h","7d","30d"],pE=500,Bm=200,Bv=60,o4=20,mE=10,gE=40,PEe="#3b82f6";function LEe(t){return`$${t.toFixed(2)}`}function DEe(t,e=10){return t.length<=e?t:t.slice(0,e-1)+"…"}const OEe=({sessions:t})=>{const[e,n]=k.useState("24h");if(t.length===0)return i.jsx("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark flex items-center justify-center h-full","data-testid":"usage-timeline-empty",children:i.jsx("p",{className:"text-text-secondary-dark text-sm",children:"No usage data available"})});const r=[...t].sort((d,u)=>u.cost-d.cost),s=Math.max(...r.map(d=>d.cost),.01),a=pE-Bv-o4,o=Bm-mE-gE,l=Math.min(40,a/r.length-4),c=(a-l*r.length)/(r.length+1);return i.jsxs("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark","data-testid":"usage-timeline",children:[i.jsxs("div",{className:"flex items-center justify-between mb-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Cost by Agent"}),i.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Time range filter",children:IEe.map(d=>i.jsx("button",{onClick:()=>n(d),className:`px-2.5 py-1 text-xs rounded-full transition-colors ${e===d?"bg-primary text-white":"bg-background-dark text-text-secondary-dark hover:text-text-primary-dark"}`,"aria-pressed":e===d,children:d},d))})]}),i.jsxs("svg",{width:"100%",height:Bm,viewBox:`0 0 ${pE} ${Bm}`,"aria-label":`Agent cost bar chart for ${e} time range`,preserveAspectRatio:"xMidYMid meet",children:[[0,.25,.5,.75,1].map(d=>{const u=mE+o*(1-d),h=s*d;return i.jsxs("g",{children:[i.jsx("line",{x1:Bv,y1:u,x2:pE-o4,y2:u,stroke:"currentColor",strokeOpacity:.1}),i.jsx("text",{x:Bv-8,y:u+4,textAnchor:"end",className:"fill-text-secondary-dark text-[9px]",children:LEe(h)})]},d)}),r.map((d,u)=>{const h=s>0?d.cost/s*o:0,f=Bv+c*(u+1)+l*u,p=mE+o-h;return i.jsxs("g",{children:[i.jsx("rect",{x:f,y:p,width:l,height:h,fill:PEe,rx:2,opacity:.85}),i.jsx("text",{x:f+l/2,y:Bm-gE+14,textAnchor:"middle",className:"fill-text-secondary-dark text-[9px]",transform:`rotate(-30, ${f+l/2}, ${Bm-gE+14})`,children:DEe(d.sessionName)})]},d.sessionName)})]})]})},BEe=[{key:"dailyLimit",label:"Daily Limit",unit:"USD",step:1},{key:"weeklyLimit",label:"Weekly Limit",unit:"USD",step:5},{key:"monthlyLimit",label:"Monthly Limit",unit:"USD",step:10},{key:"maxTokensPerTask",label:"Max Tokens / Task",unit:"tokens",step:1e3},{key:"warningThreshold",label:"Warning Threshold",unit:"%",step:5}],FEe=({config:t,onSave:e,onReset:n})=>{const[r,s]=k.useState(!1),[a,o]=k.useState(!1),[l,c]=k.useState({...t}),[d,u]=k.useState(null),h=()=>{c({...t}),u(null),o(!0)},f=()=>{o(!1),u(null)},p=()=>{const m=e(l);m?u(m):(u(null),o(!1))},x=(m,g)=>{c(v=>({...v,[m]:g}))},y=(m,g)=>m.unit==="USD"?`$${g}`:m.unit==="%"?`${g}%`:g.toLocaleString();return i.jsxs("div",{className:"bg-surface-dark rounded-lg border border-border-dark","data-testid":"budget-config-panel",children:[i.jsxs("button",{onClick:()=>s(m=>!m),className:"w-full flex items-center justify-between p-4 text-left hover:bg-background-dark/30 transition-colors rounded-lg","aria-expanded":r,children:[i.jsx("span",{className:"text-sm font-semibold text-text-primary-dark",children:"Budget Configuration"}),r?i.jsx(ei,{className:"h-4 w-4 text-text-secondary-dark"}):i.jsx(Si,{className:"h-4 w-4 text-text-secondary-dark"})]}),r&&i.jsxs("div",{className:"px-4 pb-4 space-y-4",children:[i.jsx("div",{className:"flex gap-2 justify-end",children:a?i.jsxs(i.Fragment,{children:[i.jsx("button",{onClick:f,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-background-dark text-text-secondary-dark hover:text-text-primary-dark transition-colors","data-testid":"budget-cancel-btn",children:"Cancel"}),i.jsx("button",{onClick:p,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-green-600 text-white hover:bg-green-700 transition-colors","data-testid":"budget-save-btn",children:"Save"})]}):i.jsx("button",{onClick:h,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-primary text-white hover:bg-primary/90 transition-colors","data-testid":"budget-edit-btn",children:"Edit"})}),i.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:BEe.map(m=>i.jsxs("div",{children:[i.jsx("label",{className:"block text-xs font-medium text-text-secondary-dark mb-1",htmlFor:`budget-${m.key}`,children:m.label}),a?i.jsxs(i.Fragment,{children:[i.jsx("input",{id:`budget-${m.key}`,type:"number",value:l[m.key],step:m.step,min:0,onChange:g=>x(m.key,parseFloat(g.target.value)||0),className:"w-full px-3 py-2 text-sm bg-background-dark border border-border-dark rounded-lg text-text-primary-dark focus:outline-none focus:ring-1 focus:ring-primary","data-testid":`budget-input-${m.key}`}),(d==null?void 0:d[m.key])&&i.jsx("p",{className:"text-xs text-red-400 mt-1",role:"alert",children:d[m.key]})]}):i.jsx("p",{className:"text-sm text-text-primary-dark","data-testid":`budget-value-${m.key}`,children:y(m,t[m.key])})]},m.key))}),!a&&i.jsx("div",{className:"flex justify-end pt-2",children:i.jsx("button",{onClick:n,className:"text-xs text-text-secondary-dark hover:text-red-400 transition-colors","data-testid":"budget-reset-btn",children:"Reset to Defaults"})})]})]})};function l4(t){return t.toLocaleString()}function UEe(t){return t<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`}const zEe=()=>{const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState("cost"),[c,d]=k.useState("desc"),u=k.useCallback(async()=>{try{const x=await ft.getTokenUsageByTask();e(x),a(null)}catch(x){a(x instanceof Error?x.message:"Failed to load task usage")}finally{r(!1)}},[]);k.useEffect(()=>{u();const x=setInterval(u,3e4);return()=>clearInterval(x)},[u]);const h=x=>{o===x?d(y=>y==="asc"?"desc":"asc"):(l(x),d("desc"))},f=[...t].sort((x,y)=>{const m=x[o],g=y[o];if(typeof m=="string"&&typeof g=="string")return c==="asc"?m.localeCompare(g):g.localeCompare(m);const v=m,b=g;return c==="asc"?v-b:b-v}),p=x=>o!==x?"":c==="asc"?" ↑":" ↓";return n?i.jsx("div",{className:"bg-surface-dark rounded-lg border border-border-dark p-6 text-center",children:i.jsx("p",{className:"text-text-secondary-dark",children:"Loading task usage data..."})}):s?i.jsx("div",{className:"bg-surface-dark rounded-lg border border-red-500/50 p-6 text-center",children:i.jsx("p",{className:"text-red-400",children:s})}):t.length===0?i.jsx("div",{className:"bg-surface-dark rounded-lg border border-border-dark p-6 text-center","data-testid":"task-usage-empty",children:i.jsx("p",{className:"text-text-secondary-dark",children:"No per-task usage data yet. Token tracking must be enabled in Settings."})}):i.jsxs("div",{className:"bg-surface-dark rounded-lg border border-border-dark overflow-hidden","data-testid":"task-usage-table",children:[i.jsx("div",{className:"px-4 py-3 border-b border-border-dark",children:i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Usage by Task"})}),i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"text-left text-text-secondary-dark border-b border-border-dark",children:[i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark",onClick:()=>h("taskId"),children:["Task",p("taskId")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("totalInput"),children:["Input Tokens",p("totalInput")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("totalOutput"),children:["Output Tokens",p("totalOutput")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("cost"),children:["Cost",p("cost")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("eventCount"),children:["Events",p("eventCount")]})]})}),i.jsx("tbody",{children:f.map(x=>i.jsxs("tr",{className:"border-b border-border-dark/50 hover:bg-background-dark/50",children:[i.jsx("td",{className:"px-4 py-2 text-text-primary-dark font-mono text-xs truncate max-w-[200px]",title:x.taskId,children:x.taskId==="unassigned"?i.jsx("span",{className:"text-text-secondary-dark italic",children:"Unassigned"}):x.taskId}),i.jsx("td",{className:"px-4 py-2 text-right text-text-secondary-dark",children:l4(x.totalInput)}),i.jsx("td",{className:"px-4 py-2 text-right text-text-secondary-dark",children:l4(x.totalOutput)}),i.jsx("td",{className:"px-4 py-2 text-right text-green-400 font-medium",children:UEe(x.cost)}),i.jsx("td",{className:"px-4 py-2 text-right text-text-secondary-dark",children:x.eventCount})]},x.taskId))})]})})]})};function HEe(t){if(!t)return"Never";const e=Math.round((Date.now()-t.getTime())/1e3);return e<5?"Just now":e<60?`${e}s ago`:`${Math.floor(e/60)}m ago`}const c4=()=>{const{sessions:t,totalCost:e,totalTokens:n,activeAgents:r,avgCostPerTask:s,loading:a,error:o,lastUpdated:l,isStale:c,refresh:d}=bEe(),{config:u,saveConfig:h,resetConfig:f}=_Ee();return a?i.jsxs("div",{className:"flex items-center justify-center min-h-64",children:[i.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-primary border-t-transparent"}),i.jsx("p",{className:"ml-3 text-text-secondary-dark",children:"Loading cost data..."})]}):o&&t.length===0?i.jsx("div",{className:"max-w-7xl mx-auto","data-testid":"cost-dashboard-error",children:i.jsxs("div",{className:"bg-surface-dark p-8 rounded-lg border border-red-500/50 text-center",children:[i.jsx("p",{className:"text-red-400 font-medium mb-2",children:"Failed to load cost data"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-4",children:o}),i.jsx("button",{onClick:d,className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary text-white hover:bg-primary/90 transition-colors",children:"Retry"})]})}):i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"cost-dashboard",children:[i.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-4 mb-6",children:[i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Usage"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Monitor token usage and spending across all agents and tasks."})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[c&&i.jsx("span",{className:"px-2 py-1 text-xs font-medium rounded-full bg-yellow-500/20 text-yellow-400","data-testid":"stale-badge",children:"Stale"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark","data-testid":"last-updated",children:["Last updated: ",HEe(l)]}),i.jsx("button",{onClick:d,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-background-dark text-text-secondary-dark hover:text-text-primary-dark transition-colors","data-testid":"refresh-btn",children:"Refresh"})]})]}),t.length===0?i.jsxs("div",{className:"bg-surface-dark p-12 rounded-lg border border-border-dark text-center","data-testid":"cost-dashboard-empty",children:[i.jsx("p",{className:"text-lg font-medium text-text-primary-dark mb-2",children:"No usage data yet"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Token usage will appear here once agents start processing tasks."})]}):i.jsxs("div",{className:"space-y-6",children:[i.jsx(EEe,{currentCost:e,budgetConfig:u}),i.jsx(wEe,{totalCost:e,totalTokens:n,activeAgents:r,avgCostPerTask:s}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[i.jsx(OEe,{sessions:t}),i.jsx(REe,{sessions:t,totalCost:e})]}),i.jsx(AEe,{sessions:t}),i.jsx(zEe,{}),i.jsx(FEe,{config:u,onSave:h,onReset:f})]})]})},GEe=()=>{const[t]=pp(),e=_r();return k.useEffect(()=>{(async()=>{const r=t.get("token"),s=t.get("refreshToken"),a=t.get("error");if(r){localStorage.setItem(Km,r),s&&localStorage.setItem("crewly_refresh_token",s);try{await fetch("/api/cloud/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r,refreshToken:s})})}catch{}}a?e("/settings?tab=cloud&error="+encodeURIComponent(a),{replace:!0}):e("/settings?tab=cloud",{replace:!0})})()},[t,e]),i.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background-dark",children:i.jsx(sr,{size:"md",text:"Completing sign-in..."})})},WEe=["Unlimited teams & agents","Cloud Relay for cross-machine control","Premium marketplace templates","Priority support"],VEe=()=>{const t=_r(),{isAuthenticated:e}=vp(),[n,r]=k.useState("");k.useEffect(()=>{e&&t("/settings?tab=cloud",{replace:!0})},[e,t]);const s=()=>{window.location.href=hP()},a=o=>{if(o.preventDefault(),!n.trim())return;const l=hP();window.location.href=`${l}&email=${encodeURIComponent(n.trim())}`};return i.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center bg-background-dark px-4 py-12",children:[i.jsxs("div",{className:"w-full max-w-md rounded-xl border border-border-dark bg-surface-dark p-8",children:[i.jsxs("div",{className:"mb-6 text-center",children:[i.jsx(Hf,{className:"mx-auto h-10 w-10 text-primary"}),i.jsx("h1",{className:"mt-3 text-2xl font-bold text-text-primary-dark",children:"Crewly Cloud"}),i.jsx("p",{className:"mt-2 text-text-secondary-dark",children:"Sign in to unlock premium features"})]}),i.jsx(ze,{variant:"outline",className:"w-full",onClick:s,"data-testid":"google-signin-btn",children:"Sign in with Google"}),i.jsxs("div",{className:"my-6 flex items-center gap-3",children:[i.jsx("div",{className:"h-px flex-1 bg-border-dark"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"or"}),i.jsx("div",{className:"h-px flex-1 bg-border-dark"})]}),i.jsxs("form",{onSubmit:a,children:[i.jsx("label",{htmlFor:"auth-email",className:"mb-1 block text-sm font-medium text-text-secondary-dark",children:"Email"}),i.jsx("input",{id:"auth-email",type:"email",value:n,onChange:o=>r(o.target.value),placeholder:"you@example.com",className:"mb-4 w-full rounded-lg border border-border-dark bg-background-dark px-3 py-2 text-sm text-text-primary-dark placeholder-text-secondary-dark focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary","data-testid":"email-input"}),i.jsx(ze,{variant:"primary",className:"w-full",type:"submit","data-testid":"email-signin-btn",children:"Continue with Email"})]}),i.jsxs("p",{className:"mt-4 text-center text-xs text-text-secondary-dark",children:["By continuing, you agree to our"," ",i.jsx("a",{href:"https://crewlyai.com/terms",className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})]})]}),i.jsxs("div",{className:"mt-8 w-full max-w-md","data-testid":"benefits-list",children:[i.jsx("h2",{className:"mb-3 text-sm font-semibold text-text-secondary-dark",children:"Benefits"}),i.jsx("ul",{className:"space-y-2",children:WEe.map(o=>i.jsxs("li",{className:"flex items-center gap-2 text-sm text-text-secondary-dark",children:[i.jsx(br,{className:"h-4 w-4 flex-shrink-0 text-emerald-400"}),i.jsx("span",{children:o})]},o))})]})]})},$Ee=[{id:"starter",name:"Starter",monthly:49,yearly:39,features:["3 teams","5 agents per team","5 projects","1 Cloud Relay session","10 marketplace templates","20 scheduled check-ins","Community support"],cta:"Get Started",highlighted:!1},{id:"pro",name:"Pro",monthly:99,yearly:79,features:["10 teams","10 agents per team","20 projects","5 Cloud Relay sessions","Full marketplace access","Unlimited schedules","Cloud Portal with 1-click deploy","Priority support"],cta:"Upgrade to Pro",highlighted:!0,badge:"Popular"},{id:"max",name:"Max",monthly:299,yearly:239,features:["Everything in Pro","Unlimited teams & agents","Unlimited projects","Unlimited Cloud Relay","Shared team memory","Slack deep integration","Team analytics","Thread-based chat portal","Dedicated support"],cta:"Upgrade to Max",highlighted:!1,badge:"Best Value"}],KEe={free:"free",starter:"starter",pro:"pro",max:"max"},qEe=()=>{const[t,e]=k.useState("monthly"),{license:n}=vp(),r=n?KEe[n.plan]??"free":"free",s=f6("pro"),[a,o]=k.useState(null),l=async u=>{try{o(u);const h=t==="monthly"?"month":"year",f=await ft.createCheckoutSession(u,h,`${window.location.origin}/cloud?upgraded=true`,window.location.href);window.location.href=f.checkoutUrl}catch{o(null)}},c=u=>{const h=t==="monthly"?u.monthly:u.yearly;return h===0?"$0":`$${h}`},d=u=>u===r;return i.jsxs("div",{className:"min-h-screen bg-background-dark px-4 py-12 sm:px-6 lg:px-8",children:[i.jsxs("div",{className:"mx-auto max-w-4xl text-center",children:[i.jsx("h1",{className:"text-3xl font-bold text-text-primary-dark sm:text-4xl",children:"Choose Your Plan"}),i.jsx("p",{className:"mt-3 text-lg text-text-secondary-dark",children:"Start with Starter, upgrade as you grow."})]}),i.jsxs("div",{className:"mt-8 flex items-center justify-center gap-3",children:[i.jsx("button",{type:"button",onClick:()=>e("monthly"),className:`rounded-lg px-4 py-2 text-sm font-medium transition-colors ${t==="monthly"?"bg-primary text-white":"bg-surface-dark text-text-secondary-dark hover:text-text-primary-dark"}`,"aria-pressed":t==="monthly","data-testid":"billing-monthly",children:"Monthly"}),i.jsxs("button",{type:"button",onClick:()=>e("yearly"),className:`rounded-lg px-4 py-2 text-sm font-medium transition-colors ${t==="yearly"?"bg-primary text-white":"bg-surface-dark text-text-secondary-dark hover:text-text-primary-dark"}`,"aria-pressed":t==="yearly","data-testid":"billing-yearly",children:["Yearly — Save ",s,"%"]})]}),i.jsx("div",{className:"mx-auto mt-10 grid max-w-6xl grid-cols-1 gap-6 md:grid-cols-3",children:$Ee.map(u=>{const h=d(u.id);return i.jsxs("div",{"data-testid":`plan-card-${u.id}`,className:`relative flex flex-col rounded-xl border bg-surface-dark p-6 ${u.highlighted?"border-primary ring-2 ring-primary/30":"border-border-dark"}`,children:[u.badge&&i.jsx("span",{className:"absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-primary px-3 py-0.5 text-xs font-semibold text-white",children:u.badge}),i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:u.name}),i.jsxs("div",{className:"mt-4 flex items-baseline gap-1",children:[i.jsx("span",{className:"text-4xl font-bold text-text-primary-dark","data-testid":`price-${u.id}`,children:c(u)}),i.jsx("span",{className:"text-text-secondary-dark",children:"/mo"})]}),t==="yearly"&&u.yearly>0&&i.jsxs("p",{className:"mt-1 text-xs text-text-secondary-dark",children:["Billed annually at $",u.yearly*12,"/yr"]}),i.jsx("ul",{className:"mt-6 flex-1 space-y-3",children:u.features.map(f=>i.jsxs("li",{className:"flex items-start gap-2 text-sm text-text-secondary-dark",children:[i.jsx(br,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-emerald-400"}),i.jsx("span",{children:f})]},f))}),i.jsx("div",{className:"mt-8",children:h?i.jsx(ze,{variant:"secondary",className:"w-full",disabled:!0,"data-testid":`cta-${u.id}`,children:"Current Plan"}):i.jsx(ze,{variant:"primary",className:"w-full",onClick:()=>l(u.id),loading:a===u.id,"data-testid":`cta-${u.id}`,children:u.cta})})]},u.id)})}),i.jsx("div",{className:"mx-auto mt-10 max-w-6xl rounded-xl border border-border-dark bg-surface-dark p-8","data-testid":"enterprise-section",children:i.jsxs("div",{className:"flex flex-col items-center justify-between gap-4 sm:flex-row",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:"Enterprise"}),i.jsx("p",{className:"mt-1 text-text-secondary-dark",children:"Custom pricing · Unlimited seats · VPC deploy · SSO · 24/7 support"})]}),i.jsx("a",{href:"mailto:sales@crewlyai.com",children:i.jsx(ze,{variant:"ghost","data-testid":"contact-sales-btn",children:"Contact Sales"})})]})})]})},d4={ONLINE_THRESHOLD_MS:3e4,STALE_THRESHOLD_MS:6e4};function XEe(t,e=new Date){if(!t)return"offline";const n=Date.parse(t);if(Number.isNaN(n))return"offline";const r=e.getTime()-n;return r<=d4.ONLINE_THRESHOLD_MS?"online":r<=d4.STALE_THRESHOLD_MS?"stale":"offline"}const YEe="/api/cloud/validate",JEe="/api/cloud/status",ZEe="/api/cloud/devices",QEe="/api/relay/cloud-devices",eAe=5e3,tAe=6e5,nAe={waiting:"Connecting",paired:"Connected",disconnected:"Offline",online:"Online",offline:"Offline"},rAe={waiting:"bg-yellow-400",paired:"bg-emerald-400",disconnected:"bg-gray-500",online:"bg-emerald-400",offline:"bg-gray-500"};function sAe(t){return t.filter(e=>typeof e.deviceName=="string"&&e.deviceName.length>0)}function iAe(t){const e=new Map;for(const n of t){const r=n.deviceId||n.sessionId;if(!r){e.set(`__unkeyed_${e.size}`,n);continue}const s=e.get(r);if(!s)e.set(r,n);else{const a=new Date(s.lastHeartbeatAt||s.registeredAt||"0").getTime(),o=new Date(n.lastHeartbeatAt||n.registeredAt||"0").getTime(),l=s.status==="online"||s.state==="paired"||s.state==="waiting",c=n.status==="online"||n.state==="paired"||n.state==="waiting";(o>a||c&&!l)&&e.set(r,n)}}return Array.from(e.values())}const aAe=t=>{switch(t){case"pro":return"bg-primary/10 text-primary border-primary/30";case"enterprise":return"bg-amber-500/10 text-amber-400 border-amber-500/30";default:return"bg-gray-500/10 text-gray-400 border-gray-500/30"}},oAe=({device:t})=>{const e=t.role==="orchestrator"?go:Yg,n=t.status||t.state||"disconnected",r=rAe[n]??"bg-gray-500",s=nAe[n]??n,a=t.name||t.deviceName||(t.sessionId?`${t.role||"device"} (${t.sessionId.slice(0,8)}...)`:t.deviceId||"Unknown");return i.jsxs("div",{"data-testid":`cloud-device-${t.sessionId||t.deviceId}`,className:`flex items-center justify-between p-3 rounded-lg border transition-colors ${t.isLocal?"border-primary/30 bg-primary/5":"border-border-dark bg-background-dark hover:border-border-dark/80"}`,children:[i.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[i.jsx("div",{className:`p-1.5 rounded-md ${t.isLocal?"bg-primary/10":"bg-surface-dark"}`,children:i.jsx(e,{className:`w-4 h-4 ${t.isLocal?"text-primary":"text-text-secondary-dark"}`})}),i.jsxs("div",{className:"min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark truncate",children:a}),t.isLocal&&i.jsx("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded bg-primary/10 text-primary whitespace-nowrap",children:"This machine"})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:t.lastHeartbeatAt?`Last seen: ${tx(t.lastHeartbeatAt)}`:`Registered: ${tx(t.registeredAt)}`})]})]}),i.jsxs("div",{className:"flex items-center gap-1.5 ml-3 whitespace-nowrap",children:[i.jsx("span",{className:`h-2 w-2 rounded-full ${r}`}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:s})]})]})},lAe=()=>{const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState(!1),[c,d]=k.useState(null),u=k.useCallback(async()=>{var f;try{r(!0),a(null),l(!1),d(null);const p=await fetch(ZEe),x=await p.json();if(p.ok&&x.success&&x.data){if(x.data.syncState&&d(x.data.syncState),x.data.devices&&x.data.devices.length>0){e(x.data.devices),x.data.tokenExpired&&l(!0);return}if(!x.data.syncState||x.data.syncState==="stopped")try{const y=await fetch(QEe),m=await y.json();if(y.ok&&m.success&&((f=m.data)!=null&&f.devices)){e(m.data.devices),m.data.tokenExpired&&l(!0);return}}catch{}e(x.data.devices||[]),x.data.tokenExpired&&l(!0)}else a(x.error||"Failed to load devices")}catch{a("Could not reach the server")}finally{r(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=k.useMemo(()=>sAe(iAe(t)),[t]);return i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl p-6 space-y-3","data-testid":"cloud-device-list-section",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(nM,{className:"w-4 h-4 text-text-secondary-dark"}),i.jsx("h3",{className:"text-lg font-semibold text-text-primary-dark",children:"Connected Devices"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["(",h.length,")"]}),c&&i.jsx("span",{"data-testid":"sync-state-badge",className:`text-[10px] font-medium px-1.5 py-0.5 rounded ${c==="syncing"?"bg-emerald-500/10 text-emerald-400":c==="error"?"bg-rose-500/10 text-rose-400":"bg-gray-500/10 text-gray-400"}`,children:c==="syncing"?"Sync Active":c==="error"?"Sync Error":"Sync Off"})]}),i.jsx("button",{onClick:u,disabled:n,className:"p-1.5 text-text-secondary-dark hover:text-text-primary-dark rounded-md hover:bg-background-dark transition-colors disabled:opacity-50","aria-label":"Refresh devices","data-testid":"refresh-devices-button",children:i.jsx(zn,{className:`w-3.5 h-3.5 ${n?"animate-spin":""}`})})]}),s&&i.jsx(Bt,{variant:"error",className:"text-xs",children:s}),o&&!s&&i.jsx(Bt,{variant:"warning",className:"text-xs","data-testid":"token-expired-warning",children:"Cloud session expired. Please disconnect and sign in again to refresh your token."}),!n&&!s&&!o&&h.length===0&&i.jsxs("div",{className:"text-center py-6",children:[i.jsx(go,{className:"w-8 h-8 text-text-secondary-dark/30 mx-auto mb-2"}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"No devices connected yet"}),i.jsxs("p",{className:"text-[11px] text-text-secondary-dark/60 mt-0.5",children:["Connect from another machine using ",i.jsx("code",{className:"text-primary/80",children:"crewly cloud connect"})]})]}),h.length>0&&i.jsx("div",{className:"space-y-2",children:h.map(f=>i.jsx(oAe,{device:f},f.deviceId||f.sessionId||f.name||f.deviceName))})]})},cAe={online:{textClass:"text-emerald-400",dotClass:"bg-emerald-400",label:"Online"},stale:{textClass:"text-amber-400",dotClass:"bg-amber-400",label:"Stale"},offline:{textClass:"text-text-secondary-dark",dotClass:"bg-gray-500",label:"Offline"}},dAe=({status:t})=>{const e=cAe[t];return i.jsxs("span",{className:`inline-flex items-center gap-1 text-xs ${e.textClass}`,"data-testid":`browser-instance-status-${t}`,children:[i.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${e.dotClass}`}),e.label]})},uAe=()=>{const[t,e]=k.useState([]),[n,r]=k.useState(!1),[s,a]=k.useState(!0),o=k.useCallback(async()=>{try{const l=await fetch("/api/browser/instances");if(l.ok){const c=await l.json();e(c.instances||[]),r(c.proxyConnected||!1)}}catch{}finally{a(!1)}},[]);return k.useEffect(()=>{o();const l=setInterval(o,15e3);return()=>clearInterval(l)},[o]),i.jsxs("div",{className:"rounded-xl border border-border-dark bg-surface-dark p-5","data-testid":"browser-extensions-section",children:[i.jsxs("div",{className:"flex items-center justify-between mb-4",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(vA,{className:"h-4 w-4 text-text-secondary-dark"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Browser Extensions"}),i.jsx("span",{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium ${n?"bg-emerald-500/10 text-emerald-400":"bg-amber-500/10 text-amber-400"}`,children:n?"Relay Connected":"Relay Offline"})]}),i.jsx("button",{onClick:()=>{a(!0),o()},className:"text-text-secondary-dark hover:text-text-primary-dark p-1 rounded hover:bg-background-dark transition-colors",title:"Refresh",children:i.jsx(zn,{className:`w-3.5 h-3.5 ${s?"animate-spin":""}`})})]}),s?i.jsxs("div",{className:"flex items-center gap-2 text-text-secondary-dark py-3",children:[i.jsx(gu,{className:"h-4 w-4 animate-spin"}),i.jsx("span",{className:"text-xs",children:"Loading..."})]}):t.length===0?i.jsxs("div",{className:"text-center py-6",children:[i.jsx(go,{className:"h-8 w-8 text-text-secondary-dark mx-auto mb-2 opacity-40"}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"No browser extensions connected"}),i.jsx("p",{className:"text-[10px] text-text-secondary-dark mt-1 opacity-60",children:"Install Crewly in Chrome and sign in to connect"})]}):i.jsx("div",{className:"space-y-2",children:t.map(l=>i.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-border-dark bg-background-dark px-4 py-3",children:[i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("div",{className:"flex items-center justify-center w-8 h-8 rounded-full bg-indigo-500/10",children:i.jsx(vA,{className:"h-4 w-4 text-indigo-400"})}),i.jsxs("div",{children:[i.jsx("p",{className:"text-sm font-medium text-text-primary-dark",children:l.instanceName}),i.jsxs("p",{className:"text-[10px] text-text-secondary-dark font-mono",children:[l.instanceId.slice(0,8),"..."]})]})]}),i.jsxs("div",{className:"flex flex-col items-end gap-0.5",children:[i.jsx(dAe,{status:XEe(l.lastSeenAt)}),l.lastSeenAt&&i.jsxs("span",{className:"text-[10px] text-text-secondary-dark",children:["Last seen: ",tx(l.lastSeenAt)]})]})]},l.instanceId))})]})},hAe=()=>{const t=_r(),[e]=pp(),{license:n,user:r}=vp(),s=e.get("upgraded")==="true",[a,o]=k.useState(!1),[l,c]=k.useState(null),[d,u]=k.useState(null),[h,f]=k.useState(!0),[p,x]=k.useState(null),[y,m]=k.useState(null),[g,v]=k.useState(null),[b,S]=k.useState(!0),[C,E]=k.useState([]),[N,T]=k.useState(!0),[A,M]=k.useState("idle");k.useState("");const[P,I]=k.useState(null);k.useState(null);const B=k.useCallback(async()=>{try{const F=await fetch(JEe),J=await F.json();if(F.ok&&J.success&&J.data){const q=J.data,te=q.connectionStatus==="connected";return o(te),u(q.cloudUrl??null),c(te?q.tier??null:null),te}}catch{}return o(!1),c(null),u(null),!1},[]),V=k.useCallback(async()=>{const F=localStorage.getItem(Km);if(F)try{const J=await fetch(YEe,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${F}`}}),q=await J.json();J.ok&&q.success&&q.data?(m({id:q.data.id,email:q.data.email,plan:q.data.plan,name:q.data.name,avatar:q.data.avatar}),x(null)):(localStorage.removeItem(Km),m(null))}catch{x("Could not reach CrewlyAI Cloud. Check your internet connection.")}},[]),K=k.useCallback(async F=>{try{const J=localStorage.getItem("crewly_refresh_token")||void 0;await fetch("/api/cloud/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:F,...J&&{refreshToken:J}})})}catch{}},[]);k.useEffect(()=>{(async()=>{await B(),await V(),f(!1)})()},[B,V]),k.useEffect(()=>{const F=localStorage.getItem(Km);F&&y&&K(F)},[y,K]),k.useEffect(()=>{(async()=>{try{const J=await ft.getSubscription();v(J)}catch{v(null)}finally{S(!1)}})()},[]),k.useEffect(()=>{(async()=>{try{const J=await ft.listDeployments({customerId:r==null?void 0:r.id});E(J.deployments)}catch{E([])}finally{T(!1)}})()},[r==null?void 0:r.id]);const H=()=>{const F=`${window.location.origin}/auth/callback`;window.location.href=`https://api.crewlyai.com/api/cloud/google/start?redirect=${encodeURIComponent(F)}`},$=async()=>{localStorage.removeItem(Km),m(null),o(!1),c(null),u(null),x(null);try{await fetch("/api/cloud/disconnect",{method:"POST"})}catch{}},L=async()=>{f(!0),x(null),await B(),await V(),f(!1)};k.useCallback(async F=>{const J=Date.now(),q=async()=>{if(Date.now()-J>tAe){M("error"),I("Deployment timed out after 10 minutes");return}try{const te=await ft.getDeploymentStatus(F);if(te.currentPhase==="READY"&&te.success){M("ready"),E(z=>[...z.filter(Q=>Q.deploymentId!==F),{...te,deploymentId:F}]);return}if(te.currentPhase==="FAILED"||te.error){M("error"),I(te.error??"Deployment failed");return}setTimeout(q,eAe)}catch(te){M("error"),I(te instanceof Error?te.message:"Failed to check deployment status")}};q()},[]);const U=a||!!y,R=(y==null?void 0:y.plan)??l??(g==null?void 0:g.plan)??(n==null?void 0:n.plan)??"free",D=R!=="free",G=h||b;return C.filter(F=>F.success&&F.currentPhase==="READY"),h?i.jsx("div",{className:"p-6",children:i.jsx("div",{className:"mx-auto max-w-7xl flex justify-center py-12",children:i.jsx(sr,{size:"sm"})})}):i.jsx("div",{className:"p-6",children:i.jsxs("div",{className:"mx-auto max-w-7xl",children:[i.jsxs("div",{className:"mb-8 flex items-center gap-3",children:[i.jsx(Hf,{className:"h-8 w-8 text-primary"}),i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Cloud Portal"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Connect, manage, and deploy your Crewly teams in the cloud"})]})]}),s&&i.jsxs("div",{className:"mb-6 rounded-xl border border-emerald-500/30 bg-emerald-500/10 p-4 text-center","data-testid":"upgrade-success-banner",children:[i.jsx(Wu,{className:"mx-auto h-6 w-6 text-emerald-400 mb-2"}),i.jsx("h3",{className:"text-lg font-semibold text-emerald-400",children:"Welcome to Crewly Pro!"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Your subscription is active. Deploy your first AI team below to get started."})]}),p&&i.jsx("div",{className:"mb-6",children:i.jsx(Bt,{variant:"error",children:p})}),!U&&i.jsxs(Ot,{padding:"lg",className:"text-center space-y-4 mb-6",children:[i.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary/10 mx-auto",children:i.jsx(Uc,{className:"w-8 h-8 text-primary"})}),i.jsxs("div",{children:[i.jsx("h2",{className:"text-lg font-semibold text-text-primary-dark",children:"Connect to CrewlyAI Cloud"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1 max-w-md mx-auto",children:"Sign in with your CrewlyAI account to enable device sync, remote team access, and Pro features."})]}),i.jsxs("button",{onClick:H,className:"inline-flex items-center gap-2 px-6 py-3 bg-primary text-white rounded-lg font-medium text-sm hover:bg-primary/90 transition-colors","data-testid":"cloud-sign-in-button",children:[i.jsx(Ps,{className:"w-4 h-4"}),"Sign in with CrewlyAI"]})]}),U&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"mb-6 rounded-xl border border-border-dark bg-surface-dark p-6","data-testid":"connection-card",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("div",{className:"w-10 h-10 bg-primary/10 rounded-full flex items-center justify-center",children:y!=null&&y.avatar?i.jsx("img",{src:y.avatar,alt:y.name||y.email,className:"w-10 h-10 rounded-full"}):i.jsx(Hf,{className:"w-5 h-5 text-primary"})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:y?y.name||y.email:"CrewlyAI Cloud"}),i.jsx(br,{className:"w-4 h-4 text-emerald-400"}),i.jsx("span",{className:`px-2 py-0.5 text-xs font-medium rounded border ${aAe(R)} capitalize`,children:R})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:y?y.email:"Connected via backend"}),d&&i.jsx("p",{className:"text-xs text-text-secondary-dark mt-0.5",children:d})]})]}),!D&&i.jsx(ze,{variant:"primary",onClick:()=>t("/pricing"),"data-testid":"upgrade-btn",children:"Upgrade Now"})]}),i.jsxs("div",{className:"flex items-center gap-2 pt-4 mt-4 border-t border-border-dark",children:[i.jsxs("button",{onClick:L,disabled:G,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary-dark hover:text-text-primary-dark rounded-md hover:bg-background-dark transition-colors disabled:opacity-50","data-testid":"refresh-connection-button",children:[i.jsx(zn,{className:`w-3.5 h-3.5 ${G?"animate-spin":""}`}),"Refresh"]}),i.jsxs("button",{onClick:$,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary-dark hover:text-rose-400 rounded-md hover:bg-background-dark transition-colors","data-testid":"cloud-disconnect-button",children:[i.jsx(WF,{className:"w-3.5 h-3.5"}),"Disconnect"]})]})]}),i.jsx("div",{className:"mb-6",children:i.jsx(lAe,{})}),i.jsx("div",{className:"mb-6",children:i.jsx(uAe,{})}),!1,!1]})]})})},LS=({count:t=3})=>i.jsx("div",{className:"animate-pulse space-y-3","data-testid":"skeleton-rows",children:Array.from({length:t},(e,n)=>i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-lg p-5 space-y-3",children:[i.jsx("div",{className:"h-4 bg-background-dark/50 rounded w-3/4"}),i.jsx("div",{className:"h-3 bg-background-dark/50 rounded w-1/2"}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx("div",{className:"h-6 bg-background-dark/50 rounded-full w-16"}),i.jsx("div",{className:"h-6 bg-background-dark/50 rounded-full w-20"})]})]},n))});LS.displayName="SkeletonRows";function yb({label:t,options:e,value:n,onChange:r,testIdPrefix:s,className:a=""}){return i.jsxs("div",{className:`flex items-center gap-2 flex-wrap ${a}`,role:"group","aria-label":t,children:[t&&i.jsx("span",{className:"text-xs uppercase tracking-wide text-text-secondary-dark font-medium min-w-[72px]",children:t}),i.jsx("div",{className:"flex items-center gap-1.5 flex-wrap",children:e.map(o=>i.jsx(iM,{isActive:o.key===n,onClick:()=>r(o.key),count:o.count,"data-testid":s?`${s}-${o.key}`:void 0,children:o.label},o.key))})]})}yb.displayName="FilterPillGroup";const _j=({missionId:t,onDecided:e,size:n="sm"})=>{const[r,s]=k.useState(null),[a,o]=k.useState(null),[l,c]=k.useState(!1),[d,u]=k.useState(""),h=async()=>{s("approve"),o(null);try{const p=await ft.approveMission(t);e(p)}catch(p){o(p instanceof Error?p.message:"Failed to approve")}finally{s(null)}},f=async()=>{if(!d.trim()){o("A rejection reason is required.");return}s("reject"),o(null);try{const p=await ft.rejectMission(t,d.trim());c(!1),u(""),e(p)}catch(p){o(p instanceof Error?p.message:"Failed to reject")}finally{s(null)}};return i.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap","data-testid":`approval-actions-${t}`,onClick:p=>p.stopPropagation(),children:[i.jsx(ze,{variant:"primary",size:n,icon:br,onClick:h,disabled:r!==null,"data-testid":`approve-${t}`,children:r==="approve"?"Approving…":"Approve"}),i.jsx(ze,{variant:"ghost",size:n,icon:On,onClick:()=>{o(null),c(!0)},disabled:r!==null,"data-testid":`reject-${t}`,children:"Reject"}),a&&!l&&i.jsx("span",{className:"text-xs text-red-400","data-testid":`approval-error-${t}`,children:a}),l&&i.jsxs(Ka,{isOpen:l,onClose:()=>c(!1),title:"Reject proposal",size:"sm",children:[i.jsxs(rM,{children:[i.jsxs("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:["Reason ",i.jsx("span",{className:"text-red-400",children:"*"})]}),i.jsx("textarea",{className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-y focus:outline-none focus:border-accent-blue/50",rows:3,value:d,onChange:p=>u(p.target.value),placeholder:"Why is this decomposition not acceptable?","data-testid":`reject-reason-${t}`}),a&&i.jsx("div",{className:"mt-2",children:i.jsx(Bt,{variant:"error",children:a})})]}),i.jsxs(ad,{children:[i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>c(!1),disabled:r!==null,children:"Cancel"}),i.jsx(ze,{variant:"danger",size:"sm",onClick:f,disabled:r!==null,"data-testid":`reject-confirm-${t}`,children:r==="reject"?"Rejecting…":"Reject proposal"})]})]})]})},fAe=[{key:"all",label:"All"},{key:"critical",label:"Critical"},{key:"high",label:"High"},{key:"medium",label:"Medium"},{key:"low",label:"Low"}],pAe=[{key:"all",label:"All"},{key:"current",label:"Current"},{key:"upcoming",label:"Upcoming"},{key:"past",label:"Past"},{key:"none",label:"No period"}];function K9(t,e=new Date){if(!t)return"none";const n=new Date(t.startDate).getTime(),r=new Date(t.endDate).getTime(),s=e.getTime();return s<n?"upcoming":s>=r?"past":"current"}function mAe(t){const e=Date.now(),n=new Date(t).getTime(),r=e-n,s=Math.floor(r/6e4),a=Math.floor(s/60),o=Math.floor(a/24);return s<1?"just now":s<60?`${s}m ago`:a<24?`${a}h ago`:`${o}d ago`}const gAe=({criteria:t})=>{const[e,n]=k.useState(!1);if(t.length===0)return null;const r=e?t:t.slice(0,3),s=t.length-3;return i.jsxs("div",{className:"mt-2 flex items-center gap-1.5 flex-wrap",children:[r.map((a,o)=>i.jsx(tn,{variant:"default",size:"md",children:a.length>40?a.slice(0,40)+"...":a},o)),!e&&s>0&&i.jsxs("button",{type:"button",onClick:a=>{a.stopPropagation(),n(!0)},className:"text-xs text-primary hover:text-primary/80 transition-colors cursor-pointer",children:["+",s," more"]}),e&&t.length>3&&i.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),n(!1)},className:"text-xs text-primary hover:text-primary/80 transition-colors cursor-pointer",children:"Show less"})]})},xAe=({missionId:t,keyResults:e})=>e.length===0?null:i.jsx("div",{className:"mt-3 space-y-1.5","data-testid":`mission-krs-${t}`,children:e.map(n=>{const r=Math.round(RM(n));return i.jsxs("div",{className:"flex flex-col gap-1 rounded-md bg-surface-dark/60 border border-border-dark px-3 py-2","data-testid":`mission-kr-${t}-${n.id}`,children:[i.jsxs("div",{className:"flex items-center justify-between gap-3",children:[i.jsx("span",{className:"text-xs font-medium text-text-primary-dark truncate",children:n.title}),i.jsxs("span",{className:"text-[11px] text-text-secondary-dark flex-shrink-0 font-mono",children:[hg(n.current,n.metricType,n.unit)," /"," ",hg(n.target,n.metricType,n.unit),i.jsxs("span",{className:"ml-2 opacity-70",children:["(",r,"%)"]})]})]}),i.jsx("div",{className:"h-1 w-full rounded-full bg-border-dark/40 overflow-hidden",children:i.jsx("div",{className:`h-full rounded-full transition-all ${NM[n.status]}`,style:{width:`${r}%`}})})]},n.id)})});function yAe(t,e){if(t.status==="active"&&e.status!=="active")return-1;if(t.status!=="active"&&e.status==="active")return 1;const n=pP[t.priority??"low"],r=pP[e.priority??"low"];return n!==r?n-r:new Date(e.updatedAt).getTime()-new Date(t.updatedAt).getTime()}function vAe(t){return t.length===0?null:t.reduce((n,r)=>n+RM(r),0)/t.length}const bAe=24,q9=({node:t,depth:e,ctx:n})=>{var S,C,E;const{mission:r}=t,{missionsById:s,cascadeById:a,teamNames:o,onDecided:l,navigate:c}=n,d=K9(r.period),u=r.parentMissionId?s.get(r.parentMissionId):void 0,h=e===0&&!!r.parentMissionId,f=r.keyResults??[],p=jM(r,s),x=a.get(r.id),y=x?x.rolledUpProgress:vAe(f),m=x&&x.totalKRs>0?G6(x):H6(f),g=(S=r.approval)==null?void 0:S.state,v=!!g&&(g!=="approved"||!!((C=r.approval)!=null&&C.decidedAt)),b=o.get(r.ownerTeamId)??r.ownerTeamId;return i.jsxs("div",{"data-testid":`mission-node-${r.id}`,style:{marginLeft:e*bAe},children:[i.jsx(Ot,{variant:"default",padding:"md",className:`border cursor-pointer transition-colors ${g==="pending_approval"?"border-yellow-500/40 hover:border-yellow-500/70":"border-border-dark hover:border-primary/30"} ${e>0?"border-l-2 border-l-primary/30":""}`,"data-testid":`mission-row-${r.id}`,onClick:()=>c(`/missions/${r.id}`),children:i.jsxs("div",{className:"flex items-start justify-between gap-4",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[h&&i.jsxs("button",{type:"button",onClick:N=>{N.stopPropagation(),r.parentMissionId&&c(`/missions/${r.parentMissionId}`)},className:"mb-1 flex items-center gap-1 text-[11px] text-text-secondary-dark hover:text-primary transition-colors","data-testid":`mission-parent-${r.id}`,children:[i.jsx("span",{children:"↳ Child of"}),i.jsx("span",{className:"font-medium",children:(u==null?void 0:u.objective)??((E=r.parentMissionId)==null?void 0:E.slice(0,8))})]}),i.jsxs("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[i.jsx(Dx,{level:p}),i.jsx("span",{className:"text-base font-semibold leading-6 text-text-primary-dark",children:r.objective}),v&&g&&i.jsx(IM,{state:g})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-2",children:[i.jsx(Wl,{status:MM(r.status),children:Qb(r.status)}),r.priority&&i.jsx(tn,{variant:z6[r.priority],size:"sm","data-testid":`mission-priority-${r.id}`,children:qA[r.priority]}),r.period&&i.jsx(tn,{variant:d==="current"?"success":d==="past"?"default":"info",size:"sm","data-testid":`mission-period-${r.id}`,children:r.period.label??`${r.period.type}`}),i.jsxs(tn,{variant:"default",size:"sm","data-testid":`mission-team-${r.id}`,children:["Team: ",b.length>24?`${b.slice(0,22)}…`:b]}),i.jsxs(tn,{variant:"info",size:"sm",children:[r.activeProjectTaskIds.length," active tasks"]}),f.length>0&&i.jsxs(tn,{variant:"info",size:"sm",children:[f.length," KR",f.length===1?"":"s"]}),r.cadence&&i.jsxs("span",{className:"text-[11px] font-mono text-text-secondary-dark",title:"Review cadence (cron)","data-testid":`mission-cadence-${r.id}`,children:["⏱ ",r.cadence]}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["Updated ",mAe(r.updatedAt)]})]}),(y!==null||x)&&i.jsxs("div",{className:"mb-2 flex flex-col gap-1","data-testid":`mission-rollup-${r.id}`,children:[i.jsx(nx,{percent:y??0,label:x&&x.childMissionCount>0?`Rolled-up (${x.childMissionCount} child${x.childMissionCount===1?"":"ren"})`:"Progress","data-testid":`mission-progress-${r.id}`}),i.jsx(PM,{counts:m})]}),g==="pending_approval"&&i.jsx("div",{className:"mb-2",children:i.jsx(_j,{missionId:r.id,onDecided:l})}),r.currentStrategy&&i.jsx("p",{className:"text-xs text-text-secondary-dark line-clamp-2",children:r.currentStrategy}),f.length>0?i.jsx(xAe,{missionId:r.id,keyResults:f}):i.jsx(gAe,{criteria:r.successCriteria??[]})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark font-mono flex-shrink-0",children:r.id.slice(0,8)})]})}),t.children.length>0&&i.jsx("div",{className:"mt-2 flex flex-col gap-2","data-testid":`mission-children-${r.id}`,children:t.children.map(N=>i.jsx(q9,{node:N,depth:e+1,ctx:n},N.mission.id))})]})},X9=()=>{const t=_r(),[e,n]=k.useState([]),[r,s]=k.useState(new Map),[a,o]=k.useState([]),[l,c]=k.useState([]),[d,u]=k.useState(!0),[h,f]=k.useState(null),[p,x]=k.useState("all"),[y,m]=k.useState("all"),[g,v]=k.useState("all"),[b,S]=k.useState("all"),[C,E]=k.useState(""),[N,T]=k.useState(!1),A=k.useCallback(async D=>{const G=new Set(D.map(q=>q.id)),F=D.filter(q=>!q.parentMissionId||!G.has(q.parentMissionId)),J=new Map;await Promise.all(F.map(async q=>{try{const te=await ft.getCascadeSummary(q.id);W6(te,J)}catch{}})),s(J)},[]),M=k.useCallback(async()=>{u(!0),f(null);try{const D=await ft.getMissions();n(D),A(D)}catch(D){f(D instanceof Error?D.message:"Failed to load missions")}finally{u(!1)}},[A]);k.useEffect(()=>{M()},[M]),k.useEffect(()=>{let D=!1;return(async()=>{try{const G=await ft.getTeams();D||o(Array.isArray(G)?G:[])}catch{}try{const G=await ft.getProjects();D||c(Array.isArray(G)?G:[])}catch{}})(),()=>{D=!0}},[]);const P=k.useMemo(()=>{const D=new Map;for(const G of e)D.set(G.id,G);return D},[e]),I=k.useMemo(()=>{const D=new Map;for(const G of a)D.set(G.id,G.name);return D},[a]),B=k.useMemo(()=>{const D=new Set;for(const G of e)G.ownerTeamId&&D.add(G.ownerTeamId);return[{key:"all",label:"All"},...Array.from(D).sort().map(G=>{const F=I.get(G)??G;return{key:G,label:F.length>16?`${F.slice(0,12)}…`:F}})]},[e,I]),V=k.useMemo(()=>{let D=e;if(p!=="all"&&(D=D.filter(G=>G.status===p)),y!=="all"&&(D=D.filter(G=>(G.priority??"low")===y)),g!=="all"&&(D=D.filter(G=>K9(G.period)===g)),b!=="all"&&(D=D.filter(G=>G.ownerTeamId===b)),C.trim()){const G=C.toLowerCase();D=D.filter(F=>{var J,q,te;return F.objective.toLowerCase().includes(G)||F.id.toLowerCase().includes(G)||F.ownerTeamId.toLowerCase().includes(G)||(I.get(F.ownerTeamId)??"").toLowerCase().includes(G)||((J=F.currentStrategy)==null?void 0:J.toLowerCase().includes(G))||((te=(q=F.period)==null?void 0:q.label)==null?void 0:te.toLowerCase().includes(G))})}return D},[e,p,y,g,b,C,I]),K=k.useMemo(()=>BQ(V,yAe),[V]),H=k.useMemo(()=>{const D={all:e.length};for(const G of e)D[G.status]=(D[G.status]||0)+1;return D},[e]),$=k.useMemo(()=>e.filter(D=>{var G;return((G=D.approval)==null?void 0:G.state)==="pending_approval"}).length,[e]),L=k.useCallback(D=>{n(G=>{const F=G.map(J=>J.id===D.id?{...J,...D}:J);return A(F),F})},[A]),U=[{key:"all",label:"All"},{key:"active",label:"Active"},{key:"paused",label:"Paused"},{key:"completed",label:"Completed"},{key:"cancelled",label:"Cancelled"}],R={missionsById:P,cascadeById:r,teamNames:I,onDecided:L,navigate:t};return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"missions-page",children:[i.jsxs("div",{className:"mb-6",children:[i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Missions"}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(ze,{variant:"primary",size:"sm",icon:vr,onClick:()=>T(!0),"data-testid":"missions-new",children:"New Mission"}),i.jsxs("button",{onClick:M,disabled:d,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"missions-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${d?"animate-spin":""}`}),"Refresh"]})]})]}),i.jsxs("p",{className:"text-sm text-text-secondary-dark",children:["Strategic missions driving autonomous team performance — company → team → project OKR cascade.",$>0&&i.jsxs("span",{className:"ml-2 text-yellow-400","data-testid":"missions-pending-hint",children:[$," proposal",$===1?"":"s"," awaiting your approval."]})]})]}),i.jsx(ld,{tabs:U.map(D=>({value:D.key,label:D.label,count:H[D.key]})),activeTab:p,onTabChange:D=>x(D),searchPlaceholder:"Search by mission, team, strategy, period...",searchValue:C,onSearchChange:E,searchDebounceMs:0}),i.jsxs("div",{className:"flex flex-col gap-2 mb-4","data-testid":"missions-secondary-filters",children:[i.jsx(yb,{label:"Priority",options:fAe,value:y,onChange:m,testIdPrefix:"priority-filter"}),i.jsx(yb,{label:"Period",options:pAe,value:g,onChange:v,testIdPrefix:"period-filter"}),B.length>1&&i.jsx(yb,{label:"Team",options:B,value:b,onChange:S,testIdPrefix:"team-filter"})]}),d&&i.jsx("div",{"data-testid":"missions-loading",children:i.jsx(LS,{count:3})}),h&&!d&&i.jsxs(Bt,{variant:"error",title:"Failed to load missions",onClose:()=>f(null),"data-testid":"missions-error",children:[h,i.jsx(ze,{variant:"ghost",size:"sm",onClick:M,className:"mt-2",children:"Retry"})]}),!d&&!h&&V.length===0&&i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"missions-empty",children:[i.jsx(Mu,{className:"h-10 w-10 opacity-40"}),i.jsx("span",{className:"text-sm",children:e.length===0?"No missions created yet.":"No missions match the current filters."})]}),!d&&!h&&V.length>0&&i.jsx("div",{className:"flex flex-col gap-2","data-testid":"missions-list",children:K.map(D=>i.jsx(q9,{node:D,depth:0,ctx:R},D.mission.id))}),i.jsx(_Ae,{isOpen:N,onClose:()=>T(!1),onCreated:()=>{T(!1),M()},parentOptions:e.map(D=>({id:D.id,objective:D.objective,level:jM(D,P)})),teams:a,projects:l})]})};X9.displayName="Missions";const Fv="0 9 * * 1",_Ae=({isOpen:t,onClose:e,onCreated:n,parentOptions:r,teams:s,projects:a})=>{const[o,l]=k.useState(""),[c,d]=k.useState(""),[u,h]=k.useState(Fv),[f,p]=k.useState(""),[x,y]=k.useState("medium"),[m,g]=k.useState("company"),[v,b]=k.useState(""),[S,C]=k.useState(""),[E,N]=k.useState(!1),[T,A]=k.useState(""),M=IQ[m],P=k.useMemo(()=>M?r.filter(K=>K.level===M):[],[r,M]),I=()=>{l(""),d(""),h(Fv),p(""),y("medium"),g("company"),b(""),C("")},B=K=>{g(K),b(""),K!=="project"&&C("")},V=async()=>{if(A(""),!o.trim()){A("Objective is required");return}if(!c.trim()){A("Team ID is required");return}if(M&&!v){A(`A ${Xd[m].toLowerCase()} mission requires a ${Xd[M].toLowerCase()} parent`);return}if(m==="project"&&!S){A("A project-level mission requires a project");return}try{N(!0),await ft.createMission({objective:o.trim(),ownerTeamId:c.trim(),cadence:u.trim()||Fv,successCriteria:f.trim()?f.split(`
|
|
4946
|
+
`))}function c(p,x,y,m){const g=y.enter("tableCell"),v=y.enter("phrasing"),b=y.containerPhrasing(p,{...m,before:a,after:a});return v(),g(),b}function d(p,x){return k1e(p,{align:x,alignDelimiters:r,padding:n,stringLength:s})}function u(p,x,y){const m=p.children;let g=-1;const v=[],b=x.enter("table");for(;++g<m.length;)v[g]=h(m[g],x,y);return b(),v}function h(p,x,y){const m=p.children;let g=-1;const v=[],b=x.enter("tableRow");for(;++g<m.length;)v[g]=c(m[g],p,x,y);return b(),v}function f(p,x,y){let m=t9.inlineCode(p,x,y);return y.stack.includes("tableCell")&&(m=m.replace(/\|/g,"\\$&")),m}}function uSe(){return{exit:{taskListCheckValueChecked:AB,taskListCheckValueUnchecked:AB,paragraph:fSe}}}function hSe(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:pSe}}}function AB(t){const e=this.stack[this.stack.length-2];e.type,e.checked=t.type==="taskListCheckValueChecked"}function fSe(t){const e=this.stack[this.stack.length-2];if(e&&e.type==="listItem"&&typeof e.checked=="boolean"){const n=this.stack[this.stack.length-1];n.type;const r=n.children[0];if(r&&r.type==="text"){const s=e.children;let a=-1,o;for(;++a<s.length;){const l=s[a];if(l.type==="paragraph"){o=l;break}}o===n&&(r.value=r.value.slice(1),r.value.length===0?n.children.shift():n.position&&r.position&&typeof r.position.start.offset=="number"&&(r.position.start.column++,r.position.start.offset++,n.position.start=Object.assign({},r.position.start)))}}this.exit(t)}function pSe(t,e,n,r){const s=t.children[0],a=typeof t.checked=="boolean"&&s&&s.type==="paragraph",o="["+(t.checked?"x":" ")+"] ",l=n.createTracker(r);a&&l.move(o);let c=t9.listItem(t,e,n,{...r,...l.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,d)),c;function d(u){return u+o}}function mSe(){return[K_e(),p1e(),y1e(),sSe(),uSe()]}function gSe(t){return{extensions:[q_e(),m1e(t),v1e(),dSe(t),hSe()]}}const xSe={tokenize:wSe,partial:!0},n9={tokenize:kSe,partial:!0},r9={tokenize:CSe,partial:!0},s9={tokenize:ESe,partial:!0},ySe={tokenize:ASe,partial:!0},i9={name:"wwwAutolink",tokenize:_Se,previous:o9},a9={name:"protocolAutolink",tokenize:SSe,previous:l9},Vl={name:"emailAutolink",tokenize:bSe,previous:c9},nl={};function vSe(){return{text:nl}}let $d=48;for(;$d<123;)nl[$d]=Vl,$d++,$d===58?$d=65:$d===91&&($d=97);nl[43]=Vl;nl[45]=Vl;nl[46]=Vl;nl[95]=Vl;nl[72]=[Vl,a9];nl[104]=[Vl,a9];nl[87]=[Vl,i9];nl[119]=[Vl,i9];function bSe(t,e,n){const r=this;let s,a;return o;function o(h){return!zT(h)||!c9.call(r,r.previous)||pj(r.events)?n(h):(t.enter("literalAutolink"),t.enter("literalAutolinkEmail"),l(h))}function l(h){return zT(h)?(t.consume(h),l):h===64?(t.consume(h),c):n(h)}function c(h){return h===46?t.check(ySe,u,d)(h):h===45||h===95||Ys(h)?(a=!0,t.consume(h),c):u(h)}function d(h){return t.consume(h),s=!0,c}function u(h){return a&&s&&xi(r.previous)?(t.exit("literalAutolinkEmail"),t.exit("literalAutolink"),e(h)):n(h)}}function _Se(t,e,n){const r=this;return s;function s(o){return o!==87&&o!==119||!o9.call(r,r.previous)||pj(r.events)?n(o):(t.enter("literalAutolink"),t.enter("literalAutolinkWww"),t.check(xSe,t.attempt(n9,t.attempt(r9,a),n),n)(o))}function a(o){return t.exit("literalAutolinkWww"),t.exit("literalAutolink"),e(o)}}function SSe(t,e,n){const r=this;let s="",a=!1;return o;function o(h){return(h===72||h===104)&&l9.call(r,r.previous)&&!pj(r.events)?(t.enter("literalAutolink"),t.enter("literalAutolinkHttp"),s+=String.fromCodePoint(h),t.consume(h),l):n(h)}function l(h){if(xi(h)&&s.length<5)return s+=String.fromCodePoint(h),t.consume(h),l;if(h===58){const f=s.toLowerCase();if(f==="http"||f==="https")return t.consume(h),c}return n(h)}function c(h){return h===47?(t.consume(h),a?d:(a=!0,c)):n(h)}function d(h){return h===null||Z_(h)||ir(h)||Uu(h)||NS(h)?n(h):t.attempt(n9,t.attempt(r9,u),n)(h)}function u(h){return t.exit("literalAutolinkHttp"),t.exit("literalAutolink"),e(h)}}function wSe(t,e,n){let r=0;return s;function s(o){return(o===87||o===119)&&r<3?(r++,t.consume(o),s):o===46&&r===3?(t.consume(o),a):n(o)}function a(o){return o===null?n(o):e(o)}}function kSe(t,e,n){let r,s,a;return o;function o(d){return d===46||d===95?t.check(s9,c,l)(d):d===null||ir(d)||Uu(d)||d!==45&&NS(d)?c(d):(a=!0,t.consume(d),o)}function l(d){return d===95?r=!0:(s=r,r=void 0),t.consume(d),o}function c(d){return s||r||!a?n(d):e(d)}}function CSe(t,e){let n=0,r=0;return s;function s(o){return o===40?(n++,t.consume(o),s):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?t.check(s9,e,a)(o):o===null||ir(o)||Uu(o)?e(o):(t.consume(o),s)}function a(o){return o===41&&r++,t.consume(o),s}}function ESe(t,e,n){return r;function r(l){return l===33||l===34||l===39||l===41||l===42||l===44||l===46||l===58||l===59||l===63||l===95||l===126?(t.consume(l),r):l===38?(t.consume(l),a):l===93?(t.consume(l),s):l===60||l===null||ir(l)||Uu(l)?e(l):n(l)}function s(l){return l===null||l===40||l===91||ir(l)||Uu(l)?e(l):r(l)}function a(l){return xi(l)?o(l):n(l)}function o(l){return l===59?(t.consume(l),r):xi(l)?(t.consume(l),o):n(l)}}function ASe(t,e,n){return r;function r(a){return t.consume(a),s}function s(a){return Ys(a)?n(a):e(a)}}function o9(t){return t===null||t===40||t===42||t===95||t===91||t===93||t===126||ir(t)}function l9(t){return!xi(t)}function c9(t){return!(t===47||zT(t))}function zT(t){return t===43||t===45||t===46||t===95||Ys(t)}function pj(t){let e=t.length,n=!1;for(;e--;){const r=t[e][1];if((r.type==="labelLink"||r.type==="labelImage")&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return t.length>0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const TSe={tokenize:DSe,partial:!0};function MSe(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:ISe,continuation:{tokenize:PSe},exit:LSe}},text:{91:{name:"gfmFootnoteCall",tokenize:RSe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:NSe,resolveTo:jSe}}}}function NSe(t,e,n){const r=this;let s=r.events.length;const a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let o;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){o=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!o||!o._balanced)return n(c);const d=po(r.sliceSerialize({start:o.end,end:r.now()}));return d.codePointAt(0)!==94||!a.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function jSe(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",a,e],["enter",o,e],["exit",o,e],["exit",a,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function RSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a=0,o;return l;function l(h){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(h),t.exit("gfmFootnoteCallLabelMarker"),c}function c(h){return h!==94?n(h):(t.enter("gfmFootnoteCallMarker"),t.consume(h),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(h){if(a>999||h===93&&!o||h===null||h===91||ir(h))return n(h);if(h===93){t.exit("chunkString");const f=t.exit("gfmFootnoteCallString");return s.includes(po(r.sliceSerialize(f)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(h),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(h)}return ir(h)||(o=!0),a++,t.consume(h),h===92?u:d}function u(h){return h===91||h===92||h===93?(t.consume(h),a++,d):d(h)}}function ISe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a,o=0,l;return c;function c(x){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(x),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(x){return x===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(x),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",u):n(x)}function u(x){if(o>999||x===93&&!l||x===null||x===91||ir(x))return n(x);if(x===93){t.exit("chunkString");const y=t.exit("gfmFootnoteDefinitionLabelString");return a=po(r.sliceSerialize(y)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(x),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),f}return ir(x)||(l=!0),o++,t.consume(x),x===92?h:u}function h(x){return x===91||x===92||x===93?(t.consume(x),o++,u):u(x)}function f(x){return x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),s.includes(a)||s.push(a),Ln(t,p,"gfmFootnoteDefinitionWhitespace")):n(x)}function p(x){return e(x)}}function PSe(t,e,n){return t.check(Jx,e,t.attempt(TSe,e,n))}function LSe(t){t.exit("gfmFootnoteDefinition")}function DSe(t,e,n){const r=this;return Ln(t,s,"gfmFootnoteDefinitionIndent",4+1);function s(a){const o=r.events[r.events.length-1];return o&&o[1].type==="gfmFootnoteDefinitionIndent"&&o[2].sliceSerialize(o[1],!0).length===4?e(a):n(a)}}function OSe(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:a,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(o,l){let c=-1;for(;++c<o.length;)if(o[c][0]==="enter"&&o[c][1].type==="strikethroughSequenceTemporary"&&o[c][1]._close){let d=c;for(;d--;)if(o[d][0]==="exit"&&o[d][1].type==="strikethroughSequenceTemporary"&&o[d][1]._open&&o[c][1].end.offset-o[c][1].start.offset===o[d][1].end.offset-o[d][1].start.offset){o[c][1].type="strikethroughSequence",o[d][1].type="strikethroughSequence";const u={type:"strikethrough",start:Object.assign({},o[d][1].start),end:Object.assign({},o[c][1].end)},h={type:"strikethroughText",start:Object.assign({},o[d][1].end),end:Object.assign({},o[c][1].start)},f=[["enter",u,l],["enter",o[d][1],l],["exit",o[d][1],l],["enter",h,l]],p=l.parser.constructs.insideSpan.null;p&&ua(f,f.length,0,jS(p,o.slice(d+1,c),l)),ua(f,f.length,0,[["exit",h,l],["enter",o[c][1],l],["exit",o[c][1],l],["exit",u,l]]),ua(o,d-1,c-d+3,f),c=d+f.length-2;break}}for(c=-1;++c<o.length;)o[c][1].type==="strikethroughSequenceTemporary"&&(o[c][1].type="data");return o}function a(o,l,c){const d=this.previous,u=this.events;let h=0;return f;function f(x){return d===126&&u[u.length-1][1].type!=="characterEscape"?c(x):(o.enter("strikethroughSequenceTemporary"),p(x))}function p(x){const y=ap(d);if(x===126)return h>1?c(x):(o.consume(x),h++,p);if(h<2&&!n)return c(x);const m=o.exit("strikethroughSequenceTemporary"),g=ap(x);return m._open=!g||g===2&&!!y,m._close=!y||y===2&&!!g,l(x)}}}class BSe{constructor(){this.map=[]}add(e,n,r){FSe(this,e,n,r)}consume(e){if(this.map.sort(function(a,o){return a[0]-o[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const a of s)e.push(a);s=r.pop()}this.map.length=0}}function FSe(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s<t.map.length;){if(t.map[s][0]===e){t.map[s][1]+=n,t.map[s][2].push(...r);return}s+=1}t.map.push([e,n,r])}}function USe(t,e){let n=!1;const r=[];for(;e<t.length;){const s=t[e];if(n){if(s[0]==="enter")s[1].type==="tableContent"&&r.push(t[e+1][1].type==="tableDelimiterMarker"?"left":"none");else if(s[1].type==="tableContent"){if(t[e-1][1].type==="tableDelimiterMarker"){const a=r.length-1;r[a]=r[a]==="left"?"center":"right"}}else if(s[1].type==="tableDelimiterRow")break}else s[0]==="enter"&&s[1].type==="tableDelimiterRow"&&(n=!0);e+=1}return r}function zSe(){return{flow:{null:{name:"table",tokenize:HSe,resolveAll:GSe}}}}function HSe(t,e,n){const r=this;let s=0,a=0,o;return l;function l(M){let P=r.events.length-1;for(;P>-1;){const V=r.events[P][1].type;if(V==="lineEnding"||V==="linePrefix")P--;else break}const I=P>-1?r.events[P][1].type:null,B=I==="tableHead"||I==="tableRow"?E:c;return B===E&&r.parser.lazy[r.now().line]?n(M):B(M)}function c(M){return t.enter("tableHead"),t.enter("tableRow"),d(M)}function d(M){return M===124||(o=!0,a+=1),u(M)}function u(M){return M===null?n(M):Kt(M)?a>1?(a=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(M),t.exit("lineEnding"),p):n(M):Cn(M)?Ln(t,u,"whitespace")(M):(a+=1,o&&(o=!1,s+=1),M===124?(t.enter("tableCellDivider"),t.consume(M),t.exit("tableCellDivider"),o=!0,u):(t.enter("data"),h(M)))}function h(M){return M===null||M===124||ir(M)?(t.exit("data"),u(M)):(t.consume(M),M===92?f:h)}function f(M){return M===92||M===124?(t.consume(M),h):h(M)}function p(M){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(M):(t.enter("tableDelimiterRow"),o=!1,Cn(M)?Ln(t,x,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(M):x(M))}function x(M){return M===45||M===58?m(M):M===124?(o=!0,t.enter("tableCellDivider"),t.consume(M),t.exit("tableCellDivider"),y):C(M)}function y(M){return Cn(M)?Ln(t,m,"whitespace")(M):m(M)}function m(M){return M===58?(a+=1,o=!0,t.enter("tableDelimiterMarker"),t.consume(M),t.exit("tableDelimiterMarker"),g):M===45?(a+=1,g(M)):M===null||Kt(M)?S(M):C(M)}function g(M){return M===45?(t.enter("tableDelimiterFiller"),v(M)):C(M)}function v(M){return M===45?(t.consume(M),v):M===58?(o=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(M),t.exit("tableDelimiterMarker"),b):(t.exit("tableDelimiterFiller"),b(M))}function b(M){return Cn(M)?Ln(t,S,"whitespace")(M):S(M)}function S(M){return M===124?x(M):M===null||Kt(M)?!o||s!==a?C(M):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(M)):C(M)}function C(M){return n(M)}function E(M){return t.enter("tableRow"),N(M)}function N(M){return M===124?(t.enter("tableCellDivider"),t.consume(M),t.exit("tableCellDivider"),N):M===null||Kt(M)?(t.exit("tableRow"),e(M)):Cn(M)?Ln(t,N,"whitespace")(M):(t.enter("data"),T(M))}function T(M){return M===null||M===124||ir(M)?(t.exit("data"),N(M)):(t.consume(M),M===92?A:T)}function A(M){return M===92||M===124?(t.consume(M),T):T(M)}}function GSe(t,e){let n=-1,r=!0,s=0,a=[0,0,0,0],o=[0,0,0,0],l=!1,c=0,d,u,h;const f=new BSe;for(;++n<t.length;){const p=t[n],x=p[1];p[0]==="enter"?x.type==="tableHead"?(l=!1,c!==0&&(TB(f,e,c,d,u),u=void 0,c=0),d={type:"table",start:Object.assign({},x.start),end:Object.assign({},x.end)},f.add(n,0,[["enter",d,e]])):x.type==="tableRow"||x.type==="tableDelimiterRow"?(r=!0,h=void 0,a=[0,0,0,0],o=[0,n+1,0,0],l&&(l=!1,u={type:"tableBody",start:Object.assign({},x.start),end:Object.assign({},x.end)},f.add(n,0,[["enter",u,e]])),s=x.type==="tableDelimiterRow"?2:u?3:1):s&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],h=Mv(f,e,a,s,void 0,h),a=[0,0,0,0]),o[2]=n)):x.type==="tableCellDivider"&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],h=Mv(f,e,a,s,void 0,h)),a=o,o=[a[1],n,0,0])):x.type==="tableHead"?(l=!0,c=n):x.type==="tableRow"||x.type==="tableDelimiterRow"?(c=n,a[1]!==0?(o[0]=o[1],h=Mv(f,e,a,s,n,h)):o[1]!==0&&(h=Mv(f,e,o,s,n,h)),s=0):s&&(x.type==="data"||x.type==="tableDelimiterMarker"||x.type==="tableDelimiterFiller")&&(o[3]=n)}for(c!==0&&TB(f,e,c,d,u),f.consume(e.events),n=-1;++n<e.events.length;){const p=e.events[n];p[0]==="enter"&&p[1].type==="table"&&(p[1]._align=USe(e.events,n))}return t}function Mv(t,e,n,r,s,a){const o=r===1?"tableHeader":r===2?"tableDelimiter":"tableData",l="tableContent";n[0]!==0&&(a.end=Object.assign({},ef(e.events,n[0])),t.add(n[0],0,[["exit",a,e]]));const c=ef(e.events,n[1]);if(a={type:o,start:Object.assign({},c),end:Object.assign({},c)},t.add(n[1],0,[["enter",a,e]]),n[2]!==0){const d=ef(e.events,n[2]),u=ef(e.events,n[3]),h={type:l,start:Object.assign({},d),end:Object.assign({},u)};if(t.add(n[2],0,[["enter",h,e]]),r!==2){const f=e.events[n[2]],p=e.events[n[3]];if(f[1].end=Object.assign({},p[1].end),f[1].type="chunkText",f[1].contentType="text",n[3]>n[2]+1){const x=n[2]+1,y=n[3]-n[2]-1;t.add(x,y,[])}}t.add(n[3]+1,0,[["exit",h,e]])}return s!==void 0&&(a.end=Object.assign({},ef(e.events,s)),t.add(s,0,[["exit",a,e]]),a=void 0),a}function TB(t,e,n,r,s){const a=[],o=ef(e.events,n);s&&(s.end=Object.assign({},o),a.push(["exit",s,e])),r.end=Object.assign({},o),a.push(["exit",r,e]),t.add(n+1,0,a)}function ef(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const WSe={name:"tasklistCheck",tokenize:$Se};function VSe(){return{text:{91:WSe}}}function $Se(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),a)}function a(c){return ir(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),o):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),o):n(c)}function o(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return Kt(c)?e(c):Cn(c)?t.check({tokenize:KSe},e,n)(c):n(c)}}function KSe(t,e,n){return Ln(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function qSe(t){return yG([vSe(),MSe(),OSe(t),zSe(),VSe()])}const XSe={};function YSe(t){const e=this,n=t||XSe,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),a=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),o=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(qSe(n)),a.push(mSe()),o.push(gSe(n))}const MB=function(t,e,n){const r=Zx(n);if(!t||!t.type||!t.children)throw new Error("Expected parent node");if(typeof e=="number"){if(e<0||e===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if(e=t.children.indexOf(e),e<0)throw new Error("Expected child node or index");for(;++e<t.children.length;)if(r(t.children[e],e,t))return t.children[e]},eh=function(t){if(t==null)return QSe;if(typeof t=="string")return ZSe(t);if(typeof t=="object")return JSe(t);if(typeof t=="function")return mj(t);throw new Error("Expected function, string, or array as `test`")};function JSe(t){const e=[];let n=-1;for(;++n<t.length;)e[n]=eh(t[n]);return mj(r);function r(...s){let a=-1;for(;++a<e.length;)if(e[a].apply(this,s))return!0;return!1}}function ZSe(t){return mj(e);function e(n){return n.tagName===t}}function mj(t){return e;function e(n,r,s){return!!(ewe(n)&&t.call(this,n,typeof r=="number"?r:void 0,s||void 0))}}function QSe(t){return!!(t&&typeof t=="object"&&"type"in t&&t.type==="element"&&"tagName"in t&&typeof t.tagName=="string")}function ewe(t){return t!==null&&typeof t=="object"&&"type"in t&&"tagName"in t}const NB=/\n/g,jB=/[\t ]+/g,HT=eh("br"),RB=eh(lwe),twe=eh("p"),IB=eh("tr"),nwe=eh(["datalist","head","noembed","noframes","noscript","rp","script","style","template","title",owe,cwe]),d9=eh(["address","article","aside","blockquote","body","caption","center","dd","dialog","dir","dl","dt","div","figure","figcaption","footer","form,","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","legend","li","listing","main","menu","nav","ol","p","plaintext","pre","section","ul","xmp"]);function rwe(t,e){const n=e||{},r="children"in t?t.children:[],s=d9(t),a=f9(t,{whitespace:n.whitespace||"normal",breakBefore:!1,breakAfter:!1}),o=[];(t.type==="text"||t.type==="comment")&&o.push(...h9(t,{whitespace:a,breakBefore:!0,breakAfter:!0}));let l=-1;for(;++l<r.length;)o.push(...u9(r[l],t,{whitespace:a,breakBefore:l?void 0:s,breakAfter:l<r.length-1?HT(r[l+1]):s}));const c=[];let d;for(l=-1;++l<o.length;){const u=o[l];typeof u=="number"?d!==void 0&&u>d&&(d=u):u&&(d!==void 0&&d>-1&&c.push(`
|
|
4947
|
+
`.repeat(d)||" "),d=-1,c.push(u))}return c.join("")}function u9(t,e,n){return t.type==="element"?swe(t,e,n):t.type==="text"?n.whitespace==="normal"?h9(t,n):iwe(t):[]}function swe(t,e,n){const r=f9(t,n),s=t.children||[];let a=-1,o=[];if(nwe(t))return o;let l,c;for(HT(t)||IB(t)&&MB(e,t,IB)?c=`
|
|
4948
|
+
`:twe(t)?(l=2,c=2):d9(t)&&(l=1,c=1);++a<s.length;)o=o.concat(u9(s[a],t,{whitespace:r,breakBefore:a?void 0:l,breakAfter:a<s.length-1?HT(s[a+1]):c}));return RB(t)&&MB(e,t,RB)&&o.push(" "),l&&o.unshift(l),c&&o.push(c),o}function h9(t,e){const n=String(t.value),r=[],s=[];let a=0;for(;a<=n.length;){NB.lastIndex=a;const c=NB.exec(n),d=c&&"index"in c?c.index:n.length;r.push(awe(n.slice(a,d).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,""),a===0?e.breakBefore:!0,d===n.length?e.breakAfter:!0)),a=d+1}let o=-1,l;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(s.push(r[o]),l=void 0):r[o]?(typeof l=="number"&&s.push(l),s.push(r[o]),l=0):(o===0||o===r.length-1)&&s.push(0);return s}function iwe(t){return[String(t.value)]}function awe(t,e,n){const r=[];let s=0,a;for(;s<t.length;){jB.lastIndex=s;const o=jB.exec(t);a=o?o.index:t.length,!s&&!a&&o&&!e&&r.push(""),s!==a&&r.push(t.slice(s,a)),s=o?a+o[0].length:a}return s!==a&&!n&&r.push(""),r.join(" ")}function f9(t,e){if(t.type==="element"){const n=t.properties||{};switch(t.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return n.wrap?"pre-wrap":"pre";case"td":case"th":return n.noWrap?"nowrap":e.whitespace;case"textarea":return"pre-wrap"}}return e.whitespace}function owe(t){return!!(t.properties||{}).hidden}function lwe(t){return t.tagName==="td"||t.tagName==="th"}function cwe(t){return t.tagName==="dialog"&&!(t.properties||{}).open}function dwe(t){const e=t.regex,n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",a="<[^<>]+>",o="(?!struct)("+r+"|"+e.optional(s)+"[a-zA-Z_]\\w*"+e.optional(a)+")",l={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},c="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+c+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},h={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:e.optional(s)+t.IDENT_RE,relevance:0},p=e.optional(s)+t.IDENT_RE+"\\s*\\(",x=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],m=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],g=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],S={type:y,keyword:x,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:m},C={className:"function.dispatch",relevance:0,keywords:{_hint:g},begin:e.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,t.IDENT_RE,e.lookahead(/(<[^<>]+>|)\s*\(/))},E=[C,h,l,n,t.C_BLOCK_COMMENT_MODE,u,d],N={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:E.concat([{begin:/\(/,end:/\)/,keywords:S,contains:E.concat(["self"]),relevance:0}]),relevance:0},T={className:"function",begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:S,relevance:0},{begin:p,returnBegin:!0,contains:[f],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,u]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,d,u,l,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,t.C_BLOCK_COMMENT_MODE,d,u,l]}]},l,n,t.C_BLOCK_COMMENT_MODE,h]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:S,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(N,T,C,E,[h,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:S,contains:["self",l]},{begin:t.IDENT_RE+"::",keywords:S},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function uwe(t){const e={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},n=dwe(t),r=n.keywords;return r.type=[...r.type,...e.type],r.literal=[...r.literal,...e.literal],r.built_in=[...r.built_in,...e.built_in],r._hints=e._hints,n.name="Arduino",n.aliases=["ino"],n.supersetOf="cpp",n}function hwe(t){const e=t.regex,n={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:e.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},r]});const s={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},a=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},l={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,n,s]};s.contains.push(l);const c={match:/\\"/},d={className:"string",begin:/'/,end:/'/},u={match:/\\'/},h={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,n]},f=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=t.SHEBANG({binary:`(${f.join("|")})`,relevance:10}),x={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],m=["true","false"],g={match:/(\/[a-z._-]+)+/},v=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],b=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],S=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],C=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:m,built_in:[...v,...b,"set","shopt",...S,...C]},contains:[p,t.SHEBANG(),x,h,a,o,g,l,c,d,u,n]}}function fwe(t){const e=t.regex,n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",a="<[^<>]+>",o="("+r+"|"+e.optional(s)+"[a-zA-Z_]\\w*"+e.optional(a)+")",l={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},c="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+c+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},h={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:e.optional(s)+t.IDENT_RE,relevance:0},p=e.optional(s)+t.IDENT_RE+"\\s*\\(",m={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},g=[h,l,n,t.C_BLOCK_COMMENT_MODE,u,d],v={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:g.concat([{begin:/\(/,end:/\)/,keywords:m,contains:g.concat(["self"]),relevance:0}]),relevance:0},b={begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:m,relevance:0},{begin:p,returnBegin:!0,contains:[t.inherit(f,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,d,u,l,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",n,t.C_BLOCK_COMMENT_MODE,d,u,l]}]},l,n,t.C_BLOCK_COMMENT_MODE,h]};return{name:"C",aliases:["h"],keywords:m,disableAutodetect:!0,illegal:"</",contains:[].concat(v,b,g,[h,{begin:t.IDENT_RE+"::",keywords:m},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:h,strings:d,keywords:m}}}function pwe(t){const e=t.regex,n=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),r="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",a="<[^<>]+>",o="(?!struct)("+r+"|"+e.optional(s)+"[a-zA-Z_]\\w*"+e.optional(a)+")",l={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},c="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",d={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+c+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},u={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},h={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(d,{className:"string"}),{className:"string",begin:/<.*?>/},n,t.C_BLOCK_COMMENT_MODE]},f={className:"title",begin:e.optional(s)+t.IDENT_RE,relevance:0},p=e.optional(s)+t.IDENT_RE+"\\s*\\(",x=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],m=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],g=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],S={type:y,keyword:x,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:m},C={className:"function.dispatch",relevance:0,keywords:{_hint:g},begin:e.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,t.IDENT_RE,e.lookahead(/(<[^<>]+>|)\s*\(/))},E=[C,h,l,n,t.C_BLOCK_COMMENT_MODE,u,d],N={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:S,contains:E.concat([{begin:/\(/,end:/\)/,keywords:S,contains:E.concat(["self"]),relevance:0}]),relevance:0},T={className:"function",begin:"("+o+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:S,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:r,keywords:S,relevance:0},{begin:p,returnBegin:!0,contains:[f],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[d,u]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:[n,t.C_BLOCK_COMMENT_MODE,d,u,l,{begin:/\(/,end:/\)/,keywords:S,relevance:0,contains:["self",n,t.C_BLOCK_COMMENT_MODE,d,u,l]}]},l,n,t.C_BLOCK_COMMENT_MODE,h]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:S,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(N,T,C,E,[h,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:S,contains:["self",l]},{begin:t.IDENT_RE+"::",keywords:S},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function mwe(t){const e=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],n=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],r=["default","false","null","true"],s=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],a=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],o={keyword:s.concat(a),built_in:e,literal:r},l=t.inherit(t.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),c={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},d={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},u={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},h=t.inherit(u,{illegal:/\n/}),f={className:"subst",begin:/\{/,end:/\}/,keywords:o},p=t.inherit(f,{illegal:/\n/}),x={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},t.BACKSLASH_ESCAPE,p]},y={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},f]},m=t.inherit(y,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},p]});f.contains=[y,x,u,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,c,t.C_BLOCK_COMMENT_MODE],p.contains=[m,x,h,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,c,t.inherit(t.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const g={variants:[d,y,x,u,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},v={begin:"<",end:">",contains:[{beginKeywords:"in out"},l]},b=t.IDENT_RE+"(<"+t.IDENT_RE+"(\\s*,\\s*"+t.IDENT_RE+")*>)?(\\[\\])?",S={begin:"@"+t.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:o,illegal:/::/,contains:[t.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},g,c,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},l,v,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,v,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+b+"\\s+)+"+t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:o,contains:[{beginKeywords:n.join(" "),relevance:0},{begin:t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[t.TITLE_MODE,v],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,relevance:0,contains:[g,c,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},S]}}const gwe=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),xwe=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ywe=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],vwe=[...xwe,...ywe],bwe=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),_we=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Swe=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),wwe=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function kwe(t){const e=t.regex,n=gwe(t),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},s="and or not only",a=/@-?\w[\w]*(-\w+)*/,o="[a-zA-Z-][a-zA-Z0-9_-]*",l=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+o,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+_we.join("|")+")"},{begin:":(:)?("+Swe.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+wwe.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...l,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...l,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:a},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:s,attribute:bwe.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...l,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+vwe.join("|")+")\\b"}]}}function Cwe(t){const e=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}function Ewe(t){const a={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:a,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:a,illegal:/["']/}]}]}}function Awe(t){const e=t.regex,n=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[t.HASH_COMMENT_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:e.concat(n,e.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}function Twe(t){const e=t.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:t.NUMBER_RE}]},r=t.COMMENT();r.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const s={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},a={className:"literal",begin:/\bon|off|true|false|yes|no\b/},o={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},l={begin:/\[/,end:/\]/,contains:[r,a,s,o,n,"self"],relevance:0},c=/[A-Za-z0-9_-]+/,d=/"(\\"|[^"])*"/,u=/'[^']*'/,h=e.either(c,d,u),f=e.concat(h,"(\\s*\\.\\s*",h,")*",e.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[r,{className:"section",begin:/\[+/,end:/\]+/},{begin:f,className:"attr",starts:{end:/$/,contains:[r,l,a,s,o,n]}}]}}var tf="[0-9](_*[0-9])*",Nv=`\\.(${tf})`,jv="[0-9a-fA-F](_*[0-9a-fA-F])*",PB={className:"number",variants:[{begin:`(\\b(${tf})((${Nv})|\\.)?|(${Nv}))[eE][+-]?(${tf})[fFdD]?\\b`},{begin:`\\b(${tf})((${Nv})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Nv})[fFdD]?\\b`},{begin:`\\b(${tf})[fFdD]\\b`},{begin:`\\b0[xX]((${jv})\\.?|(${jv})?\\.(${jv}))[pP][+-]?(${tf})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${jv})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function p9(t,e,n){return n===-1?"":t.replace(e,r=>p9(t,e,n-1))}function Mwe(t){const e=t.regex,n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=n+p9("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),c={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},u={className:"params",begin:/\(/,end:/\)/,keywords:c,relevance:0,contains:[t.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:c,illegal:/<\/|#/,contains:[t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[t.BACKSLASH_ESCAPE]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[e.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[u,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+r+"\\s+)",t.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:c,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:c,relevance:0,contains:[d,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,PB,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},PB,d]}}const LB="[A-Za-z$_][0-9A-Za-z$_]*",Nwe=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],jwe=["true","false","null","undefined","NaN","Infinity"],m9=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],g9=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],x9=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Rwe=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Iwe=[].concat(x9,m9,g9);function Pwe(t){const e=t.regex,n=(L,{after:U})=>{const R="</"+L[0].slice(1);return L.input.indexOf(R,U)!==-1},r=LB,s={begin:"<>",end:"</>"},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(L,U)=>{const R=L[0].length+L.index,D=L.input[R];if(D==="<"||D===","){U.ignoreMatch();return}D===">"&&(n(L,{after:R})||U.ignoreMatch());let G;const F=L.input.substring(R);if(G=F.match(/^\s*=/)){U.ignoreMatch();return}if((G=F.match(/^\s+extends\s+/))&&G.index===0){U.ignoreMatch();return}}},l={$pattern:LB,keyword:Nwe,literal:jwe,built_in:Iwe,"variable.language":Rwe},c="[0-9](_?[0-9])*",d=`\\.(${c})`,u="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",h={className:"number",variants:[{begin:`(\\b(${u})((${d})|\\.)?|(${d}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},f={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,f]},v={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},b=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,{match:/\$\d+/},h];f.contains=b.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(b)});const S=[].concat(v,f.contains),C=S.concat([{begin:/(\s*)\(/,end:/\)/,keywords:l,contains:["self"].concat(S)}]),E={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C},N={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,e.concat(r,"(",e.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...m9,...g9]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[E],illegal:/%/},P={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function I(L){return e.concat("(?!",L.join("|"),")")}const B={match:e.concat(/\b/,I([...x9,"super","import"].map(L=>`${L}\\s*\\(`)),r,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},V={begin:e.concat(/\./,e.lookahead(e.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},K={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},E]},H="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",$={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(H)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[E]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,v,{match:/\$\d+/},h,T,{scope:"attr",match:r+e.lookahead(":"),relevance:0},$,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,t.REGEXP_MODE,{className:"function",begin:H,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[E,t.inherit(t.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},V,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[E]},B,P,N,K,{match:/\$[(.]/}]}}function Lwe(t){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},r=["true","false","null"],s={scope:"literal",beginKeywords:r.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:r},contains:[e,n,t.QUOTE_STRING_MODE,s,t.C_NUMBER_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var nf="[0-9](_*[0-9])*",Rv=`\\.(${nf})`,Iv="[0-9a-fA-F](_*[0-9a-fA-F])*",Dwe={className:"number",variants:[{begin:`(\\b(${nf})((${Rv})|\\.)?|(${Rv}))[eE][+-]?(${nf})[fFdD]?\\b`},{begin:`\\b(${nf})((${Rv})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Rv})[fFdD]?\\b`},{begin:`\\b(${nf})[fFdD]\\b`},{begin:`\\b0[xX]((${Iv})\\.?|(${Iv})?\\.(${Iv}))[pP][+-]?(${nf})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Iv})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Owe(t){const e={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},r={className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"@"},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[t.C_NUMBER_MODE]},a={className:"variable",begin:"\\$"+t.UNDERSCORE_IDENT_RE},o={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[a,s]},{begin:"'",end:"'",illegal:/\n/,contains:[t.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[t.BACKSLASH_ESCAPE,a,s]}]};s.contains.push(o);const l={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+t.UNDERSCORE_IDENT_RE+")?"},c={className:"meta",begin:"@"+t.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[t.inherit(o,{className:"string"}),"self"]}]},d=Dwe,u=t.COMMENT("/\\*","\\*/",{contains:[t.C_BLOCK_COMMENT_MODE]}),h={variants:[{className:"type",begin:t.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},f=h;return f.variants[1].contains=[h],h.variants[1].contains=[f],{name:"Kotlin",aliases:["kt","kts"],keywords:e,contains:[t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),t.C_LINE_COMMENT_MODE,u,n,r,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:e,relevance:5,contains:[{begin:t.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[t.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:e,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[h,t.C_LINE_COMMENT_MODE,u],relevance:0},t.C_LINE_COMMENT_MODE,u,l,c,o,t.C_NUMBER_MODE]},u]},{begin:[/class|interface|trait/,/\s+/,t.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},t.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},l,c]},o,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4949
|
+
`},d]}}const Bwe=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Fwe=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Uwe=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],zwe=[...Fwe,...Uwe],Hwe=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),y9=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),v9=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Gwe=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),Wwe=y9.concat(v9).sort().reverse();function Vwe(t){const e=Bwe(t),n=Wwe,r="and or not only",s="[\\w-]+",a="("+s+"|@\\{"+s+"\\})",o=[],l=[],c=function(b){return{className:"string",begin:"~?"+b+".*?"+b}},d=function(b,S,C){return{className:b,begin:S,relevance:C}},u={$pattern:/[a-z-]+/,keyword:r,attribute:Hwe.join(" ")},h={begin:"\\(",end:"\\)",contains:l,keywords:u,relevance:0};l.push(t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,c("'"),c('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},e.HEXCOLOR,h,d("variable","@@?"+s,10),d("variable","@\\{"+s+"\\}"),d("built_in","~?`[^`]*?`"),{className:"attribute",begin:s+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},e.IMPORTANT,{beginKeywords:"and not"},e.FUNCTION_DISPATCH);const f=l.concat({begin:/\{/,end:/\}/,contains:o}),p={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(l)},x={begin:a+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},e.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Gwe.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:l}}]},y={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:u,returnEnd:!0,contains:l,relevance:0}},m={className:"variable",variants:[{begin:"@"+s+"\\s*:",relevance:15},{begin:"@"+s}],starts:{end:"[;}]",returnEnd:!0,contains:f}},g={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,p,d("keyword","all\\b"),d("variable","@\\{"+s+"\\}"),{begin:"\\b("+zwe.join("|")+")\\b",className:"selector-tag"},e.CSS_NUMBER_MODE,d("selector-tag",a,0),d("selector-id","#"+a),d("selector-class","\\."+a,0),d("selector-tag","&",0),e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+y9.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+v9.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:f},{begin:"!important"},e.FUNCTION_DISPATCH]},v={begin:s+`:(:)?(${n.join("|")})`,returnBegin:!0,contains:[g]};return o.push(t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,y,m,v,x,g,p,e.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:o}}function $we(t){const e="\\[=*\\[",n="\\]=*\\]",r={begin:e,end:n,contains:["self"]},s=[t.COMMENT("--(?!"+e+")","$"),t.COMMENT("--"+e,n,{contains:[r],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:t.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:s.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[t.inherit(t.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:s}].concat(s)},t.C_NUMBER_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"string",begin:e,end:n,contains:[r],relevance:5}])}}function Kwe(t){const e={className:"variable",variants:[{begin:"\\$\\("+t.UNDERSCORE_IDENT_RE+"\\)",contains:[t.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},n={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,e]},r={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[e,n]},s={begin:"^"+t.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},a={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},o={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[e]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[t.HASH_COMMENT_MODE,e,n,r,s,a,o]}}function qwe(t){const e=t.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},r={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},a={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},o={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},l=/[A-Za-z][A-Za-z0-9+.-]*/,c={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,l,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},u={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},h=t.inherit(d,{contains:[]}),f=t.inherit(u,{contains:[]});d.contains.push(f),u.contains.push(h);let p=[n,c];return[d,u,h,f].forEach(g=>{g.contains=g.contains.concat(p)}),p=p.concat(d,u),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:p},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:p}]}]},n,a,d,u,{className:"quote",begin:"^>\\s+",contains:p,end:"$"},s,r,c,o,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Xwe(t){const e={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},n=/[a-zA-Z@][a-zA-Z0-9_]*/,l={"variable.language":["this","super"],$pattern:n,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},c={$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:l,illegal:"</",contains:[e,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.C_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+c.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:c,contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"\\."+t.UNDERSCORE_IDENT_RE,relevance:0}]}}function Ywe(t){const e=t.regex,n=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],r=/[dualxmsipngr]{0,12}/,s={$pattern:/[\w.]+/,keyword:n.join(" ")},a={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:s},o={begin:/->\{/,end:/\}/},l={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},c={scope:"variable",variants:[{begin:/\$\d/},{begin:e.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[l]},d={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},u=[t.BACKSLASH_ESCAPE,a,c],h=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],f=(y,m,g="\\1")=>{const v=g==="\\1"?g:e.concat(g,m);return e.concat(e.concat("(?:",y,")"),m,/(?:\\.|[^\\\/])*?/,v,/(?:\\.|[^\\\/])*?/,g,r)},p=(y,m,g)=>e.concat(e.concat("(?:",y,")"),m,/(?:\\.|[^\\\/])*?/,g,r),x=[c,t.HASH_COMMENT_MODE,t.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),o,{className:"string",contains:u,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[t.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},d,{begin:"(\\/\\/|"+t.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[t.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:f("s|tr|y",e.either(...h,{capture:!0}))},{begin:f("s|tr|y","\\(","\\)")},{begin:f("s|tr|y","\\[","\\]")},{begin:f("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:p("(?:m|qr)?",/\//,/\//)},{begin:p("m|qr",e.either(...h,{capture:!0}),/\1/)},{begin:p("m|qr",/\(/,/\)/)},{begin:p("m|qr",/\[/,/\]/)},{begin:p("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,l]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,l,d]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return a.contains=x,o.contains=x,{name:"Perl",aliases:["pl","pm"],keywords:s,contains:x}}function Jwe(t){const e=t.regex,n=/(?![A-Za-z0-9])(?![$])/,r=e.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),s=e.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),a=e.concat(/[A-Z]+/,n),o={scope:"variable",match:"\\$+"+r},l={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},d=t.inherit(t.APOS_STRING_MODE,{illegal:null}),u=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(c)}),h={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(V,K)=>{K.data._beginMatch=V[1]||V[2]},"on:end":(V,K)=>{K.data._beginMatch!==V[1]&&K.ignoreMatch()}},f=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),p=`[
|
|
4950
|
+
]`,x={scope:"string",variants:[u,d,h,f]},y={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},m=["false","null","true"],g=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],v=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],S={keyword:g,literal:(V=>{const K=[];return V.forEach(H=>{K.push(H),H.toLowerCase()===H?K.push(H.toUpperCase()):K.push(H.toLowerCase())}),K})(m),built_in:v},C=V=>V.map(K=>K.replace(/\|\d+$/,"")),E={variants:[{match:[/new/,e.concat(p,"+"),e.concat("(?!",C(v).join("\\b|"),"\\b)"),s],scope:{1:"keyword",4:"title.class"}}]},N=e.concat(r,"\\b(?!\\()"),T={variants:[{match:[e.concat(/::/,e.lookahead(/(?!class\b)/)),N],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[s,e.concat(/::/,e.lookahead(/(?!class\b)/)),N],scope:{1:"title.class",3:"variable.constant"}},{match:[s,e.concat("::",e.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[s,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},A={scope:"attr",match:e.concat(r,e.lookahead(":"),e.lookahead(/(?!::)/))},M={relevance:0,begin:/\(/,end:/\)/,keywords:S,contains:[A,o,T,t.C_BLOCK_COMMENT_MODE,x,y,E]},P={relevance:0,match:[/\b/,e.concat("(?!fn\\b|function\\b|",C(g).join("\\b|"),"|",C(v).join("\\b|"),"\\b)"),r,e.concat(p,"*"),e.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[M]};M.contains.push(P);const I=[A,T,t.C_BLOCK_COMMENT_MODE,x,y,E],B={begin:e.concat(/#\[\s*\\?/,e.either(s,a)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:m,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:m,keyword:["new","array"]},contains:["self",...I]},...I,{scope:"meta",variants:[{match:s},{match:a}]}]};return{case_insensitive:!1,keywords:S,contains:[B,t.HASH_COMMENT_MODE,t.COMMENT("//","$"),t.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:t.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},l,{scope:"variable.language",match:/\$this\b/},o,P,T,{match:[/const/,/\s/,r],scope:{1:"keyword",3:"variable.constant"}},E,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},t.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:S,contains:["self",B,o,T,t.C_BLOCK_COMMENT_MODE,x,y]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[t.inherit(t.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},t.UNDERSCORE_TITLE_MODE]},x,y]}}function Zwe(t){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},t.inherit(t.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}function Qwe(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}function eke(t){const e=t.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,r=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:r,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},c={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},u={begin:/\{\{/,relevance:0},h={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,c,u,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,c,u,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,u,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,u,d]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},f="[0-9](_?[0-9])*",p=`(\\b(${f}))?\\.(${f})|\\b(${f})\\.`,x=`\\b|${r.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b(${f})|(${p}))[eE][+-]?(${f})[jJ]?(?=${x})`},{begin:`(${p})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${x})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${x})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${x})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${x})`},{begin:`\\b(${f})[jJ](?=${x})`}]},m={className:"comment",begin:e.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},g={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",c,y,h,t.HASH_COMMENT_MODE]}]};return d.contains=[h,y,c],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|\?)|=>/,contains:[c,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},h,m,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[g]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,g,h]}]}}function tke(t){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}function nke(t){const e=t.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,r=e.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,a=e.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:n,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[t.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:e.lookahead(e.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:n},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),t.HASH_COMMENT_MODE,{scope:"string",contains:[t.BACKSLASH_ESCAPE],variants:[t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[s,r]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,r]},{scope:{1:"punctuation",2:"number"},match:[a,r]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,r]}]},{scope:{3:"operator"},match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:a},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}function rke(t){const e=t.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=e.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),s=e.concat(r,/(::\w+)*/),o={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},l={className:"doctag",begin:"@[A-Za-z]+"},c={begin:"#<",end:">"},d=[t.COMMENT("#","$",{contains:[l]}),t.COMMENT("^=begin","^=end",{contains:[l],relevance:10}),t.COMMENT("^__END__",t.MATCH_NOTHING_RE)],u={className:"subst",begin:/#\{/,end:/\}/,keywords:o},h={className:"string",contains:[t.BACKSLASH_ESCAPE,u],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:e.concat(/<<[-~]?'?/,e.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[t.BACKSLASH_ESCAPE,u]})]}]},f="[1-9](_?[0-9])*|0",p="[0-9](_?[0-9])*",x={className:"number",relevance:0,variants:[{begin:`\\b(${f})(\\.(${p}))?([eE][+-]?(${p})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},y={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:o}]},E=[h,{variants:[{match:[/class\s+/,s,/\s+<\s+/,s]},{match:[/\b(class|module)\s+/,s]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:o},{match:[/(include|extend)\s+/,s],scope:{2:"title.class"},keywords:o},{relevance:0,match:[s,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:r,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[y]},{begin:t.IDENT_RE+"::"},{className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[h,{begin:n}],relevance:0},x,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:o},{begin:"("+t.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[t.BACKSLASH_ESCAPE,u],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(c,d),relevance:0}].concat(c,d);u.contains=E,y.contains=E;const N="[>?]>",T="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",A="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",M=[{begin:/^\s*=>/,starts:{end:"$",contains:E}},{className:"meta.prompt",begin:"^("+N+"|"+T+"|"+A+")(?=[ ])",starts:{end:"$",keywords:o,contains:E}}];return d.unshift(c),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:o,illegal:/\/\*/,contains:[t.SHEBANG({binary:"ruby"})].concat(M).concat(d).concat(E)}}function ske(t){const e=t.regex,n=/(r#)?/,r=e.concat(n,t.UNDERSCORE_IDENT_RE),s=e.concat(n,t.IDENT_RE),a={className:"title.function.invoke",relevance:0,begin:e.concat(/\b/,/(?!let|for|while|if|else|match\b)/,s,e.lookahead(/\s*\(/))},o="([ui](8|16|32|64|128|size)|f(32|64))?",l=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],c=["true","false","Some","None","Ok","Err"],d=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],u=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",type:u,keyword:l,literal:c,built_in:d},illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),t.inherit(t.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+o},{begin:"\\b0o([0-7_]+)"+o},{begin:"\\b0x([A-Fa-f0-9_]+)"+o},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+o}],relevance:0},{begin:[/fn/,/\s+/,r],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,r],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,r,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,r],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,r],className:{1:"keyword",3:"title.class"}},{begin:t.IDENT_RE+"::",keywords:{keyword:"Self",built_in:d,type:u}},{className:"punctuation",begin:"->"},a]}}const ike=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),ake=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],oke=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],lke=[...ake,...oke],cke=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),dke=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),uke=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),hke=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function fke(t){const e=ike(t),n=uke,r=dke,s="@[a-z-]+",a="and or not only",l={className:"variable",begin:"(\\$"+"[a-zA-Z-][a-zA-Z0-9_-]*"+")\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,e.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+lke.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+r.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+n.join("|")+")"},l,{begin:/\(/,end:/\)/,contains:[e.CSS_NUMBER_MODE]},e.CSS_VARIABLE,{className:"attribute",begin:"\\b("+hke.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[e.BLOCK_COMMENT,l,e.HEXCOLOR,e.CSS_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,e.IMPORTANT,e.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:s,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:a,attribute:cke.join(" ")},contains:[{begin:s,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},l,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,e.HEXCOLOR,e.CSS_NUMBER_MODE]},e.FUNCTION_DISPATCH]}}function pke(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}function mke(t){const e=t.regex,n=t.COMMENT("--","$"),r={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},s={begin:/"/,end:/"/,contains:[{match:/""/}]},a=["true","false","unknown"],o=["double precision","large object","with timezone","without timezone"],l=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],c=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],u=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],h=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],f=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],p=u,x=[...d,...c].filter(C=>!u.includes(C)),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},m={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},g={match:e.concat(/\b/,e.either(...p),/\s*\(/),relevance:0,keywords:{built_in:p}};function v(C){return e.concat(/\b/,e.either(...C.map(E=>E.replace(/\s+/,"\\s+"))),/\b/)}const b={scope:"keyword",match:v(f),relevance:0};function S(C,{exceptions:E,when:N}={}){const T=N;return E=E||[],C.map(A=>A.match(/\|\d+$/)||E.includes(A)?A:T(A)?`${A}|0`:A)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:S(x,{when:C=>C.length<3}),literal:a,type:l,built_in:h},contains:[{scope:"type",match:v(o)},b,g,y,r,s,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,n,m]}}function b9(t){return t?typeof t=="string"?t:t.source:null}function Dm(t){return Zn("(?=",t,")")}function Zn(...t){return t.map(n=>b9(n)).join("")}function gke(t){const e=t[t.length-1];return typeof e=="object"&&e.constructor===Object?(t.splice(t.length-1,1),e):{}}function fi(...t){return"("+(gke(t).capture?"":"?:")+t.map(r=>b9(r)).join("|")+")"}const gj=t=>Zn(/\b/,t,/\w$/.test(t)?/\b/:/\B/),xke=["Protocol","Type"].map(gj),DB=["init","self"].map(gj),yke=["Any","Self"],lE=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],OB=["false","nil","true"],vke=["assignment","associativity","higherThan","left","lowerThan","none","right"],bke=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],BB=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],_9=fi(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),S9=fi(_9,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),cE=Zn(_9,S9,"*"),w9=fi(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),n1=fi(w9,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Lo=Zn(w9,n1,"*"),Pv=Zn(/[A-Z]/,n1,"*"),_ke=["attached","autoclosure",Zn(/convention\(/,fi("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",Zn(/objc\(/,Lo,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],Ske=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function wke(t){const e={match:/\s+/,relevance:0},n=t.COMMENT("/\\*","\\*/",{contains:["self"]}),r=[t.C_LINE_COMMENT_MODE,n],s={match:[/\./,fi(...xke,...DB)],className:{2:"keyword"}},a={match:Zn(/\./,fi(...lE)),relevance:0},o=lE.filter(xe=>typeof xe=="string").concat(["_|0"]),l=lE.filter(xe=>typeof xe!="string").concat(yke).map(gj),c={variants:[{className:"keyword",match:fi(...l,...DB)}]},d={$pattern:fi(/\b\w+/,/#\w+/),keyword:o.concat(bke),literal:OB},u=[s,a,c],h={match:Zn(/\./,fi(...BB)),relevance:0},f={className:"built_in",match:Zn(/\b/,fi(...BB),/(?=\()/)},p=[h,f],x={match:/->/,relevance:0},y={className:"operator",relevance:0,variants:[{match:cE},{match:`\\.(\\.|${S9})+`}]},m=[x,y],g="([0-9]_*)+",v="([0-9a-fA-F]_*)+",b={className:"number",relevance:0,variants:[{match:`\\b(${g})(\\.(${g}))?([eE][+-]?(${g}))?\\b`},{match:`\\b0x(${v})(\\.(${v}))?([pP][+-]?(${g}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},S=(xe="")=>({className:"subst",variants:[{match:Zn(/\\/,xe,/[0\\tnr"']/)},{match:Zn(/\\/,xe,/u\{[0-9a-fA-F]{1,8}\}/)}]}),C=(xe="")=>({className:"subst",match:Zn(/\\/,xe,/[\t ]*(?:[\r\n]|\r\n)/)}),E=(xe="")=>({className:"subst",label:"interpol",begin:Zn(/\\/,xe,/\(/),end:/\)/}),N=(xe="")=>({begin:Zn(xe,/"""/),end:Zn(/"""/,xe),contains:[S(xe),C(xe),E(xe)]}),T=(xe="")=>({begin:Zn(xe,/"/),end:Zn(/"/,xe),contains:[S(xe),E(xe)]}),A={className:"string",variants:[N(),N("#"),N("##"),N("###"),T(),T("#"),T("##"),T("###")]},M=[t.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[t.BACKSLASH_ESCAPE]}],P={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:M},I=xe=>{const Ce=Zn(xe,/\//),Y=Zn(/\//,xe);return{begin:Ce,end:Y,contains:[...M,{scope:"comment",begin:`#(?!.*${Y})`,end:/$/}]}},B={scope:"regexp",variants:[I("###"),I("##"),I("#"),P]},V={match:Zn(/`/,Lo,/`/)},K={className:"variable",match:/\$\d+/},H={className:"variable",match:`\\$${n1}+`},$=[V,K,H],L={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:Ske,contains:[...m,b,A]}]}},U={scope:"keyword",match:Zn(/@/,fi(..._ke),Dm(fi(/\(/,/\s+/)))},R={scope:"meta",match:Zn(/@/,Lo)},D=[L,U,R],G={match:Dm(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:Zn(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,n1,"+")},{className:"type",match:Pv,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:Zn(/\s+&\s+/,Dm(Pv)),relevance:0}]},F={begin:/</,end:/>/,keywords:d,contains:[...r,...u,...D,x,G]};G.contains.push(F);const J={match:Zn(Lo,/\s*:/),keywords:"_|0",relevance:0},q={begin:/\(/,end:/\)/,relevance:0,keywords:d,contains:["self",J,...r,B,...u,...p,...m,b,A,...$,...D,G]},te={begin:/</,end:/>/,keywords:"repeat each",contains:[...r,G]},z={begin:fi(Dm(Zn(Lo,/\s*:/)),Dm(Zn(Lo,/\s+/,Lo,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Lo}]},Q={begin:/\(/,end:/\)/,keywords:d,contains:[z,...r,...u,...m,b,A,...D,G,q],endsParent:!0,illegal:/["']/},re={match:[/(func|macro)/,/\s+/,fi(V.match,Lo,cE)],className:{1:"keyword",3:"title.function"},contains:[te,Q,e],illegal:[/\[/,/%/]},ie={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[te,Q,e],illegal:/\[|%/},de={match:[/operator/,/\s+/,cE],className:{1:"keyword",3:"title"}},ee={begin:[/precedencegroup/,/\s+/,Pv],className:{1:"keyword",3:"title"},contains:[G],keywords:[...vke,...OB],end:/}/},ke={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},ae={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},ge={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,Lo,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:d,contains:[te,...u,{begin:/:/,end:/\{/,keywords:d,contains:[{scope:"title.class.inherited",match:Pv},...u],relevance:0}]};for(const xe of A.variants){const Ce=xe.contains.find(ve=>ve.label==="interpol");Ce.keywords=d;const Y=[...u,...p,...m,b,A,...$];Ce.contains=[...Y,{begin:/\(/,end:/\)/,contains:["self",...Y]}]}return{name:"Swift",keywords:d,contains:[...r,re,ie,ke,ae,ge,de,ee,{beginKeywords:"import",end:/$/,contains:[...r],relevance:0},B,...u,...p,...m,b,A,...$,...D,G,q]}}const r1="[A-Za-z$_][0-9A-Za-z$_]*",k9=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],C9=["true","false","null","undefined","NaN","Infinity"],E9=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],A9=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],T9=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],M9=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],N9=[].concat(T9,E9,A9);function kke(t){const e=t.regex,n=(L,{after:U})=>{const R="</"+L[0].slice(1);return L.input.indexOf(R,U)!==-1},r=r1,s={begin:"<>",end:"</>"},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(L,U)=>{const R=L[0].length+L.index,D=L.input[R];if(D==="<"||D===","){U.ignoreMatch();return}D===">"&&(n(L,{after:R})||U.ignoreMatch());let G;const F=L.input.substring(R);if(G=F.match(/^\s*=/)){U.ignoreMatch();return}if((G=F.match(/^\s+extends\s+/))&&G.index===0){U.ignoreMatch();return}}},l={$pattern:r1,keyword:k9,literal:C9,built_in:N9,"variable.language":M9},c="[0-9](_?[0-9])*",d=`\\.(${c})`,u="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",h={className:"number",variants:[{begin:`(\\b(${u})((${d})|\\.)?|(${d}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},f={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"xml"}},x={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,f],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,f]},v={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},b=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,{match:/\$\d+/},h];f.contains=b.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(b)});const S=[].concat(v,f.contains),C=S.concat([{begin:/(\s*)\(/,end:/\)/,keywords:l,contains:["self"].concat(S)}]),E={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C},N={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,e.concat(r,"(",e.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...E9,...A9]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[E],illegal:/%/},P={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function I(L){return e.concat("(?!",L.join("|"),")")}const B={match:e.concat(/\b/,I([...T9,"super","import"].map(L=>`${L}\\s*\\(`)),r,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},V={begin:e.concat(/\./,e.lookahead(e.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},K={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},E]},H="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",$={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(H)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[E]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,p,x,y,m,v,{match:/\$\d+/},h,T,{scope:"attr",match:r+e.lookahead(":"),relevance:0},$,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,t.REGEXP_MODE,{className:"function",begin:H,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[E,t.inherit(t.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},V,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[E]},B,P,N,K,{match:/\$[(.]/}]}}function Cke(t){const e=t.regex,n=kke(t),r=r1,s=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],a={begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},o={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:s},contains:[n.exports.CLASS_REFERENCE]},l={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:r1,keyword:k9.concat(c),literal:C9,built_in:N9.concat(s),"variable.language":M9},u={className:"meta",begin:"@"+r},h=(y,m,g)=>{const v=y.contains.findIndex(b=>b.label===m);if(v===-1)throw new Error("can not find mode to replace");y.contains.splice(v,1,g)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(u);const f=n.contains.find(y=>y.scope==="attr"),p=Object.assign({},f,{match:e.concat(r,e.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,f,p]),n.contains=n.contains.concat([u,a,o,p]),h(n,"shebang",t.SHEBANG()),h(n,"use_strict",l);const x=n.contains.find(y=>y.label==="func.def");return x.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function Eke(t){const e=t.regex,n={className:"string",begin:/"(""|[^/n])"C\b/},r={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,o=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,l=/\d{1,2}(:\d{1,2}){1,2}/,c={className:"literal",variants:[{begin:e.concat(/# */,e.either(a,s),/ *#/)},{begin:e.concat(/# */,l,/ *#/)},{begin:e.concat(/# */,o,/ *#/)},{begin:e.concat(/# */,e.either(a,s),/ +/,e.either(o,l),/ *#/)}]},d={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},u={className:"label",begin:/^\w+:/},h=t.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),f=t.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[n,r,c,d,u,h,f,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[f]}]}}function Ake(t){t.regex;const e=t.COMMENT(/\(;/,/;\)/);e.contains.push("self");const n=t.COMMENT(/;;/,/$/),r=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],s={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},a={className:"variable",begin:/\$[\w_]+/},o={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},l={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},c={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},d={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:r},contains:[n,e,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},a,o,s,t.QUOTE_STRING_MODE,c,d,l]}}function Tke(t){const e=t.regex,n=e.concat(/[\p{L}_]/u,e.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,s={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=t.inherit(a,{begin:/\(/,end:/\)/}),l=t.inherit(t.APOS_STRING_MODE,{className:"string"}),c=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,c,l,o,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[a,o,c,l]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:e.concat(/</,e.lookahead(e.concat(n,e.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:d}]},{className:"tag",begin:e.concat(/<\//,e.lookahead(e.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function Mke(t){const e="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",r={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},s={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},a={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},o={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,s]},l=t.inherit(o,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),c="[0-9]{4}(-[0-9][0-9]){0,2}",d="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",u="(\\.[0-9]*)?",h="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",f={className:"number",begin:"\\b"+c+d+u+h+"\\b"},p={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},x={begin:/\{/,end:/\}/,contains:[p],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[p],illegal:"\\n",relevance:0},m=[r,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},f,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},x,y,a,o],g=[...m];return g.pop(),g.push(l),p.contains=g,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:m}}const Nke={arduino:uwe,bash:hwe,c:fwe,cpp:pwe,csharp:mwe,css:kwe,diff:Cwe,go:Ewe,graphql:Awe,ini:Twe,java:Mwe,javascript:Pwe,json:Lwe,kotlin:Owe,less:Vwe,lua:$we,makefile:Kwe,markdown:qwe,objectivec:Xwe,perl:Ywe,php:Jwe,"php-template":Zwe,plaintext:Qwe,python:eke,"python-repl":tke,r:nke,ruby:rke,rust:ske,scss:fke,shell:pke,sql:mke,swift:wke,typescript:Cke,vbnet:Eke,wasm:Ake,xml:Tke,yaml:Mke};function j9(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach(e=>{const n=t[e],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&j9(n)}),t}let FB=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function R9(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Nc(t,...e){const n=Object.create(null);for(const r in t)n[r]=t[r];return e.forEach(function(r){for(const s in r)n[s]=r[s]}),n}const jke="</span>",UB=t=>!!t.scope,Rke=(t,{prefix:e})=>{if(t.startsWith("language:"))return t.replace("language:","language-");if(t.includes(".")){const n=t.split(".");return[`${e}${n.shift()}`,...n.map((r,s)=>`${r}${"_".repeat(s+1)}`)].join(" ")}return`${e}${t}`};class Ike{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=R9(e)}openNode(e){if(!UB(e))return;const n=Rke(e.scope,{prefix:this.classPrefix});this.span(n)}closeNode(e){UB(e)&&(this.buffer+=jke)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}const zB=(t={})=>{const e={children:[]};return Object.assign(e,t),e};class xj{constructor(){this.rootNode=zB(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n=zB({scope:e});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return typeof n=="string"?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(r=>this._walk(e,r)),e.closeNode(n)),e}static _collapse(e){typeof e!="string"&&e.children&&(e.children.every(n=>typeof n=="string")?e.children=[e.children.join("")]:e.children.forEach(n=>{xj._collapse(n)}))}}class Pke extends xj{constructor(e){super(),this.options=e}addText(e){e!==""&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,n){const r=e.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new Ike(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function vx(t){return t?typeof t=="string"?t:t.source:null}function I9(t){return th("(?=",t,")")}function Lke(t){return th("(?:",t,")*")}function Dke(t){return th("(?:",t,")?")}function th(...t){return t.map(n=>vx(n)).join("")}function Oke(t){const e=t[t.length-1];return typeof e=="object"&&e.constructor===Object?(t.splice(t.length-1,1),e):{}}function yj(...t){return"("+(Oke(t).capture?"":"?:")+t.map(r=>vx(r)).join("|")+")"}function P9(t){return new RegExp(t.toString()+"|").exec("").length-1}function Bke(t,e){const n=t&&t.exec(e);return n&&n.index===0}const Fke=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function vj(t,{joinWith:e}){let n=0;return t.map(r=>{n+=1;const s=n;let a=vx(r),o="";for(;a.length>0;){const l=Fke.exec(a);if(!l){o+=a;break}o+=a.substring(0,l.index),a=a.substring(l.index+l[0].length),l[0][0]==="\\"&&l[1]?o+="\\"+String(Number(l[1])+s):(o+=l[0],l[0]==="("&&n++)}return o}).map(r=>`(${r})`).join(e)}const Uke=/\b\B/,L9="[a-zA-Z]\\w*",bj="[a-zA-Z_]\\w*",D9="\\b\\d+(\\.\\d+)?",O9="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",B9="\\b(0b[01]+)",zke="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Hke=(t={})=>{const e=/^#![ ]*\//;return t.binary&&(t.begin=th(e,/.*\b/,t.binary,/\b.*/)),Nc({scope:"meta",begin:e,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},t)},bx={begin:"\\\\[\\s\\S]",relevance:0},Gke={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[bx]},Wke={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[bx]},Vke={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},PS=function(t,e,n={}){const r=Nc({scope:"comment",begin:t,end:e,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=yj("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:th(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},$ke=PS("//","$"),Kke=PS("/\\*","\\*/"),qke=PS("#","$"),Xke={scope:"number",begin:D9,relevance:0},Yke={scope:"number",begin:O9,relevance:0},Jke={scope:"number",begin:B9,relevance:0},Zke={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[bx,{begin:/\[/,end:/\]/,relevance:0,contains:[bx]}]},Qke={scope:"title",begin:L9,relevance:0},eCe={scope:"title",begin:bj,relevance:0},tCe={begin:"\\.\\s*"+bj,relevance:0},nCe=function(t){return Object.assign(t,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})};var Lv=Object.freeze({__proto__:null,APOS_STRING_MODE:Gke,BACKSLASH_ESCAPE:bx,BINARY_NUMBER_MODE:Jke,BINARY_NUMBER_RE:B9,COMMENT:PS,C_BLOCK_COMMENT_MODE:Kke,C_LINE_COMMENT_MODE:$ke,C_NUMBER_MODE:Yke,C_NUMBER_RE:O9,END_SAME_AS_BEGIN:nCe,HASH_COMMENT_MODE:qke,IDENT_RE:L9,MATCH_NOTHING_RE:Uke,METHOD_GUARD:tCe,NUMBER_MODE:Xke,NUMBER_RE:D9,PHRASAL_WORDS_MODE:Vke,QUOTE_STRING_MODE:Wke,REGEXP_MODE:Zke,RE_STARTERS_RE:zke,SHEBANG:Hke,TITLE_MODE:Qke,UNDERSCORE_IDENT_RE:bj,UNDERSCORE_TITLE_MODE:eCe});function rCe(t,e){t.input[t.index-1]==="."&&e.ignoreMatch()}function sCe(t,e){t.className!==void 0&&(t.scope=t.className,delete t.className)}function iCe(t,e){e&&t.beginKeywords&&(t.begin="\\b("+t.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",t.__beforeBegin=rCe,t.keywords=t.keywords||t.beginKeywords,delete t.beginKeywords,t.relevance===void 0&&(t.relevance=0))}function aCe(t,e){Array.isArray(t.illegal)&&(t.illegal=yj(...t.illegal))}function oCe(t,e){if(t.match){if(t.begin||t.end)throw new Error("begin & end are not supported with match");t.begin=t.match,delete t.match}}function lCe(t,e){t.relevance===void 0&&(t.relevance=1)}const cCe=(t,e)=>{if(!t.beforeMatch)return;if(t.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},t);Object.keys(t).forEach(r=>{delete t[r]}),t.keywords=n.keywords,t.begin=th(n.beforeMatch,I9(n.begin)),t.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},t.relevance=0,delete n.beforeMatch},dCe=["of","and","for","in","not","or","if","then","parent","list","value"],uCe="keyword";function F9(t,e,n=uCe){const r=Object.create(null);return typeof t=="string"?s(n,t.split(" ")):Array.isArray(t)?s(n,t):Object.keys(t).forEach(function(a){Object.assign(r,F9(t[a],e,a))}),r;function s(a,o){e&&(o=o.map(l=>l.toLowerCase())),o.forEach(function(l){const c=l.split("|");r[c[0]]=[a,hCe(c[0],c[1])]})}}function hCe(t,e){return e?Number(e):fCe(t)?0:1}function fCe(t){return dCe.includes(t.toLowerCase())}const HB={},Su=t=>{console.error(t)},GB=(t,...e)=>{console.log(`WARN: ${t}`,...e)},Vh=(t,e)=>{HB[`${t}/${e}`]||(console.log(`Deprecated as of ${t}. ${e}`),HB[`${t}/${e}`]=!0)},s1=new Error;function U9(t,e,{key:n}){let r=0;const s=t[n],a={},o={};for(let l=1;l<=e.length;l++)o[l+r]=s[l],a[l+r]=!0,r+=P9(e[l-1]);t[n]=o,t[n]._emit=a,t[n]._multi=!0}function pCe(t){if(Array.isArray(t.begin)){if(t.skip||t.excludeBegin||t.returnBegin)throw Su("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),s1;if(typeof t.beginScope!="object"||t.beginScope===null)throw Su("beginScope must be object"),s1;U9(t,t.begin,{key:"beginScope"}),t.begin=vj(t.begin,{joinWith:""})}}function mCe(t){if(Array.isArray(t.end)){if(t.skip||t.excludeEnd||t.returnEnd)throw Su("skip, excludeEnd, returnEnd not compatible with endScope: {}"),s1;if(typeof t.endScope!="object"||t.endScope===null)throw Su("endScope must be object"),s1;U9(t,t.end,{key:"endScope"}),t.end=vj(t.end,{joinWith:""})}}function gCe(t){t.scope&&typeof t.scope=="object"&&t.scope!==null&&(t.beginScope=t.scope,delete t.scope)}function xCe(t){gCe(t),typeof t.beginScope=="string"&&(t.beginScope={_wrap:t.beginScope}),typeof t.endScope=="string"&&(t.endScope={_wrap:t.endScope}),pCe(t),mCe(t)}function yCe(t){function e(o,l){return new RegExp(vx(o),"m"+(t.case_insensitive?"i":"")+(t.unicodeRegex?"u":"")+(l?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(l,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,l]),this.matchAt+=P9(l)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const l=this.regexes.map(c=>c[1]);this.matcherRe=e(vj(l,{joinWith:"|"}),!0),this.lastIndex=0}exec(l){this.matcherRe.lastIndex=this.lastIndex;const c=this.matcherRe.exec(l);if(!c)return null;const d=c.findIndex((h,f)=>f>0&&h!==void 0),u=this.matchIndexes[d];return c.splice(0,d),Object.assign(c,u)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(l){if(this.multiRegexes[l])return this.multiRegexes[l];const c=new n;return this.rules.slice(l).forEach(([d,u])=>c.addRule(d,u)),c.compile(),this.multiRegexes[l]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(l,c){this.rules.push([l,c]),c.type==="begin"&&this.count++}exec(l){const c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let d=c.exec(l);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const u=this.getMatcher(0);u.lastIndex=this.lastIndex+1,d=u.exec(l)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function s(o){const l=new r;return o.contains.forEach(c=>l.addRule(c.begin,{rule:c,type:"begin"})),o.terminatorEnd&&l.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&l.addRule(o.illegal,{type:"illegal"}),l}function a(o,l){const c=o;if(o.isCompiled)return c;[sCe,oCe,xCe,cCe].forEach(u=>u(o,l)),t.compilerExtensions.forEach(u=>u(o,l)),o.__beforeBegin=null,[iCe,aCe,lCe].forEach(u=>u(o,l)),o.isCompiled=!0;let d=null;return typeof o.keywords=="object"&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),d=o.keywords.$pattern,delete o.keywords.$pattern),d=d||/\w+/,o.keywords&&(o.keywords=F9(o.keywords,t.case_insensitive)),c.keywordPatternRe=e(d,!0),l&&(o.begin||(o.begin=/\B|\b/),c.beginRe=e(c.begin),!o.end&&!o.endsWithParent&&(o.end=/\B|\b/),o.end&&(c.endRe=e(c.end)),c.terminatorEnd=vx(c.end)||"",o.endsWithParent&&l.terminatorEnd&&(c.terminatorEnd+=(o.end?"|":"")+l.terminatorEnd)),o.illegal&&(c.illegalRe=e(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(u){return vCe(u==="self"?o:u)})),o.contains.forEach(function(u){a(u,c)}),o.starts&&a(o.starts,l),c.matcher=s(c),c}if(t.compilerExtensions||(t.compilerExtensions=[]),t.contains&&t.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return t.classNameAliases=Nc(t.classNameAliases||{}),a(t)}function z9(t){return t?t.endsWithParent||z9(t.starts):!1}function vCe(t){return t.variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(function(e){return Nc(t,{variants:null},e)})),t.cachedVariants?t.cachedVariants:z9(t)?Nc(t,{starts:t.starts?Nc(t.starts):null}):Object.isFrozen(t)?Nc(t):t}var bCe="11.11.1";class _Ce extends Error{constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}}const dE=R9,WB=Nc,VB=Symbol("nomatch"),SCe=7,H9=function(t){const e=Object.create(null),n=Object.create(null),r=[];let s=!0;const a="Could not find the language '{}', did you forget to load/include a language module?",o={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Pke};function c(H){return l.noHighlightRe.test(H)}function d(H){let $=H.className+" ";$+=H.parentNode?H.parentNode.className:"";const L=l.languageDetectRe.exec($);if(L){const U=T(L[1]);return U||(GB(a.replace("{}",L[1])),GB("Falling back to no-highlight mode for this block.",H)),U?L[1]:"no-highlight"}return $.split(/\s+/).find(U=>c(U)||T(U))}function u(H,$,L){let U="",R="";typeof $=="object"?(U=H,L=$.ignoreIllegals,R=$.language):(Vh("10.7.0","highlight(lang, code, ...args) has been deprecated."),Vh("10.7.0",`Please use highlight(code, options) instead.
|
|
4951
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),R=H,U=$),L===void 0&&(L=!0);const D={code:U,language:R};V("before:highlight",D);const G=D.result?D.result:h(D.language,D.code,L);return G.code=D.code,V("after:highlight",G),G}function h(H,$,L,U){const R=Object.create(null);function D(se,le){return se.keywords[le]}function G(){if(!Y.keywords){be.addText(_e);return}let se=0;Y.keywordPatternRe.lastIndex=0;let le=Y.keywordPatternRe.exec(_e),fe="";for(;le;){fe+=_e.substring(se,le.index);const Te=ge.case_insensitive?le[0].toLowerCase():le[0],Ne=D(Y,Te);if(Ne){const[He,$e]=Ne;if(be.addText(fe),fe="",R[Te]=(R[Te]||0)+1,R[Te]<=SCe&&(Me+=$e),He.startsWith("_"))fe+=le[0];else{const De=ge.classNameAliases[He]||He;q(le[0],De)}}else fe+=le[0];se=Y.keywordPatternRe.lastIndex,le=Y.keywordPatternRe.exec(_e)}fe+=_e.substring(se),be.addText(fe)}function F(){if(_e==="")return;let se=null;if(typeof Y.subLanguage=="string"){if(!e[Y.subLanguage]){be.addText(_e);return}se=h(Y.subLanguage,_e,!0,ve[Y.subLanguage]),ve[Y.subLanguage]=se._top}else se=p(_e,Y.subLanguage.length?Y.subLanguage:null);Y.relevance>0&&(Me+=se.relevance),be.__addSublanguage(se._emitter,se.language)}function J(){Y.subLanguage!=null?F():G(),_e=""}function q(se,le){se!==""&&(be.startScope(le),be.addText(se),be.endScope())}function te(se,le){let fe=1;const Te=le.length-1;for(;fe<=Te;){if(!se._emit[fe]){fe++;continue}const Ne=ge.classNameAliases[se[fe]]||se[fe],He=le[fe];Ne?q(He,Ne):(_e=He,G(),_e=""),fe++}}function z(se,le){return se.scope&&typeof se.scope=="string"&&be.openNode(ge.classNameAliases[se.scope]||se.scope),se.beginScope&&(se.beginScope._wrap?(q(_e,ge.classNameAliases[se.beginScope._wrap]||se.beginScope._wrap),_e=""):se.beginScope._multi&&(te(se.beginScope,le),_e="")),Y=Object.create(se,{parent:{value:Y}}),Y}function Q(se,le,fe){let Te=Bke(se.endRe,fe);if(Te){if(se["on:end"]){const Ne=new FB(se);se["on:end"](le,Ne),Ne.isMatchIgnored&&(Te=!1)}if(Te){for(;se.endsParent&&se.parent;)se=se.parent;return se}}if(se.endsWithParent)return Q(se.parent,le,fe)}function re(se){return Y.matcher.regexIndex===0?(_e+=se[0],1):(ue=!0,0)}function ie(se){const le=se[0],fe=se.rule,Te=new FB(fe),Ne=[fe.__beforeBegin,fe["on:begin"]];for(const He of Ne)if(He&&(He(se,Te),Te.isMatchIgnored))return re(le);return fe.skip?_e+=le:(fe.excludeBegin&&(_e+=le),J(),!fe.returnBegin&&!fe.excludeBegin&&(_e=le)),z(fe,se),fe.returnBegin?0:le.length}function de(se){const le=se[0],fe=$.substring(se.index),Te=Q(Y,se,fe);if(!Te)return VB;const Ne=Y;Y.endScope&&Y.endScope._wrap?(J(),q(le,Y.endScope._wrap)):Y.endScope&&Y.endScope._multi?(J(),te(Y.endScope,se)):Ne.skip?_e+=le:(Ne.returnEnd||Ne.excludeEnd||(_e+=le),J(),Ne.excludeEnd&&(_e=le));do Y.scope&&be.closeNode(),!Y.skip&&!Y.subLanguage&&(Me+=Y.relevance),Y=Y.parent;while(Y!==Te.parent);return Te.starts&&z(Te.starts,se),Ne.returnEnd?0:le.length}function ee(){const se=[];for(let le=Y;le!==ge;le=le.parent)le.scope&&se.unshift(le.scope);se.forEach(le=>be.openNode(le))}let ke={};function ae(se,le){const fe=le&&le[0];if(_e+=se,fe==null)return J(),0;if(ke.type==="begin"&&le.type==="end"&&ke.index===le.index&&fe===""){if(_e+=$.slice(le.index,le.index+1),!s){const Te=new Error(`0 width match regex (${H})`);throw Te.languageName=H,Te.badRule=ke.rule,Te}return 1}if(ke=le,le.type==="begin")return ie(le);if(le.type==="illegal"&&!L){const Te=new Error('Illegal lexeme "'+fe+'" for mode "'+(Y.scope||"<unnamed>")+'"');throw Te.mode=Y,Te}else if(le.type==="end"){const Te=de(le);if(Te!==VB)return Te}if(le.type==="illegal"&&fe==="")return _e+=`
|
|
4952
|
+
`,1;if(X>1e5&&X>le.index*3)throw new Error("potential infinite loop, way more iterations than matches");return _e+=fe,fe.length}const ge=T(H);if(!ge)throw Su(a.replace("{}",H)),new Error('Unknown language: "'+H+'"');const xe=yCe(ge);let Ce="",Y=U||xe;const ve={},be=new l.__emitter(l);ee();let _e="",Me=0,ne=0,X=0,ue=!1;try{if(ge.__emitTokens)ge.__emitTokens($,be);else{for(Y.matcher.considerAll();;){X++,ue?ue=!1:Y.matcher.considerAll(),Y.matcher.lastIndex=ne;const se=Y.matcher.exec($);if(!se)break;const le=$.substring(ne,se.index),fe=ae(le,se);ne=se.index+fe}ae($.substring(ne))}return be.finalize(),Ce=be.toHTML(),{language:H,value:Ce,relevance:Me,illegal:!1,_emitter:be,_top:Y}}catch(se){if(se.message&&se.message.includes("Illegal"))return{language:H,value:dE($),illegal:!0,relevance:0,_illegalBy:{message:se.message,index:ne,context:$.slice(ne-100,ne+100),mode:se.mode,resultSoFar:Ce},_emitter:be};if(s)return{language:H,value:dE($),illegal:!1,relevance:0,errorRaised:se,_emitter:be,_top:Y};throw se}}function f(H){const $={value:dE(H),illegal:!1,relevance:0,_top:o,_emitter:new l.__emitter(l)};return $._emitter.addText(H),$}function p(H,$){$=$||l.languages||Object.keys(e);const L=f(H),U=$.filter(T).filter(M).map(J=>h(J,H,!1));U.unshift(L);const R=U.sort((J,q)=>{if(J.relevance!==q.relevance)return q.relevance-J.relevance;if(J.language&&q.language){if(T(J.language).supersetOf===q.language)return 1;if(T(q.language).supersetOf===J.language)return-1}return 0}),[D,G]=R,F=D;return F.secondBest=G,F}function x(H,$,L){const U=$&&n[$]||L;H.classList.add("hljs"),H.classList.add(`language-${U}`)}function y(H){let $=null;const L=d(H);if(c(L))return;if(V("before:highlightElement",{el:H,language:L}),H.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",H);return}if(H.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(H)),l.throwUnescapedHTML))throw new _Ce("One of your code blocks includes unescaped HTML.",H.innerHTML);$=H;const U=$.textContent,R=L?u(U,{language:L,ignoreIllegals:!0}):p(U);H.innerHTML=R.value,H.dataset.highlighted="yes",x(H,L,R.language),H.result={language:R.language,re:R.relevance,relevance:R.relevance},R.secondBest&&(H.secondBest={language:R.secondBest.language,relevance:R.secondBest.relevance}),V("after:highlightElement",{el:H,result:R,text:U})}function m(H){l=WB(l,H)}const g=()=>{S(),Vh("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function v(){S(),Vh("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let b=!1;function S(){function H(){S()}if(document.readyState==="loading"){b||window.addEventListener("DOMContentLoaded",H,!1),b=!0;return}document.querySelectorAll(l.cssSelector).forEach(y)}function C(H,$){let L=null;try{L=$(t)}catch(U){if(Su("Language definition for '{}' could not be registered.".replace("{}",H)),s)Su(U);else throw U;L=o}L.name||(L.name=H),e[H]=L,L.rawDefinition=$.bind(null,t),L.aliases&&A(L.aliases,{languageName:H})}function E(H){delete e[H];for(const $ of Object.keys(n))n[$]===H&&delete n[$]}function N(){return Object.keys(e)}function T(H){return H=(H||"").toLowerCase(),e[H]||e[n[H]]}function A(H,{languageName:$}){typeof H=="string"&&(H=[H]),H.forEach(L=>{n[L.toLowerCase()]=$})}function M(H){const $=T(H);return $&&!$.disableAutodetect}function P(H){H["before:highlightBlock"]&&!H["before:highlightElement"]&&(H["before:highlightElement"]=$=>{H["before:highlightBlock"](Object.assign({block:$.el},$))}),H["after:highlightBlock"]&&!H["after:highlightElement"]&&(H["after:highlightElement"]=$=>{H["after:highlightBlock"](Object.assign({block:$.el},$))})}function I(H){P(H),r.push(H)}function B(H){const $=r.indexOf(H);$!==-1&&r.splice($,1)}function V(H,$){const L=H;r.forEach(function(U){U[L]&&U[L]($)})}function K(H){return Vh("10.7.0","highlightBlock will be removed entirely in v12.0"),Vh("10.7.0","Please use highlightElement now."),y(H)}Object.assign(t,{highlight:u,highlightAuto:p,highlightAll:S,highlightElement:y,highlightBlock:K,configure:m,initHighlighting:g,initHighlightingOnLoad:v,registerLanguage:C,unregisterLanguage:E,listLanguages:N,getLanguage:T,registerAliases:A,autoDetection:M,inherit:WB,addPlugin:I,removePlugin:B}),t.debugMode=function(){s=!1},t.safeMode=function(){s=!0},t.versionString=bCe,t.regex={concat:th,lookahead:I9,either:yj,optional:Dke,anyNumberOfTimes:Lke};for(const H in Lv)typeof Lv[H]=="object"&&j9(Lv[H]);return Object.assign(t,Lv),t},op=H9({});op.newInstance=()=>H9({});var wCe=op;op.HighlightJS=op;op.default=op;const kCe=lp(wCe),$B={},CCe="hljs-";function ECe(t){const e=kCe.newInstance();return t&&a(t),{highlight:n,highlightAuto:r,listLanguages:s,register:a,registerAlias:o,registered:l};function n(c,d,u){const h=u||$B,f=typeof h.prefix=="string"?h.prefix:CCe;if(!e.getLanguage(c))throw new Error("Unknown language: `"+c+"` is not registered");e.configure({__emitter:ACe,classPrefix:f});const p=e.highlight(d,{ignoreIllegals:!0,language:c});if(p.errorRaised)throw new Error("Could not highlight with `Highlight.js`",{cause:p.errorRaised});const x=p._emitter.root,y=x.data;return y.language=p.language,y.relevance=p.relevance,x}function r(c,d){const h=(d||$B).subset||s();let f=-1,p=0,x;for(;++f<h.length;){const y=h[f];if(!e.getLanguage(y))continue;const m=n(y,c,d);m.data&&m.data.relevance!==void 0&&m.data.relevance>p&&(p=m.data.relevance,x=m)}return x||{type:"root",children:[],data:{language:void 0,relevance:p}}}function s(){return e.listLanguages()}function a(c,d){if(typeof c=="string")e.registerLanguage(c,d);else{let u;for(u in c)Object.hasOwn(c,u)&&e.registerLanguage(u,c[u])}}function o(c,d){if(typeof c=="string")e.registerAliases(typeof d=="string"?d:[...d],{languageName:c});else{let u;for(u in c)if(Object.hasOwn(c,u)){const h=c[u];e.registerAliases(typeof h=="string"?h:[...h],{languageName:u})}}}function l(c){return!!e.getLanguage(c)}}class ACe{constructor(e){this.options=e,this.root={type:"root",children:[],data:{language:void 0,relevance:0}},this.stack=[this.root]}addText(e){if(e==="")return;const n=this.stack[this.stack.length-1],r=n.children[n.children.length-1];r&&r.type==="text"?r.value+=e:n.children.push({type:"text",value:e})}startScope(e){this.openNode(String(e))}endScope(){this.closeNode()}__addSublanguage(e,n){const r=this.stack[this.stack.length-1],s=e.root.children;n?r.children.push({type:"element",tagName:"span",properties:{className:[n]},children:s}):r.children.push(...s)}openNode(e){const n=this,r=e.split(".").map(function(o,l){return l?o+"_".repeat(l):n.options.classPrefix+o}),s=this.stack[this.stack.length-1],a={type:"element",tagName:"span",properties:{className:r},children:[]};s.children.push(a),this.stack.push(a)}closeNode(){this.stack.pop()}finalize(){}toHTML(){return""}}const TCe={};function MCe(t){const e=t||TCe,n=e.aliases,r=e.detect||!1,s=e.languages||Nke,a=e.plainText,o=e.prefix,l=e.subset;let c="hljs";const d=ECe(s);if(n&&d.registerAlias(n),o){const u=o.indexOf("-");c=u===-1?o:o.slice(0,u)}return function(u,h){Qx(u,"element",function(f,p,x){if(f.tagName!=="code"||!x||x.type!=="element"||x.tagName!=="pre")return;const y=NCe(f);if(y===!1||!y&&!r||y&&a&&a.includes(y))return;Array.isArray(f.properties.className)||(f.properties.className=[]),f.properties.className.includes(c)||f.properties.className.unshift(c);const m=rwe(f,{whitespace:"pre"});let g;try{g=y?d.highlight(y,m,{prefix:o}):d.highlightAuto(m,{prefix:o,subset:l})}catch(v){const b=v;if(y&&/Unknown language/.test(b.message)){h.message("Cannot highlight as `"+y+"`, it’s not registered",{ancestors:[x,f],cause:b,place:f.position,ruleId:"missing-language",source:"rehype-highlight"});return}throw b}!y&&g.data&&g.data.language&&f.properties.className.push("language-"+g.data.language),g.children.length>0&&(f.children=g.children)})}}function NCe(t){const e=t.properties.className;let n=-1;if(!Array.isArray(e))return;let r;for(;++n<e.length;){const s=String(e[n]);if(s==="no-highlight"||s==="nohighlight")return!1;!r&&s.slice(0,5)==="lang-"&&(r=s.slice(5)),!r&&s.slice(0,9)==="language-"&&(r=s.slice(9))}return r}const Jm="wikilink:",KB=/\[\[([^\]|]+?)(?:\|([^\]]+?))?\]\]/g;function jCe(t){const e=t.value;if(!e.includes("[["))return null;KB.lastIndex=0;const n=[];let r=0,s,a=!1;for(;(s=KB.exec(e))!==null;){a=!0;const[o,l,c]=s,d=l.trim(),u=(c??l).trim();s.index>r&&n.push({type:"text",value:e.slice(r,s.index)});const h={type:"link",url:`${Jm}${d}`,title:null,children:[{type:"text",value:u}]};n.push(h),r=s.index+o.length}return a?(r<e.length&&n.push({type:"text",value:e.slice(r)}),n):null}function RCe(){return()=>t=>{Qx(t,"text",(e,n,r)=>{if(!r||typeof n!="number"||r.type==="link")return;const s=jCe(e);if(s)return r.children.splice(n,1,...s),[OG,n+s.length]})}}function ICe(t){const e=/^?---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n)*/.exec(t);if(!e)return{title:null,body:t};const n=/^title:\s*(.+?)\s*$/m.exec(e[1]);return{title:n?n[1].replace(/^["']|["']$/g,"").trim():null,body:t.slice(e[0].length)}}function PCe({content:t,onWikilinkClick:e}){const n=k.useCallback((a,o)=>{!o||!o.startsWith(Jm)||(a.preventDefault(),e&&e(o.slice(Jm.length)))},[e]),{title:r,body:s}=ICe(t);return i.jsxs("div",{className:"wiki-md",children:[r&&i.jsx("h1",{className:"wiki-md-title",children:r}),i.jsx(O_e,{remarkPlugins:[YSe,RCe()],rehypePlugins:[[MCe,{ignoreMissing:!0}]],urlTransform:a=>typeof a=="string"&&a.startsWith(Jm)||/^(https?:|mailto:|tel:|#|\/|\.\.?\/)/i.test(a)?a:"",components:{a:({href:a,children:o,node:l,...c})=>typeof a=="string"&&a.startsWith(Jm)?i.jsx("a",{...c,href:a,className:"wiki-md-wikilink",onClick:u=>n(u,a),children:o}):i.jsx("a",{...c,href:a,target:"_blank",rel:"noopener noreferrer",children:o})},children:s})]})}function LCe({vaultPath:t,onClose:e,onChanged:n}){const[r,s]=k.useState([]),[a,o]=k.useState(!0),[l,c]=k.useState(null),[d,u]=k.useState(null),h=k.useCallback(async()=>{o(!0),c(null);try{const y=await fetch(`/api/wiki/sop-catalog?vaultPath=${encodeURIComponent(t)}`),m=await y.json();if(!y.ok||!m.success)throw new Error(m.error||`HTTP ${y.status}`);s(m.catalog)}catch(y){c(y.message)}finally{o(!1)}},[t]);k.useEffect(()=>{h()},[h]);const f=k.useCallback(async y=>{u(y.path),c(null);const m=y.installed?"uninstall":"install";try{const g=await fetch(`/api/wiki/sop-catalog/${m}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({vaultPath:t,sopPath:y.path})}),v=await g.json();if(!g.ok||!v.success)throw new Error(v.error||`HTTP ${g.status}`);s(b=>b.map(S=>S.path===y.path?{...S,installed:!y.installed}:S)),n()}catch(g){c(g.message)}finally{u(null)}},[t,n]),p=r.reduce((y,m)=>{var g;return(y[g=m.category]??(y[g]=[])).push(m),y},{}),x=r.filter(y=>y.installed).length;return i.jsx("div",{className:"sop-catalog-backdrop",onClick:e,role:"presentation",children:i.jsxs("div",{className:"sop-catalog-modal",onClick:y=>y.stopPropagation(),role:"dialog","aria-label":"SOP catalog","data-testid":"sop-catalog-modal",children:[i.jsxs("div",{className:"sop-catalog-header",children:[i.jsxs("div",{children:[i.jsx("h2",{children:"SOP Catalog"}),i.jsxs("p",{className:"sop-catalog-sub",children:["Install SOPs from the shared catalog into this team. ",x," installed."]})]}),i.jsx("button",{type:"button",className:"sop-catalog-close",onClick:e,"aria-label":"Close",children:i.jsx(On,{size:18})})]}),l&&i.jsxs("div",{className:"sop-catalog-error",children:[i.jsx(Or,{size:14})," ",l]}),i.jsxs("div",{className:"sop-catalog-body",children:[a&&i.jsx("div",{className:"sop-catalog-loading",children:"Loading catalog…"}),!a&&r.length===0&&i.jsx("div",{className:"sop-catalog-empty",children:"No SOPs in the catalog."}),!a&&Object.entries(p).map(([y,m])=>i.jsxs("div",{className:"sop-catalog-group",children:[i.jsx("div",{className:"sop-catalog-group-label",children:y}),m.map(g=>i.jsxs("div",{className:"sop-catalog-row","data-testid":`sop-row-${g.path}`,children:[i.jsxs("div",{className:"sop-catalog-row-info",children:[i.jsx("span",{className:"sop-catalog-row-title",children:g.title}),i.jsx("span",{className:"sop-catalog-row-path",children:g.path})]}),i.jsx("button",{type:"button",className:`sop-catalog-btn${g.installed?" installed":""}`,disabled:d===g.path,onClick:()=>f(g),"data-testid":`sop-toggle-${g.path}`,children:g.installed?i.jsxs(i.Fragment,{children:[i.jsx(br,{size:13})," Installed"]}):i.jsxs(i.Fragment,{children:[i.jsx(gp,{size:13})," Install"]})})]},g.path))]},y))]})]})})}const DCe={sop:"SOP","team-norm":"Team Norm"};function qB(t){return t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)}function OCe({vaultPath:t,folder:e,mode:n,initialPath:r,initialContent:s,onClose:a,onSaved:o}){const[l,c]=k.useState(()=>n==="edit"&&r?r.split("/").pop().replace(/\.md$/,""):""),[d,u]=k.useState(s??""),[h,f]=k.useState(!1),[p,x]=k.useState(null),y=DCe[e],m=k.useCallback(async()=>{const v=n==="edit"&&r?r.split("/").pop().replace(/\.md$/,""):qB(l);if(!v){x("Please enter a name.");return}const b=n==="edit"&&r?r:`${e}/${v}.md`;f(!0),x(null);try{const S=await fetch("/api/wiki/overlay-page",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({vaultPath:t,relativePath:b,content:d})}),C=await S.json();if(!S.ok||!C.success)throw new Error(C.error||`HTTP ${S.status}`);o(b)}catch(S){x(S.message)}finally{f(!1)}},[n,r,l,e,t,d,o]),g=k.useCallback(async()=>{if(!(n!=="edit"||!r)){f(!0),x(null);try{const v=await fetch("/api/wiki/overlay-page",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({vaultPath:t,relativePath:r})}),b=await v.json();if(!v.ok||!b.success)throw new Error(b.error||`HTTP ${v.status}`);o(null)}catch(v){x(v.message)}finally{f(!1)}}},[n,r,t,o]);return i.jsx("div",{className:"wiki-editor-backdrop",onClick:a,role:"presentation",children:i.jsxs("div",{className:"wiki-editor-modal",onClick:v=>v.stopPropagation(),role:"dialog","aria-label":`${n==="create"?"New":"Edit"} ${y}`,"data-testid":"wiki-page-editor",children:[i.jsxs("div",{className:"wiki-editor-header",children:[i.jsx("h2",{children:n==="create"?`New ${y}`:`Edit ${y}`}),i.jsx("button",{type:"button",className:"wiki-editor-close",onClick:a,"aria-label":"Close",children:i.jsx(On,{size:18})})]}),p&&i.jsxs("div",{className:"wiki-editor-error",children:[i.jsx(Or,{size:14})," ",p]}),i.jsxs("div",{className:"wiki-editor-body",children:[n==="create"?i.jsxs("label",{className:"wiki-editor-field",children:[i.jsx("span",{children:"Name"}),i.jsx("input",{type:"text",value:l,onChange:v=>c(v.target.value),placeholder:e==="sop"?"e.g. XHS posting checklist":"e.g. Code commit norm","data-testid":"wiki-editor-name",autoFocus:!0}),l&&i.jsxs("span",{className:"wiki-editor-filename",children:[e,"/",qB(l),".md"]})]}):i.jsxs("div",{className:"wiki-editor-field",children:[i.jsx("span",{children:"File"}),i.jsx("code",{className:"wiki-editor-filename",children:r})]}),i.jsxs("label",{className:"wiki-editor-field grow",children:[i.jsx("span",{children:"Content (markdown)"}),i.jsx("textarea",{value:d,onChange:v=>u(v.target.value),placeholder:`# ${y}
|
|
4953
|
+
|
|
4954
|
+
Describe the ${y.toLowerCase()}…`,"data-testid":"wiki-editor-content",spellCheck:!1})]})]}),i.jsxs("div",{className:"wiki-editor-footer",children:[n==="edit"&&i.jsxs("button",{type:"button",className:"wiki-editor-delete",onClick:g,disabled:h,"data-testid":"wiki-editor-delete",children:[i.jsx(Vi,{size:14})," Delete"]}),i.jsxs("div",{className:"wiki-editor-footer-right",children:[i.jsx("button",{type:"button",className:"wiki-editor-cancel",onClick:a,disabled:h,children:"Cancel"}),i.jsxs("button",{type:"button",className:"wiki-editor-save",onClick:m,disabled:h,"data-testid":"wiki-editor-save",children:[i.jsx($c,{size:14})," ",h?"Saving…":"Save"]})]})]})]})})}const BCe=250;function FCe(t,e){return t.length===0?null:(e?t.find(r=>r.scope==="team"&&r.vaultId===e):void 0)??t.find(r=>r.scope==="project")??t[0]}const UCe={sop:"SOPs","sop-overrides":"SOP Overrides","team-norm":"Team Norms",norms:"Team Norms",okr:"OKRs",okrs:"OKRs",memory:"Memory"};function zCe(t){const e=[],n=[];for(const r of t??[])r.type==="directory"&&r.frozen?e.push(r):n.push(r);return{canonicalNodes:e,workingNodes:n}}function HCe(t){return t.length>0&&t.every(e=>{var n;return(((n=e.children)==null?void 0:n.length)??0)===0})}const GCe={decision:"decisions",pattern:"patterns",gotcha:"gotchas",relationship:"relationships","learning-log":"learnings","loose-md":"loose .md","memory-entry":"agent memory"},WCe={global:"Global",team:"Team",project:"Project",unknown:"Unknown"},XB={global:0,project:1,team:2,unknown:3};function VCe(){const[t]=pp(),e=t.get(Ml),n=t.get("focus"),[r,s]=k.useState([]),[a,o]=k.useState(!0),[l,c]=k.useState(null),[d,u]=k.useState(null),[h,f]=k.useState(null),[p,x]=k.useState(!1),[y,m]=k.useState(null),[g,v]=k.useState(null),[b,S]=k.useState(null),[C,E]=k.useState(!1),[N,T]=k.useState(null),[A,M]=k.useState(null),[P,I]=k.useState(!1),[B,V]=k.useState(null),[K,H]=k.useState(""),[$,L]=k.useState(null),[U,R]=k.useState(!1),[D,G]=k.useState(null),[F,J]=k.useState(!1),[q,te]=k.useState(!0),[z,Q]=k.useState(!1),[re,ie]=k.useState(-1),[de,ee]=k.useState(null),ke=k.useRef(null),ae=k.useRef(null),[ge,xe]=k.useState(null),[Ce,Y]=k.useState(!1),[ve,be]=k.useState(null),[_e,Me]=k.useState(!1),[ne,X]=k.useState(null),[ue,se]=k.useState(new Set);k.useEffect(()=>{if(!d){se(new Set);return}try{const pe=localStorage.getItem(`wiki-tree-collapsed:${d.vaultPath}`);if(pe){const Ae=JSON.parse(pe);if(Array.isArray(Ae)){se(new Set(Ae.filter(lt=>typeof lt=="string")));return}}}catch{}se(new Set)},[d]);const le=k.useCallback(pe=>{se(Ae=>{const lt=new Set(Ae);if(lt.has(pe)?lt.delete(pe):lt.add(pe),d)try{localStorage.setItem(`wiki-tree-collapsed:${d.vaultPath}`,JSON.stringify([...lt]))}catch{}return lt})},[d]),[fe,Te]=k.useState(null),[Ne,He]=k.useState(!1),[$e,De]=k.useState(!1),[qe,Ke]=k.useState(!1),[ce,we]=k.useState(!1),[Ge,me]=k.useState(null),[Oe,je]=k.useState(null),Je=k.useCallback(async()=>{o(!0),c(null);try{const pe=await fetch("/api/wiki/vaults"),Ae=await pe.json();if(!pe.ok||!Ae.success)throw new Error(Ae.error??`HTTP ${pe.status}`);const lt=Ae.vaults.sort((xt,mn)=>{const yn=XB[xt.scope]-XB[mn.scope];return yn!==0?yn:xt.label.localeCompare(mn.label)});s(lt),lt.length>0&&!d&&u(FCe(lt,e))}catch(pe){c(pe instanceof Error?pe.message:String(pe))}finally{o(!1)}},[d,e]),Le=k.useCallback(async pe=>{x(!0),m(null),f(null),v(null),M(null);try{const Ae=await fetch(`/api/wiki/tree?vaultPath=${encodeURIComponent(pe)}`),lt=await Ae.json();if(!Ae.ok||!lt.success)throw new Error(lt.error??`HTTP ${Ae.status}`);f(lt.tree)}catch(Ae){m(Ae instanceof Error?Ae.message:String(Ae))}finally{x(!1)}},[]),Re=k.useCallback(async(pe,Ae)=>{I(!0),V(null),M(null);try{const lt=await fetch(`/api/wiki/page?vaultPath=${encodeURIComponent(pe)}&relativePath=${encodeURIComponent(Ae)}`),xt=await lt.json();if(!lt.ok||!xt.success)throw new Error(xt.error??`HTTP ${lt.status}`);M(xt)}catch(lt){V(lt instanceof Error?lt.message:String(lt))}finally{I(!1)}},[]),We=k.useCallback(async(pe,Ae,lt)=>{R(!0),G(null);try{const xt=lt?`/api/wiki/search-all?q=${encodeURIComponent(Ae)}`:`/api/wiki/search?vaultPath=${encodeURIComponent(pe)}&q=${encodeURIComponent(Ae)}`,mn=await fetch(xt),yn=await mn.json();if(!mn.ok||!yn.success)throw new Error(yn.error??`HTTP ${mn.status}`);L(yn.hits),J(!!yn.truncated)}catch(xt){G(xt instanceof Error?xt.message:String(xt)),L([])}finally{R(!1)}},[]),tt=k.useCallback(async pe=>{var Ae;try{const lt=await fetch("/api/wiki/lint",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({vaultPath:pe,staleDays:60})}),xt=await lt.json();if(!lt.ok||!xt.success){X(null);return}X({missingConcepts:((Ae=xt.report)==null?void 0:Ae.missingConcepts)??[]})}catch{X(null)}},[]),ot=k.useCallback(async()=>{He(!0),me(null);try{const pe=await fetch("/api/wiki/migrate/scan",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({includeAgentMemory:!0})}),Ae=await pe.json();if(!pe.ok||!Ae.success)throw new Error(Ae.error??`HTTP ${pe.status}`);Te({legacyDetected:Ae.legacyDetected,proposedPages:Ae.proposedPages,bootstrapNeeded:Ae.bootstrapNeeded,summary:Ae.summary})}catch(pe){me(pe instanceof Error?pe.message:String(pe))}finally{He(!1)}},[]),pt=k.useCallback(async()=>{De(!0),me(null);try{const pe=await fetch("/api/wiki/migrate/apply",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({confirm:!0,includeAgentMemory:!0})}),Ae=await pe.json();if(!pe.ok||!Ae.success)throw new Error(Ae.error??`HTTP ${pe.status}`);je({legacyDetected:Ae.legacyDetected,proposedPages:Ae.proposedPages,bootstrapNeeded:Ae.bootstrapNeeded,summary:Ae.summary,applied:Ae.applied,skipped:Ae.skipped,bootstrapped:Ae.bootstrapped}),Te(null),Je()}catch(pe){me(pe instanceof Error?pe.message:String(pe))}finally{De(!1)}},[Je]),Xt=k.useCallback(async pe=>{Me(!0),be(null);try{const Ae=await fetch(`/api/wiki/recent?vaultPath=${encodeURIComponent(pe)}&limit=8`),lt=await Ae.json();if(!Ae.ok||!lt.success){be([]);return}be(lt.entries)}catch{be([])}finally{Me(!1)}},[]),Nt=k.useCallback(async(pe,Ae)=>{Y(!0),xe(null);try{const lt=await fetch(`/api/wiki/backlinks?vaultPath=${encodeURIComponent(pe)}&relativePath=${encodeURIComponent(Ae)}`),xt=await lt.json();if(!lt.ok||!xt.success){xe([]);return}xe(xt.backlinks)}catch{xe([])}finally{Y(!1)}},[]);k.useEffect(()=>{Je()},[Je]),k.useEffect(()=>{ot()},[ot]);const Gt=k.useCallback(pe=>{u(pe),v(null),M(null),V(null),xe(null)},[]);k.useEffect(()=>{de&&(d==null?void 0:d.vaultPath)===de.vaultPath&&(v(de.relativePath),ee(null))},[de,d]);const dn=k.useCallback((pe,Ae)=>{if(Ae&&Ae!==(d==null?void 0:d.vaultPath)){const lt=r.find(xt=>xt.vaultPath===Ae);if(lt){Gt(lt),ee({vaultPath:Ae,relativePath:pe}),H(""),Q(!1);return}}v(pe),H(""),Q(!1)},[d,r,Gt]),Bn=k.useCallback(pe=>{var lt;if(pe.key==="Escape"){K&&H(""),Q(!1),(lt=ae.current)==null||lt.blur();return}const Ae=$??[];if(pe.key==="ArrowDown")pe.preventDefault(),ie(xt=>Math.min(xt+1,Ae.length-1));else if(pe.key==="ArrowUp")pe.preventDefault(),ie(xt=>Math.max(xt-1,0));else if(pe.key==="Enter"){const xt=Ae[re];xt&&dn(xt.relativePath,xt.vaultPath)}},[$,re,K,dn]);k.useEffect(()=>{if(!z)return;const pe=Ae=>{ke.current&&!ke.current.contains(Ae.target)&&Q(!1)};return document.addEventListener("mousedown",pe),()=>document.removeEventListener("mousedown",pe)},[z]),k.useEffect(()=>{d?(Le(d.vaultPath),Xt(d.vaultPath),tt(d.vaultPath)):(be(null),X(null))},[d,Le,Xt,tt]),k.useEffect(()=>{d&&g?(Re(d.vaultPath,g),Nt(d.vaultPath,g)):xe(null)},[d,g,Re,Nt]),k.useEffect(()=>{if(!q&&!d)return;const pe=K.trim();if(pe.length===0){L(null),G(null),J(!1);return}const Ae=setTimeout(()=>{We((d==null?void 0:d.vaultPath)??"",pe,q)},BCe);return()=>clearTimeout(Ae)},[K,d,We,q]),k.useEffect(()=>{H(""),L(null),G(null)},[d==null?void 0:d.vaultPath]);const Qt=k.useMemo(()=>{if(!h)return 0;let pe=0;const Ae=lt=>{for(const xt of lt)xt.type==="file"&&pe++,xt.children&&Ae(xt.children)};return Ae(h),pe},[h]),Yt=k.useMemo(()=>{const pe=[];if(!h)return pe;const Ae=lt=>{for(const xt of lt)xt.type==="file"&&pe.push(xt.relativePath),xt.children&&Ae(xt.children)};return Ae(h),pe},[h]),{canonicalNodes:nn,workingNodes:Nn}=k.useMemo(()=>zCe(h),[h]);k.useEffect(()=>{if(!n||!d||!h)return;const pe=`${d.vaultPath}:${n}`;if(b===pe)return;const Ae=Yt.find(lt=>lt===n||lt.startsWith(`${n}/`));Ae&&v(Ae),S(pe)},[n,d,h,Yt,b]);const Hn=k.useCallback(pe=>{const Ae=ZCe(pe,Yt);Ae?v(Ae):V(`Wikilink target not found in this vault: [[${pe}]]`)},[Yt]);return i.jsxs("div",{className:"wiki-page",children:[i.jsxs("div",{className:"wiki-header",children:[i.jsxs("div",{className:"wiki-header-main",children:[i.jsxs("div",{className:"wiki-header-title",children:[i.jsx(Ex,{size:22}),i.jsx("h1",{children:"Wiki"})]}),i.jsxs("p",{className:"wiki-header-subtitle",children:["Agent-curated knowledge across global, team, and project vaults. Reads only — writes happen via the ",i.jsx("code",{children:"wiki-queue-add"})," →"," ",i.jsx("code",{children:"wiki-process-queue"})," agent flow."]})]}),i.jsxs("div",{className:"wiki-global-search",ref:ke,children:[i.jsxs("div",{className:`wiki-gsearch-box${z?" open":""}`,children:[i.jsx(Z2,{size:15,className:"wiki-search-icon"}),i.jsx("input",{ref:ae,type:"text",className:"wiki-gsearch-input",placeholder:"Search the wiki…",value:K,onChange:pe=>{H(pe.target.value),Q(!0),ie(-1)},onFocus:()=>Q(!0),onKeyDown:Bn,"aria-label":"Search wiki","aria-expanded":z,role:"combobox","aria-controls":"wiki-search-overlay"}),K?i.jsx("button",{type:"button",className:"wiki-search-clear",onClick:()=>{var pe;H(""),ie(-1),(pe=ae.current)==null||pe.focus()},"aria-label":"Clear search",children:i.jsx(On,{size:14})}):i.jsxs("div",{className:"wiki-search-scope",role:"radiogroup","aria-label":"Search scope",children:[i.jsx("button",{type:"button",role:"radio","aria-checked":!q,"aria-label":"Search this vault",title:"This vault",className:`wiki-search-scope-btn${q?"":" active"}`,onClick:()=>te(!1),children:i.jsx(Jg,{size:13})}),i.jsx("button",{type:"button",role:"radio","aria-checked":q,"aria-label":"Search all vaults",title:"All vaults",className:`wiki-search-scope-btn${q?" active":""}`,onClick:()=>te(!0),children:i.jsx(_3,{size:13})})]})]}),z&&K.trim().length>0&&i.jsxs("div",{className:"wiki-search-overlay",id:"wiki-search-overlay",role:"listbox",children:[i.jsxs("div",{className:"wiki-overlay-scope",role:"radiogroup","aria-label":"Search scope",children:[i.jsx("span",{className:"wiki-overlay-scope-label",children:"Scope"}),i.jsxs("button",{type:"button",role:"radio","aria-checked":!q,className:`wiki-overlay-scope-btn${q?"":" active"}`,onClick:()=>te(!1),"data-testid":"search-scope-this",children:[i.jsx(Jg,{size:12})," This vault"]}),i.jsxs("button",{type:"button",role:"radio","aria-checked":q,className:`wiki-overlay-scope-btn${q?" active":""}`,onClick:()=>te(!0),"data-testid":"search-scope-all",children:[i.jsx(_3,{size:12})," All vaults"]})]}),i.jsxs("div",{className:"wiki-overlay-body",children:[D&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",D]}),U&&i.jsx("div",{className:"wiki-loading",children:"Searching…"}),!U&&$&&$.length>0&&i.jsx($Ce,{hits:$,selected:g,showVault:q,activeIndex:re,onSelect:dn}),!U&&$&&$.length===0&&i.jsxs("div",{className:"wiki-empty",children:["No results for ",i.jsx("code",{children:K}),"."]})]}),$&&$.length>0&&i.jsxs("div",{className:"wiki-overlay-footer",children:[$.length," match",$.length===1?"":"es",F?"+":""," · ↑↓ navigate · ↵ open · Esc close"]})]})]})]}),i.jsx(qCe,{scan:fe,loading:Ne,applying:$e,expanded:ce,dismissed:qe,error:Ge,result:Oe,onApply:pt,onToggle:()=>we(pe=>!pe),onDismiss:()=>Ke(!0),onCloseResult:()=>je(null)}),i.jsxs("div",{className:"wiki-grid",children:[i.jsxs("aside",{className:"wiki-vaults",children:[i.jsxs("div",{className:"wiki-pane-header",children:[i.jsx("span",{children:"Vaults"}),i.jsx("button",{type:"button",className:"wiki-refresh",onClick:()=>Je(),"aria-label":"Refresh vaults",disabled:a,children:i.jsx(zn,{size:14,className:a?"spin":""})})]}),l&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",l]}),a&&!r.length&&i.jsx("div",{className:"wiki-loading",children:"Loading…"}),i.jsx("div",{className:"wiki-vault-list",children:r.map(pe=>{const Ae=(d==null?void 0:d.vaultPath)===pe.vaultPath;return i.jsxs("button",{type:"button",className:`wiki-vault-item${Ae?" active":""}`,onClick:()=>Gt(pe),children:[i.jsxs("div",{className:"wiki-vault-line",children:[i.jsx("span",{className:`wiki-scope-pill scope-${pe.scope}`,children:WCe[pe.scope]}),i.jsx("span",{className:"wiki-vault-label",title:pe.vaultPath,children:pe.label})]}),pe.stats&&i.jsxs("div",{className:"wiki-vault-stats",children:[pe.stats.totalMdCount," pages",pe.stats.queue.pending>0&&i.jsxs("span",{className:"wiki-vault-pending",children:[" ","· ",pe.stats.queue.pending," pending"]})]})]},pe.vaultPath)})})]}),i.jsxs("section",{className:"wiki-tree-pane",children:[i.jsx("div",{className:"wiki-pane-header",children:i.jsxs("span",{children:[d?d.label:"Pick a vault",d&&h&&i.jsxs("span",{className:"wiki-page-count",children:[" · ",Qt]})]})}),y&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",y]}),p&&i.jsx("div",{className:"wiki-loading",children:"Loading tree…"}),h&&nn.length>0&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"wiki-tree-group-label",title:"Schema-frozen folders — the source of truth referenced by the engine. Agents can't overwrite these via the wiki.",children:[i.jsx(qb,{size:11})," Canonical · source of truth"]}),nn.some(pe=>pe.name==="sop"||pe.name==="team-norm")&&i.jsxs("div",{className:"wiki-canonical-actions",children:[i.jsxs("button",{type:"button",className:"wiki-tree-group-action",onClick:()=>E(!0),"data-testid":"open-sop-catalog",title:"Browse the SOP catalog and install SOPs into this team",children:[i.jsx(gp,{size:11})," Install SOP"]}),i.jsx("button",{type:"button",className:"wiki-tree-group-action",onClick:()=>T({folder:"sop",mode:"create"}),"data-testid":"new-sop",title:"Author a custom SOP for this team",children:"+ SOP"}),i.jsx("button",{type:"button",className:"wiki-tree-group-action",onClick:()=>T({folder:"team-norm",mode:"create"}),"data-testid":"new-norm",title:"Author a team norm",children:"+ Norm"})]}),HCe(nn)&&i.jsxs("p",{className:"wiki-tree-canonical-note",children:["Reserved folders. Team SOPs & norms are currently served to agents straight from ",i.jsx("code",{children:"config/sops/"}),"; they haven't been materialised as wiki pages yet."]}),i.jsx(GT,{nodes:nn,selected:g,onSelect:pe=>v(pe),collapsed:ue,onToggleFolder:le,labelOverrides:UCe,rootClassName:"wiki-tree--flush"}),Nn.length>0&&i.jsx("div",{className:"wiki-tree-group-label",children:"Working notes"})]}),h&&Nn.length>0&&i.jsx(GT,{nodes:Nn,selected:g,onSelect:pe=>v(pe),collapsed:ue,onToggleFolder:le}),h&&h.length===0&&!p&&i.jsxs("div",{className:"wiki-empty",children:["Empty vault — no ",i.jsx("code",{children:".md"})," pages yet. They land here once agents queue + ingest worth-saving content."]})]}),i.jsxs("main",{className:"wiki-page-pane",children:[i.jsxs("div",{className:"wiki-pane-header",children:[i.jsx("span",{children:g??"Pick a page"}),A&&g&&(g.startsWith("sop/")||g.startsWith("team-norm/"))&&i.jsxs("button",{type:"button",className:"wiki-tree-group-action","data-testid":"edit-overlay-page",onClick:()=>T({folder:g.startsWith("team-norm/")?"team-norm":"sop",mode:"edit",path:g,content:A.content}),children:[i.jsx(E1,{size:11})," Edit"]}),A&&i.jsxs("span",{className:"wiki-page-meta",children:[A.bytes," B · modified"," ",new Date(A.modifiedAt).toLocaleString()]})]}),B&&i.jsxs("div",{className:"wiki-error",children:[i.jsx(Or,{size:14})," ",B]}),P&&i.jsx("div",{className:"wiki-loading",children:"Loading page…"}),A&&i.jsxs("div",{className:"wiki-page-body",children:[i.jsx("div",{className:"wiki-page-content",children:i.jsx(PCe,{content:A.content,onWikilinkClick:Hn})}),i.jsx(KCe,{backlinks:ge,loading:Ce,onSelect:pe=>v(pe)})]}),!g&&!P&&!B&&i.jsxs("div",{className:"wiki-empty-with-recent",children:[i.jsx("div",{className:"wiki-empty",children:"Click a page on the left to view its markdown content. Frozen folders (sop/, memory/, …) are visible but managed by the OSS code path — not editable here."}),d&&ne&&ne.missingConcepts.length>0&&i.jsx(XCe,{concepts:ne.missingConcepts,onSelect:pe=>{H(pe),Q(!0)}}),d&&i.jsx(YCe,{entries:ve,loading:_e,onSelect:pe=>v(pe)})]})]})]}),C&&d&&i.jsx(LCe,{vaultPath:d.vaultPath,onClose:()=>E(!1),onChanged:()=>Le(d.vaultPath)}),N&&d&&i.jsx(OCe,{vaultPath:d.vaultPath,folder:N.folder,mode:N.mode,initialPath:N.path,initialContent:N.content,onClose:()=>T(null),onSaved:pe=>{T(null),Le(d.vaultPath),v(pe)}})]})}function GT({nodes:t,selected:e,onSelect:n,collapsed:r,onToggleFolder:s,labelOverrides:a,rootClassName:o,depth:l=0}){return i.jsx("ul",{className:`wiki-tree${o?` ${o}`:""}`,style:{paddingLeft:l===0?0:12},children:t.map(c=>{var u;if(c.type==="directory"){const h=c.frozenDescription?`Frozen: ${c.frozenDescription}`:"Frozen — OSS code references this path by name. Agents cannot write here via wiki-ingest.",f=r.has(c.relativePath),p=((u=c.children)==null?void 0:u.length)??0;return i.jsxs("li",{className:"wiki-tree-dir",children:[i.jsxs("button",{type:"button",className:"wiki-tree-row dir",onClick:()=>s(c.relativePath),"aria-expanded":!f,"aria-label":f?"Expand folder":"Collapse folder",children:[f?i.jsx(Si,{size:12,className:"wiki-tree-chevron"}):i.jsx(ei,{size:12,className:"wiki-tree-chevron"}),i.jsx(X2,{size:14}),i.jsx("span",{className:"wiki-tree-name",children:l===0&&(a==null?void 0:a[c.name])||c.name}),p>0&&i.jsx("span",{className:"wiki-tree-child-count",children:p}),c.frozen&&i.jsxs("span",{className:"wiki-frozen-pill",title:h,children:[i.jsx(qb,{size:10})," frozen"]})]}),!f&&p>0&&i.jsx(GT,{nodes:c.children??[],selected:e,onSelect:n,collapsed:r,onToggleFolder:s,depth:l+1}),!f&&p===0&&i.jsx("div",{className:"wiki-tree-empty-hint",children:"No pages yet"})]},c.relativePath)}const d=e===c.relativePath;return i.jsx("li",{children:i.jsxs("button",{type:"button",className:`wiki-tree-row file${d?" active":""}`,onClick:()=>n(c.relativePath),children:[i.jsx(Uo,{size:14}),i.jsx("span",{className:"wiki-tree-name",children:c.name}),c.frozen&&i.jsx("span",{className:"wiki-frozen-pill",title:"Frozen folder",children:i.jsx(qb,{size:10})})]})},c.relativePath)})})}function $Ce({hits:t,selected:e,showVault:n,activeIndex:r,onSelect:s}){return i.jsx("ul",{className:"wiki-search-results",children:t.map((a,o)=>{const l=e===a.relativePath&&!a.vaultPath,c=o===r;return i.jsx("li",{children:i.jsxs("button",{type:"button",role:"option","aria-selected":c,className:`wiki-search-hit${l?" active":""}${c?" kbd-active":""}`,onClick:()=>s(a.relativePath,a.vaultPath),children:[i.jsxs("div",{className:"wiki-search-path",children:[i.jsx(Uo,{size:13})," ",a.relativePath,a.matchCount>0&&i.jsxs("span",{className:"wiki-search-count",children:[" · ",a.matchCount]}),n&&a.vaultLabel&&i.jsx("span",{className:"wiki-search-vault",children:a.vaultLabel})]}),a.snippets.length>0&&i.jsx("ul",{className:"wiki-search-snippets",children:a.snippets.map(d=>i.jsxs("li",{children:[i.jsxs("span",{className:"wiki-search-line",children:["L",d.lineNumber]})," ",d.text]},d.lineNumber))})]})},`${a.vaultPath??""}:${a.relativePath}`)})})}function KCe({backlinks:t,loading:e,onSelect:n}){return e?i.jsxs("div",{className:"wiki-backlinks",children:[i.jsxs("div",{className:"wiki-backlinks-header",children:[i.jsx(_A,{size:13})," Referenced by"]}),i.jsx("div",{className:"wiki-loading",children:"Scanning…"})]}):!t||t.length===0?null:i.jsxs("div",{className:"wiki-backlinks",children:[i.jsxs("div",{className:"wiki-backlinks-header",children:[i.jsx(_A,{size:13})," Referenced by"," ",i.jsx("span",{className:"wiki-backlinks-count",children:t.length})]}),i.jsx("ul",{className:"wiki-backlinks-list",children:t.map(r=>i.jsx("li",{children:i.jsxs("button",{type:"button",className:"wiki-backlink-row",onClick:()=>n(r.relativePath),children:[i.jsxs("div",{className:"wiki-backlink-path",children:[i.jsx(Uo,{size:12})," ",r.relativePath]}),r.snippets.map(s=>i.jsxs("div",{className:"wiki-backlink-snippet",children:[i.jsxs("span",{className:"wiki-search-line",children:["L",s.lineNumber]})," ",s.text]},s.lineNumber))]})},r.relativePath))})]})}function qCe({scan:t,loading:e,applying:n,expanded:r,dismissed:s,error:a,result:o,onApply:l,onToggle:c,onDismiss:d,onCloseResult:u}){if(o)return i.jsx("div",{className:"wiki-migrate-banner wiki-migrate-success",children:i.jsxs("div",{className:"wiki-migrate-row",children:[i.jsx(Wu,{size:16}),i.jsxs("div",{className:"wiki-migrate-text",children:["Migration complete — ",o.applied??0," page",o.applied===1?"":"s"," imported",o.skipped?`, ${o.skipped} skipped`:"",o.bootstrapped&&o.bootstrapped.length>0?`; ${o.bootstrapped.length} vault${o.bootstrapped.length===1?"":"s"} bootstrapped`:"","."]}),i.jsx("button",{type:"button",className:"wiki-migrate-dismiss",onClick:u,"aria-label":"Close",children:i.jsx(On,{size:14})})]})});if(e&&!t||s||!(t!=null&&t.legacyDetected))return null;const h=t.proposedPages.filter(y=>!y.skipReason);if(h.length===0&&!t.bootstrapNeeded.project)return null;const f={};for(const y of h){const m=GCe[y.sourceType]??y.sourceType;f[m]=(f[m]??0)+1}const p=Object.entries(f).filter(([,y])=>y>0).map(([y,m])=>`${m} ${y}`).join(" · "),x=t.summary.alreadyMigrated??0;return i.jsxs("div",{className:"wiki-migrate-banner",children:[i.jsxs("div",{className:"wiki-migrate-row",children:[i.jsx(nU,{size:16}),i.jsxs("div",{className:"wiki-migrate-text",children:["Detected legacy ",i.jsx("code",{children:".crewly/knowledge/"})," data:"," ",i.jsx("strong",{children:h.length})," new page",h.length===1?"":"s"," to import",p&&i.jsxs("span",{className:"wiki-migrate-counts",children:[" (",p,")"]}),x>0&&i.jsxs("span",{className:"wiki-migrate-counts",children:[" ","· ",i.jsx("strong",{children:x})," already migrated (skipped)"]}),".",t.bootstrapNeeded.project||t.bootstrapNeeded.global||t.bootstrapNeeded.teams.length>0?i.jsxs("span",{className:"wiki-migrate-counts",children:[" ","Will also bootstrap"," ",[t.bootstrapNeeded.project&&"project vault",t.bootstrapNeeded.global&&"global vault",t.bootstrapNeeded.teams.length>0&&`${t.bootstrapNeeded.teams.length} team vault${t.bootstrapNeeded.teams.length===1?"":"s"}`].filter(Boolean).join(", "),"."]}):null]}),i.jsx("button",{type:"button",className:"wiki-migrate-btn",onClick:c,children:r?"Hide preview":"Preview"}),i.jsx("button",{type:"button",className:"wiki-migrate-btn primary",onClick:l,disabled:n,children:n?"Migrating…":"Migrate now"}),i.jsx("button",{type:"button",className:"wiki-migrate-dismiss",onClick:d,"aria-label":"Dismiss for this session",children:i.jsx(On,{size:14})})]}),a&&i.jsxs("div",{className:"wiki-migrate-error",children:[i.jsx(Or,{size:14})," ",a]}),r&&i.jsxs("ul",{className:"wiki-migrate-preview",children:[h.slice(0,40).map(y=>i.jsxs("li",{children:[i.jsx("span",{className:`wiki-migrate-type type-${y.sourceType}`,children:y.sourceType}),i.jsx("span",{className:"wiki-migrate-title",children:y.title}),i.jsx("span",{className:"wiki-migrate-arrow",children:"→"}),i.jsx("span",{className:"wiki-migrate-target",children:y.targetRelativePath}),y.routingUncertain&&i.jsx("span",{className:"wiki-migrate-uncertain",title:"Body mentions cross-project signals — review with wiki-lint after migration.",children:"uncertain scope"})]},y.sourceId)),h.length>40&&i.jsxs("li",{className:"wiki-migrate-more",children:["… ",h.length-40," more"]})]})]})}function XCe({concepts:t,onSelect:e}){return!t||t.length===0?null:i.jsxs("div",{className:"wiki-missing-concepts",children:[i.jsxs("div",{className:"wiki-missing-header",children:[i.jsx(IK,{size:13})," Missing concepts"," ",i.jsx("span",{className:"wiki-missing-count",children:t.length})]}),i.jsx("div",{className:"wiki-missing-hint",children:"These wikilink targets are referenced 3+ times across the vault but have no dedicated page. Authoring one for each will compound the wiki's value. Click to find references via search."}),i.jsx("ul",{className:"wiki-missing-list",children:t.slice(0,12).map(n=>i.jsx("li",{children:i.jsxs("button",{type:"button",className:"wiki-missing-row",onClick:()=>e(n.target),title:`Referenced in ${n.sources.length} page${n.sources.length===1?"":"s"}`,children:[i.jsxs("span",{className:"wiki-missing-count-badge",children:[n.referenceCount,"×"]}),i.jsxs("span",{className:"wiki-missing-target",children:["[[",n.target,"]]"]})]})},n.target))})]})}function YCe({entries:t,loading:e,onSelect:n}){return e?i.jsxs("div",{className:"wiki-recent",children:[i.jsxs("div",{className:"wiki-recent-header",children:[i.jsx(fr,{size:13})," Recently updated"]}),i.jsx("div",{className:"wiki-loading",children:"Loading…"})]}):!t||t.length===0?null:i.jsxs("div",{className:"wiki-recent",children:[i.jsxs("div",{className:"wiki-recent-header",children:[i.jsx(fr,{size:13})," Recently updated"]}),i.jsx("ul",{className:"wiki-recent-list",children:t.map(r=>i.jsx("li",{children:i.jsxs("button",{type:"button",className:"wiki-recent-row",onClick:()=>n(r.relativePath),children:[i.jsxs("div",{className:"wiki-recent-path",children:[i.jsx(Uo,{size:12})," ",r.relativePath]}),i.jsx("div",{className:"wiki-recent-meta",children:JCe(r.modifiedAt)})]})},r.relativePath))})]})}function JCe(t){const e=Date.parse(t);if(!Number.isFinite(e))return t;const n=Date.now()-e,s=60*1e3,a=60*s,o=24*a;return n<s?"just now":n<a?`${Math.floor(n/s)} min ago`:n<o?`${Math.floor(n/a)} h ago`:n<7*o?`${Math.floor(n/o)} d ago`:new Date(e).toLocaleDateString()}function ZCe(t,e){const n=t.trim().toLowerCase();if(!n)return null;const r=n.endsWith(".md")?n:`${n}.md`,s=n.endsWith(".md")?n.slice(0,-3):n;let a=null,o=null;for(const l of e){const c=l.toLowerCase();if(c===r||c===n)return l;if(!a&&(c.endsWith(`/${r}`)||c.endsWith(`/${n}`))&&(a=l),!o){const d=c.split("/").pop()??"";(d.endsWith(".md")?d.slice(0,-3):d)===s&&(o=l)}}return a??o}const QCe="/api",eEe=5e3;function tEe(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useRef(!0),l=k.useCallback(async()=>{try{const u=await Ye.get(`${QCe}/monitoring/pty-status`);if(!o.current)return;if(u.data.success&&Array.isArray(u.data.data)){const h=u.data.data.map(f=>({sessionName:f.sessionName||f.id||"unknown",agentName:f.agentName||f.name||f.sessionName||"Unknown Agent",role:f.role||"agent",agentStatus:f.agentStatus||f.status||"inactive",workingStatus:f.workingStatus||"idle",ptyPid:f.ptyPid??f.pid??null,memoryUsage:f.memoryUsage??null,uptimeSeconds:f.uptimeSeconds??null,fsScope:f.fsScope||"sandboxed",netScope:f.netScope||"localhost"}));e(h),a(null)}else e([])}catch{o.current&&(a("Failed to fetch PTY sessions"),e([]))}},[]);k.useEffect(()=>{o.current=!0,(async()=>{await l(),o.current&&r(!1)})();const h=setInterval(l,eEe);return()=>{o.current=!1,clearInterval(h)}},[l]);const c={totalAgents:t.length,isolatedCount:t.length,sharedCount:0,status:(t.length>0,"healthy")},d=k.useCallback(async()=>{await l()},[l]);return{sessions:t,summary:c,loading:n,error:s,refresh:d}}const nEe="/api",YB=[{id:"mock-1",timestamp:new Date(Date.now()-1e3*60*5).toISOString(),sessionName:"agent-sam",agentName:"Sam",toolName:"git push origin feat/auth",outcome:"approved",riskLevel:"medium"},{id:"mock-2",timestamp:new Date(Date.now()-1e3*60*10).toISOString(),sessionName:"agent-sam",agentName:"Sam",toolName:"npm install jsonwebtoken",outcome:"auto",riskLevel:"low"},{id:"mock-3",timestamp:new Date(Date.now()-1e3*60*15).toISOString(),sessionName:"agent-leo",agentName:"Leo",toolName:"rm -rf dist/",outcome:"denied",riskLevel:"high",reason:"Destructive operation on build directory"},{id:"mock-4",timestamp:new Date(Date.now()-1e3*60*20).toISOString(),sessionName:"agent-sam",agentName:"Sam",toolName:"git push --force main",outcome:"denied",riskLevel:"high",reason:"Force push to protected branch"},{id:"mock-5",timestamp:new Date(Date.now()-1e3*60*25).toISOString(),sessionName:"agent-ava",agentName:"Ava",toolName:"npx tailwindcss build",outcome:"auto",riskLevel:"low"},{id:"mock-6",timestamp:new Date(Date.now()-1e3*60*30).toISOString(),sessionName:"agent-leo",agentName:"Leo",toolName:'git commit -m "feat: ..."',outcome:"sop_block",riskLevel:"medium",reason:"Commit does not follow project SOP"}];function rEe(t){switch(t){case"approved":return"approved";case"rejected":return"denied";case"denied":return"denied";case"auto":return"auto";case"sop_block":return"sop_block";default:return"auto"}}function sEe(){const[t,e]=k.useState([]),[n,r]=k.useState({}),[s,a]=k.useState(!0),[o,l]=k.useState(null),c=k.useCallback(async f=>{try{const p=await Ye.get(`${nEe}/approvals/audit`,{signal:f});if(p.data.success&&Array.isArray(p.data.data)){const x=p.data.data.map(y=>({id:y.approvalId||y.id||`audit-${Date.now()}-${Math.random()}`,timestamp:y.timestamp,sessionName:y.sessionName||"",agentName:y.resolvedBy||y.agentName||y.sessionName||"Unknown",toolName:y.toolName||"",outcome:rEe(y.action||y.outcome),riskLevel:y.riskLevel||"medium",reason:y.reason}));e(x),l(null)}else e(YB)}catch(p){if(Ye.isCancel(p))return;e(YB),l(null)}finally{a(!1)}},[]);k.useEffect(()=>{const f=new AbortController;return c(f.signal),()=>f.abort()},[c]);const d=k.useMemo(()=>t.filter(f=>!(n.agent&&f.agentName.toLowerCase()!==n.agent.toLowerCase()||n.outcome&&f.outcome!==n.outcome)),[t,n]),u=k.useMemo(()=>{const f=new Date().toDateString(),p=t.filter(x=>new Date(x.timestamp).toDateString()===f);return{totalToday:p.length,deniedToday:p.filter(x=>x.outcome==="denied").length,bypassedToday:0,status:"enforced"}},[t]),h=k.useCallback(async()=>{a(!0),await c()},[c]);return{events:t,filteredEvents:d,summary:u,filter:n,setFilter:r,loading:s,error:o,refresh:h}}const iEe="/api",JB=[{path:"~/.crewly/memory/",type:"Agent Memory",sizeBytes:12.4*1024*1024,isExternal:!1},{path:"~/.crewly/knowledge/",type:"Vector Store",sizeBytes:28.1*1024*1024,isExternal:!1},{path:"~/.crewly/sessions/",type:"PTY Logs",sizeBytes:7.7*1024*1024,isExternal:!1},{path:"~/.crewly/teams/",type:"Config",sizeBytes:.3*1024*1024,isExternal:!1},{path:"~/.crewly/projects/",type:"Metadata",sizeBytes:.1*1024*1024,isExternal:!1}];function WT(t){if(t===0)return"0 B";const e=["B","KB","MB","GB"],n=Math.floor(Math.log(t)/Math.log(1024));return`${(t/Math.pow(1024,n)).toFixed(1)} ${e[n]}`}function aEe(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),o=k.useCallback(async d=>{try{const u=await Ye.get(`${iEe}/system/storage`,{signal:d});u.data.success&&Array.isArray(u.data.data)?(e(u.data.data),a(null)):e(JB)}catch(u){if(Ye.isCancel(u))return;e(JB),a(null)}finally{r(!1)}},[]);k.useEffect(()=>{const d=new AbortController;return o(d.signal),()=>d.abort()},[o]);const l=k.useMemo(()=>({totalLocalBytes:t.filter(u=>!u.isExternal).reduce((u,h)=>u+h.sizeBytes,0),externalConnections:t.filter(u=>u.isExternal).length,cloudSync:"disabled",status:"secure",lastScan:new Date().toISOString()}),[t]),c=k.useCallback(async()=>{r(!0),await o()},[o]);return{entries:t,summary:l,loading:n,error:s,refresh:c}}const oEe={active:"bg-emerald-400",online:"bg-emerald-400",paired:"bg-emerald-400",waiting:"bg-yellow-400",connecting:"bg-yellow-400",inactive:"bg-gray-500",disconnected:"bg-gray-500",offline:"bg-gray-500",error:"bg-rose-400"},lEe={sm:"h-2 w-2",md:"h-2.5 w-2.5",lg:"h-3 w-3"},cEe=new Set(["active","online","connecting"]),Gc=({status:t,size:e="md",pulse:n,className:r=""})=>{const s=n??cEe.has(t),a=oEe[t]??"bg-gray-500",o=["inline-block rounded-full",lEe[e],a,s?"animate-pulse":"",r].filter(Boolean).join(" ");return i.jsx("span",{className:o,role:"status","aria-label":t,"data-testid":"status-dot"})};Gc.displayName="StatusDot";const ZB=["border-primary","border-primary/80","border-primary/60","border-primary/50","border-primary/40"];function dEe(t){if(t===null)return"N/A";const e=Math.floor(t/3600),n=Math.floor(t%3600/60);return`${e}h${n.toString().padStart(2,"0")}m`}function QB(t){return t===null?"N/A":`${Math.round(t/(1024*1024))}MB`}const G9=({sessions:t,loading:e})=>{const[n,r]=k.useState(!0),[s,a]=k.useState(null),o=()=>r(d=>!d),l=d=>{a(u=>u===d?null:d)},c=(d,u)=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),l(u))};return i.jsxs(Ot,{padding:"none","aria-labelledby":"pty-map-heading",role:"region",children:[i.jsxs("button",{type:"button",onClick:o,className:"flex items-center justify-between w-full px-6 py-4 text-left","aria-expanded":n,"aria-controls":"pty-map-content",children:[i.jsxs("h2",{id:"pty-map-heading",className:"text-lg font-semibold text-text-primary-dark flex items-center gap-2",children:[i.jsx(go,{size:20,"aria-hidden":"true",className:"text-primary"}),"PTY Isolation Map"]}),n?i.jsx(k1,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"}):i.jsx(ei,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"})]}),n&&i.jsx("div",{id:"pty-map-content",className:"px-6 pb-6",children:e?i.jsx(sr,{size:"sm",text:"Loading PTY sessions..."}):t.length===0?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",children:"No active agent sessions"}):i.jsxs("div",{role:"img","aria-label":`PTY isolation map showing ${t.length} isolated agent sessions with no lateral access between them`,children:[t.map((d,u)=>i.jsxs("div",{children:[i.jsxs("div",{role:"button",tabIndex:0,onClick:()=>l(d.sessionName),onKeyDown:h=>c(h,d.sessionName),className:`flex items-start gap-4 p-4 rounded-lg border-l-4 bg-zinc-900/50 cursor-pointer hover:bg-zinc-800/50 transition-colors ${ZB[u%ZB.length]}`,"aria-expanded":s===d.sessionName,"data-testid":`pty-node-${d.sessionName}`,children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx("span",{className:"font-semibold text-text-primary-dark text-sm",children:d.agentName}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["(",d.role,")"]}),i.jsxs("span",{className:"inline-flex items-center gap-1 text-xs",children:[i.jsx(Gc,{status:d.agentStatus==="active"?"active":"inactive",size:"sm"}),i.jsx("span",{className:d.agentStatus==="active"?"text-emerald-400":"text-text-secondary-dark",children:d.agentStatus==="active"?"Active":d.agentStatus})]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark",children:["working: ",d.workingStatus]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark font-mono space-y-0.5 text-right flex-shrink-0",children:[i.jsxs("div",{children:["PTY pid:",d.ptyPid??"N/A"]}),i.jsxs("div",{children:["mem: ",QB(d.memoryUsage)]}),i.jsxs("div",{children:["uptime: ",dEe(d.uptimeSeconds)]})]}),i.jsxs("div",{className:"text-xs text-text-secondary-dark font-mono space-y-0.5 text-right flex-shrink-0",children:[i.jsxs("div",{children:["fs: ",d.fsScope]}),i.jsxs("div",{children:["net: ",d.netScope]})]})]}),s===d.sessionName&&i.jsxs("div",{className:"ml-4 p-3 bg-zinc-900/30 rounded-b-lg border-l border-border-dark text-xs text-text-secondary-dark font-mono",children:[i.jsxs("div",{children:["Session: ",d.sessionName]}),i.jsxs("div",{children:["Process ID: ",d.ptyPid??"Not available"]}),i.jsxs("div",{children:["Memory: ",QB(d.memoryUsage)]}),i.jsxs("div",{children:["Filesystem: ",d.fsScope," (sandboxed)"]}),i.jsxs("div",{children:["Network: ",d.netScope," only"]})]}),u<t.length-1&&i.jsxs("div",{className:"flex items-center gap-2 py-2 pl-6","aria-hidden":"true",children:[i.jsx("div",{className:"w-px h-4 bg-border-dark"}),i.jsx(On,{size:12,className:"text-red-400"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"(no lateral access)"})]})]},d.sessionName)),i.jsxs("div",{className:"flex items-center gap-4 mt-4 pt-3 border-t border-border-dark text-xs text-text-secondary-dark",children:[i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Gc,{status:"active",size:"sm"}),"Active"]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Gc,{status:"inactive",size:"sm"}),"Inactive"]}),i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(On,{size:10,className:"text-red-400","aria-hidden":"true"}),"No cross-session access"]})]})]})})]})};G9.displayName="PtyIsolationMap";const Dv={auto:{label:"Auto",variant:"success",icon:i.jsx(fa,{size:12})},approved:{label:"Approved",variant:"success",icon:i.jsx(fa,{size:12})},denied:{label:"Denied",variant:"error",icon:i.jsx(Fl,{size:12})},sop_block:{label:"SOP Block",variant:"warning",icon:i.jsx(mp,{size:12})}},e4=10;function uEe(t){return new Date(t).toLocaleTimeString("en-US",{hour12:!1})}function hEe(t){const e=["Timestamp","Agent","Tool/Command","Outcome","Risk Level","Reason"],n=t.map(l=>[l.timestamp,l.agentName,l.toolName,l.outcome,l.riskLevel,l.reason||""]),r=[e.join(","),...n.map(l=>l.map(c=>`"${c}"`).join(","))].join(`
|
|
4955
|
+
`),s=new Blob([r],{type:"text/csv"}),a=URL.createObjectURL(s),o=document.createElement("a");o.href=a,o.download=`approval-audit-${new Date().toISOString().split("T")[0]}.csv`,o.click(),URL.revokeObjectURL(a)}const W9=({events:t,filter:e,onFilterChange:n,loading:r})=>{const[s,a]=k.useState(!0),[o,l]=k.useState(!1),[c,d]=k.useState(e4),u=k.useMemo(()=>t.slice(0,c),[t,c]),h=k.useMemo(()=>Array.from(new Set(t.map(g=>g.agentName))),[t]),f=()=>a(g=>!g),p=g=>{n({...e,agent:g}),l(!1)},x=g=>{n({...e,outcome:g}),l(!1)},y=()=>{hEe(t)},m=()=>{d(g=>g+e4)};return i.jsxs(Ot,{padding:"none",role:"region","aria-labelledby":"audit-log-heading",children:[i.jsxs("div",{className:"flex items-center justify-between px-6 py-4",children:[i.jsxs("button",{type:"button",onClick:f,className:"flex items-center gap-2 text-left flex-1","aria-expanded":s,"aria-controls":"audit-log-content",children:[i.jsxs("h2",{id:"audit-log-heading",className:"text-lg font-semibold text-text-primary-dark flex items-center gap-2",children:[i.jsx(yA,{size:20,"aria-hidden":"true",className:"text-emerald-400"}),"Approval Audit Log"]}),s?i.jsx(k1,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"}):i.jsx(ei,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"})]}),s&&i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsxs("div",{className:"relative",children:[i.jsxs(ze,{variant:"outline",size:"sm",icon:NK,onClick:()=>l(g=>!g),"aria-label":"Filter events","data-testid":"filter-button",children:["Filter",(e.agent||e.outcome)&&i.jsx("span",{className:"ml-1 w-1.5 h-1.5 rounded-full bg-primary","aria-label":"Filter active"})]}),o&&i.jsxs("div",{className:"absolute right-0 top-full mt-1 w-48 bg-zinc-800 border border-border-dark rounded-md shadow-lg z-10",role:"menu","data-testid":"filter-menu",children:[i.jsxs("div",{className:"p-2",children:[i.jsx("div",{className:"text-xs font-semibold text-text-secondary-dark mb-1 px-2",children:"By Agent"}),i.jsx("button",{type:"button",onClick:()=>p(void 0),className:"w-full text-left px-2 py-1 text-xs text-text-primary-dark hover:bg-zinc-700 rounded",role:"menuitem",children:"All Agents"}),h.map(g=>i.jsx("button",{type:"button",onClick:()=>p(g),className:`w-full text-left px-2 py-1 text-xs hover:bg-zinc-700 rounded ${e.agent===g?"text-primary":"text-text-primary-dark"}`,role:"menuitem",children:g},g))]}),i.jsxs("div",{className:"border-t border-border-dark p-2",children:[i.jsx("div",{className:"text-xs font-semibold text-text-secondary-dark mb-1 px-2",children:"By Outcome"}),i.jsx("button",{type:"button",onClick:()=>x(void 0),className:"w-full text-left px-2 py-1 text-xs text-text-primary-dark hover:bg-zinc-700 rounded",role:"menuitem",children:"All Outcomes"}),Object.keys(Dv).map(g=>i.jsxs("button",{type:"button",onClick:()=>x(g),className:`w-full text-left px-2 py-1 text-xs hover:bg-zinc-700 rounded ${e.outcome===g?"text-primary":"text-text-primary-dark"}`,role:"menuitem",children:[Dv[g].icon," ",Dv[g].label]},g))]})]})]}),i.jsx(ze,{variant:"outline",size:"sm",icon:gp,onClick:y,"aria-label":"Export as CSV","data-testid":"export-button",children:"Export"})]})]}),s&&i.jsx("div",{id:"audit-log-content",className:"px-6 pb-6",children:r?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",role:"status",children:"Loading audit events..."}):t.length===0?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",children:"No approval events recorded"}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm",role:"table",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"border-b border-border-dark",children:[i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Time"}),i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Agent"}),i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Tool / Command"}),i.jsx("th",{scope:"col",className:"text-right py-2 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Outcome"})]})}),i.jsx("tbody",{children:u.map(g=>{const v=Dv[g.outcome];return i.jsxs("tr",{className:"border-b border-border-dark/50 hover:bg-zinc-800/30 transition-colors","data-testid":`audit-row-${g.id}`,children:[i.jsx("td",{className:"py-2.5 pr-4 font-mono text-xs text-text-secondary-dark whitespace-nowrap",children:uEe(g.timestamp)}),i.jsx("td",{className:"py-2.5 pr-4 text-text-primary-dark whitespace-nowrap",children:g.agentName}),i.jsxs("td",{className:"py-2.5 pr-4 font-mono text-xs text-text-secondary-dark",children:[g.toolName,g.reason&&i.jsx("span",{className:"block text-xs text-zinc-500 mt-0.5",title:g.reason,children:g.reason})]}),i.jsx("td",{className:"py-2.5 text-right",children:i.jsxs(tn,{variant:v.variant,size:"sm",className:"gap-1",children:[i.jsx("span",{"aria-hidden":"true",children:v.icon}),v.label]})})]},g.id)})})]})}),t.length>c&&i.jsx("div",{className:"mt-3 text-center",children:i.jsxs(ze,{variant:"ghost",size:"sm",onClick:m,"data-testid":"load-more-button",children:["Showing ",c," of ",t.length," events — Load more"]})})]})})]})};W9.displayName="ApprovalAuditLog";const V9=({entries:t,summary:e,loading:n})=>{const[r,s]=k.useState(!0),a=()=>s(o=>!o);return i.jsxs(Ot,{padding:"none","aria-labelledby":"sovereignty-heading",children:[i.jsxs("div",{className:"flex items-center justify-between px-6 py-4",children:[i.jsxs("button",{type:"button",onClick:a,className:"flex items-center gap-2 text-left flex-1","aria-expanded":r,"aria-controls":"sovereignty-content",children:[i.jsxs("h2",{id:"sovereignty-heading",className:"text-lg font-semibold text-text-primary-dark flex items-center gap-2",children:[i.jsx(MK,{size:20,"aria-hidden":"true",className:"text-purple-400"}),"Data Sovereignty Report"]}),r?i.jsx(k1,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"}):i.jsx(ei,{size:20,className:"text-text-secondary-dark","aria-hidden":"true"})]}),i.jsx(tn,{variant:e.status==="secure"?"success":"warning",size:"sm","data-testid":"sovereignty-status",children:e.status==="secure"?"SECURE":"WARNING"})]}),r&&i.jsx("div",{id:"sovereignty-content",className:"px-6 pb-6",children:n?i.jsx("div",{className:"text-text-secondary-dark text-sm py-4",role:"status",children:"Loading storage data..."}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm",role:"table",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"border-b border-border-dark",children:[i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Storage Location"}),i.jsx("th",{scope:"col",className:"text-left py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Type"}),i.jsx("th",{scope:"col",className:"text-right py-2 pr-4 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"Size"}),i.jsx("th",{scope:"col",className:"text-center py-2 text-xs font-medium text-text-secondary-dark uppercase tracking-wide",children:"External?"})]})}),i.jsx("tbody",{children:t.map(o=>i.jsxs("tr",{className:"border-b border-border-dark/50","data-testid":`storage-row-${o.type.toLowerCase().replace(/\s+/g,"-")}`,children:[i.jsx("td",{className:"py-2.5 pr-4 font-mono text-xs text-text-secondary-dark",children:o.path}),i.jsx("td",{className:"py-2.5 pr-4 text-text-primary-dark",children:o.type}),i.jsx("td",{className:"py-2.5 pr-4 text-right font-mono text-xs text-text-secondary-dark",children:WT(o.sizeBytes)}),i.jsx("td",{className:"py-2.5 text-center",children:o.isExternal?i.jsxs(tn,{variant:"error",size:"sm",className:"gap-1","aria-label":"External: Yes",children:[i.jsx("span",{children:"Yes"}),i.jsx(Fl,{size:12,className:"inline"})]}):i.jsxs(tn,{variant:"success",size:"sm",className:"gap-1","aria-label":"External: No",children:[i.jsx("span",{children:"No"}),i.jsx(fa,{size:12,className:"inline"})]})})]},o.path))})]})}),i.jsxs("div",{className:"mt-4 pt-3 border-t border-border-dark space-y-1 text-sm text-text-secondary-dark",children:[i.jsxs("div",{children:["Total local storage:"," ",i.jsx("span",{className:"text-text-primary-dark font-medium",children:WT(e.totalLocalBytes)})]}),i.jsxs("div",{children:["External connections:"," ",i.jsx("span",{className:"text-text-primary-dark font-medium",children:e.externalConnections})]}),i.jsxs("div",{children:["Cloud sync:"," ",i.jsx("span",{className:"text-text-primary-dark font-medium capitalize",children:e.cloudSync})]}),i.jsxs("div",{className:"text-xs text-zinc-500",children:["Last scan: ",new Date(e.lastScan).toLocaleString()]})]})]})})]})};V9.displayName="DataSovereigntyReport";function fEe(t){let e=0;if(t.ptyTotalAgents===0)e+=40;else{const n=t.ptyIsolatedCount/t.ptyTotalAgents;e+=Math.round(n*40)}if(t.approvalStatus==="enforced"){e+=35;const n=Math.min(t.approvalsBypassedToday*5,15);e-=n}else t.approvalStatus==="partial"&&(e+=20);return t.storageStatus==="secure"?e+=25:t.storageStatus==="partial"&&(e+=15),Math.max(0,Math.min(100,e))}function pEe(t){return t>=90?{label:"Excellent",color:"text-emerald-400",bgColor:"bg-emerald-400"}:t>=70?{label:"Good",color:"text-blue-400",bgColor:"bg-blue-400"}:t>=50?{label:"Fair",color:"text-amber-400",bgColor:"bg-amber-400"}:{label:"Needs Attention",color:"text-red-400",bgColor:"bg-red-400"}}const mEe=({data:t,loading:e=!1})=>{const n=k.useMemo(()=>fEe(t),[t]),r=k.useMemo(()=>pEe(n),[n]),s=k.useMemo(()=>{const a=[];return t.ptyTotalAgents>0&&a.push(`${t.ptyIsolatedCount}/${t.ptyTotalAgents} agents isolated`),t.approvalStatus==="enforced"?a.push("Tool approval enforced"):t.approvalStatus==="disabled"&&a.push("Tool approval disabled"),t.approvalsBypassedToday>0&&a.push(`${t.approvalsBypassedToday} bypass${t.approvalsBypassedToday!==1?"es":""} today`),t.storageStatus==="secure"&&a.push("Data stored locally"),a},[t]);return e?i.jsx(Ot,{padding:"lg","data-testid":"security-score-widget",children:i.jsx("div",{className:"text-text-secondary-dark text-sm",role:"status",children:"Calculating score..."})}):i.jsx(Ot,{padding:"lg","data-testid":"security-score-widget",children:i.jsxs("div",{className:"flex items-start gap-4",children:[i.jsxs("div",{className:"relative flex-shrink-0",children:[i.jsxs("svg",{width:"80",height:"80",viewBox:"0 0 80 80","data-testid":"score-ring",children:[i.jsx("circle",{cx:"40",cy:"40",r:"34",fill:"none",stroke:"currentColor",strokeWidth:"6",className:"text-border-dark"}),i.jsx("circle",{cx:"40",cy:"40",r:"34",fill:"none",stroke:"currentColor",strokeWidth:"6",className:r.color,strokeDasharray:`${n/100*213.6} 213.6`,strokeLinecap:"round",transform:"rotate(-90 40 40)"})]}),i.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:i.jsx("span",{className:"text-xl font-bold","data-testid":"score-value",children:n})})]}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx($u,{className:"w-4 h-4 text-emerald-400"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Security Score"})]}),i.jsx("p",{className:`text-sm font-medium ${r.color} mb-2`,"data-testid":"score-grade",children:r.label}),i.jsx("ul",{className:"space-y-0.5",children:s.map((a,o)=>i.jsx("li",{className:"text-xs text-text-secondary-dark",children:a},o))})]})]})})},uE={healthy:"HEALTHY",secure:"SECURE",enforced:"ENFORCED",warning:"WARNING",partial:"PARTIAL",error:"ERROR",disabled:"DISABLED",compromised:"COMPROMISED"};function hE(t){switch(t){case"healthy":case"secure":case"enforced":return"active";case"warning":case"partial":return"waiting";case"error":case"disabled":case"compromised":return"error";default:return"inactive"}}const fE=({title:t,icon:e,children:n,defaultOpen:r=!1})=>{const[s,a]=k.useState(r);return i.jsxs("div",{className:"border border-border-dark rounded-lg overflow-hidden",children:[i.jsxs("button",{className:"w-full flex items-center gap-2 px-4 py-3 bg-surface-dark hover:bg-surface-dark/80 transition-colors text-left",onClick:()=>a(!s),"aria-expanded":s,children:[e,i.jsx("span",{className:"text-sm font-semibold text-text-primary-dark flex-1",children:t}),s?i.jsx(ei,{size:16,className:"text-text-secondary-dark"}):i.jsx(Si,{size:16,className:"text-text-secondary-dark"})]}),s&&i.jsx("div",{className:"p-4 border-t border-border-dark",children:n})]})},$9=()=>{const{sessions:t,summary:e,loading:n}=tEe(),{filteredEvents:r,summary:s,filter:a,setFilter:o,loading:l}=sEe(),{entries:c,summary:d,loading:u}=aEe();return i.jsxs("div",{className:"max-w-7xl mx-auto px-4 py-6 space-y-6",children:[i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx($u,{size:28,className:"text-emerald-400","aria-hidden":"true"}),i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Security"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Your instance security posture at a glance"})]})]}),i.jsx(mEe,{data:{ptyStatus:e.status,ptyTotalAgents:e.totalAgents,ptyIsolatedCount:e.isolatedCount,approvalStatus:s.status,approvalsDeniedToday:s.deniedToday,approvalsBypassedToday:s.bypassedToday,storageStatus:d.status},loading:n||l||u}),i.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4","data-testid":"summary-cards",children:[i.jsxs(Ot,{padding:"lg","data-testid":"card-pty",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsx(go,{size:18,className:"text-blue-400","aria-hidden":"true"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Agent Isolation"})]}),n?i.jsx(sr,{size:"sm"}):i.jsxs("div",{className:"space-y-1 text-sm",children:[i.jsxs("div",{className:"text-text-secondary-dark",children:[e.isolatedCount," of ",e.totalAgents," agents isolated"]}),i.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide mt-2 flex items-center gap-1.5",children:[i.jsx(Gc,{status:hE(e.status),size:"sm"}),i.jsx("span",{children:uE[e.status]})]})]})]}),i.jsxs(Ot,{padding:"lg","data-testid":"card-storage",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsx(b3,{size:18,className:"text-purple-400","aria-hidden":"true"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Data Storage"})]}),u?i.jsx(sr,{size:"sm"}):i.jsxs("div",{className:"space-y-1 text-sm",children:[i.jsxs("div",{className:"text-text-secondary-dark",children:[WT(d.totalLocalBytes)," stored locally"]}),i.jsxs("div",{className:"text-text-secondary-dark",children:[d.externalConnections," cloud connection",d.externalConnections!==1?"s":""]}),i.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide mt-2 flex items-center gap-1.5",children:[i.jsx(Gc,{status:hE(d.status),size:"sm"}),i.jsx("span",{children:uE[d.status]})]})]})]}),i.jsxs(Ot,{padding:"lg","data-testid":"card-approvals",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i.jsx(yA,{size:18,className:"text-emerald-400","aria-hidden":"true"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Tool Approvals"})]}),l?i.jsx(sr,{size:"sm"}):i.jsxs("div",{className:"space-y-1 text-sm",children:[i.jsxs("div",{className:"text-text-secondary-dark",children:[s.totalToday," reviewed today"]}),s.deniedToday>0&&i.jsxs("div",{className:"text-amber-400 text-xs",children:[s.deniedToday," denied"]}),i.jsxs("div",{className:"text-xs font-medium uppercase tracking-wide mt-2 flex items-center gap-1.5",children:[i.jsx(Gc,{status:hE(s.status),size:"sm"}),i.jsx("span",{children:uE[s.status]})]})]})]})]}),i.jsxs("div",{className:"space-y-3",children:[i.jsx("h3",{className:"text-sm font-medium text-text-secondary-dark uppercase tracking-wide",children:"Detailed Reports"}),i.jsx(fE,{title:"Agent Isolation Map",icon:i.jsx(go,{size:16,className:"text-blue-400"}),children:i.jsx(G9,{sessions:t,loading:n})}),i.jsx(fE,{title:"Approval Audit Log",icon:i.jsx(yA,{size:16,className:"text-emerald-400"}),children:i.jsx(W9,{events:r,filter:a,onFilterChange:o,loading:l})}),i.jsx(fE,{title:"Data Sovereignty Report",icon:i.jsx(b3,{size:16,className:"text-purple-400"}),children:i.jsx(V9,{entries:c,summary:d,loading:u})})]})]})};$9.displayName="SecurityOverview";const gEe=1e4,xEe=3e4,yEe={"claude-3-opus":{input:15e-6,output:75e-6},"claude-3-5-sonnet":{input:3e-6,output:15e-6},"claude-3-haiku":{input:25e-8,output:125e-8},"claude-opus-4":{input:15e-6,output:75e-6},"claude-sonnet-4":{input:3e-6,output:15e-6},default:{input:3e-6,output:15e-6}};function vEe(t){const e=yEe.default;return t.totalInput*e.input+t.totalOutput*e.output}function bEe(t){return t.map(e=>({sessionName:e.sessionName,agentId:e.agentId,inputTokens:e.totalInput,outputTokens:e.totalOutput,totalTokens:e.totalInput+e.totalOutput,cost:e.cost??vEe(e),eventCount:e.eventCount}))}function _Ee(){const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState(null),[c,d]=k.useState(!1),u=k.useRef(!0),h=k.useCallback(async()=>{try{const g=await ft.getTokenUsage();if(!u.current)return;e(bEe(g)),l(new Date),d(!1),a(null)}catch(g){if(!u.current)return;a(g instanceof Error?g.message:"Failed to fetch token usage")}finally{u.current&&r(!1)}},[]);k.useEffect(()=>{u.current=!0,h();const g=setInterval(h,gEe);return()=>{u.current=!1,clearInterval(g)}},[h]),k.useEffect(()=>{const g=setInterval(()=>{if(o){const v=Date.now()-o.getTime();d(v>xEe)}},5e3);return()=>clearInterval(g)},[o]);const f=t.reduce((g,v)=>g+v.cost,0),p=t.reduce((g,v)=>g+v.totalTokens,0),x=t.length,y=t.reduce((g,v)=>g+v.eventCount,0),m=y>0?f/y:0;return{sessions:t,totalCost:f,totalTokens:p,activeAgents:x,avgCostPerTask:m,loading:n,error:s,lastUpdated:o,isStale:c,refresh:h}}const VT="crewly-budget-config",$T={dailyLimit:50,weeklyLimit:200,monthlyLimit:500,maxTokensPerTask:1e5,warningThreshold:80};function t4(t){const e={};return t.dailyLimit<=0&&(e.dailyLimit="Daily limit must be a positive number"),t.weeklyLimit<=0&&(e.weeklyLimit="Weekly limit must be a positive number"),t.monthlyLimit<=0&&(e.monthlyLimit="Monthly limit must be a positive number"),t.maxTokensPerTask<=0&&(e.maxTokensPerTask="Max tokens per task must be a positive number"),(t.warningThreshold<1||t.warningThreshold>100)&&(e.warningThreshold="Warning threshold must be between 1 and 100"),t.weeklyLimit<t.dailyLimit&&(e.weeklyLimit="Weekly limit must be greater than or equal to daily limit"),t.monthlyLimit<t.weeklyLimit&&(e.monthlyLimit="Monthly limit must be greater than or equal to weekly limit"),Object.keys(e).length>0?e:null}function n4(){try{const t=localStorage.getItem(VT);if(t){const e=JSON.parse(t);return{...$T,...e}}}catch{}return{...$T}}function SEe(){const[t,e]=k.useState(n4);k.useEffect(()=>{e(n4())},[]);const n=k.useCallback(s=>{const a=t4(s);return a||(localStorage.setItem(VT,JSON.stringify(s)),e(s),null)},[]),r=k.useCallback(()=>{localStorage.removeItem(VT),e({...$T})},[]);return{config:t,saveConfig:n,resetConfig:r,validateConfig:t4}}function wEe(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function r4(t){return`$${t.toFixed(2)}`}const Ov=({title:t,value:e})=>i.jsxs("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark transition-all hover:shadow-lg hover:border-primary/50",children:[i.jsx("p",{className:"text-sm font-medium text-text-secondary-dark",children:t}),i.jsx("p",{className:"text-3xl font-bold mt-1",children:e})]}),kEe=({totalCost:t,totalTokens:e,activeAgents:n,avgCostPerTask:r})=>i.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6","data-testid":"token-summary-cards",children:[i.jsx(Ov,{title:"Total Cost",value:r4(t)}),i.jsx(Ov,{title:"Total Tokens",value:wEe(e)}),i.jsx(Ov,{title:"Active Agents",value:n.toString()}),i.jsx(Ov,{title:"Avg Cost / Task",value:r4(r)})]});function CEe(t){return t>=100?"bg-red-500":t>=80?"bg-orange-500":t>=60?"bg-yellow-500":"bg-green-500"}function EEe(t){return t>=100?"Over Budget":t>=80?"Near Limit":t>=60?"Moderate":"On Track"}function Om(t){return`$${t.toFixed(2)}`}const AEe=({currentCost:t,budgetConfig:e})=>{const n=e.dailyLimit>0?t/e.dailyLimit*100:0,r=Math.min(n,100),s=CEe(n),a=EEe(n);return i.jsxs("div",{className:"bg-surface-dark p-4 rounded-lg border border-border-dark","data-testid":"budget-status-bar",children:[i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:"Budget Status"}),i.jsxs("span",{className:"text-xs font-medium text-text-secondary-dark",children:[a," — ",Om(t)," / ",Om(e.dailyLimit)," daily"]})]}),i.jsx("div",{className:"w-full bg-background-dark rounded-full h-3 overflow-hidden",children:i.jsx("div",{role:"progressbar","aria-valuenow":Math.round(n),"aria-valuemin":0,"aria-valuemax":100,"aria-label":`Budget usage: ${Math.round(n)}% of daily limit`,className:`h-full rounded-full transition-all duration-300 ${s}`,style:{width:`${r}%`}})}),i.jsxs("div",{className:"flex justify-between mt-2 text-xs text-text-secondary-dark",children:[i.jsxs("span",{children:["Daily: ",Om(e.dailyLimit)]}),i.jsxs("span",{children:["Weekly: ",Om(e.weeklyLimit)]}),i.jsxs("span",{children:["Monthly: ",Om(e.monthlyLimit)]})]})]})};function $h(t){return t.toLocaleString()}function s4(t){return`$${t.toFixed(4)}`}const TEe=({sessions:t})=>{const[e,n]=k.useState("cost"),[r,s]=k.useState("desc"),a=u=>{e===u?s(h=>h==="asc"?"desc":"asc"):(n(u),s("desc"))},o=k.useMemo(()=>[...t].sort((h,f)=>{const p=h[e],x=f[e];if(typeof p=="string"&&typeof x=="string")return r==="asc"?p.localeCompare(x):x.localeCompare(p);const y=p,m=x;return r==="asc"?y-m:m-y}),[t,e,r]),l=k.useMemo(()=>({inputTokens:t.reduce((u,h)=>u+h.inputTokens,0),outputTokens:t.reduce((u,h)=>u+h.outputTokens,0),totalTokens:t.reduce((u,h)=>u+h.totalTokens,0),cost:t.reduce((u,h)=>u+h.cost,0)}),[t]),c=u=>e!==u?"":r==="asc"?" ↑":" ↓",d=[{key:"sessionName",label:"Agent"},{key:"inputTokens",label:"Input Tokens"},{key:"outputTokens",label:"Output Tokens"},{key:"totalTokens",label:"Total Tokens"},{key:"cost",label:"Cost"}];return t.length===0?i.jsx("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark text-center text-text-secondary-dark","data-testid":"agent-usage-table-empty",children:"No agent usage data available."}):i.jsx("div",{className:"bg-surface-dark rounded-lg border border-border-dark overflow-hidden","data-testid":"agent-usage-table",children:i.jsxs("table",{className:"w-full text-sm",children:[i.jsx("thead",{children:i.jsx("tr",{className:"border-b border-border-dark",children:d.map(u=>i.jsxs("th",{scope:"col",className:"px-4 py-3 text-left text-xs font-semibold text-text-secondary-dark uppercase tracking-wider cursor-pointer hover:text-text-primary-dark select-none",onClick:()=>a(u.key),"aria-sort":e===u.key?r==="asc"?"ascending":"descending":"none",children:[u.label,c(u.key)]},u.key))})}),i.jsx("tbody",{children:o.map(u=>i.jsxs("tr",{className:"border-b border-border-dark/50 hover:bg-background-dark/50 transition-colors",children:[i.jsx("td",{className:"px-4 py-3 font-medium text-text-primary-dark",children:u.sessionName}),i.jsx("td",{className:"px-4 py-3 text-text-secondary-dark",children:$h(u.inputTokens)}),i.jsx("td",{className:"px-4 py-3 text-text-secondary-dark",children:$h(u.outputTokens)}),i.jsx("td",{className:"px-4 py-3 text-text-secondary-dark",children:$h(u.totalTokens)}),i.jsx("td",{className:"px-4 py-3 text-text-primary-dark font-medium",children:s4(u.cost)})]},u.sessionName))}),i.jsx("tfoot",{children:i.jsxs("tr",{className:"border-t border-border-dark bg-background-dark/30",children:[i.jsx("td",{className:"px-4 py-3 font-semibold text-text-primary-dark",children:"Total"}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-secondary-dark",children:$h(l.inputTokens)}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-secondary-dark",children:$h(l.outputTokens)}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-secondary-dark",children:$h(l.totalTokens)}),i.jsx("td",{className:"px-4 py-3 font-semibold text-text-primary-dark",children:s4(l.cost)})]})})]})})},i4={Opus:"#8b5cf6",Sonnet:"#3b82f6",Haiku:"#10b981",Other:"#6b7280"},Zm=160,xc=Zm/2,a4=60,MEe=20;function NEe(t){const e=t.toLowerCase();return e.includes("opus")?"Opus":e.includes("sonnet")?"Sonnet":e.includes("haiku")?"Haiku":"Other"}function jEe(t){return`$${t.toFixed(2)}`}function REe(t){const e={};t.forEach(r=>{const s=NEe(r.sessionName);e[s]=(e[s]||0)+r.totalTokens});const n=Object.values(e).reduce((r,s)=>r+s,0);return n===0?[]:Object.entries(e).map(([r,s])=>({name:r,tokens:s,percent:s/n*100,color:i4[r]||i4.Other})).sort((r,s)=>s.tokens-r.tokens)}const IEe=({sessions:t,totalCost:e})=>{const n=k.useMemo(()=>REe(t),[t]);if(n.length===0)return i.jsx("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark flex items-center justify-center h-full","data-testid":"model-mix-chart-empty",children:i.jsx("p",{className:"text-text-secondary-dark text-sm",children:"No model data available"})});const r=2*Math.PI*a4;let s=0;const a=n.map(o=>{const l=o.percent/100*r,c=r-l,d=-s;return s+=l,{...o,dashArray:`${l} ${c}`,dashOffset:d}});return i.jsxs("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark","data-testid":"model-mix-chart",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark mb-4",children:"Model Distribution"}),i.jsxs("div",{className:"flex items-center gap-6",children:[i.jsxs("svg",{width:Zm,height:Zm,viewBox:`0 0 ${Zm} ${Zm}`,"aria-label":"Token distribution by model donut chart",className:"flex-shrink-0",children:[a.map(o=>i.jsx("circle",{cx:xc,cy:xc,r:a4,fill:"none",stroke:o.color,strokeWidth:MEe,strokeDasharray:o.dashArray,strokeDashoffset:o.dashOffset,transform:`rotate(-90 ${xc} ${xc})`},o.name)),i.jsx("text",{x:xc,y:xc-6,textAnchor:"middle",className:"fill-text-secondary-dark text-[10px]",children:"Total"}),i.jsx("text",{x:xc,y:xc+10,textAnchor:"middle",className:"fill-text-primary-dark text-sm font-semibold",children:jEe(e)})]}),i.jsx("div",{className:"flex flex-col gap-2",children:n.map(o=>i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("div",{className:"w-3 h-3 rounded-full flex-shrink-0",style:{backgroundColor:o.color}}),i.jsx("span",{className:"text-sm text-text-primary-dark",children:o.name}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:[o.percent.toFixed(1),"%"]})]},o.name))})]})]})},PEe=["1h","6h","24h","7d","30d"],pE=500,Bm=200,Bv=60,o4=20,mE=10,gE=40,LEe="#3b82f6";function DEe(t){return`$${t.toFixed(2)}`}function OEe(t,e=10){return t.length<=e?t:t.slice(0,e-1)+"…"}const BEe=({sessions:t})=>{const[e,n]=k.useState("24h");if(t.length===0)return i.jsx("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark flex items-center justify-center h-full","data-testid":"usage-timeline-empty",children:i.jsx("p",{className:"text-text-secondary-dark text-sm",children:"No usage data available"})});const r=[...t].sort((d,u)=>u.cost-d.cost),s=Math.max(...r.map(d=>d.cost),.01),a=pE-Bv-o4,o=Bm-mE-gE,l=Math.min(40,a/r.length-4),c=(a-l*r.length)/(r.length+1);return i.jsxs("div",{className:"bg-surface-dark p-6 rounded-lg border border-border-dark","data-testid":"usage-timeline",children:[i.jsxs("div",{className:"flex items-center justify-between mb-4",children:[i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Cost by Agent"}),i.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Time range filter",children:PEe.map(d=>i.jsx("button",{onClick:()=>n(d),className:`px-2.5 py-1 text-xs rounded-full transition-colors ${e===d?"bg-primary text-white":"bg-background-dark text-text-secondary-dark hover:text-text-primary-dark"}`,"aria-pressed":e===d,children:d},d))})]}),i.jsxs("svg",{width:"100%",height:Bm,viewBox:`0 0 ${pE} ${Bm}`,"aria-label":`Agent cost bar chart for ${e} time range`,preserveAspectRatio:"xMidYMid meet",children:[[0,.25,.5,.75,1].map(d=>{const u=mE+o*(1-d),h=s*d;return i.jsxs("g",{children:[i.jsx("line",{x1:Bv,y1:u,x2:pE-o4,y2:u,stroke:"currentColor",strokeOpacity:.1}),i.jsx("text",{x:Bv-8,y:u+4,textAnchor:"end",className:"fill-text-secondary-dark text-[9px]",children:DEe(h)})]},d)}),r.map((d,u)=>{const h=s>0?d.cost/s*o:0,f=Bv+c*(u+1)+l*u,p=mE+o-h;return i.jsxs("g",{children:[i.jsx("rect",{x:f,y:p,width:l,height:h,fill:LEe,rx:2,opacity:.85}),i.jsx("text",{x:f+l/2,y:Bm-gE+14,textAnchor:"middle",className:"fill-text-secondary-dark text-[9px]",transform:`rotate(-30, ${f+l/2}, ${Bm-gE+14})`,children:OEe(d.sessionName)})]},d.sessionName)})]})]})},FEe=[{key:"dailyLimit",label:"Daily Limit",unit:"USD",step:1},{key:"weeklyLimit",label:"Weekly Limit",unit:"USD",step:5},{key:"monthlyLimit",label:"Monthly Limit",unit:"USD",step:10},{key:"maxTokensPerTask",label:"Max Tokens / Task",unit:"tokens",step:1e3},{key:"warningThreshold",label:"Warning Threshold",unit:"%",step:5}],UEe=({config:t,onSave:e,onReset:n})=>{const[r,s]=k.useState(!1),[a,o]=k.useState(!1),[l,c]=k.useState({...t}),[d,u]=k.useState(null),h=()=>{c({...t}),u(null),o(!0)},f=()=>{o(!1),u(null)},p=()=>{const m=e(l);m?u(m):(u(null),o(!1))},x=(m,g)=>{c(v=>({...v,[m]:g}))},y=(m,g)=>m.unit==="USD"?`$${g}`:m.unit==="%"?`${g}%`:g.toLocaleString();return i.jsxs("div",{className:"bg-surface-dark rounded-lg border border-border-dark","data-testid":"budget-config-panel",children:[i.jsxs("button",{onClick:()=>s(m=>!m),className:"w-full flex items-center justify-between p-4 text-left hover:bg-background-dark/30 transition-colors rounded-lg","aria-expanded":r,children:[i.jsx("span",{className:"text-sm font-semibold text-text-primary-dark",children:"Budget Configuration"}),r?i.jsx(ei,{className:"h-4 w-4 text-text-secondary-dark"}):i.jsx(Si,{className:"h-4 w-4 text-text-secondary-dark"})]}),r&&i.jsxs("div",{className:"px-4 pb-4 space-y-4",children:[i.jsx("div",{className:"flex gap-2 justify-end",children:a?i.jsxs(i.Fragment,{children:[i.jsx("button",{onClick:f,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-background-dark text-text-secondary-dark hover:text-text-primary-dark transition-colors","data-testid":"budget-cancel-btn",children:"Cancel"}),i.jsx("button",{onClick:p,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-green-600 text-white hover:bg-green-700 transition-colors","data-testid":"budget-save-btn",children:"Save"})]}):i.jsx("button",{onClick:h,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-primary text-white hover:bg-primary/90 transition-colors","data-testid":"budget-edit-btn",children:"Edit"})}),i.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:FEe.map(m=>i.jsxs("div",{children:[i.jsx("label",{className:"block text-xs font-medium text-text-secondary-dark mb-1",htmlFor:`budget-${m.key}`,children:m.label}),a?i.jsxs(i.Fragment,{children:[i.jsx("input",{id:`budget-${m.key}`,type:"number",value:l[m.key],step:m.step,min:0,onChange:g=>x(m.key,parseFloat(g.target.value)||0),className:"w-full px-3 py-2 text-sm bg-background-dark border border-border-dark rounded-lg text-text-primary-dark focus:outline-none focus:ring-1 focus:ring-primary","data-testid":`budget-input-${m.key}`}),(d==null?void 0:d[m.key])&&i.jsx("p",{className:"text-xs text-red-400 mt-1",role:"alert",children:d[m.key]})]}):i.jsx("p",{className:"text-sm text-text-primary-dark","data-testid":`budget-value-${m.key}`,children:y(m,t[m.key])})]},m.key))}),!a&&i.jsx("div",{className:"flex justify-end pt-2",children:i.jsx("button",{onClick:n,className:"text-xs text-text-secondary-dark hover:text-red-400 transition-colors","data-testid":"budget-reset-btn",children:"Reset to Defaults"})})]})]})};function l4(t){return t.toLocaleString()}function zEe(t){return t<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`}const HEe=()=>{const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState("cost"),[c,d]=k.useState("desc"),u=k.useCallback(async()=>{try{const x=await ft.getTokenUsageByTask();e(x),a(null)}catch(x){a(x instanceof Error?x.message:"Failed to load task usage")}finally{r(!1)}},[]);k.useEffect(()=>{u();const x=setInterval(u,3e4);return()=>clearInterval(x)},[u]);const h=x=>{o===x?d(y=>y==="asc"?"desc":"asc"):(l(x),d("desc"))},f=[...t].sort((x,y)=>{const m=x[o],g=y[o];if(typeof m=="string"&&typeof g=="string")return c==="asc"?m.localeCompare(g):g.localeCompare(m);const v=m,b=g;return c==="asc"?v-b:b-v}),p=x=>o!==x?"":c==="asc"?" ↑":" ↓";return n?i.jsx("div",{className:"bg-surface-dark rounded-lg border border-border-dark p-6 text-center",children:i.jsx("p",{className:"text-text-secondary-dark",children:"Loading task usage data..."})}):s?i.jsx("div",{className:"bg-surface-dark rounded-lg border border-red-500/50 p-6 text-center",children:i.jsx("p",{className:"text-red-400",children:s})}):t.length===0?i.jsx("div",{className:"bg-surface-dark rounded-lg border border-border-dark p-6 text-center","data-testid":"task-usage-empty",children:i.jsx("p",{className:"text-text-secondary-dark",children:"No per-task usage data yet. Token tracking must be enabled in Settings."})}):i.jsxs("div",{className:"bg-surface-dark rounded-lg border border-border-dark overflow-hidden","data-testid":"task-usage-table",children:[i.jsx("div",{className:"px-4 py-3 border-b border-border-dark",children:i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Usage by Task"})}),i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"text-left text-text-secondary-dark border-b border-border-dark",children:[i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark",onClick:()=>h("taskId"),children:["Task",p("taskId")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("totalInput"),children:["Input Tokens",p("totalInput")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("totalOutput"),children:["Output Tokens",p("totalOutput")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("cost"),children:["Cost",p("cost")]}),i.jsxs("th",{className:"px-4 py-2 cursor-pointer hover:text-text-primary-dark text-right",onClick:()=>h("eventCount"),children:["Events",p("eventCount")]})]})}),i.jsx("tbody",{children:f.map(x=>i.jsxs("tr",{className:"border-b border-border-dark/50 hover:bg-background-dark/50",children:[i.jsx("td",{className:"px-4 py-2 text-text-primary-dark font-mono text-xs truncate max-w-[200px]",title:x.taskId,children:x.taskId==="unassigned"?i.jsx("span",{className:"text-text-secondary-dark italic",children:"Unassigned"}):x.taskId}),i.jsx("td",{className:"px-4 py-2 text-right text-text-secondary-dark",children:l4(x.totalInput)}),i.jsx("td",{className:"px-4 py-2 text-right text-text-secondary-dark",children:l4(x.totalOutput)}),i.jsx("td",{className:"px-4 py-2 text-right text-green-400 font-medium",children:zEe(x.cost)}),i.jsx("td",{className:"px-4 py-2 text-right text-text-secondary-dark",children:x.eventCount})]},x.taskId))})]})})]})};function GEe(t){if(!t)return"Never";const e=Math.round((Date.now()-t.getTime())/1e3);return e<5?"Just now":e<60?`${e}s ago`:`${Math.floor(e/60)}m ago`}const c4=()=>{const{sessions:t,totalCost:e,totalTokens:n,activeAgents:r,avgCostPerTask:s,loading:a,error:o,lastUpdated:l,isStale:c,refresh:d}=_Ee(),{config:u,saveConfig:h,resetConfig:f}=SEe();return a?i.jsxs("div",{className:"flex items-center justify-center min-h-64",children:[i.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-2 border-primary border-t-transparent"}),i.jsx("p",{className:"ml-3 text-text-secondary-dark",children:"Loading cost data..."})]}):o&&t.length===0?i.jsx("div",{className:"max-w-7xl mx-auto","data-testid":"cost-dashboard-error",children:i.jsxs("div",{className:"bg-surface-dark p-8 rounded-lg border border-red-500/50 text-center",children:[i.jsx("p",{className:"text-red-400 font-medium mb-2",children:"Failed to load cost data"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mb-4",children:o}),i.jsx("button",{onClick:d,className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary text-white hover:bg-primary/90 transition-colors",children:"Retry"})]})}):i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"cost-dashboard",children:[i.jsxs("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-4 mb-6",children:[i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Usage"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Monitor token usage and spending across all agents and tasks."})]}),i.jsxs("div",{className:"flex items-center gap-3",children:[c&&i.jsx("span",{className:"px-2 py-1 text-xs font-medium rounded-full bg-yellow-500/20 text-yellow-400","data-testid":"stale-badge",children:"Stale"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark","data-testid":"last-updated",children:["Last updated: ",GEe(l)]}),i.jsx("button",{onClick:d,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-background-dark text-text-secondary-dark hover:text-text-primary-dark transition-colors","data-testid":"refresh-btn",children:"Refresh"})]})]}),t.length===0?i.jsxs("div",{className:"bg-surface-dark p-12 rounded-lg border border-border-dark text-center","data-testid":"cost-dashboard-empty",children:[i.jsx("p",{className:"text-lg font-medium text-text-primary-dark mb-2",children:"No usage data yet"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Token usage will appear here once agents start processing tasks."})]}):i.jsxs("div",{className:"space-y-6",children:[i.jsx(AEe,{currentCost:e,budgetConfig:u}),i.jsx(kEe,{totalCost:e,totalTokens:n,activeAgents:r,avgCostPerTask:s}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[i.jsx(BEe,{sessions:t}),i.jsx(IEe,{sessions:t,totalCost:e})]}),i.jsx(TEe,{sessions:t}),i.jsx(HEe,{}),i.jsx(UEe,{config:u,onSave:h,onReset:f})]})]})},WEe=()=>{const[t]=pp(),e=_r();return k.useEffect(()=>{(async()=>{const r=t.get("token"),s=t.get("refreshToken"),a=t.get("error");if(r){localStorage.setItem(Km,r),s&&localStorage.setItem("crewly_refresh_token",s);try{await fetch("/api/cloud/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r,refreshToken:s})})}catch{}}a?e("/settings?tab=cloud&error="+encodeURIComponent(a),{replace:!0}):e("/settings?tab=cloud",{replace:!0})})()},[t,e]),i.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background-dark",children:i.jsx(sr,{size:"md",text:"Completing sign-in..."})})},VEe=["Unlimited teams & agents","Cloud Relay for cross-machine control","Premium marketplace templates","Priority support"],$Ee=()=>{const t=_r(),{isAuthenticated:e}=vp(),[n,r]=k.useState("");k.useEffect(()=>{e&&t("/settings?tab=cloud",{replace:!0})},[e,t]);const s=()=>{window.location.href=hP()},a=o=>{if(o.preventDefault(),!n.trim())return;const l=hP();window.location.href=`${l}&email=${encodeURIComponent(n.trim())}`};return i.jsxs("div",{className:"flex min-h-screen flex-col items-center justify-center bg-background-dark px-4 py-12",children:[i.jsxs("div",{className:"w-full max-w-md rounded-xl border border-border-dark bg-surface-dark p-8",children:[i.jsxs("div",{className:"mb-6 text-center",children:[i.jsx(Hf,{className:"mx-auto h-10 w-10 text-primary"}),i.jsx("h1",{className:"mt-3 text-2xl font-bold text-text-primary-dark",children:"Crewly Cloud"}),i.jsx("p",{className:"mt-2 text-text-secondary-dark",children:"Sign in to unlock premium features"})]}),i.jsx(ze,{variant:"outline",className:"w-full",onClick:s,"data-testid":"google-signin-btn",children:"Sign in with Google"}),i.jsxs("div",{className:"my-6 flex items-center gap-3",children:[i.jsx("div",{className:"h-px flex-1 bg-border-dark"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"or"}),i.jsx("div",{className:"h-px flex-1 bg-border-dark"})]}),i.jsxs("form",{onSubmit:a,children:[i.jsx("label",{htmlFor:"auth-email",className:"mb-1 block text-sm font-medium text-text-secondary-dark",children:"Email"}),i.jsx("input",{id:"auth-email",type:"email",value:n,onChange:o=>r(o.target.value),placeholder:"you@example.com",className:"mb-4 w-full rounded-lg border border-border-dark bg-background-dark px-3 py-2 text-sm text-text-primary-dark placeholder-text-secondary-dark focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary","data-testid":"email-input"}),i.jsx(ze,{variant:"primary",className:"w-full",type:"submit","data-testid":"email-signin-btn",children:"Continue with Email"})]}),i.jsxs("p",{className:"mt-4 text-center text-xs text-text-secondary-dark",children:["By continuing, you agree to our"," ",i.jsx("a",{href:"https://crewlyai.com/terms",className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})]})]}),i.jsxs("div",{className:"mt-8 w-full max-w-md","data-testid":"benefits-list",children:[i.jsx("h2",{className:"mb-3 text-sm font-semibold text-text-secondary-dark",children:"Benefits"}),i.jsx("ul",{className:"space-y-2",children:VEe.map(o=>i.jsxs("li",{className:"flex items-center gap-2 text-sm text-text-secondary-dark",children:[i.jsx(br,{className:"h-4 w-4 flex-shrink-0 text-emerald-400"}),i.jsx("span",{children:o})]},o))})]})]})},KEe=[{id:"starter",name:"Starter",monthly:49,yearly:39,features:["3 teams","5 agents per team","5 projects","1 Cloud Relay session","10 marketplace templates","20 scheduled check-ins","Community support"],cta:"Get Started",highlighted:!1},{id:"pro",name:"Pro",monthly:99,yearly:79,features:["10 teams","10 agents per team","20 projects","5 Cloud Relay sessions","Full marketplace access","Unlimited schedules","Cloud Portal with 1-click deploy","Priority support"],cta:"Upgrade to Pro",highlighted:!0,badge:"Popular"},{id:"max",name:"Max",monthly:299,yearly:239,features:["Everything in Pro","Unlimited teams & agents","Unlimited projects","Unlimited Cloud Relay","Shared team memory","Slack deep integration","Team analytics","Thread-based chat portal","Dedicated support"],cta:"Upgrade to Max",highlighted:!1,badge:"Best Value"}],qEe={free:"free",starter:"starter",pro:"pro",max:"max"},XEe=()=>{const[t,e]=k.useState("monthly"),{license:n}=vp(),r=n?qEe[n.plan]??"free":"free",s=f6("pro"),[a,o]=k.useState(null),l=async u=>{try{o(u);const h=t==="monthly"?"month":"year",f=await ft.createCheckoutSession(u,h,`${window.location.origin}/cloud?upgraded=true`,window.location.href);window.location.href=f.checkoutUrl}catch{o(null)}},c=u=>{const h=t==="monthly"?u.monthly:u.yearly;return h===0?"$0":`$${h}`},d=u=>u===r;return i.jsxs("div",{className:"min-h-screen bg-background-dark px-4 py-12 sm:px-6 lg:px-8",children:[i.jsxs("div",{className:"mx-auto max-w-4xl text-center",children:[i.jsx("h1",{className:"text-3xl font-bold text-text-primary-dark sm:text-4xl",children:"Choose Your Plan"}),i.jsx("p",{className:"mt-3 text-lg text-text-secondary-dark",children:"Start with Starter, upgrade as you grow."})]}),i.jsxs("div",{className:"mt-8 flex items-center justify-center gap-3",children:[i.jsx("button",{type:"button",onClick:()=>e("monthly"),className:`rounded-lg px-4 py-2 text-sm font-medium transition-colors ${t==="monthly"?"bg-primary text-white":"bg-surface-dark text-text-secondary-dark hover:text-text-primary-dark"}`,"aria-pressed":t==="monthly","data-testid":"billing-monthly",children:"Monthly"}),i.jsxs("button",{type:"button",onClick:()=>e("yearly"),className:`rounded-lg px-4 py-2 text-sm font-medium transition-colors ${t==="yearly"?"bg-primary text-white":"bg-surface-dark text-text-secondary-dark hover:text-text-primary-dark"}`,"aria-pressed":t==="yearly","data-testid":"billing-yearly",children:["Yearly — Save ",s,"%"]})]}),i.jsx("div",{className:"mx-auto mt-10 grid max-w-6xl grid-cols-1 gap-6 md:grid-cols-3",children:KEe.map(u=>{const h=d(u.id);return i.jsxs("div",{"data-testid":`plan-card-${u.id}`,className:`relative flex flex-col rounded-xl border bg-surface-dark p-6 ${u.highlighted?"border-primary ring-2 ring-primary/30":"border-border-dark"}`,children:[u.badge&&i.jsx("span",{className:"absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-primary px-3 py-0.5 text-xs font-semibold text-white",children:u.badge}),i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:u.name}),i.jsxs("div",{className:"mt-4 flex items-baseline gap-1",children:[i.jsx("span",{className:"text-4xl font-bold text-text-primary-dark","data-testid":`price-${u.id}`,children:c(u)}),i.jsx("span",{className:"text-text-secondary-dark",children:"/mo"})]}),t==="yearly"&&u.yearly>0&&i.jsxs("p",{className:"mt-1 text-xs text-text-secondary-dark",children:["Billed annually at $",u.yearly*12,"/yr"]}),i.jsx("ul",{className:"mt-6 flex-1 space-y-3",children:u.features.map(f=>i.jsxs("li",{className:"flex items-start gap-2 text-sm text-text-secondary-dark",children:[i.jsx(br,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-emerald-400"}),i.jsx("span",{children:f})]},f))}),i.jsx("div",{className:"mt-8",children:h?i.jsx(ze,{variant:"secondary",className:"w-full",disabled:!0,"data-testid":`cta-${u.id}`,children:"Current Plan"}):i.jsx(ze,{variant:"primary",className:"w-full",onClick:()=>l(u.id),loading:a===u.id,"data-testid":`cta-${u.id}`,children:u.cta})})]},u.id)})}),i.jsx("div",{className:"mx-auto mt-10 max-w-6xl rounded-xl border border-border-dark bg-surface-dark p-8","data-testid":"enterprise-section",children:i.jsxs("div",{className:"flex flex-col items-center justify-between gap-4 sm:flex-row",children:[i.jsxs("div",{children:[i.jsx("h2",{className:"text-xl font-semibold text-text-primary-dark",children:"Enterprise"}),i.jsx("p",{className:"mt-1 text-text-secondary-dark",children:"Custom pricing · Unlimited seats · VPC deploy · SSO · 24/7 support"})]}),i.jsx("a",{href:"mailto:sales@crewlyai.com",children:i.jsx(ze,{variant:"ghost","data-testid":"contact-sales-btn",children:"Contact Sales"})})]})})]})},d4={ONLINE_THRESHOLD_MS:3e4,STALE_THRESHOLD_MS:6e4};function YEe(t,e=new Date){if(!t)return"offline";const n=Date.parse(t);if(Number.isNaN(n))return"offline";const r=e.getTime()-n;return r<=d4.ONLINE_THRESHOLD_MS?"online":r<=d4.STALE_THRESHOLD_MS?"stale":"offline"}const JEe="/api/cloud/validate",ZEe="/api/cloud/status",QEe="/api/cloud/devices",eAe="/api/relay/cloud-devices",tAe=5e3,nAe=6e5,rAe={waiting:"Connecting",paired:"Connected",disconnected:"Offline",online:"Online",offline:"Offline"},sAe={waiting:"bg-yellow-400",paired:"bg-emerald-400",disconnected:"bg-gray-500",online:"bg-emerald-400",offline:"bg-gray-500"};function iAe(t){return t.filter(e=>typeof e.deviceName=="string"&&e.deviceName.length>0)}function aAe(t){const e=new Map;for(const n of t){const r=n.deviceId||n.sessionId;if(!r){e.set(`__unkeyed_${e.size}`,n);continue}const s=e.get(r);if(!s)e.set(r,n);else{const a=new Date(s.lastHeartbeatAt||s.registeredAt||"0").getTime(),o=new Date(n.lastHeartbeatAt||n.registeredAt||"0").getTime(),l=s.status==="online"||s.state==="paired"||s.state==="waiting",c=n.status==="online"||n.state==="paired"||n.state==="waiting";(o>a||c&&!l)&&e.set(r,n)}}return Array.from(e.values())}const oAe=t=>{switch(t){case"pro":return"bg-primary/10 text-primary border-primary/30";case"enterprise":return"bg-amber-500/10 text-amber-400 border-amber-500/30";default:return"bg-gray-500/10 text-gray-400 border-gray-500/30"}},lAe=({device:t})=>{const e=t.role==="orchestrator"?go:Yg,n=t.status||t.state||"disconnected",r=sAe[n]??"bg-gray-500",s=rAe[n]??n,a=t.name||t.deviceName||(t.sessionId?`${t.role||"device"} (${t.sessionId.slice(0,8)}...)`:t.deviceId||"Unknown");return i.jsxs("div",{"data-testid":`cloud-device-${t.sessionId||t.deviceId}`,className:`flex items-center justify-between p-3 rounded-lg border transition-colors ${t.isLocal?"border-primary/30 bg-primary/5":"border-border-dark bg-background-dark hover:border-border-dark/80"}`,children:[i.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[i.jsx("div",{className:`p-1.5 rounded-md ${t.isLocal?"bg-primary/10":"bg-surface-dark"}`,children:i.jsx(e,{className:`w-4 h-4 ${t.isLocal?"text-primary":"text-text-secondary-dark"}`})}),i.jsxs("div",{className:"min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark truncate",children:a}),t.isLocal&&i.jsx("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded bg-primary/10 text-primary whitespace-nowrap",children:"This machine"})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:t.lastHeartbeatAt?`Last seen: ${tx(t.lastHeartbeatAt)}`:`Registered: ${tx(t.registeredAt)}`})]})]}),i.jsxs("div",{className:"flex items-center gap-1.5 ml-3 whitespace-nowrap",children:[i.jsx("span",{className:`h-2 w-2 rounded-full ${r}`}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:s})]})]})},cAe=()=>{const[t,e]=k.useState([]),[n,r]=k.useState(!0),[s,a]=k.useState(null),[o,l]=k.useState(!1),[c,d]=k.useState(null),u=k.useCallback(async()=>{var f;try{r(!0),a(null),l(!1),d(null);const p=await fetch(QEe),x=await p.json();if(p.ok&&x.success&&x.data){if(x.data.syncState&&d(x.data.syncState),x.data.devices&&x.data.devices.length>0){e(x.data.devices),x.data.tokenExpired&&l(!0);return}if(!x.data.syncState||x.data.syncState==="stopped")try{const y=await fetch(eAe),m=await y.json();if(y.ok&&m.success&&((f=m.data)!=null&&f.devices)){e(m.data.devices),m.data.tokenExpired&&l(!0);return}}catch{}e(x.data.devices||[]),x.data.tokenExpired&&l(!0)}else a(x.error||"Failed to load devices")}catch{a("Could not reach the server")}finally{r(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=k.useMemo(()=>iAe(aAe(t)),[t]);return i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl p-6 space-y-3","data-testid":"cloud-device-list-section",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(nM,{className:"w-4 h-4 text-text-secondary-dark"}),i.jsx("h3",{className:"text-lg font-semibold text-text-primary-dark",children:"Connected Devices"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["(",h.length,")"]}),c&&i.jsx("span",{"data-testid":"sync-state-badge",className:`text-[10px] font-medium px-1.5 py-0.5 rounded ${c==="syncing"?"bg-emerald-500/10 text-emerald-400":c==="error"?"bg-rose-500/10 text-rose-400":"bg-gray-500/10 text-gray-400"}`,children:c==="syncing"?"Sync Active":c==="error"?"Sync Error":"Sync Off"})]}),i.jsx("button",{onClick:u,disabled:n,className:"p-1.5 text-text-secondary-dark hover:text-text-primary-dark rounded-md hover:bg-background-dark transition-colors disabled:opacity-50","aria-label":"Refresh devices","data-testid":"refresh-devices-button",children:i.jsx(zn,{className:`w-3.5 h-3.5 ${n?"animate-spin":""}`})})]}),s&&i.jsx(Bt,{variant:"error",className:"text-xs",children:s}),o&&!s&&i.jsx(Bt,{variant:"warning",className:"text-xs","data-testid":"token-expired-warning",children:"Cloud session expired. Please disconnect and sign in again to refresh your token."}),!n&&!s&&!o&&h.length===0&&i.jsxs("div",{className:"text-center py-6",children:[i.jsx(go,{className:"w-8 h-8 text-text-secondary-dark/30 mx-auto mb-2"}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"No devices connected yet"}),i.jsxs("p",{className:"text-[11px] text-text-secondary-dark/60 mt-0.5",children:["Connect from another machine using ",i.jsx("code",{className:"text-primary/80",children:"crewly cloud connect"})]})]}),h.length>0&&i.jsx("div",{className:"space-y-2",children:h.map(f=>i.jsx(lAe,{device:f},f.deviceId||f.sessionId||f.name||f.deviceName))})]})},dAe={online:{textClass:"text-emerald-400",dotClass:"bg-emerald-400",label:"Online"},stale:{textClass:"text-amber-400",dotClass:"bg-amber-400",label:"Stale"},offline:{textClass:"text-text-secondary-dark",dotClass:"bg-gray-500",label:"Offline"}},uAe=({status:t})=>{const e=dAe[t];return i.jsxs("span",{className:`inline-flex items-center gap-1 text-xs ${e.textClass}`,"data-testid":`browser-instance-status-${t}`,children:[i.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${e.dotClass}`}),e.label]})},hAe=()=>{const[t,e]=k.useState([]),[n,r]=k.useState(!1),[s,a]=k.useState(!0),o=k.useCallback(async()=>{try{const l=await fetch("/api/browser/instances");if(l.ok){const c=await l.json();e(c.instances||[]),r(c.proxyConnected||!1)}}catch{}finally{a(!1)}},[]);return k.useEffect(()=>{o();const l=setInterval(o,15e3);return()=>clearInterval(l)},[o]),i.jsxs("div",{className:"rounded-xl border border-border-dark bg-surface-dark p-5","data-testid":"browser-extensions-section",children:[i.jsxs("div",{className:"flex items-center justify-between mb-4",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(vA,{className:"h-4 w-4 text-text-secondary-dark"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Browser Extensions"}),i.jsx("span",{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium ${n?"bg-emerald-500/10 text-emerald-400":"bg-amber-500/10 text-amber-400"}`,children:n?"Relay Connected":"Relay Offline"})]}),i.jsx("button",{onClick:()=>{a(!0),o()},className:"text-text-secondary-dark hover:text-text-primary-dark p-1 rounded hover:bg-background-dark transition-colors",title:"Refresh",children:i.jsx(zn,{className:`w-3.5 h-3.5 ${s?"animate-spin":""}`})})]}),s?i.jsxs("div",{className:"flex items-center gap-2 text-text-secondary-dark py-3",children:[i.jsx(gu,{className:"h-4 w-4 animate-spin"}),i.jsx("span",{className:"text-xs",children:"Loading..."})]}):t.length===0?i.jsxs("div",{className:"text-center py-6",children:[i.jsx(go,{className:"h-8 w-8 text-text-secondary-dark mx-auto mb-2 opacity-40"}),i.jsx("p",{className:"text-xs text-text-secondary-dark",children:"No browser extensions connected"}),i.jsx("p",{className:"text-[10px] text-text-secondary-dark mt-1 opacity-60",children:"Install Crewly in Chrome and sign in to connect"})]}):i.jsx("div",{className:"space-y-2",children:t.map(l=>i.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-border-dark bg-background-dark px-4 py-3",children:[i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("div",{className:"flex items-center justify-center w-8 h-8 rounded-full bg-indigo-500/10",children:i.jsx(vA,{className:"h-4 w-4 text-indigo-400"})}),i.jsxs("div",{children:[i.jsx("p",{className:"text-sm font-medium text-text-primary-dark",children:l.instanceName}),i.jsxs("p",{className:"text-[10px] text-text-secondary-dark font-mono",children:[l.instanceId.slice(0,8),"..."]})]})]}),i.jsxs("div",{className:"flex flex-col items-end gap-0.5",children:[i.jsx(uAe,{status:YEe(l.lastSeenAt)}),l.lastSeenAt&&i.jsxs("span",{className:"text-[10px] text-text-secondary-dark",children:["Last seen: ",tx(l.lastSeenAt)]})]})]},l.instanceId))})]})},fAe=()=>{const t=_r(),[e]=pp(),{license:n,user:r}=vp(),s=e.get("upgraded")==="true",[a,o]=k.useState(!1),[l,c]=k.useState(null),[d,u]=k.useState(null),[h,f]=k.useState(!0),[p,x]=k.useState(null),[y,m]=k.useState(null),[g,v]=k.useState(null),[b,S]=k.useState(!0),[C,E]=k.useState([]),[N,T]=k.useState(!0),[A,M]=k.useState("idle");k.useState("");const[P,I]=k.useState(null);k.useState(null);const B=k.useCallback(async()=>{try{const F=await fetch(ZEe),J=await F.json();if(F.ok&&J.success&&J.data){const q=J.data,te=q.connectionStatus==="connected";return o(te),u(q.cloudUrl??null),c(te?q.tier??null:null),te}}catch{}return o(!1),c(null),u(null),!1},[]),V=k.useCallback(async()=>{const F=localStorage.getItem(Km);if(F)try{const J=await fetch(JEe,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${F}`}}),q=await J.json();J.ok&&q.success&&q.data?(m({id:q.data.id,email:q.data.email,plan:q.data.plan,name:q.data.name,avatar:q.data.avatar}),x(null)):(localStorage.removeItem(Km),m(null))}catch{x("Could not reach CrewlyAI Cloud. Check your internet connection.")}},[]),K=k.useCallback(async F=>{try{const J=localStorage.getItem("crewly_refresh_token")||void 0;await fetch("/api/cloud/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:F,...J&&{refreshToken:J}})})}catch{}},[]);k.useEffect(()=>{(async()=>{await B(),await V(),f(!1)})()},[B,V]),k.useEffect(()=>{const F=localStorage.getItem(Km);F&&y&&K(F)},[y,K]),k.useEffect(()=>{(async()=>{try{const J=await ft.getSubscription();v(J)}catch{v(null)}finally{S(!1)}})()},[]),k.useEffect(()=>{(async()=>{try{const J=await ft.listDeployments({customerId:r==null?void 0:r.id});E(J.deployments)}catch{E([])}finally{T(!1)}})()},[r==null?void 0:r.id]);const H=()=>{const F=`${window.location.origin}/auth/callback`;window.location.href=`https://api.crewlyai.com/api/cloud/google/start?redirect=${encodeURIComponent(F)}`},$=async()=>{localStorage.removeItem(Km),m(null),o(!1),c(null),u(null),x(null);try{await fetch("/api/cloud/disconnect",{method:"POST"})}catch{}},L=async()=>{f(!0),x(null),await B(),await V(),f(!1)};k.useCallback(async F=>{const J=Date.now(),q=async()=>{if(Date.now()-J>nAe){M("error"),I("Deployment timed out after 10 minutes");return}try{const te=await ft.getDeploymentStatus(F);if(te.currentPhase==="READY"&&te.success){M("ready"),E(z=>[...z.filter(Q=>Q.deploymentId!==F),{...te,deploymentId:F}]);return}if(te.currentPhase==="FAILED"||te.error){M("error"),I(te.error??"Deployment failed");return}setTimeout(q,tAe)}catch(te){M("error"),I(te instanceof Error?te.message:"Failed to check deployment status")}};q()},[]);const U=a||!!y,R=(y==null?void 0:y.plan)??l??(g==null?void 0:g.plan)??(n==null?void 0:n.plan)??"free",D=R!=="free",G=h||b;return C.filter(F=>F.success&&F.currentPhase==="READY"),h?i.jsx("div",{className:"p-6",children:i.jsx("div",{className:"mx-auto max-w-7xl flex justify-center py-12",children:i.jsx(sr,{size:"sm"})})}):i.jsx("div",{className:"p-6",children:i.jsxs("div",{className:"mx-auto max-w-7xl",children:[i.jsxs("div",{className:"mb-8 flex items-center gap-3",children:[i.jsx(Hf,{className:"h-8 w-8 text-primary"}),i.jsxs("div",{children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Cloud Portal"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Connect, manage, and deploy your Crewly teams in the cloud"})]})]}),s&&i.jsxs("div",{className:"mb-6 rounded-xl border border-emerald-500/30 bg-emerald-500/10 p-4 text-center","data-testid":"upgrade-success-banner",children:[i.jsx(Wu,{className:"mx-auto h-6 w-6 text-emerald-400 mb-2"}),i.jsx("h3",{className:"text-lg font-semibold text-emerald-400",children:"Welcome to Crewly Pro!"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1",children:"Your subscription is active. Deploy your first AI team below to get started."})]}),p&&i.jsx("div",{className:"mb-6",children:i.jsx(Bt,{variant:"error",children:p})}),!U&&i.jsxs(Ot,{padding:"lg",className:"text-center space-y-4 mb-6",children:[i.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-primary/10 mx-auto",children:i.jsx(Uc,{className:"w-8 h-8 text-primary"})}),i.jsxs("div",{children:[i.jsx("h2",{className:"text-lg font-semibold text-text-primary-dark",children:"Connect to CrewlyAI Cloud"}),i.jsx("p",{className:"text-sm text-text-secondary-dark mt-1 max-w-md mx-auto",children:"Sign in with your CrewlyAI account to enable device sync, remote team access, and Pro features."})]}),i.jsxs("button",{onClick:H,className:"inline-flex items-center gap-2 px-6 py-3 bg-primary text-white rounded-lg font-medium text-sm hover:bg-primary/90 transition-colors","data-testid":"cloud-sign-in-button",children:[i.jsx(Ps,{className:"w-4 h-4"}),"Sign in with CrewlyAI"]})]}),U&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"mb-6 rounded-xl border border-border-dark bg-surface-dark p-6","data-testid":"connection-card",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("div",{className:"w-10 h-10 bg-primary/10 rounded-full flex items-center justify-center",children:y!=null&&y.avatar?i.jsx("img",{src:y.avatar,alt:y.name||y.email,className:"w-10 h-10 rounded-full"}):i.jsx(Hf,{className:"w-5 h-5 text-primary"})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:y?y.name||y.email:"CrewlyAI Cloud"}),i.jsx(br,{className:"w-4 h-4 text-emerald-400"}),i.jsx("span",{className:`px-2 py-0.5 text-xs font-medium rounded border ${oAe(R)} capitalize`,children:R})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:y?y.email:"Connected via backend"}),d&&i.jsx("p",{className:"text-xs text-text-secondary-dark mt-0.5",children:d})]})]}),!D&&i.jsx(ze,{variant:"primary",onClick:()=>t("/pricing"),"data-testid":"upgrade-btn",children:"Upgrade Now"})]}),i.jsxs("div",{className:"flex items-center gap-2 pt-4 mt-4 border-t border-border-dark",children:[i.jsxs("button",{onClick:L,disabled:G,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary-dark hover:text-text-primary-dark rounded-md hover:bg-background-dark transition-colors disabled:opacity-50","data-testid":"refresh-connection-button",children:[i.jsx(zn,{className:`w-3.5 h-3.5 ${G?"animate-spin":""}`}),"Refresh"]}),i.jsxs("button",{onClick:$,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary-dark hover:text-rose-400 rounded-md hover:bg-background-dark transition-colors","data-testid":"cloud-disconnect-button",children:[i.jsx(WF,{className:"w-3.5 h-3.5"}),"Disconnect"]})]})]}),i.jsx("div",{className:"mb-6",children:i.jsx(cAe,{})}),i.jsx("div",{className:"mb-6",children:i.jsx(hAe,{})}),!1,!1]})]})})},LS=({count:t=3})=>i.jsx("div",{className:"animate-pulse space-y-3","data-testid":"skeleton-rows",children:Array.from({length:t},(e,n)=>i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-lg p-5 space-y-3",children:[i.jsx("div",{className:"h-4 bg-background-dark/50 rounded w-3/4"}),i.jsx("div",{className:"h-3 bg-background-dark/50 rounded w-1/2"}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx("div",{className:"h-6 bg-background-dark/50 rounded-full w-16"}),i.jsx("div",{className:"h-6 bg-background-dark/50 rounded-full w-20"})]})]},n))});LS.displayName="SkeletonRows";function yb({label:t,options:e,value:n,onChange:r,testIdPrefix:s,className:a=""}){return i.jsxs("div",{className:`flex items-center gap-2 flex-wrap ${a}`,role:"group","aria-label":t,children:[t&&i.jsx("span",{className:"text-xs uppercase tracking-wide text-text-secondary-dark font-medium min-w-[72px]",children:t}),i.jsx("div",{className:"flex items-center gap-1.5 flex-wrap",children:e.map(o=>i.jsx(iM,{isActive:o.key===n,onClick:()=>r(o.key),count:o.count,"data-testid":s?`${s}-${o.key}`:void 0,children:o.label},o.key))})]})}yb.displayName="FilterPillGroup";const _j=({missionId:t,onDecided:e,size:n="sm"})=>{const[r,s]=k.useState(null),[a,o]=k.useState(null),[l,c]=k.useState(!1),[d,u]=k.useState(""),h=async()=>{s("approve"),o(null);try{const p=await ft.approveMission(t);e(p)}catch(p){o(p instanceof Error?p.message:"Failed to approve")}finally{s(null)}},f=async()=>{if(!d.trim()){o("A rejection reason is required.");return}s("reject"),o(null);try{const p=await ft.rejectMission(t,d.trim());c(!1),u(""),e(p)}catch(p){o(p instanceof Error?p.message:"Failed to reject")}finally{s(null)}};return i.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap","data-testid":`approval-actions-${t}`,onClick:p=>p.stopPropagation(),children:[i.jsx(ze,{variant:"primary",size:n,icon:br,onClick:h,disabled:r!==null,"data-testid":`approve-${t}`,children:r==="approve"?"Approving…":"Approve"}),i.jsx(ze,{variant:"ghost",size:n,icon:On,onClick:()=>{o(null),c(!0)},disabled:r!==null,"data-testid":`reject-${t}`,children:"Reject"}),a&&!l&&i.jsx("span",{className:"text-xs text-red-400","data-testid":`approval-error-${t}`,children:a}),l&&i.jsxs(Ka,{isOpen:l,onClose:()=>c(!1),title:"Reject proposal",size:"sm",children:[i.jsxs(rM,{children:[i.jsxs("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:["Reason ",i.jsx("span",{className:"text-red-400",children:"*"})]}),i.jsx("textarea",{className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-y focus:outline-none focus:border-accent-blue/50",rows:3,value:d,onChange:p=>u(p.target.value),placeholder:"Why is this decomposition not acceptable?","data-testid":`reject-reason-${t}`}),a&&i.jsx("div",{className:"mt-2",children:i.jsx(Bt,{variant:"error",children:a})})]}),i.jsxs(ad,{children:[i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>c(!1),disabled:r!==null,children:"Cancel"}),i.jsx(ze,{variant:"danger",size:"sm",onClick:f,disabled:r!==null,"data-testid":`reject-confirm-${t}`,children:r==="reject"?"Rejecting…":"Reject proposal"})]})]})]})},pAe=[{key:"all",label:"All"},{key:"critical",label:"Critical"},{key:"high",label:"High"},{key:"medium",label:"Medium"},{key:"low",label:"Low"}],mAe=[{key:"all",label:"All"},{key:"current",label:"Current"},{key:"upcoming",label:"Upcoming"},{key:"past",label:"Past"},{key:"none",label:"No period"}];function K9(t,e=new Date){if(!t)return"none";const n=new Date(t.startDate).getTime(),r=new Date(t.endDate).getTime(),s=e.getTime();return s<n?"upcoming":s>=r?"past":"current"}function gAe(t){const e=Date.now(),n=new Date(t).getTime(),r=e-n,s=Math.floor(r/6e4),a=Math.floor(s/60),o=Math.floor(a/24);return s<1?"just now":s<60?`${s}m ago`:a<24?`${a}h ago`:`${o}d ago`}const xAe=({criteria:t})=>{const[e,n]=k.useState(!1);if(t.length===0)return null;const r=e?t:t.slice(0,3),s=t.length-3;return i.jsxs("div",{className:"mt-2 flex items-center gap-1.5 flex-wrap",children:[r.map((a,o)=>i.jsx(tn,{variant:"default",size:"md",children:a.length>40?a.slice(0,40)+"...":a},o)),!e&&s>0&&i.jsxs("button",{type:"button",onClick:a=>{a.stopPropagation(),n(!0)},className:"text-xs text-primary hover:text-primary/80 transition-colors cursor-pointer",children:["+",s," more"]}),e&&t.length>3&&i.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),n(!1)},className:"text-xs text-primary hover:text-primary/80 transition-colors cursor-pointer",children:"Show less"})]})},yAe=({missionId:t,keyResults:e})=>e.length===0?null:i.jsx("div",{className:"mt-3 space-y-1.5","data-testid":`mission-krs-${t}`,children:e.map(n=>{const r=Math.round(RM(n));return i.jsxs("div",{className:"flex flex-col gap-1 rounded-md bg-surface-dark/60 border border-border-dark px-3 py-2","data-testid":`mission-kr-${t}-${n.id}`,children:[i.jsxs("div",{className:"flex items-center justify-between gap-3",children:[i.jsx("span",{className:"text-xs font-medium text-text-primary-dark truncate",children:n.title}),i.jsxs("span",{className:"text-[11px] text-text-secondary-dark flex-shrink-0 font-mono",children:[hg(n.current,n.metricType,n.unit)," /"," ",hg(n.target,n.metricType,n.unit),i.jsxs("span",{className:"ml-2 opacity-70",children:["(",r,"%)"]})]})]}),i.jsx("div",{className:"h-1 w-full rounded-full bg-border-dark/40 overflow-hidden",children:i.jsx("div",{className:`h-full rounded-full transition-all ${NM[n.status]}`,style:{width:`${r}%`}})})]},n.id)})});function vAe(t,e){if(t.status==="active"&&e.status!=="active")return-1;if(t.status!=="active"&&e.status==="active")return 1;const n=pP[t.priority??"low"],r=pP[e.priority??"low"];return n!==r?n-r:new Date(e.updatedAt).getTime()-new Date(t.updatedAt).getTime()}function bAe(t){return t.length===0?null:t.reduce((n,r)=>n+RM(r),0)/t.length}const _Ae=24,q9=({node:t,depth:e,ctx:n})=>{var S,C,E;const{mission:r}=t,{missionsById:s,cascadeById:a,teamNames:o,onDecided:l,navigate:c}=n,d=K9(r.period),u=r.parentMissionId?s.get(r.parentMissionId):void 0,h=e===0&&!!r.parentMissionId,f=r.keyResults??[],p=jM(r,s),x=a.get(r.id),y=x?x.rolledUpProgress:bAe(f),m=x&&x.totalKRs>0?G6(x):H6(f),g=(S=r.approval)==null?void 0:S.state,v=!!g&&(g!=="approved"||!!((C=r.approval)!=null&&C.decidedAt)),b=o.get(r.ownerTeamId)??r.ownerTeamId;return i.jsxs("div",{"data-testid":`mission-node-${r.id}`,style:{marginLeft:e*_Ae},children:[i.jsx(Ot,{variant:"default",padding:"md",className:`border cursor-pointer transition-colors ${g==="pending_approval"?"border-yellow-500/40 hover:border-yellow-500/70":"border-border-dark hover:border-primary/30"} ${e>0?"border-l-2 border-l-primary/30":""}`,"data-testid":`mission-row-${r.id}`,onClick:()=>c(`/missions/${r.id}`),children:i.jsxs("div",{className:"flex items-start justify-between gap-4",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[h&&i.jsxs("button",{type:"button",onClick:N=>{N.stopPropagation(),r.parentMissionId&&c(`/missions/${r.parentMissionId}`)},className:"mb-1 flex items-center gap-1 text-[11px] text-text-secondary-dark hover:text-primary transition-colors","data-testid":`mission-parent-${r.id}`,children:[i.jsx("span",{children:"↳ Child of"}),i.jsx("span",{className:"font-medium",children:(u==null?void 0:u.objective)??((E=r.parentMissionId)==null?void 0:E.slice(0,8))})]}),i.jsxs("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[i.jsx(Dx,{level:p}),i.jsx("span",{className:"text-base font-semibold leading-6 text-text-primary-dark",children:r.objective}),v&&g&&i.jsx(IM,{state:g})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-2",children:[i.jsx(Wl,{status:MM(r.status),children:Qb(r.status)}),r.priority&&i.jsx(tn,{variant:z6[r.priority],size:"sm","data-testid":`mission-priority-${r.id}`,children:qA[r.priority]}),r.period&&i.jsx(tn,{variant:d==="current"?"success":d==="past"?"default":"info",size:"sm","data-testid":`mission-period-${r.id}`,children:r.period.label??`${r.period.type}`}),i.jsxs(tn,{variant:"default",size:"sm","data-testid":`mission-team-${r.id}`,children:["Team: ",b.length>24?`${b.slice(0,22)}…`:b]}),i.jsxs(tn,{variant:"info",size:"sm",children:[r.activeProjectTaskIds.length," active tasks"]}),f.length>0&&i.jsxs(tn,{variant:"info",size:"sm",children:[f.length," KR",f.length===1?"":"s"]}),r.cadence&&i.jsxs("span",{className:"text-[11px] font-mono text-text-secondary-dark",title:"Review cadence (cron)","data-testid":`mission-cadence-${r.id}`,children:["⏱ ",r.cadence]}),i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["Updated ",gAe(r.updatedAt)]})]}),(y!==null||x)&&i.jsxs("div",{className:"mb-2 flex flex-col gap-1","data-testid":`mission-rollup-${r.id}`,children:[i.jsx(nx,{percent:y??0,label:x&&x.childMissionCount>0?`Rolled-up (${x.childMissionCount} child${x.childMissionCount===1?"":"ren"})`:"Progress","data-testid":`mission-progress-${r.id}`}),i.jsx(PM,{counts:m})]}),g==="pending_approval"&&i.jsx("div",{className:"mb-2",children:i.jsx(_j,{missionId:r.id,onDecided:l})}),r.currentStrategy&&i.jsx("p",{className:"text-xs text-text-secondary-dark line-clamp-2",children:r.currentStrategy}),f.length>0?i.jsx(yAe,{missionId:r.id,keyResults:f}):i.jsx(xAe,{criteria:r.successCriteria??[]})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark font-mono flex-shrink-0",children:r.id.slice(0,8)})]})}),t.children.length>0&&i.jsx("div",{className:"mt-2 flex flex-col gap-2","data-testid":`mission-children-${r.id}`,children:t.children.map(N=>i.jsx(q9,{node:N,depth:e+1,ctx:n},N.mission.id))})]})},X9=()=>{const t=_r(),[e,n]=k.useState([]),[r,s]=k.useState(new Map),[a,o]=k.useState([]),[l,c]=k.useState([]),[d,u]=k.useState(!0),[h,f]=k.useState(null),[p,x]=k.useState("all"),[y,m]=k.useState("all"),[g,v]=k.useState("all"),[b,S]=k.useState("all"),[C,E]=k.useState(""),[N,T]=k.useState(!1),A=k.useCallback(async D=>{const G=new Set(D.map(q=>q.id)),F=D.filter(q=>!q.parentMissionId||!G.has(q.parentMissionId)),J=new Map;await Promise.all(F.map(async q=>{try{const te=await ft.getCascadeSummary(q.id);W6(te,J)}catch{}})),s(J)},[]),M=k.useCallback(async()=>{u(!0),f(null);try{const D=await ft.getMissions();n(D),A(D)}catch(D){f(D instanceof Error?D.message:"Failed to load missions")}finally{u(!1)}},[A]);k.useEffect(()=>{M()},[M]),k.useEffect(()=>{let D=!1;return(async()=>{try{const G=await ft.getTeams();D||o(Array.isArray(G)?G:[])}catch{}try{const G=await ft.getProjects();D||c(Array.isArray(G)?G:[])}catch{}})(),()=>{D=!0}},[]);const P=k.useMemo(()=>{const D=new Map;for(const G of e)D.set(G.id,G);return D},[e]),I=k.useMemo(()=>{const D=new Map;for(const G of a)D.set(G.id,G.name);return D},[a]),B=k.useMemo(()=>{const D=new Set;for(const G of e)G.ownerTeamId&&D.add(G.ownerTeamId);return[{key:"all",label:"All"},...Array.from(D).sort().map(G=>{const F=I.get(G)??G;return{key:G,label:F.length>16?`${F.slice(0,12)}…`:F}})]},[e,I]),V=k.useMemo(()=>{let D=e;if(p!=="all"&&(D=D.filter(G=>G.status===p)),y!=="all"&&(D=D.filter(G=>(G.priority??"low")===y)),g!=="all"&&(D=D.filter(G=>K9(G.period)===g)),b!=="all"&&(D=D.filter(G=>G.ownerTeamId===b)),C.trim()){const G=C.toLowerCase();D=D.filter(F=>{var J,q,te;return F.objective.toLowerCase().includes(G)||F.id.toLowerCase().includes(G)||F.ownerTeamId.toLowerCase().includes(G)||(I.get(F.ownerTeamId)??"").toLowerCase().includes(G)||((J=F.currentStrategy)==null?void 0:J.toLowerCase().includes(G))||((te=(q=F.period)==null?void 0:q.label)==null?void 0:te.toLowerCase().includes(G))})}return D},[e,p,y,g,b,C,I]),K=k.useMemo(()=>BQ(V,vAe),[V]),H=k.useMemo(()=>{const D={all:e.length};for(const G of e)D[G.status]=(D[G.status]||0)+1;return D},[e]),$=k.useMemo(()=>e.filter(D=>{var G;return((G=D.approval)==null?void 0:G.state)==="pending_approval"}).length,[e]),L=k.useCallback(D=>{n(G=>{const F=G.map(J=>J.id===D.id?{...J,...D}:J);return A(F),F})},[A]),U=[{key:"all",label:"All"},{key:"active",label:"Active"},{key:"paused",label:"Paused"},{key:"completed",label:"Completed"},{key:"cancelled",label:"Cancelled"}],R={missionsById:P,cascadeById:r,teamNames:I,onDecided:L,navigate:t};return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"missions-page",children:[i.jsxs("div",{className:"mb-6",children:[i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Missions"}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(ze,{variant:"primary",size:"sm",icon:vr,onClick:()=>T(!0),"data-testid":"missions-new",children:"New Mission"}),i.jsxs("button",{onClick:M,disabled:d,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"missions-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${d?"animate-spin":""}`}),"Refresh"]})]})]}),i.jsxs("p",{className:"text-sm text-text-secondary-dark",children:["Strategic missions driving autonomous team performance — company → team → project OKR cascade.",$>0&&i.jsxs("span",{className:"ml-2 text-yellow-400","data-testid":"missions-pending-hint",children:[$," proposal",$===1?"":"s"," awaiting your approval."]})]})]}),i.jsx(ld,{tabs:U.map(D=>({value:D.key,label:D.label,count:H[D.key]})),activeTab:p,onTabChange:D=>x(D),searchPlaceholder:"Search by mission, team, strategy, period...",searchValue:C,onSearchChange:E,searchDebounceMs:0}),i.jsxs("div",{className:"flex flex-col gap-2 mb-4","data-testid":"missions-secondary-filters",children:[i.jsx(yb,{label:"Priority",options:pAe,value:y,onChange:m,testIdPrefix:"priority-filter"}),i.jsx(yb,{label:"Period",options:mAe,value:g,onChange:v,testIdPrefix:"period-filter"}),B.length>1&&i.jsx(yb,{label:"Team",options:B,value:b,onChange:S,testIdPrefix:"team-filter"})]}),d&&i.jsx("div",{"data-testid":"missions-loading",children:i.jsx(LS,{count:3})}),h&&!d&&i.jsxs(Bt,{variant:"error",title:"Failed to load missions",onClose:()=>f(null),"data-testid":"missions-error",children:[h,i.jsx(ze,{variant:"ghost",size:"sm",onClick:M,className:"mt-2",children:"Retry"})]}),!d&&!h&&V.length===0&&i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"missions-empty",children:[i.jsx(Mu,{className:"h-10 w-10 opacity-40"}),i.jsx("span",{className:"text-sm",children:e.length===0?"No missions created yet.":"No missions match the current filters."})]}),!d&&!h&&V.length>0&&i.jsx("div",{className:"flex flex-col gap-2","data-testid":"missions-list",children:K.map(D=>i.jsx(q9,{node:D,depth:0,ctx:R},D.mission.id))}),i.jsx(SAe,{isOpen:N,onClose:()=>T(!1),onCreated:()=>{T(!1),M()},parentOptions:e.map(D=>({id:D.id,objective:D.objective,level:jM(D,P)})),teams:a,projects:l})]})};X9.displayName="Missions";const Fv="0 9 * * 1",SAe=({isOpen:t,onClose:e,onCreated:n,parentOptions:r,teams:s,projects:a})=>{const[o,l]=k.useState(""),[c,d]=k.useState(""),[u,h]=k.useState(Fv),[f,p]=k.useState(""),[x,y]=k.useState("medium"),[m,g]=k.useState("company"),[v,b]=k.useState(""),[S,C]=k.useState(""),[E,N]=k.useState(!1),[T,A]=k.useState(""),M=IQ[m],P=k.useMemo(()=>M?r.filter(K=>K.level===M):[],[r,M]),I=()=>{l(""),d(""),h(Fv),p(""),y("medium"),g("company"),b(""),C("")},B=K=>{g(K),b(""),K!=="project"&&C("")},V=async()=>{if(A(""),!o.trim()){A("Objective is required");return}if(!c.trim()){A("Team ID is required");return}if(M&&!v){A(`A ${Xd[m].toLowerCase()} mission requires a ${Xd[M].toLowerCase()} parent`);return}if(m==="project"&&!S){A("A project-level mission requires a project");return}try{N(!0),await ft.createMission({objective:o.trim(),ownerTeamId:c.trim(),cadence:u.trim()||Fv,successCriteria:f.trim()?f.split(`
|
|
4956
4956
|
`).map(K=>K.trim()).filter(Boolean):[],priority:x,level:m,...v?{parentMissionId:v}:{},...m==="project"&&S?{projectId:S}:{}}),I(),n()}catch(K){A(K instanceof Error?K.message:"Failed to create mission")}finally{N(!1)}};return t?i.jsxs(Ka,{isOpen:t,onClose:e,title:"New Mission",size:"md",children:[i.jsx(rM,{children:i.jsxs("div",{className:"space-y-4",children:[i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Objective"}),i.jsx("input",{className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark focus:outline-none focus:border-accent-blue/50",value:o,onChange:K=>l(K.target.value),placeholder:"What should this team achieve?","data-testid":"create-mission-objective"})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Level"}),i.jsx(dr,{value:m,onChange:K=>B(K.target.value),"data-testid":"create-mission-level",children:XA.map(K=>i.jsx("option",{value:K,children:Xd[K]},K))}),i.jsx("p",{className:"mt-1 text-xs text-text-secondary-dark",children:"Company missions are roots; team missions cascade from a company mission; project missions from a team mission."})]}),M&&i.jsxs("div",{children:[i.jsxs("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:["Parent ",Xd[M]," Mission"]}),i.jsxs(dr,{value:v,onChange:K=>b(K.target.value),"data-testid":"create-mission-parent",children:[i.jsxs("option",{value:"",children:["— Select a ",Xd[M].toLowerCase()," mission —"]}),P.map(K=>i.jsx("option",{value:K.id,children:K.objective.length>80?K.objective.slice(0,80)+"…":K.objective},K.id))]}),P.length===0&&i.jsxs("p",{className:"mt-1 text-xs text-yellow-400",children:["No ",Xd[M].toLowerCase()," missions exist yet — create one first."]})]}),m==="project"&&i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Project"}),i.jsxs(dr,{value:S,onChange:K=>C(K.target.value),"data-testid":"create-mission-project",children:[i.jsx("option",{value:"",children:"— Select a project —"}),a.map(K=>i.jsx("option",{value:K.id,children:K.name},K.id))]})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Owner Team"}),s.length>0?i.jsxs(dr,{value:c,onChange:K=>d(K.target.value),"data-testid":"create-mission-team",children:[i.jsx("option",{value:"",children:"— Select a team —"}),s.map(K=>i.jsx("option",{value:K.id,children:K.name},K.id))]}):i.jsx("input",{className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark font-mono focus:outline-none focus:border-accent-blue/50",value:c,onChange:K=>d(K.target.value),placeholder:"e.g. crewly-product-leo","data-testid":"create-mission-team"})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Priority"}),i.jsxs(dr,{value:x,onChange:K=>y(K.target.value),"data-testid":"create-mission-priority",children:[i.jsx("option",{value:"critical",children:"Critical"}),i.jsx("option",{value:"high",children:"High"}),i.jsx("option",{value:"medium",children:"Medium"}),i.jsx("option",{value:"low",children:"Low"})]})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Review Cadence (cron)"}),i.jsx("input",{className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark font-mono focus:outline-none focus:border-accent-blue/50",value:u,onChange:K=>h(K.target.value),placeholder:Fv}),i.jsx("p",{className:"mt-1 text-xs text-text-secondary-dark",children:"How often the system reviews progress (default: weekly Monday 9am)"})]}),i.jsxs("div",{children:[i.jsx("label",{className:"block text-sm font-medium text-text-secondary-dark mb-1.5",children:"Success Criteria (one per line)"}),i.jsx("textarea",{className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-none focus:outline-none focus:border-accent-blue/50",rows:3,value:f,onChange:K=>p(K.target.value),placeholder:`All tests passing
|
|
4957
4957
|
Deployed to staging
|
|
4958
|
-
95% code coverage`})]}),T&&i.jsx("div",{"data-testid":"create-mission-error",children:i.jsx(Bt,{variant:"error",children:T})})]})}),i.jsxs(ad,{children:[i.jsx(ze,{variant:"ghost",size:"sm",onClick:e,disabled:E,children:"Cancel"}),i.jsx(ze,{variant:"primary",size:"sm",onClick:V,disabled:E,"data-testid":"create-mission-submit",children:E?"Creating...":"Create Mission"})]})]}):null},Y9={number:"count",percentage:"%",boolean:"done",currency:"$"},u4={number:"Number",percentage:"Percentage",boolean:"Yes / No",currency:"Currency"},h4={title:"",metricType:"number",baseline:"0",target:"",unit:Y9.number,measurementSource:"manual"};function SAe(t){if(!t)return"never";try{return new Date(t).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function Fm(t){if(t.trim()==="")return null;const e=Number(t);return Number.isFinite(e)?e:null}const wAe=({missionId:t,onChanged:e})=>{const[n,r]=k.useState([]),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(null),[u,h]=k.useState(!1),[f,p]=k.useState(!1),[x,y]=k.useState(h4),[m,g]=k.useState(null),[v,b]=k.useState(""),[S,C]=k.useState(""),[E,N]=k.useState(null),[T,A]=k.useState(null),[M,P]=k.useState(null),I=k.useCallback(async()=>{l(null);try{const R=await ft.getKeyResults(t);r(R)}catch(R){l(R instanceof Error?R.message:"Failed to load key results")}finally{a(!1)}},[t]);k.useEffect(()=>{a(!0),I()},[I]);const B=k.useCallback(async R=>{h(!0),d(null);try{return await R(),await I(),e==null||e(),!0}catch(D){return d(D instanceof Error?D.message:"Request failed"),!1}finally{h(!1)}},[I,e]),V=async()=>{const R=Fm(x.baseline),D=Fm(x.target);if(!x.title.trim()){d("Title is required");return}if(R===null||D===null){d("Baseline and target must be numbers");return}if(R===D){d("Baseline and target must be different");return}if(!x.unit.trim()){d("Unit is required");return}const G={title:x.title.trim(),metricType:x.metricType,baseline:R,target:D,unit:x.unit.trim(),measurementSource:x.measurementSource};await B(async()=>{await ft.createKeyResult(t,G)})&&(y(h4),p(!1))},K=R=>{d(null),N(null),g(R.id),b(String(R.current)),C("")},H=async R=>{const D=Fm(v);if(D===null){d("Measurement value must be a number");return}await B(async()=>{await ft.measureKeyResult(t,R,{value:D,source:"user",...S.trim()?{note:S.trim()}:{}})})&&g(null)},$=R=>{d(null),g(null),N(R.id),A({target:String(R.target),current:String(R.current),measurementSource:R.measurementSource})},L=async R=>{if(!T)return;const D=Fm(T.target),G=Fm(T.current);if(D===null||G===null){d("Target and current must be numbers");return}if(D===R.baseline){d("Target must differ from the baseline");return}await B(async()=>{await ft.updateKeyResult(t,R.id,{...D!==R.target?{target:D}:{},...G!==R.current?{current:G}:{},...T.measurementSource!==R.measurementSource?{measurementSource:T.measurementSource}:{}})})&&(N(null),A(null))},U=async()=>{if(!M)return;const R=M;await B(async()=>{await ft.deleteKeyResult(t,R)})&&P(null)};return i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark","data-testid":"key-results-section",children:[i.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide flex items-center gap-1.5",children:[i.jsx(BF,{className:"h-4 w-4"}),"Key Results (",n.length,")"]}),i.jsx(ze,{variant:"ghost",size:"sm",icon:f?On:vr,onClick:()=>{p(R=>!R),d(null)},"data-testid":"kr-add-toggle",children:f?"Cancel":"Add KR"})]}),c&&i.jsx("div",{className:"mb-3","data-testid":"kr-action-error",children:i.jsx(Bt,{variant:"error",onClose:()=>d(null),children:c})}),f&&i.jsxs("div",{className:"mb-4 rounded-lg border border-border-dark bg-background-dark/60 p-3 space-y-2","data-testid":"kr-add-form",children:[i.jsx(Vr,{"aria-label":"KR title",placeholder:"e.g. Reach $5k MRR",value:x.title,onChange:R=>y(D=>({...D,title:R.target.value})),fullWidth:!0,"data-testid":"kr-new-title"}),i.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:[i.jsx(dr,{"aria-label":"Metric type",value:x.metricType,onChange:R=>{const D=R.target.value;y(G=>({...G,metricType:D,unit:Y9[D]}))},"data-testid":"kr-new-metric",children:DQ.map(R=>i.jsx("option",{value:R,children:u4[R]},R))}),i.jsx(Vr,{"aria-label":"Baseline",type:"number",placeholder:"Baseline",value:x.baseline,onChange:R=>y(D=>({...D,baseline:R.target.value})),"data-testid":"kr-new-baseline"}),i.jsx(Vr,{"aria-label":"Target",type:"number",placeholder:"Target",value:x.target,onChange:R=>y(D=>({...D,target:R.target.value})),"data-testid":"kr-new-target"}),i.jsx(Vr,{"aria-label":"Unit",placeholder:"Unit",value:x.unit,onChange:R=>y(D=>({...D,unit:R.target.value})),"data-testid":"kr-new-unit"})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(dr,{"aria-label":"Measurement source",value:x.measurementSource,onChange:R=>y(D=>({...D,measurementSource:R.target.value})),"data-testid":"kr-new-source",children:gP.map(R=>i.jsx("option",{value:R,children:vk[R]},R))}),i.jsx(ze,{variant:"primary",size:"sm",onClick:V,disabled:u,"data-testid":"kr-new-submit",children:u?"Saving…":"Create KR"})]})]}),s?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"kr-loading",children:"Loading key results…"}):o?i.jsx("div",{"data-testid":"kr-error",children:i.jsxs(Bt,{variant:"error",children:[o,i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>{a(!0),I()},className:"mt-2",children:"Retry"})]})}):n.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"kr-empty",children:"No key results yet. Add one to make this mission measurable."}):i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm","data-testid":"kr-table",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"text-left text-[11px] uppercase tracking-wide text-text-secondary-dark border-b border-border-dark",children:[i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Key result"}),i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Type"}),i.jsx("th",{className:"py-2 pr-3 font-medium whitespace-nowrap",children:"Baseline → Current → Target"}),i.jsx("th",{className:"py-2 pr-3 font-medium min-w-[140px]",children:"Progress"}),i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Status"}),i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Source"}),i.jsx("th",{className:"py-2 pr-3 font-medium whitespace-nowrap",children:"Last measured"}),i.jsx("th",{className:"py-2 font-medium text-right",children:"Actions"})]})}),i.jsx("tbody",{children:n.map(R=>{var q;const D=RM(R),G=(q=R.measurements)==null?void 0:q[0],F=m===R.id,J=E===R.id&&T!==null;return i.jsxs(Vn.Fragment,{children:[i.jsxs("tr",{className:"border-b border-border-dark/60 align-top","data-testid":`kr-row-${R.id}`,children:[i.jsx("td",{className:"py-2 pr-3 text-text-primary-dark font-medium",children:R.title}),i.jsx("td",{className:"py-2 pr-3 text-text-secondary-dark",children:u4[R.metricType]}),i.jsxs("td",{className:"py-2 pr-3 font-mono text-xs text-text-primary-dark whitespace-nowrap","data-testid":`kr-values-${R.id}`,children:[hg(R.baseline,R.metricType,R.unit),i.jsx("span",{className:"text-text-secondary-dark",children:" → "}),i.jsx("span",{className:"font-semibold",children:hg(R.current,R.metricType,R.unit)}),i.jsx("span",{className:"text-text-secondary-dark",children:" → "}),hg(R.target,R.metricType,R.unit)]}),i.jsx("td",{className:"py-2 pr-3",children:i.jsx(nx,{percent:D,status:R.status,"data-testid":`kr-progress-${R.id}`})}),i.jsx("td",{className:"py-2 pr-3",children:i.jsx(tn,{variant:OQ[R.status],size:"sm","data-testid":`kr-status-${R.id}`,children:YA[R.status]})}),i.jsx("td",{className:"py-2 pr-3 text-xs text-text-secondary-dark",children:vk[R.measurementSource]??R.measurementSource}),i.jsx("td",{className:"py-2 pr-3 text-xs text-text-secondary-dark whitespace-nowrap","data-testid":`kr-last-${R.id}`,children:SAe(G==null?void 0:G.measuredAt)}),i.jsx("td",{className:"py-2 text-right whitespace-nowrap",children:i.jsxs("div",{className:"inline-flex items-center gap-1",children:[i.jsx(ze,{variant:"ghost",size:"sm",icon:HK,onClick:()=>K(R),disabled:u,"data-testid":`kr-measure-${R.id}`,"aria-label":"Record measurement",children:"Measure"}),i.jsx(ze,{variant:"ghost",size:"icon",className:"h-8 w-8",icon:E1,onClick:()=>$(R),disabled:u,"data-testid":`kr-edit-${R.id}`,"aria-label":"Edit key result"}),i.jsx(ze,{variant:"danger-ghost",size:"icon",className:"h-8 w-8",icon:Vi,onClick:()=>P(R.id),disabled:u,"data-testid":`kr-delete-${R.id}`,"aria-label":"Delete key result"})]})})]}),F&&i.jsx("tr",{className:"border-b border-border-dark/60 bg-background-dark/40","data-testid":`kr-measure-form-${R.id}`,children:i.jsx("td",{colSpan:8,className:"py-2 px-2",children:i.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"Record measurement:"}),i.jsx(Vr,{"aria-label":"Measurement value",type:"number",value:v,onChange:te=>b(te.target.value),className:"w-32","data-testid":`kr-measure-value-${R.id}`}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:R.unit}),i.jsx(Vr,{"aria-label":"Measurement note",placeholder:"Note (optional)",value:S,onChange:te=>C(te.target.value),className:"flex-1 min-w-[160px]","data-testid":`kr-measure-note-${R.id}`}),i.jsx(ze,{variant:"primary",size:"sm",icon:$c,onClick:()=>H(R.id),disabled:u,"data-testid":`kr-measure-submit-${R.id}`,children:u?"Saving…":"Save"}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>g(null),disabled:u,children:"Cancel"})]})})}),J&&T&&i.jsx("tr",{className:"border-b border-border-dark/60 bg-background-dark/40","data-testid":`kr-edit-form-${R.id}`,children:i.jsx("td",{colSpan:8,className:"py-2 px-2",children:i.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"Edit:"}),i.jsx("label",{className:"text-xs text-text-secondary-dark",children:"Target"}),i.jsx(Vr,{"aria-label":"Edit target",type:"number",value:T.target,onChange:te=>A(z=>z&&{...z,target:te.target.value}),className:"w-28","data-testid":`kr-edit-target-${R.id}`}),i.jsx("label",{className:"text-xs text-text-secondary-dark",children:"Current"}),i.jsx(Vr,{"aria-label":"Edit current",type:"number",value:T.current,onChange:te=>A(z=>z&&{...z,current:te.target.value}),className:"w-28","data-testid":`kr-edit-current-${R.id}`}),i.jsx(dr,{"aria-label":"Edit measurement source",value:T.measurementSource,onChange:te=>A(z=>z&&{...z,measurementSource:te.target.value}),"data-testid":`kr-edit-source-${R.id}`,children:gP.map(te=>i.jsx("option",{value:te,children:vk[te]},te))}),i.jsx(ze,{variant:"primary",size:"sm",icon:$c,onClick:()=>L(R),disabled:u,"data-testid":`kr-edit-submit-${R.id}`,children:u?"Saving…":"Save"}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>{N(null),A(null)},disabled:u,children:"Cancel"})]})})})]},R.id)})})]})}),i.jsx(B1,{isOpen:M!==null,title:"Delete key result",message:"This removes the key result and its measurement history. This cannot be undone.",confirmLabel:"Delete",confirmVariant:"danger",loading:u,onCancel:()=>P(null),onConfirm:U})]})},kAe={continue:"Continue",adjust_strategy:"Adjust strategy",replan:"Replan",escalate:"Escalate"};function f4(t,e){return e.get(t)??t.slice(0,8)}const CAe=({missionId:t,level:e,parentMissionId:n,missionNames:r,refreshKey:s=0})=>{const a=_r(),[o,l]=k.useState(null),[c,d]=k.useState(!0),[u,h]=k.useState(null),f=k.useCallback(async()=>{d(!0),h(null);try{l(await ft.getCascadeSummary(t))}catch(p){h(p instanceof Error?p.message:"Failed to load cascade")}finally{d(!1)}},[t]);return k.useEffect(()=>{f()},[f,s]),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark","data-testid":"cascade-section",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Gf,{className:"h-4 w-4"}),"Cascade"]}),i.jsxs("div",{className:"mb-3",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide block mb-1",children:"Parent"}),n?i.jsxs("button",{type:"button",onClick:()=>a(`/missions/${n}`),className:"flex items-center gap-1.5 text-sm text-primary hover:underline text-left","data-testid":"cascade-parent-link",children:[i.jsx(Xg,{className:"h-3.5 w-3.5"}),f4(n,r)]}):i.jsxs("span",{className:"text-sm text-text-secondary-dark","data-testid":"cascade-parent-none",children:["None — this is a ",e," root."]})]}),c?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"cascade-loading",children:"Loading roll-up…"}):u?i.jsx("div",{"data-testid":"cascade-error",children:i.jsx(Bt,{variant:"error",children:u})}):o?i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{"data-testid":"cascade-rollup",children:[i.jsxs("div",{className:"flex items-center justify-between mb-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Rolled-up progress"}),i.jsx("span",{className:"text-[11px] text-text-secondary-dark","data-testid":"cascade-recommendation",children:kAe[o.recommendation]??o.recommendation})]}),i.jsx(nx,{percent:o.rolledUpProgress,"data-testid":"cascade-rollup-bar"}),i.jsxs("div",{className:"mt-1 flex items-center justify-between gap-2 flex-wrap",children:[i.jsxs("span",{className:"text-[11px] text-text-secondary-dark",children:["Own progress ",Math.round(o.overallProgress),"% · ",o.totalKRs," KR",o.totalKRs===1?"":"s"]}),i.jsx(PM,{counts:G6(o)})]})]}),i.jsxs("div",{children:[i.jsxs("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide block mb-1",children:["Children (",o.childMissionCount,")"]}),o.children.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"cascade-children-empty",children:"No approved child missions."}):i.jsx("ul",{className:"space-y-2","data-testid":"cascade-children",children:o.children.map(p=>i.jsx("li",{"data-testid":`cascade-child-${p.missionId}`,children:i.jsxs("button",{type:"button",onClick:()=>a(`/missions/${p.missionId}`),className:"w-full text-left rounded-lg border border-border-dark px-3 py-2 hover:border-primary/30 transition-colors",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx(Dx,{level:p.level}),i.jsx("span",{className:"text-sm text-text-primary-dark truncate",children:f4(p.missionId,r)}),p.childMissionCount>0&&i.jsxs("span",{className:"text-[11px] text-text-secondary-dark ml-auto flex-shrink-0",children:[p.childMissionCount," child",p.childMissionCount===1?"":"ren"]})]}),i.jsx(nx,{percent:p.rolledUpProgress,"data-testid":`cascade-child-progress-${p.missionId}`})]})},p.missionId))})]})]}):null]})},EAe=({parentMissionId:t,onDecided:e})=>{const n=_r(),[r,s]=k.useState([]),[a,o]=k.useState(!1),l=k.useCallback(async()=>{try{s(await ft.getProposals(t))}catch{s([])}finally{o(!0)}},[t]);k.useEffect(()=>{l()},[l]);const c=d=>{s(u=>u.filter(h=>h.id!==d.id)),e==null||e(d)};return!a||r.length===0?null:i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-yellow-500/40","data-testid":"proposals-section",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Vu,{className:"h-4 w-4 text-yellow-400"}),"Proposals awaiting approval (",r.length,")"]}),i.jsx("ul",{className:"space-y-2",children:r.map(d=>{var u,h,f,p,x;return i.jsx("li",{className:"rounded-lg border border-border-dark px-3 py-2","data-testid":`proposal-${d.id}`,children:i.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap",children:[i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[d.level&&i.jsx(Dx,{level:d.level}),i.jsx("button",{type:"button",onClick:()=>n(`/missions/${d.id}`),className:"text-sm font-medium text-text-primary-dark hover:text-primary text-left","data-testid":`proposal-link-${d.id}`,children:d.objective})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap text-[11px] text-text-secondary-dark",children:[i.jsxs(tn,{variant:"default",size:"sm",children:["Team: ",d.ownerTeamId.slice(0,16)]}),((u=d.approval)==null?void 0:u.proposedBy)&&i.jsxs("span",{children:["Proposed by ",d.approval.proposedBy]}),(((h=d.keyResults)==null?void 0:h.length)??0)>0&&i.jsxs("span",{children:[(f=d.keyResults)==null?void 0:f.length," KR",((p=d.keyResults)==null?void 0:p.length)===1?"":"s"]})]}),((x=d.successCriteria)==null?void 0:x.length)>0&&i.jsx("ul",{className:"mt-1 text-xs text-text-secondary-dark list-disc pl-4",children:d.successCriteria.slice(0,3).map((y,m)=>i.jsx("li",{children:y},m))})]}),i.jsx(_j,{missionId:d.id,onDecided:c})]})},d.id)})})]})},AAe=[{key:"completedTasks",label:"Done",dot:"bg-emerald-500"},{key:"runningTasks",label:"Running",dot:"bg-blue-500"},{key:"queuedTasks",label:"Queued",dot:"bg-border-dark"},{key:"blockedTasks",label:"Blocked",dot:"bg-amber-500"},{key:"failedTasks",label:"Failed",dot:"bg-rose-500"}],TAe=({missionId:t,refreshKey:e=0})=>{const[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),c=k.useCallback(async()=>{a(!0),l(null);try{r(await ft.getMissionProgress(t))}catch(d){l(d instanceof Error?d.message:"Failed to load progress")}finally{a(!1)}},[t]);return k.useEffect(()=>{c()},[c,e]),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark","data-testid":"mission-progress-section",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx($o,{className:"h-4 w-4"}),"Execution Progress"]}),s?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"mission-progress-loading",children:"Loading progress…"}):o?i.jsx("div",{"data-testid":"mission-progress-error",children:i.jsx(Bt,{variant:"error",children:o})}):n?i.jsxs("div",{className:"space-y-3 text-sm",children:[i.jsx(nx,{percent:n.progressPercent,label:`${n.completedTasks}/${n.totalTasks} tasks`,"data-testid":"mission-progress-bar"}),n.totalTasks===0?i.jsx("p",{className:"text-xs text-text-secondary-dark","data-testid":"mission-progress-empty",children:"No work items under this mission yet."}):i.jsx("ul",{className:"space-y-1.5","data-testid":"mission-progress-rows",children:AAe.map(d=>i.jsxs("li",{className:"flex items-center justify-between","data-testid":`mission-progress-${d.key}`,children:[i.jsxs("span",{className:"flex items-center gap-2 text-text-secondary-dark",children:[i.jsx("span",{className:`inline-block h-2 w-2 rounded-full ${d.dot}`}),d.label]}),i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n[d.key]})]},d.key))}),i.jsxs("div",{className:"flex items-center justify-between border-t border-border-dark pt-2",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Phase"}),i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n.phase})]}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Cost"}),i.jsxs("span",{className:"text-text-primary-dark font-mono text-xs","data-testid":"mission-progress-cost",children:["$",n.totalCost.toFixed(2)]})]})]}):null]})};function Kh(t){try{return new Date(t).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function MAe(t){var e,n,r,s;return{objective:t.objective,status:t.status,priority:t.priority??"medium",ownerTeamId:t.ownerTeamId,currentStrategy:t.currentStrategy??"",cadence:t.cadence??"",successCriteriaText:(t.successCriteria??[]).join(`
|
|
4959
|
-
`),periodLabel:((e=t.period)==null?void 0:e.label)??"",periodType:((n=t.period)==null?void 0:n.type)??"",periodStart:(r=t.period)!=null&&r.startDate?t.period.startDate.slice(0,10):"",periodEnd:(s=t.period)!=null&&s.endDate?t.period.endDate.slice(0,10):"",parentMissionId:t.parentMissionId??""}}function
|
|
4960
|
-
`).map(n=>n.trim()).filter(Boolean),parentMissionId:t.parentMissionId||""};return t.periodType&&t.periodStart&&t.periodEnd?e.period={type:t.periodType,startDate:new Date(t.periodStart).toISOString(),endDate:new Date(t.periodEnd).toISOString(),...t.periodLabel?{label:t.periodLabel}:{}}:!t.periodType&&!t.periodStart&&!t.periodEnd&&(e.period=null),e}const J9=()=>{var $,L,U,R,D;const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(!1),[u,h]=k.useState(!1),[f,p]=k.useState(null),[x,y]=k.useState(!1),[m,g]=k.useState(null),[v,b]=k.useState(new Map),[S,C]=k.useState(new Map),[E,N]=k.useState(0),T=k.useCallback(async(G=!0)=>{if(t){G?a(!0):d(!0),l(null);try{const F=await ft.getMission(t);r(F)}catch(F){const J=F instanceof Error?F.message:"Failed to load mission";l(J)}finally{a(!1),d(!1)}}},[t]);k.useEffect(()=>{T()},[T]),k.useEffect(()=>{let G=!1;return(async()=>{try{const F=await ft.getMissions();if(G)return;b(new Map(F.map(J=>[J.id,J.objective]))),C(new Map(F.map(J=>[J.id,{level:J.level,parentMissionId:J.parentMissionId}])))}catch{}})(),()=>{G=!0}},[t]);const A=k.useCallback(()=>{N(G=>G+1),T(!1)},[T]),M=k.useCallback(G=>{r(F=>F&&F.id===G.id?{...F,...G}:F),A()},[A]),P=k.useCallback(()=>{n&&(p(MAe(n)),g(null),h(!0))},[n]),I=k.useCallback(()=>{h(!1),p(null),g(null)},[]),B=k.useCallback(async()=>{if(!(!t||!f)){if(!f.objective.trim()){g("Objective cannot be empty.");return}if(!f.ownerTeamId.trim()){g("Owner team cannot be empty.");return}y(!0),g(null);try{const G=await ft.updateMission(t,NAe(f));r(G),h(!1),p(null)}catch(G){const F=G instanceof Error?G.message:"Failed to save mission";g(F)}finally{y(!1)}}},[t,f]),V=k.useMemo(()=>(G,F)=>{p(J=>J&&{...J,[G]:F})},[]);if(s)return i.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:i.jsx(sr,{size:"xl",text:"Loading mission..."})});if(o)return i.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto","data-testid":"mission-detail-error",children:[i.jsxs("button",{onClick:()=>e("/missions"),className:"flex items-center gap-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Missions"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8",children:[i.jsx("p",{className:"text-red-400 mb-2",children:o}),i.jsx("button",{onClick:()=>T(),className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary/10 text-primary hover:bg-primary/20 transition-colors",children:"Retry"})]})})]});if(!n)return i.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto",children:[i.jsxs("button",{onClick:()=>e("/missions"),className:"flex items-center gap-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Missions"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8 text-text-secondary-dark",children:[i.jsx(Mu,{className:"h-10 w-10 mx-auto mb-3 opacity-40"}),i.jsx("p",{children:"Mission not found."})]})})]});const K=jM(n,S),H=($=n.approval)==null?void 0:$.state;return i.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto","data-testid":"mission-detail-page",children:[i.jsxs("button",{onClick:()=>e("/missions"),className:"flex items-center gap-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors","data-testid":"mission-detail-back",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Missions"]}),i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-6",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[u&&f?i.jsx(Vr,{"aria-label":"Objective",value:f.objective,onChange:G=>V("objective",G.target.value),fullWidth:!0,"data-testid":"edit-objective"}):i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark mb-2",children:n.objective}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap mt-2",children:[i.jsx(Dx,{level:K}),i.jsx(Wl,{status:MM(n.status),children:Qb(n.status)}),H&&(H!=="approved"||((L=n.approval)==null?void 0:L.decidedAt))&&i.jsx(IM,{state:H}),n.priority&&i.jsx(tn,{variant:z6[n.priority],size:"sm",children:qA[n.priority]}),((U=n.period)==null?void 0:U.label)&&i.jsx(tn,{variant:"info",size:"sm",children:n.period.label}),i.jsx(tn,{variant:"default",size:"sm",children:n.id.slice(0,12)})]}),H==="pending_approval"&&!u&&i.jsxs("div",{className:"mt-3 flex items-center gap-3 flex-wrap","data-testid":"mission-pending-banner",children:[i.jsxs("span",{className:"text-xs text-yellow-400",children:["Proposed",(R=n.approval)!=null&&R.proposedBy?` by ${n.approval.proposedBy}`:""," — awaiting your decision."]}),i.jsx(_j,{missionId:n.id,onDecided:M})]}),H==="rejected"&&((D=n.approval)==null?void 0:D.rejectionReason)&&i.jsxs("p",{className:"mt-2 text-xs text-red-400","data-testid":"mission-rejection-reason",children:["Rejected: ",n.approval.rejectionReason]})]}),i.jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:u?i.jsxs(i.Fragment,{children:[i.jsx(ze,{variant:"primary",size:"sm",icon:$c,onClick:B,disabled:x,"data-testid":"mission-save",children:x?"Saving…":"Save"}),i.jsx(ze,{variant:"ghost",size:"sm",icon:On,onClick:I,disabled:x,"data-testid":"mission-cancel",children:"Cancel"})]}):i.jsxs(i.Fragment,{children:[i.jsx(ze,{variant:"primary",size:"sm",icon:E1,onClick:P,"data-testid":"mission-edit",children:"Edit"}),i.jsx(ze,{variant:"ghost",size:"sm",icon:zn,onClick:()=>T(!1),disabled:c,className:c?"animate-spin":"","aria-label":"Refresh mission",children:"Refresh"})]})})]}),m&&i.jsx("div",{"data-testid":"mission-save-error",className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>g(null),children:m})}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[i.jsxs("div",{className:"lg:col-span-2 flex flex-col gap-4",children:[i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-2 flex items-center gap-1.5",children:[i.jsx(Mu,{className:"h-4 w-4"}),"Current Strategy"]}),u&&f?i.jsx("textarea",{"aria-label":"Current Strategy",className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-y focus:outline-none focus:border-accent-blue/50",rows:4,value:f.currentStrategy,onChange:G=>V("currentStrategy",G.target.value),"data-testid":"edit-strategy"}):i.jsx("p",{className:"text-sm text-text-primary-dark leading-relaxed whitespace-pre-wrap",children:n.currentStrategy||"No strategy defined."})]}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Wu,{className:"h-4 w-4"}),"Success Criteria (",n.successCriteria.length,")"]}),u&&f?i.jsx("textarea",{"aria-label":"Success Criteria (one per line)",className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-y focus:outline-none focus:border-accent-blue/50",rows:5,placeholder:"One criterion per line",value:f.successCriteriaText,onChange:G=>V("successCriteriaText",G.target.value),"data-testid":"edit-success-criteria"}):n.successCriteria.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No success criteria defined."}):i.jsx("ul",{className:"space-y-2",children:n.successCriteria.map((G,F)=>i.jsxs("li",{className:"flex items-start gap-2 text-sm text-text-primary-dark",children:[i.jsx("span",{className:"text-primary mt-0.5 flex-shrink-0",children:i.jsx(HF,{className:"h-4 w-4"})}),G]},F))})]}),!u&&i.jsx(wAe,{missionId:n.id,onChanged:A}),!u&&i.jsx(EAe,{parentMissionId:n.id,onDecided:M}),!u&&i.jsx(CAe,{missionId:n.id,level:K,parentMissionId:n.parentMissionId,missionNames:v,refreshKey:E}),!u&&n.learnings&&n.learnings.length>0&&i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Ex,{className:"h-4 w-4"}),"Learnings (",n.learnings.length,")"]}),i.jsx("ul",{className:"space-y-2",children:n.learnings.map((G,F)=>i.jsx("li",{className:"text-sm text-text-primary-dark pl-4 border-l-2 border-border-dark",children:G},F))})]})]}),i.jsxs("div",{className:"flex flex-col gap-4",children:[!u&&i.jsx(TAe,{missionId:n.id,refreshKey:E}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(rr,{className:"h-4 w-4"}),"Team & Settings"]}),i.jsxs("div",{className:"space-y-3 text-sm",children:[i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Owner Team"}),u&&f?i.jsx(Vr,{"aria-label":"Owner Team",value:f.ownerTeamId,onChange:G=>V("ownerTeamId",G.target.value),fullWidth:!0,"data-testid":"edit-owner-team"}):i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n.ownerTeamId})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Status"}),u&&f?i.jsxs(dr,{value:f.status,onChange:G=>V("status",G.target.value),"data-testid":"edit-status",children:[i.jsx("option",{value:"active",children:"Active"}),i.jsx("option",{value:"paused",children:"Paused"}),i.jsx("option",{value:"completed",children:"Completed"}),i.jsx("option",{value:"cancelled",children:"Cancelled"})]}):i.jsx("span",{className:"text-text-primary-dark",children:Qb(n.status)})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Priority"}),u&&f?i.jsxs(dr,{value:f.priority,onChange:G=>V("priority",G.target.value),"data-testid":"edit-priority",children:[i.jsx("option",{value:"critical",children:"Critical"}),i.jsx("option",{value:"high",children:"High"}),i.jsx("option",{value:"medium",children:"Medium"}),i.jsx("option",{value:"low",children:"Low"})]}):i.jsx("span",{className:"text-text-primary-dark",children:qA[n.priority??"medium"]})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Parent Mission"}),u&&f?i.jsx(Vr,{"aria-label":"Parent Mission ID",placeholder:"(none)",value:f.parentMissionId,onChange:G=>V("parentMissionId",G.target.value),fullWidth:!0,"data-testid":"edit-parent"}):n.parentMissionId?i.jsx("button",{type:"button",onClick:()=>e(`/missions/${n.parentMissionId}`),className:"text-left text-xs text-primary hover:underline truncate","data-testid":"mission-parent-link",children:v.get(n.parentMissionId)??n.parentMissionId}):i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:"—"})]}),!u&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Level"}),i.jsx("span",{className:"text-text-primary-dark","data-testid":"mission-level",children:K})]}),!u&&n.projectId&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Project"}),i.jsx("button",{type:"button",onClick:()=>e(`/projects/${n.projectId}`),className:"text-xs text-primary hover:underline font-mono","data-testid":"mission-project-link",children:n.projectId.slice(0,12)})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Active Tasks"}),i.jsx("span",{className:"text-text-primary-dark",children:n.activeProjectTaskIds.length})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Cadence (cron)"}),u&&f?i.jsx(Vr,{"aria-label":"Cadence",value:f.cadence,onChange:G=>V("cadence",G.target.value),fullWidth:!0,"data-testid":"edit-cadence"}):i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n.cadence||"N/A"})]})]})]}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(mA,{className:"h-4 w-4"}),"OKR Period"]}),u&&f?i.jsxs("div",{className:"space-y-2",children:[i.jsxs(dr,{value:f.periodType,onChange:G=>V("periodType",G.target.value),"data-testid":"edit-period-type",children:[i.jsx("option",{value:"",children:"— No period —"}),i.jsx("option",{value:"weekly",children:"Weekly"}),i.jsx("option",{value:"biweekly",children:"Biweekly"}),i.jsx("option",{value:"monthly",children:"Monthly"}),i.jsx("option",{value:"quarterly",children:"Quarterly"}),i.jsx("option",{value:"custom",children:"Custom"})]}),i.jsx(Vr,{type:"date","aria-label":"Period start",value:f.periodStart,onChange:G=>V("periodStart",G.target.value),fullWidth:!0,"data-testid":"edit-period-start"}),i.jsx(Vr,{type:"date","aria-label":"Period end",value:f.periodEnd,onChange:G=>V("periodEnd",G.target.value),fullWidth:!0,"data-testid":"edit-period-end"}),i.jsx(Vr,{"aria-label":"Period label",placeholder:"Label (optional)",value:f.periodLabel,onChange:G=>V("periodLabel",G.target.value),fullWidth:!0,"data-testid":"edit-period-label"})]}):n.period?i.jsxs("div",{className:"space-y-2 text-sm",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Type"}),i.jsx("span",{className:"text-text-primary-dark",children:n.period.type})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Start"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.period.startDate)})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"End"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.period.endDate)})]}),n.period.label&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Label"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:n.period.label})]})]}):i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No period defined."})]}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(mA,{className:"h-4 w-4"}),"Timestamps"]}),i.jsxs("div",{className:"space-y-2 text-sm",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Created"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.createdAt)})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Updated"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.updatedAt)})]}),n.lastReviewAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Last Review"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.lastReviewAt)})]}),n.nextReviewAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Next Review"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.nextReviewAt)})]})]})]}),!u&&n.activeProjectTaskIds.length>0&&i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(fr,{className:"h-4 w-4"}),"Active Task IDs"]}),i.jsx("div",{className:"flex flex-wrap gap-1.5",children:n.activeProjectTaskIds.map(G=>i.jsx(tn,{variant:"default",size:"sm",children:G.slice(0,12)},G))})]})]})]})]})};J9.displayName="MissionDetail";function Sj(t){return{queued:"pending",scheduled:"paused",running:"running",blocked:"blocked",done:"completed",failed:"error",cancelled:"inactive"}[t]??"pending"}function wj(t){return{queued:"Queued",scheduled:"Scheduled",running:"Running",blocked:"Blocked",done:"Completed",failed:"Failed",cancelled:"Cancelled"}[t]??t}function kj(t){return{delegate:"primary",project_task:"info",check:"default",notify:"success",cron_run:"warning",review:"info",confirm:"warning",reconcile:"default"}[t]??"default"}function Cj(t){return{delegate:"Delegate",project_task:"Project Task",check:"Check",notify:"Notify",cron_run:"Cron Run",review:"Review",confirm:"Confirm",reconcile:"Reconcile"}[t]??t}function jAe(t){return{orchestrator:"Orchestrator",team_lead:"Team Lead",agent:"Agent",system:"System"}[t]??t}function DS(t){const e=Date.now(),n=new Date(t).getTime(),r=e-n,s=Math.floor(r/6e4),a=Math.floor(s/60),o=Math.floor(a/24);return s<1?"just now":s<60?`${s}m ago`:a<24?`${a}h ago`:`${o}d ago`}function Qm(t){const e=new Date(t);return isNaN(e.getTime())?t:e.toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0})}function Z9(t){return t===0?"—":t<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`}function Ag(t){return t===0?"—":t<1e3?t.toString():t<1e6?`${(t/1e3).toFixed(1)}K`:`${(t/1e6).toFixed(1)}M`}function Q9(t){const e=[];if(e.push({id:`${t.id}-created`,kind:"status_change",label:"QUEUED",detail:"WorkItem created and added to pool.",timestamp:t.createdAt,status:"queued"}),t.startedAt&&e.push({id:`${t.id}-started`,kind:"status_change",label:"RUNNING",detail:t.target?`Claimed by agent: ${t.target}`:"Execution started.",timestamp:t.startedAt,status:"running"}),t.error){const n=t.completedAt||t.startedAt||t.createdAt;e.push({id:`${t.id}-error`,kind:"error",label:"ERROR",detail:t.error,timestamp:n,status:"failed"})}if(t.completedAt&&t.status==="done"&&e.push({id:`${t.id}-done`,kind:"status_change",label:"COMPLETED",detail:"Execution completed successfully.",timestamp:t.completedAt,status:"done"}),t.completedAt&&t.status==="failed"&&e.push({id:`${t.id}-failed`,kind:"status_change",label:"FAILED",detail:`Execution failed after ${t.retryCount}/${t.maxRetries} retries.`,timestamp:t.completedAt,status:"failed"}),t.status==="cancelled"){const n=t.completedAt||t.createdAt,r=t.cancelReason,s=typeof r=="string"&&r.length>0?`Cancelled: ${r}`:"Cancelled (no reason recorded).";e.push({id:`${t.id}-cancelled`,kind:"status_change",label:"CANCELLED",detail:s,timestamp:n,status:"cancelled"})}if(t.status==="blocked"){const n=t.blockedReason,r=typeof n=="string"&&n.length>0?`Blocked: ${n}`:"Blocked (no reason recorded).";e.push({id:`${t.id}-blocked`,kind:"status_change",label:"BLOCKED",detail:r,timestamp:t.startedAt||t.createdAt,status:"blocked"})}if(t.result&&Object.keys(t.result).length>0){const n=t.completedAt||t.startedAt||t.createdAt;e.push({id:`${t.id}-result`,kind:"progress_update",label:"RESULT DATA",detail:JSON.stringify(t.result,null,2),timestamp:n})}return e.sort((n,r)=>new Date(r.timestamp).getTime()-new Date(n.timestamp).getTime())}function RAe(t,e){if(t==="error")return Fl;if(t==="progress_update")return BF;if(t==="agent_reasoning"||t==="tool_action")return Js;switch(e){case"queued":return fr;case"running":return Js;case"done":return Wu;case"failed":return Fl;case"cancelled":return _K;case"blocked":return mp;default:return fr}}function IAe(t,e){if(t==="error")return"text-red-400";if(t==="progress_update")return"text-blue-400";switch(e){case"queued":return"text-gray-400";case"running":return"text-green-400";case"done":return"text-blue-400";case"failed":return"text-red-400";case"cancelled":return"text-gray-500";case"blocked":return"text-yellow-400";default:return"text-gray-400"}}function PAe(t,e){return t==="error"?"border-red-500/30":e==="done"?"border-blue-500/30":e==="running"?"border-green-500/30":"border-border-dark"}const Ej=({events:t})=>t.length===0?i.jsx("div",{className:"flex items-center justify-center py-8 text-text-secondary-dark text-sm","data-testid":"timeline-empty",children:"No activity recorded yet."}):i.jsx("div",{className:"relative","data-testid":"workitem-timeline",children:t.map((e,n)=>{const r=RAe(e.kind,e.status),s=IAe(e.kind,e.status),a=PAe(e.kind,e.status),o=n===t.length-1;return i.jsxs("div",{className:"relative flex gap-4 pb-6","data-testid":`timeline-event-${e.id}`,children:[!o&&i.jsx("div",{className:`absolute left-[15px] top-8 bottom-0 w-px border-l ${a}`}),i.jsx("div",{className:"relative z-10 flex-shrink-0 mt-0.5",children:i.jsx("div",{className:`p-1 rounded-full bg-surface-dark ${s}`,children:i.jsx(r,{className:"h-5 w-5"})})}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx("span",{className:`text-sm font-semibold ${s}`,children:e.label}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:Qm(e.timestamp)})]}),e.detail&&i.jsx("div",{className:`mt-1 text-sm ${e.kind==="error"?"bg-red-500/10 border border-red-500/20 rounded-md p-2 text-red-300":e.kind==="progress_update"?"bg-surface-dark border border-border-dark rounded-md p-2 text-text-secondary-dark font-mono text-xs whitespace-pre-wrap overflow-x-auto max-h-40 overflow-y-auto":"text-text-secondary-dark"}`,children:e.detail})]})]},e.id)})});Ej.displayName="WorkItemTimeline";const Ma=({icon:t,label:e,value:n,valueClass:r="text-text-primary-dark"})=>i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsxs("div",{className:"flex items-center gap-2 text-text-secondary-dark",children:[i.jsx(t,{className:"h-4 w-4"}),i.jsx("span",{className:"text-sm",children:e})]}),i.jsx("span",{className:`text-sm font-medium ${r}`,children:n})]}),e7=({item:t})=>{const e=LAe(t);return i.jsxs("div",{className:"space-y-4","data-testid":"workitem-metrics",children:[i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Token Usage"}),i.jsxs("div",{className:"divide-y divide-border-dark",children:[i.jsx(Ma,{icon:Yg,label:"Input Tokens",value:Ag(t.inputTokens)}),i.jsx(Ma,{icon:Yg,label:"Output Tokens",value:Ag(t.outputTokens)}),i.jsx(Ma,{icon:q2,label:"Cost",value:Z9(t.cost),valueClass:t.cost>0?"text-yellow-400":"text-text-primary-dark"})]})]}),i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Execution"}),i.jsxs("div",{className:"divide-y divide-border-dark",children:[i.jsx(Ma,{icon:zn,label:"Retries",value:`${t.retryCount} / ${t.maxRetries}`}),i.jsx(Ma,{icon:fr,label:"Duration",value:e}),i.jsx(Ma,{icon:Ku,label:"Owner",value:jAe(t.owner)}),t.target&&i.jsx(Ma,{icon:Mu,label:"Agent",value:t.target})]})]}),(t.requestId||t.missionId||t.projectTaskId||t.triggerId)&&i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Linked References"}),i.jsxs("div",{className:"divide-y divide-border-dark",children:[t.requestId&&i.jsx(Ma,{icon:Sl,label:"Request",value:Um(t.requestId)}),t.missionId&&i.jsx(Ma,{icon:Sl,label:"Mission",value:Um(t.missionId)}),t.projectTaskId&&i.jsx(Ma,{icon:Sl,label:"Project Task",value:Um(t.projectTaskId)}),t.triggerId&&i.jsx(Ma,{icon:Sl,label:"Trigger",value:Um(t.triggerId)}),t.parentWorkItemId&&i.jsx(Ma,{icon:Sl,label:"Parent Item",value:Um(t.parentWorkItemId)})]})]}),i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Timestamps"}),i.jsxs("div",{className:"space-y-2 text-sm",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Created"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.createdAt)})]}),t.startedAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Started"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.startedAt)})]}),t.completedAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Completed"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.completedAt)})]}),t.scheduledAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Scheduled"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.scheduledAt)})]})]})]})]})};e7.displayName="WorkItemMetrics";function LAe(t){const e=t.startedAt?new Date(t.startedAt).getTime():null,n=t.completedAt?new Date(t.completedAt).getTime():t.startedAt?Date.now():null;if(!e||!n)return"--";const r=n-e,s=Math.floor(r/1e3)%60,a=Math.floor(r/6e4)%60,o=Math.floor(r/36e5);return o>0?`${o}h ${a}m`:a>0?`${a}m ${s}s`:`${s}s`}function Um(t){return t.length<=12?t:`${t.slice(0,8)}...`}function DAe(t){const e={total:t.length,running:0,queued:0,done:0,failed:0,blocked:0};for(const n of t)switch(n.status){case"running":e.running++;break;case"queued":case"scheduled":e.queued++;break;case"done":e.done++;break;case"failed":e.failed++;break;case"blocked":e.blocked++;break}return e}const OAe=({stats:t})=>t?i.jsxs(CM,{variant:"horizontal",className:"grid-cols-3 md:grid-cols-6","data-testid":"workitem-summary-bar",children:[i.jsx($s,{label:"Total",value:t.total}),i.jsx($s,{label:"Running",children:i.jsx("span",{className:"text-blue-400",children:t.running})}),i.jsx($s,{label:"Queued",children:i.jsx("span",{className:"text-yellow-400",children:t.queued})}),i.jsx($s,{label:"Done",children:i.jsx("span",{className:"text-green-400",children:t.done})}),i.jsx($s,{label:"Failed",children:i.jsx("span",{className:"text-red-400",children:t.failed})}),i.jsx($s,{label:"Blocked",children:i.jsx("span",{className:"text-orange-400",children:t.blocked})})]}):null,t7=()=>{const t=_r(),[e,n]=k.useState([]),[r,s]=k.useState(!0),[a,o]=k.useState(null),[l,c]=k.useState("all"),[d,u]=k.useState(""),[h,f]=k.useState(""),p=k.useRef(),x=k.useCallback(C=>{f(C),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{u(C)},300)},[]);k.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]);const y=k.useCallback(async()=>{s(!0),o(null);try{const C=await ft.getWorkItems();if(!Array.isArray(C)){console.warn("[WorkItems] getWorkItems returned non-array:",typeof C,C),n([]);return}n(C)}catch(C){console.warn("[WorkItems] loadItems error:",C),o(C instanceof Error?C.message:"Failed to load work items")}finally{s(!1)}},[]);k.useEffect(()=>{y()},[y]);const m=k.useMemo(()=>{let C=e;if(l!=="all"&&(C=C.filter(N=>N.status===l)),d.trim()){const N=d.toLowerCase();C=C.filter(T=>{var A;return T.title.toLowerCase().includes(N)||T.id.toLowerCase().includes(N)||((A=T.target)==null?void 0:A.toLowerCase().includes(N))||T.type.toLowerCase().includes(N)})}const E={running:0,blocked:1,failed:2,done:3,completed:3,cancelled:4,queued:5,scheduled:5};return C.sort((N,T)=>{const A=E[N.status]??5,M=E[T.status]??5;return A!==M?A-M:new Date(T.createdAt).getTime()-new Date(N.createdAt).getTime()})},[e,l,d]),g=k.useMemo(()=>{const C={all:e.length};for(const E of e)C[E.status]=(C[E.status]||0)+1;return C},[e]),v=k.useMemo(()=>e.length>0?DAe(e):null,[e]),b=[{key:"all",label:"All"},{key:"running",label:"Running"},{key:"queued",label:"Queued"},{key:"done",label:"Completed"},{key:"failed",label:"Failed"},{key:"blocked",label:"Blocked"},{key:"cancelled",label:"Cancelled"}],S=k.useCallback((C,E)=>{(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),t(`/workitems/${E}`))},[t]);return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"workitems-page",children:[i.jsxs("div",{className:"mb-6",children:[i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Work Items"}),i.jsxs("button",{onClick:y,disabled:r,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"workitems-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${r?"animate-spin":""}`}),"Refresh"]})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Execution-level view of all system tasks in the task pool."})]}),!r&&i.jsx(OAe,{stats:v}),i.jsx(ld,{tabs:b.map(C=>({value:C.key,label:C.label,count:g[C.key]})),activeTab:l,onTabChange:C=>c(C),searchPlaceholder:"Search by title, ID, agent...",searchValue:h,onSearchChange:x}),r&&i.jsx("div",{"data-testid":"workitems-loading",children:i.jsx(LS,{count:4})}),a&&!r&&i.jsxs(Bt,{variant:"error",title:"Failed to load work items",onClose:()=>o(null),"data-testid":"workitems-error",children:[a,i.jsx(ze,{variant:"ghost",size:"sm",onClick:y,className:"mt-2",children:"Retry"})]}),!r&&!a&&m.length===0&&i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"workitems-empty",children:[i.jsx(Vu,{className:"h-10 w-10 opacity-40"}),i.jsx("span",{className:"text-sm",children:e.length===0?"No work items in the pool yet.":"No work items match the current filters."})]}),!r&&!a&&m.length>0&&i.jsx("div",{className:"flex flex-col gap-2","data-testid":"workitems-list",children:m.map(C=>i.jsx(Ot,{variant:"default",padding:"md",interactive:!0,className:"hover:border-primary/40",role:"button",tabIndex:0,onClick:()=>t(`/workitems/${C.id}`),onKeyDown:E=>S(E,C.id),"data-testid":`workitem-row-${C.id}`,children:i.jsxs("div",{className:"flex items-center justify-between gap-4",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("div",{className:"flex items-center gap-2 mb-1",children:i.jsx("span",{className:"text-base font-medium text-text-primary-dark truncate",children:C.title})}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx(Wl,{status:Sj(C.status),children:wj(C.status)}),i.jsx(tn,{variant:kj(C.type),size:"sm",children:Cj(C.type)}),C.target&&i.jsx(tn,{variant:"default",size:"sm",children:C.target}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:DS(C.createdAt)})]})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark font-mono flex-shrink-0",children:C.id.slice(0,8)})]})},C.id))})]})};t7.displayName="WorkItems";const n7=()=>{const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(!1),u=k.useCallback(async(x=!0)=>{if(t){x?a(!0):d(!0),l(null);try{const y=await ft.getWorkItem(t);r(y)}catch(y){const m=y instanceof Error?y.message:"Failed to load WorkItem";l(m)}finally{a(!1),d(!1)}}},[t]);k.useEffect(()=>{u(!0)},[u]),k.useEffect(()=>{if(!n||n.status!=="running")return;const x=setInterval(()=>{u(!1)},1e4);return()=>clearInterval(x)},[n==null?void 0:n.status,u]);const h=()=>{e("/workitems")},f=()=>{u(!1)};if(s)return i.jsx("div",{className:"flex items-center justify-center h-64","data-testid":"workitem-detail-loading",children:i.jsx(sr,{})});if(o)return i.jsxs("div",{className:"p-6","data-testid":"workitem-detail-error",children:[i.jsxs("button",{onClick:h,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to WorkItems"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8",children:[i.jsx("p",{className:"text-red-400 text-lg font-medium mb-2",children:"Failed to load WorkItem"}),i.jsx("p",{className:"text-text-secondary-dark text-sm mb-4",children:o}),i.jsx("button",{onClick:()=>u(!0),className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary/10 text-primary hover:bg-primary/20 transition-colors",children:"Retry"})]})})]});if(!n)return i.jsxs("div",{className:"p-6","data-testid":"workitem-detail-not-found",children:[i.jsxs("button",{onClick:h,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to WorkItems"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsx("p",{className:"text-center text-text-secondary-dark py-8",children:"WorkItem not found."})})]});const p=Q9(n);return i.jsxs("div",{className:"p-6 max-w-[1400px] mx-auto","data-testid":"workitem-detail",children:[i.jsxs("button",{onClick:h,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-4 transition-colors","data-testid":"workitem-detail-back",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to WorkItems"]}),i.jsxs("div",{className:"mb-6","data-testid":"workitem-detail-header",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-3",children:[i.jsx("div",{className:"flex-1 min-w-0",children:i.jsxs("h1",{className:"text-xl font-bold text-text-primary-dark truncate",children:["WorkItem: ",xE(n.id)," — ",n.title]})}),i.jsxs("button",{onClick:f,disabled:c,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"workitem-detail-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${c?"animate-spin":""}`}),"Refresh"]})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx(Wl,{status:Sj(n.status),children:wj(n.status)}),i.jsx(tn,{variant:kj(n.type),children:Cj(n.type)}),i.jsxs(tn,{variant:"default",children:["Retry ",n.retryCount,"/",n.maxRetries]}),n.requestId&&i.jsx(tn,{variant:"info",children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Ps,{className:"h-3 w-3"}),"Request: ",xE(n.requestId)]})}),n.missionId&&i.jsx(tn,{variant:"info",children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Ps,{className:"h-3 w-3"}),"Mission: ",xE(n.missionId)]})}),i.jsxs("span",{className:"text-xs text-text-secondary-dark ml-2",children:["Created ",DS(n.createdAt)]}),n.target&&i.jsxs(tn,{variant:"primary",children:["Agent: ",n.target]})]}),n.description&&i.jsx("p",{className:"mt-3 text-sm text-text-secondary-dark leading-relaxed",children:n.description})]}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[i.jsx("div",{className:"lg:col-span-2",children:i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-4",children:"Activity Timeline"}),i.jsx(Ej,{events:p})]})}),i.jsx("div",{className:"lg:col-span-1",children:i.jsx(e7,{item:n})})]})]})};n7.displayName="WorkItemDetail";function xE(t){return t.length<=12?t:t.slice(0,8)}const BAe=({stats:t})=>t?i.jsxs(CM,{variant:"horizontal",className:"grid-cols-2 md:grid-cols-6","data-testid":"request-summary-bar",children:[i.jsx($s,{label:"Total Incoming",value:t.total}),i.jsx($s,{label:"Active",value:t.active}),i.jsx($s,{label:"Blocked",children:i.jsx("span",{className:"text-red-400",children:t.blocked})}),i.jsx($s,{label:"Waiting",children:i.jsx("span",{className:"text-yellow-400",children:t.waitingConfirmation})}),i.jsx($s,{label:"Done",children:i.jsx("span",{className:"text-blue-400",children:t.done})}),i.jsx($s,{label:"Total Cost",children:i.jsx("span",{className:"text-emerald-400",children:t.totalCost>0?`$${t.totalCost.toFixed(2)}`:"$0.00"})})]}):null;function FAe(t){return{active:"Active",blocked:"Blocked",waiting_confirmation:"Waiting Confirmation",done:"Done"}[t]??t}function UAe(t){return{critical:"error",high:"warning",medium:"info",low:"default"}[t]??"default"}function zAe(t){return{critical:"Critical",high:"High",medium:"Medium",low:"Low"}[t]??t}function HAe(t){return t.charAt(0).toUpperCase()+t.slice(1)}function GAe(t){const e=Date.now(),n=new Date(t).getTime(),r=e-n,s=Math.floor(r/6e4),a=Math.floor(s/60),o=Math.floor(a/24);return s<1?"just now":s<60?`${s}m ago`:a<24?`${a}h ago`:`${o}d ago`}function WAe(t){return{total:t.length,active:t.filter(e=>e.status==="active").length,blocked:t.filter(e=>e.status==="blocked").length,waitingConfirmation:t.filter(e=>e.status==="waiting_confirmation").length,done:t.filter(e=>e.status==="done").length,totalCost:t.reduce((e,n)=>e+(n.totalCost||0),0)}}const VAe={active:"bg-amber-500/10 text-amber-400 border-amber-500/20",blocked:"bg-red-500/10 text-red-400 border-red-500/20",waiting_confirmation:"bg-indigo-500/10 text-indigo-300 border-indigo-500/20",done:"bg-green-500/10 text-green-400 border-green-500/20"},$Ae={active:"bg-amber-400",blocked:"bg-red-400",waiting_confirmation:"bg-indigo-300",done:"bg-green-400"},KAe=({status:t,label:e,className:n=""})=>{const r=VAe[t],s=$Ae[t],a=e??FAe(t),o=t==="active";return i.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-xs font-medium rounded-full border ${r} ${n}`.trim(),"data-status":t,"data-testid":`request-status-pill-${t}`,children:[i.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${s} ${o?"animate-pulse":""}`.trim(),"aria-hidden":"true"}),a]})},qAe={slack:Ax,email:VF,chat:$F,api:zK,manual:qF},XAe=({item:t})=>{const e=t.status==="done"?"active":t.status==="in_progress"?"connecting":"inactive";return i.jsxs("div",{className:"flex items-center gap-2.5 py-1.5 border-b border-border-dark last:border-b-0","data-testid":`request-child-${t.id}`,children:[i.jsx(Gc,{status:e,size:"sm",pulse:!1}),i.jsx("span",{className:"flex-1 text-xs text-text-secondary-dark",children:t.label}),t.tag&&i.jsx(tn,{variant:"error",size:"sm",children:t.tag}),t.progress!==void 0&&i.jsx("div",{className:"w-20 h-1.5 bg-background-dark rounded-full overflow-hidden",children:i.jsx("div",{className:"h-full bg-primary rounded-full transition-all duration-300",style:{width:`${t.progress}%`}})}),t.assignee&&i.jsx("span",{className:"text-xs text-text-secondary-dark/60",children:t.assignee}),t.dueDate&&i.jsx("span",{className:"text-xs text-text-secondary-dark/60 whitespace-nowrap",children:t.dueDate})]})},YAe=({request:t})=>{const[e,n]=k.useState(!1),r=_r(),s=!!(t.childItems&&t.childItems.length>0),a=k.useCallback(()=>{r(`/tasks/${t.id}`)},[r,t.id]),o=k.useCallback(f=>{f.stopPropagation(),s&&n(p=>!p)},[s]),l=k.useCallback(f=>{f.key==="Enter"?(f.preventDefault(),a()):f.key===" "&&(f.preventDefault(),s&&n(p=>!p))},[a,s]),c=qAe[t.source]??Vu,d=UAe(t.priority),u=HAe(t.source),h=GAe(t.updatedAt);return i.jsx("li",{className:"list-none",children:i.jsxs(Ot,{variant:"default",padding:"none",className:"overflow-hidden hover:border-border-light transition-colors","data-testid":`request-row-${t.id}`,children:[i.jsxs("div",{className:"flex items-center gap-3 px-4 py-2.5 cursor-pointer hover:bg-background-dark/30 transition-colors",role:"button",tabIndex:0,"aria-label":`Open request: ${t.title}`,onClick:a,onKeyDown:l,children:[i.jsx(c,{className:"h-5 w-5 text-text-secondary-dark flex-shrink-0","aria-label":u}),i.jsxs("div",{className:"flex-1 min-w-0 flex flex-col gap-1",children:[i.jsxs("div",{className:"flex items-start gap-2","data-testid":"request-tier-top",children:[i.jsx("span",{className:"text-[15px] font-semibold leading-5 text-text-primary-dark line-clamp-2 flex-1 min-w-0",children:t.title}),i.jsx(KAe,{status:t.status,className:"flex-shrink-0"})]}),i.jsxs("div",{className:"flex items-center gap-3 text-xs text-text-secondary-dark/70 flex-wrap","data-testid":"request-tier-bottom",children:[i.jsx(tn,{variant:d,size:"sm",children:zAe(t.priority)}),t.category&&i.jsx("span",{"data-testid":"request-meta-category",className:"text-text-secondary-dark",children:t.category}),t.missionLink&&i.jsxs("span",{"data-testid":"request-meta-mission",className:"whitespace-nowrap",children:["Mission: ",i.jsx("span",{className:"text-primary",children:t.missionLink})]}),i.jsxs("span",{"data-testid":"request-meta-workitems",className:"inline-flex items-center gap-1 whitespace-nowrap",title:`${t.workItemCount} work item${t.workItemCount===1?"":"s"}`,children:[i.jsx(Jg,{className:"h-3 w-3","aria-hidden":"true"}),t.workItemCount,i.jsxs("span",{className:"sr-only",children:[" ","work item",t.workItemCount===1?"":"s"]})]}),i.jsx("span",{"data-testid":"request-meta-updated",className:"ml-auto whitespace-nowrap",children:h})]})]}),s&&i.jsx("button",{onClick:o,className:"p-1 rounded hover:bg-surface-dark flex-shrink-0","aria-label":e?"Collapse work items":"Expand work items",children:e?i.jsx(ei,{className:"h-4 w-4 text-text-secondary-dark"}):i.jsx(Si,{className:"h-4 w-4 text-text-secondary-dark"})})]}),e&&i.jsxs("div",{className:"border-t border-border-dark px-4 py-2 space-y-1.5","data-testid":"request-children",children:[i.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-secondary-dark/60",children:[i.jsx("span",{className:"uppercase tracking-wide",children:"Source"}),i.jsx(tn,{variant:"default",size:"sm",children:u}),t.ownerAgent&&i.jsxs("span",{className:"text-text-secondary-dark",children:["via ",t.ownerAgent]})]}),s&&i.jsx("div",{children:t.childItems.map(f=>i.jsx(XAe,{item:f},f.id))})]})]})})};function JAe(t){switch(t){case"open":case"ready":case"running":return"active";case"blocked":return"blocked";case"waiting_confirmation":return"waiting_confirmation";case"done":case"cancelled":return"done";default:return typeof console<"u"&&t&&console.warn("[RequestList] Unknown backend Request status:",t),"active"}}function ZAe(t){switch(t){case"high":return"high";case"low":return"low";default:return"medium"}}function QAe(t){return t.map(e=>{const n=Array.isArray(e.workItemIds)?e.workItemIds:[],r=e.intentCategory;return{id:e.id||"",title:e.title||"Untitled Request",status:JAe(e.status||""),priority:ZAe(e.priority||""),source:(e.tags||[]).includes("slack")?"slack":"api",requester:"user",category:r&&r.length>0?r:void 0,workItemCount:n.length,updatedAt:e.updatedAt||e.createdAt||new Date().toISOString(),missionLink:e.missionId?`Mission: ${e.missionId.slice(0,8)}`:void 0,totalInputTokens:e.totalInputTokens||0,totalOutputTokens:e.totalOutputTokens||0,totalCost:e.totalCost||0,ownerAgent:e.ownerAgent||void 0}}).sort((e,n)=>new Date(n.updatedAt).getTime()-new Date(e.updatedAt).getTime())}const eTe=new Set(["critical","high"]),tTe=({activeFilter:t,secondaryFilters:e,searchQuery:n,onStatsLoaded:r})=>{const[s,a]=k.useState([]),[o,l]=k.useState(!0),[c,d]=k.useState(null),u=k.useCallback(async()=>{l(!0),d(null);try{const p=await ft.getRequests();if(!Array.isArray(p)){console.warn("[RequestList] getRequests returned non-array:",typeof p,p),a([]);return}const x=QAe(p);a(x)}catch(p){console.warn("[RequestList] loadRequests error:",p),d(p instanceof Error?p.message:"Failed to load requests"),a([])}finally{l(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=k.useMemo(()=>WAe(s),[s]);k.useEffect(()=>{r(h)},[h,r]);const f=k.useMemo(()=>{let p=s;if(t!=="all"&&(p=p.filter(x=>x.status===t)),e&&e.size>0&&(e.has("urgent")&&(p=p.filter(x=>eTe.has(x.priority))),e.has("assigned_to_me")&&(p=p.filter(x=>x.requester==="user"))),n.trim()){const x=n.toLowerCase();p=p.filter(y=>{var m;return y.title.toLowerCase().includes(x)||y.requester.toLowerCase().includes(x)||((m=y.missionLink)==null?void 0:m.toLowerCase().includes(x))})}return p},[s,t,e,n]);return o?i.jsx("div",{"data-testid":"request-list-loading",children:i.jsx(LS,{count:4})}):c?i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"request-list-error",children:[i.jsx("span",{className:"text-sm text-red-400",children:c}),i.jsx("button",{onClick:u,className:"text-sm text-primary hover:underline",children:"Retry"})]}):f.length===0?i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"request-list-empty",children:[i.jsx(Vu,{className:"h-10 w-10 opacity-40"}),i.jsx("span",{className:"text-sm",children:s.length===0?"No requests found. Requests will appear here when user messages are processed.":"No requests match the current filters."})]}):i.jsx("div",{className:"flex flex-col gap-2","data-testid":"request-list",children:f.map(p=>i.jsx(YAe,{request:p},p.id))})},nTe=()=>{const[t,e]=k.useState(null),[n,r]=k.useState("active"),[s,a]=k.useState(new Set),[o,l]=k.useState(""),c=k.useCallback(f=>{e(f)},[]),d=k.useCallback(f=>{a(p=>{const x=new Set(p);return x.has(f)?x.delete(f):x.add(f),x})},[]),u=k.useMemo(()=>[{value:"all",label:"All",count:t==null?void 0:t.total},{value:"active",label:"Active",count:t==null?void 0:t.active},{value:"blocked",label:"Blocked",count:t==null?void 0:t.blocked},{value:"waiting_confirmation",label:"Waiting",count:t==null?void 0:t.waitingConfirmation},{value:"done",label:"Done",count:t==null?void 0:t.done}],[t]),h=k.useMemo(()=>[{value:"assigned_to_me",label:"Assigned to Me"},{value:"urgent",label:"Urgent"}],[]);return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"requests-page",children:[i.jsxs("div",{className:"mb-6","data-testid":"requests-page-header",children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Requests"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Monitor and triage incoming work from all channels."})]}),i.jsx(BAe,{stats:t}),i.jsx(ld,{tabs:u,activeTab:n,onTabChange:f=>r(f),searchPlaceholder:"Search requests...",searchValue:o,onSearchChange:l,secondaryFilters:h,activeSecondaryFilters:s,onSecondaryFilterToggle:f=>d(f)}),i.jsx(tTe,{activeFilter:n,secondaryFilters:s,searchQuery:o,onStatsLoaded:c})]})},p4={open:"text-blue-400",in_progress:"text-amber-400",blocked:"text-red-400",waiting_confirmation:"text-violet-400",done:"text-green-400",cancelled:"text-gray-400"};function KT(t){return{open:"Open",in_progress:"In Progress",blocked:"Blocked",waiting_confirmation:"Waiting Confirmation",done:"Completed",cancelled:"Cancelled"}[t]??t}function rTe(t){return{open:"active",in_progress:"running",blocked:"blocked",waiting_confirmation:"paused",done:"completed",cancelled:"inactive"}[t]??"pending"}const m4=["open","in_progress","done"],sTe=({currentStatus:t})=>{const e=m4.indexOf(t),n=t==="cancelled",r=t==="blocked";return i.jsxs("div",{className:"flex items-center gap-1","data-testid":"request-progress-rail",children:[m4.map((s,a)=>{const o=e>=0&&a<=e,l=s===t;return i.jsxs(Vn.Fragment,{children:[a>0&&i.jsx("div",{className:`flex-1 h-0.5 ${o?"bg-green-500":"bg-border-dark"}`}),i.jsxs("div",{className:`flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium ${l?`${p4[s]||"text-blue-400"} bg-surface-dark border border-primary/30`:o?"text-green-400 bg-green-500/10":"text-text-secondary-dark bg-surface-dark"}`,children:[o&&!l&&i.jsx(Wu,{className:"h-3 w-3"}),KT(s)]})]},s)}),(n||r)&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"flex-1 h-0.5 bg-border-dark"}),i.jsx("div",{className:`flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium ${p4[t]||"text-gray-400"} bg-surface-dark border border-red-500/30`,children:KT(t)})]})]})},iTe=({workItems:t,onItemClick:e})=>{const[n,r]=k.useState(null);return t.length===0?i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-12 text-text-secondary-dark","data-testid":"request-workitems-empty",children:[i.jsx(Vu,{className:"h-8 w-8 opacity-40"}),i.jsx("span",{className:"text-sm",children:"No work items associated with this request yet."})]}):i.jsx("div",{className:"flex flex-col gap-2","data-testid":"request-workitems-list",children:t.map(s=>{const a=n===s.id,o=a?Q9(s):[];return i.jsxs(Ot,{variant:"default",padding:"none",className:"overflow-hidden hover:border-primary/40 transition-colors","data-testid":`request-workitem-${s.id}`,children:[i.jsxs("div",{className:"flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-background-dark/30 transition-colors",role:"button",tabIndex:0,onClick:()=>r(a?null:s.id),onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),r(a?null:s.id))},children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("div",{className:"flex items-center gap-2 mb-1",children:i.jsx("span",{className:"text-sm font-medium text-text-primary-dark truncate",children:s.title})}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx(Wl,{status:Sj(s.status),children:wj(s.status)}),i.jsx(tn,{variant:kj(s.type),size:"sm",children:Cj(s.type)}),s.target&&i.jsx(tn,{variant:"default",size:"sm",children:s.target}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:DS(s.createdAt)})]})]}),i.jsx("button",{onClick:l=>{l.stopPropagation(),e(s.id)},className:"px-2 py-1 text-xs text-primary hover:text-primary/80 hover:underline flex-shrink-0","data-testid":`request-workitem-detail-link-${s.id}`,children:"Details"})]}),a&&i.jsx("div",{className:"border-t border-border-dark px-4 py-3","data-testid":`request-workitem-timeline-${s.id}`,children:i.jsx(Ej,{events:o})})]},s.id)})})},r7=()=>{const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState([]),[o,l]=k.useState(!0),[c,d]=k.useState(null),[u,h]=k.useState(!1),f=k.useCallback(async(b=!0)=>{if(t){b?l(!0):h(!0),d(null);try{const[S,C]=await Promise.all([ft.getRequest(t),ft.getWorkItemsByRequest(t)]);r(S),a(C.sort((E,N)=>new Date(N.createdAt).getTime()-new Date(E.createdAt).getTime()))}catch(S){const C=S instanceof Error?S.message:"Failed to load request";d(C)}finally{l(!1),h(!1)}}},[t]);k.useEffect(()=>{f(!0)},[f]),k.useEffect(()=>{if(!n||n.status==="done"||n.status==="cancelled")return;const b=setInterval(()=>{f(!1)},15e3);return()=>clearInterval(b)},[n==null?void 0:n.status,f]);const p=k.useCallback(()=>{e("/tasks")},[e]),x=k.useCallback(b=>{e(`/workitems/${b}`)},[e]),y=k.useCallback(()=>{f(!1)},[f]),m=k.useCallback(async b=>{if(t)try{const S=b==="confirmed"?"done":"cancelled";await ft.updateRequest(t,{status:S}),f(!1)}catch(S){const C=S instanceof Error?S.message:"Failed to update request";d(C)}},[t,f]),g=k.useMemo(()=>n?n.totalInputTokens+n.totalOutputTokens:0,[n]),v=k.useMemo(()=>{if(!n)return"";const b=new Date(n.createdAt).getTime(),C=(n.completedAt?new Date(n.completedAt).getTime():Date.now())-b,E=Math.floor(C/6e4),N=Math.floor(E/60);return E<1?"< 1m":N<1?`${E}m`:`${N}h ${E%60}m`},[n]);return o?i.jsx("div",{className:"flex items-center justify-center h-64","data-testid":"request-detail-loading",children:i.jsx(sr,{})}):c?i.jsxs("div",{className:"p-6","data-testid":"request-detail-error",children:[i.jsxs("button",{onClick:p,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Requests"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8",children:[i.jsx("p",{className:"text-red-400 text-lg font-medium mb-2",children:"Failed to load Request"}),i.jsx("p",{className:"text-text-secondary-dark text-sm mb-4",children:c}),i.jsx("button",{onClick:()=>f(!0),className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary/10 text-primary hover:bg-primary/20 transition-colors",children:"Retry"})]})})]}):n?i.jsxs("div",{className:"p-6 max-w-[1200px] mx-auto","data-testid":"request-detail",children:[i.jsxs("button",{onClick:p,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-4 transition-colors","data-testid":"request-detail-back",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Requests"]}),i.jsxs("div",{className:"mb-6","data-testid":"request-detail-header",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-3",children:[i.jsx("div",{className:"flex-1 min-w-0",children:i.jsx("h1",{className:"text-xl font-bold text-text-primary-dark",children:n.title})}),i.jsxs("button",{onClick:y,disabled:u,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"request-detail-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${u?"animate-spin":""}`}),"Refresh"]})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-4",children:[i.jsx(Wl,{status:rTe(n.status),children:KT(n.status)}),n.priority&&n.priority!=="normal"&&i.jsx(tn,{variant:n.priority==="high"?"warning":"default",size:"sm",children:n.priority.charAt(0).toUpperCase()+n.priority.slice(1)}),n.intentCategory&&i.jsx(tn,{variant:"info",size:"sm",children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(eU,{className:"h-3 w-3"}),n.intentCategory.replace(/_/g," ")]})}),n.intentLevel&&i.jsx(tn,{variant:"default",size:"sm",children:n.intentLevel}),n.requiresConfirmation&&i.jsx(tn,{variant:"warning",size:"sm",children:"Requires Confirmation"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark ml-2",children:["Created ",DS(n.createdAt)]})]}),i.jsx(sTe,{currentStatus:n.status})]}),n.requiresConfirmation&&n.status==="waiting_confirmation"&&i.jsxs("div",{className:"flex gap-3 mt-4 p-4 bg-surface-dark rounded-lg border border-border-dark","data-testid":"request-action-area",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark mr-auto flex items-center",children:"This request requires your confirmation before completing"}),i.jsx(ze,{variant:"secondary",size:"sm",onClick:()=>m("rejected"),children:"Reject"}),i.jsx(ze,{variant:"primary",size:"sm",onClick:()=>m("confirmed"),children:"Approve"})]}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6",children:[i.jsx("div",{className:"lg:col-span-2",children:i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:i.jsxs("span",{className:"flex items-center gap-1.5",children:[i.jsx(Uo,{className:"h-4 w-4"}),"Original Message"]})}),n.description?i.jsx("p",{className:"text-sm text-text-primary-dark leading-relaxed whitespace-pre-wrap",children:n.description}):i.jsx("p",{className:"text-sm text-text-secondary-dark italic",children:"No description provided."}),n.sourceConversationItemId&&i.jsx("div",{className:"mt-4 pt-4 border-t border-border-dark",children:i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["Source: ",i.jsx("span",{className:"font-mono",children:n.sourceConversationItemId})]})}),n.tags.length>0&&i.jsx("div",{className:"mt-4 pt-4 border-t border-border-dark flex items-center gap-2 flex-wrap",children:n.tags.map(b=>i.jsx(tn,{variant:"default",size:"sm",children:b},b))})]})}),i.jsx("div",{className:"lg:col-span-1",children:i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Statistics"}),i.jsxs("div",{className:"flex flex-col gap-3",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(Yg,{className:"h-3.5 w-3.5"}),"Total Tokens"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:Ag(g)})]}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark pl-5",children:"Input"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:Ag(n.totalInputTokens)})]}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark pl-5",children:"Output"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:Ag(n.totalOutputTokens)})]}),i.jsx("div",{className:"border-t border-border-dark"}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(q2,{className:"h-3.5 w-3.5"}),"Total Cost"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:Z9(n.totalCost)})]}),i.jsx("div",{className:"border-t border-border-dark"}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(fr,{className:"h-3.5 w-3.5"}),"Elapsed Time"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:v})]}),i.jsx("div",{className:"border-t border-border-dark"}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(Jg,{className:"h-3.5 w-3.5"}),"Work Items"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:s.length})]})]})]})})]}),i.jsxs("div",{"data-testid":"request-detail-workitems",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:i.jsxs("span",{className:"flex items-center gap-1.5",children:[i.jsx(Jg,{className:"h-4 w-4"}),"Execution Timeline (",s.length," work items)"]})}),i.jsx(iTe,{workItems:s,onItemClick:x})]})]}):i.jsxs("div",{className:"p-6","data-testid":"request-detail-not-found",children:[i.jsxs("button",{onClick:p,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Requests"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsx("p",{className:"text-center text-text-secondary-dark py-8",children:"Request not found."})})]})};r7.displayName="RequestDetail";const aTe=({onSaved:t})=>{const[e,n]=k.useState(!1),[r,s]=k.useState(""),[a,o]=k.useState(!1);k.useEffect(()=>{const c=()=>{o(!!Lx()),n(!0)};return window.addEventListener(FA,c),()=>window.removeEventListener(FA,c)},[]);const l=k.useCallback(c=>{c.preventDefault();const d=r.trim();d&&(d6(d),n(!1),t?t():window.location.reload())},[r,t]);return e?i.jsx("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/60",role:"dialog","aria-modal":"true","aria-label":"Access token required","data-testid":"api-token-prompt",children:i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl shadow-2xl w-full max-w-md mx-4",children:[i.jsxs("div",{className:"flex items-center gap-2 px-5 py-4 border-b border-border-dark",children:[i.jsx(C1,{className:"w-4 h-4 text-text-secondary-dark"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Access token required"})]}),i.jsxs("form",{onSubmit:l,className:"px-5 py-4 space-y-4",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark leading-relaxed",children:[a?"The stored access token was rejected. Paste the current token to continue.":"This dashboard is being opened from another machine. Paste the access token to continue."," ","Run ",i.jsx("code",{className:"font-mono",children:"crewly token"})," on the server to print it (or ",i.jsx("code",{className:"font-mono",children:"crewly token --url"})," for a ready-to-open link)."]}),i.jsxs("div",{children:[i.jsx("label",{htmlFor:"api-token-input",className:"block text-xs font-medium text-text-secondary-dark mb-1.5",children:"Access token"}),i.jsx("input",{id:"api-token-input",type:"password",value:r,onChange:c=>s(c.target.value),placeholder:"paste token",autoComplete:"off",autoFocus:!0,className:"w-full px-3 py-2 text-xs font-mono text-text-primary-dark bg-background-dark border border-border-dark rounded-lg placeholder:text-text-secondary-dark/40 focus:outline-none focus:ring-1 focus:ring-primary/50 focus:border-primary/50","data-testid":"api-token-input"})]}),i.jsx("div",{className:"flex justify-end",children:i.jsx("button",{type:"submit",disabled:!r.trim(),className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-primary text-white disabled:opacity-50","data-testid":"api-token-submit",children:"Save and reload"})})]})]})}):null};function oTe(t=cg.PENDING_POLL_INTERVAL_MS){const[e,n]=k.useState([]),[r,s]=k.useState(!0),a=k.useRef(!0),o=k.useCallback(async()=>{try{const l=await Ye.get(cg.PENDING_ENDPOINT,{timeout:cg.PENDING_REQUEST_TIMEOUT_MS});if(!a.current)return;l.data.success&&Array.isArray(l.data.data)&&n(l.data.data)}catch{}finally{a.current&&s(!1)}},[]);return k.useEffect(()=>{a.current=!0,o();const l=setInterval(()=>{o()},t);return()=>{a.current=!1,clearInterval(l)}},[o,t]),{pending:e,isLoading:r,refresh:o}}function lTe(t){return t.map(e=>`${e.sessionName}|${e.url??""}|${e.code??""}`).sort().join(";")}const cTe=()=>{const{pending:t,isLoading:e}=oTe(),[n,r]=k.useState(null),s=k.useMemo(()=>lTe(t),[t]);return e||t.length===0||n===s?null:i.jsxs("div",{role:"status","data-testid":"pending-logins-banner",className:"fixed top-0 inset-x-0 z-50 flex items-center justify-between gap-3 px-4 py-2.5 border-b bg-amber-500/15 border-amber-500/40 backdrop-blur-sm",children:[i.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-wrap",children:[i.jsx(C1,{className:"shrink-0 text-amber-400",size:18}),i.jsx("span",{className:"font-semibold text-amber-300 text-sm",children:t.length===1?"1 agent needs you to sign in":`${t.length} agents need you to sign in`}),i.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t.map(a=>i.jsxs("div",{className:"flex items-center gap-1 text-xs text-amber-200/90",children:[i.jsx("span",{className:"font-mono",children:a.sessionName}),i.jsx(O1,{loginRequired:a,agentLabel:a.sessionName})]},a.sessionName))})]}),i.jsx("button",{type:"button",onClick:()=>r(s),className:"shrink-0 p-1 rounded-md text-amber-300 hover:bg-amber-500/20 transition-colors","aria-label":"Dismiss sign-in banner",children:i.jsx(On,{size:16})})]})};function dTe(){const{id:t}=Gu();return i.jsx(Zv,{to:`/tasks/${t??""}`,replace:!0})}function uTe(){return i.jsx(aY,{children:i.jsx(qJ,{children:i.jsx(xY,{children:i.jsxs(XK,{children:[i.jsx(aTe,{}),i.jsx(cTe,{}),i.jsx(dK,{children:i.jsxs(tK,{children:[i.jsx(Fn,{path:"/auth/callback",element:i.jsx(GEe,{})}),i.jsx(Fn,{path:"/auth",element:i.jsx(VEe,{})}),i.jsxs(Fn,{path:"/",element:i.jsx(YJ,{}),children:[i.jsx(Fn,{index:!0,element:i.jsx(tZ,{})}),i.jsx(Fn,{path:"projects",element:i.jsx(iZ,{})}),i.jsx(Fn,{path:"projects/:id",element:i.jsx(ZZ,{})}),i.jsx(Fn,{path:"teams",element:i.jsx(wQ,{})}),i.jsx(Fn,{path:"teams/:id",element:i.jsx(iee,{})}),i.jsx(Fn,{path:"assignments",element:i.jsx(hee,{})}),i.jsx(Fn,{path:"scheduled-checkins",element:i.jsx(vee,{})}),i.jsx(Fn,{path:"triggers",element:i.jsx(Nee,{})}),i.jsx(Fn,{path:"factory",element:i.jsx(lme,{})}),i.jsx(Fn,{path:"marketplace",element:i.jsx(n0e,{})}),i.jsx(Fn,{path:"marketplace/:id",element:i.jsx(i0e,{})}),i.jsx(Fn,{path:"wiki",element:i.jsx(WCe,{})}),i.jsx(Fn,{path:"security",element:i.jsx($9,{})}),i.jsx(Fn,{path:"monitoring/costs",element:i.jsx(c4,{})}),i.jsx(Fn,{path:"usage",element:i.jsx(c4,{})}),i.jsx(Fn,{path:"settings",element:i.jsx(mge,{})}),i.jsx(Fn,{path:"pricing",element:i.jsx(qEe,{})}),i.jsx(Fn,{path:"cloud",element:i.jsx(hAe,{})}),i.jsx(Fn,{path:"tasks",element:i.jsx(nTe,{})}),i.jsx(Fn,{path:"tasks/:id",element:i.jsx(r7,{})}),i.jsx(Fn,{path:"requests",element:i.jsx(Zv,{to:"/tasks",replace:!0})}),i.jsx(Fn,{path:"requests/:id",element:i.jsx(dTe,{})}),i.jsx(Fn,{path:"missions",element:i.jsx(X9,{})}),i.jsx(Fn,{path:"missions/:id",element:i.jsx(J9,{})}),i.jsx(Fn,{path:"workitems",element:i.jsx(t7,{})}),i.jsx(Fn,{path:"workitems/:id",element:i.jsx(n7,{})}),i.jsx(Fn,{path:"team-chat",element:i.jsx(Wxe,{})}),i.jsx(Fn,{path:"chat",element:i.jsx(Zv,{to:"/team-chat",replace:!0})}),i.jsx(Fn,{path:"agents",element:i.jsx(Zv,{to:"/team-chat",replace:!0})})]})]})})]})})})})}wJ();yE.createRoot(document.getElementById("root")).render(i.jsx(Vn.StrictMode,{children:i.jsx(uTe,{})}));
|
|
4961
|
-
//# sourceMappingURL=index-
|
|
4958
|
+
95% code coverage`})]}),T&&i.jsx("div",{"data-testid":"create-mission-error",children:i.jsx(Bt,{variant:"error",children:T})})]})}),i.jsxs(ad,{children:[i.jsx(ze,{variant:"ghost",size:"sm",onClick:e,disabled:E,children:"Cancel"}),i.jsx(ze,{variant:"primary",size:"sm",onClick:V,disabled:E,"data-testid":"create-mission-submit",children:E?"Creating...":"Create Mission"})]})]}):null},Y9={number:"count",percentage:"%",boolean:"done",currency:"$"},u4={number:"Number",percentage:"Percentage",boolean:"Yes / No",currency:"Currency"},h4={title:"",metricType:"number",baseline:"0",target:"",unit:Y9.number,measurementSource:"manual"};function wAe(t){if(!t)return"never";try{return new Date(t).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function Fm(t){if(t.trim()==="")return null;const e=Number(t);return Number.isFinite(e)?e:null}const kAe=({missionId:t,onChanged:e})=>{const[n,r]=k.useState([]),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(null),[u,h]=k.useState(!1),[f,p]=k.useState(!1),[x,y]=k.useState(h4),[m,g]=k.useState(null),[v,b]=k.useState(""),[S,C]=k.useState(""),[E,N]=k.useState(null),[T,A]=k.useState(null),[M,P]=k.useState(null),I=k.useCallback(async()=>{l(null);try{const R=await ft.getKeyResults(t);r(R)}catch(R){l(R instanceof Error?R.message:"Failed to load key results")}finally{a(!1)}},[t]);k.useEffect(()=>{a(!0),I()},[I]);const B=k.useCallback(async R=>{h(!0),d(null);try{return await R(),await I(),e==null||e(),!0}catch(D){return d(D instanceof Error?D.message:"Request failed"),!1}finally{h(!1)}},[I,e]),V=async()=>{const R=Fm(x.baseline),D=Fm(x.target);if(!x.title.trim()){d("Title is required");return}if(R===null||D===null){d("Baseline and target must be numbers");return}if(R===D){d("Baseline and target must be different");return}if(!x.unit.trim()){d("Unit is required");return}const G={title:x.title.trim(),metricType:x.metricType,baseline:R,target:D,unit:x.unit.trim(),measurementSource:x.measurementSource};await B(async()=>{await ft.createKeyResult(t,G)})&&(y(h4),p(!1))},K=R=>{d(null),N(null),g(R.id),b(String(R.current)),C("")},H=async R=>{const D=Fm(v);if(D===null){d("Measurement value must be a number");return}await B(async()=>{await ft.measureKeyResult(t,R,{value:D,source:"user",...S.trim()?{note:S.trim()}:{}})})&&g(null)},$=R=>{d(null),g(null),N(R.id),A({target:String(R.target),current:String(R.current),measurementSource:R.measurementSource})},L=async R=>{if(!T)return;const D=Fm(T.target),G=Fm(T.current);if(D===null||G===null){d("Target and current must be numbers");return}if(D===R.baseline){d("Target must differ from the baseline");return}await B(async()=>{await ft.updateKeyResult(t,R.id,{...D!==R.target?{target:D}:{},...G!==R.current?{current:G}:{},...T.measurementSource!==R.measurementSource?{measurementSource:T.measurementSource}:{}})})&&(N(null),A(null))},U=async()=>{if(!M)return;const R=M;await B(async()=>{await ft.deleteKeyResult(t,R)})&&P(null)};return i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark","data-testid":"key-results-section",children:[i.jsxs("div",{className:"flex items-center justify-between mb-3 gap-2",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide flex items-center gap-1.5",children:[i.jsx(BF,{className:"h-4 w-4"}),"Key Results (",n.length,")"]}),i.jsx(ze,{variant:"ghost",size:"sm",icon:f?On:vr,onClick:()=>{p(R=>!R),d(null)},"data-testid":"kr-add-toggle",children:f?"Cancel":"Add KR"})]}),c&&i.jsx("div",{className:"mb-3","data-testid":"kr-action-error",children:i.jsx(Bt,{variant:"error",onClose:()=>d(null),children:c})}),f&&i.jsxs("div",{className:"mb-4 rounded-lg border border-border-dark bg-background-dark/60 p-3 space-y-2","data-testid":"kr-add-form",children:[i.jsx(Vr,{"aria-label":"KR title",placeholder:"e.g. Reach $5k MRR",value:x.title,onChange:R=>y(D=>({...D,title:R.target.value})),fullWidth:!0,"data-testid":"kr-new-title"}),i.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:[i.jsx(dr,{"aria-label":"Metric type",value:x.metricType,onChange:R=>{const D=R.target.value;y(G=>({...G,metricType:D,unit:Y9[D]}))},"data-testid":"kr-new-metric",children:DQ.map(R=>i.jsx("option",{value:R,children:u4[R]},R))}),i.jsx(Vr,{"aria-label":"Baseline",type:"number",placeholder:"Baseline",value:x.baseline,onChange:R=>y(D=>({...D,baseline:R.target.value})),"data-testid":"kr-new-baseline"}),i.jsx(Vr,{"aria-label":"Target",type:"number",placeholder:"Target",value:x.target,onChange:R=>y(D=>({...D,target:R.target.value})),"data-testid":"kr-new-target"}),i.jsx(Vr,{"aria-label":"Unit",placeholder:"Unit",value:x.unit,onChange:R=>y(D=>({...D,unit:R.target.value})),"data-testid":"kr-new-unit"})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(dr,{"aria-label":"Measurement source",value:x.measurementSource,onChange:R=>y(D=>({...D,measurementSource:R.target.value})),"data-testid":"kr-new-source",children:gP.map(R=>i.jsx("option",{value:R,children:vk[R]},R))}),i.jsx(ze,{variant:"primary",size:"sm",onClick:V,disabled:u,"data-testid":"kr-new-submit",children:u?"Saving…":"Create KR"})]})]}),s?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"kr-loading",children:"Loading key results…"}):o?i.jsx("div",{"data-testid":"kr-error",children:i.jsxs(Bt,{variant:"error",children:[o,i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>{a(!0),I()},className:"mt-2",children:"Retry"})]})}):n.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"kr-empty",children:"No key results yet. Add one to make this mission measurable."}):i.jsx("div",{className:"overflow-x-auto",children:i.jsxs("table",{className:"w-full text-sm","data-testid":"kr-table",children:[i.jsx("thead",{children:i.jsxs("tr",{className:"text-left text-[11px] uppercase tracking-wide text-text-secondary-dark border-b border-border-dark",children:[i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Key result"}),i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Type"}),i.jsx("th",{className:"py-2 pr-3 font-medium whitespace-nowrap",children:"Baseline → Current → Target"}),i.jsx("th",{className:"py-2 pr-3 font-medium min-w-[140px]",children:"Progress"}),i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Status"}),i.jsx("th",{className:"py-2 pr-3 font-medium",children:"Source"}),i.jsx("th",{className:"py-2 pr-3 font-medium whitespace-nowrap",children:"Last measured"}),i.jsx("th",{className:"py-2 font-medium text-right",children:"Actions"})]})}),i.jsx("tbody",{children:n.map(R=>{var q;const D=RM(R),G=(q=R.measurements)==null?void 0:q[0],F=m===R.id,J=E===R.id&&T!==null;return i.jsxs(Vn.Fragment,{children:[i.jsxs("tr",{className:"border-b border-border-dark/60 align-top","data-testid":`kr-row-${R.id}`,children:[i.jsx("td",{className:"py-2 pr-3 text-text-primary-dark font-medium",children:R.title}),i.jsx("td",{className:"py-2 pr-3 text-text-secondary-dark",children:u4[R.metricType]}),i.jsxs("td",{className:"py-2 pr-3 font-mono text-xs text-text-primary-dark whitespace-nowrap","data-testid":`kr-values-${R.id}`,children:[hg(R.baseline,R.metricType,R.unit),i.jsx("span",{className:"text-text-secondary-dark",children:" → "}),i.jsx("span",{className:"font-semibold",children:hg(R.current,R.metricType,R.unit)}),i.jsx("span",{className:"text-text-secondary-dark",children:" → "}),hg(R.target,R.metricType,R.unit)]}),i.jsx("td",{className:"py-2 pr-3",children:i.jsx(nx,{percent:D,status:R.status,"data-testid":`kr-progress-${R.id}`})}),i.jsx("td",{className:"py-2 pr-3",children:i.jsx(tn,{variant:OQ[R.status],size:"sm","data-testid":`kr-status-${R.id}`,children:YA[R.status]})}),i.jsx("td",{className:"py-2 pr-3 text-xs text-text-secondary-dark",children:vk[R.measurementSource]??R.measurementSource}),i.jsx("td",{className:"py-2 pr-3 text-xs text-text-secondary-dark whitespace-nowrap","data-testid":`kr-last-${R.id}`,children:wAe(G==null?void 0:G.measuredAt)}),i.jsx("td",{className:"py-2 text-right whitespace-nowrap",children:i.jsxs("div",{className:"inline-flex items-center gap-1",children:[i.jsx(ze,{variant:"ghost",size:"sm",icon:HK,onClick:()=>K(R),disabled:u,"data-testid":`kr-measure-${R.id}`,"aria-label":"Record measurement",children:"Measure"}),i.jsx(ze,{variant:"ghost",size:"icon",className:"h-8 w-8",icon:E1,onClick:()=>$(R),disabled:u,"data-testid":`kr-edit-${R.id}`,"aria-label":"Edit key result"}),i.jsx(ze,{variant:"danger-ghost",size:"icon",className:"h-8 w-8",icon:Vi,onClick:()=>P(R.id),disabled:u,"data-testid":`kr-delete-${R.id}`,"aria-label":"Delete key result"})]})})]}),F&&i.jsx("tr",{className:"border-b border-border-dark/60 bg-background-dark/40","data-testid":`kr-measure-form-${R.id}`,children:i.jsx("td",{colSpan:8,className:"py-2 px-2",children:i.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"Record measurement:"}),i.jsx(Vr,{"aria-label":"Measurement value",type:"number",value:v,onChange:te=>b(te.target.value),className:"w-32","data-testid":`kr-measure-value-${R.id}`}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:R.unit}),i.jsx(Vr,{"aria-label":"Measurement note",placeholder:"Note (optional)",value:S,onChange:te=>C(te.target.value),className:"flex-1 min-w-[160px]","data-testid":`kr-measure-note-${R.id}`}),i.jsx(ze,{variant:"primary",size:"sm",icon:$c,onClick:()=>H(R.id),disabled:u,"data-testid":`kr-measure-submit-${R.id}`,children:u?"Saving…":"Save"}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>g(null),disabled:u,children:"Cancel"})]})})}),J&&T&&i.jsx("tr",{className:"border-b border-border-dark/60 bg-background-dark/40","data-testid":`kr-edit-form-${R.id}`,children:i.jsx("td",{colSpan:8,className:"py-2 px-2",children:i.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[i.jsx("span",{className:"text-xs text-text-secondary-dark",children:"Edit:"}),i.jsx("label",{className:"text-xs text-text-secondary-dark",children:"Target"}),i.jsx(Vr,{"aria-label":"Edit target",type:"number",value:T.target,onChange:te=>A(z=>z&&{...z,target:te.target.value}),className:"w-28","data-testid":`kr-edit-target-${R.id}`}),i.jsx("label",{className:"text-xs text-text-secondary-dark",children:"Current"}),i.jsx(Vr,{"aria-label":"Edit current",type:"number",value:T.current,onChange:te=>A(z=>z&&{...z,current:te.target.value}),className:"w-28","data-testid":`kr-edit-current-${R.id}`}),i.jsx(dr,{"aria-label":"Edit measurement source",value:T.measurementSource,onChange:te=>A(z=>z&&{...z,measurementSource:te.target.value}),"data-testid":`kr-edit-source-${R.id}`,children:gP.map(te=>i.jsx("option",{value:te,children:vk[te]},te))}),i.jsx(ze,{variant:"primary",size:"sm",icon:$c,onClick:()=>L(R),disabled:u,"data-testid":`kr-edit-submit-${R.id}`,children:u?"Saving…":"Save"}),i.jsx(ze,{variant:"ghost",size:"sm",onClick:()=>{N(null),A(null)},disabled:u,children:"Cancel"})]})})})]},R.id)})})]})}),i.jsx(B1,{isOpen:M!==null,title:"Delete key result",message:"This removes the key result and its measurement history. This cannot be undone.",confirmLabel:"Delete",confirmVariant:"danger",loading:u,onCancel:()=>P(null),onConfirm:U})]})},CAe={continue:"Continue",adjust_strategy:"Adjust strategy",replan:"Replan",escalate:"Escalate"};function f4(t,e){return e.get(t)??t.slice(0,8)}const EAe=({missionId:t,level:e,parentMissionId:n,missionNames:r,refreshKey:s=0})=>{const a=_r(),[o,l]=k.useState(null),[c,d]=k.useState(!0),[u,h]=k.useState(null),f=k.useCallback(async()=>{d(!0),h(null);try{l(await ft.getCascadeSummary(t))}catch(p){h(p instanceof Error?p.message:"Failed to load cascade")}finally{d(!1)}},[t]);return k.useEffect(()=>{f()},[f,s]),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark","data-testid":"cascade-section",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Gf,{className:"h-4 w-4"}),"Cascade"]}),i.jsxs("div",{className:"mb-3",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide block mb-1",children:"Parent"}),n?i.jsxs("button",{type:"button",onClick:()=>a(`/missions/${n}`),className:"flex items-center gap-1.5 text-sm text-primary hover:underline text-left","data-testid":"cascade-parent-link",children:[i.jsx(Xg,{className:"h-3.5 w-3.5"}),f4(n,r)]}):i.jsxs("span",{className:"text-sm text-text-secondary-dark","data-testid":"cascade-parent-none",children:["None — this is a ",e," root."]})]}),c?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"cascade-loading",children:"Loading roll-up…"}):u?i.jsx("div",{"data-testid":"cascade-error",children:i.jsx(Bt,{variant:"error",children:u})}):o?i.jsxs("div",{className:"space-y-3",children:[i.jsxs("div",{"data-testid":"cascade-rollup",children:[i.jsxs("div",{className:"flex items-center justify-between mb-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Rolled-up progress"}),i.jsx("span",{className:"text-[11px] text-text-secondary-dark","data-testid":"cascade-recommendation",children:CAe[o.recommendation]??o.recommendation})]}),i.jsx(nx,{percent:o.rolledUpProgress,"data-testid":"cascade-rollup-bar"}),i.jsxs("div",{className:"mt-1 flex items-center justify-between gap-2 flex-wrap",children:[i.jsxs("span",{className:"text-[11px] text-text-secondary-dark",children:["Own progress ",Math.round(o.overallProgress),"% · ",o.totalKRs," KR",o.totalKRs===1?"":"s"]}),i.jsx(PM,{counts:G6(o)})]})]}),i.jsxs("div",{children:[i.jsxs("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide block mb-1",children:["Children (",o.childMissionCount,")"]}),o.children.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"cascade-children-empty",children:"No approved child missions."}):i.jsx("ul",{className:"space-y-2","data-testid":"cascade-children",children:o.children.map(p=>i.jsx("li",{"data-testid":`cascade-child-${p.missionId}`,children:i.jsxs("button",{type:"button",onClick:()=>a(`/missions/${p.missionId}`),className:"w-full text-left rounded-lg border border-border-dark px-3 py-2 hover:border-primary/30 transition-colors",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[i.jsx(Dx,{level:p.level}),i.jsx("span",{className:"text-sm text-text-primary-dark truncate",children:f4(p.missionId,r)}),p.childMissionCount>0&&i.jsxs("span",{className:"text-[11px] text-text-secondary-dark ml-auto flex-shrink-0",children:[p.childMissionCount," child",p.childMissionCount===1?"":"ren"]})]}),i.jsx(nx,{percent:p.rolledUpProgress,"data-testid":`cascade-child-progress-${p.missionId}`})]})},p.missionId))})]})]}):null]})},AAe=({parentMissionId:t,onDecided:e})=>{const n=_r(),[r,s]=k.useState([]),[a,o]=k.useState(!1),l=k.useCallback(async()=>{try{s(await ft.getProposals(t))}catch{s([])}finally{o(!0)}},[t]);k.useEffect(()=>{l()},[l]);const c=d=>{s(u=>u.filter(h=>h.id!==d.id)),e==null||e(d)};return!a||r.length===0?null:i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-yellow-500/40","data-testid":"proposals-section",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Vu,{className:"h-4 w-4 text-yellow-400"}),"Proposals awaiting approval (",r.length,")"]}),i.jsx("ul",{className:"space-y-2",children:r.map(d=>{var u,h,f,p,x;return i.jsx("li",{className:"rounded-lg border border-border-dark px-3 py-2","data-testid":`proposal-${d.id}`,children:i.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap",children:[i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[d.level&&i.jsx(Dx,{level:d.level}),i.jsx("button",{type:"button",onClick:()=>n(`/missions/${d.id}`),className:"text-sm font-medium text-text-primary-dark hover:text-primary text-left","data-testid":`proposal-link-${d.id}`,children:d.objective})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap text-[11px] text-text-secondary-dark",children:[i.jsxs(tn,{variant:"default",size:"sm",children:["Team: ",d.ownerTeamId.slice(0,16)]}),((u=d.approval)==null?void 0:u.proposedBy)&&i.jsxs("span",{children:["Proposed by ",d.approval.proposedBy]}),(((h=d.keyResults)==null?void 0:h.length)??0)>0&&i.jsxs("span",{children:[(f=d.keyResults)==null?void 0:f.length," KR",((p=d.keyResults)==null?void 0:p.length)===1?"":"s"]})]}),((x=d.successCriteria)==null?void 0:x.length)>0&&i.jsx("ul",{className:"mt-1 text-xs text-text-secondary-dark list-disc pl-4",children:d.successCriteria.slice(0,3).map((y,m)=>i.jsx("li",{children:y},m))})]}),i.jsx(_j,{missionId:d.id,onDecided:c})]})},d.id)})})]})},TAe=[{key:"completedTasks",label:"Done",dot:"bg-emerald-500"},{key:"runningTasks",label:"Running",dot:"bg-blue-500"},{key:"queuedTasks",label:"Queued",dot:"bg-border-dark"},{key:"blockedTasks",label:"Blocked",dot:"bg-amber-500"},{key:"failedTasks",label:"Failed",dot:"bg-rose-500"}],MAe=({missionId:t,refreshKey:e=0})=>{const[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),c=k.useCallback(async()=>{a(!0),l(null);try{r(await ft.getMissionProgress(t))}catch(d){l(d instanceof Error?d.message:"Failed to load progress")}finally{a(!1)}},[t]);return k.useEffect(()=>{c()},[c,e]),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark","data-testid":"mission-progress-section",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx($o,{className:"h-4 w-4"}),"Execution Progress"]}),s?i.jsx("p",{className:"text-sm text-text-secondary-dark","data-testid":"mission-progress-loading",children:"Loading progress…"}):o?i.jsx("div",{"data-testid":"mission-progress-error",children:i.jsx(Bt,{variant:"error",children:o})}):n?i.jsxs("div",{className:"space-y-3 text-sm",children:[i.jsx(nx,{percent:n.progressPercent,label:`${n.completedTasks}/${n.totalTasks} tasks`,"data-testid":"mission-progress-bar"}),n.totalTasks===0?i.jsx("p",{className:"text-xs text-text-secondary-dark","data-testid":"mission-progress-empty",children:"No work items under this mission yet."}):i.jsx("ul",{className:"space-y-1.5","data-testid":"mission-progress-rows",children:TAe.map(d=>i.jsxs("li",{className:"flex items-center justify-between","data-testid":`mission-progress-${d.key}`,children:[i.jsxs("span",{className:"flex items-center gap-2 text-text-secondary-dark",children:[i.jsx("span",{className:`inline-block h-2 w-2 rounded-full ${d.dot}`}),d.label]}),i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n[d.key]})]},d.key))}),i.jsxs("div",{className:"flex items-center justify-between border-t border-border-dark pt-2",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Phase"}),i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n.phase})]}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Cost"}),i.jsxs("span",{className:"text-text-primary-dark font-mono text-xs","data-testid":"mission-progress-cost",children:["$",n.totalCost.toFixed(2)]})]})]}):null]})};function Kh(t){try{return new Date(t).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function NAe(t){var e,n,r,s;return{objective:t.objective,status:t.status,priority:t.priority??"medium",ownerTeamId:t.ownerTeamId,currentStrategy:t.currentStrategy??"",cadence:t.cadence??"",successCriteriaText:(t.successCriteria??[]).join(`
|
|
4959
|
+
`),periodLabel:((e=t.period)==null?void 0:e.label)??"",periodType:((n=t.period)==null?void 0:n.type)??"",periodStart:(r=t.period)!=null&&r.startDate?t.period.startDate.slice(0,10):"",periodEnd:(s=t.period)!=null&&s.endDate?t.period.endDate.slice(0,10):"",parentMissionId:t.parentMissionId??""}}function jAe(t){const e={objective:t.objective.trim(),status:t.status,priority:t.priority,ownerTeamId:t.ownerTeamId.trim(),currentStrategy:t.currentStrategy,cadence:t.cadence.trim(),successCriteria:t.successCriteriaText.split(`
|
|
4960
|
+
`).map(n=>n.trim()).filter(Boolean),parentMissionId:t.parentMissionId||""};return t.periodType&&t.periodStart&&t.periodEnd?e.period={type:t.periodType,startDate:new Date(t.periodStart).toISOString(),endDate:new Date(t.periodEnd).toISOString(),...t.periodLabel?{label:t.periodLabel}:{}}:!t.periodType&&!t.periodStart&&!t.periodEnd&&(e.period=null),e}const J9=()=>{var $,L,U,R,D;const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(!1),[u,h]=k.useState(!1),[f,p]=k.useState(null),[x,y]=k.useState(!1),[m,g]=k.useState(null),[v,b]=k.useState(new Map),[S,C]=k.useState(new Map),[E,N]=k.useState(0),T=k.useCallback(async(G=!0)=>{if(t){G?a(!0):d(!0),l(null);try{const F=await ft.getMission(t);r(F)}catch(F){const J=F instanceof Error?F.message:"Failed to load mission";l(J)}finally{a(!1),d(!1)}}},[t]);k.useEffect(()=>{T()},[T]),k.useEffect(()=>{let G=!1;return(async()=>{try{const F=await ft.getMissions();if(G)return;b(new Map(F.map(J=>[J.id,J.objective]))),C(new Map(F.map(J=>[J.id,{level:J.level,parentMissionId:J.parentMissionId}])))}catch{}})(),()=>{G=!0}},[t]);const A=k.useCallback(()=>{N(G=>G+1),T(!1)},[T]),M=k.useCallback(G=>{r(F=>F&&F.id===G.id?{...F,...G}:F),A()},[A]),P=k.useCallback(()=>{n&&(p(NAe(n)),g(null),h(!0))},[n]),I=k.useCallback(()=>{h(!1),p(null),g(null)},[]),B=k.useCallback(async()=>{if(!(!t||!f)){if(!f.objective.trim()){g("Objective cannot be empty.");return}if(!f.ownerTeamId.trim()){g("Owner team cannot be empty.");return}y(!0),g(null);try{const G=await ft.updateMission(t,jAe(f));r(G),h(!1),p(null)}catch(G){const F=G instanceof Error?G.message:"Failed to save mission";g(F)}finally{y(!1)}}},[t,f]),V=k.useMemo(()=>(G,F)=>{p(J=>J&&{...J,[G]:F})},[]);if(s)return i.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:i.jsx(sr,{size:"xl",text:"Loading mission..."})});if(o)return i.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto","data-testid":"mission-detail-error",children:[i.jsxs("button",{onClick:()=>e("/missions"),className:"flex items-center gap-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Missions"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8",children:[i.jsx("p",{className:"text-red-400 mb-2",children:o}),i.jsx("button",{onClick:()=>T(),className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary/10 text-primary hover:bg-primary/20 transition-colors",children:"Retry"})]})})]});if(!n)return i.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto",children:[i.jsxs("button",{onClick:()=>e("/missions"),className:"flex items-center gap-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Missions"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8 text-text-secondary-dark",children:[i.jsx(Mu,{className:"h-10 w-10 mx-auto mb-3 opacity-40"}),i.jsx("p",{children:"Mission not found."})]})})]});const K=jM(n,S),H=($=n.approval)==null?void 0:$.state;return i.jsxs("div",{className:"p-6 max-w-[1000px] mx-auto","data-testid":"mission-detail-page",children:[i.jsxs("button",{onClick:()=>e("/missions"),className:"flex items-center gap-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors","data-testid":"mission-detail-back",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Missions"]}),i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-6",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[u&&f?i.jsx(Vr,{"aria-label":"Objective",value:f.objective,onChange:G=>V("objective",G.target.value),fullWidth:!0,"data-testid":"edit-objective"}):i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark mb-2",children:n.objective}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap mt-2",children:[i.jsx(Dx,{level:K}),i.jsx(Wl,{status:MM(n.status),children:Qb(n.status)}),H&&(H!=="approved"||((L=n.approval)==null?void 0:L.decidedAt))&&i.jsx(IM,{state:H}),n.priority&&i.jsx(tn,{variant:z6[n.priority],size:"sm",children:qA[n.priority]}),((U=n.period)==null?void 0:U.label)&&i.jsx(tn,{variant:"info",size:"sm",children:n.period.label}),i.jsx(tn,{variant:"default",size:"sm",children:n.id.slice(0,12)})]}),H==="pending_approval"&&!u&&i.jsxs("div",{className:"mt-3 flex items-center gap-3 flex-wrap","data-testid":"mission-pending-banner",children:[i.jsxs("span",{className:"text-xs text-yellow-400",children:["Proposed",(R=n.approval)!=null&&R.proposedBy?` by ${n.approval.proposedBy}`:""," — awaiting your decision."]}),i.jsx(_j,{missionId:n.id,onDecided:M})]}),H==="rejected"&&((D=n.approval)==null?void 0:D.rejectionReason)&&i.jsxs("p",{className:"mt-2 text-xs text-red-400","data-testid":"mission-rejection-reason",children:["Rejected: ",n.approval.rejectionReason]})]}),i.jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:u?i.jsxs(i.Fragment,{children:[i.jsx(ze,{variant:"primary",size:"sm",icon:$c,onClick:B,disabled:x,"data-testid":"mission-save",children:x?"Saving…":"Save"}),i.jsx(ze,{variant:"ghost",size:"sm",icon:On,onClick:I,disabled:x,"data-testid":"mission-cancel",children:"Cancel"})]}):i.jsxs(i.Fragment,{children:[i.jsx(ze,{variant:"primary",size:"sm",icon:E1,onClick:P,"data-testid":"mission-edit",children:"Edit"}),i.jsx(ze,{variant:"ghost",size:"sm",icon:zn,onClick:()=>T(!1),disabled:c,className:c?"animate-spin":"","aria-label":"Refresh mission",children:"Refresh"})]})})]}),m&&i.jsx("div",{"data-testid":"mission-save-error",className:"mb-4",children:i.jsx(Bt,{variant:"error",onClose:()=>g(null),children:m})}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[i.jsxs("div",{className:"lg:col-span-2 flex flex-col gap-4",children:[i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-2 flex items-center gap-1.5",children:[i.jsx(Mu,{className:"h-4 w-4"}),"Current Strategy"]}),u&&f?i.jsx("textarea",{"aria-label":"Current Strategy",className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-y focus:outline-none focus:border-accent-blue/50",rows:4,value:f.currentStrategy,onChange:G=>V("currentStrategy",G.target.value),"data-testid":"edit-strategy"}):i.jsx("p",{className:"text-sm text-text-primary-dark leading-relaxed whitespace-pre-wrap",children:n.currentStrategy||"No strategy defined."})]}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Wu,{className:"h-4 w-4"}),"Success Criteria (",n.successCriteria.length,")"]}),u&&f?i.jsx("textarea",{"aria-label":"Success Criteria (one per line)",className:"w-full bg-background-dark border border-border-dark rounded-lg px-3 py-2 text-sm text-text-primary-dark resize-y focus:outline-none focus:border-accent-blue/50",rows:5,placeholder:"One criterion per line",value:f.successCriteriaText,onChange:G=>V("successCriteriaText",G.target.value),"data-testid":"edit-success-criteria"}):n.successCriteria.length===0?i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No success criteria defined."}):i.jsx("ul",{className:"space-y-2",children:n.successCriteria.map((G,F)=>i.jsxs("li",{className:"flex items-start gap-2 text-sm text-text-primary-dark",children:[i.jsx("span",{className:"text-primary mt-0.5 flex-shrink-0",children:i.jsx(HF,{className:"h-4 w-4"})}),G]},F))})]}),!u&&i.jsx(kAe,{missionId:n.id,onChanged:A}),!u&&i.jsx(AAe,{parentMissionId:n.id,onDecided:M}),!u&&i.jsx(EAe,{missionId:n.id,level:K,parentMissionId:n.parentMissionId,missionNames:v,refreshKey:E}),!u&&n.learnings&&n.learnings.length>0&&i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(Ex,{className:"h-4 w-4"}),"Learnings (",n.learnings.length,")"]}),i.jsx("ul",{className:"space-y-2",children:n.learnings.map((G,F)=>i.jsx("li",{className:"text-sm text-text-primary-dark pl-4 border-l-2 border-border-dark",children:G},F))})]})]}),i.jsxs("div",{className:"flex flex-col gap-4",children:[!u&&i.jsx(MAe,{missionId:n.id,refreshKey:E}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(rr,{className:"h-4 w-4"}),"Team & Settings"]}),i.jsxs("div",{className:"space-y-3 text-sm",children:[i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Owner Team"}),u&&f?i.jsx(Vr,{"aria-label":"Owner Team",value:f.ownerTeamId,onChange:G=>V("ownerTeamId",G.target.value),fullWidth:!0,"data-testid":"edit-owner-team"}):i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n.ownerTeamId})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Status"}),u&&f?i.jsxs(dr,{value:f.status,onChange:G=>V("status",G.target.value),"data-testid":"edit-status",children:[i.jsx("option",{value:"active",children:"Active"}),i.jsx("option",{value:"paused",children:"Paused"}),i.jsx("option",{value:"completed",children:"Completed"}),i.jsx("option",{value:"cancelled",children:"Cancelled"})]}):i.jsx("span",{className:"text-text-primary-dark",children:Qb(n.status)})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Priority"}),u&&f?i.jsxs(dr,{value:f.priority,onChange:G=>V("priority",G.target.value),"data-testid":"edit-priority",children:[i.jsx("option",{value:"critical",children:"Critical"}),i.jsx("option",{value:"high",children:"High"}),i.jsx("option",{value:"medium",children:"Medium"}),i.jsx("option",{value:"low",children:"Low"})]}):i.jsx("span",{className:"text-text-primary-dark",children:qA[n.priority??"medium"]})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Parent Mission"}),u&&f?i.jsx(Vr,{"aria-label":"Parent Mission ID",placeholder:"(none)",value:f.parentMissionId,onChange:G=>V("parentMissionId",G.target.value),fullWidth:!0,"data-testid":"edit-parent"}):n.parentMissionId?i.jsx("button",{type:"button",onClick:()=>e(`/missions/${n.parentMissionId}`),className:"text-left text-xs text-primary hover:underline truncate","data-testid":"mission-parent-link",children:v.get(n.parentMissionId)??n.parentMissionId}):i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:"—"})]}),!u&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Level"}),i.jsx("span",{className:"text-text-primary-dark","data-testid":"mission-level",children:K})]}),!u&&n.projectId&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Project"}),i.jsx("button",{type:"button",onClick:()=>e(`/projects/${n.projectId}`),className:"text-xs text-primary hover:underline font-mono","data-testid":"mission-project-link",children:n.projectId.slice(0,12)})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Active Tasks"}),i.jsx("span",{className:"text-text-primary-dark",children:n.activeProjectTaskIds.length})]}),i.jsxs("div",{className:"flex flex-col gap-1",children:[i.jsx("span",{className:"text-text-secondary-dark text-xs uppercase tracking-wide",children:"Cadence (cron)"}),u&&f?i.jsx(Vr,{"aria-label":"Cadence",value:f.cadence,onChange:G=>V("cadence",G.target.value),fullWidth:!0,"data-testid":"edit-cadence"}):i.jsx("span",{className:"text-text-primary-dark font-mono text-xs",children:n.cadence||"N/A"})]})]})]}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(mA,{className:"h-4 w-4"}),"OKR Period"]}),u&&f?i.jsxs("div",{className:"space-y-2",children:[i.jsxs(dr,{value:f.periodType,onChange:G=>V("periodType",G.target.value),"data-testid":"edit-period-type",children:[i.jsx("option",{value:"",children:"— No period —"}),i.jsx("option",{value:"weekly",children:"Weekly"}),i.jsx("option",{value:"biweekly",children:"Biweekly"}),i.jsx("option",{value:"monthly",children:"Monthly"}),i.jsx("option",{value:"quarterly",children:"Quarterly"}),i.jsx("option",{value:"custom",children:"Custom"})]}),i.jsx(Vr,{type:"date","aria-label":"Period start",value:f.periodStart,onChange:G=>V("periodStart",G.target.value),fullWidth:!0,"data-testid":"edit-period-start"}),i.jsx(Vr,{type:"date","aria-label":"Period end",value:f.periodEnd,onChange:G=>V("periodEnd",G.target.value),fullWidth:!0,"data-testid":"edit-period-end"}),i.jsx(Vr,{"aria-label":"Period label",placeholder:"Label (optional)",value:f.periodLabel,onChange:G=>V("periodLabel",G.target.value),fullWidth:!0,"data-testid":"edit-period-label"})]}):n.period?i.jsxs("div",{className:"space-y-2 text-sm",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Type"}),i.jsx("span",{className:"text-text-primary-dark",children:n.period.type})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Start"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.period.startDate)})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"End"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.period.endDate)})]}),n.period.label&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Label"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:n.period.label})]})]}):i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"No period defined."})]}),i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(mA,{className:"h-4 w-4"}),"Timestamps"]}),i.jsxs("div",{className:"space-y-2 text-sm",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Created"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.createdAt)})]}),i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Updated"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.updatedAt)})]}),n.lastReviewAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Last Review"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.lastReviewAt)})]}),n.nextReviewAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Next Review"}),i.jsx("span",{className:"text-text-primary-dark text-xs",children:Kh(n.nextReviewAt)})]})]})]}),!u&&n.activeProjectTaskIds.length>0&&i.jsxs(Ot,{variant:"default",padding:"md",className:"border border-border-dark",children:[i.jsxs("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wide mb-3 flex items-center gap-1.5",children:[i.jsx(fr,{className:"h-4 w-4"}),"Active Task IDs"]}),i.jsx("div",{className:"flex flex-wrap gap-1.5",children:n.activeProjectTaskIds.map(G=>i.jsx(tn,{variant:"default",size:"sm",children:G.slice(0,12)},G))})]})]})]})]})};J9.displayName="MissionDetail";function Sj(t){return{queued:"pending",scheduled:"paused",running:"running",blocked:"blocked",done:"completed",failed:"error",cancelled:"inactive"}[t]??"pending"}function wj(t){return{queued:"Queued",scheduled:"Scheduled",running:"Running",blocked:"Blocked",done:"Completed",failed:"Failed",cancelled:"Cancelled"}[t]??t}function kj(t){return{delegate:"primary",project_task:"info",check:"default",notify:"success",cron_run:"warning",review:"info",confirm:"warning",reconcile:"default"}[t]??"default"}function Cj(t){return{delegate:"Delegate",project_task:"Project Task",check:"Check",notify:"Notify",cron_run:"Cron Run",review:"Review",confirm:"Confirm",reconcile:"Reconcile"}[t]??t}function RAe(t){return{orchestrator:"Orchestrator",team_lead:"Team Lead",agent:"Agent",system:"System"}[t]??t}function DS(t){const e=Date.now(),n=new Date(t).getTime(),r=e-n,s=Math.floor(r/6e4),a=Math.floor(s/60),o=Math.floor(a/24);return s<1?"just now":s<60?`${s}m ago`:a<24?`${a}h ago`:`${o}d ago`}function Qm(t){const e=new Date(t);return isNaN(e.getTime())?t:e.toLocaleString("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0})}function Z9(t){return t===0?"—":t<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`}function Ag(t){return t===0?"—":t<1e3?t.toString():t<1e6?`${(t/1e3).toFixed(1)}K`:`${(t/1e6).toFixed(1)}M`}function Q9(t){const e=[];if(e.push({id:`${t.id}-created`,kind:"status_change",label:"QUEUED",detail:"WorkItem created and added to pool.",timestamp:t.createdAt,status:"queued"}),t.startedAt&&e.push({id:`${t.id}-started`,kind:"status_change",label:"RUNNING",detail:t.target?`Claimed by agent: ${t.target}`:"Execution started.",timestamp:t.startedAt,status:"running"}),t.error){const n=t.completedAt||t.startedAt||t.createdAt;e.push({id:`${t.id}-error`,kind:"error",label:"ERROR",detail:t.error,timestamp:n,status:"failed"})}if(t.completedAt&&t.status==="done"&&e.push({id:`${t.id}-done`,kind:"status_change",label:"COMPLETED",detail:"Execution completed successfully.",timestamp:t.completedAt,status:"done"}),t.completedAt&&t.status==="failed"&&e.push({id:`${t.id}-failed`,kind:"status_change",label:"FAILED",detail:`Execution failed after ${t.retryCount}/${t.maxRetries} retries.`,timestamp:t.completedAt,status:"failed"}),t.status==="cancelled"){const n=t.completedAt||t.createdAt,r=t.cancelReason,s=typeof r=="string"&&r.length>0?`Cancelled: ${r}`:"Cancelled (no reason recorded).";e.push({id:`${t.id}-cancelled`,kind:"status_change",label:"CANCELLED",detail:s,timestamp:n,status:"cancelled"})}if(t.status==="blocked"){const n=t.blockedReason,r=typeof n=="string"&&n.length>0?`Blocked: ${n}`:"Blocked (no reason recorded).";e.push({id:`${t.id}-blocked`,kind:"status_change",label:"BLOCKED",detail:r,timestamp:t.startedAt||t.createdAt,status:"blocked"})}if(t.result&&Object.keys(t.result).length>0){const n=t.completedAt||t.startedAt||t.createdAt;e.push({id:`${t.id}-result`,kind:"progress_update",label:"RESULT DATA",detail:JSON.stringify(t.result,null,2),timestamp:n})}return e.sort((n,r)=>new Date(r.timestamp).getTime()-new Date(n.timestamp).getTime())}function IAe(t,e){if(t==="error")return Fl;if(t==="progress_update")return BF;if(t==="agent_reasoning"||t==="tool_action")return Js;switch(e){case"queued":return fr;case"running":return Js;case"done":return Wu;case"failed":return Fl;case"cancelled":return _K;case"blocked":return mp;default:return fr}}function PAe(t,e){if(t==="error")return"text-red-400";if(t==="progress_update")return"text-blue-400";switch(e){case"queued":return"text-gray-400";case"running":return"text-green-400";case"done":return"text-blue-400";case"failed":return"text-red-400";case"cancelled":return"text-gray-500";case"blocked":return"text-yellow-400";default:return"text-gray-400"}}function LAe(t,e){return t==="error"?"border-red-500/30":e==="done"?"border-blue-500/30":e==="running"?"border-green-500/30":"border-border-dark"}const Ej=({events:t})=>t.length===0?i.jsx("div",{className:"flex items-center justify-center py-8 text-text-secondary-dark text-sm","data-testid":"timeline-empty",children:"No activity recorded yet."}):i.jsx("div",{className:"relative","data-testid":"workitem-timeline",children:t.map((e,n)=>{const r=IAe(e.kind,e.status),s=PAe(e.kind,e.status),a=LAe(e.kind,e.status),o=n===t.length-1;return i.jsxs("div",{className:"relative flex gap-4 pb-6","data-testid":`timeline-event-${e.id}`,children:[!o&&i.jsx("div",{className:`absolute left-[15px] top-8 bottom-0 w-px border-l ${a}`}),i.jsx("div",{className:"relative z-10 flex-shrink-0 mt-0.5",children:i.jsx("div",{className:`p-1 rounded-full bg-surface-dark ${s}`,children:i.jsx(r,{className:"h-5 w-5"})})}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx("span",{className:`text-sm font-semibold ${s}`,children:e.label}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:Qm(e.timestamp)})]}),e.detail&&i.jsx("div",{className:`mt-1 text-sm ${e.kind==="error"?"bg-red-500/10 border border-red-500/20 rounded-md p-2 text-red-300":e.kind==="progress_update"?"bg-surface-dark border border-border-dark rounded-md p-2 text-text-secondary-dark font-mono text-xs whitespace-pre-wrap overflow-x-auto max-h-40 overflow-y-auto":"text-text-secondary-dark"}`,children:e.detail})]})]},e.id)})});Ej.displayName="WorkItemTimeline";const Ma=({icon:t,label:e,value:n,valueClass:r="text-text-primary-dark"})=>i.jsxs("div",{className:"flex items-center justify-between py-2",children:[i.jsxs("div",{className:"flex items-center gap-2 text-text-secondary-dark",children:[i.jsx(t,{className:"h-4 w-4"}),i.jsx("span",{className:"text-sm",children:e})]}),i.jsx("span",{className:`text-sm font-medium ${r}`,children:n})]}),e7=({item:t})=>{const e=DAe(t);return i.jsxs("div",{className:"space-y-4","data-testid":"workitem-metrics",children:[i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Token Usage"}),i.jsxs("div",{className:"divide-y divide-border-dark",children:[i.jsx(Ma,{icon:Yg,label:"Input Tokens",value:Ag(t.inputTokens)}),i.jsx(Ma,{icon:Yg,label:"Output Tokens",value:Ag(t.outputTokens)}),i.jsx(Ma,{icon:q2,label:"Cost",value:Z9(t.cost),valueClass:t.cost>0?"text-yellow-400":"text-text-primary-dark"})]})]}),i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Execution"}),i.jsxs("div",{className:"divide-y divide-border-dark",children:[i.jsx(Ma,{icon:zn,label:"Retries",value:`${t.retryCount} / ${t.maxRetries}`}),i.jsx(Ma,{icon:fr,label:"Duration",value:e}),i.jsx(Ma,{icon:Ku,label:"Owner",value:RAe(t.owner)}),t.target&&i.jsx(Ma,{icon:Mu,label:"Agent",value:t.target})]})]}),(t.requestId||t.missionId||t.projectTaskId||t.triggerId)&&i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Linked References"}),i.jsxs("div",{className:"divide-y divide-border-dark",children:[t.requestId&&i.jsx(Ma,{icon:Sl,label:"Request",value:Um(t.requestId)}),t.missionId&&i.jsx(Ma,{icon:Sl,label:"Mission",value:Um(t.missionId)}),t.projectTaskId&&i.jsx(Ma,{icon:Sl,label:"Project Task",value:Um(t.projectTaskId)}),t.triggerId&&i.jsx(Ma,{icon:Sl,label:"Trigger",value:Um(t.triggerId)}),t.parentWorkItemId&&i.jsx(Ma,{icon:Sl,label:"Parent Item",value:Um(t.parentWorkItemId)})]})]}),i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h3",{className:"text-xs font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Timestamps"}),i.jsxs("div",{className:"space-y-2 text-sm",children:[i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Created"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.createdAt)})]}),t.startedAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Started"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.startedAt)})]}),t.completedAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Completed"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.completedAt)})]}),t.scheduledAt&&i.jsxs("div",{className:"flex justify-between",children:[i.jsx("span",{className:"text-text-secondary-dark",children:"Scheduled"}),i.jsx("span",{className:"text-text-primary-dark",children:Qm(t.scheduledAt)})]})]})]})]})};e7.displayName="WorkItemMetrics";function DAe(t){const e=t.startedAt?new Date(t.startedAt).getTime():null,n=t.completedAt?new Date(t.completedAt).getTime():t.startedAt?Date.now():null;if(!e||!n)return"--";const r=n-e,s=Math.floor(r/1e3)%60,a=Math.floor(r/6e4)%60,o=Math.floor(r/36e5);return o>0?`${o}h ${a}m`:a>0?`${a}m ${s}s`:`${s}s`}function Um(t){return t.length<=12?t:`${t.slice(0,8)}...`}function OAe(t){const e={total:t.length,running:0,queued:0,done:0,failed:0,blocked:0};for(const n of t)switch(n.status){case"running":e.running++;break;case"queued":case"scheduled":e.queued++;break;case"done":e.done++;break;case"failed":e.failed++;break;case"blocked":e.blocked++;break}return e}const BAe=({stats:t})=>t?i.jsxs(CM,{variant:"horizontal",className:"grid-cols-3 md:grid-cols-6","data-testid":"workitem-summary-bar",children:[i.jsx($s,{label:"Total",value:t.total}),i.jsx($s,{label:"Running",children:i.jsx("span",{className:"text-blue-400",children:t.running})}),i.jsx($s,{label:"Queued",children:i.jsx("span",{className:"text-yellow-400",children:t.queued})}),i.jsx($s,{label:"Done",children:i.jsx("span",{className:"text-green-400",children:t.done})}),i.jsx($s,{label:"Failed",children:i.jsx("span",{className:"text-red-400",children:t.failed})}),i.jsx($s,{label:"Blocked",children:i.jsx("span",{className:"text-orange-400",children:t.blocked})})]}):null,t7=()=>{const t=_r(),[e,n]=k.useState([]),[r,s]=k.useState(!0),[a,o]=k.useState(null),[l,c]=k.useState("all"),[d,u]=k.useState(""),[h,f]=k.useState(""),p=k.useRef(),x=k.useCallback(C=>{f(C),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{u(C)},300)},[]);k.useEffect(()=>()=>{p.current&&clearTimeout(p.current)},[]);const y=k.useCallback(async()=>{s(!0),o(null);try{const C=await ft.getWorkItems();if(!Array.isArray(C)){console.warn("[WorkItems] getWorkItems returned non-array:",typeof C,C),n([]);return}n(C)}catch(C){console.warn("[WorkItems] loadItems error:",C),o(C instanceof Error?C.message:"Failed to load work items")}finally{s(!1)}},[]);k.useEffect(()=>{y()},[y]);const m=k.useMemo(()=>{let C=e;if(l!=="all"&&(C=C.filter(N=>N.status===l)),d.trim()){const N=d.toLowerCase();C=C.filter(T=>{var A;return T.title.toLowerCase().includes(N)||T.id.toLowerCase().includes(N)||((A=T.target)==null?void 0:A.toLowerCase().includes(N))||T.type.toLowerCase().includes(N)})}const E={running:0,blocked:1,failed:2,done:3,completed:3,cancelled:4,queued:5,scheduled:5};return C.sort((N,T)=>{const A=E[N.status]??5,M=E[T.status]??5;return A!==M?A-M:new Date(T.createdAt).getTime()-new Date(N.createdAt).getTime()})},[e,l,d]),g=k.useMemo(()=>{const C={all:e.length};for(const E of e)C[E.status]=(C[E.status]||0)+1;return C},[e]),v=k.useMemo(()=>e.length>0?OAe(e):null,[e]),b=[{key:"all",label:"All"},{key:"running",label:"Running"},{key:"queued",label:"Queued"},{key:"done",label:"Completed"},{key:"failed",label:"Failed"},{key:"blocked",label:"Blocked"},{key:"cancelled",label:"Cancelled"}],S=k.useCallback((C,E)=>{(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),t(`/workitems/${E}`))},[t]);return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"workitems-page",children:[i.jsxs("div",{className:"mb-6",children:[i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Work Items"}),i.jsxs("button",{onClick:y,disabled:r,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"workitems-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${r?"animate-spin":""}`}),"Refresh"]})]}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Execution-level view of all system tasks in the task pool."})]}),!r&&i.jsx(BAe,{stats:v}),i.jsx(ld,{tabs:b.map(C=>({value:C.key,label:C.label,count:g[C.key]})),activeTab:l,onTabChange:C=>c(C),searchPlaceholder:"Search by title, ID, agent...",searchValue:h,onSearchChange:x}),r&&i.jsx("div",{"data-testid":"workitems-loading",children:i.jsx(LS,{count:4})}),a&&!r&&i.jsxs(Bt,{variant:"error",title:"Failed to load work items",onClose:()=>o(null),"data-testid":"workitems-error",children:[a,i.jsx(ze,{variant:"ghost",size:"sm",onClick:y,className:"mt-2",children:"Retry"})]}),!r&&!a&&m.length===0&&i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"workitems-empty",children:[i.jsx(Vu,{className:"h-10 w-10 opacity-40"}),i.jsx("span",{className:"text-sm",children:e.length===0?"No work items in the pool yet.":"No work items match the current filters."})]}),!r&&!a&&m.length>0&&i.jsx("div",{className:"flex flex-col gap-2","data-testid":"workitems-list",children:m.map(C=>i.jsx(Ot,{variant:"default",padding:"md",interactive:!0,className:"hover:border-primary/40",role:"button",tabIndex:0,onClick:()=>t(`/workitems/${C.id}`),onKeyDown:E=>S(E,C.id),"data-testid":`workitem-row-${C.id}`,children:i.jsxs("div",{className:"flex items-center justify-between gap-4",children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("div",{className:"flex items-center gap-2 mb-1",children:i.jsx("span",{className:"text-base font-medium text-text-primary-dark truncate",children:C.title})}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx(Wl,{status:Sj(C.status),children:wj(C.status)}),i.jsx(tn,{variant:kj(C.type),size:"sm",children:Cj(C.type)}),C.target&&i.jsx(tn,{variant:"default",size:"sm",children:C.target}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:DS(C.createdAt)})]})]}),i.jsx("span",{className:"text-xs text-text-secondary-dark font-mono flex-shrink-0",children:C.id.slice(0,8)})]})},C.id))})]})};t7.displayName="WorkItems";const n7=()=>{const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState(!0),[o,l]=k.useState(null),[c,d]=k.useState(!1),u=k.useCallback(async(x=!0)=>{if(t){x?a(!0):d(!0),l(null);try{const y=await ft.getWorkItem(t);r(y)}catch(y){const m=y instanceof Error?y.message:"Failed to load WorkItem";l(m)}finally{a(!1),d(!1)}}},[t]);k.useEffect(()=>{u(!0)},[u]),k.useEffect(()=>{if(!n||n.status!=="running")return;const x=setInterval(()=>{u(!1)},1e4);return()=>clearInterval(x)},[n==null?void 0:n.status,u]);const h=()=>{e("/workitems")},f=()=>{u(!1)};if(s)return i.jsx("div",{className:"flex items-center justify-center h-64","data-testid":"workitem-detail-loading",children:i.jsx(sr,{})});if(o)return i.jsxs("div",{className:"p-6","data-testid":"workitem-detail-error",children:[i.jsxs("button",{onClick:h,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to WorkItems"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8",children:[i.jsx("p",{className:"text-red-400 text-lg font-medium mb-2",children:"Failed to load WorkItem"}),i.jsx("p",{className:"text-text-secondary-dark text-sm mb-4",children:o}),i.jsx("button",{onClick:()=>u(!0),className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary/10 text-primary hover:bg-primary/20 transition-colors",children:"Retry"})]})})]});if(!n)return i.jsxs("div",{className:"p-6","data-testid":"workitem-detail-not-found",children:[i.jsxs("button",{onClick:h,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to WorkItems"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsx("p",{className:"text-center text-text-secondary-dark py-8",children:"WorkItem not found."})})]});const p=Q9(n);return i.jsxs("div",{className:"p-6 max-w-[1400px] mx-auto","data-testid":"workitem-detail",children:[i.jsxs("button",{onClick:h,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-4 transition-colors","data-testid":"workitem-detail-back",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to WorkItems"]}),i.jsxs("div",{className:"mb-6","data-testid":"workitem-detail-header",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-3",children:[i.jsx("div",{className:"flex-1 min-w-0",children:i.jsxs("h1",{className:"text-xl font-bold text-text-primary-dark truncate",children:["WorkItem: ",xE(n.id)," — ",n.title]})}),i.jsxs("button",{onClick:f,disabled:c,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"workitem-detail-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${c?"animate-spin":""}`}),"Refresh"]})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx(Wl,{status:Sj(n.status),children:wj(n.status)}),i.jsx(tn,{variant:kj(n.type),children:Cj(n.type)}),i.jsxs(tn,{variant:"default",children:["Retry ",n.retryCount,"/",n.maxRetries]}),n.requestId&&i.jsx(tn,{variant:"info",children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Ps,{className:"h-3 w-3"}),"Request: ",xE(n.requestId)]})}),n.missionId&&i.jsx(tn,{variant:"info",children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(Ps,{className:"h-3 w-3"}),"Mission: ",xE(n.missionId)]})}),i.jsxs("span",{className:"text-xs text-text-secondary-dark ml-2",children:["Created ",DS(n.createdAt)]}),n.target&&i.jsxs(tn,{variant:"primary",children:["Agent: ",n.target]})]}),n.description&&i.jsx("p",{className:"mt-3 text-sm text-text-secondary-dark leading-relaxed",children:n.description})]}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[i.jsx("div",{className:"lg:col-span-2",children:i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-4",children:"Activity Timeline"}),i.jsx(Ej,{events:p})]})}),i.jsx("div",{className:"lg:col-span-1",children:i.jsx(e7,{item:n})})]})]})};n7.displayName="WorkItemDetail";function xE(t){return t.length<=12?t:t.slice(0,8)}const FAe=({stats:t})=>t?i.jsxs(CM,{variant:"horizontal",className:"grid-cols-2 md:grid-cols-6","data-testid":"request-summary-bar",children:[i.jsx($s,{label:"Total Incoming",value:t.total}),i.jsx($s,{label:"Active",value:t.active}),i.jsx($s,{label:"Blocked",children:i.jsx("span",{className:"text-red-400",children:t.blocked})}),i.jsx($s,{label:"Waiting",children:i.jsx("span",{className:"text-yellow-400",children:t.waitingConfirmation})}),i.jsx($s,{label:"Done",children:i.jsx("span",{className:"text-blue-400",children:t.done})}),i.jsx($s,{label:"Total Cost",children:i.jsx("span",{className:"text-emerald-400",children:t.totalCost>0?`$${t.totalCost.toFixed(2)}`:"$0.00"})})]}):null;function UAe(t){return{active:"Active",blocked:"Blocked",waiting_confirmation:"Waiting Confirmation",done:"Done"}[t]??t}function zAe(t){return{critical:"error",high:"warning",medium:"info",low:"default"}[t]??"default"}function HAe(t){return{critical:"Critical",high:"High",medium:"Medium",low:"Low"}[t]??t}function GAe(t){return t.charAt(0).toUpperCase()+t.slice(1)}function WAe(t){const e=Date.now(),n=new Date(t).getTime(),r=e-n,s=Math.floor(r/6e4),a=Math.floor(s/60),o=Math.floor(a/24);return s<1?"just now":s<60?`${s}m ago`:a<24?`${a}h ago`:`${o}d ago`}function VAe(t){return{total:t.length,active:t.filter(e=>e.status==="active").length,blocked:t.filter(e=>e.status==="blocked").length,waitingConfirmation:t.filter(e=>e.status==="waiting_confirmation").length,done:t.filter(e=>e.status==="done").length,totalCost:t.reduce((e,n)=>e+(n.totalCost||0),0)}}const $Ae={active:"bg-amber-500/10 text-amber-400 border-amber-500/20",blocked:"bg-red-500/10 text-red-400 border-red-500/20",waiting_confirmation:"bg-indigo-500/10 text-indigo-300 border-indigo-500/20",done:"bg-green-500/10 text-green-400 border-green-500/20"},KAe={active:"bg-amber-400",blocked:"bg-red-400",waiting_confirmation:"bg-indigo-300",done:"bg-green-400"},qAe=({status:t,label:e,className:n=""})=>{const r=$Ae[t],s=KAe[t],a=e??UAe(t),o=t==="active";return i.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-xs font-medium rounded-full border ${r} ${n}`.trim(),"data-status":t,"data-testid":`request-status-pill-${t}`,children:[i.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${s} ${o?"animate-pulse":""}`.trim(),"aria-hidden":"true"}),a]})},XAe={slack:Ax,email:VF,chat:$F,api:zK,manual:qF},YAe=({item:t})=>{const e=t.status==="done"?"active":t.status==="in_progress"?"connecting":"inactive";return i.jsxs("div",{className:"flex items-center gap-2.5 py-1.5 border-b border-border-dark last:border-b-0","data-testid":`request-child-${t.id}`,children:[i.jsx(Gc,{status:e,size:"sm",pulse:!1}),i.jsx("span",{className:"flex-1 text-xs text-text-secondary-dark",children:t.label}),t.tag&&i.jsx(tn,{variant:"error",size:"sm",children:t.tag}),t.progress!==void 0&&i.jsx("div",{className:"w-20 h-1.5 bg-background-dark rounded-full overflow-hidden",children:i.jsx("div",{className:"h-full bg-primary rounded-full transition-all duration-300",style:{width:`${t.progress}%`}})}),t.assignee&&i.jsx("span",{className:"text-xs text-text-secondary-dark/60",children:t.assignee}),t.dueDate&&i.jsx("span",{className:"text-xs text-text-secondary-dark/60 whitespace-nowrap",children:t.dueDate})]})},JAe=({request:t})=>{const[e,n]=k.useState(!1),r=_r(),s=!!(t.childItems&&t.childItems.length>0),a=k.useCallback(()=>{r(`/tasks/${t.id}`)},[r,t.id]),o=k.useCallback(f=>{f.stopPropagation(),s&&n(p=>!p)},[s]),l=k.useCallback(f=>{f.key==="Enter"?(f.preventDefault(),a()):f.key===" "&&(f.preventDefault(),s&&n(p=>!p))},[a,s]),c=XAe[t.source]??Vu,d=zAe(t.priority),u=GAe(t.source),h=WAe(t.updatedAt);return i.jsx("li",{className:"list-none",children:i.jsxs(Ot,{variant:"default",padding:"none",className:"overflow-hidden hover:border-border-light transition-colors","data-testid":`request-row-${t.id}`,children:[i.jsxs("div",{className:"flex items-center gap-3 px-4 py-2.5 cursor-pointer hover:bg-background-dark/30 transition-colors",role:"button",tabIndex:0,"aria-label":`Open request: ${t.title}`,onClick:a,onKeyDown:l,children:[i.jsx(c,{className:"h-5 w-5 text-text-secondary-dark flex-shrink-0","aria-label":u}),i.jsxs("div",{className:"flex-1 min-w-0 flex flex-col gap-1",children:[i.jsxs("div",{className:"flex items-start gap-2","data-testid":"request-tier-top",children:[i.jsx("span",{className:"text-[15px] font-semibold leading-5 text-text-primary-dark line-clamp-2 flex-1 min-w-0",children:t.title}),i.jsx(qAe,{status:t.status,className:"flex-shrink-0"})]}),i.jsxs("div",{className:"flex items-center gap-3 text-xs text-text-secondary-dark/70 flex-wrap","data-testid":"request-tier-bottom",children:[i.jsx(tn,{variant:d,size:"sm",children:HAe(t.priority)}),t.category&&i.jsx("span",{"data-testid":"request-meta-category",className:"text-text-secondary-dark",children:t.category}),t.missionLink&&i.jsxs("span",{"data-testid":"request-meta-mission",className:"whitespace-nowrap",children:["Mission: ",i.jsx("span",{className:"text-primary",children:t.missionLink})]}),i.jsxs("span",{"data-testid":"request-meta-workitems",className:"inline-flex items-center gap-1 whitespace-nowrap",title:`${t.workItemCount} work item${t.workItemCount===1?"":"s"}`,children:[i.jsx(Jg,{className:"h-3 w-3","aria-hidden":"true"}),t.workItemCount,i.jsxs("span",{className:"sr-only",children:[" ","work item",t.workItemCount===1?"":"s"]})]}),i.jsx("span",{"data-testid":"request-meta-updated",className:"ml-auto whitespace-nowrap",children:h})]})]}),s&&i.jsx("button",{onClick:o,className:"p-1 rounded hover:bg-surface-dark flex-shrink-0","aria-label":e?"Collapse work items":"Expand work items",children:e?i.jsx(ei,{className:"h-4 w-4 text-text-secondary-dark"}):i.jsx(Si,{className:"h-4 w-4 text-text-secondary-dark"})})]}),e&&i.jsxs("div",{className:"border-t border-border-dark px-4 py-2 space-y-1.5","data-testid":"request-children",children:[i.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-secondary-dark/60",children:[i.jsx("span",{className:"uppercase tracking-wide",children:"Source"}),i.jsx(tn,{variant:"default",size:"sm",children:u}),t.ownerAgent&&i.jsxs("span",{className:"text-text-secondary-dark",children:["via ",t.ownerAgent]})]}),s&&i.jsx("div",{children:t.childItems.map(f=>i.jsx(YAe,{item:f},f.id))})]})]})})};function ZAe(t){switch(t){case"open":case"ready":case"running":return"active";case"blocked":return"blocked";case"waiting_confirmation":return"waiting_confirmation";case"done":case"cancelled":return"done";default:return typeof console<"u"&&t&&console.warn("[RequestList] Unknown backend Request status:",t),"active"}}function QAe(t){switch(t){case"high":return"high";case"low":return"low";default:return"medium"}}function eTe(t){return t.map(e=>{const n=Array.isArray(e.workItemIds)?e.workItemIds:[],r=e.intentCategory;return{id:e.id||"",title:e.title||"Untitled Request",status:ZAe(e.status||""),priority:QAe(e.priority||""),source:(e.tags||[]).includes("slack")?"slack":"api",requester:"user",category:r&&r.length>0?r:void 0,workItemCount:n.length,updatedAt:e.updatedAt||e.createdAt||new Date().toISOString(),missionLink:e.missionId?`Mission: ${e.missionId.slice(0,8)}`:void 0,totalInputTokens:e.totalInputTokens||0,totalOutputTokens:e.totalOutputTokens||0,totalCost:e.totalCost||0,ownerAgent:e.ownerAgent||void 0}}).sort((e,n)=>new Date(n.updatedAt).getTime()-new Date(e.updatedAt).getTime())}const tTe=new Set(["critical","high"]),nTe=({activeFilter:t,secondaryFilters:e,searchQuery:n,onStatsLoaded:r})=>{const[s,a]=k.useState([]),[o,l]=k.useState(!0),[c,d]=k.useState(null),u=k.useCallback(async()=>{l(!0),d(null);try{const p=await ft.getRequests();if(!Array.isArray(p)){console.warn("[RequestList] getRequests returned non-array:",typeof p,p),a([]);return}const x=eTe(p);a(x)}catch(p){console.warn("[RequestList] loadRequests error:",p),d(p instanceof Error?p.message:"Failed to load requests"),a([])}finally{l(!1)}},[]);k.useEffect(()=>{u()},[u]);const h=k.useMemo(()=>VAe(s),[s]);k.useEffect(()=>{r(h)},[h,r]);const f=k.useMemo(()=>{let p=s;if(t!=="all"&&(p=p.filter(x=>x.status===t)),e&&e.size>0&&(e.has("urgent")&&(p=p.filter(x=>tTe.has(x.priority))),e.has("assigned_to_me")&&(p=p.filter(x=>x.requester==="user"))),n.trim()){const x=n.toLowerCase();p=p.filter(y=>{var m;return y.title.toLowerCase().includes(x)||y.requester.toLowerCase().includes(x)||((m=y.missionLink)==null?void 0:m.toLowerCase().includes(x))})}return p},[s,t,e,n]);return o?i.jsx("div",{"data-testid":"request-list-loading",children:i.jsx(LS,{count:4})}):c?i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"request-list-error",children:[i.jsx("span",{className:"text-sm text-red-400",children:c}),i.jsx("button",{onClick:u,className:"text-sm text-primary hover:underline",children:"Retry"})]}):f.length===0?i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-text-secondary-dark","data-testid":"request-list-empty",children:[i.jsx(Vu,{className:"h-10 w-10 opacity-40"}),i.jsx("span",{className:"text-sm",children:s.length===0?"No requests found. Requests will appear here when user messages are processed.":"No requests match the current filters."})]}):i.jsx("div",{className:"flex flex-col gap-2","data-testid":"request-list",children:f.map(p=>i.jsx(JAe,{request:p},p.id))})},rTe=()=>{const[t,e]=k.useState(null),[n,r]=k.useState("active"),[s,a]=k.useState(new Set),[o,l]=k.useState(""),c=k.useCallback(f=>{e(f)},[]),d=k.useCallback(f=>{a(p=>{const x=new Set(p);return x.has(f)?x.delete(f):x.add(f),x})},[]),u=k.useMemo(()=>[{value:"all",label:"All",count:t==null?void 0:t.total},{value:"active",label:"Active",count:t==null?void 0:t.active},{value:"blocked",label:"Blocked",count:t==null?void 0:t.blocked},{value:"waiting_confirmation",label:"Waiting",count:t==null?void 0:t.waitingConfirmation},{value:"done",label:"Done",count:t==null?void 0:t.done}],[t]),h=k.useMemo(()=>[{value:"assigned_to_me",label:"Assigned to Me"},{value:"urgent",label:"Urgent"}],[]);return i.jsxs("div",{className:"p-6 max-w-7xl mx-auto","data-testid":"requests-page",children:[i.jsxs("div",{className:"mb-6","data-testid":"requests-page-header",children:[i.jsx("h1",{className:"text-2xl font-bold text-text-primary-dark",children:"Requests"}),i.jsx("p",{className:"text-sm text-text-secondary-dark",children:"Monitor and triage incoming work from all channels."})]}),i.jsx(FAe,{stats:t}),i.jsx(ld,{tabs:u,activeTab:n,onTabChange:f=>r(f),searchPlaceholder:"Search requests...",searchValue:o,onSearchChange:l,secondaryFilters:h,activeSecondaryFilters:s,onSecondaryFilterToggle:f=>d(f)}),i.jsx(nTe,{activeFilter:n,secondaryFilters:s,searchQuery:o,onStatsLoaded:c})]})},p4={open:"text-blue-400",in_progress:"text-amber-400",blocked:"text-red-400",waiting_confirmation:"text-violet-400",done:"text-green-400",cancelled:"text-gray-400"};function KT(t){return{open:"Open",in_progress:"In Progress",blocked:"Blocked",waiting_confirmation:"Waiting Confirmation",done:"Completed",cancelled:"Cancelled"}[t]??t}function sTe(t){return{open:"active",in_progress:"running",blocked:"blocked",waiting_confirmation:"paused",done:"completed",cancelled:"inactive"}[t]??"pending"}const m4=["open","in_progress","done"],iTe=({currentStatus:t})=>{const e=m4.indexOf(t),n=t==="cancelled",r=t==="blocked";return i.jsxs("div",{className:"flex items-center gap-1","data-testid":"request-progress-rail",children:[m4.map((s,a)=>{const o=e>=0&&a<=e,l=s===t;return i.jsxs(Vn.Fragment,{children:[a>0&&i.jsx("div",{className:`flex-1 h-0.5 ${o?"bg-green-500":"bg-border-dark"}`}),i.jsxs("div",{className:`flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium ${l?`${p4[s]||"text-blue-400"} bg-surface-dark border border-primary/30`:o?"text-green-400 bg-green-500/10":"text-text-secondary-dark bg-surface-dark"}`,children:[o&&!l&&i.jsx(Wu,{className:"h-3 w-3"}),KT(s)]})]},s)}),(n||r)&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"flex-1 h-0.5 bg-border-dark"}),i.jsx("div",{className:`flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium ${p4[t]||"text-gray-400"} bg-surface-dark border border-red-500/30`,children:KT(t)})]})]})},aTe=({workItems:t,onItemClick:e})=>{const[n,r]=k.useState(null);return t.length===0?i.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-12 text-text-secondary-dark","data-testid":"request-workitems-empty",children:[i.jsx(Vu,{className:"h-8 w-8 opacity-40"}),i.jsx("span",{className:"text-sm",children:"No work items associated with this request yet."})]}):i.jsx("div",{className:"flex flex-col gap-2","data-testid":"request-workitems-list",children:t.map(s=>{const a=n===s.id,o=a?Q9(s):[];return i.jsxs(Ot,{variant:"default",padding:"none",className:"overflow-hidden hover:border-primary/40 transition-colors","data-testid":`request-workitem-${s.id}`,children:[i.jsxs("div",{className:"flex items-center gap-3 px-4 py-3 cursor-pointer hover:bg-background-dark/30 transition-colors",role:"button",tabIndex:0,onClick:()=>r(a?null:s.id),onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),r(a?null:s.id))},children:[i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("div",{className:"flex items-center gap-2 mb-1",children:i.jsx("span",{className:"text-sm font-medium text-text-primary-dark truncate",children:s.title})}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[i.jsx(Wl,{status:Sj(s.status),children:wj(s.status)}),i.jsx(tn,{variant:kj(s.type),size:"sm",children:Cj(s.type)}),s.target&&i.jsx(tn,{variant:"default",size:"sm",children:s.target}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:DS(s.createdAt)})]})]}),i.jsx("button",{onClick:l=>{l.stopPropagation(),e(s.id)},className:"px-2 py-1 text-xs text-primary hover:text-primary/80 hover:underline flex-shrink-0","data-testid":`request-workitem-detail-link-${s.id}`,children:"Details"})]}),a&&i.jsx("div",{className:"border-t border-border-dark px-4 py-3","data-testid":`request-workitem-timeline-${s.id}`,children:i.jsx(Ej,{events:o})})]},s.id)})})},r7=()=>{const{id:t}=Gu(),e=_r(),[n,r]=k.useState(null),[s,a]=k.useState([]),[o,l]=k.useState(!0),[c,d]=k.useState(null),[u,h]=k.useState(!1),f=k.useCallback(async(b=!0)=>{if(t){b?l(!0):h(!0),d(null);try{const[S,C]=await Promise.all([ft.getRequest(t),ft.getWorkItemsByRequest(t)]);r(S),a(C.sort((E,N)=>new Date(N.createdAt).getTime()-new Date(E.createdAt).getTime()))}catch(S){const C=S instanceof Error?S.message:"Failed to load request";d(C)}finally{l(!1),h(!1)}}},[t]);k.useEffect(()=>{f(!0)},[f]),k.useEffect(()=>{if(!n||n.status==="done"||n.status==="cancelled")return;const b=setInterval(()=>{f(!1)},15e3);return()=>clearInterval(b)},[n==null?void 0:n.status,f]);const p=k.useCallback(()=>{e("/tasks")},[e]),x=k.useCallback(b=>{e(`/workitems/${b}`)},[e]),y=k.useCallback(()=>{f(!1)},[f]),m=k.useCallback(async b=>{if(t)try{const S=b==="confirmed"?"done":"cancelled";await ft.updateRequest(t,{status:S}),f(!1)}catch(S){const C=S instanceof Error?S.message:"Failed to update request";d(C)}},[t,f]),g=k.useMemo(()=>n?n.totalInputTokens+n.totalOutputTokens:0,[n]),v=k.useMemo(()=>{if(!n)return"";const b=new Date(n.createdAt).getTime(),C=(n.completedAt?new Date(n.completedAt).getTime():Date.now())-b,E=Math.floor(C/6e4),N=Math.floor(E/60);return E<1?"< 1m":N<1?`${E}m`:`${N}h ${E%60}m`},[n]);return o?i.jsx("div",{className:"flex items-center justify-center h-64","data-testid":"request-detail-loading",children:i.jsx(sr,{})}):c?i.jsxs("div",{className:"p-6","data-testid":"request-detail-error",children:[i.jsxs("button",{onClick:p,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Requests"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsxs("div",{className:"text-center py-8",children:[i.jsx("p",{className:"text-red-400 text-lg font-medium mb-2",children:"Failed to load Request"}),i.jsx("p",{className:"text-text-secondary-dark text-sm mb-4",children:c}),i.jsx("button",{onClick:()=>f(!0),className:"px-4 py-2 text-sm font-medium rounded-lg bg-primary/10 text-primary hover:bg-primary/20 transition-colors",children:"Retry"})]})})]}):n?i.jsxs("div",{className:"p-6 max-w-[1200px] mx-auto","data-testid":"request-detail",children:[i.jsxs("button",{onClick:p,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-4 transition-colors","data-testid":"request-detail-back",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Requests"]}),i.jsxs("div",{className:"mb-6","data-testid":"request-detail-header",children:[i.jsxs("div",{className:"flex items-start justify-between gap-4 mb-3",children:[i.jsx("div",{className:"flex-1 min-w-0",children:i.jsx("h1",{className:"text-xl font-bold text-text-primary-dark",children:n.title})}),i.jsxs("button",{onClick:y,disabled:u,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm text-text-secondary-dark hover:text-text-primary-dark bg-surface-dark border border-border-dark rounded-lg transition-colors disabled:opacity-50","data-testid":"request-detail-refresh",children:[i.jsx(zn,{className:`h-4 w-4 ${u?"animate-spin":""}`}),"Refresh"]})]}),i.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-4",children:[i.jsx(Wl,{status:sTe(n.status),children:KT(n.status)}),n.priority&&n.priority!=="normal"&&i.jsx(tn,{variant:n.priority==="high"?"warning":"default",size:"sm",children:n.priority.charAt(0).toUpperCase()+n.priority.slice(1)}),n.intentCategory&&i.jsx(tn,{variant:"info",size:"sm",children:i.jsxs("span",{className:"flex items-center gap-1",children:[i.jsx(eU,{className:"h-3 w-3"}),n.intentCategory.replace(/_/g," ")]})}),n.intentLevel&&i.jsx(tn,{variant:"default",size:"sm",children:n.intentLevel}),n.requiresConfirmation&&i.jsx(tn,{variant:"warning",size:"sm",children:"Requires Confirmation"}),i.jsxs("span",{className:"text-xs text-text-secondary-dark ml-2",children:["Created ",DS(n.createdAt)]})]}),i.jsx(iTe,{currentStatus:n.status})]}),n.requiresConfirmation&&n.status==="waiting_confirmation"&&i.jsxs("div",{className:"flex gap-3 mt-4 p-4 bg-surface-dark rounded-lg border border-border-dark","data-testid":"request-action-area",children:[i.jsx("span",{className:"text-sm text-text-secondary-dark mr-auto flex items-center",children:"This request requires your confirmation before completing"}),i.jsx(ze,{variant:"secondary",size:"sm",onClick:()=>m("rejected"),children:"Reject"}),i.jsx(ze,{variant:"primary",size:"sm",onClick:()=>m("confirmed"),children:"Approve"})]}),i.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6",children:[i.jsx("div",{className:"lg:col-span-2",children:i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:i.jsxs("span",{className:"flex items-center gap-1.5",children:[i.jsx(Uo,{className:"h-4 w-4"}),"Original Message"]})}),n.description?i.jsx("p",{className:"text-sm text-text-primary-dark leading-relaxed whitespace-pre-wrap",children:n.description}):i.jsx("p",{className:"text-sm text-text-secondary-dark italic",children:"No description provided."}),n.sourceConversationItemId&&i.jsx("div",{className:"mt-4 pt-4 border-t border-border-dark",children:i.jsxs("span",{className:"text-xs text-text-secondary-dark",children:["Source: ",i.jsx("span",{className:"font-mono",children:n.sourceConversationItemId})]})}),n.tags.length>0&&i.jsx("div",{className:"mt-4 pt-4 border-t border-border-dark flex items-center gap-2 flex-wrap",children:n.tags.map(b=>i.jsx(tn,{variant:"default",size:"sm",children:b},b))})]})}),i.jsx("div",{className:"lg:col-span-1",children:i.jsxs(Ot,{variant:"default",padding:"md",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:"Statistics"}),i.jsxs("div",{className:"flex flex-col gap-3",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(Yg,{className:"h-3.5 w-3.5"}),"Total Tokens"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:Ag(g)})]}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark pl-5",children:"Input"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:Ag(n.totalInputTokens)})]}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark pl-5",children:"Output"}),i.jsx("span",{className:"text-xs text-text-secondary-dark",children:Ag(n.totalOutputTokens)})]}),i.jsx("div",{className:"border-t border-border-dark"}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(q2,{className:"h-3.5 w-3.5"}),"Total Cost"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:Z9(n.totalCost)})]}),i.jsx("div",{className:"border-t border-border-dark"}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(fr,{className:"h-3.5 w-3.5"}),"Elapsed Time"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:v})]}),i.jsx("div",{className:"border-t border-border-dark"}),i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("span",{className:"flex items-center gap-1.5 text-xs text-text-secondary-dark",children:[i.jsx(Jg,{className:"h-3.5 w-3.5"}),"Work Items"]}),i.jsx("span",{className:"text-sm font-medium text-text-primary-dark",children:s.length})]})]})]})})]}),i.jsxs("div",{"data-testid":"request-detail-workitems",children:[i.jsx("h2",{className:"text-sm font-semibold text-text-secondary-dark uppercase tracking-wider mb-3",children:i.jsxs("span",{className:"flex items-center gap-1.5",children:[i.jsx(Jg,{className:"h-4 w-4"}),"Execution Timeline (",s.length," work items)"]})}),i.jsx(aTe,{workItems:s,onItemClick:x})]})]}):i.jsxs("div",{className:"p-6","data-testid":"request-detail-not-found",children:[i.jsxs("button",{onClick:p,className:"flex items-center gap-2 text-sm text-text-secondary-dark hover:text-text-primary-dark mb-6 transition-colors",children:[i.jsx(Ua,{className:"h-4 w-4"}),"Back to Requests"]}),i.jsx(Ot,{variant:"default",padding:"lg",children:i.jsx("p",{className:"text-center text-text-secondary-dark py-8",children:"Request not found."})})]})};r7.displayName="RequestDetail";const oTe=({onSaved:t})=>{const[e,n]=k.useState(!1),[r,s]=k.useState(""),[a,o]=k.useState(!1);k.useEffect(()=>{const c=()=>{o(!!Lx()),n(!0)};return window.addEventListener(FA,c),()=>window.removeEventListener(FA,c)},[]);const l=k.useCallback(c=>{c.preventDefault();const d=r.trim();d&&(d6(d),n(!1),t?t():window.location.reload())},[r,t]);return e?i.jsx("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/60",role:"dialog","aria-modal":"true","aria-label":"Access token required","data-testid":"api-token-prompt",children:i.jsxs("div",{className:"bg-surface-dark border border-border-dark rounded-xl shadow-2xl w-full max-w-md mx-4",children:[i.jsxs("div",{className:"flex items-center gap-2 px-5 py-4 border-b border-border-dark",children:[i.jsx(C1,{className:"w-4 h-4 text-text-secondary-dark"}),i.jsx("h3",{className:"text-sm font-semibold text-text-primary-dark",children:"Access token required"})]}),i.jsxs("form",{onSubmit:l,className:"px-5 py-4 space-y-4",children:[i.jsxs("p",{className:"text-xs text-text-secondary-dark leading-relaxed",children:[a?"The stored access token was rejected. Paste the current token to continue.":"This dashboard is being opened from another machine. Paste the access token to continue."," ","Run ",i.jsx("code",{className:"font-mono",children:"crewly token"})," on the server to print it (or ",i.jsx("code",{className:"font-mono",children:"crewly token --url"})," for a ready-to-open link)."]}),i.jsxs("div",{children:[i.jsx("label",{htmlFor:"api-token-input",className:"block text-xs font-medium text-text-secondary-dark mb-1.5",children:"Access token"}),i.jsx("input",{id:"api-token-input",type:"password",value:r,onChange:c=>s(c.target.value),placeholder:"paste token",autoComplete:"off",autoFocus:!0,className:"w-full px-3 py-2 text-xs font-mono text-text-primary-dark bg-background-dark border border-border-dark rounded-lg placeholder:text-text-secondary-dark/40 focus:outline-none focus:ring-1 focus:ring-primary/50 focus:border-primary/50","data-testid":"api-token-input"})]}),i.jsx("div",{className:"flex justify-end",children:i.jsx("button",{type:"submit",disabled:!r.trim(),className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-primary text-white disabled:opacity-50","data-testid":"api-token-submit",children:"Save and reload"})})]})]})}):null};function lTe(t=cg.PENDING_POLL_INTERVAL_MS){const[e,n]=k.useState([]),[r,s]=k.useState(!0),a=k.useRef(!0),o=k.useCallback(async()=>{try{const l=await Ye.get(cg.PENDING_ENDPOINT,{timeout:cg.PENDING_REQUEST_TIMEOUT_MS});if(!a.current)return;l.data.success&&Array.isArray(l.data.data)&&n(l.data.data)}catch{}finally{a.current&&s(!1)}},[]);return k.useEffect(()=>{a.current=!0,o();const l=setInterval(()=>{o()},t);return()=>{a.current=!1,clearInterval(l)}},[o,t]),{pending:e,isLoading:r,refresh:o}}function cTe(t){return t.map(e=>`${e.sessionName}|${e.url??""}|${e.code??""}`).sort().join(";")}const dTe=()=>{const{pending:t,isLoading:e}=lTe(),[n,r]=k.useState(null),s=k.useMemo(()=>cTe(t),[t]);return e||t.length===0||n===s?null:i.jsxs("div",{role:"status","data-testid":"pending-logins-banner",className:"fixed top-0 inset-x-0 z-50 flex items-center justify-between gap-3 px-4 py-2.5 border-b bg-amber-500/15 border-amber-500/40 backdrop-blur-sm",children:[i.jsxs("div",{className:"flex items-center gap-3 min-w-0 flex-wrap",children:[i.jsx(C1,{className:"shrink-0 text-amber-400",size:18}),i.jsx("span",{className:"font-semibold text-amber-300 text-sm",children:t.length===1?"1 agent needs you to sign in":`${t.length} agents need you to sign in`}),i.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t.map(a=>i.jsxs("div",{className:"flex items-center gap-1 text-xs text-amber-200/90",children:[i.jsx("span",{className:"font-mono",children:a.sessionName}),i.jsx(O1,{loginRequired:a,agentLabel:a.sessionName})]},a.sessionName))})]}),i.jsx("button",{type:"button",onClick:()=>r(s),className:"shrink-0 p-1 rounded-md text-amber-300 hover:bg-amber-500/20 transition-colors","aria-label":"Dismiss sign-in banner",children:i.jsx(On,{size:16})})]})};function uTe(){const{id:t}=Gu();return i.jsx(Zv,{to:`/tasks/${t??""}`,replace:!0})}function hTe(){return i.jsx(aY,{children:i.jsx(qJ,{children:i.jsx(xY,{children:i.jsxs(XK,{children:[i.jsx(oTe,{}),i.jsx(dTe,{}),i.jsx(dK,{children:i.jsxs(tK,{children:[i.jsx(Fn,{path:"/auth/callback",element:i.jsx(WEe,{})}),i.jsx(Fn,{path:"/auth",element:i.jsx($Ee,{})}),i.jsxs(Fn,{path:"/",element:i.jsx(YJ,{}),children:[i.jsx(Fn,{index:!0,element:i.jsx(tZ,{})}),i.jsx(Fn,{path:"projects",element:i.jsx(iZ,{})}),i.jsx(Fn,{path:"projects/:id",element:i.jsx(ZZ,{})}),i.jsx(Fn,{path:"teams",element:i.jsx(wQ,{})}),i.jsx(Fn,{path:"teams/:id",element:i.jsx(iee,{})}),i.jsx(Fn,{path:"assignments",element:i.jsx(hee,{})}),i.jsx(Fn,{path:"scheduled-checkins",element:i.jsx(vee,{})}),i.jsx(Fn,{path:"triggers",element:i.jsx(Nee,{})}),i.jsx(Fn,{path:"factory",element:i.jsx(lme,{})}),i.jsx(Fn,{path:"marketplace",element:i.jsx(r0e,{})}),i.jsx(Fn,{path:"marketplace/:id",element:i.jsx(a0e,{})}),i.jsx(Fn,{path:"wiki",element:i.jsx(VCe,{})}),i.jsx(Fn,{path:"security",element:i.jsx($9,{})}),i.jsx(Fn,{path:"monitoring/costs",element:i.jsx(c4,{})}),i.jsx(Fn,{path:"usage",element:i.jsx(c4,{})}),i.jsx(Fn,{path:"settings",element:i.jsx(gge,{})}),i.jsx(Fn,{path:"pricing",element:i.jsx(XEe,{})}),i.jsx(Fn,{path:"cloud",element:i.jsx(fAe,{})}),i.jsx(Fn,{path:"tasks",element:i.jsx(rTe,{})}),i.jsx(Fn,{path:"tasks/:id",element:i.jsx(r7,{})}),i.jsx(Fn,{path:"requests",element:i.jsx(Zv,{to:"/tasks",replace:!0})}),i.jsx(Fn,{path:"requests/:id",element:i.jsx(uTe,{})}),i.jsx(Fn,{path:"missions",element:i.jsx(X9,{})}),i.jsx(Fn,{path:"missions/:id",element:i.jsx(J9,{})}),i.jsx(Fn,{path:"workitems",element:i.jsx(t7,{})}),i.jsx(Fn,{path:"workitems/:id",element:i.jsx(n7,{})}),i.jsx(Fn,{path:"team-chat",element:i.jsx(Vxe,{})}),i.jsx(Fn,{path:"chat",element:i.jsx(Zv,{to:"/team-chat",replace:!0})}),i.jsx(Fn,{path:"agents",element:i.jsx(Zv,{to:"/team-chat",replace:!0})})]})]})})]})})})})}wJ();yE.createRoot(document.getElementById("root")).render(i.jsx(Vn.StrictMode,{children:i.jsx(hTe,{})}));
|
|
4961
|
+
//# sourceMappingURL=index-26f03bbd.js.map
|