@mndrk/agx 2.4.9 → 2.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- package/cloud-runtime/standalone/apps/local/.next/app-path-routes-manifest.json +7 -0
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +47 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page.js.nft.json +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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.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 +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +5 -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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/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/chat-runs/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/active-agents/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/active-agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat-runs/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/filesystem/analyze/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/filesystem/analyze/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/diff/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/repos/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/refresh/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/rescan/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/git/workspaces/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/issues/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/[id]/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/context/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/for-target/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/link/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/prs/seed/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/repos/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/github/repos/sync/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/messages/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/messages/[id]/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/processes/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/processes/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 +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 +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 +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/system/db-status/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/system/db-status/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/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/terminal/sessions/[id]/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/api/trackers/[tracker]/active-agents/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/active-agents/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/auth/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/callback/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/groups/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/activity/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/recap/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/items/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/labels/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/labels/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/mcp-setup/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/metadata/bulk/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/metadata/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/options/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/runs/scripted/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/stats/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/stats/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/token-receive/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/[tracker]/worker/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/trackers/connections/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/update-check/route.js.nft.json +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 +6 -4
- 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 +6 -4
- 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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page.js +1 -1
- 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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page/next-font-manifest.json +13 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page/react-loadable-manifest.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/[prId]/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.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/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js +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 +6 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +6 -4
- 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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +5 -3
- 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/setup/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup/page.js +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 +6 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +6 -4
- 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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +5 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -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/status/page/build-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page/next-font-manifest.json +3 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status/page.js +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 +6 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +6 -4
- 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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +5 -3
- 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-paths-manifest.json +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__037eb67e._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__97e7a600._.js → [root-of-the-server]__0ce28b4a._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__2564bd1e._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__26904897._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__f48224f7._.js → [root-of-the-server]__273384ad._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__bdc396a9._.js → [root-of-the-server]__2d6f22a3._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__af70f062._.js → [root-of-the-server]__3a038592._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__9cb1dc55._.js → [root-of-the-server]__3b27260f._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__1321970e._.js → [root-of-the-server]__5da8d281._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__92d34a52._.js → [root-of-the-server]__69a60d71._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__66437bd3._.js → [root-of-the-server]__6edb829d._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__8917bc4c._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__870fac73._.js → [root-of-the-server]__8cb4fb94._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__95298612._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__aa1b171a._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__b719a2ed._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__94f42197._.js → [root-of-the-server]__be9b56bb._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c57c0958._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__cce177d8._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__e33b34ce._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/{[root-of-the-server]__61c40dc9._.js → [root-of-the-server]__ee43b5b0._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_1d99e7a5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_22ab9b7c._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_56a2544c._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5843a1a1._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_git_diff_route_actions_5ed8f528.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_git_repos_route_actions_24bb70fb.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_git_workspaces_route_actions_2ffcb8e1.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local__next-internal_server_app_api_github_prs_[id]_route_actions_97f96f83.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_bd72806a._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_6bd3d8a2._.js +12 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_cli-runner_ts_ead5489c._.js +12 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_d268503a._.js +12 -12
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_orchestrator_chat-processor_ts_46384f36._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_git_workspaces_refresh_route_actions_6586e386.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ebff2__next-internal_server_app_api_git_workspaces_rescan_route_actions_2566b872.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__14448535._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__17c701d2._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__ce586680._.js → [root-of-the-server]__24007358._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__263b7091._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__2c4531d0._.js → [root-of-the-server]__6e4038bb._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9193284e._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__5f31e40b._.js → [root-of-the-server]__af9b12ac._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c027b3e3._.js +15 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c0bc6058._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__9434d6d7._.js → [root-of-the-server]__c2331483._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d8f968ee._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{_a0f42923._.js → _f2cf58ea._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_4d3f9c1e._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_6d8c811a._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_folders_page_tsx_72fb68e5._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_page_tsx_b5cec607._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_9a67cfaf._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_b87f08ce._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_c012eb07._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_ProjectModal_tsx_c447494c._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_prs_review_6ac47c7c._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eec36ab6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_fed01721._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/ebff2__next-internal_server_app_projects_[slug]_prs_[prId]_page_actions_37d43e50.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +6 -0
- 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/next-font-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/next-font-manifest.json +93 -29
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/server-reference-manifest.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/16786eff1b844fce.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/23b7c6b08d8bf807.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/38a2210cf8c5fa16.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{d6a9cc66254693b8.js → 46add4300ec4ed84.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/4f3bd9585037d960.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/60239e52ecfd3f7e.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b87c2521c519a1f.js → 6135e7752be76b7e.js} +11 -11
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/731deba285de6535.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/7ca9570f1f269043.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/86c552479b09e1f3.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/8f6587b3b3255b54.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/9ac96f1f33a266f9.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/a2eeffc281bd68bc.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/a68ffbf383609000.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{c9a2c4b55bb76f4f.js → b27f760849f14f13.js} +5 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b2c704fe1711d660.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b53629835d2a70f0.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b59bb2518194866e.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/bb99cb03648e6fae.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{72b4109642bf21f4.js → cb34ff86458b2477.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/dc12676eea40fd39.css +4 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/de6617e175bb536b.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{turbopack-87f23485587f08c3.js → turbopack-90109c6adbc88193.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/media/04c5164763c40239-s.690580e8.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/051742360c26797e-s.p.102b7f24.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/0ee4b8f05dcd9fee-s.45e2741a.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/13ae3e01af63c0ce-s.3ec27879.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/26f284dcc38c84c0-s.303a03d6.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/6a5386fd6038edbe-s.719084df.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/7e7f32a39836f228-s.0b4edfe7.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/9eba4caf7edd2921-s.57f6a4a3.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/ab57efd000576a30-s.p.37015d44.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/b8d1f0a88dfecec3-s.cf53ec14.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/f285987c35230861-s.b3721d2b.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/f6752bd2263820da-s.95b8f539.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/.next/static/media/fa39153a3fc630ba-s.bff0868b.woff2 +0 -0
- package/cloud-runtime/standalone/apps/local/app/api/git/diff/route.ts +54 -0
- package/cloud-runtime/standalone/apps/local/app/api/git/repos/route.ts +47 -0
- package/cloud-runtime/standalone/apps/local/app/api/git/workspaces/refresh/route.ts +52 -0
- package/cloud-runtime/standalone/apps/local/app/api/git/workspaces/rescan/route.ts +23 -0
- package/cloud-runtime/standalone/apps/local/app/api/git/workspaces/route.ts +46 -0
- package/cloud-runtime/standalone/apps/local/app/api/github/prs/[id]/route.ts +28 -0
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +4 -1
- package/cloud-runtime/standalone/apps/local/app/api/projects/payload.ts +23 -9
- package/cloud-runtime/standalone/apps/local/app/api/projects/route.ts +4 -1
- package/cloud-runtime/standalone/apps/local/app/layout.tsx +14 -2
- package/cloud-runtime/standalone/apps/local/app/page.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/prs/[prId]/page.tsx +13 -0
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/prs/page.tsx +5 -4
- package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -3
- package/cloud-runtime/standalone/apps/local/components/ProjectModal.tsx +111 -91
- package/cloud-runtime/standalone/apps/local/components/TrackerBoard.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/project-repo-validation.ts +65 -0
- package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +27 -9
- package/cloud-runtime/standalone/apps/local/components/projects/RepoPathCombobox.tsx +301 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/AgentChip.tsx +61 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/CommitRail.tsx +149 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/DiffPane.tsx +294 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/FilesPane.tsx +216 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/PrReviewView.tsx +68 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/ReviewLayout.tsx +148 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/StatusBar.tsx +53 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/TopBar.tsx +137 -0
- package/cloud-runtime/standalone/apps/local/components/prs/review/review.module.css +112 -0
- package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +6 -2
- package/cloud-runtime/standalone/apps/local/components/tracker/LinkedPrsSection.tsx +4 -3
- package/cloud-runtime/standalone/apps/local/components/tracker/TicketPanel.tsx +111 -25
- package/cloud-runtime/standalone/apps/local/components/tracker/TicketWorkspaceView.tsx +472 -0
- package/cloud-runtime/standalone/apps/local/components/tracker/WorkspacePicker.tsx +338 -0
- package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/hooks/useProviders.ts +1 -0
- package/cloud-runtime/standalone/apps/local/lib/cli-runner.ts +20 -0
- package/cloud-runtime/standalone/apps/local/lib/diff-parser.ts +56 -0
- package/cloud-runtime/standalone/apps/local/lib/gh-pr-cli.ts +198 -0
- package/cloud-runtime/standalone/apps/local/lib/git-diff-cli.ts +232 -0
- package/cloud-runtime/standalone/apps/local/lib/git-repo-index.ts +144 -0
- package/cloud-runtime/standalone/apps/local/lib/git-workspaces.ts +187 -0
- package/cloud-runtime/standalone/apps/local/lib/provider-clis.ts +12 -1
- package/cloud-runtime/standalone/apps/local/lib/repo-suggestions.ts +104 -0
- package/cloud-runtime/standalone/apps/local/lib/stream-multiplexer.ts +1 -0
- package/cloud-runtime/standalone/apps/local/lib/types.ts +1 -1
- package/cloud-runtime/standalone/apps/local/server.ts +14 -0
- package/cloud-runtime/standalone/apps/local/src/graph/work-dispatcher.ts +1 -0
- package/cloud-runtime/standalone/apps/local/state/windowState.ts +20 -0
- package/cloud-runtime/standalone/apps/local/worker/index.js +23 -2
- package/lib/cli/runCli.js +20 -4
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__4ea9a658._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__6465e9c6._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__8ddbf4ca._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5187dece._.js +0 -15
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d08d7899._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e3a1fef0._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16eaf7ae._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_620cb123._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/114ea1bfd6907330.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1585dd5f9ec4866a.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/2473c16c0c2f6b5f.css +0 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/2586c0baa16e9a0d.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/3fce625820bc2bd4.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/67b36c70b72e0e10.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/6d8a7494a0cea7a0.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/90dd4ab03ab145d1.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/aa3029ae0b62f930.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c5436b2b7e8f0ca9.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/cf33cb29946990e3.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/e3bdd1e0f385114e.js +0 -1
- /package/cloud-runtime/standalone/apps/local/.next/static/{EGpM0P8xAEWKkoW-3Ib69 → 5TAcMQcrkt4mBnsqrfw6B}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{EGpM0P8xAEWKkoW-3Ib69 → 5TAcMQcrkt4mBnsqrfw6B}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{EGpM0P8xAEWKkoW-3Ib69 → 5TAcMQcrkt4mBnsqrfw6B}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[143159,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(985339),e=a.i(516909),f=a.i(654340);function g({projectSlug:a,projectThreadIds:d=[]}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)([]),l=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();k(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{l()},[l]),(0,c.useEffect)(()=>{let b=!1,c=a.trim().toLowerCase(),e=new Set(d.map(a=>a.trim()).filter(Boolean)),f=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||b)return;let d=await a.json();if(b)return;let f=d.filter(a=>"spawning"===a.state||"running"===a.state).filter(a=>{let b=a.projectSlug.trim().toLowerCase();return!!b&&b===c||e.has(a.workspaceId)||e.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity);i(f)}catch{}};f();let g=setInterval(f,3e3);return()=>{b=!0,clearInterval(g)}},[a,d]);let m=new Map(j.map(a=>[a.id,a.name])),n=a=>m.get(a)||a.slice(0,8),o=[],p=new Map;for(let a of h){let b=p.get(a.agentId);b||(b={agentId:a.agentId,agentName:n(a.agentId),activities:[]},p.set(a.agentId,b),o.push(b)),b.activities.push({key:`${a.workspaceId}-${a.threadId}-${a.agentId}`,workspaceId:a.workspaceId,threadId:a.threadId,state:a.state,threadLabel:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity),lastActivity:a.lastActivity,linearIssueId:a.linearIssueId,linearRunId:a.linearRunId,trackerType:a.trackerType,responseMessageId:a.responseMessageId})}if(0===o.length)return null;let q=h.length;return(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(f.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[o.length," ",1===o.length?"agent":"agents"," active across"," ",q," ",1===q?"thread":"threads","."]})]}),(0,b.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:[q," live ",1===q?"entry":"entries"]})]}),(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:o.map(c=>(0,b.jsxs)("div",{className:"px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),c.agentName]}),c.activities.length>1&&(0,b.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[c.activities.length," threads"]})]}),(0,b.jsx)("div",{className:"space-y-1 ml-4",children:c.activities.map(c=>(0,b.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:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(a,c)),children:[(0,b.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,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===c.state?"Starting":"Working"]}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:c.threadLabel}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:c.lastActiveLabel})]},c.key))})]},c.agentId))})]})}var h=a.i(44668);function i({projectId:a,projectSlug:d,projectThreadIds:f=[]}){let g=(0,e.useRouter)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)([]),o=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();l(Array.isArray(b)?b:b.participants??[])}catch{}},[]),p=(0,c.useCallback)(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();n(Array.isArray(c)?c:[])}catch{}},[a]);(0,c.useEffect)(()=>{o(),p()},[o,p]),(0,c.useEffect)(()=>{let a=!1,b=d.trim().toLowerCase(),c=new Set(f.map(a=>a.trim()).filter(Boolean)),e=async()=>{try{let d=await fetch("/api/processes?enrich=1");if(!d.ok||a)return;let e=await d.json();if(a)return;let f=e.filter(a=>"done"===a.state).filter(a=>{let d=a.projectSlug.trim().toLowerCase();return!!d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity).slice(0,10);j(f)}catch{}};e();let g=setInterval(e,1e4);return()=>{a=!0,clearInterval(g)}},[d,f]);let q=new Map(k.map(a=>[a.id,a.name])),r=new Map;for(let a of m)for(let b of a.agents)r.set(b.agent_id,{id:a.id,name:a.name});return 0===i.length?null:(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.CheckCircle2,{className:"h-3.5 w-3.5"}),"Recently Completed"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:["Last ",i.length," completed"," ",1===i.length?"task":"tasks","."]})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"min-w-full text-sm",children:[(0,b.jsx)("thead",{className:"bg-[var(--secondary)]",children:(0,b.jsxs)("tr",{className:"text-left text-[11px] uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Agent"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Status"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Thread"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Last active"})]})}),(0,b.jsx)("tbody",{children:i.map(a=>{let c;return(0,b.jsxs)("tr",{className:"cursor-pointer border-t border-[var(--border)] text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",onClick:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(d,a)),children:[(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--foreground)]",children:(c=a.agentId,q.get(c)||c.slice(0,8))}),(0,b.jsx)("td",{className:"px-4 py-3",children:(0,b.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,b.jsx)(h.CheckCircle2,{className:"h-3 w-3"}),"Done"]})}),(0,b.jsx)("td",{className:"max-w-[24rem] px-4 py-3 text-[var(--muted-foreground)]",children:(0,b.jsx)("span",{className:"block truncate",children:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread"})}),(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--muted-foreground)]",children:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity)})]},`${a.workspaceId}-${a.threadId}-${a.agentId}`)})})]})})]})}var j=a.i(549429);function k({projectId:a,onViewAll:e}){let[f,g]=(0,c.useState)([]),[h,i]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>g(a.teams??[])).catch(()=>g([])).finally(()=>i(!1))},[a]),(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!h&&f.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:f.length})]}),e&&(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),h?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===f.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,b.jsx)("div",{className:"space-y-2",children:f.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.name}),(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.agents.length," agents"]})]},a.id))})]})}var l=a.i(820859);function m({projectId:a,projectSlug:d,onViewAll:f}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[k,m]=(0,c.useState)([]),[n,o]=(0,c.useState)({}),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=window.setInterval(()=>{s(Date.now())},3e4);return()=>{window.clearInterval(a)}},[]),(0,c.useEffect)(()=>{let b=!1,c=async()=>{try{let[c,d]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(a)}`)]),e=c.ok?await c.json():{automations:[]},f=d.ok?await d.json():{jobs:[]};if(b)return;let g=(e.automations??[]).filter(b=>b.projectId===a).slice(0,20),h=(f.jobs??[]).filter(b=>b.projectId===a).slice(0,20);i(g),m(h);let j=Object.fromEntries(await Promise.all(h.map(async a=>{try{let b=await fetch(`/api/prompt-jobs/${encodeURIComponent(a.id)}/runs`);if(!b.ok)return[a.id,null];let c=((await b.json()).runs??[])[0]??null;return[a.id,c]}catch{return[a.id,null]}})));if(b)return;o(j)}catch{if(b)return;i([]),m([]),o({})}finally{b||q(!1)}};return q(!0),c(),()=>{b=!0}},[a]);let t=a=>{if(!d||"prompt"!==a.kind)return;let b=new URLSearchParams({job:a.jobId});a.runId&&b.set("run",a.runId),g.push(`/projects/${d}/automations?${b.toString()}`)},u=[...k.filter(a=>{let b=n[a.id];return b?.status==="queued"||b?.status==="running"}).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:n[a.id]?.id??null,updatedAt:n[a.id]?.createdAt??a.updatedAt})),...h.filter(a=>"running"===a.executionState||a.schedule?.tickInProgress).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",updatedAt:a.updatedAt}))].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt)),v=new Set(u.map(a=>a.id)),w=[...k.filter(a=>"active"===a.state&&"number"==typeof a.nextRunAt).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:null,nextRunAt:a.nextRunAt})),...h.filter(a=>a.schedule?.state==="active"&&"number"==typeof a.schedule?.nextTickAt).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",nextRunAt:a.schedule.nextTickAt}))].filter(a=>!v.has(a.id)).sort((a,b)=>a.nextRunAt-b.nextRunAt),x=k.length+h.length;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Jobs"}),!p&&x>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:x})]}),f&&(0,b.jsxs)("button",{onClick:f,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),p?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===x?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Currently running"}),(0,b.jsx)("span",{children:u.length})]}),0===u.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,b.jsx)("div",{className:"space-y-2",children:u.slice(0,3).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,b.jsx)("span",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},a.id))})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Upcoming runs"}),(0,b.jsx)("span",{children:w.length})]}),0===w.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,b.jsx)("div",{className:"space-y-2",children:w.slice(0,3).map(a=>{var c;return(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)(l.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(c=a.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(c))," ",(0,b.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(a=>{if("number"!=typeof a)return"";let b=a-r;if(b<=0)return"now";let c=Math.ceil(b/6e4);if(c<60)return`in ${c}m`;let d=Math.floor(c/60),e=c%60;if(d<24)return 0===e?`in ${d}h`:`in ${d}h ${e}m`;let f=Math.floor(d/24),g=d%24;return 0===g?`in ${f}d`:`in ${f}d ${g}h`})(a.nextRunAt)]})]})]})]},a.id)})})]})]})]})}var n=a.i(736868),o=a.i(89613),p=a.i(109467),q=a.i(446946);function r({projectId:a,onViewAll:c}){let{workspace:d,entryCount:e,isLoading:f,error:g}=(0,p.useProjectWorkspace)(a),h=(0,q.buildWorkspaceCategoryGroups)(d).filter(a=>a.entries.length>0).slice(0,3);return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Workspace Map"}),e>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:e})]}),c&&(0,b.jsxs)("button",{type:"button",onClick:c,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"h-3 w-3"})]})]}),f&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading workspace map..."}),!f&&g&&(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:"Unable to load the workspace map right now."}),!f&&!g&&0===e&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No workspace locations mapped yet. Add repositories, docs, or scripts so agents know where to work."}),!f&&!g&&e>0&&(0,b.jsx)("div",{className:"space-y-3",children:h.map(a=>(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:a.label}),(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:a.entries.length})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[a.entries.slice(0,2).map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm",children:[(0,b.jsx)(o.FolderOpen,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path||a.purpose||"No path set yet"})]})]},a.id)),a.entries.length>2&&(0,b.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["+ ",a.entries.length-2," more"]})]})]},a.id))})]})}var s=a.i(489461),t=a.i(830284),u=a.i(769677),v=a.i(599086);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 x({objective:a,teamName:c,onClick:d}){let e=w[a.status]??w.on_track,f="done"===a.status;return(0,b.jsxs)("button",{type:"button",onClick:d,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${f?"opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.dot}`}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${e.badge}`,children:e.label})]}),(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(a.progress,100)}%`}})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{className:c?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!c&&(0,b.jsx)(v.AlertTriangle,{className:"h-3 w-3"}),c??"No team"]}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function y({projectId:a,projectSlug:d}){let f=(0,e.useRouter)(),{projects:g,isLoading:h}=(0,t.useProjects)(),i=(0,c.useMemo)(()=>g.find(a=>a.slug===d),[g,d]),k=(0,c.useMemo)(()=>(0,u.readProjectObjectivesWorkspace)(i?.metadata).objectives,[i?.metadata]),[l,m]=(0,c.useState)([]);(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>m(a.teams??[])).catch(()=>m([]))},[a]);let n=(0,c.useMemo)(()=>new Map(l.map(a=>[a.id,a.name])),[l]),o=k.filter(a=>a.progress>=100).length;return h?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsxs)("button",{type:"button",onClick:()=>f.push(`/projects/${d}/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,b.jsx)(s.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{children:[k.length," ",1===k.length?"objective":"objectives"]}),(0,b.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,b.jsxs)("span",{children:[o,"/",k.length," complete"]})]}),(0,b.jsxs)("button",{onClick:()=>f.push(`/projects/${d}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:k.map(a=>(0,b.jsx)(x,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${d}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var z=a.i(737313),A=a.i(144462),B=a.i(947218),C=a.i(392045),D=a.i(763197);function E({icon:a,title:c,accentClass:d,onClick:e,badge:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:e,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,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:d,children:a}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:c})]}),f]}),g&&(0,b.jsx)("div",{className:"text-sm",children:g})]})}function F({projectId:a,projectSlug:d,primaryThreadId:f}){var g;let h=(0,e.useRouter)(),{connected:i,loading:j}=(0,B.useTrackerConnection)("linear",a),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(0),o=(0,D.useTerminalTabsStore)(a=>a.sessions[d])??[],[p,q]=(0,c.useState)(()=>D.useTerminalTabsStore.persist.hasHydrated()),r=(0,c.useMemo)(()=>0===o.length?null:o.reduce((a,b)=>b.createdAt>a.createdAt?b:a),[o]);return(0,c.useEffect)(()=>{let b=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(a)}&limit=3&format=json`).then(a=>a.ok?a.json():{threads:{},total:0}).then(a=>{if(b)return;let c=Object.values(a.threads??{}).flatMap(a=>a.threads??[]).slice(0,3);l(c),n("number"==typeof a.total?a.total:c.length)}).catch(()=>{b||(l([]),n(0))}),()=>{b=!0}},[a]),(0,c.useEffect)(()=>(q(D.useTerminalTabsStore.persist.hasHydrated()),D.useTerminalTabsStore.persist.onFinishHydration(()=>{q(!0)})),[]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(E,{icon:(0,b.jsx)(z.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{f&&h.push(`/projects/${d}/thread/${encodeURIComponent(f)}`)},badge:m>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:m}):void 0,children:null===k?(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,b.jsx)("div",{className:"space-y-1",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,b.jsx)(z.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},a.id))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(A.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>h.push(`/projects/${d}/terminal`),badge:p&&o.length>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:o.length}):void 0,children:p?0===o.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"}):(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-[var(--foreground)]",children:(g=o.length,`${g} saved session${1===g?"":"s"}`)}),(0,b.jsxs)("p",{className:"truncate text-[var(--muted-foreground)]",children:["Latest: ",r?.title??"Untitled terminal"]})]}):(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(C.TrackerIcon,{trackerType:"linear",className:"w-4 h-4"}),title:"Tasks",accentClass:"text-blue-400",onClick:()=>h.push(`/projects/${d}/tracking`),badge:j?void 0:i?(0,b.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,b.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:!j&&!i&&(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function G({projectId:a,projectSlug:c,projectDescription:d,threadIds:f}){let h=(0,e.useRouter)(),j=f[0]??null;return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[d&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:d}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,b.jsx)(y,{projectId:a,projectSlug:c})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,b.jsx)(F,{projectId:a,projectSlug:c,primaryThreadId:j})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(m,{projectId:a,projectSlug:c,onViewAll:()=>h.push(`/projects/${c}/automations`)}),(0,b.jsx)(g,{projectSlug:c,projectThreadIds:f}),(0,b.jsx)(i,{projectId:a,projectSlug:c,projectThreadIds:f})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(r,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/folders`)}),(0,b.jsx)(k,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/teams`)})]})]})})}var H=a.i(53954);function I({params:a}){let{slug:e}=(0,c.use)(a),{projects:f}=(0,t.useProjectsWithAgents)(),g=f.find(a=>a.slug===e),[h,i]=(0,c.useState)("loading");return((0,c.useEffect)(()=>{if(!g)return;let a=!1;return(async()=>{try{let b=await fetch(`/api/projects/${g.id}/teams`,{cache:"no-store"});if(a)return;let c=b.ok?await b.json():{teams:[]},d=Array.isArray(c?.teams)?c.teams:[];i(0===d.length?"empty":"has-teams")}catch{a||i("has-teams")}})(),()=>{a=!0}},[g]),g)?"empty"===h?(0,b.jsx)(H.EmptyStateCard,{icon:(0,b.jsx)(d.Users,{className:"w-6 h-6 text-[var(--foreground)]"}),title:`Add a team to ${g.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/${g.slug}/teams/new`}):(0,b.jsx)(G,{projectId:g.id,projectSlug:g.slug,projectName:g.name,projectDescription:g.description,projectMetadata:g.metadata,repos:g.repos,threadIds:g.thread_ids}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}a.s(["default",()=>I],143159)}];
|
|
1
|
+
module.exports=[143159,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(985339),e=a.i(516909),f=a.i(654340);function g({projectSlug:a,projectThreadIds:d=[]}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)([]),l=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();k(Array.isArray(b)?b:b.participants??[])}catch{}},[]);(0,c.useEffect)(()=>{l()},[l]),(0,c.useEffect)(()=>{let b=!1,c=a.trim().toLowerCase(),e=new Set(d.map(a=>a.trim()).filter(Boolean)),f=async()=>{try{let a=await fetch("/api/processes?enrich=1");if(!a.ok||b)return;let d=await a.json();if(b)return;let f=d.filter(a=>"spawning"===a.state||"running"===a.state).filter(a=>{let b=a.projectSlug.trim().toLowerCase();return!!b&&b===c||e.has(a.workspaceId)||e.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity);i(f)}catch{}};f();let g=setInterval(f,3e3);return()=>{b=!0,clearInterval(g)}},[a,d]);let m=new Map(j.map(a=>[a.id,a.name])),n=a=>m.get(a)||a.slice(0,8),o=[],p=new Map;for(let a of h){let b=p.get(a.agentId);b||(b={agentId:a.agentId,agentName:n(a.agentId),activities:[]},p.set(a.agentId,b),o.push(b)),b.activities.push({key:`${a.workspaceId}-${a.threadId}-${a.agentId}`,workspaceId:a.workspaceId,threadId:a.threadId,state:a.state,threadLabel:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread",lastActiveLabel:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity),lastActivity:a.lastActivity,linearIssueId:a.linearIssueId,linearRunId:a.linearRunId,trackerType:a.trackerType,responseMessageId:a.responseMessageId})}if(0===o.length)return null;let q=h.length;return(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(f.Activity,{className:"h-3.5 w-3.5"}),"Working Now"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:[o.length," ",1===o.length?"agent":"agents"," active across"," ",q," ",1===q?"thread":"threads","."]})]}),(0,b.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:[q," live ",1===q?"entry":"entries"]})]}),(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:o.map(c=>(0,b.jsxs)("div",{className:"px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-[var(--foreground)]",children:[(0,b.jsx)("span",{className:"h-2 w-2 rounded-full bg-emerald-400 animate-pulse"}),c.agentName]}),c.activities.length>1&&(0,b.jsxs)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[c.activities.length," threads"]})]}),(0,b.jsx)("div",{className:"space-y-1 ml-4",children:c.activities.map(c=>(0,b.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:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(a,c)),children:[(0,b.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,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400"}),"spawning"===c.state?"Starting":"Working"]}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:c.threadLabel}),(0,b.jsx)("span",{className:"shrink-0 text-xs text-[var(--muted-foreground)]",children:c.lastActiveLabel})]},c.key))})]},c.agentId))})]})}var h=a.i(44668);function i({projectId:a,projectSlug:d,projectThreadIds:f=[]}){let g=(0,e.useRouter)(),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)([]),o=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/participants");if(!a.ok)return;let b=await a.json();l(Array.isArray(b)?b:b.participants??[])}catch{}},[]),p=(0,c.useCallback)(async()=>{try{let b=await fetch(`/api/projects/${a}/teams`);if(!b.ok)return;let c=await b.json();n(Array.isArray(c)?c:[])}catch{}},[a]);(0,c.useEffect)(()=>{o(),p()},[o,p]),(0,c.useEffect)(()=>{let a=!1,b=d.trim().toLowerCase(),c=new Set(f.map(a=>a.trim()).filter(Boolean)),e=async()=>{try{let d=await fetch("/api/processes?enrich=1");if(!d.ok||a)return;let e=await d.json();if(a)return;let f=e.filter(a=>"done"===a.state).filter(a=>{let d=a.projectSlug.trim().toLowerCase();return!!d&&d===b||c.has(a.workspaceId)||c.has(a.threadId)}).sort((a,b)=>b.lastActivity-a.lastActivity).slice(0,10);j(f)}catch{}};e();let g=setInterval(e,1e4);return()=>{a=!0,clearInterval(g)}},[d,f]);let q=new Map(k.map(a=>[a.id,a.name])),r=new Map;for(let a of m)for(let b of a.agents)r.set(b.agent_id,{id:a.id,name:a.name});return 0===i.length?null:(0,b.jsxs)("section",{className:"col-span-full overflow-hidden rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,b.jsx)("div",{className:"flex items-center justify-between gap-3 border-b border-[var(--border)] px-4 py-3",children:(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(h.CheckCircle2,{className:"h-3.5 w-3.5"}),"Recently Completed"]}),(0,b.jsxs)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:["Last ",i.length," completed"," ",1===i.length?"task":"tasks","."]})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"min-w-full text-sm",children:[(0,b.jsx)("thead",{className:"bg-[var(--secondary)]",children:(0,b.jsxs)("tr",{className:"text-left text-[11px] uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:[(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Agent"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Status"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Thread"}),(0,b.jsx)("th",{className:"px-4 py-3 font-medium",children:"Last active"})]})}),(0,b.jsx)("tbody",{children:i.map(a=>{let c;return(0,b.jsxs)("tr",{className:"cursor-pointer border-t border-[var(--border)] text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",onClick:()=>g.push(function(a,b){if(b.linearIssueId&&b.linearRunId){let c=`/projects/${a}/tracking/${b.trackerType??"linear"}?issue=${encodeURIComponent(b.linearIssueId)}&run=${encodeURIComponent(b.linearRunId)}`;return b.responseMessageId?`${c}&message=${encodeURIComponent(b.responseMessageId)}`:c}let c=b.workspaceId??"",d=b.threadId??"",e="objective-chat:",f=c.startsWith(e)?c:d.startsWith(e)?d:null;if(f){let g=f.slice(e.length),h=new URLSearchParams;d&&d!==c&&h.set("session",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/objectives/${encodeURIComponent(g)}${i?`?${i}`:""}`}let g="tracker-run:";if(c.startsWith(g)){let d=b.linearRunId??c.slice(g.length),e=new URLSearchParams;return b.linearIssueId&&e.set("issue",b.linearIssueId),e.set("run",d),b.responseMessageId&&e.set("message",b.responseMessageId),`/projects/${a}/tracking/${b.trackerType??"linear"}?${e.toString()}`}let h=new URLSearchParams;d&&h.set("open",d),b.responseMessageId&&h.set("message",b.responseMessageId);let i=h.toString();return`/projects/${a}/thread/${encodeURIComponent(c)}${i?`?${i}`:""}`}(d,a)),children:[(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--foreground)]",children:(c=a.agentId,q.get(c)||c.slice(0,8))}),(0,b.jsx)("td",{className:"px-4 py-3",children:(0,b.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,b.jsx)(h.CheckCircle2,{className:"h-3 w-3"}),"Done"]})}),(0,b.jsx)("td",{className:"max-w-[24rem] px-4 py-3 text-[var(--muted-foreground)]",children:(0,b.jsx)("span",{className:"block truncate",children:a.threadTitle?.trim()?a.threadTitle.trim():a.threadId?.trim()?`Thread ${a.threadId.slice(0,12)}...`:"Main thread"})}),(0,b.jsx)("td",{className:"px-4 py-3 text-[var(--muted-foreground)]",children:function(a){let b=Math.max(0,Math.floor((Date.now()-a)/1e3));if(b<5)return"Just now";if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);if(d<24)return`${d}h ago`;let e=Math.floor(d/24);return`${e}d ago`}(a.lastActivity)})]},`${a.workspaceId}-${a.threadId}-${a.agentId}`)})})]})})]})}var j=a.i(549429);function k({projectId:a,onViewAll:e}){let[f,g]=(0,c.useState)([]),[h,i]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>g(a.teams??[])).catch(()=>g([])).finally(()=>i(!1))},[a]),(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Teams"}),!h&&f.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:f.length})]}),e&&(0,b.jsxs)("button",{onClick:e,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),h?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===f.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No teams yet"}):(0,b.jsx)("div",{className:"space-y-2",children:f.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(d.Users,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[var(--foreground)]",children:a.name}),(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.agents.length," agents"]})]},a.id))})]})}var l=a.i(820859);function m({projectId:a,projectSlug:d,onViewAll:f}){let g=(0,e.useRouter)(),[h,i]=(0,c.useState)([]),[k,m]=(0,c.useState)([]),[n,o]=(0,c.useState)({}),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=window.setInterval(()=>{s(Date.now())},3e4);return()=>{window.clearInterval(a)}},[]),(0,c.useEffect)(()=>{let b=!1,c=async()=>{try{let[c,d]=await Promise.all([fetch("/api/automations"),fetch(`/api/prompt-jobs?projectId=${encodeURIComponent(a)}`)]),e=c.ok?await c.json():{automations:[]},f=d.ok?await d.json():{jobs:[]};if(b)return;let g=(e.automations??[]).filter(b=>b.projectId===a).slice(0,20),h=(f.jobs??[]).filter(b=>b.projectId===a).slice(0,20);i(g),m(h);let j=Object.fromEntries(await Promise.all(h.map(async a=>{try{let b=await fetch(`/api/prompt-jobs/${encodeURIComponent(a.id)}/runs`);if(!b.ok)return[a.id,null];let c=((await b.json()).runs??[])[0]??null;return[a.id,c]}catch{return[a.id,null]}})));if(b)return;o(j)}catch{if(b)return;i([]),m([]),o({})}finally{b||q(!1)}};return q(!0),c(),()=>{b=!0}},[a]);let t=a=>{if(!d||"prompt"!==a.kind)return;let b=new URLSearchParams({job:a.jobId});a.runId&&b.set("run",a.runId),g.push(`/projects/${d}/automations?${b.toString()}`)},u=[...k.filter(a=>{let b=n[a.id];return b?.status==="queued"||b?.status==="running"}).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:n[a.id]?.id??null,updatedAt:n[a.id]?.createdAt??a.updatedAt})),...h.filter(a=>"running"===a.executionState||a.schedule?.tickInProgress).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",updatedAt:a.updatedAt}))].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt)),v=new Set(u.map(a=>a.id)),w=[...k.filter(a=>"active"===a.state&&"number"==typeof a.nextRunAt).map(a=>({id:`prompt:${a.id}`,title:a.name,kind:"prompt",jobId:a.id,runId:null,nextRunAt:a.nextRunAt})),...h.filter(a=>a.schedule?.state==="active"&&"number"==typeof a.schedule?.nextTickAt).map(a=>({id:`automation:${a.graphId}`,title:a.title,kind:"automation",nextRunAt:a.schedule.nextTickAt}))].filter(a=>!v.has(a.id)).sort((a,b)=>a.nextRunAt-b.nextRunAt),x=k.length+h.length;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(l.Clock,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Scheduled Jobs"}),!p&&x>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:x})]}),f&&(0,b.jsxs)("button",{onClick:f,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),p?(0,b.jsx)("div",{className:"space-y-2",children:[1,2,3].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===x?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No scheduled tasks"}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Currently running"}),(0,b.jsx)("span",{children:u.length})]}),0===u.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Nothing running right now"}):(0,b.jsx)("div",{className:"space-y-2",children:u.slice(0,3).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,b.jsx)("span",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsx)("span",{className:"ml-auto shrink-0 text-xs text-[var(--status-completed-text)]",children:"running"})]},a.id))})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"Upcoming runs"}),(0,b.jsx)("span",{children:w.length})]}),0===w.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No upcoming runs"}):(0,b.jsx)("div",{className:"space-y-2",children:w.slice(0,3).map(a=>{var c;return(0,b.jsxs)("button",{type:"button",onClick:()=>t(a),disabled:"prompt"!==a.kind||!d,className:`flex w-full items-center gap-2 rounded-md px-1 py-1 text-left text-sm transition-colors ${"prompt"===a.kind&&d?"cursor-pointer hover:bg-[var(--secondary)]":"cursor-default"}`,children:[(0,b.jsx)(l.Clock,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.title}),(0,b.jsxs)("div",{className:"text-xs text-[var(--muted-foreground)]",children:["number"!=typeof(c=a.nextRunAt)?"No next run":new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(c))," ",(0,b.jsxs)("span",{className:"text-[var(--app-shell-soft-text)]",children:["• ",(a=>{if("number"!=typeof a)return"";let b=a-r;if(b<=0)return"now";let c=Math.ceil(b/6e4);if(c<60)return`in ${c}m`;let d=Math.floor(c/60),e=c%60;if(d<24)return 0===e?`in ${d}h`:`in ${d}h ${e}m`;let f=Math.floor(d/24),g=d%24;return 0===g?`in ${f}d`:`in ${f}d ${g}h`})(a.nextRunAt)]})]})]})]},a.id)})})]})]})]})}var n=a.i(736868),o=a.i(89613),p=a.i(109467),q=a.i(446946);function r({projectId:a,onViewAll:c}){let{workspace:d,entryCount:e,isLoading:f,error:g}=(0,p.useProjectWorkspace)(a),h=(0,q.buildWorkspaceCategoryGroups)(d).filter(a=>a.entries.length>0).slice(0,3);return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Workspace Map"}),e>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:e})]}),c&&(0,b.jsxs)("button",{type:"button",onClick:c,className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"h-3 w-3"})]})]}),f&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading workspace map..."}),!f&&g&&(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:"Unable to load the workspace map right now."}),!f&&!g&&0===e&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No workspace locations mapped yet. Add repositories, docs, or scripts so agents know where to work."}),!f&&!g&&e>0&&(0,b.jsx)("div",{className:"space-y-3",children:h.map(a=>(0,b.jsxs)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-2.5",children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:a.label}),(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:a.entries.length})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[a.entries.slice(0,2).map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2 text-sm",children:[(0,b.jsx)(o.FolderOpen,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-[var(--foreground)]",children:a.name}),(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path||a.purpose||"No path set yet"})]})]},a.id)),a.entries.length>2&&(0,b.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:["+ ",a.entries.length-2," more"]})]})]},a.id))})]})}var s=a.i(489461),t=a.i(830284),u=a.i(769677),v=a.i(599086);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 x({objective:a,teamName:c,onClick:d}){let e=w[a.status]??w.on_track,f="done"===a.status;return(0,b.jsxs)("button",{type:"button",onClick:d,className:`w-full rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] p-4 text-left transition-colors hover:bg-[var(--secondary)] ${f?"opacity-60":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,b.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.dot}`}),(0,b.jsx)("span",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:a.title})]}),(0,b.jsx)("span",{className:`shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium ${e.badge}`,children:e.label})]}),(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-[var(--muted)]",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-emerald-500/70 transition-all",style:{width:`${Math.min(a.progress,100)}%`}})})}),(0,b.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{className:c?"":"flex items-center gap-1 text-[var(--status-blocked-text)]",children:[!c&&(0,b.jsx)(v.AlertTriangle,{className:"h-3 w-3"}),c??"No team"]}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function y({projectId:a,projectSlug:d}){let f=(0,e.useRouter)(),{projects:g,isLoading:h}=(0,t.useProjects)(),i=(0,c.useMemo)(()=>g.find(a=>a.slug===d),[g,d]),k=(0,c.useMemo)(()=>(0,u.readProjectObjectivesWorkspace)(i?.metadata).objectives,[i?.metadata]),[l,m]=(0,c.useState)([]);(0,c.useEffect)(()=>{fetch(`/api/projects/${a}/teams`).then(a=>a.ok?a.json():{teams:[]}).then(a=>m(a.teams??[])).catch(()=>m([]))},[a]);let n=(0,c.useMemo)(()=>new Map(l.map(a=>[a.id,a.name])),[l]),o=k.filter(a=>a.progress>=100).length;return h?(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-28 animate-pulse rounded-2xl bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsxs)("button",{type:"button",onClick:()=>f.push(`/projects/${d}/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,b.jsx)(s.Target,{className:"mx-auto mb-2 h-5 w-5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Add your first objective"})]}):(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("span",{children:[k.length," ",1===k.length?"objective":"objectives"]}),(0,b.jsx)("span",{className:"text-[var(--border)]",children:"|"}),(0,b.jsxs)("span",{children:[o,"/",k.length," complete"]})]}),(0,b.jsxs)("button",{onClick:()=>f.push(`/projects/${d}/objectives`),className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:["View all ",(0,b.jsx)(j.ArrowRight,{className:"w-3 h-3"})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:k.map(a=>(0,b.jsx)(x,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${d}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var z=a.i(737313),A=a.i(144462),B=a.i(947218),C=a.i(392045),D=a.i(763197);function E({icon:a,title:c,accentClass:d,onClick:e,badge:f,children:g}){return(0,b.jsxs)("button",{type:"button",onClick:e,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,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:d,children:a}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:c})]}),f]}),g&&(0,b.jsx)("div",{className:"text-sm",children:g})]})}function F({projectId:a,projectSlug:d,primaryThreadId:f}){var g;let h=(0,e.useRouter)(),{connected:i,loading:j}=(0,B.useTrackerConnection)("linear",a),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(0),o=(0,D.useTerminalTabsStore)(a=>a.sessions[d])??[],[p,q]=(0,c.useState)(()=>D.useTerminalTabsStore.persist.hasHydrated()),r=(0,c.useMemo)(()=>0===o.length?null:o.reduce((a,b)=>b.createdAt>a.createdAt?b:a),[o]);return(0,c.useEffect)(()=>{let b=!1;return fetch(`/api/threads?projectId=${encodeURIComponent(a)}&limit=3&format=json`).then(a=>a.ok?a.json():{threads:{},total:0}).then(a=>{if(b)return;let c=Object.values(a.threads??{}).flatMap(a=>a.threads??[]).slice(0,3);l(c),n("number"==typeof a.total?a.total:c.length)}).catch(()=>{b||(l([]),n(0))}),()=>{b=!0}},[a]),(0,c.useEffect)(()=>(q(D.useTerminalTabsStore.persist.hasHydrated()),D.useTerminalTabsStore.persist.onFinishHydration(()=>{q(!0)})),[]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(E,{icon:(0,b.jsx)(z.MessageSquare,{className:"w-4 h-4"}),title:"Chat",accentClass:"text-indigo-400",onClick:()=>{f&&h.push(`/projects/${d}/thread/${encodeURIComponent(f)}`)},badge:m>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:m}):void 0,children:null===k?(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))}):0===k.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No threads yet"}):(0,b.jsx)("div",{className:"space-y-1",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 truncate text-[var(--foreground)]",children:[(0,b.jsx)(z.MessageSquare,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"truncate",children:a.title})]},a.id))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(A.TerminalSquare,{className:"w-4 h-4"}),title:"Terminal",accentClass:"text-emerald-400",onClick:()=>h.push(`/projects/${d}/terminal`),badge:p&&o.length>0?(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:o.length}):void 0,children:p?0===o.length?(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"No sessions yet"}):(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-[var(--foreground)]",children:(g=o.length,`${g} saved session${1===g?"":"s"}`)}),(0,b.jsxs)("p",{className:"truncate text-[var(--muted-foreground)]",children:["Latest: ",r?.title??"Untitled terminal"]})]}):(0,b.jsx)("div",{className:"space-y-1.5",children:[1,2].map(a=>(0,b.jsx)("div",{className:"h-5 animate-pulse rounded bg-[var(--muted)]"},a))})}),(0,b.jsx)(E,{icon:(0,b.jsx)(C.TrackerIcon,{trackerType:"linear",className:"w-4 h-4"}),title:"Tasks",accentClass:"text-blue-400",onClick:()=>h.push(`/projects/${d}/tracking`),badge:j?void 0:i?(0,b.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,b.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:!j&&!i&&(0,b.jsx)("p",{className:"text-[var(--muted-foreground)]",children:"Connect to see issues"})})]})}function G({projectId:a,projectSlug:c,projectDescription:d,threadIds:f}){let h=(0,e.useRouter)(),j=f[0]??null;return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-8 space-y-8",children:[d&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:d}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What you're working toward"}),(0,b.jsx)(y,{projectId:a,projectSlug:c})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"Start working"}),(0,b.jsx)(F,{projectId:a,projectSlug:c,primaryThreadId:j})]}),(0,b.jsxs)("section",{children:[(0,b.jsx)("h2",{className:"mb-3 text-sm text-[var(--muted-foreground)]",children:"What's happening now"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(m,{projectId:a,projectSlug:c,onViewAll:()=>h.push(`/projects/${c}/automations`)}),(0,b.jsx)(g,{projectSlug:c,projectThreadIds:f}),(0,b.jsx)(i,{projectId:a,projectSlug:c,projectThreadIds:f})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(r,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/folders`)}),(0,b.jsx)(k,{projectId:a,onViewAll:()=>h.push(`/projects/${c}/teams`)})]})]})})}var H=a.i(53954);function I({params:a}){let{slug:e}=(0,c.use)(a),{projects:f}=(0,t.useProjectsWithAgents)(),g=f.find(a=>a.slug===e),[h,i]=(0,c.useState)("loading");return((0,c.useEffect)(()=>{if(!g)return;let a=!1;return(async()=>{try{let b=await fetch(`/api/projects/${g.id}/teams`,{cache:"no-store"});if(a)return;let c=b.ok?await b.json():{teams:[]},d=Array.isArray(c?.teams)?c.teams:[];i(0===d.length?"empty":"has-teams")}catch{a||i("has-teams")}})(),()=>{a=!0}},[g]),g)?"empty"===h?(0,b.jsx)(H.EmptyStateCard,{icon:(0,b.jsx)(d.Users,{className:"w-6 h-6 text-[var(--foreground)]"}),title:`Add a team to ${g.name}`,description:"Teams are the agents that work through your tickets and PRs. Add one to start shipping.",ctaLabel:"Add a team",ctaHref:`/projects/${g.slug}/teams/new`}):(0,b.jsx)(G,{projectId:g.id,projectSlug:g.slug,projectName:g.name,projectDescription:g.description,projectMetadata:g.metadata,repos:g.repos,threadIds:g.thread_ids}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading project..."})}a.s(["default",()=>I],143159)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_page_tsx_76330306._.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
module.exports=[984806,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909),e=a.i(850985),f=a.i(639211);function g(){let[a,d]=(0,c.useState)(null),[e,g]=(0,c.useState)("loading");(0,c.useEffect)(()=>{let a=!0;async function b(){try{let b=await fetch("/api/health");if(!a)return;if(!b.ok)return void g("error");let c=await b.json();d(c),g(c.connected?"connected":"disconnected")}catch{a&&g("error")}}b();let c=setInterval(b,f.UI_POLL_DB_HEALTH_MS);return()=>{a=!1,clearInterval(c)}},[]);let h={loading:"Checking database…",connected:`${a?.adapter??"db"} connected (${a?.latencyMs??"?"}ms)`,disconnected:`${a?.adapter??"db"} disconnected`,error:"Database unreachable"};return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--muted-foreground)]",role:"status","aria-label":h[e],children:[(0,b.jsx)("span",{className:`w-2 h-2 rounded-full ${{loading:"bg-yellow-400",connected:"bg-green-500",disconnected:"bg-red-500",error:"bg-red-500"}[e]}`}),(0,b.jsx)("span",{className:"hidden sm:inline",children:h[e]})]})}function h({children:a,fullWidth:c=!1,noFooter:d=!1}){return(0,b.jsxs)("div",{className:"h-screen flex flex-col overflow-hidden",children:[(0,b.jsx)("nav",{className:"desktop-titlebar flex-shrink-0 border-b border-[var(--card-border)] bg-[var(--card-bg)]/80 backdrop-blur-lg z-30",children:(0,b.jsx)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",children:(0,b.jsxs)("div",{className:"flex items-center justify-between h-16",children:[(0,b.jsx)("div",{className:"flex items-center gap-8",children:(0,b.jsx)(e.default,{href:"/",className:"flex items-center gap-3 group",children:(0,b.jsxs)("svg",{width:"52",height:"31",viewBox:"0 0 64 38",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"transition-transform group-hover:scale-105",children:[(0,b.jsx)("rect",{width:"64",height:"38",rx:"8",fill:"black"}),(0,b.jsxs)("g",{stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("path",{d:"M 14 27 C 17 16 19 10 20 8 C 21 12 23 20 25 27"}),(0,b.jsx)("path",{d:"M 16 20 C 19 19 21 21 23 20"}),(0,b.jsx)("path",{d:"M 40 13 C 35 10 30 13 30 19 C 30 25 34 28 38 27 C 40 26 40 22 40 20 L 36 20"}),(0,b.jsx)("path",{d:"M 46 11 C 48 16 51 22 54 27"}),(0,b.jsx)("path",{d:"M 54 11 C 52 16 49 22 46 27"})]})]})})}),(0,b.jsx)("div",{className:"flex items-center gap-3",children:(0,b.jsx)(e.default,{href:"/",className:"text-sm font-medium text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:"Home"})})]})})}),(0,b.jsx)("main",{className:`flex-1 min-h-0 flex flex-col ${c?"p-0":"p-4 sm:p-6 lg:p-8 overflow-y-auto"}`,children:a}),!d&&(0,b.jsx)("footer",{className:"flex-shrink-0 border-t border-[var(--card-border)] bg-[var(--card-bg)]/50 py-4",children:(0,b.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex items-center justify-between text-xs text-[var(--muted-foreground)]",children:[(0,b.jsx)("span",{children:"AGX"}),(0,b.jsxs)("span",{className:"hidden sm:inline-flex items-center gap-3",children:[(0,b.jsx)(g,{}),(0,b.jsx)("span",{children:"Built with Next.js + Db"})]})]})})]})}function i(a){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"h-screen flex items-center justify-center bg-[var(--background)]",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}),children:(0,b.jsx)(h,{...a})})}var j=a.i(769677);let k=new Set([j.PROJECT_OBJECTIVES_METADATA_KEY,j.LEGACY_PROJECT_GOALS_METADATA_KEY,j.PROJECT_HEALTH_METADATA_KEY]);function l({project:a,onEdit:c,onDelete:d,onClick:e,onManageTasks:f}){let g=a.repos&&a.repos.length>0;return(0,b.jsxs)("div",{onClick:()=>e?.(a),className:`p-5 surface-card space-y-4
|
|
2
|
-
${e?"cursor-pointer hover:border-gray-300 dark:hover:border-gray-700 hover:shadow-md active:scale-[0.99]":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-lg font-semibold",children:a.name}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:a.slug})]}),(0,b.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,b.jsxs)("span",{className:"text-[11px] font-semibold text-[var(--muted-foreground)]",children:["Updated ",new Date(a.updated_at).toLocaleDateString()]}),(c||d||f)&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[f&&(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),f(a)},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"}),c&&(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),c(a)},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"}),d&&(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),d(a)},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"})]})]})]}),a.description&&(0,b.jsx)("p",{className:"text-sm text-[var(--foreground)] line-clamp-2",children:a.description}),a.ci_cd_info&&(0,b.jsxs)("div",{className:"text-sm",children:[(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] text-[12px] uppercase tracking-wide",children:"CI / CD"}),(0,b.jsx)("p",{className:"text-[14px] text-[var(--accent)] font-medium truncate",children:a.ci_cd_info})]}),a.metadata&&Object.keys(a.metadata).some(a=>!k.has(a))&&(0,b.jsxs)("div",{className:"p-3 rounded-lg bg-[var(--muted)]/20 border border-dashed border-[var(--card-border)] space-y-1",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Metadata"}),(0,b.jsx)("div",{className:"space-y-1",children:Object.entries(a.metadata??{}).filter(([a])=>"undefined"!==a&&""!==a&&!k.has(a)).map(([a,c])=>(0,b.jsxs)("div",{className:"text-[12px] text-[var(--muted-foreground)] flex justify-between",children:[(0,b.jsx)("span",{className:"font-semibold",children:a}),(0,b.jsx)("span",{className:"truncate text-right",children:"string"==typeof c?c:JSON.stringify(c)})]},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[12px] uppercase tracking-wider text-[var(--muted-foreground)]",children:"Folders"}),(0,b.jsx)("span",{className:"text-[12px] text-[var(--muted-foreground)]",children:g?`${a.repos.length} connected`:"Unlinked"})]}),g?(0,b.jsxs)("div",{className:"mt-3 space-y-2",children:[a.repos.slice(0,2).map(a=>(0,b.jsxs)("div",{className:"p-2 rounded-lg border border-[var(--card-border)] bg-[var(--background)] text-[11px]",children:[(0,b.jsx)("div",{className:"font-semibold truncate",children:a.name}),a.path&&(0,b.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:a.path})]},a.id)),a.repos.length>2&&(0,b.jsxs)("p",{className:"text-[10px] text-center text-[var(--muted-foreground)]",children:["+ ",a.repos.length-2," more"]})]}):(0,b.jsx)("p",{className:"mt-3 text-[12px] text-[var(--muted-foreground)]",children:"No folders added yet."})]})]})}var m=a.i(188834),n=a.i(197180);let
|
|
2
|
+
${e?"cursor-pointer hover:border-gray-300 dark:hover:border-gray-700 hover:shadow-md active:scale-[0.99]":""}`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-lg font-semibold",children:a.name}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] tracking-wide uppercase",children:a.slug})]}),(0,b.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,b.jsxs)("span",{className:"text-[11px] font-semibold text-[var(--muted-foreground)]",children:["Updated ",new Date(a.updated_at).toLocaleDateString()]}),(c||d||f)&&(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[f&&(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),f(a)},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"}),c&&(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),c(a)},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"}),d&&(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),d(a)},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"})]})]})]}),a.description&&(0,b.jsx)("p",{className:"text-sm text-[var(--foreground)] line-clamp-2",children:a.description}),a.ci_cd_info&&(0,b.jsxs)("div",{className:"text-sm",children:[(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] text-[12px] uppercase tracking-wide",children:"CI / CD"}),(0,b.jsx)("p",{className:"text-[14px] text-[var(--accent)] font-medium truncate",children:a.ci_cd_info})]}),a.metadata&&Object.keys(a.metadata).some(a=>!k.has(a))&&(0,b.jsxs)("div",{className:"p-3 rounded-lg bg-[var(--muted)]/20 border border-dashed border-[var(--card-border)] space-y-1",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Metadata"}),(0,b.jsx)("div",{className:"space-y-1",children:Object.entries(a.metadata??{}).filter(([a])=>"undefined"!==a&&""!==a&&!k.has(a)).map(([a,c])=>(0,b.jsxs)("div",{className:"text-[12px] text-[var(--muted-foreground)] flex justify-between",children:[(0,b.jsx)("span",{className:"font-semibold",children:a}),(0,b.jsx)("span",{className:"truncate text-right",children:"string"==typeof c?c:JSON.stringify(c)})]},a))})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[12px] uppercase tracking-wider text-[var(--muted-foreground)]",children:"Folders"}),(0,b.jsx)("span",{className:"text-[12px] text-[var(--muted-foreground)]",children:g?`${a.repos.length} connected`:"Unlinked"})]}),g?(0,b.jsxs)("div",{className:"mt-3 space-y-2",children:[a.repos.slice(0,2).map(a=>(0,b.jsxs)("div",{className:"p-2 rounded-lg border border-[var(--card-border)] bg-[var(--background)] text-[11px]",children:[(0,b.jsx)("div",{className:"font-semibold truncate",children:a.name}),a.path&&(0,b.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:a.path})]},a.id)),a.repos.length>2&&(0,b.jsxs)("p",{className:"text-[10px] text-center text-[var(--muted-foreground)]",children:["+ ",a.repos.length-2," more"]})]}):(0,b.jsx)("p",{className:"mt-3 text-[12px] text-[var(--muted-foreground)]",children:"No folders added yet."})]})]})}var m=a.i(188834),n=a.i(365370),o=a.i(197180);let p=[{value:"queued",label:"Queued",color:"var(--status-queued)",icon:"○"},{value:"in_progress",label:"In Progress",color:"var(--status-in-progress)",icon:"◑"},{value:"blocked",label:"Blocked",color:"var(--status-blocked)",icon:"⊘"},{value:"completed",label:"Done",color:"var(--status-completed)",icon:"●"},{value:"failed",label:"Failed",color:"var(--status-failed)",icon:"✕"}];function q({status:a,onStatusChange:d}){let[e,f]=(0,c.useState)(!1),[g,h]=(0,c.useState)(null),i=(0,c.useRef)(null),j=(0,c.useRef)(null),k=(0,c.useCallback)(()=>{if(!i.current)return;let a=i.current.getBoundingClientRect();h({top:a.bottom+4,left:a.left})},[]);(0,c.useEffect)(()=>{if(!e)return;k();let a=a=>{i.current&&!i.current.contains(a.target)&&j.current&&!j.current.contains(a.target)&&f(!1)};return document.addEventListener("pointerdown",a),()=>document.removeEventListener("pointerdown",a)},[e,k]),(0,c.useEffect)(()=>{f(!1)},[a]);let l=p.find(b=>b.value===a)||p[0],m="completed"===a,n="in_progress"===a;return(0,b.jsxs)("div",{className:"relative flex-shrink-0",ref:i,children:[(0,b.jsxs)("button",{type:"button",onClick:a=>{a.stopPropagation(),d&&f(!e)},className:`w-4 h-4 rounded-full border-[1.5px] flex items-center justify-center transition-all
|
|
3
3
|
hover:scale-110 focus-visible:outline-2 focus-visible:outline-[var(--ring)]
|
|
4
4
|
${d?"cursor-pointer":"cursor-default"}
|
|
5
|
-
${
|
|
6
|
-
`,style:{borderColor:l.color,backgroundColor:m?l.color:"transparent"},title:l.label,children:[m&&(0,b.jsx)("svg",{className:"w-2.5 h-2.5 text-white",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"failed"===a&&(0,b.jsx)("svg",{className:"w-2 h-2",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M3 3L9 9M9 3L3 9",stroke:l.color,strokeWidth:"1.5",strokeLinecap:"round"})}),
|
|
5
|
+
${n?"animate-pulse":""}
|
|
6
|
+
`,style:{borderColor:l.color,backgroundColor:m?l.color:"transparent"},title:l.label,children:[m&&(0,b.jsx)("svg",{className:"w-2.5 h-2.5 text-white",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"failed"===a&&(0,b.jsx)("svg",{className:"w-2 h-2",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M3 3L9 9M9 3L3 9",stroke:l.color,strokeWidth:"1.5",strokeLinecap:"round"})}),n&&(0,b.jsx)("div",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:l.color}})]}),e&&g&&(0,o.createPortal)((0,b.jsx)("div",{ref:j,className:"fixed z-[9999] py-1 rounded-lg border shadow-lg min-w-[140px]",style:{top:g.top,left:g.left,backgroundColor:"var(--card-bg)",borderColor:"var(--card-border)"},children:p.map(c=>{let e=c.value===a;return(0,b.jsxs)("button",{type:"button",className:`w-full flex items-center gap-2 px-3 py-1.5 text-xs text-left transition-colors
|
|
7
7
|
hover:bg-[var(--item-hover-bg)]
|
|
8
8
|
${e?"font-semibold bg-[var(--item-hover-bg)]":""}
|
|
9
|
-
`,onClick:a=>{a.stopPropagation(),d?.(c.value),f(!1)},children:[(0,b.jsxs)("span",{className:"w-3 h-3 rounded-full border-[1.5px] flex items-center justify-center",style:{borderColor:c.color,backgroundColor:"completed"===c.value?c.color:"transparent"},children:["completed"===c.value&&(0,b.jsx)("svg",{className:"w-2 h-2 text-white",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"failed"===c.value&&(0,b.jsx)("svg",{className:"w-1.5 h-1.5",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M3 3L9 9M9 3L3 9",stroke:c.color,strokeWidth:"1.5",strokeLinecap:"round"})}),"in_progress"===c.value&&(0,b.jsx)("div",{className:"w-1 h-1 rounded-full",style:{backgroundColor:c.color}})]}),(0,b.jsx)("span",{style:{color:e?c.color:void 0},children:c.label}),e&&(0,b.jsx)("svg",{className:"w-3 h-3 ml-auto",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M2 6L5 9L10 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]},c.value)})}),document.body)]})}var
|
|
9
|
+
`,onClick:a=>{a.stopPropagation(),d?.(c.value),f(!1)},children:[(0,b.jsxs)("span",{className:"w-3 h-3 rounded-full border-[1.5px] flex items-center justify-center",style:{borderColor:c.color,backgroundColor:"completed"===c.value?c.color:"transparent"},children:["completed"===c.value&&(0,b.jsx)("svg",{className:"w-2 h-2 text-white",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),"failed"===c.value&&(0,b.jsx)("svg",{className:"w-1.5 h-1.5",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M3 3L9 9M9 3L3 9",stroke:c.color,strokeWidth:"1.5",strokeLinecap:"round"})}),"in_progress"===c.value&&(0,b.jsx)("div",{className:"w-1 h-1 rounded-full",style:{backgroundColor:c.color}})]}),(0,b.jsx)("span",{style:{color:e?c.color:void 0},children:c.label}),e&&(0,b.jsx)("svg",{className:"w-3 h-3 ml-auto",viewBox:"0 0 12 12",fill:"none",children:(0,b.jsx)("path",{d:"M2 6L5 9L10 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]},c.value)})}),document.body)]})}var r=a.i(553893);let s=new Map,t=new Map;async function u(a){let b=s.get(a);if(void 0!==b)return b;let c=t.get(a);if(c)return c;let d=(async()=>{let b=await fetch(`/api/tasks/${a}/graph`,{method:"GET",cache:"no-store"});if(404===b.status)return s.set(a,null),null;let c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c?.error||`Failed to fetch graph summary (${b.status})`);let d=c?.graph??null,e=d?(0,r.buildGraphSummary)(d):null;return s.set(a,e),e})();t.set(a,d);try{return await d}finally{t.delete(a)}}let v={queued:{className:"badge-status-queued",label:"Queued",dotColor:"bg-[var(--status-queued)]"},in_progress:{className:"badge-status-in_progress",label:"In Progress",dotColor:"bg-[var(--status-in-progress)]"},blocked:{className:"badge-status-blocked",label:"Blocked",dotColor:"bg-[var(--status-blocked)]"},completed:{className:"badge-status-completed",label:"Completed",dotColor:"bg-[var(--status-completed)]"},failed:{className:"badge-status-failed",label:"Failed",dotColor:"bg-[var(--status-failed)]"}},w={INTAKE:{icon:"📥",label:"Intake"},PROGRESS:{icon:"🔄",label:"Progress"},DONE:{icon:"✅",label:"Done"}};function x({task:a,onClick:d,compact:e=!1,onStatusChange:f,onApprovalModeChange:g,onStageChange:h,stageOptions:i,currentStage:j,allTasks:k,relationship:l="none"}){v[a.status||"queued"],a.stage&&w[a.stage];let{summary:m,isLoading:n}=function(a){let b=(0,c.useMemo)(()=>a?s.get(a)??null:null,[a]),[d,e]=(0,c.useState)(b),[f,g]=(0,c.useState)(!!a&&null===b),[h,i]=(0,c.useState)(null),j=(0,c.useCallback)(async()=>{if(!a){e(null),i(null),g(!1);return}g(!0),i(null);try{let b=await u(a);e(b)}catch(a){i(a instanceof Error?a.message:"Failed to fetch graph summary"),e(null)}finally{g(!1)}},[a]);return(0,c.useEffect)(()=>{j()},[j]),{summary:d,isLoading:f,error:h,refresh:j}}("draft"!==a.id?a.id:null),o=j??a.stage,p=o&&i?i.indexOf(o):-1,r=p>0&&i?i[p-1]:null,t=p>=0&&i&&p<i.length-1?i[p+1]:null,x=a.depends_on?.length?a.depends_on.map(a=>{let b=k?.find(b=>b.id===a);return{id:a,title:b?.title||a.slice(0,8),done:b?.status==="completed"}}):null;return x&&x.every(a=>a.done),(0,b.jsxs)("div",{onClick:d,role:"button",tabIndex:0,onKeyDown:a=>"Enter"===a.key&&d?.(),className:`group relative flex flex-col gap-1.5 sm:gap-2 p-2 sm:p-3 surface-card cursor-grab active:cursor-grabbing
|
|
10
10
|
focus-visible:outline-2 focus-visible:outline-[var(--ring)] focus-visible:outline-offset-2
|
|
11
11
|
${"active"===l?"border-primary ring-2 ring-primary/20 z-40":"blocking"===l?"border-[var(--status-blocked)] bg-rose-50/30 dark:bg-rose-950/20 z-20":"dependent"===l?"border-[var(--status-in-progress)] bg-blue-50/30 dark:bg-blue-950/20 z-20":"dimmed"===l?"opacity-40 grayscale scale-[0.98]":""}
|
|
12
12
|
${"failed"===a.status&&"none"===l?"border-red-200 bg-red-50/30 dark:bg-red-950/20":""}
|
|
13
13
|
${"completed"===a.status&&"none"===l?"opacity-75 bg-[var(--secondary)]":""}
|
|
14
14
|
`,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,b.jsxs)("h3",{className:`text-sm font-medium text-[var(--foreground)] leading-snug line-clamp-2 sm:line-clamp-3
|
|
15
15
|
${"completed"===a.status?"text-[var(--muted-foreground)] line-through":""}
|
|
16
|
-
`,children:[a.identifier?(0,b.jsx)("span",{className:"mr-1.5 inline-block rounded bg-[var(--secondary)] px-1.5 py-0.5 align-middle font-mono text-[10px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:a.identifier}):null,a.title||"Untitled Task"]}),(0,b.jsx)("div",{className:"shrink-0 mt-0.5",children:(0,b.jsx)(p,{status:a.status||"queued",onStatusChange:f})})]}),(0,b.jsx)("div",{className:"flex items-center justify-between min-h-[16px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)] flex-wrap",children:[void 0!==a.priority&&a.priority>0&&(0,b.jsxs)("span",{className:`px-1.5 py-0.5 rounded font-semibold bg-[var(--secondary)] ${0===a.priority?"text-[var(--primary)]":""}`,children:["P",a.priority]}),g&&("auto"===a.approval_mode?(0,b.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:a=>{a.stopPropagation(),g("manual")},children:"AUTO"}):(0,b.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:a=>{a.stopPropagation(),g("auto")},children:"AUTO"})),"draft"!==a.id&&!a.identifier&&(0,b.jsx)("span",{className:"opacity-0 group-hover:opacity-100 transition-opacity font-mono text-[9px]",children:a.id.slice(0,5)})]})}),h&&o&&(s||w)?(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[s?(0,b.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:a=>{a.stopPropagation(),h(s)},children:["Back to ",s]}):null,w?(0,b.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:a=>{a.stopPropagation(),h(w)},children:["Move to ",w]}):null]}):null]})}let x={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 y({tasks:a,onSelectTask:c,onStatusChange:d}){if(0===a.length)return(0,b.jsxs)("div",{className:"text-center py-20 animate-fade-in",children:[(0,b.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,b.jsx)("span",{className:"text-3xl",children:"📋"})}),(0,b.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No tasks yet"}),(0,b.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 e=a.filter(a=>"in_progress"===a.status),f=a.filter(a=>"queued"===a.status),g=a.filter(a=>"blocked"===a.status),h=a.filter(a=>"completed"===a.status||"failed"===a.status),i=(a,e)=>{if(0===e.length)return null;let f=x[a];return(0,b.jsxs)("section",{className:"mb-8 animate-fade-in-up",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg",style:{backgroundColor:`color-mix(in srgb, ${f.color} 10%, transparent)`},children:[(0,b.jsx)("span",{className:"text-lg",children:f.icon}),(0,b.jsx)("h3",{className:"text-sm font-semibold",style:{color:f.color},children:f.title}),(0,b.jsx)("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{backgroundColor:`color-mix(in srgb, ${f.color} 15%, transparent)`,color:f.color},children:e.length})]}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] hidden sm:block",children:f.description})]}),(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:e.map((a,e)=>(0,b.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*e}ms`},children:(0,b.jsx)(w,{task:a,onClick:()=>c?.(a),onStatusChange:d?b=>d(a.id,b):void 0})},a.id))})]})};return(0,b.jsxs)("div",{children:[i("in_progress",e),i("blocked",g),i("queued",f),i("completed",h)]})}let z={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};var A=a.i(830284);function B(){let a=(0,d.useRouter)(),e=(0,d.useSearchParams)(),{projects:f,isLoading:g,error:h,refetch:j,createProject:k,updateProject:n,deleteProject:o}=(0,A.useProjects)(),p=(0,m.useProjectFormState)(),[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),{form:w,repos:x,handleRepoChange:y,addRepo:z,removeRepo:B,resetForm:D,hydrateFromProject:E,isSubmitting:F,setIsSubmitting:G,formError:H,setFormError:I,setForm:J}=p,K=()=>{r(null),D(),t(!0)},L=a=>{r(a),E(a),t(!0)};(0,c.useEffect)(()=>{let a=e.get("edit");if(!a||0===f.length||s)return;let b=f.find(b=>b.id===a);b&&L(b)},[e,f,s]),(0,c.useEffect)(()=>{"1"!==e.get("new")||s||(K(),a.replace("/projects"))},[e]);let M=(0,c.useCallback)(b=>{b.slug&&a.push(`/projects/${b.slug}`)},[a]),N=(0,c.useCallback)(a=>{v(a)},[]),O=(0,c.useCallback)(()=>{v(null)},[]),P=()=>{D(),t(!1),r(null),e.get("edit")&&a.replace("/projects")},Q=async()=>{if(!w.name.trim())return void I("Project name is required");let b=x.find(a=>a.name.trim()&&!a.path.trim());if(b)return void I(`Local path is required for folder "${b.name}"`);I(null),G(!0);let c=(0,m.createProjectPayload)(w,x);try{if(q)await n(q.id,c),P();else{let b=await k(c);P(),a.push(`/projects/${b.slug}`)}}catch(a){I(a instanceof Error?a.message:"Failed to save project")}finally{G(!1)}},R=async a=>{if(window.confirm(`Delete project "${a.name}"? This cannot be undone.`))try{await o(a.id)}catch(a){alert(a instanceof Error?a.message:"Failed to delete project")}};return(0,b.jsx)(i,{children:(0,b.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex flex-col min-h-full",children:[(0,b.jsxs)("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-8",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] mt-1",children:"Manage your projects and their folder contexts."})]}),(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)("button",{onClick:j,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,b.jsx)("button",{onClick:K,className:"btn-primary px-6 py-2 shadow-lg shadow-[var(--primary)]/20",children:"+ New Project"})]})]}),g?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center py-20",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] animate-pulse",children:"Loading projects..."})]})}):0===f.length?(0,b.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center py-20 animate-fade-in",children:[(0,b.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,b.jsx)("h2",{className:"text-2xl font-bold mb-2",children:"You have no projects"}),(0,b.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,b.jsx)("button",{onClick:K,className:"btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20",children:"Create a Project"})]}):(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 pb-20",children:f.map(a=>(0,b.jsx)(l,{project:a,onEdit:L,onDelete:R,onManageTasks:N,onClick:M},a.id))}),(0,b.jsx)(m.default,{isOpen:s,onClose:P,onSubmit:Q,editingProject:q,form:w,repos:x,isSubmitting:F,formError:H,onFieldChange:(a,b)=>J(c=>({...c,[a]:b})),onRepoChange:y,onAddRepo:z,onRemoveRepo:B}),u&&(0,b.jsx)(C,{project:u,onClose:O})]})})}function C({project:a,onClose:d}){let{tasks:e,isLoading:f}=function(a={}){let b="1"===process.env.NEXT_PUBLIC_AGX_BOARD_DISABLE_AUTH,d=a.project,e=a.status,f=a.orphan,g=a.realtime,[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(!0),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(null),r=(0,c.useCallback)(a=>{if(!a)return[];if(Array.isArray(a))return Array.from(new Set(a.map(a=>String(a||"").trim()).filter(Boolean)));if("string"==typeof a){let b=a.trim();if(!b)return[];try{let a=JSON.parse(b);if(Array.isArray(a))return Array.from(new Set(a.map(a=>String(a||"").trim()).filter(Boolean)))}catch{}return Array.from(new Set(b.split(",").map(a=>a.trim()).filter(Boolean)))}return[]},[]),s=(0,c.useCallback)(a=>{let b=String(a||"").match(/^---\n([\s\S]*?)\n---\n?/);if(!b)return[];let c=b[1].split("\n").find(a=>a.trim().toLowerCase().startsWith("depends_on:"));return c?r(c.slice(c.indexOf(":")+1).trim()):[]},[r]),t=(0,c.useCallback)((a,b)=>{let c=r(a.depends_on);if(c.length>0)return{...a,depends_on:c};let d="string"==typeof a?.content?s(a.content):[];if(d.length>0)return{...a,depends_on:d};let e=r(b?.depends_on);return e.length>0?{...a,depends_on:e}:a},[s,r]),u=(0,c.useCallback)(async()=>{try{let a=new URLSearchParams;d&&a.set("project",d),e&&a.set("status",e),f&&a.set("orphan","1");let b=await fetch(`/api/tasks?${a.toString()}`);if(!b.ok)throw Error("Failed to fetch tasks");let c=await b.json(),g=Array.isArray(c.tasks)?c.tasks.map(a=>t(a)):[];i(g),m(null)}catch(a){m(a instanceof Error?a:Error("Unknown error"))}finally{k(!1)}},[d,e,f]);(0,c.useEffect)(()=>{u()},[u]),(0,c.useEffect)(()=>{if(!b||!g)return;let a=setInterval(u,3e3);return()=>clearInterval(a)},[b,g,u]),(0,c.useEffect)(()=>{if(b||!g)return;let a={auth:{getSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600,user:{id:z.id,email:z.email,user_metadata:{name:z.name,full_name:z.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(){}},c=a.channel("tasks-changes").on("postgres_changes",{event:"*",schema:"public",table:"tasks"},a=>{"INSERT"===a.eventType?i(b=>{let c=t(a.new);return b.some(a=>a.id===c.id)?b:[c,...b]}):"UPDATE"===a.eventType?i(b=>b.map(b=>b.id===a.new.id?t(a.new,b):b)):"DELETE"===a.eventType&&i(b=>b.filter(b=>b.id!==a.old.id))}).subscribe();return()=>{a.removeChannel(c)}},[g,b]),(0,c.useEffect)(()=>{if(b||!g)return;let a=setInterval(u,3e3);return()=>clearInterval(a)},[g,b,u]);let v=(0,c.useCallback)(async(a,b)=>{let c=await fetch("/api/tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:a,swarm_models:b})});if(!c.ok)throw Error((await c.json()).error||"Failed to create task");let{task:d}=await c.json(),e=t(d);return i(a=>a.some(a=>a.id===e.id)?a:[e,...a]),e},[a.realtime,t]),w=(0,c.useCallback)(async(a,b)=>{let c=await fetch(`/api/tasks/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok){let a=null;throw"function"==typeof c.json&&(a=await c.json().catch(a=>(console.warn("[useTasks] failed to parse response:",a),null))),Error(a?.error||a?.details||`Failed to update task (${c.status} ${c.statusText||"Error"})`)}let{task:d}=await c.json();return i(b=>b.map(b=>b.id===a?t({...b,...d},b):b)),t(d)},[a.realtime,t]),x=(0,c.useCallback)(async a=>{if(!(await fetch(`/api/tasks/${a}`,{method:"DELETE"})).ok)throw Error("Failed to delete task");i(b=>b.filter(b=>b.id!==a))},[a.realtime]),y=(0,c.useCallback)(async a=>{let b=await fetch("/api/queue/complete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to complete task stage");let{task:c}=await b.json();return i(b=>b.map(b=>b.id===a.taskId?t({...b,...c},b):b)),t(c)},[a.realtime,t]),A=(0,c.useCallback)(async a=>{o(a.taskId),q(null);try{let b=await fetch(`/api/orchestrator/tasks/${a.taskId}/cancel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a.reason?{reason:a.reason}:{})});if(!b.ok){let a=await b.json().catch(()=>({})),c=a?.error||"Failed to cancel workflow";throw Error(c)}return b.json()}catch(b){let a=b instanceof Error?b:Error("Failed to cancel workflow");throw q(a),a}finally{o(null)}},[]),B=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}`),c=await b.json().catch(a=>(console.warn("[useTasks] failed to parse response:",a),null));if(!b.ok)throw Error(c?.error||"Failed to fetch task details");return t(c?.task)},[t]),C=(0,c.useCallback)(async a=>{let b=await fetch("/api/tasks/assign-orphans",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_id:a})}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c?.error||"Failed to assign orphan tasks");return await u(),{updatedCount:Number(c?.updatedCount||0),taskIds:Array.isArray(c?.taskIds)?c.taskIds:[]}},[u]);return{tasks:h,isLoading:j,error:l,cancellingTaskId:n,isCancelling:!!n,cancelError:p,refetch:u,createTask:v,updateTask:w,deleteTask:x,completeTaskStage:y,cancelWorkflow:A,fetchTask:B,assignOrphanTasksToProject:C}}({project:a.slug});return(0,b.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:a=>a.target===a.currentTarget&&d(),children:(0,b.jsxs)("div",{className:"modal-content w-full max-w-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,b.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-xl font-bold",children:["Tasks for ",a.name]}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:"Viewing all tasks associated with this project."})]}),(0,b.jsx)("button",{onClick:d,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,b.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-8",children:f?(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-20",children:[(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full mb-4"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading project tasks..."})]}):(0,b.jsx)(y,{tasks:e})}),(0,b.jsx)("div",{className:"px-8 py-6 border-t border-[var(--card-border)] flex justify-end flex-shrink-0",children:(0,b.jsx)("button",{onClick:d,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Close"})})]})})}a.s(["default",()=>B],984806)}];
|
|
16
|
+
`,children:[a.identifier?(0,b.jsx)("span",{className:"mr-1.5 inline-block rounded bg-[var(--secondary)] px-1.5 py-0.5 align-middle font-mono text-[10px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:a.identifier}):null,a.title||"Untitled Task"]}),(0,b.jsx)("div",{className:"shrink-0 mt-0.5",children:(0,b.jsx)(q,{status:a.status||"queued",onStatusChange:f})})]}),(0,b.jsx)("div",{className:"flex items-center justify-between min-h-[16px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)] flex-wrap",children:[void 0!==a.priority&&a.priority>0&&(0,b.jsxs)("span",{className:`px-1.5 py-0.5 rounded font-semibold bg-[var(--secondary)] ${0===a.priority?"text-[var(--primary)]":""}`,children:["P",a.priority]}),g&&("auto"===a.approval_mode?(0,b.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:a=>{a.stopPropagation(),g("manual")},children:"AUTO"}):(0,b.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:a=>{a.stopPropagation(),g("auto")},children:"AUTO"})),"draft"!==a.id&&!a.identifier&&(0,b.jsx)("span",{className:"opacity-0 group-hover:opacity-100 transition-opacity font-mono text-[9px]",children:a.id.slice(0,5)})]})}),h&&o&&(r||t)?(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[r?(0,b.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:a=>{a.stopPropagation(),h(r)},children:["Back to ",r]}):null,t?(0,b.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:a=>{a.stopPropagation(),h(t)},children:["Move to ",t]}):null]}):null]})}let y={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 z({tasks:a,onSelectTask:c,onStatusChange:d}){if(0===a.length)return(0,b.jsxs)("div",{className:"text-center py-20 animate-fade-in",children:[(0,b.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,b.jsx)("span",{className:"text-3xl",children:"📋"})}),(0,b.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No tasks yet"}),(0,b.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 e=a.filter(a=>"in_progress"===a.status),f=a.filter(a=>"queued"===a.status),g=a.filter(a=>"blocked"===a.status),h=a.filter(a=>"completed"===a.status||"failed"===a.status),i=(a,e)=>{if(0===e.length)return null;let f=y[a];return(0,b.jsxs)("section",{className:"mb-8 animate-fade-in-up",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg",style:{backgroundColor:`color-mix(in srgb, ${f.color} 10%, transparent)`},children:[(0,b.jsx)("span",{className:"text-lg",children:f.icon}),(0,b.jsx)("h3",{className:"text-sm font-semibold",style:{color:f.color},children:f.title}),(0,b.jsx)("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium",style:{backgroundColor:`color-mix(in srgb, ${f.color} 15%, transparent)`,color:f.color},children:e.length})]}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] hidden sm:block",children:f.description})]}),(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:e.map((a,e)=>(0,b.jsx)("div",{className:"animate-fade-in-up",style:{animationDelay:`${50*e}ms`},children:(0,b.jsx)(x,{task:a,onClick:()=>c?.(a),onStatusChange:d?b=>d(a.id,b):void 0})},a.id))})]})};return(0,b.jsxs)("div",{children:[i("in_progress",e),i("blocked",g),i("queued",f),i("completed",h)]})}let A={id:"2c3cc1ca-956d-4b62-b295-4d2d3374103f",email:process.env.AGX_BOARD_USER_EMAIL||"local@agx.board",name:process.env.AGX_BOARD_USER_NAME||"Local Board User"};var B=a.i(830284);function C(){let a=(0,d.useRouter)(),e=(0,d.useSearchParams)(),{projects:f,isLoading:g,error:h,refetch:j,createProject:k,updateProject:o,deleteProject:p}=(0,B.useProjects)(),q=(0,m.useProjectFormState)(),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useState)(null),{form:x,repos:y,handleRepoChange:z,addRepo:A,removeRepo:C,resetForm:E,hydrateFromProject:F,isSubmitting:G,setIsSubmitting:H,formError:I,setFormError:J,setForm:K}=q,L=()=>{s(null),E(),u(!0)},M=a=>{s(a),F(a),u(!0)};(0,c.useEffect)(()=>{let a=e.get("edit");if(!a||0===f.length||t)return;let b=f.find(b=>b.id===a);b&&M(b)},[e,f,t]),(0,c.useEffect)(()=>{"1"!==e.get("new")||t||(L(),a.replace("/projects"))},[e]);let N=(0,c.useCallback)(b=>{b.slug&&a.push(`/projects/${b.slug}`)},[a]),O=(0,c.useCallback)(a=>{w(a)},[]),P=(0,c.useCallback)(()=>{w(null)},[]),Q=()=>{E(),u(!1),s(null),e.get("edit")&&a.replace("/projects")},R=async()=>{if(!x.name.trim())return void J("Project name is required");let b=(0,n.findInvalidProjectRepoDraft)(y);if(b)return void J((0,n.formatInvalidProjectRepoDraftMessage)(b));J(null),H(!0);let c=(0,m.createProjectPayload)(x,y);try{if(r)await o(r.id,c),Q();else{let b=await k(c);Q(),a.push(`/projects/${b.slug}`)}}catch(a){J(a instanceof Error?a.message:"Failed to save project")}finally{H(!1)}},S=async a=>{if(window.confirm(`Delete project "${a.name}"? This cannot be undone.`))try{await p(a.id)}catch(a){alert(a instanceof Error?a.message:"Failed to delete project")}};return(0,b.jsx)(i,{children:(0,b.jsxs)("div",{className:"max-w-7xl mx-auto w-full flex flex-col min-h-full",children:[(0,b.jsxs)("header",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 py-8",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] mt-1",children:"Manage your projects and their folder contexts."})]}),(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)("button",{onClick:j,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,b.jsx)("button",{onClick:L,className:"btn-primary px-6 py-2 shadow-lg shadow-[var(--primary)]/20",children:"+ New Project"})]})]}),g?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center py-20",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] animate-pulse",children:"Loading projects..."})]})}):0===f.length?(0,b.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center py-20 animate-fade-in",children:[(0,b.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,b.jsx)("h2",{className:"text-2xl font-bold mb-2",children:"You have no projects"}),(0,b.jsx)("p",{className:"text-[var(--muted-foreground)] text-center max-w-sm mb-8 leading-relaxed",children:"Create your first project to connect your tickets, repos, and agent teams — and start shipping PRs."}),(0,b.jsx)("button",{onClick:L,className:"btn-primary px-8 py-3 text-lg shadow-xl shadow-[var(--primary)]/20",children:"Create a Project"})]}):(0,b.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 pb-20",children:f.map(a=>(0,b.jsx)(l,{project:a,onEdit:M,onDelete:S,onManageTasks:O,onClick:N},a.id))}),(0,b.jsx)(m.default,{isOpen:t,onClose:Q,onSubmit:R,editingProject:r,form:x,repos:y,isSubmitting:G,formError:I,onFieldChange:(a,b)=>K(c=>({...c,[a]:b})),onRepoChange:z,onAddRepo:A,onRemoveRepo:C}),v&&(0,b.jsx)(D,{project:v,onClose:P})]})})}function D({project:a,onClose:d}){let{tasks:e,isLoading:f}=function(a={}){let b="1"===process.env.NEXT_PUBLIC_AGX_BOARD_DISABLE_AUTH,d=a.project,e=a.status,f=a.orphan,g=a.realtime,[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(!0),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(null),r=(0,c.useCallback)(a=>{if(!a)return[];if(Array.isArray(a))return Array.from(new Set(a.map(a=>String(a||"").trim()).filter(Boolean)));if("string"==typeof a){let b=a.trim();if(!b)return[];try{let a=JSON.parse(b);if(Array.isArray(a))return Array.from(new Set(a.map(a=>String(a||"").trim()).filter(Boolean)))}catch{}return Array.from(new Set(b.split(",").map(a=>a.trim()).filter(Boolean)))}return[]},[]),s=(0,c.useCallback)(a=>{let b=String(a||"").match(/^---\n([\s\S]*?)\n---\n?/);if(!b)return[];let c=b[1].split("\n").find(a=>a.trim().toLowerCase().startsWith("depends_on:"));return c?r(c.slice(c.indexOf(":")+1).trim()):[]},[r]),t=(0,c.useCallback)((a,b)=>{let c=r(a.depends_on);if(c.length>0)return{...a,depends_on:c};let d="string"==typeof a?.content?s(a.content):[];if(d.length>0)return{...a,depends_on:d};let e=r(b?.depends_on);return e.length>0?{...a,depends_on:e}:a},[s,r]),u=(0,c.useCallback)(async()=>{try{let a=new URLSearchParams;d&&a.set("project",d),e&&a.set("status",e),f&&a.set("orphan","1");let b=await fetch(`/api/tasks?${a.toString()}`);if(!b.ok)throw Error("Failed to fetch tasks");let c=await b.json(),g=Array.isArray(c.tasks)?c.tasks.map(a=>t(a)):[];i(g),m(null)}catch(a){m(a instanceof Error?a:Error("Unknown error"))}finally{k(!1)}},[d,e,f]);(0,c.useEffect)(()=>{u()},[u]),(0,c.useEffect)(()=>{if(!b||!g)return;let a=setInterval(u,3e3);return()=>clearInterval(a)},[b,g,u]),(0,c.useEffect)(()=>{if(b||!g)return;let a={auth:{getSession:async()=>({data:{session:{access_token:"local-token",refresh_token:"local-refresh",expires_in:3600,user:{id:A.id,email:A.email,user_metadata:{name:A.name,full_name:A.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(){}},c=a.channel("tasks-changes").on("postgres_changes",{event:"*",schema:"public",table:"tasks"},a=>{"INSERT"===a.eventType?i(b=>{let c=t(a.new);return b.some(a=>a.id===c.id)?b:[c,...b]}):"UPDATE"===a.eventType?i(b=>b.map(b=>b.id===a.new.id?t(a.new,b):b)):"DELETE"===a.eventType&&i(b=>b.filter(b=>b.id!==a.old.id))}).subscribe();return()=>{a.removeChannel(c)}},[g,b]),(0,c.useEffect)(()=>{if(b||!g)return;let a=setInterval(u,3e3);return()=>clearInterval(a)},[g,b,u]);let v=(0,c.useCallback)(async(a,b)=>{let c=await fetch("/api/tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:a,swarm_models:b})});if(!c.ok)throw Error((await c.json()).error||"Failed to create task");let{task:d}=await c.json(),e=t(d);return i(a=>a.some(a=>a.id===e.id)?a:[e,...a]),e},[a.realtime,t]),w=(0,c.useCallback)(async(a,b)=>{let c=await fetch(`/api/tasks/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok){let a=null;throw"function"==typeof c.json&&(a=await c.json().catch(a=>(console.warn("[useTasks] failed to parse response:",a),null))),Error(a?.error||a?.details||`Failed to update task (${c.status} ${c.statusText||"Error"})`)}let{task:d}=await c.json();return i(b=>b.map(b=>b.id===a?t({...b,...d},b):b)),t(d)},[a.realtime,t]),x=(0,c.useCallback)(async a=>{if(!(await fetch(`/api/tasks/${a}`,{method:"DELETE"})).ok)throw Error("Failed to delete task");i(b=>b.filter(b=>b.id!==a))},[a.realtime]),y=(0,c.useCallback)(async a=>{let b=await fetch("/api/queue/complete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to complete task stage");let{task:c}=await b.json();return i(b=>b.map(b=>b.id===a.taskId?t({...b,...c},b):b)),t(c)},[a.realtime,t]),z=(0,c.useCallback)(async a=>{o(a.taskId),q(null);try{let b=await fetch(`/api/orchestrator/tasks/${a.taskId}/cancel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a.reason?{reason:a.reason}:{})});if(!b.ok){let a=await b.json().catch(()=>({})),c=a?.error||"Failed to cancel workflow";throw Error(c)}return b.json()}catch(b){let a=b instanceof Error?b:Error("Failed to cancel workflow");throw q(a),a}finally{o(null)}},[]),B=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}`),c=await b.json().catch(a=>(console.warn("[useTasks] failed to parse response:",a),null));if(!b.ok)throw Error(c?.error||"Failed to fetch task details");return t(c?.task)},[t]),C=(0,c.useCallback)(async a=>{let b=await fetch("/api/tasks/assign-orphans",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_id:a})}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c?.error||"Failed to assign orphan tasks");return await u(),{updatedCount:Number(c?.updatedCount||0),taskIds:Array.isArray(c?.taskIds)?c.taskIds:[]}},[u]);return{tasks:h,isLoading:j,error:l,cancellingTaskId:n,isCancelling:!!n,cancelError:p,refetch:u,createTask:v,updateTask:w,deleteTask:x,completeTaskStage:y,cancelWorkflow:z,fetchTask:B,assignOrphanTasksToProject:C}}({project:a.slug});return(0,b.jsx)("div",{className:"modal-backdrop p-2 sm:p-4 z-50 overflow-y-auto flex items-center justify-center",onClick:a=>a.target===a.currentTarget&&d(),children:(0,b.jsxs)("div",{className:"modal-content w-full max-w-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,b.jsxs)("div",{className:"px-4 py-4 sm:px-8 sm:py-6 border-b border-[var(--card-border)] flex items-center justify-between flex-shrink-0",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("h2",{className:"text-xl font-bold",children:["Tasks for ",a.name]}),(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5",children:"Viewing all tasks associated with this project."})]}),(0,b.jsx)("button",{onClick:d,className:"p-2 rounded-xl hover:bg-[var(--muted)]/50 transition-colors",children:(0,b.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-8",children:f?(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-20",children:[(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full mb-4"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading project tasks..."})]}):(0,b.jsx)(z,{tasks:e})}),(0,b.jsx)("div",{className:"px-8 py-6 border-t border-[var(--card-border)] flex justify-end flex-shrink-0",children:(0,b.jsx)("button",{onClick:d,className:"px-6 py-2 rounded-xl border border-[var(--card-border)] hover:bg-[var(--muted)]/50 transition-colors text-sm font-medium",children:"Close"})})]})})}a.s(["default",()=>C],984806)}];
|
|
17
17
|
|
|
18
18
|
//# sourceMappingURL=apps_local_app_projects_page_tsx_b5cec607._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[514760,a=>{"use strict";var b=a.i(308316),c=a.i(786220);function d(a){return null===a.installed?"checking":a.installed?!a.authenticated&&a.authCmd?"needs-auth":"ready":"not-installed"}let e=[{id:"claude",label:"Claude Code",bin:"claude",description:"Recommended for the fastest AGX setup.",installCmd:"npm install -g @anthropic-ai/claude-code",docsUrl:"https://docs.anthropic.com/en/docs/claude-code/quickstart",recommended:!0,statusLabel:"Installed",authCheck:{cmd:'claude -p "say yes" 2>/dev/null',timeout:15e3},authCmd:{cmd:"claude",description:"Opens browser for Anthropic login"}},{id:"codex",label:"Codex",bin:"codex",description:"OpenAI's terminal coding agent.",installCmd:"npm install -g @openai/codex",docsUrl:"https://github.com/openai/codex",statusLabel:"Installed",authCheck:{cmd:"codex --version 2>/dev/null",timeout:5e3},authCmd:{cmd:"codex login --device-auth",description:"Device auth flow for OpenAI"}},{id:"gemini",label:"Gemini CLI",bin:"gemini",description:"Google's CLI for Gemini workflows.",installCmd:"npm install -g @google/gemini-cli",docsUrl:"https://github.com/google-gemini/gemini-cli",statusLabel:"Installed",authCheck:{cmd:'echo "hi" | gemini 2>/dev/null',timeout:15e3},authCmd:{cmd:"gemini",description:"Opens browser for Google login"}},{id:"ollama",label:"Ollama",bin:"ollama",description:"Run local models on your machine.",installCmd:"curl -fsSL https://ollama.com/install.sh | sh",docsUrl:"https://ollama.com/download",statusLabel:"Installed",authCheck:{cmd:"ollama list 2>/dev/null",timeout:5e3}},{id:"zai",label:"Z.AI",bin:"claude",description:"Use the Claude CLI with your Z.AI API key.",installCmd:"npm install -g @anthropic-ai/claude-code",docsUrl:"https://z.ai/",installNote:"Requires Claude Code plus a configured Z.AI API key.",statusLabel:"Via Claude CLI",authCheck:{cmd:'test -n "$ANTHROPIC_API_KEY"',timeout:5e3},authCmd:{cmd:"export ANTHROPIC_API_KEY=<your-key>",description:"Set your Z.AI API key"}}].map(a=>({id:a.id,name:a.label,description:a.description,installCmd:a.installCmd,docsUrl:a.docsUrl,installNote:a.installNote,recommended:a.recommended,authCmd:a.authCmd}));var f=a.i(516909),g=a.i(627421),h=a.i(70887),i=a.i(804632),j=a.i(811760),k=a.i(356239),l=a.i(349692);function m({currentStep:a,totalSteps:c}){return(0,b.jsx)("div",{className:"flex items-center gap-0",role:"progressbar","aria-valuenow":a,"aria-valuemin":1,"aria-valuemax":c,"aria-label":`Step ${a} of ${c}`,children:Array.from({length:c},(c,d)=>{let e=d+1,f=e===a,g=e<a;return(0,b.jsxs)("div",{className:"flex items-center",children:[d>0&&(0,b.jsx)("div",{className:`w-8 h-[2px] ${g?"bg-[var(--foreground)]":"bg-[var(--border)]"}`}),(0,b.jsx)("div",{className:`w-2.5 h-2.5 rounded-full transition-colors ${f?"bg-[var(--foreground)] ring-4 ring-[var(--foreground)]/10":g?"bg-[var(--foreground)]":"bg-[var(--border)]"}`})]},e)})})}function n({currentStep:a,totalSteps:c,children:d,footer:e,wide:f}){let g=f?"max-w-6xl":"max-w-2xl";return(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col bg-[var(--background)]",children:[(0,b.jsx)("div",{className:"flex items-center justify-center pt-8 pb-4",children:(0,b.jsx)(m,{currentStep:a,totalSteps:c})}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-4 min-h-0",children:(0,b.jsx)("div",{className:`${g} mx-auto w-full py-6 h-full`,children:d})}),e&&(0,b.jsx)("div",{className:"border-t border-[var(--border)] bg-[var(--background)] px-4 py-4",children:(0,b.jsx)("div",{className:`${g} mx-auto w-full`,children:e})})]})}var o=a.i(303592);function p({text:a}){let[d,e]=(0,c.useState)(!1),f=(0,c.useCallback)(()=>{navigator.clipboard.writeText(a).then(()=>{e(!0),setTimeout(()=>e(!1),2e3)})},[a]);return(0,b.jsx)("button",{type:"button",onClick:f,className:"p-1.5 rounded-md hover:bg-[var(--muted)] transition-colors text-[var(--muted-foreground)] hover:text-[var(--foreground)]",title:"Copy command",children:d?(0,b.jsx)(g.Check,{className:"w-3.5 h-3.5 text-emerald-500"}):(0,b.jsx)(i.Copy,{className:"w-3.5 h-3.5"})})}function q({cli:a,onVerify:e,onRunInTerminal:f}){let i=d(a),[m,n]=(0,c.useState)("needs-auth"===i),[o,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(null),t="not-installed"===i||"needs-auth"===i,u=(0,c.useCallback)(async()=>{q(!0),s(null);try{let b=await fetch(`/api/providers/check/${a.id}`,{cache:"no-store"});if(!b.ok)return void s("Check failed");(await b.json()).authenticated?e?.(a.id):s("Not authenticated yet")}catch{s("Check failed")}finally{q(!1)}},[a.id,e]),v="not-installed"===i?a.installCmd:a.authCmd?.cmd;return(0,b.jsxs)("div",{className:"border border-[var(--card-border)] rounded-lg overflow-hidden",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>t&&n(!m),className:`w-full flex items-center gap-2.5 px-3 py-2 transition-colors text-left ${t?"hover:bg-[var(--item-hover-bg)] cursor-pointer":"cursor-default"}`,children:[(0,b.jsx)("div",{className:"shrink-0",children:"checking"===i?(0,b.jsx)(h.Circle,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)] animate-pulse"}):"ready"===i?(0,b.jsx)("div",{className:"w-4 h-4 rounded-full bg-emerald-100 dark:bg-emerald-900/30 flex items-center justify-center",children:(0,b.jsx)(g.Check,{className:"w-2.5 h-2.5 text-emerald-600 dark:text-emerald-400"})}):"needs-auth"===i?(0,b.jsx)("div",{className:"w-4 h-4 rounded-full bg-amber-100 dark:bg-amber-900/30 flex items-center justify-center",children:(0,b.jsx)(h.Circle,{className:"w-2.5 h-2.5 text-amber-600 dark:text-amber-400"})}):(0,b.jsx)(h.Circle,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"})}),(0,b.jsx)("span",{className:"flex-1 min-w-0 text-[13px] font-semibold text-[var(--foreground)] truncate",children:a.name}),"ready"===i&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-emerald-600 dark:text-emerald-400",children:"Ready"}),"needs-auth"===i&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-amber-600 dark:text-amber-400",children:"Needs auth"}),"not-installed"===i&&a.recommended&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-[var(--muted-foreground)]",children:"Recommended"}),t&&(0,b.jsx)(j.ChevronDown,{className:`w-3.5 h-3.5 text-[var(--muted-foreground)] transition-transform ${m?"rotate-180":""}`})]}),m&&t&&v&&(0,b.jsxs)("div",{className:"px-3 pb-2.5 pt-1 border-t border-[var(--card-border)] flex items-center gap-1.5",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>f?.(v),className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium rounded-md bg-[var(--foreground)] text-[var(--background)] hover:opacity-90 transition-colors",children:[(0,b.jsx)(k.Terminal,{className:"w-3 h-3"}),"Run"]}),"needs-auth"===i&&(0,b.jsxs)("button",{type:"button",onClick:u,disabled:o,className:"inline-flex items-center gap-1 px-2.5 py-1 text-[11px] font-medium rounded-md border border-[var(--card-border)] text-[var(--foreground)] hover:bg-[var(--secondary)] transition-colors disabled:opacity-60",children:[o&&(0,b.jsx)(l.Loader2,{className:"w-3 h-3 animate-spin"}),o?"Checking":"Verify"]}),(0,b.jsx)(p,{text:v}),r&&(0,b.jsx)("span",{className:"text-[10px] text-amber-600 dark:text-amber-400 ml-auto",children:r})]})]})}function r({clis:a,readyState:d,authenticatedCount:e,totalCount:f,onVerifySuccess:g,onNext:h}){let i="ready"===d,j=(0,c.useRef)(null),m=(0,c.useCallback)(a=>{j.current?.sendCommand(a)},[]);return(0,b.jsxs)(n,{currentStep:1,totalSteps:2,wide:!0,footer:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[13px] text-[var(--muted-foreground)]",children:(0,b.jsxs)("span",{className:i?"text-emerald-600 dark:text-emerald-400":"",children:[e,"/",f," providers ready"]})}),(0,b.jsx)("button",{type:"button",onClick:h,disabled:!i,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 disabled:opacity-40 disabled:cursor-not-allowed",children:"Next"})]}),children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-[24px] font-bold text-[var(--foreground)] tracking-tight",children:"Connect a Provider"}),(0,b.jsxs)("p",{className:"mt-2 text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:["AGX orchestrates AI agents across multiple providers.",(0,b.jsx)("br",{}),"Connect at least one to get started."]})]}),(0,b.jsxs)("div",{className:"flex gap-6 min-h-0 items-start",children:[(0,b.jsxs)("div",{className:"w-[280px] shrink-0",children:["checking"===d&&(0,b.jsxs)("div",{className:"text-center py-8",children:[(0,b.jsx)(l.Loader2,{className:"w-6 h-6 animate-spin text-[var(--muted-foreground)] mx-auto"}),(0,b.jsx)("p",{className:"mt-3 text-[13px] text-[var(--muted-foreground)]",children:"Detecting installed providers..."})]}),"error"===d&&(0,b.jsx)("div",{className:"text-center py-8",children:(0,b.jsx)("p",{className:"text-[14px] text-[var(--muted-foreground)]",children:"Could not detect providers. Please reload."})}),("needs-setup"===d||"ready"===d)&&(0,b.jsx)("div",{className:"space-y-1.5",children:a.map(a=>(0,b.jsx)(q,{cli:a,onVerify:g,onRunInTerminal:m},a.id))})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0 h-[420px] flex flex-col rounded-xl border border-[var(--card-border)] overflow-hidden bg-[#1e1e1e]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--secondary)] shrink-0",children:[(0,b.jsx)(k.Terminal,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Terminal"})]}),(0,b.jsx)("div",{className:"flex-1 min-h-0",children:(0,b.jsx)(o.default,{ref:j,tabId:"setup-provider"})})]})]})]})}var s=a.i(379065);let t=(0,a.i(831709).default)("plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]),u=[{id:"linear",name:"Linear",description:"Read and update tickets so agents can track work in Linear during execution.",docsUrl:"https://linear.app/docs/mcp"}],v=[{id:"claude",label:"Claude Code",launchCmd:"claude"},{id:"codex",label:"Codex",launchCmd:"codex"},{id:"gemini",label:"Gemini CLI",launchCmd:"gemini"}];function w({onFinish:a,onBack:d}){let[e,f]=(0,c.useState)(!0),[h,i]=(0,c.useState)({}),[j,m]=(0,c.useState)({}),[p,q]=(0,c.useState)(null),[r,w]=(0,c.useState)(null),x=(0,c.useRef)(null),y=(0,c.useCallback)(a=>{x.current?.sendCommand(a)},[]),z=(0,c.useCallback)(async()=>{try{let[a,b]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),c=await a.json(),d=await b.json();i(c.clis??{}),m(d.configured??{})}catch{}finally{f(!1)}},[]);(0,c.useEffect)(()=>{z()},[z]);let A=(0,c.useCallback)(async a=>{q(a),w(null);try{let b=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:a})});if(b.ok)await z();else{let a=await b.json().catch(()=>({}));w(a.error||"Failed to configure MCP")}}catch{w("Failed to configure MCP")}finally{q(null)}},[z]),B=v.filter(a=>h[a.id]),C=B.some(a=>j[a.id]);return(0,b.jsxs)(n,{currentStep:2,totalSteps:2,wide:!0,footer:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("button",{type:"button",onClick:d,className:"text-[14px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:"Back"}),(0,b.jsx)("button",{type:"button",onClick:a,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:C?"Finish":"Skip"})]}),children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-[24px] font-bold text-[var(--foreground)] tracking-tight",children:"Configure MCP Servers"}),(0,b.jsx)("p",{className:"mt-2 text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:"MCP servers let your agents interact with external tools. After registering a server below, launch your CLI in the terminal to complete the OAuth login."})]}),(0,b.jsxs)("div",{className:"flex gap-6 min-h-0 items-start",children:[(0,b.jsx)("div",{className:"w-[380px] shrink-0 space-y-6",children:e?(0,b.jsxs)("div",{className:"text-center py-8",children:[(0,b.jsx)(l.Loader2,{className:"w-6 h-6 animate-spin text-[var(--muted-foreground)] mx-auto"}),(0,b.jsx)("p",{className:"mt-3 text-[13px] text-[var(--muted-foreground)]",children:"Checking MCP configuration..."})]}):(0,b.jsxs)(b.Fragment,{children:[u.map(a=>(0,b.jsxs)("div",{className:"border border-[var(--card-border)] rounded-lg overflow-hidden",children:[(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3",children:[(0,b.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[var(--secondary)] flex items-center justify-center",children:(0,b.jsx)(t,{className:"w-4 h-4 text-[var(--foreground)]"})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[14px] font-semibold text-[var(--foreground)]",children:a.name}),C&&(0,b.jsx)("span",{className:"text-[11px] font-medium text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20 px-1.5 py-0.5 rounded",children:"Registered"})]}),(0,b.jsx)("p",{className:"text-[12px] text-[var(--muted-foreground)]",children:a.description})]})]}),(0,b.jsxs)("div",{className:"border-t border-[var(--card-border)] px-4 py-3 space-y-2",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] mb-2",children:"Register & authenticate per CLI"}),v.map(a=>{let c=h[a.id],d=j[a.id],e=p===a.id;return(0,b.jsxs)("div",{className:`flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2.5 ${!c?"opacity-40":""}`,children:[(0,b.jsx)("span",{className:"text-[13px] text-[var(--foreground)]",children:a.label}),c?d?(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-emerald-600 dark:text-emerald-400",children:[(0,b.jsx)(g.Check,{className:"w-3.5 h-3.5"}),"Registered"]}),(0,b.jsx)("button",{type:"button",onClick:()=>y(a.launchCmd),className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium rounded-md border border-[var(--card-border)] hover:bg-[var(--secondary)] transition-colors",title:`Launch ${a.label} to authenticate`,children:"Launch & authenticate"})]}):(0,b.jsx)("button",{type:"button",onClick:()=>A(a.id),disabled:e,className:"inline-flex items-center gap-1.5 px-3 py-1 text-[12px] font-medium rounded-md border border-[var(--card-border)] hover:bg-[var(--secondary)] transition-colors disabled:opacity-50",children:e?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.Loader2,{className:"w-3 h-3 animate-spin"}),"Registering..."]}):"Register"}):(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Not installed"})]},a.id)}),r&&(0,b.jsx)("p",{className:"text-[12px] text-red-500 dark:text-red-400 mt-1",children:r})]}),(0,b.jsx)("div",{className:"border-t border-[var(--card-border)] px-4 py-2.5",children:(0,b.jsxs)("a",{href:a.docsUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[12px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:["Learn more about ",a.name," MCP",(0,b.jsx)(s.ExternalLink,{className:"w-3 h-3"})]})})]},a.id)),0===B.length&&(0,b.jsx)("div",{className:"text-center py-4",children:(0,b.jsx)("p",{className:"text-[13px] text-[var(--muted-foreground)]",children:"No CLI providers detected. Go back and install a provider first, or skip this step."})}),(0,b.jsxs)("p",{className:"text-[11px] leading-relaxed text-[var(--muted-foreground)]",children:["Registering writes the MCP server into the CLI config. You still need to launch the CLI (right) and complete the interactive OAuth flow (usually ",(0,b.jsx)("code",{className:"text-[var(--foreground)]",children:"/mcp"}),")."]})]})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0 h-[500px] flex flex-col rounded-xl border border-[var(--card-border)] overflow-hidden bg-[#1e1e1e]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--secondary)] shrink-0",children:[(0,b.jsx)(k.Terminal,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Terminal"})]}),(0,b.jsx)("div",{className:"flex-1 min-h-0",children:(0,b.jsx)(o.default,{ref:x,tabId:"setup-mcp"})})]})]})]})}function x(){let a=function(){let[a,b]=(0,c.useState)("checking"),[f,g]=(0,c.useState)(e.map(a=>({...a,installed:null,authenticated:null})));(0,c.useEffect)(()=>{let a=!1;return(async()=>{try{let c=await fetch("/api/providers",{cache:"no-store"});if(a)return;if(!c.ok)return void b("error");let f=await c.json(),h=Array.isArray(f?.providers)?f.providers:[],i=e.map(a=>{let b=h.find(b=>b?.id===a.id);return{...a,installed:b?.installed??!1,authenticated:b?.authenticated??!1}});a||(g(i),b(i.some(a=>"ready"===d(a))?"ready":"needs-setup"))}catch{a||b("error")}})(),()=>{a=!0}},[]);let h=(0,c.useCallback)(a=>{g(c=>{let e=c.map(b=>b.id===a?{...b,authenticated:!0}:b);return e.some(a=>"ready"===d(a))&&b("ready"),e})},[]),i=(0,c.useMemo)(()=>f.filter(a=>"needs-auth"===d(a)).map(a=>a.id),[f]),j=i.join(",");(0,c.useEffect)(()=>{if("checking"===a||0===i.length)return;let b=new AbortController,c=new Map;return i.forEach(function a(d){if(b.signal.aborted)return;let e=setTimeout(async()=>{if(!b.signal.aborted){try{let a=await fetch(`/api/providers/check/${d}`,{cache:"no-store",signal:b.signal});if(b.signal.aborted)return;if(a.ok){let b=await a.json();if(b.authenticated)return void h(d);if(!b.installed)return void g(a=>a.map(a=>a.id===d?{...a,installed:!1,authenticated:!1}:a))}}catch{if(b.signal.aborted)return}b.signal.aborted||a(d)}},5e3);c.set(d,e)}),()=>{b.abort(),c.forEach(a=>clearTimeout(a))}},[a,j,h]);let k=f.filter(a=>"ready"===d(a)).length;return{readyState:a,clis:f,authenticatedCount:k,totalCount:f.length,handleVerifySuccess:h}}(),g=function(){let a=(0,f.useRouter)(),[b,d]=(0,c.useState)(1),e=(0,c.useCallback)(()=>{d(a=>Math.min(a+1,2))},[]);return{step:b,goNext:e,goBack:(0,c.useCallback)(()=>{d(a=>Math.max(a-1,1))},[]),finish:(0,c.useCallback)(()=>{a.push("/")},[a])}}();return(0,b.jsxs)(b.Fragment,{children:[1===g.step&&(0,b.jsx)(r,{clis:a.clis,readyState:a.readyState,authenticatedCount:a.authenticatedCount,totalCount:a.totalCount,onVerifySuccess:a.handleVerifySuccess,onNext:g.goNext}),2===g.step&&(0,b.jsx)(w,{onBack:g.goBack,onFinish:g.finish})]})}a.s(["default",()=>x],514760)}];
|
|
1
|
+
module.exports=[514760,a=>{"use strict";var b=a.i(308316),c=a.i(786220);function d(a){return null===a.installed?"checking":a.installed?!a.authenticated&&a.authCmd?"needs-auth":"ready":"not-installed"}let e=[{id:"claude",label:"Claude Code",bin:"claude",description:"Recommended for the fastest AGX setup.",installCmd:"npm install -g @anthropic-ai/claude-code",docsUrl:"https://docs.anthropic.com/en/docs/claude-code/quickstart",recommended:!0,statusLabel:"Installed",authCheck:{cmd:'claude -p "say yes" 2>/dev/null',timeout:15e3},authCmd:{cmd:"claude",description:"Opens browser for Anthropic login"}},{id:"codex",label:"Codex",bin:"codex",description:"OpenAI's terminal coding agent.",installCmd:"npm install -g @openai/codex",docsUrl:"https://github.com/openai/codex",statusLabel:"Installed",authCheck:{cmd:"codex --version 2>/dev/null",timeout:5e3},authCmd:{cmd:"codex login --device-auth",description:"Device auth flow for OpenAI"}},{id:"gemini",label:"Gemini CLI",bin:"gemini",description:"Google's CLI for Gemini workflows.",installCmd:"npm install -g @google/gemini-cli",docsUrl:"https://github.com/google-gemini/gemini-cli",statusLabel:"Installed",authCheck:{cmd:'echo "hi" | gemini 2>/dev/null',timeout:15e3},authCmd:{cmd:"gemini",description:"Opens browser for Google login"}},{id:"ollama",label:"Ollama",bin:"ollama",description:"Run local models on your machine.",installCmd:"curl -fsSL https://ollama.com/install.sh | sh",docsUrl:"https://ollama.com/download",statusLabel:"Installed",authCheck:{cmd:"ollama list 2>/dev/null",timeout:5e3}},{id:"kimi",label:"Kimi Code",bin:"kimi",description:"Moonshot's Kimi Code CLI.",installCmd:"npm install -g @moonshot/kimi-code",docsUrl:"https://www.kimi.com/code/docs/en/kimi-code-cli/core-operations.html",statusLabel:"Installed",authCheck:{cmd:"kimi --version 2>/dev/null",timeout:5e3},authCmd:{cmd:"kimi",description:"Opens Kimi login flow"}},{id:"zai",label:"Z.AI",bin:"claude",description:"Use the Claude CLI with your Z.AI API key.",installCmd:"npm install -g @anthropic-ai/claude-code",docsUrl:"https://z.ai/",installNote:"Requires Claude Code plus a configured Z.AI API key.",statusLabel:"Via Claude CLI",authCheck:{cmd:'test -n "$ANTHROPIC_API_KEY"',timeout:5e3},authCmd:{cmd:"export ANTHROPIC_API_KEY=<your-key>",description:"Set your Z.AI API key"}}].map(a=>({id:a.id,name:a.label,description:a.description,installCmd:a.installCmd,docsUrl:a.docsUrl,installNote:a.installNote,recommended:a.recommended,authCmd:a.authCmd}));var f=a.i(516909),g=a.i(627421),h=a.i(70887),i=a.i(804632),j=a.i(811760),k=a.i(356239),l=a.i(349692);function m({currentStep:a,totalSteps:c}){return(0,b.jsx)("div",{className:"flex items-center gap-0",role:"progressbar","aria-valuenow":a,"aria-valuemin":1,"aria-valuemax":c,"aria-label":`Step ${a} of ${c}`,children:Array.from({length:c},(c,d)=>{let e=d+1,f=e===a,g=e<a;return(0,b.jsxs)("div",{className:"flex items-center",children:[d>0&&(0,b.jsx)("div",{className:`w-8 h-[2px] ${g?"bg-[var(--foreground)]":"bg-[var(--border)]"}`}),(0,b.jsx)("div",{className:`w-2.5 h-2.5 rounded-full transition-colors ${f?"bg-[var(--foreground)] ring-4 ring-[var(--foreground)]/10":g?"bg-[var(--foreground)]":"bg-[var(--border)]"}`})]},e)})})}function n({currentStep:a,totalSteps:c,children:d,footer:e,wide:f}){let g=f?"max-w-6xl":"max-w-2xl";return(0,b.jsxs)("div",{className:"h-screen w-full flex flex-col bg-[var(--background)]",children:[(0,b.jsx)("div",{className:"flex items-center justify-center pt-8 pb-4",children:(0,b.jsx)(m,{currentStep:a,totalSteps:c})}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto px-4 min-h-0",children:(0,b.jsx)("div",{className:`${g} mx-auto w-full py-6 h-full`,children:d})}),e&&(0,b.jsx)("div",{className:"border-t border-[var(--border)] bg-[var(--background)] px-4 py-4",children:(0,b.jsx)("div",{className:`${g} mx-auto w-full`,children:e})})]})}var o=a.i(303592);function p({text:a}){let[d,e]=(0,c.useState)(!1),f=(0,c.useCallback)(()=>{navigator.clipboard.writeText(a).then(()=>{e(!0),setTimeout(()=>e(!1),2e3)})},[a]);return(0,b.jsx)("button",{type:"button",onClick:f,className:"p-1.5 rounded-md hover:bg-[var(--muted)] transition-colors text-[var(--muted-foreground)] hover:text-[var(--foreground)]",title:"Copy command",children:d?(0,b.jsx)(g.Check,{className:"w-3.5 h-3.5 text-emerald-500"}):(0,b.jsx)(i.Copy,{className:"w-3.5 h-3.5"})})}function q({cli:a,onVerify:e,onRunInTerminal:f}){let i=d(a),[m,n]=(0,c.useState)("needs-auth"===i),[o,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(null),t="not-installed"===i||"needs-auth"===i,u=(0,c.useCallback)(async()=>{q(!0),s(null);try{let b=await fetch(`/api/providers/check/${a.id}`,{cache:"no-store"});if(!b.ok)return void s("Check failed");(await b.json()).authenticated?e?.(a.id):s("Not authenticated yet")}catch{s("Check failed")}finally{q(!1)}},[a.id,e]),v="not-installed"===i?a.installCmd:a.authCmd?.cmd;return(0,b.jsxs)("div",{className:"border border-[var(--card-border)] rounded-lg overflow-hidden",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>t&&n(!m),className:`w-full flex items-center gap-2.5 px-3 py-2 transition-colors text-left ${t?"hover:bg-[var(--item-hover-bg)] cursor-pointer":"cursor-default"}`,children:[(0,b.jsx)("div",{className:"shrink-0",children:"checking"===i?(0,b.jsx)(h.Circle,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)] animate-pulse"}):"ready"===i?(0,b.jsx)("div",{className:"w-4 h-4 rounded-full bg-emerald-100 dark:bg-emerald-900/30 flex items-center justify-center",children:(0,b.jsx)(g.Check,{className:"w-2.5 h-2.5 text-emerald-600 dark:text-emerald-400"})}):"needs-auth"===i?(0,b.jsx)("div",{className:"w-4 h-4 rounded-full bg-amber-100 dark:bg-amber-900/30 flex items-center justify-center",children:(0,b.jsx)(h.Circle,{className:"w-2.5 h-2.5 text-amber-600 dark:text-amber-400"})}):(0,b.jsx)(h.Circle,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"})}),(0,b.jsx)("span",{className:"flex-1 min-w-0 text-[13px] font-semibold text-[var(--foreground)] truncate",children:a.name}),"ready"===i&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-emerald-600 dark:text-emerald-400",children:"Ready"}),"needs-auth"===i&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-amber-600 dark:text-amber-400",children:"Needs auth"}),"not-installed"===i&&a.recommended&&(0,b.jsx)("span",{className:"text-[10px] font-medium text-[var(--muted-foreground)]",children:"Recommended"}),t&&(0,b.jsx)(j.ChevronDown,{className:`w-3.5 h-3.5 text-[var(--muted-foreground)] transition-transform ${m?"rotate-180":""}`})]}),m&&t&&v&&(0,b.jsxs)("div",{className:"px-3 pb-2.5 pt-1 border-t border-[var(--card-border)] flex items-center gap-1.5",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>f?.(v),className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium rounded-md bg-[var(--foreground)] text-[var(--background)] hover:opacity-90 transition-colors",children:[(0,b.jsx)(k.Terminal,{className:"w-3 h-3"}),"Run"]}),"needs-auth"===i&&(0,b.jsxs)("button",{type:"button",onClick:u,disabled:o,className:"inline-flex items-center gap-1 px-2.5 py-1 text-[11px] font-medium rounded-md border border-[var(--card-border)] text-[var(--foreground)] hover:bg-[var(--secondary)] transition-colors disabled:opacity-60",children:[o&&(0,b.jsx)(l.Loader2,{className:"w-3 h-3 animate-spin"}),o?"Checking":"Verify"]}),(0,b.jsx)(p,{text:v}),r&&(0,b.jsx)("span",{className:"text-[10px] text-amber-600 dark:text-amber-400 ml-auto",children:r})]})]})}function r({clis:a,readyState:d,authenticatedCount:e,totalCount:f,onVerifySuccess:g,onNext:h}){let i="ready"===d,j=(0,c.useRef)(null),m=(0,c.useCallback)(a=>{j.current?.sendCommand(a)},[]);return(0,b.jsxs)(n,{currentStep:1,totalSteps:2,wide:!0,footer:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[13px] text-[var(--muted-foreground)]",children:(0,b.jsxs)("span",{className:i?"text-emerald-600 dark:text-emerald-400":"",children:[e,"/",f," providers ready"]})}),(0,b.jsx)("button",{type:"button",onClick:h,disabled:!i,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 disabled:opacity-40 disabled:cursor-not-allowed",children:"Next"})]}),children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-[24px] font-bold text-[var(--foreground)] tracking-tight",children:"Connect a Provider"}),(0,b.jsxs)("p",{className:"mt-2 text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:["AGX runs AI-assisted dev work across your tickets, repos, and PRs.",(0,b.jsx)("br",{}),"Connect one or more providers to power the agents that do the work."]})]}),(0,b.jsxs)("div",{className:"flex gap-6 min-h-0 items-start",children:[(0,b.jsxs)("div",{className:"w-[280px] shrink-0",children:["checking"===d&&(0,b.jsxs)("div",{className:"text-center py-8",children:[(0,b.jsx)(l.Loader2,{className:"w-6 h-6 animate-spin text-[var(--muted-foreground)] mx-auto"}),(0,b.jsx)("p",{className:"mt-3 text-[13px] text-[var(--muted-foreground)]",children:"Detecting installed providers..."})]}),"error"===d&&(0,b.jsx)("div",{className:"text-center py-8",children:(0,b.jsx)("p",{className:"text-[14px] text-[var(--muted-foreground)]",children:"Could not detect providers. Please reload."})}),("needs-setup"===d||"ready"===d)&&(0,b.jsx)("div",{className:"space-y-1.5",children:a.map(a=>(0,b.jsx)(q,{cli:a,onVerify:g,onRunInTerminal:m},a.id))})]}),(0,b.jsxs)("div",{className:"flex-1 min-w-0 h-[420px] flex flex-col rounded-xl border border-[var(--card-border)] overflow-hidden bg-[#1e1e1e]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--secondary)] shrink-0",children:[(0,b.jsx)(k.Terminal,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Terminal"})]}),(0,b.jsx)("div",{className:"flex-1 min-h-0",children:(0,b.jsx)(o.default,{ref:j,tabId:"setup-provider"})})]})]})]})}var s=a.i(379065);let t=(0,a.i(831709).default)("plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]),u=[{id:"linear",name:"Linear",description:"So your Linear tickets show up in AGX and agents can move them through to a PR.",docsUrl:"https://linear.app/docs/mcp"}],v=[{id:"claude",label:"Claude Code",launchCmd:"claude"},{id:"codex",label:"Codex",launchCmd:"codex"},{id:"gemini",label:"Gemini CLI",launchCmd:"gemini"}];function w({onFinish:a,onBack:d}){let[e,f]=(0,c.useState)(!0),[h,i]=(0,c.useState)({}),[j,m]=(0,c.useState)({}),[p,q]=(0,c.useState)(null),[r,w]=(0,c.useState)(null),x=(0,c.useRef)(null),y=(0,c.useCallback)(a=>{x.current?.sendCommand(a)},[]),z=(0,c.useCallback)(async()=>{try{let[a,b]=await Promise.all([fetch("/api/linear/status"),fetch("/api/linear/mcp-setup")]),c=await a.json(),d=await b.json();i(c.clis??{}),m(d.configured??{})}catch{}finally{f(!1)}},[]);(0,c.useEffect)(()=>{z()},[z]);let A=(0,c.useCallback)(async a=>{q(a),w(null);try{let b=await fetch("/api/linear/mcp-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cli:a})});if(b.ok)await z();else{let a=await b.json().catch(()=>({}));w(a.error||"Failed to configure MCP")}}catch{w("Failed to configure MCP")}finally{q(null)}},[z]),B=v.filter(a=>h[a.id]),C=B.some(a=>j[a.id]);return(0,b.jsxs)(n,{currentStep:2,totalSteps:2,wide:!0,footer:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("button",{type:"button",onClick:d,className:"text-[14px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:"Back"}),(0,b.jsx)("button",{type:"button",onClick:a,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:C?"Finish":"Skip"})]}),children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-[24px] font-bold text-[var(--foreground)] tracking-tight",children:"Configure MCP Servers"}),(0,b.jsx)("p",{className:"mt-2 text-[14px] text-[var(--muted-foreground)] leading-relaxed",children:"MCP servers let your agents interact with external tools. After registering a server below, launch your CLI in the terminal to complete the OAuth login."})]}),(0,b.jsxs)("div",{className:"flex gap-6 min-h-0 items-start",children:[(0,b.jsx)("div",{className:"w-[380px] shrink-0 space-y-6",children:e?(0,b.jsxs)("div",{className:"text-center py-8",children:[(0,b.jsx)(l.Loader2,{className:"w-6 h-6 animate-spin text-[var(--muted-foreground)] mx-auto"}),(0,b.jsx)("p",{className:"mt-3 text-[13px] text-[var(--muted-foreground)]",children:"Checking MCP configuration..."})]}):(0,b.jsxs)(b.Fragment,{children:[u.map(a=>(0,b.jsxs)("div",{className:"border border-[var(--card-border)] rounded-lg overflow-hidden",children:[(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3",children:[(0,b.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[var(--secondary)] flex items-center justify-center",children:(0,b.jsx)(t,{className:"w-4 h-4 text-[var(--foreground)]"})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[14px] font-semibold text-[var(--foreground)]",children:a.name}),C&&(0,b.jsx)("span",{className:"text-[11px] font-medium text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/20 px-1.5 py-0.5 rounded",children:"Registered"})]}),(0,b.jsx)("p",{className:"text-[12px] text-[var(--muted-foreground)]",children:a.description})]})]}),(0,b.jsxs)("div",{className:"border-t border-[var(--card-border)] px-4 py-3 space-y-2",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] mb-2",children:"Register & authenticate per CLI"}),v.map(a=>{let c=h[a.id],d=j[a.id],e=p===a.id;return(0,b.jsxs)("div",{className:`flex items-center justify-between rounded-md border border-[var(--card-border)] px-3 py-2.5 ${!c?"opacity-40":""}`,children:[(0,b.jsx)("span",{className:"text-[13px] text-[var(--foreground)]",children:a.label}),c?d?(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-emerald-600 dark:text-emerald-400",children:[(0,b.jsx)(g.Check,{className:"w-3.5 h-3.5"}),"Registered"]}),(0,b.jsx)("button",{type:"button",onClick:()=>y(a.launchCmd),className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium rounded-md border border-[var(--card-border)] hover:bg-[var(--secondary)] transition-colors",title:`Launch ${a.label} to authenticate`,children:"Launch & authenticate"})]}):(0,b.jsx)("button",{type:"button",onClick:()=>A(a.id),disabled:e,className:"inline-flex items-center gap-1.5 px-3 py-1 text-[12px] font-medium rounded-md border border-[var(--card-border)] hover:bg-[var(--secondary)] transition-colors disabled:opacity-50",children:e?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(l.Loader2,{className:"w-3 h-3 animate-spin"}),"Registering..."]}):"Register"}):(0,b.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Not installed"})]},a.id)}),r&&(0,b.jsx)("p",{className:"text-[12px] text-red-500 dark:text-red-400 mt-1",children:r})]}),(0,b.jsx)("div",{className:"border-t border-[var(--card-border)] px-4 py-2.5",children:(0,b.jsxs)("a",{href:a.docsUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[12px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",children:["Learn more about ",a.name," MCP",(0,b.jsx)(s.ExternalLink,{className:"w-3 h-3"})]})})]},a.id)),0===B.length&&(0,b.jsx)("div",{className:"text-center py-4",children:(0,b.jsx)("p",{className:"text-[13px] text-[var(--muted-foreground)]",children:"No CLI providers detected. Go back and install a provider first, or skip this step."})}),(0,b.jsxs)("p",{className:"text-[11px] leading-relaxed text-[var(--muted-foreground)]",children:["Registering writes the MCP server into the CLI config. You still need to launch the CLI (right) and complete the interactive OAuth flow (usually ",(0,b.jsx)("code",{className:"text-[var(--foreground)]",children:"/mcp"}),")."]})]})}),(0,b.jsxs)("div",{className:"flex-1 min-w-0 h-[500px] flex flex-col rounded-xl border border-[var(--card-border)] overflow-hidden bg-[#1e1e1e]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-[var(--card-border)] bg-[var(--secondary)] shrink-0",children:[(0,b.jsx)(k.Terminal,{className:"w-3.5 h-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Terminal"})]}),(0,b.jsx)("div",{className:"flex-1 min-h-0",children:(0,b.jsx)(o.default,{ref:x,tabId:"setup-mcp"})})]})]})]})}function x(){let a=function(){let[a,b]=(0,c.useState)("checking"),[f,g]=(0,c.useState)(e.map(a=>({...a,installed:null,authenticated:null})));(0,c.useEffect)(()=>{let a=!1;return(async()=>{try{let c=await fetch("/api/providers",{cache:"no-store"});if(a)return;if(!c.ok)return void b("error");let f=await c.json(),h=Array.isArray(f?.providers)?f.providers:[],i=e.map(a=>{let b=h.find(b=>b?.id===a.id);return{...a,installed:b?.installed??!1,authenticated:b?.authenticated??!1}});a||(g(i),b(i.some(a=>"ready"===d(a))?"ready":"needs-setup"))}catch{a||b("error")}})(),()=>{a=!0}},[]);let h=(0,c.useCallback)(a=>{g(c=>{let e=c.map(b=>b.id===a?{...b,authenticated:!0}:b);return e.some(a=>"ready"===d(a))&&b("ready"),e})},[]),i=(0,c.useMemo)(()=>f.filter(a=>"needs-auth"===d(a)).map(a=>a.id),[f]),j=i.join(",");(0,c.useEffect)(()=>{if("checking"===a||0===i.length)return;let b=new AbortController,c=new Map;return i.forEach(function a(d){if(b.signal.aborted)return;let e=setTimeout(async()=>{if(!b.signal.aborted){try{let a=await fetch(`/api/providers/check/${d}`,{cache:"no-store",signal:b.signal});if(b.signal.aborted)return;if(a.ok){let b=await a.json();if(b.authenticated)return void h(d);if(!b.installed)return void g(a=>a.map(a=>a.id===d?{...a,installed:!1,authenticated:!1}:a))}}catch{if(b.signal.aborted)return}b.signal.aborted||a(d)}},5e3);c.set(d,e)}),()=>{b.abort(),c.forEach(a=>clearTimeout(a))}},[a,j,h]);let k=f.filter(a=>"ready"===d(a)).length;return{readyState:a,clis:f,authenticatedCount:k,totalCount:f.length,handleVerifySuccess:h}}(),g=function(){let a=(0,f.useRouter)(),[b,d]=(0,c.useState)(1),e=(0,c.useCallback)(()=>{d(a=>Math.min(a+1,2))},[]);return{step:b,goNext:e,goBack:(0,c.useCallback)(()=>{d(a=>Math.max(a-1,1))},[]),finish:(0,c.useCallback)(()=>{a.push("/")},[a])}}();return(0,b.jsxs)(b.Fragment,{children:[1===g.step&&(0,b.jsx)(r,{clis:a.clis,readyState:a.readyState,authenticatedCount:a.authenticatedCount,totalCount:a.totalCount,onVerifySuccess:a.handleVerifySuccess,onNext:g.goNext}),2===g.step&&(0,b.jsx)(w,{onBack:g.goBack,onFinish:g.finish})]})}a.s(["default",()=>x],514760)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_app_setup_page_tsx_9a67cfaf._.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[581007,a=>{a.n(a.i(703865))},510463,a=>{"use strict";var b=a.i(416153),c=a.i(38046),d=a.i(809091),e=a.i(594184),f=a.i(944454),g=a.i(222189),h=a.i(298095),i=a.i(598297),j=a.i(123387),k=a.i(321637),l=a.i(325385),m=a.i(150420),n=a.i(780722),o=a.i(953655),p=a.i(16983),q=a.i(458223),r=a.i(6039);a.i(976477);var s=a.i(954998),t=a.i(976934),u=a.i(528799),v=a.i(848540),w=a.i(408666),x=a.i(892335),y=a.i(193695),z=a.i(480837),A=a.i(468951);a.i(759001);var B=a.i(888617),C=a.i(343759),D=a.i(424798),E=a.i(402702),F=a.i(912716);let G=["",{children:["projects",{children:["[slug]",{children:["prs",{children:["[prId]",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(581007),"[project]/apps/local/app/projects/[slug]/prs/[prId]/page.tsx"]}]},{metadata:{}}]},{metadata:{}}]},{metadata:{},layout:[()=>a.r(401178),"[project]/apps/local/app/projects/[slug]/layout.tsx"]}]},{metadata:{}}]},{layout:[()=>a.r(80388),"[project]/apps/local/app/layout.tsx"],"not-found":[()=>a.r(367314),"[project]/apps/local/node_modules/next/dist/client/components/builtin/not-found.js"],forbidden:[()=>a.r(742015),"[project]/apps/local/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>a.r(787941),"[project]/apps/local/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[()=>a.r(468951),"[project]/apps/local/node_modules/next/dist/client/components/builtin/global-error.js"]}],H={require:a.r.bind(a),loadChunk:a.l.bind(a)},I=new b.AppPageRouteModule({definition:{kind:c.RouteKind.APP_PAGE,page:"/projects/[slug]/prs/[prId]/page",pathname:"/projects/[slug]/prs/[prId]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:G},distDir:".next",relativeProjectDir:""});async function J(a,b,K){var L;I.isDev&&(0,f.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let M=!!(0,f.getRequestMeta)(a,"minimalMode"),N="/projects/[slug]/prs/[prId]/page";N=N.replace(/\/index$/,"")||"/";let O=await I.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==K.waitUntil||K.waitUntil.call(K,Promise.resolve()),null;let{buildId:P,query:Q,params:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,o.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,F.isInterceptionRouteAppPath)(_)?null:I.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,r.getBotType)(ak),am=(0,n.isHtmlBotRequest)(a),an=(0,f.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[q.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,f.getRequestMeta)(a,"isRSCRequest")??!!a.headers[q.RSC_HEADER],ap=(0,p.getIsPossibleServerAction)(a),aq=(0,k.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,f.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[v.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,f.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(L=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:L.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,f.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;M&&(av=av&&!!au);let aw=(0,f.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,n.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===I.isDev||!ay||"string"==typeof au||(az&&(0,f.getRequestMeta)(a,"onCacheEntryV2")?av&&!M:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&I.isDev&&(aD=_),I.isDev||$||!ay||!ao||av||(0,i.stripFlightHeaders)(a.headers);let aE={...B,tree:G,GlobalError:A.default,handler:J,routeModule:I,__next_app__:H};W&&X&&(0,m.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,e.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let d=I.getVaryHeader(_,ae);b.setHeader("Vary",d);let i=async(c,d)=>{let e=new j.NodeNextRequest(a),f=new j.NodeNextResponse(b);return I.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==g.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},k=(0,f.getRequestMeta)(a,"incrementalCache"),m=async({span:c,postponed:d,fallbackRouteParams:e,forceStaticRender:g})=>{let j={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,f.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:e,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,h.interopDefault)(aE),params:R,routeModule:I,page:N,postponed:d,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof d||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:require("path").join(process.cwd(),I.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:k,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,z.parseMaxPostponedStateSize)(ac.experimental.maxPostponedStateSize)},waitUntil:K.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>I.onRequestError(a,b,d,e,ab),err:(0,f.getRequestMeta)(a,"invokeError"),dev:I.isDev}};as&&(j.renderOpts.nextExport=!0,j.renderOpts.supportsDynamicResponse=!1,j.renderOpts.isDebugDynamicAccesses=as),g&&(j.renderOpts.supportsDynamicResponse=!1);let l=await i(c,j),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p,fetchMetrics:q}=m;if(p&&(o[v.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=q,ay&&(null==n?void 0:n.revalidate)===0&&!I.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
2
|
+
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:s.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},n=async({hasResolved:d,previousCacheEntry:e,isRevalidating:g,span:h,forceStaticRender:i=!1})=>{let j,o=!1===I.isDev,p=d||b.writableEnded;if(ah&&aa&&!e&&!M)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(j=(0,t.parseFallbackField)(ai.fallback)),j===t.FallbackMode.PRERENDER&&(0,r.isBot)(ak)&&(!ar||am)&&(j=t.FallbackMode.BLOCKING_STATIC_RENDER),(null==e?void 0:e.isStale)===-1&&(ah=!0),ah&&(j!==t.FallbackMode.NOT_FOUND||e)&&(j=t.FallbackMode.BLOCKING_STATIC_RENDER),!M&&j!==t.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!p&&!$&&S&&(o||!aj)){if((o||ai)&&j===t.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new y.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=o&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,d=o&&(null==ai?void 0:ai.fallbackRouteParams)?(0,l.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,l.getFallbackRouteParams)(ag,I):null,e=await I.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:c.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:h,postponed:void 0,fallbackRouteParams:d,forceStaticRender:!1}),waitUntil:K.waitUntil,isMinimalMode:M});if(null===e)return null;if(e)return delete e.cacheControl,e}}let q=ah||g||!au?void 0:au;if(az&&!M&&k&&av&&!i){let b=await k.get(_,{kind:s.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===s.CachedRouteKind.APP_PAGE&&(q=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,E.scheduleOnNextTick)(async()=>{let b=I.getResponseCache(a);try{await b.revalidate(_,k,ar,!1,a=>n({...a,forceStaticRender:!0}),null,d,K.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==q)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:s.CachedRouteKind.PAGES,html:u.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let v=o&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,f.getRequestMeta)(a,"renderFallbackShell")?(0,l.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,l.getFallbackRouteParams)(ag,I):null;return m({span:h,postponed:q,fallbackRouteParams:v,forceStaticRender:i})},o=async d=>{var e,g,h,i,j;let k,l=await I.handleResponse({cacheKey:aC,responseGenerator:a=>n({span:d,...a}),routeKind:c.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:K.waitUntil,isMinimalMode:M});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),I.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!l){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(e=l.value)?void 0:e.kind)!==s.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(h=l.value)?void 0:h.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof l.value.postponed;ay&&!av&&(!o||an)&&(M||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),b.setHeader(q.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=l;if(au)k={revalidate:0,expire:void 0};else if(av)k={revalidate:0,expire:void 0};else if(!I.isDev)if($)k={revalidate:0,expire:void 0};else if(ay){if(l.cacheControl)if("number"==typeof l.cacheControl.revalidate){if(l.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${l.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});k={revalidate:l.cacheControl.revalidate,expire:(null==(i=l.cacheControl)?void 0:i.expire)??ac.expireTime}}else k={revalidate:v.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(k={revalidate:0,expire:void 0});if(l.cacheControl=k,"string"==typeof aw&&(null==p?void 0:p.kind)===s.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(q.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(j=p.headers)?void 0:j[v.NEXT_CACHE_TAGS_HEADER];M&&ay&&c&&"string"==typeof c&&b.setHeader(v.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aw);return void 0!==d?(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:u.default.fromStatic(d,q.RSC_CONTENT_TYPE_HEADER),cacheControl:l.cacheControl}):(b.statusCode=204,(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:u.default.EMPTY,cacheControl:l.cacheControl}))}let r=az?(0,f.getRequestMeta)(a,"onCacheEntryV2")??(0,f.getRequestMeta)(a,"onCacheEntry"):(0,f.getRequestMeta)(a,"onCacheEntry");if(r&&await r(l,{url:(0,f.getRequestMeta)(a,"initURL")??a.url}))return null;if(p.headers){let a={...p.headers};for(let[c,d]of(M&&ay||delete a[v.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=p.headers)?void 0:g[v.NEXT_CACHE_TAGS_HEADER];if(M&&ay&&t&&"string"==typeof t&&b.setHeader(v.NEXT_CACHE_TAGS_HEADER,t),!p.status||ao&&ar||(b.statusCode=p.status),!M&&p.status&&C.RedirectStatusCode[p.status]&&ao&&(b.statusCode=200),o&&!av&&b.setHeader(q.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===p.rscData){if(p.html.contentType!==q.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:u.default.EMPTY,cacheControl:l.cacheControl});else throw Object.defineProperty(new D.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:p.html,cacheControl:l.cacheControl})}return(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:u.default.fromStatic(p.rscData,q.RSC_CONTENT_TYPE_HEADER),cacheControl:l.cacheControl})}let y=p.html;if(!o||M||ao)return(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:y,cacheControl:l.cacheControl});if(as)return y.push(new ReadableStream({start(a){a.enqueue(w.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:y,cacheControl:{revalidate:0,expire:void 0}});let z=new TransformStream;return y.push(z.readable),m({span:d,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==s.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(z.writable)}).catch(a=>{z.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,x.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:y,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(g.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:e.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},o));await o(aH)}catch(b){throw b instanceof y.NoFallbackError||await I.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}a.s(["__next_app__",0,H,"handler",()=>J,"routeModule",0,I],414873),a.i(414873),a.s(["ClientPageRoot",()=>B.ClientPageRoot,"ClientSegmentRoot",()=>B.ClientSegmentRoot,"Fragment",()=>B.Fragment,"GlobalError",()=>A.default,"HTTPAccessFallbackBoundary",()=>B.HTTPAccessFallbackBoundary,"LayoutRouter",()=>B.LayoutRouter,"Postpone",()=>B.Postpone,"RenderFromTemplateContext",()=>B.RenderFromTemplateContext,"RootLayoutBoundary",()=>B.RootLayoutBoundary,"SegmentViewNode",()=>B.SegmentViewNode,"SegmentViewStateNode",()=>B.SegmentViewStateNode,"__next_app__",0,H,"actionAsyncStorage",()=>B.actionAsyncStorage,"captureOwnerStack",()=>B.captureOwnerStack,"collectSegmentData",()=>B.collectSegmentData,"createElement",()=>B.createElement,"createMetadataComponents",()=>B.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>B.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>B.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>B.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>B.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>B.createTemporaryReferenceSet,"decodeAction",()=>B.decodeAction,"decodeFormState",()=>B.decodeFormState,"decodeReply",()=>B.decodeReply,"handler",()=>J,"patchFetch",()=>B.patchFetch,"preconnect",()=>B.preconnect,"preloadFont",()=>B.preloadFont,"preloadStyle",()=>B.preloadStyle,"prerender",()=>B.prerender,"renderToReadableStream",()=>B.renderToReadableStream,"routeModule",0,I,"serverHooks",()=>B.serverHooks,"taintObjectReference",()=>B.taintObjectReference,"workAsyncStorage",()=>B.workAsyncStorage,"workUnitAsyncStorage",()=>B.workUnitAsyncStorage],510463)}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=apps_local_b87f08ce._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[769677,a=>{"use strict";let b="project_objectives_workspace",c="project_goals_workspace",d=new Set(["on_track","at_risk","off_track","done"]);function e(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function f(a){return`${a}_${Math.random().toString(36).slice(2,10)}`}function g(a){return[...a].sort((a,b)=>Date.parse(b.updatedAt)-Date.parse(a.updatedAt))}function h(a){return[...a].sort((a,b)=>Date.parse(a.createdAt)-Date.parse(b.createdAt))}function i(a){return[...a].sort((a,b)=>Date.parse(b.createdAt)-Date.parse(a.createdAt))}function j(a,b=""){return"string"==typeof a?a:b}function k(a){return Array.isArray(a)?Array.from(new Set(a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean))):[]}function l(a,b="1970-01-01T00:00:00.000Z"){if("string"!=typeof a)return b;let c=Date.parse(a);return Number.isNaN(c)?b:new Date(c).toISOString()}function m(a){return"number"==typeof a&&Number.isFinite(a)?Math.max(0,Math.min(100,Math.round(a))):0}function n(a,b=0){return"number"==typeof a&&Number.isFinite(a)?Math.max(0,Math.floor(a)):b}function o(a,b="objective"){let c=a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,32);return c||b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"objective"}function p(a,b,c="objective"){let d=o(c),e=o(a,d),f=e,g=2;for(;b.has(f);){let a=`-${g}`,b=Math.max(1,32-a.length);f=`${e.slice(0,b)}${a}`,g+=1}return b.add(f),f}function q(a,b,c){return p(a,new Set(b.filter(a=>a.id!==c).map(a=>o(a.key||a.title||a.id))),c??a)}function r(a){var b;if(!e(a))return null;let c=l(a.updatedAt??a.createdAt),g=l(a.createdAt,c);return{id:j(a.id,f("objective")),title:j(a.title,"Untitled objective"),teamId:j(a.teamId??a.team_id??a.ownerTeamId),key:o(j(a.key??a.slug??a.label),j(a.title??a.id,"objective")),threadId:j(a.threadId)||null,chatSessionVersion:n(a.chatSessionVersion,0),scheduledTaskIds:k(a.scheduledTaskIds??a.promptJobIds),summary:j(a.summary),progress:m(a.progress),status:"string"==typeof(b=a.status)&&d.has(b)?b:"on_track",createdAt:g,updatedAt:c}}function s(a){if(!e(a))return null;let b=l(a.updatedAt??a.createdAt),c=l(a.createdAt,b),d=j(a.objectiveId??a.goalId);return d?{id:j(a.id,f("objective_activity")),objectiveId:d,sourceType:"note",sourceLabel:j(a.sourceLabel,"Update"),title:j(a.title,"Untitled activity"),body:j(a.body),createdAt:c,updatedAt:b,relatedTaskId:j(a.relatedTaskId)||null}:null}function t(a){if(!e(a))return null;let b=j(a.activityId);return b?{id:j(a.id,f("objective_thread_message")),activityId:b,author:j(a.author,"You"),body:j(a.body),createdAt:l(a.createdAt)}:null}function u(){return{objectives:[],activities:[],activityThreads:{}}}function v(a){let b;if(!e(a))return u();let c=Array.isArray(a.objectives)?a.objectives.map(a=>r(a)).filter(a=>null!==a):[],d=Array.isArray(a.activities)?a.activities.map(a=>s(a)).filter(a=>null!==a):[],f=e(a.activityThreads)?Object.fromEntries(Object.entries(a.activityThreads).map(([a,b])=>[a,h(Array.isArray(b)?b.map(a=>t(a)).filter(a=>null!==a):[])])):{};return{objectives:g((b=new Set,c.map(a=>{let c=p(a.key||a.title||a.id,b,a.id||a.title||"objective");return a.key===c?a:{...a,key:c}}))),activities:i(d),activityThreads:f}}function w(a){if(!e(a))return u();let d=a[b];if(void 0!==d){let a=v(d);if(a.objectives.length>0||a.activities.length>0||Object.keys(a.activityThreads).length>0)return a}let f=a[c];if(void 0!==f){if(!e(f))return u();let a=Array.isArray(f.goals)?f.goals.map(a=>(function(a){if(!e(a))return null;let b=j(a.target),c=[j(a.summary),b?`Measure: ${b}`:""].filter(Boolean).join("\n\n");return r({...a,summary:c})})(a)).filter(a=>null!==a):[],b=Array.isArray(f.manualActivities)?f.manualActivities.map(a=>s({...a,sourceLabel:"Update"})).filter(a=>null!==a):[],c=e(f.activityThreads)?Object.fromEntries(Object.entries(f.activityThreads).map(([a,b])=>[a,h(Array.isArray(b)?b.map(b=>t({...b,activityId:a})).filter(a=>null!==a):[])])):{};return{objectives:g(a),activities:i(b),activityThreads:c}}return u()}function x(a,d){let e={...a};return delete e[c],e[b]=v(d),e}function y(a){return{id:a.id??f("objective"),title:a.title.trim(),teamId:a.teamId.trim(),key:o(a.key?.trim()??a.title.trim(),a.id??a.title),threadId:"string"==typeof a.threadId&&a.threadId.trim()?a.threadId.trim():null,chatSessionVersion:n(a.chatSessionVersion??2,2),scheduledTaskIds:k(a.scheduledTaskIds??[]),summary:a.summary?.trim()??"",progress:m(a.progress??0),status:a.status??"on_track",createdAt:a.now,updatedAt:a.now}}function z(a,b){let c=a.objectives.findIndex(a=>a.id===b.id)>=0?a.objectives.map(a=>a.id===b.id?b:a):[b,...a.objectives];return{...a,objectives:g(c)}}function A(a,b){let c=new Set(a.activities.filter(a=>a.objectiveId===b).map(a=>a.id)),d=Object.fromEntries(Object.entries(a.activityThreads).filter(([a])=>!c.has(a)));return{objectives:a.objectives.filter(a=>a.id!==b),activities:a.activities.filter(a=>a.objectiveId!==b),activityThreads:d}}function B({objective:a,workspace:b}){return b.activities.filter(b=>b.objectiveId===a.id).map(a=>({...a,threadCount:b.activityThreads[a.id]?.length??0})).sort((a,b)=>Date.parse(b.createdAt)-Date.parse(a.createdAt))}a.s(["CURRENT_OBJECTIVE_CHAT_SESSION_VERSION",0,2,"LEGACY_PROJECT_GOALS_METADATA_KEY",0,c,"PROJECT_HEALTH_METADATA_KEY",0,"project_health_snapshot","PROJECT_OBJECTIVES_METADATA_KEY",0,b,"buildObjectiveTimelineActivities",()=>B,"createProjectObjective",()=>y,"generateProjectObjectiveKey",()=>q,"readProjectObjectivesWorkspace",()=>w,"removeProjectObjective",()=>A,"upsertProjectObjective",()=>z,"writeProjectObjectivesWorkspace",()=>x])},204246,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},490335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},830284,a=>{"use strict";var b=a.i(786220);function c(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!1),[f,g]=(0,b.useState)(null),h=(0,b.useCallback)(async()=>{e(!0);try{let a=await fetch("/api/projects");if(!a.ok)throw Error("Failed to fetch projects");let b=await a.json();c(b.projects??[]),g(null)}catch(a){g(a instanceof Error?a:Error("Unknown error"))}finally{e(!1)}},[]);(0,b.useEffect)(()=>{h()},[h]);let i=(0,b.useCallback)(async a=>{let b=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to create project");let d=(await b.json()).project;return c(a=>[d,...a]),d},[]);return{projects:a,isLoading:d,error:f,refetch:h,createProject:i,updateProject:(0,b.useCallback)(async(a,b)=>{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok)throw Error((await d.json().catch(()=>({}))).error||"Failed to update project");let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?e:b)),e},[]),deleteProject:(0,b.useCallback)(async a=>{let b=await fetch(`/api/projects/${a}`,{method:"DELETE"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error||"Failed to delete project");c(b=>b.filter(b=>b.id!==a))},[])}}function d(){let[a,c]=(0,b.useState)([]),[d,e]=(0,b.useState)(!0),f=(0,b.useCallback)(async()=>{try{let a=await fetch("/api/projects");if(!a.ok)return;let{projects:b}=await a.json(),d=await Promise.all((b??[]).map(async a=>{let b=[],c=[];try{let[d,e]=await Promise.all([fetch(`/api/projects/${a.id}/agents`),fetch(`/api/projects/${a.id}/threads`)]);d.ok&&(b=(await d.json()).agents??[]),e.ok&&(c=((await e.json()).threads??[]).map(a=>a.thread_id))}catch{}return{...a,repos:a.repos??[],agents:b.map(b=>({project_id:a.id,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at})),thread_ids:c,workspace_ids:c}}));c(d)}catch{}finally{e(!1)}},[]);(0,b.useEffect)(()=>{f()},[f]);let g=(0,b.useCallback)(async(a,b)=>{try{let d="string"==typeof a?{name:a}:a,e=d.name.trim(),f=(d.slug||e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")).trim(),g=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...d,name:e,slug:f})});if(!g.ok)return null;let{project:h}=await g.json(),i=Array.isArray(b)?b:b?[b]:[];for(let a of i)await fetch(`/api/projects/${h.id}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:a})}).catch(a=>console.warn("[useProjects] link thread failed:",a));let j={...h,repos:h.repos??[],agents:[],thread_ids:i,workspace_ids:i};return c(a=>[...a,j].sort((a,b)=>a.name.localeCompare(b.name))),j}catch{return null}},[]),h=(0,b.useCallback)(async(a,b)=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:b})})).ok)return;c(c=>c.map(c=>c.id===a?{...c,name:b}:c).sort((a,b)=>a.name.localeCompare(b.name)))}catch{}},[]),i=(0,b.useCallback)(async a=>{try{if(!(await fetch(`/api/projects/${a}`,{method:"DELETE"})).ok)return;c(b=>b.filter(b=>b.id!==a))}catch{}},[]),j=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error(a.error||"Failed to update project")}let e=(await d.json()).project;return c(b=>b.map(b=>b.id===a?{...b,...e,repos:e.repos??b.repos}:b)),e}catch{return null}},[]),k=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),l=(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents?agentId=${b}`,{method:"DELETE"});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]);return{projects:a,isLoading:d,createProject:g,updateProject:j,renameProject:h,deleteProject:i,addAgent:k,removeAgent:l,reorderAgents:(0,b.useCallback)(async(a,b)=>{try{let d=await fetch(`/api/projects/${a}/agents`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedAgentIds:b})});if(!d.ok)return;let e=((await d.json()).agents??[]).map(b=>({project_id:a,agent_id:b.agent_id,routing_order:b.routing_order,created_at:b.created_at}));c(b=>b.map(b=>b.id===a?{...b,agents:e}:b))}catch{}},[]),moveAgent:(0,b.useCallback)(async(a,b,c)=>{try{await fetch(`/api/projects/${b}/agents?agentId=${a}`,{method:"DELETE"}),await fetch(`/api/projects/${c}/agents`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agentId:a})}),await f()}catch{}},[f]),refresh:f}}a.s(["useProjects",()=>c,"useProjectsWithAgents",()=>d])},422662,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getDeploymentId:function(){return f},getDeploymentIdQueryOrEmptyString:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(){return!1}function g(){return""}},639211,a=>{"use strict";a.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_UPDATE_CHECK_MS",0,18e5])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=apps_local_c012eb07._.js.map
|