@mndrk/agx 2.4.5 → 2.4.6
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/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__23838f87._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a61463b8._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ecd68e8._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5c140c38._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_30d021de._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_6dcfdd52._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_281b2873._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/692103d55fcd0328.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b5d6f5bade8c4ea.js → 8d8fe711583a59f0.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/92467c495ad08a85.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/add53c2fe147af75.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d662272e49df1950.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/e0d68c6af17c8c87.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{93b2b6aa0c9593f6.js → e6d4118b7c32d11c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +58 -2
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +73 -33
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +78 -239
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/worker/index.js +2 -2
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7e3c2ea1._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__dbda910b._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_917d90b4._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_a2835b49._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/55a31773f8c2833f.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/7c8515a24aeea102.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/80446e085a3aad56.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/9c29ef447bef1576.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/a9111ccc979d4933.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d2b34ade19d9d8da.js +0 -1
- /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → fipnHmd6JPn9sTuFdYS0y}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → fipnHmd6JPn9sTuFdYS0y}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{C3-tP4djbU34_g7VoIFac → fipnHmd6JPn9sTuFdYS0y}/_ssgManifest.js +0 -0
package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[970393,a=>{"use strict";let b=(0,a.i(831709).default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);a.s(["PanelLeftOpen",()=>b],970393)},508869,a=>{"use strict";let b=(0,a.i(831709).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);a.s(["Sun",()=>b],508869)},523321,a=>{"use strict";let b=(0,a.i(831709).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);a.s(["Moon",()=>b],523321)},166621,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(850985),e=a.i(639211);function f(){let[a,f]=(0,c.useState)("unknown"),[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(!1),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/status");if(!a.ok)return void f("unknown");let b=await a.json();f("ok"===b.status?"ok":"degraded");let c=b.services.filter(a=>"agx-chat"===a.name||"agx-cloud"===a.name);h(c),j(new Date().toLocaleTimeString())}catch{f("unknown"),h([])}},[]);return(0,c.useEffect)(()=>{m();let a=setInterval(m,e.UI_POLL_SYSTEM_STATUS_MS);return()=>clearInterval(a)},[m]),(0,b.jsxs)("div",{className:"relative",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[(0,b.jsx)(d.default,{href:"/status",className:"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] transition-all hover:bg-[var(--app-shell-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]",title:"System status",children:(0,b.jsx)("span",{className:`h-2.5 w-2.5 rounded-full ${"ok"===a?"bg-emerald-400":"degraded"===a?"bg-amber-400":"bg-[var(--app-shell-muted)]"} ${"degraded"===a?"animate-pulse":""}`})}),k&&(0,b.jsxs)("div",{className:"absolute top-full right-0 z-50 mt-1.5 w-52 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] p-3 text-xs shadow-lg",children:[g.length>0?(0,b.jsx)("ul",{className:"space-y-1.5",children:g.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("span",{className:"ok"===a.status?"text-emerald-600":"error"===a.status?"text-red-500":"text-[var(--muted-foreground)]",children:"ok"===a.status?"Healthy":"error"===a.status?a.detail||"Error":"Unavailable"})]},a.name))}):(0,b.jsx)("p",{className:"text-[var(--app-shell-soft-text)]",children:"Checking..."}),i&&(0,b.jsxs)("p",{className:"mt-2 border-t border-[var(--app-shell-border)] pt-1.5 text-[var(--app-shell-soft-text)]",children:["Last check: ",i]})]})]})}a.s(["StatusIndicator",()=>f])},550158,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(197180),e=a.i(811760),f=a.i(66456),g=a.i(157633),h=a.i(736868),i=a.i(831709);let j=(0,i.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var k=a.i(353532),l=a.i(542341),m=a.i(824179),n=a.i(489461),o=a.i(97723),p=a.i(985339);let q=(0,i.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var r=a.i(737313),s=a.i(144462);let t=(0,i.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]),u=(0,i.default)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]),v=(0,i.default)("git-pull-request",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);var w=a.i(850985),x=a.i(529889),y=a.i(639211),z=a.i(8e4),A=a.i(188834),B=a.i(769677),C=a.i(599086),D=a.i(756490);let E=(0,i.default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]),F=(0,i.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var G=a.i(392045);let H={linear:"Linear",jira:"Jira",intercom:"Intercom",freshdesk:"Freshdesk",github:"GitHub"};function I(a){return H[a]??a.charAt(0).toUpperCase()+a.slice(1)}function J({projectSlug:a,trackerConnections:d,activeTrackerType:e,isTrackingActive:f,onLinkClick:g}){let h=[...d].sort((a,b)=>new Date(a.connectedAt).getTime()-new Date(b.connectedAt).getTime()),i=h.filter(a=>a.connected),j=h.filter(a=>!a.connected),l=i.some(a=>"github"===a.type),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{if(!l)return void n([]);let a=!1;return fetch("/api/github/repos",{cache:"no-store"}).then(a=>a.ok?a.json():{repos:[]}).then(b=>{a||n(b.repos??[])}).catch(()=>{a||n([])}),()=>{a=!0}},[l]),(0,b.jsxs)(b.Fragment,{children:[0===i.length&&0===j.length&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:`workspace-sidebar__nav-item ${f?"workspace-sidebar__nav-item--active":""}`,children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect Tracker"})]})}),i.map(c=>{let d=f&&e===c.type;return(0,b.jsxs)("div",{className:"workspace-sidebar__workspace-item",children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:`workspace-sidebar__nav-item flex-1 ${d?"workspace-sidebar__nav-item--active":""}`,"aria-current":d?"page":void 0,children:[(0,b.jsx)(G.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:I(c.type)})]}),"github"===c.type&&m.length>0&&(0,b.jsx)("button",{type:"button","aria-label":o?"Collapse GitHub repos":"Expand GitHub repos","aria-expanded":o,onClick:()=>p(a=>!a),className:"p-1 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]",children:(0,b.jsx)(D.ChevronRight,{size:12,className:`transition-transform ${o?"rotate-90":""}`})})]}),"github"===c.type&&o&&m.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-0.5 mt-0.5 pl-5",children:m.map(c=>(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/github?repo=${encodeURIComponent(c.id)}`,onClick:g,className:"workspace-sidebar__nav-item",title:c.id,children:[c.private?(0,b.jsx)(F,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}):(0,b.jsx)(E,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-xs text-[var(--muted-foreground)] truncate",children:c.name})]},c.id))})]},c.type)}),j.map(c=>(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(G.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:I(c.type)}),(0,b.jsx)("span",{className:"ml-auto shrink-0",title:"Connection issue — click to reconnect",children:(0,b.jsx)(C.AlertTriangle,{size:12,className:"text-yellow-500"})})]})},c.type)),(i.length>0||j.length>0)&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect"})]})})]})}var K=a.i(70014),L=a.i(227444);function M({compact:a=!1}){return(0,b.jsxs)("span",{className:`workspace-sidebar__brand-logo${a?" workspace-sidebar__brand-logo--compact":""}`,"aria-hidden":"true",children:[(0,b.jsx)("img",{src:"/logo_dark.png",alt:"AGX",className:"block dark:hidden",style:{height:28}}),(0,b.jsx)("img",{src:"/logo_light.png",alt:"AGX",className:"hidden dark:block",style:{height:28}})]})}function N({label:a,children:e}){let f=(0,c.useRef)(null),[g,h]=(0,c.useState)(null);return(0,b.jsxs)("div",{ref:f,onMouseEnter:()=>{let a=f.current?.firstElementChild??f.current;if(!a)return;let b=a.getBoundingClientRect();h({top:b.top+b.height/2,left:b.right+8})},onMouseLeave:()=>h(null),style:{display:"contents"},children:[e,g&&(0,d.createPortal)((0,b.jsx)("div",{className:"workspace-sidebar__rail-tooltip",style:{top:g.top,left:g.left,transform:"translateY(-50%)"},children:a}),document.body)]})}function O({projects:a,activeProjectId:d,onSelectProject:f,onCreateProject:h}){let[i,j]=(0,c.useState)(!1),[n,o]=(0,c.useState)(""),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=a.find(a=>a.id===d)??a[0],s=n.trim()?a.filter(a=>a.name.toLowerCase().includes(n.toLowerCase())):a;return(0,c.useEffect)(()=>{if(!i)return;let a=a=>{p.current&&!p.current.contains(a.target)&&(j(!1),o(""))};return document.addEventListener("pointerdown",a),()=>document.removeEventListener("pointerdown",a)},[i]),(0,c.useEffect)(()=>{i&&q.current&&q.current.focus()},[i]),(0,b.jsxs)("div",{className:"relative px-3 pt-3 pb-2",ref:p,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>j(!i),className:"flex w-full items-center gap-2 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] px-2.5 py-2 text-sm text-[var(--foreground)] transition-all hover:border-[var(--app-shell-border-strong)]",children:[(0,b.jsx)(g.Folder,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"flex-1 truncate text-left font-medium",children:r?.name??"Select project"}),(0,b.jsx)(e.ChevronDown,{size:14,className:`flex-shrink-0 text-[var(--muted-foreground)] transition-transform ${i?"rotate-180":""}`})]}),i&&(0,b.jsxs)("div",{className:"absolute left-3 right-3 z-50 mt-1 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,b.jsx)("div",{className:"p-2 border-b border-[var(--app-shell-border)]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-2 py-1.5",children:[(0,b.jsx)(l.Search,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{ref:q,type:"text",value:n,onChange:a=>o(a.target.value),placeholder:"Search projects...",className:"flex-1 bg-transparent text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] outline-none"}),n&&(0,b.jsx)("button",{type:"button",onClick:()=>o(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,b.jsx)(m.X,{size:10})})]})}),(0,b.jsxs)("div",{className:"max-h-52 overflow-y-auto py-1",children:[s.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{f?.(a.id),j(!1),o("")},className:`flex w-full items-center gap-2 px-3 py-1.5 text-sm transition-colors hover:bg-[var(--app-shell-subtle)] ${a.id===r?.id?"text-[var(--foreground)] font-medium":"text-[var(--muted-foreground)]"}`,children:[(0,b.jsx)(g.Folder,{size:12,className:"flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.name})]},a.id)),0===s.length&&(0,b.jsx)("p",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No projects found"})]}),(0,b.jsx)("div",{className:"border-t border-[var(--app-shell-border)] p-1",children:(0,b.jsxs)("button",{type:"button",onClick:()=>{j(!1),o(""),h()},className:"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:[(0,b.jsx)(k.Plus,{size:12}),(0,b.jsx)("span",{children:"New project"})]})})]})]})}function P({threads:a,participants:e=[],activeThreadId:g,isLoading:i,isCreating:l,onSelectThread:C,onCreateThread:D,onRenameThread:E,onDeleteThread:F,deletingThreadId:G=null,renamingThreadId:H=null,activeParticipantIds:I=[],onToggleParticipantActive:P,visible:Q=!1,isRestoringActiveThread:R=!1,onToggle:S,onSearch:T,projects:U=[],onCreateProject:V,onUpdateProject:W,onDeleteProject:X,onAddAgentToProject:Y,onRemoveAgentFromProject:Z,onAddAgentViaForm:$,onReorderProjectAgents:_,onUpdateParticipant:aa,onSelectProject:ab,activeProjectId:ac=null,activeProjectView:ad=null,width:ae,onWidthChange:af,onAddTeam:ag,stageShow:ah,trackerConnections:ai=[]}){let aj,ak,{isTouchLayout:al,isPhone:am}=(0,x.useInputCapabilities)(),{updateAvailable:an}=function(){let[a,b]=(0,c.useState)({updateAvailable:!1,latestVersion:null});return(0,c.useEffect)(()=>{async function a(){try{let a=await fetch("/api/update-check");if(!a.ok)return;let c=await a.json(),d=c?.updateAvailable===!0,e="string"==typeof c?.latestVersion?c.latestVersion:null;b({updateAvailable:d,latestVersion:e})}catch{}}a();let c=setInterval(()=>{a()},y.UI_POLL_UPDATE_CHECK_MS);return()=>clearInterval(c)},[]),a}(),ao=(0,c.useRef)(!1);(0,c.useRef)(0);let ap=(0,c.useRef)(null),[aq,ar]=(0,c.useState)(!1),[as,at]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{if(as.size>0||!U?.length)return;let a=U.find(a=>!1);at(new Set([a?.id??U[0].id]))},[U]);let[au,av]=(0,c.useState)(null),[aw,ax]=(0,c.useState)(new Set),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)(null),aE=(0,A.useProjectFormState)(),[aF,aG]=(0,c.useState)(null),aH=(0,c.useCallback)(a=>{a&&(a.focus(),a.select())},[]),[aI,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(null),aM=aK?e.find(a=>a.id===aK)??null:null,[aN,aO]=(0,c.useState)(null),[aP,aQ]=(0,c.useState)({});(0,c.useEffect)(()=>{if(!U?.length)return;let a=!1,b=async()=>{try{let b=await fetch("/api/processes?enrich=1");if(!b.ok||a)return;let c=await b.json();if(a)return;let d=c.filter(a=>"spawning"===a.state||"running"===a.state),f={};for(let a of U){let b=a.slug.trim().toLowerCase(),c=new Set((a.thread_ids??[]).map(a=>a.trim()).filter(Boolean)),g=[],h=[],i=[],j=new Set,k=new Set,l=new Set;for(let a of d){let d=a.projectSlug?.trim().toLowerCase();if(!(d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)))continue;let f=e.find(b=>b.id===a.agentId),m={agentId:a.agentId,color:f?.color??"#10b981"};a.linearIssueId?k.has(a.agentId)||(k.add(a.agentId),h.push(m)):a.threadId?.startsWith("objective-chat:")||a.workspaceId?.startsWith("objective-chat:")?j.has(a.agentId)||(j.add(a.agentId),g.push(m)):l.has(a.agentId)||(l.add(a.agentId),i.push(m))}(g.length||h.length||i.length)&&(f[a.id]={objectives:g,linear:h,chat:i})}aQ(f)}catch{}};b();let c=setInterval(b,3e3);return()=>{a=!0,clearInterval(c)}},[U,e]);let[aR,aS]=(0,c.useState)({}),[aT,aU]=(0,c.useState)(new Set),[aV,aW]=(0,c.useState)(new Set),aX=(0,c.useRef)(new Set);(0,c.useEffect)(()=>{Array.from(as).forEach(a=>{aV.has(a)||(aW(b=>new Set(b).add(a)),(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();aS(b=>({...b,[a]:c.teams??[]}))}catch{}})())})},[as,aV]);let[aY,aZ]=(0,c.useState)(null),a$=async()=>{if(!aA&&!aC)return;if(!aE.form.name.trim())return void aE.setFormError("Project name is required");let a=aE.repos.find(a=>a.name.trim()&&!a.path.trim());if(a)return void aE.setFormError(`Local path is required for folder "${a.name}"`);aE.setFormError(null),aE.setIsSubmitting(!0);let b=(0,A.createProjectPayload)(aE.form,aE.repos);aC?await W?.(aC.id,b):await V?.(b,aA?.threadId),aE.setIsSubmitting(!1),aB(null),aD(null)};(0,c.useEffect)(()=>{ar(!0)},[]),(0,c.useEffect)(()=>{let a=!1;async function b(){if(aN?.repoId)try{let b=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(aN.repoId)}`),c=(b.ok?await b.json():{note:null}).note;a||aO(a=>a&&a.repoId===aN.repoId?{...a,generatedKnowledge:c?.content?[{id:c.id,content:c.content,created_at:c.updatedAt??c.createdAt}]:[],isLoadingKnowledge:!1}:a)}catch{a||aO(a=>a&&a.repoId===aN.repoId?{...a,generatedKnowledge:[],isLoadingKnowledge:!1}:a)}}return aN?.repoId&&b(),()=>{a=!0}},[aN?.repoId]);let a_=au?U.find(a=>a.id===au.projectId):null,a0=new Set(a_?.agents.map(a=>a.agent_id)??[]),a1=au?e.filter(a=>!a0.has(a.id)):[],a2=a.length>0,a3=!!Q,a4=(0,c.useCallback)(()=>{al&&S?.()},[al,S]),a5=[...a].sort((a,b)=>(a.title??"").localeCompare(b.title??"")),a6=new Map(a.map(a=>[a.id,a])),a7=U.filter(a=>!a.is_default),a8=a7.find(a=>a.id===ac)??a7[0]??null,{connections:a9}=(0,L.useTrackerConnections)(a8?.id??null),ba=ah??{home:!0,threads:!0,terminal:!0,objectives:!1,objectivesIsNew:!1,tracking:!1,teams:!1,folders:!1,scheduledTasks:!1,envVars:!1,notifications:!1};if((0,c.useEffect)(()=>{if(0===a7.length)return;let b=new Map,c=new Set,d=new Map;for(let a of a7){for(let b of a.thread_ids??[])"string"==typeof b&&b.trim()&&c.add(b);for(let c of(0,B.readProjectObjectivesWorkspace)(a.metadata).objectives){let d=c.id.trim();d&&b.set(d,{projectId:a.id,canonicalThreadId:c.threadId?.trim()||`objective-chat:${d}`})}}for(let b of a){let a=b.metadata&&"object"==typeof b.metadata?b.metadata:null,c="objective"===("string"==typeof a?.scope?a.scope:"")||b.id.startsWith("objective-chat:"),e=b.title?.trim().toLowerCase()??"";if(!c||!e)continue;let f=d.get(e)??[];f.push(b),d.set(e,f)}for(let[a,b]of d)d.set(a,[...b].sort((a,b)=>b.updatedAt-a.updatedAt));for(let e of a){let a=e.metadata&&"object"==typeof e.metadata?e.metadata:null,f="string"==typeof a?.scope?a.scope:"",g="string"==typeof a?.objectiveId?a.objectiveId.trim():"",h=e.id.startsWith("objective-chat:")?e.id.slice(15).trim():"",i=g||h,j="objective"===f||!!h,k=e.title?.trim().toLowerCase()??"",l=0===e.messages.length&&e.updatedAt<Date.now()-3e5;if(!j)continue;let m=i?b.get(i):void 0;if(m){if(e.id!==m.canonicalThreadId&&l){let a=`delete:${e.id}`;if(aX.current.has(a))continue;aX.current.add(a),Promise.resolve(F(e.id)).catch(b=>{aX.current.delete(a),console.warn("Failed to delete legacy objective thread",b)});continue}if(!c.has(e.id)){let a=`link:${e.id}`;if(aX.current.has(a))continue;aX.current.add(a),fetch(`/api/projects/${m.projectId}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e.id})}).then(a=>{if(!a.ok)throw Error(`Request failed with status ${a.status}`)}).catch(b=>{aX.current.delete(a),console.warn("Failed to re-link objective thread",b)})}continue}if(!l)continue;let n=k?d.get(k)??[]:[];if(n.length<2||n[0]?.id===e.id)continue;let o=`delete:${e.id}`;aX.current.has(o)||(aX.current.add(o),Promise.resolve(F(e.id)).catch(a=>{aX.current.delete(o),console.warn("Failed to delete orphan objective thread",a)}))}},[a7,F,a]),!function({focusTarget:a,shouldFocus:b}){(0,c.useEffect)(()=>{if(!b||"u"<typeof document)return;let c=a.current;if(!c||c instanceof HTMLButtonElement&&c.disabled)return;let d=document.activeElement;if(!(d&&(c===d||c.contains(d))))try{c.focus({preventScroll:!0})}catch{c.focus()}},[a,b])}({focusTarget:ap,shouldFocus:a3&&!(i&&!a2||R&&a2)&&!a2&&!l}),!a3){if(al)return null;let c=a8?.slug;return(0,b.jsxs)("aside",{id:"workspace-sidebar",className:"workspace-sidebar workspace-sidebar--collapsed","aria-label":"Workspace sidebar",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand",children:(0,b.jsx)("button",{type:"button",onClick:S,className:"workspace-sidebar__brand-trigger border-none outline-none cursor-pointer","aria-label":"Show chats",title:"Show chats",children:(0,b.jsx)(M,{compact:!0})})}),c&&(0,b.jsxs)("nav",{className:"workspace-sidebar__collapsed-rail",children:[(0,b.jsx)(N,{label:"Home",children:(0,b.jsx)(w.default,{href:`/projects/${c}`,className:`workspace-sidebar__rail-icon${"home"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(q,{size:16})})}),(ba.objectives||ba.tracking||ba.scheduledTasks)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),ba.objectives&&(0,b.jsx)(N,{label:"Objectives",children:(0,b.jsx)(w.default,{href:`/projects/${c}/objectives`,className:`workspace-sidebar__rail-icon${"objectives"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(n.Target,{size:16})})}),ba.tracking&&(0,b.jsx)(N,{label:"Task Tracking",children:(0,b.jsx)(w.default,{href:`/projects/${c}/tracking`,className:`workspace-sidebar__rail-icon${"linear"===ad||"tracking"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(K.LinearIcon,{className:"h-4 w-4"})})}),ba.tracking&&(0,b.jsx)(N,{label:"Pull Requests",children:(0,b.jsx)(w.default,{href:`/projects/${c}/prs`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(v,{size:16})})}),ba.scheduledTasks&&(0,b.jsx)(N,{label:"Scheduled Jobs",children:(0,b.jsx)(w.default,{href:`/projects/${c}/automations`,className:`workspace-sidebar__rail-icon${"automations"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(f.Zap,{size:16})})}),(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,b.jsx)(N,{label:"Terminal",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal`,className:`workspace-sidebar__rail-icon${"terminal"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(s.TerminalSquare,{size:16})})}),(0,b.jsx)(N,{label:"Chat",children:(0,b.jsx)("button",{type:"button",className:`workspace-sidebar__rail-icon${"thread"===ad?" workspace-sidebar__rail-icon--active":""}`,onClick:()=>{let b=a5.filter(a=>a8?.thread_ids?.includes(a.id)),c=a8?.thread_ids?.find(b=>a.some(a=>a.id===b))??b[0]?.id;c&&C(c)},children:(0,b.jsx)(r.MessageSquare,{size:16})})}),(ba.teams||ba.folders||ba.envVars||ba.notifications)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),ba.teams&&(0,b.jsx)(N,{label:"Teams",children:(0,b.jsx)(w.default,{href:`/projects/${c}/teams`,className:`workspace-sidebar__rail-icon${"teams"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(p.Users,{size:16})})}),ba.folders&&(0,b.jsx)(N,{label:"Folders",children:(0,b.jsx)(w.default,{href:`/projects/${c}/folders`,className:`workspace-sidebar__rail-icon${"folders"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(h.FolderGit2,{size:16})})}),ba.envVars&&(0,b.jsx)(N,{label:"Env Variables",children:(0,b.jsx)(w.default,{href:`/projects/${c}/env-vars`,className:`workspace-sidebar__rail-icon${"env-vars"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(t,{size:16})})}),ba.notifications&&(0,b.jsx)(N,{label:"Notifications",children:(0,b.jsx)(w.default,{href:`/projects/${c}/notifications`,className:`workspace-sidebar__rail-icon${"notifications"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(o.Bell,{size:16})})})]}),(0,b.jsxs)("div",{className:"mt-auto p-2 flex flex-col gap-2",children:[an&&c&&(0,b.jsx)(N,{label:"Update available",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(u,{size:16})})}),(0,b.jsx)(N,{label:"Join Discord",children:(0,b.jsx)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"workspace-sidebar__rail-icon",style:{backgroundColor:"#5865F2",color:"white"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]})]})}return(0,b.jsxs)(b.Fragment,{children:[al?(0,b.jsx)("button",{type:"button",className:"workspace-sidebar__backdrop",onClick:S,"aria-label":"Close sidebar"}):null,(0,b.jsxs)("aside",{id:"workspace-sidebar",className:`workspace-sidebar${al?" workspace-sidebar--drawer":""}${al&&am?" workspace-sidebar--drawer-phone":""}`,"aria-label":"Workspace sidebar","aria-busy":i?"true":void 0,"aria-modal":al?"true":void 0,role:al?"dialog":void 0,style:!al&&ae?{width:`${ae}px`,minWidth:`${ae}px`}:void 0,children:[(0,b.jsxs)("div",{className:"workspace-sidebar__brand",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand-content",children:(0,b.jsx)(M,{})}),S&&(0,b.jsx)("button",{type:"button",onClick:S,"aria-label":"Hide chats",title:"Hide chats",className:"workspace-sidebar__brand-toggle ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-all hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:(0,b.jsx)(j,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,b.jsxs)("div",{className:"workspace-sidebar__content",children:[(0,b.jsx)(O,{projects:a7,activeProjectId:ac,onSelectProject:a=>{ab?.(a),a4()},onCreateProject:()=>{aE.resetForm(),aD(null),aB({})}}),(()=>{if(!a8)return null;let a=a5.filter(a=>a8.thread_ids?.includes(a.id)),c=a8.thread_ids?.find(a=>a6.has(a))??a8.thread_ids?.[0]??a[0]?.id??null,d=a8.id===ac,i=d&&"home"===ad,j=d&&"objectives"===ad,k=d&&"automations"===ad,l=d&&"terminal"===ad,m=d&&"thread"===ad&&c===g,u=d&&"teams"===ad,v=d&&"folders"===ad,x=d&&"env-vars"===ad,y=d&&"notifications"===ad,A=aP[a8.id],B=ba.objectives||ba.scheduledTasks,D=ba.teams||ba.folders||ba.envVars||ba.notifications;return(0,b.jsxs)("nav",{className:"workspace-sidebar__section",children:[(0,b.jsx)("div",{className:"px-2 mt-2 mb-3",children:(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}`,onClick:a4,className:`workspace-sidebar__nav-item ${i?"workspace-sidebar__nav-item--active":""}`,"aria-current":i?"page":void 0,children:[(0,b.jsx)(q,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Home"})]})})}),B&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Work"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[ba.objectives&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/objectives`,onClick:a4,className:`workspace-sidebar__nav-item ${j?"workspace-sidebar__nav-item--active":""}`,"aria-current":j?"page":void 0,children:[(0,b.jsx)(n.Target,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Objectives"}),ba.objectivesIsNew&&(0,b.jsx)("span",{className:"ml-auto inline-flex items-center rounded-full bg-indigo-500/15 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider text-indigo-500 animate-pulse",children:"NEW"}),!ba.objectivesIsNew&&A?.objectives.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.objectives.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]})}),ba.scheduledTasks&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/automations`,onClick:a4,className:`workspace-sidebar__nav-item ${k?"workspace-sidebar__nav-item--active":""}`,"aria-current":k?"page":void 0,children:[(0,b.jsx)(f.Zap,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Scheduled Jobs"})]})})]})]}),ba.tracking&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Task Tracking"})}),(0,b.jsx)("div",{className:"px-2 flex flex-col gap-0.5",children:(0,b.jsx)(J,{projectSlug:a8.slug,trackerConnections:ai,activeTrackerType:null,isTrackingActive:d&&("linear"===ad||"tracking"===ad),onLinkClick:a4})})]}),(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Tools"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/terminal`,onClick:a4,className:`workspace-sidebar__nav-item ${l?"workspace-sidebar__nav-item--active":""}`,"aria-current":l?"page":void 0,children:[(0,b.jsx)(s.TerminalSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Terminal"})]})}),(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:c?(0,b.jsxs)("button",{type:"button",className:`workspace-sidebar__nav-item ${m?"workspace-sidebar__nav-item--active":""}`,onClick:()=>{C(c),a4()},"aria-current":m?"page":void 0,children:[(0,b.jsx)(r.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"}),A?.chat.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.chat.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]}):null})]})]}),D&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Settings"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[ba.teams&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/teams`,onClick:a4,className:`workspace-sidebar__nav-item ${u?"workspace-sidebar__nav-item--active":""}`,"aria-current":u?"page":void 0,children:[(0,b.jsx)(p.Users,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Teams"})]})}),ba.folders&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/folders`,onClick:a4,className:`workspace-sidebar__nav-item ${v?"workspace-sidebar__nav-item--active":""}`,"aria-current":v?"page":void 0,children:[(0,b.jsx)(h.FolderGit2,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Folders"})]})}),ba.envVars&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/env-vars`,onClick:a4,className:`workspace-sidebar__nav-item ${x?"workspace-sidebar__nav-item--active":""}`,"aria-current":x?"page":void 0,children:[(0,b.jsx)(t,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Environment Variables"})]})}),ba.notifications&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/notifications`,onClick:a4,className:`workspace-sidebar__nav-item ${y?"workspace-sidebar__nav-item--active":""}`,"aria-current":y?"page":void 0,children:[(0,b.jsx)(o.Bell,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Notifications"})]})})]})]})]})})()]}),(0,b.jsxs)("div",{className:"mt-auto px-3 pb-3 flex flex-col gap-2",children:[an&&a8&&(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-sm font-medium transition-colors text-[var(--foreground)] bg-[var(--app-shell-subtle)] hover:bg-[var(--app-shell-border)]",children:[(0,b.jsx)(u,{size:14}),"Update available"]}),(0,b.jsxs)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:[(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})]}),aq&&aN&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4",onClick:()=>{aN.isSaving||aO(null)},children:(0,b.jsxs)("div",{className:"w-full max-w-lg rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-5 py-4",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:aN.projectName}),(0,b.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--foreground)]",children:aN.repoId?aN.name||"Folder":"Add Folder"})]}),(0,b.jsx)("button",{type:"button",className:"rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--muted-foreground)]",onClick:()=>{aN.isSaving||aO(null)},"aria-label":"Close folder details",disabled:aN.isSaving,children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"space-y-4 px-5 py-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:aN.name,onChange:a=>aO(b=>b?{...b,name:a.target.value,error:null}:b),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",disabled:aN.isSaving,placeholder:"e.g. Frontend, API Docs, Design System"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:aN.path,onChange:a=>aO(b=>b?{...b,path:a.target.value,error:null}:b),className:"flex-1 rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 font-mono text-xs text-[var(--foreground)]",disabled:aN.isSaving,placeholder:"Local path to folder"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",disabled:aN.isSaving,onClick:async()=>{try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&aO(a=>a?{...a,path:b.path,error:null}:a)}catch{}},children:"Browse"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Notes"}),(0,b.jsx)("textarea",{value:aN.notes,onChange:a=>aO(b=>b?{...b,notes:a.target.value,error:null}:b),className:"min-h-28 w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-3 text-sm text-[var(--foreground)] whitespace-pre-wrap",disabled:aN.isSaving,placeholder:"Coding conventions, deploy steps, doc standards, ownership rules..."})]}),aN.repoId?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Living Note"}),aN.isLoadingKnowledge?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading note…"}):aN.generatedKnowledge.length>0?(0,b.jsx)("div",{className:"space-y-2",children:aN.generatedKnowledge.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,b.jsx)("div",{children:a.content}),a.created_at?(0,b.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(a.created_at).toLocaleString()}):null]},a.id))}):(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No note yet."})]}):null,aN.error?(0,b.jsx)("p",{className:"text-xs text-red-600",children:aN.error}):null,(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] pt-4",children:[(0,b.jsx)("button",{type:"button",className:"rounded-lg px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",onClick:()=>aO(null),disabled:aN.isSaving,children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg bg-[var(--foreground)] px-3 py-2 text-sm font-medium text-[var(--card-bg)] transition-colors hover:bg-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-60",disabled:aN.isSaving||!W,onClick:async()=>{let a=U.find(a=>a.id===aN.projectId);if(!a)return void aO(a=>a?{...a,error:"Project not found."}:a);let b=aN.name.trim(),c=aN.path.trim();if(!b)return void aO(a=>a?{...a,error:"Folder name is required."}:a);if(!c)return void aO(a=>a?{...a,error:"Folder path is required."}:a);aO(a=>a?{...a,isSaving:!0,error:null}:a);try{let d=aN.repoId?a.repos.map(a=>a.id===aN.repoId?{id:a.id,name:b,path:c,git_url:aN.gitUrl.trim()||void 0,notes:aN.notes.trim()||void 0}:{id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes}):[...a.repos.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes})),{name:b,path:c,git_url:aN.gitUrl.trim()||void 0,notes:aN.notes.trim()||void 0}];await W?.(a.id,{repos:d}),aO(null)}catch(a){aO(b=>b?{...b,isSaving:!1,error:a instanceof Error?a.message:"Failed to save folder details."}:b)}},children:aN.isSaving?"Saving...":aN.repoId?"Save":"Add Folder"})]})]})]})}),document.body),aq&&au&&!ay&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>av(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",a_?.name??"project"]}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>av(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,b.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors border-b border-[var(--border)]",onClick:()=>az(!0),children:[(0,b.jsx)(k.Plus,{size:14,className:"text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===a1.length?(0,b.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"All agents are already in this project"}):a1.map(a=>{let c=aw.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${c?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{ax(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${c?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--border)]"}`,children:c&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,b.jsx)("div",{className:"truncate font-medium text-xs",children:a.name}),(0,b.jsx)("div",{className:"truncate text-[11px] text-[var(--muted-foreground)]",children:a.model})]})]},a.id)})]}),a1.length>0&&(0,b.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>av(null),children:"Cancel"}),(0,b.jsxs)("button",{type:"button",disabled:0===aw.size,className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let a of aw)Y?.(au.projectId,a);av(null)},children:["Add ",aw.size>0?`(${aw.size})`:""]})]})]})}),document.body),aq&&ay&&(0,d.createPortal)((0,b.jsx)(z.AgentForm,{title:"Create new agent",initial:{name:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",projects:U?.filter(a=>!a.is_default).map(b=>{let c=(b.thread_ids??[]).map(b=>a.find(a=>a.id===b)?.title?.trim()).filter(Boolean).join(", ")||"No chat";return{id:b.id,name:b.name,label:`${c} › ${b.name}`}}),initialProjectIds:au?[au.projectId]:[],onSubmit:async(a,b)=>{let c=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],d=c[e.length%c.length],f=a.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g=b?.[0],h=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:f,name:a.name,provider:a.provider,model:a.model,color:a.color??d,...a.role?{role:a.role}:{},...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[],...g?{projectId:g}:{}})});if(h.ok){let a=await h.json().catch(()=>({})),c="string"==typeof a?.id&&a.id.trim()?a.id.trim():f;for(let a of(b??[]).slice(1))Y?.(a,c);az(!1),av(null)}},onCancel:()=>{az(!1)}}),document.body),aq&&aF&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aG(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aF.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aG(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("form",{className:"px-4 py-4 flex flex-col gap-3",onSubmit:a=>{a.preventDefault();let b=new FormData(a.currentTarget),c=b.get("value")?.trim();c&&(aF.onSubmit(c),aG(null))},children:[(0,b.jsx)("input",{ref:aH,name:"value",type:"text",defaultValue:aF.defaultValue,placeholder:aF.placeholder,className:"w-full px-3 py-2 text-sm border border-[var(--border)] rounded-lg outline-none focus:border-[var(--border)] focus:ring-1 focus:ring-[var(--border)] transition-all"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aG(null),children:"Cancel"}),(0,b.jsx)("button",{type:"submit",className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] transition-colors",children:aF.defaultValue?"Save":"Create"})]})]})]})}),document.body),aq&&aI&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aJ(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aI.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aJ(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"px-4 py-4 flex flex-col gap-4",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:aI.message}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aJ(null),children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors",onClick:()=>{aI.onConfirm(),aJ(null)},children:"Delete"})]})]})]})}),document.body),aq&&(aA||aC)&&(0,d.createPortal)((0,b.jsx)(A.default,{isOpen:!0,onClose:()=>{aE.resetForm(),aB(null),aD(null)},onSubmit:()=>void a$(),editingProject:aC,form:aE.form,repos:aE.repos,isSubmitting:aE.isSubmitting,formError:aE.formError,onFieldChange:(a,b)=>aE.setForm(c=>({...c,[a]:b})),onRepoChange:aE.handleRepoChange,onAddRepo:aE.addRepo,onRemoveRepo:aE.removeRepo}),document.body),aq&&aM&&(0,d.createPortal)((aj=U.filter(a=>a.agents.some(a=>a.agent_id===aM.id)),ak=U.filter(a=>!a.agents.some(a=>a.agent_id===aM.id)),(0,b.jsx)(z.AgentForm,{title:"Edit agent",initial:{name:aM.name,role:aM.role||"",provider:aM.provider,model:aM.model||"",identity:aM.identity||"",color:aM.color,skills:aM.skills||[],skillBindings:aM.skillBindings||[]},agentId:aM.id,submitLabel:"Save",projectMemberships:{current:aj.map(a=>({id:a.id,name:a.name,is_default:!!a.is_default})),available:ak.map(a=>({id:a.id,name:a.name}))},onAddToProject:Y?a=>Y(a,aM.id):void 0,onRemoveFromProject:Z?a=>Z(a,aM.id):void 0,onSubmit:async a=>{aa&&await aa({...aM,name:a.name,role:a.role||void 0,provider:a.provider,model:a.model,color:a.color??aM.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]}),aL(null)},onCancel:()=>aL(null)})),document.body),af&&!al&&(0,b.jsx)("div",{className:"absolute right-0 top-0 bottom-0 z-20 w-1 cursor-col-resize group",onMouseDown:a=>{a.preventDefault(),ao.current=!0;let b=a.clientX,c=ae??368;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let d=a=>{af(Math.max(200,Math.min(600,c+a.clientX-b)))},e=()=>{ao.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",e)},children:(0,b.jsx)("div",{className:"absolute inset-y-0 right-0 w-1 transition-colors hover:bg-[var(--primary)]/40 group-hover:bg-[var(--primary)]/40"})})]})]})}a.s(["WorkspaceSidebar",()=>P],550158)},111013,a=>{"use strict";var b=a.i(786220),c=a.i(516909),d=a.i(870630);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(a||g.get("thread")||"").trim()||null,i=(0,b.useRef)(!0),[j,k]=(0,b.useState)([]),[l,m]=(0,b.useState)(null),[n,o]=(0,b.useState)(!0),[p,q]=(0,b.useState)(!0),[r,s]=(0,b.useState)(!1),[t,u]=(0,b.useState)(null),[v,w]=(0,b.useState)(null),x=(0,b.useRef)(!1),y=(0,b.useCallback)(a=>{m(a)},[]);(0,b.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]),(0,b.useEffect)(()=>{let a=!1;return(async()=>{try{var b;let c,g=await d.threadService.listThreads();if(h&&!g.some(a=>a.id===h)){let a=await d.threadService.createThread({id:h});g=f([...g.filter(b=>b.id!==a.id),a])}if(a||!i.current)return;k(g);let j=h||null,{threadId:l,shouldClearSavedId:n,restoredFromStorage:o}=(b=g,c=b[0]?.id??null,j?b.some(a=>a.id===j)?{threadId:j,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:c,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:c,shouldClearSavedId:!1,restoredFromStorage:!1});n&&e(),x.current||(x.current=!0),o&&l?y(l):l?m(a=>a??l):m(null)}catch(a){console.error("Failed to load threads",a)}finally{i.current&&(o(!1),q(!1))}})(),()=>{a=!0}},[h,y]),(0,b.useEffect)(()=>{x.current&&(l||e())},[l]);let z=(0,b.useCallback)(async a=>{s(!0);try{let b=await d.threadService.createThread(a);if(!i.current)return b;return k(a=>f([...a.filter(a=>a.id!==b.id),b])),m(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{i.current&&s(!1)}},[]),A=(0,b.useCallback)(async a=>{if(a){u(a);try{if(await d.threadService.deleteThread(a),!i.current)return;let b=[];k(c=>b=f(c.filter(b=>b.id!==a))),m(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{i.current&&u(null)}}},[]),B=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){w(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!i.current)return;k(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{i.current&&w(a=>a===c?null:a)}}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),E=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),G=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),H=null!==l&&t===l;return{threads:j,activeThreadId:l,selectThread:y,createThread:z,deleteThread:A,isLoading:n,isRestoringActiveThread:p,isCreating:r,deletingThreadId:t,renamingThreadId:v,isDeletingActiveThread:H,updateThreadMessages:C,renameThread:B,updateThreadStatus:D,updateThreadOutcomeNote:E,updateMessageThreadStatus:F,updateMessageOutcomeNote:G}}a.s(["useThreadState",()=>g],111013)},455106,a=>{"use strict";let b={threadSidebarVisible:!1};function c(){return({...b}).threadSidebarVisible}function d(a){}a.s(["loadWorkspaceSidebarVisible",()=>c,"persistWorkspaceSidebarVisible",()=>d])}];
|
|
1
|
+
module.exports=[970393,a=>{"use strict";let b=(0,a.i(831709).default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);a.s(["PanelLeftOpen",()=>b],970393)},508869,a=>{"use strict";let b=(0,a.i(831709).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);a.s(["Sun",()=>b],508869)},523321,a=>{"use strict";let b=(0,a.i(831709).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);a.s(["Moon",()=>b],523321)},166621,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(850985),e=a.i(639211);function f(){let[a,f]=(0,c.useState)("unknown"),[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)(""),[k,l]=(0,c.useState)(!1),m=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/status");if(!a.ok)return void f("unknown");let b=await a.json();f("ok"===b.status?"ok":"degraded");let c=b.services.filter(a=>"agx-chat"===a.name||"agx-cloud"===a.name);h(c),j(new Date().toLocaleTimeString())}catch{f("unknown"),h([])}},[]);return(0,c.useEffect)(()=>{m();let a=setInterval(m,e.UI_POLL_SYSTEM_STATUS_MS);return()=>clearInterval(a)},[m]),(0,b.jsxs)("div",{className:"relative",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[(0,b.jsx)(d.default,{href:"/status",className:"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] transition-all hover:bg-[var(--app-shell-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]",title:"System status",children:(0,b.jsx)("span",{className:`h-2.5 w-2.5 rounded-full ${"ok"===a?"bg-emerald-400":"degraded"===a?"bg-amber-400":"bg-[var(--app-shell-muted)]"} ${"degraded"===a?"animate-pulse":""}`})}),k&&(0,b.jsxs)("div",{className:"absolute top-full right-0 z-50 mt-1.5 w-52 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] p-3 text-xs shadow-lg",children:[g.length>0?(0,b.jsx)("ul",{className:"space-y-1.5",children:g.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:a.name}),(0,b.jsx)("span",{className:"ok"===a.status?"text-emerald-600":"error"===a.status?"text-red-500":"text-[var(--muted-foreground)]",children:"ok"===a.status?"Healthy":"error"===a.status?a.detail||"Error":"Unavailable"})]},a.name))}):(0,b.jsx)("p",{className:"text-[var(--app-shell-soft-text)]",children:"Checking..."}),i&&(0,b.jsxs)("p",{className:"mt-2 border-t border-[var(--app-shell-border)] pt-1.5 text-[var(--app-shell-soft-text)]",children:["Last check: ",i]})]})]})}a.s(["StatusIndicator",()=>f])},550158,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(197180),e=a.i(811760),f=a.i(66456),g=a.i(157633),h=a.i(736868),i=a.i(831709);let j=(0,i.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var k=a.i(353532),l=a.i(542341),m=a.i(824179),n=a.i(489461),o=a.i(97723),p=a.i(985339);let q=(0,i.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var r=a.i(737313),s=a.i(144462);let t=(0,i.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]),u=(0,i.default)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]),v=(0,i.default)("git-pull-request",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);var w=a.i(850985),x=a.i(529889),y=a.i(639211),z=a.i(8e4),A=a.i(188834),B=a.i(769677),C=a.i(599086),D=a.i(756490);let E=(0,i.default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]),F=(0,i.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var G=a.i(392045);let H={linear:"Linear",jira:"Jira",intercom:"Intercom",freshdesk:"Freshdesk",github:"GitHub"};function I(a){return H[a]??a.charAt(0).toUpperCase()+a.slice(1)}function J({projectSlug:a,trackerConnections:d,activeTrackerType:e,isTrackingActive:f,onLinkClick:g}){let h=[...d].sort((a,b)=>new Date(a.connectedAt).getTime()-new Date(b.connectedAt).getTime()),i=h.filter(a=>a.connected),j=h.filter(a=>!a.connected),l=i.some(a=>"github"===a.type),[m,n]=(0,c.useState)([]),[o,p]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{if(!l)return void n([]);let a=!1;return fetch("/api/github/repos",{cache:"no-store"}).then(a=>a.ok?a.json():{repos:[]}).then(b=>{a||n(b.repos??[])}).catch(()=>{a||n([])}),()=>{a=!0}},[l]),(0,b.jsxs)(b.Fragment,{children:[0===i.length&&0===j.length&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:`workspace-sidebar__nav-item ${f?"workspace-sidebar__nav-item--active":""}`,children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect Tracker"})]})}),i.map(c=>{let d=f&&e===c.type;return(0,b.jsxs)("div",{className:"workspace-sidebar__workspace-item",children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:`workspace-sidebar__nav-item flex-1 ${d?"workspace-sidebar__nav-item--active":""}`,"aria-current":d?"page":void 0,children:[(0,b.jsx)(G.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:I(c.type)})]}),"github"===c.type&&m.length>0&&(0,b.jsx)("button",{type:"button","aria-label":o?"Collapse GitHub repos":"Expand GitHub repos","aria-expanded":o,onClick:()=>p(a=>!a),className:"p-1 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]",children:(0,b.jsx)(D.ChevronRight,{size:12,className:`transition-transform ${o?"rotate-90":""}`})})]}),"github"===c.type&&o&&m.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-0.5 mt-0.5 pl-5",children:m.map(c=>(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/github?repo=${encodeURIComponent(c.id)}`,onClick:g,className:"workspace-sidebar__nav-item",title:c.id,children:[c.private?(0,b.jsx)(F,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}):(0,b.jsx)(E,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-xs text-[var(--muted-foreground)] truncate",children:c.name})]},c.id))})]},c.type)}),j.map(c=>(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/${c.type}`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(G.TrackerIcon,{trackerType:c.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:I(c.type)}),(0,b.jsx)("span",{className:"ml-auto shrink-0",title:"Connection issue — click to reconnect",children:(0,b.jsx)(C.AlertTriangle,{size:12,className:"text-yellow-500"})})]})},c.type)),(i.length>0||j.length>0)&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a}/tracking/connect`,onClick:g,className:"workspace-sidebar__nav-item",children:[(0,b.jsx)(k.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect"})]})})]})}var K=a.i(70014),L=a.i(227444);function M({compact:a=!1}){return(0,b.jsxs)("span",{className:`workspace-sidebar__brand-logo${a?" workspace-sidebar__brand-logo--compact":""}`,"aria-hidden":"true",children:[(0,b.jsx)("img",{src:"/logo_dark.png",alt:"AGX",className:"block dark:hidden",style:{height:28}}),(0,b.jsx)("img",{src:"/logo_light.png",alt:"AGX",className:"hidden dark:block",style:{height:28}})]})}function N({label:a,children:e}){let f=(0,c.useRef)(null),[g,h]=(0,c.useState)(null);return(0,b.jsxs)("div",{ref:f,onMouseEnter:()=>{let a=f.current?.firstElementChild??f.current;if(!a)return;let b=a.getBoundingClientRect();h({top:b.top+b.height/2,left:b.right+8})},onMouseLeave:()=>h(null),style:{display:"contents"},children:[e,g&&(0,d.createPortal)((0,b.jsx)("div",{className:"workspace-sidebar__rail-tooltip",style:{top:g.top,left:g.left,transform:"translateY(-50%)"},children:a}),document.body)]})}function O({projects:a,activeProjectId:d,onSelectProject:f,onCreateProject:h}){let[i,j]=(0,c.useState)(!1),[n,o]=(0,c.useState)(""),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=a.find(a=>a.id===d)??a[0],s=n.trim()?a.filter(a=>a.name.toLowerCase().includes(n.toLowerCase())):a;return(0,c.useEffect)(()=>{if(!i)return;let a=a=>{p.current&&!p.current.contains(a.target)&&(j(!1),o(""))};return document.addEventListener("pointerdown",a),()=>document.removeEventListener("pointerdown",a)},[i]),(0,c.useEffect)(()=>{i&&q.current&&q.current.focus()},[i]),(0,b.jsxs)("div",{className:"relative px-3 pt-3 pb-2",ref:p,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>j(!i),className:"flex w-full items-center gap-2 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] px-2.5 py-2 text-sm text-[var(--foreground)] transition-all hover:border-[var(--app-shell-border-strong)]",children:[(0,b.jsx)(g.Folder,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"flex-1 truncate text-left font-medium",children:r?.name??"Select project"}),(0,b.jsx)(e.ChevronDown,{size:14,className:`flex-shrink-0 text-[var(--muted-foreground)] transition-transform ${i?"rotate-180":""}`})]}),i&&(0,b.jsxs)("div",{className:"absolute left-3 right-3 z-50 mt-1 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,b.jsx)("div",{className:"p-2 border-b border-[var(--app-shell-border)]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-2 py-1.5",children:[(0,b.jsx)(l.Search,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("input",{ref:q,type:"text",value:n,onChange:a=>o(a.target.value),placeholder:"Search projects...",className:"flex-1 bg-transparent text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] outline-none"}),n&&(0,b.jsx)("button",{type:"button",onClick:()=>o(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,b.jsx)(m.X,{size:10})})]})}),(0,b.jsxs)("div",{className:"max-h-52 overflow-y-auto py-1",children:[s.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{f?.(a.id),j(!1),o("")},className:`flex w-full items-center gap-2 px-3 py-1.5 text-sm transition-colors hover:bg-[var(--app-shell-subtle)] ${a.id===r?.id?"text-[var(--foreground)] font-medium":"text-[var(--muted-foreground)]"}`,children:[(0,b.jsx)(g.Folder,{size:12,className:"flex-shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.name})]},a.id)),0===s.length&&(0,b.jsx)("p",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No projects found"})]}),(0,b.jsx)("div",{className:"border-t border-[var(--app-shell-border)] p-1",children:(0,b.jsxs)("button",{type:"button",onClick:()=>{j(!1),o(""),h()},className:"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:[(0,b.jsx)(k.Plus,{size:12}),(0,b.jsx)("span",{children:"New project"})]})})]})]})}function P({threads:a,participants:e=[],activeThreadId:g,isLoading:i,isCreating:l,onSelectThread:C,onCreateThread:D,onRenameThread:E,onDeleteThread:F,deletingThreadId:G=null,renamingThreadId:H=null,activeParticipantIds:I=[],onToggleParticipantActive:P,visible:Q=!1,isRestoringActiveThread:R=!1,onToggle:S,onSearch:T,projects:U=[],onCreateProject:V,onUpdateProject:W,onDeleteProject:X,onAddAgentToProject:Y,onRemoveAgentFromProject:Z,onAddAgentViaForm:$,onReorderProjectAgents:_,onUpdateParticipant:aa,onSelectProject:ab,activeProjectId:ac=null,activeProjectView:ad=null,width:ae,onWidthChange:af,onAddTeam:ag,stageShow:ah,trackerConnections:ai=[]}){let aj,ak,{isTouchLayout:al,isPhone:am}=(0,x.useInputCapabilities)(),{updateAvailable:an}=function(){let[a,b]=(0,c.useState)({updateAvailable:!1,latestVersion:null});return(0,c.useEffect)(()=>{async function a(){try{let a=await fetch("/api/update-check");if(!a.ok)return;let c=await a.json(),d=c?.updateAvailable===!0,e="string"==typeof c?.latestVersion?c.latestVersion:null;b({updateAvailable:d,latestVersion:e})}catch{}}a();let c=setInterval(()=>{a()},y.UI_POLL_UPDATE_CHECK_MS);return()=>clearInterval(c)},[]),a}(),ao=(0,c.useRef)(!1);(0,c.useRef)(0);let ap=(0,c.useRef)(null),[aq,ar]=(0,c.useState)(!1),[as,at]=(0,c.useState)(new Set);(0,c.useEffect)(()=>{if(as.size>0||!U?.length)return;let a=U.find(a=>!1);at(new Set([a?.id??U[0].id]))},[U]);let[au,av]=(0,c.useState)(null),[aw,ax]=(0,c.useState)(new Set),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)(null),aE=(0,A.useProjectFormState)(),[aF,aG]=(0,c.useState)(null),aH=(0,c.useCallback)(a=>{a&&(a.focus(),a.select())},[]),[aI,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(null),aM=aK?e.find(a=>a.id===aK)??null:null,[aN,aO]=(0,c.useState)(null),[aP,aQ]=(0,c.useState)({});(0,c.useEffect)(()=>{if(!U?.length)return;let a=!1,b=async()=>{try{let b=await fetch("/api/processes?enrich=1");if(!b.ok||a)return;let c=await b.json();if(a)return;let d=c.filter(a=>"spawning"===a.state||"running"===a.state),f={};for(let a of U){let b=a.slug.trim().toLowerCase(),c=new Set((a.thread_ids??[]).map(a=>a.trim()).filter(Boolean)),g=[],h=[],i=[],j=new Set,k=new Set,l=new Set;for(let a of d){let d=a.projectSlug?.trim().toLowerCase();if(!(d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)))continue;let f=e.find(b=>b.id===a.agentId),m={agentId:a.agentId,color:f?.color??"#10b981"};a.linearIssueId?k.has(a.agentId)||(k.add(a.agentId),h.push(m)):a.threadId?.startsWith("objective-chat:")||a.workspaceId?.startsWith("objective-chat:")?j.has(a.agentId)||(j.add(a.agentId),g.push(m)):l.has(a.agentId)||(l.add(a.agentId),i.push(m))}(g.length||h.length||i.length)&&(f[a.id]={objectives:g,linear:h,chat:i})}aQ(f)}catch{}};b();let c=setInterval(b,3e3);return()=>{a=!0,clearInterval(c)}},[U,e]);let[aR,aS]=(0,c.useState)({}),[aT,aU]=(0,c.useState)(new Set),[aV,aW]=(0,c.useState)(new Set),aX=(0,c.useRef)(new Set);(0,c.useEffect)(()=>{Array.from(as).forEach(a=>{aV.has(a)||(aW(b=>new Set(b).add(a)),(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();aS(b=>({...b,[a]:c.teams??[]}))}catch{}})())})},[as,aV]);let[aY,aZ]=(0,c.useState)(null),a$=async()=>{if(!aA&&!aC)return;if(!aE.form.name.trim())return void aE.setFormError("Project name is required");let a=aE.repos.find(a=>a.name.trim()&&!a.path.trim());if(a)return void aE.setFormError(`Local path is required for folder "${a.name}"`);aE.setFormError(null),aE.setIsSubmitting(!0);let b=(0,A.createProjectPayload)(aE.form,aE.repos);aC?await W?.(aC.id,b):await V?.(b,aA?.threadId),aE.setIsSubmitting(!1),aB(null),aD(null)};(0,c.useEffect)(()=>{ar(!0)},[]),(0,c.useEffect)(()=>{let a=!1;async function b(){if(aN?.repoId)try{let b=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(aN.repoId)}`),c=(b.ok?await b.json():{note:null}).note;a||aO(a=>a&&a.repoId===aN.repoId?{...a,generatedKnowledge:c?.content?[{id:c.id,content:c.content,created_at:c.updatedAt??c.createdAt}]:[],isLoadingKnowledge:!1}:a)}catch{a||aO(a=>a&&a.repoId===aN.repoId?{...a,generatedKnowledge:[],isLoadingKnowledge:!1}:a)}}return aN?.repoId&&b(),()=>{a=!0}},[aN?.repoId]);let a_=au?U.find(a=>a.id===au.projectId):null,a0=new Set(a_?.agents.map(a=>a.agent_id)??[]),a1=au?e.filter(a=>!a0.has(a.id)):[],a2=a.length>0,a3=!!Q,a4=(0,c.useCallback)(()=>{al&&S?.()},[al,S]),a5=[...a].sort((a,b)=>(a.title??"").localeCompare(b.title??"")),a6=new Map(a.map(a=>[a.id,a])),a7=U.filter(a=>!a.is_default),a8=a7.find(a=>a.id===ac)??a7[0]??null,{connections:a9}=(0,L.useTrackerConnections)(a8?.id??null),ba=ah??{home:!0,threads:!0,terminal:!0,objectives:!1,objectivesIsNew:!1,tracking:!1,teams:!1,folders:!1,scheduledTasks:!1,envVars:!1,notifications:!1};if((0,c.useEffect)(()=>{if(0===a7.length)return;let b=new Map,c=new Set,d=new Map;for(let a of a7){for(let b of a.thread_ids??[])"string"==typeof b&&b.trim()&&c.add(b);for(let c of(0,B.readProjectObjectivesWorkspace)(a.metadata).objectives){let d=c.id.trim();d&&b.set(d,{projectId:a.id,canonicalThreadId:c.threadId?.trim()||`objective-chat:${d}`})}}for(let b of a){let a=b.metadata&&"object"==typeof b.metadata?b.metadata:null,c="objective"===("string"==typeof a?.scope?a.scope:"")||b.id.startsWith("objective-chat:"),e=b.title?.trim().toLowerCase()??"";if(!c||!e)continue;let f=d.get(e)??[];f.push(b),d.set(e,f)}for(let[a,b]of d)d.set(a,[...b].sort((a,b)=>b.updatedAt-a.updatedAt));for(let e of a){let a=e.metadata&&"object"==typeof e.metadata?e.metadata:null,f="string"==typeof a?.scope?a.scope:"",g="string"==typeof a?.objectiveId?a.objectiveId.trim():"",h=e.id.startsWith("objective-chat:")?e.id.slice(15).trim():"",i=g||h,j="objective"===f||!!h,k=e.title?.trim().toLowerCase()??"",l=0===e.messages.length&&e.updatedAt<Date.now()-3e5;if(!j)continue;let m=i?b.get(i):void 0;if(m){if(e.id!==m.canonicalThreadId&&l){let a=`delete:${e.id}`;if(aX.current.has(a))continue;aX.current.add(a),Promise.resolve(F(e.id)).catch(b=>{aX.current.delete(a),console.warn("Failed to delete legacy objective thread",b)});continue}if(!c.has(e.id)){let a=`link:${e.id}`;if(aX.current.has(a))continue;aX.current.add(a),fetch(`/api/projects/${m.projectId}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e.id})}).then(a=>{if(!a.ok)throw Error(`Request failed with status ${a.status}`)}).catch(b=>{aX.current.delete(a),console.warn("Failed to re-link objective thread",b)})}continue}if(!l)continue;let n=k?d.get(k)??[]:[];if(n.length<2||n[0]?.id===e.id)continue;let o=`delete:${e.id}`;aX.current.has(o)||(aX.current.add(o),Promise.resolve(F(e.id)).catch(a=>{aX.current.delete(o),console.warn("Failed to delete orphan objective thread",a)}))}},[a7,F,a]),!function({focusTarget:a,shouldFocus:b}){(0,c.useEffect)(()=>{if(!b||"u"<typeof document)return;let c=a.current;if(!c||c instanceof HTMLButtonElement&&c.disabled)return;let d=document.activeElement;if(!(d&&(c===d||c.contains(d))))try{c.focus({preventScroll:!0})}catch{c.focus()}},[a,b])}({focusTarget:ap,shouldFocus:a3&&!(i&&!a2||R&&a2)&&!a2&&!l}),!a3){if(al)return null;let c=a8?.slug;return(0,b.jsxs)("aside",{id:"workspace-sidebar",className:"workspace-sidebar workspace-sidebar--collapsed","aria-label":"Workspace sidebar",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand",children:(0,b.jsx)("button",{type:"button",onClick:S,className:"workspace-sidebar__brand-trigger border-none outline-none cursor-pointer","aria-label":"Show chats",title:"Show chats",children:(0,b.jsx)(M,{compact:!0})})}),c&&(0,b.jsxs)("nav",{className:"workspace-sidebar__collapsed-rail",children:[(0,b.jsx)(N,{label:"Home",children:(0,b.jsx)(w.default,{href:`/projects/${c}`,className:`workspace-sidebar__rail-icon${"home"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(q,{size:16})})}),(ba.objectives||ba.tracking||ba.scheduledTasks)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),ba.objectives&&(0,b.jsx)(N,{label:"Objectives",children:(0,b.jsx)(w.default,{href:`/projects/${c}/objectives`,className:`workspace-sidebar__rail-icon${"objectives"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(n.Target,{size:16})})}),ba.tracking&&(0,b.jsx)(N,{label:"Task Tracking",children:(0,b.jsx)(w.default,{href:`/projects/${c}/tracking`,className:`workspace-sidebar__rail-icon${"linear"===ad||"tracking"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(K.LinearIcon,{className:"h-4 w-4"})})}),ba.tracking&&(0,b.jsx)(N,{label:"Pull Requests",children:(0,b.jsx)(w.default,{href:`/projects/${c}/prs`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(v,{size:16})})}),ba.scheduledTasks&&(0,b.jsx)(N,{label:"Scheduled Jobs",children:(0,b.jsx)(w.default,{href:`/projects/${c}/automations`,className:`workspace-sidebar__rail-icon${"automations"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(f.Zap,{size:16})})}),(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,b.jsx)(N,{label:"Terminal",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal`,className:`workspace-sidebar__rail-icon${"terminal"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(s.TerminalSquare,{size:16})})}),(0,b.jsx)(N,{label:"Chat",children:(0,b.jsx)("button",{type:"button",className:`workspace-sidebar__rail-icon${"thread"===ad?" workspace-sidebar__rail-icon--active":""}`,onClick:()=>{let b=a5.filter(a=>a8?.thread_ids?.includes(a.id)),c=a8?.thread_ids?.find(b=>a.some(a=>a.id===b))??b[0]?.id;c&&C(c)},children:(0,b.jsx)(r.MessageSquare,{size:16})})}),(ba.teams||ba.folders||ba.envVars||ba.notifications)&&(0,b.jsx)("div",{className:"workspace-sidebar__rail-separator"}),ba.teams&&(0,b.jsx)(N,{label:"Teams",children:(0,b.jsx)(w.default,{href:`/projects/${c}/teams`,className:`workspace-sidebar__rail-icon${"teams"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(p.Users,{size:16})})}),ba.folders&&(0,b.jsx)(N,{label:"Folders",children:(0,b.jsx)(w.default,{href:`/projects/${c}/folders`,className:`workspace-sidebar__rail-icon${"folders"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(h.FolderGit2,{size:16})})}),ba.envVars&&(0,b.jsx)(N,{label:"Env Variables",children:(0,b.jsx)(w.default,{href:`/projects/${c}/env-vars`,className:`workspace-sidebar__rail-icon${"env-vars"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(t,{size:16})})}),ba.notifications&&(0,b.jsx)(N,{label:"Notifications",children:(0,b.jsx)(w.default,{href:`/projects/${c}/notifications`,className:`workspace-sidebar__rail-icon${"notifications"===ad?" workspace-sidebar__rail-icon--active":""}`,children:(0,b.jsx)(o.Bell,{size:16})})})]}),(0,b.jsxs)("div",{className:"mt-auto p-2 flex flex-col gap-2",children:[an&&c&&(0,b.jsx)(N,{label:"Update available",children:(0,b.jsx)(w.default,{href:`/projects/${c}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"workspace-sidebar__rail-icon",children:(0,b.jsx)(u,{size:16})})}),(0,b.jsx)(N,{label:"Join Discord",children:(0,b.jsx)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"workspace-sidebar__rail-icon",style:{backgroundColor:"#5865F2",color:"white"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]})]})}return(0,b.jsxs)(b.Fragment,{children:[al?(0,b.jsx)("button",{type:"button",className:"workspace-sidebar__backdrop",onClick:S,"aria-label":"Close sidebar"}):null,(0,b.jsxs)("aside",{id:"workspace-sidebar",className:`workspace-sidebar${al?" workspace-sidebar--drawer":""}${al&&am?" workspace-sidebar--drawer-phone":""}`,"aria-label":"Workspace sidebar","aria-busy":i?"true":void 0,"aria-modal":al?"true":void 0,role:al?"dialog":void 0,style:!al&&ae?{width:`${ae}px`,minWidth:`${ae}px`}:void 0,children:[(0,b.jsxs)("div",{className:"workspace-sidebar__brand",children:[(0,b.jsx)("div",{className:"workspace-sidebar__brand-content",children:(0,b.jsx)(M,{})}),S&&(0,b.jsx)("button",{type:"button",onClick:S,"aria-label":"Hide chats",title:"Hide chats",className:"workspace-sidebar__brand-toggle ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-all hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:(0,b.jsx)(j,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,b.jsxs)("div",{className:"workspace-sidebar__content",children:[(0,b.jsx)(O,{projects:a7,activeProjectId:ac,onSelectProject:a=>{ab?.(a),a4()},onCreateProject:()=>{aE.resetForm(),aD(null),aB({})}}),(()=>{if(!a8)return null;let a=a5.filter(a=>a8.thread_ids?.includes(a.id)),c=a8.thread_ids?.find(a=>a6.has(a))??a8.thread_ids?.[0]??a[0]?.id??null,d=a8.id===ac,i=d&&"home"===ad,j=d&&"objectives"===ad,k=d&&"automations"===ad,l=d&&"terminal"===ad,m=d&&"thread"===ad&&c===g,u=d&&"teams"===ad,v=d&&"folders"===ad,x=d&&"env-vars"===ad,y=d&&"notifications"===ad,A=aP[a8.id],B=ba.objectives||ba.scheduledTasks,D=ba.teams||ba.folders||ba.envVars||ba.notifications;return(0,b.jsxs)("nav",{className:"workspace-sidebar__section",children:[(0,b.jsx)("div",{className:"px-2 mt-2 mb-3",children:(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}`,onClick:a4,className:`workspace-sidebar__nav-item ${i?"workspace-sidebar__nav-item--active":""}`,"aria-current":i?"page":void 0,children:[(0,b.jsx)(q,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Home"})]})})}),B&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Automation"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[ba.objectives&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/objectives`,onClick:a4,className:`workspace-sidebar__nav-item ${j?"workspace-sidebar__nav-item--active":""}`,"aria-current":j?"page":void 0,children:[(0,b.jsx)(n.Target,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Objectives"}),ba.objectivesIsNew&&(0,b.jsx)("span",{className:"ml-auto inline-flex items-center rounded-full bg-indigo-500/15 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider text-indigo-500 animate-pulse",children:"NEW"}),!ba.objectivesIsNew&&A?.objectives.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.objectives.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]})}),ba.scheduledTasks&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/automations`,onClick:a4,className:`workspace-sidebar__nav-item ${k?"workspace-sidebar__nav-item--active":""}`,"aria-current":k?"page":void 0,children:[(0,b.jsx)(f.Zap,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Scheduled Jobs"})]})})]})]}),ba.tracking&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Task Tracking"})}),(0,b.jsx)("div",{className:"px-2 flex flex-col gap-0.5",children:(0,b.jsx)(J,{projectSlug:a8.slug,trackerConnections:ai,activeTrackerType:null,isTrackingActive:d&&("linear"===ad||"tracking"===ad),onLinkClick:a4})})]}),(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Tools"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/terminal`,onClick:a4,className:`workspace-sidebar__nav-item ${l?"workspace-sidebar__nav-item--active":""}`,"aria-current":l?"page":void 0,children:[(0,b.jsx)(s.TerminalSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Terminal"})]})}),(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:c?(0,b.jsxs)("button",{type:"button",className:`workspace-sidebar__nav-item ${m?"workspace-sidebar__nav-item--active":""}`,onClick:()=>{C(c),a4()},"aria-current":m?"page":void 0,children:[(0,b.jsx)(r.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"}),A?.chat.length>0&&(0,b.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:A.chat.slice(0,3).map(a=>{let c=e.find(b=>b.id===a.agentId);return(0,b.jsxs)("span",{className:"relative inline-block",title:c?.name,children:[(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(c?.id??a.agentId,16,a.color),alt:c?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,b.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},a.agentId)})})]}):null})]})]}),D&&(0,b.jsxs)("div",{className:"mb-3",children:[(0,b.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,b.jsx)("p",{className:"workspace-sidebar__section-label",children:"Settings"})}),(0,b.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[ba.teams&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/teams`,onClick:a4,className:`workspace-sidebar__nav-item ${u?"workspace-sidebar__nav-item--active":""}`,"aria-current":u?"page":void 0,children:[(0,b.jsx)(p.Users,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Teams"})]})}),ba.folders&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/folders`,onClick:a4,className:`workspace-sidebar__nav-item ${v?"workspace-sidebar__nav-item--active":""}`,"aria-current":v?"page":void 0,children:[(0,b.jsx)(h.FolderGit2,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Folders"})]})}),ba.envVars&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/env-vars`,onClick:a4,className:`workspace-sidebar__nav-item ${x?"workspace-sidebar__nav-item--active":""}`,"aria-current":x?"page":void 0,children:[(0,b.jsx)(t,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Environment Variables"})]})}),ba.notifications&&(0,b.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/notifications`,onClick:a4,className:`workspace-sidebar__nav-item ${y?"workspace-sidebar__nav-item--active":""}`,"aria-current":y?"page":void 0,children:[(0,b.jsx)(o.Bell,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Notifications"})]})})]})]})]})})()]}),(0,b.jsxs)("div",{className:"mt-auto px-3 pb-3 flex flex-col gap-2",children:[an&&a8&&(0,b.jsxs)(w.default,{href:`/projects/${a8.slug}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-sm font-medium transition-colors text-[var(--foreground)] bg-[var(--app-shell-subtle)] hover:bg-[var(--app-shell-border)]",children:[(0,b.jsx)(u,{size:14}),"Update available"]}),(0,b.jsxs)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:a=>a.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:a=>a.currentTarget.style.backgroundColor="#5865F2",children:[(0,b.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,b.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})]}),aq&&aN&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4",onClick:()=>{aN.isSaving||aO(null)},children:(0,b.jsxs)("div",{className:"w-full max-w-lg rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-5 py-4",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:aN.projectName}),(0,b.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--foreground)]",children:aN.repoId?aN.name||"Folder":"Add Folder"})]}),(0,b.jsx)("button",{type:"button",className:"rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--muted-foreground)]",onClick:()=>{aN.isSaving||aO(null)},"aria-label":"Close folder details",disabled:aN.isSaving,children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"space-y-4 px-5 py-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:aN.name,onChange:a=>aO(b=>b?{...b,name:a.target.value,error:null}:b),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",disabled:aN.isSaving,placeholder:"e.g. Frontend, API Docs, Design System"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:aN.path,onChange:a=>aO(b=>b?{...b,path:a.target.value,error:null}:b),className:"flex-1 rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 font-mono text-xs text-[var(--foreground)]",disabled:aN.isSaving,placeholder:"Local path to folder"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",disabled:aN.isSaving,onClick:async()=>{try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&aO(a=>a?{...a,path:b.path,error:null}:a)}catch{}},children:"Browse"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Notes"}),(0,b.jsx)("textarea",{value:aN.notes,onChange:a=>aO(b=>b?{...b,notes:a.target.value,error:null}:b),className:"min-h-28 w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-3 text-sm text-[var(--foreground)] whitespace-pre-wrap",disabled:aN.isSaving,placeholder:"Coding conventions, deploy steps, doc standards, ownership rules..."})]}),aN.repoId?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Living Note"}),aN.isLoadingKnowledge?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading note…"}):aN.generatedKnowledge.length>0?(0,b.jsx)("div",{className:"space-y-2",children:aN.generatedKnowledge.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,b.jsx)("div",{children:a.content}),a.created_at?(0,b.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(a.created_at).toLocaleString()}):null]},a.id))}):(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No note yet."})]}):null,aN.error?(0,b.jsx)("p",{className:"text-xs text-red-600",children:aN.error}):null,(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] pt-4",children:[(0,b.jsx)("button",{type:"button",className:"rounded-lg px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",onClick:()=>aO(null),disabled:aN.isSaving,children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"rounded-lg bg-[var(--foreground)] px-3 py-2 text-sm font-medium text-[var(--card-bg)] transition-colors hover:bg-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-60",disabled:aN.isSaving||!W,onClick:async()=>{let a=U.find(a=>a.id===aN.projectId);if(!a)return void aO(a=>a?{...a,error:"Project not found."}:a);let b=aN.name.trim(),c=aN.path.trim();if(!b)return void aO(a=>a?{...a,error:"Folder name is required."}:a);if(!c)return void aO(a=>a?{...a,error:"Folder path is required."}:a);aO(a=>a?{...a,isSaving:!0,error:null}:a);try{let d=aN.repoId?a.repos.map(a=>a.id===aN.repoId?{id:a.id,name:b,path:c,git_url:aN.gitUrl.trim()||void 0,notes:aN.notes.trim()||void 0}:{id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes}):[...a.repos.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes})),{name:b,path:c,git_url:aN.gitUrl.trim()||void 0,notes:aN.notes.trim()||void 0}];await W?.(a.id,{repos:d}),aO(null)}catch(a){aO(b=>b?{...b,isSaving:!1,error:a instanceof Error?a.message:"Failed to save folder details."}:b)}},children:aN.isSaving?"Saving...":aN.repoId?"Save":"Add Folder"})]})]})]})}),document.body),aq&&au&&!ay&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>av(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",a_?.name??"project"]}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>av(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,b.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors border-b border-[var(--border)]",onClick:()=>az(!0),children:[(0,b.jsx)(k.Plus,{size:14,className:"text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===a1.length?(0,b.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"All agents are already in this project"}):a1.map(a=>{let c=aw.has(a.id);return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${c?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{ax(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},children:[(0,b.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${c?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--border)]"}`,children:c&&(0,b.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,b.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,b.jsx)("img",{src:(0,z.agentAvatarUrl)(a.id,24,a.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,b.jsx)("div",{className:"truncate font-medium text-xs",children:a.name}),(0,b.jsx)("div",{className:"truncate text-[11px] text-[var(--muted-foreground)]",children:a.model})]})]},a.id)})]}),a1.length>0&&(0,b.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>av(null),children:"Cancel"}),(0,b.jsxs)("button",{type:"button",disabled:0===aw.size,className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let a of aw)Y?.(au.projectId,a);av(null)},children:["Add ",aw.size>0?`(${aw.size})`:""]})]})]})}),document.body),aq&&ay&&(0,d.createPortal)((0,b.jsx)(z.AgentForm,{title:"Create new agent",initial:{name:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",projects:U?.filter(a=>!a.is_default).map(b=>{let c=(b.thread_ids??[]).map(b=>a.find(a=>a.id===b)?.title?.trim()).filter(Boolean).join(", ")||"No chat";return{id:b.id,name:b.name,label:`${c} › ${b.name}`}}),initialProjectIds:au?[au.projectId]:[],onSubmit:async(a,b)=>{let c=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],d=c[e.length%c.length],f=a.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g=b?.[0],h=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:f,name:a.name,provider:a.provider,model:a.model,color:a.color??d,...a.role?{role:a.role}:{},...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[],...g?{projectId:g}:{}})});if(h.ok){let a=await h.json().catch(()=>({})),c="string"==typeof a?.id&&a.id.trim()?a.id.trim():f;for(let a of(b??[]).slice(1))Y?.(a,c);az(!1),av(null)}},onCancel:()=>{az(!1)}}),document.body),aq&&aF&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aG(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aF.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aG(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("form",{className:"px-4 py-4 flex flex-col gap-3",onSubmit:a=>{a.preventDefault();let b=new FormData(a.currentTarget),c=b.get("value")?.trim();c&&(aF.onSubmit(c),aG(null))},children:[(0,b.jsx)("input",{ref:aH,name:"value",type:"text",defaultValue:aF.defaultValue,placeholder:aF.placeholder,className:"w-full px-3 py-2 text-sm border border-[var(--border)] rounded-lg outline-none focus:border-[var(--border)] focus:ring-1 focus:ring-[var(--border)] transition-all"}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aG(null),children:"Cancel"}),(0,b.jsx)("button",{type:"submit",className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] transition-colors",children:aF.defaultValue?"Save":"Create"})]})]})]})}),document.body),aq&&aI&&(0,d.createPortal)((0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>aJ(null),children:(0,b.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:aI.title}),(0,b.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>aJ(null),children:(0,b.jsx)(m.X,{size:16})})]}),(0,b.jsxs)("div",{className:"px-4 py-4 flex flex-col gap-4",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:aI.message}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>aJ(null),children:"Cancel"}),(0,b.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors",onClick:()=>{aI.onConfirm(),aJ(null)},children:"Delete"})]})]})]})}),document.body),aq&&(aA||aC)&&(0,d.createPortal)((0,b.jsx)(A.default,{isOpen:!0,onClose:()=>{aE.resetForm(),aB(null),aD(null)},onSubmit:()=>void a$(),editingProject:aC,form:aE.form,repos:aE.repos,isSubmitting:aE.isSubmitting,formError:aE.formError,onFieldChange:(a,b)=>aE.setForm(c=>({...c,[a]:b})),onRepoChange:aE.handleRepoChange,onAddRepo:aE.addRepo,onRemoveRepo:aE.removeRepo}),document.body),aq&&aM&&(0,d.createPortal)((aj=U.filter(a=>a.agents.some(a=>a.agent_id===aM.id)),ak=U.filter(a=>!a.agents.some(a=>a.agent_id===aM.id)),(0,b.jsx)(z.AgentForm,{title:"Edit agent",initial:{name:aM.name,role:aM.role||"",provider:aM.provider,model:aM.model||"",identity:aM.identity||"",color:aM.color,skills:aM.skills||[],skillBindings:aM.skillBindings||[]},agentId:aM.id,submitLabel:"Save",projectMemberships:{current:aj.map(a=>({id:a.id,name:a.name,is_default:!!a.is_default})),available:ak.map(a=>({id:a.id,name:a.name}))},onAddToProject:Y?a=>Y(a,aM.id):void 0,onRemoveFromProject:Z?a=>Z(a,aM.id):void 0,onSubmit:async a=>{aa&&await aa({...aM,name:a.name,role:a.role||void 0,provider:a.provider,model:a.model,color:a.color??aM.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]}),aL(null)},onCancel:()=>aL(null)})),document.body),af&&!al&&(0,b.jsx)("div",{className:"absolute right-0 top-0 bottom-0 z-20 w-1 cursor-col-resize group",onMouseDown:a=>{a.preventDefault(),ao.current=!0;let b=a.clientX,c=ae??368;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let d=a=>{af(Math.max(200,Math.min(600,c+a.clientX-b)))},e=()=>{ao.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",e)},children:(0,b.jsx)("div",{className:"absolute inset-y-0 right-0 w-1 transition-colors hover:bg-[var(--primary)]/40 group-hover:bg-[var(--primary)]/40"})})]})]})}a.s(["WorkspaceSidebar",()=>P],550158)},111013,a=>{"use strict";var b=a.i(786220),c=a.i(516909),d=a.i(870630);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(a||g.get("thread")||"").trim()||null,i=(0,b.useRef)(!0),[j,k]=(0,b.useState)([]),[l,m]=(0,b.useState)(null),[n,o]=(0,b.useState)(!0),[p,q]=(0,b.useState)(!0),[r,s]=(0,b.useState)(!1),[t,u]=(0,b.useState)(null),[v,w]=(0,b.useState)(null),x=(0,b.useRef)(!1),y=(0,b.useCallback)(a=>{m(a)},[]);(0,b.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]),(0,b.useEffect)(()=>{let a=!1;return(async()=>{try{var b;let c,g=await d.threadService.listThreads();if(h&&!g.some(a=>a.id===h)){let a=await d.threadService.createThread({id:h});g=f([...g.filter(b=>b.id!==a.id),a])}if(a||!i.current)return;k(g);let j=h||null,{threadId:l,shouldClearSavedId:n,restoredFromStorage:o}=(b=g,c=b[0]?.id??null,j?b.some(a=>a.id===j)?{threadId:j,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:c,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:c,shouldClearSavedId:!1,restoredFromStorage:!1});n&&e(),x.current||(x.current=!0),o&&l?y(l):l?m(a=>a??l):m(null)}catch(a){console.error("Failed to load threads",a)}finally{i.current&&(o(!1),q(!1))}})(),()=>{a=!0}},[h,y]),(0,b.useEffect)(()=>{x.current&&(l||e())},[l]);let z=(0,b.useCallback)(async a=>{s(!0);try{let b=await d.threadService.createThread(a);if(!i.current)return b;return k(a=>f([...a.filter(a=>a.id!==b.id),b])),m(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{i.current&&s(!1)}},[]),A=(0,b.useCallback)(async a=>{if(a){u(a);try{if(await d.threadService.deleteThread(a),!i.current)return;let b=[];k(c=>b=f(c.filter(b=>b.id!==a))),m(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{i.current&&u(null)}}},[]),B=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){w(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!i.current)return;k(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{i.current&&w(a=>a===c?null:a)}}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),E=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!i.current)return;k(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),G=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!i.current)return;k(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),H=null!==l&&t===l;return{threads:j,activeThreadId:l,selectThread:y,createThread:z,deleteThread:A,isLoading:n,isRestoringActiveThread:p,isCreating:r,deletingThreadId:t,renamingThreadId:v,isDeletingActiveThread:H,updateThreadMessages:C,renameThread:B,updateThreadStatus:D,updateThreadOutcomeNote:E,updateMessageThreadStatus:F,updateMessageOutcomeNote:G}}a.s(["useThreadState",()=>g],111013)},455106,a=>{"use strict";let b={threadSidebarVisible:!1};function c(){return({...b}).threadSidebarVisible}function d(a){}a.s(["loadWorkspaceSidebarVisible",()=>c,"persistWorkspaceSidebarVisible",()=>d])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_988d29c0._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[940795,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(197180),e=a.i(516909),f=a.i(756490),g=a.i(517259),h=a.i(349692),i=a.i(667597),j=a.i(353532),k=a.i(697183),l=a.i(985339),m=a.i(824179),n=a.i(66456),o=a.i(599086),p=a.i(830284),q=a.i(319405),r=a.i(766412),s=a.i(8e4);function t({params:a}){let{slug:t,teamId:u}=(0,c.use)(a),v=(0,e.useRouter)(),{projects:w}=(0,p.useProjectsWithAgents)(),x=w.find(a=>a.slug===t),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(!0),[E,F]=(0,c.useState)(null),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(""),[K,L]=(0,c.useState)(!1),M=(0,c.useRef)(null),[N,O]=(0,c.useState)(!1),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)(null),[T,U]=(0,c.useState)(!1),[V,W]=(0,c.useState)("existing"),[X,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(null),[_,aa]=(0,c.useState)(!1),[ab,ac]=(0,c.useState)(null),[ad,ae]=(0,c.useState)(null),af=(0,c.useCallback)(async()=>{if(x){D(!0),F(null);try{let a=await fetch(`/api/projects/${x.id}/teams/${u}`);if(!a.ok)throw Error(`Failed to load team (${a.status})`);let b=await a.json();z(b.team),J(b.team.name)}catch(a){F(a instanceof Error?a.message:"Unknown error")}finally{D(!1)}}},[x,u]),ag=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();B(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{af(),ag()},[af,ag]);let[ah,ai]=(0,c.useState)(null);(0,c.useEffect)(()=>{ai(document.getElementById("topbar-breadcrumb"))},[]),(0,c.useEffect)(()=>{G&&M.current&&(M.current.focus(),M.current.select())},[G]);let aj=(0,c.useMemo)(()=>new Map(A.map(a=>[a.id,a])),[A]),ak=(0,c.useMemo)(()=>(0,q.listAgentPresets)(),[]),al=(0,c.useMemo)(()=>ak.map(a=>({id:a.id,label:a.name,meta:a.skillProfileId})),[ak]),am=(0,c.useMemo)(()=>ak.map(a=>({id:a.id,label:a.name,meta:a.skillProfileId})),[ak]),an=(0,c.useMemo)(()=>new Set(y?.agents.map(a=>a.agent_id)??[]),[y]),ao=(0,c.useMemo)(()=>x?x.agents.filter(a=>!an.has(a.agent_id)).map(a=>{let b=aj.get(a.agent_id);return{id:a.agent_id,name:b?.name??a.agent_id.slice(0,8),provider:b?.provider??"claude",model:b?.model??null,color:b?.color??"#6B7280"}}):[],[x,an,aj]),ap=(0,c.useMemo)(()=>ao.map(a=>({id:a.id,label:a.name,meta:a.provider})),[ao]);async function aq(){if(!y||!x||I.trim()===y.name)return void H(!1);if(!I.trim()){J(y.name),H(!1);return}L(!0);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:I.trim()})})).ok)throw Error("Failed to update team name");z(a=>a?{...a,name:I.trim()}:a)}catch{y&&J(y.name)}finally{L(!1),H(!1)}}async function ar(a){if(x){S(a);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}/agents?agentId=${encodeURIComponent(a)}`,{method:"DELETE"})).ok)throw Error("Failed to remove agent");z(b=>b?{...b,agents:b.agents.filter(b=>b.agent_id!==a)}:b)}catch{}finally{S(null)}}}async function as(){if(x){Q(!0);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}`,{method:"DELETE"})).ok)throw Error("Failed to delete team");v.push(`/projects/${t}/teams`)}catch{Q(!1),O(!1)}}}async function at(){if(x&&Z){aa(!0);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:Z,roleKey:"member"})})).ok)throw Error("Failed to add agent");$(null),U(!1),await af()}catch{}finally{aa(!1)}}}async function au(){if(x&&X){aa(!0);try{let a=ak.find(a=>a.id===X);if(!a)return;let b=(0,q.getAgentPresetBindings)(a),c=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a.name,role:a.role,provider:"claude",model:null,identity:a.identity,skills:b.map(a=>({file:`${a.repo}/${a.skillId}`,...a.condition?{condition:a.condition}:{}}))})});if(!c.ok)throw Error("Failed to create agent");let d=await c.json(),e=d.id??d.participant?.id;await fetch(`/api/projects/${x.id}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e})}),await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e,roleKey:a.id})}),Y(null),U(!1),await Promise.all([af(),ag()])}catch{}finally{aa(!1)}}}if(!x||C)return(0,b.jsxs)("div",{className:"flex items-center justify-center h-full text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.Loader2,{className:"w-5 h-5 animate-spin mr-2"}),"Loading team..."]});if(E||!y)return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-3 text-[var(--muted-foreground)]",children:[(0,b.jsx)(o.AlertTriangle,{className:"w-5 h-5 text-[var(--destructive)]"}),(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:E??"Team not found"}),(0,b.jsx)("button",{onClick:af,className:"text-xs underline hover:text-[var(--foreground)]",children:"Retry"})]});let av=y.metadata?.variantId;return(0,b.jsxs)("div",{className:"h-full overflow-y-auto",children:[ah&&(0,d.createPortal)((0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("span",{className:"text-xs text-[var(--foreground)]",children:y.name})]}),ah),(0,b.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-8 space-y-8",children:[(0,b.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,b.jsxs)("div",{className:"min-w-0",children:[G?(0,b.jsx)("input",{ref:M,value:I,onChange:a=>J(a.target.value),onBlur:aq,onKeyDown:a=>{"Enter"===a.key&&aq(),"Escape"===a.key&&(J(y.name),H(!1))},disabled:K,className:"input text-lg font-bold w-full"}):(0,b.jsxs)("button",{onClick:()=>H(!0),className:"flex items-center gap-2 group text-left",children:[(0,b.jsx)("h1",{className:"text-lg font-bold truncate",children:y.name}),(0,b.jsx)(i.Pencil,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[y.template_id&&(0,b.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wider px-2 py-0.5 rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)]",children:y.template_id}),av&&(0,b.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wider px-2 py-0.5 rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)]",children:av}),(0,b.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[y.agents.length," agent",1!==y.agents.length?"s":""]})]})]})}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider",children:["Agents (",y.agents.length,")"]}),(0,b.jsxs)("button",{onClick:()=>{U(!T),W("existing"),$(null),Y(null)},className:"flex items-center gap-1.5 text-xs font-medium px-3 py-1.5 rounded-xl border border-[var(--border)] hover:bg-[var(--muted)]/50 transition-colors",children:[(0,b.jsx)(j.Plus,{className:"w-3.5 h-3.5"}),"Add Agent"]})]}),T&&(0,b.jsxs)("div",{className:"mb-4 p-4 rounded-2xl space-y-4",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:()=>W("existing"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"existing"===V?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"Existing Agent"}),(0,b.jsx)("button",{onClick:()=>W("preset"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"preset"===V?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"From Preset"})]}),"existing"===V?(0,b.jsxs)("div",{className:"space-y-3",children:[0===ap.length?(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"No unassigned agents in this project."}):(0,b.jsx)(r.default,{options:ap,value:Z,onChange:$,placeholder:"Select an agent..."}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:at,disabled:!Z||_,className:"btn-primary px-4 py-1.5 text-xs flex items-center gap-1.5",children:[_?(0,b.jsx)(h.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,b.jsx)(j.Plus,{className:"w-3.5 h-3.5"}),"Add"]}),(0,b.jsx)("button",{onClick:()=>U(!1),className:"text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(r.default,{options:al,value:X,onChange:Y,placeholder:"Select a role preset..."}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:au,disabled:!X||_,className:"btn-primary px-4 py-1.5 text-xs flex items-center gap-1.5",children:[_?(0,b.jsx)(h.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,b.jsx)(j.Plus,{className:"w-3.5 h-3.5"}),"Create & Add"]}),(0,b.jsx)("button",{onClick:()=>U(!1),className:"text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Cancel"})]})]})]}),0===y.agents.length?(0,b.jsxs)("div",{className:"rounded-2xl p-8 text-center",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,b.jsx)(l.Users,{className:"w-8 h-8 mx-auto mb-3 text-[var(--muted-foreground)]"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No agents in this team yet"})]}):(0,b.jsx)("div",{className:"space-y-2",children:y.agents.sort((a,b)=>a.routing_order-b.routing_order).map(a=>{let c=aj.get(a.agent_id),d=c?.name??a.agent_id.slice(0,8),e=c?.color??"#6B7280",j=c?.provider??"claude",k=c?.model??null,l=c?.skills?.length??0;return(0,b.jsx)("div",{className:"group rounded-2xl p-4 transition-colors hover:bg-[var(--muted)]/60 cursor-pointer",style:{background:"var(--card-bg)",border:"1px solid var(--border)"},onClick:()=>v.push(`/projects/${t}/teams/${u}/agents/${a.agent_id}`),children:(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("img",{src:(0,s.agentAvatarUrl)(a.agent_id,40,e),alt:d,className:"w-10 h-10 rounded-xl flex-shrink-0"}),(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:"text-sm font-medium truncate",children:d}),(0,b.jsxs)("span",{className:"text-[10px] font-mono text-[var(--muted-foreground)]",children:["#",a.routing_order]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[ab===a.agent_id?(0,b.jsx)("div",{className:"w-36",onClick:a=>a.stopPropagation(),children:(0,b.jsx)(r.default,{options:am,value:a.role_key,onChange:async b=>{x&&(await fetch(`/api/projects/${x.id}/teams/${u}/agents?agentId=${encodeURIComponent(a.agent_id)}`,{method:"DELETE"}),await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a.agent_id,roleKey:b,routingOrder:a.routing_order})}),ac(null),await af())},placeholder:"Role..."})}):(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),ac(a.agent_id)},className:"text-[10px] px-1.5 py-0.5 rounded-md bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)] hover:border-[var(--primary)] transition-colors",title:"Click to change role",children:a.role_key}),(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[(0,b.jsx)(g.Cpu,{className:"w-3 h-3"}),j,k&&(0,b.jsxs)("span",{className:"font-mono",children:["/ ",k]})]}),l>0&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[(0,b.jsx)(n.Zap,{className:"w-3 h-3"}),l]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0",onClick:a=>a.stopPropagation(),children:[(0,b.jsx)("button",{onClick:()=>ae(a.agent_id),className:"p-1.5 rounded-lg hover:bg-[var(--muted)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",title:"Edit agent",children:(0,b.jsx)(i.Pencil,{className:"w-3.5 h-3.5"})}),(0,b.jsx)("button",{onClick:()=>ar(a.agent_id),disabled:R===a.agent_id,className:"p-1.5 rounded-lg hover:bg-red-500/15 text-[var(--muted-foreground)] hover:text-red-400 transition-colors",title:"Remove from team",children:R===a.agent_id?(0,b.jsx)(h.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"})})]}),(0,b.jsx)(f.ChevronRight,{className:"w-4 h-4 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]})},a.agent_id)})})]}),(0,b.jsxs)("div",{className:"pt-6 border-t",style:{borderColor:"var(--border)"},children:[(0,b.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Danger Zone"}),N?(0,b.jsxs)("div",{className:"flex items-center gap-3 p-4 rounded-2xl bg-red-500/5 border border-red-500/20",children:[(0,b.jsx)(o.AlertTriangle,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),(0,b.jsx)("span",{className:"text-sm text-red-400 flex-1",children:"Delete this team? This cannot be undone."}),(0,b.jsx)("button",{onClick:as,disabled:P,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-red-600 hover:bg-red-700 text-white transition-colors disabled:opacity-50",children:P?"Deleting...":"Confirm Delete"}),(0,b.jsx)("button",{onClick:()=>O(!1),disabled:P,className:"px-3 py-1.5 text-xs rounded-lg border border-[var(--border)] hover:bg-[var(--muted)]/50 transition-colors",children:"Cancel"})]}):(0,b.jsxs)("button",{onClick:()=>O(!0),className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] hover:text-red-400 transition-colors",children:[(0,b.jsx)(k.Trash2,{className:"w-3.5 h-3.5"}),"Delete Team"]})]})]}),ad&&aj.get(ad)&&(0,b.jsx)(s.AgentForm,{title:"Edit agent",initial:{name:aj.get(ad).name,role:aj.get(ad).role||"",provider:aj.get(ad).provider,model:aj.get(ad).model||"",identity:aj.get(ad).identity||"",color:aj.get(ad).color,skills:aj.get(ad).skills||[],skillBindings:aj.get(ad).skillBindings||[]},agentId:ad,submitLabel:"Save",onSubmit:async a=>{await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:ad,name:a.name,role:a.role||null,provider:a.provider,model:a.model,color:a.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]})}),ae(null),await ag()},onCancel:()=>ae(null)})]})}a.s(["default",()=>t])}];
|
|
1
|
+
module.exports=[940795,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(197180),e=a.i(516909),f=a.i(756490),g=a.i(517259),h=a.i(349692),i=a.i(667597),j=a.i(353532),k=a.i(697183),l=a.i(985339),m=a.i(824179),n=a.i(66456),o=a.i(599086),p=a.i(830284),q=a.i(319405),r=a.i(766412),s=a.i(8e4);function t({params:a}){let{slug:t,teamId:u}=(0,c.use)(a),v=(0,e.useRouter)(),{projects:w}=(0,p.useProjectsWithAgents)(),x=w.find(a=>a.slug===t),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(!0),[E,F]=(0,c.useState)(null),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(""),[K,L]=(0,c.useState)(!1),M=(0,c.useRef)(null),[N,O]=(0,c.useState)(!1),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)(null),[T,U]=(0,c.useState)(!1),[V,W]=(0,c.useState)("existing"),[X,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(null),[_,aa]=(0,c.useState)(!1),[ab,ac]=(0,c.useState)(null),[ad,ae]=(0,c.useState)(null),af=(0,c.useCallback)(async()=>{if(x){D(!0),F(null);try{let a=await fetch(`/api/projects/${x.id}/teams/${u}`);if(!a.ok)throw Error(`Failed to load team (${a.status})`);let b=await a.json();z(b.team),J(b.team.name)}catch(a){F(a instanceof Error?a.message:"Unknown error")}finally{D(!1)}}},[x,u]),ag=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();B(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{af(),ag()},[af,ag]);let[ah,ai]=(0,c.useState)(null);(0,c.useEffect)(()=>{ai(document.getElementById("topbar-breadcrumb"))},[]),(0,c.useEffect)(()=>{G&&M.current&&(M.current.focus(),M.current.select())},[G]);let aj=(0,c.useMemo)(()=>new Map(A.map(a=>[a.id,a])),[A]),ak=(0,c.useMemo)(()=>(0,q.listAgentPresets)(),[]),al=(0,c.useMemo)(()=>ak.map(a=>({id:a.id,label:a.name,meta:a.skillProfileId})),[ak]),am=(0,c.useMemo)(()=>ak.map(a=>({id:a.id,label:a.name,meta:a.skillProfileId})),[ak]),an=(0,c.useMemo)(()=>new Set(y?.agents.map(a=>a.agent_id)??[]),[y]),ao=(0,c.useMemo)(()=>x?x.agents.filter(a=>!an.has(a.agent_id)).map(a=>{let b=aj.get(a.agent_id);return{id:a.agent_id,name:b?.name??a.agent_id.slice(0,8),provider:b?.provider??"claude",model:b?.model??null,color:b?.color??"#6B7280"}}):[],[x,an,aj]),ap=(0,c.useMemo)(()=>ao.map(a=>({id:a.id,label:a.name,meta:a.provider})),[ao]);async function aq(){if(!y||!x||I.trim()===y.name)return void H(!1);if(!I.trim()){J(y.name),H(!1);return}L(!0);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:I.trim()})})).ok)throw Error("Failed to update team name");z(a=>a?{...a,name:I.trim()}:a)}catch{y&&J(y.name)}finally{L(!1),H(!1)}}async function ar(a){if(x){S(a);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}/agents?agentId=${encodeURIComponent(a)}`,{method:"DELETE"})).ok)throw Error("Failed to remove agent");z(b=>b?{...b,agents:b.agents.filter(b=>b.agent_id!==a)}:b)}catch{}finally{S(null)}}}async function as(){if(x){Q(!0);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}`,{method:"DELETE"})).ok)throw Error("Failed to delete team");v.push(`/projects/${t}/teams`)}catch{Q(!1),O(!1)}}}async function at(){if(x&&Z){aa(!0);try{if(!(await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:Z,roleKey:"member"})})).ok)throw Error("Failed to add agent");$(null),U(!1),await af()}catch{}finally{aa(!1)}}}async function au(){if(x&&X){aa(!0);try{let a=ak.find(a=>a.id===X);if(!a)return;let b=(0,q.getAgentPresetBindings)(a),c=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a.name,role:a.role,provider:"claude",model:null,identity:a.identity,skills:b.map(a=>({file:`${a.repo}/${a.skillId}`,...a.condition?{condition:a.condition}:{}}))})});if(!c.ok)throw Error("Failed to create agent");let d=await c.json(),e=d.id??d.participant?.id;await fetch(`/api/projects/${x.id}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e})}),await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e,roleKey:a.id})}),Y(null),U(!1),await Promise.all([af(),ag()])}catch{}finally{aa(!1)}}}if(!x||C)return(0,b.jsxs)("div",{className:"flex items-center justify-center h-full text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.Loader2,{className:"w-5 h-5 animate-spin mr-2"}),"Loading team..."]});if(E||!y)return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-3 text-[var(--muted-foreground)]",children:[(0,b.jsx)(o.AlertTriangle,{className:"w-5 h-5 text-[var(--destructive)]"}),(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:E??"Team not found"}),(0,b.jsx)("button",{onClick:af,className:"text-xs underline hover:text-[var(--foreground)]",children:"Retry"})]});let av=y.metadata?.variantId;return(0,b.jsxs)("div",{className:"h-full overflow-y-auto",children:[ah&&(0,d.createPortal)((0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("span",{className:"text-xs text-[var(--foreground)]",children:y.name})]}),ah),(0,b.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-8 space-y-8",children:[(0,b.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,b.jsxs)("div",{className:"min-w-0",children:[G?(0,b.jsx)("input",{ref:M,value:I,onChange:a=>J(a.target.value),onBlur:aq,onKeyDown:a=>{"Enter"===a.key&&aq(),"Escape"===a.key&&(J(y.name),H(!1))},disabled:K,className:"input text-lg font-bold w-full"}):(0,b.jsxs)("button",{onClick:()=>H(!0),className:"flex items-center gap-2 group text-left",children:[(0,b.jsx)("h1",{className:"text-lg font-bold truncate",children:y.name}),(0,b.jsx)(i.Pencil,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[y.template_id&&(0,b.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wider px-2 py-0.5 rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)]",children:y.template_id}),av&&(0,b.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wider px-2 py-0.5 rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)]",children:av}),(0,b.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[y.agents.length," agent",1!==y.agents.length?"s":""]})]})]})}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider",children:["Agents (",y.agents.length,")"]}),(0,b.jsxs)("button",{onClick:()=>{U(!T),W("existing"),$(null),Y(null)},className:"flex items-center gap-1.5 text-xs font-medium px-3 py-1.5 rounded-xl border border-[var(--border)] hover:bg-[var(--muted)]/50 transition-colors",children:[(0,b.jsx)(j.Plus,{className:"w-3.5 h-3.5"}),"Add Agent"]})]}),T&&(0,b.jsxs)("div",{className:"mb-4 p-4 rounded-2xl space-y-4",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:()=>W("existing"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"existing"===V?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"Existing Agent"}),(0,b.jsx)("button",{onClick:()=>W("preset"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"preset"===V?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"From Preset"}),(0,b.jsx)("button",{onClick:()=>W("scratch"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"scratch"===V?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"From Scratch"})]}),"scratch"===V?(0,b.jsx)(s.AgentForm,{title:"Create agent",initial:{name:"",role:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",onSubmit:async a=>{if(x){aa(!0);try{let b=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a.name,role:a.role||null,provider:a.provider,model:a.model||null,color:a.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]})});if(!b.ok)throw Error("Failed to create agent");let c=await b.json(),d=c.id??c.participant?.id;await fetch(`/api/projects/${x.id}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:d})}),await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:d,roleKey:"member"})}),U(!1),await Promise.all([af(),ag()])}catch{}finally{aa(!1)}}},onCancel:()=>U(!1)}):"existing"===V?(0,b.jsxs)("div",{className:"space-y-3",children:[0===ap.length?(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"No unassigned agents in this project."}):(0,b.jsx)(r.default,{options:ap,value:Z,onChange:$,placeholder:"Select an agent..."}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:at,disabled:!Z||_,className:"btn-primary px-4 py-1.5 text-xs flex items-center gap-1.5",children:[_?(0,b.jsx)(h.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,b.jsx)(j.Plus,{className:"w-3.5 h-3.5"}),"Add"]}),(0,b.jsx)("button",{onClick:()=>U(!1),className:"text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(r.default,{options:al,value:X,onChange:Y,placeholder:"Select a role preset..."}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:au,disabled:!X||_,className:"btn-primary px-4 py-1.5 text-xs flex items-center gap-1.5",children:[_?(0,b.jsx)(h.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,b.jsx)(j.Plus,{className:"w-3.5 h-3.5"}),"Create & Add"]}),(0,b.jsx)("button",{onClick:()=>U(!1),className:"text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Cancel"})]})]})]}),0===y.agents.length?(0,b.jsxs)("div",{className:"rounded-2xl p-8 text-center",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,b.jsx)(l.Users,{className:"w-8 h-8 mx-auto mb-3 text-[var(--muted-foreground)]"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No agents in this team yet"})]}):(0,b.jsx)("div",{className:"space-y-2",children:y.agents.sort((a,b)=>a.routing_order-b.routing_order).map(a=>{let c=aj.get(a.agent_id),d=c?.name??a.agent_id.slice(0,8),e=c?.color??"#6B7280",j=c?.provider??"claude",k=c?.model??null,l=c?.skills?.length??0;return(0,b.jsx)("div",{className:"group rounded-2xl p-4 transition-colors hover:bg-[var(--muted)]/60 cursor-pointer",style:{background:"var(--card-bg)",border:"1px solid var(--border)"},onClick:()=>v.push(`/projects/${t}/teams/${u}/agents/${a.agent_id}`),children:(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("img",{src:(0,s.agentAvatarUrl)(a.agent_id,40,e),alt:d,className:"w-10 h-10 rounded-xl flex-shrink-0"}),(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:"text-sm font-medium truncate",children:d}),(0,b.jsxs)("span",{className:"text-[10px] font-mono text-[var(--muted-foreground)]",children:["#",a.routing_order]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[ab===a.agent_id?(0,b.jsx)("div",{className:"w-36",onClick:a=>a.stopPropagation(),children:(0,b.jsx)(r.default,{options:am,value:a.role_key,onChange:async b=>{x&&(await fetch(`/api/projects/${x.id}/teams/${u}/agents?agentId=${encodeURIComponent(a.agent_id)}`,{method:"DELETE"}),await fetch(`/api/projects/${x.id}/teams/${u}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a.agent_id,roleKey:b,routingOrder:a.routing_order})}),ac(null),await af())},placeholder:"Role..."})}):(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),ac(a.agent_id)},className:"text-[10px] px-1.5 py-0.5 rounded-md bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)] hover:border-[var(--primary)] transition-colors",title:"Click to change role",children:a.role_key}),(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[(0,b.jsx)(g.Cpu,{className:"w-3 h-3"}),j,k&&(0,b.jsxs)("span",{className:"font-mono",children:["/ ",k]})]}),l>0&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[(0,b.jsx)(n.Zap,{className:"w-3 h-3"}),l]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0",onClick:a=>a.stopPropagation(),children:[(0,b.jsx)("button",{onClick:()=>ae(a.agent_id),className:"p-1.5 rounded-lg hover:bg-[var(--muted)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",title:"Edit agent",children:(0,b.jsx)(i.Pencil,{className:"w-3.5 h-3.5"})}),(0,b.jsx)("button",{onClick:()=>ar(a.agent_id),disabled:R===a.agent_id,className:"p-1.5 rounded-lg hover:bg-red-500/15 text-[var(--muted-foreground)] hover:text-red-400 transition-colors",title:"Remove from team",children:R===a.agent_id?(0,b.jsx)(h.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"})})]}),(0,b.jsx)(f.ChevronRight,{className:"w-4 h-4 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]})},a.agent_id)})})]}),(0,b.jsxs)("div",{className:"pt-6 border-t",style:{borderColor:"var(--border)"},children:[(0,b.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Danger Zone"}),N?(0,b.jsxs)("div",{className:"flex items-center gap-3 p-4 rounded-2xl bg-red-500/5 border border-red-500/20",children:[(0,b.jsx)(o.AlertTriangle,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),(0,b.jsx)("span",{className:"text-sm text-red-400 flex-1",children:"Delete this team? This cannot be undone."}),(0,b.jsx)("button",{onClick:as,disabled:P,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-red-600 hover:bg-red-700 text-white transition-colors disabled:opacity-50",children:P?"Deleting...":"Confirm Delete"}),(0,b.jsx)("button",{onClick:()=>O(!1),disabled:P,className:"px-3 py-1.5 text-xs rounded-lg border border-[var(--border)] hover:bg-[var(--muted)]/50 transition-colors",children:"Cancel"})]}):(0,b.jsxs)("button",{onClick:()=>O(!0),className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] hover:text-red-400 transition-colors",children:[(0,b.jsx)(k.Trash2,{className:"w-3.5 h-3.5"}),"Delete Team"]})]})]}),ad&&aj.get(ad)&&(0,b.jsx)(s.AgentForm,{title:"Edit agent",initial:{name:aj.get(ad).name,role:aj.get(ad).role||"",provider:aj.get(ad).provider,model:aj.get(ad).model||"",identity:aj.get(ad).identity||"",color:aj.get(ad).color,skills:aj.get(ad).skills||[],skillBindings:aj.get(ad).skillBindings||[]},agentId:ad,submitLabel:"Save",onSubmit:async a=>{await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:ad,name:a.name,role:a.role||null,provider:a.provider,model:a.model,color:a.color,...a.identity?{identity:a.identity}:{},skills:a.skills??[],skillBindings:a.skillBindings??[]})}),ae(null),await ag()},onCancel:()=>ae(null)})]})}a.s(["default",()=>t])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_teams_%5BteamId%5D_page_tsx_6dcfdd52._.js.map
|