@mndrk/agx 2.4.6 → 2.4.7
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 +4 -0
- package/cloud-runtime/standalone/apps/local/.next/build-manifest.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/prerender-manifest.json +3 -3
- package/cloud-runtime/standalone/apps/local/.next/routes-manifest.json +33 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/file-search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/participants/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/activities/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/[noteId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/notes/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js +13 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/program/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/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]/validate/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]/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/projects/[id]/workspace/export/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/export/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/build-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/workspace/import/route_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/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]/items/[id]/recap/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]/status/route.js.nft.json +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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github/select-repos.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations/github.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/integrations.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/automations/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/env-vars/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/folders/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/graph/[taskId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/notifications/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/[objectiveId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/objectives/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/prs/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/[teamId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/adopt/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/new/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/teams/replace/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/terminal/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/[threadId]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/app-paths-manifest.json +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/build-manifest.json +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/next-font-manifest.json +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/react-loadable-manifest.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page/server-reference-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.map +5 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page.js.nft.json +1 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +2 -0
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/connect/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- 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_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app-paths-manifest.json +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_export_route_actions_e161f108.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/30bdd_server_app_api_projects_[id]_workspace_import_route_actions_10d2bce2.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/7255d_app_api_projects_[id]_objectives_[objectiveId]_program_route_actions_e6cdbc76.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__1563ebff._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__3fdd57cb._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__45af4365._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__683b7ad7._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__736d5859._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__96b5ea56._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__ba72d342._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__c3188470._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/[root-of-the-server]__eb69343e._.js +3 -0
- 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_4d88e4dc._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_4dec65a2._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_50e3a6e3._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_56a2544c._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_5843a1a1._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_a15e73a6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_bd72806a._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c101ba9e._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_c530bd77._.js +11 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_d69937f2._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e2867b32._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_e32b0cab._.js +91 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_5ab8f104._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_lib_db_ts_77c23d6c._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/0da96_local__next-internal_server_app_projects_[slug]_thread_page_actions_3ceeb59b.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__1e0fd816._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__42499ecf._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5f31e40b._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{[root-of-the-server]__4bf7d5b9._.js → [root-of-the-server]__74436f61._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9434d6d7._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bd339da0._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__d08d7899._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e3a1fef0._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__f802e7d1._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ff96bb77._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_6a2ba8f0._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_7cb6b08a._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a0f42923._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_a93c1059._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_components_PromptJobBoard_tsx_281b2873._.js → apps_local_04cb9fd5._.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_15502af8._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_16eaf7ae._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3c11c068._.js +8 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_89b49aad._.js +7 -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_ae1a134f._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_agents_page_tsx_2a02508d._.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]_layout_tsx_3bb31889._.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_b8e580cc._.js +4 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_app_projects_[slug]_thread_[threadId]_page_tsx_2a1d1d5e._.js → apps_local_components_chat-ui_ChatContainer_tsx_47371955._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eb223411._.js +18 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/{apps_local_7d1abfbf._.js → apps_local_f1c9872a._.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/functions-config-manifest.json +3 -0
- 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 +4 -0
- 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/08e75b35d6c52269.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{cb19d71dd7ffb935.js → 1585dd5f9ec4866a.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/2586c0baa16e9a0d.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/2aa24a251622fd06.js +5 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/39513207112d6828.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{74e3a3e93be78db8.js → 40857295bb9226c4.js} +7 -7
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8d8fe711583a59f0.js → 41ae15220fc19bf7.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/5092f14c2bf43204.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/5159169343ce6d2f.css +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/67b36c70b72e0e10.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/7bfbfcd072f8d61e.js +20 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/7cf26dd04166f32f.js +6 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/90dcb743d23feeca.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/93749b45e2700808.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{48feca51cf97c8a7.js → 9bb8f1406365af81.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b4aa71020acae46f.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c5436b2b7e8f0ca9.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1600dd6ff8607d8f.js → c9a2c4b55bb76f4f.js} +6 -6
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d6a9cc66254693b8.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{9e703dd5d95e9557.js → e3bdd1e0f385114e.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{6ffcd12eabd7c65e.js → f71d73895d228547.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/f750d2f1882d31a8.js +5 -0
- package/cloud-runtime/standalone/apps/local/app/api/automations/route.ts +2 -10
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/objectives/[objectiveId]/program/route.ts +77 -0
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/export/route.ts +35 -0
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/workspace/import/route.ts +91 -0
- package/cloud-runtime/standalone/apps/local/app/api/prompt-jobs/route.ts +1 -8
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/layout.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/thread/page.tsx +14 -0
- package/cloud-runtime/standalone/apps/local/components/AutomationsBoard.tsx +15 -15
- package/cloud-runtime/standalone/apps/local/components/PromptJobBoard.tsx +7 -12
- package/cloud-runtime/standalone/apps/local/components/projects/FoldersSummaryCard.tsx +51 -196
- package/cloud-runtime/standalone/apps/local/components/projects/FoldersView.tsx +662 -784
- package/cloud-runtime/standalone/apps/local/components/projects/ObjectiveScheduledTasksPanel.tsx +7 -10
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectHome.tsx +4 -4
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +118 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectSettings.tsx +81 -7
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +13 -3
- package/cloud-runtime/standalone/apps/local/hooks/useProjectWorkspace.ts +117 -0
- package/cloud-runtime/standalone/apps/local/lib/db/projects.ts +14 -10
- package/cloud-runtime/standalone/apps/local/lib/project-workspace.ts +80 -0
- package/cloud-runtime/standalone/apps/local/lib/task-context.ts +39 -4
- package/cloud-runtime/standalone/apps/local/lib/workspace-yaml.ts +164 -0
- package/cloud-runtime/standalone/apps/local/src/objectives/program/index.ts +7 -0
- package/cloud-runtime/standalone/apps/local/src/objectives/program/repository.ts +60 -0
- package/cloud-runtime/standalone/apps/local/src/prompt-scheduler/objective-worker.ts +12 -0
- package/cloud-runtime/standalone/apps/local/src/scheduling/status.ts +42 -0
- package/cloud-runtime/standalone/apps/local/worker/index.js +14 -9
- package/lib/commands/workspace.js +145 -7
- package/package.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_09d85861._.js +0 -91
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_25136564._.js +0 -11
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_2caf4398._.js +0 -91
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_31ca7a35._.js +0 -91
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/9fb8c_lucide-react_dist_esm_icons_8c8ee1bc._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__23838f87._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__3b4708d5._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cbf624._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__49cdd178._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__55ed4ff9._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__a61463b8._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__bb42490f._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__ee9351f9._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_0ecd68e8._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_347d036d._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_5c140c38._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/_f99c22fd._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_30d021de._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_3b90cb76._.js +0 -18
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_9f36c765._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_8cc1a335._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1d8b2726979134e5.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/692103d55fcd0328.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/6952b44e247d594a.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/6bfdc40a24e65ca2.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/7ff071e8a33d2fd8.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/87e4fb11329a358d.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/92467c495ad08a85.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/941f7f3626ec442c.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/94a66d2d19268d25.js +0 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/add53c2fe147af75.css +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b35865f64b56d6f4.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/d662272e49df1950.js +0 -20
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/e0d68c6af17c8c87.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/f154e2ed7753f8ee.js +0 -16
- /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → xVMVGrzDjtD1H0bGL76NJ}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → xVMVGrzDjtD1H0bGL76NJ}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{fipnHmd6JPn9sTuFdYS0y → xVMVGrzDjtD1H0bGL76NJ}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[524509,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(756490),e=a.i(804632),f=a.i(627421),g=a.i(379065),h=a.i(552605),i=a.i(736868),j=a.i(89613),k=a.i(831709);let l=(0,k.default)("folder-search",[["path",{d:"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1",key:"1bw5m7"}],["path",{d:"m21 21-1.9-1.9",key:"1g2n9r"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}]]),m=(0,k.default)("git-branch",[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]),n=(0,k.default)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);var o=a.i(667597),p=a.i(353532),q=a.i(354658),r=a.i(697183),s=a.i(824179),t=a.i(830284),u=a.i(713178);function v({path:a}){let[d,g]=(0,c.useState)(!1);return(0,b.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),1500)},className:"rounded p-1 text-[var(--app-shell-soft-text)] transition-colors hover:text-[var(--foreground)]",title:"Copy path",children:d?(0,b.jsx)(f.Check,{className:"w-3 h-3 text-green-400"}):(0,b.jsx)(e.Copy,{className:"w-3 h-3"})})}function w({lang:a,count:c}){return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:[a,(0,b.jsx)("span",{className:"text-[var(--app-shell-soft-text)]",children:c})]})}function x({analysis:a}){let c=Object.entries(a.languages).sort(([,a],[,b])=>b-a).slice(0,5);return(0,b.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-4 py-2.5",children:[(0,b.jsx)(n,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:"Analysis"})]}),(0,b.jsxs)("div",{className:"px-4 py-3 space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(m,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),a.isGit?(0,b.jsx)("span",{className:"text-xs text-[var(--foreground)]",children:a.branch??"detached"}):(0,b.jsx)("span",{className:"text-xs italic text-[var(--muted-foreground)]",children:"Not a git repo"})]}),a.isGit&&a.status&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)]",children:[a.status.staged>0&&(0,b.jsxs)("span",{className:"text-[var(--status-completed-text)]",children:[a.status.staged," staged"]}),a.status.modified>0&&(0,b.jsxs)("span",{className:"text-[var(--status-blocked-text)]",children:[a.status.modified," modified"]}),a.status.untracked>0&&(0,b.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[a.status.untracked," untracked"]}),0===a.status.staged&&0===a.status.modified&&0===a.status.untracked&&(0,b.jsx)("span",{className:"text-[var(--app-shell-soft-text)]",children:"clean"})]})]}),c.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:c.map(([a,c])=>(0,b.jsx)(w,{lang:a,count:c},a))})]})]})}function y({repo:a,isSelected:c,onSelect:e}){return(0,b.jsxs)("button",{type:"button",onClick:e,className:`w-full text-left flex items-center gap-3 px-3 py-2.5 rounded-lg transition-colors group ${c?"border border-blue-500/20 bg-blue-500/10":"border border-transparent hover:bg-[var(--secondary)]"}`,children:[c?(0,b.jsx)(j.FolderOpen,{className:"w-4 h-4 text-blue-400 flex-shrink-0"}):(0,b.jsx)(i.FolderGit2,{className:"h-4 w-4 flex-shrink-0 text-[var(--muted-foreground)]"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:`truncate text-sm font-medium ${c?"text-blue-500":"text-[var(--foreground)]"}`,children:a.name}),(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path||a.git_url||"No path set"})]}),(0,b.jsx)(d.ChevronRight,{className:`w-3.5 h-3.5 flex-shrink-0 transition-colors ${c?"text-blue-500":"text-[var(--app-shell-soft-text)] group-hover:text-[var(--muted-foreground)]"}`})]})}function z({repo:a,systemNote:d,analysis:e,analysisLoading:f,onNoteSave:i,noteSaving:k,onEdit:l,onDelete:m}){let[n,p]=(0,c.useState)(a.notes??""),[t,u]=(0,c.useState)(!1),[w,y]=(0,c.useState)(n);return(0,c.useEffect)(()=>{p(a.notes??""),y(a.notes??""),u(!1)},[a.id,a.notes]),(0,b.jsxs)("div",{className:"space-y-5",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,b.jsx)(j.FolderOpen,{className:"w-5 h-5 text-blue-400 flex-shrink-0"}),(0,b.jsx)("h3",{className:"truncate text-lg font-semibold text-[var(--foreground)]",children:a.name})]}),a.path&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 ml-7",children:[(0,b.jsx)("code",{className:"truncate font-mono text-xs text-[var(--muted-foreground)]",children:a.path}),(0,b.jsx)(v,{path:a.path})]}),a.git_url&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 ml-7 mt-1",children:[(0,b.jsx)(g.ExternalLink,{className:"h-3 w-3 flex-shrink-0 text-[var(--app-shell-soft-text)]"}),(0,b.jsx)("a",{href:a.git_url,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-blue-400/70 hover:text-blue-400 truncate",children:a.git_url})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1 flex-shrink-0",children:[(0,b.jsx)("button",{type:"button",onClick:()=>l(a),className:"rounded-lg p-1.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:"Edit folder",children:(0,b.jsx)(o.Pencil,{className:"w-3.5 h-3.5"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m(a.id),className:"rounded-lg p-1.5 text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--destructive)]",title:"Delete folder",children:(0,b.jsx)(r.Trash2,{className:"w-3.5 h-3.5"})})]})]}),f&&(0,b.jsx)("div",{className:"rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-4 py-3",children:(0,b.jsx)("span",{className:"animate-pulse text-xs text-[var(--muted-foreground)]",children:"Analyzing folder..."})}),!f&&e&&(0,b.jsx)(x,{analysis:e}),(0,b.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--card-bg)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(h.FileText,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:"Notes"})]}),t?(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[10px] text-[var(--app-shell-soft-text)]",children:"Cmd+Enter to save"}),(0,b.jsxs)("button",{type:"button",onClick:()=>{u(!1),y(n)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(s.X,{className:"w-3 h-3"}),"Cancel"]}),(0,b.jsxs)("button",{type:"button",disabled:k,onClick:async()=>{await i(a.id,w),p(w),u(!1)},className:"flex items-center gap-1 text-xs text-blue-500 transition-colors hover:text-blue-600 disabled:opacity-50",children:[(0,b.jsx)(q.Save,{className:"w-3 h-3"}),"Save"]})]}):(0,b.jsxs)("button",{type:"button",onClick:()=>{y(n),u(!0)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(o.Pencil,{className:"w-3 h-3"}),"Edit"]})]}),(0,b.jsx)("div",{className:"px-4 py-3 min-h-[80px]",children:t?(0,b.jsx)("textarea",{value:w,onChange:a=>y(a.target.value),onKeyDown:b=>{"Enter"===b.key&&(b.metaKey||b.ctrlKey)?(b.preventDefault(),(async()=>{await i(a.id,w),p(w),u(!1)})()):"Escape"===b.key&&(u(!1),y(n))},className:"min-h-[120px] w-full resize-none bg-transparent text-sm text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)]",placeholder:"Add notes about this folder... (architecture, conventions, important files, etc.)",autoFocus:!0}):n?(0,b.jsx)("p",{className:"whitespace-pre-wrap text-sm text-[var(--foreground)]",children:n}):(0,b.jsx)("p",{className:"text-sm italic text-[var(--muted-foreground)]",children:"No notes yet. Click edit to describe this folder."})})]}),d&&(0,b.jsxs)("div",{className:"overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--secondary)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-4 py-2.5",children:[(0,b.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-emerald-500/60"}),(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:"Generated Knowledge"}),d.updated_at&&(0,b.jsx)("span",{className:"ml-auto text-xs text-[var(--app-shell-soft-text)]",children:new Date(d.updated_at).toLocaleDateString()})]}),(0,b.jsx)("div",{className:"whitespace-pre-wrap px-4 py-3 text-sm leading-relaxed text-[var(--muted-foreground)]",children:d.content})]})]})}function A({onAdd:a,onCancel:d}){let[e,f]=(0,c.useState)(""),[g,h]=(0,c.useState)(null),[i,k]=(0,c.useState)(!1),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),t=(0,c.useCallback)(async a=>{r(!0);try{let b=await fetch("/api/filesystem/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a})});if(b.ok){let a=await b.json();p(a.analysis)}}catch{}r(!1)},[]),v=(0,c.useCallback)(a=>{h(a),e.trim()||f(a.split("/").filter(Boolean).pop()??""),t(a)},[e,t]),w=(0,c.useCallback)(async()=>{n(!0);try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&v(b.path)}catch{}n(!1)},[v]),y=(0,c.useCallback)(async()=>{if(g&&e.trim()){k(!0);try{await a(e.trim(),g)}finally{k(!1)}}},[e,g,a]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Add Folder"}),(0,b.jsx)("button",{type:"button",onClick:d,className:"rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,b.jsx)(s.X,{className:"w-4 h-4"})})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:e,onChange:a=>f(a.target.value),className:"input w-full text-sm",placeholder:"Auto-detected from path"})]}),g&&(0,b.jsxs)("div",{className:"rounded-lg border border-blue-500/20 bg-blue-500/5 px-3 py-2 flex items-center gap-2",children:[(0,b.jsx)(j.FolderOpen,{className:"w-4 h-4 text-blue-400 flex-shrink-0"}),(0,b.jsx)("code",{className:"text-xs text-blue-300 font-mono truncate flex-1",children:g}),(0,b.jsx)("button",{type:"button",onClick:()=>{h(null),p(null)},className:"p-0.5 rounded text-blue-400/50 hover:text-blue-300 transition-colors flex-shrink-0",children:(0,b.jsx)(s.X,{className:"w-3 h-3"})})]}),q&&(0,b.jsx)("div",{className:"px-1 text-xs text-[var(--muted-foreground)] animate-pulse",children:"Analyzing..."}),!q&&o&&(0,b.jsx)(x,{analysis:o}),!g&&(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Choose a folder"}),(0,b.jsxs)("button",{type:"button",onClick:()=>void w(),disabled:m,className:"ml-auto inline-flex items-center gap-1.5 rounded-lg border border-[var(--border)] bg-[var(--secondary)] px-2.5 py-1 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:border-[var(--card-hover-border)] hover:text-[var(--foreground)] disabled:opacity-50",children:[(0,b.jsx)(l,{className:"w-3 h-3"}),m?"Opening...":"System Picker"]})]}),(0,b.jsx)(u.default,{initialPath:"",onSelect:v,onCancel:d})]}),g&&(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,b.jsx)("button",{type:"button",onClick:()=>void y(),disabled:!e.trim()||i,className:"btn-primary px-4 py-1.5 text-sm disabled:opacity-40",children:i?"Adding...":"Add Folder"}),(0,b.jsx)("button",{type:"button",onClick:d,className:"px-4 py-1.5 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"})]})]})}function B({repo:a,onSave:d,onCancel:e}){let[f,g]=(0,c.useState)(a.name),[h,i]=(0,c.useState)(a.path??""),[j,k]=(0,c.useState)(!1),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),q=(0,c.useCallback)(async()=>{p(!0);try{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json();b.path&&(i(b.path),k(!1))}catch{}p(!1)},[]);return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Edit Folder"}),(0,b.jsx)("button",{type:"button",onClick:e,className:"rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,b.jsx)(s.X,{className:"w-4 h-4"})})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:f,onChange:a=>g(a.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("label",{className:"text-xs font-medium text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("button",{type:"button",onClick:()=>k(!j),className:"text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:j?"Type path":"Browse"}),(0,b.jsxs)("button",{type:"button",onClick:()=>void q(),disabled:o,className:"inline-flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] disabled:opacity-50",children:[(0,b.jsx)(l,{className:"w-3 h-3"}),o?"Opening...":"System Picker"]})]})]}),j?(0,b.jsx)(u.default,{initialPath:h,onSelect:a=>{i(a),k(!1)},onCancel:()=>k(!1)}):(0,b.jsx)("input",{value:h,onChange:a=>i(a.target.value),className:"input w-full text-sm font-mono",placeholder:"/path/to/folder"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,b.jsx)("button",{type:"button",onClick:async()=>{if(f.trim()&&h.trim()){n(!0);try{await d(f.trim(),h.trim())}finally{n(!1)}}},disabled:!f.trim()||!h.trim()||m,className:"btn-primary px-4 py-1.5 text-sm disabled:opacity-40",children:m?"Saving...":"Save"}),(0,b.jsx)("button",{type:"button",onClick:e,className:"px-4 py-1.5 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"})]})]})}function C({projectId:a}){let{projects:d,updateProject:e}=(0,t.useProjectsWithAgents)(),f=d.find(b=>b.id===a),[g,h]=(0,c.useState)(null),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,u]=(0,c.useState)({}),[v,w]=(0,c.useState)({}),[x,C]=(0,c.useState)({}),D=f?.repos??[],E=D.find(a=>a.id===g)??null;(0,c.useEffect)(()=>{!g&&D.length>0&&h(D[0].id),g&&!D.find(a=>a.id===g)&&D.length>0&&h(D[0].id)},[D,g]),(0,c.useEffect)(()=>{let a=!1;return async function(){if(0===D.length)return u({});try{let b=await Promise.all(D.map(async a=>{var b;let c=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(a.id)}`),d=c.ok?await c.json():{note:null};return[a.id,(b=d.note)?{id:b.id,content:b.content,created_at:b.createdAt,updated_at:b.updatedAt}:null]}));a||u(Object.fromEntries(b))}catch{a||u({})}}(),()=>{a=!0}},[D]),(0,c.useEffect)(()=>{if(!E?.path||v[E.id])return;let a=E.id,b=E.path;C(b=>({...b,[a]:!0})),fetch("/api/filesystem/analyze",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b})}).then(a=>a.ok?a.json():null).then(b=>{b?.analysis&&w(c=>({...c,[a]:b.analysis}))}).catch(()=>{}).finally(()=>C(b=>({...b,[a]:!1})))},[E?.id,E?.path,v]);let F=(0,c.useCallback)(a=>{o(a),setTimeout(()=>o(null),2500)},[]),G=(0,c.useCallback)(()=>D.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url,notes:a.notes})),[D]),H=(0,c.useCallback)(async(b,c)=>{try{await e(a,{repos:[...G(),{name:b,path:c}]}),k(!1),F("Folder added")}catch{F("Failed to add")}},[e,a,G,F]),I=(0,c.useCallback)(async(b,c)=>{if(!l)return;let d=G().map(a=>a.id===l.id?{...a,name:b,path:c}:a);try{await e(a,{repos:d}),m(null),w(a=>{let b={...a};return delete b[l.id],b}),F("Folder updated")}catch{F("Failed to update")}},[l,e,a,G,F]),J=(0,c.useCallback)(async b=>{try{await e(a,{repos:G().filter(a=>a.id!==b)}),g===b&&h(null),F("Folder removed")}catch{F("Failed to remove")}},[e,a,G,g,F]),K=(0,c.useCallback)(async(b,c)=>{r(!0);let d=G().map(a=>a.id===b?{...a,notes:c}:a);try{await e(a,{repos:d}),F("Notes saved")}catch{F("Failed to save notes")}finally{r(!1)}},[e,a,G,F]);return f?(0,b.jsxs)("div",{className:"h-full flex overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex w-72 flex-shrink-0 flex-col border-r border-[var(--border)] bg-[var(--app-shell-pane)]",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Folders"}),D.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-1.5 py-0.5 text-xs text-[var(--muted-foreground)]",children:D.length})]}),(0,b.jsx)("button",{type:"button",onClick:()=>{k(!0),m(null)},className:"rounded-lg p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-blue-500",title:"Add folder",children:(0,b.jsx)(p.Plus,{className:"w-4 h-4"})})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto px-2 py-2 space-y-0.5",children:[0===D.length&&!j&&(0,b.jsxs)("div",{className:"px-3 py-8 text-center",children:[(0,b.jsx)(i.FolderGit2,{className:"mx-auto mb-3 h-8 w-8 text-[var(--app-shell-soft-text)]"}),(0,b.jsx)("p",{className:"mb-1 text-sm text-[var(--muted-foreground)]",children:"No folders yet"}),(0,b.jsx)("p",{className:"mb-4 text-xs text-[var(--app-shell-soft-text)]",children:"Link local repos or project directories"}),(0,b.jsxs)("button",{type:"button",onClick:()=>k(!0),className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium text-blue-400 border border-blue-500/20 hover:bg-blue-500/10 transition-colors",children:[(0,b.jsx)(p.Plus,{className:"w-3 h-3"}),"Add Folder"]})]}),D.map(a=>(0,b.jsx)(y,{repo:a,isSelected:g===a.id,onSelect:()=>{h(a.id),k(!1),m(null)}},a.id))]}),n&&(0,b.jsx)("div",{className:"border-t border-[var(--border)] px-4 py-2",children:(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n})})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,b.jsx)("div",{className:"max-w-2xl mx-auto px-6 py-6",children:j?(0,b.jsx)(A,{onAdd:H,onCancel:()=>k(!1)}):l?(0,b.jsx)(B,{repo:l,onSave:I,onCancel:()=>m(null)}):E?(0,b.jsx)(z,{repo:E,systemNote:s[E.id]??null,analysis:v[E.id]??null,analysisLoading:x[E.id]??!1,onNoteSave:K,noteSaving:q,onEdit:a=>m(a),onDelete:J}):D.length>0?(0,b.jsx)("div",{className:"flex h-64 items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Select a folder to view details"}):null})})]}):(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading..."})}function D({params:a}){let{slug:d}=(0,c.use)(a),{projects:e}=(0,t.useProjectsWithAgents)(),f=e.find(a=>a.slug===d);return f?(0,b.jsx)(C,{projectId:f.id}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading..."})}a.s(["default",()=>D],524509)}];
|
|
1
|
+
module.exports=[524509,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(340492),e=a.i(552605),f=a.i(157633),g=a.i(736868),h=a.i(785630),i=a.i(349692),j=a.i(667597),k=a.i(353532),l=a.i(354658),m=a.i(642784),n=a.i(144462),o=a.i(697183),p=a.i(262403),q=a.i(824179),r=a.i(109467),s=a.i(446946),t=a.i(967878);function u(a,b){switch(a){case"repositories":return"Repository";case"docs":return"Doc";case"config":return"Config";case"scripts":return"Script";default:return b}}function v(a,b){return{category:a,name:b?.name??"",path:b?.path??"",purpose:b?.purpose??"",error:null,isSaving:!1}}function w(a){switch(a){case"repositories":return g.FolderGit2;case"docs":return e.FileText;case"config":return m.Settings;case"scripts":return n.TerminalSquare;default:return f.Folder}}function x({projectId:a}){let{workspace:e,entryCount:f,isLoading:m,error:n,refetch:x,createEntry:y,updateEntry:z,deleteEntry:A}=(0,r.useProjectWorkspace)(a),[B,C]=(0,c.useState)([]),[D,E]=(0,c.useState)(null),[F,G]=(0,c.useState)(v("repositories")),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(null),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(null),R=(0,c.useRef)(null),S=(0,s.buildWorkspaceCategoryGroups)(e,B),T=0===f&&0===B.length&&!D,U=(0,c.useCallback)((a,b="neutral")=>{Q({tone:b,message:a}),window.setTimeout(()=>Q(null),3500)},[]),V=(0,c.useCallback)(async()=>{let a=await fetch("/api/filesystem/pick-folder",{method:"POST"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error("string"==typeof b.error?b.error:"Failed to open folder picker");return"string"==typeof b.path?b.path:null},[]),W=(0,c.useCallback)(()=>{E(null),G(v("repositories"))},[]),X=(0,c.useCallback)(a=>{E(a),G(v(a)),I(null),K(null)},[]),Y=(0,c.useCallback)(a=>{I(a.id),K(v(a.category,a)),E(null),G(v(a.category))},[]),Z=(0,c.useCallback)(()=>{I(null),K(null)},[]),$=(0,c.useCallback)(async()=>{let a=F.name.trim();if(!a)return void G(a=>({...a,error:"Name is required"}));G(a=>({...a,isSaving:!0,error:null}));try{await y({category:F.category,name:a,path:F.path.trim()||null,purpose:F.purpose.trim()||null}),W(),U(`Added ${a} to ${S.find(a=>a.id===F.category)?.label??"workspace map"}`,"success")}catch(a){G(b=>({...b,isSaving:!1,error:a instanceof Error?a.message:"Failed to add workspace entry"}))}},[F,W,y,S,U]),_=(0,c.useCallback)(async()=>{if(!H||!J)return;let a=J.name.trim();if(!a)return void K(a=>a?{...a,error:"Name is required"}:a);K(a=>a?{...a,isSaving:!0,error:null}:a);try{await z(H,{name:a,path:J.path.trim()||null,purpose:J.purpose.trim()||null}),Z(),U("Workspace entry updated","success")}catch(a){K(b=>({...b??v(""),isSaving:!1,error:a instanceof Error?a.message:"Failed to update workspace entry"}))}},[Z,J,H,U,z]),aa=(0,c.useCallback)(async a=>{if(window.confirm(`Delete ${a.name} from ${a.category}?`))try{await A(a.id),H===a.id&&Z(),U(`Deleted ${a.name}`,"success")}catch(a){U(a instanceof Error?a.message:"Failed to delete workspace entry","error")}},[Z,A,H,U]),ab=(0,c.useCallback)(async()=>{try{let a=await V();a&&G(b=>({...b,path:a,error:null}))}catch(a){G(b=>({...b,error:a instanceof Error?a.message:"Failed to pick folder"}))}},[V]),ac=(0,c.useCallback)(async()=>{if(J)try{let a=await V();a&&K(b=>b?{...b,path:a,error:null}:b)}catch(a){K(b=>b?{...b,error:a instanceof Error?a.message:"Failed to pick folder"}:b)}},[J,V]),ad=(0,c.useCallback)(async a=>{try{let b=await V();if(!b)return;await z(a.id,{path:b}),U(`Updated path for ${a.name}`,"success")}catch(a){U(a instanceof Error?a.message:"Failed to update path","error")}},[V,U,z]),ae=(0,c.useCallback)(()=>{let a=N.trim();if(!a)return;let b=S.find(b=>b.id.toLowerCase()===a.toLowerCase()||b.label.toLowerCase()===a.toLowerCase());if(b){O(""),M(!1),X(b.id);return}C(b=>[...b,a]),O(""),M(!1),X(a)},[N,S,X]),af=(0,c.useCallback)(a=>{C(b=>b.filter(b=>b!==a)),D===a&&W()},[D,W]),ag=(0,c.useCallback)(()=>{window.open(`/api/projects/${a}/workspace/export`,"_blank")},[a]),ah=(0,c.useCallback)(async b=>{let c=b.target.files?.[0];if(c)try{let b=await c.text(),d=await fetch(`/api/projects/${a}/workspace/import`,{method:"POST",headers:{"Content-Type":"application/x-yaml"},body:b});if(!d.ok){let a=await d.json().catch(()=>({}));throw Error("string"==typeof a.error?a.error:"Failed to import workspace YAML")}await x(),U("Imported workspace YAML","success")}catch(a){U(a instanceof Error?a.message:"Failed to import workspace YAML","error")}finally{R.current&&(R.current.value="")}},[a,x,U]);return(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:(0,b.jsxs)("div",{className:"mx-auto flex max-w-5xl flex-col gap-6 px-6 py-8",children:[(0,b.jsxs)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-6 shadow-sm",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,b.jsxs)("div",{className:"max-w-2xl",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center gap-2 text-[11px] font-semibold uppercase tracking-[0.2em] text-[var(--muted-foreground)]",children:[(0,b.jsx)(g.FolderGit2,{className:"h-3.5 w-3.5"}),"Project Setup"]}),(0,b.jsx)("h1",{className:"text-2xl font-semibold text-[var(--foreground)]",children:"Workspace Map"}),(0,b.jsx)("p",{className:"mt-2 text-sm leading-6 text-[var(--muted-foreground)]",children:"Map your project's folders so agents know where things live. Group repositories, docs, config, and scripts into a workspace that people and automation can navigate without guesswork."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>M(a=>!a),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(h.FolderPlus,{className:"h-4 w-4"}),"Add Category"]}),(0,b.jsxs)("button",{type:"button",onClick:ag,className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(d.Download,{className:"h-4 w-4"}),"Export YAML"]}),(0,b.jsxs)("label",{className:"inline-flex cursor-pointer items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(p.Upload,{className:"h-4 w-4"}),"Import YAML",(0,b.jsx)("input",{ref:R,type:"file",accept:".yaml,.yml",onChange:ah,className:"hidden"})]})]})]}),L&&(0,b.jsxs)("div",{className:"mt-4 flex flex-col gap-2 rounded-2xl border border-[var(--border)] bg-[var(--secondary)]/30 p-4 md:flex-row md:items-center",children:[(0,b.jsx)("input",{value:N,onChange:a=>O(a.target.value),placeholder:"Custom category name",className:"flex-1 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)]"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:ae,disabled:!N.trim(),className:"rounded-xl bg-[var(--foreground)] px-4 py-2 text-sm font-medium text-[var(--background)] disabled:opacity-40",children:"Create Category"}),(0,b.jsx)("button",{type:"button",onClick:()=>{M(!1),O("")},className:"rounded-xl px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:"Cancel"})]})]}),P&&(0,b.jsx)("p",{className:`mt-4 text-sm ${"error"===P.tone?"text-[var(--destructive)]":"success"===P.tone?"text-emerald-500":"text-[var(--muted-foreground)]"}`,children:P.message})]}),m&&(0,b.jsx)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-8",children:(0,b.jsxs)("div",{className:"flex items-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}),"Loading workspace map..."]})}),!m&&n&&(0,b.jsx)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-8",children:(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:n.message||"Failed to load workspace map"}),(0,b.jsx)("button",{type:"button",onClick:()=>void x(),className:"rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Try Again"})]})}),!m&&!n&&T&&(0,b.jsx)("section",{className:"rounded-3xl border border-dashed border-[var(--border)] bg-[var(--card-bg)] p-10 text-center",children:(0,b.jsxs)("div",{className:"mx-auto max-w-2xl",children:[(0,b.jsx)("h2",{className:"text-xl font-semibold text-[var(--foreground)]",children:"Tell your agents where things live."}),(0,b.jsx)("p",{className:"mt-3 text-sm leading-6 text-[var(--muted-foreground)]",children:"Add folders to your workspace so agents can find and work in the right places. Start with a repository, docs, or config, or import a shared workspace definition."}),(0,b.jsxs)("div",{className:"mt-6 flex flex-wrap items-center justify-center gap-3",children:[t.DEFAULT_WORKSPACE_CATEGORIES.slice(0,3).map(a=>{let c=w(a.id);return(0,b.jsxs)("button",{type:"button",onClick:()=>X(a.id),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-4 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(c,{className:"h-4 w-4"}),"Add ",u(a.id,a.label)]},a.id)}),(0,b.jsxs)("label",{className:"inline-flex cursor-pointer items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-4 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(p.Upload,{className:"h-4 w-4"}),"Import YAML",(0,b.jsx)("input",{type:"file",accept:".yaml,.yml",onChange:ah,className:"hidden"})]})]})]})}),!m&&!n&&!T&&(0,b.jsx)("div",{className:"space-y-4",children:S.map(a=>{let c=w(a.id);return(0,b.jsxs)("section",{className:"rounded-3xl border border-[var(--card-border)] bg-[var(--card-bg)] p-6",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-4 border-b border-[var(--border)] pb-4 md:flex-row md:items-start md:justify-between",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--secondary)]/40 p-3",children:(0,b.jsx)(c,{className:"h-5 w-5 text-[var(--muted-foreground)]"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-[var(--foreground)]",children:a.label}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:a.entries.length>0?`${a.entries.length} location${1===a.entries.length?"":"s"} mapped`:a.isPreset?`No ${a.label.toLowerCase()} mapped yet`:"Custom category ready for entries"})]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[!a.isPreset&&a.isEmpty&&(0,b.jsxs)("button",{type:"button",onClick:()=>af(a.id),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]",children:[(0,b.jsx)(o.Trash2,{className:"h-4 w-4"}),"Remove Empty Category"]}),(0,b.jsxs)("button",{type:"button",onClick:()=>X(a.id),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(k.Plus,{className:"h-4 w-4"}),"Add to ",a.label]})]})]}),(0,b.jsxs)("div",{className:"mt-4 space-y-3",children:[0===a.entries.length&&D!==a.id&&(0,b.jsx)("p",{className:"rounded-2xl border border-dashed border-[var(--border)] px-4 py-5 text-sm text-[var(--muted-foreground)]",children:a.isPreset?`Start this section by adding a ${u(a.id,a.label).toLowerCase()} and selecting a folder on disk.`:"This custom category is empty until you add its first folder."}),a.entries.map(a=>{let c=H===a.id&&J;return(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--secondary)]/20 p-4",children:[!c&&(0,b.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsx)("p",{className:"text-base font-medium text-[var(--foreground)]",children:a.name})}),(0,b.jsx)("p",{className:"mt-2 break-all font-mono text-xs text-[var(--muted-foreground)]",children:a.path||"No path selected yet"}),(0,b.jsx)("p",{className:"mt-3 text-sm leading-6 text-[var(--muted-foreground)]",children:a.purpose||"No purpose documented yet."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>void ad(a),className:"rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Browse"}),(0,b.jsxs)("button",{type:"button",onClick:()=>Y(a),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:[(0,b.jsx)(j.Pencil,{className:"h-4 w-4"}),"Edit"]}),(0,b.jsxs)("button",{type:"button",onClick:()=>void aa(a),className:"inline-flex items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]",children:[(0,b.jsx)(o.Trash2,{className:"h-4 w-4"}),"Delete"]})]})]}),c&&J&&(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:J.name,onChange:a=>K(b=>b?{...b,name:a.target.value,error:null}:b),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)]"})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:J.path,onChange:a=>K(b=>b?{...b,path:a.target.value,error:null}:b),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)]",placeholder:"/Users/you/Projects/repo"}),(0,b.jsx)("button",{type:"button",onClick:()=>void ac(),className:"rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Browse"})]})]})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Purpose"}),(0,b.jsx)("textarea",{value:J.purpose,onChange:a=>K(b=>b?{...b,purpose:a.target.value,error:null}:b),className:"min-h-24 w-full rounded-xl border border-[var(--border)] bg-[var(--background)] px-3 py-3 text-sm text-[var(--foreground)]",placeholder:"What should agents or teammates expect in this folder?"})]}),J.error&&(0,b.jsx)("p",{className:"text-sm text-[var(--destructive)]",children:J.error}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>void _(),disabled:J.isSaving,className:"inline-flex items-center gap-2 rounded-xl bg-[var(--foreground)] px-4 py-2 text-sm font-medium text-[var(--background)] disabled:opacity-40",children:[J.isSaving?(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(l.Save,{className:"h-4 w-4"}),"Save Changes"]}),(0,b.jsxs)("button",{type:"button",onClick:Z,className:"inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(q.X,{className:"h-4 w-4"}),"Cancel"]})]})]})]},a.id)}),D===a.id&&(0,b.jsxs)("div",{className:"rounded-2xl border border-[var(--border)] bg-[var(--background)] p-4",children:[(0,b.jsxs)("div",{className:"mb-3 flex items-center gap-2",children:[(0,b.jsx)(k.Plus,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsxs)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",a.label]})]}),(0,b.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,b.jsx)("input",{value:F.name,onChange:a=>G(b=>({...b,name:a.target.value,error:null})),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",placeholder:"backend, handbook, deploy"})]}),(0,b.jsxs)("label",{className:"block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{value:F.path,onChange:a=>G(b=>({...b,path:a.target.value,error:null})),className:"w-full rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)]",placeholder:"/Users/you/Projects/repo"}),(0,b.jsx)("button",{type:"button",onClick:()=>void ab(),className:"rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-2 text-sm text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]",children:"Browse"})]})]})]}),(0,b.jsxs)("label",{className:"mt-3 block",children:[(0,b.jsx)("span",{className:"mb-1 block text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Purpose"}),(0,b.jsx)("textarea",{value:F.purpose,onChange:a=>G(b=>({...b,purpose:a.target.value,error:null})),className:"min-h-24 w-full rounded-xl border border-[var(--border)] bg-[var(--card-bg)] px-3 py-3 text-sm text-[var(--foreground)]",placeholder:"Describe what lives here and why it matters."})]}),F.error&&(0,b.jsx)("p",{className:"mt-3 text-sm text-[var(--destructive)]",children:F.error}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>void $(),disabled:F.isSaving,className:"inline-flex items-center gap-2 rounded-xl bg-[var(--foreground)] px-4 py-2 text-sm font-medium text-[var(--background)] disabled:opacity-40",children:[F.isSaving?(0,b.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(l.Save,{className:"h-4 w-4"}),"Save Entry"]}),(0,b.jsxs)("button",{type:"button",onClick:W,className:"inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(q.X,{className:"h-4 w-4"}),"Cancel"]})]})]})]})]},a.id)})})]})})}var y=a.i(830284);function z({params:a}){let{slug:d}=(0,c.use)(a),{projects:e}=(0,y.useProjectsWithAgents)(),f=e.find(a=>a.slug===d);return f?(0,b.jsx)(x,{projectId:f.id}):(0,b.jsx)("div",{className:"flex items-center justify-center h-full text-sm text-zinc-500",children:"Loading..."})}a.s(["default",()=>z],524509)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_folders_page_tsx_72fb68e5._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[657613,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909),e=a.i(285320),f=a.i(970393),g=a.i(508869),h=a.i(523321),i=a.i(166621),j=a.i(654340),k=a.i(296037);let l=new Set(["spawning","running"]);function m(a,b){if(!a)return{name:"Unknown",color:"#6B7280"};let c=b.find(b=>b.id===a);return c?{name:c.name,color:c.color}:{name:a.slice(0,8),color:"#6B7280"}}var n=a.i(529889),o=a.i(8e4);let p={Chat:"bg-blue-500/15 text-blue-400","Scheduled Task":"bg-amber-500/15 text-amber-400",Automation:"bg-purple-500/15 text-purple-400",Daemon:"bg-zinc-500/15 text-zinc-400"};function q({status:a}){return"running"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}):"queued"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 shrink-0"}):"failed"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-400 shrink-0"}):(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-zinc-500 shrink-0"})}function r({item:a}){return(0,b.jsxs)("div",{className:"flex items-center gap-2.5 px-3 py-2 hover:bg-[var(--app-shell-subtle)] transition-colors rounded-md",children:[(0,b.jsx)("img",{src:(0,o.agentAvatarUrl)(a.agentId??a.id,20,a.agentColor),alt:"",className:"h-5 w-5 rounded-full shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(q,{status:a.status}),(0,b.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:a.agentName})]}),(0,b.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate mt-0.5",children:a.title})]}),(0,b.jsxs)("div",{className:"flex flex-col items-end gap-0.5 shrink-0",children:[(0,b.jsx)("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-medium ${p[a.source]??p.Daemon}`,children:a.source}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:function(a){let b=Date.now()-a;if(b<6e4)return"just now";let c=Math.floor(b/6e4);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);return`${d}h ago`}(a.startedAt)})]})]})}function s({items:a,onClose:d}){let e=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{e.current&&!e.current.contains(a.target)&&d()},b=setTimeout(()=>document.addEventListener("pointerdown",a),0);return()=>{clearTimeout(b),document.removeEventListener("pointerdown",a)}},[d]);let f=a.filter(a=>"running"===a.status||"queued"===a.status),g=a.filter(a=>"running"!==a.status&&"queued"!==a.status);return(0,b.jsx)("div",{ref:e,className:"absolute top-full right-0 z-50 mt-1.5 w-80 max-h-96 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg",children:0===a.length?(0,b.jsx)("div",{className:"flex flex-col items-center justify-center py-8 px-4",children:(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"No recent activity"})}):(0,b.jsxs)("div",{className:"py-1.5",children:[f.length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Active Now"})}),f.map(a=>(0,b.jsx)(r,{item:a},a.id))]}),g.length>0&&(0,b.jsxs)("div",{children:[f.length>0&&(0,b.jsx)("div",{className:"mx-3 my-1 border-t border-[var(--app-shell-border)]"}),(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Recent"})}),g.map(a=>(0,b.jsx)(r,{item:a},a.id))]})]})})}function t({projectId:a,participants:d}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),{items:f,activeCount:g}=function(a,b){let[d,e]=(0,c.useState)([]),f=(0,c.useRef)(null),g=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/processes");if(!a.ok)return;let b=await a.json();e(b)}catch{}},[]);(0,c.useEffect)(()=>(g(),f.current=setInterval(g,5e3),()=>{f.current&&clearInterval(f.current)}),[g]);let{jobs:h}=(0,k.usePromptJobs)(a),{automations:i}=function(){let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!0),[f,g]=(0,c.useState)(null),h=(0,c.useCallback)(async()=>{try{e(!0);let a=await fetch("/api/automations");if(!a.ok)throw Error(`Failed to fetch: ${a.status}`);let c=await a.json();b(c.automations??[]),g(null)}catch(a){g(a instanceof Error?a.message:String(a))}finally{e(!1)}},[]);(0,c.useEffect)(()=>{h();let a=setInterval(h,1e4);return()=>clearInterval(a)},[h]);let i=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pause"})});return b.ok&&await h(),b.ok},[h]),j=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume"})});return b.ok&&await h(),b.ok},[h]),k=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"DELETE"});return b.ok&&await h(),b.ok},[h]),l=(0,c.useCallback)(async a=>{let b=await fetch("/api/schedules/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:a})});if(b.ok)return await h(),{ok:!0};let c=await b.json().catch(()=>({}));return await h(),{ok:!1,skipReason:c.skipReason}},[h]);return{automations:a,loading:d,error:f,refresh:h,pauseSchedule:i,resumeSchedule:j,deleteSchedule:k,runNow:l}}(),j=(0,c.useMemo)(()=>{let c=Date.now()-36e5,e=[];for(let g of d){var f;if(a&&g.projectSlug!==a)continue;let d=(f=g.state,l.has(f)?"running":"done"===f?"completed":"error"===f||"killed"===f?"failed":"completed");if("running"!==d&&g.startedAt<c)continue;let{name:h,color:i}=m(g.agentId,b);e.push({id:`proc-${g.id}`,agentId:g.agentId,agentName:h,agentColor:i,type:g.threadId?"chat-run":"process",title:g.threadId?"Chat response":"Agent process",source:g.threadId?"Chat":"Daemon",status:d,startedAt:g.startedAt,durationMs:g.lastActivity-g.startedAt})}for(let d of h){if(a&&d.projectId!==a)continue;let f="running"===d.lastOutcome||"queued"===d.lastOutcome,g=d.lastRunAt??0;if(!f&&g<c)continue;let h=f?"queued"===d.lastOutcome?"queued":"running":"success"===d.lastOutcome?"completed":"failed"===d.lastOutcome?"failed":"completed",{name:i,color:j}=m(d.agentId,b);e.push({id:`job-${d.id}`,agentId:d.agentId,agentName:i,agentColor:j,type:"prompt-job",title:d.name,source:"Scheduled Task",status:h,startedAt:g,durationMs:null})}for(let b of i){if(a&&b.projectId!==a)continue;let d="running"===b.executionState,f=new Date(b.updatedAt).getTime();(d||!(f<c))&&e.push({id:`auto-${b.taskId}`,agentId:null,agentName:b.title,agentColor:"#7C3AED",type:"automation",title:b.title,source:"Automation",status:d?"running":"completed",startedAt:f,durationMs:null})}return e.sort((a,b)=>{let c=+("running"===a.status||"queued"===a.status),d=+("running"===b.status||"queued"===b.status);return c!==d?d-c:b.startedAt-a.startedAt}),e},[d,h,i,b,a]),n=(0,c.useMemo)(()=>j.filter(a=>"running"===a.status||"queued"===a.status).length,[j]);return{items:j,activeCount:n}}(a,d),[h,i]=(0,c.useState)(!1),o=(0,c.useCallback)(()=>i(!1),[]);return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>i(a=>!a),className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${e?"h-9 w-9":"h-7 w-7"}`,title:"Activity stream","aria-label":"Activity stream",children:[(0,b.jsx)(j.Activity,{className:e?"h-4 w-4":"h-3.5 w-3.5"}),g>0&&(0,b.jsx)("span",{className:"absolute top-0 right-0 h-2 w-2 rounded-full bg-emerald-400 animate-pulse"})]}),h&&(0,b.jsx)(s,{items:f,onClose:o})]})}var u=a.i(971382);let v=(0,a.i(831709).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var w=a.i(552605),x=a.i(349692),y=a.i(737313),z=a.i(542341),A=a.i(489461),B=a.i(985339),C=a.i(824179);function D({projectId:a}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),f=(0,d.useRouter)(),g=(0,d.usePathname)(),h=(0,c.useRef)(null),i=(0,c.useRef)(null),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)([]),[o,p]=(0,c.useState)(0),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(0),[H,I]=(0,c.useState)(new Set),J=j.trim(),K=(0,c.useMemo)(()=>l.map(a=>({...a,visibleResults:H.has(a.id)?a.results:a.results.slice(0,3),hiddenCount:Math.max(0,a.results.length-3)})),[H,l]),L=(0,c.useMemo)(()=>K.flatMap(a=>a.visibleResults),[K]),M=(0,c.useMemo)(()=>L.map(a=>`${a.kind}:${a.id}`),[L]),N=(0,c.useCallback)(()=>{k(""),m([]),p(0),t(null),r(!1),G(0)},[]),O=(0,c.useCallback)(a=>{N(),E(!1),f.push(a.href)},[N,f]);(0,c.useEffect)(()=>{N(),E(!1),I(new Set)},[N,g]),(0,c.useEffect)(()=>{let a=a=>{h.current?.contains(a.target)||E(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[]),(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key.toLowerCase()&&(a.preventDefault(),i.current?.focus(),i.current?.select())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{D&&G(0)},[D,l]),(0,c.useEffect)(()=>{if(!J||J.length<2){m([]),p(0),t(null),r(!1),I(new Set);return}let b=!1;r(!0);let c=window.setTimeout(()=>{(async()=>{try{let c=new URLSearchParams({q:J}),d=await fetch(`/api/projects/${encodeURIComponent(a)}/search?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(b)return;if(!d.ok){let a=e&&"object"==typeof e&&"error"in e?String(e.error):"Search failed";m([]),p(0),t(a);return}m(Array.isArray(e.sections)?e.sections:[]),p("number"==typeof e.total?e.total:0),t(null),I(new Set)}catch(a){if(b)return;console.error("Project search failed",a),m([]),p(0),t("Search failed")}finally{b||r(!1)}})()},220);return()=>{b=!0,window.clearTimeout(c)}},[J,a]);let P=D&&(J.length>0||q||null!==s),Q=L.length>0?L[Math.max(0,Math.min(F,L.length-1))]:null,R=(0,c.useCallback)(a=>{I(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);return(0,b.jsxs)("div",{ref:h,className:"relative w-full max-w-xl",children:[(0,b.jsxs)("div",{className:"group/search relative",children:[(0,b.jsx)(z.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,b.jsx)("input",{ref:i,type:"text",value:j,onFocus:()=>E(!0),onChange:a=>{k(a.target.value),E(!0)},onKeyDown:a=>{if("ArrowDown"===a.key&&L.length>0){a.preventDefault(),G(a=>(a+1)%L.length);return}if("ArrowUp"===a.key&&L.length>0){a.preventDefault(),G(a=>(a-1+L.length)%L.length);return}if("Enter"===a.key&&Q){a.preventDefault(),O(Q);return}"Escape"===a.key&&(J?N():(E(!1),i.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),J?(0,b.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:q?"…":o}),(0,b.jsx)("button",{type:"button",onClick:()=>{N(),i.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,b.jsx)(C.X,{className:"h-3.5 w-3.5"})})]}):e?null:(0,b.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),P?(0,b.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,b.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[J.length<2?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,q?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(x.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!q&&s?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:s}):null,q||s||!(J.length>=2)||0!==l.length?null:(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!q&&!s&&K.map(a=>(0,b.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,b.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[a.label,(0,b.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:a.results.length})]}),a.results.length>3?(0,b.jsx)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onClick:()=>R(a.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:H.has(a.id)?"Collapse":`Show ${a.hiddenCount} more`}):null]}),(0,b.jsx)("div",{className:"space-y-1",children:a.visibleResults.map(a=>{let c,d,e=`${a.kind}:${a.id}`,f=M.findIndex(a=>a===e),g=f===F,h=function(a){switch(a){case"objective":return A.Target;case"linear_issue":return w.FileText;case"scheduled_task":return v;case"team":return B.Users;case"agent":return u.Bot;case"chat_thread":case"chat_message":return y.MessageSquare;default:return z.Search}}(a.kind);return(0,b.jsxs)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onMouseEnter:()=>G(f),onClick:()=>O(a),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${g?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,b.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.title}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:a.label})]}),a.context?(0,b.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:a.context}):null,a.description?(0,b.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(c=a.description.split(/(<\/?mark>)/g),d=!1,c.map((a,c)=>"<mark>"===a?(d=!0,null):"</mark>"===a?(d=!1,null):a?d?(0,b.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:a},`mark-${c}`):(0,b.jsx)("span",{children:a},`text-${c}`):null))}):null]})]},e)})})]},a.id))]})}):null]})}var E=a.i(550158),F=a.i(830284),G=a.i(111013),H=a.i(227444);let I={home:!0,threads:!0,terminal:!0,objectives:!0,objectivesIsNew:!1,tracking:!0,teams:!0,folders:!0,scheduledTasks:!0,envVars:!0,notifications:!0};var J=a.i(455106),K=a.i(427411);function L({children:a,params:j}){let{slug:k}=(0,c.use)(j),{isTouchLayout:l}=(0,n.useInputCapabilities)(),m=(0,d.useRouter)(),o=(0,d.usePathname)(),{projects:p,isLoading:q,createProject:r,updateProject:s,deleteProject:u,addAgent:v,removeAgent:w}=(0,F.useProjectsWithAgents)(),{threads:x,isLoading:y,isCreating:z,deletingThreadId:A,renamingThreadId:B,isRestoringActiveThread:C,createThread:L,renameThread:M,deleteThread:N}=(0,G.useThreadState)(),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)(!1),[S,T]=(0,c.useState)(368),[U,V]=(0,c.useState)(()=>"light");(0,c.useEffect)(()=>{R((0,J.loadWorkspaceSidebarVisible)()),T((0,K.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{},[U]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>P(Array.isArray(a)?a:[])).catch(()=>P([]))},[]);let W=(0,c.useMemo)(()=>p.find(a=>a.slug===k)??null,[p,k]),X=(0,c.useMemo)(()=>{let a=o.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):W?.thread_ids[0]??null},[W?.thread_ids,o]),Y=(0,c.useMemo)(()=>o.includes("/linear")?"linear":o.includes("/automations")?"automations":o.includes("/thread/")?"thread":o.includes("/objectives")?"objectives":o.includes("/teams")?"teams":o.includes("/folders")?"folders":o.includes("/env-vars")?"env-vars":o.includes("/notifications")?"notifications":o.includes("/terminal")?"terminal":"home",[o]),{show:Z,trackerConnections:$}=function(a){let{connections:b,loading:d}=(0,H.useTrackerConnections)(a?.id??null);return(0,c.useMemo)(()=>{let a=b.map(a=>({type:a.type,connected:a.connected,connectedAt:a.connectedAt}));return d?{stage:"stage1",loading:!0,show:{...I},trackerConnections:[]}:{stage:"stage4",loading:!1,show:{...I},trackerConnections:a}},[d,b])}(W),_=()=>{let a=!Q;R(a),(0,J.persistWorkspaceSidebarVisible)(a)},aa=(0,c.useCallback)(a=>{T(a),(0,K.persistWorkspaceWidth)(a)},[]);return q?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):W?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(E.WorkspaceSidebar,{threads:x,participants:O,activeThreadId:X,isLoading:y,isRestoringActiveThread:C,isCreating:z,deletingThreadId:A,renamingThreadId:B,onSelectThread:a=>m.push(`/projects/${k}/thread/${encodeURIComponent(a)}`),onCreateThread:L,onRenameThread:M,onDeleteThread:N,visible:Q,onToggle:_,width:S,onWidthChange:aa,projects:p,onCreateProject:r,onUpdateProject:s,onDeleteProject:u,onAddAgentToProject:v,onRemoveAgentFromProject:w,activeProjectId:W.id,activeProjectView:Y,stageShow:Z,trackerConnections:$,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();P(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=p.find(b=>b.id===a);b&&m.push(`/projects/${b.slug}`)}}),(0,b.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"desktop-titlebar flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[!Q&&(0,b.jsx)("button",{type:"button",onClick:_,className:"inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",title:"Show sidebar","aria-label":"Show sidebar",children:(0,b.jsx)(f.PanelLeftOpen,{className:"h-4 w-4"})}),o!==`/projects/${k}`&&(0,b.jsx)("button",{type:"button",onClick:()=>m.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,b.jsx)(e.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}`),className:`text-xs transition-colors ${"home"===Y?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:W.name}),"home"!==Y&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}/${"thread"===Y?"":Y}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams",folders:"Folders","env-vars":"Environment Variables",notifications:"Notifications",linear:"Tasks",automations:"Scheduled Jobs",thread:"Chat",terminal:"Terminal"}[Y]??Y}),(0,b.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,b.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,b.jsx)(D,{projectId:W.id})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,b.jsx)(i.StatusIndicator,{}),(0,b.jsx)(t,{projectId:W.id,participants:O}),(0,b.jsx)("button",{type:"button",onClick:()=>V(a=>"dark"===a?"light":"dark"),"aria-label":"dark"===U?"Switch to light theme":"Switch to dark theme",title:"dark"===U?"Switch to light theme":"Switch to dark theme",className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${l?"h-9 w-9":"h-7 w-7"}`,children:"dark"===U?(0,b.jsx)(g.Sun,{className:l?"h-4 w-4":"h-3.5 w-3.5"}):(0,b.jsx)(h.Moon,{className:l?"h-4 w-4":"h-3.5 w-3.5"})})]})]}),a]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",k,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>m.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function M({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(L,{params:d,children:a})})}a.s(["default",()=>M],657613)}];
|
|
1
|
+
module.exports=[657613,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(516909),e=a.i(285320),f=a.i(970393),g=a.i(508869),h=a.i(523321),i=a.i(166621),j=a.i(654340),k=a.i(296037);let l=new Set(["spawning","running"]);function m(a,b){if(!a)return{name:"Unknown",color:"#6B7280"};let c=b.find(b=>b.id===a);return c?{name:c.name,color:c.color}:{name:a.slice(0,8),color:"#6B7280"}}var n=a.i(529889),o=a.i(8e4);let p={Chat:"bg-blue-500/15 text-blue-400","Scheduled Task":"bg-amber-500/15 text-amber-400",Automation:"bg-purple-500/15 text-purple-400",Daemon:"bg-zinc-500/15 text-zinc-400"};function q({status:a}){return"running"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-400 animate-pulse shrink-0"}):"queued"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 shrink-0"}):"failed"===a?(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-400 shrink-0"}):(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-zinc-500 shrink-0"})}function r({item:a}){return(0,b.jsxs)("div",{className:"flex items-center gap-2.5 px-3 py-2 hover:bg-[var(--app-shell-subtle)] transition-colors rounded-md",children:[(0,b.jsx)("img",{src:(0,o.agentAvatarUrl)(a.agentId??a.id,20,a.agentColor),alt:"",className:"h-5 w-5 rounded-full shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(q,{status:a.status}),(0,b.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)] truncate",children:a.agentName})]}),(0,b.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate mt-0.5",children:a.title})]}),(0,b.jsxs)("div",{className:"flex flex-col items-end gap-0.5 shrink-0",children:[(0,b.jsx)("span",{className:`text-[9px] px-1.5 py-0.5 rounded-full font-medium ${p[a.source]??p.Daemon}`,children:a.source}),(0,b.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:function(a){let b=Date.now()-a;if(b<6e4)return"just now";let c=Math.floor(b/6e4);if(c<60)return`${c}m ago`;let d=Math.floor(c/60);return`${d}h ago`}(a.startedAt)})]})]})}function s({items:a,onClose:d}){let e=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{e.current&&!e.current.contains(a.target)&&d()},b=setTimeout(()=>document.addEventListener("pointerdown",a),0);return()=>{clearTimeout(b),document.removeEventListener("pointerdown",a)}},[d]);let f=a.filter(a=>"running"===a.status||"queued"===a.status),g=a.filter(a=>"running"!==a.status&&"queued"!==a.status);return(0,b.jsx)("div",{ref:e,className:"absolute top-full right-0 z-50 mt-1.5 w-80 max-h-96 overflow-y-auto rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg",children:0===a.length?(0,b.jsx)("div",{className:"flex flex-col items-center justify-center py-8 px-4",children:(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"No recent activity"})}):(0,b.jsxs)("div",{className:"py-1.5",children:[f.length>0&&(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Active Now"})}),f.map(a=>(0,b.jsx)(r,{item:a},a.id))]}),g.length>0&&(0,b.jsxs)("div",{children:[f.length>0&&(0,b.jsx)("div",{className:"mx-3 my-1 border-t border-[var(--app-shell-border)]"}),(0,b.jsx)("div",{className:"px-3 py-1.5",children:(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Recent"})}),g.map(a=>(0,b.jsx)(r,{item:a},a.id))]})]})})}function t({projectId:a,participants:d}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),{items:f,activeCount:g}=function(a,b){let[d,e]=(0,c.useState)([]),f=(0,c.useRef)(null),g=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/processes");if(!a.ok)return;let b=await a.json();e(b)}catch{}},[]);(0,c.useEffect)(()=>(g(),f.current=setInterval(g,5e3),()=>{f.current&&clearInterval(f.current)}),[g]);let{jobs:h}=(0,k.usePromptJobs)(a),{automations:i}=function(){let[a,b]=(0,c.useState)([]),[d,e]=(0,c.useState)(!0),[f,g]=(0,c.useState)(null),h=(0,c.useCallback)(async()=>{try{e(!0);let a=await fetch("/api/automations");if(!a.ok)throw Error(`Failed to fetch: ${a.status}`);let c=await a.json();b(c.automations??[]),g(null)}catch(a){g(a instanceof Error?a.message:String(a))}finally{e(!1)}},[]);(0,c.useEffect)(()=>{h();let a=setInterval(h,1e4);return()=>clearInterval(a)},[h]);let i=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pause"})});return b.ok&&await h(),b.ok},[h]),j=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume"})});return b.ok&&await h(),b.ok},[h]),k=(0,c.useCallback)(async a=>{let b=await fetch(`/api/tasks/${a}/graph/schedule`,{method:"DELETE"});return b.ok&&await h(),b.ok},[h]),l=(0,c.useCallback)(async a=>{let b=await fetch("/api/schedules/poll",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:a})});if(b.ok)return await h(),{ok:!0};let c=await b.json().catch(()=>({}));return await h(),{ok:!1,skipReason:c.skipReason}},[h]);return{automations:a,loading:d,error:f,refresh:h,pauseSchedule:i,resumeSchedule:j,deleteSchedule:k,runNow:l}}(),j=(0,c.useMemo)(()=>{let c=Date.now()-36e5,e=[];for(let g of d){var f;if(a&&g.projectSlug!==a)continue;let d=(f=g.state,l.has(f)?"running":"done"===f?"completed":"error"===f||"killed"===f?"failed":"completed");if("running"!==d&&g.startedAt<c)continue;let{name:h,color:i}=m(g.agentId,b);e.push({id:`proc-${g.id}`,agentId:g.agentId,agentName:h,agentColor:i,type:g.threadId?"chat-run":"process",title:g.threadId?"Chat response":"Agent process",source:g.threadId?"Chat":"Daemon",status:d,startedAt:g.startedAt,durationMs:g.lastActivity-g.startedAt})}for(let d of h){if(a&&d.projectId!==a)continue;let f="running"===d.lastOutcome||"queued"===d.lastOutcome,g=d.lastRunAt??0;if(!f&&g<c)continue;let h=f?"queued"===d.lastOutcome?"queued":"running":"success"===d.lastOutcome?"completed":"failed"===d.lastOutcome?"failed":"completed",{name:i,color:j}=m(d.agentId,b);e.push({id:`job-${d.id}`,agentId:d.agentId,agentName:i,agentColor:j,type:"prompt-job",title:d.name,source:"Scheduled Task",status:h,startedAt:g,durationMs:null})}for(let b of i){if(a&&b.projectId!==a)continue;let d="running"===b.executionState,f=new Date(b.updatedAt).getTime();(d||!(f<c))&&e.push({id:`auto-${b.taskId}`,agentId:null,agentName:b.title,agentColor:"#7C3AED",type:"automation",title:b.title,source:"Automation",status:d?"running":"completed",startedAt:f,durationMs:null})}return e.sort((a,b)=>{let c=+("running"===a.status||"queued"===a.status),d=+("running"===b.status||"queued"===b.status);return c!==d?d-c:b.startedAt-a.startedAt}),e},[d,h,i,b,a]),n=(0,c.useMemo)(()=>j.filter(a=>"running"===a.status||"queued"===a.status).length,[j]);return{items:j,activeCount:n}}(a,d),[h,i]=(0,c.useState)(!1),o=(0,c.useCallback)(()=>i(!1),[]);return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>i(a=>!a),className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${e?"h-9 w-9":"h-7 w-7"}`,title:"Activity stream","aria-label":"Activity stream",children:[(0,b.jsx)(j.Activity,{className:e?"h-4 w-4":"h-3.5 w-3.5"}),g>0&&(0,b.jsx)("span",{className:"absolute top-0 right-0 h-2 w-2 rounded-full bg-emerald-400 animate-pulse"})]}),h&&(0,b.jsx)(s,{items:f,onClose:o})]})}var u=a.i(971382);let v=(0,a.i(831709).default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var w=a.i(552605),x=a.i(349692),y=a.i(737313),z=a.i(542341),A=a.i(489461),B=a.i(985339),C=a.i(824179);function D({projectId:a}){let{isTouchLayout:e}=(0,n.useInputCapabilities)(),f=(0,d.useRouter)(),g=(0,d.usePathname)(),h=(0,c.useRef)(null),i=(0,c.useRef)(null),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)([]),[o,p]=(0,c.useState)(0),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(0),[H,I]=(0,c.useState)(new Set),J=j.trim(),K=(0,c.useMemo)(()=>l.map(a=>({...a,visibleResults:H.has(a.id)?a.results:a.results.slice(0,3),hiddenCount:Math.max(0,a.results.length-3)})),[H,l]),L=(0,c.useMemo)(()=>K.flatMap(a=>a.visibleResults),[K]),M=(0,c.useMemo)(()=>L.map(a=>`${a.kind}:${a.id}`),[L]),N=(0,c.useCallback)(()=>{k(""),m([]),p(0),t(null),r(!1),G(0)},[]),O=(0,c.useCallback)(a=>{N(),E(!1),f.push(a.href)},[N,f]);(0,c.useEffect)(()=>{N(),E(!1),I(new Set)},[N,g]),(0,c.useEffect)(()=>{let a=a=>{h.current?.contains(a.target)||E(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[]),(0,c.useEffect)(()=>{let a=a=>{(a.metaKey||a.ctrlKey)&&"k"===a.key.toLowerCase()&&(a.preventDefault(),i.current?.focus(),i.current?.select())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{D&&G(0)},[D,l]),(0,c.useEffect)(()=>{if(!J||J.length<2){m([]),p(0),t(null),r(!1),I(new Set);return}let b=!1;r(!0);let c=window.setTimeout(()=>{(async()=>{try{let c=new URLSearchParams({q:J}),d=await fetch(`/api/projects/${encodeURIComponent(a)}/search?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(b)return;if(!d.ok){let a=e&&"object"==typeof e&&"error"in e?String(e.error):"Search failed";m([]),p(0),t(a);return}m(Array.isArray(e.sections)?e.sections:[]),p("number"==typeof e.total?e.total:0),t(null),I(new Set)}catch(a){if(b)return;console.error("Project search failed",a),m([]),p(0),t("Search failed")}finally{b||r(!1)}})()},220);return()=>{b=!0,window.clearTimeout(c)}},[J,a]);let P=D&&(J.length>0||q||null!==s),Q=L.length>0?L[Math.max(0,Math.min(F,L.length-1))]:null,R=(0,c.useCallback)(a=>{I(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]);return(0,b.jsxs)("div",{ref:h,className:"relative w-full max-w-xl",children:[(0,b.jsxs)("div",{className:"group/search relative",children:[(0,b.jsx)(z.Search,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--app-shell-soft-text)] transition-colors group-focus-within/search:text-[var(--primary)]",strokeWidth:1.8}),(0,b.jsx)("input",{ref:i,type:"text",value:j,onFocus:()=>E(!0),onChange:a=>{k(a.target.value),E(!0)},onKeyDown:a=>{if("ArrowDown"===a.key&&L.length>0){a.preventDefault(),G(a=>(a+1)%L.length);return}if("ArrowUp"===a.key&&L.length>0){a.preventDefault(),G(a=>(a-1+L.length)%L.length);return}if("Enter"===a.key&&Q){a.preventDefault(),O(Q);return}"Escape"===a.key&&(J?N():(E(!1),i.current?.blur()))},placeholder:"Search objectives, tickets, tasks, teams, agents, and chat…",className:"h-8 w-full rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] pl-9 pr-16 text-xs font-medium text-[var(--foreground)] outline-none placeholder:text-[var(--app-shell-soft-text)] transition-all hover:border-[var(--app-shell-border-strong)] focus:border-[var(--primary)] focus:ring-2 focus:ring-[var(--ring)]"}),J?(0,b.jsxs)("div",{className:"absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-2",children:[(0,b.jsx)("span",{className:"text-[11px] font-bold text-[var(--muted-foreground)]",children:q?"…":o}),(0,b.jsx)("button",{type:"button",onClick:()=>{N(),i.current?.focus()},className:"inline-flex h-5 w-5 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]","aria-label":"Clear search",children:(0,b.jsx)(C.X,{className:"h-3.5 w-3.5"})})]}):e?null:(0,b.jsx)("kbd",{className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-1.5 py-0.5 font-sans text-[10px] font-bold text-[var(--app-shell-soft-text)]",children:"⌘K"})]}),P?(0,b.jsx)("div",{className:"absolute left-0 right-0 top-[calc(100%+0.5rem)] z-50 overflow-hidden rounded-2xl border border-[var(--app-shell-border)] bg-[var(--app-shell-surface)] shadow-2xl shadow-black/20",children:(0,b.jsxs)("div",{className:"max-h-[28rem] overflow-y-auto p-2",children:[J.length<2?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"Keep typing to search across project entities."}):null,q?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:[(0,b.jsx)(x.Loader2,{className:"h-4 w-4 animate-spin"}),"Searching this project…"]}):null,!q&&s?(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-rose-500",children:s}):null,q||s||!(J.length>=2)||0!==l.length?null:(0,b.jsx)("div",{className:"rounded-xl px-3 py-4 text-sm text-[var(--muted-foreground)]",children:"No matches in this project."}),!q&&!s&&K.map(a=>(0,b.jsxs)("div",{className:"mb-2 last:mb-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 pb-1 pt-2",children:[(0,b.jsxs)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--app-shell-soft-text)]",children:[a.label,(0,b.jsx)("span",{className:"ml-1.5 text-[9px] text-[var(--muted-foreground)]",children:a.results.length})]}),a.results.length>3?(0,b.jsx)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onClick:()=>R(a.id),className:"text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:H.has(a.id)?"Collapse":`Show ${a.hiddenCount} more`}):null]}),(0,b.jsx)("div",{className:"space-y-1",children:a.visibleResults.map(a=>{let c,d,e=`${a.kind}:${a.id}`,f=M.findIndex(a=>a===e),g=f===F,h=function(a){switch(a){case"objective":return A.Target;case"linear_issue":return w.FileText;case"scheduled_task":return v;case"team":return B.Users;case"agent":return u.Bot;case"chat_thread":case"chat_message":return y.MessageSquare;default:return z.Search}}(a.kind);return(0,b.jsxs)("button",{type:"button",onMouseDown:a=>a.preventDefault(),onMouseEnter:()=>G(f),onClick:()=>O(a),className:`flex w-full items-start gap-3 rounded-xl px-3 py-2.5 text-left transition-colors ${g?"bg-[var(--app-shell-subtle)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,children:[(0,b.jsx)("span",{className:"mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--app-shell-muted)]",children:(0,b.jsx)(h,{className:"h-3.5 w-3.5",strokeWidth:1.75})}),(0,b.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.title}),(0,b.jsx)("span",{className:"shrink-0 rounded-full bg-[var(--app-shell-subtle)] px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--app-shell-soft-text)]",children:a.label})]}),a.context?(0,b.jsx)("span",{className:"mt-0.5 block truncate text-xs text-[var(--muted-foreground)]",children:a.context}):null,a.description?(0,b.jsx)("span",{className:"mt-1 block text-xs leading-5 text-[var(--muted-foreground)]",children:(c=a.description.split(/(<\/?mark>)/g),d=!1,c.map((a,c)=>"<mark>"===a?(d=!0,null):"</mark>"===a?(d=!1,null):a?d?(0,b.jsx)("mark",{className:"rounded bg-amber-200/80 px-0.5 text-inherit",children:a},`mark-${c}`):(0,b.jsx)("span",{children:a},`text-${c}`):null))}):null]})]},e)})})]},a.id))]})}):null]})}var E=a.i(550158),F=a.i(830284),G=a.i(111013),H=a.i(227444);let I={home:!0,threads:!0,terminal:!0,objectives:!0,objectivesIsNew:!1,tracking:!0,teams:!0,folders:!0,scheduledTasks:!0,envVars:!0,notifications:!0};var J=a.i(455106),K=a.i(427411);function L({children:a,params:j}){let{slug:k}=(0,c.use)(j),{isTouchLayout:l}=(0,n.useInputCapabilities)(),m=(0,d.useRouter)(),o=(0,d.usePathname)(),{projects:p,isLoading:q,createProject:r,updateProject:s,deleteProject:u,addAgent:v,removeAgent:w}=(0,F.useProjectsWithAgents)(),{threads:x,isLoading:y,isCreating:z,deletingThreadId:A,renamingThreadId:B,isRestoringActiveThread:C,createThread:L,renameThread:M,deleteThread:N}=(0,G.useThreadState)(),[O,P]=(0,c.useState)([]),[Q,R]=(0,c.useState)(!1),[S,T]=(0,c.useState)(368),[U,V]=(0,c.useState)(()=>"light");(0,c.useEffect)(()=>{R((0,J.loadWorkspaceSidebarVisible)()),T((0,K.loadWorkspaceWidth)()||368)},[]),(0,c.useEffect)(()=>{},[U]),(0,c.useEffect)(()=>{fetch("/api/participants").then(a=>a.json()).then(a=>P(Array.isArray(a)?a:[])).catch(()=>P([]))},[]);let W=(0,c.useMemo)(()=>p.find(a=>a.slug===k)??null,[p,k]),X=(0,c.useMemo)(()=>{let a=o.match(/\/projects\/[^/]+\/thread\/([^/]+)/);return a?.[1]?decodeURIComponent(a[1]):W?.thread_ids[0]??null},[W?.thread_ids,o]),Y=(0,c.useMemo)(()=>o.includes("/linear")?"linear":o.includes("/automations")?"automations":o.includes("/thread/")?"thread":o.includes("/objectives")?"objectives":o.includes("/teams")?"teams":o.includes("/folders")?"folders":o.includes("/env-vars")?"env-vars":o.includes("/notifications")?"notifications":o.includes("/terminal")?"terminal":"home",[o]),{show:Z,trackerConnections:$}=function(a){let{connections:b,loading:d}=(0,H.useTrackerConnections)(a?.id??null);return(0,c.useMemo)(()=>{let a=b.map(a=>({type:a.type,connected:a.connected,connectedAt:a.connectedAt}));return d?{stage:"stage1",loading:!0,show:{...I},trackerConnections:[]}:{stage:"stage4",loading:!1,show:{...I},trackerConnections:a}},[d,b])}(W),_=()=>{let a=!Q;R(a),(0,J.persistWorkspaceSidebarVisible)(a)},aa=(0,c.useCallback)(a=>{T(a),(0,K.persistWorkspaceWidth)(a)},[]);return q?(0,b.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,b.jsx)("span",{className:"spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"})}):W?(0,b.jsxs)("div",{className:"flex h-dvh min-h-0 overflow-hidden bg-[var(--background)]",children:[(0,b.jsx)(E.WorkspaceSidebar,{threads:x,participants:O,activeThreadId:X,isLoading:y,isRestoringActiveThread:C,isCreating:z,deletingThreadId:A,renamingThreadId:B,onSelectThread:a=>m.push(`/projects/${k}/thread/${encodeURIComponent(a)}`),onCreateThread:L,onRenameThread:M,onDeleteThread:N,visible:Q,onToggle:_,width:S,onWidthChange:aa,projects:p,onCreateProject:r,onUpdateProject:s,onDeleteProject:u,onAddAgentToProject:v,onRemoveAgentFromProject:w,activeProjectId:W.id,activeProjectView:Y,stageShow:Z,trackerConnections:$,onUpdateParticipant:async a=>{let b=await fetch("/api/participants",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok)throw Error("Failed to update agent");let c=await b.json();P(a=>a.map(a=>a.id===c.id?c:a))},onSelectProject:a=>{let b=p.find(b=>b.id===a);b&&m.push(`/projects/${b.slug}`)}}),(0,b.jsxs)("div",{className:"flex-1 min-h-0 flex flex-col min-w-0 h-full overflow-hidden",children:[(0,b.jsxs)("div",{className:"desktop-titlebar flex items-center px-4 py-2 border-b border-[var(--app-shell-border)] bg-[var(--background)] shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0 flex-shrink-0",children:[!Q&&(0,b.jsx)("button",{type:"button",onClick:_,className:"inline-flex h-9 w-9 items-center justify-center rounded-xl border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",title:"Show sidebar","aria-label":"Show sidebar",children:(0,b.jsx)(f.PanelLeftOpen,{className:"h-4 w-4"})}),o!==`/projects/${k}`&&(0,b.jsx)("button",{type:"button",onClick:()=>m.back(),className:"p-1 -ml-1 rounded-lg text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors",children:(0,b.jsx)(e.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}`),className:`text-xs transition-colors ${"home"===Y?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:W.name}),"home"!==Y&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"\\"}),(0,b.jsx)("button",{type:"button",onClick:()=>m.push(`/projects/${k}/${"thread"===Y?"":Y}`),className:"text-xs text-[var(--foreground)] hover:text-[var(--muted-foreground)] transition-colors",children:{objectives:"Objectives",teams:"Teams",folders:"Workspace Map","env-vars":"Environment Variables",notifications:"Notifications",linear:"Tasks",automations:"Scheduled Jobs",thread:"Chat",terminal:"Terminal"}[Y]??Y}),(0,b.jsx)("span",{id:"topbar-breadcrumb",className:"contents"})]})]}),(0,b.jsx)("div",{className:"flex-1 flex justify-center min-w-0 px-4",children:(0,b.jsx)(D,{projectId:W.id})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,b.jsx)(i.StatusIndicator,{}),(0,b.jsx)(t,{projectId:W.id,participants:O}),(0,b.jsx)("button",{type:"button",onClick:()=>V(a=>"dark"===a?"light":"dark"),"aria-label":"dark"===U?"Switch to light theme":"Switch to dark theme",title:"dark"===U?"Switch to light theme":"Switch to dark theme",className:`inline-flex items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] ${l?"h-9 w-9":"h-7 w-7"}`,children:"dark"===U?(0,b.jsx)(g.Sun,{className:l?"h-4 w-4":"h-3.5 w-3.5"}):(0,b.jsx)(h.Moon,{className:l?"h-4 w-4":"h-3.5 w-3.5"})})]})]}),a]})]}):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center h-full",children:[(0,b.jsx)("h2",{className:"text-xl font-bold mb-2",children:"Project Not Found"}),(0,b.jsxs)("p",{className:"text-[var(--muted-foreground)] mb-4",children:["The project “",k,"” does not exist or you do not have access to it."]}),(0,b.jsx)("button",{onClick:()=>m.push("/projects"),className:"px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:bg-[var(--primary-dark)] transition-colors",children:"Back to Projects"})]})}function M({children:a,params:d}){return(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading project…"}),children:(0,b.jsx)(L,{params:d,children:a})})}a.s(["default",()=>M],657613)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_layout_tsx_3bb31889._.js.map
|
|
@@ -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(667597),p=a.i(353532),q=a.i(697183),r=a.i(824179),s=a.i(830284);function t({projectId:a,repos:d,onViewAll:e}){let{updateProject:f}=(0,s.useProjects)(),[g,h]=(0,c.useState)(d),[i,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null),[t,u]=(0,c.useState)(""),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(null);(0,c.useEffect)(()=>{h(d)},[d]);let z=a=>{y(a),window.setTimeout(()=>y(null),2500)},A=a=>a.map(a=>({id:a.id,name:a.name,path:a.path,git_url:a.git_url})),B=()=>{u(""),w(""),m(null),k(!1)},C=async()=>{let b=t.trim(),c=v.trim();if(b&&c){h([...g,{id:`tmp-${Date.now()}`,name:b,path:c}]),B();try{await f(a,{repos:[...A(g),{name:b,path:c}]}),z("Folder added")}catch{h(g),z("Failed to add folder")}}},D=async b=>{let c=t.trim(),d=v.trim();if(!c||!d)return;let e=g.map(a=>a.id===b?{...a,name:c,path:d}:a);h(e),B();try{await f(a,{repos:A(e)}),z("Folder updated")}catch{h(g),z("Failed to update folder")}},E=async b=>{let c=g.filter(a=>a.id!==b);h(c),l===b&&B();try{await f(a,{repos:A(c)}),z("Folder deleted")}catch{h(g),z("Failed to delete folder")}};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)(n.FolderGit2,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,b.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Folders"}),g.length>0&&(0,b.jsx)("span",{className:"rounded-full bg-[var(--secondary)] px-2 py-0.5 text-xs text-[var(--muted-foreground)]",children:g.length})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{m(null),u(""),w(""),k(!0)},className:"flex items-center gap-1 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(p.Plus,{className:"w-3 h-3"}),"Add"]}),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"})]})]})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-xs text-[var(--muted-foreground)]",children:x}),(i||l)&&(0,b.jsxs)("div",{className:"mb-3 space-y-2 rounded-xl border border-[var(--border)] bg-[var(--secondary)] p-3",children:[(0,b.jsx)("input",{value:t,onChange:a=>u(a.target.value),className:"input w-full text-sm",placeholder:"Folder name",autoFocus:!0}),(0,b.jsx)("input",{value:v,onChange:a=>w(a.target.value),className:"input w-full text-sm",placeholder:"Local path"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{l?D(l):C()},disabled:!t.trim()||!v.trim(),className:"rounded-lg bg-[var(--foreground)] px-3 py-1.5 text-xs font-medium text-[var(--background)] disabled:opacity-40",children:"Save"}),(0,b.jsxs)("button",{type:"button",onClick:B,className:"flex items-center gap-1 rounded-lg px-2 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,b.jsx)(r.X,{className:"w-3 h-3"}),"Cancel"]})]})]}),0===g.length?(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No folders linked"}):(0,b.jsx)("div",{className:"space-y-2",children:g.slice(0,5).map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)(n.FolderGit2,{className:"h-4 w-4 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}),a.path&&(0,b.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:a.path})]}),(0,b.jsx)("button",{type:"button",onClick:()=>{k(!1),m(a.id),u(a.name),w(a.path??"")},className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]","aria-label":`Edit ${a.name}`,children:(0,b.jsx)(o.Pencil,{className:"w-3 h-3"})}),(0,b.jsx)("button",{type:"button",onClick:()=>void E(a.id),className:"p-1 text-[var(--muted-foreground)] transition-colors hover:text-[var(--destructive)]","aria-label":`Delete ${a.name}`,children:(0,b.jsx)(q.Trash2,{className:"w-3 h-3"})})]},a.id))})]})}var u=a.i(489461),v=a.i(769677),w=a.i(599086);let x={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 y({objective:a,teamName:c,onClick:d}){let e=x[a.status]??x.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)(w.AlertTriangle,{className:"h-3 w-3"}),c??"No team"]}),(0,b.jsxs)("span",{children:[a.progress,"%"]})]})]})}function z({projectId:a,projectSlug:d}){let f=(0,e.useRouter)(),{projects:g,isLoading:h}=(0,s.useProjects)(),i=(0,c.useMemo)(()=>g.find(a=>a.slug===d),[g,d]),k=(0,c.useMemo)(()=>(0,v.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)(u.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)(y,{objective:a,teamName:n.get(a.teamId)??null,onClick:()=>f.push(`/projects/${d}/objectives/${encodeURIComponent(a.id)}`)},a.id))})]})}var A=a.i(737313),B=a.i(144462),C=a.i(947218),D=a.i(392045),E=a.i(763197);function F({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 G({projectId:a,projectSlug:d,primaryThreadId:f}){var g;let h=(0,e.useRouter)(),{connected:i,loading:j}=(0,C.useTrackerConnection)("linear",a),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(0),o=(0,E.useTerminalTabsStore)(a=>a.sessions[d])??[],[p,q]=(0,c.useState)(()=>E.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(E.useTerminalTabsStore.persist.hasHydrated()),E.useTerminalTabsStore.persist.onFinishHydration(()=>{q(!0)})),[]),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,b.jsx)(F,{icon:(0,b.jsx)(A.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)(A.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)(F,{icon:(0,b.jsx)(B.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)(F,{icon:(0,b.jsx)(D.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 H({projectId:a,projectSlug:c,projectName:d,projectDescription:f,projectMetadata:h,repos:j,threadIds:l}){let n=(0,e.useRouter)(),o=l[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:[f&&(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:f}),(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)(z,{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)(G,{projectId:a,projectSlug:c,primaryThreadId:o})]}),(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:()=>n.push(`/projects/${c}/automations`)}),(0,b.jsx)(g,{projectSlug:c,projectThreadIds:l}),(0,b.jsx)(i,{projectId:a,projectSlug:c,projectThreadIds:l})]})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,b.jsx)(t,{projectId:a,repos:j}),(0,b.jsx)(k,{projectId:a,onViewAll:()=>n.push(`/projects/${c}/teams`)})]})]})})}var I=a.i(53954);function J({params:a}){let{slug:e}=(0,c.use)(a),{projects:f}=(0,s.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)(I.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)(H,{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",()=>J],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 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)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_app_projects_%5Bslug%5D_page_tsx_76330306._.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[894843,a=>{a.n(a.i(386505))},948201,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:["thread",{children:["__PAGE__",{},{metadata:{},page:[()=>a.r(894843),"[project]/apps/local/app/projects/[slug]/thread/page.tsx"]}]},{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]/thread/page",pathname:"/projects/[slug]/thread",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]/thread/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],821989),a.i(821989),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],948201)}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=apps_local_b8e580cc._.js.map
|