@mndrk/agx 2.4.8 → 2.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -53
- package/cloud-runtime/standalone/apps/local/.next/BUILD_ID +1 -1
- 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/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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents/page_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 +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/agents.segments/agents.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agent-specs/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/[id]/profile/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/agents/export/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/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]/scheduled-tasks/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/objectives/[objectiveId]/worker/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/search/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/projects/[id]/teams/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/prompt-jobs/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/check/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/debug/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/schedules/poll/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/assign/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/available/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/history/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/learn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/skills/unlearn/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/status/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/summarize/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/[commentId]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/comments/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/nodes/[nodeId]/verify/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/api/tasks/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 +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/index.segments/_index.segment.rsc +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 +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/integrations/github/select-repos.segments/_full.segment.rsc +4 -4
- 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 +2 -2
- 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.js.nft.json +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/thread/page_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects/[slug]/tracking/[tracker]/page.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 +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_full.segment.rsc +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/projects.segments/_index.segment.rsc +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_client-reference-manifest.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.rsc +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_full.segment.rsc +4 -4
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/setup.segments/_index.segment.rsc +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 +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_full.segment.rsc +3 -3
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_head.segment.rsc +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_index.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/_tree.segment.rsc +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/app/status.segments/status/__PAGE__.segment.rsc +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/chunks/[root-of-the-server]__8917bc4c._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/apps_local_22ab9b7c._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__5187dece._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7752d2d2._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__7a31a76d._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__9193284e._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__c0bc6058._.js +7 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e8c6a1f1._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_988d29c0._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_[slug]_page_tsx_76330306._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_projects_page_tsx_b5cec607._.js +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_app_setup_page_tsx_9a67cfaf._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_ProjectModal_tsx_c447494c._.js +3 -0
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_TrackerBoard_tsx_98970bab._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_components_projects_ProjectObjectivesWorkspace_tsx_751ab3d3._.js +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eec36ab6._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_fed01721._.js +1 -1
- package/cloud-runtime/standalone/apps/local/.next/server/middleware-manifest.json +5 -5
- package/cloud-runtime/standalone/apps/local/.next/server/pages/404.html +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/pages/500.html +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/23b7c6b08d8bf807.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{d6a9cc66254693b8.js → 46add4300ec4ed84.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/5709a6f7c5c182d6.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{ed606d6f94457578.css → 6d8a7494a0cea7a0.css} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/9ac96f1f33a266f9.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{8b87c2521c519a1f.js → afad1102543847bf.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{c9a2c4b55bb76f4f.js → b27f760849f14f13.js} +5 -5
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{52a7b1805199c6fb.js → b4716c6337e3335c.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/b53629835d2a70f0.js +16 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/bb99cb03648e6fae.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c8c0c4b13e08bb14.js +1 -0
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{7bfbfcd072f8d61e.js → d0ba5f3dc5296486.js} +3 -3
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{3fce625820bc2bd4.js → de56d09bb0de7dd5.js} +2 -2
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{1585dd5f9ec4866a.js → e5fdfbbe9bae1f03.js} +1 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/{90dd4ab03ab145d1.js → f007705fe5db26f1.js} +1 -1
- package/cloud-runtime/standalone/apps/local/app/api/projects/[id]/route.ts +4 -1
- package/cloud-runtime/standalone/apps/local/app/api/projects/payload.ts +23 -9
- package/cloud-runtime/standalone/apps/local/app/api/projects/route.ts +4 -1
- package/cloud-runtime/standalone/apps/local/app/integrations/github/select-repos/page.tsx +2 -0
- package/cloud-runtime/standalone/apps/local/app/layout.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/page.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/app/projects/[slug]/page.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/app/projects/page.tsx +7 -3
- package/cloud-runtime/standalone/apps/local/components/ProjectModal.tsx +111 -91
- package/cloud-runtime/standalone/apps/local/components/TrackerBoard.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/project-repo-validation.ts +65 -0
- package/cloud-runtime/standalone/apps/local/components/projects/ProjectObjectivesWorkspace.tsx +22 -2
- package/cloud-runtime/standalone/apps/local/components/setup/McpSetupStep.tsx +1 -1
- package/cloud-runtime/standalone/apps/local/components/setup/ProviderStep.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/components/thread/WorkspaceSidebar.tsx +6 -2
- package/cloud-runtime/standalone/apps/local/components/tracking/TrackerSetup.tsx +2 -2
- package/cloud-runtime/standalone/apps/local/worker/index.js +4 -2
- package/package.json +2 -2
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__636799fb._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/[root-of-the-server]__e02a457c._.js +0 -3
- package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_ae1a134f._.js +0 -7
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/0d22a723b9b96e65.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/1bc8cc9cbb99c1ed.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/c352706a0ad7e35d.js +0 -1
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/cf33cb29946990e3.js +0 -16
- package/cloud-runtime/standalone/apps/local/.next/static/chunks/e3bdd1e0f385114e.js +0 -1
- /package/cloud-runtime/standalone/apps/local/.next/static/{O3Yu8lY-DN5fauB8GipIL → x7w3oijN4B1r7IvTuL96T}/_buildManifest.js +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{O3Yu8lY-DN5fauB8GipIL → x7w3oijN4B1r7IvTuL96T}/_clientMiddlewareManifest.json +0 -0
- /package/cloud-runtime/standalone/apps/local/.next/static/{O3Yu8lY-DN5fauB8GipIL → x7w3oijN4B1r7IvTuL96T}/_ssgManifest.js +0 -0
package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_eec36ab6._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[663504,235992,a=>{"use strict";var b=a.i(831709);let c=(0,b.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);a.s(["Key",()=>c],663504);let d=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>d],235992)},500650,a=>{"use strict";let b=(0,a.i(831709).default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>b],500650)},778784,451844,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(44668),e=a.i(663504),f=a.i(235992),g=a.i(349692),h=a.i(693896),i=a.i(356239),j=a.i(500650),k=a.i(392045),l=a.i(353532),m=a.i(824179),n=a.i(864061);let o=(0,a.i(831709).default)("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function p({projectId:a}){let[d,e]=(0,c.useState)([]),[f,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)("all"),[C,D]=(0,c.useState)(new Set),[E,F]=(0,c.useState)(!1),G=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/github/repos",{cache:"no-store"});if(!a.ok)throw Error("Failed to load repos");let b=await a.json();e(b.repos??[]),j(null)}catch{j("Failed to load repositories")}finally{h(!1)}},[]);(0,c.useEffect)(()=>{G()},[G]);let H=(0,c.useCallback)((a,b)=>`${a}/${b}`.toLowerCase(),[]),I=(0,c.useMemo)(()=>new Set(d.map(a=>H(a.owner,a.name))),[d,H]),J=(0,c.useCallback)(async()=>{if(r(!0),D(new Set),z(""),B("all"),!(s.length>0)){v(!0),x(null);try{let b=await fetch(`/api/github/user-repos?projectId=${encodeURIComponent(a)}`,{cache:"no-store"});if(!b.ok){let a=await b.json().catch(()=>({}));throw Error(a?.error??"Failed to fetch repos")}let c=await b.json();t(c.repos??[])}catch(a){x(a instanceof Error?a.message:"Failed to fetch repos")}finally{v(!1)}}},[a,s.length]),K=()=>{r(!1)};(0,c.useEffect)(()=>{if(!q)return;let a=a=>{"Escape"===a.key&&K()};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[q]);let L=(0,c.useMemo)(()=>{let a=[],b=[];for(let c of s)I.has(H(c.owner,c.name))?a.push(c):b.push(c);return[...a,...b]},[s,I,H]),M=(0,c.useMemo)(()=>{let a=y.trim().toLowerCase();return L.filter(b=>("public"!==A||!b.private)&&("private"!==A||!!b.private)&&(!a||b.fullName.toLowerCase().includes(a)||(b.description??"").toLowerCase().includes(a)))},[L,y,A]),N=(0,c.useMemo)(()=>M.filter(a=>!I.has(H(a.owner,a.name))),[M,I,H]),O=N.length>0&&N.every(a=>C.has(a.id)),P=async()=>{if(0!==C.size){F(!0);try{let a=s.filter(a=>C.has(a.id));await Promise.all(a.map(a=>fetch("/api/github/repos",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:a.owner,name:a.name,defaultBranch:a.defaultBranch,private:a.private})}))),await G(),K()}finally{F(!1)}}},Q=(0,c.useCallback)(async a=>{p(a);try{await fetch("/api/github/repos",{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({id:a})}),await G()}finally{p(null)}},[G]);return(0,b.jsxs)("div",{className:"w-full max-w-md space-y-4",children:[(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Attached repositories"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Repos the local agent watches for PRs, reviews, and comments."})]}),(0,b.jsxs)("button",{type:"button",onClick:J,className:"text-xs px-2.5 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1",children:[(0,b.jsx)(l.Plus,{className:"w-3.5 h-3.5"}),"Add"]})]}),f?(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(g.Loader2,{className:"w-4 h-4 animate-spin"}),"Loading repositories…"]}):i?(0,b.jsx)("p",{className:"text-sm text-destructive",children:i}):0===d.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No repositories attached yet."}):(0,b.jsx)("ul",{className:"divide-y",children:d.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between py-2",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("span",{className:"text-sm font-mono",children:[a.owner,"/",a.name]}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[a.defaultBranch??"no default branch",a.private?" · private":" · public",a.accessRevoked?" · access revoked":""]})]}),(0,b.jsx)("button",{type:"button",onClick:()=>Q(a.id),disabled:k===a.id,className:"p-1.5 rounded hover:bg-accent disabled:opacity-50",title:"Remove",children:(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"})})]},a.id))})]}),(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Sync"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Pull the latest PRs, reviews, and comments for attached repos."})]}),(0,b.jsxs)("button",{type:"button",onClick:()=>alert("Sync will run when worker is scheduled"),className:"text-xs px-3 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1.5",children:[(0,b.jsx)(n.RefreshCw,{className:"w-3.5 h-3.5"}),"Sync now"]})]}),q&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:K,children:(0,b.jsxs)("div",{className:"w-full max-w-3xl max-h-[90vh] flex flex-col rounded-xl border border-[var(--border)] bg-[var(--background)] text-[var(--foreground)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"px-6 py-5 border-b border-[var(--border)] flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] mb-1",children:[(0,b.jsx)("span",{children:"GitHub"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:"Attach repositories"})]}),(0,b.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Select repositories"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mt-1",children:"Pick the repos you want agx to track. Already-attached repos are pinned at the top."})]}),(0,b.jsx)("button",{onClick:K,className:"p-1.5 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]","aria-label":"Close",children:(0,b.jsx)(m.X,{className:"w-4 h-4"})})]}),(0,b.jsx)("div",{className:"px-6 py-4 flex-1 overflow-hidden flex flex-col",children:w?(0,b.jsx)("div",{className:"rounded-lg border border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed)] px-4 py-3 text-sm",children:w}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsxs)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--muted-foreground)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,b.jsx)("path",{d:"m21 21-4.3-4.3"})]}),(0,b.jsx)("input",{type:"text",value:y,onChange:a=>z(a.target.value),placeholder:"Search repositories...",className:"w-full pl-9 pr-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--input)] text-sm focus:outline-none focus:border-[var(--primary)] focus:bg-[var(--input-focus)] transition-colors"})]}),(0,b.jsx)("div",{className:"flex gap-1 rounded-lg border border-[var(--border)] p-1",children:["all","public","private"].map(a=>(0,b.jsx)("button",{onClick:()=>B(a),className:`px-3 py-1 text-xs rounded-md capitalize transition-colors ${A===a?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:a},a))})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("button",{onClick:()=>{D(a=>{let b=new Set(a);return O?N.forEach(a=>b.delete(a.id)):N.forEach(a=>b.add(a.id)),b})},disabled:0===N.length,className:"hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:[O?"Deselect all":"Select all",y||"all"!==A?` (${N.length} shown)`:""]}),C.size>0&&(0,b.jsx)("button",{onClick:()=>D(new Set),className:"hover:text-[var(--foreground)] transition-colors",children:"Clear selection"})]}),(0,b.jsx)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--card-bg)] overflow-hidden flex-1 min-h-0",children:(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:u?(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:Array.from({length:6}).map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3 animate-pulse",children:[(0,b.jsx)("div",{className:"w-4 h-4 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"w-6 h-6 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,b.jsx)("div",{className:"h-3 w-1/3 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"h-2 w-2/3 rounded bg-[var(--muted)]"})]})]},c))}):0===M.length?(0,b.jsx)("div",{className:"px-4 py-10 text-center text-sm text-[var(--muted-foreground)]",children:0===s.length?"No repositories found on your account.":"No repos match your search."}):(0,b.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:M.map(a=>{let c=I.has(H(a.owner,a.name)),d=C.has(a.id);return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{className:`flex items-start gap-3 px-4 py-3 transition-colors ${c?"bg-[var(--primary-muted)]/40 cursor-default":d?"bg-[var(--primary-muted)] cursor-pointer":"hover:bg-[var(--item-hover-bg)] cursor-pointer"}`,children:[c?(0,b.jsx)("div",{className:"mt-1 w-4 h-4 rounded-sm bg-[var(--primary)]/20 text-[var(--primary)] flex items-center justify-center",title:"Already attached",children:(0,b.jsx)(o,{className:"w-2.5 h-2.5"})}):(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{!I.has(H(a.owner,a.name))&&D(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},className:"mt-1 accent-[var(--primary)]"}),(0,b.jsx)("img",{src:a.avatarUrl,alt:"",className:"w-6 h-6 rounded-full mt-0.5 flex-shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate",children:a.fullName}),c&&(0,b.jsxs)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--primary)]/15 text-[var(--primary)] flex items-center gap-1",children:[(0,b.jsx)(o,{className:"w-2.5 h-2.5"}),"Attached"]}),a.private&&(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)]",children:"Private"})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description}),(0,b.jsxs)("div",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:["Updated ",function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return"just now";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);if(e<30)return`${e}d ago`;let f=Math.floor(e/30);return f<12?`${f}mo ago`:`${Math.floor(f/12)}y ago`}(a.updatedAt)]})]})]})},a.id)})})})})]})}),(0,b.jsxs)("footer",{className:"px-6 py-4 border-t border-[var(--border)] flex items-center justify-between gap-3",children:[(0,b.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[C.size," selected"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:K,className:"px-4 py-2 rounded-lg border border-[var(--border)] hover:bg-[var(--item-hover-bg)] text-sm font-medium transition-colors",children:"Cancel"}),(0,b.jsx)("button",{onClick:P,disabled:0===C.size||E,className:"px-4 py-2 rounded-lg bg-[var(--primary)] hover:bg-[var(--primary-hover)] text-[var(--primary-foreground)] text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:E?"Attaching...":`Attach ${C.size} ${1===C.size?"repo":"repos"}`})]})]})]})})]})}a.s(["Pin",()=>o],451844);var q=a.i(734709);let r={claude:{name:"Claude Code",configPath:"~/.claude/settings.json"},codex:{name:"Codex CLI",configPath:"~/.codex/config.toml"},gemini:{name:"Gemini CLI",configPath:"~/.gemini/settings.json"}};function s({trackerType:a,projectId:l,connected:m,onConnect:n,onConnectWithKey:o,onDisconnect:s,loading:t=!1,clis:u,mcpConfigured:v,onConfigureMcp:w}){let[x,y]=c.default.useState(""),[z,A]=c.default.useState(null),[B,C]=c.default.useState(!1),[D,E]=c.default.useState(!1),[F,G]=c.default.useState(null),[H,I]=c.default.useState({}),[J,K]=c.default.useState(!1),L=async a=>{if(!w)return;G(a),I(b=>({...b,[a]:""}));let b=await w(a);b.ok||I(c=>({...c,[a]:b.error??"Failed to install MCP"})),G(null)},M=u?["claude","codex","gemini"].filter(a=>u[a]):["claude"];if(t)return(0,b.jsx)("div",{className:"flex items-center justify-center p-12",children:(0,b.jsx)(g.Loader2,{className:"animate-spin h-8 w-8 text-muted-foreground"})});if(m)return(0,b.jsxs)("div",{className:"p-8 flex flex-col items-center gap-6",children:[(0,b.jsxs)("div",{className:"w-full max-w-md p-8 border border-green-500/20 bg-green-500/5 rounded-2xl flex flex-col items-center gap-4 text-center",children:[(0,b.jsx)("div",{className:"h-16 w-16 rounded-full bg-green-500/10 flex items-center justify-center text-green-600 shadow-inner",children:(0,b.jsx)(d.CheckCircle2,{className:"h-8 w-8"})}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("h3",{className:"text-xl font-bold text-foreground capitalize",children:[a," Connected"]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Your ",a," workspace is successfully connected. The agent can now sync issues and manage your backlog."]})]}),(0,b.jsxs)("div",{className:"mt-2 px-4 py-1.5 rounded-full bg-background border text-xs font-medium text-muted-foreground flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-1.5 w-1.5 rounded-full bg-green-500 animate-pulse"}),"Active Connection"]}),s&&(0,b.jsxs)("button",{onClick:()=>K(!0),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-destructive transition-colors mt-1",children:[(0,b.jsx)(j.LogOut,{className:"h-3.5 w-3.5"}),"Disconnect"]})]}),"github"===a&&(0,b.jsx)(p,{projectId:l}),s&&(0,b.jsx)(q.default,{isOpen:J,title:`Disconnect ${a}?`,message:"github"===a?"This revokes the stored credentials. Your attached repositories and synced history stay — reconnecting will resume where you left off.":`This revokes the stored credentials for ${a}. Project settings and synced history stay.`,confirmLabel:"Disconnect",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{K(!1),s()},onCancel:()=>K(!1)}),"github"!==a&&M.length>0&&(0,b.jsx)("div",{className:"w-full max-w-md",children:(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.Terminal,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:"MCP Server"})]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground leading-relaxed -mt-2",children:["Install the ",a," MCP server so agents can access ",a," directly."]}),M.map(a=>{let c=r[a],e=v?.[a]??!1,f=F===a,i=H[a];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:c.name}),e?(0,b.jsxs)("span",{className:"text-xs font-medium text-green-600 flex items-center gap-1",children:[(0,b.jsx)(d.CheckCircle2,{className:"h-3.5 w-3.5"}),"Installed"]}):(0,b.jsx)("button",{onClick:()=>L(a),disabled:f||!w,className:"flex items-center gap-1.5 px-3 py-1 bg-secondary text-secondary-foreground rounded-md text-xs font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-3 w-3 animate-spin"}),"Installing…"]}):(0,b.jsx)(b.Fragment,{children:"Install"})})]}),e&&(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Configured in ",(0,b.jsx)("code",{className:"font-mono",children:c.configPath})]}),i&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),i]})]},a)})]})})]});let N=async()=>{if(x.trim()){E(!0),A(null);try{let a=await o(x.trim());a.ok?(y(""),C(!1)):A(a.error??"Failed to connect")}catch(a){A("An unexpected error occurred")}finally{E(!1)}}};return(0,b.jsxs)("div",{className:"flex flex-col items-center gap-6 p-8",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(k.TrackerIcon,{trackerType:a,className:"h-16 w-16"}),(0,b.jsx)("div",{className:"absolute -bottom-1 -right-1 h-6 w-6 rounded-full bg-background border flex items-center justify-center shadow-sm",children:(0,b.jsx)(f.Globe,{className:"h-3 w-3 text-muted-foreground"})})]}),(0,b.jsxs)("div",{className:"text-center space-y-2",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold capitalize",children:["Connect to ",a]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground text-center max-w-sm leading-relaxed",children:["Link your ",a," account to import issues, track progress, and automate your workflow."]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3 w-full max-w-xs pt-2",children:[(0,b.jsxs)("button",{onClick:n,className:"flex items-center justify-center gap-2 w-full px-4 py-2.5 bg-primary text-primary-foreground rounded-lg text-sm font-semibold hover:bg-primary/90 transition-all active:scale-[0.98] shadow-sm",children:[(0,b.jsx)(f.Globe,{className:"h-4 w-4"}),"Connect with OAuth"]}),(0,b.jsxs)("button",{onClick:()=>{C(!B),A(null)},className:"flex items-center justify-center gap-2 w-full px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors font-medium",children:[(0,b.jsx)(e.Key,{className:"h-3.5 w-3.5"}),B?"Use OAuth instead":"github"===a?"Connect with Personal Access Token":"Connect with API key"]}),(0,b.jsx)("div",{className:`grid transition-all duration-300 ease-in-out ${B?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0 pointer-events-none"}`,children:(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsxs)("div",{className:"flex flex-col gap-3 pt-2",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"password",value:x,onChange:a=>{y(a.target.value),z&&A(null)},placeholder:"github"===a?"ghp_… or github_pat_…":"Paste your API key here",className:`w-full px-3 py-2 border rounded-lg text-sm bg-background transition-colors focus:outline-none focus:ring-2 focus:ring-primary/20 ${z?"border-destructive":"focus:border-primary"}`,onKeyDown:a=>"Enter"===a.key&&N()}),(0,b.jsx)(e.Key,{className:"absolute right-3 top-2.5 h-4 w-4 text-muted-foreground/50"})]}),z&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),(0,b.jsx)("p",{children:z})]}),(0,b.jsx)("button",{onClick:N,disabled:D||!x.trim(),className:"flex items-center justify-center gap-2 w-full px-4 py-2 bg-secondary text-secondary-foreground rounded-lg text-sm font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:D?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-4 w-4 animate-spin"}),"Connecting..."]}):"Verify & Connect"}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground text-center px-2",children:"github"===a?"Fine-grained PAT recommended. Needs repo access + read on issues/pull requests.":`Your API key is stored securely and only used for ${a} integration.`})]})})})]})]})}a.s(["default",()=>s],778784)}];
|
|
1
|
+
module.exports=[663504,235992,a=>{"use strict";var b=a.i(831709);let c=(0,b.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);a.s(["Key",()=>c],663504);let d=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>d],235992)},500650,a=>{"use strict";let b=(0,a.i(831709).default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>b],500650)},778784,451844,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(44668),e=a.i(663504),f=a.i(235992),g=a.i(349692),h=a.i(693896),i=a.i(356239),j=a.i(500650),k=a.i(392045),l=a.i(353532),m=a.i(824179),n=a.i(864061);let o=(0,a.i(831709).default)("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function p({projectId:a}){let[d,e]=(0,c.useState)([]),[f,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)("all"),[C,D]=(0,c.useState)(new Set),[E,F]=(0,c.useState)(!1),G=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/github/repos",{cache:"no-store"});if(!a.ok)throw Error("Failed to load repos");let b=await a.json();e(b.repos??[]),j(null)}catch{j("Failed to load repositories")}finally{h(!1)}},[]);(0,c.useEffect)(()=>{G()},[G]);let H=(0,c.useCallback)((a,b)=>`${a}/${b}`.toLowerCase(),[]),I=(0,c.useMemo)(()=>new Set(d.map(a=>H(a.owner,a.name))),[d,H]),J=(0,c.useCallback)(async()=>{if(r(!0),D(new Set),z(""),B("all"),!(s.length>0)){v(!0),x(null);try{let b=await fetch(`/api/github/user-repos?projectId=${encodeURIComponent(a)}`,{cache:"no-store"});if(!b.ok){let a=await b.json().catch(()=>({}));throw Error(a?.error??"Failed to fetch repos")}let c=await b.json();t(c.repos??[])}catch(a){x(a instanceof Error?a.message:"Failed to fetch repos")}finally{v(!1)}}},[a,s.length]),K=()=>{r(!1)};(0,c.useEffect)(()=>{if(!q)return;let a=a=>{"Escape"===a.key&&K()};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[q]);let L=(0,c.useMemo)(()=>{let a=[],b=[];for(let c of s)I.has(H(c.owner,c.name))?a.push(c):b.push(c);return[...a,...b]},[s,I,H]),M=(0,c.useMemo)(()=>{let a=y.trim().toLowerCase();return L.filter(b=>("public"!==A||!b.private)&&("private"!==A||!!b.private)&&(!a||b.fullName.toLowerCase().includes(a)||(b.description??"").toLowerCase().includes(a)))},[L,y,A]),N=(0,c.useMemo)(()=>M.filter(a=>!I.has(H(a.owner,a.name))),[M,I,H]),O=N.length>0&&N.every(a=>C.has(a.id)),P=async()=>{if(0!==C.size){F(!0);try{let a=s.filter(a=>C.has(a.id));await Promise.all(a.map(a=>fetch("/api/github/repos",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:a.owner,name:a.name,defaultBranch:a.defaultBranch,private:a.private})}))),await G(),K()}finally{F(!1)}}},Q=(0,c.useCallback)(async a=>{p(a);try{await fetch("/api/github/repos",{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({id:a})}),await G()}finally{p(null)}},[G]);return(0,b.jsxs)("div",{className:"w-full max-w-md space-y-4",children:[(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Attached repositories"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Repos the local agent watches for PRs, reviews, and comments."})]}),(0,b.jsxs)("button",{type:"button",onClick:J,className:"text-xs px-2.5 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1",children:[(0,b.jsx)(l.Plus,{className:"w-3.5 h-3.5"}),"Add"]})]}),f?(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(g.Loader2,{className:"w-4 h-4 animate-spin"}),"Loading repositories…"]}):i?(0,b.jsx)("p",{className:"text-sm text-destructive",children:i}):0===d.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No repositories attached yet."}):(0,b.jsx)("ul",{className:"divide-y",children:d.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between py-2",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("span",{className:"text-sm font-mono",children:[a.owner,"/",a.name]}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[a.defaultBranch??"no default branch",a.private?" · private":" · public",a.accessRevoked?" · access revoked":""]})]}),(0,b.jsx)("button",{type:"button",onClick:()=>Q(a.id),disabled:k===a.id,className:"p-1.5 rounded hover:bg-accent disabled:opacity-50",title:"Remove",children:(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"})})]},a.id))})]}),(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Sync"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Pull the latest PRs, reviews, and comments for attached repos."})]}),(0,b.jsxs)("button",{type:"button",onClick:()=>alert("Sync will run when worker is scheduled"),className:"text-xs px-3 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1.5",children:[(0,b.jsx)(n.RefreshCw,{className:"w-3.5 h-3.5"}),"Sync now"]})]}),q&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:K,children:(0,b.jsxs)("div",{className:"w-full max-w-3xl max-h-[90vh] flex flex-col rounded-xl border border-[var(--border)] bg-[var(--background)] text-[var(--foreground)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"px-6 py-5 border-b border-[var(--border)] flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] mb-1",children:[(0,b.jsx)("span",{children:"GitHub"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:"Attach repositories"})]}),(0,b.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Select repositories"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mt-1",children:"Pick the repos you want agx to track. Already-attached repos are pinned at the top."})]}),(0,b.jsx)("button",{onClick:K,className:"p-1.5 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]","aria-label":"Close",children:(0,b.jsx)(m.X,{className:"w-4 h-4"})})]}),(0,b.jsx)("div",{className:"px-6 py-4 flex-1 overflow-hidden flex flex-col",children:w?(0,b.jsx)("div",{className:"rounded-lg border border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed)] px-4 py-3 text-sm",children:w}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsxs)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--muted-foreground)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,b.jsx)("path",{d:"m21 21-4.3-4.3"})]}),(0,b.jsx)("input",{type:"text",value:y,onChange:a=>z(a.target.value),placeholder:"Search repositories...",className:"w-full pl-9 pr-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--input)] text-sm focus:outline-none focus:border-[var(--primary)] focus:bg-[var(--input-focus)] transition-colors"})]}),(0,b.jsx)("div",{className:"flex gap-1 rounded-lg border border-[var(--border)] p-1",children:["all","public","private"].map(a=>(0,b.jsx)("button",{onClick:()=>B(a),className:`px-3 py-1 text-xs rounded-md capitalize transition-colors ${A===a?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:a},a))})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("button",{onClick:()=>{D(a=>{let b=new Set(a);return O?N.forEach(a=>b.delete(a.id)):N.forEach(a=>b.add(a.id)),b})},disabled:0===N.length,className:"hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:[O?"Deselect all":"Select all",y||"all"!==A?` (${N.length} shown)`:""]}),C.size>0&&(0,b.jsx)("button",{onClick:()=>D(new Set),className:"hover:text-[var(--foreground)] transition-colors",children:"Clear selection"})]}),(0,b.jsx)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--card-bg)] overflow-hidden flex-1 min-h-0",children:(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:u?(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:Array.from({length:6}).map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3 animate-pulse",children:[(0,b.jsx)("div",{className:"w-4 h-4 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"w-6 h-6 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,b.jsx)("div",{className:"h-3 w-1/3 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"h-2 w-2/3 rounded bg-[var(--muted)]"})]})]},c))}):0===M.length?(0,b.jsx)("div",{className:"px-4 py-10 text-center text-sm text-[var(--muted-foreground)]",children:0===s.length?"No repositories found on your account.":"No repos match your search."}):(0,b.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:M.map(a=>{let c=I.has(H(a.owner,a.name)),d=C.has(a.id);return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{className:`flex items-start gap-3 px-4 py-3 transition-colors ${c?"bg-[var(--primary-muted)]/40 cursor-default":d?"bg-[var(--primary-muted)] cursor-pointer":"hover:bg-[var(--item-hover-bg)] cursor-pointer"}`,children:[c?(0,b.jsx)("div",{className:"mt-1 w-4 h-4 rounded-sm bg-[var(--primary)]/20 text-[var(--primary)] flex items-center justify-center",title:"Already attached",children:(0,b.jsx)(o,{className:"w-2.5 h-2.5"})}):(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{!I.has(H(a.owner,a.name))&&D(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},className:"mt-1 accent-[var(--primary)]"}),(0,b.jsx)("img",{src:a.avatarUrl,alt:"",className:"w-6 h-6 rounded-full mt-0.5 flex-shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate",children:a.fullName}),c&&(0,b.jsxs)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--primary)]/15 text-[var(--primary)] flex items-center gap-1",children:[(0,b.jsx)(o,{className:"w-2.5 h-2.5"}),"Attached"]}),a.private&&(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)]",children:"Private"})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description}),(0,b.jsxs)("div",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:["Updated ",function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return"just now";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);if(e<30)return`${e}d ago`;let f=Math.floor(e/30);return f<12?`${f}mo ago`:`${Math.floor(f/12)}y ago`}(a.updatedAt)]})]})]})},a.id)})})})})]})}),(0,b.jsxs)("footer",{className:"px-6 py-4 border-t border-[var(--border)] flex items-center justify-between gap-3",children:[(0,b.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[C.size," selected"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:K,className:"px-4 py-2 rounded-lg border border-[var(--border)] hover:bg-[var(--item-hover-bg)] text-sm font-medium transition-colors",children:"Cancel"}),(0,b.jsx)("button",{onClick:P,disabled:0===C.size||E,className:"px-4 py-2 rounded-lg bg-[var(--primary)] hover:bg-[var(--primary-hover)] text-[var(--primary-foreground)] text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:E?"Attaching...":`Attach ${C.size} ${1===C.size?"repo":"repos"}`})]})]})]})})]})}a.s(["Pin",()=>o],451844);var q=a.i(734709);let r={claude:{name:"Claude Code",configPath:"~/.claude/settings.json"},codex:{name:"Codex CLI",configPath:"~/.codex/config.toml"},gemini:{name:"Gemini CLI",configPath:"~/.gemini/settings.json"}};function s({trackerType:a,projectId:l,connected:m,onConnect:n,onConnectWithKey:o,onDisconnect:s,loading:t=!1,clis:u,mcpConfigured:v,onConfigureMcp:w}){let[x,y]=c.default.useState(""),[z,A]=c.default.useState(null),[B,C]=c.default.useState(!1),[D,E]=c.default.useState(!1),[F,G]=c.default.useState(null),[H,I]=c.default.useState({}),[J,K]=c.default.useState(!1),L=async a=>{if(!w)return;G(a),I(b=>({...b,[a]:""}));let b=await w(a);b.ok||I(c=>({...c,[a]:b.error??"Failed to install MCP"})),G(null)},M=u?["claude","codex","gemini"].filter(a=>u[a]):["claude"];if(t)return(0,b.jsx)("div",{className:"flex items-center justify-center p-12",children:(0,b.jsx)(g.Loader2,{className:"animate-spin h-8 w-8 text-muted-foreground"})});if(m)return(0,b.jsxs)("div",{className:"p-8 flex flex-col items-center gap-6",children:[(0,b.jsxs)("div",{className:"w-full max-w-md p-8 border border-green-500/20 bg-green-500/5 rounded-2xl flex flex-col items-center gap-4 text-center",children:[(0,b.jsx)("div",{className:"h-16 w-16 rounded-full bg-green-500/10 flex items-center justify-center text-green-600 shadow-inner",children:(0,b.jsx)(d.CheckCircle2,{className:"h-8 w-8"})}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("h3",{className:"text-xl font-bold text-foreground capitalize",children:[a," Connected"]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Your ",a," tickets now live in AGX. Assign them to agents, review the work, and ship PRs from one window."]})]}),(0,b.jsxs)("div",{className:"mt-2 px-4 py-1.5 rounded-full bg-background border text-xs font-medium text-muted-foreground flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-1.5 w-1.5 rounded-full bg-green-500 animate-pulse"}),"Active Connection"]}),s&&(0,b.jsxs)("button",{onClick:()=>K(!0),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-destructive transition-colors mt-1",children:[(0,b.jsx)(j.LogOut,{className:"h-3.5 w-3.5"}),"Disconnect"]})]}),"github"===a&&(0,b.jsx)(p,{projectId:l}),s&&(0,b.jsx)(q.default,{isOpen:J,title:`Disconnect ${a}?`,message:"github"===a?"This revokes the stored credentials. Your attached repositories and synced history stay — reconnecting will resume where you left off.":`This revokes the stored credentials for ${a}. Project settings and synced history stay.`,confirmLabel:"Disconnect",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{K(!1),s()},onCancel:()=>K(!1)}),"github"!==a&&M.length>0&&(0,b.jsx)("div",{className:"w-full max-w-md",children:(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.Terminal,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:"MCP Server"})]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground leading-relaxed -mt-2",children:["Connect your ",a," workspace so your tickets show up in AGX and agents can work them through to a PR."]}),M.map(a=>{let c=r[a],e=v?.[a]??!1,f=F===a,i=H[a];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:c.name}),e?(0,b.jsxs)("span",{className:"text-xs font-medium text-green-600 flex items-center gap-1",children:[(0,b.jsx)(d.CheckCircle2,{className:"h-3.5 w-3.5"}),"Installed"]}):(0,b.jsx)("button",{onClick:()=>L(a),disabled:f||!w,className:"flex items-center gap-1.5 px-3 py-1 bg-secondary text-secondary-foreground rounded-md text-xs font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-3 w-3 animate-spin"}),"Installing…"]}):(0,b.jsx)(b.Fragment,{children:"Install"})})]}),e&&(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Configured in ",(0,b.jsx)("code",{className:"font-mono",children:c.configPath})]}),i&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),i]})]},a)})]})})]});let N=async()=>{if(x.trim()){E(!0),A(null);try{let a=await o(x.trim());a.ok?(y(""),C(!1)):A(a.error??"Failed to connect")}catch(a){A("An unexpected error occurred")}finally{E(!1)}}};return(0,b.jsxs)("div",{className:"flex flex-col items-center gap-6 p-8",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(k.TrackerIcon,{trackerType:a,className:"h-16 w-16"}),(0,b.jsx)("div",{className:"absolute -bottom-1 -right-1 h-6 w-6 rounded-full bg-background border flex items-center justify-center shadow-sm",children:(0,b.jsx)(f.Globe,{className:"h-3 w-3 text-muted-foreground"})})]}),(0,b.jsxs)("div",{className:"text-center space-y-2",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold capitalize",children:["Connect to ",a]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground text-center max-w-sm leading-relaxed",children:["Link your ",a," account to import issues, track progress, and automate your workflow."]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3 w-full max-w-xs pt-2",children:[(0,b.jsxs)("button",{onClick:n,className:"flex items-center justify-center gap-2 w-full px-4 py-2.5 bg-primary text-primary-foreground rounded-lg text-sm font-semibold hover:bg-primary/90 transition-all active:scale-[0.98] shadow-sm",children:[(0,b.jsx)(f.Globe,{className:"h-4 w-4"}),"Connect with OAuth"]}),(0,b.jsxs)("button",{onClick:()=>{C(!B),A(null)},className:"flex items-center justify-center gap-2 w-full px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors font-medium",children:[(0,b.jsx)(e.Key,{className:"h-3.5 w-3.5"}),B?"Use OAuth instead":"github"===a?"Connect with Personal Access Token":"Connect with API key"]}),(0,b.jsx)("div",{className:`grid transition-all duration-300 ease-in-out ${B?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0 pointer-events-none"}`,children:(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsxs)("div",{className:"flex flex-col gap-3 pt-2",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"password",value:x,onChange:a=>{y(a.target.value),z&&A(null)},placeholder:"github"===a?"ghp_… or github_pat_…":"Paste your API key here",className:`w-full px-3 py-2 border rounded-lg text-sm bg-background transition-colors focus:outline-none focus:ring-2 focus:ring-primary/20 ${z?"border-destructive":"focus:border-primary"}`,onKeyDown:a=>"Enter"===a.key&&N()}),(0,b.jsx)(e.Key,{className:"absolute right-3 top-2.5 h-4 w-4 text-muted-foreground/50"})]}),z&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),(0,b.jsx)("p",{children:z})]}),(0,b.jsx)("button",{onClick:N,disabled:D||!x.trim(),className:"flex items-center justify-center gap-2 w-full px-4 py-2 bg-secondary text-secondary-foreground rounded-lg text-sm font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:D?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-4 w-4 animate-spin"}),"Connecting..."]}):"Verify & Connect"}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground text-center px-2",children:"github"===a?"Fine-grained PAT recommended. Needs repo access + read on issues/pull requests.":`Your API key is stored securely and only used for ${a} integration.`})]})})})]})]})}a.s(["default",()=>s],778784)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_eec36ab6._.js.map
|
package/cloud-runtime/standalone/apps/local/.next/server/chunks/ssr/apps_local_fed01721._.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[500650,a=>{"use strict";let b=(0,a.i(831709).default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>b],500650)},663504,235992,a=>{"use strict";var b=a.i(831709);let c=(0,b.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);a.s(["Key",()=>c],663504);let d=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>d],235992)},778784,451844,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(44668),e=a.i(663504),f=a.i(235992),g=a.i(349692),h=a.i(693896),i=a.i(356239),j=a.i(500650),k=a.i(392045),l=a.i(353532),m=a.i(824179),n=a.i(864061);let o=(0,a.i(831709).default)("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function p({projectId:a}){let[d,e]=(0,c.useState)([]),[f,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)("all"),[C,D]=(0,c.useState)(new Set),[E,F]=(0,c.useState)(!1),G=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/github/repos",{cache:"no-store"});if(!a.ok)throw Error("Failed to load repos");let b=await a.json();e(b.repos??[]),j(null)}catch{j("Failed to load repositories")}finally{h(!1)}},[]);(0,c.useEffect)(()=>{G()},[G]);let H=(0,c.useCallback)((a,b)=>`${a}/${b}`.toLowerCase(),[]),I=(0,c.useMemo)(()=>new Set(d.map(a=>H(a.owner,a.name))),[d,H]),J=(0,c.useCallback)(async()=>{if(r(!0),D(new Set),z(""),B("all"),!(s.length>0)){v(!0),x(null);try{let b=await fetch(`/api/github/user-repos?projectId=${encodeURIComponent(a)}`,{cache:"no-store"});if(!b.ok){let a=await b.json().catch(()=>({}));throw Error(a?.error??"Failed to fetch repos")}let c=await b.json();t(c.repos??[])}catch(a){x(a instanceof Error?a.message:"Failed to fetch repos")}finally{v(!1)}}},[a,s.length]),K=()=>{r(!1)};(0,c.useEffect)(()=>{if(!q)return;let a=a=>{"Escape"===a.key&&K()};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[q]);let L=(0,c.useMemo)(()=>{let a=[],b=[];for(let c of s)I.has(H(c.owner,c.name))?a.push(c):b.push(c);return[...a,...b]},[s,I,H]),M=(0,c.useMemo)(()=>{let a=y.trim().toLowerCase();return L.filter(b=>("public"!==A||!b.private)&&("private"!==A||!!b.private)&&(!a||b.fullName.toLowerCase().includes(a)||(b.description??"").toLowerCase().includes(a)))},[L,y,A]),N=(0,c.useMemo)(()=>M.filter(a=>!I.has(H(a.owner,a.name))),[M,I,H]),O=N.length>0&&N.every(a=>C.has(a.id)),P=async()=>{if(0!==C.size){F(!0);try{let a=s.filter(a=>C.has(a.id));await Promise.all(a.map(a=>fetch("/api/github/repos",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:a.owner,name:a.name,defaultBranch:a.defaultBranch,private:a.private})}))),await G(),K()}finally{F(!1)}}},Q=(0,c.useCallback)(async a=>{p(a);try{await fetch("/api/github/repos",{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({id:a})}),await G()}finally{p(null)}},[G]);return(0,b.jsxs)("div",{className:"w-full max-w-md space-y-4",children:[(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Attached repositories"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Repos the local agent watches for PRs, reviews, and comments."})]}),(0,b.jsxs)("button",{type:"button",onClick:J,className:"text-xs px-2.5 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1",children:[(0,b.jsx)(l.Plus,{className:"w-3.5 h-3.5"}),"Add"]})]}),f?(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(g.Loader2,{className:"w-4 h-4 animate-spin"}),"Loading repositories…"]}):i?(0,b.jsx)("p",{className:"text-sm text-destructive",children:i}):0===d.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No repositories attached yet."}):(0,b.jsx)("ul",{className:"divide-y",children:d.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between py-2",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("span",{className:"text-sm font-mono",children:[a.owner,"/",a.name]}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[a.defaultBranch??"no default branch",a.private?" · private":" · public",a.accessRevoked?" · access revoked":""]})]}),(0,b.jsx)("button",{type:"button",onClick:()=>Q(a.id),disabled:k===a.id,className:"p-1.5 rounded hover:bg-accent disabled:opacity-50",title:"Remove",children:(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"})})]},a.id))})]}),(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Sync"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Pull the latest PRs, reviews, and comments for attached repos."})]}),(0,b.jsxs)("button",{type:"button",onClick:()=>alert("Sync will run when worker is scheduled"),className:"text-xs px-3 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1.5",children:[(0,b.jsx)(n.RefreshCw,{className:"w-3.5 h-3.5"}),"Sync now"]})]}),q&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:K,children:(0,b.jsxs)("div",{className:"w-full max-w-3xl max-h-[90vh] flex flex-col rounded-xl border border-[var(--border)] bg-[var(--background)] text-[var(--foreground)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"px-6 py-5 border-b border-[var(--border)] flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] mb-1",children:[(0,b.jsx)("span",{children:"GitHub"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:"Attach repositories"})]}),(0,b.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Select repositories"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mt-1",children:"Pick the repos you want agx to track. Already-attached repos are pinned at the top."})]}),(0,b.jsx)("button",{onClick:K,className:"p-1.5 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]","aria-label":"Close",children:(0,b.jsx)(m.X,{className:"w-4 h-4"})})]}),(0,b.jsx)("div",{className:"px-6 py-4 flex-1 overflow-hidden flex flex-col",children:w?(0,b.jsx)("div",{className:"rounded-lg border border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed)] px-4 py-3 text-sm",children:w}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsxs)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--muted-foreground)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,b.jsx)("path",{d:"m21 21-4.3-4.3"})]}),(0,b.jsx)("input",{type:"text",value:y,onChange:a=>z(a.target.value),placeholder:"Search repositories...",className:"w-full pl-9 pr-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--input)] text-sm focus:outline-none focus:border-[var(--primary)] focus:bg-[var(--input-focus)] transition-colors"})]}),(0,b.jsx)("div",{className:"flex gap-1 rounded-lg border border-[var(--border)] p-1",children:["all","public","private"].map(a=>(0,b.jsx)("button",{onClick:()=>B(a),className:`px-3 py-1 text-xs rounded-md capitalize transition-colors ${A===a?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:a},a))})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("button",{onClick:()=>{D(a=>{let b=new Set(a);return O?N.forEach(a=>b.delete(a.id)):N.forEach(a=>b.add(a.id)),b})},disabled:0===N.length,className:"hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:[O?"Deselect all":"Select all",y||"all"!==A?` (${N.length} shown)`:""]}),C.size>0&&(0,b.jsx)("button",{onClick:()=>D(new Set),className:"hover:text-[var(--foreground)] transition-colors",children:"Clear selection"})]}),(0,b.jsx)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--card-bg)] overflow-hidden flex-1 min-h-0",children:(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:u?(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:Array.from({length:6}).map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3 animate-pulse",children:[(0,b.jsx)("div",{className:"w-4 h-4 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"w-6 h-6 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,b.jsx)("div",{className:"h-3 w-1/3 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"h-2 w-2/3 rounded bg-[var(--muted)]"})]})]},c))}):0===M.length?(0,b.jsx)("div",{className:"px-4 py-10 text-center text-sm text-[var(--muted-foreground)]",children:0===s.length?"No repositories found on your account.":"No repos match your search."}):(0,b.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:M.map(a=>{let c=I.has(H(a.owner,a.name)),d=C.has(a.id);return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{className:`flex items-start gap-3 px-4 py-3 transition-colors ${c?"bg-[var(--primary-muted)]/40 cursor-default":d?"bg-[var(--primary-muted)] cursor-pointer":"hover:bg-[var(--item-hover-bg)] cursor-pointer"}`,children:[c?(0,b.jsx)("div",{className:"mt-1 w-4 h-4 rounded-sm bg-[var(--primary)]/20 text-[var(--primary)] flex items-center justify-center",title:"Already attached",children:(0,b.jsx)(o,{className:"w-2.5 h-2.5"})}):(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{!I.has(H(a.owner,a.name))&&D(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},className:"mt-1 accent-[var(--primary)]"}),(0,b.jsx)("img",{src:a.avatarUrl,alt:"",className:"w-6 h-6 rounded-full mt-0.5 flex-shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate",children:a.fullName}),c&&(0,b.jsxs)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--primary)]/15 text-[var(--primary)] flex items-center gap-1",children:[(0,b.jsx)(o,{className:"w-2.5 h-2.5"}),"Attached"]}),a.private&&(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)]",children:"Private"})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description}),(0,b.jsxs)("div",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:["Updated ",function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return"just now";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);if(e<30)return`${e}d ago`;let f=Math.floor(e/30);return f<12?`${f}mo ago`:`${Math.floor(f/12)}y ago`}(a.updatedAt)]})]})]})},a.id)})})})})]})}),(0,b.jsxs)("footer",{className:"px-6 py-4 border-t border-[var(--border)] flex items-center justify-between gap-3",children:[(0,b.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[C.size," selected"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:K,className:"px-4 py-2 rounded-lg border border-[var(--border)] hover:bg-[var(--item-hover-bg)] text-sm font-medium transition-colors",children:"Cancel"}),(0,b.jsx)("button",{onClick:P,disabled:0===C.size||E,className:"px-4 py-2 rounded-lg bg-[var(--primary)] hover:bg-[var(--primary-hover)] text-[var(--primary-foreground)] text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:E?"Attaching...":`Attach ${C.size} ${1===C.size?"repo":"repos"}`})]})]})]})})]})}a.s(["Pin",()=>o],451844);var q=a.i(734709);let r={claude:{name:"Claude Code",configPath:"~/.claude/settings.json"},codex:{name:"Codex CLI",configPath:"~/.codex/config.toml"},gemini:{name:"Gemini CLI",configPath:"~/.gemini/settings.json"}};function s({trackerType:a,projectId:l,connected:m,onConnect:n,onConnectWithKey:o,onDisconnect:s,loading:t=!1,clis:u,mcpConfigured:v,onConfigureMcp:w}){let[x,y]=c.default.useState(""),[z,A]=c.default.useState(null),[B,C]=c.default.useState(!1),[D,E]=c.default.useState(!1),[F,G]=c.default.useState(null),[H,I]=c.default.useState({}),[J,K]=c.default.useState(!1),L=async a=>{if(!w)return;G(a),I(b=>({...b,[a]:""}));let b=await w(a);b.ok||I(c=>({...c,[a]:b.error??"Failed to install MCP"})),G(null)},M=u?["claude","codex","gemini"].filter(a=>u[a]):["claude"];if(t)return(0,b.jsx)("div",{className:"flex items-center justify-center p-12",children:(0,b.jsx)(g.Loader2,{className:"animate-spin h-8 w-8 text-muted-foreground"})});if(m)return(0,b.jsxs)("div",{className:"p-8 flex flex-col items-center gap-6",children:[(0,b.jsxs)("div",{className:"w-full max-w-md p-8 border border-green-500/20 bg-green-500/5 rounded-2xl flex flex-col items-center gap-4 text-center",children:[(0,b.jsx)("div",{className:"h-16 w-16 rounded-full bg-green-500/10 flex items-center justify-center text-green-600 shadow-inner",children:(0,b.jsx)(d.CheckCircle2,{className:"h-8 w-8"})}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("h3",{className:"text-xl font-bold text-foreground capitalize",children:[a," Connected"]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Your ",a," workspace is successfully connected. The agent can now sync issues and manage your backlog."]})]}),(0,b.jsxs)("div",{className:"mt-2 px-4 py-1.5 rounded-full bg-background border text-xs font-medium text-muted-foreground flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-1.5 w-1.5 rounded-full bg-green-500 animate-pulse"}),"Active Connection"]}),s&&(0,b.jsxs)("button",{onClick:()=>K(!0),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-destructive transition-colors mt-1",children:[(0,b.jsx)(j.LogOut,{className:"h-3.5 w-3.5"}),"Disconnect"]})]}),"github"===a&&(0,b.jsx)(p,{projectId:l}),s&&(0,b.jsx)(q.default,{isOpen:J,title:`Disconnect ${a}?`,message:"github"===a?"This revokes the stored credentials. Your attached repositories and synced history stay — reconnecting will resume where you left off.":`This revokes the stored credentials for ${a}. Project settings and synced history stay.`,confirmLabel:"Disconnect",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{K(!1),s()},onCancel:()=>K(!1)}),"github"!==a&&M.length>0&&(0,b.jsx)("div",{className:"w-full max-w-md",children:(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.Terminal,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:"MCP Server"})]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground leading-relaxed -mt-2",children:["Install the ",a," MCP server so agents can access ",a," directly."]}),M.map(a=>{let c=r[a],e=v?.[a]??!1,f=F===a,i=H[a];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:c.name}),e?(0,b.jsxs)("span",{className:"text-xs font-medium text-green-600 flex items-center gap-1",children:[(0,b.jsx)(d.CheckCircle2,{className:"h-3.5 w-3.5"}),"Installed"]}):(0,b.jsx)("button",{onClick:()=>L(a),disabled:f||!w,className:"flex items-center gap-1.5 px-3 py-1 bg-secondary text-secondary-foreground rounded-md text-xs font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-3 w-3 animate-spin"}),"Installing…"]}):(0,b.jsx)(b.Fragment,{children:"Install"})})]}),e&&(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Configured in ",(0,b.jsx)("code",{className:"font-mono",children:c.configPath})]}),i&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),i]})]},a)})]})})]});let N=async()=>{if(x.trim()){E(!0),A(null);try{let a=await o(x.trim());a.ok?(y(""),C(!1)):A(a.error??"Failed to connect")}catch(a){A("An unexpected error occurred")}finally{E(!1)}}};return(0,b.jsxs)("div",{className:"flex flex-col items-center gap-6 p-8",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(k.TrackerIcon,{trackerType:a,className:"h-16 w-16"}),(0,b.jsx)("div",{className:"absolute -bottom-1 -right-1 h-6 w-6 rounded-full bg-background border flex items-center justify-center shadow-sm",children:(0,b.jsx)(f.Globe,{className:"h-3 w-3 text-muted-foreground"})})]}),(0,b.jsxs)("div",{className:"text-center space-y-2",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold capitalize",children:["Connect to ",a]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground text-center max-w-sm leading-relaxed",children:["Link your ",a," account to import issues, track progress, and automate your workflow."]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3 w-full max-w-xs pt-2",children:[(0,b.jsxs)("button",{onClick:n,className:"flex items-center justify-center gap-2 w-full px-4 py-2.5 bg-primary text-primary-foreground rounded-lg text-sm font-semibold hover:bg-primary/90 transition-all active:scale-[0.98] shadow-sm",children:[(0,b.jsx)(f.Globe,{className:"h-4 w-4"}),"Connect with OAuth"]}),(0,b.jsxs)("button",{onClick:()=>{C(!B),A(null)},className:"flex items-center justify-center gap-2 w-full px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors font-medium",children:[(0,b.jsx)(e.Key,{className:"h-3.5 w-3.5"}),B?"Use OAuth instead":"github"===a?"Connect with Personal Access Token":"Connect with API key"]}),(0,b.jsx)("div",{className:`grid transition-all duration-300 ease-in-out ${B?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0 pointer-events-none"}`,children:(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsxs)("div",{className:"flex flex-col gap-3 pt-2",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"password",value:x,onChange:a=>{y(a.target.value),z&&A(null)},placeholder:"github"===a?"ghp_… or github_pat_…":"Paste your API key here",className:`w-full px-3 py-2 border rounded-lg text-sm bg-background transition-colors focus:outline-none focus:ring-2 focus:ring-primary/20 ${z?"border-destructive":"focus:border-primary"}`,onKeyDown:a=>"Enter"===a.key&&N()}),(0,b.jsx)(e.Key,{className:"absolute right-3 top-2.5 h-4 w-4 text-muted-foreground/50"})]}),z&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),(0,b.jsx)("p",{children:z})]}),(0,b.jsx)("button",{onClick:N,disabled:D||!x.trim(),className:"flex items-center justify-center gap-2 w-full px-4 py-2 bg-secondary text-secondary-foreground rounded-lg text-sm font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:D?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-4 w-4 animate-spin"}),"Connecting..."]}):"Verify & Connect"}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground text-center px-2",children:"github"===a?"Fine-grained PAT recommended. Needs repo access + read on issues/pull requests.":`Your API key is stored securely and only used for ${a} integration.`})]})})})]})]})}a.s(["default",()=>s],778784)}];
|
|
1
|
+
module.exports=[500650,a=>{"use strict";let b=(0,a.i(831709).default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]);a.s(["LogOut",()=>b],500650)},663504,235992,a=>{"use strict";var b=a.i(831709);let c=(0,b.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]);a.s(["Key",()=>c],663504);let d=(0,b.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);a.s(["Globe",()=>d],235992)},778784,451844,a=>{"use strict";var b=a.i(308316),c=a.i(786220),d=a.i(44668),e=a.i(663504),f=a.i(235992),g=a.i(349692),h=a.i(693896),i=a.i(356239),j=a.i(500650),k=a.i(392045),l=a.i(353532),m=a.i(824179),n=a.i(864061);let o=(0,a.i(831709).default)("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function p({projectId:a}){let[d,e]=(0,c.useState)([]),[f,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)([]),[u,v]=(0,c.useState)(!1),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)("all"),[C,D]=(0,c.useState)(new Set),[E,F]=(0,c.useState)(!1),G=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/github/repos",{cache:"no-store"});if(!a.ok)throw Error("Failed to load repos");let b=await a.json();e(b.repos??[]),j(null)}catch{j("Failed to load repositories")}finally{h(!1)}},[]);(0,c.useEffect)(()=>{G()},[G]);let H=(0,c.useCallback)((a,b)=>`${a}/${b}`.toLowerCase(),[]),I=(0,c.useMemo)(()=>new Set(d.map(a=>H(a.owner,a.name))),[d,H]),J=(0,c.useCallback)(async()=>{if(r(!0),D(new Set),z(""),B("all"),!(s.length>0)){v(!0),x(null);try{let b=await fetch(`/api/github/user-repos?projectId=${encodeURIComponent(a)}`,{cache:"no-store"});if(!b.ok){let a=await b.json().catch(()=>({}));throw Error(a?.error??"Failed to fetch repos")}let c=await b.json();t(c.repos??[])}catch(a){x(a instanceof Error?a.message:"Failed to fetch repos")}finally{v(!1)}}},[a,s.length]),K=()=>{r(!1)};(0,c.useEffect)(()=>{if(!q)return;let a=a=>{"Escape"===a.key&&K()};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[q]);let L=(0,c.useMemo)(()=>{let a=[],b=[];for(let c of s)I.has(H(c.owner,c.name))?a.push(c):b.push(c);return[...a,...b]},[s,I,H]),M=(0,c.useMemo)(()=>{let a=y.trim().toLowerCase();return L.filter(b=>("public"!==A||!b.private)&&("private"!==A||!!b.private)&&(!a||b.fullName.toLowerCase().includes(a)||(b.description??"").toLowerCase().includes(a)))},[L,y,A]),N=(0,c.useMemo)(()=>M.filter(a=>!I.has(H(a.owner,a.name))),[M,I,H]),O=N.length>0&&N.every(a=>C.has(a.id)),P=async()=>{if(0!==C.size){F(!0);try{let a=s.filter(a=>C.has(a.id));await Promise.all(a.map(a=>fetch("/api/github/repos",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:a.owner,name:a.name,defaultBranch:a.defaultBranch,private:a.private})}))),await G(),K()}finally{F(!1)}}},Q=(0,c.useCallback)(async a=>{p(a);try{await fetch("/api/github/repos",{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({id:a})}),await G()}finally{p(null)}},[G]);return(0,b.jsxs)("div",{className:"w-full max-w-md space-y-4",children:[(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Attached repositories"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Repos the local agent watches for PRs, reviews, and comments."})]}),(0,b.jsxs)("button",{type:"button",onClick:J,className:"text-xs px-2.5 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1",children:[(0,b.jsx)(l.Plus,{className:"w-3.5 h-3.5"}),"Add"]})]}),f?(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,b.jsx)(g.Loader2,{className:"w-4 h-4 animate-spin"}),"Loading repositories…"]}):i?(0,b.jsx)("p",{className:"text-sm text-destructive",children:i}):0===d.length?(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"No repositories attached yet."}):(0,b.jsx)("ul",{className:"divide-y",children:d.map(a=>(0,b.jsxs)("li",{className:"flex items-center justify-between py-2",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("span",{className:"text-sm font-mono",children:[a.owner,"/",a.name]}),(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[a.defaultBranch??"no default branch",a.private?" · private":" · public",a.accessRevoked?" · access revoked":""]})]}),(0,b.jsx)("button",{type:"button",onClick:()=>Q(a.id),disabled:k===a.id,className:"p-1.5 rounded hover:bg-accent disabled:opacity-50",title:"Remove",children:(0,b.jsx)(m.X,{className:"w-3.5 h-3.5"})})]},a.id))})]}),(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h4",{className:"text-sm font-medium",children:"Sync"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Pull the latest PRs, reviews, and comments for attached repos."})]}),(0,b.jsxs)("button",{type:"button",onClick:()=>alert("Sync will run when worker is scheduled"),className:"text-xs px-3 py-1.5 rounded border hover:bg-accent inline-flex items-center gap-1.5",children:[(0,b.jsx)(n.RefreshCw,{className:"w-3.5 h-3.5"}),"Sync now"]})]}),q&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:K,children:(0,b.jsxs)("div",{className:"w-full max-w-3xl max-h-[90vh] flex flex-col rounded-xl border border-[var(--border)] bg-[var(--background)] text-[var(--foreground)] shadow-2xl",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("header",{className:"px-6 py-5 border-b border-[var(--border)] flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--muted-foreground)] mb-1",children:[(0,b.jsx)("span",{children:"GitHub"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsx)("span",{children:"Attach repositories"})]}),(0,b.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Select repositories"}),(0,b.jsx)("p",{className:"text-sm text-[var(--muted-foreground)] mt-1",children:"Pick the repos you want agx to track. Already-attached repos are pinned at the top."})]}),(0,b.jsx)("button",{onClick:K,className:"p-1.5 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]","aria-label":"Close",children:(0,b.jsx)(m.X,{className:"w-4 h-4"})})]}),(0,b.jsx)("div",{className:"px-6 py-4 flex-1 overflow-hidden flex flex-col",children:w?(0,b.jsx)("div",{className:"rounded-lg border border-[var(--status-failed-border)] bg-[var(--status-failed-bg)] text-[var(--status-failed)] px-4 py-3 text-sm",children:w}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-2 mb-3",children:[(0,b.jsxs)("div",{className:"relative flex-1",children:[(0,b.jsxs)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-[var(--muted-foreground)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,b.jsx)("path",{d:"m21 21-4.3-4.3"})]}),(0,b.jsx)("input",{type:"text",value:y,onChange:a=>z(a.target.value),placeholder:"Search repositories...",className:"w-full pl-9 pr-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--input)] text-sm focus:outline-none focus:border-[var(--primary)] focus:bg-[var(--input-focus)] transition-colors"})]}),(0,b.jsx)("div",{className:"flex gap-1 rounded-lg border border-[var(--border)] p-1",children:["all","public","private"].map(a=>(0,b.jsx)("button",{onClick:()=>B(a),className:`px-3 py-1 text-xs rounded-md capitalize transition-colors ${A===a?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}`,children:a},a))})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2 text-xs text-[var(--muted-foreground)]",children:[(0,b.jsxs)("button",{onClick:()=>{D(a=>{let b=new Set(a);return O?N.forEach(a=>b.delete(a.id)):N.forEach(a=>b.add(a.id)),b})},disabled:0===N.length,className:"hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:[O?"Deselect all":"Select all",y||"all"!==A?` (${N.length} shown)`:""]}),C.size>0&&(0,b.jsx)("button",{onClick:()=>D(new Set),className:"hover:text-[var(--foreground)] transition-colors",children:"Clear selection"})]}),(0,b.jsx)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--card-bg)] overflow-hidden flex-1 min-h-0",children:(0,b.jsx)("div",{className:"h-full overflow-y-auto",children:u?(0,b.jsx)("div",{className:"divide-y divide-[var(--border)]",children:Array.from({length:6}).map((a,c)=>(0,b.jsxs)("div",{className:"px-4 py-3 flex items-center gap-3 animate-pulse",children:[(0,b.jsx)("div",{className:"w-4 h-4 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"w-6 h-6 rounded-full bg-[var(--muted)]"}),(0,b.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,b.jsx)("div",{className:"h-3 w-1/3 rounded bg-[var(--muted)]"}),(0,b.jsx)("div",{className:"h-2 w-2/3 rounded bg-[var(--muted)]"})]})]},c))}):0===M.length?(0,b.jsx)("div",{className:"px-4 py-10 text-center text-sm text-[var(--muted-foreground)]",children:0===s.length?"No repositories found on your account.":"No repos match your search."}):(0,b.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:M.map(a=>{let c=I.has(H(a.owner,a.name)),d=C.has(a.id);return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{className:`flex items-start gap-3 px-4 py-3 transition-colors ${c?"bg-[var(--primary-muted)]/40 cursor-default":d?"bg-[var(--primary-muted)] cursor-pointer":"hover:bg-[var(--item-hover-bg)] cursor-pointer"}`,children:[c?(0,b.jsx)("div",{className:"mt-1 w-4 h-4 rounded-sm bg-[var(--primary)]/20 text-[var(--primary)] flex items-center justify-center",title:"Already attached",children:(0,b.jsx)(o,{className:"w-2.5 h-2.5"})}):(0,b.jsx)("input",{type:"checkbox",checked:d,onChange:()=>{!I.has(H(a.owner,a.name))&&D(b=>{let c=new Set(b);return c.has(a.id)?c.delete(a.id):c.add(a.id),c})},className:"mt-1 accent-[var(--primary)]"}),(0,b.jsx)("img",{src:a.avatarUrl,alt:"",className:"w-6 h-6 rounded-full mt-0.5 flex-shrink-0"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,b.jsx)("span",{className:"text-sm font-medium truncate",children:a.fullName}),c&&(0,b.jsxs)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--primary)]/15 text-[var(--primary)] flex items-center gap-1",children:[(0,b.jsx)(o,{className:"w-2.5 h-2.5"}),"Attached"]}),a.private&&(0,b.jsx)("span",{className:"text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded bg-[var(--muted)] text-[var(--muted-foreground)]",children:"Private"})]}),a.description&&(0,b.jsx)("p",{className:"text-xs text-[var(--muted-foreground)] mt-0.5 line-clamp-1",children:a.description}),(0,b.jsxs)("div",{className:"text-[11px] text-[var(--muted-foreground)] mt-0.5",children:["Updated ",function(a){let b=Math.floor((Date.now()-new Date(a).getTime())/1e3);if(b<60)return"just now";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);if(e<30)return`${e}d ago`;let f=Math.floor(e/30);return f<12?`${f}mo ago`:`${Math.floor(f/12)}y ago`}(a.updatedAt)]})]})]})},a.id)})})})})]})}),(0,b.jsxs)("footer",{className:"px-6 py-4 border-t border-[var(--border)] flex items-center justify-between gap-3",children:[(0,b.jsxs)("span",{className:"text-sm text-[var(--muted-foreground)]",children:[C.size," selected"]}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)("button",{onClick:K,className:"px-4 py-2 rounded-lg border border-[var(--border)] hover:bg-[var(--item-hover-bg)] text-sm font-medium transition-colors",children:"Cancel"}),(0,b.jsx)("button",{onClick:P,disabled:0===C.size||E,className:"px-4 py-2 rounded-lg bg-[var(--primary)] hover:bg-[var(--primary-hover)] text-[var(--primary-foreground)] text-sm font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:E?"Attaching...":`Attach ${C.size} ${1===C.size?"repo":"repos"}`})]})]})]})})]})}a.s(["Pin",()=>o],451844);var q=a.i(734709);let r={claude:{name:"Claude Code",configPath:"~/.claude/settings.json"},codex:{name:"Codex CLI",configPath:"~/.codex/config.toml"},gemini:{name:"Gemini CLI",configPath:"~/.gemini/settings.json"}};function s({trackerType:a,projectId:l,connected:m,onConnect:n,onConnectWithKey:o,onDisconnect:s,loading:t=!1,clis:u,mcpConfigured:v,onConfigureMcp:w}){let[x,y]=c.default.useState(""),[z,A]=c.default.useState(null),[B,C]=c.default.useState(!1),[D,E]=c.default.useState(!1),[F,G]=c.default.useState(null),[H,I]=c.default.useState({}),[J,K]=c.default.useState(!1),L=async a=>{if(!w)return;G(a),I(b=>({...b,[a]:""}));let b=await w(a);b.ok||I(c=>({...c,[a]:b.error??"Failed to install MCP"})),G(null)},M=u?["claude","codex","gemini"].filter(a=>u[a]):["claude"];if(t)return(0,b.jsx)("div",{className:"flex items-center justify-center p-12",children:(0,b.jsx)(g.Loader2,{className:"animate-spin h-8 w-8 text-muted-foreground"})});if(m)return(0,b.jsxs)("div",{className:"p-8 flex flex-col items-center gap-6",children:[(0,b.jsxs)("div",{className:"w-full max-w-md p-8 border border-green-500/20 bg-green-500/5 rounded-2xl flex flex-col items-center gap-4 text-center",children:[(0,b.jsx)("div",{className:"h-16 w-16 rounded-full bg-green-500/10 flex items-center justify-center text-green-600 shadow-inner",children:(0,b.jsx)(d.CheckCircle2,{className:"h-8 w-8"})}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsxs)("h3",{className:"text-xl font-bold text-foreground capitalize",children:[a," Connected"]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["Your ",a," tickets now live in AGX. Assign them to agents, review the work, and ship PRs from one window."]})]}),(0,b.jsxs)("div",{className:"mt-2 px-4 py-1.5 rounded-full bg-background border text-xs font-medium text-muted-foreground flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-1.5 w-1.5 rounded-full bg-green-500 animate-pulse"}),"Active Connection"]}),s&&(0,b.jsxs)("button",{onClick:()=>K(!0),className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-destructive transition-colors mt-1",children:[(0,b.jsx)(j.LogOut,{className:"h-3.5 w-3.5"}),"Disconnect"]})]}),"github"===a&&(0,b.jsx)(p,{projectId:l}),s&&(0,b.jsx)(q.default,{isOpen:J,title:`Disconnect ${a}?`,message:"github"===a?"This revokes the stored credentials. Your attached repositories and synced history stay — reconnecting will resume where you left off.":`This revokes the stored credentials for ${a}. Project settings and synced history stay.`,confirmLabel:"Disconnect",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{K(!1),s()},onCancel:()=>K(!1)}),"github"!==a&&M.length>0&&(0,b.jsx)("div",{className:"w-full max-w-md",children:(0,b.jsxs)("div",{className:"border rounded-xl p-5 flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i.Terminal,{className:"h-4 w-4 text-muted-foreground"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:"MCP Server"})]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground leading-relaxed -mt-2",children:["Connect your ",a," workspace so your tickets show up in AGX and agents can work them through to a PR."]}),M.map(a=>{let c=r[a],e=v?.[a]??!1,f=F===a,i=H[a];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-foreground",children:c.name}),e?(0,b.jsxs)("span",{className:"text-xs font-medium text-green-600 flex items-center gap-1",children:[(0,b.jsx)(d.CheckCircle2,{className:"h-3.5 w-3.5"}),"Installed"]}):(0,b.jsx)("button",{onClick:()=>L(a),disabled:f||!w,className:"flex items-center gap-1.5 px-3 py-1 bg-secondary text-secondary-foreground rounded-md text-xs font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-3 w-3 animate-spin"}),"Installing…"]}):(0,b.jsx)(b.Fragment,{children:"Install"})})]}),e&&(0,b.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:["Configured in ",(0,b.jsx)("code",{className:"font-mono",children:c.configPath})]}),i&&(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),i]})]},a)})]})})]});let N=async()=>{if(x.trim()){E(!0),A(null);try{let a=await o(x.trim());a.ok?(y(""),C(!1)):A(a.error??"Failed to connect")}catch(a){A("An unexpected error occurred")}finally{E(!1)}}};return(0,b.jsxs)("div",{className:"flex flex-col items-center gap-6 p-8",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(k.TrackerIcon,{trackerType:a,className:"h-16 w-16"}),(0,b.jsx)("div",{className:"absolute -bottom-1 -right-1 h-6 w-6 rounded-full bg-background border flex items-center justify-center shadow-sm",children:(0,b.jsx)(f.Globe,{className:"h-3 w-3 text-muted-foreground"})})]}),(0,b.jsxs)("div",{className:"text-center space-y-2",children:[(0,b.jsxs)("h3",{className:"text-lg font-semibold capitalize",children:["Connect to ",a]}),(0,b.jsxs)("p",{className:"text-sm text-muted-foreground text-center max-w-sm leading-relaxed",children:["Link your ",a," account to import issues, track progress, and automate your workflow."]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-3 w-full max-w-xs pt-2",children:[(0,b.jsxs)("button",{onClick:n,className:"flex items-center justify-center gap-2 w-full px-4 py-2.5 bg-primary text-primary-foreground rounded-lg text-sm font-semibold hover:bg-primary/90 transition-all active:scale-[0.98] shadow-sm",children:[(0,b.jsx)(f.Globe,{className:"h-4 w-4"}),"Connect with OAuth"]}),(0,b.jsxs)("button",{onClick:()=>{C(!B),A(null)},className:"flex items-center justify-center gap-2 w-full px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors font-medium",children:[(0,b.jsx)(e.Key,{className:"h-3.5 w-3.5"}),B?"Use OAuth instead":"github"===a?"Connect with Personal Access Token":"Connect with API key"]}),(0,b.jsx)("div",{className:`grid transition-all duration-300 ease-in-out ${B?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0 pointer-events-none"}`,children:(0,b.jsx)("div",{className:"overflow-hidden",children:(0,b.jsxs)("div",{className:"flex flex-col gap-3 pt-2",children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"password",value:x,onChange:a=>{y(a.target.value),z&&A(null)},placeholder:"github"===a?"ghp_… or github_pat_…":"Paste your API key here",className:`w-full px-3 py-2 border rounded-lg text-sm bg-background transition-colors focus:outline-none focus:ring-2 focus:ring-primary/20 ${z?"border-destructive":"focus:border-primary"}`,onKeyDown:a=>"Enter"===a.key&&N()}),(0,b.jsx)(e.Key,{className:"absolute right-3 top-2.5 h-4 w-4 text-muted-foreground/50"})]}),z&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-destructive bg-destructive/10 p-2 rounded-md",children:[(0,b.jsx)(h.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),(0,b.jsx)("p",{children:z})]}),(0,b.jsx)("button",{onClick:N,disabled:D||!x.trim(),className:"flex items-center justify-center gap-2 w-full px-4 py-2 bg-secondary text-secondary-foreground rounded-lg text-sm font-semibold hover:bg-secondary/90 disabled:opacity-50 transition-all active:scale-[0.98]",children:D?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.Loader2,{className:"h-4 w-4 animate-spin"}),"Connecting..."]}):"Verify & Connect"}),(0,b.jsx)("p",{className:"text-[10px] text-muted-foreground text-center px-2",children:"github"===a?"Fine-grained PAT recommended. Needs repo access + read on issues/pull requests.":`Your API key is stored securely and only used for ${a} integration.`})]})})})]})]})}a.s(["default",()=>s],778784)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_local_fed01721._.js.map
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"wasm": [],
|
|
21
21
|
"assets": [],
|
|
22
22
|
"env": {
|
|
23
|
-
"__NEXT_BUILD_ID": "
|
|
24
|
-
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "
|
|
25
|
-
"__NEXT_PREVIEW_MODE_ID": "
|
|
26
|
-
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "
|
|
27
|
-
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "
|
|
23
|
+
"__NEXT_BUILD_ID": "x7w3oijN4B1r7IvTuL96T",
|
|
24
|
+
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "CxCUxeOKwu8Ofp9t+8vT0Zj74czk1vs1BqLD9twKzTw=",
|
|
25
|
+
"__NEXT_PREVIEW_MODE_ID": "36f6faf2f97fe93a4b06563e300ddfdd",
|
|
26
|
+
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "e452a527d3fc82f1facca4a0bbeba5e86b8490fd18b34686c7c9823c7d8f7ecd",
|
|
27
|
+
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "a4a877a0bbf4704bb5ecacd3261d44c93c1908984f89a563c950b47665cb358b"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--x7w3oijN4B1r7IvTuL96T--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2473c16c0c2f6b5f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/6d8a7494a0cea7a0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/dd43daafe104f561.js"/><script src="/_next/static/chunks/aa3029ae0b62f930.js" async=""></script><script src="/_next/static/chunks/df673c7fb40f4048.js" async=""></script><script src="/_next/static/chunks/2dcb395af210b784.js" async=""></script><script src="/_next/static/chunks/edb0e1ed5398cec6.js" async=""></script><script src="/_next/static/chunks/turbopack-87f23485587f08c3.js" async=""></script><script src="/_next/static/chunks/ddcc46bd872e6481.js" async=""></script><script src="/_next/static/chunks/341a398270fbed77.js" async=""></script><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-DVQQG95LNL" as="script"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>AGX</title><meta name="description" content="Workflow surface for AI-assisted dev work — tickets, repos, PRs, and agents in one window."/><script>
|
|
2
2
|
(() => {
|
|
3
3
|
try {
|
|
4
4
|
const storedTheme = localStorage.getItem("agx-theme");
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
root.style.colorScheme = theme;
|
|
11
11
|
} catch {}
|
|
12
12
|
})();
|
|
13
|
-
</script><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased min-h-screen overflow-x-hidden overflow-y-auto bg-[var(--background)] text-[var(--foreground)] selection:bg-[var(--primary)] selection:text-[var(--primary-foreground)]"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex items-center justify-center bg-[var(--background)]"><span class="spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"></span></div><script src="/_next/static/chunks/dd43daafe104f561.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[6167,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n3:I[803750,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n4:I[954957,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n5:I[356453,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n6:I[934689,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"GoogleAnalytics\"]\n7:I[404581,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"PostHogAnalytics\"]\n8:I[351240,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[351240,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"ViewportBoundary\"]\nd:I[351240,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"MetadataBoundary\"]\nf:I[23023,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n:HL[\"/_next/static/chunks/2473c16c0c2f6b5f.css\",\"style\"]\n:HL[\"/_next/static/chunks/
|
|
13
|
+
</script><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased min-h-screen overflow-x-hidden overflow-y-auto bg-[var(--background)] text-[var(--foreground)] selection:bg-[var(--primary)] selection:text-[var(--primary-foreground)]"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex items-center justify-center bg-[var(--background)]"><span class="spinner w-8 h-8 border-3 border-[var(--primary)] border-t-transparent rounded-full"></span></div><script src="/_next/static/chunks/dd43daafe104f561.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[6167,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n3:I[803750,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n4:I[954957,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n5:I[356453,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n6:I[934689,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"GoogleAnalytics\"]\n7:I[404581,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"PostHogAnalytics\"]\n8:I[351240,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[351240,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"ViewportBoundary\"]\nd:I[351240,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"MetadataBoundary\"]\nf:I[23023,[\"/_next/static/chunks/ddcc46bd872e6481.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n:HL[\"/_next/static/chunks/2473c16c0c2f6b5f.css\",\"style\"]\n:HL[\"/_next/static/chunks/6d8a7494a0cea7a0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"x7w3oijN4B1r7IvTuL96T\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2473c16c0c2f6b5f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/6d8a7494a0cea7a0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ddcc46bd872e6481.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/341a398270fbed77.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(() =\u003e {\\n try {\\n const storedTheme = localStorage.getItem(\\\"agx-theme\\\");\\n const theme = storedTheme === \\\"dark\\\" || storedTheme === \\\"light\\\"\\n ? storedTheme\\n : (window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches ? \\\"dark\\\" : \\\"light\\\");\\n const root = document.documentElement;\\n root.classList.toggle(\\\"dark\\\", theme === \\\"dark\\\");\\n root.style.colorScheme = theme;\\n } catch {}\\n})();\\n\"}}]}],[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased min-h-screen overflow-x-hidden overflow-y-auto bg-[var(--background)] text-[var(--foreground)] selection:bg-[var(--primary)] selection:text-[var(--primary-foreground)]\",\"children\":[[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:0:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:0:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:0:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:0:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"a:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"AGX\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Workflow surface for AI-assisted dev work — tickets, repos, PRs, and agents in one window.\"}]]\n"])</script></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/dd43daafe104f561.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[803750,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n3:I[954957,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n4:I[351240,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[351240,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"ViewportBoundary\"]\n9:I[351240,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"MetadataBoundary\"]\nb:I[23023,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--x7w3oijN4B1r7IvTuL96T--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/dd43daafe104f561.js"/><script src="/_next/static/chunks/aa3029ae0b62f930.js" async=""></script><script src="/_next/static/chunks/df673c7fb40f4048.js" async=""></script><script src="/_next/static/chunks/2dcb395af210b784.js" async=""></script><script src="/_next/static/chunks/edb0e1ed5398cec6.js" async=""></script><script src="/_next/static/chunks/turbopack-87f23485587f08c3.js" async=""></script><script src="/_next/static/chunks/7212cdf092396efe.js" async=""></script><script src="/_next/static/chunks/341a398270fbed77.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/dd43daafe104f561.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[803750,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n3:I[954957,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n4:I[351240,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[351240,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"ViewportBoundary\"]\n9:I[351240,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"MetadataBoundary\"]\nb:I[23023,[\"/_next/static/chunks/7212cdf092396efe.js\",\"/_next/static/chunks/341a398270fbed77.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"x7w3oijN4B1r7IvTuL96T\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/7212cdf092396efe.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/341a398270fbed77.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"CxCUxeOKwu8Ofp9t+8vT0Zj74czk1vs1BqLD9twKzTw=\"\n}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,169729,e=>{"use strict";let t=(0,e.i(363732).default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);e.s(["PanelLeftOpen",()=>t],169729)},468947,e=>{"use strict";let t=(0,e.i(363732).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",()=>t],468947)},721571,e=>{"use strict";let t=(0,e.i(363732).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",()=>t],721571)},524780,e=>{"use strict";var t=e.i(762281),r=e.i(935851),a=e.i(307241),s=e.i(810605);function i(){let[e,i]=(0,r.useState)("unknown"),[l,o]=(0,r.useState)([]),[n,d]=(0,r.useState)(""),[c,u]=(0,r.useState)(!1),p=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/status");if(!e.ok)return void i("unknown");let t=await e.json();i("ok"===t.status?"ok":"degraded");let r=t.services.filter(e=>"agx-chat"===e.name||"agx-cloud"===e.name);o(r),d(new Date().toLocaleTimeString())}catch{i("unknown"),o([])}},[]);return(0,r.useEffect)(()=>{p();let e=setInterval(p,s.UI_POLL_SYSTEM_STATUS_MS);return()=>clearInterval(e)},[p]),(0,t.jsxs)("div",{className:"relative",onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),children:[(0,t.jsx)(a.default,{href:"/status",className:"inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] transition-all hover:bg-[var(--app-shell-subtle)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]",title:"System status",children:(0,t.jsx)("span",{className:`h-2.5 w-2.5 rounded-full ${"ok"===e?"bg-emerald-400":"degraded"===e?"bg-amber-400":"bg-[var(--app-shell-muted)]"} ${"degraded"===e?"animate-pulse":""}`})}),c&&(0,t.jsxs)("div",{className:"absolute top-full right-0 z-50 mt-1.5 w-52 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] p-3 text-xs shadow-lg",children:[l.length>0?(0,t.jsx)("ul",{className:"space-y-1.5",children:l.map(e=>(0,t.jsxs)("li",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:e.name}),(0,t.jsx)("span",{className:"ok"===e.status?"text-emerald-600":"error"===e.status?"text-red-500":"text-[var(--muted-foreground)]",children:"ok"===e.status?"Healthy":"error"===e.status?e.detail||"Error":"Unavailable"})]},e.name))}):(0,t.jsx)("p",{className:"text-[var(--app-shell-soft-text)]",children:"Checking..."}),n&&(0,t.jsxs)("p",{className:"mt-2 border-t border-[var(--app-shell-border)] pt-1.5 text-[var(--app-shell-soft-text)]",children:["Last check: ",n]})]})]})}e.s(["StatusIndicator",()=>i])},749410,e=>{"use strict";var t=e.i(762281),r=e.i(935851),a=e.i(866389),s=e.i(498027),i=e.i(997626),l=e.i(55236),o=e.i(196630),n=e.i(363732);let d=(0,n.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var c=e.i(929870),u=e.i(8707),p=e.i(797167),m=e.i(938201),h=e.i(202641),x=e.i(572665);let f=(0,n.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var v=e.i(597628),b=e.i(99296);let g=(0,n.default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]),j=(0,n.default)("circle-arrow-up",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]),k=(0,n.default)("git-pull-request",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);var w=e.i(307241),y=e.i(44054),N=e.i(810605),_=e.i(884564),S=e.i(535208),C=e.i(275850),I=e.i(902572),$=e.i(958164),z=e.i(367859);let T=(0,n.default)("book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]),M=(0,n.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var E=e.i(681619);let A={linear:"Linear",jira:"Jira",intercom:"Intercom",freshdesk:"Freshdesk",github:"GitHub"};function F(e){return A[e]??e.charAt(0).toUpperCase()+e.slice(1)}function P({projectSlug:e,trackerConnections:a,activeTrackerType:s,isTrackingActive:i,onLinkClick:l}){let o=[...a].sort((e,t)=>new Date(e.connectedAt).getTime()-new Date(t.connectedAt).getTime()),n=o.filter(e=>e.connected),d=o.filter(e=>!e.connected),u=n.some(e=>"github"===e.type),[p,m]=(0,r.useState)([]),[h,x]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{if(!u)return void m([]);let e=!1;return fetch("/api/github/repos",{cache:"no-store"}).then(e=>e.ok?e.json():{repos:[]}).then(t=>{e||m(t.repos??[])}).catch(()=>{e||m([])}),()=>{e=!0}},[u]),(0,t.jsxs)(t.Fragment,{children:[0===n.length&&0===d.length&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e}/tracking/connect`,onClick:l,className:`workspace-sidebar__nav-item ${i?"workspace-sidebar__nav-item--active":""}`,children:[(0,t.jsx)(c.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect Tracker"})]})}),n.map(r=>{let a=i&&s===r.type;return(0,t.jsxs)("div",{className:"workspace-sidebar__workspace-item",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsxs)(w.default,{href:`/projects/${e}/tracking/${r.type}`,onClick:l,className:`workspace-sidebar__nav-item flex-1 ${a?"workspace-sidebar__nav-item--active":""}`,"aria-current":a?"page":void 0,children:[(0,t.jsx)(E.TrackerIcon,{trackerType:r.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:F(r.type)})]}),"github"===r.type&&p.length>0&&(0,t.jsx)("button",{type:"button","aria-label":h?"Collapse GitHub repos":"Expand GitHub repos","aria-expanded":h,onClick:()=>x(e=>!e),className:"p-1 rounded hover:bg-[var(--item-hover-bg)] text-[var(--muted-foreground)]",children:(0,t.jsx)(z.ChevronRight,{size:12,className:`transition-transform ${h?"rotate-90":""}`})})]}),"github"===r.type&&h&&p.length>0&&(0,t.jsx)("div",{className:"flex flex-col gap-0.5 mt-0.5 pl-5",children:p.map(r=>(0,t.jsxs)(w.default,{href:`/projects/${e}/tracking/github?repo=${encodeURIComponent(r.id)}`,onClick:l,className:"workspace-sidebar__nav-item",title:r.id,children:[r.private?(0,t.jsx)(M,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}):(0,t.jsx)(T,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-xs text-[var(--muted-foreground)] truncate",children:r.name})]},r.id))})]},r.type)}),d.map(r=>(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e}/tracking/${r.type}`,onClick:l,className:"workspace-sidebar__nav-item",children:[(0,t.jsx)(E.TrackerIcon,{trackerType:r.type,className:"flex-shrink-0 h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:F(r.type)}),(0,t.jsx)("span",{className:"ml-auto shrink-0",title:"Connection issue — click to reconnect",children:(0,t.jsx)($.AlertTriangle,{size:12,className:"text-yellow-500"})})]})},r.type)),(n.length>0||d.length>0)&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e}/tracking/connect`,onClick:l,className:"workspace-sidebar__nav-item",children:[(0,t.jsx)(c.Plus,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm text-[var(--muted-foreground)]",children:"Connect"})]})})]})}var L=e.i(594643),R=e.i(235136);function V({compact:e=!1}){return(0,t.jsxs)("span",{className:`workspace-sidebar__brand-logo${e?" workspace-sidebar__brand-logo--compact":""}`,"aria-hidden":"true",children:[(0,t.jsx)("img",{src:"/logo_dark.png",alt:"AGX",className:"block dark:hidden",style:{height:28}}),(0,t.jsx)("img",{src:"/logo_light.png",alt:"AGX",className:"hidden dark:block",style:{height:28}})]})}function U({label:e,children:s}){let i=(0,r.useRef)(null),[l,o]=(0,r.useState)(null);return(0,t.jsxs)("div",{ref:i,onMouseEnter:()=>{let e=i.current?.firstElementChild??i.current;if(!e)return;let t=e.getBoundingClientRect();o({top:t.top+t.height/2,left:t.right+8})},onMouseLeave:()=>o(null),style:{display:"contents"},children:[s,l&&(0,a.createPortal)((0,t.jsx)("div",{className:"workspace-sidebar__rail-tooltip",style:{top:l.top,left:l.left,transform:"translateY(-50%)"},children:e}),document.body)]})}function B({projects:e,activeProjectId:a,onSelectProject:i,onCreateProject:o}){let[n,d]=(0,r.useState)(!1),[m,h]=(0,r.useState)(""),x=(0,r.useRef)(null),f=(0,r.useRef)(null),v=e.find(e=>e.id===a)??e[0],b=m.trim()?e.filter(e=>e.name.toLowerCase().includes(m.toLowerCase())):e;return(0,r.useEffect)(()=>{if(!n)return;let e=e=>{x.current&&!x.current.contains(e.target)&&(d(!1),h(""))};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[n]),(0,r.useEffect)(()=>{n&&f.current&&f.current.focus()},[n]),(0,t.jsxs)("div",{className:"relative px-3 pt-3 pb-2",ref:x,children:[(0,t.jsxs)("button",{type:"button",onClick:()=>d(!n),className:"flex w-full items-center gap-2 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] px-2.5 py-2 text-sm text-[var(--foreground)] transition-all hover:border-[var(--app-shell-border-strong)]",children:[(0,t.jsx)(l.Folder,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"flex-1 truncate text-left font-medium",children:v?.name??"Select project"}),(0,t.jsx)(s.ChevronDown,{size:14,className:`flex-shrink-0 text-[var(--muted-foreground)] transition-transform ${n?"rotate-180":""}`})]}),n&&(0,t.jsxs)("div",{className:"absolute left-3 right-3 z-50 mt-1 rounded-lg border border-[var(--app-shell-border)] bg-[var(--app-shell-elevated)] shadow-lg overflow-hidden",children:[(0,t.jsx)("div",{className:"p-2 border-b border-[var(--app-shell-border)]",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-[var(--app-shell-border)] bg-[var(--app-shell-subtle)] px-2 py-1.5",children:[(0,t.jsx)(u.Search,{size:12,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("input",{ref:f,type:"text",value:m,onChange:e=>h(e.target.value),placeholder:"Search projects...",className:"flex-1 bg-transparent text-xs text-[var(--foreground)] placeholder:text-[var(--muted-foreground)] outline-none"}),m&&(0,t.jsx)("button",{type:"button",onClick:()=>h(""),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,t.jsx)(p.X,{size:10})})]})}),(0,t.jsxs)("div",{className:"max-h-52 overflow-y-auto py-1",children:[b.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>{i?.(e.id),d(!1),h("")},className:`flex w-full items-center gap-2 px-3 py-1.5 text-sm transition-colors hover:bg-[var(--app-shell-subtle)] ${e.id===v?.id?"text-[var(--foreground)] font-medium":"text-[var(--muted-foreground)]"}`,children:[(0,t.jsx)(l.Folder,{size:12,className:"flex-shrink-0"}),(0,t.jsx)("span",{className:"truncate",children:e.name})]},e.id)),0===b.length&&(0,t.jsx)("p",{className:"px-3 py-2 text-xs text-[var(--muted-foreground)]",children:"No projects found"})]}),(0,t.jsx)("div",{className:"border-t border-[var(--app-shell-border)] p-1",children:(0,t.jsxs)("button",{type:"button",onClick:()=>{d(!1),h(""),o()},className:"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-xs text-[var(--muted-foreground)] transition-colors hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:[(0,t.jsx)(c.Plus,{size:12}),(0,t.jsx)("span",{children:"New project"})]})})]})]})}function D({threads:e,participants:s=[],activeThreadId:l,isLoading:n,isCreating:u,onSelectThread:$,onCreateThread:z,onRenameThread:T,onDeleteThread:M,deletingThreadId:E=null,renamingThreadId:A=null,activeParticipantIds:F=[],onToggleParticipantActive:D,visible:O=!1,isRestoringActiveThread:W=!1,onToggle:q,onSearch:H,projects:K=[],onCreateProject:G,onUpdateProject:J,onDeleteProject:X,onAddAgentToProject:Y,onRemoveAgentFromProject:Z,onAddAgentViaForm:Q,onReorderProjectAgents:ee,onUpdateParticipant:et,onSelectProject:er,activeProjectId:ea=null,activeProjectView:es=null,width:ei,onWidthChange:el,onAddTeam:eo,stageShow:en,trackerConnections:ed=[]}){let ec,eu,{isTouchLayout:ep,isPhone:em}=(0,y.useInputCapabilities)(),{updateAvailable:eh}=function(){let[e,t]=(0,r.useState)({updateAvailable:!1,latestVersion:null});return(0,r.useEffect)(()=>{async function e(){try{let e=await fetch("/api/update-check");if(!e.ok)return;let r=await e.json(),a=r?.updateAvailable===!0,s="string"==typeof r?.latestVersion?r.latestVersion:null;t({updateAvailable:a,latestVersion:s})}catch{}}e();let r=setInterval(()=>{e()},N.UI_POLL_UPDATE_CHECK_MS);return()=>clearInterval(r)},[]),e}(),ex=(0,r.useRef)(!1);(0,r.useRef)(0);let ef=(0,r.useRef)(null),[ev,eb]=(0,r.useState)(!1),[eg,ej]=(0,r.useState)(new Set);(0,r.useEffect)(()=>{if(eg.size>0||!K?.length)return;let e=K.find(e=>window.location.pathname.includes(`/projects/${e.slug}`));ej(new Set([e?.id??K[0].id]))},[K]);let[ek,ew]=(0,r.useState)(null),[ey,eN]=(0,r.useState)(new Set),[e_,eS]=(0,r.useState)(!1),[eC,eI]=(0,r.useState)(null),[e$,ez]=(0,r.useState)(null),eT=(0,S.useProjectFormState)(),[eM,eE]=(0,r.useState)(null),eA=(0,r.useCallback)(e=>{e&&(e.focus(),e.select())},[]),[eF,eP]=(0,r.useState)(null),[eL,eR]=(0,r.useState)(null),eV=eL?s.find(e=>e.id===eL)??null:null,[eU,eB]=(0,r.useState)(null),[eD,eO]=(0,r.useState)({});(0,r.useEffect)(()=>{if(!K?.length)return;let e=!1,t=async()=>{try{let t=await fetch("/api/processes?enrich=1");if(!t.ok||e)return;let r=await t.json();if(e)return;let a=r.filter(e=>"spawning"===e.state||"running"===e.state),i={};for(let e of K){let t=e.slug.trim().toLowerCase(),r=new Set((e.thread_ids??[]).map(e=>e.trim()).filter(Boolean)),l=[],o=[],n=[],d=new Set,c=new Set,u=new Set;for(let e of a){let a=e.projectSlug?.trim().toLowerCase();if(!(a&&a===t||r.has(e.workspaceId)||r.has(e.threadId)))continue;let i=s.find(t=>t.id===e.agentId),p={agentId:e.agentId,color:i?.color??"#10b981"};e.linearIssueId?c.has(e.agentId)||(c.add(e.agentId),o.push(p)):e.threadId?.startsWith("objective-chat:")||e.workspaceId?.startsWith("objective-chat:")?d.has(e.agentId)||(d.add(e.agentId),l.push(p)):u.has(e.agentId)||(u.add(e.agentId),n.push(p))}(l.length||o.length||n.length)&&(i[e.id]={objectives:l,linear:o,chat:n})}eO(i)}catch{}};t();let r=setInterval(t,3e3);return()=>{e=!0,clearInterval(r)}},[K,s]);let[eW,eq]=(0,r.useState)({}),[eH,eK]=(0,r.useState)(new Set),[eG,eJ]=(0,r.useState)(new Set),eX=(0,r.useRef)(new Set);(0,r.useEffect)(()=>{Array.from(eg).forEach(e=>{eG.has(e)||(eJ(t=>new Set(t).add(e)),(async()=>{try{let t=await fetch(`/api/projects/${e}/teams`);if(!t.ok)return;let r=await t.json();eq(t=>({...t,[e]:r.teams??[]}))}catch{}})())})},[eg,eG]);let[eY,eZ]=(0,r.useState)(null),eQ=async()=>{if(!eC&&!e$)return;if(!eT.form.name.trim())return void eT.setFormError("Project name is required");let e=(0,C.findInvalidProjectRepoDraft)(eT.repos);if(e)return void eT.setFormError((0,C.formatInvalidProjectRepoDraftMessage)(e));eT.setFormError(null),eT.setIsSubmitting(!0);let t=(0,S.createProjectPayload)(eT.form,eT.repos);e$?await J?.(e$.id,t):await G?.(t,eC?.threadId),eT.setIsSubmitting(!1),eI(null),ez(null)};(0,r.useEffect)(()=>{eb(!0)},[]),(0,r.useEffect)(()=>{let e=!1;async function t(){if(eU?.repoId)try{let t=await fetch(`/api/knowledge-notes?scope=repo&subjectId=${encodeURIComponent(eU.repoId)}`),r=(t.ok?await t.json():{note:null}).note;e||eB(e=>e&&e.repoId===eU.repoId?{...e,generatedKnowledge:r?.content?[{id:r.id,content:r.content,created_at:r.updatedAt??r.createdAt}]:[],isLoadingKnowledge:!1}:e)}catch{e||eB(e=>e&&e.repoId===eU.repoId?{...e,generatedKnowledge:[],isLoadingKnowledge:!1}:e)}}return eU?.repoId&&t(),()=>{e=!0}},[eU?.repoId]);let e0=ek?K.find(e=>e.id===ek.projectId):null,e1=new Set(e0?.agents.map(e=>e.agent_id)??[]),e2=ek?s.filter(e=>!e1.has(e.id)):[],e3=e.length>0,e5=!!O,e4=(0,r.useCallback)(()=>{ep&&q?.()},[ep,q]),e6=[...e].sort((e,t)=>(e.title??"").localeCompare(t.title??"")),e8=new Map(e.map(e=>[e.id,e])),e7=K.filter(e=>!e.is_default),e9=e7.find(e=>e.id===ea)??e7[0]??null,{connections:te}=(0,R.useTrackerConnections)(e9?.id??null),tt=en??{home:!0,threads:!0,terminal:!0,objectives:!1,objectivesIsNew:!1,tracking:!1,teams:!1,folders:!1,scheduledTasks:!1,envVars:!1,notifications:!1};if((0,r.useEffect)(()=>{if(0===e7.length)return;let t=new Map,r=new Set,a=new Map;for(let e of e7){for(let t of e.thread_ids??[])"string"==typeof t&&t.trim()&&r.add(t);for(let r of(0,I.readProjectObjectivesWorkspace)(e.metadata).objectives){let a=r.id.trim();a&&t.set(a,{projectId:e.id,canonicalThreadId:r.threadId?.trim()||`objective-chat:${a}`})}}for(let t of e){let e=t.metadata&&"object"==typeof t.metadata?t.metadata:null,r="objective"===("string"==typeof e?.scope?e.scope:"")||t.id.startsWith("objective-chat:"),s=t.title?.trim().toLowerCase()??"";if(!r||!s)continue;let i=a.get(s)??[];i.push(t),a.set(s,i)}for(let[e,t]of a)a.set(e,[...t].sort((e,t)=>t.updatedAt-e.updatedAt));for(let s of e){let e=s.metadata&&"object"==typeof s.metadata?s.metadata:null,i="string"==typeof e?.scope?e.scope:"",l="string"==typeof e?.objectiveId?e.objectiveId.trim():"",o=s.id.startsWith("objective-chat:")?s.id.slice(15).trim():"",n=l||o,d="objective"===i||!!o,c=s.title?.trim().toLowerCase()??"",u=0===s.messages.length&&s.updatedAt<Date.now()-3e5;if(!d)continue;let p=n?t.get(n):void 0;if(p){if(s.id!==p.canonicalThreadId&&u){let e=`delete:${s.id}`;if(eX.current.has(e))continue;eX.current.add(e),Promise.resolve(M(s.id)).catch(t=>{eX.current.delete(e),console.warn("Failed to delete legacy objective thread",t)});continue}if(!r.has(s.id)){let e=`link:${s.id}`;if(eX.current.has(e))continue;eX.current.add(e),fetch(`/api/projects/${p.projectId}/threads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({threadId:s.id})}).then(e=>{if(!e.ok)throw Error(`Request failed with status ${e.status}`)}).catch(t=>{eX.current.delete(e),console.warn("Failed to re-link objective thread",t)})}continue}if(!u)continue;let m=c?a.get(c)??[]:[];if(m.length<2||m[0]?.id===s.id)continue;let h=`delete:${s.id}`;eX.current.has(h)||(eX.current.add(h),Promise.resolve(M(s.id)).catch(e=>{eX.current.delete(h),console.warn("Failed to delete orphan objective thread",e)}))}},[e7,M,e]),!function({focusTarget:e,shouldFocus:t}){(0,r.useEffect)(()=>{if(!t||"u"<typeof document)return;let r=e.current;if(!r||r instanceof HTMLButtonElement&&r.disabled)return;let a=document.activeElement;if(!(a&&(r===a||r.contains(a))))try{r.focus({preventScroll:!0})}catch{r.focus()}},[e,t])}({focusTarget:ef,shouldFocus:e5&&!(n&&!e3||W&&e3)&&!e3&&!u}),!e5){if(ep)return null;let r=e9?.slug;return(0,t.jsxs)("aside",{id:"workspace-sidebar",className:"workspace-sidebar workspace-sidebar--collapsed","aria-label":"Workspace sidebar",children:[(0,t.jsx)("div",{className:"workspace-sidebar__brand",children:(0,t.jsx)("button",{type:"button",onClick:q,className:"workspace-sidebar__brand-trigger border-none outline-none cursor-pointer","aria-label":"Show chats",title:"Show chats",children:(0,t.jsx)(V,{compact:!0})})}),r&&(0,t.jsxs)("nav",{className:"workspace-sidebar__collapsed-rail",children:[(0,t.jsx)(U,{label:"Home",children:(0,t.jsx)(w.default,{href:`/projects/${r}`,className:`workspace-sidebar__rail-icon${"home"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(f,{size:16})})}),(tt.objectives||tt.tracking||tt.scheduledTasks)&&(0,t.jsx)("div",{className:"workspace-sidebar__rail-separator"}),tt.objectives&&(0,t.jsx)(U,{label:"Objectives",children:(0,t.jsx)(w.default,{href:`/projects/${r}/objectives`,className:`workspace-sidebar__rail-icon${"objectives"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(m.Target,{size:16})})}),tt.tracking&&(0,t.jsx)(U,{label:"Task Tracking",children:(0,t.jsx)(w.default,{href:`/projects/${r}/tracking`,className:`workspace-sidebar__rail-icon${"linear"===es||"tracking"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(L.LinearIcon,{className:"h-4 w-4"})})}),tt.tracking&&(0,t.jsx)(U,{label:"Pull Requests",children:(0,t.jsx)(w.default,{href:`/projects/${r}/prs`,className:"workspace-sidebar__rail-icon",children:(0,t.jsx)(k,{size:16})})}),tt.scheduledTasks&&(0,t.jsx)(U,{label:"Scheduled Jobs",children:(0,t.jsx)(w.default,{href:`/projects/${r}/automations`,className:`workspace-sidebar__rail-icon${"automations"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(i.Zap,{size:16})})}),(0,t.jsx)("div",{className:"workspace-sidebar__rail-separator"}),(0,t.jsx)(U,{label:"Terminal",children:(0,t.jsx)(w.default,{href:`/projects/${r}/terminal`,className:`workspace-sidebar__rail-icon${"terminal"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(b.TerminalSquare,{size:16})})}),(0,t.jsx)(U,{label:"Chat",children:(0,t.jsx)("button",{type:"button",className:`workspace-sidebar__rail-icon${"thread"===es?" workspace-sidebar__rail-icon--active":""}`,onClick:()=>{let t=e6.filter(e=>e9?.thread_ids?.includes(e.id)),r=e9?.thread_ids?.find(t=>e.some(e=>e.id===t))??t[0]?.id;r&&$(r)},children:(0,t.jsx)(v.MessageSquare,{size:16})})}),(tt.teams||tt.folders||tt.envVars||tt.notifications)&&(0,t.jsx)("div",{className:"workspace-sidebar__rail-separator"}),tt.teams&&(0,t.jsx)(U,{label:"Teams",children:(0,t.jsx)(w.default,{href:`/projects/${r}/teams`,className:`workspace-sidebar__rail-icon${"teams"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(x.Users,{size:16})})}),tt.folders&&(0,t.jsx)(U,{label:"Workspace Map",children:(0,t.jsx)(w.default,{href:`/projects/${r}/folders`,className:`workspace-sidebar__rail-icon${"folders"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(o.FolderGit2,{size:16})})}),tt.envVars&&(0,t.jsx)(U,{label:"Env Variables",children:(0,t.jsx)(w.default,{href:`/projects/${r}/env-vars`,className:`workspace-sidebar__rail-icon${"env-vars"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(g,{size:16})})}),tt.notifications&&(0,t.jsx)(U,{label:"Notifications",children:(0,t.jsx)(w.default,{href:`/projects/${r}/notifications`,className:`workspace-sidebar__rail-icon${"notifications"===es?" workspace-sidebar__rail-icon--active":""}`,children:(0,t.jsx)(h.Bell,{size:16})})})]}),(0,t.jsxs)("div",{className:"mt-auto p-2 flex flex-col gap-2",children:[eh&&r&&(0,t.jsx)(U,{label:"Update available",children:(0,t.jsx)(w.default,{href:`/projects/${r}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"workspace-sidebar__rail-icon",children:(0,t.jsx)(j,{size:16})})}),(0,t.jsx)(U,{label:"Join Discord",children:(0,t.jsx)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"workspace-sidebar__rail-icon",style:{backgroundColor:"#5865F2",color:"white"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",children:(0,t.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})})})})]})]})}return(0,t.jsxs)(t.Fragment,{children:[ep?(0,t.jsx)("button",{type:"button",className:"workspace-sidebar__backdrop",onClick:q,"aria-label":"Close sidebar"}):null,(0,t.jsxs)("aside",{id:"workspace-sidebar",className:`workspace-sidebar${ep?" workspace-sidebar--drawer":""}${ep&&em?" workspace-sidebar--drawer-phone":""}`,"aria-label":"Workspace sidebar","aria-busy":n?"true":void 0,"aria-modal":ep?"true":void 0,role:ep?"dialog":void 0,style:!ep&&ei?{width:`${ei}px`,minWidth:`${ei}px`}:void 0,children:[(0,t.jsxs)("div",{className:"workspace-sidebar__brand",children:[(0,t.jsx)("div",{className:"workspace-sidebar__brand-content",children:(0,t.jsx)(V,{})}),q&&(0,t.jsx)("button",{type:"button",onClick:q,"aria-label":"Hide chats",title:"Hide chats",className:"workspace-sidebar__brand-toggle ml-auto inline-flex h-7 w-7 items-center justify-center rounded-md text-[var(--app-shell-soft-text)] transition-all hover:bg-[var(--app-shell-subtle)] hover:text-[var(--foreground)]",children:(0,t.jsx)(d,{className:"h-4 w-4",strokeWidth:1.75})})]}),(0,t.jsxs)("div",{className:"workspace-sidebar__content",children:[(0,t.jsx)(B,{projects:e7,activeProjectId:ea,onSelectProject:e=>{er?.(e),e4()},onCreateProject:()=>{eT.resetForm(),ez(null),eI({})}}),(()=>{if(!e9)return null;let e=e6.filter(e=>e9.thread_ids?.includes(e.id)),r=e9.thread_ids?.find(e=>e8.has(e))??e9.thread_ids?.[0]??e[0]?.id??null,a=e9.id===ea,n=a&&"home"===es,d=a&&"objectives"===es,c=window.location.pathname.match(/\/tracking\/([^/]+)/)?.[1]??null,u=a&&"automations"===es,p=a&&"terminal"===es,j=a&&"thread"===es&&r===l,k=a&&"teams"===es,y=a&&"folders"===es,N=a&&"env-vars"===es,S=a&&"notifications"===es,C=eD[e9.id],I=tt.objectives||tt.scheduledTasks,z=tt.teams||tt.folders||tt.envVars||tt.notifications;return(0,t.jsxs)("nav",{className:"workspace-sidebar__section",children:[(0,t.jsx)("div",{className:"px-2 mt-2 mb-3",children:(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}`,onClick:e4,className:`workspace-sidebar__nav-item ${n?"workspace-sidebar__nav-item--active":""}`,"aria-current":n?"page":void 0,children:[(0,t.jsx)(f,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Home"})]})})}),I&&(0,t.jsxs)("div",{className:"mb-3",children:[(0,t.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,t.jsx)("p",{className:"workspace-sidebar__section-label",children:"Automation"})}),(0,t.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[tt.objectives&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/objectives`,onClick:e4,className:`workspace-sidebar__nav-item ${d?"workspace-sidebar__nav-item--active":""}`,"aria-current":d?"page":void 0,children:[(0,t.jsx)(m.Target,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Objectives"}),tt.objectivesIsNew&&(0,t.jsx)("span",{className:"ml-auto inline-flex items-center rounded-full bg-indigo-500/15 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider text-indigo-500 animate-pulse",children:"NEW"}),!tt.objectivesIsNew&&C?.objectives.length>0&&(0,t.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:C.objectives.slice(0,3).map(e=>{let r=s.find(t=>t.id===e.agentId);return(0,t.jsxs)("span",{className:"relative inline-block",title:r?.name,children:[(0,t.jsx)("img",{src:(0,_.agentAvatarUrl)(r?.id??e.agentId,16,e.color),alt:r?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,t.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},e.agentId)})})]})}),tt.scheduledTasks&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/automations`,onClick:e4,className:`workspace-sidebar__nav-item ${u?"workspace-sidebar__nav-item--active":""}`,"aria-current":u?"page":void 0,children:[(0,t.jsx)(i.Zap,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Scheduled Jobs"})]})})]})]}),tt.tracking&&(0,t.jsxs)("div",{className:"mb-3",children:[(0,t.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,t.jsx)("p",{className:"workspace-sidebar__section-label",children:"Task Tracking"})}),(0,t.jsx)("div",{className:"px-2 flex flex-col gap-0.5",children:(0,t.jsx)(P,{projectSlug:e9.slug,trackerConnections:ed,activeTrackerType:c,isTrackingActive:a&&("linear"===es||"tracking"===es),onLinkClick:e4})})]}),(0,t.jsxs)("div",{className:"mb-3",children:[(0,t.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,t.jsx)("p",{className:"workspace-sidebar__section-label",children:"Tools"})}),(0,t.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/terminal`,onClick:e4,className:`workspace-sidebar__nav-item ${p?"workspace-sidebar__nav-item--active":""}`,"aria-current":p?"page":void 0,children:[(0,t.jsx)(b.TerminalSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Terminal"})]})}),(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:r?(0,t.jsxs)("button",{type:"button",className:`workspace-sidebar__nav-item ${j?"workspace-sidebar__nav-item--active":""}`,onClick:()=>{$(r),e4()},"aria-current":j?"page":void 0,children:[(0,t.jsx)(v.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"}),C?.chat.length>0&&(0,t.jsx)("span",{className:"inline-flex items-center -space-x-1 ml-auto shrink-0",children:C.chat.slice(0,3).map(e=>{let r=s.find(t=>t.id===e.agentId);return(0,t.jsxs)("span",{className:"relative inline-block",title:r?.name,children:[(0,t.jsx)("img",{src:(0,_.agentAvatarUrl)(r?.id??e.agentId,16,e.color),alt:r?.name??"",className:"h-3.5 w-3.5 rounded-full ring-[1.5px] ring-[var(--app-shell-pane)]"}),(0,t.jsx)("span",{className:"absolute -bottom-px -right-px h-1.5 w-1.5 rounded-full bg-green-500 ring-[1px] ring-[var(--app-shell-pane)]"})]},e.agentId)})})]}):(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/thread`,onClick:e4,className:`workspace-sidebar__nav-item ${j?"workspace-sidebar__nav-item--active":""}`,"aria-current":j?"page":void 0,children:[(0,t.jsx)(v.MessageSquare,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Chat"})]})})]})]}),z&&(0,t.jsxs)("div",{className:"mb-3",children:[(0,t.jsx)("div",{className:"workspace-sidebar__section-header",children:(0,t.jsx)("p",{className:"workspace-sidebar__section-label",children:"Settings"})}),(0,t.jsxs)("div",{className:"px-2 flex flex-col gap-0.5",children:[tt.teams&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/teams`,onClick:e4,className:`workspace-sidebar__nav-item ${k?"workspace-sidebar__nav-item--active":""}`,"aria-current":k?"page":void 0,children:[(0,t.jsx)(x.Users,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Teams"})]})}),tt.folders&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/folders`,onClick:e4,className:`workspace-sidebar__nav-item ${y?"workspace-sidebar__nav-item--active":""}`,"aria-current":y?"page":void 0,children:[(0,t.jsx)(o.FolderGit2,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Workspace Map"})]})}),tt.envVars&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/env-vars`,onClick:e4,className:`workspace-sidebar__nav-item ${N?"workspace-sidebar__nav-item--active":""}`,"aria-current":N?"page":void 0,children:[(0,t.jsx)(g,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Environment Variables"})]})}),tt.notifications&&(0,t.jsx)("div",{className:"workspace-sidebar__workspace-item",children:(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/notifications`,onClick:e4,className:`workspace-sidebar__nav-item ${S?"workspace-sidebar__nav-item--active":""}`,"aria-current":S?"page":void 0,children:[(0,t.jsx)(h.Bell,{size:14,className:"flex-shrink-0 text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"workspace-sidebar__workspace-title text-sm",children:"Notifications"})]})})]})]})]})})()]}),(0,t.jsxs)("div",{className:"mt-auto px-3 pb-3 flex flex-col gap-2",children:[eh&&e9&&(0,t.jsxs)(w.default,{href:`/projects/${e9.slug}/terminal?cmd=${encodeURIComponent("agx update && agx chat start")}`,className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-sm font-medium transition-colors text-[var(--foreground)] bg-[var(--app-shell-subtle)] hover:bg-[var(--app-shell-border)]",children:[(0,t.jsx)(j,{size:14}),"Update available"]}),(0,t.jsxs)("a",{href:"https://discord.gg/G9afUYKKY3",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center gap-2 w-full py-2 rounded-lg text-white text-sm font-medium transition-colors",style:{backgroundColor:"#5865F2"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="#4752C4",onMouseLeave:e=>e.currentTarget.style.backgroundColor="#5865F2",children:[(0,t.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 71 55",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A37.4 37.4 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 4.9a.2.2 0 00-.1.1C1.5 18.7-.9 32.2.3 45.5v.1a58.8 58.8 0 0017.7 9a.2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.8 38.8 0 01-5.5-2.6.2.2 0 01 0-.4l1.1-.9a.2.2 0 01.2 0 42 42 0 0035.6 0 .2.2 0 01.2 0l1.1.9a.2.2 0 010 .4 36.4 36.4 0 01-5.5 2.6.2.2 0 00-.1.3 47.2 47.2 0 003.6 5.9.2.2 0 00.3.1 58.6 58.6 0 0017.7-9v-.1c1.4-15.2-2.4-28.4-10-40.1a.2.2 0 00-.1-.1zM23.7 37.3c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7zm23.3 0c-3.5 0-6.3-3.2-6.3-7s2.8-7 6.3-7 6.4 3.2 6.3 7-2.8 7-6.3 7z"})}),"Join Discord"]})]}),ev&&eU&&(0,a.createPortal)((0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-4",onClick:()=>{eU.isSaving||eB(null)},children:(0,t.jsxs)("div",{className:"w-full max-w-lg rounded-2xl border border-[var(--border)] bg-[var(--card-bg)] shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4 border-b border-[var(--border)] px-5 py-4",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:eU.projectName}),(0,t.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--foreground)]",children:eU.repoId?eU.name||"Folder":"Add Folder"})]}),(0,t.jsx)("button",{type:"button",className:"rounded-md p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)] hover:text-[var(--muted-foreground)]",onClick:()=>{eU.isSaving||eB(null)},"aria-label":"Close folder details",disabled:eU.isSaving,children:(0,t.jsx)(p.X,{size:16})})]}),(0,t.jsxs)("div",{className:"space-y-4 px-5 py-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Name"}),(0,t.jsx)("input",{value:eU.name,onChange:e=>eB(t=>t?{...t,name:e.target.value,error:null}:t),className:"w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",disabled:eU.isSaving,placeholder:"e.g. Frontend, API Docs, Design System"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Path"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("input",{value:eU.path,onChange:e=>eB(t=>t?{...t,path:e.target.value,error:null}:t),className:"flex-1 rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 font-mono text-xs text-[var(--foreground)]",disabled:eU.isSaving,placeholder:"Local path to folder"}),(0,t.jsx)("button",{type:"button",className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-xs font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",disabled:eU.isSaving,onClick:async()=>{try{let e=await fetch("/api/filesystem/pick-folder",{method:"POST"}),t=await e.json();t.path&&eB(e=>e?{...e,path:t.path,error:null}:e)}catch{}},children:"Browse"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Notes"}),(0,t.jsx)("textarea",{value:eU.notes,onChange:e=>eB(t=>t?{...t,notes:e.target.value,error:null}:t),className:"min-h-28 w-full rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-3 text-sm text-[var(--foreground)] whitespace-pre-wrap",disabled:eU.isSaving,placeholder:"Coding conventions, deploy steps, doc standards, ownership rules..."})]}),eU.repoId?(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 text-[11px] font-semibold uppercase tracking-[0.18em] text-[var(--muted-foreground)]",children:"Living Note"}),eU.isLoadingKnowledge?(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading note…"}):eU.generatedKnowledge.length>0?(0,t.jsx)("div",{className:"space-y-2",children:eU.generatedKnowledge.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--border)] bg-[var(--app-shell-subtle)] px-3 py-2 text-sm text-[var(--foreground)]",children:[(0,t.jsx)("div",{children:e.content}),e.created_at?(0,t.jsx)("div",{className:"mt-1 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleString()}):null]},e.id))}):(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No note yet."})]}):null,eU.error?(0,t.jsx)("p",{className:"text-xs text-red-600",children:eU.error}):null,(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] pt-4",children:[(0,t.jsx)("button",{type:"button",className:"rounded-lg px-3 py-2 text-sm text-[var(--muted-foreground)] transition-colors hover:bg-[var(--muted)]",onClick:()=>eB(null),disabled:eU.isSaving,children:"Cancel"}),(0,t.jsx)("button",{type:"button",className:"rounded-lg bg-[var(--foreground)] px-3 py-2 text-sm font-medium text-[var(--card-bg)] transition-colors hover:bg-[var(--foreground)] disabled:cursor-not-allowed disabled:opacity-60",disabled:eU.isSaving||!J,onClick:async()=>{let e=K.find(e=>e.id===eU.projectId);if(!e)return void eB(e=>e?{...e,error:"Project not found."}:e);let t=eU.name.trim(),r=eU.path.trim();if(!t)return void eB(e=>e?{...e,error:"Folder name is required."}:e);if(!r)return void eB(e=>e?{...e,error:"Folder path is required."}:e);eB(e=>e?{...e,isSaving:!0,error:null}:e);try{let a=eU.repoId?e.repos.map(e=>e.id===eU.repoId?{id:e.id,name:t,path:r,git_url:eU.gitUrl.trim()||void 0,notes:eU.notes.trim()||void 0}:{id:e.id,name:e.name,path:e.path,git_url:e.git_url,notes:e.notes}):[...e.repos.map(e=>({id:e.id,name:e.name,path:e.path,git_url:e.git_url,notes:e.notes})),{name:t,path:r,git_url:eU.gitUrl.trim()||void 0,notes:eU.notes.trim()||void 0}];await J?.(e.id,{repos:a}),eB(null)}catch(e){eB(t=>t?{...t,isSaving:!1,error:e instanceof Error?e.message:"Failed to save folder details."}:t)}},children:eU.isSaving?"Saving...":eU.repoId?"Save":"Add Folder"})]})]})]})}),document.body),ev&&ek&&!e_&&(0,a.createPortal)((0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>ew(null),children:(0,t.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 max-h-[70vh] flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,t.jsxs)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:["Add to ",e0?.name??"project"]}),(0,t.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>ew(null),children:(0,t.jsx)(p.X,{size:16})})]}),(0,t.jsxs)("div",{className:"overflow-y-auto py-1 flex-1",children:[(0,t.jsxs)("button",{type:"button",className:"w-full flex items-center gap-3 px-4 py-2.5 text-sm text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)] transition-colors border-b border-[var(--border)]",onClick:()=>eS(!0),children:[(0,t.jsx)(c.Plus,{size:14,className:"text-[var(--muted-foreground)]"}),(0,t.jsx)("span",{className:"text-xs font-medium",children:"Create new agent"})]}),0===e2.length?(0,t.jsx)("p",{className:"px-4 py-6 text-xs text-[var(--muted-foreground)] text-center",children:"All agents are already in this project"}):e2.map(e=>{let r=ey.has(e.id);return(0,t.jsxs)("button",{type:"button",className:`w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors ${r?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--app-shell-subtle)]"}`,onClick:()=>{eN(t=>{let r=new Set(t);return r.has(e.id)?r.delete(e.id):r.add(e.id),r})},children:[(0,t.jsx)("div",{className:`w-4 h-4 rounded border flex-shrink-0 flex items-center justify-center ${r?"bg-[var(--foreground)] border-[var(--foreground)]":"border-[var(--border)]"}`,children:r&&(0,t.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:(0,t.jsx)("path",{d:"M2 5l2 2 4-4",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,t.jsx)("img",{src:(0,_.agentAvatarUrl)(e.id,24,e.color),alt:"",className:"w-6 h-6 rounded-full flex-shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,t.jsx)("div",{className:"truncate font-medium text-xs",children:e.name}),(0,t.jsx)("div",{className:"truncate text-[11px] text-[var(--muted-foreground)]",children:e.model})]})]},e.id)})]}),e2.length>0&&(0,t.jsxs)("div",{className:"px-4 py-3 border-t border-[var(--border)] flex justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>ew(null),children:"Cancel"}),(0,t.jsxs)("button",{type:"button",disabled:0===ey.size,className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors",onClick:()=>{for(let e of ey)Y?.(ek.projectId,e);ew(null)},children:["Add ",ey.size>0?`(${ey.size})`:""]})]})]})}),document.body),ev&&e_&&(0,a.createPortal)((0,t.jsx)(_.AgentForm,{title:"Create new agent",initial:{name:"",provider:"claude",model:"",identity:"",skills:[],skillBindings:[]},submitLabel:"Create & Add",projects:K?.filter(e=>!e.is_default).map(t=>{let r=(t.thread_ids??[]).map(t=>e.find(e=>e.id===t)?.title?.trim()).filter(Boolean).join(", ")||"No chat";return{id:t.id,name:t.name,label:`${r} › ${t.name}`}}),initialProjectIds:ek?[ek.projectId]:[],onSubmit:async(e,t)=>{let r=["#D97706","#2563EB","#059669","#DC2626","#7C3AED","#DB2777","#0891B2"],a=r[s.length%r.length],i=e.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),l=t?.[0],o=await fetch("/api/participants",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:i,name:e.name,provider:e.provider,model:e.model,color:e.color??a,...e.role?{role:e.role}:{},...e.identity?{identity:e.identity}:{},skills:e.skills??[],skillBindings:e.skillBindings??[],...l?{projectId:l}:{}})});if(o.ok){let e=await o.json().catch(()=>({})),r="string"==typeof e?.id&&e.id.trim()?e.id.trim():i;for(let e of(t??[]).slice(1))Y?.(e,r);eS(!1),ew(null)}},onCancel:()=>{eS(!1)}}),document.body),ev&&eM&&(0,a.createPortal)((0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>eE(null),children:(0,t.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:eM.title}),(0,t.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>eE(null),children:(0,t.jsx)(p.X,{size:16})})]}),(0,t.jsxs)("form",{className:"px-4 py-4 flex flex-col gap-3",onSubmit:e=>{e.preventDefault();let t=new FormData(e.currentTarget),r=t.get("value")?.trim();r&&(eM.onSubmit(r),eE(null))},children:[(0,t.jsx)("input",{ref:eA,name:"value",type:"text",defaultValue:eM.defaultValue,placeholder:eM.placeholder,className:"w-full px-3 py-2 text-sm border border-[var(--border)] rounded-lg outline-none focus:border-[var(--border)] focus:ring-1 focus:ring-[var(--border)] transition-all"}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>eE(null),children:"Cancel"}),(0,t.jsx)("button",{type:"submit",className:"px-3 py-1.5 text-xs font-medium text-[var(--card-bg)] bg-[var(--foreground)] rounded-lg hover:bg-[var(--foreground)] transition-colors",children:eM.defaultValue?"Save":"Create"})]})]})]})}),document.body),ev&&eF&&(0,a.createPortal)((0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:()=>eP(null),children:(0,t.jsxs)("div",{className:"bg-[var(--card-bg)] rounded-xl shadow-xl border border-[var(--border)] w-80 flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-[var(--border)]",children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:eF.title}),(0,t.jsx)("button",{type:"button",className:"text-[var(--muted-foreground)] hover:text-[var(--muted-foreground)]",onClick:()=>eP(null),children:(0,t.jsx)(p.X,{size:16})})]}),(0,t.jsxs)("div",{className:"px-4 py-4 flex flex-col gap-4",children:[(0,t.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:eF.message}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors",onClick:()=>eP(null),children:"Cancel"}),(0,t.jsx)("button",{type:"button",className:"px-3 py-1.5 text-xs font-medium text-white bg-red-600 rounded-lg hover:bg-red-700 transition-colors",onClick:()=>{eF.onConfirm(),eP(null)},children:"Delete"})]})]})]})}),document.body),ev&&(eC||e$)&&(0,a.createPortal)((0,t.jsx)(S.default,{isOpen:!0,onClose:()=>{eT.resetForm(),eI(null),ez(null)},onSubmit:()=>void eQ(),editingProject:e$,form:eT.form,repos:eT.repos,isSubmitting:eT.isSubmitting,formError:eT.formError,onFieldChange:(e,t)=>eT.setForm(r=>({...r,[e]:t})),onRepoChange:eT.handleRepoChange,onAddRepo:eT.addRepo,onRemoveRepo:eT.removeRepo}),document.body),ev&&eV&&(0,a.createPortal)((ec=K.filter(e=>e.agents.some(e=>e.agent_id===eV.id)),eu=K.filter(e=>!e.agents.some(e=>e.agent_id===eV.id)),(0,t.jsx)(_.AgentForm,{title:"Edit agent",initial:{name:eV.name,role:eV.role||"",provider:eV.provider,model:eV.model||"",identity:eV.identity||"",color:eV.color,skills:eV.skills||[],skillBindings:eV.skillBindings||[]},agentId:eV.id,submitLabel:"Save",projectMemberships:{current:ec.map(e=>({id:e.id,name:e.name,is_default:!!e.is_default})),available:eu.map(e=>({id:e.id,name:e.name}))},onAddToProject:Y?e=>Y(e,eV.id):void 0,onRemoveFromProject:Z?e=>Z(e,eV.id):void 0,onSubmit:async e=>{et&&await et({...eV,name:e.name,role:e.role||void 0,provider:e.provider,model:e.model,color:e.color??eV.color,...e.identity?{identity:e.identity}:{},skills:e.skills??[],skillBindings:e.skillBindings??[]}),eR(null)},onCancel:()=>eR(null)})),document.body),el&&!ep&&(0,t.jsx)("div",{className:"absolute right-0 top-0 bottom-0 z-20 w-1 cursor-col-resize group",onMouseDown:e=>{e.preventDefault(),ex.current=!0;let t=e.clientX,r=ei??368;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let a=e=>{el(Math.max(200,Math.min(600,r+e.clientX-t)))},s=()=>{ex.current=!1,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",s)};window.addEventListener("mousemove",a),window.addEventListener("mouseup",s)},children:(0,t.jsx)("div",{className:"absolute inset-y-0 right-0 w-1 transition-colors hover:bg-[var(--primary)]/40 group-hover:bg-[var(--primary)]/40"})})]})]})}e.s(["WorkspaceSidebar",()=>D],749410)},969039,e=>{"use strict";var t=e.i(935851),r=e.i(506420),a=e.i(434405);let s="agx-chat:last-thread";function i(){return void 0!==window.localStorage}function l(){if(i())try{window.localStorage.removeItem(s)}catch{}}let o=e=>[...e].sort((e,t)=>t.createdAt-e.createdAt);function n(e){let n=(0,r.useSearchParams)(),d=(e||n.get("thread")||"").trim()||null,c=(0,t.useRef)(!0),[u,p]=(0,t.useState)([]),[m,h]=(0,t.useState)(null),[x,f]=(0,t.useState)(!0),[v,b]=(0,t.useState)(!0),[g,j]=(0,t.useState)(!1),[k,w]=(0,t.useState)(null),[y,N]=(0,t.useState)(null),_=(0,t.useRef)(!1),S=(0,t.useCallback)(e=>{h(e)},[]);(0,t.useEffect)(()=>(c.current=!0,()=>{c.current=!1}),[]),(0,t.useEffect)(()=>{let e=!1;return(async()=>{try{var t;let r,n=await a.threadService.listThreads();if(d&&!n.some(e=>e.id===d)){let e=await a.threadService.createThread({id:d});n=o([...n.filter(t=>t.id!==e.id),e])}if(e||!c.current)return;p(n);let u=d||function(){if(!i())return null;try{return window.localStorage.getItem(s)}catch{return null}}(),{threadId:m,shouldClearSavedId:x,restoredFromStorage:f}=(t=n,r=t[0]?.id??null,u?t.some(e=>e.id===u)?{threadId:u,shouldClearSavedId:!1,restoredFromStorage:!0}:{threadId:r,shouldClearSavedId:!0,restoredFromStorage:!1}:{threadId:r,shouldClearSavedId:!1,restoredFromStorage:!1});x&&l(),_.current||(_.current=!0),f&&m?S(m):m?h(e=>e??m):h(null)}catch(e){console.error("Failed to load threads",e)}finally{c.current&&(f(!1),b(!1))}})(),()=>{e=!0}},[d,S]),(0,t.useEffect)(()=>{if(_.current)if(m){if(i())try{window.localStorage.setItem(s,m)}catch{}}else l()},[m]);let C=(0,t.useCallback)(async e=>{j(!0);try{let t=await a.threadService.createThread(e);if(!c.current)return t;return p(e=>o([...e.filter(e=>e.id!==t.id),t])),h(t.id),t}catch(e){throw console.error("Failed to create thread",e),e}finally{c.current&&j(!1)}},[]),I=(0,t.useCallback)(async e=>{if(e){w(e);try{if(await a.threadService.deleteThread(e),!c.current)return;let t=[];p(r=>t=o(r.filter(t=>t.id!==e))),h(r=>r===e?t[0]?.id??null:r)}catch(e){throw console.error("Failed to delete thread",e),e}finally{c.current&&w(null)}}},[]),$=(0,t.useCallback)(async(e,t)=>{let r=e.trim(),s=t.trim();if(r&&s){N(r);try{let e=await a.threadService.renameThread(r,s);if(!e||!c.current)return;p(t=>o(t.map(t=>t.id===e.id?e:t)))}catch(e){throw console.error("Failed to rename thread",e),e}finally{c.current&&N(e=>e===r?null:e)}}},[]),z=(0,t.useCallback)(async(e,t)=>{if(e)try{let r=await a.threadService.saveThreadMessages(e,t);if(!r||!c.current)return;p(e=>o(e.map(e=>e.id===r.id?r:e)))}catch(e){console.error("Failed to update thread messages",e)}},[]),T=(0,t.useCallback)(async(e,t)=>{if(e)try{let r=await a.threadService.updateThreadStatus(e,t);if(!r||!c.current)return;p(e=>o(e.map(e=>e.id===r.id?r:e)))}catch(e){console.error("Failed to update thread status",e)}},[]),M=(0,t.useCallback)(async(e,t)=>{if(e)try{let r=await a.threadService.updateThreadOutcomeNote(e,t);if(!r||!c.current)return;p(e=>o(e.map(e=>e.id===r.id?r:e)))}catch(e){console.error("Failed to update thread outcome note",e)}},[]),E=(0,t.useCallback)(async(e,t,r)=>{if(e&&t)try{let s=await a.threadService.updateMessageThreadStatus(e,t,r);if(!s||!c.current)return;p(e=>o(e.map(e=>e.id===s.id?s:e)))}catch(e){console.error("Failed to update message thread status",e)}},[]),A=(0,t.useCallback)(async(e,t,r)=>{if(e&&t)try{let s=await a.threadService.updateMessageOutcomeNote(e,t,r);if(!s||!c.current)return;p(e=>o(e.map(e=>e.id===s.id?s:e)))}catch(e){console.error("Failed to update message outcome note",e)}},[]),F=null!==m&&k===m;return{threads:u,activeThreadId:m,selectThread:S,createThread:C,deleteThread:I,isLoading:x,isRestoringActiveThread:v,isCreating:g,deletingThreadId:k,renamingThreadId:y,isDeletingActiveThread:F,updateThreadMessages:z,renameThread:$,updateThreadStatus:T,updateThreadOutcomeNote:M,updateMessageThreadStatus:E,updateMessageOutcomeNote:A}}e.s(["useThreadState",()=>n],969039)},481248,e=>{"use strict";let t="agx-chat:uiSettings",r={threadSidebarVisible:!1};function a(){return void 0!==window.localStorage}function s(){if(!a())return{...r};let e=window.localStorage.getItem(t);if(!e)return{...r};try{let t=JSON.parse(e);return{...r,threadSidebarVisible:"boolean"==typeof t.threadSidebarVisible&&t.threadSidebarVisible}}catch{return{...r}}}function i(){return s().threadSidebarVisible}function l(e){var r={...s(),threadSidebarVisible:e};if(a())try{window.localStorage.setItem(t,JSON.stringify(r))}catch{}}e.s(["loadWorkspaceSidebarVisible",()=>i,"persistWorkspaceSidebarVisible",()=>l])}]);
|