@mndrk/agx 2.1.0 → 2.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.
- package/README.md +70 -105
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/context/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/options/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/runs/scripted/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/linear/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/linear-issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/scheduled-tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/extract/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/knowledge/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/threads/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page/react-loadable-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.rsc +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_full.segment.rsc +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/_tree.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations/__PAGE__.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/automations.segments/automations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/board.segments/board.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/execution-graph.segments/execution-graph.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/folders.segments/folders.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/knowledge/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page/react-loadable-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/linear/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects/orphans.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/orphans.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +3 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/thread/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0-zk9w8._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0.01bfe._.js +13 -8
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__00c~p6z._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__019dflu._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__02t.3rm._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__06zr0ph._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__07d._0s._.js +15 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__08xj~a3._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0a0cq38._.js +34 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0asvfdo._.js +35 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0bt7ejs._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0f.~98d._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g-~-.q._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0g7p6pw._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0gj~dap._.js +40 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hkcw03._.js +8 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0hyu3en._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0i5aw03._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ke4z91._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0l53ok5._.js +41 -10
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ll-~cx._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0mh6p.0._.js +7 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0nc-lbr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0p9rl6.._.js +8 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0q~pnp0._.js +6 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0ue0bu5._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0unwwyx._.js +12 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0vtkl3q._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0x6w64i._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0z82z0-._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0zrv3p3._.js +16 -11
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__0~iknwz._.js +12 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10d.dhd._.js +46 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__10sw5ia._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__11yx.ud._.js +33 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13-nlgu._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__13960a8._.js +14 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_06qet8g._.js +14 -9
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0_0m2ly._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0a15wtk._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0fr1qq6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0g.q2r6._.js +6 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_0i7fs.i._.js +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_01pvj2g._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_agent-participants_ts_0cq15u5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_0twf-w5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_0c2l_oh._.js +43 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0l95hik._.js +15 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_sqlite-query-adapter_ts_0s5xprd._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_082u-ls._.js +19 -14
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_src_graph_schedule-runner_ts_07-ozf_._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0_l0fpi.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0gips_c.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0rszt9p.js +10 -6
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0u_5kfo.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_06fnblz._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__039h7r.._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0lno3km._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0fl7_-o._.js → [root-of-the-server]__0nqqk26._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__0j9m72.._.js → [root-of-the-server]__0tqn-o5._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0~nm7b6._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0140-84._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_03fckp4._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_064h43p._.js → _05xj_bp._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_0tcjapj._.js → _0ip6k6n._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0jensz1._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0t0p8q5._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0yeuuy1._.js +1 -23
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_03z24q2._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_0nvzo3y._.js → apps_local_04dh2yh._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0_ac-.f._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0a-8i4p._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0k4~c1x._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ld1uug._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0ms1d6i._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0p_v0ri._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0x.xj52._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0~g2ijr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_11k_-8~._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_[id]_page_tsx_06n47n~._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_078reb_._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_layout_tsx_0aaa3~t._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_linear_page_tsx_0a~n5y8._.js +25 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_0kcaeqi._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_agents_[agentId]_page_tsx_0wm~_~t._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_[teamId]_page_tsx_0iyozfl._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_teams_new_page_tsx_0yqd0a5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_terminal_page_tsx_01n9qk.._.js +1 -20
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_0ql2qmr._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_PromptJobBoard_tsx_06zob36._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_chat-ui_ChatContainer_tsx_0c9fjtl._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_0k4tfip._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_terminal_TerminalPane_tsx_0l17vs_._.js +22 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_thread_WorkspaceSidebar_tsx_0unv2xp._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-build-manifest.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0e307b-0c2jbx.js → 0-cets4_axpvm.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1011~1x9nj4ny.js → 0-k2m1ncx7hwx.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0dnw31436wd~..js → 0-pkmgle2s8u8.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/064jfmraty.9h.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kru5m9q~r.j.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/06kyg1q0bcz6p.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{119v0-idpg-cv.js → 08bdyjcnamzep.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-olq~7zw3wjy.js → 08xq~uyr6.eqw.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0gj98094p~zn4.js → 0cku81z~3oe6..js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0e7jhy0-52_4k.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0wh6p5~ft5rma.js → 0htc.sqrk_0.c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0ju4xmxwqddw6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0kn66yvx08813.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{07646a0h94826.js → 0l89kxqcf86on.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0mm978wb-ueg-.js +6 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0musu8f.4wvxz.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0bchtyu6m.2yv.js → 0muti0yiyhu0t.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rhps884e-bzu.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0rr3fvwc5ind~.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sbkkjowkksa6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sjz0.o9_33qy.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0srzmg8ivve1g.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0fonouj2i9qnb.js → 0swo3_e8.4s7j.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0sysrf3~l~r35.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0t69h-kc701fn.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0v67lnh..wj4z.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{013gtut17~fne.js → 0wb45ol1xrqe~.js} +1 -23
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{00po4v2x~0x_z.js → 0wiw2v8gm-k_-.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0tt1oh112yv-l.js → 0wopevh0s7.8c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xm2~gxlt1npd.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1503vb7lb6.g1.js → 0ya124ushze_f.js} +4 -4
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zt2o58c5gytn.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0~idsggr8vqf5.js +59 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0stvi5btlxl4m.js → 0~mcfx41q4znh.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/116j4mjz~y42t.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-vo_x2cxmjm3.js → 12b62py0mq1gm.js} +4 -4
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/12y5i0lh6s73o.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/148.mt80civoz.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14m5d270euu_s.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{0-_ukhpeg429c.js → 16h9208kl5~xa.js} +1 -1
- package/cloud-runtime/standalone/apps/local/app/agents/[id]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/agents/page.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/app/api/chat/route.ts +7 -1
- package/cloud-runtime/standalone/apps/local/app/api/participants/route.ts +9 -9
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/search/route.ts +6 -6
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/teams/route.ts +3 -3
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/agents/route.ts +1 -1
- package/cloud-runtime/standalone/apps/local/app/api/schedules/poll/route.ts +11 -2
- package/cloud-runtime/standalone/apps/local/app/page.tsx +72 -14
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +34 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/[teamId]/page.tsx +6 -3
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/new/page.tsx +8 -17
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/teams/replace/page.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -0
- package/cloud-runtime/standalone/apps/local/app/setup/page.tsx +1 -38
- package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +8 -4
- package/cloud-runtime/standalone/apps/local/components/EmptyStateCard.tsx +37 -0
- package/cloud-runtime/standalone/apps/local/components/LinearBoard.tsx +103 -770
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +8 -39
- package/cloud-runtime/standalone/apps/local/components/TeamPickerModal.tsx +3 -3
- package/cloud-runtime/standalone/apps/local/components/chat-ui/Composer.tsx +28 -32
- package/cloud-runtime/standalone/apps/local/components/chat-ui/ParticipantBar.tsx +24 -39
- package/cloud-runtime/standalone/apps/local/components/linear/LinearBoardFilters.tsx +343 -0
- package/cloud-runtime/standalone/apps/local/components/linear/LinearSettingsModal.tsx +9 -3
- package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerConfig.tsx +65 -30
- package/cloud-runtime/standalone/apps/local/components/linear/LinearWorkerRunLog.tsx +190 -0
- package/cloud-runtime/standalone/apps/local/components/linear/TicketRow.tsx +158 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveHealthTrend.tsx +45 -61
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +38 -34
- package/cloud-runtime/standalone/apps/local/components/projects/RecentlyCompletedCard.tsx +0 -16
- package/cloud-runtime/standalone/apps/local/components/projects/ReplaceAgentsModal.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +155 -120
- package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +85 -88
- package/cloud-runtime/standalone/apps/local/components/setup/SetupLayout.tsx +6 -4
- package/cloud-runtime/standalone/apps/local/components/terminal/ProjectTerminal.tsx +18 -193
- package/cloud-runtime/standalone/apps/local/components/terminal/TerminalPane.tsx +40 -4
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +121 -20
- package/cloud-runtime/standalone/apps/local/components/ui/ResizeHandle.tsx +52 -0
- package/cloud-runtime/standalone/apps/local/hooks/useAutomations.ts +8 -3
- package/cloud-runtime/standalone/apps/local/hooks/useLinearActiveAgents.ts +38 -0
- package/cloud-runtime/standalone/apps/local/hooks/useLinearParticipants.ts +118 -0
- package/cloud-runtime/standalone/apps/local/hooks/usePromptJobs.ts +5 -3
- package/cloud-runtime/standalone/apps/local/hooks/useSetupFlow.ts +6 -81
- package/cloud-runtime/standalone/apps/local/lib/agent-participants.ts +1 -1
- package/cloud-runtime/standalone/apps/local/lib/agent-process-registry.ts +34 -0
- package/cloud-runtime/standalone/apps/local/lib/db.ts +5 -5
- package/cloud-runtime/standalone/apps/local/lib/linear-board-utils.ts +9 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-status.ts +88 -0
- package/cloud-runtime/standalone/apps/local/lib/linear-run-store.ts +4 -4
- package/cloud-runtime/standalone/apps/local/lib/sqlite-query-adapter.ts +5 -1
- package/cloud-runtime/standalone/apps/local/lib/team-catalog.ts +60 -60
- package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
- package/cloud-runtime/standalone/apps/local/migrations/sqlite_schema.sql +1 -1
- package/cloud-runtime/standalone/apps/local/skills-lock.json +5 -0
- package/cloud-runtime/standalone/apps/local/src/graph/schedule-runner.ts +26 -1
- package/cloud-runtime/standalone/apps/local/src/graph/store.ts +13 -0
- package/cloud-runtime/standalone/apps/local/state/linearBoardPins.ts +45 -0
- package/cloud-runtime/standalone/apps/local/styles/workspaceSidebar.css +71 -2
- package/cloud-runtime/standalone/apps/local/worker/index.js +56 -4
- package/lib/cli/onboarding.js +8 -5
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0rhn_lucide-react_dist_esm_0tvwux2._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__006vr7.._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0d18x53._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__0z7nw_r._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_00trrg8._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ejzn1e._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0sjchy6._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0w4gpvr._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0x6hh0t._.js +0 -4
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_0t6p.qm._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/014z_yruiincl.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/041-dhls9zkl1.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/04yoml2rqnuot.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/069yt_7prdxsp.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0_mrpyqcoyb_5.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0edewt9l~cs~k.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0f7i3ae1ynhf3.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0j-nhn61e~nnj.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0jrkacz_dyem6.js +0 -37
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0l3v45kd.9is_.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p-rdas54yo~w.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0pdrpsy-zdxp0.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0p~l5ap6qqx2o.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0r0c9y6.8.m5p.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0tm20~ec~occu.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0uve8xrt~0a2e.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0w94x-v00osq0.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0xwny92a.ad_i.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0zw85-xl9ysjs.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/11l2tww5f0hsk.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/12qohmk-~yrtg.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/14v~9vx3tdv85.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16d~es6h6k~rj.js +0 -6
- package/cloud-runtime/standalone/apps/local/components/setup/ProjectStep.tsx +0 -189
- package/cloud-runtime/standalone/apps/local/components/setup/TeamsStep.tsx +0 -500
- /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_clientMiddlewareManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{RnYHmEXBwXJjVrVVx2CuP → ROMPfjQqFXqGHmbybq1eC}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,794731,e=>{"use strict";let t=(0,e.i(363732).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",0,t],794731)},640481,e=>{"use strict";let t=(0,e.i(363732).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",0,t],640481)},580873,e=>{"use strict";let t=(0,e.i(363732).default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);e.s(["Clock",0,t],580873)},958164,e=>{"use strict";let t=(0,e.i(363732).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,t],958164)},807087,e=>{"use strict";let t=(0,e.i(363732).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,t],807087)},716436,e=>{"use strict";let t=(0,e.i(363732).default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);e.s(["Activity",0,t],716436)},417442,e=>{"use strict";let t=(0,e.i(363732).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",0,t],417442)},378562,e=>{"use strict";var t=e.i(843476),r=e.i(522016);e.s(["EmptyStateCard",0,function({icon:e,title:a,description:s,ctaLabel:n,ctaHref:l}){return(0,t.jsx)("div",{className:"h-full w-full flex items-center justify-center bg-[var(--background)] px-6 py-12",children:(0,t.jsxs)("div",{className:"max-w-md w-full text-center space-y-6",children:[(0,t.jsx)("div",{className:"mx-auto w-14 h-14 rounded-2xl bg-[var(--secondary)] flex items-center justify-center",children:e}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("h1",{className:"text-[22px] font-bold text-[var(--foreground)] tracking-tight",children:a}),(0,t.jsx)("p",{className:"text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:s})]}),(0,t.jsx)(r.default,{href:l,className:"inline-flex items-center gap-2 px-6 py-2.5 bg-[var(--foreground)] text-[var(--background)] text-[14px] font-semibold rounded-lg hover:opacity-90 transition-all",children:n})]})})}])},33887,e=>{"use strict";var t=e.i(271645);e.s(["useLinearConnection",0,function(){let[e,r]=(0,t.useState)(!1),[a,s]=(0,t.useState)(!0),[n,l]=(0,t.useState)(null),[d,i]=(0,t.useState)({claude:!1,codex:!1,gemini:!1}),[o,c]=(0,t.useState)({}),u=(0,t.useRef)(null),m=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/linear/mcp-setup"),t=await e.json();c(t.configured??{})}catch{}},[]),x=(0,t.useCallback)(async()=>{try{let[e,t]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),a=await e.json(),s=await t.json();return r(a.connected),l(a.user??null),i(a.clis??{claude:!1,codex:!1,gemini:!1}),c(s.configured??{}),a.connected}catch{return r(!1),!1}finally{s(!1)}},[]);(0,t.useEffect)(()=>(x(),()=>{u.current&&clearInterval(u.current)}),[x]);let p=(0,t.useCallback)(()=>{window.open("/api/linear/auth","_blank","noopener"),u.current&&clearInterval(u.current),u.current=setInterval(async()=>{await x()&&u.current&&(clearInterval(u.current),u.current=null)},2e3)},[x]),h=(0,t.useCallback)(async e=>{try{let t=await fetch("/api/linear/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:e})});if(!t.ok){let e=await t.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to save token"}}return await x(),{ok:!0}}catch{return{ok:!1,error:"Failed to connect"}}},[x]);return{connected:e,loading:a,user:n,clis:d,mcpConfigured:o,connect:p,connectWithKey:h,disconnect:(0,t.useCallback)(async()=>{await fetch("/api/linear/status",{method:"DELETE"}),r(!1),l(null)},[]),configureMcp:(0,t.useCallback)(async e=>{try{let t=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:e})});if(!t.ok){let e=await t.json().catch(()=>({}));return{ok:!1,error:e.error||"Failed to configure MCP"}}return await m(),{ok:!0}}catch{return{ok:!1,error:"Failed to configure MCP"}}},[m]),refresh:x}}])},317389,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(572665),s=e.i(618566),n=e.i(716436);function l({projectSlug:e,projectThreadIds:a=[]}){let d=(0,s.useRouter)(),[i,o]=(0,r.useState)([]),[c,u]=(0,r.useState)([]),m=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/participants");if(!e.ok)return;let t=await e.json();u(Array.isArray(t)?t:t.participants??[])}catch{}},[]);(0,r.useEffect)(()=>{m()},[m]),(0,r.useEffect)(()=>{let t=!1,r=e.trim().toLowerCase(),s=new Set(a.map(e=>e.trim()).filter(Boolean)),n=async()=>{try{let e=await fetch("/api/processes?enrich=1");if(!e.ok||t)return;let a=await e.json();if(t)return;let n=a.filter(e=>"spawning"===e.state||"running"===e.state).filter(e=>{let t=e.projectSlug.trim().toLowerCase();return!!t&&t===r||s.has(e.workspaceId)||s.has(e.threadId)}).sort((e,t)=>t.lastActivity-e.lastActivity);o(n)}catch{}};n();let l=setInterval(n,3e3);return()=>{t=!0,clearInterval(l)}},[e,a]);let x=new Map(c.map(e=>[e.id,e.name])),p=e=>x.get(e)||e.slice(0,8),h=[],f=new Map;for(let e of i){let t=f.get(e.agentId);t||(t={agentId:e.agentId,agentName:p(e.agentId),activities:[]},f.set(e.agentId,t),h.push(t)),t.activities.push({key:`${e.workspaceId}-${e.threadId}-${e.agentId}`,workspaceId:e.workspaceId,threadId:e.threadId,state:e.state,threadLabel:e.threadTitle?.trim()?e.threadTitle.trim():e.threadId?.trim()?`Thread ${e.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<5)return"Just now";if(t<60)return`${t}s ago`;let r=Math.floor(t/60);if(r<60)return`${r}m ago`;let a=Math.floor(r/60);if(a<24)return`${a}h ago`;let s=Math.floor(a/24);return`${s}d ago`}(e.lastActivity),lastActivity:e.lastActivity,linearIssueId:e.linearIssueId,linearRunId:e.linearRunId})}if(0===h.length)return null;let g=i.length;return(0,t.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)(n.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[h.length," ",1===h.length?"agent":"agents"," active across"," ",g," ",1===g?"thread":"threads","."]})]}),(0,t.jsxs)("span",{className:"rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2.5 py-1 text-[10px] font-medium uppercase tracking-wider text-[var(--status-completed-text)]",children:[g," live ",1===g?"entry":"entries"]})]}),(0,t.jsx)("div",{className:"divide-y divide-[var(--border)]",children:h.map(r=>(0,t.jsxs)("div",{className:"px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,t.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),r.agentName]}),r.activities.length>1&&(0,t.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[r.activities.length," threads"]})]}),(0,t.jsx)("div",{className:"space-y-1 ml-4",children:r.activities.map(r=>(0,t.jsxs)("div",{className:"mx-[-0.5rem] flex cursor-pointer items-center gap-3 rounded-lg px-2 py-1.5 text-sm transition-colors hover:bg-[var(--secondary)]",onClick:()=>d.push(r.linearIssueId&&r.linearRunId?`/projects/${e}/linear?issue=${encodeURIComponent(r.linearIssueId)}&run=${encodeURIComponent(r.linearRunId)}`:`/projects/${e}/thread/${encodeURIComponent(r.workspaceId)}${r.threadId?`?open=${encodeURIComponent(r.threadId)}`:""}`),children:[(0,t.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1.5 rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2 py-0.5 text-[11px] font-medium text-[var(--status-completed-text)]",children:[(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===r.state?"Starting":"Working"]}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:r.threadLabel}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:r.lastActiveLabel})]},r.key))})]},r.agentId))})]})}var d=e.i(807087);function i({projectId:e,projectSlug:a,projectThreadIds:n=[]}){let l=(0,s.useRouter)(),[o,c]=(0,r.useState)([]),[u,m]=(0,r.useState)([]),[x,p]=(0,r.useState)([]),h=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/participants");if(!e.ok)return;let t=await e.json();m(Array.isArray(t)?t:t.participants??[])}catch{}},[]),f=(0,r.useCallback)(async()=>{try{let t=await fetch(`/api/projects/${e}/teams`);if(!t.ok)return;let r=await t.json();p(Array.isArray(r)?r:[])}catch{}},[e]);(0,r.useEffect)(()=>{h(),f()},[h,f]),(0,r.useEffect)(()=>{let e=!1,t=a.trim().toLowerCase(),r=new Set(n.map(e=>e.trim()).filter(Boolean)),s=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||e)return;let s=await a.json();if(e)return;let n=s.filter(e=>"done"===e.state).filter(e=>{let a=e.projectSlug.trim().toLowerCase();return!!a&&a===t||r.has(e.workspaceId)||r.has(e.threadId)}).sort((e,t)=>t.lastActivity-e.lastActivity).slice(0,10);c(n)}catch{}};s();let l=setInterval(s,1e4);return()=>{e=!0,clearInterval(l)}},[a,n]);let g=new Map(u.map(e=>[e.id,e.name])),v=new Map;for(let e of x)for(let t of e.agents)v.set(t.agent_id,{id:e.id,name:e.name});return 0===o.length?null:(0,t.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,t.jsx)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)(d.CheckCircle2,{className:"h-3.5 w-3.5"}),"Recently Completed"]}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:["Last ",o.length," completed"," ",1===o.length?"task":"tasks","."]})]})}),(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"min-w-full text-sm",children:[(0,t.jsx)("thead",{className:"bg-[var(--secondary)]",children:(0,t.jsxs)("tr",{className:"text-left text-[11px] uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Agent"}),(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Status"}),(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Thread"}),(0,t.jsx)("th",{className:"px-4 py-3 font-medium",children:"Last active"})]})}),(0,t.jsx)("tbody",{children:o.map(e=>{let r;return(0,t.jsxs)("tr",{className:"cursor-pointer border-t border-[var(--border)] text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",onClick:()=>l.push(e.linearIssueId&&e.linearRunId?`/projects/${a}/linear?issue=${encodeURIComponent(e.linearIssueId)}&run=${encodeURIComponent(e.linearRunId)}`:`/projects/${a}/thread/${encodeURIComponent(e.workspaceId)}${e.threadId?`?open=${encodeURIComponent(e.threadId)}`:""}`),children:[(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--foreground)]",children:(r=e.agentId,g.get(r)||r.slice(0,8))}),(0,t.jsx)("td",{className:"px-4 py-3",children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-[var(--border)] bg-[var(--secondary)] px-2 py-0.5 text-[11px] font-medium text-[var(--muted-foreground)]",children:[(0,t.jsx)(d.CheckCircle2,{className:"h-3 w-3"}),"Done"]})}),(0,t.jsx)("td",{className:"max-w-[24rem] px-4 py-3 text-[var(--muted-foreground)]",children:(0,t.jsx)("span",{className:"block truncate",children:e.threadTitle?.trim()?e.threadTitle.trim():e.threadId?.trim()?`Thread ${e.threadId.slice(0,12)}...`:"Main thread"})}),(0,t.jsx)("td",{className:"px-4 py-3 text-[var(--muted-foreground)]",children:function(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<5)return"Just now";if(t<60)return`${t}s ago`;let r=Math.floor(t/60);if(r<60)return`${r}m ago`;let a=Math.floor(r/60);if(a<24)return`${a}h ago`;let s=Math.floor(a/24);return`${s}d ago`}(e.lastActivity)})]},`${e.workspaceId}-${e.threadId}-${e.agentId}`)})})]})})]})}var o=e.i(417442);function c({projectId:e,onViewAll:s}){let[n,l]=(0,r.useState)([]),[d,i]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{fetch(`/api/projects/${e}/teams`).then(e=>e.ok?e.json():{teams:[]}).then(e=>l(e.teams??[])).catch(()=>l([])).finally(()=>i(!1))},[e]),(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(a.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!d&&n.length>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:n.length})]}),s&&(0,t.jsxs)("button",{onClick:s,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]}),d?(0,t.jsx)("div",{className:"space-y-2",children:[1,2,3].map(e=>(0,t.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},e))}):0===n.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,t.jsx)("div",{className:"space-y-2",children:n.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(a.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-[var(--foreground)]",children:e.name}),(0,t.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[e.agents.length," agents"]})]},e.id))})]})}var u=e.i(580873);function m({projectId:e,projectSlug:a,onViewAll:n}){let l=(0,s.useRouter)(),[d,i]=(0,r.useState)([]),[c,x]=(0,r.useState)([]),[p,h]=(0,r.useState)({}),[f,g]=(0,r.useState)(!0),[v,j]=(0,r.useState)(()=>Date.now());(0,r.useEffect)(()=>{let e=window.setInterval(()=>{j(Date.now())},3e4);return()=>{window.clearInterval(e)}},[]),(0,r.useEffect)(()=>{let t=!1,r=async()=>{try{let[r,a]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(e)}`)]),s=r.ok?await r.json():{automations:[]},n=a.ok?await a.json():{jobs:[]};if(t)return;let l=(s.automations??[]).filter(t=>t.projectId===e).slice(0,20),d=(n.jobs??[]).filter(t=>t.projectId===e).slice(0,20);i(l),x(d);let o=Object.fromEntries(await Promise.all(d.map(async e=>{try{let t=await fetch(`/api/prompt-jobs/${encodeURIComponent(e.id)}/runs`);if(!t.ok)return[e.id,null];let r=((await t.json()).runs??[])[0]??null;return[e.id,r]}catch{return[e.id,null]}})));if(t)return;h(o)}catch{if(t)return;i([]),x([]),h({})}finally{t||g(!1)}};return g(!0),r(),()=>{t=!0}},[e]);let b=e=>{if(!a||"prompt"!==e.kind)return;let t=new URLSearchParams({job:e.jobId});e.runId&&t.set("run",e.runId),l.push(`/projects/${a}/automations?${t.toString()}`)},y=[...c.filter(e=>{let t=p[e.id];return t?.status==="queued"||t?.status==="running"}).map(e=>({id:`prompt:${e.id}`,title:e.name,kind:"prompt",jobId:e.id,runId:p[e.id]?.id??null,updatedAt:p[e.id]?.createdAt??e.updatedAt})),...d.filter(e=>"running"===e.executionState||e.schedule?.tickInProgress).map(e=>({id:`automation:${e.graphId}`,title:e.title,kind:"automation",updatedAt:e.updatedAt}))].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt)),N=new Set(y.map(e=>e.id)),w=[...c.filter(e=>"active"===e.state&&"number"==typeof e.nextRunAt).map(e=>({id:`prompt:${e.id}`,title:e.name,kind:"prompt",jobId:e.id,runId:null,nextRunAt:e.nextRunAt})),...d.filter(e=>e.schedule?.state==="active"&&"number"==typeof e.schedule?.nextTickAt).map(e=>({id:`automation:${e.graphId}`,title:e.title,kind:"automation",nextRunAt:e.schedule.nextTickAt}))].filter(e=>!N.has(e.id)).sort((e,t)=>e.nextRunAt-t.nextRunAt),k=c.length+d.length;return(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(u.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Tasks"}),!f&&k>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:k})]}),n&&(0,t.jsxs)("button",{onClick:n,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]}),f?(0,t.jsx)("div",{className:"space-y-2",children:[1,2,3].map(e=>(0,t.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},e))}):0===k?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{children:"Currently running"}),(0,t.jsx)("span",{children:y.length})]}),0===y.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,t.jsx)("div",{className:"space-y-2",children:y.slice(0,3).map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>b(e),disabled:"prompt"!==e.kind||!a,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===e.kind&&a?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,t.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,t.jsx)("span",{className:"truncate text-[var(--foreground)]",children:e.title}),(0,t.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},e.id))})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,t.jsx)("span",{children:"Upcoming runs"}),(0,t.jsx)("span",{children:w.length})]}),0===w.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,t.jsx)("div",{className:"space-y-2",children:w.slice(0,3).map(e=>{var r;return(0,t.jsxs)("button",{type:"button",onClick:()=>b(e),disabled:"prompt"!==e.kind||!a,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===e.kind&&a?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,t.jsx)(u.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--foreground)]",children:e.title}),(0,t.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(r=e.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(r))," ",(0,t.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(e=>{if("number"!=typeof e)return"";let t=e-v;if(t<=0)return"now";let r=Math.ceil(t/6e4);if(r<60)return`in ${r}m`;let a=Math.floor(r/60),s=r%60;if(a<24)return 0===s?`in ${a}h`:`in ${a}h ${s}m`;let n=Math.floor(a/24),l=a%24;return 0===l?`in ${n}d`:`in ${n}d ${l}h`})(e.nextRunAt)]})]})]})]},e.id)})})]})]})]})}var x=e.i(196630),p=e.i(640481),h=e.i(929870),f=e.i(794731),g=e.i(797167),v=e.i(524123);function j({projectId:e,repos:a,onViewAll:s}){let{updateProject:n}=(0,v.useProjects)(),[l,d]=(0,r.useState)(a),[i,c]=(0,r.useState)(!1),[u,m]=(0,r.useState)(null),[b,y]=(0,r.useState)(""),[N,w]=(0,r.useState)(""),[k,I]=(0,r.useState)(null);(0,r.useEffect)(()=>{d(a)},[a]);let C=e=>{I(e),window.setTimeout(()=>I(null),2500)},$=e=>e.map(e=>({id:e.id,name:e.name,path:e.path,git_url:e.git_url})),A=()=>{y(""),w(""),m(null),c(!1)},S=async()=>{let t=b.trim(),r=N.trim();if(t&&r){d([...l,{id:`tmp-${Date.now()}`,name:t,path:r}]),A();try{await n(e,{repos:[...$(l),{name:t,path:r}]}),C("Folder added")}catch{d(l),C("Failed to add folder")}}},R=async t=>{let r=b.trim(),a=N.trim();if(!r||!a)return;let s=l.map(e=>e.id===t?{...e,name:r,path:a}:e);d(s),A();try{await n(e,{repos:$(s)}),C("Folder updated")}catch{d(l),C("Failed to update folder")}},M=async t=>{let r=l.filter(e=>e.id!==t);d(r),u===t&&A();try{await n(e,{repos:$(r)}),C("Folder deleted")}catch{d(l),C("Failed to delete folder")}};return(0,t.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(x.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Folders"}),l.length>0&&(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:l.length})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{m(null),y(""),w(""),c(!0)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,t.jsx)(h.Plus,{className:"w-3 h-3"}),"Add"]}),s&&(0,t.jsxs)("button",{onClick:s,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]})]}),k&&(0,t.jsx)("p",{className:"mb-3 text-xs text-[var(--muted-foreground)]",children:k}),(i||u)&&(0,t.jsxs)("div",{className:"mb-3 space-y-2 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,t.jsx)("input",{value:b,onChange:e=>y(e.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0}),(0,t.jsx)("input",{value:N,onChange:e=>w(e.target.value),className:"input w-full text-sm",placeholder:"Local path"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>{u?R(u):S()},disabled:!b.trim()||!N.trim(),className:"rounded-lg bg-[var(--foreground)] px-3 py-1.5 text-xs font-medium text-[var(--background)] disabled:opacity-40",children:"Save"}),(0,t.jsxs)("button",{type:"button",onClick:A,className:"flex items-center gap-1 rounded-lg px-2 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,t.jsx)(g.X,{className:"w-3 h-3"}),"Cancel"]})]})]}),0===l.length?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No folders linked"}):(0,t.jsx)("div",{className:"space-y-2",children:l.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(x.FolderGit2,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--foreground)]",children:e.name}),e.path&&(0,t.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:e.path})]}),(0,t.jsx)("button",{type:"button",onClick:()=>{c(!1),m(e.id),y(e.name),w(e.path??"")},className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]","aria-label":`Edit ${e.name}`,children:(0,t.jsx)(p.Pencil,{className:"w-3 h-3"})}),(0,t.jsx)("button",{type:"button",onClick:()=>void M(e.id),className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]","aria-label":`Delete ${e.name}`,children:(0,t.jsx)(f.Trash2,{className:"w-3 h-3"})})]},e.id))})]})}var b=e.i(938201),y=e.i(902572),N=e.i(958164);let w={on_track:{label:"On Track",dot:"bg-[var(--status-completed)]",badge:"border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] text-[var(--status-completed-text)]"},at_risk:{label:"At Risk",dot:"bg-[var(--status-blocked)]",badge:"border-[var(--status-blocked-border)] bg-[var(--status-blocked-bg)] text-[var(--status-blocked-text)]"},off_track:{label:"Off Track",dot:"bg-[var(--status-failed)]",badge:"border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed-text)]"},done:{label:"Done",dot:"bg-[var(--muted-foreground)]",badge:"border-[var(--border)] bg-[var(--secondary)] text-[var(--muted-foreground)]"}};function k({objective:e,teamName:r,onClick:a}){let s=w[e.status]??w.on_track,n="done"===e.status;return(0,t.jsxs)("button",{type:"button",onClick:a,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${n?"opacity-60":""}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${s.dot}`}),(0,t.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:e.title})]}),(0,t.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${s.badge}`,children:s.label})]}),(0,t.jsx)("div",{className:"mb-2",children:(0,t.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(e.progress,100)}%`}})})}),(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{className:r?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!r&&(0,t.jsx)(N.AlertTriangle,{className:"h-3 w-3"}),r??"No team"]}),(0,t.jsxs)("span",{children:[e.progress,"%"]})]})]})}function I({projectId:e,projectSlug:a}){let n=(0,s.useRouter)(),{projects:l,isLoading:d}=(0,v.useProjects)(),i=(0,r.useMemo)(()=>l.find(e=>e.slug===a),[l,a]),c=(0,r.useMemo)(()=>(0,y.readProjectObjectivesWorkspace)(i?.metadata).objectives,[i?.metadata]),[u,m]=(0,r.useState)([]);(0,r.useEffect)(()=>{fetch(`/api/projects/${e}/teams`).then(e=>e.ok?e.json():{teams:[]}).then(e=>m(e.teams??[])).catch(()=>m([]))},[e]);let x=(0,r.useMemo)(()=>new Map(u.map(e=>[e.id,e.name])),[u]),p=c.filter(e=>e.progress>=100).length;return d?(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(e=>(0,t.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},e))}):0===c.length?(0,t.jsxs)("button",{type:"button",onClick:()=>n.push(`/projects/${a}/objectives`),className:"w-full rounded-2xl border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-6 text-center transition-colors hover:border-[var(--card-hover-border)] hover:bg-[var(--secondary)]",children:[(0,t.jsx)(b.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,t.jsxs)("span",{children:[c.length," ",1===c.length?"objective":"objectives"]}),(0,t.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,t.jsxs)("span",{children:[p,"/",c.length," complete"]})]}),(0,t.jsxs)("button",{onClick:()=>n.push(`/projects/${a}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,t.jsx)(o.ArrowRight,{className:"w-3 h-3"})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:c.map(e=>(0,t.jsx)(k,{objective:e,teamName:x.get(e.teamId)??null,onClick:()=>n.push(`/projects/${a}/objectives/${encodeURIComponent(e.id)}`)},e.id))})]})}var C=e.i(597628),$=e.i(99296),A=e.i(33887),S=e.i(644660);function R({icon:e,title:r,accentClass:a,onClick:s,badge:n,children:l}){return(0,t.jsxs)("button",{type:"button",onClick:s,className:"w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)]",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:a,children:e}),(0,t.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:r})]}),n]}),l&&(0,t.jsx)("div",{className:"text-sm",children:l})]})}function M({projectId:e,projectSlug:a,primaryThreadId:n}){let l=(0,s.useRouter)(),{connected:d,loading:i}=(0,A.useLinearConnection)(),[o,c]=(0,r.useState)(null),[u,m]=(0,r.useState)(0);return(0,r.useEffect)(()=>{let t=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(e)}&limit=3&format=json`).then(e=>e.ok?e.json():{threads:{},total:0}).then(e=>{if(t)return;let r=Object.values(e.threads??{}).flatMap(e=>e.threads??[]).slice(0,3);c(r),m("number"==typeof e.total?e.total:r.length)}).catch(()=>{t||(c([]),m(0))}),()=>{t=!0}},[e]),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsx)(R,{icon:(0,t.jsx)(C.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{n&&l.push(`/projects/${a}/thread/${encodeURIComponent(n)}`)},badge:u>0?(0,t.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:u}):void 0,children:null===o?(0,t.jsx)("div",{className:"space-y-1.5",children:[1,2].map(e=>(0,t.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},e))}):0===o.length?(0,t.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,t.jsx)("div",{className:"space-y-1",children:o.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,t.jsx)(C.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"truncate",children:e.title})]},e.id))})}),(0,t.jsx)(R,{icon:(0,t.jsx)($.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>l.push(`/projects/${a}/terminal`),children:(0,t.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"})}),(0,t.jsx)(R,{icon:(0,t.jsx)(S.LinearIcon,{className:"w-4 h-4"}),title:"Linear",accentClass:"text-blue-400",onClick:()=>l.push(`/projects/${a}/linear`),badge:i?void 0:d?(0,t.jsx)("span",{className:"rounded-full border border-[var(--status-completed-border)] bg-[var(--status-completed-bg)] px-2 py-0.5 text-[11px] text-[var(--status-completed-text)]",children:"Connected"}):(0,t.jsx)("span",{className:"rounded-full border border-[var(--border)] bg-[var(--secondary)] px-2 py-0.5 text-[11px] text-[var(--muted-foreground)]",children:"Connect"}),children:!i&&!d&&(0,t.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function T({projectId:e,projectSlug:r,projectName:a,projectDescription:n,projectMetadata:d,repos:o,threadIds:u}){let x=(0,s.useRouter)(),p=u[0]??null;return(0,t.jsx)("div",{className:"h-full overflow-y-auto",children:(0,t.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[n&&(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:n}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,t.jsx)(I,{projectId:e,projectSlug:r})]}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,t.jsx)(M,{projectId:e,projectSlug:r,primaryThreadId:p})]}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(m,{projectId:e,projectSlug:r,onViewAll:()=>x.push(`/projects/${r}/automations`)}),(0,t.jsx)(l,{projectSlug:r,projectThreadIds:u}),(0,t.jsx)(i,{projectId:e,projectSlug:r,projectThreadIds:u})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(j,{projectId:e,repos:o}),(0,t.jsx)(c,{projectId:e,onViewAll:()=>x.push(`/projects/${r}/teams`)})]})]})})}var L=e.i(378562);e.s(["default",0,function({params:e}){let{slug:s}=(0,r.use)(e),{projects:n}=(0,v.useProjectsWithAgents)(),l=n.find(e=>e.slug===s),[d,i]=(0,r.useState)("loading");return((0,r.useEffect)(()=>{if(!l)return;let e=!1;return(async()=>{try{let t=await fetch(`/api/projects/${l.id}/teams`,{cache:"no-store"});if(e)return;let r=t.ok?await t.json():{teams:[]},a=Array.isArray(r?.teams)?r.teams:[];i(0===a.length?"empty":"has-teams")}catch{e||i("has-teams")}})(),()=>{e=!0}},[l]),l)?"empty"===d?(0,t.jsx)(L.EmptyStateCard,{icon:(0,t.jsx)(a.Users,{className:"w-6 h-6 text-[var(--foreground)]"}),title:`Add a team to ${l.name}`,description:"Teams give your project the agents that will actually do the work. Add one to get started.",ctaLabel:"Add a team",ctaHref:`/projects/${l.slug}/teams/new`}):(0,t.jsx)(T,{projectId:l.id,projectSlug:l.slug,projectName:l.name,projectDescription:l.description,projectMetadata:l.metadata,repos:l.repos,threadIds:l.thread_ids}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}],317389)}]);
|
|
@@ -13,4 +13,4 @@
|
|
|
13
13
|
`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsx)("h3",{className:`text-sm font-medium text-[var(--foreground)] leading-snug line-clamp-2 sm:line-clamp-3
|
|
14
14
|
${"completed"===e.status?"text-[var(--muted-foreground)] line-through":""}
|
|
15
15
|
`,children:e.title||"Untitled Task"}),(0,t.jsx)("div",{className:"shrink-0 mt-0.5",children:(0,t.jsx)(n,{status:e.status||"queued",onStatusChange:o})})]}),(0,t.jsx)("div",{className:"flex items-center justify-between min-h-[16px]",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)] flex-wrap",children:[void 0!==e.priority&&e.priority>0&&(0,t.jsxs)("span",{className:`px-1.5 py-0.5 rounded font-semibold bg-[var(--secondary)] ${0===e.priority?"text-[var(--primary)]":""}`,children:["P",e.priority]}),i&&("auto"===e.approval_mode?(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded font-semibold bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400 cursor-pointer select-none",title:"Auto-approve enabled. Click to switch to manual.",onClick:e=>{e.stopPropagation(),i("manual")},children:"AUTO"}):(0,t.jsx)("span",{className:"px-1.5 py-0.5 rounded font-semibold bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500 cursor-pointer select-none opacity-0 group-hover:opacity-100 transition-opacity",title:"Manual approval. Click to enable auto-approve.",onClick:e=>{e.stopPropagation(),i("auto")},children:"AUTO"})),"draft"!==e.id&&(0,t.jsx)("span",{className:"opacity-0 group-hover:opacity-100 transition-opacity font-mono text-[9px]",children:e.id.slice(0,5)})]})}),p&&v&&(y||k)?(0,t.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[y?(0,t.jsxs)("button",{type:"button",className:"rounded-full border border-[var(--border)] px-2.5 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",onClick:e=>{e.stopPropagation(),p(y)},children:["Back to ",y]}):null,k?(0,t.jsxs)("button",{type:"button",className:"rounded-full border border-[var(--border)] px-2.5 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",onClick:e=>{e.stopPropagation(),p(k)},children:["Move to ",k]}):null]}):null]})}],865260);var p=e.i(247167);let m={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:p.default.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:p.default.env.AGX_BOARD_USER_NAME||"Local Board User"};e.s(["useTasks",0,function(e={}){let t="1"===p.default.env.NEXT_PUBLIC_AGX_BOARD_DISABLE_AUTH,a=e.project,s=e.status,n=e.orphan,o=e.realtime,[l,i]=(0,r.useState)([]),[d,c]=(0,r.useState)(!0),[u,f]=(0,r.useState)(null),[h,x]=(0,r.useState)(null),[g,b]=(0,r.useState)(null),v=(0,r.useCallback)(e=>{if(!e)return[];if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)));if("string"==typeof e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t);if(Array.isArray(e))return Array.from(new Set(e.map(e=>String(e||"").trim()).filter(Boolean)))}catch{}return Array.from(new Set(t.split(",").map(e=>e.trim()).filter(Boolean)))}return[]},[]),j=(0,r.useCallback)(e=>{let t=String(e||"").match(/^---\n([\s\S]*?)\n---\n?/);if(!t)return[];let r=t[1].split("\n").find(e=>e.trim().toLowerCase().startsWith("depends_on:"));return r?v(r.slice(r.indexOf(":")+1).trim()):[]},[v]),y=(0,r.useCallback)((e,t)=>{let r=v(e.depends_on);if(r.length>0)return{...e,depends_on:r};let a="string"==typeof e?.content?j(e.content):[];if(a.length>0)return{...e,depends_on:a};let s=v(t?.depends_on);return s.length>0?{...e,depends_on:s}:e},[j,v]),k=(0,r.useCallback)(async()=>{try{let e=new URLSearchParams;a&&e.set("project",a),s&&e.set("status",s),n&&e.set("orphan","1");let t=await fetch(`/api/tasks?${e.toString()}`);if(!t.ok)throw Error("Failed to fetch tasks");let r=await t.json(),o=Array.isArray(r.tasks)?r.tasks.map(e=>y(e)):[];i(o),f(null)}catch(e){f(e instanceof Error?e:Error("Unknown error"))}finally{c(!1)}},[a,s,n]);(0,r.useEffect)(()=>{k()},[k]),(0,r.useEffect)(()=>{if(!t||!o)return;let e=setInterval(k,3e3);return()=>clearInterval(e)},[t,o,k]),(0,r.useEffect)(()=>{if(t||!o)return;let e={auth:{getSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600,user:{id:m.id,email:m.email,user_metadata:{name:m.name,full_name:m.name}}}},error:null}),signInWithOAuth:async()=>({error:Error("Auth disabled in AGX Board local mode")}),signOut:async()=>({error:null}),onAuthStateChange:()=>({data:{subscription:{unsubscribe(){}}}})},channel:()=>({on(){return this},subscribe(){return this}}),removeChannel(){}},r=e.channel("tasks-changes").on("postgres_changes",{event:"*",schema:"public",table:"tasks"},e=>{"INSERT"===e.eventType?i(t=>{let r=y(e.new);return t.some(e=>e.id===r.id)?t:[r,...t]}):"UPDATE"===e.eventType?i(t=>t.map(t=>t.id===e.new.id?y(e.new,t):t)):"DELETE"===e.eventType&&i(t=>t.filter(t=>t.id!==e.old.id))}).subscribe();return()=>{e.removeChannel(r)}},[o,t]),(0,r.useEffect)(()=>{if(t||!o)return;let e=setInterval(k,3e3);return()=>clearInterval(e)},[o,t,k]);let N=(0,r.useCallback)(async(e,t)=>{let r=await fetch("/api/tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e,swarm_models:t})});if(!r.ok)throw Error((await r.json()).error||"Failed to create task");let{task:a}=await r.json(),s=y(a);return i(e=>e.some(e=>e.id===s.id)?e:[s,...e]),s},[e.realtime,y]),w=(0,r.useCallback)(async(e,t)=>{let r=await fetch(`/api/tasks/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=null;throw"function"==typeof r.json&&(e=await r.json().catch(e=>(console.warn("[useTasks] failed to parse response:",e),null))),Error(e?.error||e?.details||`Failed to update task (${r.status} ${r.statusText||"Error"})`)}let{task:a}=await r.json();return i(t=>t.map(t=>t.id===e?y({...t,...a},t):t)),y(a)},[e.realtime,y]),C=(0,r.useCallback)(async e=>{if(!(await fetch(`/api/tasks/${e}`,{method:"DELETE"})).ok)throw Error("Failed to delete task");i(t=>t.filter(t=>t.id!==e))},[e.realtime]),_=(0,r.useCallback)(async e=>{let t=await fetch("/api/queue/complete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error((await t.json().catch(()=>({}))).error||"Failed to complete task stage");let{task:r}=await t.json();return i(t=>t.map(t=>t.id===e.taskId?y({...t,...r},t):t)),y(r)},[e.realtime,y]),S=(0,r.useCallback)(async e=>{x(e.taskId),b(null);try{let t=await fetch(`/api/orchestrator/tasks/${e.taskId}/cancel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.reason?{reason:e.reason}:{})});if(!t.ok){let e=await t.json().catch(()=>({})),r=e?.error||"Failed to cancel workflow";throw Error(r)}return t.json()}catch(t){let e=t instanceof Error?t:Error("Failed to cancel workflow");throw b(e),e}finally{x(null)}},[]),E=(0,r.useCallback)(async e=>{let t=await fetch(`/api/tasks/${e}`),r=await t.json().catch(e=>(console.warn("[useTasks] failed to parse response:",e),null));if(!t.ok)throw Error(r?.error||"Failed to fetch task details");return y(r?.task)},[y]),T=(0,r.useCallback)(async e=>{let t=await fetch("/api/tasks/assign-orphans",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_id:e})}),r=await t.json().catch(()=>({}));if(!t.ok)throw Error(r?.error||"Failed to assign orphan tasks");return await k(),{updatedCount:Number(r?.updatedCount||0),taskIds:Array.isArray(r?.taskIds)?r.taskIds:[]}},[k]);return{tasks:l,isLoading:d,error:u,cancellingTaskId:h,isCancelling:!!h,cancelError:g,refetch:k,createTask:N,updateTask:w,deleteTask:C,completeTaskStage:_,cancelWorkflow:S,fetchTask:E,assignOrphanTasksToProject:T}}],745649)},936381,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(522016),s=e.i(618566),n=e.i(186710);function o({project:e,onEdit:r,onDelete:a,onClick:s,onManageTasks:n}){let l=e.repos&&e.repos.length>0;return(0,t.jsxs)("div",{onClick:()=>s?.(e),className:`p-5 surface-card space-y-4
|
|
16
|
-
${s?"cursor-pointer hover:border-gray-300 dark:hover:border-gray-700 hover:shadow-md active:scale-[0.99]":""}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:e.name}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:e.slug})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,t.jsxs)("span",{className:"text-[11px] font-semibold text-[var(--muted-foreground)]",children:["Updated ",new Date(e.updated_at).toLocaleDateString()]}),(r||a||n)&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[n&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),n(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] bg-[var(--background)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all",children:"Tasks"}),r&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),r(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all bg-[var(--background)]",children:"Edit"}),a&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),a(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] text-[var(--destructive)] hover:border-[var(--destructive)] transition-all bg-[var(--background)]",children:"Delete"})]})]})]}),e.description&&(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)] line-clamp-2",children:e.description}),e.ci_cd_info&&(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-[12px] uppercase tracking-wide",children:"CI / CD"}),(0,t.jsx)("p",{className:"text-[14px] text-[var(--accent)] font-medium truncate",children:e.ci_cd_info})]}),e.metadata&&Object.keys(e.metadata).length>0&&(0,t.jsxs)("div",{className:"p-3 rounded-lg bg-[var(--muted)]/20 border border-dashed border-[var(--card-border)] space-y-1",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Metadata"}),(0,t.jsx)("div",{className:"space-y-1",children:Object.entries(e.metadata??{}).filter(([e])=>"undefined"!==e&&""!==e).map(([e,r])=>(0,t.jsxs)("div",{className:"text-[12px] text-[var(--muted-foreground)] flex justify-between",children:[(0,t.jsx)("span",{className:"font-semibold",children:e}),(0,t.jsx)("span",{className:"truncate text-right",children:"string"==typeof r?r:JSON.stringify(r)})]},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[12px] uppercase tracking-wider text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("span",{className:"text-[12px] text-[var(--muted-foreground)]",children:l?`${e.repos.length} connected`:"Unlinked"})]}),l?(0,t.jsxs)("div",{className:"mt-3 space-y-2",children:[e.repos.slice(0,2).map(e=>(0,t.jsxs)("div",{className:"p-2 rounded-lg border border-[var(--card-border)] bg-[var(--background)] text-[11px]",children:[(0,t.jsx)("div",{className:"font-semibold truncate",children:e.name}),e.path&&(0,t.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:e.path})]},e.id)),e.repos.length>2&&(0,t.jsxs)("p",{className:"text-[10px] text-center text-[var(--muted-foreground)]",children:["+ ",e.repos.length-2," more"]})]}):(0,t.jsx)("p",{className:"mt-3 text-[12px] text-[var(--muted-foreground)]",children:"No folders added yet."})]})]})}var l=e.i(535208),i=e.i(865260);let d={in_progress:{title:"In Progress",icon:"🔄",color:"var(--status-in-progress)",description:"Currently being worked on by the daemon"},blocked:{title:"Blocked",icon:"🚧",color:"var(--status-blocked)",description:"Waiting for input or resolution"},queued:{title:"Queued",icon:"📋",color:"var(--status-queued)",description:"Ready to be picked up"},completed:{title:"Completed",icon:"✅",color:"var(--status-completed)",description:"Successfully finished"}};function c({tasks:e,onSelectTask:r,onStatusChange:a}){if(0===e.length)return(0,t.jsxs)("div",{className:"text-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-[var(--card-bg)] border border-[var(--card-border)] mb-4",children:(0,t.jsx)("span",{className:"text-3xl",children:"📋"})}),(0,t.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No tasks yet"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm max-w-md mx-auto",children:"Create your first task to get started. Tasks will appear here organized by status."})]});let s=e.filter(e=>"in_progress"===e.status),n=e.filter(e=>"queued"===e.status),o=e.filter(e=>"blocked"===e.status),l=e.filter(e=>"completed"===e.status||"failed"===e.status),u=(e,s)=>{if(0===s.length)return null;let n=d[e];return(0,t.jsxs)("section",{className:"mb-8 animate-fade-in-up",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg",style:{backgroundColor:`color-mix(in srgb, ${n.color} 10%, transparent)`},children:[(0,t.jsx)("span",{className:"text-lg",children:n.icon}),(0,t.jsx)("h3",{className:"text-sm font-semibold",style:{color:n.color},children:n.title}),(0,t.jsx)("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{backgroundColor:`color-mix(in srgb, ${n.color} 15%, transparent)`,color:n.color},children:s.length})]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] hidden sm:block",children:n.description})]}),(0,t.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:s.map((e,s)=>(0,t.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*s}ms`},children:(0,t.jsx)(i.default,{task:e,onClick:()=>r?.(e),onStatusChange:a?t=>a(e.id,t):void 0})},e.id))})]})};return(0,t.jsxs)("div",{children:[u("in_progress",s),u("blocked",o),u("queued",n),u("completed",l)]})}var u=e.i(745649),p=e.i(524123);function m({project:e,onClose:r}){let{tasks:a,isLoading:s}=(0,u.useTasks)({project:e.slug});return(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&r(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-5xl 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,t.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,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-xl font-bold",children:["Tasks for ",e.name]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:"Viewing all tasks associated with this project."})]}),(0,t.jsx)("button",{onClick:r,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-8",children:s?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-20",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full mb-4"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading project tasks..."})]}):(0,t.jsx)(c,{tasks:a})}),(0,t.jsx)("div",{className:"px-8 py-6 border-t border-[var(--card-border)] flex justify-end flex-shrink-0",children:(0,t.jsx)("button",{onClick:r,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Close"})})]})})}e.s(["default",0,function(){let e=(0,s.useRouter)(),i=(0,s.useSearchParams)(),{projects:d,isLoading:c,error:u,refetch:f,createProject:h,updateProject:x,deleteProject:g}=(0,p.useProjects)(),b=(0,l.useProjectFormState)(),[v,j]=(0,r.useState)(null),[y,k]=(0,r.useState)(!1),[N,w]=(0,r.useState)(null),{form:C,repos:_,handleRepoChange:S,addRepo:E,removeRepo:T,resetForm:P,hydrateFromProject:O,isSubmitting:L,setIsSubmitting:A,formError:$,setFormError:M,setForm:R}=b,I=()=>{j(null),P(),k(!0)},U=e=>{j(e),O(e),k(!0)};(0,r.useEffect)(()=>{let e=i.get("edit");if(!e||0===d.length||y)return;let t=d.find(t=>t.id===e);t&&U(t)},[i,d,y]);let D=(0,r.useCallback)(t=>{t.slug&&e.push(`/projects/${t.slug}`)},[e]),F=(0,r.useCallback)(e=>{w(e)},[]),B=(0,r.useCallback)(()=>{w(null)},[]),q=()=>{P(),k(!1),j(null),i.get("edit")&&e.replace("/projects")},J=async()=>{if(!C.name.trim())return void M("Project name is required");let e=_.find(e=>e.name.trim()&&!e.path.trim());if(e)return void M(`Local path is required for folder "${e.name}"`);M(null),A(!0);let t=(0,l.createProjectPayload)(C,_);try{v?await x(v.id,t):await h(t),q()}catch(e){M(e instanceof Error?e.message:"Failed to save project")}finally{A(!1)}},K=async e=>{if(window.confirm(`Delete project "${e.name}"? This cannot be undone.`))try{await g(e.id)}catch(e){alert(e instanceof Error?e.message:"Failed to delete project")}};return(0,t.jsx)(n.default,{children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex flex-col min-h-full",children:[(0,t.jsxs)("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] mt-1",children:"Manage your projects and their folder contexts."})]}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)("button",{onClick:f,className:"px-4 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] hover:border-[var(--primary)] transition-all text-sm font-medium",children:"Refresh"}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-6 py-2 shadow-lg shadow-[var(--primary)]/20",children:"+ New Project"})]})]}),c?(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center py-20",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] animate-pulse",children:"Loading projects..."})]})}):0===d.length?(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"w-24 h-24 rounded-3xl bg-[var(--card-bg)] border border-[var(--card-border)] flex items-center justify-center text-4xl mb-6 shadow-xl",children:"📂"}),(0,t.jsx)("h2",{className:"text-2xl font-bold mb-2",children:"You have no projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-center max-w-sm mb-8 leading-relaxed",children:"Create your first project to start organizing your tasks and connecting your folders."}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20",children:"Create a Project"})]}):(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 pb-20",children:[(0,t.jsxs)(a.default,{href:"/projects/orphans",className:"p-5 rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)] shadow-sm space-y-4 transition-all hover:border-[var(--primary)] hover:shadow-md",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:"Orphan Tasks"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:"Unassigned"})]})}),(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:"Review tasks with empty project assignment and move them into the correct project."})]}),d.map(e=>(0,t.jsx)(o,{project:e,onEdit:U,onDelete:K,onManageTasks:F,onClick:D},e.id))]}),(0,t.jsx)(l.default,{isOpen:y,onClose:q,onSubmit:J,editingProject:v,form:C,repos:_,isSubmitting:L,formError:$,onFieldChange:(e,t)=>R(r=>({...r,[e]:t})),onRepoChange:S,onAddRepo:E,onRemoveRepo:T}),N&&(0,t.jsx)(m,{project:N,onClose:B})]})})}],936381)}]);
|
|
16
|
+
${s?"cursor-pointer hover:border-gray-300 dark:hover:border-gray-700 hover:shadow-md active:scale-[0.99]":""}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:e.name}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:e.slug})]}),(0,t.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,t.jsxs)("span",{className:"text-[11px] font-semibold text-[var(--muted-foreground)]",children:["Updated ",new Date(e.updated_at).toLocaleDateString()]}),(r||a||n)&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[n&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),n(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] bg-[var(--background)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all",children:"Tasks"}),r&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),r(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-all bg-[var(--background)]",children:"Edit"}),a&&(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),a(e)},className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] text-[var(--destructive)] hover:border-[var(--destructive)] transition-all bg-[var(--background)]",children:"Delete"})]})]})]}),e.description&&(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)] line-clamp-2",children:e.description}),e.ci_cd_info&&(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-[12px] uppercase tracking-wide",children:"CI / CD"}),(0,t.jsx)("p",{className:"text-[14px] text-[var(--accent)] font-medium truncate",children:e.ci_cd_info})]}),e.metadata&&Object.keys(e.metadata).length>0&&(0,t.jsxs)("div",{className:"p-3 rounded-lg bg-[var(--muted)]/20 border border-dashed border-[var(--card-border)] space-y-1",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Metadata"}),(0,t.jsx)("div",{className:"space-y-1",children:Object.entries(e.metadata??{}).filter(([e])=>"undefined"!==e&&""!==e).map(([e,r])=>(0,t.jsxs)("div",{className:"text-[12px] text-[var(--muted-foreground)] flex justify-between",children:[(0,t.jsx)("span",{className:"font-semibold",children:e}),(0,t.jsx)("span",{className:"truncate text-right",children:"string"==typeof r?r:JSON.stringify(r)})]},e))})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-[12px] uppercase tracking-wider text-[var(--muted-foreground)]",children:"Folders"}),(0,t.jsx)("span",{className:"text-[12px] text-[var(--muted-foreground)]",children:l?`${e.repos.length} connected`:"Unlinked"})]}),l?(0,t.jsxs)("div",{className:"mt-3 space-y-2",children:[e.repos.slice(0,2).map(e=>(0,t.jsxs)("div",{className:"p-2 rounded-lg border border-[var(--card-border)] bg-[var(--background)] text-[11px]",children:[(0,t.jsx)("div",{className:"font-semibold truncate",children:e.name}),e.path&&(0,t.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:e.path})]},e.id)),e.repos.length>2&&(0,t.jsxs)("p",{className:"text-[10px] text-center text-[var(--muted-foreground)]",children:["+ ",e.repos.length-2," more"]})]}):(0,t.jsx)("p",{className:"mt-3 text-[12px] text-[var(--muted-foreground)]",children:"No folders added yet."})]})]})}var l=e.i(535208),i=e.i(865260);let d={in_progress:{title:"In Progress",icon:"🔄",color:"var(--status-in-progress)",description:"Currently being worked on by the daemon"},blocked:{title:"Blocked",icon:"🚧",color:"var(--status-blocked)",description:"Waiting for input or resolution"},queued:{title:"Queued",icon:"📋",color:"var(--status-queued)",description:"Ready to be picked up"},completed:{title:"Completed",icon:"✅",color:"var(--status-completed)",description:"Successfully finished"}};function c({tasks:e,onSelectTask:r,onStatusChange:a}){if(0===e.length)return(0,t.jsxs)("div",{className:"text-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-2xl bg-[var(--card-bg)] border border-[var(--card-border)] mb-4",children:(0,t.jsx)("span",{className:"text-3xl",children:"📋"})}),(0,t.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No tasks yet"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm max-w-md mx-auto",children:"Create your first task to get started. Tasks will appear here organized by status."})]});let s=e.filter(e=>"in_progress"===e.status),n=e.filter(e=>"queued"===e.status),o=e.filter(e=>"blocked"===e.status),l=e.filter(e=>"completed"===e.status||"failed"===e.status),u=(e,s)=>{if(0===s.length)return null;let n=d[e];return(0,t.jsxs)("section",{className:"mb-8 animate-fade-in-up",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg",style:{backgroundColor:`color-mix(in srgb, ${n.color} 10%, transparent)`},children:[(0,t.jsx)("span",{className:"text-lg",children:n.icon}),(0,t.jsx)("h3",{className:"text-sm font-semibold",style:{color:n.color},children:n.title}),(0,t.jsx)("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{backgroundColor:`color-mix(in srgb, ${n.color} 15%, transparent)`,color:n.color},children:s.length})]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] hidden sm:block",children:n.description})]}),(0,t.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:s.map((e,s)=>(0,t.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*s}ms`},children:(0,t.jsx)(i.default,{task:e,onClick:()=>r?.(e),onStatusChange:a?t=>a(e.id,t):void 0})},e.id))})]})};return(0,t.jsxs)("div",{children:[u("in_progress",s),u("blocked",o),u("queued",n),u("completed",l)]})}var u=e.i(745649),p=e.i(524123);function m({project:e,onClose:r}){let{tasks:a,isLoading:s}=(0,u.useTasks)({project:e.slug});return(0,t.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:e=>e.target===e.currentTarget&&r(),children:(0,t.jsxs)("div",{className:"modal-content w-full max-w-5xl 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,t.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,t.jsxs)("div",{children:[(0,t.jsxs)("h2",{className:"text-xl font-bold",children:["Tasks for ",e.name]}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:"Viewing all tasks associated with this project."})]}),(0,t.jsx)("button",{onClick:r,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-8",children:s?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-20",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full mb-4"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading project tasks..."})]}):(0,t.jsx)(c,{tasks:a})}),(0,t.jsx)("div",{className:"px-8 py-6 border-t border-[var(--card-border)] flex justify-end flex-shrink-0",children:(0,t.jsx)("button",{onClick:r,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Close"})})]})})}e.s(["default",0,function(){let e=(0,s.useRouter)(),i=(0,s.useSearchParams)(),{projects:d,isLoading:c,error:u,refetch:f,createProject:h,updateProject:x,deleteProject:g}=(0,p.useProjects)(),b=(0,l.useProjectFormState)(),[v,j]=(0,r.useState)(null),[y,k]=(0,r.useState)(!1),[N,w]=(0,r.useState)(null),{form:C,repos:_,handleRepoChange:S,addRepo:E,removeRepo:T,resetForm:P,hydrateFromProject:O,isSubmitting:L,setIsSubmitting:A,formError:$,setFormError:M,setForm:R}=b,I=()=>{j(null),P(),k(!0)},U=e=>{j(e),O(e),k(!0)};(0,r.useEffect)(()=>{let e=i.get("edit");if(!e||0===d.length||y)return;let t=d.find(t=>t.id===e);t&&U(t)},[i,d,y]),(0,r.useEffect)(()=>{"1"!==i.get("new")||y||(I(),e.replace("/projects"))},[i]);let D=(0,r.useCallback)(t=>{t.slug&&e.push(`/projects/${t.slug}`)},[e]),F=(0,r.useCallback)(e=>{w(e)},[]),B=(0,r.useCallback)(()=>{w(null)},[]),q=()=>{P(),k(!1),j(null),i.get("edit")&&e.replace("/projects")},J=async()=>{if(!C.name.trim())return void M("Project name is required");let e=_.find(e=>e.name.trim()&&!e.path.trim());if(e)return void M(`Local path is required for folder "${e.name}"`);M(null),A(!0);let t=(0,l.createProjectPayload)(C,_);try{v?await x(v.id,t):await h(t),q()}catch(e){M(e instanceof Error?e.message:"Failed to save project")}finally{A(!1)}},K=async e=>{if(window.confirm(`Delete project "${e.name}"? This cannot be undone.`))try{await g(e.id)}catch(e){alert(e instanceof Error?e.message:"Failed to delete project")}};return(0,t.jsx)(n.default,{children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex flex-col min-h-full",children:[(0,t.jsxs)("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] mt-1",children:"Manage your projects and their folder contexts."})]}),(0,t.jsxs)("div",{className:"flex gap-3",children:[(0,t.jsx)("button",{onClick:f,className:"px-4 py-2 rounded-xl border border-[var(--card-border)] bg-[var(--card-bg)] hover:border-[var(--primary)] transition-all text-sm font-medium",children:"Refresh"}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-6 py-2 shadow-lg shadow-[var(--primary)]/20",children:"+ New Project"})]})]}),c?(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center py-20",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,t.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] animate-pulse",children:"Loading projects..."})]})}):0===d.length?(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center py-20 animate-fade-in",children:[(0,t.jsx)("div",{className:"w-24 h-24 rounded-3xl bg-[var(--card-bg)] border border-[var(--card-border)] flex items-center justify-center text-4xl mb-6 shadow-xl",children:"📂"}),(0,t.jsx)("h2",{className:"text-2xl font-bold mb-2",children:"You have no projects"}),(0,t.jsx)("p",{className:"text-[var(--muted-foreground)] text-center max-w-sm mb-8 leading-relaxed",children:"Create your first project to start organizing your tasks and connecting your folders."}),(0,t.jsx)("button",{onClick:I,className:"btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20",children:"Create a Project"})]}):(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 pb-20",children:[(0,t.jsxs)(a.default,{href:"/projects/orphans",className:"p-5 rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)] shadow-sm space-y-4 transition-all hover:border-[var(--primary)] hover:shadow-md",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:"Orphan Tasks"}),(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:"Unassigned"})]})}),(0,t.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:"Review tasks with empty project assignment and move them into the correct project."})]}),d.map(e=>(0,t.jsx)(o,{project:e,onEdit:U,onDelete:K,onManageTasks:F,onClick:D},e.id))]}),(0,t.jsx)(l.default,{isOpen:y,onClose:q,onSubmit:J,editingProject:v,form:C,repos:_,isSubmitting:L,formError:$,onFieldChange:(e,t)=>R(r=>({...r,[e]:t})),onRepoChange:S,onAddRepo:E,onRemoveRepo:T}),N&&(0,t.jsx)(m,{project:N,onClose:B})]})})}],936381)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,906724,595807,e=>{"use strict";let t=(0,e.i(363732).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",0,t],595807),e.s(["Loader2",0,t],906724)},575479,e=>{"use strict";let t=(0,e.i(363732).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",0,t],575479)},741746,e=>{"use strict";let t=(0,e.i(363732).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,t],741746)},844118,e=>{e.n(e.i(984242))}]);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,597628,e=>{"use strict";let t=(0,e.i(363732).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);e.s(["MessageSquare",0,t],597628)},618566,(e,t,r)=>{t.exports=e.r(976562)},572665,e=>{"use strict";let t=(0,e.i(363732).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",0,t],572665)},8707,e=>{"use strict";let t=(0,e.i(363732).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",0,t],8707)},498027,e=>{"use strict";let t=(0,e.i(363732).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",0,t],498027)},529471,e=>{"use strict";let t=(0,e.i(363732).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],529471)},378764,e=>{"use strict";var t=e.i(843476),r=e.i(271645),a=e.i(498027),i=e.i(8707),n=e.i(529471),o=e.i(797167);e.s(["default",0,function({options:e,value:s,onChange:c,placeholder:l,disabled:u}){let[d,f]=(0,r.useState)(!1),[p,h]=(0,r.useState)(""),m=(0,r.useRef)(null),y=(0,r.useRef)(null),v=(0,r.useMemo)(()=>{if(!p)return e;let t=p.toLowerCase();return e.filter(e=>e.label.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t)||e.meta?.toLowerCase().includes(t))},[e,p]),b=(0,r.useMemo)(()=>e.find(e=>e.id===s),[e,s]),j=(0,r.useCallback)(e=>{m.current&&!m.current.contains(e.target)&&f(!1)},[]);return(0,r.useEffect)(()=>(document.addEventListener("pointerdown",j),()=>document.removeEventListener("pointerdown",j)),[j]),(0,t.jsxs)("div",{ref:m,className:"relative",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{u||(f(!d),h(""),setTimeout(()=>y.current?.focus(),0))},disabled:u,className:"input w-full flex items-center justify-between gap-2 text-left cursor-pointer",children:[b?(0,t.jsx)("span",{className:"truncate",children:b.label}):(0,t.jsx)("span",{className:"text-[var(--muted-foreground)] truncate",children:l}),(0,t.jsx)(a.ChevronDown,{className:`w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0 transition-transform ${d?"rotate-180":""}`})]}),d&&(0,t.jsxs)("div",{className:"absolute z-50 mt-2 min-w-full w-max max-w-[28rem] rounded-2xl overflow-hidden right-0",style:{background:"var(--card-bg)",border:"1px solid var(--border)",boxShadow:"0 8px 30px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.05)"},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2.5 px-3.5 py-3 border-b",style:{borderColor:"var(--border)"},children:[(0,t.jsx)(i.Search,{className:"w-4 h-4 text-[var(--muted-foreground)] flex-shrink-0"}),(0,t.jsx)("input",{ref:y,value:p,onChange:e=>h(e.target.value),placeholder:"Search...",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-[var(--muted-foreground)]"}),p&&(0,t.jsx)("button",{onClick:()=>h(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,t.jsx)(o.X,{className:"w-3.5 h-3.5"})})]}),(0,t.jsxs)("div",{className:"max-h-72 overflow-y-auto py-1",children:[0===v.length&&(0,t.jsx)("div",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"No matches"}),v.map(e=>{let r=e.id===s;return(0,t.jsxs)("button",{onClick:()=>{e.disabled||(c(e.id),f(!1),h(""))},disabled:e.disabled,className:`
|
|
2
|
+
w-full text-left px-3.5 py-2.5 flex items-center gap-3 transition-colors
|
|
3
|
+
${e.disabled?"opacity-35 cursor-not-allowed":""}
|
|
4
|
+
${r?"bg-[var(--primary)]/10":"hover:bg-[var(--muted)]/40"}
|
|
5
|
+
`,children:[(0,t.jsx)("div",{className:`w-5 h-5 rounded-md flex items-center justify-center flex-shrink-0 border ${r?"bg-[var(--primary)] border-[var(--primary)]":"border-[var(--border)]"}`,children:r&&(0,t.jsx)(n.Check,{className:"w-3 h-3 text-white"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:e.label}),e.meta&&(0,t.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-[var(--muted)]/50 text-[var(--muted-foreground)]",children:e.meta})]}),e.description&&(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:e.description})]})]},e.id)})]})]})]})}])},44054,e=>{"use strict";var t=e.i(271645);let r="(pointer: coarse)",a="(hover: hover)",i="(max-width: 767px)",n="(min-width: 768px)";function o(){if("function"!=typeof window.matchMedia)return{isCoarsePointer:!1,canHover:!0,isPhone:!1,isTablet:!1,isTouchLayout:!1};let e=window.matchMedia(r).matches,t=window.matchMedia(a).matches,o=window.matchMedia(i).matches,s=!o&&window.matchMedia(n).matches,c=e||!t;return{isCoarsePointer:e,canHover:t,isPhone:c&&o,isTablet:c&&s,isTouchLayout:c}}e.s(["useInputCapabilities",0,function(){let[e,s]=(0,t.useState)(o);return(0,t.useEffect)(()=>{if("function"!=typeof window.matchMedia)return;let e=[window.matchMedia(r),window.matchMedia(a),window.matchMedia(i),window.matchMedia(n)],t=()=>{s(o())};return e.forEach(e=>e.addEventListener("change",t)),window.addEventListener("resize",t),t(),()=>{e.forEach(e=>e.removeEventListener("change",t)),window.removeEventListener("resize",t)}},[]),e}])},755838,(e,t,r)=>{"use strict";var a=e.r(271645),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=a.useState,o=a.useEffect,s=a.useLayoutEffect,c=a.useDebugValue;function l(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!i(e,r)}catch(e){return!0}}var u="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=n({inst:{value:r,getSnapshot:t}}),i=a[0].inst,u=a[1];return s(function(){i.value=r,i.getSnapshot=t,l(i)&&u({inst:i})},[e,r,t]),o(function(){return l(i)&&u({inst:i}),e(function(){l(i)&&u({inst:i})})},[e]),c(r),r};r.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:u},802239,(e,t,r)=>{"use strict";t.exports=e.r(755838)},752822,(e,t,r)=>{"use strict";var a=e.r(271645),i=e.r(802239),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=i.useSyncExternalStore,s=a.useRef,c=a.useEffect,l=a.useMemo,u=a.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,a,i){var d=s(null);if(null===d.current){var f={hasValue:!1,value:null};d.current=f}else f=d.current;var p=o(e,(d=l(function(){function e(e){if(!c){if(c=!0,o=e,e=a(e),void 0!==i&&f.hasValue){var t=f.value;if(i(t,e))return s=t}return s=e}if(t=s,n(o,e))return t;var r=a(e);return void 0!==i&&i(t,r)?(o=e,t):(o=e,s=r)}var o,s,c=!1,l=void 0===r?null:r;return[function(){return e(t())},null===l?void 0:function(){return e(l())}]},[t,r,a,i]))[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}},430224,(e,t,r)=>{"use strict";t.exports=e.r(752822)},19035,e=>{"use strict";let t=(0,e.i(363732).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",0,t],19035)},538292,e=>{"use strict";let t=(0,e.i(363732).default)("folder-open",[["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"}]]);e.s(["FolderOpen",0,t],538292)},797167,e=>{"use strict";let t=(0,e.i(363732).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],797167)},363732,e=>{"use strict";var t=e.i(271645);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 i={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 n=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:n=2,absoluteStrokeWidth:o,className:s="",children:c,iconNode:l,...u},d)=>(0,t.createElement)("svg",{ref:d,...i,width:a,height:a,stroke:e,strokeWidth:o?24*Number(n)/Number(a):n,className:r("lucide",s),...!c&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...l.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(c)?c:[c]]));e.s(["default",0,(e,i)=>{let o=(0,t.forwardRef)(({className:o,...s},c)=>(0,t.createElement)(n,{ref:c,iconNode:i,className:r(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,o),...s}));return o.displayName=a(e),o}],363732)},929870,e=>{"use strict";let t=(0,e.i(363732).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],929870)},524123,e=>{"use strict";var t=e.i(271645);e.s(["useProjects",0,function(){let[e,r]=(0,t.useState)([]),[a,i]=(0,t.useState)(!1),[n,o]=(0,t.useState)(null),s=(0,t.useCallback)(async()=>{i(!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??[]),o(null)}catch(e){o(e instanceof Error?e:Error("Unknown error"))}finally{i(!1)}},[]);(0,t.useEffect)(()=>{s()},[s]);let c=(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:n,refetch:s,createProject:c,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 i=(await a.json()).project;return r(t=>t.map(t=>t.id===e?i:t)),i},[]),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))},[])}},"useProjectsWithAgents",0,function(){let[e,r]=(0,t.useState)([]),[a,i]=(0,t.useState)(!0),n=(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,i]=await Promise.all([fetch(`/api/projects/${e.id}/agents`),fetch(`/api/projects/${e.id}/threads`)]);a.ok&&(t=(await a.json()).agents??[]),i.ok&&(r=((await i.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{i(!1)}},[]);(0,t.useEffect)(()=>{n()},[n]);let o=(0,t.useCallback)(async(e,t)=>{try{let a="string"==typeof e?{name:e}:e,i=a.name.trim(),n=(a.slug||i.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),o=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,name:i,slug:n})});if(!o.ok)return null;let{project:s}=await o.json(),c=Array.isArray(t)?t:t?[t]:[];for(let e of c)await fetch(`/api/projects/${s.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:e})}).catch(e=>console.warn("[useProjects] link thread failed:",e));let l={...s,repos:s.repos??[],agents:[],thread_ids:c,workspace_ids:c};return r(e=>[...e,l].sort((e,t)=>e.name.localeCompare(t.name))),l}catch{return null}},[]),s=(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{}},[]),c=(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{}},[]),l=(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 i=(await a.json()).project;return r(t=>t.map(t=>t.id===e?{...t,...i,repos:i.repos??t.repos}:t)),i}catch{return null}},[]),u=(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 i=((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:i}: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 i=((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:i}:t))}catch{}},[]);return{projects:e,isLoading:a,createProject:o,updateProject:l,renameProject:s,deleteProject:c,addAgent:u,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 i=((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:i}: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 n()}catch{}},[n]),refresh:n}}])},169610,e=>{"use strict";let t=(0,e.i(363732).default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);e.s(["User",0,t],169610)},519132,e=>{"use strict";let t=(0,e.i(363732).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",0,t],519132)},195057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return s},formatWithValidation:function(){return l},urlObjectKeys:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let n=e.r(190809)._(e.r(998183)),o=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,a=e.protocol||"",i=e.pathname||"",s=e.hash||"",c=e.query||"",l=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?l=t+e.host:r&&(l=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(l+=":"+e.port)),c&&"object"==typeof c&&(c=String(n.urlQueryToSearchParams(c)));let u=e.search||c&&`?${c}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==l?(l="//"+(l||""),i&&"/"!==i[0]&&(i="/"+i)):l||(l=""),s&&"#"!==s[0]&&(s="#"+s),u&&"?"!==u[0]&&(u="?"+u),i=i.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${a}${l}${i}${u}${s}`}let c=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return s(e)}},818581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let a=e.r(271645);function i(e,t){let r=(0,a.useRef)(null),i=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=n(e,a)),t&&(i.current=n(t,a))},[e,t])}function n(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)},573668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return n}});let a=e.r(718967),i=e.r(652817);function n(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,i.hasBasePath)(r.pathname)}catch(e){return!1}}},284508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},522016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return v},useLinkStatus:function(){return j}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let n=e.r(190809),o=e.r(843476),s=n._(e.r(271645)),c=e.r(195057),l=e.r(8372),u=e.r(818581),d=e.r(718967),f=e.r(405550);e.r(233525);let p=e.r(388540),h=e.r(91949),m=e.r(573668),y=e.r(509396);function v(t){var r,a;let i,n,v,[j,g]=(0,s.useOptimistic)(h.IDLE_LINK_STATUS),w=(0,s.useRef)(null),{href:k,as:_,children:x,prefetch:S=null,passHref:C,replace:T,shallow:P,scroll:O,onClick:A,onMouseEnter:E,onTouchStart:L,legacyBehavior:M=!1,onNavigate:I,transitionTypes:N,ref:$,unstable_dynamicOnHover:U,...W}=t;i=x,M&&("string"==typeof i||"number"==typeof i)&&(i=(0,o.jsx)("a",{children:i}));let R=s.default.useContext(l.AppRouterContext),D=!1!==S,H=!1!==S?null===(a=S)||"auto"===a?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,V="string"==typeof(r=_||k)?r:(0,c.formatUrl)(r);if(M){if(i?.$$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=s.default.Children.only(i)}let F=M?n&&"object"==typeof n&&n.ref:$,B=s.default.useCallback(e=>(null!==R&&(w.current=(0,h.mountLinkInstance)(e,V,R,H,D,g)),()=>{w.current&&((0,h.unmountLinkForCurrentNavigation)(w.current),w.current=null),(0,h.unmountPrefetchableInstance)(e)}),[D,V,R,H,g]),J={ref:(0,u.useMergedRef)(B,F),onClick(t){M||"function"!=typeof A||A(t),M&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!R||t.defaultPrevented||function(t,r,a,i,n,o,c){if("u">typeof window){let l,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((l=t.currentTarget.getAttribute("target"))&&"_self"!==l||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){i&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),o){let e=!1;if(o({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(699781);s.default.startTransition(()=>{d(r,i?"replace":"push",!1===n?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,a.current,c)})}}(t,V,w,T,O,I,N)},onMouseEnter(e){M||"function"!=typeof E||E(e),M&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&D&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){M||"function"!=typeof L||L(e),M&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&D&&(0,h.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(V)?J.href=V:M&&!C&&("a"!==n.type||"href"in n.props)||(J.href=(0,f.addBasePath)(V)),v=M?s.default.cloneElement(n,J):(0,o.jsx)("a",{...W,...J,children:i}),(0,o.jsx)(b.Provider,{value:j,children:v})}e.r(284508);let b=(0,s.createContext)(h.IDLE_LINK_STATUS),j=()=>(0,s.useContext)(b);("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)},810605,e=>{"use strict";e.s(["GRAPH_TIMEOUT_DEFAULT_MS",0,864e5,"NODE_TIMEOUT_DEFAULT_MS",0,18e5,"UI_POLL_CHAT_ALT_MS",0,15e3,"UI_POLL_CHAT_CHECK_MS",0,1e4,"UI_POLL_DB_HEALTH_MS",0,3e4,"UI_POLL_PROMPT_RUNS_MS",0,5e3,"UI_POLL_SYSTEM_STATUS_MS",0,3e4,"UI_POLL_TASK_DURATION_MS",0,6e4])},55236,e=>{"use strict";let t=(0,e.i(363732).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);e.s(["Folder",0,t],55236)},169433,e=>{"use strict";let t="agx:windowState",r={workspaceWidth:260,logPanelHeight:200,workspaceVisible:!0,logPanelVisible:!1,linearTicketPanelWidth:576,linearRunsPanelWidth:224,objectiveChatPanelWidth:440,objectiveListPanelWidth:320},a={lastThreadId:null,lastWorkspaceId:null},i={bounds:null,sidebar:r,scroll:a};function n(){return void 0!==window.localStorage}function o(){if(!n())return{...i};let e=window.localStorage.getItem(t);if(!e)return{...i};try{let t=JSON.parse(e);return{bounds:t.bounds||null,sidebar:{...r,...t.sidebar||{}},scroll:{...a,...t.scroll||{}}}}catch{return{...i}}}function s(){return o().sidebar}function c(e){let r=o();r.sidebar={...r.sidebar,...e};if(n())try{window.localStorage.setItem(t,JSON.stringify(r))}catch{}}e.s(["loadLinearRunsPanelWidth",0,function(){return s().linearRunsPanelWidth},"loadLinearTicketPanelWidth",0,function(){return s().linearTicketPanelWidth},"loadObjectiveChatPanelWidth",0,function(){return s().objectiveChatPanelWidth},"loadObjectiveListPanelWidth",0,function(){return s().objectiveListPanelWidth},"loadWorkspaceWidth",0,function(){return s().workspaceWidth},"persistLinearRunsPanelWidth",0,function(e){c({linearRunsPanelWidth:e})},"persistLinearTicketPanelWidth",0,function(e){c({linearTicketPanelWidth:e})},"persistObjectiveChatPanelWidth",0,function(e){c({objectiveChatPanelWidth:e})},"persistObjectiveListPanelWidth",0,function(e){c({objectiveListPanelWidth:e})},"persistWorkspaceWidth",0,function(e){c({workspaceWidth:e})}])},902572,e=>{"use strict";let t="project_objectives_workspace",r="project_goals_workspace",a=new Set(["on_track","at_risk","off_track","done"]);function i(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function n(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function o(e){return[...e].sort((e,t)=>Date.parse(t.updatedAt)-Date.parse(e.updatedAt))}function s(e){return[...e].sort((e,t)=>Date.parse(e.createdAt)-Date.parse(t.createdAt))}function c(e){return[...e].sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))}function l(e,t=""){return"string"==typeof e?e:t}function u(e){return Array.isArray(e)?Array.from(new Set(e.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))):[]}function d(e,t="1970-01-01T00:00:00.000Z"){if("string"!=typeof e)return t;let r=Date.parse(e);return Number.isNaN(r)?t:new Date(r).toISOString()}function f(e){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function p(e,t=0){return"number"==typeof e&&Number.isFinite(e)?Math.max(0,Math.floor(e)):t}function h(e,t="objective"){let r=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return r||t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function m(e,t,r="objective"){let a=h(r),i=h(e,a),n=i,o=2;for(;t.has(n);){let e=`-${o}`,t=Math.max(1,32-e.length);n=`${i.slice(0,t)}${e}`,o+=1}return t.add(n),n}function y(e){var t;if(!i(e))return null;let r=d(e.updatedAt??e.createdAt),o=d(e.createdAt,r);return{id:l(e.id,n("objective")),title:l(e.title,"Untitled objective"),teamId:l(e.teamId??e.team_id??e.ownerTeamId),key:h(l(e.key??e.slug??e.label),l(e.title??e.id,"objective")),threadId:l(e.threadId)||null,chatSessionVersion:p(e.chatSessionVersion,0),scheduledTaskIds:u(e.scheduledTaskIds??e.promptJobIds),summary:l(e.summary),progress:f(e.progress),status:"string"==typeof(t=e.status)&&a.has(t)?t:"on_track",createdAt:o,updatedAt:r}}function v(e){if(!i(e))return null;let t=d(e.updatedAt??e.createdAt),r=d(e.createdAt,t),a=l(e.objectiveId??e.goalId);return a?{id:l(e.id,n("objective_activity")),objectiveId:a,sourceType:"note",sourceLabel:l(e.sourceLabel,"Update"),title:l(e.title,"Untitled activity"),body:l(e.body),createdAt:r,updatedAt:t,relatedTaskId:l(e.relatedTaskId)||null}:null}function b(e){if(!i(e))return null;let t=l(e.activityId);return t?{id:l(e.id,n("objective_thread_message")),activityId:t,author:l(e.author,"You"),body:l(e.body),createdAt:d(e.createdAt)}:null}function j(){return{objectives:[],activities:[],activityThreads:{}}}function g(e){let t;if(!i(e))return j();let r=Array.isArray(e.objectives)?e.objectives.map(e=>y(e)).filter(e=>null!==e):[],a=Array.isArray(e.activities)?e.activities.map(e=>v(e)).filter(e=>null!==e):[],n=i(e.activityThreads)?Object.fromEntries(Object.entries(e.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(e=>b(e)).filter(e=>null!==e):[])])):{};return{objectives:o((t=new Set,r.map(e=>{let r=m(e.key||e.title||e.id,t,e.id||e.title||"objective");return e.key===r?e:{...e,key:r}}))),activities:c(a),activityThreads:n}}e.s(["CURRENT_OBJECTIVE_CHAT_SESSION_VERSION",0,2,"buildObjectiveTimelineActivities",0,function({objective:e,workspace:t}){return t.activities.filter(t=>t.objectiveId===e.id).map(e=>({...e,threadCount:t.activityThreads[e.id]?.length??0})).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt))},"createProjectObjective",0,function(e){return{id:e.id??n("objective"),title:e.title.trim(),teamId:e.teamId.trim(),key:h(e.key?.trim()??e.title.trim(),e.id??e.title),threadId:"string"==typeof e.threadId&&e.threadId.trim()?e.threadId.trim():null,chatSessionVersion:p(e.chatSessionVersion??2,2),scheduledTaskIds:u(e.scheduledTaskIds??[]),summary:e.summary?.trim()??"",progress:f(e.progress??0),status:e.status??"on_track",createdAt:e.now,updatedAt:e.now}},"generateProjectObjectiveKey",0,function(e,t,r){return m(e,new Set(t.filter(e=>e.id!==r).map(e=>h(e.key||e.title||e.id))),r??e)},"readProjectObjectivesWorkspace",0,function(e){if(!i(e))return j();let a=e[t];if(void 0!==a){let e=g(a);if(e.objectives.length>0||e.activities.length>0||Object.keys(e.activityThreads).length>0)return e}let n=e[r];if(void 0!==n){if(!i(n))return j();let e=Array.isArray(n.goals)?n.goals.map(e=>(function(e){if(!i(e))return null;let t=l(e.target),r=[l(e.summary),t?`Measure: ${t}`:""].filter(Boolean).join("\n\n");return y({...e,summary:r})})(e)).filter(e=>null!==e):[],t=Array.isArray(n.manualActivities)?n.manualActivities.map(e=>v({...e,sourceLabel:"Update"})).filter(e=>null!==e):[],r=i(n.activityThreads)?Object.fromEntries(Object.entries(n.activityThreads).map(([e,t])=>[e,s(Array.isArray(t)?t.map(t=>b({...t,activityId:e})).filter(e=>null!==e):[])])):{};return{objectives:o(e),activities:c(t),activityThreads:r}}return j()},"removeProjectObjective",0,function(e,t){let r=new Set(e.activities.filter(e=>e.objectiveId===t).map(e=>e.id)),a=Object.fromEntries(Object.entries(e.activityThreads).filter(([e])=>!r.has(e)));return{objectives:e.objectives.filter(e=>e.id!==t),activities:e.activities.filter(e=>e.objectiveId!==t),activityThreads:a}},"upsertProjectObjective",0,function(e,t){let r=e.objectives.findIndex(e=>e.id===t.id)>=0?e.objectives.map(e=>e.id===t.id?t:e):[t,...e.objectives];return{...e,objectives:o(r)}},"writeProjectObjectivesWorkspace",0,function(e,a){let i={...e};return delete i[r],i[t]=g(a),i}])},644660,e=>{"use strict";var t=e.i(843476);e.s(["LinearIcon",0,function({size:e=16,...r}){return(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 100 100",fill:"currentColor",...r,children:(0,t.jsx)("path",{d:"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3542-.0443L12.6587 18.074Z"})})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,749410,481248,e=>{"use strict";var r=e.i(843476),t=e.i(271645),a=e.i(174080),s=e.i(498027),i=e.i(997626),l=e.i(55236),o=e.i(196630),n=e.i(363732);let d=(0,n.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var c=e.i(929870),u=e.i(8707),p=e.i(797167),m=e.i(257587),x=e.i(938201),h=e.i(572665);let b=(0,n.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var f=e.i(597628),v=e.i(99296);let g=(0,n.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var j=e.i(522016),w=e.i(44054),k=e.i(884564),_=e.i(535208),N=e.i(902572),y=e.i(644660);function S({compact:e=!1}){return(0,r.jsxs)("span",{className:`workspace-sidebar__brand-logo${e?" workspace-sidebar__brand-logo--compact":""}`,"aria-hidden":"true",children:[(0,r.jsxs)("span",{className:"workspace-sidebar__brand-grid",children:[(0,r.jsx)("span",{className:"workspace-sidebar__brand-dot workspace-sidebar__brand-dot--blue"}),(0,r.jsx)("span",{className:"workspace-sidebar__brand-dot workspace-sidebar__brand-dot--yellow"}),(0,r.jsx)("span",{className:"workspace-sidebar__brand-dot workspace-sidebar__brand-dot--mint"}),(0,r.jsx)("span",{className:"workspace-sidebar__brand-dot workspace-sidebar__brand-dot--red"})]}),(0,r.jsx)("span",{className:"workspace-sidebar__brand-text",children:"AGX"})]})}function C({label:e,children:s}){let i=(0,t.useRef)(null),[l,o]=(0,t.useState)(null);return(0,r.jsxs)("div",{ref:i,onMouseEnter:()=>{let e=i.current?.firstElementChild??i.current;if(!e)return;let r=e.getBoundingClientRect();o({top:r.top+r.height/2,left:r.right+8})},onMouseLeave:()=>o(null),style:{display:"contents"},children:[s,l&&(0,a.createPortal)((0,r.jsx)("div",{className:"workspace-sidebar__rail-tooltip",style:{top:l.top,left:l.left,transform:"translateY(-50%)"},children:e}),document.body)]})}function I({projects:e,activeProjectId:a,onSelectProject:i,onCreateProject:o}){let[n,d]=(0,t.useState)(!1),[m,x]=(0,t.useState)(""),h=(0,t.useRef)(null),b=(0,t.useRef)(null),f=e.find(e=>e.id===a)??e[0],v=m.trim()?e.filter(e=>e.name.toLowerCase().includes(m.toLowerCase())):e;return(0,t.useEffect)(()=>{if(!n)return;let e=e=>{h.current&&!h.current.contains(e.target)&&(d(!1),x(""))};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[n]),(0,t.useEffect)(()=>{n&&b.current&&b.current.focus()},[n]),(0,r.jsxs)("div",{className:"relative px-3 pt-3 pb-2",ref:h,children:[(0,r.jsxs)("button",{type:"button",onClick:()=>d(!n),className:"flex w-full items-center gap-2 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] px-2.5 py-2 text-sm text-[var(--foreground)] transition-all hover:border-[var(--app-shell-border-strong)]",children:[(0,r.jsx)(l.Folder,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"flex-1 truncate text-left font-medium",children:f?.name??"Select project"}),(0,r.jsx)(s.ChevronDown,{size:14,className:`flex-shrink-0 text-[var(--muted-foreground)] transition-transform ${n?"rotate-180":""}`})]}),n&&(0,r.jsxs)("div",{className:"absolute left-3 right-3 z-50 mt-1 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,r.jsx)("div",{className:"p-2 border-b border-[var(--app-shell-border)]",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-2 py-1.5",children:[(0,r.jsx)(u.Search,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("input",{ref:b,type:"text",value:m,onChange:e=>x(e.target.value),placeholder:"Search projects...",className:"flex-1 bg-transparent text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] outline-none"}),m&&(0,r.jsx)("button",{type:"button",onClick:()=>x(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,r.jsx)(p.X,{size:10})})]})}),(0,r.jsxs)("div",{className:"max-h-52 overflow-y-auto py-1",children:[v.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>{i?.(e.id),d(!1),x("")},className:`flex w-full items-center gap-2 px-3 py-1.5 text-sm transition-colors hover:bg-[var(--app-shell-subtle)] ${e.id===f?.id?"text-[var(--foreground)] font-medium":"text-[var(--muted-foreground)]"}`,children:[(0,r.jsx)(l.Folder,{size:12,className:"flex-shrink-0"}),(0,r.jsx)("span",{className:"truncate",children:e.name})]},e.id)),0===v.length&&(0,r.jsx)("p",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No projects found"})]}),(0,r.jsx)("div",{className:"border-t border-[var(--app-shell-border)] p-1",children:(0,r.jsxs)("button",{type:"button",onClick:()=>{d(!1),x(""),o()},className:"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:[(0,r.jsx)(c.Plus,{size:12}),(0,r.jsx)("span",{children:"New project"})]})})]})]})}e.s(["WorkspaceSidebar",0,function({threads:e,participants:s=[],activeThreadId:l,isLoading:n,isCreating:u,onSelectThread:$,onCreateThread:z,onRenameThread:P,onDeleteThread:E,deletingThreadId:F=null,renamingThreadId:L=null,activeParticipantIds:A=[],onToggleParticipantActive:T,visible:M=!1,isRestoringActiveThread:B=!1,onToggle:R,onSearch:D,projects:V=[],onCreateProject:W,onUpdateProject:K,onDeleteProject:O,onAddAgentToProject:U,onRemoveAgentFromProject:q,onAddAgentViaForm:X,onReorderProjectAgents:H,onUpdateParticipant:J,onSelectProject:G,activeProjectId:Y=null,activeProjectView:Z=null,width:Q,onWidthChange:ee,onAddTeam:er}){let et,ea,{isTouchLayout:es,isPhone:ei}=(0,w.useInputCapabilities)(),el=(0,t.useRef)(!1);(0,t.useRef)(0);let eo=(0,t.useRef)(null),[en,ed]=(0,t.useState)(!1),[ec,eu]=(0,t.useState)(new Set);(0,t.useEffect)(()=>{if(ec.size>0||!V?.length)return;let e=V.find(e=>window.location.pathname.includes(`/projects/${e.slug}`));eu(new Set([e?.id??V[0].id]))},[V]);let[ep,em]=(0,t.useState)(null),[ex,eh]=(0,t.useState)(new Set),[eb,ef]=(0,t.useState)(!1),[ev,eg]=(0,t.useState)(null),[ej,ew]=(0,t.useState)(null),ek=(0,_.useProjectFormState)(),[e_,eN]=(0,t.useState)(null),ey=(0,t.useCallback)(e=>{e&&(e.focus(),e.select())},[]),[eS,eC]=(0,t.useState)(null),[eI,e$]=(0,t.useState)(null),ez=eI?s.find(e=>e.id===eI)??null:null,[eP,eE]=(0,t.useState)(null),[eF,eL]=(0,t.useState)({});(0,t.useEffect)(()=>{if(!V?.length)return;let e=!1,r=async()=>{try{let r=await fetch("/api/processes?enrich=1");if(!r.ok||e)return;let t=await r.json();if(e)return;let a=t.filter(e=>"spawning"===e.state||"running"===e.state),i={};for(let e of V){let r=e.slug.trim().toLowerCase(),t=new Set((e.thread_ids??[]).map(e=>e.trim()).filter(Boolean)),l=[],o=[],n=[],d=new Set,c=new Set,u=new Set;for(let e of a){let a=e.projectSlug?.trim().toLowerCase();if(!(a&&a===r||t.has(e.workspaceId)||t.has(e.threadId)))continue;let i=s.find(r=>r.id===e.agentId),p={agentId:e.agentId,color:i?.color??"#10b981"};e.linearIssueId?c.has(e.agentId)||(c.add(e.agentId),o.push(p)):e.threadId?.startsWith("objective-chat:")||e.workspaceId?.startsWith("objective-chat:")?d.has(e.agentId)||(d.add(e.agentId),l.push(p)):u.has(e.agentId)||(u.add(e.agentId),n.push(p))}(l.length||o.length||n.length)&&(i[e.id]={objectives:l,linear:o,chat:n})}eL(i)}catch{}};r();let t=setInterval(r,3e3);return()=>{e=!0,clearInterval(t)}},[V,s]);let[eA,eT]=(0,t.useState)({}),[eM,eB]=(0,t.useState)(new Set),[eR,eD]=(0,t.useState)(new Set),eV=(0,t.useRef)(new Set);(0,t.useEffect)(()=>{Array.from(ec).forEach(e=>{eR.has(e)||(eD(r=>new Set(r).add(e)),(async()=>{try{let r=await fetch(`/api/projects/${e}/teams`);if(!r.ok)return;let t=await r.json();eT(r=>({...r,[e]:t.teams??[]}))}catch{}})())})},[ec,eR]);let[eW,eK]=(0,t.useState)(null),eO=async()=>{if(!ev&&!ej)return;if(!ek.form.name.trim())return void ek.setFormError("Project name is required");let e=ek.repos.find(e=>e.name.trim()&&!e.path.trim());if(e)return void ek.setFormError(`Local path is required for folder "${e.name}"`);ek.setFormError(null),ek.setIsSubmitting(!0);let r=(0,_.createProjectPayload)(ek.form,ek.repos);ej?await K?.(ej.id,r):await W?.(r,ev?.threadId),ek.setIsSubmitting(!1),eg(null),ew(null)};(0,t.useEffect)(()=>{ed(!0)},[]),(0,t.useEffect)(()=>{let e=!1;async function r(){if(eP?.repoId)try{let r=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(eP.repoId)}`),t=(r.ok?await r.json():{note:null}).note;e||eE(e=>e&&e.repoId===eP.repoId?{...e,generatedKnowledge:t?.content?[{id:t.id,content:t.content,created_at:t.updatedAt??t.createdAt}]:[],isLoadingKnowledge:!1}:e)}catch{e||eE(e=>e&&e.repoId===eP.repoId?{...e,generatedKnowledge:[],isLoadingKnowledge:!1}:e)}}return eP?.repoId&&r(),()=>{e=!0}},[eP?.repoId]);let eU=ep?V.find(e=>e.id===ep.projectId):null,eq=new Set(eU?.agents.map(e=>e.agent_id)??[]),eX=ep?s.filter(e=>!eq.has(e.id)):[],eH=e.length>0,eJ=!!M,eG=(0,t.useCallback)(()=>{es&&R?.()},[es,R]),eY=[...e].sort((e,r)=>(e.title??"").localeCompare(r.title??"")),eZ=new Map(e.map(e=>[e.id,e])),eQ=V.filter(e=>!e.is_default);if((0,t.useEffect)(()=>{if(0===eQ.length)return;let r=new Map,t=new Set,a=new Map;for(let e of eQ){for(let r of e.thread_ids??[])"string"==typeof r&&r.trim()&&t.add(r);for(let t of(0,N.readProjectObjectivesWorkspace)(e.metadata).objectives){let a=t.id.trim();a&&r.set(a,{projectId:e.id,canonicalThreadId:t.threadId?.trim()||`objective-chat:${a}`})}}for(let r of e){let e=r.metadata&&"object"==typeof r.metadata?r.metadata:null,t="objective"===("string"==typeof e?.scope?e.scope:"")||r.id.startsWith("objective-chat:"),s=r.title?.trim().toLowerCase()??"";if(!t||!s)continue;let i=a.get(s)??[];i.push(r),a.set(s,i)}for(let[e,r]of a)a.set(e,[...r].sort((e,r)=>r.updatedAt-e.updatedAt));for(let s of e){let e=s.metadata&&"object"==typeof s.metadata?s.metadata:null,i="string"==typeof e?.scope?e.scope:"",l="string"==typeof e?.objectiveId?e.objectiveId.trim():"",o=s.id.startsWith("objective-chat:")?s.id.slice(15).trim():"",n=l||o,d="objective"===i||!!o,c=s.title?.trim().toLowerCase()??"",u=0===s.messages.length&&s.updatedAt<Date.now()-3e5;if(!d)continue;let p=n?r.get(n):void 0;if(p){if(s.id!==p.canonicalThreadId&&u){let e=`delete:${s.id}`;if(eV.current.has(e))continue;eV.current.add(e),Promise.resolve(E(s.id)).catch(r=>{eV.current.delete(e),console.warn("Failed to delete legacy objective thread",r)});continue}if(!t.has(s.id)){let e=`link:${s.id}`;if(eV.current.has(e))continue;eV.current.add(e),fetch(`/api/projects/${p.projectId}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:s.id})}).then(e=>{if(!e.ok)throw Error(`Request failed with status ${e.status}`)}).catch(r=>{eV.current.delete(e),console.warn("Failed to re-link objective thread",r)})}continue}if(!u)continue;let m=c?a.get(c)??[]:[];if(m.length<2||m[0]?.id===s.id)continue;let x=`delete:${s.id}`;eV.current.has(x)||(eV.current.add(x),Promise.resolve(E(s.id)).catch(e=>{eV.current.delete(x),console.warn("Failed to delete orphan objective thread",e)}))}},[eQ,E,e]),!function({focusTarget:e,shouldFocus:r}){(0,t.useEffect)(()=>{if(!r||"u"<typeof document)return;let t=e.current;if(!t||t instanceof HTMLButtonElement&&t.disabled)return;let a=document.activeElement;if(!(a&&(t===a||t.contains(a))))try{t.focus({preventScroll:!0})}catch{t.focus()}},[e,r])}({focusTarget:eo,shouldFocus:eJ&&!(n&&!eH||B&&eH)&&!eH&&!u}),!eJ){if(es)return null;let t=eQ.find(e=>e.id===Y)??eQ[0],a=t?.slug;return(0,r.jsxs)("aside",{id:"workspace-sidebar",className:"workspace-sidebar workspace-sidebar--collapsed","aria-label":"Workspace sidebar",children:[(0,r.jsx)("div",{className:"workspace-sidebar__brand",children:(0,r.jsx)("button",{type:"button",onClick:R,className:"workspace-sidebar__brand-trigger border-none outline-none cursor-pointer","aria-label":"Show chats",title:"Show chats",children:(0,r.jsx)(S,{compact:!0})})}),a&&(0,r.jsxs)("nav",{className:"workspace-sidebar__collapsed-rail",children:[(0,r.jsx)(C,{label:"Home",children:(0,r.jsx)(j.default,{href:`/projects/${a}`,className:`workspace-sidebar__rail-icon${"home"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(b,{size:16})})}),(0,r.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,r.jsx)(C,{label:"Objectives",children:(0,r.jsx)(j.default,{href:`/projects/${a}/objectives`,className:`workspace-sidebar__rail-icon${"objectives"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(x.Target,{size:16})})}),(0,r.jsx)(C,{label:"Linear",children:(0,r.jsx)(j.default,{href:`/projects/${a}/linear`,className:`workspace-sidebar__rail-icon${"linear"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(y.LinearIcon,{size:16})})}),(0,r.jsx)(C,{label:"Scheduled Tasks",children:(0,r.jsx)(j.default,{href:`/projects/${a}/automations`,className:`workspace-sidebar__rail-icon${"automations"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(i.Zap,{size:16})})}),(0,r.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,r.jsx)(C,{label:"Terminal",children:(0,r.jsx)(j.default,{href:`/projects/${a}/terminal`,className:`workspace-sidebar__rail-icon${"terminal"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(v.TerminalSquare,{size:16})})}),(0,r.jsx)(C,{label:"Chat",children:(0,r.jsx)("button",{type:"button",className:`workspace-sidebar__rail-icon${"thread"===Z?" workspace-sidebar__rail-icon--active":""}`,onClick:()=>{let r=eY.filter(e=>t.thread_ids?.includes(e.id)),a=t.thread_ids?.find(r=>e.some(e=>e.id===r))??r[0]?.id;a&&$(a)},children:(0,r.jsx)(f.MessageSquare,{size:16})})}),(0,r.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,r.jsx)(C,{label:"Teams",children:(0,r.jsx)(j.default,{href:`/projects/${a}/teams`,className:`workspace-sidebar__rail-icon${"teams"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(h.Users,{size:16})})}),(0,r.jsx)(C,{label:"Folders",children:(0,r.jsx)(j.default,{href:`/projects/${a}/folders`,className:`workspace-sidebar__rail-icon${"folders"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(o.FolderGit2,{size:16})})}),(0,r.jsx)(C,{label:"Env Variables",children:(0,r.jsx)(j.default,{href:`/projects/${a}/env-vars`,className:`workspace-sidebar__rail-icon${"env-vars"===Z?" workspace-sidebar__rail-icon--active":""}`,children:(0,r.jsx)(g,{size:16})})})]}),(0,r.jsx)("div",{className:"mt-auto p-2",children:(0,r.jsx)(C,{label:"Join Discord",children:(0,r.jsx)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"workspace-sidebar__rail-icon",style:{backgroundColor:"#5865F2",color:"white"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",children:(0,r.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})})]})}return(0,r.jsxs)(r.Fragment,{children:[es?(0,r.jsx)("button",{type:"button",className:"workspace-sidebar__backdrop",onClick:R,"aria-label":"Close sidebar"}):null,(0,r.jsxs)("aside",{id:"workspace-sidebar",className:`workspace-sidebar${es?" workspace-sidebar--drawer":""}${es&&ei?" workspace-sidebar--drawer-phone":""}`,"aria-label":"Workspace sidebar","aria-busy":n?"true":void 0,"aria-modal":es?"true":void 0,role:es?"dialog":void 0,style:!es&&Q?{width:`${Q}px`,minWidth:`${Q}px`}:void 0,children:[(0,r.jsxs)("div",{className:"workspace-sidebar__brand",children:[(0,r.jsx)("div",{className:"workspace-sidebar__brand-content",children:(0,r.jsx)(S,{})}),R&&(0,r.jsx)("button",{type:"button",onClick:R,"aria-label":"Hide chats",title:"Hide chats",className:"workspace-sidebar__brand-toggle ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-all hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:(0,r.jsx)(d,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,r.jsxs)("div",{className:"workspace-sidebar__content",children:[(0,r.jsx)(I,{projects:eQ,activeProjectId:Y,onSelectProject:e=>{G?.(e),eG()},onCreateProject:()=>{ek.resetForm(),ew(null),eg({})}}),(()=>{let e=eQ.find(e=>e.id===Y)??eQ[0];if(!e)return null;let t=eY.filter(r=>e.thread_ids?.includes(r.id)),a=e.thread_ids?.find(e=>eZ.has(e))??e.thread_ids?.[0]??t[0]?.id??null,n=e.id===Y,d=n&&"home"===Z,c=n&&"objectives"===Z,u=n&&"linear"===Z,p=n&&"automations"===Z,w=n&&"terminal"===Z,_=n&&"thread"===Z&&a===l,N=n&&"teams"===Z,S=n&&"folders"===Z,C=n&&"env-vars"===Z,I=eF[e.id];return(0,r.jsxs)("nav",{className:"workspace-sidebar__section",children:[(0,r.jsx)("div",{className:"px-2 mt-2 mb-3",children:(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}`,onClick:eG,className:`workspace-sidebar__nav-item ${d?"workspace-sidebar__nav-item--active":""}`,"aria-current":d?"page":void 0,children:[(0,r.jsx)(b,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Home"})]})})}),(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,r.jsx)("p",{className:"workspace-sidebar__section-label",children:"Work"})}),(0,r.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/objectives`,onClick:eG,className:`workspace-sidebar__nav-item ${c?"workspace-sidebar__nav-item--active":""}`,"aria-current":c?"page":void 0,children:[(0,r.jsx)(x.Target,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Objectives"}),I?.objectives.length>0&&(0,r.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:I.objectives.slice(0,3).map(e=>{let t=s.find(r=>r.id===e.agentId);return(0,r.jsxs)("span",{className:"relative inline-block",title:t?.name,children:[(0,r.jsx)("img",{src:(0,k.agentAvatarUrl)(t?.id??e.agentId,16,e.color),alt:t?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,r.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},e.agentId)})})]})}),(0,r.jsxs)("div",{className:"workspace-sidebar__workspace-item group/linear flex items-center",children:[(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/linear`,onClick:eG,className:`workspace-sidebar__nav-item flex-1 ${u?"workspace-sidebar__nav-item--active":""}`,"aria-current":u?"page":void 0,children:[(0,r.jsx)(y.LinearIcon,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Linear"}),I?.linear.length>0&&(0,r.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:I.linear.slice(0,3).map(e=>{let t=s.find(r=>r.id===e.agentId);return(0,r.jsxs)("span",{className:"relative inline-block",title:t?.name,children:[(0,r.jsx)("img",{src:(0,k.agentAvatarUrl)(t?.id??e.agentId,16,e.color),alt:t?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,r.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},e.agentId)})})]}),(0,r.jsx)(j.default,{href:`/projects/${e.slug}/linear?settings=true`,onClick:eG,className:"flex h-5 w-5 items-center justify-center rounded opacity-0 group-hover/linear:opacity-100 hover:bg-[var(--sidebar-hover)] transition-opacity",title:"Linear settings",children:(0,r.jsx)(m.Settings,{size:11,className:"text-[var(--muted-foreground)]"})})]}),(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/automations`,onClick:eG,className:`workspace-sidebar__nav-item ${p?"workspace-sidebar__nav-item--active":""}`,"aria-current":p?"page":void 0,children:[(0,r.jsx)(i.Zap,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Scheduled Tasks"})]})})]})]}),(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,r.jsx)("p",{className:"workspace-sidebar__section-label",children:"Tools"})}),(0,r.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/terminal`,onClick:eG,className:`workspace-sidebar__nav-item ${w?"workspace-sidebar__nav-item--active":""}`,"aria-current":w?"page":void 0,children:[(0,r.jsx)(v.TerminalSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Terminal"})]})}),(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:a?(0,r.jsxs)("button",{type:"button",className:`workspace-sidebar__nav-item ${_?"workspace-sidebar__nav-item--active":""}`,onClick:()=>{$(a),eG()},"aria-current":_?"page":void 0,children:[(0,r.jsx)(f.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"}),I?.chat.length>0&&(0,r.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:I.chat.slice(0,3).map(e=>{let t=s.find(r=>r.id===e.agentId);return(0,r.jsxs)("span",{className:"relative inline-block",title:t?.name,children:[(0,r.jsx)("img",{src:(0,k.agentAvatarUrl)(t?.id??e.agentId,16,e.color),alt:t?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,r.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},e.agentId)})})]}):null})]})]}),(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,r.jsx)("p",{className:"workspace-sidebar__section-label",children:"Settings"})}),(0,r.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/teams`,onClick:eG,className:`workspace-sidebar__nav-item ${N?"workspace-sidebar__nav-item--active":""}`,"aria-current":N?"page":void 0,children:[(0,r.jsx)(h.Users,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Teams"})]})}),(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/folders`,onClick:eG,className:`workspace-sidebar__nav-item ${S?"workspace-sidebar__nav-item--active":""}`,"aria-current":S?"page":void 0,children:[(0,r.jsx)(o.FolderGit2,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Folders"})]})}),(0,r.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,r.jsxs)(j.default,{href:`/projects/${e.slug}/env-vars`,onClick:eG,className:`workspace-sidebar__nav-item ${C?"workspace-sidebar__nav-item--active":""}`,"aria-current":C?"page":void 0,children:[(0,r.jsx)(g,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Environment Variables"})]})})]})]})]})})()]}),(0,r.jsx)("div",{className:"mt-auto px-3 pb-3",children:(0,r.jsxs)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",children:[(0,r.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})}),en&&eP&&(0,a.createPortal)((0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4",onClick:()=>{eP.isSaving||eE(null)},children:(0,r.jsxs)("div",{className:"w-full max-w-lg rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-5 py-4",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:eP.projectName}),(0,r.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--foreground)]",children:eP.repoId?eP.name||"Folder":"Add Folder"})]}),(0,r.jsx)("button",{type:"button",className:"rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--muted-foreground)]",onClick:()=>{eP.isSaving||eE(null)},"aria-label":"Close folder details",disabled:eP.isSaving,children:(0,r.jsx)(p.X,{size:16})})]}),(0,r.jsxs)("div",{className:"space-y-4 px-5 py-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,r.jsx)("input",{value:eP.name,onChange:e=>eE(r=>r?{...r,name:e.target.value,error:null}:r),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",disabled:eP.isSaving,placeholder:"e.g. Frontend, API Docs, Design System"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{value:eP.path,onChange:e=>eE(r=>r?{...r,path:e.target.value,error:null}:r),className:"flex-1 rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 font-mono text-xs text-[var(--foreground)]",disabled:eP.isSaving,placeholder:"Local path to folder"}),(0,r.jsx)("button",{type:"button",className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",disabled:eP.isSaving,onClick:async()=>{try{let e=await fetch("/api/filesystem/pick-folder",{method:"POST"}),r=await e.json();r.path&&eE(e=>e?{...e,path:r.path,error:null}:e)}catch{}},children:"Browse"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Notes"}),(0,r.jsx)("textarea",{value:eP.notes,onChange:e=>eE(r=>r?{...r,notes:e.target.value,error:null}:r),className:"min-h-28 w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-3 text-sm text-[var(--foreground)] whitespace-pre-wrap",disabled:eP.isSaving,placeholder:"Coding conventions, deploy steps, doc standards, ownership rules..."})]}),eP.repoId?(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Living Note"}),eP.isLoadingKnowledge?(0,r.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading note…"}):eP.generatedKnowledge.length>0?(0,r.jsx)("div",{className:"space-y-2",children:eP.generatedKnowledge.slice(0,5).map(e=>(0,r.jsxs)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,r.jsx)("div",{children:e.content}),e.created_at?(0,r.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleString()}):null]},e.id))}):(0,r.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No note yet."})]}):null,eP.error?(0,r.jsx)("p",{className:"text-xs text-red-600",children:eP.error}):null,(0,r.jsxs)("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] pt-4",children:[(0,r.jsx)("button",{type:"button",className:"rounded-lg px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",onClick:()=>eE(null),disabled:eP.isSaving,children:"Cancel"}),(0,r.jsx)("button",{type:"button",className:"rounded-lg bg-[var(--foreground)] px-3 py-2 text-sm font-medium text-[var(--card-bg)] transition-colors hover:bg-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-60",disabled:eP.isSaving||!K,onClick:async()=>{let e=V.find(e=>e.id===eP.projectId);if(!e)return void eE(e=>e?{...e,error:"Project not found."}:e);let r=eP.name.trim(),t=eP.path.trim();if(!r)return void eE(e=>e?{...e,error:"Folder name is required."}:e);if(!t)return void eE(e=>e?{...e,error:"Folder path is required."}:e);eE(e=>e?{...e,isSaving:!0,error:null}:e);try{let a=eP.repoId?e.repos.map(e=>e.id===eP.repoId?{id:e.id,name:r,path:t,git_url:eP.gitUrl.trim()||void 0,notes:eP.notes.trim()||void 0}:{id:e.id,name:e.name,path:e.path,git_url:e.git_url,notes:e.notes}):[...e.repos.map(e=>({id:e.id,name:e.name,path:e.path,git_url:e.git_url,notes:e.notes})),{name:r,path:t,git_url:eP.gitUrl.trim()||void 0,notes:eP.notes.trim()||void 0}];await K?.(e.id,{repos:a}),eE(null)}catch(e){eE(r=>r?{...r,isSaving:!1,error:e instanceof Error?e.message:"Failed to save folder details."}:r)}},children:eP.isSaving?"Saving...":eP.repoId?"Save":"Add Folder"})]})]})]})}),document.body),en&&ep&&!eb&&(0,a.createPortal)((0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>em(null),children:(0,r.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,r.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",eU?.name??"project"]}),(0,r.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>em(null),children:(0,r.jsx)(p.X,{size:16})})]}),(0,r.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,r.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors border-b border-[var(--border)]",onClick:()=>ef(!0),children:[(0,r.jsx)(c.Plus,{size:14,className:"text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===eX.length?(0,r.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"All agents are already in this project"}):eX.map(e=>{let t=ex.has(e.id);return(0,r.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${t?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{eh(r=>{let t=new Set(r);return t.has(e.id)?t.delete(e.id):t.add(e.id),t})},children:[(0,r.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${t?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--border)]"}`,children:t&&(0,r.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,r.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,r.jsx)("img",{src:(0,k.agentAvatarUrl)(e.id,24,e.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,r.jsx)("div",{className:"truncate font-medium text-xs",children:e.name}),(0,r.jsx)("div",{className:"truncate text-[11px] text-[var(--muted-foreground)]",children:e.model})]})]},e.id)})]}),eX.length>0&&(0,r.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>em(null),children:"Cancel"}),(0,r.jsxs)("button",{type:"button",disabled:0===ex.size,className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let e of ex)U?.(ep.projectId,e);em(null)},children:["Add ",ex.size>0?`(${ex.size})`:""]})]})]})}),document.body),en&&eb&&(0,a.createPortal)((0,r.jsx)(k.AgentForm,{title:"Create new agent",initial:{name:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",projects:V?.filter(e=>!e.is_default).map(r=>{let t=(r.thread_ids??[]).map(r=>e.find(e=>e.id===r)?.title?.trim()).filter(Boolean).join(", ")||"No chat";return{id:r.id,name:r.name,label:`${t} › ${r.name}`}}),initialProjectIds:ep?[ep.projectId]:[],onSubmit:async(e,r)=>{let t=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],a=t[s.length%t.length],i=e.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),l=r?.[0],o=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:i,name:e.name,provider:e.provider,model:e.model,color:e.color??a,...e.role?{role:e.role}:{},...e.identity?{identity:e.identity}:{},skills:e.skills??[],skillBindings:e.skillBindings??[],...l?{projectId:l}:{}})});if(o.ok){let e=await o.json().catch(()=>({})),t="string"==typeof e?.id&&e.id.trim()?e.id.trim():i;for(let e of(r??[]).slice(1))U?.(e,t);ef(!1),em(null)}},onCancel:()=>{ef(!1)}}),document.body),en&&e_&&(0,a.createPortal)((0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>eN(null),children:(0,r.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,r.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:e_.title}),(0,r.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>eN(null),children:(0,r.jsx)(p.X,{size:16})})]}),(0,r.jsxs)("form",{className:"px-4 py-4 flex flex-col gap-3",onSubmit:e=>{e.preventDefault();let r=new FormData(e.currentTarget),t=r.get("value")?.trim();t&&(e_.onSubmit(t),eN(null))},children:[(0,r.jsx)("input",{ref:ey,name:"value",type:"text",defaultValue:e_.defaultValue,placeholder:e_.placeholder,className:"w-full px-3 py-2 text-sm border border-[var(--border)] rounded-lg outline-none focus:border-[var(--border)] focus:ring-1 focus:ring-[var(--border)] transition-all"}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>eN(null),children:"Cancel"}),(0,r.jsx)("button",{type:"submit",className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] transition-colors",children:e_.defaultValue?"Save":"Create"})]})]})]})}),document.body),en&&eS&&(0,a.createPortal)((0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>eC(null),children:(0,r.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,r.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:eS.title}),(0,r.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>eC(null),children:(0,r.jsx)(p.X,{size:16})})]}),(0,r.jsxs)("div",{className:"px-4 py-4 flex flex-col gap-4",children:[(0,r.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:eS.message}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>eC(null),children:"Cancel"}),(0,r.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors",onClick:()=>{eS.onConfirm(),eC(null)},children:"Delete"})]})]})]})}),document.body),en&&(ev||ej)&&(0,a.createPortal)((0,r.jsx)(_.default,{isOpen:!0,onClose:()=>{ek.resetForm(),eg(null),ew(null)},onSubmit:()=>void eO(),editingProject:ej,form:ek.form,repos:ek.repos,isSubmitting:ek.isSubmitting,formError:ek.formError,onFieldChange:(e,r)=>ek.setForm(t=>({...t,[e]:r})),onRepoChange:ek.handleRepoChange,onAddRepo:ek.addRepo,onRemoveRepo:ek.removeRepo}),document.body),en&&ez&&(0,a.createPortal)((et=V.filter(e=>e.agents.some(e=>e.agent_id===ez.id)),ea=V.filter(e=>!e.agents.some(e=>e.agent_id===ez.id)),(0,r.jsx)(k.AgentForm,{title:"Edit agent",initial:{name:ez.name,role:ez.role||"",provider:ez.provider,model:ez.model||"",identity:ez.identity||"",color:ez.color,skills:ez.skills||[],skillBindings:ez.skillBindings||[]},agentId:ez.id,submitLabel:"Save",projectMemberships:{current:et.map(e=>({id:e.id,name:e.name,is_default:!!e.is_default})),available:ea.map(e=>({id:e.id,name:e.name}))},onAddToProject:U?e=>U(e,ez.id):void 0,onRemoveFromProject:q?e=>q(e,ez.id):void 0,onSubmit:async e=>{J&&await J({...ez,name:e.name,role:e.role||void 0,provider:e.provider,model:e.model,color:e.color??ez.color,...e.identity?{identity:e.identity}:{},skills:e.skills??[],skillBindings:e.skillBindings??[]}),e$(null)},onCancel:()=>e$(null)})),document.body),ee&&!es&&(0,r.jsx)("div",{className:"absolute right-0 top-0 bottom-0 z-20 w-1 cursor-col-resize group",onMouseDown:e=>{e.preventDefault(),el.current=!0;let r=e.clientX,t=Q??368;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let a=e=>{ee(Math.max(200,Math.min(600,t+e.clientX-r)))},s=()=>{el.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",a),window.addEventListener("mouseup",s)},children:(0,r.jsx)("div",{className:"absolute inset-y-0 right-0 w-1 transition-colors hover:bg-[var(--primary)]/40 group-hover:bg-[var(--primary)]/40"})})]})]})}],749410);let $="agx-chat:uiSettings",z={threadSidebarVisible:!1};function P(){return void 0!==window.localStorage}function E(){if(!P())return{...z};let e=window.localStorage.getItem($);if(!e)return{...z};try{let r=JSON.parse(e);return{...z,threadSidebarVisible:"boolean"==typeof r.threadSidebarVisible&&r.threadSidebarVisible}}catch{return{...z}}}e.s(["loadWorkspaceSidebarVisible",0,function(){return E().threadSidebarVisible},"persistWorkspaceSidebarVisible",0,function(e){var r={...E(),threadSidebarVisible:e};if(P())try{window.localStorage.setItem($,JSON.stringify(r))}catch{}}],481248)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,794731,e=>{"use strict";let t=(0,e.i(363732).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",0,t],794731)},640481,e=>{"use strict";let t=(0,e.i(363732).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",0,t],640481)},367859,e=>{"use strict";let t=(0,e.i(363732).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,t],367859)},958164,e=>{"use strict";let t=(0,e.i(363732).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,t],958164)},780004,e=>{"use strict";let t="obra/superpowers",n="vercel/next-skills";function a(e,t,n){return n?{repo:e,skillId:t,condition:n}:{repo:e,skillId:t}}function i(e){return e.condition?{...e}:{repo:e.repo,skillId:e.skillId}}function r(e){let t={...e};return t.extraSkills&&(t.extraSkills=t.extraSkills.map(i)),t}function s(e){return{...e,agents:e.agents.map(r)}}function l(e){let t={...e,agents:e.agents.map(r)};return t.variants&&(t.variants=t.variants.map(s)),t}let o={"strategist-lead":[a(t,"brainstorming"),a(t,"writing-plans"),a(t,"dispatching-parallel-agents"),a(t,"requesting-code-review"),a(t,"verification-before-completion")],"senior-builder":[a(t,"test-driven-development"),a(t,"systematic-debugging"),a(t,"subagent-driven-development"),a(t,"requesting-code-review"),a(t,"verification-before-completion"),a(t,"finishing-a-development-branch")],builder:[a(t,"test-driven-development"),a(t,"systematic-debugging"),a(t,"verification-before-completion"),a(t,"finishing-a-development-branch")],planner:[a(t,"brainstorming"),a(t,"writing-plans"),a(t,"verification-before-completion")],researcher:[a(t,"brainstorming"),a(t,"writing-plans"),a(t,"systematic-debugging"),a(t,"verification-before-completion")],reviewer:[a(t,"systematic-debugging"),a(t,"test-driven-development"),a(t,"requesting-code-review"),a(t,"verification-before-completion")]},d=["strategist-lead","senior-builder","builder","planner","researcher","reviewer"].map(e=>({id:e,skills:o[e].map(i)})),c=[a(n,"api-routes","next.js app router, route handlers, api endpoints"),a(n,"nextjs-patterns","next.js app structure, routing, layouts, data fetching"),a(n,"react-server-components","react server components, server client boundaries, next.js rendering")],m={"team-lead":{name:"Ada",role:"Team Lead",style:"balanced",skillProfileId:"strategist-lead",identity:"Own technical direction, break ambiguous work into executable plans, and keep the squad aligned on delivery."},"fullstack-engineer":{name:"Kai",role:"Senior Fullstack Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Ship features end-to-end across frontend and backend with pragmatic tradeoffs and clean boundaries.",extraSkills:c},"backend-engineer":{name:"Ravi",role:"Senior Backend Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Own backend contracts, data integrity, and safe delivery under real production constraints."},"frontend-engineer":{name:"Mira",role:"Senior Frontend Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Own product-facing UI quality, interaction design fidelity, and maintainable front-end architecture.",extraSkills:c},"data-engineer":{name:"Nia",role:"Data Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Build reliable data pipelines, schemas, and transformations with a bias toward traceability."},"ml-engineer":{name:"Luca",role:"ML Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Ship model-backed systems pragmatically, with evaluation, rollback paths, and tight production feedback."},"devops-engineer":{name:"Juno",role:"DevOps Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Own delivery automation, deployment safety, and infrastructure changes that must fail predictably."},"security-engineer":{name:"Iris",role:"Security Engineer",style:"conservative",skillProfileId:"senior-builder",identity:"Harden trust boundaries, implement secure defaults, and turn vague risk into concrete engineering requirements."},"ui-designer":{name:"Theo",role:"UI Designer",style:"specialist",skillProfileId:"builder",identity:"Refine interfaces into consistent, high-signal UI systems that are practical to build and maintain.",extraSkills:[a(n,"nextjs-patterns","next.js ui flows, routing, layouts, app router"),a(n,"react-server-components","react server components, server client boundaries, data fetching placement")]},"qa-engineer":{name:"Sana",role:"QA Engineer",style:"conservative",skillProfileId:"reviewer",identity:"Find regressions early, tighten acceptance boundaries, and force evidence before release claims."},sre:{name:"Dax",role:"Site Reliability Engineer",style:"conservative",skillProfileId:"reviewer",identity:"Guard uptime, incident readiness, and operational correctness by challenging risky assumptions early."},"pen-tester":{name:"Vega",role:"Penetration Tester",style:"specialist",skillProfileId:"reviewer",identity:"Probe the system as an adversary, find exploit paths, and make the attack surface legible to builders."},"product-manager":{name:"Sage",role:"Product Manager",style:"balanced",skillProfileId:"planner",identity:"Turn ambiguous requests into scoped bets, crisp plans, and explicit tradeoffs the team can execute."},"ux-designer":{name:"Yara",role:"UX Designer",style:"balanced",skillProfileId:"planner",identity:"Clarify user intent, reduce friction in flows, and turn product goals into coherent interaction design."},"technical-writer":{name:"Orin",role:"Technical Writer",style:"balanced",skillProfileId:"planner",identity:"Turn complex implementation detail into clear docs, rollout notes, and operational guidance."},"growth-marketer":{name:"Zed",role:"Growth Marketer",style:"balanced",skillProfileId:"strategist-lead",identity:"Design growth experiments with clear hypotheses, sequencing, and measurable outcomes."},analyst:{name:"Piper",role:"Product Analyst",style:"specialist",skillProfileId:"researcher",identity:"Ground decisions in evidence, identify gaps in the brief, and surface the signal behind user behavior."},"content-writer":{name:"Wren",role:"Content Strategist",style:"balanced",skillProfileId:"researcher",identity:"Translate product and audience insight into clear narratives, launch copy, and feedback loops."},researcher:{name:"Ezra",role:"Researcher",style:"balanced",skillProfileId:"researcher",identity:"Map fast-changing domains, synthesize evidence, and surface the governing model behind decisions."},"marketing-strategist":{name:"Finn",role:"Marketing Strategist",style:"balanced",skillProfileId:"strategist-lead",identity:"Own brand positioning, campaign strategy, and channel mix with measurable conversion targets."},copywriter:{name:"Blair",role:"Copywriter",style:"balanced",skillProfileId:"researcher",identity:"Craft clear, persuasive copy that serves both the reader and the business goal."},"support-engineer":{name:"Gwen",role:"Support Engineer",style:"balanced",skillProfileId:"builder",identity:"Diagnose customer issues fast, escalate with precision, and turn patterns into preventive fixes."},"support-lead":{name:"Eli",role:"Support Lead",style:"balanced",skillProfileId:"planner",identity:"Triage incoming issues, route to the right responder, and track resolution quality."},"devrel-engineer":{name:"Milo",role:"Developer Relations Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Build sample apps, integrations, and tooling that make the platform easy to adopt."},"community-manager":{name:"Uma",role:"Community Manager",style:"balanced",skillProfileId:"planner",identity:"Grow and engage the developer community through events, content, and feedback loops."},"ops-engineer":{name:"Nate",role:"Operations Engineer",style:"specialist",skillProfileId:"senior-builder",identity:"Automate operational workflows, reduce toil, and keep internal tooling reliable."},"project-manager":{name:"Quinn",role:"Project Manager",style:"balanced",skillProfileId:"planner",identity:"Track milestones, remove blockers, and keep cross-team delivery on schedule."},"solutions-architect":{name:"Cass",role:"Solutions Architect",style:"balanced",skillProfileId:"strategist-lead",identity:"Design system-level architectures, evaluate tradeoffs, and guide teams through technical decisions."},"mobile-engineer":{name:"Rio",role:"Senior Mobile Engineer",style:"balanced",skillProfileId:"senior-builder",identity:"Ship native and cross-platform mobile experiences with attention to performance and platform conventions."}},u=["team-lead","fullstack-engineer","backend-engineer","frontend-engineer","qa-engineer","product-manager","analyst","growth-marketer","content-writer","data-engineer","ml-engineer","ux-designer","ui-designer","devops-engineer","sre","security-engineer","pen-tester","researcher","technical-writer","marketing-strategist","copywriter","support-engineer","support-lead","devrel-engineer","community-manager","ops-engineer","project-manager","solutions-architect","mobile-engineer"].map(e=>r({id:e,...m[e]}));function g(e){return r({id:e,...m[e]})}let p=[{id:"engineering",name:"Engineering",description:"Software engineering teams across all domains — pick a specialization or build your own.",icon:"hammer",agents:[g("team-lead"),g("backend-engineer"),g("frontend-engineer"),g("fullstack-engineer"),g("qa-engineer")],variants:[{id:"general",name:"General",description:"Product engineering with leadership, builders across the stack, and quality gates.",agents:[g("team-lead"),g("backend-engineer"),g("frontend-engineer"),g("fullstack-engineer"),g("qa-engineer")]},{id:"ai",name:"AI",description:"Applied AI and ML engineering for models, evaluation, and production inference.",agents:[g("team-lead"),g("ml-engineer"),g("data-engineer"),g("researcher"),g("qa-engineer")]},{id:"data",name:"Data",description:"Data platform engineering for pipelines, warehousing, and transformation reliability.",agents:[g("team-lead"),g("data-engineer"),g("qa-engineer")]},{id:"mobile",name:"Mobile",description:"Native and cross-platform mobile engineering with fullstack support.",agents:[g("team-lead"),g("mobile-engineer"),g("fullstack-engineer"),g("qa-engineer")]},{id:"infra",name:"Infrastructure",description:"Platform reliability for delivery pipelines, runtime stability, and operational safety.",agents:[g("team-lead"),g("devops-engineer"),g("sre")]},{id:"security",name:"Security",description:"Security engineering for secure defaults, hardening, and adversarial validation.",agents:[g("team-lead"),g("security-engineer"),g("pen-tester")]},{id:"solutions",name:"Solutions",description:"Architecture and integration work across systems and customer deployments.",agents:[g("team-lead"),g("solutions-architect"),g("backend-engineer"),g("devops-engineer")]}]},{id:"product",name:"Product",description:"Discovery and prioritization for product direction, scope, and validation.",icon:"clipboard-list",agents:[g("team-lead"),g("product-manager"),g("analyst")]},{id:"design",name:"Design",description:"UX and UI pairing for flows, interaction models, and polished product surfaces.",icon:"palette",agents:[g("team-lead"),g("ux-designer"),g("ui-designer")]},{id:"growth",name:"Growth",description:"Experiment and content team for acquisition, activation, and learning loops.",icon:"trending-up",agents:[g("team-lead"),g("growth-marketer"),g("content-writer")]},{id:"research",name:"Research",description:"Research and synthesis pair for investigations, briefs, and decision support.",icon:"flask-conical",agents:[g("team-lead"),g("researcher"),g("technical-writer")]},{id:"marketing",name:"Marketing",description:"Brand strategy, campaign execution, and content production.",icon:"megaphone",agents:[g("team-lead"),g("marketing-strategist"),g("copywriter"),g("content-writer")]},{id:"support",name:"Support",description:"Customer-facing support with triage, diagnosis, and escalation.",icon:"life-buoy",agents:[g("team-lead"),g("support-lead"),g("support-engineer")]},{id:"devrel",name:"Developer Relations",description:"Developer advocacy through tooling, content, and community engagement.",icon:"users",agents:[g("team-lead"),g("devrel-engineer"),g("community-manager"),g("technical-writer")]},{id:"operations",name:"Operations",description:"Internal tooling, project delivery, and cross-team coordination.",icon:"settings",agents:[g("team-lead"),g("project-manager"),g("ops-engineer")]}].map(l),h=new Map(d.map(e=>[e.id,e])),f=new Map(u.map(e=>[e.id,e]));p.map(e=>[e.id,e]),e.s(["getAgentPresetBindings",0,function(e){let t,n="string"==typeof e?function(e){if(!e)return null;let t=f.get(e);return t?r(t):null}(e):e;return n?[...(t=function(e){if(!e)return null;let t=h.get(e);return t?{id:t.id,skills:t.skills.map(i)}:null}(n.skillProfileId))?t.skills:[],...n.extraSkills?n.extraSkills.map(i):[]]:[]},"listAgentPresets",0,function(){return u.map(r)},"listTeamTemplates",0,function(){return p.map(l)}])},10229,e=>{"use strict";var t=e.i(843476),n=e.i(271645),a=e.i(174080),i=e.i(618566),r=e.i(367859),s=e.i(812549),l=e.i(906724),o=e.i(640481),d=e.i(929870),c=e.i(794731),m=e.i(572665),u=e.i(797167),g=e.i(997626),p=e.i(958164),h=e.i(524123),f=e.i(780004),x=e.i(378764),y=e.i(884564);e.s(["default",0,function({params:e}){let{slug:v,teamId:b}=(0,n.use)(e),k=(0,i.useRouter)(),{projects:w}=(0,h.useProjectsWithAgents)(),j=w.find(e=>e.slug===v),[N,P]=(0,n.useState)(null),[S,C]=(0,n.useState)([]),[I,E]=(0,n.useState)(!0),[T,A]=(0,n.useState)(null),[M,$]=(0,n.useState)(!1),[_,D]=(0,n.useState)(""),[O,q]=(0,n.useState)(!1),R=(0,n.useRef)(null),[B,L]=(0,n.useState)(!1),[U,F]=(0,n.useState)(!1),[J,z]=(0,n.useState)(null),[G,K]=(0,n.useState)(!1),[H,V]=(0,n.useState)("existing"),[W,X]=(0,n.useState)(null),[Z,Q]=(0,n.useState)(null),[Y,ee]=(0,n.useState)(!1),[et,en]=(0,n.useState)(null),[ea,ei]=(0,n.useState)(null),er=(0,n.useCallback)(async()=>{if(j){E(!0),A(null);try{let e=await fetch(`/api/projects/${j.id}/teams/${b}`);if(!e.ok)throw Error(`Failed to load team (${e.status})`);let t=await e.json();P(t.team),D(t.team.name)}catch(e){A(e instanceof Error?e.message:"Unknown error")}finally{E(!1)}}},[j,b]),es=(0,n.useCallback)(async()=>{try{let e=await fetch("/api/participants");if(!e.ok)return;let t=await e.json();C(Array.isArray(t)?t:t.participants??[])}catch{}},[]);(0,n.useEffect)(()=>{er(),es()},[er,es]);let[el,eo]=(0,n.useState)(null);(0,n.useEffect)(()=>{eo(document.getElementById("topbar-breadcrumb"))},[]),(0,n.useEffect)(()=>{M&&R.current&&(R.current.focus(),R.current.select())},[M]);let ed=(0,n.useMemo)(()=>new Map(S.map(e=>[e.id,e])),[S]),ec=(0,n.useMemo)(()=>(0,f.listAgentPresets)(),[]),em=(0,n.useMemo)(()=>ec.map(e=>({id:e.id,label:e.name,meta:e.skillProfileId})),[ec]),eu=(0,n.useMemo)(()=>ec.map(e=>({id:e.id,label:e.name,meta:e.skillProfileId})),[ec]),eg=(0,n.useMemo)(()=>new Set(N?.agents.map(e=>e.agent_id)??[]),[N]),ep=(0,n.useMemo)(()=>j?j.agents.filter(e=>!eg.has(e.agent_id)).map(e=>{let t=ed.get(e.agent_id);return{id:e.agent_id,name:t?.name??e.agent_id.slice(0,8),provider:t?.provider??"claude",model:t?.model??null,color:t?.color??"#6B7280"}}):[],[j,eg,ed]),eh=(0,n.useMemo)(()=>ep.map(e=>({id:e.id,label:e.name,meta:e.provider})),[ep]);async function ef(){if(!N||!j||_.trim()===N.name)return void $(!1);if(!_.trim()){D(N.name),$(!1);return}q(!0);try{if(!(await fetch(`/api/projects/${j.id}/teams/${b}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:_.trim()})})).ok)throw Error("Failed to update team name");P(e=>e?{...e,name:_.trim()}:e)}catch{N&&D(N.name)}finally{q(!1),$(!1)}}async function ex(e){if(j){z(e);try{if(!(await fetch(`/api/projects/${j.id}/teams/${b}/agents?agentId=${encodeURIComponent(e)}`,{method:"DELETE"})).ok)throw Error("Failed to remove agent");P(t=>t?{...t,agents:t.agents.filter(t=>t.agent_id!==e)}:t)}catch{}finally{z(null)}}}async function ey(){if(j){F(!0);try{if(!(await fetch(`/api/projects/${j.id}/teams/${b}`,{method:"DELETE"})).ok)throw Error("Failed to delete team");k.push(`/projects/${v}/teams`)}catch{F(!1),L(!1)}}}async function ev(){if(j&&Z){ee(!0);try{if(!(await fetch(`/api/projects/${j.id}/teams/${b}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:Z,roleKey:"member"})})).ok)throw Error("Failed to add agent");Q(null),K(!1),await er()}catch{}finally{ee(!1)}}}async function eb(){if(j&&W){ee(!0);try{let e=ec.find(e=>e.id===W);if(!e)return;let t=(0,f.getAgentPresetBindings)(e),n=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e.name,role:e.role,provider:"claude",model:null,identity:e.identity,skills:t.map(e=>({file:`${e.repo}/${e.skillId}`,...e.condition?{condition:e.condition}:{}}))})});if(!n.ok)throw Error("Failed to create agent");let a=await n.json(),i=a.id??a.participant?.id;await fetch(`/api/projects/${j.id}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:i})}),await fetch(`/api/projects/${j.id}/teams/${b}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:i,roleKey:e.id})}),X(null),K(!1),await Promise.all([er(),es()])}catch{}finally{ee(!1)}}}if(!j||I)return(0,t.jsxs)("div",{className:"flex items-center justify-center h-full text-sm text-[var(--muted-foreground)]",children:[(0,t.jsx)(l.Loader2,{className:"w-5 h-5 animate-spin mr-2"}),"Loading team..."]});if(T||!N)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-3 text-[var(--muted-foreground)]",children:[(0,t.jsx)(p.AlertTriangle,{className:"w-5 h-5 text-[var(--destructive)]"}),(0,t.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:T??"Team not found"}),(0,t.jsx)("button",{onClick:er,className:"text-xs underline hover:text-[var(--foreground)]",children:"Retry"})]});let ek=N.metadata?.variantId;return(0,t.jsxs)("div",{className:"h-full overflow-y-auto",children:[el&&(0,a.createPortal)((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,t.jsx)("span",{className:"text-xs text-[var(--foreground)]",children:N.name})]}),el),(0,t.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-8 space-y-8",children:[(0,t.jsx)("div",{className:"flex items-start justify-between gap-4",children:(0,t.jsxs)("div",{className:"min-w-0",children:[M?(0,t.jsx)("input",{ref:R,value:_,onChange:e=>D(e.target.value),onBlur:ef,onKeyDown:e=>{"Enter"===e.key&&ef(),"Escape"===e.key&&(D(N.name),$(!1))},disabled:O,className:"input text-lg font-bold w-full"}):(0,t.jsxs)("button",{onClick:()=>$(!0),className:"flex items-center gap-2 group text-left",children:[(0,t.jsx)("h1",{className:"text-lg font-bold truncate",children:N.name}),(0,t.jsx)(o.Pencil,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[N.template_id&&(0,t.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wider px-2 py-0.5 rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)]",children:N.template_id}),ek&&(0,t.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wider px-2 py-0.5 rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)]",children:ek}),(0,t.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[N.agents.length," agent",1!==N.agents.length?"s":""]})]})]})}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider",children:["Agents (",N.agents.length,")"]}),(0,t.jsxs)("button",{onClick:()=>{K(!G),V("existing"),Q(null),X(null)},className:"flex items-center gap-1.5 text-xs font-medium px-3 py-1.5 rounded-xl border border-[var(--border)] hover:bg-[var(--muted)]/50 transition-colors",children:[(0,t.jsx)(d.Plus,{className:"w-3.5 h-3.5"}),"Add Agent"]})]}),G&&(0,t.jsxs)("div",{className:"mb-4 p-4 rounded-2xl space-y-4",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{onClick:()=>V("existing"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"existing"===H?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"Existing Agent"}),(0,t.jsx)("button",{onClick:()=>V("preset"),className:`text-xs font-medium px-3 py-1.5 rounded-lg transition-colors ${"preset"===H?"bg-[var(--primary)] text-white":"bg-[var(--card-bg)] border border-[var(--border)] text-[var(--muted-foreground)]"}`,children:"From Preset"})]}),"existing"===H?(0,t.jsxs)("div",{className:"space-y-3",children:[0===eh.length?(0,t.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"No unassigned agents in this project."}):(0,t.jsx)(x.default,{options:eh,value:Z,onChange:Q,placeholder:"Select an agent..."}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{onClick:ev,disabled:!Z||Y,className:"btn-primary px-4 py-1.5 text-xs flex items-center gap-1.5",children:[Y?(0,t.jsx)(l.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,t.jsx)(d.Plus,{className:"w-3.5 h-3.5"}),"Add"]}),(0,t.jsx)("button",{onClick:()=>K(!1),className:"text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Cancel"})]})]}):(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(x.default,{options:em,value:W,onChange:X,placeholder:"Select a role preset..."}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{onClick:eb,disabled:!W||Y,className:"btn-primary px-4 py-1.5 text-xs flex items-center gap-1.5",children:[Y?(0,t.jsx)(l.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,t.jsx)(d.Plus,{className:"w-3.5 h-3.5"}),"Create & Add"]}),(0,t.jsx)("button",{onClick:()=>K(!1),className:"text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:"Cancel"})]})]})]}),0===N.agents.length?(0,t.jsxs)("div",{className:"rounded-2xl p-8 text-center",style:{background:"var(--muted)",border:"1px solid var(--border)"},children:[(0,t.jsx)(m.Users,{className:"w-8 h-8 mx-auto mb-3 text-[var(--muted-foreground)]"}),(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No agents in this team yet"})]}):(0,t.jsx)("div",{className:"space-y-2",children:N.agents.sort((e,t)=>e.routing_order-t.routing_order).map(e=>{let n=ed.get(e.agent_id),a=n?.name??e.agent_id.slice(0,8),i=n?.color??"#6B7280",d=n?.provider??"claude",c=n?.model??null,m=n?.skills?.length??0;return(0,t.jsx)("div",{className:"group rounded-2xl p-4 transition-colors hover:bg-[var(--muted)]/60 cursor-pointer",style:{background:"var(--card-bg)",border:"1px solid var(--border)"},onClick:()=>k.push(`/projects/${v}/teams/${b}/agents/${e.agent_id}`),children:(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)("img",{src:(0,y.agentAvatarUrl)(e.agent_id,40,i),alt:a,className:"w-10 h-10 rounded-xl flex-shrink-0"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium truncate",children:a}),(0,t.jsxs)("span",{className:"text-[10px] font-mono text-[var(--muted-foreground)]",children:["#",e.routing_order]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[et===e.agent_id?(0,t.jsx)("div",{className:"w-36",onClick:e=>e.stopPropagation(),children:(0,t.jsx)(x.default,{options:eu,value:e.role_key,onChange:async t=>{j&&(await fetch(`/api/projects/${j.id}/teams/${b}/agents?agentId=${encodeURIComponent(e.agent_id)}`,{method:"DELETE"}),await fetch(`/api/projects/${j.id}/teams/${b}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:e.agent_id,roleKey:t,routingOrder:e.routing_order})}),en(null),await er())},placeholder:"Role..."})}):(0,t.jsx)("button",{onClick:t=>{t.stopPropagation(),en(e.agent_id)},className:"text-[10px] px-1.5 py-0.5 rounded-md bg-[var(--muted)] text-[var(--muted-foreground)] border border-[var(--border)] hover:border-[var(--primary)] transition-colors",title:"Click to change role",children:e.role_key}),(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[(0,t.jsx)(s.Cpu,{className:"w-3 h-3"}),d,c&&(0,t.jsxs)("span",{className:"font-mono",children:["/ ",c]})]}),m>0&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[(0,t.jsx)(g.Zap,{className:"w-3 h-3"}),m]})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0",onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("button",{onClick:()=>ei(e.agent_id),className:"p-1.5 rounded-lg hover:bg-[var(--muted)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",title:"Edit agent",children:(0,t.jsx)(o.Pencil,{className:"w-3.5 h-3.5"})}),(0,t.jsx)("button",{onClick:()=>ex(e.agent_id),disabled:J===e.agent_id,className:"p-1.5 rounded-lg hover:bg-red-500/15 text-[var(--muted-foreground)] hover:text-red-400 transition-colors",title:"Remove from team",children:J===e.agent_id?(0,t.jsx)(l.Loader2,{className:"w-3.5 h-3.5 animate-spin"}):(0,t.jsx)(u.X,{className:"w-3.5 h-3.5"})})]}),(0,t.jsx)(r.ChevronRight,{className:"w-4 h-4 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0"})]})},e.agent_id)})})]}),(0,t.jsxs)("div",{className:"pt-6 border-t",style:{borderColor:"var(--border)"},children:[(0,t.jsx)("h2",{className:"text-xs font-medium text-[var(--muted-foreground)] uppercase tracking-wider mb-3",children:"Danger Zone"}),B?(0,t.jsxs)("div",{className:"flex items-center gap-3 p-4 rounded-2xl bg-red-500/5 border border-red-500/20",children:[(0,t.jsx)(p.AlertTriangle,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),(0,t.jsx)("span",{className:"text-sm text-red-400 flex-1",children:"Delete this team? This cannot be undone."}),(0,t.jsx)("button",{onClick:ey,disabled:U,className:"px-3 py-1.5 text-xs font-medium rounded-lg bg-red-600 hover:bg-red-700 text-white transition-colors disabled:opacity-50",children:U?"Deleting...":"Confirm Delete"}),(0,t.jsx)("button",{onClick:()=>L(!1),disabled:U,className:"px-3 py-1.5 text-xs rounded-lg border border-[var(--border)] hover:bg-[var(--muted)]/50 transition-colors",children:"Cancel"})]}):(0,t.jsxs)("button",{onClick:()=>L(!0),className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] hover:text-red-400 transition-colors",children:[(0,t.jsx)(c.Trash2,{className:"w-3.5 h-3.5"}),"Delete Team"]})]})]}),ea&&ed.get(ea)&&(0,t.jsx)(y.AgentForm,{title:"Edit agent",initial:{name:ed.get(ea).name,role:ed.get(ea).role||"",provider:ed.get(ea).provider,model:ed.get(ea).model||"",identity:ed.get(ea).identity||"",color:ed.get(ea).color,skills:ed.get(ea).skills||[],skillBindings:ed.get(ea).skillBindings||[]},agentId:ea,submitLabel:"Save",onSubmit:async e=>{await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:ea,name:e.name,role:e.role||null,provider:e.provider,model:e.model,color:e.color,...e.identity?{identity:e.identity}:{},skills:e.skills??[],skillBindings:e.skillBindings??[]})}),ei(null),await es()},onCancel:()=>ei(null)})]})}])}]);
|