@mndrk/agx 2.0.22 → 2.0.23
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/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/.next/build-manifest.json +2 -2
- package/cloud-runtime/standalone/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/index.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.html +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome.html +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/app/welcome.segments/welcome.segment.rsc +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{[root-of-the-server]__3fe0b1a1._.js → [root-of-the-server]__d2c48923._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/{_d743f11d._.js → _8bbe2ac1._.js} +2 -2
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_cf5fdbfb._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_d021529a._.js +3 -0
- package/cloud-runtime/standalone/.next/server/chunks/ssr/app_agents_page_tsx_f5f08ed8._.js +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/components_thread_WorkspaceSidebar_tsx_e660301b._.js +1 -1
- package/cloud-runtime/standalone/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/.next/server/pages/404.html +1 -1
- package/cloud-runtime/standalone/.next/server/pages/500.html +2 -2
- package/cloud-runtime/standalone/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/.next/static/chunks/2a3594d4cb2efe79.css +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/78f6cef7d2129d30.js +1 -0
- package/cloud-runtime/standalone/.next/static/chunks/81704a1c525bf2ee.js +1 -0
- package/cloud-runtime/standalone/app/agents/page.tsx +19 -214
- package/cloud-runtime/standalone/components/thread/WorkspaceSidebar.tsx +99 -91
- package/package.json +1 -1
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_2da02644._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/_60f7e403._.js +0 -3
- package/cloud-runtime/standalone/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_001a8448._.js +0 -3
- package/cloud-runtime/standalone/.next/static/chunks/1f1b912fe2e3d5bd.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/4b3358c52d01a3f9.css +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/5488a71a8515e8b2.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/5ce01dbd17ce3bb2.js +0 -1
- package/cloud-runtime/standalone/.next/static/chunks/b649593a57df218f.js +0 -1
- /package/cloud-runtime/standalone/.next/static/{H3MuYxcqCPfZoSC2uYW8f → R2CPNTvy5domQF90j_DYV}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/.next/static/{H3MuYxcqCPfZoSC2uYW8f → R2CPNTvy5domQF90j_DYV}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/.next/static/{H3MuYxcqCPfZoSC2uYW8f → R2CPNTvy5domQF90j_DYV}/_ssgManifest.js +0 -0
|
@@ -402,12 +402,12 @@ export function WorkspaceSidebar({
|
|
|
402
402
|
</nav>
|
|
403
403
|
|
|
404
404
|
<nav className="workspace-sidebar__section">
|
|
405
|
-
<div className="workspace-sidebar__section-header">
|
|
405
|
+
<div className="workspace-sidebar__section-header group/projects-header">
|
|
406
406
|
<p className="workspace-sidebar__section-label">Projects</p>
|
|
407
407
|
<div className="workspace-sidebar__header-actions">
|
|
408
408
|
<button
|
|
409
409
|
type="button"
|
|
410
|
-
className="workspace-sidebar__action"
|
|
410
|
+
className="workspace-sidebar__action opacity-0 transition-opacity group-hover/projects-header:opacity-100"
|
|
411
411
|
onClick={() => handleCreateProject()}
|
|
412
412
|
aria-label="Create project"
|
|
413
413
|
title="Create project"
|
|
@@ -494,32 +494,29 @@ export function WorkspaceSidebar({
|
|
|
494
494
|
</Link>
|
|
495
495
|
</div>
|
|
496
496
|
<div className="pt-1">
|
|
497
|
-
<div className="flex items-center justify-between px-2 py-1">
|
|
497
|
+
<div className="group/repos-header flex items-center justify-between px-2 py-1">
|
|
498
498
|
<p className="text-[10px] font-medium text-slate-400 uppercase tracking-wide">Repos</p>
|
|
499
|
-
<
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
<Plus size={12} />
|
|
521
|
-
</button>
|
|
522
|
-
</div>
|
|
499
|
+
<button
|
|
500
|
+
type="button"
|
|
501
|
+
className="workspace-sidebar__action opacity-0 transition-opacity group-hover/repos-header:opacity-100 text-slate-300 hover:text-white"
|
|
502
|
+
onClick={() => setRepoDetail({
|
|
503
|
+
projectId: project.id,
|
|
504
|
+
projectName: project.name,
|
|
505
|
+
repoId: null,
|
|
506
|
+
name: "",
|
|
507
|
+
path: "",
|
|
508
|
+
gitUrl: "",
|
|
509
|
+
notes: "",
|
|
510
|
+
generatedKnowledge: [],
|
|
511
|
+
isLoadingKnowledge: false,
|
|
512
|
+
isSaving: false,
|
|
513
|
+
error: null,
|
|
514
|
+
})}
|
|
515
|
+
aria-label="Add repo"
|
|
516
|
+
title="Add repo"
|
|
517
|
+
>
|
|
518
|
+
<Plus size={12} />
|
|
519
|
+
</button>
|
|
523
520
|
</div>
|
|
524
521
|
{project.repos.length > 0 ? (
|
|
525
522
|
project.repos.map((repo) => (
|
|
@@ -574,76 +571,87 @@ export function WorkspaceSidebar({
|
|
|
574
571
|
)}
|
|
575
572
|
</div>
|
|
576
573
|
<div className="pt-1">
|
|
577
|
-
<div className="flex items-center justify-between px-2 py-1">
|
|
574
|
+
<div className="group/agents-header flex items-center justify-between px-2 py-1">
|
|
578
575
|
<p className="text-[10px] font-medium text-slate-400 uppercase tracking-wide">Agents</p>
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
576
|
+
{project.agents.length > 0 && (
|
|
577
|
+
<button
|
|
578
|
+
type="button"
|
|
579
|
+
className="workspace-sidebar__action opacity-0 transition-opacity group-hover/agents-header:opacity-100 text-slate-300 hover:text-white"
|
|
580
|
+
onClick={() => handleAddAgentToProject(project.id)}
|
|
581
|
+
aria-label="Add agents"
|
|
582
|
+
title="Add agents"
|
|
583
|
+
>
|
|
584
|
+
<Plus size={12} />
|
|
585
|
+
</button>
|
|
586
|
+
)}
|
|
588
587
|
</div>
|
|
589
588
|
{project.agents.length > 0 ? (
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
e
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
e
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
}}
|
|
608
|
-
onDragEnd={() => {
|
|
609
|
-
if (dragState && dragState.projectId === project.id && onReorderProjectAgents) {
|
|
610
|
-
const currentIds = project.agents.map((a) => a.agent_id);
|
|
611
|
-
const fromIndex = currentIds.indexOf(dragState.agentId);
|
|
612
|
-
const toIndex = dragState.overIndex;
|
|
613
|
-
if (fromIndex !== -1 && fromIndex !== toIndex) {
|
|
614
|
-
const reordered = [...currentIds];
|
|
615
|
-
const [moved] = reordered.splice(fromIndex, 1);
|
|
616
|
-
reordered.splice(toIndex, 0, moved);
|
|
617
|
-
void onReorderProjectAgents(project.id, reordered);
|
|
589
|
+
<>
|
|
590
|
+
{project.agents.map((projectAgent, agentIndex) => {
|
|
591
|
+
const agent = participants.find((participant) => participant.id === projectAgent.agent_id);
|
|
592
|
+
const isDragging = dragState?.projectId === project.id && dragState?.agentId === projectAgent.agent_id;
|
|
593
|
+
const isDragOver = dragState?.projectId === project.id && dragState?.overIndex === agentIndex && !isDragging;
|
|
594
|
+
return (
|
|
595
|
+
<div
|
|
596
|
+
key={projectAgent.agent_id}
|
|
597
|
+
draggable
|
|
598
|
+
onDragStart={(e) => {
|
|
599
|
+
e.dataTransfer.effectAllowed = "move";
|
|
600
|
+
setDragState({ projectId: project.id, agentId: projectAgent.agent_id, overIndex: agentIndex });
|
|
601
|
+
}}
|
|
602
|
+
onDragOver={(e) => {
|
|
603
|
+
e.preventDefault();
|
|
604
|
+
if (dragState && dragState.projectId === project.id) {
|
|
605
|
+
setDragState((prev) => prev ? { ...prev, overIndex: agentIndex } : null);
|
|
618
606
|
}
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
607
|
+
}}
|
|
608
|
+
onDragEnd={() => {
|
|
609
|
+
if (dragState && dragState.projectId === project.id && onReorderProjectAgents) {
|
|
610
|
+
const currentIds = project.agents.map((a) => a.agent_id);
|
|
611
|
+
const fromIndex = currentIds.indexOf(dragState.agentId);
|
|
612
|
+
const toIndex = dragState.overIndex;
|
|
613
|
+
if (fromIndex !== -1 && fromIndex !== toIndex) {
|
|
614
|
+
const reordered = [...currentIds];
|
|
615
|
+
const [moved] = reordered.splice(fromIndex, 1);
|
|
616
|
+
reordered.splice(toIndex, 0, moved);
|
|
617
|
+
void onReorderProjectAgents(project.id, reordered);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
setDragState(null);
|
|
621
|
+
}}
|
|
622
|
+
className={`flex items-center ${isDragOver ? "border-t-2 border-slate-400" : "border-t-2 border-transparent"} ${isDragging ? "opacity-40" : ""}`}
|
|
628
623
|
>
|
|
629
|
-
<
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
624
|
+
<button
|
|
625
|
+
type="button"
|
|
626
|
+
className="workspace-sidebar__nav-item ml-2 flex-1 min-w-0"
|
|
627
|
+
onClick={() => setAgentDetailId(projectAgent.agent_id)}
|
|
628
|
+
>
|
|
629
|
+
<span className="cursor-grab text-slate-300 hover:text-slate-500 flex-shrink-0 mr-0.5" title="Drag to reorder">⠿</span>
|
|
630
|
+
<img
|
|
631
|
+
src={agentAvatarUrl(projectAgent.agent_id, 16, agent?.color)}
|
|
632
|
+
alt=""
|
|
633
|
+
className="w-4 h-4 rounded-full flex-shrink-0"
|
|
634
|
+
/>
|
|
635
|
+
<span className="workspace-sidebar__workspace-title text-xs truncate">
|
|
636
|
+
{agent?.name ?? projectAgent.agent_id}
|
|
637
|
+
</span>
|
|
638
|
+
{agentIndex === 0 && (
|
|
639
|
+
<span className="ml-auto text-[9px] text-slate-400 font-medium flex-shrink-0" title="Default responder (top agent responds first)">DEFAULT</span>
|
|
640
|
+
)}
|
|
641
|
+
</button>
|
|
642
|
+
</div>
|
|
643
|
+
);
|
|
644
|
+
})}
|
|
645
|
+
</>
|
|
645
646
|
) : (
|
|
646
|
-
<
|
|
647
|
+
<button
|
|
648
|
+
type="button"
|
|
649
|
+
className="ml-4 inline-flex items-center gap-1 py-1 text-[11px] font-medium text-slate-500 transition-colors hover:text-slate-700"
|
|
650
|
+
onClick={() => handleAddAgentToProject(project.id)}
|
|
651
|
+
>
|
|
652
|
+
<Plus size={10} />
|
|
653
|
+
<span>Add agents</span>
|
|
654
|
+
</button>
|
|
647
655
|
)}
|
|
648
656
|
</div>
|
|
649
657
|
</div>
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[95348,a=>{"use strict";var b=a.i(72131),c=a.i(50944),d=a.i(89116);function e(){}let f=a=>[...a].sort((a,b)=>b.createdAt-a.createdAt);function g(a){let g=(0,c.useSearchParams)(),h=(0,b.useRef)(!0),[i,j]=(0,b.useState)([]),[k,l]=(0,b.useState)(null),[m,n]=(0,b.useState)(!0),[o,p]=(0,b.useState)(!0),[q,r]=(0,b.useState)(!1),[s,t]=(0,b.useState)(null),[u,v]=(0,b.useState)(null),w=(0,b.useRef)(!1),x=(0,b.useCallback)(a=>{l(a)},[]);(0,b.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]),(0,b.useEffect)(()=>{let b=!1;return(async()=>{try{let c,f=await d.threadService.listThreads();if(b||!h.current)return;j(f);let i=a||g.get("thread")||null,{threadId:k,shouldClearSavedId:m,restoredFromStorage:n}=(c=f[0]?.id??null,i?f.some(a=>a.id===i)?{threadId:i,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:c,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:c,shouldClearSavedId:!1,restoredFromStorage:!1});m&&e(),w.current||(w.current=!0),n&&k?x(k):k?l(a=>a??k):l(null)}catch(a){console.error("Failed to load threads",a)}finally{h.current&&(n(!1),p(!1))}})(),()=>{b=!0}},[x,g,a]),(0,b.useEffect)(()=>{w.current&&(k||e())},[k]);let y=(0,b.useCallback)(async a=>{r(!0);try{let b=await d.threadService.createThread(a);if(!h.current)return b;return j(a=>f([...a.filter(a=>a.id!==b.id),b])),l(b.id),b}catch(a){throw console.error("Failed to create thread",a),a}finally{h.current&&r(!1)}},[]),z=(0,b.useCallback)(async a=>{if(a){t(a);try{if(await d.threadService.deleteThread(a),!h.current)return;let b=[];j(c=>b=f(c.filter(b=>b.id!==a))),l(c=>c===a?b[0]?.id??null:c)}catch(a){throw console.error("Failed to delete thread",a),a}finally{h.current&&t(null)}}},[]),A=(0,b.useCallback)(async(a,b)=>{let c=a.trim(),e=b.trim();if(c&&e){v(c);try{let a=await d.threadService.renameThread(c,e);if(!a||!h.current)return;j(b=>f(b.map(b=>b.id===a.id?a:b)))}catch(a){throw console.error("Failed to rename thread",a),a}finally{h.current&&v(a=>a===c?null:a)}}},[]),B=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.saveThreadMessages(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread messages",a)}},[]),C=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadStatus(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread status",a)}},[]),D=(0,b.useCallback)(async(a,b)=>{if(a)try{let c=await d.threadService.updateThreadOutcomeNote(a,b);if(!c||!h.current)return;j(a=>f(a.map(a=>a.id===c.id?c:a)))}catch(a){console.error("Failed to update thread outcome note",a)}},[]),E=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageThreadStatus(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message thread status",a)}},[]),F=(0,b.useCallback)(async(a,b,c)=>{if(a&&b)try{let e=await d.threadService.updateMessageOutcomeNote(a,b,c);if(!e||!h.current)return;j(a=>f(a.map(a=>a.id===e.id?e:a)))}catch(a){console.error("Failed to update message outcome note",a)}},[]),G=null!==k&&s===k;return{threads:i,activeThreadId:k,selectThread:x,createThread:y,deleteThread:z,isLoading:m,isRestoringActiveThread:o,isCreating:q,deletingThreadId:s,renamingThreadId:u,isDeletingActiveThread:G,updateThreadMessages:B,renameThread:A,updateThreadStatus:C,updateThreadOutcomeNote:D,updateMessageThreadStatus:E,updateMessageOutcomeNote:F}}a.s(["useThreadState",()=>g],95348)},89116,a=>{"use strict";let b="agx-chat:threads";function c(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function d(){let a=c().getItem(b);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata,status:d?.status,outcomeNote:d?.outcomeNote,projectId:"string"==typeof d?.projectId?d.projectId:"string"==typeof d?.teamId?d.teamId:d?.projectId===null||d?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function e(a){c().setItem(b,JSON.stringify(a))}function f(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let g=new class{async saveThread(a){let b=Date.now(),c=d(),g=c.threads[a.id],h=g?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i,status:a.status,outcomeNote:a.outcomeNote,projectId:a.projectId??a.teamId};return c.threads[a.id]=j,e(c),f(j)}async loadThread(a){let b=d().threads[a];return b?f(b):null}async listThreads(a){let b=Object.values(d().threads),c=a?.order??"desc",e=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),g=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?e.slice(g,g+h):e.slice(g);return{total:b.length,threads:i.map(f)}}async deleteThread(a){let b=d();b.threads[a]&&(delete b.threads[a],e(b))}};a.s(["threadService",0,{listThreads:async()=>[...(await g.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await g.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return g.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return g.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await g.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await g.loadThread(c);return e?(e.title?.trim()??"")===d?e:g.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async updateThreadStatus(a,b){let c=await g.loadThread(a);return c?c.status===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:b,outcomeNote:c.outcomeNote}):null},async updateThreadOutcomeNote(a,b){let c=await g.loadThread(a);return c?c.outcomeNote===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:c.status,outcomeNote:b}):null},async updateMessageThreadStatus(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,threadStatus:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async updateMessageOutcomeNote(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,outcomeNote:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async saveThreadMessages(a,b){let c=await g.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:g.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}}],89116)},81560,a=>{"use strict";let b=(0,a.i(60137).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],81560)},87532,a=>{"use strict";let b=(0,a.i(60137).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);a.s(["Search",()=>b],87532)},44637,a=>{"use strict";var b=a.i(90944),c=a.i(72131);let d={name:"",description:""},e={name:"",path:"",notes:""};function f(){let[a,b]=(0,c.useState)(d),[f,g]=(0,c.useState)([e]),[h,i]=(0,c.useState)(!1),[j,k]=(0,c.useState)(null),l=(0,c.useCallback)((a,b,c)=>{g(d=>d.map((d,e)=>e===a?{...d,[b]:c}:d))},[]),m=(0,c.useCallback)(()=>{g(a=>[...a,{...e}])},[]),n=(0,c.useCallback)(a=>{g(b=>b.filter((b,c)=>c!==a))},[]),o=(0,c.useCallback)(()=>{b(d),g([e]),k(null)},[]),p=(0,c.useCallback)(a=>{b({name:a.name||"",description:a.description||""}),a.repos&&a.repos.length>0?g(a.repos.map(a=>({id:a.id,name:a.name||"",path:a.path||"",git_url:a.git_url||"",notes:a.notes||""}))):g([e]),k(null)},[]);return{form:a,setForm:b,repos:f,handleRepoChange:l,addRepo:m,removeRepo:n,resetForm:o,hydrateFromProject:p,isSubmitting:h,setIsSubmitting:i,formError:j,setFormError:k}}function g(a,b){let c=b.filter(a=>a.name.trim()&&a.path.trim()).map(a=>({...a.id?{id:a.id}:{},name:a.name.trim(),path:a.path.trim(),...a.git_url?.trim()?{git_url:a.git_url.trim()}:{},notes:a.notes.trim()||void 0}));return{name:a.name.trim(),description:a.description.trim()||void 0,repos:c.length?c:void 0}}function h({form:a,repos:d,isEditingProject:e,isSubmitting:f,onFieldChange:g,onRepoChange:h,onAddRepo:i,onRemoveRepo:j}){let[k,l]=(0,c.useState)([]),m=(0,c.useRef)(0);(0,c.useEffect)(()=>{e?l([]):l(d.map((a,b)=>b)),m.current=d.length},[e,d.length]),(0,c.useEffect)(()=>{if(!e){m.current=d.length;return}let a=m.current;l(b=>{let c=b.filter(a=>a<d.length);return d.length>a&&c.push(...Array.from({length:d.length-a},(b,c)=>a+c)),c}),m.current=d.length},[e,d.length]);let n=(0,c.useCallback)(a=>{l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a])},[]),o=(0,c.useCallback)(a=>!e||k.includes(a),[k,e]);return(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)("div",{className:"grid gap-4",children:(0,b.jsxs)("label",{className:"space-y-1.5 block",children:[(0,b.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Project Name"}),(0,b.jsx)("input",{value:a.name,onChange:a=>g("name",a.target.value),className:"input w-full",placeholder:"e.g. AGX Cloud",disabled:f})]})}),(0,b.jsxs)("label",{className:"space-y-1.5 block",children:[(0,b.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Description"}),(0,b.jsx)("textarea",{value:a.description,onChange:a=>g("description",a.target.value),className:"input w-full h-24 resize-none",placeholder:"What is this project about?",disabled:f})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--card-border)] pb-2",children:[(0,b.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"Repositories"}),(0,b.jsx)("button",{type:"button",onClick:i,className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:f,children:"+ Add Repository"})]}),(0,b.jsx)("div",{className:"space-y-4",children:d.map((a,c)=>(0,b.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 space-y-3 relative group",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"text-xs font-bold text-[var(--foreground)] uppercase",children:["Repo #",c+1]}),e&&!o(c)?(0,b.jsxs)("div",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)("div",{children:a.name||"Unnamed repository"}),(0,b.jsx)("div",{className:"truncate",children:a.path||"No local path set"})]}):null]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[e&&(0,b.jsx)("button",{type:"button",onClick:()=>n(c),className:"text-xs font-semibold text-[var(--primary)] hover:underline",disabled:f,children:o(c)?"Done":"Edit"}),d.length>1&&(0,b.jsx)("button",{type:"button",onClick:()=>j(c),className:"text-xs font-semibold text-[var(--destructive)] hover:underline",disabled:f,children:"Remove"})]})]}),o(c)?(0,b.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,b.jsx)("input",{value:a.name,onChange:a=>h(c,"name",a.target.value),placeholder:"Name (e.g. Frontend)",className:"input text-sm",disabled:f}),(0,b.jsx)("input",{value:a.path,onChange:a=>h(c,"path",a.target.value),placeholder:"Local path (mandatory)",className:"input text-sm",disabled:f}),(0,b.jsx)("div",{className:"md:col-span-2",children:(0,b.jsx)("textarea",{value:a.notes,onChange:a=>h(c,"notes",a.target.value),placeholder:"Repo-specific rules and notes (placeholder for conventions, constraints, ownership, deploy notes...)",className:"input text-sm w-full min-h-24 resize-y",disabled:f})})]}):null]},c))})]})]})}function i({isOpen:a,onClose:d,onSubmit:e,editingProject:f,form:g,repos:i,isSubmitting:j,formError:k,onFieldChange:l,onRepoChange:m,onAddRepo:n,onRemoveRepo:o}){let[p,q]=(0,c.useState)([]);return((0,c.useEffect)(()=>{let a=!1;return async function(){if(!f)return q([]);try{let b=await fetch(`/api/projects/${f.id}/memory?producer=system`),c=b.ok?await b.json():{memory:[]};a||q(c.memory??[])}catch{a||q([])}}(),()=>{a=!0}},[f]),a)?(0,b.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:a=>a.target===a.currentTarget&&d(),children:(0,b.jsxs)("div",{className:"modal-content w-full max-w-4xl mx-2 sm:mx-auto bg-[var(--card-bg)] rounded-3xl border border-[var(--card-border)] shadow-2xl animate-scale-in flex flex-col max-h-[90vh]",children:[(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-xl font-bold",children:f?"Edit Project":"Create New Project"}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:f?"Update your project settings and repositories.":"Define a new project and connect repositories."})]}),(0,b.jsx)("button",{onClick:d,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,b.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 sm:p-8",children:[f&&(0,b.jsx)("div",{className:"mb-6",children:(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--muted)]/20 p-4",children:[(0,b.jsx)("h3",{className:"text-sm font-bold uppercase tracking-widest text-[var(--muted-foreground)]",children:"System-Generated Project Knowledge"}),p.length>0?(0,b.jsx)("div",{className:"mt-3 space-y-2",children:p.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--card-border)] bg-white 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:"mt-2 text-sm text-[var(--muted-foreground)]",children:"No system-generated project knowledge candidates yet."})]})}),(0,b.jsx)(h,{form:g,repos:i,isEditingProject:!!f,isSubmitting:j,onFieldChange:l,onRepoChange:m,onAddRepo:n,onRemoveRepo:o}),k&&(0,b.jsx)("div",{className:"mt-6 p-4 rounded-xl bg-[var(--destructive-muted)] border border-[var(--destructive)]/20 text-sm text-[var(--destructive)]",children:k})]}),(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-t border-[var(--card-border)] flex items-center justify-end gap-3 flex-shrink-0",children:[(0,b.jsx)("button",{onClick:d,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Cancel"}),(0,b.jsx)("button",{onClick:e,disabled:j,className:"btn-primary px-8 py-2 shadow-lg shadow-[var(--primary)]/20 min-w-[120px]",children:j?(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"spinner w-3 h-3 border-2 border-white/20 border-t-white"}),"Saving..."]}):f?"Save Changes":"Create Project"})]})]})}):null}a.s(["createProjectPayload",()=>g,"default",()=>i,"useProjectFormState",()=>f])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_2da02644._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[89116,a=>{"use strict";let b="agx-chat:threads";function c(){let a=globalThis.localStorage;if(!a)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return a}function d(){let a=c().getItem(b);if(!a)return{threads:{}};try{let b=JSON.parse(a);if(b&&"object"==typeof b&&b.threads&&"object"==typeof b.threads)return{threads:Object.fromEntries(Object.entries(b.threads).map(([a,b])=>{var c,d;return[a,(c=a,d=b,{id:c,title:d?.title,messages:Array.isArray(d?.messages)?[...d.messages]:[],createdAt:"number"==typeof d?.createdAt?d.createdAt:Date.now(),updatedAt:"number"==typeof d?.updatedAt?d.updatedAt:Date.now(),metadata:d?.metadata,status:d?.status,outcomeNote:d?.outcomeNote,projectId:"string"==typeof d?.projectId?d.projectId:"string"==typeof d?.teamId?d.teamId:d?.projectId===null||d?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function e(a){c().setItem(b,JSON.stringify(a))}function f(a){return{...a,messages:a.messages.map(a=>({...a})),metadata:a.metadata?{...a.metadata}:void 0}}let g=new class{async saveThread(a){let b=Date.now(),c=d(),g=c.threads[a.id],h=g?.createdAt??a.createdAt??b,i=a.updatedAt??b,j={id:a.id,title:a.title,messages:a.messages.map(a=>({...a})),metadata:a.metadata,createdAt:h,updatedAt:i,status:a.status,outcomeNote:a.outcomeNote,projectId:a.projectId??a.teamId};return c.threads[a.id]=j,e(c),f(j)}async loadThread(a){let b=d().threads[a];return b?f(b):null}async listThreads(a){let b=Object.values(d().threads),c=a?.order??"desc",e=[...b].sort((a,b)=>"asc"===c?a.updatedAt-b.updatedAt:b.updatedAt-a.updatedAt),g=Math.max(0,a?.offset??0),h=a?.limit,i="number"==typeof h&&h>=0?e.slice(g,g+h):e.slice(g);return{total:b.length,threads:i.map(f)}}async deleteThread(a){let b=d();b.threads[a]&&(delete b.threads[a],e(b))}};a.s(["threadService",0,{listThreads:async()=>[...(await g.listThreads({order:"desc"})).threads.filter(a=>!0!==a.metadata?.archived)].sort((a,b)=>b.updatedAt-a.updatedAt),async createThread(a){let b="string"==typeof a?.id?a.id.trim():"";if(b){let c=await g.loadThread(b);if(c){let b={...c.metadata??{},...a?.metadata??{},archived:!1,archivedAt:null};return g.saveThread({id:c.id,title:a?.title??c.title,messages:a?.messages?.length?a.messages:c.messages,metadata:b,createdAt:c.createdAt})}}let c={id:b||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:a?.messages?.length?a.messages:[],title:a?.title,metadata:a?.metadata};return g.saveThread(c)},async deleteThread(a){let b=a.trim();if(!b)return;let c=await g.loadThread(b);if(!c)return;let d={...c.metadata??{},archived:!0,archivedAt:Date.now()};await g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:d,createdAt:c.createdAt})},async renameThread(a,b){let c=a.trim(),d=b.trim();if(!c||!d)return null;let e=await g.loadThread(c);return e?(e.title?.trim()??"")===d?e:g.saveThread({id:e.id,title:d,messages:e.messages,metadata:e.metadata,createdAt:e.createdAt}):null},async updateThreadStatus(a,b){let c=await g.loadThread(a);return c?c.status===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:b,outcomeNote:c.outcomeNote}):null},async updateThreadOutcomeNote(a,b){let c=await g.loadThread(a);return c?c.outcomeNote===b?c:g.saveThread({id:c.id,title:c.title,messages:c.messages,metadata:c.metadata,createdAt:c.createdAt,status:c.status,outcomeNote:b}):null},async updateMessageThreadStatus(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,threadStatus:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async updateMessageOutcomeNote(a,b,c){let d=await g.loadThread(a);if(!d)return null;let e=d.messages.map(a=>a.id===b?{...a,outcomeNote:c}:a);return g.saveThread({id:d.id,title:d.title,messages:e,metadata:d.metadata,createdAt:d.createdAt,status:d.status,outcomeNote:d.outcomeNote})},async saveThreadMessages(a,b){let c=await g.loadThread(a);if(!c)return null;let d=c.title?.trim()||function(a){let b=a.find(a=>"user"===a.role)?.content?.trim();if(!b)return;let c=b.replace(/\s+/g," ");return c.length>60?`${c.slice(0,60).trim()}…`:c}(b);return function(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1){let d=a[c],e=b[c];if(d.id!==e.id||d.role!==e.role||d.participantId!==e.participantId||d.content!==e.content||d.timestamp!==e.timestamp)return!1}return!0}(c.messages,b)&&(c.title?.trim()||void 0)===d?c:g.saveThread({id:c.id,title:d,messages:b,metadata:c.metadata,createdAt:c.createdAt})}}],89116)},56196,a=>{"use strict";var b=a.i(72131);function c(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!1),[f,g]=(0,b.useState)(null),h=(0,b.useCallback)(async()=>{e(!0);try{let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();c(b.projects??[]),g(null)}catch(a){g(a instanceof Error?a:Error("Unknown error"))}finally{e(!1)}},[]);(0,b.useEffect)(()=>{h()},[h]);let i=(0,b.useCallback)(async a=>{let b=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to create project");let d=(await b.json()).project;return c(a=>[d,...a]),d},[]);return{projects:a,isLoading:d,error:f,refetch:h,createProject:i,updateProject:(0,b.useCallback)(async(a,b)=>{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"Failed to update project");let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?e:b)),e},[]),deleteProject:(0,b.useCallback)(async a=>{let b=await fetch(`/api/projects/${a}`,{method:"DELETE"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to delete project");c(b=>b.filter(b=>b.id!==a))},[])}}function d(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!0),f=(0,b.useCallback)(async()=>{try{let a=await fetch("/api/projects");if(!a.ok)return;let{projects:b}=await a.json(),d=await Promise.all((b??[]).map(async a=>{let b=[],c=[];try{let[d,e]=await Promise.all([fetch(`/api/projects/${a.id}/agents`),fetch(`/api/projects/${a.id}/threads`)]);d.ok&&(b=(await d.json()).agents??[]),e.ok&&(c=((await e.json()).threads??[]).map(a=>a.thread_id))}catch{}return{...a,repos:a.repos??[],agents:b.map(b=>({project_id:a.id,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at})),thread_ids:c,workspace_ids:c}}));c(d)}catch{}finally{e(!1)}},[]);(0,b.useEffect)(()=>{f()},[f]);let g=(0,b.useCallback)(async(a,b)=>{try{let d="string"==typeof a?{name:a}:a,e=d.name.trim(),f=(d.slug||e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),g=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...d,name:e,slug:f})});if(!g.ok)return null;let{project:h}=await g.json(),i=Array.isArray(b)?b:b?[b]:[];for(let a of i)await fetch(`/api/projects/${h.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:a})}).catch(()=>{});let j={...h,repos:h.repos??[],agents:[],thread_ids:i,workspace_ids:i};return c(a=>[...a,j].sort((a,b)=>a.name.localeCompare(b.name))),j}catch{return null}},[]),h=(0,b.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:b})})).ok)return;c(c=>c.map(c=>c.id===a?{...c,name:b}:c).sort((a,b)=>a.name.localeCompare(b.name)))}catch{}},[]),i=(0,b.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)return;c(b=>b.filter(b=>b.id!==a))}catch{}},[]),j=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error(a.error||"Failed to update project")}let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?{...b,...e,repos:e.repos??b.repos}:b)),e}catch{return null}},[]),k=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),l=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents?agentId=${b}`,{method:"DELETE"});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]);return{projects:a,isLoading:d,createProject:g,updateProject:j,renameProject:h,deleteProject:i,addAgent:k,removeAgent:l,reorderAgents:(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),moveAgent:(0,b.useCallback)(async(a,b,c)=>{try{await fetch(`/api/projects/${b}/agents?agentId=${a}`,{method:"DELETE"}),await fetch(`/api/projects/${c}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a})}),await f()}catch{}},[f]),refresh:f}}a.s(["useProjects",()=>c,"useProjectsWithAgents",()=>d])},81560,a=>{"use strict";let b=(0,a.i(60137).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],81560)},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},39118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},60137,a=>{"use strict";var b=a.i(72131);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.forwardRef)(({color:a="currentColor",size:d=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...e,width:d,height:d,stroke:a,strokeWidth:g?24*Number(f)/Number(d):f,className:c("lucide",h),...!i&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(k)&&{"aria-hidden":"true"},...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]])),g=(a,e)=>{let g=(0,b.forwardRef)(({className:g,...h},i)=>(0,b.createElement)(f,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,g),...h}));return g.displayName=d(a),g};a.s(["default",()=>g],60137)},15618,a=>{"use strict";let b=(0,a.i(60137).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",()=>b],15618)},53722,a=>{"use strict";let b=(0,a.i(60137).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);a.s(["BookOpen",()=>b],53722)},47349,(a,b,c)=>{"use strict";var d=a.r(72131);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},87610,(a,b,c)=>{"use strict";b.exports=a.r(47349)},97514,(a,b,c)=>{"use strict";var d=a.r(72131),e=a.r(87610),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},64442,(a,b,c)=>{"use strict";b.exports=a.r(97514)},50522,a=>{"use strict";let b=(0,a.i(60137).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],50522)},2835,a=>{"use strict";let b=(0,a.i(60137).default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);a.s(["Hash",()=>b],2835)},99464,a=>{"use strict";let b=(0,a.i(60137).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",()=>b],99464)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_60f7e403._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[210,a=>{"use strict";let b=(0,a.i(60137).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],210)},5151,a=>{"use strict";let b=(0,a.i(60137).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],5151)},33441,a=>{"use strict";let b=(0,a.i(60137).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",()=>b],33441)},84505,a=>{"use strict";let b=(0,a.i(60137).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",()=>b],84505)},60246,a=>{"use strict";let b=(0,a.i(60137).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);a.s(["Users",()=>b],60246)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=node_modules_lucide-react_dist_esm_icons_001a8448._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",()=>t],71689)},43531,e=>{"use strict";let t=(0,e.i(75254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],43531)},40160,e=>{"use strict";let t=(0,e.i(75254).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",()=>t],40160)},61911,e=>{"use strict";let t=(0,e.i(75254).default)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);e.s(["Users",()=>t],61911)},99438,e=>{"use strict";let t="agx-chat:threads";function r(){let e=globalThis.localStorage;if(!e)throw Error("LocalThreadAdapter requires a browser-like environment with `localStorage`.");return e}function a(){let e=r().getItem(t);if(!e)return{threads:{}};try{let t=JSON.parse(e);if(t&&"object"==typeof t&&t.threads&&"object"==typeof t.threads)return{threads:Object.fromEntries(Object.entries(t.threads).map(([e,t])=>{var r,a;return[e,(r=e,a=t,{id:r,title:a?.title,messages:Array.isArray(a?.messages)?[...a.messages]:[],createdAt:"number"==typeof a?.createdAt?a.createdAt:Date.now(),updatedAt:"number"==typeof a?.updatedAt?a.updatedAt:Date.now(),metadata:a?.metadata,status:a?.status,outcomeNote:a?.outcomeNote,projectId:"string"==typeof a?.projectId?a.projectId:"string"==typeof a?.teamId?a.teamId:a?.projectId===null||a?.teamId===null?null:void 0})]}))}}catch{}return{threads:{}}}function n(e){r().setItem(t,JSON.stringify(e))}function o(e){return{...e,messages:e.messages.map(e=>({...e})),metadata:e.metadata?{...e.metadata}:void 0}}let s=new class{async saveThread(e){let t=Date.now(),r=a(),s=r.threads[e.id],i=s?.createdAt??e.createdAt??t,u=e.updatedAt??t,c={id:e.id,title:e.title,messages:e.messages.map(e=>({...e})),metadata:e.metadata,createdAt:i,updatedAt:u,status:e.status,outcomeNote:e.outcomeNote,projectId:e.projectId??e.teamId};return r.threads[e.id]=c,n(r),o(c)}async loadThread(e){let t=a().threads[e];return t?o(t):null}async listThreads(e){let t=Object.values(a().threads),r=e?.order??"desc",n=[...t].sort((e,t)=>"asc"===r?e.updatedAt-t.updatedAt:t.updatedAt-e.updatedAt),s=Math.max(0,e?.offset??0),i=e?.limit,u="number"==typeof i&&i>=0?n.slice(s,s+i):n.slice(s);return{total:t.length,threads:u.map(o)}}async deleteThread(e){let t=a();t.threads[e]&&(delete t.threads[e],n(t))}};e.s(["threadService",0,{listThreads:async()=>[...(await s.listThreads({order:"desc"})).threads.filter(e=>!0!==e.metadata?.archived)].sort((e,t)=>t.updatedAt-e.updatedAt),async createThread(e){let t="string"==typeof e?.id?e.id.trim():"";if(t){let r=await s.loadThread(t);if(r){let t={...r.metadata??{},...e?.metadata??{},archived:!1,archivedAt:null};return s.saveThread({id:r.id,title:e?.title??r.title,messages:e?.messages?.length?e.messages:r.messages,metadata:t,createdAt:r.createdAt})}}let r={id:t||("u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`thread-${Date.now()}-${Math.random().toString(16).slice(2)}`),messages:e?.messages?.length?e.messages:[],title:e?.title,metadata:e?.metadata};return s.saveThread(r)},async deleteThread(e){let t=e.trim();if(!t)return;let r=await s.loadThread(t);if(!r)return;let a={...r.metadata??{},archived:!0,archivedAt:Date.now()};await s.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:a,createdAt:r.createdAt})},async renameThread(e,t){let r=e.trim(),a=t.trim();if(!r||!a)return null;let n=await s.loadThread(r);return n?(n.title?.trim()??"")===a?n:s.saveThread({id:n.id,title:a,messages:n.messages,metadata:n.metadata,createdAt:n.createdAt}):null},async updateThreadStatus(e,t){let r=await s.loadThread(e);return r?r.status===t?r:s.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:r.metadata,createdAt:r.createdAt,status:t,outcomeNote:r.outcomeNote}):null},async updateThreadOutcomeNote(e,t){let r=await s.loadThread(e);return r?r.outcomeNote===t?r:s.saveThread({id:r.id,title:r.title,messages:r.messages,metadata:r.metadata,createdAt:r.createdAt,status:r.status,outcomeNote:t}):null},async updateMessageThreadStatus(e,t,r){let a=await s.loadThread(e);if(!a)return null;let n=a.messages.map(e=>e.id===t?{...e,threadStatus:r}:e);return s.saveThread({id:a.id,title:a.title,messages:n,metadata:a.metadata,createdAt:a.createdAt,status:a.status,outcomeNote:a.outcomeNote})},async updateMessageOutcomeNote(e,t,r){let a=await s.loadThread(e);if(!a)return null;let n=a.messages.map(e=>e.id===t?{...e,outcomeNote:r}:e);return s.saveThread({id:a.id,title:a.title,messages:n,metadata:a.metadata,createdAt:a.createdAt,status:a.status,outcomeNote:a.outcomeNote})},async saveThreadMessages(e,t){let r=await s.loadThread(e);if(!r)return null;let a=r.title?.trim()||function(e){let t=e.find(e=>"user"===e.role)?.content?.trim();if(!t)return;let r=t.replace(/\s+/g," ");return r.length>60?`${r.slice(0,60).trim()}…`:r}(t);return function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1){let a=e[r],n=t[r];if(a.id!==n.id||a.role!==n.role||a.participantId!==n.participantId||a.content!==n.content||a.timestamp!==n.timestamp)return!1}return!0}(r.messages,t)&&(r.title?.trim()||void 0)===a?r:s.saveThread({id:r.id,title:a,messages:t,metadata:r.metadata,createdAt:r.createdAt})}}],99438)},74049,e=>{"use strict";var t=e.i(71645);function r(){let[e,r]=(0,t.useState)([]),[a,n]=(0,t.useState)(!1),[o,s]=(0,t.useState)(null),i=(0,t.useCallback)(async()=>{n(!0);try{let e=await fetch("/api/projects");if(!e.ok)throw Error("Failed to fetch projects");let t=await e.json();r(t.projects??[]),s(null)}catch(e){s(e instanceof Error?e:Error("Unknown error"))}finally{n(!1)}},[]);(0,t.useEffect)(()=>{i()},[i]);let u=(0,t.useCallback)(async e=>{let t=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to create project");let a=(await t.json()).project;return r(e=>[a,...e]),a},[]);return{projects:e,isLoading:a,error:o,refetch:i,createProject:u,updateProject:(0,t.useCallback)(async(e,t)=>{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Failed to update project");let n=(await a.json()).project;return r(t=>t.map(t=>t.id===e?n:t)),n},[]),deleteProject:(0,t.useCallback)(async e=>{let t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to delete project");r(t=>t.filter(t=>t.id!==e))},[])}}function a(){let[e,r]=(0,t.useState)([]),[a,n]=(0,t.useState)(!0),o=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/projects");if(!e.ok)return;let{projects:t}=await e.json(),a=await Promise.all((t??[]).map(async e=>{let t=[],r=[];try{let[a,n]=await Promise.all([fetch(`/api/projects/${e.id}/agents`),fetch(`/api/projects/${e.id}/threads`)]);a.ok&&(t=(await a.json()).agents??[]),n.ok&&(r=((await n.json()).threads??[]).map(e=>e.thread_id))}catch{}return{...e,repos:e.repos??[],agents:t.map(t=>({project_id:e.id,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at})),thread_ids:r,workspace_ids:r}}));r(a)}catch{}finally{n(!1)}},[]);(0,t.useEffect)(()=>{o()},[o]);let s=(0,t.useCallback)(async(e,t)=>{try{let a="string"==typeof e?{name:e}:e,n=a.name.trim(),o=(a.slug||n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),s=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,name:n,slug:o})});if(!s.ok)return null;let{project:i}=await s.json(),u=Array.isArray(t)?t:t?[t]:[];for(let e of u)await fetch(`/api/projects/${i.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e})}).catch(()=>{});let c={...i,repos:i.repos??[],agents:[],thread_ids:u,workspace_ids:u};return r(e=>[...e,c].sort((e,t)=>e.name.localeCompare(t.name))),c}catch{return null}},[]),i=(0,t.useCallback)(async(e,t)=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})).ok)return;r(r=>r.map(r=>r.id===e?{...r,name:t}:r).sort((e,t)=>e.name.localeCompare(t.name)))}catch{}},[]),u=(0,t.useCallback)(async e=>{try{if(!(await fetch(`/api/projects/${e}`,{method:"DELETE"})).ok)return;r(t=>t.filter(t=>t.id!==e))}catch{}},[]),c=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error||"Failed to update project")}let n=(await a.json()).project;return r(t=>t.map(t=>t.id===e?{...t,...n,repos:n.repos??t.repos}:t)),n}catch{return null}},[]),l=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:t})});if(!a.ok)return;let n=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:n}:t))}catch{}},[]),d=(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents?agentId=${t}`,{method:"DELETE"});if(!a.ok)return;let n=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:n}:t))}catch{}},[]);return{projects:e,isLoading:a,createProject:s,updateProject:c,renameProject:i,deleteProject:u,addAgent:l,removeAgent:d,reorderAgents:(0,t.useCallback)(async(e,t)=>{try{let a=await fetch(`/api/projects/${e}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:t})});if(!a.ok)return;let n=((await a.json()).agents??[]).map(t=>({project_id:e,agent_id:t.agent_id,routing_order:t.routing_order,created_at:t.created_at}));r(t=>t.map(t=>t.id===e?{...t,agents:n}:t))}catch{}},[]),moveAgent:(0,t.useCallback)(async(e,t,r)=>{try{await fetch(`/api/projects/${t}/agents?agentId=${e}`,{method:"DELETE"}),await fetch(`/api/projects/${r}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e})}),await o()}catch{}},[o]),refresh:o}}e.s(["useProjects",()=>r,"useProjectsWithAgents",()=>a])},27612,e=>{"use strict";let t=(0,e.i(75254).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",()=>t],27612)},33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={assign:function(){return u},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return i}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});function o(e){let t={};for(let[r,a]of e.entries()){let e=t[r];void 0===e?t[r]=a:Array.isArray(e)?e.push(a):t[r]=[e,a]}return t}function s(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[r,a]of Object.entries(e))if(Array.isArray(a))for(let e of a)t.append(r,s(e));else t.set(r,s(a));return t}function u(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,a]of r.entries())e.append(t,a)}return e}},61746,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return i},formatWithValidation:function(){return c},urlObjectKeys:function(){return u}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let o=e.r(90809)._(e.r(98183)),s=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:r}=e,a=e.protocol||"",n=e.pathname||"",i=e.hash||"",u=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),u&&"object"==typeof u&&(u=String(o.urlQueryToSearchParams(u)));let l=e.search||u&&`?${u}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||s.test(a))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),l&&"?"!==l[0]&&(l="?"+l),n=n.replace(/[?#]/g,encodeURIComponent),l=l.replace("#","%23"),`${a}${c}${n}${l}${i}`}let u=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return i(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=e.r(71645);function n(e,t){let r=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=o(e,a)),t&&(n.current=o(t,a))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return w},NormalizeError:function(){return v},PageNotFoundError:function(){return j},SP:function(){return y},ST:function(){return m},WEB_VITALS:function(){return o},execOnce:function(){return s},getDisplayName:function(){return d},getLocationOrigin:function(){return c},getURL:function(){return l},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return k}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function s(e){let t,r=!1;return(...a)=>(r||(r=!0,t=e(...a)),t)}let i=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>i.test(e);function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function l(){let{href:e}=window.location,t=c();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let a=await e.getInitialProps(t);if(r&&f(r))return a;if(!a)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${a}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return a}let y="u">typeof performance,m=y&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class v extends Error{}class j extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class w extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function k(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let a=e.r(18967),n=e.r(52817);function o(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return g},useLinkStatus:function(){return j}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let o=e.r(90809),s=e.r(18050),i=o._(e.r(71645)),u=e.r(61746),c=e.r(8372),l=e.r(18581),d=e.r(18967),f=e.r(5550);e.r(33525);let p=e.r(91949),h=e.r(73668),y=e.r(9396);function m(e){return"string"==typeof e?e:(0,u.formatUrl)(e)}function g(t){var r;let a,n,o,[u,g]=(0,i.useOptimistic)(p.IDLE_LINK_STATUS),j=(0,i.useRef)(null),{href:w,as:b,children:k,prefetch:T=null,passHref:_,replace:S,shallow:E,scroll:A,onClick:O,onMouseEnter:C,onTouchStart:P,legacyBehavior:N=!1,onNavigate:x,ref:M,unstable_dynamicOnHover:$,...I}=t;a=k,N&&("string"==typeof a||"number"==typeof a)&&(a=(0,s.jsx)("a",{children:a}));let L=i.default.useContext(c.AppRouterContext),R=!1!==T,U=!1!==T?null===(r=T)||"auto"===r?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,{href:D,as:F}=i.default.useMemo(()=>{let e=m(w);return{href:e,as:b?m(b):e}},[w,b]);if(N){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=i.default.Children.only(a)}let z=N?n&&"object"==typeof n&&n.ref:M,J=i.default.useCallback(e=>(null!==L&&(j.current=(0,p.mountLinkInstance)(e,D,L,U,R,g)),()=>{j.current&&((0,p.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,p.unmountPrefetchableInstance)(e)}),[R,D,L,U,g]),B={ref:(0,l.useMergedRef)(J,z),onClick(t){N||"function"!=typeof O||O(t),N&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!L||t.defaultPrevented||function(t,r,a,n,o,s,u){if("u">typeof window){let c,{nodeName:l}=t.currentTarget;if("A"===l.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,h.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),u){let e=!1;if(u({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);i.default.startTransition(()=>{d(a||r,o?"replace":"push",s??!0,n.current)})}}(t,D,F,j,S,A,x)},onMouseEnter(e){N||"function"!=typeof C||C(e),N&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),L&&R&&(0,p.onNavigationIntent)(e.currentTarget,!0===$)},onTouchStart:function(e){N||"function"!=typeof P||P(e),N&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),L&&R&&(0,p.onNavigationIntent)(e.currentTarget,!0===$)}};return(0,d.isAbsoluteUrl)(F)?B.href=F:N&&!_&&("a"!==n.type||"href"in n.props)||(B.href=(0,f.addBasePath)(F)),o=N?i.default.cloneElement(n,B):(0,s.jsx)("a",{...I,...B,children:a}),(0,s.jsx)(v.Provider,{value:u,children:o})}e.r(84508);let v=(0,i.createContext)(p.IDLE_LINK_STATUS),j=()=>(0,i.useContext)(v);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},75254,e=>{"use strict";var t=e.i(71645);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:s,className:i="",children:u,iconNode:c,...l},d)=>(0,t.createElement)("svg",{ref:d,...n,width:a,height:a,stroke:e,strokeWidth:s?24*Number(o)/Number(a):o,className:r("lucide",i),...!u&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(u)?u:[u]])),s=(e,n)=>{let s=(0,t.forwardRef)(({className:s,...i},u)=>(0,t.createElement)(o,{ref:u,iconNode:n,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,s),...i}));return s.displayName=a(e),s};e.s(["default",()=>s],75254)},7233,e=>{"use strict";let t=(0,e.i(75254).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",()=>t],7233)},10980,e=>{"use strict";let t=(0,e.i(75254).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);e.s(["BookOpen",()=>t],10980)},55838,(e,t,r)=>{"use strict";var a=e.r(71645),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=a.useState,s=a.useEffect,i=a.useLayoutEffect,u=a.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!n(e,r)}catch(e){return!0}}var l="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=o({inst:{value:r,getSnapshot:t}}),n=a[0].inst,l=a[1];return i(function(){n.value=r,n.getSnapshot=t,c(n)&&l({inst:n})},[e,r,t]),s(function(){return c(n)&&l({inst:n}),e(function(){c(n)&&l({inst:n})})},[e]),u(r),r};r.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:l},2239,(e,t,r)=>{"use strict";t.exports=e.r(55838)},52822,(e,t,r)=>{"use strict";var a=e.r(71645),n=e.r(2239),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=n.useSyncExternalStore,i=a.useRef,u=a.useEffect,c=a.useMemo,l=a.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,a,n){var d=i(null);if(null===d.current){var f={hasValue:!1,value:null};d.current=f}else f=d.current;var p=s(e,(d=c(function(){function e(e){if(!u){if(u=!0,s=e,e=a(e),void 0!==n&&f.hasValue){var t=f.value;if(n(t,e))return i=t}return i=e}if(t=i,o(s,e))return t;var r=a(e);return void 0!==n&&n(t,r)?(s=e,t):(s=e,i=r)}var s,i,u=!1,c=void 0===r?null:r;return[function(){return e(t())},null===c?void 0:function(){return e(c())}]},[t,r,a,n]))[0],d[1]);return u(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}},30224,(e,t,r)=>{"use strict";t.exports=e.r(52822)},63059,e=>{"use strict";let t=(0,e.i(75254).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],63059)},88081,e=>{"use strict";let t=(0,e.i(75254).default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);e.s(["Hash",()=>t],88081)},88699,e=>{"use strict";let t=(0,e.i(75254).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",()=>t],88699)},74886,e=>{"use strict";let t=(0,e.i(75254).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],74886)}]);
|