codex-mobile-re 0.1.113 → 0.1.115

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.
@@ -1 +1 @@
1
- import{e as X,r as f,x as w,O as Z,au as tt,av as at,f as c,i as v,j as e,t as n,u as i,k as x,p as B,aw as A,F as et,l as ot,a0 as U,w as I,n as st,h as L,ax as F,v as nt,c as _,_ as ut}from"./index-Cu_hRJGY.js";const it={class:"automations-panel"},lt={class:"automations-toolbar"},rt={class:"automations-summary"},ct={class:"automations-actions"},dt=["title"],mt=["disabled"],pt={key:0,class:"automations-error"},vt={key:1,class:"automations-empty"},ht={key:2,class:"automations-empty"},ft={key:3,class:"automations-layout"},_t=["aria-label"],yt=["onClick","onKeydown"],bt=["data-status"],gt={class:"automation-row-main"},At={class:"automation-row-title"},Lt={class:"automation-row-meta"},Et={class:"automation-row-side"},kt=["data-status"],Ct={class:"automation-row-schedule"},wt=["onClick"],It=["aria-label"],jt={class:"automation-detail-heading"},Rt=["data-status"],Tt={class:"automation-detail-title-wrap"},$t={class:"automation-detail-grid"},Kt=["title"],Nt={class:"automation-detail-prompt"},Mt=X({__name:"AutomationsPanel",props:{groups:{},projectCwdByName:{},projectDisplayNameById:{},selectedAutomationId:{}},emits:["select-automation","edit-automation","create-automation"],setup(V,{expose:O,emit:Q}){const h=V,E=Q,j=f({}),R=f({}),{t:s}=nt(),y=f(!1),b=f(""),d=f(h.selectedAutomationId??""),p=f(""),Y=_(()=>{const t=new Map;for(const a of h.groups)for(const o of a.threads)t.set(o.id,o.title);return t}),z=_(()=>{var a,o;const t=new Map;for(const l of h.groups){const u=(a=h.projectCwdByName[l.projectName])==null?void 0:a.trim(),g=((o=h.projectDisplayNameById[l.projectName])==null?void 0:o.trim())||l.projectName;u&&t.set(u,g)}return t}),m=_(()=>{const t=[];for(const[a,o]of Object.entries(j.value)){const l=Y.value.get(a)??a;for(const u of o)t.push({rowKey:N("thread",a,u.id),automation:u,scope:"thread",scopeLabel:s("Heartbeat"),targetLabel:l,targetTitle:a,scheduleLabel:M(u)})}for(const[a,o]of Object.entries(R.value)){const l=z.value.get(a)??J(a);for(const u of o)t.push({rowKey:N("project",a,u.id),automation:u,scope:"project",scopeLabel:s("Project"),targetLabel:l,targetTitle:a,scheduleLabel:M(u)})}return t.sort((a,o)=>{const l=a.automation.status==="ACTIVE"?0:1,u=o.automation.status==="ACTIVE"?0:1;if(l!==u)return l-u;const g=a.automation.createdAtMs??0,P=o.automation.createdAtMs??0;if(g!==P)return P-g;const D=a.automation.updatedAtMs??0,S=o.automation.updatedAtMs??0;return D!==S?S-D:a.automation.name.localeCompare(o.automation.name)})}),H=_(()=>m.value.filter(t=>t.automation.status==="ACTIVE").length),W=_(()=>m.value.filter(t=>t.automation.status==="PAUSED").length),r=_(()=>m.value.find(t=>t.rowKey===p.value)??m.value.find(t=>t.automation.id===d.value)??m.value[0]??null);w(()=>h.selectedAutomationId,t=>{t&&(d.value=t,p.value=K(t))}),w(d,t=>{t&&E("select-automation",t)}),w(m,t=>{if(t.length===0){d.value="",p.value="";return}if(!(p.value&&t.some(a=>a.rowKey===p.value))){if(d.value&&t.some(a=>a.automation.id===d.value)){p.value=K(d.value);return}(!d.value||!t.some(a=>a.automation.id===d.value))&&(d.value=t[0].automation.id,p.value=t[0].rowKey)}}),Z(()=>{k()}),O({loadAutomations:k});async function k(){y.value=!0,b.value="";try{const[t,a]=await Promise.all([tt(),at()]);j.value=t,R.value=a}catch(t){b.value=t instanceof Error?t.message:s("Failed to load automations")}finally{y.value=!1}}function T(t){return s(t==="PAUSED"?"Paused":"Active")}function $(t){E("edit-automation",{scope:t.scope,target:t.targetTitle,automation:t.automation})}function q(){E("create-automation")}function C(t){p.value=t.rowKey,d.value=t.automation.id}function K(t){var a;return((a=m.value.find(o=>o.automation.id===t))==null?void 0:a.rowKey)??""}function N(t,a,o){return`${t}:${a}:${o}`}function M(t){var o,l;if(t.status==="PAUSED")return s("Paused");if(t.nextRunAtMs)return`${s("Next")} ${G(t.nextRunAtMs)}`;const a=t.rrule.trim();if(/FREQ=MINUTELY/i.test(a)){const u=((o=/INTERVAL=(\d+)/i.exec(a))==null?void 0:o[1])??"1";return u==="1"?s("Every minute"):`${s("Every")} ${u} ${s("minutes")}`}if(/FREQ=HOURLY/i.test(a)){const u=((l=/INTERVAL=(\d+)/i.exec(a))==null?void 0:l[1])??"1";return u==="1"?s("Hourly"):`${s("Every")} ${u} ${s("hours")}`}return/FREQ=DAILY/i.test(a)?s("Daily"):/FREQ=WEEKLY/i.test(a)?s("Weekly"):s("Custom schedule")}function G(t){return new Date(t).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function J(t){return t.replace(/\/+$/,"").split("/").filter(Boolean).pop()??t}return(t,a)=>(c(),v("div",it,[e("div",lt,[e("div",rt,[e("span",null,n(m.value.length)+" "+n(i(s)("total")),1),e("span",null,n(H.value)+" "+n(i(s)("active")),1),e("span",null,n(W.value)+" "+n(i(s)("paused")),1)]),e("div",ct,[e("button",{class:"automations-create",type:"button",title:i(s)("Create a new automation"),onClick:q},n(i(s)("New automation")),9,dt),e("button",{class:"automations-refresh",type:"button",disabled:y.value,onClick:k},n(y.value?i(s)("Refreshing..."):i(s)("Refresh")),9,mt)])]),b.value?(c(),v("p",pt,n(b.value),1)):x("",!0),y.value&&m.value.length===0?(c(),v("div",vt,[B(A,{class:"automations-empty-icon"}),e("p",null,n(i(s)("Loading automations...")),1)])):m.value.length===0?(c(),v("div",ht,[B(A,{class:"automations-empty-icon"}),e("p",null,n(i(s)("No automations yet")),1),e("span",null,n(i(s)("Use a thread or project menu to add an automation.")),1)])):(c(),v("div",ft,[e("section",{class:"automations-list","aria-label":i(s)("Automations")},[(c(!0),v(et,null,ot(m.value,o=>(c(),v("div",{key:o.rowKey,class:st(["automation-row",{"is-selected":p.value===o.rowKey}]),role:"button",tabindex:"0",onClick:l=>C(o),onKeydown:[U(I(l=>C(o),["prevent"]),["enter"]),U(I(l=>C(o),["prevent"]),["space"])]},[e("span",{class:"automation-row-icon","data-status":o.automation.status},[o.automation.status==="PAUSED"?(c(),L(F,{key:0})):(c(),L(A,{key:1}))],8,bt),e("span",gt,[e("span",At,n(o.automation.name),1),e("span",Lt,n(o.scopeLabel)+" • "+n(o.targetLabel),1)]),e("span",Et,[e("span",{class:"automation-row-status","data-status":o.automation.status},n(T(o.automation.status)),9,kt),e("span",Ct,n(o.scheduleLabel),1)]),e("button",{class:"automation-edit-button",type:"button",onClick:I(l=>$(o),["stop"])},n(i(s)("Edit")),9,wt)],42,yt))),128))],8,_t),r.value?(c(),v("aside",{key:0,class:"automation-detail","aria-label":i(s)("Automation details")},[e("div",jt,[e("span",{class:"automation-detail-icon","data-status":r.value.automation.status},[r.value.automation.status==="PAUSED"?(c(),L(F,{key:0})):(c(),L(A,{key:1}))],8,Rt),e("div",Tt,[e("h2",null,n(r.value.automation.name),1),e("span",null,n(r.value.scopeLabel),1)]),e("button",{class:"automation-detail-edit",type:"button",onClick:a[0]||(a[0]=o=>$(r.value))},n(i(s)("Edit")),1)]),e("dl",$t,[e("div",null,[e("dt",null,n(i(s)("Status")),1),e("dd",null,n(T(r.value.automation.status)),1)]),e("div",null,[e("dt",null,n(i(s)("Schedule")),1),e("dd",null,n(r.value.scheduleLabel),1)]),e("div",null,[e("dt",null,n(i(s)("Target")),1),e("dd",{title:r.value.targetTitle},n(r.value.targetLabel),9,Kt)]),e("div",null,[a[1]||(a[1]=e("dt",null,"ID",-1)),e("dd",null,n(r.value.automation.id),1)])]),e("section",Nt,[e("h3",null,n(i(s)("Prompt")),1),e("p",null,n(r.value.automation.prompt),1)])],8,It)):x("",!0)]))]))}}),Dt=ut(Mt,[["__scopeId","data-v-44d1a098"]]);export{Dt as default};
1
+ import{e as X,r as f,x as w,O as Z,au as tt,av as at,f as c,i as v,j as e,t as n,u as i,k as x,p as B,aw as A,F as et,l as ot,a0 as U,w as I,n as st,h as L,ax as F,v as nt,c as _,_ as ut}from"./index-BJ-YiA9y.js";const it={class:"automations-panel"},lt={class:"automations-toolbar"},rt={class:"automations-summary"},ct={class:"automations-actions"},dt=["title"],mt=["disabled"],pt={key:0,class:"automations-error"},vt={key:1,class:"automations-empty"},ht={key:2,class:"automations-empty"},ft={key:3,class:"automations-layout"},_t=["aria-label"],yt=["onClick","onKeydown"],bt=["data-status"],gt={class:"automation-row-main"},At={class:"automation-row-title"},Lt={class:"automation-row-meta"},Et={class:"automation-row-side"},kt=["data-status"],Ct={class:"automation-row-schedule"},wt=["onClick"],It=["aria-label"],jt={class:"automation-detail-heading"},Rt=["data-status"],Tt={class:"automation-detail-title-wrap"},$t={class:"automation-detail-grid"},Kt=["title"],Nt={class:"automation-detail-prompt"},Mt=X({__name:"AutomationsPanel",props:{groups:{},projectCwdByName:{},projectDisplayNameById:{},selectedAutomationId:{}},emits:["select-automation","edit-automation","create-automation"],setup(V,{expose:O,emit:Q}){const h=V,E=Q,j=f({}),R=f({}),{t:s}=nt(),y=f(!1),b=f(""),d=f(h.selectedAutomationId??""),p=f(""),Y=_(()=>{const t=new Map;for(const a of h.groups)for(const o of a.threads)t.set(o.id,o.title);return t}),z=_(()=>{var a,o;const t=new Map;for(const l of h.groups){const u=(a=h.projectCwdByName[l.projectName])==null?void 0:a.trim(),g=((o=h.projectDisplayNameById[l.projectName])==null?void 0:o.trim())||l.projectName;u&&t.set(u,g)}return t}),m=_(()=>{const t=[];for(const[a,o]of Object.entries(j.value)){const l=Y.value.get(a)??a;for(const u of o)t.push({rowKey:N("thread",a,u.id),automation:u,scope:"thread",scopeLabel:s("Heartbeat"),targetLabel:l,targetTitle:a,scheduleLabel:M(u)})}for(const[a,o]of Object.entries(R.value)){const l=z.value.get(a)??J(a);for(const u of o)t.push({rowKey:N("project",a,u.id),automation:u,scope:"project",scopeLabel:s("Project"),targetLabel:l,targetTitle:a,scheduleLabel:M(u)})}return t.sort((a,o)=>{const l=a.automation.status==="ACTIVE"?0:1,u=o.automation.status==="ACTIVE"?0:1;if(l!==u)return l-u;const g=a.automation.createdAtMs??0,P=o.automation.createdAtMs??0;if(g!==P)return P-g;const D=a.automation.updatedAtMs??0,S=o.automation.updatedAtMs??0;return D!==S?S-D:a.automation.name.localeCompare(o.automation.name)})}),H=_(()=>m.value.filter(t=>t.automation.status==="ACTIVE").length),W=_(()=>m.value.filter(t=>t.automation.status==="PAUSED").length),r=_(()=>m.value.find(t=>t.rowKey===p.value)??m.value.find(t=>t.automation.id===d.value)??m.value[0]??null);w(()=>h.selectedAutomationId,t=>{t&&(d.value=t,p.value=K(t))}),w(d,t=>{t&&E("select-automation",t)}),w(m,t=>{if(t.length===0){d.value="",p.value="";return}if(!(p.value&&t.some(a=>a.rowKey===p.value))){if(d.value&&t.some(a=>a.automation.id===d.value)){p.value=K(d.value);return}(!d.value||!t.some(a=>a.automation.id===d.value))&&(d.value=t[0].automation.id,p.value=t[0].rowKey)}}),Z(()=>{k()}),O({loadAutomations:k});async function k(){y.value=!0,b.value="";try{const[t,a]=await Promise.all([tt(),at()]);j.value=t,R.value=a}catch(t){b.value=t instanceof Error?t.message:s("Failed to load automations")}finally{y.value=!1}}function T(t){return s(t==="PAUSED"?"Paused":"Active")}function $(t){E("edit-automation",{scope:t.scope,target:t.targetTitle,automation:t.automation})}function q(){E("create-automation")}function C(t){p.value=t.rowKey,d.value=t.automation.id}function K(t){var a;return((a=m.value.find(o=>o.automation.id===t))==null?void 0:a.rowKey)??""}function N(t,a,o){return`${t}:${a}:${o}`}function M(t){var o,l;if(t.status==="PAUSED")return s("Paused");if(t.nextRunAtMs)return`${s("Next")} ${G(t.nextRunAtMs)}`;const a=t.rrule.trim();if(/FREQ=MINUTELY/i.test(a)){const u=((o=/INTERVAL=(\d+)/i.exec(a))==null?void 0:o[1])??"1";return u==="1"?s("Every minute"):`${s("Every")} ${u} ${s("minutes")}`}if(/FREQ=HOURLY/i.test(a)){const u=((l=/INTERVAL=(\d+)/i.exec(a))==null?void 0:l[1])??"1";return u==="1"?s("Hourly"):`${s("Every")} ${u} ${s("hours")}`}return/FREQ=DAILY/i.test(a)?s("Daily"):/FREQ=WEEKLY/i.test(a)?s("Weekly"):s("Custom schedule")}function G(t){return new Date(t).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function J(t){return t.replace(/\/+$/,"").split("/").filter(Boolean).pop()??t}return(t,a)=>(c(),v("div",it,[e("div",lt,[e("div",rt,[e("span",null,n(m.value.length)+" "+n(i(s)("total")),1),e("span",null,n(H.value)+" "+n(i(s)("active")),1),e("span",null,n(W.value)+" "+n(i(s)("paused")),1)]),e("div",ct,[e("button",{class:"automations-create",type:"button",title:i(s)("Create a new automation"),onClick:q},n(i(s)("New automation")),9,dt),e("button",{class:"automations-refresh",type:"button",disabled:y.value,onClick:k},n(y.value?i(s)("Refreshing..."):i(s)("Refresh")),9,mt)])]),b.value?(c(),v("p",pt,n(b.value),1)):x("",!0),y.value&&m.value.length===0?(c(),v("div",vt,[B(A,{class:"automations-empty-icon"}),e("p",null,n(i(s)("Loading automations...")),1)])):m.value.length===0?(c(),v("div",ht,[B(A,{class:"automations-empty-icon"}),e("p",null,n(i(s)("No automations yet")),1),e("span",null,n(i(s)("Use a thread or project menu to add an automation.")),1)])):(c(),v("div",ft,[e("section",{class:"automations-list","aria-label":i(s)("Automations")},[(c(!0),v(et,null,ot(m.value,o=>(c(),v("div",{key:o.rowKey,class:st(["automation-row",{"is-selected":p.value===o.rowKey}]),role:"button",tabindex:"0",onClick:l=>C(o),onKeydown:[U(I(l=>C(o),["prevent"]),["enter"]),U(I(l=>C(o),["prevent"]),["space"])]},[e("span",{class:"automation-row-icon","data-status":o.automation.status},[o.automation.status==="PAUSED"?(c(),L(F,{key:0})):(c(),L(A,{key:1}))],8,bt),e("span",gt,[e("span",At,n(o.automation.name),1),e("span",Lt,n(o.scopeLabel)+" • "+n(o.targetLabel),1)]),e("span",Et,[e("span",{class:"automation-row-status","data-status":o.automation.status},n(T(o.automation.status)),9,kt),e("span",Ct,n(o.scheduleLabel),1)]),e("button",{class:"automation-edit-button",type:"button",onClick:I(l=>$(o),["stop"])},n(i(s)("Edit")),9,wt)],42,yt))),128))],8,_t),r.value?(c(),v("aside",{key:0,class:"automation-detail","aria-label":i(s)("Automation details")},[e("div",jt,[e("span",{class:"automation-detail-icon","data-status":r.value.automation.status},[r.value.automation.status==="PAUSED"?(c(),L(F,{key:0})):(c(),L(A,{key:1}))],8,Rt),e("div",Tt,[e("h2",null,n(r.value.automation.name),1),e("span",null,n(r.value.scopeLabel),1)]),e("button",{class:"automation-detail-edit",type:"button",onClick:a[0]||(a[0]=o=>$(r.value))},n(i(s)("Edit")),1)]),e("dl",$t,[e("div",null,[e("dt",null,n(i(s)("Status")),1),e("dd",null,n(T(r.value.automation.status)),1)]),e("div",null,[e("dt",null,n(i(s)("Schedule")),1),e("dd",null,n(r.value.scheduleLabel),1)]),e("div",null,[e("dt",null,n(i(s)("Target")),1),e("dd",{title:r.value.targetTitle},n(r.value.targetLabel),9,Kt)]),e("div",null,[a[1]||(a[1]=e("dt",null,"ID",-1)),e("dd",null,n(r.value.automation.id),1)])]),e("section",Nt,[e("h3",null,n(i(s)("Prompt")),1),e("p",null,n(r.value.automation.prompt),1)])],8,It)):x("",!0)]))]))}}),Dt=ut(Mt,[["__scopeId","data-v-44d1a098"]]);export{Dt as default};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.esm-Cxn_LBGD.js","assets/index.esm-Bx2Y2PLG.js","assets/index.esm-DYMAm9mq.js"])))=>i.map(i=>d[i]);
2
- import{e as be,f as l,i as o,j as s,F as U,l as B,n as J,t as i,k as p,$ as ns,a0 as rs,y as cs,u as n,w as Oe,p as Re,a1 as ds,v as ot,c as _,_ as it,x as Ie,h as re,T as st,I as us,r as h,G as Wt,o as ta,O as aa,m as lt,a2 as ys,a3 as ps,D as Yt,B as ms,z as hs,s as vs,a4 as gs,a5 as bs,a6 as ks,a7 as fs,a8 as $s,a9 as Cs,aa as ws,ab as Ss,ac as _s,ad as Ls,ae as As,af as Ps,ag as Is,ah as Ms,ai as Fs,aj as Es,ak as Ts,al as Us,am as Ns,an as Ds,ao as xs,ap as Os,aq as Rs,ar as Bs,as as Jt,at as Gs}from"./index-Cu_hRJGY.js";import{s as Ks}from"./sanitizeHtml-Bd3No2dT.js";const js=[[/(gmail|google calendar|google docs|google sheets|google drive|github|slack|notion|linear|outlook|supabase)/i,140],[/(email|calendar|document|sheet|drive|repo|issue|message|project|database|crm|deploy)/i,50]];function sa(t){return t.trim().toLowerCase()}function Hs(t,F){return F.reduce((b,[A,$])=>b+(A.test(t)?$:0),0)}function Xt(t){return t.activeCount*1e3+(t.isNoAuth?300:0)+t.toolsCount*3+t.triggersCount*4+Hs(`${t.name} ${t.slug} ${t.description}`,js)}function qs(t,F){const b=sa(F);if(!b)return 0;const A=t.name.toLowerCase(),$=t.slug.toLowerCase();return A===b||$===b?1e6:A.replace(/\s+/gu,"")===b.replace(/\s+/gu,"")?9e5:A.startsWith(b)||$.startsWith(b)?8e5:A.includes(b)||$.includes(b)?7e5:0}function xe(t){return t.activeCount>0?0:t.totalConnections>0?1:t.isNoAuth?2:3}function zs(t,F,b=""){const A=sa(b),$=u=>qs(u,A);return F==="name"?[...t].sort((u,c)=>$(c)-$(u)||xe(u)-xe(c)||u.name.localeCompare(c.name)):F==="date"?[...t].sort((u,c)=>$(c)-$(u)||xe(u)-xe(c)||u.name.localeCompare(c.name)):[...t].sort((u,c)=>$(c)-$(u)||xe(u)-xe(c)||Xt(c)-Xt(u)||u.name.localeCompare(c.name))}const Vs={class:"directory-section"},Qs={class:"directory-toolbar"},Ws=["value"],Ys={class:"directory-sort-group",role:"group","aria-label":"Sort apps"},Js=["onClick"],Xs={key:0,class:"directory-empty"},Zs={key:1,class:"directory-error"},el={key:2,class:"directory-loading"},tl={key:3,class:"directory-empty"},al={key:4,class:"directory-grid"},sl={class:"directory-card-top"},ll=["src","alt"],ol={key:1,class:"directory-card-fallback"},il={class:"directory-card-main"},nl={class:"directory-card-title-row"},rl={class:"directory-card-title"},cl={key:0,class:"directory-badge is-muted"},dl={key:1,class:"directory-badge"},ul={class:"directory-card-meta"},yl={key:0,class:"directory-card-description"},pl={class:"directory-chip-row"},ml={key:0,class:"directory-chip"},hl={class:"directory-card-actions"},vl=["disabled","onClick"],gl=["onClick"],bl=["disabled","onClick"],kl=be({__name:"DirectoryAppsTab",props:{apps:{},searchQuery:{},sortMode:{},supportsApps:{type:Boolean},error:{},isLoading:{type:Boolean},actionId:{},tryInFlightKey:{},isTryActionInFlight:{type:Boolean},appLogoSrc:{type:Function},appMetaLabel:{type:Function},appTryKey:{type:Function},toggleApp:{type:Function},openExternalUrl:{type:Function},tryApp:{type:Function},disabledLabel:{},connectedLabel:{},enableLabel:{},disableLabel:{},manageLabel:{},loginLabel:{},tryLabel:{},startingLabel:{}},emits:["update:search-query","update:sort-mode"],setup(t,{emit:F}){const b=F,A=[{id:"popular",label:"Popular"},{id:"name",label:"A-Z"},{id:"date",label:"Date"}];return($,u)=>(l(),o("section",Vs,[s("div",Qs,[s("input",{value:t.searchQuery,class:"directory-search",type:"search",placeholder:"Search apps...","aria-label":"Search apps",onInput:u[0]||(u[0]=c=>b("update:search-query",c.target.value))},null,40,Ws),s("div",Ys,[(l(),o(U,null,B(A,c=>s("button",{key:c.id,class:J(["directory-sort-button",{"is-active":t.sortMode===c.id}]),type:"button",onClick:y=>b("update:sort-mode",c.id)},i(c.label),11,Js)),64))])]),t.supportsApps?t.error?(l(),o("div",Zs,i(t.error),1)):t.isLoading?(l(),o("div",el,"Loading apps...")):t.apps.length===0?(l(),o("div",tl,"No apps found.")):(l(),o("div",al,[(l(!0),o(U,null,B(t.apps,c=>(l(),o("article",{key:c.id,class:"directory-card"},[s("div",sl,[t.appLogoSrc(c)?(l(),o("img",{key:0,class:"directory-card-icon",src:t.appLogoSrc(c),alt:c.name,loading:"lazy"},null,8,ll)):(l(),o("div",ol,i(c.name.charAt(0)),1)),s("div",il,[s("div",nl,[s("span",rl,i(c.name),1),c.isEnabled?c.isAccessible?(l(),o("span",dl,i(t.connectedLabel),1)):p("",!0):(l(),o("span",cl,i(t.disabledLabel),1))]),s("span",ul,i(t.appMetaLabel(c)),1)])]),c.description?(l(),o("p",yl,i(c.description),1)):p("",!0),s("div",pl,[c.category?(l(),o("span",ml,i(c.category),1)):p("",!0),(l(!0),o(U,null,B(c.pluginDisplayNames.slice(0,2),y=>(l(),o("span",{key:y,class:"directory-chip"},i(y),1))),128))]),s("div",hl,[s("button",{class:"directory-action",type:"button",disabled:t.actionId===c.id,onClick:y=>t.toggleApp(c)},i(c.isEnabled?t.disableLabel:t.enableLabel),9,vl),c.installUrl?(l(),o("button",{key:0,class:"directory-action-link",type:"button",onClick:y=>t.openExternalUrl(c.installUrl)},i(c.isAccessible?t.manageLabel:t.loginLabel),9,gl)):p("",!0),c.isAccessible&&c.isEnabled?(l(),o("button",{key:1,class:"directory-action",type:"button",disabled:t.isTryActionInFlight,onClick:y=>t.tryApp(c)},i(t.tryInFlightKey===t.appTryKey(c)?t.startingLabel:t.tryLabel),9,bl)):p("",!0)])]))),128))])):(l(),o("div",Xs," Apps APIs unavailable in this Codex CLI. Update Codex CLI to manage apps. "))]))}}),fl={class:"directory-section"},$l={class:"directory-toolbar"},Cl=["value"],wl={class:"directory-sort-group",role:"group","aria-label":"Sort Composio connectors"},Sl=["onClick"],_l={key:0,class:"directory-error"},Ll={key:1,class:"directory-loading"},Al={key:2,class:"directory-empty"},Pl={class:"directory-empty-copy"},Il={class:"directory-card-actions"},Ml=["disabled"],Fl={key:3,class:"composio-preview"},El={class:"composio-preview-hero"},Tl={class:"composio-preview-actions"},Ul=["disabled"],Nl={class:"composio-preview-grid"},Dl={class:"directory-card-top"},xl={class:"directory-card-fallback composio-fallback"},Ol={class:"directory-card-main"},Rl={class:"directory-card-title-row"},Bl={class:"directory-card-title"},Gl={class:"directory-badge is-muted"},Kl={class:"directory-card-meta"},jl={class:"directory-card-description"},Hl={class:"directory-chip-row"},ql={key:4,class:"directory-section composio-section"},zl={class:"directory-card directory-card-wide composio-status-card"},Vl={class:"directory-card-top"},Ql={class:"directory-card-main"},Wl={class:"directory-card-title-row"},Yl={class:"directory-card-title"},Jl={class:"directory-badge"},Xl={class:"directory-card-meta"},Zl={class:"directory-card-description"},eo={class:"directory-chip-row"},to={key:0,class:"directory-chip"},ao={key:1,class:"directory-chip"},so={key:2,class:"directory-chip"},lo={class:"directory-card-actions"},oo={key:0,class:"directory-empty"},io={key:1,class:"directory-grid"},no={class:"directory-card-top"},ro=["src","alt"],co={key:1,class:"directory-card-fallback composio-fallback"},uo={class:"directory-card-main"},yo={class:"directory-card-title-row"},po={class:"directory-card-title"},mo={key:0,class:"directory-badge"},ho={key:1,class:"directory-badge"},vo={class:"directory-card-meta"},go={key:0,class:"directory-card-description"},bo={class:"directory-chip-row"},ko={class:"directory-chip"},fo={key:0,class:"directory-chip"},$o={key:1,class:"directory-chip"},Co={class:"directory-card-actions"},wo=["onClick"],So=["disabled","onClick"],_o=["disabled","onClick"],Lo={key:2,class:"directory-section-actions"},Ao=["disabled"],Po=be({__name:"DirectoryComposioTab",props:{composioStatus:{},searchQuery:{},sortMode:{},error:{},isLoadingComposio:{type:Boolean},isInstallingComposio:{type:Boolean},isStartingComposioLogin:{type:Boolean},visibleComposioConnectors:{},visibleComposioPreviewConnectors:{},workspaceSummary:{},connectorCount:{},total:{},hasMoreComposioConnectors:{type:Boolean},actionSlug:{},isTryActionInFlight:{type:Boolean},tryInFlightKey:{},composioMetaLabel:{type:Function},composioPrimaryActionLabel:{type:Function},canTryComposio:{type:Function},composioTryKey:{type:Function},openComposioDetail:{type:Function},runComposioPrimaryAction:{type:Function},tryComposio:{type:Function},installComposioCli:{type:Function},startComposioCliLogin:{type:Function},loadMoreComposio:{type:Function},openExternalUrl:{type:Function},workspaceLabel:{},connectedLabel:{},authenticatedLabel:{},noAuthLabel:{},previewLabel:{},openDashboardLabel:{},detailsLabel:{},installLabel:{},installingLabel:{},loginLabel:{},openingLabel:{},startingLabel:{},tryLabel:{},loadMoreLabel:{},loadingLabel:{}},emits:["update:search-query","update:sort-mode"],setup(t,{emit:F}){const b=F,A=[{id:"popular",label:"Popular"},{id:"name",label:"A-Z"},{id:"date",label:"Date"}];return($,u)=>{var c;return l(),o("section",fl,[s("div",$l,[s("input",{value:t.searchQuery,class:"directory-search",type:"search",placeholder:"Search Composio connectors...","aria-label":"Search Composio connectors",onInput:u[0]||(u[0]=y=>b("update:search-query",y.target.value))},null,40,Cl),s("div",wl,[(l(),o(U,null,B(A,y=>s("button",{key:y.id,class:J(["directory-sort-button",{"is-active":t.sortMode===y.id}]),type:"button",onClick:M=>b("update:sort-mode",y.id)},i(y.label),11,Sl)),64))])]),t.error?(l(),o("div",_l,i(t.error),1)):t.isLoadingComposio?(l(),o("div",Ll,"Loading Composio connectors...")):(c=t.composioStatus)!=null&&c.available?t.composioStatus.authenticated?(l(),o("div",ql,[s("article",zl,[s("div",Vl,[u[8]||(u[8]=s("div",{class:"directory-card-fallback composio-fallback"},"C",-1)),s("div",Ql,[s("div",Wl,[s("span",Yl,i(t.workspaceLabel),1),s("span",Jl,i(t.connectedLabel),1)]),s("span",Xl,i(t.composioStatus.email||t.composioStatus.defaultOrgName||t.authenticatedLabel),1)])]),s("p",Zl,i(t.workspaceSummary),1),s("div",eo,[t.composioStatus.defaultOrgName?(l(),o("span",to,i(t.composioStatus.defaultOrgName),1)):p("",!0),t.composioStatus.cliVersion?(l(),o("span",ao,"CLI "+i(t.composioStatus.cliVersion),1)):p("",!0),t.connectorCount?(l(),o("span",so," Showing "+i(t.connectorCount)+i(t.total?` / ${t.total}`:"")+" connectors ",1)):p("",!0)]),s("div",lo,[s("button",{class:"directory-action-link",type:"button",onClick:u[4]||(u[4]=y=>t.openExternalUrl(t.composioStatus.webUrl))},i(t.openDashboardLabel),1)])]),t.visibleComposioConnectors.length===0?(l(),o("div",oo,"No Composio connectors found.")):(l(),o("div",io,[(l(!0),o(U,null,B(t.visibleComposioConnectors,y=>(l(),o("article",{key:y.slug,class:"directory-card"},[s("div",no,[y.logoUrl?(l(),o("img",{key:0,class:"directory-card-icon",src:y.logoUrl,alt:y.name,loading:"lazy"},null,8,ro)):(l(),o("div",co,i(y.name.charAt(0)),1)),s("div",uo,[s("div",yo,[s("span",po,i(y.name),1),y.activeCount>0?(l(),o("span",mo,i(t.connectedLabel),1)):y.isNoAuth?(l(),o("span",ho,i(t.noAuthLabel),1)):p("",!0)]),s("span",vo,i(t.composioMetaLabel(y)),1)])]),y.description?(l(),o("p",go,i(y.description),1)):p("",!0),s("div",bo,[s("span",ko,i(y.toolsCount)+" tools",1),y.triggersCount>0?(l(),o("span",fo,i(y.triggersCount)+" triggers",1)):p("",!0),y.authModes.length>0?(l(),o("span",$o,i(y.authModes.join(", ")),1)):p("",!0)]),s("div",Co,[s("button",{class:"directory-action",type:"button",onClick:M=>t.openComposioDetail(y.slug)},i(t.detailsLabel),9,wo),t.composioPrimaryActionLabel(y)?(l(),o("button",{key:0,class:"directory-action-link",type:"button",disabled:t.actionSlug===y.slug,onClick:M=>t.runComposioPrimaryAction(y)},i(t.actionSlug===y.slug?t.openingLabel:t.composioPrimaryActionLabel(y)),9,So)):p("",!0),t.canTryComposio(y)?(l(),o("button",{key:1,class:"directory-action primary",type:"button",disabled:t.isTryActionInFlight,onClick:M=>t.tryComposio(y)},i(t.tryInFlightKey===t.composioTryKey(y.slug)?t.startingLabel:t.tryLabel),9,_o)):p("",!0)])]))),128))])),t.hasMoreComposioConnectors?(l(),o("div",Lo,[s("button",{class:"directory-action",type:"button",disabled:t.isLoadingComposio,onClick:u[5]||(u[5]=(...y)=>t.loadMoreComposio&&t.loadMoreComposio(...y))},i(t.isLoadingComposio?t.loadingLabel:t.loadMoreLabel),9,Ao)])):p("",!0)])):(l(),o("div",Fl,[s("article",El,[u[7]||(u[7]=ns('<div class="composio-preview-copy"><div class="directory-card-fallback composio-fallback">C</div><div><p class="composio-preview-kicker">Connector catalog preview</p><h3 class="composio-preview-title">Connect everyday apps like Gmail, Calendar, Reddit, YouTube, and Drive.</h3><p class="composio-preview-text"> Composio is installed locally. Login to browse the live catalog, connect your accounts, and try simple actions from this machine. </p></div></div>',1)),s("div",Tl,[s("button",{class:"directory-action primary",type:"button",disabled:t.isStartingComposioLogin,onClick:u[2]||(u[2]=(...y)=>t.startComposioCliLogin&&t.startComposioCliLogin(...y))},i(t.isStartingComposioLogin?t.openingLabel:t.loginLabel),9,Ul),s("button",{class:"directory-action-link",type:"button",onClick:u[3]||(u[3]=y=>t.openExternalUrl(t.composioStatus.webUrl||"https://dashboard.composio.dev/"))},i(t.openDashboardLabel),1)])]),s("div",Nl,[(l(!0),o(U,null,B(t.visibleComposioPreviewConnectors,y=>(l(),o("article",{key:y.slug,class:"directory-card composio-preview-card"},[s("div",Dl,[s("div",xl,i(y.initial),1),s("div",Ol,[s("div",Rl,[s("span",Bl,i(y.name),1),s("span",Gl,i(t.previewLabel),1)]),s("span",Kl,i(y.meta),1)])]),s("p",jl,i(y.description),1),s("div",Hl,[(l(!0),o(U,null,B(y.chips,M=>(l(),o("span",{key:M,class:"directory-chip"},i(M),1))),128))])]))),128))])])):(l(),o("div",Al,[s("div",Pl,[u[6]||(u[6]=s("p",{class:"directory-empty-text"},"Composio CLI is not installed in this environment.",-1)),s("div",Il,[s("button",{class:"directory-action primary",type:"button",disabled:t.isInstallingComposio,onClick:u[1]||(u[1]=(...y)=>t.installComposioCli&&t.installComposioCli(...y))},i(t.isInstallingComposio?t.installingLabel:t.installLabel),9,Ml)])])]))])}}}),Io={class:"directory-section"},Mo={class:"directory-toolbar"},Fo=["value"],Eo={class:"directory-sort-group",role:"group","aria-label":"Sort plugins"},To=["onClick"],Uo={key:0,class:"directory-marketplace"},No={class:"directory-marketplace-header"},Do=["disabled"],xo={key:0,class:"directory-marketplace-empty"},Oo={key:1,class:"directory-marketplace-list"},Ro={class:"directory-marketplace-name"},Bo={key:0,class:"directory-marketplace-path"},Go=["disabled","onClick"],Ko={class:"directory-marketplace-add"},jo=["value"],Ho=["disabled"],qo={key:1,class:"directory-empty"},zo={key:2,class:"directory-error"},Vo={key:3,class:"directory-loading"},Qo={key:4,class:"directory-empty"},Wo={key:5,class:"directory-grid"},Yo=["onClick"],Jo={class:"directory-card-top"},Xo=["src","alt"],Zo={class:"directory-card-main"},ei={class:"directory-card-title-row"},ti={class:"directory-card-title"},ai={key:0,class:"directory-badge is-muted"},si={key:1,class:"directory-badge"},li={class:"directory-card-meta"},oi={key:0,class:"directory-card-description"},ii={class:"directory-chip-row"},ni={key:0,class:"directory-chip"},ri=be({__name:"DirectoryPluginsTab",props:{plugins:{},searchQuery:{},sortMode:{},supportsPlugins:{type:Boolean},supportsMarketplace:{type:Boolean},error:{},isLoading:{type:Boolean},marketplaces:{},marketplaceSourceUrl:{},marketplaceActionName:{},isMarketplaceActionInFlight:{type:Boolean},pluginIconSrc:{type:Function},fallbackStyle:{type:Function},openPluginDetail:{type:Function},addMarketplace:{type:Function},removeMarketplace:{type:Function},upgradeAllMarketplaces:{type:Function},disabledLabel:{},installedLabel:{},pluginLabel:{},upgradeAllLabel:{},upgradingLabel:{},removingLabel:{},removeLabel:{},addingLabel:{},addLabel:{}},emits:["update:search-query","update:sort-mode","update:marketplace-source-url"],setup(t,{emit:F}){const b=F,A=[{id:"popular",label:"Popular"},{id:"name",label:"A-Z"},{id:"date",label:"Date"}];return($,u)=>(l(),o("section",Io,[s("div",Mo,[s("input",{value:t.searchQuery,class:"directory-search",type:"search",placeholder:"Search plugins...","aria-label":"Search plugins",onInput:u[0]||(u[0]=c=>b("update:search-query",c.target.value))},null,40,Fo),s("div",Eo,[(l(),o(U,null,B(A,c=>s("button",{key:c.id,class:J(["directory-sort-button",{"is-active":t.sortMode===c.id}]),type:"button",onClick:y=>b("update:sort-mode",c.id)},i(c.label),11,To)),64))])]),t.supportsMarketplace?(l(),o("div",Uo,[s("div",No,[u[5]||(u[5]=s("span",{class:"directory-marketplace-title"},"Marketplaces",-1)),s("button",{class:"directory-marketplace-upgrade",type:"button",disabled:t.isMarketplaceActionInFlight,onClick:u[1]||(u[1]=(...c)=>t.upgradeAllMarketplaces&&t.upgradeAllMarketplaces(...c))},i(t.marketplaceActionName==="upgrade"?t.upgradingLabel:t.upgradeAllLabel),9,Do)]),t.marketplaces.length===0?(l(),o("div",xo,"No marketplaces configured.")):(l(),o("div",Oo,[(l(!0),o(U,null,B(t.marketplaces,c=>(l(),o("div",{key:c.name,class:"directory-marketplace-row"},[s("span",Ro,i(c.displayName),1),c.path?(l(),o("code",Bo,i(c.path),1)):p("",!0),s("button",{class:"directory-marketplace-remove",type:"button",disabled:t.isMarketplaceActionInFlight,onClick:y=>t.removeMarketplace(c.name)},i(t.marketplaceActionName===`remove:${c.name}`?t.removingLabel:t.removeLabel),9,Go)]))),128))])),s("div",Ko,[s("input",{value:t.marketplaceSourceUrl,class:"directory-marketplace-source",type:"url",placeholder:"Git URL to add a marketplace","aria-label":"Marketplace Git URL",onInput:u[2]||(u[2]=c=>b("update:marketplace-source-url",c.target.value)),onKeydown:u[3]||(u[3]=rs((...c)=>t.addMarketplace&&t.addMarketplace(...c),["enter"]))},null,40,jo),s("button",{class:"directory-marketplace-add-button",type:"button",disabled:t.isMarketplaceActionInFlight||!t.marketplaceSourceUrl.trim(),onClick:u[4]||(u[4]=(...c)=>t.addMarketplace&&t.addMarketplace(...c))},i(t.marketplaceActionName==="add"?t.addingLabel:t.addLabel),9,Ho)])])):p("",!0),t.supportsPlugins?t.error?(l(),o("div",zo,i(t.error),1)):t.isLoading?(l(),o("div",Vo,"Loading plugins...")):t.plugins.length===0?(l(),o("div",Qo,"No plugins found.")):(l(),o("div",Wo,[(l(!0),o(U,null,B(t.plugins,c=>(l(),o("button",{key:c.id,class:J(["directory-card",{"is-disabled":c.installed&&!c.enabled}]),type:"button",onClick:y=>t.openPluginDetail(c)},[s("div",Jo,[t.pluginIconSrc(c)?(l(),o("img",{key:0,class:"directory-card-icon",src:t.pluginIconSrc(c),alt:c.displayName,loading:"lazy"},null,8,Xo)):(l(),o("div",{key:1,class:"directory-card-fallback",style:cs(t.fallbackStyle(c))},i(c.displayName.charAt(0)),5)),s("div",Zo,[s("div",ei,[s("span",ti,i(c.displayName),1),c.installed&&!c.enabled?(l(),o("span",ai,i(t.disabledLabel),1)):c.installed?(l(),o("span",si,i(t.installedLabel),1)):p("",!0)]),s("span",li,i(c.developerName||c.marketplaceDisplayName||c.marketplaceName||t.pluginLabel),1)])]),c.description?(l(),o("p",oi,i(c.description),1)):p("",!0),s("div",ii,[c.category?(l(),o("span",ni,i(c.category),1)):p("",!0),(l(!0),o(U,null,B(c.capabilities.slice(0,2),y=>(l(),o("span",{key:y,class:"directory-chip"},i(y),1))),128))])],10,Yo))),128))])):(l(),o("div",qo," Plugin APIs unavailable in this Codex CLI. Update Codex CLI to use plugin catalog features. "))]))}}),ci={class:"skill-card-top"},di=["src","alt"],ui={key:1,class:"skill-card-avatar-fallback"},yi={class:"skill-card-info"},pi={class:"skill-card-header"},mi={class:"skill-card-name"},hi={key:0,class:"skill-card-badge-disabled"},vi={key:1,class:"skill-card-badge"},gi={key:0,class:"skill-card-owner"},bi=["title"],ki={key:0,class:"skill-card-desc"},fi={key:1,class:"skill-card-meta-row"},$i=be({__name:"SkillCard",props:{skill:{},showStatusBadge:{type:Boolean,default:!0},showBrowseAction:{type:Boolean,default:!0},showOwner:{type:Boolean,default:!0}},emits:["select"],setup(t){const F=t,{t:b}=ot(),A=_(()=>F.showStatusBadge!==!1),$=_(()=>F.showBrowseAction!==!1),u=_(()=>F.showOwner!==!1),c=_(()=>{const r=F.skill.path;return r?r.endsWith("/SKILL.md")?r.slice(0,-9):r:""});function y(){const r=c.value;r&&window.open(`/codex-local-browse${encodeURI(r)}`,"_blank","noopener,noreferrer")}const M=_(()=>{const r=F.skill.publishedAt;if(!r)return"";const G=new Date(r),z=Date.now()-r;return z<36e5?`${Math.floor(z/6e4)}${b("ago")}`:z<864e5?`${Math.floor(z/36e5)}${b("ago")}`:z<2592e6?`${Math.floor(z/864e5)}${b("ago")}`:G.toLocaleDateString("en-US",{month:"short",day:"numeric"})}),x=_(()=>{const r=[];return F.skill.installCountLabel&&r.push(F.skill.installCountLabel),M.value&&r.push(M.value),r});function H(r){const G=r.target;G.style.display="none"}return(r,G)=>(l(),o("button",{class:J(["skill-card",{"is-disabled":t.skill.installed&&t.skill.enabled===!1}]),type:"button",onClick:G[0]||(G[0]=q=>r.$emit("select",t.skill))},[s("div",ci,[t.skill.avatarUrl?(l(),o("img",{key:0,class:"skill-card-avatar",src:t.skill.avatarUrl,alt:t.skill.owner,loading:"lazy",onError:H},null,40,di)):(l(),o("div",ui,i(t.skill.owner.charAt(0)),1)),s("div",yi,[s("div",pi,[s("span",mi,i(t.skill.displayName||t.skill.name),1),A.value?(l(),o(U,{key:0},[t.skill.installed&&t.skill.enabled===!1?(l(),o("span",hi,i(n(b)("Disabled")),1)):t.skill.installed?(l(),o("span",vi,i(n(b)("Installed")),1)):p("",!0)],64)):p("",!0)]),u.value?(l(),o("span",gi,i(t.skill.owner),1)):p("",!0)]),$.value&&t.skill.installed&&c.value?(l(),o("button",{key:2,class:"skill-card-browse",type:"button",title:n(b)("Browse files"),onClick:Oe(y,["stop"])},[Re(ds,{class:"skill-card-browse-icon"})],8,bi)):p("",!0)]),t.skill.description?(l(),o("p",ki,i(t.skill.description),1)):p("",!0),x.value.length>0?(l(),o("div",fi,[(l(!0),o(U,null,B(x.value,q=>(l(),o("span",{key:q,class:"skill-card-meta"},i(q),1))),128))])):p("",!0)],2))}}),Zt=it($i,[["__scopeId","data-v-2dc2f3b0"]]),Ci={class:"sdm-panel"},wi={class:"sdm-header"},Si={class:"sdm-title-area"},_i=["src","alt"],Li={class:"sdm-title-col"},Ai={class:"sdm-title-row"},Pi={class:"sdm-title"},Ii={key:0,class:"sdm-badge-disabled"},Mi={class:"sdm-owner"},Fi=["aria-label"],Ei={class:"sdm-body"},Ti={key:0,class:"sdm-desc"},Ui={key:1,class:"sdm-readme-loading"},Ni=["innerHTML"],Di=["href"],xi={class:"sdm-footer"},Oi={class:"sdm-footer-actions"},Ri=["disabled"],Bi=["disabled"],Gi=["disabled"],Ki=["disabled"],ji=be({__name:"SkillDetailModal",props:{skill:{},visible:{type:Boolean},isInstalling:{type:Boolean},isUninstalling:{type:Boolean},isTrying:{type:Boolean}},emits:["close","install","uninstall","toggle-enabled","try"],setup(t,{emit:F}){const b=t,A=F,$=h(null),u=h(""),c=h(""),y=h(!1),{t:M}=ot(),x=_(()=>$.value??b.skill.enabled??!0),H=_(()=>b.isInstalling===!0||b.isUninstalling===!0),r=_(()=>u.value||b.skill.description),G=_(()=>{const I=b.skill.path;return I?I.endsWith("/SKILL.md")?I.slice(0,-9):I:""}),q=_(()=>{const I=c.value;if(!I)return"";const D=I.replace(/^---[\s\S]*?---\s*/,"");return Ks(z(D))});function z(I){return I.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/^### (.+)$/gm,"<h4>$1</h4>").replace(/^## (.+)$/gm,"<h3>$1</h3>").replace(/^# (.+)$/gm,"<h2>$1</h2>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/`([^`]+)`/g,"<code>$1</code>").replace(/^- (.+)$/gm,"<li>$1</li>").replace(/(<li>.*<\/li>\n?)+/g,"<ul>$&</ul>").replace(/\n{2,}/g,"<br/><br/>").replace(/\n/g,"<br/>")}async function te(){if(!(!b.skill.owner||!b.skill.name)){y.value=!0,u.value="",c.value="";try{const I=new URLSearchParams({owner:b.skill.owner,name:b.skill.name});b.skill.installed&&I.set("installed","true"),b.skill.path&&I.set("path",b.skill.path);const D=await fetch(`/codex-api/skills-hub/readme?${I}`);if(!D.ok)return;const K=await D.json();c.value=K.content??"",u.value=K.description??""}catch{}finally{y.value=!1}}}Ie(()=>b.visible,I=>{I&&($.value=null,u.value="",c.value="",te())});function E(){A("install",b.skill)}function C(){A("uninstall",b.skill)}function S(){const I=!x.value;$.value=I,A("toggle-enabled",b.skill,I)}function f(){b.isTrying||A("try",b.skill)}function V(){const I=G.value;I&&window.open(`/codex-local-browse${encodeURI(I)}`,"_blank","noopener,noreferrer")}return(I,D)=>(l(),re(st,{to:"body"},[t.visible?(l(),o("div",{key:0,class:"sdm-overlay",onClick:D[1]||(D[1]=Oe(K=>I.$emit("close"),["self"]))},[s("div",Ci,[s("div",wi,[s("div",Si,[t.skill.avatarUrl?(l(),o("img",{key:0,class:"sdm-avatar",src:t.skill.avatarUrl,alt:t.skill.owner,loading:"lazy"},null,8,_i)):p("",!0),s("div",Li,[s("div",Ai,[s("h3",Pi,i(t.skill.displayName||t.skill.name),1),t.skill.installed&&!x.value?(l(),o("span",Ii,i(n(M)("Disabled")),1)):p("",!0)]),s("span",Mi,i(t.skill.owner),1)])]),s("button",{class:"sdm-close",type:"button","aria-label":n(M)("Close"),onClick:D[0]||(D[0]=K=>I.$emit("close"))},[Re(us,{class:"sdm-close-icon"})],8,Fi)]),s("div",Ei,[r.value?(l(),o("p",Ti,i(r.value),1)):p("",!0),y.value?(l(),o("div",Ui,i(n(M)("Loading skill contents...")),1)):c.value?(l(),o("div",{key:2,class:"sdm-readme",innerHTML:q.value},null,8,Ni)):p("",!0),t.skill.url?(l(),o("a",{key:3,class:"sdm-link",href:t.skill.url,target:"_blank",rel:"noopener noreferrer"},i(n(M)("View on GitHub")),9,Di)):p("",!0)]),s("div",xi,[s("div",Oi,[t.skill.installed?(l(),o("button",{key:0,class:"sdm-btn sdm-btn-danger",type:"button",disabled:H.value,onClick:C},i(b.isUninstalling?n(M)("Uninstalling..."):n(M)("Uninstall")),9,Ri)):(l(),o("button",{key:1,class:"sdm-btn sdm-btn-primary",type:"button",disabled:H.value,onClick:E},i(b.isInstalling?n(M)("Installing..."):n(M)("Install")),9,Bi)),t.skill.installed?(l(),o("button",{key:2,class:"sdm-btn sdm-btn-secondary",type:"button",disabled:H.value,onClick:S},i(x.value?n(M)("Disable"):n(M)("Enable")),9,Gi)):p("",!0),t.skill.installed&&x.value?(l(),o("button",{key:3,class:"sdm-btn sdm-btn-primary",type:"button",disabled:H.value||b.isTrying,onClick:f},i(b.isTrying?"Starting...":"Try it!"),9,Ki)):p("",!0),t.skill.installed&&G.value?(l(),o("button",{key:4,class:"sdm-btn sdm-btn-secondary",type:"button",onClick:V},i(n(M)("Browse files")),1)):p("",!0)])])])])):p("",!0)]))}}),Hi=it(ji,[["__scopeId","data-v-318b9c96"]]),qi={apiKey:"AIzaSyAf0CIHBZ-wEQJ8CCUUWo1Wl9P7typ_ZPI",authDomain:"gptcall-416910.firebaseapp.com",projectId:"gptcall-416910",storageBucket:"gptcall-416910.appspot.com",messagingSenderId:"99275526699",appId:"1:99275526699:web:3b623e1e2996108b52106e"};let ht=null;function zi(){return ht||(ht=Promise.all([Wt(()=>import("./index.esm-Cxn_LBGD.js"),__vite__mapDeps([0,1])),Wt(()=>import("./index.esm-DYMAm9mq.js"),__vite__mapDeps([2,1]))])),ht}function Vi(t){const F=h(null),b=h(""),A=h(""),$=h(""),u=h({loggedIn:!1,githubUsername:"",repoOwner:"",repoName:"",configured:!1,startup:{inProgress:!1,mode:"idle",branch:"main",lastAction:"not-started",lastRunAtIso:"",lastSuccessAtIso:"",lastError:""}}),c=_(()=>$.value==="pull"),y=_(()=>$.value==="push"),M=_(()=>$.value==="startup-sync"),x=_(()=>$.value!=="");async function H(){try{const C=await fetch("/codex-api/skills-sync/status");if(!C.ok)return;const S=await C.json();S.data&&(u.value=S.data)}catch{}}async function r(){try{const C=await fetch("/codex-api/skills-sync/github/start-login",{method:"POST"}),S=await C.json();if(!C.ok||!S.data)throw new Error("Failed to start GitHub login");F.value=S.data;const f=30,V=Math.max((S.data.interval??5)*1e3,3e3);let I=!1;for(let D=0;D<f;D++){await new Promise(Z=>setTimeout(Z,V));const K=await fetch("/codex-api/skills-sync/github/complete-login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:S.data.device_code})}),Q=await K.json();if(!K.ok)throw new Error(Q.error||"Failed to complete GitHub login");if(Q.ok){I=!0;break}if(!Q.pending)throw new Error(Q.error||"Failed to complete GitHub login")}if(!I)throw new Error("GitHub login timed out. Please retry.");F.value=null,await H(),t.showToast("GitHub login successful")}catch(C){t.showToast(C instanceof Error?C.message:"Failed GitHub login","error")}}async function G(){try{const[C,S]=await zi(),{getApp:f,getApps:V,initializeApp:I}=C,{getAuth:D,GithubAuthProvider:K,signInWithPopup:Q}=S,Z=V().length>0?f():I(qi),me=D(Z),ae=new K;ae.addScope("repo");const ke=await Q(me,ae),se=K.credentialFromResult(ke),le=(se==null?void 0:se.accessToken)??"";if(!le)throw new Error("GitHub access token missing from Firebase login");const X=await fetch("/codex-api/skills-sync/github/token-login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:le})}),W=await X.json();if(!X.ok||!W.ok)throw new Error(W.error||"Failed to login with GitHub token");await H(),t.showToast("GitHub login successful")}catch(C){const S=C instanceof Error?C.message:"Failed Firebase GitHub login";t.showToast(S,"error")}}async function q(){A.value="",b.value="pull-started",$.value="pull";try{const C=await fetch("/codex-api/skills-sync/pull",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to pull synced skills");await t.onPulled(),b.value="pull-success",t.showToast(u.value.loggedIn?"Pulled skills from private sync repo":"Pulled skills from upstream repo")}catch(C){const S=C instanceof Error?C.message:"Failed to pull sync";A.value=S,b.value="pull-failed",t.showToast(S,"error")}finally{$.value=""}}async function z(){A.value="",b.value="push-started",$.value="push";try{const C=await fetch("/codex-api/skills-sync/push",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to push synced skills");b.value="push-success",t.showToast("Pushed skills to private sync repo")}catch(C){const S=C instanceof Error?C.message:"Failed to push sync";A.value=S,b.value="push-failed",t.showToast(S,"error")}finally{$.value=""}}async function te(){A.value="",b.value="startup-sync-started",$.value="startup-sync";try{const C=await fetch("/codex-api/skills-sync/startup-sync",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to run startup sync");await t.onPulled(),await H(),b.value="startup-sync-success",t.showToast("Startup sync completed")}catch(C){const S=C instanceof Error?C.message:"Failed startup sync";A.value=S,b.value="startup-sync-failed",t.showToast(S,"error")}finally{$.value=""}}async function E(){try{const C=await fetch("/codex-api/skills-sync/github/logout",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to logout GitHub");await H(),t.showToast("Logged out from GitHub")}catch(C){t.showToast(C instanceof Error?C.message:"Failed to logout GitHub","error")}}return{deviceLogin:F,isPullInFlight:c,isPushInFlight:y,isStartupSyncInFlight:M,isSyncActionInFlight:x,loadSyncStatus:H,logoutGithub:E,pullSkillsSync:q,pushSkillsSync:z,startupSkillsSync:te,startGithubFirebaseLogin:G,startGithubLogin:r,syncActionError:A,syncActionStatus:b,syncStatus:u}}const Qi={class:"skills-hub"},Wi={class:"skills-hub-header"},Yi={class:"skills-hub-title"},Ji={class:"skills-hub-subtitle"},Xi={class:"skills-sync-panel"},Zi={class:"skills-sync-header"},en=["href"],tn={key:1,class:"skills-sync-badge"},an={key:2,class:"skills-sync-badge"},sn={class:"skills-sync-meta"},ln={key:0,class:"skills-sync-error"},on=["href"],nn={key:1,class:"skills-sync-meta"},rn={key:2,class:"skills-sync-error"},cn=["href"],dn={key:3,class:"skills-sync-device"},un=["href"],yn={class:"skills-sync-actions"},pn=["disabled"],mn=["disabled"],hn=["disabled"],vn=["disabled"],gn={class:"skills-search-panel"},bn={class:"skills-search-header"},kn={class:"skills-search-copy"},fn={class:"skills-directory-link",href:"https://skills.anyclaw.store/",target:"_blank",rel:"noopener noreferrer"},$n=["placeholder","aria-label"],Cn=["disabled"],wn={key:0,class:"skills-hub-error"},Sn=["href"],_n={key:1,class:"skills-hub-section"},Ln={class:"skills-hub-section-title"},An={key:0,class:"skills-hub-grid"},Pn={key:2,class:"skills-hub-section"},In={class:"skills-hub-section-title"},Mn={key:0,class:"skills-hub-grid"},Fn={class:"skills-hub-section"},En={key:0,class:"skills-hub-loading"},Tn={key:1,class:"skills-hub-error"},Un=["href"],Nn={key:2,class:"skills-hub-empty"},Dn=be({__name:"SkillsHub",props:{tryInFlightKey:{}},emits:["skills-changed","try-item"],setup(t,{emit:F}){const b={name:"",owner:"",description:"",url:"",installed:!1},A=h([]),$=h([]),u=h(!1),c=h(!1),y=h(""),M=h(""),x=h(""),H=h(!0),r=h(!0),G=h(!1),q=h(b),z=h(null),te=h(""),E=h(!1),C=h(!1);let S=null;ta(()=>{S&&clearTimeout(S)});const{t:f}=ot(),{buildFeedbackMailto:V,feedbackMailtoBase:I,recordVisibleFailure:D}=hs(),K=I(),Q=t,Z=F,me=_(()=>{var g;return((g=z.value)==null?void 0:g.type)==="error"?"skills-hub-toast-error":"skills-hub-toast-success"}),ae=_(()=>`${q.value.owner}/${q.value.name}`),ke=_(()=>E.value&&te.value===ae.value),se=_(()=>C.value&&te.value===ae.value),le=_(()=>{if(!O.value.configured)return"";const g=O.value.repoOwner.trim(),v=O.value.repoName.trim();return!g||!v?"":`https://github.com/${encodeURIComponent(g)}/${encodeURIComponent(v)}`}),X=_(()=>A.value);function W(g,v="success"){z.value={text:g,type:v},S&&clearTimeout(S),S=setTimeout(()=>{z.value=null},3e3)}function he(g,v){D(v);const k=g.currentTarget;k instanceof HTMLAnchorElement&&(k.href=V())}function fe(g){if(A.value=g.installed??[],$.value.length>0){const v=new Map(A.value.map(k=>[k.name,k]));$.value=$.value.map(k=>{const R=v.get(k.name);return R?Me(k,R):k})}}function Me(g,v){return{...g,installed:!0,path:v.path,enabled:v.enabled}}function Be(g,v){return{...g,installed:!0,source:v.source,publishedAt:v.publishedAt}}async function ce(){u.value=!0,y.value="";try{const g=await fetch("/codex-api/skills-hub");if(!g.ok)throw new Error(`HTTP ${g.status}`);const v=await g.json();fe(v)}catch(g){y.value=g instanceof Error?g.message:f("Failed to load skills")}finally{u.value=!1}}function Fe(g){const v=g.installed?A.value.find(k=>k.name===g.name):void 0;q.value=v?Be(v,g):g,G.value=!0}async function Ge(){const g=M.value.trim();if(!(g.length<2)){c.value=!0,x.value="";try{const v=new URLSearchParams({q:g}),k=await fetch(`/codex-api/skills-hub/search?${v}`),R=await k.json();if(!k.ok)throw new Error(R.error||`HTTP ${k.status}`);const oe=new Map(A.value.map(ie=>[ie.name,ie]));$.value=(R.results??[]).map(ie=>{const ee=oe.get(ie.name);return ee?Me(ie,ee):ie}),r.value=!0,$.value.length===0&&W(f("No matching skills found."),"error")}catch(v){x.value=v instanceof Error?v.message:f("Failed to search skills")}finally{c.value=!1}}}async function Ke(g){te.value=`${g.owner}/${g.name}`,E.value=!0;try{const k=await(await fetch("/codex-api/skills-hub/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({owner:g.owner,name:g.name,source:g.source})})).json();if(!k.ok)throw new Error(k.error||f("Install failed"));if(!k.path)throw new Error(f("Install completed but no local skill path was returned"));await ce();const R=A.value.find(oe=>oe.name===g.name);if(!(R!=null&&R.path))throw new Error(f("Install completed but the local skill was not found after refresh"));q.value=Be(R,g),W(`${g.displayName||g.name} ${f("skill installed")}`),G.value=!1,Z("skills-changed")}catch(v){W(v instanceof Error?v.message:f("Failed to install skill"),"error")}finally{E.value=!1}}async function je(g){te.value=`${g.owner}/${g.name}`,C.value=!0;try{const k=await(await fetch("/codex-api/skills-hub/uninstall",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name,path:g.path})})).json();if(!k.ok)throw new Error(k.error||f("Uninstall failed"));A.value=A.value.filter(R=>R.name!==g.name),W(`${g.displayName||g.name} ${f("skill uninstalled")}`),G.value=!1,Z("skills-changed")}catch(v){W(v instanceof Error?v.message:f("Failed to uninstall skill"),"error")}finally{C.value=!1}}async function He(g,v){try{if(!(await fetch("/codex-api/rpc",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"skills/config/write",params:{path:g.path,enabled:v}})})).ok)throw new Error(f("Failed to update skill"));await fetch("/codex-api/skills-sync/push",{method:"POST"}),W(`${g.displayName||g.name} ${f("skill")} ${f(v?"enabled":"disabled")}`),await ce()}catch(k){W(k instanceof Error?k.message:f("Failed to update skill"),"error")}}function L(g){!g.installed||g.enabled===!1||Q.tryInFlightKey||(Z("try-item",{kind:"skill",name:g.name,displayName:g.displayName||g.name,skillPath:g.path}),G.value=!1)}function N(g){return`skill:${g.name}:${g.path??""}`}const{deviceLogin:$e,isPullInFlight:qe,isPushInFlight:Ee,isStartupSyncInFlight:P,isSyncActionInFlight:de,loadSyncStatus:ze,logoutGithub:Ce,pullSkillsSync:Te,pushSkillsSync:Ue,startupSkillsSync:Y,startGithubFirebaseLogin:Ne,startGithubLogin:ve,syncActionError:ue,syncActionStatus:we,syncStatus:O}=Vi({showToast:W,onPulled:async()=>{await ce(),Z("skills-changed")}}),Se=[_(()=>O.value.startup.lastError),ue,x,y];return aa(()=>{ce(),ze()}),Ie(Se,(g,v)=>{g.forEach((k,R)=>{if(k===v[R])return;const oe=k.trim();oe&&D(oe)})}),(g,v)=>(l(),o("div",Qi,[s("div",Wi,[s("h2",Yi,i(n(f)("Skills Hub")),1),s("p",Ji,i(n(f)("Manage installed skills on this machine")),1)]),s("div",Xi,[s("div",Zi,[s("strong",null,i(n(f)("Skills Sync (GitHub)")),1),n(O).configured&&le.value?(l(),o("a",{key:0,class:"skills-sync-badge skills-sync-badge-link",href:le.value,target:"_blank",rel:"noopener noreferrer"},i(n(f)("Connected"))+": "+i(n(O).repoOwner)+"/"+i(n(O).repoName),9,en)):n(O).loggedIn?(l(),o("span",tn,i(n(f)("Logged in as"))+" "+i(n(O).githubUsername),1)):(l(),o("span",an,i(n(f)("Not connected")),1))]),s("div",sn,[s("span",null,i(n(f)("Startup"))+": "+i(n(O).startup.mode),1),s("span",null,i(n(f)("Branch"))+": "+i(n(O).startup.branch),1),s("span",null,i(n(f)("Action"))+": "+i(n(O).startup.lastAction),1)]),n(O).startup.lastError?(l(),o("div",ln,[s("span",null,i(n(O).startup.lastError),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[0]||(v[0]=k=>he(k,n(O).startup.lastError))},i(n(f)("Send feedback")),9,on)])):p("",!0),n(we)?(l(),o("div",nn,[s("span",null,i(n(f)("Manual sync"))+": "+i(n(we)),1)])):p("",!0),n(ue)?(l(),o("div",rn,[s("span",null,i(n(ue)),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[1]||(v[1]=k=>he(k,n(ue)))},i(n(f)("Send feedback")),9,cn)])):p("",!0),n($e)?(l(),o("div",dn,[s("span",null,[lt(i(n(f)("Open"))+" ",1),s("a",{href:n($e).verification_uri,target:"_blank",rel:"noreferrer"},i(n(f)("GitHub device login")),9,un),lt(" "+i(n(f)("and enter code:")),1)]),s("code",null,i(n($e).user_code),1)])):p("",!0),s("div",yn,[n(O).loggedIn?p("",!0):(l(),o("button",{key:0,class:"skills-hub-sort",type:"button",onClick:v[2]||(v[2]=(...k)=>n(Ne)&&n(Ne)(...k))},i(n(f)("Login with GitHub")),1)),n(O).loggedIn?p("",!0):(l(),o("button",{key:1,class:"skills-hub-sort",type:"button",onClick:v[3]||(v[3]=(...k)=>n(ve)&&n(ve)(...k))},i(n(f)("Device Login")),1)),n(O).loggedIn?(l(),o("button",{key:2,class:"skills-hub-sort",type:"button",onClick:v[4]||(v[4]=(...k)=>n(Ce)&&n(Ce)(...k)),disabled:n(de)},i(n(f)("Logout GitHub")),9,pn)):p("",!0),s("button",{class:"skills-hub-sort",type:"button",onClick:v[5]||(v[5]=(...k)=>n(Y)&&n(Y)(...k)),disabled:n(de)},i(n(P)?n(f)("Syncing..."):n(f)("Startup Sync")),9,mn),s("button",{class:"skills-hub-sort",type:"button",onClick:v[6]||(v[6]=(...k)=>n(Te)&&n(Te)(...k)),disabled:n(de)},i(n(qe)?n(f)("Pulling..."):n(f)("Pull")),9,hn),n(O).loggedIn?(l(),o("button",{key:3,class:"skills-hub-sort",type:"button",onClick:v[7]||(v[7]=(...k)=>n(Ue)&&n(Ue)(...k)),disabled:!n(O).configured||n(de)},i(n(Ee)?n(f)("Pushing..."):n(f)("Push")),9,vn)):p("",!0)])]),z.value?(l(),o("div",{key:0,class:J(["skills-hub-toast",me.value])},i(z.value.text),3)):p("",!0),s("div",gn,[s("div",bn,[s("div",kn,[s("strong",null,i(n(f)("Find skills")),1),s("span",null,i(n(f)("Search the Skills registry with npx skills find.")),1)]),s("a",fn,i(n(f)("Skills directory")),1)]),s("form",{class:"skills-search-form",onSubmit:Oe(Ge,["prevent"])},[ys(s("input",{"onUpdate:modelValue":v[8]||(v[8]=k=>M.value=k),class:"skills-search-input",type:"search",placeholder:n(f)("Search skills..."),"aria-label":n(f)("Search skills")},null,8,$n),[[ps,M.value]]),s("button",{class:"skills-hub-sort",type:"submit",disabled:c.value||M.value.trim().length<2},i(c.value?n(f)("Searching..."):n(f)("Search")),9,Cn)],32),x.value?(l(),o("div",wn,[s("span",null,i(x.value),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[9]||(v[9]=k=>he(k,x.value))},i(n(f)("Send feedback")),9,Sn)])):p("",!0)]),$.value.length>0?(l(),o("div",_n,[s("button",{class:"skills-hub-section-toggle",type:"button",onClick:v[10]||(v[10]=k=>r.value=!r.value)},[s("span",Ln,i(n(f)("Search results ({count})",{count:$.value.length})),1),Re(Yt,{class:J(["skills-hub-section-chevron",{"is-open":r.value}])},null,8,["class"])]),r.value?(l(),o("div",An,[(l(!0),o(U,null,B($.value,k=>(l(),re(Zt,{key:k.source||`${k.owner}/${k.name}`,skill:k,"show-browse-action":!1,onSelect:R=>Fe(R)},null,8,["skill","onSelect"]))),128))])):p("",!0)])):p("",!0),ms(g.$slots,"before-installed",{},void 0),X.value.length>0?(l(),o("div",Pn,[s("button",{class:"skills-hub-section-toggle",type:"button",onClick:v[11]||(v[11]=k=>H.value=!H.value)},[s("span",In,i(n(f)("Installed skills ({count})",{count:X.value.length})),1),Re(Yt,{class:J(["skills-hub-section-chevron",{"is-open":H.value}])},null,8,["class"])]),H.value?(l(),o("div",Mn,[(l(!0),o(U,null,B(X.value,k=>(l(),re(Zt,{key:k.name,skill:k,"show-status-badge":!1,"show-owner":!1,onSelect:R=>Fe(R)},null,8,["skill","onSelect"]))),128))])):p("",!0)])):p("",!0),s("div",Fn,[u.value?(l(),o("div",En,i(n(f)("Loading skills...")),1)):y.value?(l(),o("div",Tn,[s("span",null,i(y.value),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[12]||(v[12]=k=>he(k,y.value))},i(n(f)("Send feedback")),9,Un)])):A.value.length===0?(l(),o("div",Nn,i(n(f)("No installed skills found.")),1)):p("",!0)]),Re(Hi,{skill:q.value,visible:G.value,"is-installing":ke.value,"is-uninstalling":se.value,"is-trying":Q.tryInFlightKey===N(q.value),onClose:v[13]||(v[13]=k=>G.value=!1),onInstall:Ke,onUninstall:je,onToggleEnabled:He,onTry:L},null,8,["skill","visible","is-installing","is-uninstalling","is-trying"])]))}}),xn=it(Dn,[["__scopeId","data-v-25bfcbd5"]]),On={class:"directory-section"},Rn={class:"skills-embedded-section"},Bn={class:"skills-embedded-title"},Gn={key:0,class:"skills-embedded-body"},Kn={key:0,class:"directory-empty"},jn={key:1,class:"directory-error"},Hn={key:2,class:"directory-loading"},qn={key:3,class:"directory-empty"},zn={key:4,class:"mcp-skill-grid"},Vn=["onClick"],Qn={class:"mcp-skill-card-top"},Wn={class:"mcp-skill-avatar-fallback"},Yn={class:"mcp-skill-info"},Jn={class:"mcp-skill-header"},Xn={class:"mcp-skill-name"},Zn={class:"mcp-skill-meta"},er={key:0,class:"directory-mcp-detail"},tr={key:0},ar={class:"directory-mini-list"},sr={key:1},lr={class:"directory-mini-list"},or=be({__name:"DirectorySkillsTab",props:{tryInFlightKey:{},supportsMcps:{type:Boolean},mcpError:{},isLoadingMcps:{type:Boolean},visibleMcpServers:{},isMcpSectionOpen:{type:Boolean},expandedMcpNames:{},formatMcpAuthStatus:{type:Function},mcpCardBadgeClass:{type:Function},toggleMcpSectionOpen:{type:Function},toggleMcpExpanded:{type:Function}},emits:["skills-changed","try-item"],setup(t,{emit:F}){const b=F;return(A,$)=>(l(),o("section",On,[Re(xn,{"try-in-flight-key":t.tryInFlightKey,onSkillsChanged:$[1]||($[1]=u=>b("skills-changed")),onTryItem:$[2]||($[2]=u=>b("try-item",u))},{"before-installed":vs(()=>[s("div",Rn,[s("button",{class:"skills-embedded-toggle",type:"button",onClick:$[0]||($[0]=(...u)=>t.toggleMcpSectionOpen&&t.toggleMcpSectionOpen(...u))},[s("span",Bn,"MCPs("+i(t.visibleMcpServers.length)+")",1),s("span",{class:J(["skills-embedded-chevron",{"is-open":t.isMcpSectionOpen}])},"›",2)]),t.isMcpSectionOpen?(l(),o("div",Gn,[t.supportsMcps?t.mcpError?(l(),o("div",jn,i(t.mcpError),1)):t.isLoadingMcps?(l(),o("div",Hn,"Loading MCP servers...")):t.visibleMcpServers.length===0?(l(),o("div",qn,"No MCP servers configured.")):(l(),o("div",zn,[(l(!0),o(U,null,B(t.visibleMcpServers,u=>(l(),o("article",{key:u.name},[s("button",{class:"mcp-skill-card skill-card",type:"button",onClick:c=>t.toggleMcpExpanded(u.name)},[s("div",Qn,[s("div",Wn,i(u.name.charAt(0)),1),s("div",Yn,[s("div",Jn,[s("span",Xn,i(u.name),1),s("span",{class:J(["mcp-skill-badge",t.mcpCardBadgeClass(u.authStatus)])},i(t.formatMcpAuthStatus(u.name)),3)]),$[3]||($[3]=s("span",{class:"mcp-skill-owner"},"mcp",-1))]),s("span",{class:J(["mcp-skill-chevron",{"is-open":t.expandedMcpNames.has(u.name)}])},"›",2)]),s("p",Zn,i(u.tools.length)+" tools · "+i(u.resources.length+u.resourceTemplates.length)+" resources",1),t.expandedMcpNames.has(u.name)?(l(),o("div",er,[u.tools.length>0?(l(),o("div",tr,[$[4]||($[4]=s("h3",{class:"directory-mini-heading"},"Tools",-1)),s("p",ar,i(u.tools.map(c=>c.title||c.name).join(", ")),1)])):p("",!0),u.resources.length>0||u.resourceTemplates.length>0?(l(),o("div",sr,[$[5]||($[5]=s("h3",{class:"directory-mini-heading"},"Resources",-1)),s("p",lr,i([...u.resources.map(c=>c.title||c.name||c.uri),...u.resourceTemplates.map(c=>c.title||c.name||c.uriTemplate)].join(", ")),1)])):p("",!0)])):p("",!0)],8,Vn)]))),128))])):(l(),o("div",Kn," MCP status APIs unavailable in this Codex CLI. Update Codex CLI to inspect MCP servers. "))])):p("",!0)])]),_:1},8,["try-in-flight-key"])]))}}),ir=it(or,[["__scopeId","data-v-f5178e67"]]),nr={class:"directory-hub"},rr={class:"directory-header"},cr={class:"directory-title"},dr={class:"directory-subtitle"},ur={class:"directory-header-actions"},yr=["disabled"],pr={class:"directory-tabs",role:"tablist","aria-label":"Directory sections"},mr=["aria-selected","onClick"],hr={class:"directory-modal"},vr={class:"directory-modal-header"},gr={class:"directory-card-top"},br=["src","alt"],kr={key:1,class:"directory-card-fallback"},fr={class:"directory-card-main"},$r={class:"directory-modal-title"},Cr={class:"directory-card-meta"},wr=["aria-label"],Sr={class:"directory-modal-body"},_r={key:0,class:"directory-error"},Lr={key:1,class:"directory-loading"},Ar={key:0,class:"directory-detail-description"},Pr={key:1,class:"directory-detail-block"},Ir={class:"directory-chip-row"},Mr={class:"directory-detail-grid"},Fr={key:0,class:"directory-detail-block"},Er={class:"directory-detail-heading"},Tr={key:0,class:"directory-auth-status is-warning"},Ur=["onClick"],Nr={key:1,class:"directory-detail-block"},Dr={class:"directory-detail-heading"},xr={class:"directory-mini-list"},Or={key:2,class:"directory-detail-block"},Rr=["disabled","onClick"],Br={key:2,class:"directory-screenshots"},Gr=["src"],Kr={key:3,class:"directory-auth-panel"},jr=["onClick"],Hr={class:"directory-modal-footer"},qr=["disabled"],zr=["disabled"],Vr={key:2,class:"directory-action",type:"button",disabled:""},Qr=["disabled"],Wr=["disabled"],Yr={class:"directory-modal directory-modal--share"},Jr={class:"directory-modal-header"},Xr={class:"directory-card-main"},Zr={class:"directory-modal-title"},ec={class:"directory-card-meta"},tc=["aria-label"],ac={class:"directory-modal-body"},sc={key:0,class:"directory-error"},lc={key:1,class:"directory-loading"},oc={key:0,class:"directory-empty"},ic={key:1,class:"directory-share-list"},nc={class:"directory-share-info"},rc={class:"directory-share-name"},cc=["href"],dc=["disabled","onClick"],uc=["disabled","onClick"],yc=["disabled"],pc={class:"directory-modal"},mc={class:"directory-modal-header"},hc={class:"directory-card-top"},vc=["src","alt"],gc={key:1,class:"directory-card-fallback composio-fallback"},bc={class:"directory-card-main"},kc={class:"directory-modal-title"},fc={class:"directory-card-meta"},$c=["aria-label"],Cc={class:"directory-modal-body"},wc={key:0,class:"directory-error"},Sc={key:1,class:"directory-loading"},_c={key:0,class:"directory-detail-description"},Lc={class:"directory-detail-grid"},Ac={class:"directory-detail-block"},Pc={class:"directory-chip-row"},Ic={class:"directory-chip"},Mc={key:0,class:"directory-chip"},Fc={key:1,class:"directory-chip"},Ec={key:2,class:"directory-chip"},Tc={class:"directory-detail-block"},Uc={key:0,class:"directory-mini-list"},Nc={key:1},Dc={class:"directory-card-meta"},xc={key:1,class:"directory-detail-block"},Oc={class:"directory-card-meta"},Rc={class:"directory-modal-footer"},Bc=["disabled"],Gc=["disabled"],Kc="/Users/igor/.codex/skills/shared_skills/composio-cli/SKILL.md",jc=50,ea=100,zc=be({__name:"DirectoryHub",props:{cwd:{},threadId:{},tryInFlightKey:{}},emits:["skills-changed","try-item"],setup(t,{expose:F,emit:b}){const A=[[/^gmail$/i,3e4],[/^google calendar$/i,29500],[/^outlook( email| calendar)?$/i,29e3],[/^google drive$/i,28500],[/^google docs$/i,28e3],[/^google sheets$/i,27500],[/^dropbox$/i,27e3],[/^box$/i,26500],[/^slack$/i,26e3],[/^notion$/i,25500],[/^canva$/i,25e3],[/^figma$/i,24500],[/^github$/i,24e3],[/^trello$/i,23500],[/^asana$/i,23e3],[/^basecamp$/i,22500],[/^clickup$/i,22e3],[/^linear$/i,21500],[/^gitlab( issues)?$/i,21e3],[/^jira$/i,20500],[/^zapier$/i,2e4],[/^hubspot$/i,19500],[/^salesforce$/i,19e3],[/^netlify$/i,18500],[/^vercel$/i,18e3],[/^(spotify|youtube|netflix|hulu|disney|booking|expedia|uber|airbnb)$/i,17500]],$=[[/(email|mail|inbox|calendar|event|availability|contact|message|chat)/i,450],[/(drive|document|docs|sheet|slide|file|storage|pdf|note|page)/i,380],[/(image|design|presentation|diagram|video|audio|photo|media|music)/i,320],[/(travel|flight|hotel|restaurant|recipe|food|shopping|delivery|map|weather)/i,260],[/(learn|education|study|language|health|fitness|finance|budget)/i,220],[/(task|project|issue|repository|deploy|database|crm|sales|support)/i,120]],u=[[/(computer use|github|gitlab|linear|slack|notion|browser|web|filesystem|terminal)/i,120],[/(calendar|email|drive|docs|design|deploy|project|issue|search|database)/i,55]],c=[[/(github|gitlab|linear|slack|notion|filesystem|browser|computer|web|postgres|sqlite|database)/i,120],[/(search|drive|docs|calendar|terminal|shell|deploy|cloud|memory)/i,55]],y=t,M=b,x=gs(),H=bs(),{t:r}=ot(),G=_(()=>[{id:"plugins",label:r("Plugins"),subtitle:r("Plugins make Codex work your way.")},{id:"apps",label:r("Apps"),subtitle:r("Connect Codex to external apps and services.")},{id:"composio",label:"Composio",subtitle:r("Browse Composio connectors, auth state, and ready-to-try integrations.")},{id:"skills",label:r("Skills"),subtitle:r("MCPs first, then installed skills and GitHub sync state.")}]),q=[{name:"Gmail",slug:"gmail",initial:"G",meta:"Inbox, drafts, attachments",description:"Find emails, summarize threads, draft replies, and pull attachment context into a chat.",chips:["Email","Search","Drafts"]},{name:"Google Calendar",slug:"google-calendar",initial:"C",meta:"Events and availability",description:"Check what is next, find open time, and turn follow-ups into calendar blocks.",chips:["Events","Availability","Reminders"]},{name:"Reddit",slug:"reddit",initial:"R",meta:"Posts, comments, communities",description:"Search communities, inspect posts, and prepare natural replies before posting.",chips:["Search","Comments","Posts"]},{name:"YouTube",slug:"youtube",initial:"Y",meta:"Videos, channels, comments",description:"Look up channel details, inspect video metadata, and help manage comment workflows.",chips:["Videos","Channels","Comments"]},{name:"Google Drive",slug:"google-drive",initial:"D",meta:"Files, docs, folders",description:"Find files, read shared docs, and bring Drive context into a Codex thread.",chips:["Files","Docs","Search"]},{name:"X",slug:"x",initial:"X",meta:"Posts, replies, profiles",description:"Research public posts, draft replies, and keep social workflows reviewable.",chips:["Posts","Replies","Profiles"]}];function z(e){return e==="plugins"||e==="apps"||e==="composio"||e==="skills"}function te(){return z(x.query.tab)?x.query.tab:"skills"}const E=h(te()),C=h(new Set),S=h(!1),f=h([]),V=h([]),I=h(null),D=h([]),K=h(null),Q=h(0),Z=h([]),me=h("popular"),ae=h("popular"),ke=h("popular"),se=h(""),le=h(""),X=h(""),W=h(!1),he=h(!1),fe=h(!1),Me=h(!1),Be=h(!1),ce=h(!1),Fe=h(!0),Ge=h(""),Ke=h(""),je=h(""),He=h(""),L=h(null),N=h(null),$e=h(!1),qe=h(!1),Ee=h(""),P=h(null),de=h(!1),ze=h(!1),Ce=h(""),Te=h(!1),Ue=h(!1),Y=h(!1),Ne=h(""),ve=h(""),ue=h([]),we=h(""),O=h(new Set),Se=h(null),g=h(""),v=h(""),k=h(!1),R=h([]),oe=h(!1),ie=h(!1),ee=h(!1),ye=h(""),_e=h("");let Ve=null,Qe=null;ta(()=>{Ve&&clearTimeout(Ve),Qe&&clearTimeout(Qe)});let nt=!1;const la=_(()=>G.value.find(e=>e.id===E.value)??G.value[0]),vt=_(()=>!S.value||["plugin/list","plugin/read","plugin/install","plugin/uninstall"].every(e=>C.value.has(e))),Je=_(()=>!S.value||C.value.has("app/list")),rt=_(()=>!S.value||C.value.has("mcpServerStatus/list")),gt=_(()=>C.value.has("config/mcpServer/reload")),bt=_(()=>C.value.has("mcpServer/oauth/login")),oa=_(()=>!S.value||["marketplace/add","marketplace/remove","marketplace/upgrade"].every(e=>C.value.has(e))),ia=_(()=>!S.value||["plugin/share/save","plugin/share/list","plugin/share/delete"].every(e=>C.value.has(e))),Le=_(()=>(y.tryInFlightKey??"").length>0),kt=_(()=>{var e,a,d;return((e=N.value)==null?void 0:e.description)||((a=N.value)==null?void 0:a.summary.longDescription)||((d=N.value)==null?void 0:d.summary.description)||""}),ft=_(()=>{var a;const e=(a=N.value)==null?void 0:a.summary;return e?[...e.screenshotUrls,...e.screenshots.map(et)].filter(Boolean):[]}),ct=_(()=>{var d;const e=((d=N.value)==null?void 0:d.apps)??[];if(e.length===0)return!1;const a=new Set;for(const w of V.value)a.add(w.id.trim().toLowerCase()),a.add(St(w.name));return e.some(w=>{const j=w.id.trim().toLowerCase(),ge=St(w.name),Pe=j.length>0&&a.has(j),at=ge.length>0&&a.has(ge);return!Pe&&!at})}),na=_(()=>{var e,a;return((e=L.value)==null?void 0:e.installPolicy)==="NOT_AVAILABLE"||(((a=N.value)==null?void 0:a.apps.some(d=>wt(d)))??!1)}),ra=_(()=>wa(Pa(_a(f.value,se.value),me.value),me.value,se.value)),ca=_(()=>{const e=new Map;for(const a of f.value){if(!a.marketplaceName)continue;const d=a.marketplaceName;e.has(d)||e.set(d,{name:a.marketplaceName,displayName:a.marketplaceDisplayName||a.marketplaceName,path:a.marketplacePath})}return[...e.values()].sort((a,d)=>a.displayName.localeCompare(d.displayName))}),da=_(()=>Sa(Ia(La(V.value,le.value),ae.value),ae.value,le.value)),ua=_(()=>zs(Aa(D.value,X.value),ke.value,X.value)),ya=_(()=>{const e=We(X.value);return e?q.filter(a=>Xe([a.name,a.slug,a.meta,a.description,...a.chips],e)):q}),pa=_(()=>Ma(Z.value)),$t=_(()=>K.value!==null),ma=_(()=>new Map(Z.value.map(e=>[e.name,e]))),ha=_(()=>{const e=I.value;return e&&[e.email||e.defaultOrgName,e.defaultOrgId?`org ${e.defaultOrgId}`:"",e.baseUrl||""].filter(Boolean).join(" · ")||r("Composio CLI shares the login and connections from this machine.")});function We(e){return e.trim().toLowerCase()}function va(e){return We(e).replace(/\s+\((synced|legacy)\)\s*$/iu,"").replace(/\s+\(.*?\)\s*$/u,"").replace(/[-_]+/gu," ").replace(/\s+plugin$/iu,"").replace(/\s+/gu," ").trim()}function Ct(...e){const a=new Set;for(const d of e){const w=va(d);w&&(a.add(w),a.add(w.replace(/\s+/gu,"")))}return Array.from(a)}function ga(e){return!e.isAccessible&&e.installUrl.trim().length===0}function ba(e){const a=e.id.trim();if(a){const w=V.value.find(j=>j.id===a);if(w)return w}const d=Ct(e.name);return V.value.find(w=>Ct(w.name).some(j=>d.includes(j)))??null}function wt(e){const a=ba(e);return a?ga(a):e.needsAuth&&e.installUrl.trim().length===0}function Xe(e,a){const d=We(a);return d?e.some(w=>w==null?void 0:w.toLowerCase().includes(d)):!0}function Ze(e,a){return a.reduce((d,[w,j])=>d+(w.test(e)?j:0),0)}function dt(e){return e.replace(/\s+\((synced|legacy)\)\s*$/iu,"").replace(/\s+\(.*?\)\s*$/u,"").trim()}function St(e){return dt(e).toLowerCase()}function ka(e){return e==="DEFAULT_OAI_CATALOG"?r("OpenAI catalog"):e==="ECOSYSTEM_DIRECTORY"?r("Ecosystem directory"):e?e.replace(/_/gu," ").toLowerCase().replace(/\b\w/gu,a=>a.toUpperCase()):""}function fa(e){return e.developer||ka(e.distributionChannel)||r("App")}function ut(e){var a;return((a=ma.value.get(e))==null?void 0:a.authStatus)??"unknown"}function _t(e){const a=ut(e);return r(a==="oAuth"?"Logged in":a==="bearerToken"?"Bearer token":a==="notLoggedIn"?"Login required":a==="unsupported"?"Auth unsupported":"Status unknown")}function $a(e){const a=ut(e);return a==="oAuth"||a==="bearerToken"?"is-ok":a==="notLoggedIn"?"is-warning":"is-muted"}function Ca(e){return e==="oAuth"||e==="bearerToken"?"mcp-skill-badge-ok":e==="notLoggedIn"?"mcp-skill-badge-warning":"mcp-skill-badge-muted"}function Lt(e){return bt.value&&ut(e)==="notLoggedIn"}function wa(e,a,d){return a==="popular"&&We(d).length===0?e.slice(0,ea):e}function Sa(e,a,d){if(a!=="popular"||We(d).length>0)return e;const w=new Set,j=[];for(const ge of e){const Pe=dt(ge.name).toLowerCase();if(!w.has(Pe)&&(w.add(Pe),j.push(ge),j.length>=ea))break}return j}function _a(e,a){return e.filter(d=>Xe([d.displayName,d.name,d.description,d.developerName,d.category,d.marketplaceDisplayName,...d.capabilities],a))}function La(e,a){return e.filter(d=>Xe([d.name,d.description,d.developer,d.category,d.distributionChannel,...d.pluginDisplayNames],a))}function Aa(e,a){return e.filter(d=>Xe([d.name,d.slug,d.description,...d.authModes,...d.connectionStatuses],a))}function At(e){return(e.installed?500:0)+(e.enabled?40:0)+(e.developerName.toLowerCase().includes("openai")?140:0)+(e.sourceType==="local"?80:0)+e.capabilities.length*12+Ze(`${e.displayName} ${e.name} ${e.description} ${e.category}`,u)}function Pt(e){const a=dt(e.name);return(e.isAccessible?1e4:0)+Ze(a,A)+(e.pluginDisplayNames.length>0?260:0)+(e.distributionChannel==="DEFAULT_OAI_CATALOG"?120:0)+(e.isEnabled?40:0)+(e.installUrl?20:0)+Ze(`${e.name} ${e.description} ${e.category} ${e.pluginDisplayNames.join(" ")}`,$)-e.catalogRank*.001}function It(e){return(e.authStatus==="oAuth"?180:0)+(e.authStatus==="bearerToken"?140:0)+Math.min(e.tools.length,50)*6+Math.min(e.resources.length+e.resourceTemplates.length,30)*3+Ze(e.name,c)}function Pa(e,a){return a==="name"?[...e].sort((d,w)=>d.displayName.localeCompare(w.displayName)):a==="date"?[...e]:[...e].sort((d,w)=>At(w)-At(d)||d.displayName.localeCompare(w.displayName))}function Ia(e,a){return a==="name"?[...e].sort((d,w)=>d.name.localeCompare(w.name)):a==="date"?[...e].sort((d,w)=>d.catalogRank-w.catalogRank):[...e].sort((d,w)=>Pt(w)-Pt(d)||d.name.localeCompare(w.name))}function Ma(e,a){return[...e].sort((d,w)=>It(w)-It(d)||d.name.localeCompare(w.name))}function T(e,a="success"){Se.value={text:e,type:a},Ve&&clearTimeout(Ve),Ve=setTimeout(()=>{Se.value=null},3e3)}function et(e){return e?e.startsWith("connectors://")?`/codex-api/connector-logo?src=${encodeURIComponent(e)}`:/^https?:\/\//i.test(e)||e.startsWith("data:")?e:e.startsWith("/")?`/codex-local-image?path=${encodeURIComponent(e)}`:"":""}function yt(e){return e?e.logoUrl||et(e.logoPath)||e.composerIconUrl||et(e.composerIconPath):""}function Fa(e){return et(e.logoUrlDark||e.logoUrl)}function Mt(e){return e.activeCount>0?`${e.activeCount} ${r("connected")} ${e.activeCount===1?r("account"):r("accounts")}`:e.isNoAuth?r("No auth required"):e.connectionStatuses.length>0?e.connectionStatuses.join(", "):e.authModes.join(", ")||r("Connection required")}function Ea(e){return e.isNoAuth||e.activeCount>0}function pt(e){return e.isNoAuth?"":e.activeCount>0?r("Manage"):e.totalConnections>0?r("Reconnect"):r("Connect")}function Ta(e){const a=e.trim().toUpperCase();return a==="ACTIVE"?r("Active"):a==="EXPIRED"?r("Expired"):a==="FAILED"?r("Failed"):a==="INITIATED"?r("Pending"):a||r("Unknown")}function Ua(e){const a=e.trim().toUpperCase();return a==="ACTIVE"?"is-ok":a==="INITIATED"?"is-warning":a==="EXPIRED"||a==="FAILED"?"is-error":"is-muted"}function Na(e){return`app:${e.id}:`}function Da(e){Le.value||M("try-item",{kind:"app",name:e.id,displayName:e.name})}function xa(e){return`plugin:${e.name}:`}function Ft(e){return`composio:${e}:`}function Oa(e){Le.value||M("try-item",{kind:"plugin",name:e.name,displayName:e.displayName})}function Et(e){return Ea(e)}function Ra(e,a=[]){const d=a.find(j=>j.status==="ACTIVE"&&!j.isDisabled),w=d!=null&&d.wordId?` If there are multiple accounts, prefer \`${d.wordId}\`.`:"";return`Use the Composio CLI skill with the ${e.name} connector (${e.slug}). Start by listing what it can do here, mention the current connection status, and suggest one safe command I can run now.${w}`}function Tt(e,a=[]){Le.value||M("try-item",{kind:"composio",name:e.slug,displayName:e.name,prompt:Ra(e,a),attachedSkills:[{name:"composio-cli",path:Kc}]})}function ne(e){const a=e.trim();/^https?:\/\//i.test(a)&&window.location.assign(a)}function Ba(e){const a=e.find(d=>d.needsAuth&&d.installUrl.trim().length>0);return a?(ne(a.installUrl),!0):!1}function Ga(e){return e.brandColor?{backgroundColor:e.brandColor,color:"#fff"}:{}}async function Ka(){try{C.value=new Set(await ks())}catch{C.value=new Set}finally{S.value=!0}}async function pe(){var e;if(vt.value){W.value=!0,Ge.value="";try{const a=(e=y.cwd)==null?void 0:e.trim(),[d]=await Promise.all([fs(a?[a]:void 0),Je.value?De():Promise.resolve()]);f.value=d}catch(a){Ge.value=a instanceof Error?a.message:"Failed to load plugins"}finally{W.value=!1}}}async function ja(){const e=g.value.trim();if(e){k.value=!0,v.value="add";try{await $s(e),g.value="",T("Marketplace added"),await pe()}catch(a){T(a instanceof Error?a.message:"Failed to add marketplace","error")}finally{k.value=!1,v.value=""}}}async function Ha(e){k.value=!0,v.value=`remove:${e}`;try{await Cs(e),T("Marketplace removed"),await pe()}catch(a){T(a instanceof Error?a.message:"Failed to remove marketplace","error")}finally{k.value=!1,v.value=""}}async function qa(){k.value=!0,v.value="upgrade";try{const e=await ws();e.errors.length>0?T(e.errors.join("; "),"error"):T(`Upgraded ${e.upgradedRoots.length||e.selectedMarketplaces.length||"all"} marketplace${e.upgradedRoots.length+e.selectedMarketplaces.length===1?"":"s"}`),await pe()}catch(e){T(e instanceof Error?e.message:"Failed to upgrade marketplaces","error")}finally{k.value=!1,v.value=""}}async function De(){var e;if(Je.value){he.value=!0,Ke.value="";try{V.value=await Ss(((e=y.threadId)==null?void 0:e.trim())||void 0)}catch(a){Ke.value=a instanceof Error?a.message:"Failed to load apps"}finally{he.value=!1}}}async function Ae(e=!1){if(fe.value){nt=!0;return}fe.value=!0,je.value="";try{const a=await _s();if(I.value=a,!a.available||!a.authenticated){D.value=[],K.value=null,Q.value=0;return}const d=e?K.value:null,w=await Ls(X.value,d,jc);D.value=e?[...D.value,...w.data]:w.data,K.value=w.nextCursor,Q.value=w.total}catch(a){je.value=a instanceof Error?a.message:"Failed to load Composio connectors",D.value=[],K.value=null,Q.value=0}finally{fe.value=!1,nt&&(nt=!1,Ae())}}async function za(){!$t.value||fe.value||await Ae(!0)}async function tt(){if(rt.value){Me.value=!0,He.value="";try{Z.value=await Jt()}catch(e){He.value=e instanceof Error?e.message:"Failed to load MCP servers"}finally{Me.value=!1}}}async function Ut(){var e;if(!(!rt.value||!((e=N.value)!=null&&e.mcpServers.length)))try{Z.value=await Jt()}catch{}}function Nt(e=!1){E.value==="plugins"&&pe(),E.value==="apps"&&De(),E.value==="composio"&&Ae(),E.value==="skills"&&(e&&gt.value?Ht():tt())}function Va(e){if(e==="app/list/updated"){De();return}(e==="mcpServer/startupStatus/updated"||e==="mcpServer/oauthLogin/completed")&&tt()}F({refreshFromNotification:Va});async function Qa(){ce.value=!0;try{E.value==="plugins"?await pe():E.value==="apps"?await De():E.value==="composio"?await Ae():E.value==="skills"&&gt.value?await Ht():E.value==="skills"&&await tt()}finally{ce.value=!1}}async function Dt(e){L.value=e,N.value=null,Ee.value="",ue.value=[],$e.value=!0,qe.value=!0;try{N.value=await As(e),L.value=N.value.summary,Je.value&&V.value.length===0&&await De(),await Ut()}catch(a){Ee.value=a instanceof Error?a.message:"Failed to load plugin"}finally{qe.value=!1}}async function xt(e){if(!bt.value)return!1;we.value=e;try{const a=await Ps(e);return a.authorizationUrl?(ne(a.authorizationUrl),!0):(T(r("No login URL returned for {name}",{name:e}),"error"),!1)}catch(a){return T(a instanceof Error?a.message:r("Failed to start login for {name}",{name:e}),"error"),!1}finally{we.value=""}}async function Wa(e){await Ut();const a=e.mcpServers.find(d=>Lt(d));a&&await xt(a)}function mt(){$e.value=!1}function Ot(){const e=L.value;return e?e.marketplacePath?`${e.marketplacePath.replace(/[\\/]+$/,"")}/${e.name}`:e.sourceUrl||"":""}async function Rt(){_e.value="",oe.value=!0,ie.value=!0;try{R.value=await Is()}catch(e){_e.value=e instanceof Error?e.message:"Failed to load plugin shares"}finally{ie.value=!1}}async function Ya(){const e=Ot();if(e){ee.value=!0,ye.value="save";try{const a=await Ms(e);T(a.shareUrl?"Plugin shared":"Plugin shared (no URL returned)"),await Rt()}catch(a){_e.value=a instanceof Error?a.message:"Failed to share plugin"}finally{ee.value=!1,ye.value=""}}}async function Ja(e){ee.value=!0,ye.value=`delete:${e}`;try{await Fs(e),R.value=R.value.filter(a=>a.remotePluginId!==e),T("Share removed")}catch(a){_e.value=a instanceof Error?a.message:"Failed to remove share"}finally{ee.value=!1,ye.value=""}}async function Xa(e){ee.value=!0,ye.value=`checkout:${e}`;try{await Es(e),T("Plugin checked out")}catch(a){_e.value=a instanceof Error?a.message:"Failed to checkout plugin"}finally{ee.value=!1,ye.value=""}}function Bt(){oe.value=!1}async function Gt(e){de.value=!0,ze.value=!0,Ce.value="",P.value=null;try{P.value=await Ts(e)}catch(a){Ce.value=a instanceof Error?a.message:"Failed to load Composio connector"}finally{ze.value=!1}}function Kt(){de.value=!1}async function Za(e){var a;ve.value=e.slug;try{const d=await Gs(e.slug);if(!d.redirectUrl){T(r("No login URL returned for {name}",{name:e.name}),"error");return}ne(d.redirectUrl),T(r("Opened {name} authorization",{name:e.name})),await Ae(),de.value&&((a=P.value)==null?void 0:a.connector.slug)===e.slug&&await Gt(e.slug)}catch(d){T(d instanceof Error?d.message:r("Failed to connect {name}",{name:e.name}),"error")}finally{ve.value=""}}async function jt(e){var a;if(e.activeCount>0&&((a=I.value)!=null&&a.webUrl)){ne(I.value.webUrl);return}await Za(e)}async function es(){Ue.value=!0;const e=window.open("about:blank","_blank");e&&(e.opener=null);try{const a=await Us();a.loginUrl&&e?e.location.href=a.loginUrl:a.loginUrl?ne(a.loginUrl):e==null||e.close(),T("Composio CLI login started")}catch(a){e==null||e.close(),T(a instanceof Error?a.message:"Failed to start Composio login","error")}finally{Ue.value=!1}}async function ts(){Te.value=!0;try{await Ns(),T("Composio CLI installed"),await Ae()}catch(e){T(e instanceof Error?e.message:"Failed to install Composio CLI","error")}finally{Te.value=!1}}async function as(){if(L.value&&!ct.value){Y.value=!0;try{const e=await Ds(L.value);ue.value=e.appsNeedingAuth,T(`${L.value.displayName} ${r("plugin installed")}`);const a=Ba(e.appsNeedingAuth);await pe();const d=f.value.find(w=>{var j;return w.id===((j=L.value)==null?void 0:j.id)});d&&(await Dt(d),!a&&N.value&&await Wa(N.value))}catch(e){T(e instanceof Error?e.message:"Failed to install plugin","error")}finally{Y.value=!1}}}async function ss(){if(L.value){Y.value=!0;try{const e=L.value.displayName;await xs(L.value.id),T(`${e} ${r("plugin uninstalled")}`),mt(),await pe()}catch(e){T(e instanceof Error?e.message:"Failed to uninstall plugin","error")}finally{Y.value=!1}}}async function ls(){if(L.value){Y.value=!0;try{const e=!L.value.enabled;await Os(L.value.id,e),L.value={...L.value,enabled:e},N.value&&(N.value={...N.value,summary:{...N.value.summary,enabled:e}}),T(`${L.value.displayName} ${r("plugin")} ${r(e?"enabled":"disabled")}`),await pe()}catch(e){T(e instanceof Error?e.message:"Failed to update plugin","error")}finally{Y.value=!1}}}async function os(e){Ne.value=e.id;try{const a=!e.isEnabled;await Rs(e.id,a),V.value=V.value.map(d=>d.id===e.id?{...d,isEnabled:a}:d),T(`${e.name} ${r("app")} ${r(a?"enabled":"disabled")}`)}catch(a){T(a instanceof Error?a.message:"Failed to update app","error")}finally{Ne.value=""}}async function Ht(){Be.value=!0;try{await Bs(),await tt(),T("MCP servers reloaded")}catch(e){T(e instanceof Error?e.message:"Failed to reload MCP servers","error")}finally{Be.value=!1}}function is(e){const a=new Set(O.value);a.has(e)?a.delete(e):a.add(e),O.value=a}return Ie(E,e=>{x.name==="skills"&&x.query.tab!==e&&H.replace({name:"skills",query:{...x.query,tab:e}}),Nt()}),Ie(()=>x.query.tab,()=>{if(x.name!=="skills")return;const e=te();E.value!==e&&(E.value=e)}),Ie(X,()=>{E.value==="composio"&&(D.value=[],K.value=null,Q.value=0,Qe&&clearTimeout(Qe),Qe=setTimeout(()=>{Ae()},250))}),Ie(()=>y.cwd,()=>{E.value==="plugins"&&pe()}),Ie(()=>y.threadId,()=>{(E.value==="apps"||E.value==="plugins")&&De()}),aa(async()=>{await Ka(),Nt()}),(e,a)=>{var d,w,j,ge,Pe,at,qt,zt,Vt,Qt;return l(),o("div",nr,[s("div",rr,[s("div",null,[s("h2",cr,i(n(r)("Skills"))+" & "+i(n(r)("Apps")),1),s("p",dr,i(la.value.subtitle),1)]),s("div",ur,[s("button",{class:"directory-refresh",type:"button",disabled:ce.value,onClick:Qa},i(ce.value?"Refreshing...":"Refresh"),9,yr)])]),s("div",pr,[(l(!0),o(U,null,B(G.value,m=>(l(),o("button",{key:m.id,class:J(["directory-tab",{"is-active":E.value===m.id}]),type:"button",role:"tab","aria-selected":E.value===m.id,onClick:Ye=>E.value=m.id},i(m.label),11,mr))),128))]),Se.value?(l(),o("div",{key:0,class:J(["directory-toast",{"is-error":Se.value.type==="error"}])},i(Se.value.text),3)):p("",!0),E.value==="plugins"?(l(),re(ri,{key:1,plugins:ra.value,"search-query":se.value,"sort-mode":me.value,"supports-plugins":vt.value,"supports-marketplace":oa.value,error:Ge.value,"is-loading":W.value,marketplaces:ca.value,"marketplace-source-url":g.value,"marketplace-action-name":v.value,"is-marketplace-action-in-flight":k.value,"plugin-icon-src":yt,"fallback-style":Ga,"open-plugin-detail":Dt,"add-marketplace":ja,"remove-marketplace":Ha,"upgrade-all-marketplaces":qa,"disabled-label":n(r)("Disabled"),"installed-label":n(r)("Installed"),"plugin-label":n(r)("Plugin"),"upgrade-all-label":n(r)("Upgrade all"),"upgrading-label":n(r)("Upgrading..."),"removing-label":n(r)("Removing..."),"remove-label":n(r)("Remove"),"adding-label":n(r)("Adding..."),"add-label":n(r)("Add"),"onUpdate:searchQuery":a[0]||(a[0]=m=>se.value=m),"onUpdate:sortMode":a[1]||(a[1]=m=>me.value=m),"onUpdate:marketplaceSourceUrl":a[2]||(a[2]=m=>g.value=m)},null,8,["plugins","search-query","sort-mode","supports-plugins","supports-marketplace","error","is-loading","marketplaces","marketplace-source-url","marketplace-action-name","is-marketplace-action-in-flight","disabled-label","installed-label","plugin-label","upgrade-all-label","upgrading-label","removing-label","remove-label","adding-label","add-label"])):E.value==="apps"?(l(),re(kl,{key:2,apps:da.value,"search-query":le.value,"sort-mode":ae.value,"supports-apps":Je.value,error:Ke.value,"is-loading":he.value,"action-id":Ne.value,"try-in-flight-key":y.tryInFlightKey,"is-try-action-in-flight":Le.value,"app-logo-src":Fa,"app-meta-label":fa,"app-try-key":Na,"toggle-app":os,"open-external-url":ne,"try-app":Da,"disabled-label":n(r)("Disabled"),"connected-label":n(r)("Connected"),"enable-label":n(r)("Enable"),"disable-label":n(r)("Disable"),"manage-label":n(r)("Manage"),"login-label":n(r)("Login"),"try-label":n(r)("Try it!"),"starting-label":n(r)("Starting..."),"onUpdate:searchQuery":a[3]||(a[3]=m=>le.value=m),"onUpdate:sortMode":a[4]||(a[4]=m=>ae.value=m)},null,8,["apps","search-query","sort-mode","supports-apps","error","is-loading","action-id","try-in-flight-key","is-try-action-in-flight","disabled-label","connected-label","enable-label","disable-label","manage-label","login-label","try-label","starting-label"])):E.value==="composio"?(l(),re(Po,{key:3,"composio-status":I.value,"search-query":X.value,"sort-mode":ke.value,error:je.value,"is-loading-composio":fe.value,"is-installing-composio":Te.value,"is-starting-composio-login":Ue.value,"visible-composio-connectors":ua.value,"visible-composio-preview-connectors":ya.value,"workspace-summary":ha.value,"connector-count":D.value.length,total:Q.value,"has-more-composio-connectors":$t.value,"action-slug":ve.value,"is-try-action-in-flight":Le.value,"try-in-flight-key":y.tryInFlightKey,"composio-meta-label":Mt,"composio-primary-action-label":pt,"can-try-composio":Et,"composio-try-key":Ft,"open-composio-detail":Gt,"run-composio-primary-action":jt,"try-composio":Tt,"install-composio-cli":ts,"start-composio-cli-login":es,"load-more-composio":za,"open-external-url":ne,"workspace-label":n(r)("Composio workspace"),"connected-label":n(r)("Connected"),"authenticated-label":n(r)("Authenticated"),"no-auth-label":n(r)("No auth"),"preview-label":n(r)("Preview"),"open-dashboard-label":n(r)("Open dashboard"),"details-label":n(r)("Details"),"install-label":n(r)("Install Composio"),"installing-label":n(r)("Installing..."),"login-label":n(r)("Login to Composio"),"opening-label":n(r)("Opening..."),"starting-label":n(r)("Starting..."),"try-label":n(r)("Try it!"),"load-more-label":n(r)("Load more"),"loading-label":n(r)("Loading..."),"onUpdate:searchQuery":a[5]||(a[5]=m=>X.value=m),"onUpdate:sortMode":a[6]||(a[6]=m=>ke.value=m)},null,8,["composio-status","search-query","sort-mode","error","is-loading-composio","is-installing-composio","is-starting-composio-login","visible-composio-connectors","visible-composio-preview-connectors","workspace-summary","connector-count","total","has-more-composio-connectors","action-slug","is-try-action-in-flight","try-in-flight-key","workspace-label","connected-label","authenticated-label","no-auth-label","preview-label","open-dashboard-label","details-label","install-label","installing-label","login-label","opening-label","starting-label","try-label","load-more-label","loading-label"])):E.value==="skills"?(l(),re(ir,{key:4,"try-in-flight-key":y.tryInFlightKey,"supports-mcps":rt.value,"mcp-error":He.value,"is-loading-mcps":Me.value,"visible-mcp-servers":pa.value,"is-mcp-section-open":Fe.value,"expanded-mcp-names":O.value,"format-mcp-auth-status":_t,"mcp-card-badge-class":Ca,"toggle-mcp-section-open":()=>{Fe.value=!Fe.value},"toggle-mcp-expanded":is,onSkillsChanged:a[7]||(a[7]=m=>M("skills-changed")),onTryItem:a[8]||(a[8]=m=>M("try-item",m))},null,8,["try-in-flight-key","supports-mcps","mcp-error","is-loading-mcps","visible-mcp-servers","is-mcp-section-open","expanded-mcp-names","toggle-mcp-section-open"])):p("",!0),(l(),re(st,{to:"body"},[$e.value?(l(),o("div",{key:0,class:"directory-modal-overlay",onClick:Oe(mt,["self"])},[s("article",hr,[s("div",vr,[s("div",gr,[L.value&&yt(L.value)?(l(),o("img",{key:0,class:"directory-card-icon",src:yt(L.value),alt:L.value.displayName,loading:"lazy"},null,8,br)):(l(),o("div",kr,i((d=L.value)==null?void 0:d.displayName.charAt(0)),1)),s("div",fr,[s("h3",$r,i(((w=L.value)==null?void 0:w.displayName)||n(r)("Plugin")),1),s("span",Cr,i(((j=L.value)==null?void 0:j.developerName)||((ge=L.value)==null?void 0:ge.marketplaceDisplayName)||((Pe=L.value)==null?void 0:Pe.marketplaceName)),1)])]),s("button",{class:"directory-modal-close",type:"button","aria-label":n(r)("Close plugin detail"),onClick:mt},i(n(r)("Close")),9,wr)]),s("div",Sr,[Ee.value?(l(),o("div",_r,i(Ee.value),1)):qe.value?(l(),o("div",Lr,"Loading plugin...")):N.value?(l(),o(U,{key:2},[kt.value?(l(),o("p",Ar,i(kt.value),1)):p("",!0),N.value.summary.capabilities.length>0?(l(),o("div",Pr,[a[13]||(a[13]=s("h4",{class:"directory-detail-heading"},"Capabilities",-1)),s("div",Ir,[(l(!0),o(U,null,B(N.value.summary.capabilities,m=>(l(),o("span",{key:m,class:"directory-chip"},i(m),1))),128))])])):p("",!0),s("div",Mr,[N.value.apps.length>0?(l(),o("div",Fr,[s("h4",Er,i(n(r)("Apps")),1),(l(!0),o(U,null,B(N.value.apps,m=>(l(),o("div",{key:m.id,class:"directory-include-row"},[s("span",null,i(m.name),1),wt(m)?(l(),o("span",Tr,"GPT Plus account required")):m.installUrl?(l(),o("button",{key:1,type:"button",onClick:Ye=>ne(m.installUrl)},i(m.needsAuth?"Login":"Manage"),9,Ur)):p("",!0)]))),128))])):p("",!0),N.value.skills.length>0?(l(),o("div",Nr,[s("h4",Dr,i(n(r)("Skills")),1),s("p",xr,i(N.value.skills.map(m=>m.displayName||m.name).join(", ")),1)])):p("",!0),N.value.mcpServers.length>0?(l(),o("div",Or,[a[14]||(a[14]=s("h4",{class:"directory-detail-heading"},"MCP servers",-1)),(l(!0),o(U,null,B(N.value.mcpServers,m=>(l(),o("div",{key:m,class:"directory-include-row"},[s("span",null,[lt(i(m)+" ",1),s("span",{class:J(["directory-auth-status",$a(m)])},i(_t(m)),3)]),Lt(m)?(l(),o("button",{key:0,type:"button",disabled:we.value===m,onClick:Ye=>xt(m)},i(we.value===m?"Opening...":"Authenticate"),9,Rr)):p("",!0)]))),128))])):p("",!0)]),ft.value.length>0?(l(),o("div",Br,[(l(!0),o(U,null,B(ft.value,m=>(l(),o("img",{key:m,src:m,alt:"",loading:"lazy"},null,8,Gr))),128))])):p("",!0),ue.value.length>0?(l(),o("div",Kr,[s("strong",null,i(n(r)("Apps needing auth")),1),(l(!0),o(U,null,B(ue.value,m=>(l(),o("div",{key:m.id,class:"directory-include-row"},[s("span",null,i(m.name),1),m.installUrl?(l(),o("button",{key:0,type:"button",onClick:Ye=>ne(m.installUrl)},i(n(r)("Login")),9,jr)):p("",!0)]))),128))])):p("",!0)],64)):p("",!0)]),s("div",Hr,[L.value&&L.value.installed?(l(),o("button",{key:0,class:"directory-action danger",type:"button",disabled:Y.value,onClick:ss},i(Y.value?"Uninstalling...":"Uninstall"),9,qr)):L.value&&!na.value?(l(),o("button",{key:1,class:"directory-action primary",type:"button",disabled:Y.value||L.value.installPolicy==="NOT_AVAILABLE"||ct.value,onClick:as},i(ct.value?"ChatGPT Plus":Y.value?"Installing...":"Install"),9,zr)):L.value?(l(),o("button",Vr," GPT Plus account required ")):p("",!0),L.value&&L.value.installed?(l(),o("button",{key:3,class:"directory-action",type:"button",disabled:Y.value,onClick:ls},i(L.value.enabled?"Disable":"Enable"),9,Qr)):p("",!0),L.value&&L.value.installed&&L.value.enabled?(l(),o("button",{key:4,class:"directory-action primary",type:"button",disabled:Y.value||Le.value,onClick:a[9]||(a[9]=m=>Oa(L.value))},i(y.tryInFlightKey===xa(L.value)?"Starting...":"Try it!"),9,Wr)):p("",!0),ia.value&&L.value&&L.value.installed?(l(),o("button",{key:5,class:"directory-action",type:"button",onClick:Rt},i(n(r)("Share")),1)):p("",!0)])])])):p("",!0)])),(l(),re(st,{to:"body"},[oe.value?(l(),o("div",{key:0,class:"directory-modal-overlay",onClick:Oe(Bt,["self"])},[s("article",Yr,[s("div",Jr,[s("div",Xr,[s("h3",Zr,i(n(r)("Plugin shares")),1),s("span",ec,i(((at=L.value)==null?void 0:at.displayName)||n(r)("Plugin")),1)]),s("button",{class:"directory-modal-close",type:"button","aria-label":n(r)("Close plugin shares"),onClick:Bt},i(n(r)("Close")),9,tc)]),s("div",ac,[_e.value?(l(),o("div",sc,i(_e.value),1)):ie.value?(l(),o("div",lc,"Loading shares...")):(l(),o(U,{key:2},[R.value.length===0?(l(),o("p",oc,"No shares yet. Share this plugin to make it available on other devices.")):(l(),o("div",ic,[(l(!0),o(U,null,B(R.value,m=>(l(),o("div",{key:m.remotePluginId,class:"directory-share-row"},[s("div",nc,[s("span",rc,i(m.pluginName),1),m.shareUrl?(l(),o("a",{key:0,class:"directory-share-link",href:m.shareUrl,target:"_blank",rel:"noreferrer"},i(m.shareUrl),9,cc)):p("",!0)]),s("button",{class:"directory-share-checkout",type:"button",disabled:ee.value,onClick:Ye=>Xa(m.remotePluginId)},i(ye.value===`checkout:${m.remotePluginId}`?n(r)("Checking out..."):n(r)("Checkout")),9,dc),s("button",{class:"directory-share-delete",type:"button",disabled:ee.value,onClick:Ye=>Ja(m.remotePluginId)},i(ye.value===`delete:${m.remotePluginId}`?n(r)("Removing..."):n(r)("Remove")),9,uc)]))),128))])),s("button",{class:"directory-action primary",type:"button",disabled:ee.value||!Ot(),onClick:Ya},i(ye.value==="save"?n(r)("Sharing..."):n(r)("Share this plugin")),9,yc)],64))])])])):p("",!0)])),(l(),re(st,{to:"body"},[de.value?(l(),o("div",{key:0,class:"directory-modal-overlay",onClick:Oe(Kt,["self"])},[s("article",pc,[s("div",mc,[s("div",hc,[(qt=P.value)!=null&&qt.connector.logoUrl?(l(),o("img",{key:0,class:"directory-card-icon",src:P.value.connector.logoUrl,alt:P.value.connector.name,loading:"lazy"},null,8,vc)):(l(),o("div",gc,i((zt=P.value)==null?void 0:zt.connector.name.charAt(0)),1)),s("div",bc,[s("h3",kc,i(((Vt=P.value)==null?void 0:Vt.connector.name)||"Composio"),1),s("span",fc,i(P.value?Mt(P.value.connector):n(r)("Connector")),1)])]),s("button",{class:"directory-modal-close",type:"button","aria-label":n(r)("Close Composio detail"),onClick:Kt},i(n(r)("Close")),9,$c)]),s("div",Cc,[Ce.value?(l(),o("div",wc,i(Ce.value),1)):ze.value?(l(),o("div",Sc,"Loading connector...")):P.value?(l(),o(U,{key:2},[P.value.connector.description?(l(),o("p",_c,i(P.value.connector.description),1)):p("",!0),s("div",Lc,[s("div",Ac,[a[15]||(a[15]=s("h4",{class:"directory-detail-heading"},"Overview",-1)),s("div",Pc,[s("span",Ic,i(P.value.connector.toolsCount)+" tools",1),P.value.connector.triggersCount>0?(l(),o("span",Mc,i(P.value.connector.triggersCount)+" triggers",1)):p("",!0),P.value.connector.latestVersion?(l(),o("span",Fc,"v"+i(P.value.connector.latestVersion),1)):p("",!0),P.value.connector.authModes.length>0?(l(),o("span",Ec,i(P.value.connector.authModes.join(", ")),1)):p("",!0)])]),s("div",Tc,[a[16]||(a[16]=s("h4",{class:"directory-detail-heading"},"Connections",-1)),P.value.connections.length===0?(l(),o("div",Uc," No linked accounts yet. ")):(l(),o("div",Nc,[(l(!0),o(U,null,B(P.value.connections,m=>(l(),o("div",{key:m.id,class:"directory-include-row"},[s("span",null,[lt(i(m.alias||m.wordId||m.id)+" ",1),s("span",{class:J(["directory-auth-status",Ua(m.status)])},i(Ta(m.status)),3)]),s("span",Dc,i(m.authScheme||"Auth"),1)]))),128))]))])]),P.value.tools.length>0?(l(),o("div",xc,[a[17]||(a[17]=s("h4",{class:"directory-detail-heading"},"Useful tools",-1)),(l(!0),o(U,null,B(P.value.tools.slice(0,8),m=>(l(),o("div",{key:m.slug,class:"directory-include-row"},[s("span",null,i(m.name||m.slug),1),s("span",Oc,i(m.slug),1)]))),128))])):p("",!0)],64)):p("",!0)]),s("div",Rc,[P.value?(l(),o("button",{key:0,class:"directory-action-link",type:"button",onClick:a[10]||(a[10]=m=>ne(P.value.dashboardUrl))}," Open dashboard ")):p("",!0),P.value&&pt(P.value.connector)?(l(),o("button",{key:1,class:"directory-action",type:"button",disabled:ve.value===P.value.connector.slug,onClick:a[11]||(a[11]=m=>jt(P.value.connector))},i(ve.value===((Qt=P.value)==null?void 0:Qt.connector.slug)?"Opening...":pt(P.value.connector)),9,Bc)):p("",!0),P.value&&Et(P.value.connector)?(l(),o("button",{key:2,class:"directory-action primary",type:"button",disabled:Le.value,onClick:a[12]||(a[12]=m=>Tt(P.value.connector,P.value.connections))},i(y.tryInFlightKey===Ft(P.value.connector.slug)?"Starting...":"Try it!"),9,Gc)):p("",!0)])])])):p("",!0)]))])}}});export{zc as default};
2
+ import{e as be,f as l,i as o,j as s,F as U,l as B,n as J,t as i,k as p,$ as ns,a0 as rs,y as cs,u as n,w as Oe,p as Re,a1 as ds,v as ot,c as _,_ as it,x as Ie,h as re,T as st,I as us,r as h,G as Wt,o as ta,O as aa,m as lt,a2 as ys,a3 as ps,D as Yt,B as ms,z as hs,s as vs,a4 as gs,a5 as bs,a6 as ks,a7 as fs,a8 as $s,a9 as Cs,aa as ws,ab as Ss,ac as _s,ad as Ls,ae as As,af as Ps,ag as Is,ah as Ms,ai as Fs,aj as Es,ak as Ts,al as Us,am as Ns,an as Ds,ao as xs,ap as Os,aq as Rs,ar as Bs,as as Jt,at as Gs}from"./index-BJ-YiA9y.js";import{s as Ks}from"./sanitizeHtml-Bd3No2dT.js";const js=[[/(gmail|google calendar|google docs|google sheets|google drive|github|slack|notion|linear|outlook|supabase)/i,140],[/(email|calendar|document|sheet|drive|repo|issue|message|project|database|crm|deploy)/i,50]];function sa(t){return t.trim().toLowerCase()}function Hs(t,F){return F.reduce((b,[A,$])=>b+(A.test(t)?$:0),0)}function Xt(t){return t.activeCount*1e3+(t.isNoAuth?300:0)+t.toolsCount*3+t.triggersCount*4+Hs(`${t.name} ${t.slug} ${t.description}`,js)}function qs(t,F){const b=sa(F);if(!b)return 0;const A=t.name.toLowerCase(),$=t.slug.toLowerCase();return A===b||$===b?1e6:A.replace(/\s+/gu,"")===b.replace(/\s+/gu,"")?9e5:A.startsWith(b)||$.startsWith(b)?8e5:A.includes(b)||$.includes(b)?7e5:0}function xe(t){return t.activeCount>0?0:t.totalConnections>0?1:t.isNoAuth?2:3}function zs(t,F,b=""){const A=sa(b),$=u=>qs(u,A);return F==="name"?[...t].sort((u,c)=>$(c)-$(u)||xe(u)-xe(c)||u.name.localeCompare(c.name)):F==="date"?[...t].sort((u,c)=>$(c)-$(u)||xe(u)-xe(c)||u.name.localeCompare(c.name)):[...t].sort((u,c)=>$(c)-$(u)||xe(u)-xe(c)||Xt(c)-Xt(u)||u.name.localeCompare(c.name))}const Vs={class:"directory-section"},Qs={class:"directory-toolbar"},Ws=["value"],Ys={class:"directory-sort-group",role:"group","aria-label":"Sort apps"},Js=["onClick"],Xs={key:0,class:"directory-empty"},Zs={key:1,class:"directory-error"},el={key:2,class:"directory-loading"},tl={key:3,class:"directory-empty"},al={key:4,class:"directory-grid"},sl={class:"directory-card-top"},ll=["src","alt"],ol={key:1,class:"directory-card-fallback"},il={class:"directory-card-main"},nl={class:"directory-card-title-row"},rl={class:"directory-card-title"},cl={key:0,class:"directory-badge is-muted"},dl={key:1,class:"directory-badge"},ul={class:"directory-card-meta"},yl={key:0,class:"directory-card-description"},pl={class:"directory-chip-row"},ml={key:0,class:"directory-chip"},hl={class:"directory-card-actions"},vl=["disabled","onClick"],gl=["onClick"],bl=["disabled","onClick"],kl=be({__name:"DirectoryAppsTab",props:{apps:{},searchQuery:{},sortMode:{},supportsApps:{type:Boolean},error:{},isLoading:{type:Boolean},actionId:{},tryInFlightKey:{},isTryActionInFlight:{type:Boolean},appLogoSrc:{type:Function},appMetaLabel:{type:Function},appTryKey:{type:Function},toggleApp:{type:Function},openExternalUrl:{type:Function},tryApp:{type:Function},disabledLabel:{},connectedLabel:{},enableLabel:{},disableLabel:{},manageLabel:{},loginLabel:{},tryLabel:{},startingLabel:{}},emits:["update:search-query","update:sort-mode"],setup(t,{emit:F}){const b=F,A=[{id:"popular",label:"Popular"},{id:"name",label:"A-Z"},{id:"date",label:"Date"}];return($,u)=>(l(),o("section",Vs,[s("div",Qs,[s("input",{value:t.searchQuery,class:"directory-search",type:"search",placeholder:"Search apps...","aria-label":"Search apps",onInput:u[0]||(u[0]=c=>b("update:search-query",c.target.value))},null,40,Ws),s("div",Ys,[(l(),o(U,null,B(A,c=>s("button",{key:c.id,class:J(["directory-sort-button",{"is-active":t.sortMode===c.id}]),type:"button",onClick:y=>b("update:sort-mode",c.id)},i(c.label),11,Js)),64))])]),t.supportsApps?t.error?(l(),o("div",Zs,i(t.error),1)):t.isLoading?(l(),o("div",el,"Loading apps...")):t.apps.length===0?(l(),o("div",tl,"No apps found.")):(l(),o("div",al,[(l(!0),o(U,null,B(t.apps,c=>(l(),o("article",{key:c.id,class:"directory-card"},[s("div",sl,[t.appLogoSrc(c)?(l(),o("img",{key:0,class:"directory-card-icon",src:t.appLogoSrc(c),alt:c.name,loading:"lazy"},null,8,ll)):(l(),o("div",ol,i(c.name.charAt(0)),1)),s("div",il,[s("div",nl,[s("span",rl,i(c.name),1),c.isEnabled?c.isAccessible?(l(),o("span",dl,i(t.connectedLabel),1)):p("",!0):(l(),o("span",cl,i(t.disabledLabel),1))]),s("span",ul,i(t.appMetaLabel(c)),1)])]),c.description?(l(),o("p",yl,i(c.description),1)):p("",!0),s("div",pl,[c.category?(l(),o("span",ml,i(c.category),1)):p("",!0),(l(!0),o(U,null,B(c.pluginDisplayNames.slice(0,2),y=>(l(),o("span",{key:y,class:"directory-chip"},i(y),1))),128))]),s("div",hl,[s("button",{class:"directory-action",type:"button",disabled:t.actionId===c.id,onClick:y=>t.toggleApp(c)},i(c.isEnabled?t.disableLabel:t.enableLabel),9,vl),c.installUrl?(l(),o("button",{key:0,class:"directory-action-link",type:"button",onClick:y=>t.openExternalUrl(c.installUrl)},i(c.isAccessible?t.manageLabel:t.loginLabel),9,gl)):p("",!0),c.isAccessible&&c.isEnabled?(l(),o("button",{key:1,class:"directory-action",type:"button",disabled:t.isTryActionInFlight,onClick:y=>t.tryApp(c)},i(t.tryInFlightKey===t.appTryKey(c)?t.startingLabel:t.tryLabel),9,bl)):p("",!0)])]))),128))])):(l(),o("div",Xs," Apps APIs unavailable in this Codex CLI. Update Codex CLI to manage apps. "))]))}}),fl={class:"directory-section"},$l={class:"directory-toolbar"},Cl=["value"],wl={class:"directory-sort-group",role:"group","aria-label":"Sort Composio connectors"},Sl=["onClick"],_l={key:0,class:"directory-error"},Ll={key:1,class:"directory-loading"},Al={key:2,class:"directory-empty"},Pl={class:"directory-empty-copy"},Il={class:"directory-card-actions"},Ml=["disabled"],Fl={key:3,class:"composio-preview"},El={class:"composio-preview-hero"},Tl={class:"composio-preview-actions"},Ul=["disabled"],Nl={class:"composio-preview-grid"},Dl={class:"directory-card-top"},xl={class:"directory-card-fallback composio-fallback"},Ol={class:"directory-card-main"},Rl={class:"directory-card-title-row"},Bl={class:"directory-card-title"},Gl={class:"directory-badge is-muted"},Kl={class:"directory-card-meta"},jl={class:"directory-card-description"},Hl={class:"directory-chip-row"},ql={key:4,class:"directory-section composio-section"},zl={class:"directory-card directory-card-wide composio-status-card"},Vl={class:"directory-card-top"},Ql={class:"directory-card-main"},Wl={class:"directory-card-title-row"},Yl={class:"directory-card-title"},Jl={class:"directory-badge"},Xl={class:"directory-card-meta"},Zl={class:"directory-card-description"},eo={class:"directory-chip-row"},to={key:0,class:"directory-chip"},ao={key:1,class:"directory-chip"},so={key:2,class:"directory-chip"},lo={class:"directory-card-actions"},oo={key:0,class:"directory-empty"},io={key:1,class:"directory-grid"},no={class:"directory-card-top"},ro=["src","alt"],co={key:1,class:"directory-card-fallback composio-fallback"},uo={class:"directory-card-main"},yo={class:"directory-card-title-row"},po={class:"directory-card-title"},mo={key:0,class:"directory-badge"},ho={key:1,class:"directory-badge"},vo={class:"directory-card-meta"},go={key:0,class:"directory-card-description"},bo={class:"directory-chip-row"},ko={class:"directory-chip"},fo={key:0,class:"directory-chip"},$o={key:1,class:"directory-chip"},Co={class:"directory-card-actions"},wo=["onClick"],So=["disabled","onClick"],_o=["disabled","onClick"],Lo={key:2,class:"directory-section-actions"},Ao=["disabled"],Po=be({__name:"DirectoryComposioTab",props:{composioStatus:{},searchQuery:{},sortMode:{},error:{},isLoadingComposio:{type:Boolean},isInstallingComposio:{type:Boolean},isStartingComposioLogin:{type:Boolean},visibleComposioConnectors:{},visibleComposioPreviewConnectors:{},workspaceSummary:{},connectorCount:{},total:{},hasMoreComposioConnectors:{type:Boolean},actionSlug:{},isTryActionInFlight:{type:Boolean},tryInFlightKey:{},composioMetaLabel:{type:Function},composioPrimaryActionLabel:{type:Function},canTryComposio:{type:Function},composioTryKey:{type:Function},openComposioDetail:{type:Function},runComposioPrimaryAction:{type:Function},tryComposio:{type:Function},installComposioCli:{type:Function},startComposioCliLogin:{type:Function},loadMoreComposio:{type:Function},openExternalUrl:{type:Function},workspaceLabel:{},connectedLabel:{},authenticatedLabel:{},noAuthLabel:{},previewLabel:{},openDashboardLabel:{},detailsLabel:{},installLabel:{},installingLabel:{},loginLabel:{},openingLabel:{},startingLabel:{},tryLabel:{},loadMoreLabel:{},loadingLabel:{}},emits:["update:search-query","update:sort-mode"],setup(t,{emit:F}){const b=F,A=[{id:"popular",label:"Popular"},{id:"name",label:"A-Z"},{id:"date",label:"Date"}];return($,u)=>{var c;return l(),o("section",fl,[s("div",$l,[s("input",{value:t.searchQuery,class:"directory-search",type:"search",placeholder:"Search Composio connectors...","aria-label":"Search Composio connectors",onInput:u[0]||(u[0]=y=>b("update:search-query",y.target.value))},null,40,Cl),s("div",wl,[(l(),o(U,null,B(A,y=>s("button",{key:y.id,class:J(["directory-sort-button",{"is-active":t.sortMode===y.id}]),type:"button",onClick:M=>b("update:sort-mode",y.id)},i(y.label),11,Sl)),64))])]),t.error?(l(),o("div",_l,i(t.error),1)):t.isLoadingComposio?(l(),o("div",Ll,"Loading Composio connectors...")):(c=t.composioStatus)!=null&&c.available?t.composioStatus.authenticated?(l(),o("div",ql,[s("article",zl,[s("div",Vl,[u[8]||(u[8]=s("div",{class:"directory-card-fallback composio-fallback"},"C",-1)),s("div",Ql,[s("div",Wl,[s("span",Yl,i(t.workspaceLabel),1),s("span",Jl,i(t.connectedLabel),1)]),s("span",Xl,i(t.composioStatus.email||t.composioStatus.defaultOrgName||t.authenticatedLabel),1)])]),s("p",Zl,i(t.workspaceSummary),1),s("div",eo,[t.composioStatus.defaultOrgName?(l(),o("span",to,i(t.composioStatus.defaultOrgName),1)):p("",!0),t.composioStatus.cliVersion?(l(),o("span",ao,"CLI "+i(t.composioStatus.cliVersion),1)):p("",!0),t.connectorCount?(l(),o("span",so," Showing "+i(t.connectorCount)+i(t.total?` / ${t.total}`:"")+" connectors ",1)):p("",!0)]),s("div",lo,[s("button",{class:"directory-action-link",type:"button",onClick:u[4]||(u[4]=y=>t.openExternalUrl(t.composioStatus.webUrl))},i(t.openDashboardLabel),1)])]),t.visibleComposioConnectors.length===0?(l(),o("div",oo,"No Composio connectors found.")):(l(),o("div",io,[(l(!0),o(U,null,B(t.visibleComposioConnectors,y=>(l(),o("article",{key:y.slug,class:"directory-card"},[s("div",no,[y.logoUrl?(l(),o("img",{key:0,class:"directory-card-icon",src:y.logoUrl,alt:y.name,loading:"lazy"},null,8,ro)):(l(),o("div",co,i(y.name.charAt(0)),1)),s("div",uo,[s("div",yo,[s("span",po,i(y.name),1),y.activeCount>0?(l(),o("span",mo,i(t.connectedLabel),1)):y.isNoAuth?(l(),o("span",ho,i(t.noAuthLabel),1)):p("",!0)]),s("span",vo,i(t.composioMetaLabel(y)),1)])]),y.description?(l(),o("p",go,i(y.description),1)):p("",!0),s("div",bo,[s("span",ko,i(y.toolsCount)+" tools",1),y.triggersCount>0?(l(),o("span",fo,i(y.triggersCount)+" triggers",1)):p("",!0),y.authModes.length>0?(l(),o("span",$o,i(y.authModes.join(", ")),1)):p("",!0)]),s("div",Co,[s("button",{class:"directory-action",type:"button",onClick:M=>t.openComposioDetail(y.slug)},i(t.detailsLabel),9,wo),t.composioPrimaryActionLabel(y)?(l(),o("button",{key:0,class:"directory-action-link",type:"button",disabled:t.actionSlug===y.slug,onClick:M=>t.runComposioPrimaryAction(y)},i(t.actionSlug===y.slug?t.openingLabel:t.composioPrimaryActionLabel(y)),9,So)):p("",!0),t.canTryComposio(y)?(l(),o("button",{key:1,class:"directory-action primary",type:"button",disabled:t.isTryActionInFlight,onClick:M=>t.tryComposio(y)},i(t.tryInFlightKey===t.composioTryKey(y.slug)?t.startingLabel:t.tryLabel),9,_o)):p("",!0)])]))),128))])),t.hasMoreComposioConnectors?(l(),o("div",Lo,[s("button",{class:"directory-action",type:"button",disabled:t.isLoadingComposio,onClick:u[5]||(u[5]=(...y)=>t.loadMoreComposio&&t.loadMoreComposio(...y))},i(t.isLoadingComposio?t.loadingLabel:t.loadMoreLabel),9,Ao)])):p("",!0)])):(l(),o("div",Fl,[s("article",El,[u[7]||(u[7]=ns('<div class="composio-preview-copy"><div class="directory-card-fallback composio-fallback">C</div><div><p class="composio-preview-kicker">Connector catalog preview</p><h3 class="composio-preview-title">Connect everyday apps like Gmail, Calendar, Reddit, YouTube, and Drive.</h3><p class="composio-preview-text"> Composio is installed locally. Login to browse the live catalog, connect your accounts, and try simple actions from this machine. </p></div></div>',1)),s("div",Tl,[s("button",{class:"directory-action primary",type:"button",disabled:t.isStartingComposioLogin,onClick:u[2]||(u[2]=(...y)=>t.startComposioCliLogin&&t.startComposioCliLogin(...y))},i(t.isStartingComposioLogin?t.openingLabel:t.loginLabel),9,Ul),s("button",{class:"directory-action-link",type:"button",onClick:u[3]||(u[3]=y=>t.openExternalUrl(t.composioStatus.webUrl||"https://dashboard.composio.dev/"))},i(t.openDashboardLabel),1)])]),s("div",Nl,[(l(!0),o(U,null,B(t.visibleComposioPreviewConnectors,y=>(l(),o("article",{key:y.slug,class:"directory-card composio-preview-card"},[s("div",Dl,[s("div",xl,i(y.initial),1),s("div",Ol,[s("div",Rl,[s("span",Bl,i(y.name),1),s("span",Gl,i(t.previewLabel),1)]),s("span",Kl,i(y.meta),1)])]),s("p",jl,i(y.description),1),s("div",Hl,[(l(!0),o(U,null,B(y.chips,M=>(l(),o("span",{key:M,class:"directory-chip"},i(M),1))),128))])]))),128))])])):(l(),o("div",Al,[s("div",Pl,[u[6]||(u[6]=s("p",{class:"directory-empty-text"},"Composio CLI is not installed in this environment.",-1)),s("div",Il,[s("button",{class:"directory-action primary",type:"button",disabled:t.isInstallingComposio,onClick:u[1]||(u[1]=(...y)=>t.installComposioCli&&t.installComposioCli(...y))},i(t.isInstallingComposio?t.installingLabel:t.installLabel),9,Ml)])])]))])}}}),Io={class:"directory-section"},Mo={class:"directory-toolbar"},Fo=["value"],Eo={class:"directory-sort-group",role:"group","aria-label":"Sort plugins"},To=["onClick"],Uo={key:0,class:"directory-marketplace"},No={class:"directory-marketplace-header"},Do=["disabled"],xo={key:0,class:"directory-marketplace-empty"},Oo={key:1,class:"directory-marketplace-list"},Ro={class:"directory-marketplace-name"},Bo={key:0,class:"directory-marketplace-path"},Go=["disabled","onClick"],Ko={class:"directory-marketplace-add"},jo=["value"],Ho=["disabled"],qo={key:1,class:"directory-empty"},zo={key:2,class:"directory-error"},Vo={key:3,class:"directory-loading"},Qo={key:4,class:"directory-empty"},Wo={key:5,class:"directory-grid"},Yo=["onClick"],Jo={class:"directory-card-top"},Xo=["src","alt"],Zo={class:"directory-card-main"},ei={class:"directory-card-title-row"},ti={class:"directory-card-title"},ai={key:0,class:"directory-badge is-muted"},si={key:1,class:"directory-badge"},li={class:"directory-card-meta"},oi={key:0,class:"directory-card-description"},ii={class:"directory-chip-row"},ni={key:0,class:"directory-chip"},ri=be({__name:"DirectoryPluginsTab",props:{plugins:{},searchQuery:{},sortMode:{},supportsPlugins:{type:Boolean},supportsMarketplace:{type:Boolean},error:{},isLoading:{type:Boolean},marketplaces:{},marketplaceSourceUrl:{},marketplaceActionName:{},isMarketplaceActionInFlight:{type:Boolean},pluginIconSrc:{type:Function},fallbackStyle:{type:Function},openPluginDetail:{type:Function},addMarketplace:{type:Function},removeMarketplace:{type:Function},upgradeAllMarketplaces:{type:Function},disabledLabel:{},installedLabel:{},pluginLabel:{},upgradeAllLabel:{},upgradingLabel:{},removingLabel:{},removeLabel:{},addingLabel:{},addLabel:{}},emits:["update:search-query","update:sort-mode","update:marketplace-source-url"],setup(t,{emit:F}){const b=F,A=[{id:"popular",label:"Popular"},{id:"name",label:"A-Z"},{id:"date",label:"Date"}];return($,u)=>(l(),o("section",Io,[s("div",Mo,[s("input",{value:t.searchQuery,class:"directory-search",type:"search",placeholder:"Search plugins...","aria-label":"Search plugins",onInput:u[0]||(u[0]=c=>b("update:search-query",c.target.value))},null,40,Fo),s("div",Eo,[(l(),o(U,null,B(A,c=>s("button",{key:c.id,class:J(["directory-sort-button",{"is-active":t.sortMode===c.id}]),type:"button",onClick:y=>b("update:sort-mode",c.id)},i(c.label),11,To)),64))])]),t.supportsMarketplace?(l(),o("div",Uo,[s("div",No,[u[5]||(u[5]=s("span",{class:"directory-marketplace-title"},"Marketplaces",-1)),s("button",{class:"directory-marketplace-upgrade",type:"button",disabled:t.isMarketplaceActionInFlight,onClick:u[1]||(u[1]=(...c)=>t.upgradeAllMarketplaces&&t.upgradeAllMarketplaces(...c))},i(t.marketplaceActionName==="upgrade"?t.upgradingLabel:t.upgradeAllLabel),9,Do)]),t.marketplaces.length===0?(l(),o("div",xo,"No marketplaces configured.")):(l(),o("div",Oo,[(l(!0),o(U,null,B(t.marketplaces,c=>(l(),o("div",{key:c.name,class:"directory-marketplace-row"},[s("span",Ro,i(c.displayName),1),c.path?(l(),o("code",Bo,i(c.path),1)):p("",!0),s("button",{class:"directory-marketplace-remove",type:"button",disabled:t.isMarketplaceActionInFlight,onClick:y=>t.removeMarketplace(c.name)},i(t.marketplaceActionName===`remove:${c.name}`?t.removingLabel:t.removeLabel),9,Go)]))),128))])),s("div",Ko,[s("input",{value:t.marketplaceSourceUrl,class:"directory-marketplace-source",type:"url",placeholder:"Git URL to add a marketplace","aria-label":"Marketplace Git URL",onInput:u[2]||(u[2]=c=>b("update:marketplace-source-url",c.target.value)),onKeydown:u[3]||(u[3]=rs((...c)=>t.addMarketplace&&t.addMarketplace(...c),["enter"]))},null,40,jo),s("button",{class:"directory-marketplace-add-button",type:"button",disabled:t.isMarketplaceActionInFlight||!t.marketplaceSourceUrl.trim(),onClick:u[4]||(u[4]=(...c)=>t.addMarketplace&&t.addMarketplace(...c))},i(t.marketplaceActionName==="add"?t.addingLabel:t.addLabel),9,Ho)])])):p("",!0),t.supportsPlugins?t.error?(l(),o("div",zo,i(t.error),1)):t.isLoading?(l(),o("div",Vo,"Loading plugins...")):t.plugins.length===0?(l(),o("div",Qo,"No plugins found.")):(l(),o("div",Wo,[(l(!0),o(U,null,B(t.plugins,c=>(l(),o("button",{key:c.id,class:J(["directory-card",{"is-disabled":c.installed&&!c.enabled}]),type:"button",onClick:y=>t.openPluginDetail(c)},[s("div",Jo,[t.pluginIconSrc(c)?(l(),o("img",{key:0,class:"directory-card-icon",src:t.pluginIconSrc(c),alt:c.displayName,loading:"lazy"},null,8,Xo)):(l(),o("div",{key:1,class:"directory-card-fallback",style:cs(t.fallbackStyle(c))},i(c.displayName.charAt(0)),5)),s("div",Zo,[s("div",ei,[s("span",ti,i(c.displayName),1),c.installed&&!c.enabled?(l(),o("span",ai,i(t.disabledLabel),1)):c.installed?(l(),o("span",si,i(t.installedLabel),1)):p("",!0)]),s("span",li,i(c.developerName||c.marketplaceDisplayName||c.marketplaceName||t.pluginLabel),1)])]),c.description?(l(),o("p",oi,i(c.description),1)):p("",!0),s("div",ii,[c.category?(l(),o("span",ni,i(c.category),1)):p("",!0),(l(!0),o(U,null,B(c.capabilities.slice(0,2),y=>(l(),o("span",{key:y,class:"directory-chip"},i(y),1))),128))])],10,Yo))),128))])):(l(),o("div",qo," Plugin APIs unavailable in this Codex CLI. Update Codex CLI to use plugin catalog features. "))]))}}),ci={class:"skill-card-top"},di=["src","alt"],ui={key:1,class:"skill-card-avatar-fallback"},yi={class:"skill-card-info"},pi={class:"skill-card-header"},mi={class:"skill-card-name"},hi={key:0,class:"skill-card-badge-disabled"},vi={key:1,class:"skill-card-badge"},gi={key:0,class:"skill-card-owner"},bi=["title"],ki={key:0,class:"skill-card-desc"},fi={key:1,class:"skill-card-meta-row"},$i=be({__name:"SkillCard",props:{skill:{},showStatusBadge:{type:Boolean,default:!0},showBrowseAction:{type:Boolean,default:!0},showOwner:{type:Boolean,default:!0}},emits:["select"],setup(t){const F=t,{t:b}=ot(),A=_(()=>F.showStatusBadge!==!1),$=_(()=>F.showBrowseAction!==!1),u=_(()=>F.showOwner!==!1),c=_(()=>{const r=F.skill.path;return r?r.endsWith("/SKILL.md")?r.slice(0,-9):r:""});function y(){const r=c.value;r&&window.open(`/codex-local-browse${encodeURI(r)}`,"_blank","noopener,noreferrer")}const M=_(()=>{const r=F.skill.publishedAt;if(!r)return"";const G=new Date(r),z=Date.now()-r;return z<36e5?`${Math.floor(z/6e4)}${b("ago")}`:z<864e5?`${Math.floor(z/36e5)}${b("ago")}`:z<2592e6?`${Math.floor(z/864e5)}${b("ago")}`:G.toLocaleDateString("en-US",{month:"short",day:"numeric"})}),x=_(()=>{const r=[];return F.skill.installCountLabel&&r.push(F.skill.installCountLabel),M.value&&r.push(M.value),r});function H(r){const G=r.target;G.style.display="none"}return(r,G)=>(l(),o("button",{class:J(["skill-card",{"is-disabled":t.skill.installed&&t.skill.enabled===!1}]),type:"button",onClick:G[0]||(G[0]=q=>r.$emit("select",t.skill))},[s("div",ci,[t.skill.avatarUrl?(l(),o("img",{key:0,class:"skill-card-avatar",src:t.skill.avatarUrl,alt:t.skill.owner,loading:"lazy",onError:H},null,40,di)):(l(),o("div",ui,i(t.skill.owner.charAt(0)),1)),s("div",yi,[s("div",pi,[s("span",mi,i(t.skill.displayName||t.skill.name),1),A.value?(l(),o(U,{key:0},[t.skill.installed&&t.skill.enabled===!1?(l(),o("span",hi,i(n(b)("Disabled")),1)):t.skill.installed?(l(),o("span",vi,i(n(b)("Installed")),1)):p("",!0)],64)):p("",!0)]),u.value?(l(),o("span",gi,i(t.skill.owner),1)):p("",!0)]),$.value&&t.skill.installed&&c.value?(l(),o("button",{key:2,class:"skill-card-browse",type:"button",title:n(b)("Browse files"),onClick:Oe(y,["stop"])},[Re(ds,{class:"skill-card-browse-icon"})],8,bi)):p("",!0)]),t.skill.description?(l(),o("p",ki,i(t.skill.description),1)):p("",!0),x.value.length>0?(l(),o("div",fi,[(l(!0),o(U,null,B(x.value,q=>(l(),o("span",{key:q,class:"skill-card-meta"},i(q),1))),128))])):p("",!0)],2))}}),Zt=it($i,[["__scopeId","data-v-2dc2f3b0"]]),Ci={class:"sdm-panel"},wi={class:"sdm-header"},Si={class:"sdm-title-area"},_i=["src","alt"],Li={class:"sdm-title-col"},Ai={class:"sdm-title-row"},Pi={class:"sdm-title"},Ii={key:0,class:"sdm-badge-disabled"},Mi={class:"sdm-owner"},Fi=["aria-label"],Ei={class:"sdm-body"},Ti={key:0,class:"sdm-desc"},Ui={key:1,class:"sdm-readme-loading"},Ni=["innerHTML"],Di=["href"],xi={class:"sdm-footer"},Oi={class:"sdm-footer-actions"},Ri=["disabled"],Bi=["disabled"],Gi=["disabled"],Ki=["disabled"],ji=be({__name:"SkillDetailModal",props:{skill:{},visible:{type:Boolean},isInstalling:{type:Boolean},isUninstalling:{type:Boolean},isTrying:{type:Boolean}},emits:["close","install","uninstall","toggle-enabled","try"],setup(t,{emit:F}){const b=t,A=F,$=h(null),u=h(""),c=h(""),y=h(!1),{t:M}=ot(),x=_(()=>$.value??b.skill.enabled??!0),H=_(()=>b.isInstalling===!0||b.isUninstalling===!0),r=_(()=>u.value||b.skill.description),G=_(()=>{const I=b.skill.path;return I?I.endsWith("/SKILL.md")?I.slice(0,-9):I:""}),q=_(()=>{const I=c.value;if(!I)return"";const D=I.replace(/^---[\s\S]*?---\s*/,"");return Ks(z(D))});function z(I){return I.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/^### (.+)$/gm,"<h4>$1</h4>").replace(/^## (.+)$/gm,"<h3>$1</h3>").replace(/^# (.+)$/gm,"<h2>$1</h2>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/`([^`]+)`/g,"<code>$1</code>").replace(/^- (.+)$/gm,"<li>$1</li>").replace(/(<li>.*<\/li>\n?)+/g,"<ul>$&</ul>").replace(/\n{2,}/g,"<br/><br/>").replace(/\n/g,"<br/>")}async function te(){if(!(!b.skill.owner||!b.skill.name)){y.value=!0,u.value="",c.value="";try{const I=new URLSearchParams({owner:b.skill.owner,name:b.skill.name});b.skill.installed&&I.set("installed","true"),b.skill.path&&I.set("path",b.skill.path);const D=await fetch(`/codex-api/skills-hub/readme?${I}`);if(!D.ok)return;const K=await D.json();c.value=K.content??"",u.value=K.description??""}catch{}finally{y.value=!1}}}Ie(()=>b.visible,I=>{I&&($.value=null,u.value="",c.value="",te())});function E(){A("install",b.skill)}function C(){A("uninstall",b.skill)}function S(){const I=!x.value;$.value=I,A("toggle-enabled",b.skill,I)}function f(){b.isTrying||A("try",b.skill)}function V(){const I=G.value;I&&window.open(`/codex-local-browse${encodeURI(I)}`,"_blank","noopener,noreferrer")}return(I,D)=>(l(),re(st,{to:"body"},[t.visible?(l(),o("div",{key:0,class:"sdm-overlay",onClick:D[1]||(D[1]=Oe(K=>I.$emit("close"),["self"]))},[s("div",Ci,[s("div",wi,[s("div",Si,[t.skill.avatarUrl?(l(),o("img",{key:0,class:"sdm-avatar",src:t.skill.avatarUrl,alt:t.skill.owner,loading:"lazy"},null,8,_i)):p("",!0),s("div",Li,[s("div",Ai,[s("h3",Pi,i(t.skill.displayName||t.skill.name),1),t.skill.installed&&!x.value?(l(),o("span",Ii,i(n(M)("Disabled")),1)):p("",!0)]),s("span",Mi,i(t.skill.owner),1)])]),s("button",{class:"sdm-close",type:"button","aria-label":n(M)("Close"),onClick:D[0]||(D[0]=K=>I.$emit("close"))},[Re(us,{class:"sdm-close-icon"})],8,Fi)]),s("div",Ei,[r.value?(l(),o("p",Ti,i(r.value),1)):p("",!0),y.value?(l(),o("div",Ui,i(n(M)("Loading skill contents...")),1)):c.value?(l(),o("div",{key:2,class:"sdm-readme",innerHTML:q.value},null,8,Ni)):p("",!0),t.skill.url?(l(),o("a",{key:3,class:"sdm-link",href:t.skill.url,target:"_blank",rel:"noopener noreferrer"},i(n(M)("View on GitHub")),9,Di)):p("",!0)]),s("div",xi,[s("div",Oi,[t.skill.installed?(l(),o("button",{key:0,class:"sdm-btn sdm-btn-danger",type:"button",disabled:H.value,onClick:C},i(b.isUninstalling?n(M)("Uninstalling..."):n(M)("Uninstall")),9,Ri)):(l(),o("button",{key:1,class:"sdm-btn sdm-btn-primary",type:"button",disabled:H.value,onClick:E},i(b.isInstalling?n(M)("Installing..."):n(M)("Install")),9,Bi)),t.skill.installed?(l(),o("button",{key:2,class:"sdm-btn sdm-btn-secondary",type:"button",disabled:H.value,onClick:S},i(x.value?n(M)("Disable"):n(M)("Enable")),9,Gi)):p("",!0),t.skill.installed&&x.value?(l(),o("button",{key:3,class:"sdm-btn sdm-btn-primary",type:"button",disabled:H.value||b.isTrying,onClick:f},i(b.isTrying?"Starting...":"Try it!"),9,Ki)):p("",!0),t.skill.installed&&G.value?(l(),o("button",{key:4,class:"sdm-btn sdm-btn-secondary",type:"button",onClick:V},i(n(M)("Browse files")),1)):p("",!0)])])])])):p("",!0)]))}}),Hi=it(ji,[["__scopeId","data-v-318b9c96"]]),qi={apiKey:"AIzaSyAf0CIHBZ-wEQJ8CCUUWo1Wl9P7typ_ZPI",authDomain:"gptcall-416910.firebaseapp.com",projectId:"gptcall-416910",storageBucket:"gptcall-416910.appspot.com",messagingSenderId:"99275526699",appId:"1:99275526699:web:3b623e1e2996108b52106e"};let ht=null;function zi(){return ht||(ht=Promise.all([Wt(()=>import("./index.esm-Cxn_LBGD.js"),__vite__mapDeps([0,1])),Wt(()=>import("./index.esm-DYMAm9mq.js"),__vite__mapDeps([2,1]))])),ht}function Vi(t){const F=h(null),b=h(""),A=h(""),$=h(""),u=h({loggedIn:!1,githubUsername:"",repoOwner:"",repoName:"",configured:!1,startup:{inProgress:!1,mode:"idle",branch:"main",lastAction:"not-started",lastRunAtIso:"",lastSuccessAtIso:"",lastError:""}}),c=_(()=>$.value==="pull"),y=_(()=>$.value==="push"),M=_(()=>$.value==="startup-sync"),x=_(()=>$.value!=="");async function H(){try{const C=await fetch("/codex-api/skills-sync/status");if(!C.ok)return;const S=await C.json();S.data&&(u.value=S.data)}catch{}}async function r(){try{const C=await fetch("/codex-api/skills-sync/github/start-login",{method:"POST"}),S=await C.json();if(!C.ok||!S.data)throw new Error("Failed to start GitHub login");F.value=S.data;const f=30,V=Math.max((S.data.interval??5)*1e3,3e3);let I=!1;for(let D=0;D<f;D++){await new Promise(Z=>setTimeout(Z,V));const K=await fetch("/codex-api/skills-sync/github/complete-login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:S.data.device_code})}),Q=await K.json();if(!K.ok)throw new Error(Q.error||"Failed to complete GitHub login");if(Q.ok){I=!0;break}if(!Q.pending)throw new Error(Q.error||"Failed to complete GitHub login")}if(!I)throw new Error("GitHub login timed out. Please retry.");F.value=null,await H(),t.showToast("GitHub login successful")}catch(C){t.showToast(C instanceof Error?C.message:"Failed GitHub login","error")}}async function G(){try{const[C,S]=await zi(),{getApp:f,getApps:V,initializeApp:I}=C,{getAuth:D,GithubAuthProvider:K,signInWithPopup:Q}=S,Z=V().length>0?f():I(qi),me=D(Z),ae=new K;ae.addScope("repo");const ke=await Q(me,ae),se=K.credentialFromResult(ke),le=(se==null?void 0:se.accessToken)??"";if(!le)throw new Error("GitHub access token missing from Firebase login");const X=await fetch("/codex-api/skills-sync/github/token-login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:le})}),W=await X.json();if(!X.ok||!W.ok)throw new Error(W.error||"Failed to login with GitHub token");await H(),t.showToast("GitHub login successful")}catch(C){const S=C instanceof Error?C.message:"Failed Firebase GitHub login";t.showToast(S,"error")}}async function q(){A.value="",b.value="pull-started",$.value="pull";try{const C=await fetch("/codex-api/skills-sync/pull",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to pull synced skills");await t.onPulled(),b.value="pull-success",t.showToast(u.value.loggedIn?"Pulled skills from private sync repo":"Pulled skills from upstream repo")}catch(C){const S=C instanceof Error?C.message:"Failed to pull sync";A.value=S,b.value="pull-failed",t.showToast(S,"error")}finally{$.value=""}}async function z(){A.value="",b.value="push-started",$.value="push";try{const C=await fetch("/codex-api/skills-sync/push",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to push synced skills");b.value="push-success",t.showToast("Pushed skills to private sync repo")}catch(C){const S=C instanceof Error?C.message:"Failed to push sync";A.value=S,b.value="push-failed",t.showToast(S,"error")}finally{$.value=""}}async function te(){A.value="",b.value="startup-sync-started",$.value="startup-sync";try{const C=await fetch("/codex-api/skills-sync/startup-sync",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to run startup sync");await t.onPulled(),await H(),b.value="startup-sync-success",t.showToast("Startup sync completed")}catch(C){const S=C instanceof Error?C.message:"Failed startup sync";A.value=S,b.value="startup-sync-failed",t.showToast(S,"error")}finally{$.value=""}}async function E(){try{const C=await fetch("/codex-api/skills-sync/github/logout",{method:"POST"}),S=await C.json();if(!C.ok||!S.ok)throw new Error(S.error||"Failed to logout GitHub");await H(),t.showToast("Logged out from GitHub")}catch(C){t.showToast(C instanceof Error?C.message:"Failed to logout GitHub","error")}}return{deviceLogin:F,isPullInFlight:c,isPushInFlight:y,isStartupSyncInFlight:M,isSyncActionInFlight:x,loadSyncStatus:H,logoutGithub:E,pullSkillsSync:q,pushSkillsSync:z,startupSkillsSync:te,startGithubFirebaseLogin:G,startGithubLogin:r,syncActionError:A,syncActionStatus:b,syncStatus:u}}const Qi={class:"skills-hub"},Wi={class:"skills-hub-header"},Yi={class:"skills-hub-title"},Ji={class:"skills-hub-subtitle"},Xi={class:"skills-sync-panel"},Zi={class:"skills-sync-header"},en=["href"],tn={key:1,class:"skills-sync-badge"},an={key:2,class:"skills-sync-badge"},sn={class:"skills-sync-meta"},ln={key:0,class:"skills-sync-error"},on=["href"],nn={key:1,class:"skills-sync-meta"},rn={key:2,class:"skills-sync-error"},cn=["href"],dn={key:3,class:"skills-sync-device"},un=["href"],yn={class:"skills-sync-actions"},pn=["disabled"],mn=["disabled"],hn=["disabled"],vn=["disabled"],gn={class:"skills-search-panel"},bn={class:"skills-search-header"},kn={class:"skills-search-copy"},fn={class:"skills-directory-link",href:"https://skills.anyclaw.store/",target:"_blank",rel:"noopener noreferrer"},$n=["placeholder","aria-label"],Cn=["disabled"],wn={key:0,class:"skills-hub-error"},Sn=["href"],_n={key:1,class:"skills-hub-section"},Ln={class:"skills-hub-section-title"},An={key:0,class:"skills-hub-grid"},Pn={key:2,class:"skills-hub-section"},In={class:"skills-hub-section-title"},Mn={key:0,class:"skills-hub-grid"},Fn={class:"skills-hub-section"},En={key:0,class:"skills-hub-loading"},Tn={key:1,class:"skills-hub-error"},Un=["href"],Nn={key:2,class:"skills-hub-empty"},Dn=be({__name:"SkillsHub",props:{tryInFlightKey:{}},emits:["skills-changed","try-item"],setup(t,{emit:F}){const b={name:"",owner:"",description:"",url:"",installed:!1},A=h([]),$=h([]),u=h(!1),c=h(!1),y=h(""),M=h(""),x=h(""),H=h(!0),r=h(!0),G=h(!1),q=h(b),z=h(null),te=h(""),E=h(!1),C=h(!1);let S=null;ta(()=>{S&&clearTimeout(S)});const{t:f}=ot(),{buildFeedbackMailto:V,feedbackMailtoBase:I,recordVisibleFailure:D}=hs(),K=I(),Q=t,Z=F,me=_(()=>{var g;return((g=z.value)==null?void 0:g.type)==="error"?"skills-hub-toast-error":"skills-hub-toast-success"}),ae=_(()=>`${q.value.owner}/${q.value.name}`),ke=_(()=>E.value&&te.value===ae.value),se=_(()=>C.value&&te.value===ae.value),le=_(()=>{if(!O.value.configured)return"";const g=O.value.repoOwner.trim(),v=O.value.repoName.trim();return!g||!v?"":`https://github.com/${encodeURIComponent(g)}/${encodeURIComponent(v)}`}),X=_(()=>A.value);function W(g,v="success"){z.value={text:g,type:v},S&&clearTimeout(S),S=setTimeout(()=>{z.value=null},3e3)}function he(g,v){D(v);const k=g.currentTarget;k instanceof HTMLAnchorElement&&(k.href=V())}function fe(g){if(A.value=g.installed??[],$.value.length>0){const v=new Map(A.value.map(k=>[k.name,k]));$.value=$.value.map(k=>{const R=v.get(k.name);return R?Me(k,R):k})}}function Me(g,v){return{...g,installed:!0,path:v.path,enabled:v.enabled}}function Be(g,v){return{...g,installed:!0,source:v.source,publishedAt:v.publishedAt}}async function ce(){u.value=!0,y.value="";try{const g=await fetch("/codex-api/skills-hub");if(!g.ok)throw new Error(`HTTP ${g.status}`);const v=await g.json();fe(v)}catch(g){y.value=g instanceof Error?g.message:f("Failed to load skills")}finally{u.value=!1}}function Fe(g){const v=g.installed?A.value.find(k=>k.name===g.name):void 0;q.value=v?Be(v,g):g,G.value=!0}async function Ge(){const g=M.value.trim();if(!(g.length<2)){c.value=!0,x.value="";try{const v=new URLSearchParams({q:g}),k=await fetch(`/codex-api/skills-hub/search?${v}`),R=await k.json();if(!k.ok)throw new Error(R.error||`HTTP ${k.status}`);const oe=new Map(A.value.map(ie=>[ie.name,ie]));$.value=(R.results??[]).map(ie=>{const ee=oe.get(ie.name);return ee?Me(ie,ee):ie}),r.value=!0,$.value.length===0&&W(f("No matching skills found."),"error")}catch(v){x.value=v instanceof Error?v.message:f("Failed to search skills")}finally{c.value=!1}}}async function Ke(g){te.value=`${g.owner}/${g.name}`,E.value=!0;try{const k=await(await fetch("/codex-api/skills-hub/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({owner:g.owner,name:g.name,source:g.source})})).json();if(!k.ok)throw new Error(k.error||f("Install failed"));if(!k.path)throw new Error(f("Install completed but no local skill path was returned"));await ce();const R=A.value.find(oe=>oe.name===g.name);if(!(R!=null&&R.path))throw new Error(f("Install completed but the local skill was not found after refresh"));q.value=Be(R,g),W(`${g.displayName||g.name} ${f("skill installed")}`),G.value=!1,Z("skills-changed")}catch(v){W(v instanceof Error?v.message:f("Failed to install skill"),"error")}finally{E.value=!1}}async function je(g){te.value=`${g.owner}/${g.name}`,C.value=!0;try{const k=await(await fetch("/codex-api/skills-hub/uninstall",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name,path:g.path})})).json();if(!k.ok)throw new Error(k.error||f("Uninstall failed"));A.value=A.value.filter(R=>R.name!==g.name),W(`${g.displayName||g.name} ${f("skill uninstalled")}`),G.value=!1,Z("skills-changed")}catch(v){W(v instanceof Error?v.message:f("Failed to uninstall skill"),"error")}finally{C.value=!1}}async function He(g,v){try{if(!(await fetch("/codex-api/rpc",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"skills/config/write",params:{path:g.path,enabled:v}})})).ok)throw new Error(f("Failed to update skill"));await fetch("/codex-api/skills-sync/push",{method:"POST"}),W(`${g.displayName||g.name} ${f("skill")} ${f(v?"enabled":"disabled")}`),await ce()}catch(k){W(k instanceof Error?k.message:f("Failed to update skill"),"error")}}function L(g){!g.installed||g.enabled===!1||Q.tryInFlightKey||(Z("try-item",{kind:"skill",name:g.name,displayName:g.displayName||g.name,skillPath:g.path}),G.value=!1)}function N(g){return`skill:${g.name}:${g.path??""}`}const{deviceLogin:$e,isPullInFlight:qe,isPushInFlight:Ee,isStartupSyncInFlight:P,isSyncActionInFlight:de,loadSyncStatus:ze,logoutGithub:Ce,pullSkillsSync:Te,pushSkillsSync:Ue,startupSkillsSync:Y,startGithubFirebaseLogin:Ne,startGithubLogin:ve,syncActionError:ue,syncActionStatus:we,syncStatus:O}=Vi({showToast:W,onPulled:async()=>{await ce(),Z("skills-changed")}}),Se=[_(()=>O.value.startup.lastError),ue,x,y];return aa(()=>{ce(),ze()}),Ie(Se,(g,v)=>{g.forEach((k,R)=>{if(k===v[R])return;const oe=k.trim();oe&&D(oe)})}),(g,v)=>(l(),o("div",Qi,[s("div",Wi,[s("h2",Yi,i(n(f)("Skills Hub")),1),s("p",Ji,i(n(f)("Manage installed skills on this machine")),1)]),s("div",Xi,[s("div",Zi,[s("strong",null,i(n(f)("Skills Sync (GitHub)")),1),n(O).configured&&le.value?(l(),o("a",{key:0,class:"skills-sync-badge skills-sync-badge-link",href:le.value,target:"_blank",rel:"noopener noreferrer"},i(n(f)("Connected"))+": "+i(n(O).repoOwner)+"/"+i(n(O).repoName),9,en)):n(O).loggedIn?(l(),o("span",tn,i(n(f)("Logged in as"))+" "+i(n(O).githubUsername),1)):(l(),o("span",an,i(n(f)("Not connected")),1))]),s("div",sn,[s("span",null,i(n(f)("Startup"))+": "+i(n(O).startup.mode),1),s("span",null,i(n(f)("Branch"))+": "+i(n(O).startup.branch),1),s("span",null,i(n(f)("Action"))+": "+i(n(O).startup.lastAction),1)]),n(O).startup.lastError?(l(),o("div",ln,[s("span",null,i(n(O).startup.lastError),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[0]||(v[0]=k=>he(k,n(O).startup.lastError))},i(n(f)("Send feedback")),9,on)])):p("",!0),n(we)?(l(),o("div",nn,[s("span",null,i(n(f)("Manual sync"))+": "+i(n(we)),1)])):p("",!0),n(ue)?(l(),o("div",rn,[s("span",null,i(n(ue)),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[1]||(v[1]=k=>he(k,n(ue)))},i(n(f)("Send feedback")),9,cn)])):p("",!0),n($e)?(l(),o("div",dn,[s("span",null,[lt(i(n(f)("Open"))+" ",1),s("a",{href:n($e).verification_uri,target:"_blank",rel:"noreferrer"},i(n(f)("GitHub device login")),9,un),lt(" "+i(n(f)("and enter code:")),1)]),s("code",null,i(n($e).user_code),1)])):p("",!0),s("div",yn,[n(O).loggedIn?p("",!0):(l(),o("button",{key:0,class:"skills-hub-sort",type:"button",onClick:v[2]||(v[2]=(...k)=>n(Ne)&&n(Ne)(...k))},i(n(f)("Login with GitHub")),1)),n(O).loggedIn?p("",!0):(l(),o("button",{key:1,class:"skills-hub-sort",type:"button",onClick:v[3]||(v[3]=(...k)=>n(ve)&&n(ve)(...k))},i(n(f)("Device Login")),1)),n(O).loggedIn?(l(),o("button",{key:2,class:"skills-hub-sort",type:"button",onClick:v[4]||(v[4]=(...k)=>n(Ce)&&n(Ce)(...k)),disabled:n(de)},i(n(f)("Logout GitHub")),9,pn)):p("",!0),s("button",{class:"skills-hub-sort",type:"button",onClick:v[5]||(v[5]=(...k)=>n(Y)&&n(Y)(...k)),disabled:n(de)},i(n(P)?n(f)("Syncing..."):n(f)("Startup Sync")),9,mn),s("button",{class:"skills-hub-sort",type:"button",onClick:v[6]||(v[6]=(...k)=>n(Te)&&n(Te)(...k)),disabled:n(de)},i(n(qe)?n(f)("Pulling..."):n(f)("Pull")),9,hn),n(O).loggedIn?(l(),o("button",{key:3,class:"skills-hub-sort",type:"button",onClick:v[7]||(v[7]=(...k)=>n(Ue)&&n(Ue)(...k)),disabled:!n(O).configured||n(de)},i(n(Ee)?n(f)("Pushing..."):n(f)("Push")),9,vn)):p("",!0)])]),z.value?(l(),o("div",{key:0,class:J(["skills-hub-toast",me.value])},i(z.value.text),3)):p("",!0),s("div",gn,[s("div",bn,[s("div",kn,[s("strong",null,i(n(f)("Find skills")),1),s("span",null,i(n(f)("Search the Skills registry with npx skills find.")),1)]),s("a",fn,i(n(f)("Skills directory")),1)]),s("form",{class:"skills-search-form",onSubmit:Oe(Ge,["prevent"])},[ys(s("input",{"onUpdate:modelValue":v[8]||(v[8]=k=>M.value=k),class:"skills-search-input",type:"search",placeholder:n(f)("Search skills..."),"aria-label":n(f)("Search skills")},null,8,$n),[[ps,M.value]]),s("button",{class:"skills-hub-sort",type:"submit",disabled:c.value||M.value.trim().length<2},i(c.value?n(f)("Searching..."):n(f)("Search")),9,Cn)],32),x.value?(l(),o("div",wn,[s("span",null,i(x.value),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[9]||(v[9]=k=>he(k,x.value))},i(n(f)("Send feedback")),9,Sn)])):p("",!0)]),$.value.length>0?(l(),o("div",_n,[s("button",{class:"skills-hub-section-toggle",type:"button",onClick:v[10]||(v[10]=k=>r.value=!r.value)},[s("span",Ln,i(n(f)("Search results ({count})",{count:$.value.length})),1),Re(Yt,{class:J(["skills-hub-section-chevron",{"is-open":r.value}])},null,8,["class"])]),r.value?(l(),o("div",An,[(l(!0),o(U,null,B($.value,k=>(l(),re(Zt,{key:k.source||`${k.owner}/${k.name}`,skill:k,"show-browse-action":!1,onSelect:R=>Fe(R)},null,8,["skill","onSelect"]))),128))])):p("",!0)])):p("",!0),ms(g.$slots,"before-installed",{},void 0),X.value.length>0?(l(),o("div",Pn,[s("button",{class:"skills-hub-section-toggle",type:"button",onClick:v[11]||(v[11]=k=>H.value=!H.value)},[s("span",In,i(n(f)("Installed skills ({count})",{count:X.value.length})),1),Re(Yt,{class:J(["skills-hub-section-chevron",{"is-open":H.value}])},null,8,["class"])]),H.value?(l(),o("div",Mn,[(l(!0),o(U,null,B(X.value,k=>(l(),re(Zt,{key:k.name,skill:k,"show-status-badge":!1,"show-owner":!1,onSelect:R=>Fe(R)},null,8,["skill","onSelect"]))),128))])):p("",!0)])):p("",!0),s("div",Fn,[u.value?(l(),o("div",En,i(n(f)("Loading skills...")),1)):y.value?(l(),o("div",Tn,[s("span",null,i(y.value),1),s("a",{class:"skills-error-feedback",href:n(K),onClick:v[12]||(v[12]=k=>he(k,y.value))},i(n(f)("Send feedback")),9,Un)])):A.value.length===0?(l(),o("div",Nn,i(n(f)("No installed skills found.")),1)):p("",!0)]),Re(Hi,{skill:q.value,visible:G.value,"is-installing":ke.value,"is-uninstalling":se.value,"is-trying":Q.tryInFlightKey===N(q.value),onClose:v[13]||(v[13]=k=>G.value=!1),onInstall:Ke,onUninstall:je,onToggleEnabled:He,onTry:L},null,8,["skill","visible","is-installing","is-uninstalling","is-trying"])]))}}),xn=it(Dn,[["__scopeId","data-v-25bfcbd5"]]),On={class:"directory-section"},Rn={class:"skills-embedded-section"},Bn={class:"skills-embedded-title"},Gn={key:0,class:"skills-embedded-body"},Kn={key:0,class:"directory-empty"},jn={key:1,class:"directory-error"},Hn={key:2,class:"directory-loading"},qn={key:3,class:"directory-empty"},zn={key:4,class:"mcp-skill-grid"},Vn=["onClick"],Qn={class:"mcp-skill-card-top"},Wn={class:"mcp-skill-avatar-fallback"},Yn={class:"mcp-skill-info"},Jn={class:"mcp-skill-header"},Xn={class:"mcp-skill-name"},Zn={class:"mcp-skill-meta"},er={key:0,class:"directory-mcp-detail"},tr={key:0},ar={class:"directory-mini-list"},sr={key:1},lr={class:"directory-mini-list"},or=be({__name:"DirectorySkillsTab",props:{tryInFlightKey:{},supportsMcps:{type:Boolean},mcpError:{},isLoadingMcps:{type:Boolean},visibleMcpServers:{},isMcpSectionOpen:{type:Boolean},expandedMcpNames:{},formatMcpAuthStatus:{type:Function},mcpCardBadgeClass:{type:Function},toggleMcpSectionOpen:{type:Function},toggleMcpExpanded:{type:Function}},emits:["skills-changed","try-item"],setup(t,{emit:F}){const b=F;return(A,$)=>(l(),o("section",On,[Re(xn,{"try-in-flight-key":t.tryInFlightKey,onSkillsChanged:$[1]||($[1]=u=>b("skills-changed")),onTryItem:$[2]||($[2]=u=>b("try-item",u))},{"before-installed":vs(()=>[s("div",Rn,[s("button",{class:"skills-embedded-toggle",type:"button",onClick:$[0]||($[0]=(...u)=>t.toggleMcpSectionOpen&&t.toggleMcpSectionOpen(...u))},[s("span",Bn,"MCPs("+i(t.visibleMcpServers.length)+")",1),s("span",{class:J(["skills-embedded-chevron",{"is-open":t.isMcpSectionOpen}])},"›",2)]),t.isMcpSectionOpen?(l(),o("div",Gn,[t.supportsMcps?t.mcpError?(l(),o("div",jn,i(t.mcpError),1)):t.isLoadingMcps?(l(),o("div",Hn,"Loading MCP servers...")):t.visibleMcpServers.length===0?(l(),o("div",qn,"No MCP servers configured.")):(l(),o("div",zn,[(l(!0),o(U,null,B(t.visibleMcpServers,u=>(l(),o("article",{key:u.name},[s("button",{class:"mcp-skill-card skill-card",type:"button",onClick:c=>t.toggleMcpExpanded(u.name)},[s("div",Qn,[s("div",Wn,i(u.name.charAt(0)),1),s("div",Yn,[s("div",Jn,[s("span",Xn,i(u.name),1),s("span",{class:J(["mcp-skill-badge",t.mcpCardBadgeClass(u.authStatus)])},i(t.formatMcpAuthStatus(u.name)),3)]),$[3]||($[3]=s("span",{class:"mcp-skill-owner"},"mcp",-1))]),s("span",{class:J(["mcp-skill-chevron",{"is-open":t.expandedMcpNames.has(u.name)}])},"›",2)]),s("p",Zn,i(u.tools.length)+" tools · "+i(u.resources.length+u.resourceTemplates.length)+" resources",1),t.expandedMcpNames.has(u.name)?(l(),o("div",er,[u.tools.length>0?(l(),o("div",tr,[$[4]||($[4]=s("h3",{class:"directory-mini-heading"},"Tools",-1)),s("p",ar,i(u.tools.map(c=>c.title||c.name).join(", ")),1)])):p("",!0),u.resources.length>0||u.resourceTemplates.length>0?(l(),o("div",sr,[$[5]||($[5]=s("h3",{class:"directory-mini-heading"},"Resources",-1)),s("p",lr,i([...u.resources.map(c=>c.title||c.name||c.uri),...u.resourceTemplates.map(c=>c.title||c.name||c.uriTemplate)].join(", ")),1)])):p("",!0)])):p("",!0)],8,Vn)]))),128))])):(l(),o("div",Kn," MCP status APIs unavailable in this Codex CLI. Update Codex CLI to inspect MCP servers. "))])):p("",!0)])]),_:1},8,["try-in-flight-key"])]))}}),ir=it(or,[["__scopeId","data-v-f5178e67"]]),nr={class:"directory-hub"},rr={class:"directory-header"},cr={class:"directory-title"},dr={class:"directory-subtitle"},ur={class:"directory-header-actions"},yr=["disabled"],pr={class:"directory-tabs",role:"tablist","aria-label":"Directory sections"},mr=["aria-selected","onClick"],hr={class:"directory-modal"},vr={class:"directory-modal-header"},gr={class:"directory-card-top"},br=["src","alt"],kr={key:1,class:"directory-card-fallback"},fr={class:"directory-card-main"},$r={class:"directory-modal-title"},Cr={class:"directory-card-meta"},wr=["aria-label"],Sr={class:"directory-modal-body"},_r={key:0,class:"directory-error"},Lr={key:1,class:"directory-loading"},Ar={key:0,class:"directory-detail-description"},Pr={key:1,class:"directory-detail-block"},Ir={class:"directory-chip-row"},Mr={class:"directory-detail-grid"},Fr={key:0,class:"directory-detail-block"},Er={class:"directory-detail-heading"},Tr={key:0,class:"directory-auth-status is-warning"},Ur=["onClick"],Nr={key:1,class:"directory-detail-block"},Dr={class:"directory-detail-heading"},xr={class:"directory-mini-list"},Or={key:2,class:"directory-detail-block"},Rr=["disabled","onClick"],Br={key:2,class:"directory-screenshots"},Gr=["src"],Kr={key:3,class:"directory-auth-panel"},jr=["onClick"],Hr={class:"directory-modal-footer"},qr=["disabled"],zr=["disabled"],Vr={key:2,class:"directory-action",type:"button",disabled:""},Qr=["disabled"],Wr=["disabled"],Yr={class:"directory-modal directory-modal--share"},Jr={class:"directory-modal-header"},Xr={class:"directory-card-main"},Zr={class:"directory-modal-title"},ec={class:"directory-card-meta"},tc=["aria-label"],ac={class:"directory-modal-body"},sc={key:0,class:"directory-error"},lc={key:1,class:"directory-loading"},oc={key:0,class:"directory-empty"},ic={key:1,class:"directory-share-list"},nc={class:"directory-share-info"},rc={class:"directory-share-name"},cc=["href"],dc=["disabled","onClick"],uc=["disabled","onClick"],yc=["disabled"],pc={class:"directory-modal"},mc={class:"directory-modal-header"},hc={class:"directory-card-top"},vc=["src","alt"],gc={key:1,class:"directory-card-fallback composio-fallback"},bc={class:"directory-card-main"},kc={class:"directory-modal-title"},fc={class:"directory-card-meta"},$c=["aria-label"],Cc={class:"directory-modal-body"},wc={key:0,class:"directory-error"},Sc={key:1,class:"directory-loading"},_c={key:0,class:"directory-detail-description"},Lc={class:"directory-detail-grid"},Ac={class:"directory-detail-block"},Pc={class:"directory-chip-row"},Ic={class:"directory-chip"},Mc={key:0,class:"directory-chip"},Fc={key:1,class:"directory-chip"},Ec={key:2,class:"directory-chip"},Tc={class:"directory-detail-block"},Uc={key:0,class:"directory-mini-list"},Nc={key:1},Dc={class:"directory-card-meta"},xc={key:1,class:"directory-detail-block"},Oc={class:"directory-card-meta"},Rc={class:"directory-modal-footer"},Bc=["disabled"],Gc=["disabled"],Kc="/Users/igor/.codex/skills/shared_skills/composio-cli/SKILL.md",jc=50,ea=100,zc=be({__name:"DirectoryHub",props:{cwd:{},threadId:{},tryInFlightKey:{}},emits:["skills-changed","try-item"],setup(t,{expose:F,emit:b}){const A=[[/^gmail$/i,3e4],[/^google calendar$/i,29500],[/^outlook( email| calendar)?$/i,29e3],[/^google drive$/i,28500],[/^google docs$/i,28e3],[/^google sheets$/i,27500],[/^dropbox$/i,27e3],[/^box$/i,26500],[/^slack$/i,26e3],[/^notion$/i,25500],[/^canva$/i,25e3],[/^figma$/i,24500],[/^github$/i,24e3],[/^trello$/i,23500],[/^asana$/i,23e3],[/^basecamp$/i,22500],[/^clickup$/i,22e3],[/^linear$/i,21500],[/^gitlab( issues)?$/i,21e3],[/^jira$/i,20500],[/^zapier$/i,2e4],[/^hubspot$/i,19500],[/^salesforce$/i,19e3],[/^netlify$/i,18500],[/^vercel$/i,18e3],[/^(spotify|youtube|netflix|hulu|disney|booking|expedia|uber|airbnb)$/i,17500]],$=[[/(email|mail|inbox|calendar|event|availability|contact|message|chat)/i,450],[/(drive|document|docs|sheet|slide|file|storage|pdf|note|page)/i,380],[/(image|design|presentation|diagram|video|audio|photo|media|music)/i,320],[/(travel|flight|hotel|restaurant|recipe|food|shopping|delivery|map|weather)/i,260],[/(learn|education|study|language|health|fitness|finance|budget)/i,220],[/(task|project|issue|repository|deploy|database|crm|sales|support)/i,120]],u=[[/(computer use|github|gitlab|linear|slack|notion|browser|web|filesystem|terminal)/i,120],[/(calendar|email|drive|docs|design|deploy|project|issue|search|database)/i,55]],c=[[/(github|gitlab|linear|slack|notion|filesystem|browser|computer|web|postgres|sqlite|database)/i,120],[/(search|drive|docs|calendar|terminal|shell|deploy|cloud|memory)/i,55]],y=t,M=b,x=gs(),H=bs(),{t:r}=ot(),G=_(()=>[{id:"plugins",label:r("Plugins"),subtitle:r("Plugins make Codex work your way.")},{id:"apps",label:r("Apps"),subtitle:r("Connect Codex to external apps and services.")},{id:"composio",label:"Composio",subtitle:r("Browse Composio connectors, auth state, and ready-to-try integrations.")},{id:"skills",label:r("Skills"),subtitle:r("MCPs first, then installed skills and GitHub sync state.")}]),q=[{name:"Gmail",slug:"gmail",initial:"G",meta:"Inbox, drafts, attachments",description:"Find emails, summarize threads, draft replies, and pull attachment context into a chat.",chips:["Email","Search","Drafts"]},{name:"Google Calendar",slug:"google-calendar",initial:"C",meta:"Events and availability",description:"Check what is next, find open time, and turn follow-ups into calendar blocks.",chips:["Events","Availability","Reminders"]},{name:"Reddit",slug:"reddit",initial:"R",meta:"Posts, comments, communities",description:"Search communities, inspect posts, and prepare natural replies before posting.",chips:["Search","Comments","Posts"]},{name:"YouTube",slug:"youtube",initial:"Y",meta:"Videos, channels, comments",description:"Look up channel details, inspect video metadata, and help manage comment workflows.",chips:["Videos","Channels","Comments"]},{name:"Google Drive",slug:"google-drive",initial:"D",meta:"Files, docs, folders",description:"Find files, read shared docs, and bring Drive context into a Codex thread.",chips:["Files","Docs","Search"]},{name:"X",slug:"x",initial:"X",meta:"Posts, replies, profiles",description:"Research public posts, draft replies, and keep social workflows reviewable.",chips:["Posts","Replies","Profiles"]}];function z(e){return e==="plugins"||e==="apps"||e==="composio"||e==="skills"}function te(){return z(x.query.tab)?x.query.tab:"skills"}const E=h(te()),C=h(new Set),S=h(!1),f=h([]),V=h([]),I=h(null),D=h([]),K=h(null),Q=h(0),Z=h([]),me=h("popular"),ae=h("popular"),ke=h("popular"),se=h(""),le=h(""),X=h(""),W=h(!1),he=h(!1),fe=h(!1),Me=h(!1),Be=h(!1),ce=h(!1),Fe=h(!0),Ge=h(""),Ke=h(""),je=h(""),He=h(""),L=h(null),N=h(null),$e=h(!1),qe=h(!1),Ee=h(""),P=h(null),de=h(!1),ze=h(!1),Ce=h(""),Te=h(!1),Ue=h(!1),Y=h(!1),Ne=h(""),ve=h(""),ue=h([]),we=h(""),O=h(new Set),Se=h(null),g=h(""),v=h(""),k=h(!1),R=h([]),oe=h(!1),ie=h(!1),ee=h(!1),ye=h(""),_e=h("");let Ve=null,Qe=null;ta(()=>{Ve&&clearTimeout(Ve),Qe&&clearTimeout(Qe)});let nt=!1;const la=_(()=>G.value.find(e=>e.id===E.value)??G.value[0]),vt=_(()=>!S.value||["plugin/list","plugin/read","plugin/install","plugin/uninstall"].every(e=>C.value.has(e))),Je=_(()=>!S.value||C.value.has("app/list")),rt=_(()=>!S.value||C.value.has("mcpServerStatus/list")),gt=_(()=>C.value.has("config/mcpServer/reload")),bt=_(()=>C.value.has("mcpServer/oauth/login")),oa=_(()=>!S.value||["marketplace/add","marketplace/remove","marketplace/upgrade"].every(e=>C.value.has(e))),ia=_(()=>!S.value||["plugin/share/save","plugin/share/list","plugin/share/delete"].every(e=>C.value.has(e))),Le=_(()=>(y.tryInFlightKey??"").length>0),kt=_(()=>{var e,a,d;return((e=N.value)==null?void 0:e.description)||((a=N.value)==null?void 0:a.summary.longDescription)||((d=N.value)==null?void 0:d.summary.description)||""}),ft=_(()=>{var a;const e=(a=N.value)==null?void 0:a.summary;return e?[...e.screenshotUrls,...e.screenshots.map(et)].filter(Boolean):[]}),ct=_(()=>{var d;const e=((d=N.value)==null?void 0:d.apps)??[];if(e.length===0)return!1;const a=new Set;for(const w of V.value)a.add(w.id.trim().toLowerCase()),a.add(St(w.name));return e.some(w=>{const j=w.id.trim().toLowerCase(),ge=St(w.name),Pe=j.length>0&&a.has(j),at=ge.length>0&&a.has(ge);return!Pe&&!at})}),na=_(()=>{var e,a;return((e=L.value)==null?void 0:e.installPolicy)==="NOT_AVAILABLE"||(((a=N.value)==null?void 0:a.apps.some(d=>wt(d)))??!1)}),ra=_(()=>wa(Pa(_a(f.value,se.value),me.value),me.value,se.value)),ca=_(()=>{const e=new Map;for(const a of f.value){if(!a.marketplaceName)continue;const d=a.marketplaceName;e.has(d)||e.set(d,{name:a.marketplaceName,displayName:a.marketplaceDisplayName||a.marketplaceName,path:a.marketplacePath})}return[...e.values()].sort((a,d)=>a.displayName.localeCompare(d.displayName))}),da=_(()=>Sa(Ia(La(V.value,le.value),ae.value),ae.value,le.value)),ua=_(()=>zs(Aa(D.value,X.value),ke.value,X.value)),ya=_(()=>{const e=We(X.value);return e?q.filter(a=>Xe([a.name,a.slug,a.meta,a.description,...a.chips],e)):q}),pa=_(()=>Ma(Z.value)),$t=_(()=>K.value!==null),ma=_(()=>new Map(Z.value.map(e=>[e.name,e]))),ha=_(()=>{const e=I.value;return e&&[e.email||e.defaultOrgName,e.defaultOrgId?`org ${e.defaultOrgId}`:"",e.baseUrl||""].filter(Boolean).join(" · ")||r("Composio CLI shares the login and connections from this machine.")});function We(e){return e.trim().toLowerCase()}function va(e){return We(e).replace(/\s+\((synced|legacy)\)\s*$/iu,"").replace(/\s+\(.*?\)\s*$/u,"").replace(/[-_]+/gu," ").replace(/\s+plugin$/iu,"").replace(/\s+/gu," ").trim()}function Ct(...e){const a=new Set;for(const d of e){const w=va(d);w&&(a.add(w),a.add(w.replace(/\s+/gu,"")))}return Array.from(a)}function ga(e){return!e.isAccessible&&e.installUrl.trim().length===0}function ba(e){const a=e.id.trim();if(a){const w=V.value.find(j=>j.id===a);if(w)return w}const d=Ct(e.name);return V.value.find(w=>Ct(w.name).some(j=>d.includes(j)))??null}function wt(e){const a=ba(e);return a?ga(a):e.needsAuth&&e.installUrl.trim().length===0}function Xe(e,a){const d=We(a);return d?e.some(w=>w==null?void 0:w.toLowerCase().includes(d)):!0}function Ze(e,a){return a.reduce((d,[w,j])=>d+(w.test(e)?j:0),0)}function dt(e){return e.replace(/\s+\((synced|legacy)\)\s*$/iu,"").replace(/\s+\(.*?\)\s*$/u,"").trim()}function St(e){return dt(e).toLowerCase()}function ka(e){return e==="DEFAULT_OAI_CATALOG"?r("OpenAI catalog"):e==="ECOSYSTEM_DIRECTORY"?r("Ecosystem directory"):e?e.replace(/_/gu," ").toLowerCase().replace(/\b\w/gu,a=>a.toUpperCase()):""}function fa(e){return e.developer||ka(e.distributionChannel)||r("App")}function ut(e){var a;return((a=ma.value.get(e))==null?void 0:a.authStatus)??"unknown"}function _t(e){const a=ut(e);return r(a==="oAuth"?"Logged in":a==="bearerToken"?"Bearer token":a==="notLoggedIn"?"Login required":a==="unsupported"?"Auth unsupported":"Status unknown")}function $a(e){const a=ut(e);return a==="oAuth"||a==="bearerToken"?"is-ok":a==="notLoggedIn"?"is-warning":"is-muted"}function Ca(e){return e==="oAuth"||e==="bearerToken"?"mcp-skill-badge-ok":e==="notLoggedIn"?"mcp-skill-badge-warning":"mcp-skill-badge-muted"}function Lt(e){return bt.value&&ut(e)==="notLoggedIn"}function wa(e,a,d){return a==="popular"&&We(d).length===0?e.slice(0,ea):e}function Sa(e,a,d){if(a!=="popular"||We(d).length>0)return e;const w=new Set,j=[];for(const ge of e){const Pe=dt(ge.name).toLowerCase();if(!w.has(Pe)&&(w.add(Pe),j.push(ge),j.length>=ea))break}return j}function _a(e,a){return e.filter(d=>Xe([d.displayName,d.name,d.description,d.developerName,d.category,d.marketplaceDisplayName,...d.capabilities],a))}function La(e,a){return e.filter(d=>Xe([d.name,d.description,d.developer,d.category,d.distributionChannel,...d.pluginDisplayNames],a))}function Aa(e,a){return e.filter(d=>Xe([d.name,d.slug,d.description,...d.authModes,...d.connectionStatuses],a))}function At(e){return(e.installed?500:0)+(e.enabled?40:0)+(e.developerName.toLowerCase().includes("openai")?140:0)+(e.sourceType==="local"?80:0)+e.capabilities.length*12+Ze(`${e.displayName} ${e.name} ${e.description} ${e.category}`,u)}function Pt(e){const a=dt(e.name);return(e.isAccessible?1e4:0)+Ze(a,A)+(e.pluginDisplayNames.length>0?260:0)+(e.distributionChannel==="DEFAULT_OAI_CATALOG"?120:0)+(e.isEnabled?40:0)+(e.installUrl?20:0)+Ze(`${e.name} ${e.description} ${e.category} ${e.pluginDisplayNames.join(" ")}`,$)-e.catalogRank*.001}function It(e){return(e.authStatus==="oAuth"?180:0)+(e.authStatus==="bearerToken"?140:0)+Math.min(e.tools.length,50)*6+Math.min(e.resources.length+e.resourceTemplates.length,30)*3+Ze(e.name,c)}function Pa(e,a){return a==="name"?[...e].sort((d,w)=>d.displayName.localeCompare(w.displayName)):a==="date"?[...e]:[...e].sort((d,w)=>At(w)-At(d)||d.displayName.localeCompare(w.displayName))}function Ia(e,a){return a==="name"?[...e].sort((d,w)=>d.name.localeCompare(w.name)):a==="date"?[...e].sort((d,w)=>d.catalogRank-w.catalogRank):[...e].sort((d,w)=>Pt(w)-Pt(d)||d.name.localeCompare(w.name))}function Ma(e,a){return[...e].sort((d,w)=>It(w)-It(d)||d.name.localeCompare(w.name))}function T(e,a="success"){Se.value={text:e,type:a},Ve&&clearTimeout(Ve),Ve=setTimeout(()=>{Se.value=null},3e3)}function et(e){return e?e.startsWith("connectors://")?`/codex-api/connector-logo?src=${encodeURIComponent(e)}`:/^https?:\/\//i.test(e)||e.startsWith("data:")?e:e.startsWith("/")?`/codex-local-image?path=${encodeURIComponent(e)}`:"":""}function yt(e){return e?e.logoUrl||et(e.logoPath)||e.composerIconUrl||et(e.composerIconPath):""}function Fa(e){return et(e.logoUrlDark||e.logoUrl)}function Mt(e){return e.activeCount>0?`${e.activeCount} ${r("connected")} ${e.activeCount===1?r("account"):r("accounts")}`:e.isNoAuth?r("No auth required"):e.connectionStatuses.length>0?e.connectionStatuses.join(", "):e.authModes.join(", ")||r("Connection required")}function Ea(e){return e.isNoAuth||e.activeCount>0}function pt(e){return e.isNoAuth?"":e.activeCount>0?r("Manage"):e.totalConnections>0?r("Reconnect"):r("Connect")}function Ta(e){const a=e.trim().toUpperCase();return a==="ACTIVE"?r("Active"):a==="EXPIRED"?r("Expired"):a==="FAILED"?r("Failed"):a==="INITIATED"?r("Pending"):a||r("Unknown")}function Ua(e){const a=e.trim().toUpperCase();return a==="ACTIVE"?"is-ok":a==="INITIATED"?"is-warning":a==="EXPIRED"||a==="FAILED"?"is-error":"is-muted"}function Na(e){return`app:${e.id}:`}function Da(e){Le.value||M("try-item",{kind:"app",name:e.id,displayName:e.name})}function xa(e){return`plugin:${e.name}:`}function Ft(e){return`composio:${e}:`}function Oa(e){Le.value||M("try-item",{kind:"plugin",name:e.name,displayName:e.displayName})}function Et(e){return Ea(e)}function Ra(e,a=[]){const d=a.find(j=>j.status==="ACTIVE"&&!j.isDisabled),w=d!=null&&d.wordId?` If there are multiple accounts, prefer \`${d.wordId}\`.`:"";return`Use the Composio CLI skill with the ${e.name} connector (${e.slug}). Start by listing what it can do here, mention the current connection status, and suggest one safe command I can run now.${w}`}function Tt(e,a=[]){Le.value||M("try-item",{kind:"composio",name:e.slug,displayName:e.name,prompt:Ra(e,a),attachedSkills:[{name:"composio-cli",path:Kc}]})}function ne(e){const a=e.trim();/^https?:\/\//i.test(a)&&window.location.assign(a)}function Ba(e){const a=e.find(d=>d.needsAuth&&d.installUrl.trim().length>0);return a?(ne(a.installUrl),!0):!1}function Ga(e){return e.brandColor?{backgroundColor:e.brandColor,color:"#fff"}:{}}async function Ka(){try{C.value=new Set(await ks())}catch{C.value=new Set}finally{S.value=!0}}async function pe(){var e;if(vt.value){W.value=!0,Ge.value="";try{const a=(e=y.cwd)==null?void 0:e.trim(),[d]=await Promise.all([fs(a?[a]:void 0),Je.value?De():Promise.resolve()]);f.value=d}catch(a){Ge.value=a instanceof Error?a.message:"Failed to load plugins"}finally{W.value=!1}}}async function ja(){const e=g.value.trim();if(e){k.value=!0,v.value="add";try{await $s(e),g.value="",T("Marketplace added"),await pe()}catch(a){T(a instanceof Error?a.message:"Failed to add marketplace","error")}finally{k.value=!1,v.value=""}}}async function Ha(e){k.value=!0,v.value=`remove:${e}`;try{await Cs(e),T("Marketplace removed"),await pe()}catch(a){T(a instanceof Error?a.message:"Failed to remove marketplace","error")}finally{k.value=!1,v.value=""}}async function qa(){k.value=!0,v.value="upgrade";try{const e=await ws();e.errors.length>0?T(e.errors.join("; "),"error"):T(`Upgraded ${e.upgradedRoots.length||e.selectedMarketplaces.length||"all"} marketplace${e.upgradedRoots.length+e.selectedMarketplaces.length===1?"":"s"}`),await pe()}catch(e){T(e instanceof Error?e.message:"Failed to upgrade marketplaces","error")}finally{k.value=!1,v.value=""}}async function De(){var e;if(Je.value){he.value=!0,Ke.value="";try{V.value=await Ss(((e=y.threadId)==null?void 0:e.trim())||void 0)}catch(a){Ke.value=a instanceof Error?a.message:"Failed to load apps"}finally{he.value=!1}}}async function Ae(e=!1){if(fe.value){nt=!0;return}fe.value=!0,je.value="";try{const a=await _s();if(I.value=a,!a.available||!a.authenticated){D.value=[],K.value=null,Q.value=0;return}const d=e?K.value:null,w=await Ls(X.value,d,jc);D.value=e?[...D.value,...w.data]:w.data,K.value=w.nextCursor,Q.value=w.total}catch(a){je.value=a instanceof Error?a.message:"Failed to load Composio connectors",D.value=[],K.value=null,Q.value=0}finally{fe.value=!1,nt&&(nt=!1,Ae())}}async function za(){!$t.value||fe.value||await Ae(!0)}async function tt(){if(rt.value){Me.value=!0,He.value="";try{Z.value=await Jt()}catch(e){He.value=e instanceof Error?e.message:"Failed to load MCP servers"}finally{Me.value=!1}}}async function Ut(){var e;if(!(!rt.value||!((e=N.value)!=null&&e.mcpServers.length)))try{Z.value=await Jt()}catch{}}function Nt(e=!1){E.value==="plugins"&&pe(),E.value==="apps"&&De(),E.value==="composio"&&Ae(),E.value==="skills"&&(e&&gt.value?Ht():tt())}function Va(e){if(e==="app/list/updated"){De();return}(e==="mcpServer/startupStatus/updated"||e==="mcpServer/oauthLogin/completed")&&tt()}F({refreshFromNotification:Va});async function Qa(){ce.value=!0;try{E.value==="plugins"?await pe():E.value==="apps"?await De():E.value==="composio"?await Ae():E.value==="skills"&&gt.value?await Ht():E.value==="skills"&&await tt()}finally{ce.value=!1}}async function Dt(e){L.value=e,N.value=null,Ee.value="",ue.value=[],$e.value=!0,qe.value=!0;try{N.value=await As(e),L.value=N.value.summary,Je.value&&V.value.length===0&&await De(),await Ut()}catch(a){Ee.value=a instanceof Error?a.message:"Failed to load plugin"}finally{qe.value=!1}}async function xt(e){if(!bt.value)return!1;we.value=e;try{const a=await Ps(e);return a.authorizationUrl?(ne(a.authorizationUrl),!0):(T(r("No login URL returned for {name}",{name:e}),"error"),!1)}catch(a){return T(a instanceof Error?a.message:r("Failed to start login for {name}",{name:e}),"error"),!1}finally{we.value=""}}async function Wa(e){await Ut();const a=e.mcpServers.find(d=>Lt(d));a&&await xt(a)}function mt(){$e.value=!1}function Ot(){const e=L.value;return e?e.marketplacePath?`${e.marketplacePath.replace(/[\\/]+$/,"")}/${e.name}`:e.sourceUrl||"":""}async function Rt(){_e.value="",oe.value=!0,ie.value=!0;try{R.value=await Is()}catch(e){_e.value=e instanceof Error?e.message:"Failed to load plugin shares"}finally{ie.value=!1}}async function Ya(){const e=Ot();if(e){ee.value=!0,ye.value="save";try{const a=await Ms(e);T(a.shareUrl?"Plugin shared":"Plugin shared (no URL returned)"),await Rt()}catch(a){_e.value=a instanceof Error?a.message:"Failed to share plugin"}finally{ee.value=!1,ye.value=""}}}async function Ja(e){ee.value=!0,ye.value=`delete:${e}`;try{await Fs(e),R.value=R.value.filter(a=>a.remotePluginId!==e),T("Share removed")}catch(a){_e.value=a instanceof Error?a.message:"Failed to remove share"}finally{ee.value=!1,ye.value=""}}async function Xa(e){ee.value=!0,ye.value=`checkout:${e}`;try{await Es(e),T("Plugin checked out")}catch(a){_e.value=a instanceof Error?a.message:"Failed to checkout plugin"}finally{ee.value=!1,ye.value=""}}function Bt(){oe.value=!1}async function Gt(e){de.value=!0,ze.value=!0,Ce.value="",P.value=null;try{P.value=await Ts(e)}catch(a){Ce.value=a instanceof Error?a.message:"Failed to load Composio connector"}finally{ze.value=!1}}function Kt(){de.value=!1}async function Za(e){var a;ve.value=e.slug;try{const d=await Gs(e.slug);if(!d.redirectUrl){T(r("No login URL returned for {name}",{name:e.name}),"error");return}ne(d.redirectUrl),T(r("Opened {name} authorization",{name:e.name})),await Ae(),de.value&&((a=P.value)==null?void 0:a.connector.slug)===e.slug&&await Gt(e.slug)}catch(d){T(d instanceof Error?d.message:r("Failed to connect {name}",{name:e.name}),"error")}finally{ve.value=""}}async function jt(e){var a;if(e.activeCount>0&&((a=I.value)!=null&&a.webUrl)){ne(I.value.webUrl);return}await Za(e)}async function es(){Ue.value=!0;const e=window.open("about:blank","_blank");e&&(e.opener=null);try{const a=await Us();a.loginUrl&&e?e.location.href=a.loginUrl:a.loginUrl?ne(a.loginUrl):e==null||e.close(),T("Composio CLI login started")}catch(a){e==null||e.close(),T(a instanceof Error?a.message:"Failed to start Composio login","error")}finally{Ue.value=!1}}async function ts(){Te.value=!0;try{await Ns(),T("Composio CLI installed"),await Ae()}catch(e){T(e instanceof Error?e.message:"Failed to install Composio CLI","error")}finally{Te.value=!1}}async function as(){if(L.value&&!ct.value){Y.value=!0;try{const e=await Ds(L.value);ue.value=e.appsNeedingAuth,T(`${L.value.displayName} ${r("plugin installed")}`);const a=Ba(e.appsNeedingAuth);await pe();const d=f.value.find(w=>{var j;return w.id===((j=L.value)==null?void 0:j.id)});d&&(await Dt(d),!a&&N.value&&await Wa(N.value))}catch(e){T(e instanceof Error?e.message:"Failed to install plugin","error")}finally{Y.value=!1}}}async function ss(){if(L.value){Y.value=!0;try{const e=L.value.displayName;await xs(L.value.id),T(`${e} ${r("plugin uninstalled")}`),mt(),await pe()}catch(e){T(e instanceof Error?e.message:"Failed to uninstall plugin","error")}finally{Y.value=!1}}}async function ls(){if(L.value){Y.value=!0;try{const e=!L.value.enabled;await Os(L.value.id,e),L.value={...L.value,enabled:e},N.value&&(N.value={...N.value,summary:{...N.value.summary,enabled:e}}),T(`${L.value.displayName} ${r("plugin")} ${r(e?"enabled":"disabled")}`),await pe()}catch(e){T(e instanceof Error?e.message:"Failed to update plugin","error")}finally{Y.value=!1}}}async function os(e){Ne.value=e.id;try{const a=!e.isEnabled;await Rs(e.id,a),V.value=V.value.map(d=>d.id===e.id?{...d,isEnabled:a}:d),T(`${e.name} ${r("app")} ${r(a?"enabled":"disabled")}`)}catch(a){T(a instanceof Error?a.message:"Failed to update app","error")}finally{Ne.value=""}}async function Ht(){Be.value=!0;try{await Bs(),await tt(),T("MCP servers reloaded")}catch(e){T(e instanceof Error?e.message:"Failed to reload MCP servers","error")}finally{Be.value=!1}}function is(e){const a=new Set(O.value);a.has(e)?a.delete(e):a.add(e),O.value=a}return Ie(E,e=>{x.name==="skills"&&x.query.tab!==e&&H.replace({name:"skills",query:{...x.query,tab:e}}),Nt()}),Ie(()=>x.query.tab,()=>{if(x.name!=="skills")return;const e=te();E.value!==e&&(E.value=e)}),Ie(X,()=>{E.value==="composio"&&(D.value=[],K.value=null,Q.value=0,Qe&&clearTimeout(Qe),Qe=setTimeout(()=>{Ae()},250))}),Ie(()=>y.cwd,()=>{E.value==="plugins"&&pe()}),Ie(()=>y.threadId,()=>{(E.value==="apps"||E.value==="plugins")&&De()}),aa(async()=>{await Ka(),Nt()}),(e,a)=>{var d,w,j,ge,Pe,at,qt,zt,Vt,Qt;return l(),o("div",nr,[s("div",rr,[s("div",null,[s("h2",cr,i(n(r)("Skills"))+" & "+i(n(r)("Apps")),1),s("p",dr,i(la.value.subtitle),1)]),s("div",ur,[s("button",{class:"directory-refresh",type:"button",disabled:ce.value,onClick:Qa},i(ce.value?"Refreshing...":"Refresh"),9,yr)])]),s("div",pr,[(l(!0),o(U,null,B(G.value,m=>(l(),o("button",{key:m.id,class:J(["directory-tab",{"is-active":E.value===m.id}]),type:"button",role:"tab","aria-selected":E.value===m.id,onClick:Ye=>E.value=m.id},i(m.label),11,mr))),128))]),Se.value?(l(),o("div",{key:0,class:J(["directory-toast",{"is-error":Se.value.type==="error"}])},i(Se.value.text),3)):p("",!0),E.value==="plugins"?(l(),re(ri,{key:1,plugins:ra.value,"search-query":se.value,"sort-mode":me.value,"supports-plugins":vt.value,"supports-marketplace":oa.value,error:Ge.value,"is-loading":W.value,marketplaces:ca.value,"marketplace-source-url":g.value,"marketplace-action-name":v.value,"is-marketplace-action-in-flight":k.value,"plugin-icon-src":yt,"fallback-style":Ga,"open-plugin-detail":Dt,"add-marketplace":ja,"remove-marketplace":Ha,"upgrade-all-marketplaces":qa,"disabled-label":n(r)("Disabled"),"installed-label":n(r)("Installed"),"plugin-label":n(r)("Plugin"),"upgrade-all-label":n(r)("Upgrade all"),"upgrading-label":n(r)("Upgrading..."),"removing-label":n(r)("Removing..."),"remove-label":n(r)("Remove"),"adding-label":n(r)("Adding..."),"add-label":n(r)("Add"),"onUpdate:searchQuery":a[0]||(a[0]=m=>se.value=m),"onUpdate:sortMode":a[1]||(a[1]=m=>me.value=m),"onUpdate:marketplaceSourceUrl":a[2]||(a[2]=m=>g.value=m)},null,8,["plugins","search-query","sort-mode","supports-plugins","supports-marketplace","error","is-loading","marketplaces","marketplace-source-url","marketplace-action-name","is-marketplace-action-in-flight","disabled-label","installed-label","plugin-label","upgrade-all-label","upgrading-label","removing-label","remove-label","adding-label","add-label"])):E.value==="apps"?(l(),re(kl,{key:2,apps:da.value,"search-query":le.value,"sort-mode":ae.value,"supports-apps":Je.value,error:Ke.value,"is-loading":he.value,"action-id":Ne.value,"try-in-flight-key":y.tryInFlightKey,"is-try-action-in-flight":Le.value,"app-logo-src":Fa,"app-meta-label":fa,"app-try-key":Na,"toggle-app":os,"open-external-url":ne,"try-app":Da,"disabled-label":n(r)("Disabled"),"connected-label":n(r)("Connected"),"enable-label":n(r)("Enable"),"disable-label":n(r)("Disable"),"manage-label":n(r)("Manage"),"login-label":n(r)("Login"),"try-label":n(r)("Try it!"),"starting-label":n(r)("Starting..."),"onUpdate:searchQuery":a[3]||(a[3]=m=>le.value=m),"onUpdate:sortMode":a[4]||(a[4]=m=>ae.value=m)},null,8,["apps","search-query","sort-mode","supports-apps","error","is-loading","action-id","try-in-flight-key","is-try-action-in-flight","disabled-label","connected-label","enable-label","disable-label","manage-label","login-label","try-label","starting-label"])):E.value==="composio"?(l(),re(Po,{key:3,"composio-status":I.value,"search-query":X.value,"sort-mode":ke.value,error:je.value,"is-loading-composio":fe.value,"is-installing-composio":Te.value,"is-starting-composio-login":Ue.value,"visible-composio-connectors":ua.value,"visible-composio-preview-connectors":ya.value,"workspace-summary":ha.value,"connector-count":D.value.length,total:Q.value,"has-more-composio-connectors":$t.value,"action-slug":ve.value,"is-try-action-in-flight":Le.value,"try-in-flight-key":y.tryInFlightKey,"composio-meta-label":Mt,"composio-primary-action-label":pt,"can-try-composio":Et,"composio-try-key":Ft,"open-composio-detail":Gt,"run-composio-primary-action":jt,"try-composio":Tt,"install-composio-cli":ts,"start-composio-cli-login":es,"load-more-composio":za,"open-external-url":ne,"workspace-label":n(r)("Composio workspace"),"connected-label":n(r)("Connected"),"authenticated-label":n(r)("Authenticated"),"no-auth-label":n(r)("No auth"),"preview-label":n(r)("Preview"),"open-dashboard-label":n(r)("Open dashboard"),"details-label":n(r)("Details"),"install-label":n(r)("Install Composio"),"installing-label":n(r)("Installing..."),"login-label":n(r)("Login to Composio"),"opening-label":n(r)("Opening..."),"starting-label":n(r)("Starting..."),"try-label":n(r)("Try it!"),"load-more-label":n(r)("Load more"),"loading-label":n(r)("Loading..."),"onUpdate:searchQuery":a[5]||(a[5]=m=>X.value=m),"onUpdate:sortMode":a[6]||(a[6]=m=>ke.value=m)},null,8,["composio-status","search-query","sort-mode","error","is-loading-composio","is-installing-composio","is-starting-composio-login","visible-composio-connectors","visible-composio-preview-connectors","workspace-summary","connector-count","total","has-more-composio-connectors","action-slug","is-try-action-in-flight","try-in-flight-key","workspace-label","connected-label","authenticated-label","no-auth-label","preview-label","open-dashboard-label","details-label","install-label","installing-label","login-label","opening-label","starting-label","try-label","load-more-label","loading-label"])):E.value==="skills"?(l(),re(ir,{key:4,"try-in-flight-key":y.tryInFlightKey,"supports-mcps":rt.value,"mcp-error":He.value,"is-loading-mcps":Me.value,"visible-mcp-servers":pa.value,"is-mcp-section-open":Fe.value,"expanded-mcp-names":O.value,"format-mcp-auth-status":_t,"mcp-card-badge-class":Ca,"toggle-mcp-section-open":()=>{Fe.value=!Fe.value},"toggle-mcp-expanded":is,onSkillsChanged:a[7]||(a[7]=m=>M("skills-changed")),onTryItem:a[8]||(a[8]=m=>M("try-item",m))},null,8,["try-in-flight-key","supports-mcps","mcp-error","is-loading-mcps","visible-mcp-servers","is-mcp-section-open","expanded-mcp-names","toggle-mcp-section-open"])):p("",!0),(l(),re(st,{to:"body"},[$e.value?(l(),o("div",{key:0,class:"directory-modal-overlay",onClick:Oe(mt,["self"])},[s("article",hr,[s("div",vr,[s("div",gr,[L.value&&yt(L.value)?(l(),o("img",{key:0,class:"directory-card-icon",src:yt(L.value),alt:L.value.displayName,loading:"lazy"},null,8,br)):(l(),o("div",kr,i((d=L.value)==null?void 0:d.displayName.charAt(0)),1)),s("div",fr,[s("h3",$r,i(((w=L.value)==null?void 0:w.displayName)||n(r)("Plugin")),1),s("span",Cr,i(((j=L.value)==null?void 0:j.developerName)||((ge=L.value)==null?void 0:ge.marketplaceDisplayName)||((Pe=L.value)==null?void 0:Pe.marketplaceName)),1)])]),s("button",{class:"directory-modal-close",type:"button","aria-label":n(r)("Close plugin detail"),onClick:mt},i(n(r)("Close")),9,wr)]),s("div",Sr,[Ee.value?(l(),o("div",_r,i(Ee.value),1)):qe.value?(l(),o("div",Lr,"Loading plugin...")):N.value?(l(),o(U,{key:2},[kt.value?(l(),o("p",Ar,i(kt.value),1)):p("",!0),N.value.summary.capabilities.length>0?(l(),o("div",Pr,[a[13]||(a[13]=s("h4",{class:"directory-detail-heading"},"Capabilities",-1)),s("div",Ir,[(l(!0),o(U,null,B(N.value.summary.capabilities,m=>(l(),o("span",{key:m,class:"directory-chip"},i(m),1))),128))])])):p("",!0),s("div",Mr,[N.value.apps.length>0?(l(),o("div",Fr,[s("h4",Er,i(n(r)("Apps")),1),(l(!0),o(U,null,B(N.value.apps,m=>(l(),o("div",{key:m.id,class:"directory-include-row"},[s("span",null,i(m.name),1),wt(m)?(l(),o("span",Tr,"GPT Plus account required")):m.installUrl?(l(),o("button",{key:1,type:"button",onClick:Ye=>ne(m.installUrl)},i(m.needsAuth?"Login":"Manage"),9,Ur)):p("",!0)]))),128))])):p("",!0),N.value.skills.length>0?(l(),o("div",Nr,[s("h4",Dr,i(n(r)("Skills")),1),s("p",xr,i(N.value.skills.map(m=>m.displayName||m.name).join(", ")),1)])):p("",!0),N.value.mcpServers.length>0?(l(),o("div",Or,[a[14]||(a[14]=s("h4",{class:"directory-detail-heading"},"MCP servers",-1)),(l(!0),o(U,null,B(N.value.mcpServers,m=>(l(),o("div",{key:m,class:"directory-include-row"},[s("span",null,[lt(i(m)+" ",1),s("span",{class:J(["directory-auth-status",$a(m)])},i(_t(m)),3)]),Lt(m)?(l(),o("button",{key:0,type:"button",disabled:we.value===m,onClick:Ye=>xt(m)},i(we.value===m?"Opening...":"Authenticate"),9,Rr)):p("",!0)]))),128))])):p("",!0)]),ft.value.length>0?(l(),o("div",Br,[(l(!0),o(U,null,B(ft.value,m=>(l(),o("img",{key:m,src:m,alt:"",loading:"lazy"},null,8,Gr))),128))])):p("",!0),ue.value.length>0?(l(),o("div",Kr,[s("strong",null,i(n(r)("Apps needing auth")),1),(l(!0),o(U,null,B(ue.value,m=>(l(),o("div",{key:m.id,class:"directory-include-row"},[s("span",null,i(m.name),1),m.installUrl?(l(),o("button",{key:0,type:"button",onClick:Ye=>ne(m.installUrl)},i(n(r)("Login")),9,jr)):p("",!0)]))),128))])):p("",!0)],64)):p("",!0)]),s("div",Hr,[L.value&&L.value.installed?(l(),o("button",{key:0,class:"directory-action danger",type:"button",disabled:Y.value,onClick:ss},i(Y.value?"Uninstalling...":"Uninstall"),9,qr)):L.value&&!na.value?(l(),o("button",{key:1,class:"directory-action primary",type:"button",disabled:Y.value||L.value.installPolicy==="NOT_AVAILABLE"||ct.value,onClick:as},i(ct.value?"ChatGPT Plus":Y.value?"Installing...":"Install"),9,zr)):L.value?(l(),o("button",Vr," GPT Plus account required ")):p("",!0),L.value&&L.value.installed?(l(),o("button",{key:3,class:"directory-action",type:"button",disabled:Y.value,onClick:ls},i(L.value.enabled?"Disable":"Enable"),9,Qr)):p("",!0),L.value&&L.value.installed&&L.value.enabled?(l(),o("button",{key:4,class:"directory-action primary",type:"button",disabled:Y.value||Le.value,onClick:a[9]||(a[9]=m=>Oa(L.value))},i(y.tryInFlightKey===xa(L.value)?"Starting...":"Try it!"),9,Wr)):p("",!0),ia.value&&L.value&&L.value.installed?(l(),o("button",{key:5,class:"directory-action",type:"button",onClick:Rt},i(n(r)("Share")),1)):p("",!0)])])])):p("",!0)])),(l(),re(st,{to:"body"},[oe.value?(l(),o("div",{key:0,class:"directory-modal-overlay",onClick:Oe(Bt,["self"])},[s("article",Yr,[s("div",Jr,[s("div",Xr,[s("h3",Zr,i(n(r)("Plugin shares")),1),s("span",ec,i(((at=L.value)==null?void 0:at.displayName)||n(r)("Plugin")),1)]),s("button",{class:"directory-modal-close",type:"button","aria-label":n(r)("Close plugin shares"),onClick:Bt},i(n(r)("Close")),9,tc)]),s("div",ac,[_e.value?(l(),o("div",sc,i(_e.value),1)):ie.value?(l(),o("div",lc,"Loading shares...")):(l(),o(U,{key:2},[R.value.length===0?(l(),o("p",oc,"No shares yet. Share this plugin to make it available on other devices.")):(l(),o("div",ic,[(l(!0),o(U,null,B(R.value,m=>(l(),o("div",{key:m.remotePluginId,class:"directory-share-row"},[s("div",nc,[s("span",rc,i(m.pluginName),1),m.shareUrl?(l(),o("a",{key:0,class:"directory-share-link",href:m.shareUrl,target:"_blank",rel:"noreferrer"},i(m.shareUrl),9,cc)):p("",!0)]),s("button",{class:"directory-share-checkout",type:"button",disabled:ee.value,onClick:Ye=>Xa(m.remotePluginId)},i(ye.value===`checkout:${m.remotePluginId}`?n(r)("Checking out..."):n(r)("Checkout")),9,dc),s("button",{class:"directory-share-delete",type:"button",disabled:ee.value,onClick:Ye=>Ja(m.remotePluginId)},i(ye.value===`delete:${m.remotePluginId}`?n(r)("Removing..."):n(r)("Remove")),9,uc)]))),128))])),s("button",{class:"directory-action primary",type:"button",disabled:ee.value||!Ot(),onClick:Ya},i(ye.value==="save"?n(r)("Sharing..."):n(r)("Share this plugin")),9,yc)],64))])])])):p("",!0)])),(l(),re(st,{to:"body"},[de.value?(l(),o("div",{key:0,class:"directory-modal-overlay",onClick:Oe(Kt,["self"])},[s("article",pc,[s("div",mc,[s("div",hc,[(qt=P.value)!=null&&qt.connector.logoUrl?(l(),o("img",{key:0,class:"directory-card-icon",src:P.value.connector.logoUrl,alt:P.value.connector.name,loading:"lazy"},null,8,vc)):(l(),o("div",gc,i((zt=P.value)==null?void 0:zt.connector.name.charAt(0)),1)),s("div",bc,[s("h3",kc,i(((Vt=P.value)==null?void 0:Vt.connector.name)||"Composio"),1),s("span",fc,i(P.value?Mt(P.value.connector):n(r)("Connector")),1)])]),s("button",{class:"directory-modal-close",type:"button","aria-label":n(r)("Close Composio detail"),onClick:Kt},i(n(r)("Close")),9,$c)]),s("div",Cc,[Ce.value?(l(),o("div",wc,i(Ce.value),1)):ze.value?(l(),o("div",Sc,"Loading connector...")):P.value?(l(),o(U,{key:2},[P.value.connector.description?(l(),o("p",_c,i(P.value.connector.description),1)):p("",!0),s("div",Lc,[s("div",Ac,[a[15]||(a[15]=s("h4",{class:"directory-detail-heading"},"Overview",-1)),s("div",Pc,[s("span",Ic,i(P.value.connector.toolsCount)+" tools",1),P.value.connector.triggersCount>0?(l(),o("span",Mc,i(P.value.connector.triggersCount)+" triggers",1)):p("",!0),P.value.connector.latestVersion?(l(),o("span",Fc,"v"+i(P.value.connector.latestVersion),1)):p("",!0),P.value.connector.authModes.length>0?(l(),o("span",Ec,i(P.value.connector.authModes.join(", ")),1)):p("",!0)])]),s("div",Tc,[a[16]||(a[16]=s("h4",{class:"directory-detail-heading"},"Connections",-1)),P.value.connections.length===0?(l(),o("div",Uc," No linked accounts yet. ")):(l(),o("div",Nc,[(l(!0),o(U,null,B(P.value.connections,m=>(l(),o("div",{key:m.id,class:"directory-include-row"},[s("span",null,[lt(i(m.alias||m.wordId||m.id)+" ",1),s("span",{class:J(["directory-auth-status",Ua(m.status)])},i(Ta(m.status)),3)]),s("span",Dc,i(m.authScheme||"Auth"),1)]))),128))]))])]),P.value.tools.length>0?(l(),o("div",xc,[a[17]||(a[17]=s("h4",{class:"directory-detail-heading"},"Useful tools",-1)),(l(!0),o(U,null,B(P.value.tools.slice(0,8),m=>(l(),o("div",{key:m.slug,class:"directory-include-row"},[s("span",null,i(m.name||m.slug),1),s("span",Oc,i(m.slug),1)]))),128))])):p("",!0)],64)):p("",!0)]),s("div",Rc,[P.value?(l(),o("button",{key:0,class:"directory-action-link",type:"button",onClick:a[10]||(a[10]=m=>ne(P.value.dashboardUrl))}," Open dashboard ")):p("",!0),P.value&&pt(P.value.connector)?(l(),o("button",{key:1,class:"directory-action",type:"button",disabled:ve.value===P.value.connector.slug,onClick:a[11]||(a[11]=m=>jt(P.value.connector))},i(ve.value===((Qt=P.value)==null?void 0:Qt.connector.slug)?"Opening...":pt(P.value.connector)),9,Bc)):p("",!0),P.value&&Et(P.value.connector)?(l(),o("button",{key:2,class:"directory-action primary",type:"button",disabled:Le.value,onClick:a[12]||(a[12]=m=>Tt(P.value.connector,P.value.connections))},i(y.tryInFlightKey===Ft(P.value.connector.slug)?"Starting...":"Try it!"),9,Gc)):p("",!0)])])])):p("",!0)]))])}}});export{zc as default};
@@ -1 +1 @@
1
- import{e as B,f as u,i as d,j as s,F as A,l as S,w as k,n as j,u as r,t as c,k as D,v as T,r as _,_ as V}from"./index-Cu_hRJGY.js";const E={key:0,class:"queued-messages"},L={class:"queued-messages-inner"},z=["onDragstart","onDragover","onDragleave","onDrop"],F=["aria-label","title"],N={class:"queued-row-text"},Q={key:0,class:"queued-row-badge"},U={class:"queued-row-actions"},H=["title","onClick"],I=["title","onClick"],O=["aria-label","title","onClick"],P=B({__name:"QueuedMessages",props:{messages:{}},emits:["edit","steer","delete","reorder"],setup(h,{emit:q}){const C=q,{t:o}=T(),i=_(""),l=_("");function b(t,a){var e;i.value=a,l.value="",(e=t.dataTransfer)==null||e.setData("text/plain",a),t.dataTransfer&&(t.dataTransfer.effectAllowed="move")}function $(t){!i.value||i.value===t||(l.value=t)}function M(t){l.value===t&&(l.value="")}function x(t){const a=i.value;p(),!(!a||a===t)&&C("reorder",{draggedId:a,targetId:t})}function p(){i.value="",l.value=""}function y(t){var w,f,m;const a=t.text.trim();if(a)return a;const e=[],n=((w=t.imageUrls)==null?void 0:w.length)??0,g=((f=t.fileAttachments)==null?void 0:f.length)??0,v=((m=t.skills)==null?void 0:m.length)??0;return n>0&&e.push(`${n} ${o(n===1?"image":"images")}`),g>0&&e.push(`${g} ${o(g===1?"file":"files")}`),v>0&&e.push(`${v} ${o(v===1?"skill":"skills")}`),e.join(", ")||o("(empty queued message)")}return(t,a)=>h.messages.length>0?(u(),d("div",E,[s("div",L,[(u(!0),d(A,null,S(h.messages,e=>(u(),d("div",{key:e.id,class:j(["queued-row",{"is-dragging":i.value===e.id,"is-drop-target":l.value===e.id&&i.value!==e.id}]),draggable:"true",onDragstart:n=>b(n,e.id),onDragover:k(n=>$(e.id),["prevent"]),onDragleave:n=>M(e.id),onDrop:k(n=>x(e.id),["prevent"]),onDragend:p},[s("button",{class:"queued-row-drag",type:"button","aria-label":r(o)("Drag to reorder queued message"),title:r(o)("Drag to reorder queued message")},[...a[0]||(a[0]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"},[s("path",{fill:"currentColor",d:"M9 5.5A1.5 1.5 0 1 1 6 5.5a1.5 1.5 0 0 1 3 0m0 6.5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1.5 8A1.5 1.5 0 1 0 7.5 17a1.5 1.5 0 0 0 0 3m10-13A1.5 1.5 0 1 0 17.5 4a1.5 1.5 0 0 0 0 3m1.5 5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1.5 8a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3"})],-1)])],8,F),a[2]||(a[2]=s("svg",{class:"queued-row-icon",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"},[s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})],-1)),s("span",N,c(y(e)),1),e.awaitingCompaction?(u(),d("span",Q,c(r(o)("Compacts context before send")),1)):D("",!0),s("div",U,[s("button",{class:"queued-row-edit",type:"button",title:r(o)("Edit queued message"),onClick:n=>t.$emit("edit",e.id)},c(r(o)("Edit")),9,H),s("button",{class:"queued-row-steer",type:"button",title:r(o)("Send now without interrupting work"),onClick:n=>t.$emit("steer",e.id)},c(r(o)("Steer")),9,I),s("button",{class:"queued-row-delete",type:"button","aria-label":r(o)("Delete queued message"),title:r(o)("Delete queued message"),onClick:n=>t.$emit("delete",e.id)},[...a[1]||(a[1]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"},[s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 7h16M10 11v6M14 11v6M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-12M9 7V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3"})],-1)])],8,O)])],42,z))),128))])])):D("",!0)}}),J=V(P,[["__scopeId","data-v-631d6962"]]);export{J as default};
1
+ import{e as B,f as u,i as d,j as s,F as A,l as S,w as k,n as j,u as r,t as c,k as D,v as T,r as _,_ as V}from"./index-BJ-YiA9y.js";const E={key:0,class:"queued-messages"},L={class:"queued-messages-inner"},z=["onDragstart","onDragover","onDragleave","onDrop"],F=["aria-label","title"],N={class:"queued-row-text"},Q={key:0,class:"queued-row-badge"},U={class:"queued-row-actions"},H=["title","onClick"],I=["title","onClick"],O=["aria-label","title","onClick"],P=B({__name:"QueuedMessages",props:{messages:{}},emits:["edit","steer","delete","reorder"],setup(h,{emit:q}){const C=q,{t:o}=T(),i=_(""),l=_("");function b(t,a){var e;i.value=a,l.value="",(e=t.dataTransfer)==null||e.setData("text/plain",a),t.dataTransfer&&(t.dataTransfer.effectAllowed="move")}function $(t){!i.value||i.value===t||(l.value=t)}function M(t){l.value===t&&(l.value="")}function x(t){const a=i.value;p(),!(!a||a===t)&&C("reorder",{draggedId:a,targetId:t})}function p(){i.value="",l.value=""}function y(t){var w,f,m;const a=t.text.trim();if(a)return a;const e=[],n=((w=t.imageUrls)==null?void 0:w.length)??0,g=((f=t.fileAttachments)==null?void 0:f.length)??0,v=((m=t.skills)==null?void 0:m.length)??0;return n>0&&e.push(`${n} ${o(n===1?"image":"images")}`),g>0&&e.push(`${g} ${o(g===1?"file":"files")}`),v>0&&e.push(`${v} ${o(v===1?"skill":"skills")}`),e.join(", ")||o("(empty queued message)")}return(t,a)=>h.messages.length>0?(u(),d("div",E,[s("div",L,[(u(!0),d(A,null,S(h.messages,e=>(u(),d("div",{key:e.id,class:j(["queued-row",{"is-dragging":i.value===e.id,"is-drop-target":l.value===e.id&&i.value!==e.id}]),draggable:"true",onDragstart:n=>b(n,e.id),onDragover:k(n=>$(e.id),["prevent"]),onDragleave:n=>M(e.id),onDrop:k(n=>x(e.id),["prevent"]),onDragend:p},[s("button",{class:"queued-row-drag",type:"button","aria-label":r(o)("Drag to reorder queued message"),title:r(o)("Drag to reorder queued message")},[...a[0]||(a[0]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"},[s("path",{fill:"currentColor",d:"M9 5.5A1.5 1.5 0 1 1 6 5.5a1.5 1.5 0 0 1 3 0m0 6.5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1.5 8A1.5 1.5 0 1 0 7.5 17a1.5 1.5 0 0 0 0 3m10-13A1.5 1.5 0 1 0 17.5 4a1.5 1.5 0 0 0 0 3m1.5 5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1.5 8a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3"})],-1)])],8,F),a[2]||(a[2]=s("svg",{class:"queued-row-icon",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"},[s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})],-1)),s("span",N,c(y(e)),1),e.awaitingCompaction?(u(),d("span",Q,c(r(o)("Compacts context before send")),1)):D("",!0),s("div",U,[s("button",{class:"queued-row-edit",type:"button",title:r(o)("Edit queued message"),onClick:n=>t.$emit("edit",e.id)},c(r(o)("Edit")),9,H),s("button",{class:"queued-row-steer",type:"button",title:r(o)("Send now without interrupting work"),onClick:n=>t.$emit("steer",e.id)},c(r(o)("Steer")),9,I),s("button",{class:"queued-row-delete",type:"button","aria-label":r(o)("Delete queued message"),title:r(o)("Delete queued message"),onClick:n=>t.$emit("delete",e.id)},[...a[1]||(a[1]=[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24","aria-hidden":"true"},[s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 7h16M10 11v6M14 11v6M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-12M9 7V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3"})],-1)])],8,O)])],42,z))),128))])])):D("",!0)}}),J=V(P,[["__scopeId","data-v-631d6962"]]);export{J as default};