@swarmroom/server 0.2.0 → 0.3.0

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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app.js +2 -0
  3. package/dist/index.js +2 -0
  4. package/dist/public/assets/_agentId-Det2HUaT.js +36 -0
  5. package/dist/public/assets/{activity-B3TqhZ-f.js → activity-C5c3pd0l.js} +1 -1
  6. package/dist/public/assets/{arrow-left-u9wxRsmJ.js → arrow-left-Bho8c3gL.js} +1 -1
  7. package/dist/public/assets/avatar-D6PiXqfu.js +1 -0
  8. package/dist/public/assets/{card-B896vjxa.js → card-BWnhVACg.js} +1 -1
  9. package/dist/public/assets/{chevron-down-CwGQLAwz.js → chevron-down-io8WQqgh.js} +1 -1
  10. package/dist/public/assets/{error-boundary-GFV_5F1L.js → error-boundary-ONLtI3m8.js} +1 -1
  11. package/dist/public/assets/{external-link-skx4o5wJ.js → external-link-D6ZNJ2De.js} +1 -1
  12. package/dist/public/assets/{index-CZLH7_Xl.js → index-B3vl6HkB.js} +1 -1
  13. package/dist/public/assets/{index-D0-THR73.js → index-CRKuXBmU.js} +1 -1
  14. package/dist/public/assets/index-Coo_PliT.js +213 -0
  15. package/dist/public/assets/{index-MKgtdaN5.js → index-CrAz8zKh.js} +1 -1
  16. package/dist/public/assets/{index-Drki27xM.js → index-DSLPkkn7.js} +1 -1
  17. package/dist/public/assets/{index-DC3HeWGk.js → index-DTF52X7L.js} +1 -1
  18. package/dist/public/assets/{index-D8d9U5S5.js → index-DrvfFRRH.js} +1 -1
  19. package/dist/public/assets/{input-BROwVVEx.js → input-CpGy8OTc.js} +1 -1
  20. package/dist/public/assets/{loader-circle-atY3HcdA.js → loader-circle-BBfeX6jI.js} +1 -1
  21. package/dist/public/assets/{plus-Bq20n-_S.js → plus-c5hdQFYj.js} +1 -1
  22. package/dist/public/assets/{radio-D8C4proJ.js → radio-zlZI1pp6.js} +1 -1
  23. package/dist/public/assets/scroll-area-BD_ZWvua.js +1 -0
  24. package/dist/public/assets/{send-Dl7T7Bm1.js → send-D7L2DhCM.js} +1 -1
  25. package/dist/public/assets/{useMutation-BhJRnGsH.js → useMutation-C7s7l6mS.js} +1 -1
  26. package/dist/public/assets/{user-minus-SI0czWZH.js → user-minus-B2DcEtYp.js} +1 -1
  27. package/dist/public/assets/{utils-AH9TuImk.js → utils-Dt8_kYy9.js} +1 -1
  28. package/dist/public/assets/{wifi-BMnLTkMX.js → wifi-CkkG3jQZ.js} +1 -1
  29. package/dist/public/index.html +1 -1
  30. package/dist/routes/skills.d.ts +3 -0
  31. package/dist/routes/skills.js +19 -0
  32. package/dist/services/mdns-browser.js +110 -33
  33. package/dist/services/skill-service.d.ts +4 -0
  34. package/dist/services/skill-service.js +81 -0
  35. package/package.json +25 -14
  36. package/dist/public/assets/_agentId-B5f3yJc6.js +0 -36
  37. package/dist/public/assets/avatar-B_Cqbi60.js +0 -1
  38. package/dist/public/assets/index-DqvmWes8.js +0 -213
  39. package/dist/public/assets/scroll-area-C4F6zoWB.js +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SwarmRoom Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/app.js CHANGED
@@ -10,6 +10,7 @@ import { agentsRoute } from './routes/agents.js';
10
10
  import { messagesRoute } from './routes/messages.js';
11
11
  import { teamsRoute } from './routes/teams.js';
12
12
  import { projectsRoute } from './routes/projects.js';
13
+ import { skillsRoute } from './routes/skills.js';
13
14
  import { wellKnown } from './routes/well-known.js';
14
15
  import { mcpRoute } from './mcp/transport.js';
15
16
  const __dirname = resolve(fileURLToPath(import.meta.url), '..');
@@ -27,6 +28,7 @@ app.route('/api/agents', agentsRoute);
27
28
  app.route('/api/messages', messagesRoute);
28
29
  app.route('/api/teams', teamsRoute);
29
30
  app.route('/api/projects', projectsRoute);
31
+ app.route('/api/skills', skillsRoute);
30
32
  app.route('/mcp', mcpRoute);
31
33
  if (webDistExists) {
32
34
  app.use('*', serveStatic({
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ import { DEFAULT_PORT } from '@swarmroom/shared';
4
4
  import { app } from './app.js';
5
5
  import { registerWsRoute } from './routes/ws.js';
6
6
  import { startHeartbeatChecker, stopHeartbeatChecker, } from './services/heartbeat-service.js';
7
+ import { scanSkills } from './services/skill-service.js';
7
8
  import { startMdns, stopMdns } from './services/mdns-service.js';
8
9
  import { startBrowsing, stopBrowsing } from './services/mdns-browser.js';
9
10
  const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app });
@@ -18,6 +19,7 @@ const server = serve({
18
19
  startHeartbeatChecker();
19
20
  startMdns(info.port);
20
21
  startBrowsing();
22
+ scanSkills();
21
23
  });
22
24
  injectWebSocket(server);
23
25
  async function shutdown() {
@@ -0,0 +1,36 @@
1
+ import{c as N,r as f,J as fe,a2 as ge,j as e,P as F,a3 as je,a4 as ve,a5 as Ne,O as L,K as ye,a6 as Y,N as be,x as E,a7 as we,a0 as ee,b as p,M as se,p as z,L as ke,D as M,d as R,e as D,f as I,g as _,o as K,u as T,A as g,n as S,t as h,U as J,a8 as ae,B as Ce,a9 as Te}from"./index-Coo_PliT.js";import{u as A}from"./useMutation-C7s7l6mS.js";import{B as v,S as c,E as Ae}from"./error-boundary-ONLtI3m8.js";import{g as ze,a as Fe,s as U,T as Ee,t as Se,f as te}from"./utils-Dt8_kYy9.js";import{E as $e}from"./external-link-D6ZNJ2De.js";import{C as Le,W as Pe,F as W,G as qe,a as Me}from"./wifi-CkkG3jQZ.js";import{A as Re}from"./arrow-left-Bho8c3gL.js";import{C as b,b as w,c as k,a as C}from"./card-BWnhVACg.js";import{C as De}from"./chevron-down-io8WQqgh.js";import{P as re}from"./plus-c5hdQFYj.js";import{L as ne}from"./loader-circle-BBfeX6jI.js";/**
2
+ * @license lucide-react v0.400.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Ie=N("ArrowDownLeft",[["path",{d:"M17 7 7 17",key:"15tmo1"}],["path",{d:"M17 17H7V7",key:"1org7z"}]]);/**
7
+ * @license lucide-react v0.400.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const _e=N("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);/**
12
+ * @license lucide-react v0.400.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const Ke=N("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
17
+ * @license lucide-react v0.400.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const X=N("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);/**
22
+ * @license lucide-react v0.400.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */const Oe=N("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/**
27
+ * @license lucide-react v0.400.0 - ISC
28
+ *
29
+ * This source code is licensed under the ISC license.
30
+ * See the LICENSE file in the root directory of this source tree.
31
+ */const Qe=N("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/**
32
+ * @license lucide-react v0.400.0 - ISC
33
+ *
34
+ * This source code is licensed under the ISC license.
35
+ * See the LICENSE file in the root directory of this source tree.
36
+ */const He=N("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);var $="Tabs",[Ve]=be($,[Y]),ie=Y(),[Be,O]=Ve($),oe=f.forwardRef((s,r)=>{const{__scopeTabs:l,value:n,onValueChange:t,defaultValue:o,orientation:i="horizontal",dir:d,activationMode:x="automatic",...a}=s,m=fe(d),[u,j]=ge({prop:n,onChange:t,defaultProp:o??"",caller:$});return e.jsx(Be,{scope:l,baseId:je(),value:u,onValueChange:j,orientation:i,dir:m,activationMode:x,children:e.jsx(F.div,{dir:m,"data-orientation":i,...a,ref:r})})});oe.displayName=$;var le="TabsList",de=f.forwardRef((s,r)=>{const{__scopeTabs:l,loop:n=!0,...t}=s,o=O(le,l),i=ie(l);return e.jsx(ve,{asChild:!0,...i,orientation:o.orientation,dir:o.dir,loop:n,children:e.jsx(F.div,{role:"tablist","aria-orientation":o.orientation,...t,ref:r})})});de.displayName=le;var ce="TabsTrigger",me=f.forwardRef((s,r)=>{const{__scopeTabs:l,value:n,disabled:t=!1,...o}=s,i=O(ce,l),d=ie(l),x=pe(i.baseId,n),a=he(i.baseId,n),m=n===i.value;return e.jsx(Ne,{asChild:!0,...d,focusable:!t,active:m,children:e.jsx(F.button,{type:"button",role:"tab","aria-selected":m,"aria-controls":a,"data-state":m?"active":"inactive","data-disabled":t?"":void 0,disabled:t,id:x,...o,ref:r,onMouseDown:L(s.onMouseDown,u=>{!t&&u.button===0&&u.ctrlKey===!1?i.onValueChange(n):u.preventDefault()}),onKeyDown:L(s.onKeyDown,u=>{[" ","Enter"].includes(u.key)&&i.onValueChange(n)}),onFocus:L(s.onFocus,()=>{const u=i.activationMode!=="manual";!m&&!t&&u&&i.onValueChange(n)})})})});me.displayName=ce;var xe="TabsContent",ue=f.forwardRef((s,r)=>{const{__scopeTabs:l,value:n,forceMount:t,children:o,...i}=s,d=O(xe,l),x=pe(d.baseId,n),a=he(d.baseId,n),m=n===d.value,u=f.useRef(m);return f.useEffect(()=>{const j=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(j)},[]),e.jsx(ye,{present:t||m,children:({present:j})=>e.jsx(F.div,{"data-state":m?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":x,hidden:!j,id:a,tabIndex:0,...i,ref:r,style:{...s.style,animationDuration:u.current?"0s":void 0},children:j&&o})})});ue.displayName=xe;function pe(s,r){return`${s}-trigger-${r}`}function he(s,r){return`${s}-content-${r}`}var Ge=oe,Je=de,Ue=me,We=ue;function Xe({className:s,orientation:r="horizontal",...l}){return e.jsx(Ge,{"data-slot":"tabs","data-orientation":r,orientation:r,className:E("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",s),...l})}const Ze=we("rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function Ye({className:s,variant:r="default",...l}){return e.jsx(Je,{"data-slot":"tabs-list","data-variant":r,className:E(Ze({variant:r}),s),...l})}function P({className:s,...r}){return e.jsx(Ue,{"data-slot":"tabs-trigger",className:E("focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground","after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",s),...r})}function q({className:s,...r}){return e.jsx(We,{"data-slot":"tabs-content",className:E("flex-1 outline-none",s),...r})}function es({agent:s,onDelete:r,isDeleting:l}){var a,m,u,j,Q,H,V,B,G;const[n,t]=f.useState(!1),o=ee(),i=ze(s.displayName),d=Fe(s.displayName),x=U[s.status]??U.offline;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative overflow-hidden rounded-xl border border-border/60 bg-card",children:[e.jsx("div",{className:"h-24 w-full",style:{background:`linear-gradient(135deg, ${d}44 0%, ${d}18 40%, transparent 70%)`}}),e.jsxs("div",{className:"relative px-6 pb-6",children:[e.jsxs("div",{className:"-mt-10 flex items-end gap-5",children:[e.jsx("div",{className:"flex size-20 shrink-0 items-center justify-center rounded-2xl text-2xl font-bold text-white shadow-lg ring-4 ring-card",style:{backgroundColor:d},children:i}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-wrap items-start justify-between gap-4 pt-1",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"truncate text-xl font-bold tracking-tight text-foreground",children:s.displayName}),e.jsxs(v,{variant:x.variant,className:"gap-1.5 text-xs",children:[e.jsx("span",{className:`inline-block size-1.5 rounded-full ${x.dot} ${s.status==="online"?"animate-pulse":""}`}),x.label]})]}),e.jsx("p",{className:"mt-0.5 truncate font-mono text-sm text-muted-foreground",children:s.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(p,{size:"sm",onClick:()=>o({to:"/messages",search:{to:s.id}}),children:[e.jsx(se,{className:"size-4"}),"Send Message"]}),e.jsxs(p,{variant:"destructive",size:"sm",onClick:()=>t(!0),children:[e.jsx(Ee,{className:"size-4"}),"Remove"]})]})]})]}),e.jsxs("div",{className:"mt-5 flex flex-wrap items-center gap-x-5 gap-y-2 text-sm text-muted-foreground",children:[s.url&&e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 transition-colors hover:text-foreground",children:[e.jsx($e,{className:"size-3.5"}),Se(s.url,40)]}),((a=s.agentCard)==null?void 0:a.version)&&e.jsxs(e.Fragment,{children:[e.jsx(z,{orientation:"vertical",className:"!h-4"}),e.jsxs("span",{className:"font-mono text-xs",children:["v",s.agentCard.version]})]}),s.lastHeartbeat&&e.jsxs(e.Fragment,{children:[e.jsx(z,{orientation:"vertical",className:"!h-4"}),e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(Le,{className:"size-3.5"}),te(s.lastHeartbeat)]})]}),s.status==="online"&&e.jsxs(e.Fragment,{children:[e.jsx(z,{orientation:"vertical",className:"!h-4"}),e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-emerald-600 dark:text-emerald-400",children:[e.jsx(Pe,{className:"size-3.5"}),"Connected"]})]})]}),((((u=(m=s.agentCard)==null?void 0:m.teams)==null?void 0:u.length)??0)>0||(((Q=(j=s.agentCard)==null?void 0:j.projectGroups)==null?void 0:Q.length)??0)>0)&&e.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(V=(H=s.agentCard)==null?void 0:H.teams)==null?void 0:V.map(y=>e.jsx(v,{variant:"secondary",className:"text-xs",children:y},y)),(G=(B=s.agentCard)==null?void 0:B.projectGroups)==null?void 0:G.map(y=>e.jsx(v,{variant:"outline",className:"text-xs",children:y},y))]})]}),e.jsxs(ke,{to:"/agents",className:"absolute top-4 left-4 inline-flex items-center gap-1.5 rounded-lg bg-card/80 px-2.5 py-1.5 text-xs font-medium text-muted-foreground backdrop-blur-sm transition-colors hover:text-foreground",children:[e.jsx(Re,{className:"size-3.5"}),"Agents"]})]}),e.jsx(M,{open:n,onOpenChange:t,children:e.jsxs(R,{children:[e.jsxs(D,{children:[e.jsx(I,{children:"Remove agent"}),e.jsxs(_,{children:["This will set"," ",e.jsx("span",{className:"font-medium text-foreground",children:s.displayName})," ","to offline. The agent can re-register at any time."]})]}),e.jsxs(K,{children:[e.jsx(p,{variant:"outline",onClick:()=>t(!1),disabled:l,children:"Cancel"}),e.jsx(p,{variant:"destructive",disabled:l,onClick:()=>{r(),t(!1)},children:l?"Removing…":"Remove Agent"})]})]})})]})}function ss({agentId:s}){const[r,l]=f.useState(!1),n=T({queryKey:["agent-card",s],queryFn:async()=>{const o=await fetch(`${g}/agents/${s}/card`);if(!o.ok)throw new Error("Failed to fetch agent card");return(await o.json()).data},staleTime:3e4,retry:1});if(n.isLoading)return e.jsx(as,{});if(n.isError||!n.data)return e.jsxs("div",{className:"flex flex-col items-center justify-center rounded-xl border border-dashed border-border/60 py-16",children:[e.jsx(W,{className:"size-10 text-muted-foreground/40"}),e.jsx("p",{className:"mt-3 text-sm text-muted-foreground",children:"No Agent Card available"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground/60",children:"This agent hasn't published an A2A Agent Card yet."})]});const t=n.data;return e.jsxs("div",{className:"grid gap-5 lg:grid-cols-2",children:[e.jsxs(b,{className:"gap-0 py-0",children:[e.jsx(w,{className:"border-b px-5 py-4",children:e.jsxs(k,{className:"flex items-center gap-2 text-sm",children:[e.jsx(Oe,{className:"size-4 text-amber-500"}),"Description"]})}),e.jsxs(C,{className:"px-5 py-4",children:[e.jsx("p",{className:"text-sm leading-relaxed text-muted-foreground",children:t.description||"No description provided."}),e.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-3 text-xs text-muted-foreground",children:[t.version&&e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-md bg-muted px-2 py-1 font-mono",children:["v",t.version]}),t.url&&e.jsxs("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 rounded-md bg-muted px-2 py-1 transition-colors hover:text-foreground",children:[e.jsx(qe,{className:"size-3"}),t.url]})]})]})]}),e.jsxs(b,{className:"gap-0 py-0",children:[e.jsx(w,{className:"border-b px-5 py-4",children:e.jsxs(k,{className:"flex items-center gap-2 text-sm",children:[e.jsx(He,{className:"size-4 text-blue-500"}),"Skills",t.skills.length>0&&e.jsx(v,{variant:"secondary",className:"ml-auto text-[10px]",children:t.skills.length})]})}),e.jsx(C,{className:"px-5 py-4",children:t.skills.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"No skills declared."}):e.jsx("div",{className:"space-y-3",children:t.skills.map(o=>e.jsxs("div",{className:"group",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Me,{className:"size-3.5 shrink-0 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium",children:o.name})]}),e.jsx("p",{className:"ml-5.5 mt-0.5 text-xs leading-relaxed text-muted-foreground",children:o.description}),o.tags.length>0&&e.jsx("div",{className:"ml-5.5 mt-1.5 flex flex-wrap gap-1",children:o.tags.map(i=>e.jsxs(v,{variant:"outline",className:"text-[10px] font-normal",children:[e.jsx(Qe,{className:"mr-0.5 size-2.5"}),i]},i))})]},o.id))})})]}),e.jsxs(b,{className:"gap-0 py-0 lg:col-span-2",children:[e.jsx(w,{className:"px-5 py-4",children:e.jsxs("button",{type:"button",onClick:()=>l(o=>!o),className:"flex w-full items-center gap-2 text-left",children:[e.jsxs(k,{className:"flex items-center gap-2 text-sm",children:[e.jsx(W,{className:"size-4 text-muted-foreground"}),"Raw Agent Card"]}),r?e.jsx(De,{className:"ml-auto size-4 text-muted-foreground"}):e.jsx(Ke,{className:"ml-auto size-4 text-muted-foreground"})]})}),r&&e.jsxs(e.Fragment,{children:[e.jsx(z,{}),e.jsx(C,{className:"px-5 py-4",children:e.jsx("pre",{className:"max-h-96 overflow-auto rounded-lg bg-muted/60 p-4 font-mono text-xs leading-relaxed text-foreground/80",children:JSON.stringify(t,null,2)})})]})]})]})}function as(){return e.jsxs("div",{className:"grid gap-5 lg:grid-cols-2",children:[e.jsx(c,{className:"h-48 rounded-xl"}),e.jsx(c,{className:"h-48 rounded-xl"}),e.jsx(c,{className:"h-20 rounded-xl lg:col-span-2"})]})}const Z={notification:{label:"Notification",variant:"secondary"},query:{label:"Query",variant:"default"},response:{label:"Response",variant:"outline"},broadcast:{label:"Broadcast",variant:"secondary"}};function ts({agentId:s}){const r=T({queryKey:["agent-messages",s],queryFn:async()=>{const n=await fetch(`${g}/messages?agentId=${s}&limit=20`);if(!n.ok)throw new Error("Failed to fetch messages");return(await n.json()).data},staleTime:3e4,refetchInterval:15e3,retry:1});if(r.isLoading)return e.jsx(rs,{});const l=r.data??[];return l.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center rounded-xl border border-dashed border-border/60 py-16",children:[e.jsx(se,{className:"size-10 text-muted-foreground/40"}),e.jsx("p",{className:"mt-3 text-sm text-muted-foreground",children:"No activity yet"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground/60",children:"Messages sent to or from this agent will appear here."})]}):e.jsx("div",{className:"space-y-1",children:l.map(n=>{const t=n.from===s,o=Z[n.type]??Z.notification;return e.jsxs("div",{className:"group flex items-start gap-3 rounded-lg px-3 py-3 transition-colors hover:bg-muted/40",children:[e.jsx("div",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted",children:t?e.jsx(_e,{className:"size-4 text-blue-500"}):e.jsx(Ie,{className:"size-4 text-emerald-500"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[t?"Sent to":"Received from"," ",e.jsx("span",{className:"font-semibold text-foreground",children:t?n.to:n.from})]}),e.jsx(v,{variant:o.variant,className:"text-[9px] leading-tight",children:o.label}),e.jsx("span",{className:"ml-auto text-[10px] text-muted-foreground/60",children:te(n.createdAt)})]}),e.jsx("p",{className:"mt-1 line-clamp-2 text-sm text-foreground/80",children:n.content})]})]},n.id)})})}function rs(){return e.jsx("div",{className:"space-y-2",children:Array.from({length:5}).map((s,r)=>e.jsxs("div",{className:"flex items-start gap-3 px-3 py-3",children:[e.jsx(c,{className:"size-8 rounded-lg"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx(c,{className:"h-3 w-48"}),e.jsx(c,{className:"h-4 w-full"})]})]},r))})}function ns({agent:s}){S();const r=T({queryKey:["teams"],queryFn:async()=>{const a=await fetch(`${g}/teams`);if(!a.ok)throw new Error("Failed to fetch teams");return(await a.json()).data},staleTime:6e4,retry:1}),l=T({queryKey:["projects"],queryFn:async()=>{const a=await fetch(`${g}/projects`);if(!a.ok)throw new Error("Failed to fetch projects");return(await a.json()).data},staleTime:6e4,retry:1}),n=r.data??[],t=l.data??[],o=n.filter(a=>a.agentIds.includes(s.id)),i=t.filter(a=>a.agentIds.includes(s.id)),d=n.filter(a=>!a.agentIds.includes(s.id)),x=t.filter(a=>!a.agentIds.includes(s.id));return e.jsxs("div",{className:"grid gap-5 lg:grid-cols-2",children:[e.jsx(is,{agent:s,agentTeams:o,availableTeams:d,isLoading:r.isLoading}),e.jsx(os,{agent:s,agentProjects:i,availableProjects:x,isLoading:l.isLoading})]})}function is({agent:s,agentTeams:r,availableTeams:l,isLoading:n}){const t=S(),[o,i]=f.useState(!1),d=A({mutationFn:async a=>{if(!(await fetch(`${g}/teams/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:s.id})})).ok)throw new Error("Failed to add agent to team")},onSuccess:()=>{t.invalidateQueries({queryKey:["teams"]}),t.invalidateQueries({queryKey:["agents"]}),h.success("Added to team"),i(!1)},onError:()=>h.error("Failed to add to team")}),x=A({mutationFn:async a=>{if(!(await fetch(`${g}/teams/${a}/agents/${s.id}`,{method:"DELETE"})).ok)throw new Error("Failed to remove agent from team")},onSuccess:()=>{t.invalidateQueries({queryKey:["teams"]}),t.invalidateQueries({queryKey:["agents"]}),h.success("Removed from team")},onError:()=>h.error("Failed to remove from team")});return e.jsxs(e.Fragment,{children:[e.jsxs(b,{className:"gap-0 py-0",children:[e.jsx(w,{className:"border-b px-5 py-4",children:e.jsxs(k,{className:"flex items-center gap-2 text-sm",children:[e.jsx(J,{className:"size-4 text-violet-500"}),"Teams",e.jsx(v,{variant:"secondary",className:"ml-auto text-[10px]",children:r.length})]})}),e.jsxs(C,{className:"px-5 py-4",children:[n?e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{className:"h-8 w-full"}),e.jsx(c,{className:"h-8 w-2/3"})]}):r.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Not assigned to any teams."}):e.jsx("div",{className:"space-y-2",children:r.map(a=>e.jsxs("div",{className:"flex items-center justify-between rounded-lg bg-muted/40 px-3 py-2",children:[e.jsx("span",{className:"text-sm font-medium",children:a.name}),e.jsx(p,{variant:"ghost",size:"icon-xs",onClick:()=>x.mutate(a.id),disabled:x.isPending,children:e.jsx(ae,{className:"size-3.5"})})]},a.id))}),e.jsxs(p,{variant:"outline",size:"sm",className:"mt-4 w-full",onClick:()=>i(!0),disabled:l.length===0,children:[e.jsx(re,{className:"size-4"}),"Add to Team"]})]})]}),e.jsx(M,{open:o,onOpenChange:i,children:e.jsxs(R,{children:[e.jsxs(D,{children:[e.jsx(I,{children:"Add to team"}),e.jsxs(_,{children:["Select a team to add"," ",e.jsx("span",{className:"font-medium text-foreground",children:s.displayName})," ","to."]})]}),e.jsx("div",{className:"max-h-64 space-y-1 overflow-y-auto",children:l.map(a=>e.jsxs("button",{type:"button",onClick:()=>d.mutate(a.id),disabled:d.isPending,className:"flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-colors hover:bg-muted",children:[e.jsx(J,{className:"size-4 shrink-0 text-muted-foreground"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-sm font-medium",children:a.name}),a.description&&e.jsx("p",{className:"truncate text-xs text-muted-foreground",children:a.description})]}),d.isPending&&e.jsx(ne,{className:"size-4 animate-spin text-muted-foreground"})]},a.id))}),e.jsx(K,{children:e.jsx(p,{variant:"outline",onClick:()=>i(!1),children:"Cancel"})})]})})]})}function os({agent:s,agentProjects:r,availableProjects:l,isLoading:n}){const t=S(),[o,i]=f.useState(!1),d=A({mutationFn:async a=>{if(!(await fetch(`${g}/projects/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:s.id})})).ok)throw new Error("Failed to add agent to project")},onSuccess:()=>{t.invalidateQueries({queryKey:["projects"]}),t.invalidateQueries({queryKey:["agents"]}),h.success("Added to project"),i(!1)},onError:()=>h.error("Failed to add to project")}),x=A({mutationFn:async a=>{if(!(await fetch(`${g}/projects/${a}/agents/${s.id}`,{method:"DELETE"})).ok)throw new Error("Failed to remove agent from project")},onSuccess:()=>{t.invalidateQueries({queryKey:["projects"]}),t.invalidateQueries({queryKey:["agents"]}),h.success("Removed from project")},onError:()=>h.error("Failed to remove from project")});return e.jsxs(e.Fragment,{children:[e.jsxs(b,{className:"gap-0 py-0",children:[e.jsx(w,{className:"border-b px-5 py-4",children:e.jsxs(k,{className:"flex items-center gap-2 text-sm",children:[e.jsx(X,{className:"size-4 text-teal-500"}),"Projects",e.jsx(v,{variant:"secondary",className:"ml-auto text-[10px]",children:r.length})]})}),e.jsxs(C,{className:"px-5 py-4",children:[n?e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{className:"h-8 w-full"}),e.jsx(c,{className:"h-8 w-2/3"})]}):r.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Not assigned to any projects."}):e.jsx("div",{className:"space-y-2",children:r.map(a=>e.jsxs("div",{className:"flex items-center justify-between rounded-lg bg-muted/40 px-3 py-2",children:[e.jsx("span",{className:"text-sm font-medium",children:a.name}),e.jsx(p,{variant:"ghost",size:"icon-xs",onClick:()=>x.mutate(a.id),disabled:x.isPending,children:e.jsx(ae,{className:"size-3.5"})})]},a.id))}),e.jsxs(p,{variant:"outline",size:"sm",className:"mt-4 w-full",onClick:()=>i(!0),disabled:l.length===0,children:[e.jsx(re,{className:"size-4"}),"Add to Project"]})]})]}),e.jsx(M,{open:o,onOpenChange:i,children:e.jsxs(R,{children:[e.jsxs(D,{children:[e.jsx(I,{children:"Add to project"}),e.jsxs(_,{children:["Select a project to add"," ",e.jsx("span",{className:"font-medium text-foreground",children:s.displayName})," ","to."]})]}),e.jsx("div",{className:"max-h-64 space-y-1 overflow-y-auto",children:l.map(a=>e.jsxs("button",{type:"button",onClick:()=>d.mutate(a.id),disabled:d.isPending,className:"flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-colors hover:bg-muted",children:[e.jsx(X,{className:"size-4 shrink-0 text-muted-foreground"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-sm font-medium",children:a.name}),a.description&&e.jsx("p",{className:"truncate text-xs text-muted-foreground",children:a.description})]}),d.isPending&&e.jsx(ne,{className:"size-4 animate-spin text-muted-foreground"})]},a.id))}),e.jsx(K,{children:e.jsx(p,{variant:"outline",onClick:()=>i(!1),children:"Cancel"})})]})})]})}function ls({agentId:s}){const r=S(),l=ee(),n=T({queryKey:["agent",s],queryFn:async()=>{const i=await fetch(`${g}/agents/${s}`);if(!i.ok)throw new Error("Failed to fetch agent");return(await i.json()).data},staleTime:3e4,refetchInterval:1e4,retry:1}),t=A({mutationFn:async()=>{if(!(await fetch(`${g}/agents/${s}`,{method:"DELETE"})).ok)throw new Error("Failed to remove agent")},onSuccess:()=>{r.invalidateQueries({queryKey:["agents"]}),h.success("Agent removed"),l({to:"/agents"})},onError:()=>{h.error("Failed to remove agent")}});if(n.isLoading)return e.jsx(ds,{});if(n.isError||!n.data)return e.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-4 p-4 sm:p-8",children:[e.jsx("div",{className:"flex size-16 items-center justify-center rounded-2xl bg-muted",children:e.jsx(Ce,{className:"size-8 text-muted-foreground"})}),e.jsxs("div",{className:"text-center",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Agent not found"}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"This agent may have been removed or the ID is invalid."})]})]});const o=n.data;return e.jsxs("div",{className:"flex flex-col gap-6 p-4 sm:p-6",children:[e.jsx(es,{agent:o,onDelete:()=>t.mutate(),isDeleting:t.isPending}),e.jsxs(Xe,{defaultValue:"overview",children:[e.jsxs(Ye,{variant:"line",children:[e.jsx(P,{value:"overview",children:"Agent Card"}),e.jsx(P,{value:"activity",children:"Activity"}),e.jsx(P,{value:"management",children:"Management"})]}),e.jsx(q,{value:"overview",className:"mt-4",children:e.jsx(ss,{agentId:s})}),e.jsx(q,{value:"activity",className:"mt-4",children:e.jsx(ts,{agentId:s})}),e.jsx(q,{value:"management",className:"mt-4",children:e.jsx(ns,{agent:o})})]})]})}function ds(){return e.jsxs("div",{className:"flex flex-col gap-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"overflow-hidden rounded-xl border border-border/60",children:[e.jsx(c,{className:"h-24 w-full rounded-none"}),e.jsxs("div",{className:"px-6 pb-6",children:[e.jsxs("div",{className:"-mt-10 flex items-end gap-5",children:[e.jsx(c,{className:"size-20 rounded-2xl"}),e.jsxs("div",{className:"flex-1 space-y-2 pt-1",children:[e.jsx(c,{className:"h-6 w-48"}),e.jsx(c,{className:"h-4 w-32"})]})]}),e.jsxs("div",{className:"mt-5 flex gap-4",children:[e.jsx(c,{className:"h-4 w-40"}),e.jsx(c,{className:"h-4 w-20"}),e.jsx(c,{className:"h-4 w-24"})]})]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(c,{className:"h-9 w-24"}),e.jsx(c,{className:"h-9 w-24"}),e.jsx(c,{className:"h-9 w-28"})]}),e.jsxs("div",{className:"grid gap-5 lg:grid-cols-2",children:[e.jsx(c,{className:"h-48 rounded-xl"}),e.jsx(c,{className:"h-48 rounded-xl"})]})]})}function ys(){const{agentId:s}=Te.useParams();return e.jsx(Ae,{featureName:"Agent Detail",children:e.jsx(ls,{agentId:s})})}export{ys as component};
@@ -1,4 +1,4 @@
1
- import{c as t}from"./index-DqvmWes8.js";/**
1
+ import{c as t}from"./index-Coo_PliT.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-DqvmWes8.js";/**
1
+ import{c as e}from"./index-Coo_PliT.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -0,0 +1 @@
1
+ import{a1 as b,r as u,j as i,P as f,N as j,Q as R,R as g,x as v}from"./index-Coo_PliT.js";var k=b();function w(){return k.useSyncExternalStore(C,()=>!0,()=>!1)}function C(){return()=>{}}var m="Avatar",[N]=j(m),[y,A]=N(m),S=u.forwardRef((a,t)=>{const{__scopeAvatar:r,...s}=a,[n,e]=u.useState("idle");return i.jsx(y,{scope:r,imageLoadingStatus:n,onImageLoadingStatusChange:e,children:i.jsx(f.span,{...s,ref:t})})});S.displayName=m;var L="AvatarImage",I=u.forwardRef((a,t)=>{const{__scopeAvatar:r,src:s,onLoadingStatusChange:n=()=>{},...e}=a,l=A(L,r),o=_(s,e),d=R(c=>{n(c),l.onImageLoadingStatusChange(c)});return g(()=>{o!=="idle"&&d(o)},[o,d]),o==="loaded"?i.jsx(f.img,{...e,ref:t,src:s}):null});I.displayName=L;var h="AvatarFallback",z=u.forwardRef((a,t)=>{const{__scopeAvatar:r,delayMs:s,...n}=a,e=A(h,r),[l,o]=u.useState(s===void 0);return u.useEffect(()=>{if(s!==void 0){const d=window.setTimeout(()=>o(!0),s);return()=>window.clearTimeout(d)}},[s]),l&&e.imageLoadingStatus!=="loaded"?i.jsx(f.span,{...n,ref:t}):null});z.displayName=h;function x(a,t){return a?t?(a.src!==t&&(a.src=t),a.complete&&a.naturalWidth>0?"loaded":"loading"):"error":"idle"}function _(a,{referrerPolicy:t,crossOrigin:r}){const s=w(),n=u.useRef(null),e=s?(n.current||(n.current=new window.Image),n.current):null,[l,o]=u.useState(()=>x(e,a));return g(()=>{o(x(e,a))},[e,a]),g(()=>{const d=E=>()=>{o(E)};if(!e)return;const c=d("loaded"),p=d("error");return e.addEventListener("load",c),e.addEventListener("error",p),t&&(e.referrerPolicy=t),typeof r=="string"&&(e.crossOrigin=r),()=>{e.removeEventListener("load",c),e.removeEventListener("error",p)}},[e,r,t]),l}var F=S,M=z;function G({className:a,size:t="default",...r}){return i.jsx(F,{"data-slot":"avatar","data-size":t,className:v("group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",a),...r})}function T({className:a,...t}){return i.jsx(M,{"data-slot":"avatar-fallback",className:v("bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs",a),...t})}function H({className:a,...t}){return i.jsx("div",{"data-slot":"avatar-group",className:v("*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2",a),...t})}function $({className:a,...t}){return i.jsx("div",{"data-slot":"avatar-group-count",className:v("bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",a),...t})}export{H as A,G as a,T as b,$ as c};
@@ -1 +1 @@
1
- import{j as r,x as d}from"./index-DqvmWes8.js";function e({className:a,...t}){return r.jsx("div",{"data-slot":"card",className:d("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...t})}function o({className:a,...t}){return r.jsx("div",{"data-slot":"card-header",className:d("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...t})}function n({className:a,...t}){return r.jsx("div",{"data-slot":"card-title",className:d("leading-none font-semibold",a),...t})}function c({className:a,...t}){return r.jsx("div",{"data-slot":"card-description",className:d("text-muted-foreground text-sm",a),...t})}function i({className:a,...t}){return r.jsx("div",{"data-slot":"card-content",className:d("px-6",a),...t})}export{e as C,i as a,o as b,n as c,c as d};
1
+ import{j as r,x as d}from"./index-Coo_PliT.js";function e({className:a,...t}){return r.jsx("div",{"data-slot":"card",className:d("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...t})}function o({className:a,...t}){return r.jsx("div",{"data-slot":"card-header",className:d("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...t})}function n({className:a,...t}){return r.jsx("div",{"data-slot":"card-title",className:d("leading-none font-semibold",a),...t})}function c({className:a,...t}){return r.jsx("div",{"data-slot":"card-description",className:d("text-muted-foreground text-sm",a),...t})}function i({className:a,...t}){return r.jsx("div",{"data-slot":"card-content",className:d("px-6",a),...t})}export{e as C,i as a,o as b,n as c,c as d};
@@ -1,4 +1,4 @@
1
- import{c as o}from"./index-DqvmWes8.js";/**
1
+ import{c as o}from"./index-Coo_PliT.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- var c=Object.defineProperty;var l=(t,e,r)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>l(t,typeof e!="symbol"?e+"":e,r);import{c as i,j as s,x as o,ah as u,a7 as h,r as f,b as p}from"./index-DqvmWes8.js";/**
1
+ var c=Object.defineProperty;var l=(t,e,r)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>l(t,typeof e!="symbol"?e+"":e,r);import{c as i,j as s,x as o,ah as u,a7 as h,r as f,b as p}from"./index-Coo_PliT.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-DqvmWes8.js";/**
1
+ import{c as a}from"./index-Coo_PliT.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as T,r as o,j as e,S as Z,x as i,M as se,y as ae,B as E,b as _,T as ne,z as re,E as oe,m as ie,D as le,d as ce,e as de,f as ue,g as me,n as xe,G as ge,u as B,t as fe,A as q}from"./index-DqvmWes8.js";import{u as he}from"./useMutation-BhJRnGsH.js";import{a as O,b as V}from"./avatar-B_Cqbi60.js";import{S as H,B as Q,E as pe}from"./error-boundary-GFV_5F1L.js";import{S as G}from"./scroll-area-C4F6zoWB.js";import{R as be}from"./radio-D8C4proJ.js";import{C as ye}from"./chevron-down-CwGQLAwz.js";import{S as je}from"./send-Dl7T7Bm1.js";import{A as ve}from"./arrow-left-u9wxRsmJ.js";import{P as Ne}from"./plus-Bq20n-_S.js";/**
1
+ import{c as T,r as o,j as e,S as Z,x as i,M as se,y as ae,B as E,b as _,T as ne,z as re,E as oe,m as ie,D as le,d as ce,e as de,f as ue,g as me,n as xe,G as ge,u as B,t as fe,A as q}from"./index-Coo_PliT.js";import{u as he}from"./useMutation-C7s7l6mS.js";import{a as O,b as V}from"./avatar-D6PiXqfu.js";import{S as H,B as Q,E as pe}from"./error-boundary-ONLtI3m8.js";import{S as G}from"./scroll-area-BD_ZWvua.js";import{R as be}from"./radio-zlZI1pp6.js";import{C as ye}from"./chevron-down-io8WQqgh.js";import{S as je}from"./send-D7L2DhCM.js";import{A as ve}from"./arrow-left-Bho8c3gL.js";import{P as Ne}from"./plus-c5hdQFYj.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as k,r as p,j as e,m as C,B as U,M as w,U as F,F as R,L as B,D as A,a as M,b as T,d as z,e as D,f as S,g as L,u as N,H as E,h as O,i as H,k as P,l as Q}from"./index-DqvmWes8.js";import{C as h,a as f,b as j,c as v}from"./card-B896vjxa.js";import{S as d,B as K,E as V}from"./error-boundary-GFV_5F1L.js";import{S as _}from"./scroll-area-C4F6zoWB.js";import{A as G}from"./activity-B3TqhZ-f.js";import{S as J}from"./send-Dl7T7Bm1.js";import{P as q}from"./plus-Bq20n-_S.js";/**
1
+ import{c as k,r as p,j as e,m as C,B as U,M as w,U as F,F as R,L as B,D as A,a as M,b as T,d as z,e as D,f as S,g as L,u as N,H as E,h as O,i as H,k as P,l as Q}from"./index-Coo_PliT.js";import{C as h,a as f,b as j,c as v}from"./card-BWnhVACg.js";import{S as d,B as K,E as V}from"./error-boundary-ONLtI3m8.js";import{S as _}from"./scroll-area-BD_ZWvua.js";import{A as G}from"./activity-C5c3pd0l.js";import{S as J}from"./send-D7L2DhCM.js";import{P as q}from"./plus-c5hdQFYj.js";/**
2
2
  * @license lucide-react v0.400.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.