@alook/app 0.0.139 → 0.0.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/web/.open-next/.build/durable-objects/queue.js +5 -5
- package/bundled/web/.open-next/assets/BUILD_ID +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{3a4lcn1k6my37.js → 0u1g621cl6cpa.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{0gadq1gaq7l2d.js → 0v8_t40u7sj2s.js} +3 -3
- package/bundled/web/.open-next/assets/_next/static/chunks/{2h7oy-ljwoem9.js → 1avrt94npx8p3.js} +1 -1
- package/bundled/web/.open-next/assets/_next/static/chunks/{0rmmmmqzr5q8u.js → 1vdalq9vvychb.js} +1 -1
- package/bundled/web/.open-next/cache/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/_global-error.cache +1 -1
- package/bundled/web/.open-next/cache/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/_not-found.cache +1 -1
- package/bundled/web/.open-next/cache/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/device.cache +1 -1
- package/bundled/web/.open-next/cache/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/privacy.cache +1 -1
- package/bundled/web/.open-next/cache/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/sitemap.xml.cache +1 -1
- package/bundled/web/.open-next/cloudflare/cache-assets-manifest.sql +1 -1
- package/bundled/web/.open-next/cloudflare/init.js +1 -1
- package/bundled/web/.open-next/dynamodb-provider/dynamodb-cache.json +1 -1
- package/bundled/web/.open-next/middleware/handler.mjs +4 -4
- package/bundled/web/.open-next/server-functions/default/src/web/.next/BUILD_ID +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/build-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/prerender-manifest.json +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/required-server-files.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/invite/[token]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/studio/new/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/activity/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/[convId]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/chat/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/email/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/files/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/meetings/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/[id]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/new/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/agents/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/calendar/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/flags/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/help/email-setup/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/home/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/issues/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/runtimes/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/[traceId]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/traces/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/w/[slug]/unread/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(app)/workspaces/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/(auth)/sign-in/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/device/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/[id]/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/app/templates/page_client-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/[root-of-the-server]__13aweo1._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/_0qgcnj5._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_1kzi5ju._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/chunks/ssr/src_web_src_app_(app)_w_[slug]_runtimes_page_tsx_11-1juy._.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-build-manifest.js +3 -3
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/middleware-manifest.json +5 -5
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.js +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/.next/server/server-reference-manifest.json +1 -1
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs +6 -6
- package/bundled/web/.open-next/server-functions/default/src/web/handler.mjs.meta.json +33 -33
- package/bundled/web/.open-next/server-functions/default/src/web/index.mjs +4 -4
- package/bundled/web/wrangler.toml +1 -1
- package/dist/cli/index.js +11 -10
- package/dist/index.js +37 -11
- package/package.json +1 -1
- /package/bundled/web/.open-next/assets/_next/static/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/_buildManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/_clientMiddlewareManifest.js +0 -0
- /package/bundled/web/.open-next/assets/_next/static/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/_ssgManifest.js +0 -0
- /package/bundled/web/.open-next/cache/{0z9UpPLBZKa_jgTjfoBR5 → WTLpHjXNd0wVnZOUBMJJz}/robots.txt.cache +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[597047,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(780956),g=a.i(630991),h=a.i(506180),i=a.i(454607),j=a.i(588339),k=a.i(732254),l=a.i(334235),m=a.i(76592),n=a.i(25668),o=a.i(390248),p=a.i(946621),q=b([i]);[i]=q.then?(await q)():q,a.s(["GeneralTab",0,function(){let{workspaceId:a,slug:b}=(0,h.useWorkspace)(),c=(0,i.useSession)(),q=(0,g.useRouter)(),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!0),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)({}),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),L=(0,e.useCallback)(async()=>{u(!0);try{let b=c.data?.user?.id,[d,e]=await Promise.all([(0,j.listMembers)(a),(0,j.listWorkspaces)()]),f=d.find(a=>a.user_id===b);s(f?.role??"");let g=e.find(b=>b.id===a);g&&(w(g.name),y(g.slug),A(g.name),C(g.slug))}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to load workspace info")}finally{u(!1)}},[a,c.data?.user?.id]);(0,e.useEffect)(()=>{c.data&&L()},[L,c.data]);let M=v!==z||x!==B,N=async()=>{let c=(0,o.validateWorkspaceForm)({name:v,slug:x});if(G(c),!(0,o.hasWorkspaceFormErrors)(c)){E(!0);try{let c=await (0,j.updateWorkspace)(a,{name:v.trim(),slug:x.trim()});(0,p.trackSettingsUpdated)({setting_tab:"general"}),A(c.name),C(c.slug),f.toast.success("Workspace updated"),c.slug!==b&&q.replace(`/w/${c.slug}/settings`)}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to update workspace")}finally{E(!1)}}},O=async()=>{if(H===z){K(!0);try{await (0,j.deleteWorkspace)(a,z),f.toast.success("Workspace deleted"),q.replace("/workspaces")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to delete workspace")}finally{K(!1)}}};return t?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(n.Skeleton,{className:"h-4 w-32"}),(0,d.jsx)(n.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(n.Skeleton,{className:"h-10 w-full"})]}):"owner"!==r?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Only workspace owners can edit workspace settings."}):(0,d.jsxs)("div",{className:"space-y-10",children:[(0,d.jsxs)("section",{className:"space-y-4",children:[(0,d.jsx)("h2",{className:"text-sm font-medium",children:"Workspace"}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(m.Label,{htmlFor:"workspace-name",children:"Name"}),(0,d.jsx)(l.Input,{id:"workspace-name",value:v,onChange:a=>{let b=a.target.value;w(b),F.name&&b.trim()&&G(a=>({...a,name:void 0}))},placeholder:"Workspace name","aria-invalid":!!F.name,"aria-describedby":F.name?"workspace-name-error":void 0}),F.name&&(0,d.jsx)("p",{id:"workspace-name-error",className:"text-xs text-destructive",children:F.name})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(m.Label,{htmlFor:"workspace-slug",children:"Slug"}),(0,d.jsx)(l.Input,{id:"workspace-slug",value:x,onChange:a=>{let b=a.target.value;y(b),F.slug&&b.trim()&&G(a=>({...a,slug:void 0}))},placeholder:"workspace-slug","aria-invalid":!!F.slug,"aria-describedby":F.slug?"workspace-slug-error":void 0}),F.slug&&(0,d.jsx)("p",{id:"workspace-slug-error",className:"text-xs text-destructive",children:F.slug}),(0,d.jsxs)("p",{className:"text-xs text-muted-foreground/70",children:["Used in URLs: /w/",x,"/"]})]})]}),(0,d.jsx)(k.Button,{size:"sm",onClick:N,disabled:!M||D,children:D?"Saving…":"Save"})]}),(0,d.jsxs)("section",{className:"space-y-4",children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-destructive",children:"Danger Zone"}),(0,d.jsxs)("div",{className:"rounded-md border border-destructive/30 p-4 space-y-3",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Deleting this workspace is permanent and cannot be undone. All agents, conversations, and data will be lost."}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsxs)(m.Label,{htmlFor:"delete-confirm",className:"text-xs",children:["Type ",(0,d.jsx)("span",{className:"font-medium text-foreground",children:z})," to confirm"]}),(0,d.jsx)(l.Input,{id:"delete-confirm",value:H,onChange:a=>I(a.target.value),placeholder:z})]}),(0,d.jsx)(k.Button,{size:"sm",variant:"destructive",onClick:O,disabled:H!==z||J,children:J?"Deleting…":"Delete Workspace"})]})]})]})}]),c()}catch(a){c(a)}},!1),53909,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(780956),e=a.i(506180),f=a.i(588339),g=a.i(889624),h=a.i(25668),i=a.i(75118);function j({ratio:a,size:c=16,stroke:d=1.5}){let e=(c-d)/2,f=2*Math.PI*e,g=(a<=0?0:a>=1?1:Math.log1p(99*a)/Math.log(100))*f;return(0,b.jsxs)("svg",{width:c,height:c,className:"shrink-0 -rotate-90","aria-hidden":!0,children:[(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:e,fill:"none",stroke:"currentColor",strokeWidth:d,className:"text-border"}),(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:e,fill:"none",stroke:"currentColor",strokeWidth:d,strokeDasharray:`${g} ${f-g}`,strokeLinecap:"round",className:(0,i.cn)("transition-all duration-300",a>.9?"text-destructive/70":a>.7?"text-yellow-500/50":"text-muted-foreground/30")})]})}a.s(["InstructionTab",0,function(){let{workspaceId:a}=(0,e.useWorkspace)(),[i,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(!0),p=(0,c.useRef)(i);(0,c.useEffect)(()=>{p.current=i},[i]);let q=(0,c.useRef)(l);(0,c.useEffect)(()=>{q.current=l},[l]);let r=(0,c.useRef)(null),s=(0,c.useRef)(!1),t=(0,c.useCallback)(async()=>{o(!0);try{let b=await (0,f.getMemberMe)(a);k(b.global_instruction),m(b.global_instruction)}catch(a){d.toast.error(a instanceof Error?a.message:"Failed to load settings")}finally{o(!1)}},[a]);(0,c.useEffect)(()=>{t()},[t]);let u=(0,c.useRef)(()=>{}),v=(0,c.useCallback)(async()=>{if(s.current)return;let b=p.current;if(b!==q.current){s.current=!0;try{let c=await (0,f.updateMemberMe)(a,b);m(c.global_instruction)}catch(a){d.toast.error(a instanceof Error?a.message:"Failed to save")}finally{s.current=!1,p.current!==q.current&&u.current()}}},[a]),w=(0,c.useCallback)(()=>{r.current&&clearTimeout(r.current),r.current=setTimeout(v,500)},[v]);(0,c.useEffect)(()=>{u.current=w},[w]);let x=(0,c.useCallback)(a=>{k(a),w()},[w]);(0,c.useEffect)(()=>{let b=()=>{if(r.current&&clearTimeout(r.current),p.current!==q.current){let b=new URLSearchParams({workspace_id:a});fetch(`/api/members/me?${b}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({global_instruction:p.current}),keepalive:!0})}};return window.addEventListener("beforeunload",b),()=>window.removeEventListener("beforeunload",b)},[a]),(0,c.useEffect)(()=>()=>{if(r.current&&clearTimeout(r.current),p.current!==q.current){let b=new URLSearchParams({workspace_id:a});fetch(`/api/members/me?${b}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({global_instruction:p.current}),keepalive:!0})}},[a]);let y=i.length/5e4;return n?(0,b.jsxs)("div",{className:"px-6 py-6 space-y-4",children:[(0,b.jsx)(h.Skeleton,{className:"h-4 w-48"}),(0,b.jsx)(h.Skeleton,{className:"h-40 w-full"})]}):(0,b.jsxs)("div",{className:"flex flex-col h-full",children:[(0,b.jsx)("div",{className:"flex-1 px-6 pt-4 pb-4",children:(0,b.jsx)(g.MarkdownEditor,{value:i,onChange:x,placeholder:"Write instructions that every agent you own will follow...",minHeight:"calc(100vh - 240px)",contentType:"markdown",variant:"seamless"})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 px-6 py-3",children:[(0,b.jsx)(j,{ratio:y}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"This instruction is prepended to every agent's individual instruction."})]})]})}])},851688,a=>{"use strict";let b=(0,a.i(410732).default)("user-minus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);a.s(["UserMinus",0,b],851688)},616131,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(780956),g=a.i(340490),h=a.i(790107),i=a.i(396439),j=a.i(851688),k=a.i(506180),l=a.i(454607),m=a.i(588339),n=a.i(732254),o=a.i(25668),p=a.i(525132),q=a.i(75118),r=a.i(946621),s=b([l]);function t(a){return`${window.location.origin}/invite/${a}`}[l]=s.then?(await s)():s,a.s(["MembersTab",0,function(){let{workspaceId:a}=(0,k.useWorkspace)(),b=(0,l.useSession)(),c=b.data?.user?.id,[s,u]=(0,e.useState)([]),[v,w]=(0,e.useState)([]),[x,y]=(0,e.useState)(!0),[z,A]=(0,e.useState)(!1),B=s.find(a=>a.user_id===c)?.role==="owner",C=(0,e.useCallback)(async()=>{y(!0);try{let[b,c]=await Promise.all([(0,m.listMembers)(a),(0,m.listInvites)(a).catch(()=>[])]);u(b),w(c)}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to load members")}finally{y(!1)}},[a]);(0,e.useEffect)(()=>{C()},[C]);let D=async()=>{A(!0);try{let b=await (0,m.createInvite)(a);(0,r.trackTeamMemberInvited)({workspace_id:a}),w(a=>[...a,b]);let c=t(b.token);await navigator.clipboard.writeText(c),f.toast.success("Invite link copied to clipboard")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to generate invite")}finally{A(!1)}},E=async a=>{let b=t(a);try{await navigator.clipboard.writeText(b),f.toast.success("Invite link copied")}catch{f.toast.error("Failed to copy link")}},F=async b=>{try{await (0,m.revokeInvite)(a,b),w(a=>a.filter(a=>a.id!==b)),f.toast.success("Invite revoked")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to revoke invite")}},G=async b=>{try{await (0,m.removeMember)(a,b),u(a=>a.filter(a=>a.id!==b)),f.toast.success("Member removed")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to remove member")}};return x?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(o.Skeleton,{className:"h-4 w-24"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(o.Skeleton,{className:"h-4 w-24 mt-6"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"})]}):(0,d.jsxs)("div",{className:"space-y-8",children:[B&&(0,d.jsxs)("section",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("h2",{className:"text-sm font-medium",children:"Pending Invites"}),(0,d.jsxs)(n.Button,{size:"sm",variant:"outline",onClick:D,disabled:z,children:[(0,d.jsx)(i.Plus,{className:"size-3.5 mr-1"}),z?"Generating…":"Generate invite link"]})]}),0===v.length?(0,d.jsx)("p",{className:"text-xs text-muted-foreground py-2",children:"No active invite links. Generate one to invite someone to this workspace."}):(0,d.jsx)("div",{className:"space-y-1.5",children:v.map(a=>{let b=new Date(a.expires_at),c=b<new Date;return(0,d.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-border/50 px-3 py-2 text-xs",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("p",{className:(0,q.cn)("font-mono truncate",c&&"text-muted-foreground line-through"),children:["/invite/",a.token.slice(0,12),"…"]}),(0,d.jsx)("p",{className:(0,q.cn)("text-muted-foreground/70 mt-0.5",c&&"text-destructive/70"),children:c?"Expired":`Expires ${b.toLocaleDateString()}`})]}),(0,d.jsxs)("div",{className:"flex items-center gap-1 ml-2 shrink-0",children:[!c&&(0,d.jsxs)(p.Tooltip,{children:[(0,d.jsx)(p.TooltipTrigger,{render:(0,d.jsx)(n.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",onClick:()=>E(a.token)}),children:(0,d.jsx)(g.Copy,{className:"size-3.5"})}),(0,d.jsx)(p.TooltipContent,{children:"Copy invite link"})]}),(0,d.jsxs)(p.Tooltip,{children:[(0,d.jsx)(p.TooltipTrigger,{render:(0,d.jsx)(n.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-destructive hover:text-destructive",onClick:()=>F(a.id)}),children:(0,d.jsx)(h.Trash2,{className:"size-3.5"})}),(0,d.jsx)(p.TooltipContent,{children:"Revoke invite"})]})]})]},a.id)})})]}),(0,d.jsxs)("section",{className:"space-y-3",children:[(0,d.jsx)("h2",{className:"text-sm font-medium",children:"Members"}),(0,d.jsx)("div",{className:"space-y-1.5",children:s.map(a=>{let b=a.user_id===c,e=a.name?a.name.split(" ").map(a=>a[0]).join("").slice(0,2).toUpperCase():a.email.slice(0,2).toUpperCase();return(0,d.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border/50 px-3 py-2",children:[(0,d.jsx)("div",{className:"size-7 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground shrink-0 overflow-hidden",children:a.image?(0,d.jsx)("img",{src:a.image,alt:a.name,className:"size-full object-cover"}):e}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("p",{className:"text-sm font-medium truncate leading-tight",children:[a.name||a.email,b&&(0,d.jsx)("span",{className:"ml-1.5 text-xs text-muted-foreground font-normal",children:"(you)"})]}),a.name&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a.email})]}),(0,d.jsx)("span",{className:(0,q.cn)("text-xs px-1.5 py-0.5 rounded shrink-0","owner"===a.role?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"),children:a.role}),B&&!b&&(0,d.jsxs)(p.Tooltip,{children:[(0,d.jsx)(p.TooltipTrigger,{render:(0,d.jsx)(n.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-muted-foreground hover:text-destructive shrink-0",onClick:()=>G(a.id)}),children:(0,d.jsx)(j.UserMinus,{className:"size-3.5"})}),(0,d.jsx)(p.TooltipContent,{children:"Remove member"})]})]},a.id)})})]})]})}]),c()}catch(a){c(a)}},!1),93590,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(780956),e=a.i(951687),f=a.i(973111),g=a.i(626806);a.s(["NotificationTab",0,function(){let[a,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)([...g.NOTIFICATION_EVENTS]),[k,l]=(0,c.useState)(!0),[m,n]=(0,c.useState)(!1);(0,c.useEffect)(()=>{l((0,g.isNotificationSupported)()),h((0,g.getNotificationEnabled)()),j((0,g.getNotificationEvents)()),(0,g.isNotificationSupported)()&&n("denied"===Notification.permission)},[]);let o=async a=>{if(!a){h(!1),(0,g.setNotificationEnabled)(!1);return}await (0,g.requestNotificationPermission)()?(h(!0),(0,g.setNotificationEnabled)(!0)):(n(!0),d.toast.error("Notification permission denied. Please enable it in browser settings."))};return k?(0,b.jsx)("div",{className:"space-y-6",children:(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h2",{className:"text-sm font-medium",children:"Browser Notifications"}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)("p",{className:"text-sm",children:"Enable notifications"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Get notified when tasks finish while the tab is in the background"})]}),(0,b.jsx)(f.Switch,{checked:a,onCheckedChange:o,disabled:m&&!a})]}),m&&!a&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:"Notification permission was denied. Please allow it in your browser settings."}),a&&(0,b.jsxs)("div",{className:"space-y-2 pl-0.5",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Notify me when:"}),g.NOTIFICATION_EVENTS.map(a=>(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm cursor-pointer select-none",children:[(0,b.jsx)(e.Checkbox,{checked:i.includes(a),onCheckedChange:()=>{j(b=>{let c=b.includes(a)?b.filter(b=>b!==a):[...b,a];return(0,g.setNotificationEvents)(c),c})}}),g.NOTIFICATION_EVENT_LABELS[a]]},a))]})]})]})}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Your browser does not support notifications."})}])},390946,a=>{"use strict";var b=a.i(616612),c=a.i(734803);let d=(0,a.i(410732).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]),e="alook-cloud-code-monster-pet-preset-v1",f="alook-cloud-code-monster-pet-preset-changed",g=new Map([{id:"pet-02",name:"Pocket Bell Bot",group:"Inspired Mascots",feature:"bell",shape:"gadget-buddy"},{id:"pet-03",name:"Spark Bolt Pal",group:"Inspired Mascots",feature:"bolt",shape:"electric-mascot"},{id:"pet-04",name:"Star Puff",group:"Inspired Mascots",feature:"star",shape:"star-puff"},{id:"pet-05",name:"Leaf Bud",group:"Inspired Mascots",feature:"leaf",shape:"leaf-bud-shape"},{id:"pet-06",name:"Tiny Flame",group:"Inspired Mascots",feature:"flame",shape:"ember-scout"},{id:"pet-07",name:"Shell Fin",group:"Inspired Mascots",feature:"fins",shape:"shell-sprout"},{id:"pet-08",name:"Block Builder",group:"Inspired Mascots",feature:"visor",shape:"block-builder-shape"},{id:"pet-09",name:"Block Hiss",group:"Inspired Mascots",feature:"mask",shape:"block-hiss-shape"},{id:"pet-10",name:"Block Walker",group:"Inspired Mascots",feature:"visor",shape:"block-walker-shape"},{id:"pet-11",name:"Mushroom Pal",group:"Inspired Mascots",feature:"mushroom",shape:"mushroom-pal-shape"},{id:"pet-12",name:"Blue Spin",group:"Inspired Mascots",feature:"spin",shape:"blue-spinner"},{id:"pet-13",name:"Arcade Chomp",group:"Inspired Mascots",feature:"chomp",shape:"arcade-chomper"},{id:"pet-14",name:"Peek Ghost",group:"Inspired Mascots",feature:"ghost",shape:"peek-ghost-shape"},{id:"pet-15",name:"Red Cap Jumper",group:"Inspired Mascots",feature:"cap",shape:"cap-jumper"},{id:"pet-16",name:"Honey Cub",group:"Inspired Mascots",feature:"ears",shape:"honey-cub-shape"},{id:"pet-17",name:"Ribbon Cat",group:"Inspired Mascots",feature:"bow",shape:"ribbon-cat-shape"},{id:"pet-18",name:"Cozy Hood Bunny",group:"Inspired Mascots",feature:"hood",shape:"cozy-hood-bunny-shape"},{id:"pet-19",name:"Imp Hood",group:"Inspired Mascots",feature:"mask",shape:"imp-hood-shape"},{id:"pet-20",name:"Forest Neighbor",group:"Inspired Mascots",feature:"ears",shape:"forest-neighbor-shape"},{id:"pet-21",name:"Dust Puff",group:"Inspired Mascots",feature:"soot",shape:"dust-puff-shape"},{id:"pet-22",name:"Straw Voyager",group:"Inspired Mascots",feature:"straw",shape:"straw-voyager-shape"},{id:"pet-23",name:"Leaf Runner",group:"Inspired Mascots",feature:"ninja",shape:"leaf-runner-shape"},{id:"pet-24",name:"Energy Pearl",group:"Inspired Mascots",feature:"pearl",shape:"energy-pearl-shape"},{id:"pet-25",name:"Moon Wand",group:"Inspired Mascots",feature:"wand",shape:"moon-wand-shape"},{id:"pet-26",name:"Mecha Guard",group:"Inspired Mascots",feature:"mecha",shape:"mecha-guard-shape"},{id:"pet-27",name:"Teardrop Slime",group:"Inspired Mascots",feature:"slime",shape:"teardrop-slime-shape"},{id:"pet-28",name:"Ink Runner",group:"Inspired Mascots",feature:"ink",shape:"ink-runner-shape"},{id:"pet-29",name:"Little Beagle",group:"Inspired Mascots",feature:"ears",shape:"little-beagle-shape"},{id:"pet-30",name:"Tiny Antler",group:"Inspired Mascots",feature:"horns",shape:"tiny-antler-shape"}].map(a=>[a.id,a])),h=[{id:"pet-01",name:"Claude Pixel",group:"Codex",feature:"square",bodyTop:"#e0845f",body:"#d87352",bodyDark:"#cf684a",bodyLight:"#e88d68",bodySideLight:"#df7d5a",bodySideDark:"#c86347",accent:"#d7654a",accessory:"#f1bc62",eye:"#12100f",highlight:"#f6e7d7"},{id:"pet-02",name:"Blue Pocket Bot",group:"Gadget Buddy",feature:"bell",bodyTop:"#4aa8d8",body:"#2f8fc4",bodyDark:"#2674a4",bodyLight:"#68bce5",bodySideLight:"#48a8d5",bodySideDark:"#1f6591",accent:"#d84e4a",accessory:"#f4c94f",eye:"#10141a",highlight:"#f7fbff",facePatch:"#f6fbff",cheek:"#d84e4a"},{id:"pet-03",name:"Spark Arcade Pal",group:"Electric Mascot",feature:"bolt",bodyTop:"#f2d45a",body:"#e6bd37",bodyDark:"#c89a2a",bodyLight:"#ffe37a",bodySideLight:"#f0cc4c",bodySideDark:"#b58724",accent:"#2f2520",accessory:"#df5145",eye:"#17120e",highlight:"#fff7c7",cheek:"#e94d43"},{id:"pet-04",name:"Pink Star Puff",group:"Star Puff",feature:"star",bodyTop:"#eba0b7",body:"#df7fa0",bodyDark:"#c76589",bodyLight:"#f2b6c8",bodySideLight:"#e993ac",bodySideDark:"#b95778",accent:"#c84d64",accessory:"#f0d862",eye:"#171016",highlight:"#fff0f6",cheek:"#e75c7a"},{id:"pet-05",name:"Leaf Sprite",group:"Forest Starter",feature:"leaf",bodyTop:"#76aa7b",body:"#5f9666",bodyDark:"#4d7c54",bodyLight:"#91bd8f",bodySideLight:"#72a875",bodySideDark:"#426d49",accent:"#2f6f46",accessory:"#d6e78a",eye:"#11160f",highlight:"#f0f8e4",facePatch:"#dceec2"},{id:"pet-06",name:"Ember Starter",group:"Fire Buddy",feature:"flame",bodyTop:"#df8755",body:"#ce6b3f",bodyDark:"#af5333",bodyLight:"#ee9d6b",bodySideLight:"#dd7b4c",bodySideDark:"#9a482c",accent:"#8d3d2f",accessory:"#f3c34b",eye:"#17100c",highlight:"#ffe8d4",cheek:"#e45842"},{id:"pet-07",name:"Ripple Buddy",group:"Water Buddy",feature:"fins",bodyTop:"#82b5d6",body:"#629dcc",bodyDark:"#4f82ad",bodyLight:"#9bc8e5",bodySideLight:"#73add6",bodySideDark:"#44749b",accent:"#5f6f8d",accessory:"#ead59a",eye:"#10151b",highlight:"#eff8ff",facePatch:"#d9eef8"},{id:"pet-08",name:"Moon Alley Cat",group:"Moon Cat",feature:"moon",bodyTop:"#4f4b69",body:"#3f3a59",bodyDark:"#332f49",bodyLight:"#67607e",bodySideLight:"#554f6d",bodySideDark:"#2b283e",accent:"#e5c85c",accessory:"#d66f91",eye:"#f5e8a7",highlight:"#fff6c8",cheek:"#cf6d8f"},{id:"pet-09",name:"Spore Runner",group:"Mushroom Runner",feature:"mushroom",bodyTop:"#e0524f",body:"#f0dcc6",bodyDark:"#d7c0aa",bodyLight:"#f7ead9",bodySideLight:"#f1dfcb",bodySideDark:"#c7aa95",accent:"#b83736",accessory:"#ffffff",eye:"#17120f",highlight:"#fff8ea"},{id:"pet-10",name:"Dash Quill",group:"Speed Mascot",feature:"spin",bodyTop:"#4e83d0",body:"#356dbd",bodyDark:"#2a579b",bodyLight:"#6896de",bodySideLight:"#477dd0",bodySideDark:"#244c88",accent:"#f2c45b",accessory:"#f2ece1",eye:"#10131a",highlight:"#eef4ff",facePatch:"#ead3b9"},{id:"pet-11",name:"Lemon Chomper",group:"Arcade Chomper",feature:"chomp",bodyTop:"#f0ce45",body:"#e5ba2f",bodyDark:"#c89924",bodyLight:"#ffe26c",bodySideLight:"#efc73f",bodySideDark:"#b18520",accent:"#1f1b18",accessory:"#f2845f",eye:"#15110d",highlight:"#fff2b6"},{id:"pet-12",name:"Lantern Ghost",group:"Round Ghost",feature:"ghost",bodyTop:"#d9dff0",body:"#c4cee6",bodyDark:"#aab6d2",bodyLight:"#edf2ff",bodySideLight:"#d3dced",bodySideDark:"#9aa8c6",accent:"#6d7da8",accessory:"#e77c9c",eye:"#151926",highlight:"#ffffff"},{id:"pet-13",name:"Red Cap Jumper",group:"Platform Pal",feature:"cap",bodyTop:"#d84f45",body:"#c5a17d",bodyDark:"#a98263",bodyLight:"#e0ba94",bodySideLight:"#d3ad86",bodySideDark:"#936f54",accent:"#2c4f99",accessory:"#f6e9d1",eye:"#16110d",highlight:"#fff2df"},{id:"pet-14",name:"Honey Cub",group:"Classic Toy",feature:"ears",bodyTop:"#e4b25a",body:"#d0993e",bodyDark:"#ad7d30",bodyLight:"#efc46d",bodySideLight:"#dba84d",bodySideDark:"#996d2a",accent:"#b54d3f",accessory:"#f4d991",eye:"#17110d",highlight:"#fff0c8",facePatch:"#f2d083"},{id:"pet-15",name:"Ribbon Puff",group:"Bow Buddy",feature:"bow",bodyTop:"#f2f0e8",body:"#e3ded4",bodyDark:"#c9c2b7",bodyLight:"#ffffff",bodySideLight:"#eee9df",bodySideDark:"#bab2a7",accent:"#d84b5b",accessory:"#f3cc56",eye:"#15110f",highlight:"#ffffff",cheek:"#df6d80"},{id:"pet-16",name:"Cozy Hood Cub",group:"Hooded Mascot",feature:"hood",bodyTop:"#ef9eba",body:"#e681a4",bodyDark:"#c96789",bodyLight:"#f5b6ca",bodySideLight:"#ee94b2",bodySideDark:"#b85878",accent:"#f0d6de",accessory:"#f3d66b",eye:"#171017",highlight:"#fff0f6",facePatch:"#fff6f2"},{id:"pet-17",name:"Masked Beetle",group:"Bug Hero",feature:"mask",bodyTop:"#6e617d",body:"#554761",bodyDark:"#41374b",bodyLight:"#837491",bodySideLight:"#655570",bodySideDark:"#382f41",accent:"#cf6f8e",accessory:"#f0d46a",eye:"#f7edf4",highlight:"#fff7ff",facePatch:"#ece0ea"},{id:"pet-18",name:"Round Forest Pal",group:"Forest Neighbor",feature:"ears",bodyTop:"#8c8d7d",body:"#74766a",bodyDark:"#606257",bodyLight:"#a0a293",bodySideLight:"#838578",bodySideDark:"#55574d",accent:"#d9d3b8",accessory:"#c6d68c",eye:"#121411",highlight:"#efead8",facePatch:"#dad4ba"},{id:"pet-19",name:"Dust Puff",group:"Tiny Soot",feature:"soot",bodyTop:"#34343a",body:"#25262c",bodyDark:"#1d1e24",bodyLight:"#4a4b52",bodySideLight:"#383941",bodySideDark:"#171820",accent:"#6c6f7a",accessory:"#f0f0d8",eye:"#f7f7e8",highlight:"#ffffff"},{id:"pet-20",name:"Straw Field Pal",group:"Harvest Buddy",feature:"straw",bodyTop:"#d96a50",body:"#c65342",bodyDark:"#a74336",bodyLight:"#e47d64",bodySideLight:"#d0614d",bodySideDark:"#933a30",accent:"#2f5f93",accessory:"#e8c866",eye:"#15100d",highlight:"#ffe6d9"},{id:"pet-21",name:"Shadow Ninja Bean",group:"Ninja Mascot",feature:"ninja",bodyTop:"#e7a04d",body:"#d88432",bodyDark:"#b96c27",bodyLight:"#efb464",bodySideLight:"#df943e",bodySideDark:"#a25d22",accent:"#2d415c",accessory:"#ded5c6",eye:"#15100c",highlight:"#ffe7c8",facePatch:"#f3c78d"},{id:"pet-22",name:"Pearl Quest Cub",group:"Pearl Hero",feature:"pearl",bodyTop:"#e3a54e",body:"#ce8438",bodyDark:"#ac682e",bodyLight:"#efbc68",bodySideLight:"#db9345",bodySideDark:"#985a28",accent:"#476ca6",accessory:"#f0d464",eye:"#15100c",highlight:"#ffe8c4"},{id:"pet-23",name:"Wand Starling",group:"Magic Mascot",feature:"wand",bodyTop:"#f0a6c4",body:"#df87ad",bodyDark:"#c26b92",bodyLight:"#f5bad2",bodySideLight:"#e99ab9",bodySideDark:"#ad5d82",accent:"#d8b34a",accessory:"#e9d7ff",eye:"#171017",highlight:"#fff0f7",cheek:"#e76791"},{id:"pet-24",name:"Mecha Bean",group:"Tiny Mecha",feature:"mecha",bodyTop:"#d7dbe2",body:"#bdc3ce",bodyDark:"#9ea6b3",bodyLight:"#edf0f5",bodySideLight:"#cbd1da",bodySideDark:"#8d96a5",accent:"#d44d4a",accessory:"#f0c748",eye:"#151923",highlight:"#ffffff"},{id:"pet-25",name:"Bubble Slimelet",group:"Slime Buddy",feature:"slime",bodyTop:"#79b8e8",body:"#5aa0d8",bodyDark:"#4384ba",bodyLight:"#96cdf0",bodySideLight:"#70b3e3",bodySideDark:"#3975a6",accent:"#2a658f",accessory:"#f3f7ff",eye:"#101722",highlight:"#f5fbff"},{id:"pet-26",name:"Ink Courier",group:"Ink Runner",feature:"ink",bodyTop:"#75c8bb",body:"#54afa2",bodyDark:"#3f9188",bodyLight:"#90d9ce",bodySideLight:"#67c1b5",bodySideDark:"#377f77",accent:"#d7668f",accessory:"#e4f2ef",eye:"#101716",highlight:"#effffb"},{id:"pet-27",name:"Drum Marcher",group:"Rhythm Pal",feature:"drum",bodyTop:"#ef7f5f",body:"#df6349",bodyDark:"#bd4d3b",bodyLight:"#f39a7b",bodySideLight:"#e77358",bodySideDark:"#a84434",accent:"#4f78b6",accessory:"#f3e4c6",eye:"#15100d",highlight:"#fff0e4"},{id:"pet-28",name:"Sprout Forestling",group:"Sprout Buddy",feature:"sprout",bodyTop:"#a58f5d",body:"#8f7548",bodyDark:"#755f3a",bodyLight:"#b9a26e",bodySideLight:"#9b8354",bodySideDark:"#655233",accent:"#5d8b56",accessory:"#dfc86e",eye:"#15110c",highlight:"#f8ecc0",facePatch:"#d8be71"},{id:"pet-29",name:"Frost Star Pup",group:"Ice Pal",feature:"star",bodyTop:"#8aa7d8",body:"#6e91c8",bodyDark:"#5877aa",bodyLight:"#a1bce5",bodySideLight:"#7f9fd3",bodySideDark:"#4e6898",accent:"#f0cf5b",accessory:"#f3edf5",eye:"#10151c",highlight:"#eff5ff",cheek:"#d66d86"},{id:"pet-30",name:"Tiny Quest Cub",group:"Quest Mascot",feature:"bow",bodyTop:"#efa2c8",body:"#df84b2",bodyDark:"#c46999",bodyLight:"#f5b9d5",bodySideLight:"#eb96c2",bodySideDark:"#ad5a86",accent:"#cf4d78",accessory:"#f0d66a",eye:"#171016",highlight:"#fff0f8",cheek:"#df688f"}].map(a=>({...a,...g.get(a.id)}));function i(a){return h.find(b=>b.id===a)??h[0]}function j(){if("u"<typeof localStorage)return h[0].id;try{return i(localStorage.getItem(e)).id}catch{return h[0].id}}var k=a.i(535510);let l=(0,c.lazy)(()=>a.A(76574).then(a=>({default:a.MonsterDirectPixelCharacter})));function m({activityId:a,preset:c,reacting:d,shaken:e,fainted:f=!1,eyeOffset:g={x:0,y:0}}){let h=(0,k.getCloudCodeMonsterExpression)(a,d,e,f);return"fainted"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"43",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"49",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"43",y:"51",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"49",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"43",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"51",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"58",y:"64",width:"14",height:"4",fill:c.eye})]}):"shaken"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"45",y:"40",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"50",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"45",y:"50",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"40",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"77",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"50",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"62",y:"61",width:"6",height:"4",fill:c.eye})]}):"shocked"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("g",{className:"cloud-code-monster-pet-eyes-track",transform:`translate(${g.x} ${g.y})`,children:[(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"44",y:"39",width:"12",height:"13",fill:c.eye}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"76",y:"39",width:"12",height:"13",fill:c.eye}),(0,b.jsxs)("g",{transform:`translate(${.45*g.x} ${.45*g.y})`,children:[(0,b.jsx)("rect",{x:"47",y:"42",width:"4",height:"4",fill:c.highlight}),(0,b.jsx)("rect",{x:"79",y:"42",width:"4",height:"4",fill:c.highlight})]})]}),(0,b.jsx)("rect",{x:"60",y:"60",width:"10",height:"12",fill:c.eye}),(0,b.jsx)("rect",{x:"62",y:"62",width:"6",height:"3",fill:"#332520"})]}):"sleeping"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"45",y:"46",width:"11",height:"4",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"46",width:"11",height:"4",fill:c.eye})]}):(0,b.jsxs)("g",{className:"cloud-code-monster-pet-eyes-track",transform:`translate(${g.x} ${g.y})`,children:[(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"44",y:"42",width:"11",height:"12",fill:c.eye}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"77",y:"42",width:"11",height:"12",fill:c.eye}),(0,b.jsxs)("g",{transform:`translate(${.55*g.x} ${.55*g.y})`,children:[(0,b.jsx)("rect",{x:"46",y:"44",width:"4",height:"4",fill:"#2c2521"}),(0,b.jsx)("rect",{x:"79",y:"44",width:"4",height:"4",fill:"#2c2521"})]})]})}function n({preset:a}){let{feature:c}=a;return"horns"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"29",y:"20",width:"10",height:"8",fill:a.accent}),(0,b.jsx)("rect",{x:"91",y:"20",width:"10",height:"8",fill:a.accent}),(0,b.jsx)("rect",{x:"34",y:"16",width:"7",height:"7",fill:a.accessory}),(0,b.jsx)("rect",{x:"88",y:"16",width:"7",height:"7",fill:a.accessory})]}):"ears"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"18",y:"38",width:"10",height:"18",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"100",y:"38",width:"10",height:"18",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"21",y:"42",width:"5",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"102",y:"42",width:"5",height:"8",fill:a.bodyLight})]}):"visor"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"41",y:"36",width:"47",height:"5",fill:a.accent}),(0,b.jsx)("rect",{x:"45",y:"38",width:"39",height:"3",fill:a.highlight})]}):"antenna"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"62",y:"15",width:"5",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"58",y:"10",width:"13",height:"6",fill:a.accessory})]}):"crown"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"43",y:"18",width:"8",height:"10",fill:a.accessory}),(0,b.jsx)("rect",{x:"60",y:"14",width:"8",height:"14",fill:a.accessory}),(0,b.jsx)("rect",{x:"77",y:"18",width:"8",height:"10",fill:a.accessory}),(0,b.jsx)("rect",{x:"42",y:"26",width:"44",height:"5",fill:a.accent})]}):"bell"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"22",y:"42",width:"8",height:"14",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"98",y:"42",width:"8",height:"14",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"59",y:"21",width:"11",height:"7",fill:a.accent})]}):"bolt"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"29",y:"20",width:"8",height:"17",fill:a.accent}),(0,b.jsx)("rect",{x:"91",y:"20",width:"8",height:"17",fill:a.accent}),(0,b.jsx)("rect",{x:"33",y:"32",width:"8",height:"9",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"87",y:"32",width:"8",height:"9",fill:a.bodyTop})]}):"star"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"60",y:"13",width:"8",height:"24",fill:a.accessory}),(0,b.jsx)("rect",{x:"52",y:"21",width:"24",height:"8",fill:a.accessory}),(0,b.jsx)("rect",{x:"56",y:"17",width:"16",height:"16",fill:a.accessory})]}):"leaf"===c||"sprout"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"61",y:"15",width:"6",height:"18",fill:a.accent}),(0,b.jsx)("rect",{x:"49",y:"18",width:"16",height:"10",fill:a.accent}),(0,b.jsx)("rect",{x:"66",y:"18",width:"16",height:"10",fill:a.bodyLight})]}):"flame"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"58",y:"9",width:"12",height:"20",fill:a.accessory}),(0,b.jsx)("rect",{x:"52",y:"18",width:"9",height:"14",fill:a.accent}),(0,b.jsx)("rect",{x:"69",y:"17",width:"8",height:"15",fill:a.bodyLight})]}):"fins"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"18",y:"45",width:"10",height:"18",fill:a.accent}),(0,b.jsx)("rect",{x:"100",y:"45",width:"10",height:"18",fill:a.accent}),(0,b.jsx)("rect",{x:"55",y:"18",width:"18",height:"10",fill:a.accessory})]}):"moon"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"57",y:"14",width:"18",height:"18",fill:a.accessory}),(0,b.jsx)("rect",{x:"64",y:"12",width:"15",height:"19",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"24",y:"37",width:"7",height:"18",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"97",y:"37",width:"7",height:"18",fill:a.bodyDark})]}):"mushroom"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"31",y:"18",width:"66",height:"22",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"42",y:"13",width:"44",height:"11",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"45",y:"22",width:"9",height:"8",fill:a.accessory}),(0,b.jsx)("rect",{x:"73",y:"20",width:"10",height:"8",fill:a.accessory})]}):"spin"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"47",y:"17",width:"34",height:"9",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"37",y:"24",width:"14",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"78",y:"24",width:"13",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"29",y:"31",width:"11",height:"7",fill:a.bodyLight})]}):"chomp"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"88",y:"48",width:"14",height:"8",fill:a.highlight}),(0,b.jsx)("rect",{x:"88",y:"60",width:"14",height:"8",fill:a.highlight})]}):"ghost"===c||"slime"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"44",y:"19",width:"40",height:"12",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"36",y:"27",width:"56",height:"10",fill:a.bodyLight})]}):"cap"===c||"straw"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"34",y:"18",width:"58",height:"12",fill:"straw"===c?a.accessory:a.bodyTop}),(0,b.jsx)("rect",{x:"45",y:"12",width:"36",height:"10",fill:"straw"===c?a.accessory:a.bodyTop}),(0,b.jsx)("rect",{x:"58",y:"22",width:"14",height:"5",fill:"straw"===c?a.accent:a.accessory})]}):"bow"===c||"hood"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"76",y:"17",width:"13",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"91",y:"17",width:"13",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"88",y:"21",width:"7",height:"7",fill:a.accessory})]}):"mask"===c||"ninja"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"35",y:"25",width:"58",height:"8",fill:a.accent}),(0,b.jsx)("rect",{x:"48",y:"18",width:"12",height:"10",fill:a.accent}),(0,b.jsx)("rect",{x:"69",y:"18",width:"12",height:"10",fill:a.accent})]}):"soot"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"27",y:"25",width:"8",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"92",y:"23",width:"9",height:"9",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"61",y:"12",width:"7",height:"7",fill:a.bodyLight})]}):"pearl"===c||"wand"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"58",y:"12",width:"13",height:"13",fill:a.accessory}),(0,b.jsx)("rect",{x:"61",y:"7",width:"7",height:"7",fill:a.accent}),(0,b.jsx)("rect",{x:"73",y:"17",width:"9",height:"9",fill:a.accent})]}):"mecha"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"29",y:"24",width:"12",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"87",y:"24",width:"12",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"51",y:"18",width:"27",height:"9",fill:a.accessory})]}):"ink"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"35",y:"19",width:"12",height:"16",fill:a.accent}),(0,b.jsx)("rect",{x:"56",y:"14",width:"14",height:"20",fill:a.accent}),(0,b.jsx)("rect",{x:"80",y:"19",width:"12",height:"16",fill:a.accent})]}):"drum"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"31",y:"27",width:"66",height:"7",fill:a.accent}),(0,b.jsx)("rect",{x:"41",y:"18",width:"46",height:"10",fill:a.accessory})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"38",y:"30",width:"10",height:"4",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"80",y:"30",width:"10",height:"4",fill:a.bodyDark})]})}function o({preset:a}){let c=a.feature;return(0,b.jsxs)(b.Fragment,{children:[a.facePatch?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"40",y:"39",width:"48",height:"34",fill:a.facePatch}),(0,b.jsx)("rect",{x:"46",y:"73",width:"36",height:"10",fill:a.facePatch})]}):null,"bell"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"50",y:"74",width:"28",height:"6",fill:a.accent}),(0,b.jsx)("rect",{x:"58",y:"80",width:"13",height:"11",fill:a.accessory}),(0,b.jsx)("rect",{x:"61",y:"84",width:"7",height:"3",fill:a.eye})]}):null,"bolt"===c?(0,b.jsx)("rect",{x:"89",y:"76",width:"13",height:"8",fill:a.accent}):null,"chomp"===c?(0,b.jsx)("rect",{x:"72",y:"56",width:"22",height:"16",fill:a.highlight}):null,"ghost"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"28",y:"91",width:"12",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"52",y:"91",width:"12",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"76",y:"91",width:"12",height:"8",fill:a.bodyLight})]}):null,"drum"===c?(0,b.jsx)("rect",{x:"31",y:"55",width:"66",height:"8",fill:a.accessory}):null,"mecha"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"41",y:"35",width:"45",height:"6",fill:a.accent}),(0,b.jsx)("rect",{x:"57",y:"58",width:"14",height:"9",fill:a.accessory})]}):null,a.cheek?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"36",y:"58",width:"8",height:"7",fill:a.cheek}),(0,b.jsx)("rect",{x:"86",y:"58",width:"8",height:"7",fill:a.cheek})]}):null]})}function p({preset:a,activityId:d,animated:e=!1,reacting:f=!1,shaken:g=!1,fainted:h=!1,eyeOffset:i}){return"monster"!==(a.shape??"monster")?(0,b.jsx)("g",{className:e?"cloud-code-monster-pet-character":void 0,children:(0,b.jsx)(c.Suspense,{fallback:null,children:(0,b.jsx)(l,{activityId:d,preset:a,reacting:f,shaken:g,fainted:h,eyeOffset:i})})}):(0,b.jsxs)("g",{className:e?"cloud-code-monster-pet-character":void 0,children:[(0,b.jsx)(n,{preset:a}),(0,b.jsx)("rect",{x:"32",y:"22",width:"64",height:"12",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"24",y:"34",width:"80",height:"17",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"16",y:"51",width:"12",height:"24",fill:a.body}),(0,b.jsx)("rect",{x:"24",y:"51",width:"80",height:"41",fill:a.body}),(0,b.jsx)("rect",{x:"100",y:"51",width:"12",height:"24",fill:a.body}),(0,b.jsx)("rect",{x:"16",y:"63",width:"12",height:"12",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"30",y:"86",width:"68",height:"10",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"34",y:"34",width:"60",height:"6",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"24",y:"51",width:"9",height:"35",fill:a.bodySideLight}),(0,b.jsx)("rect",{x:"95",y:"51",width:"9",height:"35",fill:a.bodySideDark}),(0,b.jsx)(o,{preset:a}),(0,b.jsx)(m,{activityId:d,preset:a,reacting:f,shaken:g,fainted:h,eyeOffset:i}),(0,b.jsx)("rect",{x:"36",y:"69",width:"8",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"84",y:"69",width:"8",height:"8",fill:a.bodySideDark}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-left-foot",x:"29",y:"96",width:"12",height:"22",fill:a.body}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-left-foot",x:"52",y:"96",width:"12",height:"22",fill:a.body}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-right-foot",x:"76",y:"96",width:"12",height:"22",fill:a.bodyDark}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-right-foot",x:"96",y:"96",width:"12",height:"22",fill:a.bodyDark})]})}function q({preset:a,className:c}){return(0,b.jsxs)("svg",{className:c,viewBox:"0 0 128 128",role:"img","aria-label":`${a.name} pixel PET preset`,shapeRendering:"crispEdges",children:[(0,b.jsx)("rect",{x:"31",y:"116",width:"66",height:"5",fill:"rgba(45,40,36,.12)"}),(0,b.jsx)("rect",{x:"40",y:"121",width:"48",height:"3",fill:"rgba(45,40,36,.07)"}),(0,b.jsx)(p,{preset:a,activityId:null})]})}var r=a.i(76592),s=a.i(973111),t=a.i(272818),u=a.i(75118);a.s(["PetTab",0,function(){let[a,g]=(0,c.useState)(!1),[k,l]=(0,c.useState)(h[0].id),m=i(k);return(0,c.useEffect)(()=>{g((0,t.readHomePetSettings)().enabled),l(j());let a=a=>{let b=a.detail?.presetId;l(b?i(b).id:j())};return window.addEventListener(f,a),()=>{window.removeEventListener(f,a)}},[]),(0,b.jsxs)("div",{className:"space-y-8",children:[(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h2",{className:"text-sm font-medium",children:"Pet"}),(0,b.jsx)("div",{className:"space-y-4",children:(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)(r.Label,{htmlFor:"pet-enabled",className:"text-sm",children:"Enable pet"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Off by default. Turn it on when you want the workspace companion."})]}),(0,b.jsx)(s.Switch,{id:"pet-enabled",checked:a,onCheckedChange:a=>{g(a),(0,t.writeHomePetSettings)({enabled:a})}})]})})]}),a?(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-sm font-medium",children:"Preset"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:m.name})]}),(0,b.jsx)("div",{className:"grid size-14 place-items-center rounded-md bg-card ring-1 ring-border/60",children:(0,b.jsx)(q,{preset:m,className:"size-11"})})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:h.map(a=>{let c=a.id===m.id;return(0,b.jsxs)("button",{type:"button","aria-pressed":c,onClick:()=>{l(function(a){let b=i(a);if("u">typeof localStorage)try{localStorage.setItem(e,b.id)}catch{}return b.id}(a.id))},className:(0,u.cn)("group grid h-28 min-w-0 grid-rows-[1fr_auto] rounded-md border bg-card/60 p-2 text-left transition-all hover:border-foreground/20 hover:bg-accent/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/70",c?"border-primary/50 bg-accent text-foreground":"border-border/50 text-muted-foreground"),children:[(0,b.jsx)("div",{className:"grid place-items-center rounded bg-background/70 ring-1 ring-border/35",children:(0,b.jsx)(q,{preset:a,className:"size-14 transition-transform duration-200 group-hover:scale-105"})}),(0,b.jsxs)("div",{className:"mt-1.5 flex min-w-0 items-center justify-between gap-1 text-[10px] leading-none",children:[(0,b.jsx)("span",{className:"truncate font-medium text-foreground",children:a.name}),c?(0,b.jsx)(d,{className:"size-3 shrink-0 text-primary"}):(0,b.jsx)("span",{className:"shrink-0 text-muted-foreground",children:a.id.replace("pet-","#")})]})]},a.id)})})]}):null]})}],390946)},617168,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(752792),e=a.i(506180),f=a.i(25668),g=a.i(588339),h=a.i(439882),i=a.i(464830),j=a.i(410732);let k=(0,j.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var l=a.i(551798),m=a.i(554705);let n=(0,j.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var o=a.i(515837);let p=(0,j.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);function q({icon:a,label:c,value:d,sub:e}){return(0,b.jsx)(h.Card,{size:"sm",children:(0,b.jsxs)(h.CardContent,{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary",children:(0,b.jsx)(a,{className:"size-4"})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("p",{className:"text-2xl font-semibold leading-none tracking-tight",children:d}),e&&(0,b.jsx)(i.Badge,{variant:"secondary",className:"text-[10px] px-1.5 h-4 font-normal",children:e})]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground truncate",children:c})]})]})})}function r({agents:a,runtimes:c,activeTaskCounts:d,overview:e}){let f=new Map;for(let a of c){let b=a.daemon_id??a.id;f.set(b,f.get(b)||"online"===a.status)}let g=f.size,h=[...f.values()].filter(Boolean).length,i=Object.values(d).reduce((a,b)=>a+b,0),j=a.filter(a=>{let b=c.find(b=>b.id===a.runtime_id);return b?.status==="online"}).length;return(0,b.jsxs)("div",{className:"grid gap-3 grid-cols-2 sm:grid-cols-3 lg:grid-cols-6",children:[(0,b.jsx)(q,{icon:o.Monitor,label:"Machines",value:`${h}/${g}`,sub:"online"}),(0,b.jsx)(q,{icon:k,label:"Agents",value:a.length,sub:`${j} online`}),(0,b.jsx)(q,{icon:n,label:"Members",value:e.members.length,sub:e.pending_invites>0?`${e.pending_invites} pending`:void 0}),(0,b.jsx)(q,{icon:p,label:"Active Tasks",value:i,sub:e.task_stats.queued>0?`${e.task_stats.queued} queued`:void 0}),(0,b.jsx)(q,{icon:m.Send,label:"Emails Sent",value:e.email_stats.outbound,sub:`${e.email_stats.unread} unread`}),(0,b.jsx)(q,{icon:l.Mail,label:"Custom Emails",value:e.email_accounts.length})]})}function s({overview:a}){let{completed:c,failed:d,cancelled:e,queued:f,stale:g}=a.task_stats,i=c+d,j=i>0?(d/i*100).toFixed(1):"0";return(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsx)(h.CardTitle,{children:"Task Health (Today)"})}),(0,b.jsx)(h.CardContent,{children:(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsx)(t,{label:"Completed",value:c}),(0,b.jsx)(t,{label:"Failed",value:d,className:d>0?"text-destructive":void 0}),(0,b.jsx)(t,{label:"Cancelled",value:e}),(0,b.jsx)(t,{label:"Failure Rate",value:`${j}%`,className:Number(j)>10?"text-destructive":void 0}),(0,b.jsx)(t,{label:"Queue Backlog",value:f,className:f>10?"text-amber-500":void 0}),(0,b.jsx)(t,{label:"Stale Tasks",value:g,className:g>0?"text-destructive":void 0})]})})]})}function t({label:a,value:c,className:d}){return(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:`text-xl font-semibold ${d??""}`,children:c}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a})]})}var u=a.i(525132);function v({overview:a,agents:c}){let{inbound:d,outbound:e,unread:f,rejected:g}=a.email_stats,i=new Map(c.map(a=>[a.id,a.name]));return(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsx)(h.CardTitle,{children:"Email Summary"})}),(0,b.jsxs)(h.CardContent,{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xl font-semibold",children:d}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Received"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xl font-semibold",children:e}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Sent"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:`text-xl font-semibold ${f>0?"text-primary":""}`,children:f}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Unread"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:`text-xl font-semibold ${g>0?"text-amber-500":""}`,children:g}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Untrust"})]})]}),a.email_accounts.length>0&&(0,b.jsxs)("div",{className:"space-y-2 pt-2 border-t border-border/50",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Custom Mailboxes"}),a.email_accounts.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 text-xs",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsxs)(u.Tooltip,{children:[(0,b.jsx)(u.TooltipTrigger,{render:(0,b.jsx)("span",{className:`size-1.5 shrink-0 rounded-full ${"active"===a.status?"bg-emerald-500":"bg-destructive"}`})}),(0,b.jsx)(u.TooltipContent,{side:"top",children:"active"===a.status?"Active":`Error: ${a.error_message||"inactive"}`})]}),(0,b.jsx)("span",{className:"truncate",children:a.email_address})]}),(0,b.jsx)("span",{className:"text-muted-foreground shrink-0",children:i.get(a.agent_id)??"—"})]},a.id))]})]})]})}var w=a.i(630991),x=a.i(919690);function y({runtimes:a,agents:c}){let d=(0,w.useRouter)(),{slug:f}=(0,e.useWorkspace)(),g=new Map;for(let b of a){let a=b.daemon_id??b.id;g.has(a)||g.set(a,{runtimes:[],deviceInfo:b.device_info??""}),g.get(a).runtimes.push(b)}let j=[...g.entries()];return 0===j.length?(0,b.jsxs)(h.Card,{children:[(0,b.jsxs)(h.CardHeader,{children:[(0,b.jsx)(h.CardTitle,{children:"Machines"}),(0,b.jsx)(h.CardAction,{children:(0,b.jsx)("button",{type:"button",onClick:()=>d.push(`/w/${f}/runtimes`),className:"text-muted-foreground hover:text-foreground transition-colors cursor-pointer",children:(0,b.jsx)(x.ArrowUpRight,{className:"size-4"})})})]}),(0,b.jsx)(h.CardContent,{children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No machines connected."})})]}):(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsx)(h.CardTitle,{children:"Machines"})}),(0,b.jsx)(h.CardContent,{className:"space-y-3",children:j.map(([a,d])=>{let e=d.runtimes.some(a=>"online"===a.status),f=d.runtimes.map(a=>a.last_seen_at).filter(Boolean).sort().reverse()[0],g=c.filter(a=>d.runtimes.some(b=>b.id===a.runtime_id)),h=d.runtimes.some(a=>a.pending_update_version),j=d.runtimes.find(a=>a.pending_update_version)?.pending_update_version;return(0,b.jsxs)("div",{className:"flex items-start gap-3 text-xs",children:[(0,b.jsxs)(u.Tooltip,{children:[(0,b.jsx)(u.TooltipTrigger,{render:(0,b.jsx)("span",{className:`mt-1 size-2 shrink-0 rounded-full ${e?"bg-emerald-500":"bg-muted-foreground/30"}`})}),(0,b.jsx)(u.TooltipContent,{side:"top",children:e?"Online":"Offline"})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-medium truncate",children:d.deviceInfo||a.slice(0,12)}),h&&(0,b.jsxs)(u.Tooltip,{children:[(0,b.jsx)(u.TooltipTrigger,{render:(0,b.jsx)("span",{children:(0,b.jsx)(i.Badge,{variant:"outline",className:"text-[10px] px-1.5 py-0 text-amber-500 border-amber-500/30",children:"update"})})}),(0,b.jsxs)(u.TooltipContent,{side:"top",children:["Pending update to v",j]})]})]}),(0,b.jsxs)("div",{className:"text-muted-foreground mt-0.5",children:[g.length>0?g.map(a=>a.name).join(", "):"No agents"," · ",function(a){if(!a)return"never";let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);return d<24?`${d}h ago`:`${Math.floor(d/24)}d ago`}(f??null)]})]})]},a)})})]})}function z({overview:a}){let c=(0,w.useRouter)(),{slug:d}=(0,e.useWorkspace)(),{members:f,pending_invites:g}=a;return(0,b.jsxs)(h.Card,{children:[(0,b.jsxs)(h.CardHeader,{children:[(0,b.jsx)(h.CardAction,{children:(0,b.jsx)("button",{type:"button",onClick:()=>c.push(`/w/${d}/settings`),className:"text-muted-foreground hover:text-foreground transition-colors cursor-pointer",children:(0,b.jsx)(x.ArrowUpRight,{className:"size-4"})})}),(0,b.jsxs)(h.CardTitle,{children:["Team",g>0&&(0,b.jsxs)("span",{className:"ml-2 text-xs text-muted-foreground font-normal",children:["(",g," pending invite",g>1?"s":"",")"]})]})]}),(0,b.jsx)(h.CardContent,{className:"p-0",children:(0,b.jsx)("div",{className:"divide-y divide-border/50",children:[...f].sort((a,b)=>"owner"===a.role?-1:+("owner"===b.role)).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-3 px-4 py-2.5",children:[a.image?(0,b.jsx)("img",{src:a.image,alt:a.name,className:"size-7 rounded-full shrink-0"}):(0,b.jsx)("div",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-secondary text-xs font-medium",children:(a.name||a.email).charAt(0).toUpperCase()}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate block",children:a.name||a.email}),a.name&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground truncate block",children:a.email})]}),(0,b.jsx)(i.Badge,{variant:"owner"===a.role?"default":"secondary",className:"text-[10px] px-1.5 py-0 shrink-0",children:a.role})]},a.id))})})]})}a.s(["UsagesTab",0,function(){let{agents:a,runtimes:h,loading:i,activeTaskCounts:j}=(0,d.useAgentContext)(),{workspaceId:k}=(0,e.useWorkspace)(),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{if(i)return;let a=!1;return o(!0),(0,g.getWorkspaceOverview)(k).then(b=>{a||m(b)}).catch(()=>{}).finally(()=>{a||o(!1)}),()=>{a=!0}},[i,k]),n||!l)?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"}),(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"}),(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"}),(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(r,{agents:a,runtimes:h,activeTaskCounts:j,overview:l}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,b.jsx)(s,{overview:l}),(0,b.jsx)(v,{overview:l,agents:a})]}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,b.jsx)(y,{runtimes:h,agents:a}),(0,b.jsx)(z,{overview:l})]})]})}],617168)},294526,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(654461),g=a.i(75118),h=a.i(597047),i=a.i(53909),j=a.i(616131),k=a.i(93590),l=a.i(390946),m=a.i(617168),n=b([h,j]);[h,j]=n.then?(await n)():n;let o=[{id:"general",label:"General"},{id:"pet",label:"Pet"},{id:"instruction",label:"Global Instruction"},{id:"notifications",label:"Notifications"},{id:"members",label:"Members"},{id:"usages",label:"Usages"}];a.s(["default",0,function(){let[a,b]=(0,e.useState)("general");return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5 gap-3",children:(0,d.jsx)("div",{className:"flex items-center gap-3 min-w-0",children:(0,d.jsx)("h1",{className:"text-sm font-medium",children:"Settings"})})}),(0,d.jsxs)("div",{className:"flex flex-1 min-h-0",children:[(0,d.jsxs)("nav",{className:"w-48 shrink-0 border-r border-border/50 py-3 px-2 hidden md:flex md:flex-col",children:[(0,d.jsx)("div",{className:"flex-1",children:o.map(c=>(0,d.jsx)("button",{onClick:()=>b(c.id),className:(0,g.cn)("w-full rounded-md px-2.5 py-1.5 text-left text-sm transition-colors",a===c.id?"bg-accent text-foreground font-medium":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"),children:c.label},c.id))}),(0,d.jsxs)("div",{className:"px-2.5 pt-3 border-t border-border/50 text-[11px] text-muted-foreground/60",children:["v","0.0.139"]})]}),(0,d.jsxs)("div",{className:"flex-1 min-w-0 flex flex-col",children:[(0,d.jsx)("div",{className:"px-4 pt-2 md:hidden",children:(0,d.jsx)(f.Tabs,{className:"items-center",value:a,onValueChange:a=>b(a),children:(0,d.jsx)(f.TabsList,{className:"h-auto gap-1",children:o.map(a=>(0,d.jsx)(f.TabsTrigger,{value:a.id,children:a.label},a.id))})})}),(0,d.jsx)("div",{className:(0,g.cn)("flex-1 overflow-y-auto thin-scrollbar","instruction"!==a&&"px-5 py-5"),children:"instruction"===a?(0,d.jsx)(i.InstructionTab,{}):"usages"===a?(0,d.jsx)(m.UsagesTab,{}):(0,d.jsxs)("div",{className:"mx-auto max-w-md",children:["general"===a&&(0,d.jsx)(h.GeneralTab,{}),"pet"===a&&(0,d.jsx)(l.PetTab,{}),"notifications"===a&&(0,d.jsx)(k.NotificationTab,{}),"members"===a&&(0,d.jsx)(j.MembersTab,{})]})}),(0,d.jsxs)("div",{className:"px-4 py-2 text-[11px] text-muted-foreground/60 md:hidden",children:["v","0.0.139"]})]})]})]})}]),c()}catch(a){c(a)}},!1)];
|
|
1
|
+
module.exports=[597047,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(780956),g=a.i(630991),h=a.i(506180),i=a.i(454607),j=a.i(588339),k=a.i(732254),l=a.i(334235),m=a.i(76592),n=a.i(25668),o=a.i(390248),p=a.i(946621),q=b([i]);[i]=q.then?(await q)():q,a.s(["GeneralTab",0,function(){let{workspaceId:a,slug:b}=(0,h.useWorkspace)(),c=(0,i.useSession)(),q=(0,g.useRouter)(),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!0),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)({}),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),L=(0,e.useCallback)(async()=>{u(!0);try{let b=c.data?.user?.id,[d,e]=await Promise.all([(0,j.listMembers)(a),(0,j.listWorkspaces)()]),f=d.find(a=>a.user_id===b);s(f?.role??"");let g=e.find(b=>b.id===a);g&&(w(g.name),y(g.slug),A(g.name),C(g.slug))}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to load workspace info")}finally{u(!1)}},[a,c.data?.user?.id]);(0,e.useEffect)(()=>{c.data&&L()},[L,c.data]);let M=v!==z||x!==B,N=async()=>{let c=(0,o.validateWorkspaceForm)({name:v,slug:x});if(G(c),!(0,o.hasWorkspaceFormErrors)(c)){E(!0);try{let c=await (0,j.updateWorkspace)(a,{name:v.trim(),slug:x.trim()});(0,p.trackSettingsUpdated)({setting_tab:"general"}),A(c.name),C(c.slug),f.toast.success("Workspace updated"),c.slug!==b&&q.replace(`/w/${c.slug}/settings`)}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to update workspace")}finally{E(!1)}}},O=async()=>{if(H===z){K(!0);try{await (0,j.deleteWorkspace)(a,z),f.toast.success("Workspace deleted"),q.replace("/workspaces")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to delete workspace")}finally{K(!1)}}};return t?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(n.Skeleton,{className:"h-4 w-32"}),(0,d.jsx)(n.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(n.Skeleton,{className:"h-10 w-full"})]}):"owner"!==r?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Only workspace owners can edit workspace settings."}):(0,d.jsxs)("div",{className:"space-y-10",children:[(0,d.jsxs)("section",{className:"space-y-4",children:[(0,d.jsx)("h2",{className:"text-sm font-medium",children:"Workspace"}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(m.Label,{htmlFor:"workspace-name",children:"Name"}),(0,d.jsx)(l.Input,{id:"workspace-name",value:v,onChange:a=>{let b=a.target.value;w(b),F.name&&b.trim()&&G(a=>({...a,name:void 0}))},placeholder:"Workspace name","aria-invalid":!!F.name,"aria-describedby":F.name?"workspace-name-error":void 0}),F.name&&(0,d.jsx)("p",{id:"workspace-name-error",className:"text-xs text-destructive",children:F.name})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(m.Label,{htmlFor:"workspace-slug",children:"Slug"}),(0,d.jsx)(l.Input,{id:"workspace-slug",value:x,onChange:a=>{let b=a.target.value;y(b),F.slug&&b.trim()&&G(a=>({...a,slug:void 0}))},placeholder:"workspace-slug","aria-invalid":!!F.slug,"aria-describedby":F.slug?"workspace-slug-error":void 0}),F.slug&&(0,d.jsx)("p",{id:"workspace-slug-error",className:"text-xs text-destructive",children:F.slug}),(0,d.jsxs)("p",{className:"text-xs text-muted-foreground/70",children:["Used in URLs: /w/",x,"/"]})]})]}),(0,d.jsx)(k.Button,{size:"sm",onClick:N,disabled:!M||D,children:D?"Saving…":"Save"})]}),(0,d.jsxs)("section",{className:"space-y-4",children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-destructive",children:"Danger Zone"}),(0,d.jsxs)("div",{className:"rounded-md border border-destructive/30 p-4 space-y-3",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Deleting this workspace is permanent and cannot be undone. All agents, conversations, and data will be lost."}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsxs)(m.Label,{htmlFor:"delete-confirm",className:"text-xs",children:["Type ",(0,d.jsx)("span",{className:"font-medium text-foreground",children:z})," to confirm"]}),(0,d.jsx)(l.Input,{id:"delete-confirm",value:H,onChange:a=>I(a.target.value),placeholder:z})]}),(0,d.jsx)(k.Button,{size:"sm",variant:"destructive",onClick:O,disabled:H!==z||J,children:J?"Deleting…":"Delete Workspace"})]})]})]})}]),c()}catch(a){c(a)}},!1),53909,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(780956),e=a.i(506180),f=a.i(588339),g=a.i(889624),h=a.i(25668),i=a.i(75118);function j({ratio:a,size:c=16,stroke:d=1.5}){let e=(c-d)/2,f=2*Math.PI*e,g=(a<=0?0:a>=1?1:Math.log1p(99*a)/Math.log(100))*f;return(0,b.jsxs)("svg",{width:c,height:c,className:"shrink-0 -rotate-90","aria-hidden":!0,children:[(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:e,fill:"none",stroke:"currentColor",strokeWidth:d,className:"text-border"}),(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:e,fill:"none",stroke:"currentColor",strokeWidth:d,strokeDasharray:`${g} ${f-g}`,strokeLinecap:"round",className:(0,i.cn)("transition-all duration-300",a>.9?"text-destructive/70":a>.7?"text-yellow-500/50":"text-muted-foreground/30")})]})}a.s(["InstructionTab",0,function(){let{workspaceId:a}=(0,e.useWorkspace)(),[i,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(!0),p=(0,c.useRef)(i);(0,c.useEffect)(()=>{p.current=i},[i]);let q=(0,c.useRef)(l);(0,c.useEffect)(()=>{q.current=l},[l]);let r=(0,c.useRef)(null),s=(0,c.useRef)(!1),t=(0,c.useCallback)(async()=>{o(!0);try{let b=await (0,f.getMemberMe)(a);k(b.global_instruction),m(b.global_instruction)}catch(a){d.toast.error(a instanceof Error?a.message:"Failed to load settings")}finally{o(!1)}},[a]);(0,c.useEffect)(()=>{t()},[t]);let u=(0,c.useRef)(()=>{}),v=(0,c.useCallback)(async()=>{if(s.current)return;let b=p.current;if(b!==q.current){s.current=!0;try{let c=await (0,f.updateMemberMe)(a,b);m(c.global_instruction)}catch(a){d.toast.error(a instanceof Error?a.message:"Failed to save")}finally{s.current=!1,p.current!==q.current&&u.current()}}},[a]),w=(0,c.useCallback)(()=>{r.current&&clearTimeout(r.current),r.current=setTimeout(v,500)},[v]);(0,c.useEffect)(()=>{u.current=w},[w]);let x=(0,c.useCallback)(a=>{k(a),w()},[w]);(0,c.useEffect)(()=>{let b=()=>{if(r.current&&clearTimeout(r.current),p.current!==q.current){let b=new URLSearchParams({workspace_id:a});fetch(`/api/members/me?${b}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({global_instruction:p.current}),keepalive:!0})}};return window.addEventListener("beforeunload",b),()=>window.removeEventListener("beforeunload",b)},[a]),(0,c.useEffect)(()=>()=>{if(r.current&&clearTimeout(r.current),p.current!==q.current){let b=new URLSearchParams({workspace_id:a});fetch(`/api/members/me?${b}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({global_instruction:p.current}),keepalive:!0})}},[a]);let y=i.length/5e4;return n?(0,b.jsxs)("div",{className:"px-6 py-6 space-y-4",children:[(0,b.jsx)(h.Skeleton,{className:"h-4 w-48"}),(0,b.jsx)(h.Skeleton,{className:"h-40 w-full"})]}):(0,b.jsxs)("div",{className:"flex flex-col h-full",children:[(0,b.jsx)("div",{className:"flex-1 px-6 pt-4 pb-4",children:(0,b.jsx)(g.MarkdownEditor,{value:i,onChange:x,placeholder:"Write instructions that every agent you own will follow...",minHeight:"calc(100vh - 240px)",contentType:"markdown",variant:"seamless"})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 px-6 py-3",children:[(0,b.jsx)(j,{ratio:y}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"This instruction is prepended to every agent's individual instruction."})]})]})}])},851688,a=>{"use strict";let b=(0,a.i(410732).default)("user-minus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);a.s(["UserMinus",0,b],851688)},616131,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(780956),g=a.i(340490),h=a.i(790107),i=a.i(396439),j=a.i(851688),k=a.i(506180),l=a.i(454607),m=a.i(588339),n=a.i(732254),o=a.i(25668),p=a.i(525132),q=a.i(75118),r=a.i(946621),s=b([l]);function t(a){return`${window.location.origin}/invite/${a}`}[l]=s.then?(await s)():s,a.s(["MembersTab",0,function(){let{workspaceId:a}=(0,k.useWorkspace)(),b=(0,l.useSession)(),c=b.data?.user?.id,[s,u]=(0,e.useState)([]),[v,w]=(0,e.useState)([]),[x,y]=(0,e.useState)(!0),[z,A]=(0,e.useState)(!1),B=s.find(a=>a.user_id===c)?.role==="owner",C=(0,e.useCallback)(async()=>{y(!0);try{let[b,c]=await Promise.all([(0,m.listMembers)(a),(0,m.listInvites)(a).catch(()=>[])]);u(b),w(c)}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to load members")}finally{y(!1)}},[a]);(0,e.useEffect)(()=>{C()},[C]);let D=async()=>{A(!0);try{let b=await (0,m.createInvite)(a);(0,r.trackTeamMemberInvited)({workspace_id:a}),w(a=>[...a,b]);let c=t(b.token);await navigator.clipboard.writeText(c),f.toast.success("Invite link copied to clipboard")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to generate invite")}finally{A(!1)}},E=async a=>{let b=t(a);try{await navigator.clipboard.writeText(b),f.toast.success("Invite link copied")}catch{f.toast.error("Failed to copy link")}},F=async b=>{try{await (0,m.revokeInvite)(a,b),w(a=>a.filter(a=>a.id!==b)),f.toast.success("Invite revoked")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to revoke invite")}},G=async b=>{try{await (0,m.removeMember)(a,b),u(a=>a.filter(a=>a.id!==b)),f.toast.success("Member removed")}catch(a){f.toast.error(a instanceof Error?a.message:"Failed to remove member")}};return x?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(o.Skeleton,{className:"h-4 w-24"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(o.Skeleton,{className:"h-4 w-24 mt-6"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,d.jsx)(o.Skeleton,{className:"h-10 w-full"})]}):(0,d.jsxs)("div",{className:"space-y-8",children:[B&&(0,d.jsxs)("section",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("h2",{className:"text-sm font-medium",children:"Pending Invites"}),(0,d.jsxs)(n.Button,{size:"sm",variant:"outline",onClick:D,disabled:z,children:[(0,d.jsx)(i.Plus,{className:"size-3.5 mr-1"}),z?"Generating…":"Generate invite link"]})]}),0===v.length?(0,d.jsx)("p",{className:"text-xs text-muted-foreground py-2",children:"No active invite links. Generate one to invite someone to this workspace."}):(0,d.jsx)("div",{className:"space-y-1.5",children:v.map(a=>{let b=new Date(a.expires_at),c=b<new Date;return(0,d.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-border/50 px-3 py-2 text-xs",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("p",{className:(0,q.cn)("font-mono truncate",c&&"text-muted-foreground line-through"),children:["/invite/",a.token.slice(0,12),"…"]}),(0,d.jsx)("p",{className:(0,q.cn)("text-muted-foreground/70 mt-0.5",c&&"text-destructive/70"),children:c?"Expired":`Expires ${b.toLocaleDateString()}`})]}),(0,d.jsxs)("div",{className:"flex items-center gap-1 ml-2 shrink-0",children:[!c&&(0,d.jsxs)(p.Tooltip,{children:[(0,d.jsx)(p.TooltipTrigger,{render:(0,d.jsx)(n.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",onClick:()=>E(a.token)}),children:(0,d.jsx)(g.Copy,{className:"size-3.5"})}),(0,d.jsx)(p.TooltipContent,{children:"Copy invite link"})]}),(0,d.jsxs)(p.Tooltip,{children:[(0,d.jsx)(p.TooltipTrigger,{render:(0,d.jsx)(n.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-destructive hover:text-destructive",onClick:()=>F(a.id)}),children:(0,d.jsx)(h.Trash2,{className:"size-3.5"})}),(0,d.jsx)(p.TooltipContent,{children:"Revoke invite"})]})]})]},a.id)})})]}),(0,d.jsxs)("section",{className:"space-y-3",children:[(0,d.jsx)("h2",{className:"text-sm font-medium",children:"Members"}),(0,d.jsx)("div",{className:"space-y-1.5",children:s.map(a=>{let b=a.user_id===c,e=a.name?a.name.split(" ").map(a=>a[0]).join("").slice(0,2).toUpperCase():a.email.slice(0,2).toUpperCase();return(0,d.jsxs)("div",{className:"flex items-center gap-3 rounded-md border border-border/50 px-3 py-2",children:[(0,d.jsx)("div",{className:"size-7 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground shrink-0 overflow-hidden",children:a.image?(0,d.jsx)("img",{src:a.image,alt:a.name,className:"size-full object-cover"}):e}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("p",{className:"text-sm font-medium truncate leading-tight",children:[a.name||a.email,b&&(0,d.jsx)("span",{className:"ml-1.5 text-xs text-muted-foreground font-normal",children:"(you)"})]}),a.name&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a.email})]}),(0,d.jsx)("span",{className:(0,q.cn)("text-xs px-1.5 py-0.5 rounded shrink-0","owner"===a.role?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"),children:a.role}),B&&!b&&(0,d.jsxs)(p.Tooltip,{children:[(0,d.jsx)(p.TooltipTrigger,{render:(0,d.jsx)(n.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-muted-foreground hover:text-destructive shrink-0",onClick:()=>G(a.id)}),children:(0,d.jsx)(j.UserMinus,{className:"size-3.5"})}),(0,d.jsx)(p.TooltipContent,{children:"Remove member"})]})]},a.id)})})]})]})}]),c()}catch(a){c(a)}},!1),93590,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(780956),e=a.i(951687),f=a.i(973111),g=a.i(626806);a.s(["NotificationTab",0,function(){let[a,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)([...g.NOTIFICATION_EVENTS]),[k,l]=(0,c.useState)(!0),[m,n]=(0,c.useState)(!1);(0,c.useEffect)(()=>{l((0,g.isNotificationSupported)()),h((0,g.getNotificationEnabled)()),j((0,g.getNotificationEvents)()),(0,g.isNotificationSupported)()&&n("denied"===Notification.permission)},[]);let o=async a=>{if(!a){h(!1),(0,g.setNotificationEnabled)(!1);return}await (0,g.requestNotificationPermission)()?(h(!0),(0,g.setNotificationEnabled)(!0)):(n(!0),d.toast.error("Notification permission denied. Please enable it in browser settings."))};return k?(0,b.jsx)("div",{className:"space-y-6",children:(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h2",{className:"text-sm font-medium",children:"Browser Notifications"}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)("p",{className:"text-sm",children:"Enable notifications"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Get notified when tasks finish while the tab is in the background"})]}),(0,b.jsx)(f.Switch,{checked:a,onCheckedChange:o,disabled:m&&!a})]}),m&&!a&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:"Notification permission was denied. Please allow it in your browser settings."}),a&&(0,b.jsxs)("div",{className:"space-y-2 pl-0.5",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Notify me when:"}),g.NOTIFICATION_EVENTS.map(a=>(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm cursor-pointer select-none",children:[(0,b.jsx)(e.Checkbox,{checked:i.includes(a),onCheckedChange:()=>{j(b=>{let c=b.includes(a)?b.filter(b=>b!==a):[...b,a];return(0,g.setNotificationEvents)(c),c})}}),g.NOTIFICATION_EVENT_LABELS[a]]},a))]})]})]})}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"Your browser does not support notifications."})}])},390946,a=>{"use strict";var b=a.i(616612),c=a.i(734803);let d=(0,a.i(410732).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]),e="alook-cloud-code-monster-pet-preset-v1",f="alook-cloud-code-monster-pet-preset-changed",g=new Map([{id:"pet-02",name:"Pocket Bell Bot",group:"Inspired Mascots",feature:"bell",shape:"gadget-buddy"},{id:"pet-03",name:"Spark Bolt Pal",group:"Inspired Mascots",feature:"bolt",shape:"electric-mascot"},{id:"pet-04",name:"Star Puff",group:"Inspired Mascots",feature:"star",shape:"star-puff"},{id:"pet-05",name:"Leaf Bud",group:"Inspired Mascots",feature:"leaf",shape:"leaf-bud-shape"},{id:"pet-06",name:"Tiny Flame",group:"Inspired Mascots",feature:"flame",shape:"ember-scout"},{id:"pet-07",name:"Shell Fin",group:"Inspired Mascots",feature:"fins",shape:"shell-sprout"},{id:"pet-08",name:"Block Builder",group:"Inspired Mascots",feature:"visor",shape:"block-builder-shape"},{id:"pet-09",name:"Block Hiss",group:"Inspired Mascots",feature:"mask",shape:"block-hiss-shape"},{id:"pet-10",name:"Block Walker",group:"Inspired Mascots",feature:"visor",shape:"block-walker-shape"},{id:"pet-11",name:"Mushroom Pal",group:"Inspired Mascots",feature:"mushroom",shape:"mushroom-pal-shape"},{id:"pet-12",name:"Blue Spin",group:"Inspired Mascots",feature:"spin",shape:"blue-spinner"},{id:"pet-13",name:"Arcade Chomp",group:"Inspired Mascots",feature:"chomp",shape:"arcade-chomper"},{id:"pet-14",name:"Peek Ghost",group:"Inspired Mascots",feature:"ghost",shape:"peek-ghost-shape"},{id:"pet-15",name:"Red Cap Jumper",group:"Inspired Mascots",feature:"cap",shape:"cap-jumper"},{id:"pet-16",name:"Honey Cub",group:"Inspired Mascots",feature:"ears",shape:"honey-cub-shape"},{id:"pet-17",name:"Ribbon Cat",group:"Inspired Mascots",feature:"bow",shape:"ribbon-cat-shape"},{id:"pet-18",name:"Cozy Hood Bunny",group:"Inspired Mascots",feature:"hood",shape:"cozy-hood-bunny-shape"},{id:"pet-19",name:"Imp Hood",group:"Inspired Mascots",feature:"mask",shape:"imp-hood-shape"},{id:"pet-20",name:"Forest Neighbor",group:"Inspired Mascots",feature:"ears",shape:"forest-neighbor-shape"},{id:"pet-21",name:"Dust Puff",group:"Inspired Mascots",feature:"soot",shape:"dust-puff-shape"},{id:"pet-22",name:"Straw Voyager",group:"Inspired Mascots",feature:"straw",shape:"straw-voyager-shape"},{id:"pet-23",name:"Leaf Runner",group:"Inspired Mascots",feature:"ninja",shape:"leaf-runner-shape"},{id:"pet-24",name:"Energy Pearl",group:"Inspired Mascots",feature:"pearl",shape:"energy-pearl-shape"},{id:"pet-25",name:"Moon Wand",group:"Inspired Mascots",feature:"wand",shape:"moon-wand-shape"},{id:"pet-26",name:"Mecha Guard",group:"Inspired Mascots",feature:"mecha",shape:"mecha-guard-shape"},{id:"pet-27",name:"Teardrop Slime",group:"Inspired Mascots",feature:"slime",shape:"teardrop-slime-shape"},{id:"pet-28",name:"Ink Runner",group:"Inspired Mascots",feature:"ink",shape:"ink-runner-shape"},{id:"pet-29",name:"Little Beagle",group:"Inspired Mascots",feature:"ears",shape:"little-beagle-shape"},{id:"pet-30",name:"Tiny Antler",group:"Inspired Mascots",feature:"horns",shape:"tiny-antler-shape"}].map(a=>[a.id,a])),h=[{id:"pet-01",name:"Claude Pixel",group:"Codex",feature:"square",bodyTop:"#e0845f",body:"#d87352",bodyDark:"#cf684a",bodyLight:"#e88d68",bodySideLight:"#df7d5a",bodySideDark:"#c86347",accent:"#d7654a",accessory:"#f1bc62",eye:"#12100f",highlight:"#f6e7d7"},{id:"pet-02",name:"Blue Pocket Bot",group:"Gadget Buddy",feature:"bell",bodyTop:"#4aa8d8",body:"#2f8fc4",bodyDark:"#2674a4",bodyLight:"#68bce5",bodySideLight:"#48a8d5",bodySideDark:"#1f6591",accent:"#d84e4a",accessory:"#f4c94f",eye:"#10141a",highlight:"#f7fbff",facePatch:"#f6fbff",cheek:"#d84e4a"},{id:"pet-03",name:"Spark Arcade Pal",group:"Electric Mascot",feature:"bolt",bodyTop:"#f2d45a",body:"#e6bd37",bodyDark:"#c89a2a",bodyLight:"#ffe37a",bodySideLight:"#f0cc4c",bodySideDark:"#b58724",accent:"#2f2520",accessory:"#df5145",eye:"#17120e",highlight:"#fff7c7",cheek:"#e94d43"},{id:"pet-04",name:"Pink Star Puff",group:"Star Puff",feature:"star",bodyTop:"#eba0b7",body:"#df7fa0",bodyDark:"#c76589",bodyLight:"#f2b6c8",bodySideLight:"#e993ac",bodySideDark:"#b95778",accent:"#c84d64",accessory:"#f0d862",eye:"#171016",highlight:"#fff0f6",cheek:"#e75c7a"},{id:"pet-05",name:"Leaf Sprite",group:"Forest Starter",feature:"leaf",bodyTop:"#76aa7b",body:"#5f9666",bodyDark:"#4d7c54",bodyLight:"#91bd8f",bodySideLight:"#72a875",bodySideDark:"#426d49",accent:"#2f6f46",accessory:"#d6e78a",eye:"#11160f",highlight:"#f0f8e4",facePatch:"#dceec2"},{id:"pet-06",name:"Ember Starter",group:"Fire Buddy",feature:"flame",bodyTop:"#df8755",body:"#ce6b3f",bodyDark:"#af5333",bodyLight:"#ee9d6b",bodySideLight:"#dd7b4c",bodySideDark:"#9a482c",accent:"#8d3d2f",accessory:"#f3c34b",eye:"#17100c",highlight:"#ffe8d4",cheek:"#e45842"},{id:"pet-07",name:"Ripple Buddy",group:"Water Buddy",feature:"fins",bodyTop:"#82b5d6",body:"#629dcc",bodyDark:"#4f82ad",bodyLight:"#9bc8e5",bodySideLight:"#73add6",bodySideDark:"#44749b",accent:"#5f6f8d",accessory:"#ead59a",eye:"#10151b",highlight:"#eff8ff",facePatch:"#d9eef8"},{id:"pet-08",name:"Moon Alley Cat",group:"Moon Cat",feature:"moon",bodyTop:"#4f4b69",body:"#3f3a59",bodyDark:"#332f49",bodyLight:"#67607e",bodySideLight:"#554f6d",bodySideDark:"#2b283e",accent:"#e5c85c",accessory:"#d66f91",eye:"#f5e8a7",highlight:"#fff6c8",cheek:"#cf6d8f"},{id:"pet-09",name:"Spore Runner",group:"Mushroom Runner",feature:"mushroom",bodyTop:"#e0524f",body:"#f0dcc6",bodyDark:"#d7c0aa",bodyLight:"#f7ead9",bodySideLight:"#f1dfcb",bodySideDark:"#c7aa95",accent:"#b83736",accessory:"#ffffff",eye:"#17120f",highlight:"#fff8ea"},{id:"pet-10",name:"Dash Quill",group:"Speed Mascot",feature:"spin",bodyTop:"#4e83d0",body:"#356dbd",bodyDark:"#2a579b",bodyLight:"#6896de",bodySideLight:"#477dd0",bodySideDark:"#244c88",accent:"#f2c45b",accessory:"#f2ece1",eye:"#10131a",highlight:"#eef4ff",facePatch:"#ead3b9"},{id:"pet-11",name:"Lemon Chomper",group:"Arcade Chomper",feature:"chomp",bodyTop:"#f0ce45",body:"#e5ba2f",bodyDark:"#c89924",bodyLight:"#ffe26c",bodySideLight:"#efc73f",bodySideDark:"#b18520",accent:"#1f1b18",accessory:"#f2845f",eye:"#15110d",highlight:"#fff2b6"},{id:"pet-12",name:"Lantern Ghost",group:"Round Ghost",feature:"ghost",bodyTop:"#d9dff0",body:"#c4cee6",bodyDark:"#aab6d2",bodyLight:"#edf2ff",bodySideLight:"#d3dced",bodySideDark:"#9aa8c6",accent:"#6d7da8",accessory:"#e77c9c",eye:"#151926",highlight:"#ffffff"},{id:"pet-13",name:"Red Cap Jumper",group:"Platform Pal",feature:"cap",bodyTop:"#d84f45",body:"#c5a17d",bodyDark:"#a98263",bodyLight:"#e0ba94",bodySideLight:"#d3ad86",bodySideDark:"#936f54",accent:"#2c4f99",accessory:"#f6e9d1",eye:"#16110d",highlight:"#fff2df"},{id:"pet-14",name:"Honey Cub",group:"Classic Toy",feature:"ears",bodyTop:"#e4b25a",body:"#d0993e",bodyDark:"#ad7d30",bodyLight:"#efc46d",bodySideLight:"#dba84d",bodySideDark:"#996d2a",accent:"#b54d3f",accessory:"#f4d991",eye:"#17110d",highlight:"#fff0c8",facePatch:"#f2d083"},{id:"pet-15",name:"Ribbon Puff",group:"Bow Buddy",feature:"bow",bodyTop:"#f2f0e8",body:"#e3ded4",bodyDark:"#c9c2b7",bodyLight:"#ffffff",bodySideLight:"#eee9df",bodySideDark:"#bab2a7",accent:"#d84b5b",accessory:"#f3cc56",eye:"#15110f",highlight:"#ffffff",cheek:"#df6d80"},{id:"pet-16",name:"Cozy Hood Cub",group:"Hooded Mascot",feature:"hood",bodyTop:"#ef9eba",body:"#e681a4",bodyDark:"#c96789",bodyLight:"#f5b6ca",bodySideLight:"#ee94b2",bodySideDark:"#b85878",accent:"#f0d6de",accessory:"#f3d66b",eye:"#171017",highlight:"#fff0f6",facePatch:"#fff6f2"},{id:"pet-17",name:"Masked Beetle",group:"Bug Hero",feature:"mask",bodyTop:"#6e617d",body:"#554761",bodyDark:"#41374b",bodyLight:"#837491",bodySideLight:"#655570",bodySideDark:"#382f41",accent:"#cf6f8e",accessory:"#f0d46a",eye:"#f7edf4",highlight:"#fff7ff",facePatch:"#ece0ea"},{id:"pet-18",name:"Round Forest Pal",group:"Forest Neighbor",feature:"ears",bodyTop:"#8c8d7d",body:"#74766a",bodyDark:"#606257",bodyLight:"#a0a293",bodySideLight:"#838578",bodySideDark:"#55574d",accent:"#d9d3b8",accessory:"#c6d68c",eye:"#121411",highlight:"#efead8",facePatch:"#dad4ba"},{id:"pet-19",name:"Dust Puff",group:"Tiny Soot",feature:"soot",bodyTop:"#34343a",body:"#25262c",bodyDark:"#1d1e24",bodyLight:"#4a4b52",bodySideLight:"#383941",bodySideDark:"#171820",accent:"#6c6f7a",accessory:"#f0f0d8",eye:"#f7f7e8",highlight:"#ffffff"},{id:"pet-20",name:"Straw Field Pal",group:"Harvest Buddy",feature:"straw",bodyTop:"#d96a50",body:"#c65342",bodyDark:"#a74336",bodyLight:"#e47d64",bodySideLight:"#d0614d",bodySideDark:"#933a30",accent:"#2f5f93",accessory:"#e8c866",eye:"#15100d",highlight:"#ffe6d9"},{id:"pet-21",name:"Shadow Ninja Bean",group:"Ninja Mascot",feature:"ninja",bodyTop:"#e7a04d",body:"#d88432",bodyDark:"#b96c27",bodyLight:"#efb464",bodySideLight:"#df943e",bodySideDark:"#a25d22",accent:"#2d415c",accessory:"#ded5c6",eye:"#15100c",highlight:"#ffe7c8",facePatch:"#f3c78d"},{id:"pet-22",name:"Pearl Quest Cub",group:"Pearl Hero",feature:"pearl",bodyTop:"#e3a54e",body:"#ce8438",bodyDark:"#ac682e",bodyLight:"#efbc68",bodySideLight:"#db9345",bodySideDark:"#985a28",accent:"#476ca6",accessory:"#f0d464",eye:"#15100c",highlight:"#ffe8c4"},{id:"pet-23",name:"Wand Starling",group:"Magic Mascot",feature:"wand",bodyTop:"#f0a6c4",body:"#df87ad",bodyDark:"#c26b92",bodyLight:"#f5bad2",bodySideLight:"#e99ab9",bodySideDark:"#ad5d82",accent:"#d8b34a",accessory:"#e9d7ff",eye:"#171017",highlight:"#fff0f7",cheek:"#e76791"},{id:"pet-24",name:"Mecha Bean",group:"Tiny Mecha",feature:"mecha",bodyTop:"#d7dbe2",body:"#bdc3ce",bodyDark:"#9ea6b3",bodyLight:"#edf0f5",bodySideLight:"#cbd1da",bodySideDark:"#8d96a5",accent:"#d44d4a",accessory:"#f0c748",eye:"#151923",highlight:"#ffffff"},{id:"pet-25",name:"Bubble Slimelet",group:"Slime Buddy",feature:"slime",bodyTop:"#79b8e8",body:"#5aa0d8",bodyDark:"#4384ba",bodyLight:"#96cdf0",bodySideLight:"#70b3e3",bodySideDark:"#3975a6",accent:"#2a658f",accessory:"#f3f7ff",eye:"#101722",highlight:"#f5fbff"},{id:"pet-26",name:"Ink Courier",group:"Ink Runner",feature:"ink",bodyTop:"#75c8bb",body:"#54afa2",bodyDark:"#3f9188",bodyLight:"#90d9ce",bodySideLight:"#67c1b5",bodySideDark:"#377f77",accent:"#d7668f",accessory:"#e4f2ef",eye:"#101716",highlight:"#effffb"},{id:"pet-27",name:"Drum Marcher",group:"Rhythm Pal",feature:"drum",bodyTop:"#ef7f5f",body:"#df6349",bodyDark:"#bd4d3b",bodyLight:"#f39a7b",bodySideLight:"#e77358",bodySideDark:"#a84434",accent:"#4f78b6",accessory:"#f3e4c6",eye:"#15100d",highlight:"#fff0e4"},{id:"pet-28",name:"Sprout Forestling",group:"Sprout Buddy",feature:"sprout",bodyTop:"#a58f5d",body:"#8f7548",bodyDark:"#755f3a",bodyLight:"#b9a26e",bodySideLight:"#9b8354",bodySideDark:"#655233",accent:"#5d8b56",accessory:"#dfc86e",eye:"#15110c",highlight:"#f8ecc0",facePatch:"#d8be71"},{id:"pet-29",name:"Frost Star Pup",group:"Ice Pal",feature:"star",bodyTop:"#8aa7d8",body:"#6e91c8",bodyDark:"#5877aa",bodyLight:"#a1bce5",bodySideLight:"#7f9fd3",bodySideDark:"#4e6898",accent:"#f0cf5b",accessory:"#f3edf5",eye:"#10151c",highlight:"#eff5ff",cheek:"#d66d86"},{id:"pet-30",name:"Tiny Quest Cub",group:"Quest Mascot",feature:"bow",bodyTop:"#efa2c8",body:"#df84b2",bodyDark:"#c46999",bodyLight:"#f5b9d5",bodySideLight:"#eb96c2",bodySideDark:"#ad5a86",accent:"#cf4d78",accessory:"#f0d66a",eye:"#171016",highlight:"#fff0f8",cheek:"#df688f"}].map(a=>({...a,...g.get(a.id)}));function i(a){return h.find(b=>b.id===a)??h[0]}function j(){if("u"<typeof localStorage)return h[0].id;try{return i(localStorage.getItem(e)).id}catch{return h[0].id}}var k=a.i(535510);let l=(0,c.lazy)(()=>a.A(76574).then(a=>({default:a.MonsterDirectPixelCharacter})));function m({activityId:a,preset:c,reacting:d,shaken:e,fainted:f=!1,eyeOffset:g={x:0,y:0}}){let h=(0,k.getCloudCodeMonsterExpression)(a,d,e,f);return"fainted"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"43",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"49",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"43",y:"51",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"49",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"43",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"51",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"39",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"58",y:"64",width:"14",height:"4",fill:c.eye})]}):"shaken"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"45",y:"40",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"50",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"45",y:"50",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"40",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"77",y:"45",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"82",y:"50",width:"5",height:"5",fill:c.eye}),(0,b.jsx)("rect",{x:"62",y:"61",width:"6",height:"4",fill:c.eye})]}):"shocked"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("g",{className:"cloud-code-monster-pet-eyes-track",transform:`translate(${g.x} ${g.y})`,children:[(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"44",y:"39",width:"12",height:"13",fill:c.eye}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"76",y:"39",width:"12",height:"13",fill:c.eye}),(0,b.jsxs)("g",{transform:`translate(${.45*g.x} ${.45*g.y})`,children:[(0,b.jsx)("rect",{x:"47",y:"42",width:"4",height:"4",fill:c.highlight}),(0,b.jsx)("rect",{x:"79",y:"42",width:"4",height:"4",fill:c.highlight})]})]}),(0,b.jsx)("rect",{x:"60",y:"60",width:"10",height:"12",fill:c.eye}),(0,b.jsx)("rect",{x:"62",y:"62",width:"6",height:"3",fill:"#332520"})]}):"sleeping"===h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"45",y:"46",width:"11",height:"4",fill:c.eye}),(0,b.jsx)("rect",{x:"76",y:"46",width:"11",height:"4",fill:c.eye})]}):(0,b.jsxs)("g",{className:"cloud-code-monster-pet-eyes-track",transform:`translate(${g.x} ${g.y})`,children:[(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"44",y:"42",width:"11",height:"12",fill:c.eye}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-eye-blink",x:"77",y:"42",width:"11",height:"12",fill:c.eye}),(0,b.jsxs)("g",{transform:`translate(${.55*g.x} ${.55*g.y})`,children:[(0,b.jsx)("rect",{x:"46",y:"44",width:"4",height:"4",fill:"#2c2521"}),(0,b.jsx)("rect",{x:"79",y:"44",width:"4",height:"4",fill:"#2c2521"})]})]})}function n({preset:a}){let{feature:c}=a;return"horns"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"29",y:"20",width:"10",height:"8",fill:a.accent}),(0,b.jsx)("rect",{x:"91",y:"20",width:"10",height:"8",fill:a.accent}),(0,b.jsx)("rect",{x:"34",y:"16",width:"7",height:"7",fill:a.accessory}),(0,b.jsx)("rect",{x:"88",y:"16",width:"7",height:"7",fill:a.accessory})]}):"ears"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"18",y:"38",width:"10",height:"18",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"100",y:"38",width:"10",height:"18",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"21",y:"42",width:"5",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"102",y:"42",width:"5",height:"8",fill:a.bodyLight})]}):"visor"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"41",y:"36",width:"47",height:"5",fill:a.accent}),(0,b.jsx)("rect",{x:"45",y:"38",width:"39",height:"3",fill:a.highlight})]}):"antenna"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"62",y:"15",width:"5",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"58",y:"10",width:"13",height:"6",fill:a.accessory})]}):"crown"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"43",y:"18",width:"8",height:"10",fill:a.accessory}),(0,b.jsx)("rect",{x:"60",y:"14",width:"8",height:"14",fill:a.accessory}),(0,b.jsx)("rect",{x:"77",y:"18",width:"8",height:"10",fill:a.accessory}),(0,b.jsx)("rect",{x:"42",y:"26",width:"44",height:"5",fill:a.accent})]}):"bell"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"22",y:"42",width:"8",height:"14",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"98",y:"42",width:"8",height:"14",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"59",y:"21",width:"11",height:"7",fill:a.accent})]}):"bolt"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"29",y:"20",width:"8",height:"17",fill:a.accent}),(0,b.jsx)("rect",{x:"91",y:"20",width:"8",height:"17",fill:a.accent}),(0,b.jsx)("rect",{x:"33",y:"32",width:"8",height:"9",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"87",y:"32",width:"8",height:"9",fill:a.bodyTop})]}):"star"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"60",y:"13",width:"8",height:"24",fill:a.accessory}),(0,b.jsx)("rect",{x:"52",y:"21",width:"24",height:"8",fill:a.accessory}),(0,b.jsx)("rect",{x:"56",y:"17",width:"16",height:"16",fill:a.accessory})]}):"leaf"===c||"sprout"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"61",y:"15",width:"6",height:"18",fill:a.accent}),(0,b.jsx)("rect",{x:"49",y:"18",width:"16",height:"10",fill:a.accent}),(0,b.jsx)("rect",{x:"66",y:"18",width:"16",height:"10",fill:a.bodyLight})]}):"flame"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"58",y:"9",width:"12",height:"20",fill:a.accessory}),(0,b.jsx)("rect",{x:"52",y:"18",width:"9",height:"14",fill:a.accent}),(0,b.jsx)("rect",{x:"69",y:"17",width:"8",height:"15",fill:a.bodyLight})]}):"fins"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"18",y:"45",width:"10",height:"18",fill:a.accent}),(0,b.jsx)("rect",{x:"100",y:"45",width:"10",height:"18",fill:a.accent}),(0,b.jsx)("rect",{x:"55",y:"18",width:"18",height:"10",fill:a.accessory})]}):"moon"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"57",y:"14",width:"18",height:"18",fill:a.accessory}),(0,b.jsx)("rect",{x:"64",y:"12",width:"15",height:"19",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"24",y:"37",width:"7",height:"18",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"97",y:"37",width:"7",height:"18",fill:a.bodyDark})]}):"mushroom"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"31",y:"18",width:"66",height:"22",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"42",y:"13",width:"44",height:"11",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"45",y:"22",width:"9",height:"8",fill:a.accessory}),(0,b.jsx)("rect",{x:"73",y:"20",width:"10",height:"8",fill:a.accessory})]}):"spin"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"47",y:"17",width:"34",height:"9",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"37",y:"24",width:"14",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"78",y:"24",width:"13",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"29",y:"31",width:"11",height:"7",fill:a.bodyLight})]}):"chomp"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"88",y:"48",width:"14",height:"8",fill:a.highlight}),(0,b.jsx)("rect",{x:"88",y:"60",width:"14",height:"8",fill:a.highlight})]}):"ghost"===c||"slime"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"44",y:"19",width:"40",height:"12",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"36",y:"27",width:"56",height:"10",fill:a.bodyLight})]}):"cap"===c||"straw"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"34",y:"18",width:"58",height:"12",fill:"straw"===c?a.accessory:a.bodyTop}),(0,b.jsx)("rect",{x:"45",y:"12",width:"36",height:"10",fill:"straw"===c?a.accessory:a.bodyTop}),(0,b.jsx)("rect",{x:"58",y:"22",width:"14",height:"5",fill:"straw"===c?a.accent:a.accessory})]}):"bow"===c||"hood"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"76",y:"17",width:"13",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"91",y:"17",width:"13",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"88",y:"21",width:"7",height:"7",fill:a.accessory})]}):"mask"===c||"ninja"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"35",y:"25",width:"58",height:"8",fill:a.accent}),(0,b.jsx)("rect",{x:"48",y:"18",width:"12",height:"10",fill:a.accent}),(0,b.jsx)("rect",{x:"69",y:"18",width:"12",height:"10",fill:a.accent})]}):"soot"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"27",y:"25",width:"8",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"92",y:"23",width:"9",height:"9",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"61",y:"12",width:"7",height:"7",fill:a.bodyLight})]}):"pearl"===c||"wand"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"58",y:"12",width:"13",height:"13",fill:a.accessory}),(0,b.jsx)("rect",{x:"61",y:"7",width:"7",height:"7",fill:a.accent}),(0,b.jsx)("rect",{x:"73",y:"17",width:"9",height:"9",fill:a.accent})]}):"mecha"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"29",y:"24",width:"12",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"87",y:"24",width:"12",height:"13",fill:a.accent}),(0,b.jsx)("rect",{x:"51",y:"18",width:"27",height:"9",fill:a.accessory})]}):"ink"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"35",y:"19",width:"12",height:"16",fill:a.accent}),(0,b.jsx)("rect",{x:"56",y:"14",width:"14",height:"20",fill:a.accent}),(0,b.jsx)("rect",{x:"80",y:"19",width:"12",height:"16",fill:a.accent})]}):"drum"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"31",y:"27",width:"66",height:"7",fill:a.accent}),(0,b.jsx)("rect",{x:"41",y:"18",width:"46",height:"10",fill:a.accessory})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"38",y:"30",width:"10",height:"4",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"80",y:"30",width:"10",height:"4",fill:a.bodyDark})]})}function o({preset:a}){let c=a.feature;return(0,b.jsxs)(b.Fragment,{children:[a.facePatch?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"40",y:"39",width:"48",height:"34",fill:a.facePatch}),(0,b.jsx)("rect",{x:"46",y:"73",width:"36",height:"10",fill:a.facePatch})]}):null,"bell"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"50",y:"74",width:"28",height:"6",fill:a.accent}),(0,b.jsx)("rect",{x:"58",y:"80",width:"13",height:"11",fill:a.accessory}),(0,b.jsx)("rect",{x:"61",y:"84",width:"7",height:"3",fill:a.eye})]}):null,"bolt"===c?(0,b.jsx)("rect",{x:"89",y:"76",width:"13",height:"8",fill:a.accent}):null,"chomp"===c?(0,b.jsx)("rect",{x:"72",y:"56",width:"22",height:"16",fill:a.highlight}):null,"ghost"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"28",y:"91",width:"12",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"52",y:"91",width:"12",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"76",y:"91",width:"12",height:"8",fill:a.bodyLight})]}):null,"drum"===c?(0,b.jsx)("rect",{x:"31",y:"55",width:"66",height:"8",fill:a.accessory}):null,"mecha"===c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"41",y:"35",width:"45",height:"6",fill:a.accent}),(0,b.jsx)("rect",{x:"57",y:"58",width:"14",height:"9",fill:a.accessory})]}):null,a.cheek?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("rect",{x:"36",y:"58",width:"8",height:"7",fill:a.cheek}),(0,b.jsx)("rect",{x:"86",y:"58",width:"8",height:"7",fill:a.cheek})]}):null]})}function p({preset:a,activityId:d,animated:e=!1,reacting:f=!1,shaken:g=!1,fainted:h=!1,eyeOffset:i}){return"monster"!==(a.shape??"monster")?(0,b.jsx)("g",{className:e?"cloud-code-monster-pet-character":void 0,children:(0,b.jsx)(c.Suspense,{fallback:null,children:(0,b.jsx)(l,{activityId:d,preset:a,reacting:f,shaken:g,fainted:h,eyeOffset:i})})}):(0,b.jsxs)("g",{className:e?"cloud-code-monster-pet-character":void 0,children:[(0,b.jsx)(n,{preset:a}),(0,b.jsx)("rect",{x:"32",y:"22",width:"64",height:"12",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"24",y:"34",width:"80",height:"17",fill:a.bodyTop}),(0,b.jsx)("rect",{x:"16",y:"51",width:"12",height:"24",fill:a.body}),(0,b.jsx)("rect",{x:"24",y:"51",width:"80",height:"41",fill:a.body}),(0,b.jsx)("rect",{x:"100",y:"51",width:"12",height:"24",fill:a.body}),(0,b.jsx)("rect",{x:"16",y:"63",width:"12",height:"12",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"30",y:"86",width:"68",height:"10",fill:a.bodyDark}),(0,b.jsx)("rect",{x:"34",y:"34",width:"60",height:"6",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"24",y:"51",width:"9",height:"35",fill:a.bodySideLight}),(0,b.jsx)("rect",{x:"95",y:"51",width:"9",height:"35",fill:a.bodySideDark}),(0,b.jsx)(o,{preset:a}),(0,b.jsx)(m,{activityId:d,preset:a,reacting:f,shaken:g,fainted:h,eyeOffset:i}),(0,b.jsx)("rect",{x:"36",y:"69",width:"8",height:"8",fill:a.bodyLight}),(0,b.jsx)("rect",{x:"84",y:"69",width:"8",height:"8",fill:a.bodySideDark}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-left-foot",x:"29",y:"96",width:"12",height:"22",fill:a.body}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-left-foot",x:"52",y:"96",width:"12",height:"22",fill:a.body}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-right-foot",x:"76",y:"96",width:"12",height:"22",fill:a.bodyDark}),(0,b.jsx)("rect",{className:"cloud-code-monster-pet-right-foot",x:"96",y:"96",width:"12",height:"22",fill:a.bodyDark})]})}function q({preset:a,className:c}){return(0,b.jsxs)("svg",{className:c,viewBox:"0 0 128 128",role:"img","aria-label":`${a.name} pixel PET preset`,shapeRendering:"crispEdges",children:[(0,b.jsx)("rect",{x:"31",y:"116",width:"66",height:"5",fill:"rgba(45,40,36,.12)"}),(0,b.jsx)("rect",{x:"40",y:"121",width:"48",height:"3",fill:"rgba(45,40,36,.07)"}),(0,b.jsx)(p,{preset:a,activityId:null})]})}var r=a.i(76592),s=a.i(973111),t=a.i(272818),u=a.i(75118);a.s(["PetTab",0,function(){let[a,g]=(0,c.useState)(!1),[k,l]=(0,c.useState)(h[0].id),m=i(k);return(0,c.useEffect)(()=>{g((0,t.readHomePetSettings)().enabled),l(j());let a=a=>{let b=a.detail?.presetId;l(b?i(b).id:j())};return window.addEventListener(f,a),()=>{window.removeEventListener(f,a)}},[]),(0,b.jsxs)("div",{className:"space-y-8",children:[(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h2",{className:"text-sm font-medium",children:"Pet"}),(0,b.jsx)("div",{className:"space-y-4",children:(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)(r.Label,{htmlFor:"pet-enabled",className:"text-sm",children:"Enable pet"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Off by default. Turn it on when you want the workspace companion."})]}),(0,b.jsx)(s.Switch,{id:"pet-enabled",checked:a,onCheckedChange:a=>{g(a),(0,t.writeHomePetSettings)({enabled:a})}})]})})]}),a?(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-sm font-medium",children:"Preset"}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:m.name})]}),(0,b.jsx)("div",{className:"grid size-14 place-items-center rounded-md bg-card ring-1 ring-border/60",children:(0,b.jsx)(q,{preset:m,className:"size-11"})})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:h.map(a=>{let c=a.id===m.id;return(0,b.jsxs)("button",{type:"button","aria-pressed":c,onClick:()=>{l(function(a){let b=i(a);if("u">typeof localStorage)try{localStorage.setItem(e,b.id)}catch{}return b.id}(a.id))},className:(0,u.cn)("group grid h-28 min-w-0 grid-rows-[1fr_auto] rounded-md border bg-card/60 p-2 text-left transition-all hover:border-foreground/20 hover:bg-accent/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/70",c?"border-primary/50 bg-accent text-foreground":"border-border/50 text-muted-foreground"),children:[(0,b.jsx)("div",{className:"grid place-items-center rounded bg-background/70 ring-1 ring-border/35",children:(0,b.jsx)(q,{preset:a,className:"size-14 transition-transform duration-200 group-hover:scale-105"})}),(0,b.jsxs)("div",{className:"mt-1.5 flex min-w-0 items-center justify-between gap-1 text-[10px] leading-none",children:[(0,b.jsx)("span",{className:"truncate font-medium text-foreground",children:a.name}),c?(0,b.jsx)(d,{className:"size-3 shrink-0 text-primary"}):(0,b.jsx)("span",{className:"shrink-0 text-muted-foreground",children:a.id.replace("pet-","#")})]})]},a.id)})})]}):null]})}],390946)},617168,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(752792),e=a.i(506180),f=a.i(25668),g=a.i(588339),h=a.i(439882),i=a.i(464830),j=a.i(410732);let k=(0,j.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var l=a.i(551798),m=a.i(554705);let n=(0,j.default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);var o=a.i(515837);let p=(0,j.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);function q({icon:a,label:c,value:d,sub:e}){return(0,b.jsx)(h.Card,{size:"sm",children:(0,b.jsxs)(h.CardContent,{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary",children:(0,b.jsx)(a,{className:"size-4"})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)("p",{className:"text-2xl font-semibold leading-none tracking-tight",children:d}),e&&(0,b.jsx)(i.Badge,{variant:"secondary",className:"text-[10px] px-1.5 h-4 font-normal",children:e})]}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground truncate",children:c})]})]})})}function r({agents:a,runtimes:c,activeTaskCounts:d,overview:e}){let f=new Map;for(let a of c){let b=a.daemon_id??a.id;f.set(b,f.get(b)||"online"===a.status)}let g=f.size,h=[...f.values()].filter(Boolean).length,i=Object.values(d).reduce((a,b)=>a+b,0),j=a.filter(a=>{let b=c.find(b=>b.id===a.runtime_id);return b?.status==="online"}).length;return(0,b.jsxs)("div",{className:"grid gap-3 grid-cols-2 sm:grid-cols-3 lg:grid-cols-6",children:[(0,b.jsx)(q,{icon:o.Monitor,label:"Machines",value:`${h}/${g}`,sub:"online"}),(0,b.jsx)(q,{icon:k,label:"Agents",value:a.length,sub:`${j} online`}),(0,b.jsx)(q,{icon:n,label:"Members",value:e.members.length,sub:e.pending_invites>0?`${e.pending_invites} pending`:void 0}),(0,b.jsx)(q,{icon:p,label:"Active Tasks",value:i,sub:e.task_stats.queued>0?`${e.task_stats.queued} queued`:void 0}),(0,b.jsx)(q,{icon:m.Send,label:"Emails Sent",value:e.email_stats.outbound,sub:`${e.email_stats.unread} unread`}),(0,b.jsx)(q,{icon:l.Mail,label:"Custom Emails",value:e.email_accounts.length})]})}function s({overview:a}){let{completed:c,failed:d,cancelled:e,queued:f,stale:g}=a.task_stats,i=c+d,j=i>0?(d/i*100).toFixed(1):"0";return(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsx)(h.CardTitle,{children:"Task Health (Today)"})}),(0,b.jsx)(h.CardContent,{children:(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsx)(t,{label:"Completed",value:c}),(0,b.jsx)(t,{label:"Failed",value:d,className:d>0?"text-destructive":void 0}),(0,b.jsx)(t,{label:"Cancelled",value:e}),(0,b.jsx)(t,{label:"Failure Rate",value:`${j}%`,className:Number(j)>10?"text-destructive":void 0}),(0,b.jsx)(t,{label:"Queue Backlog",value:f,className:f>10?"text-amber-500":void 0}),(0,b.jsx)(t,{label:"Stale Tasks",value:g,className:g>0?"text-destructive":void 0})]})})]})}function t({label:a,value:c,className:d}){return(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:`text-xl font-semibold ${d??""}`,children:c}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a})]})}var u=a.i(525132);function v({overview:a,agents:c}){let{inbound:d,outbound:e,unread:f,rejected:g}=a.email_stats,i=new Map(c.map(a=>[a.id,a.name]));return(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsx)(h.CardTitle,{children:"Email Summary"})}),(0,b.jsxs)(h.CardContent,{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xl font-semibold",children:d}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Received"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xl font-semibold",children:e}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Sent"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:`text-xl font-semibold ${f>0?"text-primary":""}`,children:f}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Unread"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:`text-xl font-semibold ${g>0?"text-amber-500":""}`,children:g}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Untrust"})]})]}),a.email_accounts.length>0&&(0,b.jsxs)("div",{className:"space-y-2 pt-2 border-t border-border/50",children:[(0,b.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Custom Mailboxes"}),a.email_accounts.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2 text-xs",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsxs)(u.Tooltip,{children:[(0,b.jsx)(u.TooltipTrigger,{render:(0,b.jsx)("span",{className:`size-1.5 shrink-0 rounded-full ${"active"===a.status?"bg-emerald-500":"bg-destructive"}`})}),(0,b.jsx)(u.TooltipContent,{side:"top",children:"active"===a.status?"Active":`Error: ${a.error_message||"inactive"}`})]}),(0,b.jsx)("span",{className:"truncate",children:a.email_address})]}),(0,b.jsx)("span",{className:"text-muted-foreground shrink-0",children:i.get(a.agent_id)??"—"})]},a.id))]})]})]})}var w=a.i(630991),x=a.i(919690);function y({runtimes:a,agents:c}){let d=(0,w.useRouter)(),{slug:f}=(0,e.useWorkspace)(),g=new Map;for(let b of a){let a=b.daemon_id??b.id;g.has(a)||g.set(a,{runtimes:[],deviceInfo:b.device_info??""}),g.get(a).runtimes.push(b)}let j=[...g.entries()];return 0===j.length?(0,b.jsxs)(h.Card,{children:[(0,b.jsxs)(h.CardHeader,{children:[(0,b.jsx)(h.CardTitle,{children:"Machines"}),(0,b.jsx)(h.CardAction,{children:(0,b.jsx)("button",{type:"button",onClick:()=>d.push(`/w/${f}/runtimes`),className:"text-muted-foreground hover:text-foreground transition-colors cursor-pointer",children:(0,b.jsx)(x.ArrowUpRight,{className:"size-4"})})})]}),(0,b.jsx)(h.CardContent,{children:(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No machines connected."})})]}):(0,b.jsxs)(h.Card,{children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsx)(h.CardTitle,{children:"Machines"})}),(0,b.jsx)(h.CardContent,{className:"space-y-3",children:j.map(([a,d])=>{let e=d.runtimes.some(a=>"online"===a.status),f=d.runtimes.map(a=>a.last_seen_at).filter(Boolean).sort().reverse()[0],g=c.filter(a=>d.runtimes.some(b=>b.id===a.runtime_id)),h=d.runtimes.some(a=>a.pending_update_version),j=d.runtimes.find(a=>a.pending_update_version)?.pending_update_version;return(0,b.jsxs)("div",{className:"flex items-start gap-3 text-xs",children:[(0,b.jsxs)(u.Tooltip,{children:[(0,b.jsx)(u.TooltipTrigger,{render:(0,b.jsx)("span",{className:`mt-1 size-2 shrink-0 rounded-full ${e?"bg-emerald-500":"bg-muted-foreground/30"}`})}),(0,b.jsx)(u.TooltipContent,{side:"top",children:e?"Online":"Offline"})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-medium truncate",children:d.deviceInfo||a.slice(0,12)}),h&&(0,b.jsxs)(u.Tooltip,{children:[(0,b.jsx)(u.TooltipTrigger,{render:(0,b.jsx)("span",{children:(0,b.jsx)(i.Badge,{variant:"outline",className:"text-[10px] px-1.5 py-0 text-amber-500 border-amber-500/30",children:"update"})})}),(0,b.jsxs)(u.TooltipContent,{side:"top",children:["Pending update to v",j]})]})]}),(0,b.jsxs)("div",{className:"text-muted-foreground mt-0.5",children:[g.length>0?g.map(a=>a.name).join(", "):"No agents"," · ",function(a){if(!a)return"never";let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);return d<24?`${d}h ago`:`${Math.floor(d/24)}d ago`}(f??null)]})]})]},a)})})]})}function z({overview:a}){let c=(0,w.useRouter)(),{slug:d}=(0,e.useWorkspace)(),{members:f,pending_invites:g}=a;return(0,b.jsxs)(h.Card,{children:[(0,b.jsxs)(h.CardHeader,{children:[(0,b.jsx)(h.CardAction,{children:(0,b.jsx)("button",{type:"button",onClick:()=>c.push(`/w/${d}/settings`),className:"text-muted-foreground hover:text-foreground transition-colors cursor-pointer",children:(0,b.jsx)(x.ArrowUpRight,{className:"size-4"})})}),(0,b.jsxs)(h.CardTitle,{children:["Team",g>0&&(0,b.jsxs)("span",{className:"ml-2 text-xs text-muted-foreground font-normal",children:["(",g," pending invite",g>1?"s":"",")"]})]})]}),(0,b.jsx)(h.CardContent,{className:"p-0",children:(0,b.jsx)("div",{className:"divide-y divide-border/50",children:[...f].sort((a,b)=>"owner"===a.role?-1:+("owner"===b.role)).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-3 px-4 py-2.5",children:[a.image?(0,b.jsx)("img",{src:a.image,alt:a.name,className:"size-7 rounded-full shrink-0"}):(0,b.jsx)("div",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-secondary text-xs font-medium",children:(a.name||a.email).charAt(0).toUpperCase()}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate block",children:a.name||a.email}),a.name&&(0,b.jsx)("span",{className:"text-xs text-muted-foreground truncate block",children:a.email})]}),(0,b.jsx)(i.Badge,{variant:"owner"===a.role?"default":"secondary",className:"text-[10px] px-1.5 py-0 shrink-0",children:a.role})]},a.id))})})]})}a.s(["UsagesTab",0,function(){let{agents:a,runtimes:h,loading:i,activeTaskCounts:j}=(0,d.useAgentContext)(),{workspaceId:k}=(0,e.useWorkspace)(),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{if(i)return;let a=!1;return o(!0),(0,g.getWorkspaceOverview)(k).then(b=>{a||m(b)}).catch(()=>{}).finally(()=>{a||o(!1)}),()=>{a=!0}},[i,k]),n||!l)?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"}),(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"}),(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"}),(0,b.jsx)(f.Skeleton,{className:"h-44 rounded-xl"})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(r,{agents:a,runtimes:h,activeTaskCounts:j,overview:l}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,b.jsx)(s,{overview:l}),(0,b.jsx)(v,{overview:l,agents:a})]}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,b.jsx)(y,{runtimes:h,agents:a}),(0,b.jsx)(z,{overview:l})]})]})}],617168)},294526,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(654461),g=a.i(75118),h=a.i(597047),i=a.i(53909),j=a.i(616131),k=a.i(93590),l=a.i(390946),m=a.i(617168),n=b([h,j]);[h,j]=n.then?(await n)():n;let o=[{id:"general",label:"General"},{id:"pet",label:"Pet"},{id:"instruction",label:"Global Instruction"},{id:"notifications",label:"Notifications"},{id:"members",label:"Members"},{id:"usages",label:"Usages"}];a.s(["default",0,function(){let[a,b]=(0,e.useState)("general");return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5 gap-3",children:(0,d.jsx)("div",{className:"flex items-center gap-3 min-w-0",children:(0,d.jsx)("h1",{className:"text-sm font-medium",children:"Settings"})})}),(0,d.jsxs)("div",{className:"flex flex-1 min-h-0",children:[(0,d.jsxs)("nav",{className:"w-48 shrink-0 border-r border-border/50 py-3 px-2 hidden md:flex md:flex-col",children:[(0,d.jsx)("div",{className:"flex-1",children:o.map(c=>(0,d.jsx)("button",{onClick:()=>b(c.id),className:(0,g.cn)("w-full rounded-md px-2.5 py-1.5 text-left text-sm transition-colors",a===c.id?"bg-accent text-foreground font-medium":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"),children:c.label},c.id))}),(0,d.jsxs)("div",{className:"px-2.5 pt-3 border-t border-border/50 text-[11px] text-muted-foreground/60",children:["v","0.0.140"]})]}),(0,d.jsxs)("div",{className:"flex-1 min-w-0 flex flex-col",children:[(0,d.jsx)("div",{className:"px-4 pt-2 md:hidden",children:(0,d.jsx)(f.Tabs,{className:"items-center",value:a,onValueChange:a=>b(a),children:(0,d.jsx)(f.TabsList,{className:"h-auto gap-1",children:o.map(a=>(0,d.jsx)(f.TabsTrigger,{value:a.id,children:a.label},a.id))})})}),(0,d.jsx)("div",{className:(0,g.cn)("flex-1 overflow-y-auto thin-scrollbar","instruction"!==a&&"px-5 py-5"),children:"instruction"===a?(0,d.jsx)(i.InstructionTab,{}):"usages"===a?(0,d.jsx)(m.UsagesTab,{}):(0,d.jsxs)("div",{className:"mx-auto max-w-md",children:["general"===a&&(0,d.jsx)(h.GeneralTab,{}),"pet"===a&&(0,d.jsx)(l.PetTab,{}),"notifications"===a&&(0,d.jsx)(k.NotificationTab,{}),"members"===a&&(0,d.jsx)(j.MembersTab,{})]})}),(0,d.jsxs)("div",{className:"px-4 py-2 text-[11px] text-muted-foreground/60 md:hidden",children:["v","0.0.140"]})]})]})]})}]),c()}catch(a){c(a)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0qgcnj5._.js.map
|
|
@@ -59,6 +59,6 @@ module.exports=[762276,a=>{"use strict";var b=a.i(854445);a.i(735132);var c=a.i(
|
|
|
59
59
|
- Every interaction builds trust. Be empathetic, accurate, and efficient — resolve on first response when possible.
|
|
60
60
|
- Lead with acknowledgment, then solution or clear next steps. Use simple language.
|
|
61
61
|
- If you can't resolve immediately, set realistic expectations: what you'll do, by when.
|
|
62
|
-
- Track open issues proactively. Escalate complex or sensitive cases with full context.`;a.s(["SCENARIO_PRESETS",0,[{id:"software-dev",label:"Software Development",description:"Build and ship code with a coordinated dev team",icon:"🖥",members:[{role:"leader",description:"Coordinates work, summarizes results, and replies to you",instructions:d},{role:"engineer",description:"Writes code, runs tests, and verifies implementations",instructions:i,relationship:"Delegate coding tasks with: clear requirement description, acceptance criteria (3-5 specific testable items), relevant file paths, existing patterns to follow, and context from research findings if applicable.\n\nReport back with: implementation status, files changed, acceptance criteria checklist (pass/fail each), test results, and self-review concerns. After implementation, send work to the reviewer if one exists."},{role:"researcher",description:"Reads code, explores APIs, and gathers technical context",instructions:f,relationship:"Delegate technical research with: what to investigate, what decision it informs, scope boundary, and relevant file paths or code pointers.\n\nReport back with: technical summary, evidence (file paths, doc URLs, code snippets), recommendation, and confidence level (High/Medium/Low). Flag anything unverified."}]},{id:"content-research",label:"Content & Research",description:"Research topics, write content, and manage publishing",icon:"📝",members:[{role:"leader",description:"Coordinates work, shapes content direction, and delivers output",instructions:d},{role:"researcher",description:"Finds sources, verifies facts, and organizes references",instructions:g,relationship:"Delegate content research with: topic or claim to investigate, target content format (article, report, social), depth needed, and specific sources to check if any.\n\nReport back with: key facts for the writer, organized source list (URL, date, reliability), verification gaps, framing suggestion, and per-claim confidence."},{role:"assistant",description:"Handles formatting, publishing workflows, and follow-ups",instructions:j,relationship:"Delegate content operations with: what content to format or publish, target platform, deadline, and style requirements.\n\nReport back with: what was done (formatted, published, submitted), next step (awaiting review, scheduled date), and blockers if any."}]},{id:"personal-assistant",label:"Personal Assistant",description:"One AI that handles your everyday tasks and communications",icon:"🤖",members:[{role:"leader",description:"Handles all tasks directly — emails, research, scheduling, and more",instructions:e}]},{id:"sales-outreach",label:"Sales & Outreach",description:"Prospect, follow up, and close deals as a team",icon:"📈",members:[{role:"leader",description:"Coordinates outreach strategy and manages deal flow",instructions:d},{role:"researcher",description:"Researches prospects, companies, and market intelligence",instructions:h,relationship:"Delegate prospect research with: target criteria, market or industry focus, what intelligence is needed, and how it will be used (outreach, pitch, proposal).\n\nReport back with: prioritized prospect list (name, role, company, relevance, suggested angle), market signals, and confidence per finding."},{role:"assistant",description:"Handles outreach emails, follow-ups, and pipeline tracking",instructions:k,relationship:"Delegate outreach with: who to contact, messaging angle, follow-up cadence, and desired outcome.\n\nReport back with: emails sent or scheduled, responses received, pipeline updates, and deals needing escalation."}]},{id:"customer-support",label:"Customer Support",description:"Handle tickets, draft replies, and track resolutions",icon:"🎧",members:[{role:"leader",description:"Coordinates support queue and handles escalations",instructions:d},{role:"assistant",description:"Drafts customer responses and tracks open issues",instructions:l,relationship:"Delegate support tasks with: customer issue summary, urgency level, prior interaction context, and resolution approach.\n\nReport back with: response drafted or sent, resolution status, follow-up schedule, and recurring patterns to flag."}]},{id:"custom",label:"Custom",description:"Build your own team from scratch",icon:"✨",members:[{role:"leader",description:"Coordinates work and replies to you",instructions:d}]}],"shuffleMembers",0,function(a){let d=new Set,e=[];for(let f=0;f<a;f++){let a,f=0;do a=(0,b.uniqueNamesGenerator)({dictionaries:[b.names],length:1,style:"capital"}),f++;while(d.has(a)&&f<100)d.add(a),e.push({name:a,avatarUrl:(0,c.serializeAvatarConfig)((0,c.randomConfig)())})}return e}])},212484,a=>{"use strict";var b=a.i(616612),c=a.i(75118),d=a.i(762276);a.s(["ScenarioPicker",0,function({selected:a,onSelect:e,onBrowseTemplates:f}){return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-base font-semibold tracking-tight",children:"What will your company focus on?"}),f&&(0,b.jsxs)("button",{type:"button",onClick:f,className:"text-[11px] text-muted-foreground hover:text-foreground transition-colors underline underline-offset-2",children:["Browse templates ",(0,b.jsx)("span",{"aria-hidden":"true",children:"›"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:d.SCENARIO_PRESETS.map(d=>(0,b.jsxs)("button",{onClick:()=>e(d.id),className:(0,c.cn)("flex flex-col items-start gap-1 rounded-lg border p-4 text-left transition-all hover:border-foreground/30",a===d.id?"border-foreground/50 bg-muted/50":"border-border"),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,b.jsx)("span",{className:"text-lg",children:d.icon}),(0,b.jsxs)("span",{className:"text-[10px] text-muted-foreground/70",children:[d.members.length," agent",d.members.length>1?"s":""]})]}),(0,b.jsx)("span",{className:"text-sm font-medium",children:d.label}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground leading-tight",children:d.description})]},d.id))})]})}])},263233,a=>{"use strict";var b=a.i(616612),c=a.i(75118),d=a.i(732254),e=a.i(439882),f=a.i(674899);a.i(735132);var g=a.i(325848),h=a.i(354498),i=a.i(74414);a.i(974936);var j=a.i(911509);let k={leader:"Lead",researcher:"Researcher",engineer:"Engineer",assistant:"Assistant"};a.s(["TeamPreview",0,function({members:a,runtimes:l,onShuffle:m,onAssignRuntime:n}){let o=l.length>1&&n;return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-base font-semibold tracking-tight",children:"Your company"}),(0,b.jsxs)(d.Button,{variant:"ghost",size:"sm",onClick:m,className:"h-7 text-xs gap-1.5",children:[(0,b.jsx)(f.RefreshCw,{className:"size-3"}),"Shuffle"]})]}),(0,b.jsx)("div",{className:(0,c.cn)("grid gap-3 grid-cols-1",2===a.length&&"sm:grid-cols-2",3===a.length&&"sm:grid-cols-2 md:grid-cols-3",a.length>=4&&"sm:grid-cols-2 md:grid-cols-4"),children:a.map((a,c)=>{let d,f=a.avatarUrl?(0,g.parseAvatarUrl)(a.avatarUrl):null;return(0,b.jsxs)(e.Card,{size:"sm",className:"flex flex-col px-3 py-4 gap-2 h-full",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[f?(0,b.jsx)(g.AvatarRenderer,{config:f,size:36,className:"rounded-xl shrink-0"}):(0,b.jsx)("div",{className:"size-9 rounded-xl bg-muted flex items-center justify-center text-sm font-semibold shrink-0",children:a.name.charAt(0)}),(0,b.jsxs)("div",{className:"flex flex-col items-start gap-0.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.name}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground bg-muted/60 px-1.5 py-0.5 rounded",children:k[a.role]})]})]}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground/70 font-mono truncate",children:(0,j.toAlookAddress)(a.emailHandle||a.name.toLowerCase())}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground leading-snug flex-1",children:a.description}),o&&(d=l.find(b=>b.id===a.runtimeId),(0,b.jsx)("div",{className:"mt-1",children:(0,b.jsxs)(h.Select,{value:a.runtimeId,onValueChange:a=>{a&&n(c,a)},children:[(0,b.jsx)(h.SelectTrigger,{className:"h-7 text-[11px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-1.5 truncate",children:[d&&(0,b.jsx)(i.ProviderLogo,{provider:d.provider||"",className:"size-3 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:d?.provider||d?.runtime_mode||"Select"})]})}),(0,b.jsx)(h.SelectContent,{children:l.map(a=>(0,b.jsx)(h.SelectItem,{value:a.id,children:a.provider||a.runtime_mode},a.id))})]})}))]},c)})})]})}])},927981,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(630991),g=a.i(732254),h=a.i(84096),i=a.i(402656),j=a.i(69379),k=a.i(598169),l=a.i(689560),m=a.i(780956),n=a.i(454607),o=a.i(562706),p=a.i(946621),q=a.i(892691),r=a.i(212484),s=a.i(263233),t=a.i(762276);a.i(974936);var u=a.i(372822),v=a.i(588339),w=a.i(881503),x=a.i(561101),y=b([n]);[n]=y.then?(await y)():y,a.s(["StudioOnboardingClient",0,function({workspaceId:a,workspaceSlug:b,initialTemplate:c}){let y=(0,f.useRouter)(),[z,A]=(0,e.useState)([]),[B,C]=(0,e.useState)(!0),[D,E]=(0,e.useState)(c?c.baseScenario:null),[F,G]=(0,e.useState)([]),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(""),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)(!1),R=(0,u.isTauri)()&&(0,u.isDesktop)(),S=z.filter(a=>"online"===a.status),T=S.length>0;(0,e.useEffect)(()=>{(0,v.listRuntimes)(a).then(a=>{A(a),a.some(a=>"online"===a.status)&&(O(!0),Q(!0))}).catch(()=>{}).finally(()=>C(!1))},[a]);let U=(0,e.useCallback)(b=>{"runtime.registered"===b.type&&b.workspaceId===a?(O(!0),Q(!0),(0,v.listRuntimes)(a).then(A).catch(()=>{})):"runtime.status"===b.type&&b.workspaceId===a&&(O(!0),"online"===b.status?Q(!0):Q(!1))},[a]);(0,w.useUserWs)(U);let V=(0,e.useCallback)(async()=>{M(!0);try{let b=await (0,v.createMachineToken)("cli",a);if(K(b.token),R){let c=await (0,u.tauriInvoke)("register_cli",{token:b.token});c.success?(O(!0),Q(!0),(0,v.listRuntimes)(a).then(A).catch(()=>{})):m.toast.error(c.message||"Auto-registration failed")}}catch{m.toast.error("Failed to generate token")}finally{M(!1)}},[a,R]);(0,e.useEffect)(()=>{let a=S[0]?.id;a&&G(b=>0!==b.length&&b.some(a=>!a.runtimeId)?b.map(b=>b.runtimeId?b:{...b,runtimeId:a}):b)},[S]);let W=(0,e.useCallback)(async a=>{try{let b=await fetch("/api/studios/check-handles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({names:a})});if(!b.ok)return null;return await b.json()}catch{return null}},[]);(0,e.useEffect)(()=>{if(!c||B||F.length>0)return;let a=(0,t.shuffleMembers)(c.members.length),b=S[0]?.id||"",d=c.members.map((c,d)=>({name:a[d].name,role:c.role,description:c.description,instructions:c.instructions,avatarUrl:a[d].avatarUrl,runtimeId:b,relationship:c.relationship}));G(d),W(d.map(a=>a.name)).then(a=>{a&&G(b=>b.map(b=>{let c=a.find(a=>a.name===b.name);return c?{...b,emailHandle:c.handle}:b}))})},[c,B]);let X=async a=>{E(a);let b=t.SCENARIO_PRESETS.find(b=>b.id===a),c=(0,t.shuffleMembers)(b.members.length),d=S[0]?.id||"",e=b.members.map((a,b)=>({name:c[b].name,role:a.role,description:a.description,instructions:a.instructions,avatarUrl:c[b].avatarUrl,runtimeId:d,relationship:a.relationship}));G(e);let f=await W(e.map(a=>a.name));f&&G(a=>a.map(a=>{let b=f.find(b=>b.name===a.name);return b?{...a,emailHandle:b.handle}:a}))},Y=async()=>{let a=(0,t.shuffleMembers)(F.length),b=F.map((b,c)=>({...b,name:a[c].name,avatarUrl:a[c].avatarUrl,emailHandle:void 0}));G(b);let c=await W(b.map(a=>a.name));c&&G(a=>a.map(a=>{let b=c.find(b=>b.name===a.name);return b?{...a,emailHandle:b.handle}:a}))},Z=async()=>{I(!0);try{let b=await fetch("/api/studios",{method:"POST",headers:{"Content-Type":"application/json","X-Workspace-ID":a},body:JSON.stringify({name:void 0,scenario:D,members:F.map(a=>({name:a.name,role:a.role,runtime_id:a.runtimeId,description:a.description,instructions:a.instructions,avatar_url:a.avatarUrl||null,email_handle:a.emailHandle||void 0,relationship:a.relationship||void 0}))})});if(!b.ok){let a=await b.json();throw Error(a.error||"Failed to create company")}let c=await b.json();await fetch(`/api/workspaces/${a}/onboarded`,{method:"POST"}).catch(()=>{}),(0,p.trackWorkspaceCreated)("onboarding"),(0,p.trackOnboardingCompleted)({template_used:D??void 0,agent_count:F.length});for(let a=0;a<F.length;a++)(0,p.trackAgentCreated)({is_first_agent:0===a,has_email:!!F[a].emailHandle});m.toast.success("Company created!"),y.push(`/w/${c.workspace.slug}/agents/${c.leader_agent_id}`)}catch(a){m.toast.error(a instanceof Error?a.message:"Failed to create company"),I(!1)}},$=D&&F.length>0&&F.every(a=>a.runtimeId)&&(T||N&&P||R);return D?(0,d.jsx)(q.PublicLayout,{leftSlot:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:()=>y.push("/workspaces"),children:[(0,d.jsx)(l.LayoutGrid,{className:"size-3 mr-1.5"}),"Workspaces"]}),(0,d.jsx)("span",{className:"text-muted-foreground/40",children:"/"}),(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:()=>E(null),children:[(0,d.jsx)(k.ArrowLeft,{className:"size-3 mr-1.5"}),"Back"]})]}),rightSlot:(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:async()=>{await (0,o.clearAllCache)(),(0,n.signOut)({fetchOptions:{onSuccess:()=>y.push("/sign-in")}})},children:[(0,d.jsx)(j.LogOut,{className:"size-3 mr-1.5"}),"Sign out"]}),children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl space-y-10 px-6 py-14",children:[(0,d.jsx)("div",{className:"text-center",children:(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",style:{fontFamily:"var(--font-news)"},children:"Build your company"})}),B?(0,d.jsx)("div",{className:"flex justify-center py-8",children:(0,d.jsx)(h.Loader2,{className:"size-5 animate-spin text-muted-foreground"})}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(s.TeamPreview,{members:F,runtimes:S,onShuffle:Y,onAssignRuntime:(a,b)=>{G(c=>c.map((c,d)=>d===a?{...c,runtimeId:b}:c))}}),!R&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("h2",{className:"text-base font-semibold tracking-tight",children:"Connect a computer"}),T||N&&P?(0,d.jsxs)("p",{className:"text-xs text-emerald-600 flex items-center gap-1",children:[(0,d.jsx)(i.CheckCircle2,{className:"size-3"})," Computer connected"]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Your company needs a connected computer to run tasks."}),(0,d.jsx)("div",{className:"rounded-xl bg-muted/40 p-5",children:(0,d.jsx)(x.ConnectMachineSteps,{generatedToken:J,generatingToken:L,onGenerateToken:V,registered:N,daemonOnline:P})})]})]}),(0,d.jsx)(g.Button,{onClick:Z,disabled:!$||H,className:"w-full",size:"lg",children:H?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.Loader2,{className:"size-4 animate-spin mr-2"}),"Launching..."]}):"Launch company"})]})]})}):(0,d.jsx)(q.PublicLayout,{leftSlot:(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:()=>y.push("/workspaces"),children:[(0,d.jsx)(l.LayoutGrid,{className:"size-3 mr-1.5"}),"Workspaces"]}),rightSlot:(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:async()=>{await (0,o.clearAllCache)(),(0,n.signOut)({fetchOptions:{onSuccess:()=>y.push("/sign-in")}})},children:[(0,d.jsx)(j.LogOut,{className:"size-3 mr-1.5"}),"Sign out"]}),mainClassName:"flex items-center justify-center",children:(0,d.jsxs)("div",{className:"w-full max-w-3xl space-y-8 px-6 py-6",children:[(0,d.jsxs)("div",{className:"text-center space-y-2",children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",style:{fontFamily:"var(--font-news)"},children:"What will your company do?"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Pick a focus area. You can always add more agents later."})]}),(0,d.jsx)(r.ScenarioPicker,{selected:D,onSelect:X,onBrowseTemplates:()=>y.push(`/templates?workspace_id=${a}`)}),(0,d.jsx)("div",{className:"flex justify-center pt-2",children:(0,d.jsx)("button",{type:"button",onClick:async()=>{await fetch(`/api/workspaces/${a}/onboarded`,{method:"POST"}).catch(()=>{}),y.push(`/w/${b}/home`)},className:"text-xs text-muted-foreground hover:text-foreground transition-colors",children:"Skip for now"})})]})})}]),c()}catch(a){c(a)}},!1)];
|
|
62
|
+
- Track open issues proactively. Escalate complex or sensitive cases with full context.`;a.s(["SCENARIO_PRESETS",0,[{id:"software-dev",label:"Software Development",description:"Build and ship code with a coordinated dev team",icon:"🖥",members:[{role:"leader",description:"Coordinates work, summarizes results, and replies to you",instructions:d},{role:"engineer",description:"Writes code, runs tests, and verifies implementations",instructions:i,relationship:"Delegate coding tasks with: clear requirement description, acceptance criteria (3-5 specific testable items), relevant file paths, existing patterns to follow, and context from research findings if applicable.\n\nReport back with: implementation status, files changed, acceptance criteria checklist (pass/fail each), test results, and self-review concerns. After implementation, send work to the reviewer if one exists."},{role:"researcher",description:"Reads code, explores APIs, and gathers technical context",instructions:f,relationship:"Delegate technical research with: what to investigate, what decision it informs, scope boundary, and relevant file paths or code pointers.\n\nReport back with: technical summary, evidence (file paths, doc URLs, code snippets), recommendation, and confidence level (High/Medium/Low). Flag anything unverified."}]},{id:"content-research",label:"Content & Research",description:"Research topics, write content, and manage publishing",icon:"📝",members:[{role:"leader",description:"Coordinates work, shapes content direction, and delivers output",instructions:d},{role:"researcher",description:"Finds sources, verifies facts, and organizes references",instructions:g,relationship:"Delegate content research with: topic or claim to investigate, target content format (article, report, social), depth needed, and specific sources to check if any.\n\nReport back with: key facts for the writer, organized source list (URL, date, reliability), verification gaps, framing suggestion, and per-claim confidence."},{role:"assistant",description:"Handles formatting, publishing workflows, and follow-ups",instructions:j,relationship:"Delegate content operations with: what content to format or publish, target platform, deadline, and style requirements.\n\nReport back with: what was done (formatted, published, submitted), next step (awaiting review, scheduled date), and blockers if any."}]},{id:"personal-assistant",label:"Personal Assistant",description:"One AI that handles your everyday tasks and communications",icon:"🤖",members:[{role:"leader",description:"Handles all tasks directly — emails, research, scheduling, and more",instructions:e}]},{id:"sales-outreach",label:"Sales & Outreach",description:"Prospect, follow up, and close deals as a team",icon:"📈",members:[{role:"leader",description:"Coordinates outreach strategy and manages deal flow",instructions:d},{role:"researcher",description:"Researches prospects, companies, and market intelligence",instructions:h,relationship:"Delegate prospect research with: target criteria, market or industry focus, what intelligence is needed, and how it will be used (outreach, pitch, proposal).\n\nReport back with: prioritized prospect list (name, role, company, relevance, suggested angle), market signals, and confidence per finding."},{role:"assistant",description:"Handles outreach emails, follow-ups, and pipeline tracking",instructions:k,relationship:"Delegate outreach with: who to contact, messaging angle, follow-up cadence, and desired outcome.\n\nReport back with: emails sent or scheduled, responses received, pipeline updates, and deals needing escalation."}]},{id:"customer-support",label:"Customer Support",description:"Handle tickets, draft replies, and track resolutions",icon:"🎧",members:[{role:"leader",description:"Coordinates support queue and handles escalations",instructions:d},{role:"assistant",description:"Drafts customer responses and tracks open issues",instructions:l,relationship:"Delegate support tasks with: customer issue summary, urgency level, prior interaction context, and resolution approach.\n\nReport back with: response drafted or sent, resolution status, follow-up schedule, and recurring patterns to flag."}]},{id:"custom",label:"Custom",description:"Build your own team from scratch",icon:"✨",members:[{role:"leader",description:"Coordinates work and replies to you",instructions:d}]}],"shuffleMembers",0,function(a){let d=new Set,e=[];for(let f=0;f<a;f++){let a,f=0;do a=(0,b.uniqueNamesGenerator)({dictionaries:[b.names],length:1,style:"capital"}),f++;while(d.has(a)&&f<100)d.add(a),e.push({name:a,avatarUrl:(0,c.serializeAvatarConfig)((0,c.randomConfig)())})}return e}])},212484,a=>{"use strict";var b=a.i(616612),c=a.i(75118),d=a.i(762276);a.s(["ScenarioPicker",0,function({selected:a,onSelect:e,onBrowseTemplates:f}){return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-base font-semibold tracking-tight",children:"What will your company focus on?"}),f&&(0,b.jsxs)("button",{type:"button",onClick:f,className:"text-[11px] text-muted-foreground hover:text-foreground transition-colors underline underline-offset-2",children:["Browse templates ",(0,b.jsx)("span",{"aria-hidden":"true",children:"›"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:d.SCENARIO_PRESETS.map(d=>(0,b.jsxs)("button",{onClick:()=>e(d.id),className:(0,c.cn)("flex flex-col items-start gap-1 rounded-lg border p-4 text-left transition-all hover:border-foreground/30",a===d.id?"border-foreground/50 bg-muted/50":"border-border"),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,b.jsx)("span",{className:"text-lg",children:d.icon}),(0,b.jsxs)("span",{className:"text-[10px] text-muted-foreground/70",children:[d.members.length," agent",d.members.length>1?"s":""]})]}),(0,b.jsx)("span",{className:"text-sm font-medium",children:d.label}),(0,b.jsx)("span",{className:"text-xs text-muted-foreground leading-tight",children:d.description})]},d.id))})]})}])},263233,a=>{"use strict";var b=a.i(616612),c=a.i(75118),d=a.i(732254),e=a.i(439882),f=a.i(674899);a.i(735132);var g=a.i(325848),h=a.i(354498),i=a.i(74414);a.i(974936);var j=a.i(911509);let k={leader:"Lead",researcher:"Researcher",engineer:"Engineer",assistant:"Assistant"};a.s(["TeamPreview",0,function({members:a,runtimes:l,onShuffle:m,onAssignRuntime:n}){let o=l.length>1&&n;return(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-base font-semibold tracking-tight",children:"Your company"}),(0,b.jsxs)(d.Button,{variant:"ghost",size:"sm",onClick:m,className:"h-7 text-xs gap-1.5",children:[(0,b.jsx)(f.RefreshCw,{className:"size-3"}),"Shuffle"]})]}),(0,b.jsx)("div",{className:(0,c.cn)("grid gap-3 grid-cols-1",2===a.length&&"sm:grid-cols-2",3===a.length&&"sm:grid-cols-2 md:grid-cols-3",a.length>=4&&"sm:grid-cols-2 md:grid-cols-4"),children:a.map((a,c)=>{let d,f=a.avatarUrl?(0,g.parseAvatarUrl)(a.avatarUrl):null;return(0,b.jsxs)(e.Card,{size:"sm",className:"flex flex-col px-3 py-4 gap-2 h-full",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[f?(0,b.jsx)(g.AvatarRenderer,{config:f,size:36,className:"rounded-xl shrink-0"}):(0,b.jsx)("div",{className:"size-9 rounded-xl bg-muted flex items-center justify-center text-sm font-semibold shrink-0",children:a.name.charAt(0)}),(0,b.jsxs)("div",{className:"flex flex-col items-start gap-0.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:a.name}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground bg-muted/60 px-1.5 py-0.5 rounded",children:k[a.role]})]})]}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground/70 font-mono truncate",children:(0,j.toAlookAddress)(a.emailHandle||a.name.toLowerCase())}),(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground leading-snug flex-1",children:a.description}),o&&(d=l.find(b=>b.id===a.runtimeId),(0,b.jsx)("div",{className:"mt-1",children:(0,b.jsxs)(h.Select,{value:a.runtimeId,onValueChange:a=>{a&&n(c,a)},children:[(0,b.jsx)(h.SelectTrigger,{className:"h-7 text-[11px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-1.5 truncate",children:[d&&(0,b.jsx)(i.ProviderLogo,{provider:d.provider||"",className:"size-3 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:d?.provider||d?.runtime_mode||"Select"})]})}),(0,b.jsx)(h.SelectContent,{children:l.map(a=>(0,b.jsx)(h.SelectItem,{value:a.id,children:a.provider||a.runtime_mode},a.id))})]})}))]},c)})})]})}])},927981,a=>a.a(async(b,c)=>{try{var d=a.i(616612),e=a.i(734803),f=a.i(630991),g=a.i(732254),h=a.i(84096),i=a.i(402656),j=a.i(69379),k=a.i(598169),l=a.i(689560),m=a.i(780956),n=a.i(454607),o=a.i(562706),p=a.i(946621),q=a.i(892691),r=a.i(212484),s=a.i(263233),t=a.i(762276);a.i(974936);var u=a.i(372822),v=a.i(588339),w=a.i(881503),x=a.i(561101),y=b([n]);[n]=y.then?(await y)():y,a.s(["StudioOnboardingClient",0,function({workspaceId:a,workspaceSlug:b,initialTemplate:c}){let y=(0,f.useRouter)(),[z,A]=(0,e.useState)([]),[B,C]=(0,e.useState)(!0),[D,E]=(0,e.useState)(c?c.baseScenario:null),[F,G]=(0,e.useState)([]),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(""),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)(!1),R=(0,u.isTauri)()&&(0,u.isDesktop)(),S=z.filter(a=>"online"===a.status),T=S.length>0;(0,e.useEffect)(()=>{(0,v.listRuntimes)(a).then(a=>{A(a),a.some(a=>"online"===a.status)&&(O(!0),Q(!0))}).catch(()=>{}).finally(()=>C(!1))},[a]);let U=(0,e.useCallback)(b=>{"runtime.registered"===b.type&&b.workspaceId===a?(O(!0),Q(!0),(0,v.listRuntimes)(a).then(A).catch(()=>{})):"runtime.status"===b.type&&b.workspaceId===a&&(O(!0),"online"===b.status?Q(!0):Q(!1))},[a]);(0,w.useUserWs)(U);let V=(0,e.useCallback)(async()=>{M(!0);try{let b=await (0,v.createMachineToken)("cli",a);if(K(b.token),R){let c=await (0,u.tauriInvoke)("register_cli",{token:b.token});if(c.success){O(!0),Q(!0);let b=await (0,v.listRuntimes)(a).catch(()=>[]);A(b)}else m.toast.error(c.message||"Auto-registration failed")}}catch{m.toast.error("Failed to generate token")}finally{M(!1)}},[a,R]);(0,e.useEffect)(()=>{!R||B||T||N||V()},[R,B]),(0,e.useEffect)(()=>{let a=S[0]?.id;a&&G(b=>0!==b.length&&b.some(a=>!a.runtimeId)?b.map(b=>b.runtimeId?b:{...b,runtimeId:a}):b)},[S]);let W=(0,e.useCallback)(async a=>{try{let b=await fetch("/api/studios/check-handles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({names:a})});if(!b.ok)return null;return await b.json()}catch{return null}},[]);(0,e.useEffect)(()=>{if(!c||B||F.length>0)return;let a=(0,t.shuffleMembers)(c.members.length),b=S[0]?.id||"",d=c.members.map((c,d)=>({name:a[d].name,role:c.role,description:c.description,instructions:c.instructions,avatarUrl:a[d].avatarUrl,runtimeId:b,relationship:c.relationship}));G(d),W(d.map(a=>a.name)).then(a=>{a&&G(b=>b.map(b=>{let c=a.find(a=>a.name===b.name);return c?{...b,emailHandle:c.handle}:b}))})},[c,B]);let X=async a=>{E(a);let b=t.SCENARIO_PRESETS.find(b=>b.id===a),c=(0,t.shuffleMembers)(b.members.length),d=S[0]?.id||"",e=b.members.map((a,b)=>({name:c[b].name,role:a.role,description:a.description,instructions:a.instructions,avatarUrl:c[b].avatarUrl,runtimeId:d,relationship:a.relationship}));G(e);let f=await W(e.map(a=>a.name));f&&G(a=>a.map(a=>{let b=f.find(b=>b.name===a.name);return b?{...a,emailHandle:b.handle}:a}))},Y=async()=>{let a=(0,t.shuffleMembers)(F.length),b=F.map((b,c)=>({...b,name:a[c].name,avatarUrl:a[c].avatarUrl,emailHandle:void 0}));G(b);let c=await W(b.map(a=>a.name));c&&G(a=>a.map(a=>{let b=c.find(b=>b.name===a.name);return b?{...a,emailHandle:b.handle}:a}))},Z=async()=>{I(!0);try{let b=await fetch("/api/studios",{method:"POST",headers:{"Content-Type":"application/json","X-Workspace-ID":a},body:JSON.stringify({name:void 0,scenario:D,members:F.map(a=>({name:a.name,role:a.role,runtime_id:a.runtimeId,description:a.description,instructions:a.instructions,avatar_url:a.avatarUrl||null,email_handle:a.emailHandle||void 0,relationship:a.relationship||void 0}))})});if(!b.ok){let a=await b.json();throw Error(a.error||"Failed to create company")}let c=await b.json();await fetch(`/api/workspaces/${a}/onboarded`,{method:"POST"}).catch(()=>{}),(0,p.trackWorkspaceCreated)("onboarding"),(0,p.trackOnboardingCompleted)({template_used:D??void 0,agent_count:F.length});for(let a=0;a<F.length;a++)(0,p.trackAgentCreated)({is_first_agent:0===a,has_email:!!F[a].emailHandle});m.toast.success("Company created!"),y.push(`/w/${c.workspace.slug}/agents/${c.leader_agent_id}`)}catch(a){m.toast.error(a instanceof Error?a.message:"Failed to create company"),I(!1)}},$=D&&F.length>0&&F.every(a=>a.runtimeId)&&(T||N&&P||R);return D?(0,d.jsx)(q.PublicLayout,{leftSlot:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:()=>y.push("/workspaces"),children:[(0,d.jsx)(l.LayoutGrid,{className:"size-3 mr-1.5"}),"Workspaces"]}),(0,d.jsx)("span",{className:"text-muted-foreground/40",children:"/"}),(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:()=>E(null),children:[(0,d.jsx)(k.ArrowLeft,{className:"size-3 mr-1.5"}),"Back"]})]}),rightSlot:(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:async()=>{await (0,o.clearAllCache)(),(0,n.signOut)({fetchOptions:{onSuccess:()=>y.push("/sign-in")}})},children:[(0,d.jsx)(j.LogOut,{className:"size-3 mr-1.5"}),"Sign out"]}),children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl space-y-10 px-6 py-14",children:[(0,d.jsx)("div",{className:"text-center",children:(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",style:{fontFamily:"var(--font-news)"},children:"Build your company"})}),B?(0,d.jsx)("div",{className:"flex justify-center py-8",children:(0,d.jsx)(h.Loader2,{className:"size-5 animate-spin text-muted-foreground"})}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(s.TeamPreview,{members:F,runtimes:S,onShuffle:Y,onAssignRuntime:(a,b)=>{G(c=>c.map((c,d)=>d===a?{...c,runtimeId:b}:c))}}),!R&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("h2",{className:"text-base font-semibold tracking-tight",children:"Connect a computer"}),T||N&&P?(0,d.jsxs)("p",{className:"text-xs text-emerald-600 flex items-center gap-1",children:[(0,d.jsx)(i.CheckCircle2,{className:"size-3"})," Computer connected"]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Your company needs a connected computer to run tasks."}),(0,d.jsx)("div",{className:"rounded-xl bg-muted/40 p-5",children:(0,d.jsx)(x.ConnectMachineSteps,{generatedToken:J,generatingToken:L,onGenerateToken:V,registered:N,daemonOnline:P})})]})]}),(0,d.jsx)(g.Button,{onClick:Z,disabled:!$||H,className:"w-full",size:"lg",children:H?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.Loader2,{className:"size-4 animate-spin mr-2"}),"Launching..."]}):"Launch company"})]})]})}):(0,d.jsx)(q.PublicLayout,{leftSlot:(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:()=>y.push("/workspaces"),children:[(0,d.jsx)(l.LayoutGrid,{className:"size-3 mr-1.5"}),"Workspaces"]}),rightSlot:(0,d.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground",onClick:async()=>{await (0,o.clearAllCache)(),(0,n.signOut)({fetchOptions:{onSuccess:()=>y.push("/sign-in")}})},children:[(0,d.jsx)(j.LogOut,{className:"size-3 mr-1.5"}),"Sign out"]}),mainClassName:"flex items-center justify-center",children:(0,d.jsxs)("div",{className:"w-full max-w-3xl space-y-8 px-6 py-6",children:[(0,d.jsxs)("div",{className:"text-center space-y-2",children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",style:{fontFamily:"var(--font-news)"},children:"What will your company do?"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Pick a focus area. You can always add more agents later."})]}),(0,d.jsx)(r.ScenarioPicker,{selected:D,onSelect:X,onBrowseTemplates:()=>y.push(`/templates?workspace_id=${a}`)}),(0,d.jsx)("div",{className:"flex justify-center pt-2",children:(0,d.jsx)("button",{type:"button",onClick:async()=>{await fetch(`/api/workspaces/${a}/onboarded`,{method:"POST"}).catch(()=>{}),y.push(`/w/${b}/home`)},className:"text-xs text-muted-foreground hover:text-foreground transition-colors",children:"Skip for now"})})]})})}]),c()}catch(a){c(a)}},!1)];
|
|
63
63
|
|
|
64
64
|
//# sourceMappingURL=src_web_src_1kzi5ju._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[283291,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(630991),e=a.i(752792),f=a.i(732254),g=a.i(464830),h=a.i(439882),i=a.i(7455),j=a.i(22902),k=a.i(525132),l=a.i(780956),m=a.i(25668),n=a.i(515837),o=a.i(396439);a.i(974936);var p=a.i(997445),q=a.i(372822),r=a.i(75118),s=a.i(74414),t=a.i(588339),u=a.i(84096),v=a.i(674899),w=a.i(561101),x=a.i(946621);a.s(["default",0,function(){let{agents:a,runtimes:y,loading:z,handleGenerateToken:A,handleDeleteMachine:B,subscribeWs:C,workspaceId:D}=(0,e.useAgentContext)(),E=(0,d.useSearchParams)(),F=(0,d.useRouter)(),G=(0,d.usePathname)(),H=(0,r.getAppMode)(),I=(0,q.isTauri)()&&(0,q.isDesktop)(),J="mobile"===H||I,[K,L]=(0,c.useState)(()=>E.has("connect")),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(null),[W,X]=(0,c.useState)(new Set),[Y,Z]=(0,c.useState)(new Set),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(""),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)("Remove"),[ag,ah]=(0,c.useState)(void 0),[ai,aj]=(0,c.useState)("destructive"),[ak,al]=(0,c.useState)(!1),am=(0,c.useRef)(null);(0,c.useEffect)(()=>{(0,t.fetchLatestCliVersion)().then(a=>V(a.version)).catch(()=>{})},[]),(0,c.useEffect)(()=>{E.has("connect")&&F.replace(G,{scroll:!1})},[E,F,G]);let an=(0,c.useRef)(K);(0,c.useEffect)(()=>{an.current=K},[K]);let ao=(0,c.useRef)(a);(0,c.useEffect)(()=>{ao.current=a},[a]);let ap=(0,c.useRef)(Q);(0,c.useEffect)(()=>{ap.current=Q},[Q]),(0,c.useEffect)(()=>C(a=>{if(an.current&&("runtime.registered"===a.type&&a.workspaceId===D&&R(a.daemonId),"runtime.status"===a.type&&a.workspaceId===D&&"online"===a.status&&ap.current&&a.daemonId===ap.current)&&((0,x.trackRuntimeConnected)({runtime_type:"desktop"}),L(!1),N(""),R(null),T(!1),l.toast.success("Machine connected"),0===ao.current.length)){let a=G.split("/")[2];F.push(`/w/${a}/agents/new`)}}),[C,D,G,F]);let aq=(a,b,c,d)=>{ab(a),ad(b),af(d?.label??"Remove"),ah(d?.loadingLabel),aj(d?.variant??"destructive"),am.current=c,_(!0)},ar=async()=>{if(am.current){al(!0);try{await am.current()}finally{al(!1),_(!1),am.current=null}}},as=(0,c.useCallback)(async()=>{P(!0);try{let a=await A();a&&N(a)}finally{P(!1)}},[A]),at=async(a,b)=>{X(a=>new Set(a).add(b));try{await (0,t.triggerRuntimeUpdate)(a,D),l.toast.success("Update triggered")}catch{l.toast.error("Failed to trigger update"),X(a=>{let c=new Set(a);return c.delete(b),c})}},au=async(a,b)=>{Z(a=>new Set(a).add(b));try{await (0,t.triggerRuntimeRescan)(a,D),l.toast.success("Rescan triggered — daemon will restart to detect runtimes")}catch{l.toast.error("Failed to trigger rescan"),Z(a=>{let c=new Set(a);return c.delete(b),c})}},av=(0,c.useMemo)(()=>{if(0===W.size)return W;let a=new Set;for(let b of y){let c=b.daemon_id||b.id;W.has(c)&&b.pending_update_version&&a.add(c)}return a},[y,W]),aw=(0,c.useMemo)(()=>{if(0===Y.size)return Y;let a=new Set;for(let b of y){let c=b.daemon_id||b.id;Y.has(c)&&b.pending_rescan&&a.add(c)}return a},[y,Y]),ax=new Map;for(let a of y){let b=a.daemon_id||a.id;if(!ax.has(b)){let c=a.metadata;ax.set(b,{deviceInfo:"string"==typeof a.device_info?a.device_info:"",status:a.status,lastSeenAt:a.last_seen_at,pendingUpdateVersion:a.pending_update_version??null,pendingRescan:!!a.pending_rescan,cliVersion:c?.cli_version??null,runtimes:[]})}ax.get(b).runtimes.push(a)}return z?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(m.Skeleton,{className:"h-4 w-16"}),(0,b.jsx)(m.Skeleton,{className:"h-3 w-52"})]}),(0,b.jsx)(m.Skeleton,{className:"h-8 w-29 rounded-md"})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-5 py-5",children:(0,b.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from({length:3}).map((a,c)=>(0,b.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(m.Skeleton,{className:"size-4 rounded"}),(0,b.jsx)(m.Skeleton,{className:"h-4 w-28"})]}),(0,b.jsx)("div",{className:"space-y-2",children:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)(m.Skeleton,{className:"h-3 w-20"}),(0,b.jsx)(m.Skeleton,{className:"h-3 w-28"})]}),(0,b.jsx)(m.Skeleton,{className:"h-5 w-14 rounded-full"})]})})]},c))})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("h1",{className:"text-sm font-medium",children:"Runtimes"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Your machines and their agent runtimes."})]}),!J&&(0,b.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>{N(""),R(null),L(!0)},disabled:O,children:[(0,b.jsx)(o.Plus,{className:"size-3.5"}),"New machine"]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-5 py-5",children:0===y.length?(0,b.jsx)("div",{className:"flex flex-1 items-center justify-center min-h-[60vh]",children:(0,b.jsxs)("div",{className:"text-center animate-[fade-up_400ms_ease-out_both]",children:[(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:J?"No machines connected. Use the desktop app or CLI to connect a machine.":"Connect a machine to start running agents locally."}),!J&&(0,b.jsx)(f.Button,{size:"sm",className:"mt-4 glow-border",onClick:()=>{N(""),L(!0)},children:"Connect Machine"})]})}):(0,b.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from(ax.entries()).map(([a,c])=>{let d,e,i,j=c.deviceInfo||a;return(0,b.jsxs)(h.Card,{size:"sm",children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)(n.Monitor,{className:"size-4 text-muted-foreground shrink-0"}),(0,b.jsx)(h.CardTitle,{className:"truncate",children:j}),c.cliVersion&&(0,b.jsxs)("span",{className:"text-xs text-muted-foreground/60 shrink-0",children:["v",c.cliVersion]}),(0,b.jsx)(g.Badge,{variant:"online"===c.status?"default":"outline",className:"shrink-0",children:c.status})]})}),(0,b.jsx)(h.CardContent,{children:(0,b.jsxs)("div",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground tabular-nums",children:c.lastSeenAt?new Date(c.lastSeenAt).toLocaleString():"Never seen"}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(d=!!c.pendingUpdateVersion||av.has(a),e=U&&(!c.cliVersion||!(0,p.semverGte)(c.cliVersion,U)),d?(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",disabled:!0,className:"text-xs h-6 px-2",children:[(0,b.jsx)(u.Loader2,{className:"size-3 animate-spin mr-1"}),"Updating..."]}):e?(0,b.jsx)(f.Button,{variant:"ghost",size:"sm",className:"text-xs h-6 px-2",onClick:()=>aq("Update daemon",`This will update the daemon on "${j}" to the latest CLI version. The daemon will restart during the update.`,async()=>{await at(c.runtimes[0].id,a)},{label:"Update",loadingLabel:"Updating...",variant:"default"}),children:"Update"}):null),(i=c.pendingRescan||aw.has(a),"online"!==c.status?null:i?(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",disabled:!0,className:"text-xs h-6 px-2",children:[(0,b.jsx)(v.RefreshCw,{className:"size-3 animate-spin mr-1"}),"Rescanning..."]}):(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",className:"text-xs h-6 px-2",onClick:()=>aq("Rescan runtimes",`This will restart the daemon on "${j}" to re-detect available runtimes (Claude Code, Codex, OpenCode).`,async()=>{await au(c.runtimes[0].id,a)},{label:"Rescan",loadingLabel:"Triggering...",variant:"default"}),children:[(0,b.jsx)(v.RefreshCw,{className:"size-3 mr-1"}),"Rescan"]})),(0,b.jsx)(f.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground h-6 px-2 hover:text-destructive",onClick:()=>{aq("Remove machine",`This will remove "${j}" and all its runtimes. Agents using these runtimes will be unlinked.`,async()=>{await B(a)})},children:"Remove"})]})]}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:c.runtimes.map(a=>(0,b.jsxs)(g.Badge,{variant:"secondary",className:"gap-1.5",children:[(0,b.jsx)(s.ProviderLogo,{provider:a.provider,className:"h-3.5 w-3.5"}),a.provider,a.metadata?.version?(0,b.jsx)("span",{className:"text-muted-foreground font-normal",children:String(a.metadata.version)}):null]},a.id))}),"online"!==c.status&&(0,b.jsxs)("div",{className:"pt-1.5 border-t border-border/50",children:[(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground mb-1.5",children:"Bring this machine online:"}),"desktop"===H&&(0,q.isTauri)()?(0,b.jsx)(f.Button,{size:"sm",variant:"outline",className:"w-full h-7 text-[11px]",onClick:async()=>{try{await (0,q.tauriInvoke)("daemon_start"),l.toast.success("Daemon started")}catch{l.toast.error("Failed to start daemon")}},children:"Start Daemon"}):(0,b.jsxs)(k.Tooltip,{children:[(0,b.jsxs)(k.TooltipTrigger,{render:(0,b.jsx)("div",{className:"relative overflow-hidden rounded-md bg-muted px-2.5 py-1.5 font-mono text-[11px] text-muted-foreground cursor-pointer hover:bg-muted/80 transition-colors",onClick:()=>{navigator.clipboard.writeText(`${(0,r.cliCmd)()} daemon start`),l.toast.success("Copied to clipboard")}}),children:[(0,b.jsx)("span",{className:"absolute inset-0 -translate-x-full animate-[shimmer_2.5s_infinite] bg-linear-to-r from-transparent via-(--shimmer-peak) to-transparent"}),(0,b.jsxs)("span",{className:"relative",children:[(0,r.cliCmd)()," daemon start"]})]}),(0,b.jsx)(k.TooltipContent,{children:"Click to copy"})]})]})]})})]},a)})})}),(0,b.jsx)(i.Sheet,{open:K,onOpenChange:a=>{L(a),a||N("")},children:(0,b.jsxs)(i.SheetContent,{className:"data-[side=right]:sm:inset-y-2 data-[side=right]:sm:right-2 data-[side=right]:sm:h-auto data-[side=right]:sm:rounded-xl data-[side=right]:sm:border",children:[(0,b.jsxs)(i.SheetHeader,{children:[(0,b.jsx)(i.SheetTitle,{children:"Connect a machine"}),(0,b.jsx)(i.SheetDescription,{children:"Your machine runs AI agents locally using Claude Code, Codex, or OpenCode."})]}),(0,b.jsx)(i.SheetBody,{children:(0,b.jsx)(w.ConnectMachineSteps,{generatedToken:M,generatingToken:O,onGenerateToken:as,registered:!!Q,daemonOnline:S})})]})}),(0,b.jsx)(j.ConfirmDialog,{open:$,onOpenChange:_,title:aa,description:ac,confirmLabel:ae,loadingLabel:ag,confirmVariant:ai,loading:ak,onConfirm:ar})]})}])}];
|
|
1
|
+
module.exports=[283291,a=>{"use strict";var b=a.i(616612),c=a.i(734803),d=a.i(630991),e=a.i(752792),f=a.i(732254),g=a.i(464830),h=a.i(439882),i=a.i(7455),j=a.i(22902),k=a.i(525132),l=a.i(780956),m=a.i(25668),n=a.i(515837),o=a.i(396439);a.i(974936);var p=a.i(997445),q=a.i(372822),r=a.i(75118),s=a.i(74414),t=a.i(588339),u=a.i(84096),v=a.i(674899),w=a.i(561101),x=a.i(946621);a.s(["default",0,function(){let{agents:a,runtimes:y,loading:z,handleGenerateToken:A,handleDeleteMachine:B,subscribeWs:C,workspaceId:D}=(0,e.useAgentContext)(),E=(0,d.useSearchParams)(),F=(0,d.useRouter)(),G=(0,d.usePathname)(),H=(0,r.getAppMode)(),I=(0,q.isTauri)()&&(0,q.isDesktop)(),J="mobile"===H||I,[K,L]=(0,c.useState)(()=>E.has("connect")),[M,N]=(0,c.useState)(""),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(null),[W,X]=(0,c.useState)(new Set),[Y,Z]=(0,c.useState)(new Set),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(""),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)("Remove"),[ag,ah]=(0,c.useState)(void 0),[ai,aj]=(0,c.useState)("destructive"),[ak,al]=(0,c.useState)(!1),am=(0,c.useRef)(null);(0,c.useEffect)(()=>{(0,t.fetchLatestCliVersion)().then(a=>V(a.version)).catch(()=>{})},[]),(0,c.useEffect)(()=>{E.has("connect")&&F.replace(G,{scroll:!1})},[E,F,G]);let an=(0,c.useRef)(K);(0,c.useEffect)(()=>{an.current=K},[K]);let ao=(0,c.useRef)(a);(0,c.useEffect)(()=>{ao.current=a},[a]);let ap=(0,c.useRef)(Q);(0,c.useEffect)(()=>{ap.current=Q},[Q]),(0,c.useEffect)(()=>C(a=>{if(an.current&&("runtime.registered"===a.type&&a.workspaceId===D&&R(a.daemonId),"runtime.status"===a.type&&a.workspaceId===D&&"online"===a.status&&ap.current&&a.daemonId===ap.current)&&((0,x.trackRuntimeConnected)({runtime_type:"desktop"}),L(!1),N(""),R(null),T(!1),l.toast.success("Machine connected"),0===ao.current.length)){let a=G.split("/")[2];F.push(`/w/${a}/agents/new`)}}),[C,D,G,F]);let aq=(a,b,c,d)=>{ab(a),ad(b),af(d?.label??"Remove"),ah(d?.loadingLabel),aj(d?.variant??"destructive"),am.current=c,_(!0)},ar=async()=>{if(am.current){al(!0);try{await am.current()}finally{al(!1),_(!1),am.current=null}}},as=(0,c.useCallback)(async()=>{P(!0);try{let a=await A();a&&N(a)}finally{P(!1)}},[A]),at=async(a,b)=>{X(a=>new Set(a).add(b));try{await (0,t.triggerRuntimeUpdate)(a,D),l.toast.success("Update triggered")}catch{l.toast.error("Failed to trigger update"),X(a=>{let c=new Set(a);return c.delete(b),c})}},au=async(a,b)=>{Z(a=>new Set(a).add(b));try{await (0,t.triggerRuntimeRescan)(a,D),l.toast.success("Rescan triggered — daemon will restart to detect runtimes")}catch{l.toast.error("Failed to trigger rescan"),Z(a=>{let c=new Set(a);return c.delete(b),c})}},av=(0,c.useMemo)(()=>{if(0===W.size)return W;let a=new Set;for(let b of W){let c=y.find(a=>(a.daemon_id||a.id)===b);(!c||c.pending_update_version)&&a.add(b)}return a},[y,W]),aw=(0,c.useMemo)(()=>{if(0===Y.size)return Y;let a=new Set;for(let b of y){let c=b.daemon_id||b.id;Y.has(c)&&b.pending_rescan&&a.add(c)}return a},[y,Y]),ax=new Map;for(let a of y){let b=a.daemon_id||a.id;if(!ax.has(b)){let c=a.metadata;ax.set(b,{deviceInfo:"string"==typeof a.device_info?a.device_info:"",status:a.status,lastSeenAt:a.last_seen_at,pendingUpdateVersion:a.pending_update_version??null,pendingRescan:!!a.pending_rescan,cliVersion:c?.cli_version??null,runtimes:[]})}ax.get(b).runtimes.push(a)}return z?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(m.Skeleton,{className:"h-4 w-16"}),(0,b.jsx)(m.Skeleton,{className:"h-3 w-52"})]}),(0,b.jsx)(m.Skeleton,{className:"h-8 w-29 rounded-md"})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-5 py-5",children:(0,b.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from({length:3}).map((a,c)=>(0,b.jsxs)("div",{className:"rounded-xl border border-border/50 bg-card p-4 space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(m.Skeleton,{className:"size-4 rounded"}),(0,b.jsx)(m.Skeleton,{className:"h-4 w-28"})]}),(0,b.jsx)("div",{className:"space-y-2",children:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)(m.Skeleton,{className:"h-3 w-20"}),(0,b.jsx)(m.Skeleton,{className:"h-3 w-28"})]}),(0,b.jsx)(m.Skeleton,{className:"h-5 w-14 rounded-full"})]})})]},c))})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-border/50 px-3 md:px-5 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("h1",{className:"text-sm font-medium",children:"Runtimes"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"Your machines and their agent runtimes."})]}),!J&&(0,b.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>{N(""),R(null),L(!0)},disabled:O,children:[(0,b.jsx)(o.Plus,{className:"size-3.5"}),"New machine"]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-5 py-5",children:0===y.length?(0,b.jsx)("div",{className:"flex flex-1 items-center justify-center min-h-[60vh]",children:(0,b.jsxs)("div",{className:"text-center animate-[fade-up_400ms_ease-out_both]",children:[(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:J?"No machines connected. Use the desktop app or CLI to connect a machine.":"Connect a machine to start running agents locally."}),!J&&(0,b.jsx)(f.Button,{size:"sm",className:"mt-4 glow-border",onClick:()=>{N(""),L(!0)},children:"Connect Machine"})]})}):(0,b.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from(ax.entries()).map(([a,c])=>{let d,e,i,j=c.deviceInfo||a;return(0,b.jsxs)(h.Card,{size:"sm",children:[(0,b.jsx)(h.CardHeader,{children:(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)(n.Monitor,{className:"size-4 text-muted-foreground shrink-0"}),(0,b.jsx)(h.CardTitle,{className:"truncate",children:j}),c.cliVersion&&(0,b.jsxs)("span",{className:"text-xs text-muted-foreground/60 shrink-0",children:["v",c.cliVersion]}),(0,b.jsx)(g.Badge,{variant:"online"===c.status?"default":"outline",className:"shrink-0",children:c.status})]})}),(0,b.jsx)(h.CardContent,{children:(0,b.jsxs)("div",{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground tabular-nums",children:c.lastSeenAt?new Date(c.lastSeenAt).toLocaleString():"Never seen"}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(d=!!c.pendingUpdateVersion||av.has(a),e="online"===c.status&&U&&(!c.cliVersion||!(0,p.semverGte)(c.cliVersion,U)),d?(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",disabled:!0,className:"text-xs h-6 px-2",children:[(0,b.jsx)(u.Loader2,{className:"size-3 animate-spin mr-1"}),"Updating..."]}):e?(0,b.jsx)(f.Button,{variant:"ghost",size:"sm",className:"text-xs h-6 px-2",onClick:()=>aq("Update daemon",`This will update the daemon on "${j}" to the latest CLI version. The daemon will restart during the update.`,async()=>{await at(c.runtimes[0].id,a)},{label:"Update",loadingLabel:"Updating...",variant:"default"}),children:"Update"}):null),(i=c.pendingRescan||aw.has(a),"online"!==c.status?null:i?(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",disabled:!0,className:"text-xs h-6 px-2",children:[(0,b.jsx)(v.RefreshCw,{className:"size-3 animate-spin mr-1"}),"Rescanning..."]}):(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",className:"text-xs h-6 px-2",onClick:()=>aq("Rescan runtimes",`This will restart the daemon on "${j}" to re-detect available runtimes (Claude Code, Codex, OpenCode).`,async()=>{await au(c.runtimes[0].id,a)},{label:"Rescan",loadingLabel:"Triggering...",variant:"default"}),children:[(0,b.jsx)(v.RefreshCw,{className:"size-3 mr-1"}),"Rescan"]})),(0,b.jsx)(f.Button,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground h-6 px-2 hover:text-destructive",onClick:()=>{aq("Remove machine",`This will remove "${j}" and all its runtimes. Agents using these runtimes will be unlinked.`,async()=>{await B(a)})},children:"Remove"})]})]}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:c.runtimes.map(a=>(0,b.jsxs)(g.Badge,{variant:"secondary",className:"gap-1.5",children:[(0,b.jsx)(s.ProviderLogo,{provider:a.provider,className:"h-3.5 w-3.5"}),a.provider,a.metadata?.version?(0,b.jsx)("span",{className:"text-muted-foreground font-normal",children:String(a.metadata.version)}):null]},a.id))}),"online"!==c.status&&(0,b.jsxs)("div",{className:"pt-1.5 border-t border-border/50",children:[(0,b.jsx)("p",{className:"text-[11px] text-muted-foreground mb-1.5",children:"Bring this machine online:"}),"desktop"===H&&(0,q.isTauri)()?(0,b.jsx)(f.Button,{size:"sm",variant:"outline",className:"w-full h-7 text-[11px]",onClick:async()=>{try{await (0,q.tauriInvoke)("daemon_start"),l.toast.success("Daemon started")}catch{l.toast.error("Failed to start daemon")}},children:"Start Daemon"}):(0,b.jsxs)(k.Tooltip,{children:[(0,b.jsxs)(k.TooltipTrigger,{render:(0,b.jsx)("div",{className:"relative overflow-hidden rounded-md bg-muted px-2.5 py-1.5 font-mono text-[11px] text-muted-foreground cursor-pointer hover:bg-muted/80 transition-colors",onClick:()=>{navigator.clipboard.writeText(`${(0,r.cliCmd)()} daemon start`),l.toast.success("Copied to clipboard")}}),children:[(0,b.jsx)("span",{className:"absolute inset-0 -translate-x-full animate-[shimmer_2.5s_infinite] bg-linear-to-r from-transparent via-(--shimmer-peak) to-transparent"}),(0,b.jsxs)("span",{className:"relative",children:[(0,r.cliCmd)()," daemon start"]})]}),(0,b.jsx)(k.TooltipContent,{children:"Click to copy"})]})]})]})})]},a)})})}),(0,b.jsx)(i.Sheet,{open:K,onOpenChange:a=>{L(a),a||N("")},children:(0,b.jsxs)(i.SheetContent,{className:"data-[side=right]:sm:inset-y-2 data-[side=right]:sm:right-2 data-[side=right]:sm:h-auto data-[side=right]:sm:rounded-xl data-[side=right]:sm:border",children:[(0,b.jsxs)(i.SheetHeader,{children:[(0,b.jsx)(i.SheetTitle,{children:"Connect a machine"}),(0,b.jsx)(i.SheetDescription,{children:"Your machine runs AI agents locally using Claude Code, Codex, or OpenCode."})]}),(0,b.jsx)(i.SheetBody,{children:(0,b.jsx)(w.ConnectMachineSteps,{generatedToken:M,generatingToken:O,onGenerateToken:as,registered:!!Q,daemonOnline:S})})]})}),(0,b.jsx)(j.ConfirmDialog,{open:$,onOpenChange:_,title:aa,description:ac,confirmLabel:ae,loadingLabel:ag,confirmVariant:ai,loading:ak,onConfirm:ar})]})}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_web_src_app_%28app%29_w_%5Bslug%5D_runtimes_page_tsx_11-1juy._.js.map
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/0cz1d0mv5g_q7.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/WTLpHjXNd0wVnZOUBMJJz/_buildManifest.js",
|
|
11
|
+
"static/WTLpHjXNd0wVnZOUBMJJz/_ssgManifest.js",
|
|
12
|
+
"static/WTLpHjXNd0wVnZOUBMJJz/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/3drpmcjhmx9ln.js",
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"wasm": [],
|
|
26
26
|
"assets": [],
|
|
27
27
|
"env": {
|
|
28
|
-
"__NEXT_BUILD_ID": "
|
|
29
|
-
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "
|
|
30
|
-
"__NEXT_PREVIEW_MODE_ID": "
|
|
31
|
-
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "
|
|
32
|
-
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "
|
|
28
|
+
"__NEXT_BUILD_ID": "WTLpHjXNd0wVnZOUBMJJz",
|
|
29
|
+
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "yZFY7pQI8Mk5M2NCtGYOVRoVRcoRgoLczvXum81POh4=",
|
|
30
|
+
"__NEXT_PREVIEW_MODE_ID": "6485355b57efc1e9d711871bec451241",
|
|
31
|
+
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "69adc7fbeea94096b9d6c02689ac51623ef20fd60f0231cdc21bebb9cbab0f29",
|
|
32
|
+
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "740f84204caf6362300a68034d7e7a3712783d459d42b7a6bd1c44ad471fda98"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"yZFY7pQI8Mk5M2NCtGYOVRoVRcoRgoLczvXum81POh4=\"\n}"
|