@aoagents/ao-web 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +196 -138
- package/.next/app-path-routes-manifest.json +14 -8
- package/.next/build-manifest.json +6 -6
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +26 -26
- package/.next/react-loadable-manifest.json +18 -18
- package/.next/required-server-files.json +8 -6
- package/.next/routes-manifest.json +33 -0
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +8 -11
- package/.next/server/app/api/backlog/route.js +1 -1
- package/.next/server/app/api/backlog/route.js.nft.json +1 -1
- package/.next/server/app/api/backlog/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse-directory/route.js +1 -0
- package/.next/server/app/api/{events → browse-directory}/route.js.nft.json +1 -1
- package/.next/server/app/api/browse-directory/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/filesystem/browse/route.js +1 -0
- package/.next/server/app/api/filesystem/browse/route.js.nft.json +1 -0
- package/.next/server/app/api/filesystem/browse/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/issues/route.js +1 -1
- package/.next/server/app/api/issues/route.js.nft.json +1 -1
- package/.next/server/app/api/issues/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/observability/route.js +1 -1
- package/.next/server/app/api/observability/route.js.nft.json +1 -1
- package/.next/server/app/api/observability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/orchestrators/route.js +1 -1
- package/.next/server/app/api/orchestrators/route.js.nft.json +1 -1
- package/.next/server/app/api/orchestrators/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/projects/[id]/route.js +1 -0
- package/.next/server/app/api/projects/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/projects/reload/route.js +1 -0
- package/.next/server/app/api/projects/reload/route.js.nft.json +1 -0
- package/.next/server/app/api/projects/reload/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/prs/[id]/merge/route.js +1 -1
- package/.next/server/app/api/prs/[id]/merge/route.js.nft.json +1 -1
- package/.next/server/app/api/prs/[id]/merge/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runtime/terminal/route.js +1 -1
- package/.next/server/app/api/runtime/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/runtime/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/kill/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/kill/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/message/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/message/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/message/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/remap/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/remap/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/remap/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/restore/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/send/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/patches/route.js +1 -1
- package/.next/server/app/api/sessions/patches/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/patches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/setup-labels/route.js +1 -1
- package/.next/server/app/api/setup-labels/route.js.nft.json +1 -1
- package/.next/server/app/api/setup-labels/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/spawn/route.js +1 -1
- package/.next/server/app/api/spawn/route.js.nft.json +1 -1
- package/.next/server/app/api/spawn/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verify/route.js +1 -1
- package/.next/server/app/api/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[...slug]/route.js +1 -1
- package/.next/server/app/api/webhooks/[...slug]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[...slug]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/apple-icon/route.js +1 -1
- package/.next/server/app/apple-icon/route.js.nft.json +1 -1
- package/.next/server/app/apple-icon/route_client-reference-manifest.js +1 -1
- package/.next/server/app/apple-icon.body +0 -0
- package/.next/server/app/dev/terminal-test/page.js +3 -3
- package/.next/server/app/dev/terminal-test/page.js.nft.json +1 -1
- package/.next/server/app/dev/terminal-test/page_client-reference-manifest.js +1 -1
- package/.next/server/app/dev/terminal-test.html +1 -1
- package/.next/server/app/dev/terminal-test.rsc +9 -12
- package/.next/server/app/icon/route.js +1 -1
- package/.next/server/app/icon/route.js.nft.json +1 -1
- package/.next/server/app/icon/route_client-reference-manifest.js +1 -1
- package/.next/server/app/icon-192/route.js +1 -1
- package/.next/server/app/icon-192/route.js.nft.json +1 -1
- package/.next/server/app/icon-192/route_client-reference-manifest.js +1 -1
- package/.next/server/app/icon-512/route.js +1 -1
- package/.next/server/app/icon-512/route.js.nft.json +1 -1
- package/.next/server/app/icon-512/route_client-reference-manifest.js +1 -1
- package/.next/server/app/icon.body +0 -0
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest.body +1 -1
- package/.next/server/app/orchestrators/page.js +2 -2
- package/.next/server/app/orchestrators/page.js.nft.json +1 -1
- package/.next/server/app/orchestrators/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/projects/[projectId]/page.js +2 -0
- package/.next/server/app/projects/[projectId]/page.js.nft.json +1 -0
- package/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/projects/[projectId]/sessions/[id]/page.js +2 -0
- package/.next/server/app/projects/[projectId]/sessions/[id]/page.js.nft.json +1 -0
- package/.next/server/app/projects/[projectId]/sessions/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/projects/[projectId]/settings/page.js +2 -0
- package/.next/server/app/projects/[projectId]/settings/page.js.nft.json +1 -0
- package/.next/server/app/projects/[projectId]/settings/page_client-reference-manifest.js +1 -0
- package/.next/server/app/prs/page.js +2 -2
- package/.next/server/app/prs/page.js.nft.json +1 -1
- package/.next/server/app/prs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/[id]/page.js +2 -12
- package/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/test-direct/page.js +2 -2
- package/.next/server/app/test-direct/page.js.nft.json +1 -1
- package/.next/server/app/test-direct/page_client-reference-manifest.js +1 -1
- package/.next/server/app/test-direct.html +1 -1
- package/.next/server/app/test-direct.rsc +9 -12
- package/.next/server/app-paths-manifest.json +14 -8
- package/.next/server/chunks/1172.js +1 -0
- package/.next/server/chunks/1271.js +1 -0
- package/.next/server/chunks/1876.js +9 -0
- package/.next/server/chunks/2106.js +1 -0
- package/.next/server/chunks/3714.js +1 -0
- package/.next/server/chunks/4520.js +1 -0
- package/.next/server/chunks/6086.js +25 -0
- package/.next/server/chunks/7167.js +1 -0
- package/.next/server/chunks/7173.js +9 -0
- package/.next/server/chunks/8386.js +1 -0
- package/.next/server/chunks/8539.js +3 -0
- package/.next/server/chunks/{803.js → 8803.js} +1 -1
- package/.next/server/chunks/9223.js +440 -0
- package/.next/server/chunks/9381.js +658 -0
- package/.next/server/chunks/{561.js → 9561.js} +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +2 -2
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/5nmlY5IOwz-Od3p2SB2hh/_buildManifest.js +1 -0
- package/.next/static/chunks/1383.faf35b62c555f5a1.js +1 -0
- package/.next/static/chunks/1d2d5650.1ef8611b5325bd83.js +18 -0
- package/.next/static/chunks/3764.ba81c7b8d5b21136.js +1 -0
- package/.next/static/chunks/3780-e20898ff49ddc867.js +1 -0
- package/.next/static/chunks/4465-0c7772f1499dffa4.js +1 -0
- package/.next/static/chunks/5795-b96fd46c8c7344fc.js +1 -0
- package/.next/static/chunks/7008-6e85da85f12f9858.js +1 -0
- package/.next/static/chunks/app/_not-found/page-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/backlog/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/browse-directory/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/filesystem/browse/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/issues/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/observability/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/orchestrators/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/projects/[id]/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/projects/reload/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/projects/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/prs/[id]/merge/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/runtime/terminal/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/kill/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/message/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/remap/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/restore/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/send/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/patches/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/setup-labels/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/spawn/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/verify/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[...slug]/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/apple-icon/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/dev/terminal-test/page-095511c7a110fbc9.js +1 -0
- package/.next/static/chunks/app/error-3ebcf3275d91d60a.js +1 -0
- package/.next/static/chunks/app/global-error-8f082029a4cf6af1.js +1 -0
- package/.next/static/chunks/app/icon/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/icon-192/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/icon-512/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/layout-be776dec5531d47b.js +1 -0
- package/.next/static/chunks/app/loading-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/{not-found-824d5d3c6e296eeb.js → not-found-0eb78483b8277b8d.js} +1 -1
- package/.next/static/chunks/app/orchestrators/page-406e530b0d4ad46f.js +1 -0
- package/.next/static/chunks/app/page-a92f3646b54545b0.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/loading-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/page-d14fdcff4998d3bf.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/sessions/[id]/page-96fc04db76c65761.js +1 -0
- package/.next/static/chunks/app/projects/[projectId]/settings/page-ce2e904def1bef9c.js +1 -0
- package/.next/static/chunks/app/prs/page-95dbbebb4d372535.js +1 -0
- package/.next/static/chunks/app/sessions/[id]/error-5468aace23fd8872.js +1 -0
- package/.next/static/chunks/app/sessions/[id]/loading-3b8a01e726e988c8.js +1 -0
- package/.next/static/chunks/app/sessions/[id]/{not-found-824d5d3c6e296eeb.js → not-found-0eb78483b8277b8d.js} +1 -1
- package/.next/static/chunks/app/sessions/[id]/page-8ef744531757185e.js +1 -0
- package/.next/static/chunks/app/test-direct/page-ab98dc9b04bacaa5.js +1 -0
- package/.next/static/chunks/{main-app-690acf9d5d2050c9.js → main-app-4b27cdf1baf203ad.js} +1 -1
- package/.next/static/chunks/{webpack-ab6c08c78ffc8113.js → webpack-ab12779265bdb8f9.js} +1 -1
- package/.next/static/css/397ea3e60645d3f3.css +1 -0
- package/.next/static/css/659eccb5db697b76.css +1 -0
- package/dist-server/mux-websocket.js +135 -123
- package/dist-server/tmux-utils.js +99 -9
- package/next.config.js +11 -1
- package/package.json +22 -17
- package/.next/server/app/api/events/route.js +0 -9
- package/.next/server/app/api/events/route_client-reference-manifest.js +0 -1
- package/.next/server/chunks/100.js +0 -1
- package/.next/server/chunks/106.js +0 -1
- package/.next/server/chunks/172.js +0 -9
- package/.next/server/chunks/180.js +0 -25
- package/.next/server/chunks/333.js +0 -1
- package/.next/server/chunks/367.js +0 -3
- package/.next/server/chunks/627.js +0 -408
- package/.next/server/chunks/886.js +0 -384
- package/.next/server/chunks/907.js +0 -1
- package/.next/static/OyzSw2fQpoJHXyoBWoZ2X/_buildManifest.js +0 -1
- package/.next/static/chunks/6923-ef8434dfec6f2a3c.js +0 -1
- package/.next/static/chunks/7097.fc904e5f313c4994.js +0 -1
- package/.next/static/chunks/8785-6b4b3ff260617997.js +0 -1
- package/.next/static/chunks/9478.656c9c263bc55893.js +0 -1
- package/.next/static/chunks/app/_not-found/page-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/backlog/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/events/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/issues/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/observability/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/orchestrators/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/projects/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/prs/[id]/merge/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/runtime/terminal/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/kill/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/message/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/remap/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/restore/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/send/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/patches/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/setup-labels/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/spawn/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/verify/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[...slug]/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/apple-icon/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/dev/terminal-test/page-4912fa9e6459f124.js +0 -1
- package/.next/static/chunks/app/error-670f1d8bf2b6859c.js +0 -1
- package/.next/static/chunks/app/global-error-ca06d2b1be2d4ae0.js +0 -1
- package/.next/static/chunks/app/icon/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/icon-192/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/icon-512/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/layout-ddf79478d9a673bb.js +0 -1
- package/.next/static/chunks/app/loading-019391920005654f.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-019391920005654f.js +0 -1
- package/.next/static/chunks/app/orchestrators/page-4da04720a09483d2.js +0 -1
- package/.next/static/chunks/app/page-abf3e3c98cac072f.js +0 -1
- package/.next/static/chunks/app/prs/page-46455c406183ffbf.js +0 -1
- package/.next/static/chunks/app/sessions/[id]/error-eb0973907da68a37.js +0 -1
- package/.next/static/chunks/app/sessions/[id]/loading-019391920005654f.js +0 -1
- package/.next/static/chunks/app/sessions/[id]/page-7eb67fd32f39b15f.js +0 -1
- package/.next/static/chunks/app/test-direct/page-1fd63edb9a9ca8be.js +0 -1
- package/.next/static/chunks/df4ed4d4.b6997d8b8ce9d79b.js +0 -3
- package/.next/static/css/46a7e8e962075e54.css +0 -1
- package/.next/static/css/6ef2fa08dd043252.css +0 -1
- package/.next/static/css/a5398483e6b75ad3.css +0 -1
- package/.next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
- package/.next/static/media/558ca1a6aa3cb55e-s.p.woff2 +0 -0
- package/.next/static/media/64d784ea54a4acde-s.woff2 +0 -0
- package/.next/static/media/6d831b18ae5b01dc-s.woff2 +0 -0
- package/.next/static/media/8d697b304b401681-s.woff2 +0 -0
- package/.next/static/media/ac0e76ddaeeb7981-s.woff2 +0 -0
- package/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
- package/.next/static/media/edc640959b0c7826-s.woff2 +0 -0
- package/.next/static/media/ff71da380fbe67dd-s.woff2 +0 -0
- /package/.next/static/{OyzSw2fQpoJHXyoBWoZ2X → 5nmlY5IOwz-Od3p2SB2hh}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1383,3764],{2286:(e,t,r)=>{"use strict";r.d(t,{D:()=>u,N:()=>d});var n=r(6749),o=(e,t,r,n,o,a,l,s)=>{let i=document.documentElement,c=["light","dark"];function u(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&a?o.map(e=>a[e]||e):o;r?(i.classList.remove(...n),i.classList.add(a&&a[t]?a[t]:t)):i.setAttribute(e,t)}),r=t,s&&c.includes(r)&&(i.style.colorScheme=r)}if(n)u(n);else try{let e=localStorage.getItem(t)||r,n=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(n)}catch(e){}},a=["light","dark"],l="(prefers-color-scheme: dark)",s="undefined"==typeof window,i=n.createContext(void 0),c={setTheme:e=>{},themes:[]},u=()=>{var e;return null!=(e=n.useContext(i))?e:c},d=e=>n.useContext(i)?n.createElement(n.Fragment,null,e.children):n.createElement(f,{...e}),m=["light","dark"],f=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:o=!0,enableColorScheme:s=!0,storageKey:c="theme",themes:u=m,defaultTheme:d=o?"system":"light",attribute:f="data-theme",value:g,children:x,nonce:y,scriptProps:w}=e,[S,k]=n.useState(()=>p(c,d)),[E,C]=n.useState(()=>"system"===S?b():S),T=g?Object.values(g):u,N=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=b());let n=g?g[t]:t,l=r?v(y):null,i=document.documentElement,c=e=>{"class"===e?(i.classList.remove(...T),n&&i.classList.add(n)):e.startsWith("data-")&&(n?i.setAttribute(e,n):i.removeAttribute(e))};if(Array.isArray(f)?f.forEach(c):c(f),s){let e=a.includes(d)?d:null,r=a.includes(t)?t:e;i.style.colorScheme=r}null==l||l()},[y]),j=n.useCallback(e=>{let t="function"==typeof e?e(S):e;k(t);try{localStorage.setItem(c,t)}catch(e){}},[S]),M=n.useCallback(e=>{C(b(e)),"system"===S&&o&&!t&&N("system")},[S,t]);n.useEffect(()=>{let e=window.matchMedia(l);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?k(e.newValue):j(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[j]),n.useEffect(()=>{N(null!=t?t:S)},[t,S]);let P=n.useMemo(()=>({theme:S,setTheme:j,forcedTheme:t,resolvedTheme:"system"===S?E:S,themes:o?[...u,"system"]:u,systemTheme:o?E:void 0}),[S,j,t,E,o,u]);return n.createElement(i.Provider,{value:P},n.createElement(h,{forcedTheme:t,storageKey:c,attribute:f,enableSystem:o,enableColorScheme:s,defaultTheme:d,value:g,themes:u,nonce:y,scriptProps:w}),x)},h=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:a,enableSystem:l,enableColorScheme:s,defaultTheme:i,value:c,themes:u,nonce:d,scriptProps:m}=e,f=JSON.stringify([a,r,i,t,u,c,l,s]).slice(1,-1);return n.createElement("script",{...m,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?d:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(f,")")}})}),p=(e,t)=>{let r;if(!s){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},v=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},b=e=>(e||(e=window.matchMedia(l)),e.matches?"dark":"light")},3764:(e,t,r)=>{"use strict";r.r(t),r.d(t,{DirectTerminal:()=>p,buildTerminalThemes:()=>h,resolveMonoFontFamily:()=>u});var n=r(3817),o=r(6749),a=r(7594),l=r(2286),s=r(4901);let i="ao-terminal-font-size",c='"JetBrains Mono", "SF Mono", Menlo, Monaco, "Courier New", monospace';function u(){try{let e=getComputedStyle(document.documentElement).getPropertyValue("--font-jetbrains-mono").trim();return e?"".concat(e,", ").concat(c):c}catch(e){return c}}function d(e){let{sessionId:t,chromeless:r,isOpenCodeSession:a,reloadCommand:l,fontSize:i,setFontSize:c,fullscreen:u,toggleFullscreen:d,muxStatus:m,error:f}=e,[h,p]=(0,o.useState)(!1),[v,b]=(0,o.useState)(null);async function g(){if(a&&!h){b(null),p(!0);try{let e=l;if(!e){let r=await fetch("/api/sessions/".concat(encodeURIComponent(t),"/remap"),{method:"POST"});if(!r.ok)throw Error("Failed to remap OpenCode session: ".concat(r.status));let n=await r.json();if("string"!=typeof n.opencodeSessionId||0===n.opencodeSessionId.length)throw Error("Missing OpenCode session id after remap");e="/exit\nopencode --session ".concat(n.opencodeSessionId,"\n")}let r=await fetch("/api/sessions/".concat(encodeURIComponent(t),"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e})});if(!r.ok)throw Error("Failed to send reload command: ".concat(r.status))}catch(e){b(e instanceof Error?e.message:"Failed to reload OpenCode session")}finally{p(!1)}}}let x=f?"error":m,y="var(--color-accent)",w=(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("button",{onClick:()=>c(e=>Math.max(9,e-1)),disabled:i<=9,className:"w-5 h-5 text-xs flex items-center justify-center rounded hover:bg-white/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":"Decrease font size",children:"−"}),(0,n.jsxs)("span",{className:"w-9 text-center text-xs font-medium text-[var(--color-text-secondary)]",children:[i,"px"]}),(0,n.jsx)("button",{onClick:()=>c(e=>Math.min(18,e+1)),disabled:i>=18,className:"w-5 h-5 text-xs flex items-center justify-center rounded hover:bg-white/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":"Increase font size",children:"+"})]}),S=a?(0,n.jsx)("button",{onClick:g,disabled:h||"connected"!==m,title:"Restart OpenCode session (/exit then resume mapped session)","aria-label":"Restart OpenCode session",className:"flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)] disabled:cursor-not-allowed disabled:opacity-70",children:h?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3 animate-spin",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 3a9 9 0 109 9"})}),"restarting"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("path",{d:"M21 12a9 9 0 11-2.64-6.36"}),(0,n.jsx)("path",{d:"M21 3v6h-6"})]}),"restart"]})}):null,k=(0,n.jsx)("button",{onClick:d,className:(0,s.cn)("flex items-center gap-1 px-2 py-0.5 text-[11px] text-[var(--color-text-tertiary)] transition-colors hover:bg-[var(--color-bg-subtle)] hover:text-[var(--color-text-primary)]",!a&&!r&&"ml-auto"),"aria-label":u?"exit fullscreen":"fullscreen",children:u?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M8 3v3a2 2 0 01-2 2H3m18 0h-3a2 2 0 01-2-2V3m0 18v-3a2 2 0 012-2h3M3 16h3a2 2 0 012 2v3"})}),"exit fullscreen"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3"})}),"fullscreen"]})});return r?(0,n.jsxs)("div",{className:"absolute right-3 top-3 z-10 flex items-center gap-1 rounded-[6px] border border-[var(--color-border-subtle)] bg-[color-mix(in_srgb,var(--color-bg-elevated)_92%,transparent)] px-1.5 py-1 shadow-[0_8px_24px_rgba(0,0,0,0.18)] backdrop-blur-sm",children:[S,k]}):(0,n.jsxs)("div",{className:"terminal-chrome-bar flex items-center gap-2 border-b border-[var(--color-border-subtle)] bg-[var(--color-bg-elevated)] px-3 py-2",children:[(0,n.jsx)("span",{className:"terminal-chrome-pane-label",children:"TERMINAL"}),(0,n.jsxs)("div",{className:"terminal-chrome-identity",children:[(0,n.jsx)("span",{className:"terminal-chrome-session-id font-[var(--font-mono)] text-[11px]",style:{color:y},children:t}),(0,n.jsxs)("div",{className:"terminal-chrome-status-row",children:[(0,n.jsx)("div",{className:(0,s.cn)("h-2 w-2 shrink-0 rounded-full","connected"===x?"bg-[var(--color-status-ready)]":"error"===x||"disconnected"===x?"bg-[var(--color-status-error)]":"bg-[var(--color-status-attention)] animate-[pulse_1.5s_ease-in-out_infinite]")}),(0,n.jsx)("span",{className:(0,s.cn)("text-[10px] font-medium uppercase tracking-[0.06em]","connected"===x?"text-[var(--color-status-ready)]":"error"===x||"disconnected"===x?"text-[var(--color-status-error)]":"text-[var(--color-text-tertiary)]"),children:"connected"===x?"Connected":"error"===x?null!=f?f:"Error":"disconnected"===x?"Disconnected":"Connecting…"}),(0,n.jsx)("span",{className:"px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-[0.06em]",style:{color:y,background:"color-mix(in srgb, ".concat(y," 12%, transparent)")},children:"XDA"})]})]}),(0,n.jsx)("div",{className:"flex-1"}),w,S,v?(0,n.jsx)("span",{className:"max-w-[40ch] truncate text-[10px] font-medium text-[var(--color-status-error)]",title:v,children:v}):null,k]})}var m=r(5184);r(5611);let f={deadZone:8,verticalDominance:1.5,maxLinesPerEvent:6,speedMultiplier:3,tmuxPrefix:"\x02"};function h(e){let t="#5b7ef8";return{dark:{background:"#0a0a0f",foreground:"#d4d4d8",cursor:t,cursorAccent:"#0a0a0f",selectionBackground:"rgba(91, 126, 248, 0.30)",selectionInactiveBackground:"rgba(128, 128, 128, 0.2)",black:"#1a1a24",red:"#ef4444",green:"#22c55e",yellow:"#f59e0b",blue:"#5b7ef8",magenta:"#a371f7",cyan:"#22d3ee",white:"#d4d4d8",brightBlack:"#50506a",brightRed:"#f87171",brightGreen:"#4ade80",brightYellow:"#fbbf24",brightBlue:"#7b9cfb",brightMagenta:"#c084fc",brightCyan:"#67e8f9",brightWhite:"#eeeef5"},light:{background:"#fafafa",foreground:"#24292f",cursor:t,cursorAccent:"#fafafa",selectionBackground:"rgba(91, 126, 248, 0.25)",selectionInactiveBackground:"rgba(128, 128, 128, 0.15)",black:"#24292f",red:"#b42318",green:"#1f7a3d",yellow:"#8a5a00",blue:"#175cd3",magenta:"#8e24aa",cyan:"#0b7285",white:"#4b5563",brightBlack:"#374151",brightRed:"#912018",brightGreen:"#176639",brightYellow:"#6f4a00",brightBlue:"#1d4ed8",brightMagenta:"#7b1fa2",brightCyan:"#155e75",brightWhite:"#374151"}}}function p(e){let{sessionId:t,projectId:c,tmuxName:p,startFullscreen:v=!1,variant:b="agent",appearance:g="theme",height:x="max(440px, calc(100dvh - 440px))",isOpenCodeSession:y=!1,reloadCommand:w,chromeless:S=!1,autoFocus:k=!1}=e,E=(0,a.useRouter)(),C=(0,a.usePathname)(),T=(0,a.useSearchParams)(),{resolvedTheme:N}=(0,l.D)(),j=(0,o.useRef)(null),[M,P]=(0,o.useState)(v),[L,I]=(0,o.useState)(function(){try{let e=localStorage.getItem(i);if(e){let t=parseInt(e,10);if(!Number.isNaN(t))return Math.max(9,Math.min(18,t))}}catch(e){}return 13}()),{error:A,followOutput:R,scrollToLatest:O,muxStatus:F,terminalInstance:W,fitAddon:B}=function(e,t,n){let{appearance:a,variant:s,fontSize:c,autoFocus:d,projectId:p,tmuxName:v}=n,{resolvedTheme:b}=(0,l.D)(),g=(0,o.useMemo)(()=>h(s),[s]),{subscribeTerminal:x,writeTerminal:y,resizeTerminal:w,openTerminal:S,closeTerminal:k,status:E}=(0,m.Ug)(),C=(0,o.useRef)(null),T=(0,o.useRef)(null),[N,j]=(0,o.useState)(null),M=(0,o.useRef)(!0),[P,L]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{if(!e.current)return;let n=!0,o=null,l=null,s=null;return Promise.all([r.e(4560).then(r.bind(r,5627)).then(e=>e.Terminal),r.e(2529).then(r.bind(r,2529)).then(e=>e.FitAddon),r.e(5491).then(r.bind(r,5491)).then(e=>e.WebLinksAddon),document.fonts.ready]).then(r=>{let[i,m,h]=r;if(!n||!e.current)return;let E="dark"===a||"light"!==b,N=E?g.dark:g.light,j=new i({cursorBlink:!0,fontSize:c,fontFamily:u(),lineHeight:1.2,theme:N,minimumContrastRatio:E?1:7,scrollback:1e4,allowProposedApi:!0,fastScrollSensitivity:3,scrollSensitivity:1}),P=new m;j.loadAddon(P),T.current=P;let I=new h;j.loadAddon(I),j.parser.registerCsiHandler({prefix:">",final:"q"},()=>(j.write("\x1bP>|XTerm(370)\x1b\\"),!0)),j.parser.registerOscHandler(52,e=>{let t=e.split(";");if(t.length<2)return!1;let r=t[t.length-1];try{var n;let e=atob(r),t=Uint8Array.from(e,e=>e.charCodeAt(0)),o=new TextDecoder().decode(t);null==(n=navigator.clipboard)||n.writeText(o).catch(()=>{})}catch(e){}return!0}),j.attachCustomKeyEventHandler(e=>{if("keydown"!==e.type)return!0;if((e.metaKey&&!e.ctrlKey&&!e.altKey&&"KeyC"===e.code||e.ctrlKey&&e.shiftKey&&"KeyC"===e.code)&&j.hasSelection()){var t;return null==(t=navigator.clipboard)||t.writeText(j.getSelection()).catch(()=>{}),j.clearSelection(),!1}return!0}),j.open(e.current),C.current=j,d&&j.focus(),P.fit();let A=setTimeout(()=>{if(n&&T.current)try{T.current.fit(),w(t,j.cols,j.rows,p)}catch(e){}},100),R=()=>{if(n&&T.current&&C.current)try{var e,r;C.current.options.fontFamily=u(),null==(e=(r=C.current).clearTextureAtlas)||e.call(r),T.current.fit(),w(t,C.current.cols,C.current.rows,p)}catch(e){}},O="undefined"!=typeof document?document.fonts:void 0,F=!!O&&"function"==typeof O.addEventListener;F&&O.addEventListener("loadingdone",R);let W=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n={...f,...r},o=e.element;if(!o)return()=>{};let a=o.style.touchAction;o.style.touchAction="none";let l=o.querySelector(".xterm-viewport");l&&(l.style.touchAction="none");let s=0,i=0,c=0,u=null,d=!1,m=e=>{"touch"===e.pointerType&&(s=e.clientX,i=e.clientY,c=e.clientY,u=null,d=!1)},h=a=>{var l,m,f;if("touch"!==a.pointerType)return;let h=a.clientX-s,p=a.clientY-i,v=Math.abs(h),b=Math.abs(p);if(null===u){if(Math.max(v,b)<n.deadZone)return;if(b<n.verticalDominance*v){u=!1;return}u=!0;try{o.setPointerCapture(a.pointerId)}catch(e){}}if(!0!==u)return;a.preventDefault();let g=Math.round((a.clientY-c)/((null!=(f=e.options.fontSize)?f:13)*1.2));if(g>n.maxLinesPerEvent&&(g=n.maxLinesPerEvent),g<-n.maxLinesPerEvent&&(g=-n.maxLinesPerEvent),0===g)return;c=a.clientY;let x=g*n.speedMultiplier;if(g>0?null==(l=r.onScrollAway)||l.call(r):null==(m=r.onScrollTowardLatest)||m.call(r),"normal"===e.buffer.active.type)e.scrollLines(-x);else{d||(d=!0,t(n.tmuxPrefix+"["));let e=g>0?"\x1b[A":"\x1b[B",r=Math.abs(x);for(let n=0;n<r;n++)t(e)}},p=e=>{if("touch"===e.pointerType){try{o.hasPointerCapture(e.pointerId)&&o.releasePointerCapture(e.pointerId)}catch(e){}u=null}},v={capture:!0},b={capture:!0,passive:!1};return o.addEventListener("pointerdown",m,v),o.addEventListener("pointermove",h,b),o.addEventListener("pointerup",p,v),o.addEventListener("pointercancel",p,v),()=>{o.removeEventListener("pointerdown",m,v),o.removeEventListener("pointermove",h,b),o.removeEventListener("pointerup",p,v),o.removeEventListener("pointercancel",p,v),o.style.touchAction=a}}(j,e=>{y(t,e,p)},{onScrollAway:()=>{M.current=!1,L(!1)}}),B=null;e.current&&(B=new ResizeObserver(()=>{if(n&&T.current)try{T.current.fit(),w(t,j.cols,j.rows,p)}catch(e){}})).observe(e.current);let _=[],z=!1,D=null,J=0,K=()=>{D&&(clearTimeout(D),D=null),_.length>0&&(j.write(_.join("")),_.length=0,J=0)},H=j.onSelectionChange(()=>{j.hasSelection()?(z=!0,D||(D=setTimeout(()=>{z=!1,K()},5e3))):(z=!1,K())}),U=!1;S(t,p,v),s=x(t,e=>{z?(_.push(e),(J+=e.length)>1048576&&(z=!1,K())):(j.write(e),M.current&&(U=!0,j.scrollToBottom()))},p);let Y=j.onScroll(()=>{if(U){U=!1;return}let e=j.buffer.active;e.viewportY+j.rows>=e.length?(M.current=!0,L(!0)):(M.current=!1,L(!1))}),q=()=>{P&&(P.fit(),w(t,j.cols,j.rows,p))};window.addEventListener("resize",q),l=j.onData(e=>{y(t,e,p)}),w(t,j.cols,j.rows,p),o=()=>{clearTimeout(A),null==B||B.disconnect(),W(),H.dispose(),D&&clearTimeout(D),window.removeEventListener("resize",q),F&&O&&O.removeEventListener("loadingdone",R),Y.dispose(),null==l||l.dispose(),l=null,null==s||s(),k(t,p),j.dispose()}}).catch(e=>{console.error("[DirectTerminal] Failed to load xterm.js:",e),j("Failed to load terminal")}),()=>{n=!1,null==o||o()}},[a,t,p,v,s,b,g,x,y,w,S,k]),(0,o.useEffect)(()=>{if("connected"!==E)return;let e=T.current,r=C.current;e&&r&&(e.fit(),w(t,r.cols,r.rows,p))},[E,t,p,w]),(0,o.useEffect)(()=>{let e=C.current;if(!e)return;let t="dark"===a||"light"!==b;e.options.theme=t?g.dark:g.light,e.options.minimumContrastRatio=t?1:7},[a,b,g]),(0,o.useEffect)(()=>{let e=C.current,r=T.current;if(e&&r){e.options.fontSize=c;try{localStorage.setItem(i,String(c))}catch(e){}r.fit(),w(t,e.cols,e.rows,p)}},[c,t,p,w]),{error:N,followOutput:P,scrollToLatest:()=>{let e=C.current;e&&("normal"===e.buffer.active.type?e.scrollToBottom():y(t,"q",p)),M.current=!0,L(!0)},muxStatus:E,terminalInstance:C,fitAddon:T}}(j,t,{appearance:g,variant:b,fontSize:L,autoFocus:k,projectId:c,tmuxName:p}),{resizeTerminal:_,status:z}=(0,m.Ug)(),D=(0,o.useRef)(z);D.current=z,(0,o.useEffect)(()=>{let e=B.current,r=W.current,n=j.current;if(!e||!r||"connected"!==D.current||!n)return;let o=0,a=!1,l=0,s=-1,i=()=>{if(a)return;o++;let u=n.getBoundingClientRect().height,d=s>=0&&1>Math.abs(u-s);if(s=u,!d&&o<60){l=requestAnimationFrame(i);return}r.refresh(0,r.rows-1),e.fit(),r.refresh(0,r.rows-1),_(t,r.cols,r.rows,c)};l=requestAnimationFrame(i);let u=e=>{a||e.target===n.parentElement&&(o=0,s=-1,setTimeout(()=>{a||(l=requestAnimationFrame(i))},50))},d=n.parentElement;null==d||d.addEventListener("transitionend",u);let m=setTimeout(()=>{a||(o=0,s=-1,i())},300),f=setTimeout(()=>{a||(o=0,s=-1,i())},600);return()=>{a=!0,cancelAnimationFrame(l),null==d||d.removeEventListener("transitionend",u),clearTimeout(m),clearTimeout(f)}},[M,t,c,_,j,B,W]),(0,o.useEffect)(()=>{let e=new URLSearchParams(T.toString());M?e.set("fullscreen","true"):e.delete("fullscreen");let t=e.toString()?"".concat(C,"?").concat(e.toString()):C;E.replace(t,{scroll:!1})},[M,C,E,T]);let J="dark"===g||"light"!==N;return(0,n.jsxs)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--color-border-default)] flex flex-col",M?"fixed inset-0 z-50 rounded-none border-0":"relative h-full",J?"bg-[#0a0a0f]":"bg-[#fafafa]",S&&"border-0"),children:[(0,n.jsx)(d,{sessionId:t,chromeless:S,isOpenCodeSession:y,reloadCommand:w,fontSize:L,setFontSize:I,fullscreen:M,toggleFullscreen:()=>P(e=>!e),muxStatus:F,error:A}),(0,n.jsxs)("div",{className:"relative flex-1 min-h-0 flex flex-col",children:[R?null:(0,n.jsx)("button",{type:"button",onClick:O,className:"absolute bottom-3 right-3 z-20 flex h-8 w-8 items-center justify-center rounded-full border border-[var(--color-border-default)] bg-[var(--color-bg-elevated)] text-[var(--color-text-primary)] shadow-md active:scale-95","aria-label":"Jump to latest",title:"Jump to latest",children:(0,n.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M19 14l-7 7m0 0l-7-7m7 7V3"})})}),(0,n.jsx)("div",{ref:j,className:"w-full flex flex-col flex-1 min-h-0 overflow-hidden"})]})]})}},4901:(e,t,r)=>{"use strict";function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter(Boolean).join(" ")}r.d(t,{cn:()=>n})},5184:(e,t,r)=>{"use strict";r.d(t,{Ug:()=>s,eT:()=>i,i2:()=>u});var n=r(3817),o=r(6749),a=r(1806);let l=o.createContext(void 0);function s(){let e=o.useContext(l);if(!e)throw Error("useMux() must be used within <MuxProvider>");return e}function i(){return o.useContext(l)}function c(e,t){return t?"".concat(t,":").concat(e):e}function u(e){let{children:t}=e,r=(0,o.useRef)(null),s=(0,o.useRef)(new Map),i=(0,o.useRef)(new Map),[u,d]=(0,o.useState)("connecting"),[m,f]=(0,o.useState)([]),[h,p]=(0,o.useState)(null),v=(0,o.useRef)(0),b=(0,o.useRef)(null),g=(0,o.useRef)({}),x=(0,o.useRef)(!1),y=(0,o.useCallback)(()=>{if(!r.current){d("connecting");try{let e=function(e){var t,r,n;let o=window.location,l="https:"===o.protocol?"wss:":"ws:",s=null!=(t=e.proxyWsPath)?t:a.env.NEXT_PUBLIC_TERMINAL_WS_PATH;if(s){let e=s.replace(/\/ws\/?$/,"");return"".concat(l,"//").concat(o.host).concat(e,"/mux")}if(""===o.port||"443"===o.port||"80"===o.port)return"".concat(l,"//").concat(o.hostname,"/ao-terminal-mux");let i=null!=(n=null!=(r=e.directTerminalPort)?r:a.env.NEXT_PUBLIC_DIRECT_TERMINAL_PORT)?n:"14801";return"".concat(l,"//").concat(o.hostname,":").concat(i,"/mux")}(g.current);console.log("[MuxProvider] Connecting to",e);let t=new WebSocket(e);r.current=t,t.addEventListener("open",()=>{if(x.current)return void t.close();for(let e of(console.log("[MuxProvider] Connected"),d("connected"),v.current=0,i.current.values())){let r={ch:"terminal",id:e.id,type:"open",...e.projectId&&{projectId:e.projectId},...e.tmuxName&&{tmuxName:e.tmuxName}};t.send(JSON.stringify(r))}t.send(JSON.stringify({ch:"subscribe",topics:["sessions"]}))}),t.addEventListener("message",e=>{try{let t=JSON.parse(e.data);if("terminal"===t.ch){let e=c(t.id,"projectId"in t?t.projectId:void 0);if("data"===t.type){let r=s.current.get(e);if(r)for(let e of r)e(t.data)}else if("opened"===t.type)i.current.has(e)||i.current.set(e,{id:t.id,..."projectId"in t&&t.projectId?{projectId:t.projectId}:{}});else if("exited"===t.type){i.current.delete(e);let r=s.current.get(e);if(r){let e="\r\n\x1b[31m[Terminal exited with code ".concat(t.code,"]\x1b[0m\r\n");for(let t of r)t(e)}}else"error"===t.type&&console.error("[MuxProvider] Terminal error for ".concat(t.id,":"),t.message)}else"sessions"===t.ch&&("snapshot"===t.type?(f(t.sessions),p(null)):"error"===t.type&&p(t.error))}catch(e){console.error("[MuxProvider] Error processing message:",e)}}),t.addEventListener("error",e=>{console.error("[MuxProvider] WebSocket error:",e)}),t.addEventListener("close",()=>{if(console.log("[MuxProvider] Disconnected"),r.current===t&&(r.current=null),x.current)return;let e=Math.min(1e3*Math.pow(2,v.current),3e4);v.current+=1,d("reconnecting"),b.current=setTimeout(()=>{console.log("[MuxProvider] Reconnecting (attempt ".concat(v.current,")...")),y()},e)})}catch(e){console.error("[MuxProvider] Failed to create WebSocket:",e),d("disconnected")}}},[]);(0,o.useEffect)(()=>{x.current=!1;let e=!1;return(async()=>{try{let e=await fetch("/api/runtime/terminal");if(e.ok){let t=await e.json();g.current={directTerminalPort:function(e){if("string"!=typeof e&&"number"!=typeof e)return;let t=Number.parseInt(String(e),10);if(Number.isInteger(t)&&!(t<=0)&&!(t>65535))return String(t)}(t.directTerminalPort),proxyWsPath:function(e){if("string"!=typeof e)return;let t=e.trim();if(t.startsWith("/"))return t}(t.proxyWsPath)}}}catch(e){}e||y()})(),()=>{var t;e=!0,x.current=!0,b.current&&clearTimeout(b.current),null==(t=r.current)||t.close()}},[y]);let w=(0,o.useCallback)((e,t,n)=>{var o;let a=c(e,n),l=s.current.get(a);if(l||(l=new Set,s.current.set(a,l)),l.add(t),!i.current.has(a)&&(null==(o=r.current)?void 0:o.readyState)===WebSocket.OPEN){let t={ch:"terminal",id:e,type:"open",...n&&{projectId:n}};r.current.send(JSON.stringify(t))}return()=>{let e=s.current.get(a);e&&(e.delete(t),0===e.size&&s.current.delete(a))}},[]),S=(0,o.useCallback)((e,t,n)=>{var o;if((null==(o=r.current)?void 0:o.readyState)===WebSocket.OPEN){let o={ch:"terminal",id:e,type:"data",data:t,...n&&{projectId:n}};r.current.send(JSON.stringify(o))}},[]),k=(0,o.useCallback)((e,t,n)=>{var o;if(i.current.set(c(e,t),{id:e,projectId:t,tmuxName:n}),(null==(o=r.current)?void 0:o.readyState)===WebSocket.OPEN){let o={ch:"terminal",id:e,type:"open",...t&&{projectId:t},...n&&{tmuxName:n}};r.current.send(JSON.stringify(o))}},[]),E=(0,o.useCallback)((e,t)=>{var n;if(i.current.delete(c(e,t)),(null==(n=r.current)?void 0:n.readyState)===WebSocket.OPEN){let n={ch:"terminal",id:e,type:"close",...t&&{projectId:t}};r.current.send(JSON.stringify(n))}},[]),C=(0,o.useCallback)((e,t,n,o)=>{var a;if((null==(a=r.current)?void 0:a.readyState)===WebSocket.OPEN){let a={ch:"terminal",id:e,type:"resize",cols:t,rows:n,...o&&{projectId:o}};r.current.send(JSON.stringify(a))}},[]),T=(0,o.useMemo)(()=>({subscribeTerminal:w,writeTerminal:S,openTerminal:k,closeTerminal:E,resizeTerminal:C,status:u,sessions:m,lastError:h}),[w,S,k,E,C,u,m,h]);return(0,n.jsx)(l.Provider,{value:T,children:t})}},5611:()=>{}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3780],{545:(e,t,r)=>{r.d(t,{CM:()=>n.CM,Kw:()=>d,N_:()=>n.N_,Ou:()=>i,QN:()=>l,U1:()=>n.U1,dG:()=>u,fZ:()=>s,nH:()=>p,ng:()=>h,of:()=>c,sZ:()=>a,wy:()=>m});var n=r(5425);function s(e){return e.mergeability.blockers.includes("API rate limited or unavailable")}function a(e){return!1===e.enriched}function l(e){return"open"===e.state&&e.mergeability.mergeable&&e.mergeability.ciPassing&&e.mergeability.approved&&e.mergeability.noConflicts}function o(e){return e.replace(/_/g," ")}function i(e){var t,r,n;return null!=(n=null==(r=e.lifecycle)||null==(t=r.session)?void 0:t.label)?n:o(e.status)}function c(e){var t,r,n;return(null==(r=e.lifecycle)||null==(t=r.pr)?void 0:t.label)?e.lifecycle.pr.label:(null==(n=e.pr)?void 0:n.state)?o(e.pr.state):"not created"}function d(e){var t,r,n;return null!=(n=null==(r=e.lifecycle)||null==(t=r.runtime)?void 0:t.label)?n:"unknown"}function u(e){var t;return e.lifecycle?"done"===e.lifecycle.sessionState||"terminated"===e.lifecycle.sessionState||"merged"===e.lifecycle.prState:"merged"===e.status||"killed"===e.status||"cleanup"===e.status||"done"===e.status||"terminated"===e.status||(null==(t=e.pr)?void 0:t.state)==="merged"}function p(e){return e.lifecycle?u(e)||"missing"===e.lifecycle.runtimeState||"exited"===e.lifecycle.runtimeState:n.CM.has(e.status)||null!==e.activity&&n.Rt.has(e.activity)}function m(e){var t;return e.lifecycle?("done"===e.lifecycle.sessionState||"terminated"===e.lifecycle.sessionState||"missing"===e.lifecycle.runtimeState||"exited"===e.lifecycle.runtimeState)&&"merged"!==e.lifecycle.prState&&"merged"!==e.status:!!p(e)&&(null==(t=e.pr)?void 0:t.state)!=="merged"&&"merged"!==e.status}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"detailed",r=function(e){var t,r,l,o,i,c,d,p,m;if(u(e))return"done";if((null==(t=e.lifecycle)?void 0:t.prReason)==="merge_ready"||(null==(r=e.lifecycle)?void 0:r.prReason)==="approved"||"mergeable"===e.status||"approved"===e.status||e.pr&&!a(e.pr)&&e.pr.mergeability.mergeable)return"merge";if((null==(l=e.lifecycle)?void 0:l.sessionState)==="detecting"||(null==(o=e.lifecycle)?void 0:o.sessionState)==="needs_input"||(null==(i=e.lifecycle)?void 0:i.sessionState)==="stuck"||e.status===n.SB.ERRORED||e.status===n.SB.NEEDS_INPUT||e.status===n.SB.STUCK||e.activity===n.u3.WAITING_INPUT||e.activity===n.u3.BLOCKED||e.activity===n.u3.EXITED)return"respond";if((null==(c=e.lifecycle)?void 0:c.prReason)==="ci_failing"||(null==(d=e.lifecycle)?void 0:d.prReason)==="changes_requested"||"ci_failed"===e.status||"changes_requested"===e.status)return"review";if(e.pr&&!s(e.pr)&&!a(e.pr)){let t=e.pr;if(t.ciStatus===n.U1.FAILING||"changes_requested"===t.reviewDecision||!t.mergeability.noConflicts)return"review"}if((null==(p=e.lifecycle)?void 0:p.prReason)==="review_pending"||(null==(m=e.lifecycle)?void 0:m.prReason)==="closed_unmerged"||"review_pending"===e.status)return"pending";if(e.pr&&!s(e.pr)&&!a(e.pr)){let t=e.pr;if(!t.isDraft&&t.unresolvedThreads>0||!t.isDraft&&("pending"===t.reviewDecision||"none"===t.reviewDecision))return"pending"}return"working"}(e);return"simple"===t&&("respond"===r||"review"===r)?"action":r}},2286:(e,t,r)=>{r.d(t,{D:()=>d,N:()=>u});var n=r(6749),s=(e,t,r,n,s,a,l,o)=>{let i=document.documentElement,c=["light","dark"];function d(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&a?s.map(e=>a[e]||e):s;r?(i.classList.remove(...n),i.classList.add(a&&a[t]?a[t]:t)):i.setAttribute(e,t)}),r=t,o&&c.includes(r)&&(i.style.colorScheme=r)}if(n)d(n);else try{let e=localStorage.getItem(t)||r,n=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(n)}catch(e){}},a=["light","dark"],l="(prefers-color-scheme: dark)",o="undefined"==typeof window,i=n.createContext(void 0),c={setTheme:e=>{},themes:[]},d=()=>{var e;return null!=(e=n.useContext(i))?e:c},u=e=>n.useContext(i)?n.createElement(n.Fragment,null,e.children):n.createElement(m,{...e}),p=["light","dark"],m=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:s=!0,enableColorScheme:o=!0,storageKey:c="theme",themes:d=p,defaultTheme:u=s?"system":"light",attribute:m="data-theme",value:v,children:b,nonce:_,scriptProps:x}=e,[y,N]=n.useState(()=>j(c,u)),[w,k]=n.useState(()=>"system"===y?g():y),S=v?Object.values(v):d,C=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&s&&(t=g());let n=v?v[t]:t,l=r?f(_):null,i=document.documentElement,c=e=>{"class"===e?(i.classList.remove(...S),n&&i.classList.add(n)):e.startsWith("data-")&&(n?i.setAttribute(e,n):i.removeAttribute(e))};if(Array.isArray(m)?m.forEach(c):c(m),o){let e=a.includes(u)?u:null,r=a.includes(t)?t:e;i.style.colorScheme=r}null==l||l()},[_]),E=n.useCallback(e=>{let t="function"==typeof e?e(y):e;N(t);try{localStorage.setItem(c,t)}catch(e){}},[y]),P=n.useCallback(e=>{k(g(e)),"system"===y&&s&&!t&&C("system")},[y,t]);n.useEffect(()=>{let e=window.matchMedia(l);return e.addListener(P),P(e),()=>e.removeListener(P)},[P]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?N(e.newValue):E(u))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[E]),n.useEffect(()=>{C(null!=t?t:y)},[t,y]);let I=n.useMemo(()=>({theme:y,setTheme:E,forcedTheme:t,resolvedTheme:"system"===y?w:y,themes:s?[...d,"system"]:d,systemTheme:s?w:void 0}),[y,E,t,w,s,d]);return n.createElement(i.Provider,{value:I},n.createElement(h,{forcedTheme:t,storageKey:c,attribute:m,enableSystem:s,enableColorScheme:o,defaultTheme:u,value:v,themes:d,nonce:_,scriptProps:x}),b)},h=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:a,enableSystem:l,enableColorScheme:o,defaultTheme:i,value:c,themes:d,nonce:u,scriptProps:p}=e,m=JSON.stringify([a,r,i,t,d,c,l,o]).slice(1,-1);return n.createElement("script",{...p,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?u:"",dangerouslySetInnerHTML:{__html:"(".concat(s.toString(),")(").concat(m,")")}})}),j=(e,t)=>{let r;if(!o){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},f=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(l)),e.matches?"dark":"light")},2446:(e,t,r)=>{r.d(t,{d:()=>c,t:()=>i});var n=r(3817),s=r(6749),a=r(4901);function l(e,t){return"SHOW"===t.type?{message:t.message,variant:t.variant,key:t.key}:null}let o=(0,s.createContext)(null);function i(e){let{children:t}=e,[r,i]=(0,s.useReducer)(l,null),c=(0,s.useRef)(null),d=(0,s.useRef)(0);(0,s.useEffect)(()=>()=>{null!==c.current&&clearTimeout(c.current)},[]);let u=(0,s.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";null!==c.current&&clearTimeout(c.current),d.current+=1,i({type:"SHOW",message:e,variant:t,key:d.current}),c.current=setTimeout(()=>{i({type:"HIDE"}),c.current=null},3e3)},[]);return(0,n.jsxs)(o.Provider,{value:{showToast:u},children:[t,(0,n.jsx)("div",{className:"toast-container",role:"status","aria-live":"polite","aria-atomic":"true",children:r&&(0,n.jsxs)("div",{className:(0,a.cn)("toast","success"===r.variant&&"toast--success","error"===r.variant&&"toast--error","info"===r.variant&&"toast--info"),children:[(0,n.jsx)("span",{className:"toast__icon","aria-hidden":"true"}),(0,n.jsx)("span",{className:"toast__message",children:r.message})]},r.key)})]})}function c(){let e=(0,s.useContext)(o);if(!e)throw Error("useToast must be used within a ToastProvider");return e}},2749:(e,t,r)=>{r.d(t,{ProjectSettingsForm:()=>u});var n=r(3817),s=r(6749),a=r(7594),l=r(2446);let o="These describe which repo this is. Change them via `ao project relink`.";function i(e){let{projectId:t,initialValues:r}=e,o=(0,a.useRouter)(),{showToast:i}=(0,l.d)(),[u,p]=(0,s.useState)(r.agent),[m,h]=(0,s.useState)(r.runtime),[j,f]=(0,s.useState)(r.trackerPlugin),[g,v]=(0,s.useState)(r.scmPlugin),[b,_]=(0,s.useState)(r.reactions),[x,y]=(0,s.useState)(!1),[N,w]=(0,s.useState)(null),[k,S]=(0,s.useState)(null),C=(0,s.useMemo)(()=>({agent:u.trim()||null,runtime:m.trim()||null,tracker:j.trim()?{plugin:j.trim()}:null,scm:g.trim()?{plugin:g.trim()}:null,reactions:b}),[u,m,j,g,b]),E=async()=>{let e;w(null),S(null);try{let t=b.trim();e=t?JSON.parse(t):void 0}catch(e){w("Reactions must be valid JSON.");return}y(!0);try{let n=await fetch("/api/projects/".concat(encodeURIComponent(t)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:C.agent,runtime:C.runtime,tracker:C.tracker,scm:C.scm,reactions:null!=e?e:null})}),s=await n.json().catch(()=>null);if(!n.ok){var r;let e=null!=(r=null==s?void 0:s.error)?r:"Failed to save project settings.";400===n.status?w(e):S(e);return}i("Project settings updated.","success"),o.refresh()}catch(e){S("Network error while saving project settings.")}finally{y(!1)}};return(0,n.jsxs)("div",{className:"project-settings-form",children:[(0,n.jsxs)("section",{className:"project-settings-form__section",children:[(0,n.jsxs)("div",{className:"project-settings-form__section-header",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"project-settings-form__eyebrow",children:"Behavior"}),(0,n.jsx)("h2",{className:"project-settings-form__section-title",children:"Runtime configuration"}),(0,n.jsx)("p",{className:"project-settings-form__section-copy",children:"These values change how AO runs this project without changing which repository the project points at."})]}),(0,n.jsx)("button",{type:"button",onClick:()=>void E(),disabled:x,className:"project-settings-form__save",children:x?"Saving...":"Save changes"})]}),(0,n.jsxs)("div",{className:"project-settings-form__grid",children:[(0,n.jsx)(c,{id:"agent",label:"Agent",value:u,onChange:p,placeholder:"claude-code"}),(0,n.jsx)(c,{id:"runtime",label:"Runtime",value:m,onChange:h,placeholder:"tmux"}),(0,n.jsx)(c,{id:"tracker-plugin",label:"Tracker plugin",value:j,onChange:f,placeholder:"github"}),(0,n.jsx)(c,{id:"scm-plugin",label:"SCM plugin",value:g,onChange:v,placeholder:"github"})]}),(0,n.jsxs)("div",{className:"project-settings-form__reactions",children:[(0,n.jsx)("label",{htmlFor:"reactions",className:"project-settings-form__label",children:"Reactions"}),(0,n.jsx)("p",{className:"project-settings-form__hint",children:"JSON object keyed by reaction name. This PATCH only sends behavior fields."}),(0,n.jsx)("textarea",{id:"reactions",value:b,onChange:e=>_(e.target.value),spellCheck:!1,rows:12,className:"project-settings-form__textarea project-settings-form__textarea--mono"})]}),N?(0,n.jsx)("div",{role:"alert",className:"project-settings-form__alert project-settings-form__alert--error",children:N}):null,k?(0,n.jsxs)("div",{className:"project-settings-form__alert project-settings-form__alert--surface",children:[(0,n.jsx)("p",{className:"project-settings-form__alert-copy",children:k}),(0,n.jsx)("button",{type:"button",onClick:()=>void E(),className:"project-settings-form__retry",children:"Retry"})]}):null]}),(0,n.jsxs)("section",{className:"project-settings-form__section",children:[(0,n.jsx)("p",{className:"project-settings-form__eyebrow",children:"Identity"}),(0,n.jsx)("h2",{className:"project-settings-form__section-title",children:"Repository identity"}),(0,n.jsx)("p",{className:"project-settings-form__section-copy",children:"These fields are read-only because they define which repository AO considers this project to be."}),(0,n.jsxs)("div",{className:"project-settings-form__grid",children:[(0,n.jsx)(d,{id:"identity-project-id",label:"Project ID",value:r.identity.projectId}),(0,n.jsx)(d,{id:"identity-path",label:"Path",value:r.identity.path}),(0,n.jsx)(d,{id:"identity-repo",label:"Repo",value:r.identity.repo}),(0,n.jsx)(d,{id:"identity-default-branch",label:"Default branch",value:r.identity.defaultBranch})]})]})]})}function c(e){let{id:t,label:r,value:s,onChange:a,placeholder:l}=e;return(0,n.jsxs)("label",{htmlFor:t,className:"project-settings-form__field",children:[(0,n.jsx)("span",{className:"project-settings-form__label",children:r}),(0,n.jsx)("input",{id:t,value:s,onChange:e=>a(e.target.value),placeholder:l,className:"project-settings-form__input"})]})}function d(e){let{id:t,label:r,value:s}=e;return(0,n.jsxs)("label",{htmlFor:t,className:"project-settings-form__field",children:[(0,n.jsx)("span",{className:"project-settings-form__label",children:r}),(0,n.jsx)("input",{id:t,value:s,disabled:!0,readOnly:!0,title:o,"aria-describedby":"".concat(t,"-tooltip"),className:"project-settings-form__input project-settings-form__input--readonly"}),(0,n.jsx)("span",{id:"".concat(t,"-tooltip"),className:"project-settings-form__hint",children:o})]})}function u(e){return(0,n.jsx)(l.t,{children:(0,n.jsx)(i,{...e})})}},3394:(e,t,r)=>{async function n(e){try{var t;let r=await e.json(),n=null!=(t=null==r?void 0:r.error)?t:null==r?void 0:r.message;if("string"==typeof n&&n.trim().length>0)return n.trim()}catch(e){}let r="string"==typeof e.statusText?e.statusText.trim():"";return r.length>0?"".concat(e.status," ").concat(r):"HTTP ".concat(e.status)}async function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{timeoutMs:r=8e3,timeoutMessage:s,signal:a,...l}=t,o=new AbortController,i=null,c=!1;try{let t=function(e){let t=e.filter(e=>!!e);if(0===t.length)return;if(1===t.length)return t[0];let r=new AbortController,n=()=>r.abort();for(let e of t){if(e.aborted){r.abort();break}e.addEventListener("abort",n,{once:!0})}return r.signal}([a,o.signal]),d={...l};t&&(d.signal=t);let u=new Promise((e,t)=>{i=setTimeout(()=>{c=!0,o.abort(),t(Error(null!=s?s:"Request timed out after ".concat(r,"ms")))},r)}),p=await Promise.race([fetch(e,d).catch(e=>{if(c)throw Error(null!=s?s:"Request timed out after ".concat(r,"ms"),{cause:e});throw e}),u]);if(!p.ok)throw Error(await n(p));return await p.json()}finally{i&&clearTimeout(i)}}r.d(t,{u:()=>s})},4901:(e,t,r)=>{r.d(t,{cn:()=>n});function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter(Boolean).join(" ")}},5184:(e,t,r)=>{r.d(t,{Ug:()=>o,eT:()=>i,i2:()=>d});var n=r(3817),s=r(6749),a=r(1806);let l=s.createContext(void 0);function o(){let e=s.useContext(l);if(!e)throw Error("useMux() must be used within <MuxProvider>");return e}function i(){return s.useContext(l)}function c(e,t){return t?"".concat(t,":").concat(e):e}function d(e){let{children:t}=e,r=(0,s.useRef)(null),o=(0,s.useRef)(new Map),i=(0,s.useRef)(new Map),[d,u]=(0,s.useState)("connecting"),[p,m]=(0,s.useState)([]),[h,j]=(0,s.useState)(null),f=(0,s.useRef)(0),g=(0,s.useRef)(null),v=(0,s.useRef)({}),b=(0,s.useRef)(!1),_=(0,s.useCallback)(()=>{if(!r.current){u("connecting");try{let e=function(e){var t,r,n;let s=window.location,l="https:"===s.protocol?"wss:":"ws:",o=null!=(t=e.proxyWsPath)?t:a.env.NEXT_PUBLIC_TERMINAL_WS_PATH;if(o){let e=o.replace(/\/ws\/?$/,"");return"".concat(l,"//").concat(s.host).concat(e,"/mux")}if(""===s.port||"443"===s.port||"80"===s.port)return"".concat(l,"//").concat(s.hostname,"/ao-terminal-mux");let i=null!=(n=null!=(r=e.directTerminalPort)?r:a.env.NEXT_PUBLIC_DIRECT_TERMINAL_PORT)?n:"14801";return"".concat(l,"//").concat(s.hostname,":").concat(i,"/mux")}(v.current);console.log("[MuxProvider] Connecting to",e);let t=new WebSocket(e);r.current=t,t.addEventListener("open",()=>{if(b.current)return void t.close();for(let e of(console.log("[MuxProvider] Connected"),u("connected"),f.current=0,i.current.values())){let r={ch:"terminal",id:e.id,type:"open",...e.projectId&&{projectId:e.projectId},...e.tmuxName&&{tmuxName:e.tmuxName}};t.send(JSON.stringify(r))}t.send(JSON.stringify({ch:"subscribe",topics:["sessions"]}))}),t.addEventListener("message",e=>{try{let t=JSON.parse(e.data);if("terminal"===t.ch){let e=c(t.id,"projectId"in t?t.projectId:void 0);if("data"===t.type){let r=o.current.get(e);if(r)for(let e of r)e(t.data)}else if("opened"===t.type)i.current.has(e)||i.current.set(e,{id:t.id,..."projectId"in t&&t.projectId?{projectId:t.projectId}:{}});else if("exited"===t.type){i.current.delete(e);let r=o.current.get(e);if(r){let e="\r\n\x1b[31m[Terminal exited with code ".concat(t.code,"]\x1b[0m\r\n");for(let t of r)t(e)}}else"error"===t.type&&console.error("[MuxProvider] Terminal error for ".concat(t.id,":"),t.message)}else"sessions"===t.ch&&("snapshot"===t.type?(m(t.sessions),j(null)):"error"===t.type&&j(t.error))}catch(e){console.error("[MuxProvider] Error processing message:",e)}}),t.addEventListener("error",e=>{console.error("[MuxProvider] WebSocket error:",e)}),t.addEventListener("close",()=>{if(console.log("[MuxProvider] Disconnected"),r.current===t&&(r.current=null),b.current)return;let e=Math.min(1e3*Math.pow(2,f.current),3e4);f.current+=1,u("reconnecting"),g.current=setTimeout(()=>{console.log("[MuxProvider] Reconnecting (attempt ".concat(f.current,")...")),_()},e)})}catch(e){console.error("[MuxProvider] Failed to create WebSocket:",e),u("disconnected")}}},[]);(0,s.useEffect)(()=>{b.current=!1;let e=!1;return(async()=>{try{let e=await fetch("/api/runtime/terminal");if(e.ok){let t=await e.json();v.current={directTerminalPort:function(e){if("string"!=typeof e&&"number"!=typeof e)return;let t=Number.parseInt(String(e),10);if(Number.isInteger(t)&&!(t<=0)&&!(t>65535))return String(t)}(t.directTerminalPort),proxyWsPath:function(e){if("string"!=typeof e)return;let t=e.trim();if(t.startsWith("/"))return t}(t.proxyWsPath)}}}catch(e){}e||_()})(),()=>{var t;e=!0,b.current=!0,g.current&&clearTimeout(g.current),null==(t=r.current)||t.close()}},[_]);let x=(0,s.useCallback)((e,t,n)=>{var s;let a=c(e,n),l=o.current.get(a);if(l||(l=new Set,o.current.set(a,l)),l.add(t),!i.current.has(a)&&(null==(s=r.current)?void 0:s.readyState)===WebSocket.OPEN){let t={ch:"terminal",id:e,type:"open",...n&&{projectId:n}};r.current.send(JSON.stringify(t))}return()=>{let e=o.current.get(a);e&&(e.delete(t),0===e.size&&o.current.delete(a))}},[]),y=(0,s.useCallback)((e,t,n)=>{var s;if((null==(s=r.current)?void 0:s.readyState)===WebSocket.OPEN){let s={ch:"terminal",id:e,type:"data",data:t,...n&&{projectId:n}};r.current.send(JSON.stringify(s))}},[]),N=(0,s.useCallback)((e,t,n)=>{var s;if(i.current.set(c(e,t),{id:e,projectId:t,tmuxName:n}),(null==(s=r.current)?void 0:s.readyState)===WebSocket.OPEN){let s={ch:"terminal",id:e,type:"open",...t&&{projectId:t},...n&&{tmuxName:n}};r.current.send(JSON.stringify(s))}},[]),w=(0,s.useCallback)((e,t)=>{var n;if(i.current.delete(c(e,t)),(null==(n=r.current)?void 0:n.readyState)===WebSocket.OPEN){let n={ch:"terminal",id:e,type:"close",...t&&{projectId:t}};r.current.send(JSON.stringify(n))}},[]),k=(0,s.useCallback)((e,t,n,s)=>{var a;if((null==(a=r.current)?void 0:a.readyState)===WebSocket.OPEN){let a={ch:"terminal",id:e,type:"resize",cols:t,rows:n,...s&&{projectId:s}};r.current.send(JSON.stringify(a))}},[]),S=(0,s.useMemo)(()=>({subscribeTerminal:x,writeTerminal:y,openTerminal:N,closeTerminal:w,resizeTerminal:k,status:d,sessions:p,lastError:h}),[x,y,N,w,k,d,p,h]);return(0,n.jsx)(l.Provider,{value:S,children:t})}},5425:(e,t,r)=>{r.d(t,{CM:()=>a,N_:()=>o,Rt:()=>l,SB:()=>s,U1:()=>c,tT:()=>i,u3:()=>n});let n={ACTIVE:"active",READY:"ready",IDLE:"idle",WAITING_INPUT:"waiting_input",BLOCKED:"blocked",EXITED:"exited"},s={SPAWNING:"spawning",WORKING:"working",DETECTING:"detecting",PR_OPEN:"pr_open",CI_FAILED:"ci_failed",REVIEW_PENDING:"review_pending",CHANGES_REQUESTED:"changes_requested",APPROVED:"approved",MERGEABLE:"mergeable",MERGED:"merged",CLEANUP:"cleanup",NEEDS_INPUT:"needs_input",STUCK:"stuck",ERRORED:"errored",IDLE:"idle",KILLED:"killed",DONE:"done",TERMINATED:"terminated"},a=new Set(["killed","terminated","done","cleanup","errored","merged"]),l=new Set(["exited"]),o=new Set([]);function i(e,t,r){var n;if((null==(n=e.metadata)?void 0:n.role)==="orchestrator")return!0;if(!t)return!1;let s=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(e.id==="".concat(t,"-orchestrator"))return!0;if(!new RegExp("^".concat(s,"-orchestrator-\\d+$")).test(e.id))return!1;if(r){for(let n of r)if(n!==t&&new RegExp("^".concat(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"-\\d+$")).test(e.id))return!1}return!0}let c={PENDING:"pending",PASSING:"passing",FAILING:"failing",NONE:"none"}},6004:(e,t,r)=>{r.d(t,{U:()=>l});var n=r(3817),s=r(2286),a=r(6749);function l(e){let{className:t,label:r}=e,{resolvedTheme:l,setTheme:o}=(0,s.D)(),[i,c]=(0,a.useState)(!1);if((0,a.useEffect)(()=>c(!0),[]),!i)return(0,n.jsx)("div",{className:null!=t?t:"h-9 w-9"});let d="dark"===l;return(0,n.jsxs)("button",{onClick:()=>o(d?"light":"dark"),className:null!=t?t:"flex h-9 w-9 items-center justify-center border border-[var(--color-border-strong)] bg-[var(--color-bg-elevated)] text-[var(--color-text-primary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]","aria-label":"Switch to ".concat(d?"light":"dark"," mode"),title:"Switch to ".concat(d?"light":"dark"," mode"),children:[d?(0,n.jsxs)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,n.jsx)("path",{d:"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"})]}):(0,n.jsx)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"})}),r?(0,n.jsx)("span",{children:r}):null]})}},7387:(e,t,r)=>{function n(e,t){let r=e.replace(/^(?:feat|fix|chore|refactor|docs|test|ci|session|orchestrator|release|hotfix|feature|bugfix|build|wip|improvement)\//,"");return t&&r===t?"":r.replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase()).trim()}function s(e){var t;if(null==(t=e.pr)?void 0:t.title)return e.pr.title;if(e.issueTitle)return e.issueTitle;if(e.displayName)return e.displayName;if(e.userPrompt)return e.userPrompt;if(e.branch){let t=n(e.branch,e.id);if(t)return t}let r=e.metadata.pinnedSummary;return r||(e.summary&&!e.summaryIsFallback||e.summary?e.summary:e.status)}function a(e){let t=Date.now()-e;if(t<6e4)return"just now";let r=Math.floor(t/6e4);if(r<60)return"".concat(r,"m ago");let n=Math.floor(r/60);if(n<24)return"".concat(n,"h ago");let s=Math.floor(n/24);if(s<7)return"".concat(s,"d ago");let a=Math.floor(s/7);return"".concat(a,"w ago")}r.d(t,{Pn:()=>s,fw:()=>a,mC:()=>n})},7594:(e,t,r)=>{var n=r(9582);r.o(n,"useParams")&&r.d(t,{useParams:function(){return n.useParams}}),r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},8450:(e,t,r)=>{function n(e){return"/projects/".concat(encodeURIComponent(e))}function s(e,t){return"".concat(n(e),"/sessions/").concat(encodeURIComponent(t))}function a(e,t,r){return"".concat(s(e,t)).concat(r)}r.d(t,{$l:()=>a,Nc:()=>s,bn:()=>n})},9120:(e,t,r)=>{r.d(t,{D:()=>s,U:()=>a});var n=r(6749);let s=767;function a(e){let t="number"==typeof e?"(max-width: ".concat(e,"px)"):e,[r,s]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=window.matchMedia(t);s(e.matches);let r=e=>{s(e.matches)};return"function"==typeof e.addEventListener?(e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}):(e.addListener(r),()=>{e.removeListener(r)})},[t]),r}},9293:(e,t,r)=>{r.d(t,{u:()=>T});var n=r(3817),s=r(8713),a=r.n(s),l=r(6749),o=r(7594),i=r(4901),c=r(545),d=r(5425),u=r(7387);function p(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8;(0,l.useLayoutEffect)(()=>{if(!e)return;let n=t.current;if(!n)return;let s=()=>{n.style.transform="";let e=n.getBoundingClientRect(),t=window.innerWidth,s=0;e.left<r?s=r-e.left:e.right>t-r&&(s=t-r-e.right),0!==s&&(n.style.transform="translateX(".concat(s,"px)"))};return s(),window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s),n.style.transform=""}},[e,t,r])}var m=r(8450),h=r(6004);let j="ao:add-project:recent";function f(e){var t;return(null!=(t=e.split("/").filter(Boolean).pop())?t:"project").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"project"}function g(e){var t;return(null!=(t=e.split("/").filter(Boolean).pop())?t:"Project").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,e=>e.toUpperCase())||"Project"}function v(e,t){return"~"===e?"~/".concat(t):"".concat(e.replace(/\/+$/,""),"/").concat(t)}function b(e){let{children:t,className:r,viewBox:s="0 0 16 16"}=e;return(0,n.jsx)("svg",{"aria-hidden":"true",viewBox:s,className:r,children:t})}let _={fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"square"},x={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"miter"};function y(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"M10 3.5 6 8l4 4.5",..._})})}function N(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"m6 3.5 4 4.5L6 12.5",..._})})}function w(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"M8 12V4m0 0L5 7m3-3 3 3",...x})})}function k(){return(0,n.jsx)(b,{className:"add-project-modal__toolicon",children:(0,n.jsx)("path",{d:"M12 5V2.75H9.75M4.5 11A4.75 4.75 0 0 0 12 5M3.75 11v2.25H6m5.5-8.25A4.75 4.75 0 0 1 4 11",...x})})}function S(e){let{open:t,onClose:r}=e,s=(0,o.useRouter)(),a=(0,l.useRef)(null),[i,c]=(0,l.useState)(!1),[d,u]=(0,l.useState)(null),[p,m]=(0,l.useState)(null),[h,b]=(0,l.useState)(null),[_,x]=(0,l.useState)("~"),[S,C]=(0,l.useState)("~"),[E,P]=(0,l.useState)(["~"]),[I,M]=(0,l.useState)(0),[R,T]=(0,l.useState)([]),[L,D]=(0,l.useState)(!1),[A,O]=(0,l.useState)(null),[W,U]=(0,l.useState)(""),[B,F]=(0,l.useState)(""),H=async(e,t)=>{D(!0),O(null);try{var r,n,s,a,l,o,i;let c=await fetch("/api/filesystem/browse?path=".concat(encodeURIComponent(e))).catch(()=>null);if(!c){T([]),C(null!=(r=null==t?void 0:t.selectedPath)?r:e),O("Failed to browse directories.");return}if(!c.ok){let r=await c.json().catch(()=>null);T([]),C(null!=(n=null==t?void 0:t.selectedPath)?n:e),O(null!=(s=null==r?void 0:r.error)?s:"Failed to browse directories.");return}let d=await c.json().catch(()=>null),u=null!=(a=null==t?void 0:t.mode)?a:"push",p=null!=(l=null==t?void 0:t.historyIndex)?l:I;x(e),C(null!=(o=null==t?void 0:t.selectedPath)?o:e),T(null!=(i=null==d?void 0:d.entries)?i:[]),"push"===u?P(t=>{let r=t.slice(0,p+1);return r[r.length-1]!==e&&r.push(e),M(r.length-1),r}):P(t=>{let r=[...t];return r[p]=e,r})}catch(e){O("Failed to browse directories.")}finally{D(!1)}};(0,l.useEffect)(()=>{var e;t&&(u(null),m(null),b(null),O(null),P(["~"]),M(0),x("~"),C("~"),U(""),F(""),null==(e=a.current)||e.focus(),H("~",{mode:"replace",selectedPath:"~"}))},[t]);let K=(0,l.useMemo)(()=>R.filter(e=>e.isDirectory),[R]),G=(0,l.useMemo)(()=>{var e;return null!=(e=K.find(e=>v(_,e.name)===S))?e:null},[_,K,S]),J=function(e){if("~"===e)return null;let t=e.split("/").filter(Boolean);return t.length<=1?"~":"~"===t[0]?"~/".concat(t.slice(1,-1).join("/")):t.slice(0,-1).join("/")}(_),z=I<E.length-1,V=W.trim()||(S.trim()&&"~"!==S?f(S):""),$=B.trim()||(S.trim()&&"~"!==S?g(S):""),q=""!==S.trim()&&"~"!==S&&!A&&!!(null==G?void 0:G.isGitRepo)&&V.length>0&&$.length>0,X=K.findIndex(e=>v(_,e.name)===S);(0,l.useEffect)(()=>{if(!S||"~"===S){U(""),F("");return}U(f(S)),F(g(S))},[S]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{var t;if((null==(t=a.current)?void 0:t.contains(document.activeElement))||document.activeElement===document.body){if("Escape"===e.key){e.preventDefault(),r();return}if((e.metaKey||e.ctrlKey)&&"Enter"===e.key&&q){e.preventDefault(),Z();return}if("ArrowDown"===e.key||"ArrowUp"===e.key){if(0===K.length)return;e.preventDefault();let t="ArrowDown"===e.key?1:-1,r=-1===X?t>0?0:K.length-1:Math.min(Math.max(X+t,0),K.length-1),n=K[r];n&&C(v(_,n.name));return}if("Enter"===e.key){if(X>=0){e.preventDefault(),H(S);return}q&&(e.preventDefault(),Z())}}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[_,q,K,r,t,S,X]);let Z=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];u(null),m(null),b(null),c(!0);let t=S.trim();try{var n,a,l;let o=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:V,name:$,path:t,useDefaultProjectId:e})}),i=await o.json().catch(()=>null);if(409===o.status&&(null==i?void 0:i.existingProjectId)&&(null==i?void 0:i.suggestedProjectId)&&(null==i?void 0:i.suggestion)){b({error:null!=(n=i.error)?n:"A project with that ID already exists.",existingProjectId:i.existingProjectId,suggestedProjectId:i.suggestedProjectId,suggestion:i.suggestion}),U(i.suggestedProjectId);return}if(!o.ok){let e=null!=(a=null==i?void 0:i.error)?a:"Failed to add project.";o.status<500?u(e):m(e);return}let c=[t,...(function(){try{var e;let t=JSON.parse(null!=(e=window.localStorage.getItem(j))?e:"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch(e){return[]}})().filter(e=>e!==t)].slice(0,5);window.localStorage.setItem(j,JSON.stringify(c));let d=null!=(l=null==i?void 0:i.projectId)?l:V.trim();r(),s.push("/projects/".concat(encodeURIComponent(d))),s.refresh()}catch(e){m("Network error while adding project.")}finally{c(!1)}};if(!t)return null;let Q=e=>{var t;e<0||e>=E.length||(M(e),H(null!=(t=E[e])?t:"~",{mode:"replace",historyIndex:e}))},Y=h?(0,n.jsxs)("div",{className:"add-project-modal__notice add-project-modal__notice--warning",children:[(0,n.jsx)("p",{className:"add-project-modal__notice-title",children:h.error}),(0,n.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Existing project: ",(0,n.jsx)("code",{children:h.existingProjectId})]}),(0,n.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Suggested project ID: ",(0,n.jsx)("code",{children:h.suggestedProjectId})]}),(0,n.jsxs)("div",{className:"add-project-modal__notice-actions",children:[(0,n.jsx)("button",{type:"button",onClick:()=>{r(),s.push("/projects/".concat(encodeURIComponent(h.existingProjectId)))},className:"add-project-modal__ghostbtn",children:"Open existing"}),(0,n.jsx)("button",{type:"button",onClick:()=>void Z(!0),className:"add-project-modal__ghostbtn",children:"Use suggested ID"}),(0,n.jsx)("span",{className:"add-project-modal__notice-hint",children:"Edit the Project ID field or accept the suggested suffix."})]})]}):d?(0,n.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:d}):G&&!G.isGitRepo?(0,n.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:"Selected folder is not a git repository."}):p?(0,n.jsx)("div",{className:"add-project-modal__notice add-project-modal__notice--error",children:p}):null;return(0,n.jsx)("div",{className:"add-project-modal-backdrop",children:(0,n.jsxs)("div",{ref:a,role:"dialog","aria-modal":"true","aria-label":"Add project",className:"add-project-modal",tabIndex:-1,children:[(0,n.jsxs)("div",{className:"add-project-modal__titlebar",children:[(0,n.jsx)("h2",{className:"add-project-modal__windowtitle",children:"add project"}),(0,n.jsx)("button",{type:"button","aria-label":"Close",onClick:r,className:"add-project-modal__iconbtn",children:"\xd7"})]}),(0,n.jsxs)("div",{className:"add-project-modal__toolbar",children:[(0,n.jsxs)("div",{className:"add-project-modal__toolbarcluster",children:[(0,n.jsx)("button",{type:"button",onClick:()=>Q(I-1),disabled:!(I>0),className:"add-project-modal__toolbtn","aria-label":"Go back",children:(0,n.jsx)(y,{})}),(0,n.jsx)("button",{type:"button",onClick:()=>Q(I+1),disabled:!z,className:"add-project-modal__toolbtn","aria-label":"Go forward",children:(0,n.jsx)(N,{})}),(0,n.jsx)("button",{type:"button",onClick:()=>J&&void H(J),disabled:!J,className:"add-project-modal__toolbtn","aria-label":"Go up",children:(0,n.jsx)(w,{})}),(0,n.jsx)("button",{type:"button",onClick:()=>void H(_,{mode:"replace",selectedPath:S}),className:"add-project-modal__toolbtn","aria-label":"Refresh",children:(0,n.jsx)(k,{})})]}),(0,n.jsx)("div",{className:"add-project-modal__location",children:_})]}),(0,n.jsx)("div",{className:"add-project-modal__content",children:(0,n.jsxs)("div",{className:"add-project-browser",children:[(0,n.jsxs)("div",{className:"add-project-browser__current",children:[(0,n.jsx)("div",{className:"add-project-browser__current-label",children:"Current folder"}),(0,n.jsx)("div",{className:"add-project-browser__current-path",children:_})]}),A?(0,n.jsxs)("div",{className:"add-project-browser__state add-project-browser__state--error",children:[(0,n.jsx)("p",{className:"add-project-browser__state-title",children:"Directory browser unavailable"}),(0,n.jsx)("p",{className:"add-project-browser__state-copy",children:A})]}):L?(0,n.jsxs)("div",{className:"add-project-browser__state",children:[(0,n.jsx)("p",{className:"add-project-browser__state-title",children:"Loading folders"}),(0,n.jsx)("p",{className:"add-project-browser__state-copy",children:"Fetching directories for this location."})]}):0===K.length?(0,n.jsxs)("div",{className:"add-project-browser__state",children:[(0,n.jsx)("p",{className:"add-project-browser__state-title",children:"No visible folders here"}),(0,n.jsx)("p",{className:"add-project-browser__state-copy",children:"Try navigating up or picking a different location."})]}):(0,n.jsxs)("div",{className:"add-project-browser__rows",children:[J?(0,n.jsx)("button",{type:"button",onClick:()=>void H(J),className:"add-project-browser__row add-project-browser__row--parent",children:".."}):null,K.map(e=>{let t=v(_,e.name);return(0,n.jsx)("button",{type:"button",onClick:()=>C(t),onDoubleClick:()=>void H(t),className:"add-project-browser__row".concat(S===t?" is-selected":""),children:e.name},t)})]})]})}),(0,n.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,n.jsx)("span",{className:"add-project-modal__selection-label",children:"Selected"}),(0,n.jsx)("span",{className:"add-project-modal__selection-path",children:S||"No directory selected"})]}),(0,n.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,n.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-id-input",children:"Project ID"}),(0,n.jsx)("input",{id:"project-id-input",value:W,onChange:e=>U(e.target.value),className:"add-project-modal__selection-path"})]}),(0,n.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,n.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-name-input",children:"Project name"}),(0,n.jsx)("input",{id:"project-name-input",value:B,onChange:e=>F(e.target.value),className:"add-project-modal__selection-path"})]}),Y,(0,n.jsxs)("div",{className:"add-project-modal__footer",children:[(0,n.jsxs)("div",{className:"add-project-modal__foldercount",children:[K.length," folders"]}),(0,n.jsxs)("div",{className:"add-project-modal__actions",children:[(0,n.jsx)("button",{type:"button",onClick:r,className:"add-project-modal__ghostbtn",children:"Cancel"}),(0,n.jsx)("button",{type:"button",onClick:()=>void Z(),disabled:!q||i,className:"add-project-modal__primarybtn",children:i?"Adding…":"Add project"})]})]})]})})}var C=r(2749);function E(e){var t;let{open:r,projectId:s,onClose:a}=e,o=(0,l.useRef)(null),[i,c]=(0,l.useState)(!1),[d,u]=(0,l.useState)(null),[p,m]=(0,l.useState)(null);(0,l.useEffect)(()=>{var e;r&&s&&(null==(e=o.current)||e.focus())},[r,s]),(0,l.useEffect)(()=>{if(!r)return;let e=e=>{"Escape"===e.key&&(e.preventDefault(),a())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[r,a]),(0,l.useEffect)(()=>{if(!r||!s){m(null),u(null),c(!1);return}let e=!1;return c(!0),u(null),m(null),fetch("/api/projects/".concat(encodeURIComponent(s))).then(async t=>{let r=await t.json().catch(()=>null);if(!t.ok||!(null==r?void 0:r.project)||r.degraded){var n;throw Error(null!=(n=null==r?void 0:r.error)?n:"Failed to load project settings.")}e||m(r.project)}).catch(t=>{e||u(t instanceof Error?t.message:"Failed to load project settings.")}).finally(()=>{e||c(!1)}),()=>{e=!0}},[r,s]);let h=(0,l.useMemo)(()=>{var e,t,r,n,a,l,o,i,c;return p&&s?{agent:null!=(r=p.agent)?r:"",runtime:null!=(n=p.runtime)?n:"",trackerPlugin:null!=(a=null==(e=p.tracker)?void 0:e.plugin)?a:"",scmPlugin:null!=(l=null==(t=p.scm)?void 0:t.plugin)?l:"",reactions:JSON.stringify(null!=(o=p.reactions)?o:{},null,2),identity:{projectId:s,path:p.path,repo:null!=(i=p.repo)?i:"",defaultBranch:null!=(c=p.defaultBranch)?c:"main"}}:null},[p,s]);return r&&s?(0,n.jsx)("div",{className:"project-settings-modal-backdrop",onClick:a,children:(0,n.jsxs)("div",{ref:o,role:"dialog","aria-modal":"true","aria-label":"Project settings",className:"project-settings-modal",tabIndex:-1,onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("div",{className:"project-settings-modal__header",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"project-settings-modal__eyebrow",children:"Project settings"}),(0,n.jsx)("h2",{className:"project-settings-modal__title",children:null!=(t=null==p?void 0:p.name)?t:s})]}),(0,n.jsx)("button",{type:"button","aria-label":"Close",onClick:a,className:"project-settings-modal__close",children:"\xd7"})]}),(0,n.jsxs)("div",{className:"project-settings-modal__body",children:[i?(0,n.jsx)("div",{className:"project-settings-modal__state",children:"Loading project settings…"}):null,!i&&d?(0,n.jsx)("div",{role:"alert",className:"project-settings-modal__state project-settings-modal__state--error",children:d}):null,i||d||!h?null:(0,n.jsx)(C.ProjectSettingsForm,{projectId:s,initialValues:h})]})]})}):null}function P(e){let{level:t}=e;return(0,n.jsx)("div",{className:(0,i.cn)("sidebar-session-dot shrink-0 rounded-full","working"===t&&"sidebar-session-dot--glow"),"data-level":t})}let I="ao:sidebar:show-session-id";function M(){try{return"true"===window.localStorage.getItem(I)}catch(e){return!1}}let R={working:"working",pending:"pending",review:"review",respond:"respond",action:"action",merge:"merge",done:"done"};function T(e){return 0===e.projects.length?null:(0,n.jsx)(L,{...e})}function L(e){let{projects:t,sessions:r,orchestrators:s,activeProjectId:j,activeSessionId:f,loading:g=!1,error:v=!1,onRetry:b,collapsed:_=!1,onToggleCollapsed:x,onMobileClose:y}=e,N=(0,o.useRouter)(),w=g||null===r,[k,C]=(0,l.useState)(()=>new Set(j&&"all"!==j?[j]:[])),[T,L]=(0,l.useState)(!1),[D,A]=(0,l.useState)(!1),[O,W]=(0,l.useState)(M),[U,B]=(0,l.useState)(!1),[F,H]=(0,l.useState)(null),[K,G]=(0,l.useState)(null),[J,z]=(0,l.useState)(null),[V,$]=(0,l.useState)(new Set),[q,X]=(0,l.useState)(!1),Z=(0,l.useRef)(null),Q=(0,l.useRef)(null),Y=(0,l.useRef)(null),ee=(0,l.useRef)(null);p(U,Q),p(!!F,ee),(0,l.useEffect)(()=>{try{window.localStorage.setItem(I,String(O))}catch(e){}},[O]),(0,l.useEffect)(()=>{if(!U)return;let e=e=>{Z.current&&!Z.current.contains(e.target)&&B(!1)},t=e=>{"Escape"===e.key&&B(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[U]),(0,l.useEffect)(()=>{if(!F)return;let e=e=>{Y.current&&!Y.current.contains(e.target)&&H(null)},t=e=>{"Escape"===e.key&&H(null)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[F]),(0,l.useEffect)(()=>{j&&"all"!==j&&C(e=>new Set([...e,j]))},[j]),(0,l.useEffect)(()=>{$(e=>{if(0===e.size)return e;let r=new Set([...e].filter(e=>!t.some(t=>t.id===e)));return r.size===e.size?e:r})},[t]);let et=(0,l.useMemo)(()=>t.filter(e=>!V.has(e.id)),[t,V]),er=(0,l.useMemo)(()=>new Map(et.map(e=>{var t;return[e.id,null!=(t=e.sessionPrefix)?t:e.id]})),[et]),en=(0,l.useMemo)(()=>et.map(e=>{var t;return null!=(t=e.sessionPrefix)?t:e.id}),[et]),es=(0,l.useMemo)(()=>new Map((null!=s?s:[]).map(e=>[e.projectId,e])),[s]),ea=(0,l.useMemo)(()=>{let e=new Map,t=new Set(et.map(e=>e.id));for(let s of null!=r?r:[]){var n;if(!t.has(s.projectId)||(0,d.tT)(s,er.get(s.projectId),en)||"done"===(0,c.ng)(s)&&("killed"===s.status?!T&&!D:!D))continue;let r=null!=(n=e.get(s.projectId))?n:[];r.push(s),e.set(s.projectId,r)}return e},[r,er,en,et,T,D]),el=(e,t)=>{if(t)try{sessionStorage.setItem("ao-session-nav:".concat(t.id),JSON.stringify(t))}catch(e){}N.push(e),null==y||y()},eo=async e=>{if(window.confirm("Remove project ".concat(e.name," from AO? This clears its AO sessions/history and removes it from the portfolio, but keeps the repository folder on disk."))){z(e.id);try{let r=await fetch("/api/projects/".concat(encodeURIComponent(e.id)),{method:"DELETE"}),n=await r.json().catch(()=>null);if(!r.ok){var t;throw Error(null!=(t=n&&"object"==typeof n&&"error"in n&&"string"==typeof n.error?n.error:null)?t:"Failed to remove project.")}$(t=>new Set(t).add(e.id)),C(t=>{let r=new Set(t);return r.delete(e.id),r}),H(null),j===e.id?N.push("/"):"refresh"in N&&"function"==typeof N.refresh&&N.refresh(),null==y||y()}catch(e){window.alert(e instanceof Error?e.message:"Failed to remove project.")}finally{z(null)}}};return _?(0,n.jsx)("aside",{className:(0,i.cn)("project-sidebar project-sidebar--collapsed flex flex-col h-full items-center py-2 gap-1 overflow-y-auto"),children:et.map((e,t)=>{var r;let s=null!=(r=ea.get(e.id))?r:[],a=e.name.slice(0,2).toUpperCase();return(0,n.jsxs)("div",{className:"flex flex-col items-center gap-0.5 w-full px-1",children:[t>0&&(0,n.jsx)("div",{className:"project-sidebar__collapsed-divider","aria-hidden":"true"}),(0,n.jsx)("a",{href:(0,m.bn)(e.id),className:(0,i.cn)("project-sidebar__collapsed-icon",j===e.id&&"project-sidebar__collapsed-icon--active"),title:e.name,"aria-label":e.name,children:(0,n.jsx)("span",{className:"project-sidebar__collapsed-abbr",children:a})}),s.slice(0,5).map(t=>{var r;let s=(0,c.ng)(t),a=null!=(r=t.branch)?r:(0,u.Pn)(t),l=(t.branch&&(0,u.mC)(t.branch)||a).replace(/\s+/g,"").slice(0,3).toUpperCase(),o=f===t.id,d=(0,m.Nc)(e.id,t.id);return(0,n.jsxs)("a",{href:d,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),el(d,t))},className:(0,i.cn)("project-sidebar__collapsed-session-btn",o&&"project-sidebar__collapsed-session-btn--active"),"data-level":s,title:a,"aria-label":a,children:[(0,n.jsx)("span",{className:"project-sidebar__session-abbr-first",children:l[0]}),(0,n.jsx)("span",{className:"project-sidebar__session-abbr-rest",children:l.slice(1)})]},t.id)}),s.length>5&&(0,n.jsxs)("span",{className:"project-sidebar__collapsed-overflow",children:["+",s.length-5]})]},e.id)})}):(0,n.jsxs)("aside",{className:"project-sidebar flex h-full flex-col",children:[(0,n.jsxs)("div",{className:"project-sidebar__compact-hdr",children:[(0,n.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"}),(0,n.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>X(!0),children:(0,n.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),v&&r&&r.length>0?(0,n.jsxs)("div",{role:"status",className:"mx-3 mb-2 flex items-center justify-between gap-2 rounded-md border border-[var(--color-border-strong)] bg-[var(--color-bg-primary)] px-2 py-1.5 text-[11px] text-[var(--color-text-tertiary)]",children:[(0,n.jsx)("span",{children:"Failed to refresh \xb7 showing cached sessions"}),b?(0,n.jsx)("button",{type:"button",onClick:b,className:"font-medium text-[var(--color-link)] hover:underline",children:"Retry"}):null]}):null,(0,n.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:et.map(e=>{var t,r;let s=null!=(t=ea.get(e.id))?t:[],l=k.has(e.id),o=j===e.id,d=!!e.resolveError,p=(0,m.bn)(e.id),h=s.length>0,g=null!=(r=es.get(e.id))?r:null;return(0,n.jsxs)("div",{className:"project-sidebar__project",children:[(0,n.jsxs)("div",{className:"project-sidebar__proj-row flex items-center",children:[d?(0,n.jsxs)("a",{href:p,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),el(p))},className:(0,i.cn)("project-sidebar__proj-toggle project-sidebar__proj-toggle--link project-sidebar__proj-toggle--degraded",o&&"project-sidebar__proj-toggle--active"),"aria-current":o?"page":void 0,children:[(0,n.jsxs)("svg",{className:"project-sidebar__proj-chevron project-sidebar__proj-chevron--degraded",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M12 9v4"}),(0,n.jsx)("path",{d:"M12 17h.01"}),(0,n.jsx)("path",{d:"M10.3 3.86 1.82 18a2 2 0 0 0 1.72 3h16.92a2 2 0 0 0 1.72-3L13.7 3.86a2 2 0 0 0-3.4 0Z"})]}),(0,n.jsx)("span",{className:"project-sidebar__proj-name",children:e.name}),(0,n.jsx)("span",{className:"project-sidebar__proj-badge project-sidebar__proj-badge--degraded",children:"degraded"})]}):(0,n.jsxs)("button",{type:"button",onClick:()=>{var t;return t=e.id,void C(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:(0,i.cn)("project-sidebar__proj-toggle",o&&"project-sidebar__proj-toggle--active"),"aria-expanded":l,"aria-current":o?"page":void 0,children:[(0,n.jsx)("svg",{className:(0,i.cn)("project-sidebar__proj-chevron",l&&"project-sidebar__proj-chevron--open"),width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,n.jsx)("span",{className:"project-sidebar__proj-name",children:e.name}),(0,n.jsx)("span",{className:(0,i.cn)("project-sidebar__proj-badge",h&&"project-sidebar__proj-badge--active"),children:s.length})]}),d?null:(0,n.jsx)(a(),{href:p,onClick:e=>{e.stopPropagation(),null==y||y()},className:"project-sidebar__proj-action","aria-label":"Open ".concat(e.name," dashboard"),title:"Dashboard",children:(0,n.jsx)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})})}),!d&&g&&(0,n.jsx)(a(),{href:(0,m.Nc)(e.id,g.id),onClick:e=>{e.stopPropagation(),null==y||y()},className:"project-sidebar__proj-action","aria-label":"Open ".concat(e.name," orchestrator"),title:"Orchestrator",children:(0,n.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,n.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,n.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,n.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,n.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,n.jsx)("circle",{cx:"18",cy:"17",r:"2"})]})}),(0,n.jsxs)("div",{className:"project-sidebar__proj-menu",ref:F===e.id?Y:void 0,children:[(0,n.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),H(t=>t===e.id?null:e.id)},className:"project-sidebar__proj-action project-sidebar__proj-action--menu","aria-label":"Project actions for ".concat(e.name),"aria-expanded":F===e.id,"aria-haspopup":"menu",title:"Project actions",children:(0,n.jsxs)("svg",{width:"12",height:"12",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"5",r:"1.75"}),(0,n.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,n.jsx)("circle",{cx:"12",cy:"19",r:"1.75"})]})}),F===e.id?(0,n.jsxs)("div",{ref:ee,className:"project-sidebar__proj-menu-popover",role:"menu","aria-label":"".concat(e.name," actions"),children:[g?(0,n.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{H(null),el((0,m.Nc)(e.id,g.id))},children:"Open orchestrator"}):null,(0,n.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{H(null),G(e.id)},children:"Project settings"}),(0,n.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item project-sidebar__proj-menu-item--danger",role:"menuitem",onClick:()=>void eo(e),disabled:J===e.id,children:J===e.id?"Removing...":"Remove project"})]}):null]})]}),d?(0,n.jsx)("div",{className:"project-sidebar__degraded-note",children:"Config needs repair"}):null,!d&&l&&(0,n.jsx)("div",{className:"project-sidebar__sessions",children:w?(0,n.jsx)("div",{className:"space-y-2 px-3 py-2","aria-label":"Loading sessions",children:Array.from({length:3},(t,r)=>(0,n.jsxs)("div",{className:"flex items-center gap-3 border border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)] px-2 py-2",children:[(0,n.jsx)("div",{className:"h-2 w-2 shrink-0 animate-pulse bg-[var(--color-border-strong)]"}),(0,n.jsx)("div",{className:"h-3 flex-1 animate-pulse bg-[var(--color-bg-primary)]"}),(0,n.jsx)("div",{className:"h-3 w-12 animate-pulse bg-[var(--color-bg-primary)]"})]},"".concat(e.id,"-loading-").concat(r)))}):s.length>0?s.map(t=>{var r;let s=(0,c.ng)(t),a=f===t.id,l=null!=(r=t.branch)?r:(0,u.Pn)(t),o=(0,m.Nc)(e.id,t.id);return(0,n.jsxs)("a",{href:o,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),el(o,t))},className:(0,i.cn)("project-sidebar__sess-row",a&&"project-sidebar__sess-row--active"),"aria-current":a?"page":void 0,"aria-label":"Open ".concat(l),children:[(0,n.jsx)(P,{level:s}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsx)("span",{className:(0,i.cn)("project-sidebar__sess-label",a&&"project-sidebar__sess-label--active"),children:l}),O?(0,n.jsxs)("div",{className:"project-sidebar__sess-meta",children:[(0,n.jsx)("span",{className:"project-sidebar__sess-id",children:t.id}),(0,n.jsx)("span",{className:"project-sidebar__sess-status",children:R[s]})]}):null]}),O?null:(0,n.jsx)("span",{className:"project-sidebar__sess-status project-sidebar__sess-status--inline",children:R[s]})]},t.id)}):v?(0,n.jsxs)("div",{className:"px-3 py-2",children:[(0,n.jsx)("div",{className:"project-sidebar__empty",children:"Failed to load sessions"}),(0,n.jsx)("button",{type:"button",className:"mt-2 text-xs font-medium text-[var(--color-link)] hover:underline",onClick:b,children:"Retry"})]}):(0,n.jsx)("div",{className:"project-sidebar__empty",children:"No sessions shown"})})]},e.id)})}),(0,n.jsx)("div",{className:"project-sidebar__footer",children:(0,n.jsxs)("div",{className:"flex items-center gap-1 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,n.jsx)("button",{type:"button",onClick:()=>L(!T),className:(0,i.cn)("project-sidebar__footer-btn",T&&"project-sidebar__footer-btn--active"),"aria-pressed":T,title:T?"Hide killed sessions":"Show killed sessions","aria-label":T?"Hide killed sessions":"Show killed sessions",children:(0,n.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M12 3C7.03 3 3 7.03 3 12c0 3.1 1.5 5.84 3.8 7.55V21h2.4v-1h1.6v1h2.4v-1h1.6v1H17v-1.45A9 9 0 0 0 21 12c0-4.97-4.03-9-9-9z"}),(0,n.jsx)("circle",{cx:"9",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"}),(0,n.jsx)("circle",{cx:"15",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"})]})}),(0,n.jsx)("button",{type:"button",onClick:()=>A(!D),className:(0,i.cn)("project-sidebar__footer-btn",D&&"project-sidebar__footer-btn--active"),"aria-pressed":D,title:D?"Hide completed sessions":"Show completed sessions","aria-label":D?"Hide completed sessions":"Show completed sessions",children:(0,n.jsx)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M20 6 9 17l-5-5"})})}),(0,n.jsx)("div",{className:"flex-1"}),(0,n.jsxs)("div",{className:"project-sidebar__settings-wrap",ref:Z,children:[(0,n.jsx)("button",{type:"button",onClick:()=>B(e=>!e),className:(0,i.cn)("project-sidebar__footer-btn",U&&"project-sidebar__footer-btn--active"),"aria-expanded":U,"aria-haspopup":"dialog",title:"Sidebar settings","aria-label":"Sidebar settings",children:(0,n.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,n.jsx)("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]})}),U?(0,n.jsx)("div",{ref:Q,className:"project-sidebar__settings-popover",role:"dialog","aria-label":"Sidebar settings",children:(0,n.jsxs)("label",{className:"project-sidebar__settings-row",children:[(0,n.jsx)("input",{type:"checkbox",checked:O,onChange:e=>W(e.target.checked)}),(0,n.jsx)("span",{children:"Show session ID"})]})}):null]}),(0,n.jsx)(h.U,{className:"project-sidebar__theme-toggle"})]})}),(0,n.jsx)(S,{open:q,onClose:()=>X(!1)}),(0,n.jsx)(E,{open:null!==K,projectId:K,onClose:()=>G(null)})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4465],{2466:(e,s,r)=>{r.d(s,{I:()=>a});let a=(0,r(6749).createContext)(null)},4465:(e,s,r)=>{r.d(s,{Dashboard:()=>O});var a=r(3817),t=r(6749),n=r(8713),o=r.n(n),l=r(7594),i=r(9120),c=r(545),d=r(4901),h=r(7387),u=r(4906),x=r(1237),p=r(8450);let m=new Set,v=(0,t.memo)(function(e){var s,r,n,o,l,i;let{session:v,onSend:g,onKill:b,onMerge:j,onRestore:f}=e,[k,_]=(0,t.useState)(!1),[N,w]=(0,t.useState)(null),[y,C]=(0,t.useState)(null),[M,S]=(0,t.useState)(null),[P,R]=(0,t.useState)(null),[W,I]=(0,t.useState)(!1),[T,A]=(0,t.useState)(""),B=(0,t.useRef)(null),D=(0,t.useRef)(null),[O]=(0,t.useState)(()=>m.has(v.id));(0,t.useEffect)(()=>{if(O)return;let e=window.requestAnimationFrame(()=>{m.add(v.id)});return()=>{window.cancelAnimationFrame(e)}},[O,v.id]);let F=(0,c.ng)(v),L=v.pr,E=async e=>{let s=e.trim();if(!s||null!==M)return!1;S(s),R(null);try{return await Promise.resolve(null==g?void 0:g(v.id,s)),R(s),D.current&&clearTimeout(D.current),D.current=setTimeout(()=>R(null),2e3),!0}catch(e){return!1}finally{S(null)}},H=async e=>{"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),await E(T)&&A(""))};(0,t.useEffect)(()=>()=>{B.current&&clearTimeout(B.current),D.current&&clearTimeout(D.current)},[]);let K=async(e,s)=>{if(null===N){w(e),C(null);try{await Promise.resolve(null==g?void 0:g(v.id,s)),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>w(null),2e3)}catch(s){w(null),C(e),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>C(null),2e3)}}},Z=!!L&&(0,c.fZ)(L),q=!!L&&(0,c.sZ)(L),U=function(e){var s,r,t,n,o;let l=e.pr;if(!l||"open"!==l.state||(0,c.fZ)(l)||(0,c.sZ)(l))return[];let i=e.metadata,d=[],h=null!=(r=null==(s=e.lifecycle)?void 0:s.prReason)?r:null,u=i.status,x=l.ciStatus===c.U1.FAILING||"ci_failing"===h||"ci_failed"===u,p="changes_requested"===l.reviewDecision||"changes_requested"===h||"changes_requested"===u,m=!l.mergeability.noConflicts;if(x){let e=l.ciChecks.find(e=>"failed"===e.status),s=l.ciChecks.filter(e=>"failed"===e.status).length;0===s&&l.ciStatus!==c.U1.FAILING?d.push({key:"ci-fail",type:"ci",icon:"✗",label:"CI failing",url:l.url+"/checks",notified:!!i.lastCIFailureDispatchHash,actionLabel:"Ask to fix",actionMessage:"Please fix the failing CI checks on ".concat(l.url)}):0===s?d.push({key:"ci-unknown",type:"ci",icon:"?",label:"CI unknown",url:l.url+"/checks"}):d.push({key:"ci-fail",type:"ci",icon:"✗",count:s,label:"check".concat(s>1?"s":""," failing"),url:null!=(t=null==e?void 0:e.url)?t:l.url+"/checks",notified:!!i.lastCIFailureDispatchHash,actionLabel:"Ask to fix",actionMessage:"Please fix the failing CI checks on ".concat(l.url)})}if(p?d.push({key:"changes",type:"changes",icon:"↻",label:"changes requested",url:l.url,notified:!!i.lastPendingReviewDispatchHash,actionLabel:"Ask to address",actionMessage:"Please address the requested changes on ".concat(l.url)}):l.isDraft||"pending"!==l.reviewDecision&&"none"!==l.reviewDecision||d.push({key:"review",type:"review",icon:(0,a.jsxs)("svg",{width:"9",height:"9",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),(0,a.jsx)("circle",{cx:"9",cy:"7",r:"4"}),(0,a.jsx)("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75"})]}),label:"needs review",url:l.url,actionLabel:"Ask to post",actionMessage:"Post ".concat(l.url," on slack asking for a review.")}),m&&d.push({key:"conflict",type:"conflict",icon:"⚠",label:"merge conflict",url:l.url,notified:"true"===i.lastMergeConflictDispatched,actionLabel:"Ask to fix",actionMessage:"Please resolve the merge conflicts on ".concat(l.url," by rebasing on the base branch")}),l.unresolvedThreads>0){let e=null!=(o=null==(n=l.unresolvedComments[0])?void 0:n.url)?o:l.url+"/files";d.push({key:"comments",type:"comment",icon:"\uD83D\uDCAC",label:"unresolved comments",count:l.unresolvedThreads,url:e,actionLabel:"Ask to resolve",actionMessage:"Please address all unresolved review comments on ".concat(l.url)})}return d}(v),z=!Z&&(null==L?void 0:L.mergeability.mergeable)&&"open"===L.state,V=(0,c.nH)(v),G=(0,c.wy)(v),J=(0,h.Pn)(v),Q=(n=v,o=F,z||"merge"===o?"mergeable":(null==(l=n.lifecycle)?void 0:l.sessionState)==="detecting"?"detecting":"respond"===o?(0,c.Ou)(n):(null==(i=n.lifecycle)?void 0:i.prReason)==="ci_failing"||"ci_failed"===n.status?"ci failing":"review"===o?(0,c.of)(n):(0,c.Ou)(n)),$=Z||!L||q?[]:L.ciChecks.filter(e=>"passed"===e.status).slice(0,3),X=(0,c.dG)(v)||"done"===F,Y=v.lifecycle?["Session ".concat((0,c.Ou)(v)),"PR ".concat((0,c.of)(v)),"Runtime ".concat((0,c.Kw)(v))].join(" \xb7 "):null,ee=v.issueLabel?"".concat(v.issueLabel).concat(v.issueTitle?" \xb7 ".concat(v.issueTitle):""):null!=(s=v.issueTitle)?s:v.summary&&v.summary!==J?v.summary:null,es=z?"session-card--merge-frame":U.length>0?"session-card--alert-frame":"session-card--fixed",er=z?"session-card--accent-merge":"working"===F?"session-card--accent-working":"respond"===F?"session-card--accent-respond":"review"===F||"pending"===F?"session-card--accent-attention":"session-card--accent-default";if(X){let e=function(e){var s,r,t,n;let o=e.activity,l=e.status,i=null!=(n=null==(s=e.lifecycle)?void 0:s.prState)?n:null==(r=e.pr)?void 0:r.state;return"merged"===i||"merged"===l?{label:"merged",pillClass:"done-status-pill--merged",icon:(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",className:"h-3 w-3",children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})})}:"closed"===i?{label:"closed",pillClass:"done-status-pill--exited",icon:(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("path",{d:"M9 12h6"})]})}:(null==(t=e.lifecycle)?void 0:t.sessionState)==="terminated"||"killed"===l||"terminated"===l?{label:(0,c.Ou)(e),pillClass:"done-status-pill--killed",icon:(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",className:"h-3 w-3",children:(0,a.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})}:{label:"exited"===o?"exited":(0,c.Ou)(e),pillClass:"done-status-pill--exited",icon:(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("path",{d:"M9 12h6"})]})}}(v);return(0,a.jsxs)("div",{className:(0,d.cn)("session-card-done",k&&"done-expanded"),onClick:e=>{e.target.closest("a, button, textarea")||_(!k)},children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3.5 pt-3 pb-1.5",children:[(0,a.jsxs)("span",{className:(0,d.cn)("done-status-pill",e.pillClass),children:[e.icon,e.label]}),(0,a.jsx)("span",{className:"font-[var(--font-mono)] text-[10px] tracking-wide text-[var(--color-text-muted)]",children:v.id}),(0,a.jsx)("div",{className:"flex-1"}),G&&(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),null==f||f(v.id)},className:"done-restore-btn",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-3 w-3",children:[(0,a.jsx)("polyline",{points:"1 4 1 10 7 10"}),(0,a.jsx)("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})]}),"restore"]})]}),(0,a.jsx)("div",{className:"px-3.5 pb-2",children:(0,a.jsx)("p",{className:"session-card-done__title text-[13px] font-semibold leading-snug [display:-webkit-box] [-webkit-box-orient:vertical] [-webkit-line-clamp:2] overflow-hidden",children:J})}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 px-3.5 pb-3",children:[v.branch&&(0,a.jsxs)("span",{className:"done-meta-chip font-[var(--font-mono)]",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",className:"h-2.5 w-2.5 opacity-50",children:[(0,a.jsx)("path",{d:"M6 3v12M18 9a3 3 0 0 1-3 3H9a3 3 0 0 0-3 3"}),(0,a.jsx)("circle",{cx:"18",cy:"6",r:"3"})]}),v.branch]}),L&&(0,a.jsxs)("a",{href:L.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"done-meta-chip font-[var(--font-mono)] font-bold text-[var(--color-text-primary)] no-underline underline-offset-2 hover:underline",children:["#",L.number]}),L&&!Z&&(q?(0,a.jsx)("span",{className:"inline-block h-[14px] w-16 animate-pulse rounded-full bg-[var(--color-bg-subtle)]"}):(0,a.jsxs)("span",{className:"done-meta-chip font-[var(--font-mono)]",children:[(0,a.jsxs)("span",{className:"text-[var(--color-status-ready)]",children:["+",L.additions]})," ",(0,a.jsxs)("span",{className:"text-[var(--color-status-error)]",children:["-",L.deletions]})," ",(0,x.i_)(L.additions,L.deletions),(0,a.jsx)("span",{className:"sr-only",children:"+".concat(L.additions," -").concat(L.deletions," ").concat((0,x.i_)(L.additions,L.deletions))})]})),(0,a.jsx)("a",{href:(0,p.Nc)(v.projectId,v.id),onClick:e=>e.stopPropagation(),className:"done-meta-chip font-[var(--font-mono)] font-semibold text-[var(--color-accent)] no-underline hover:underline",children:"View current context"})]}),k&&(0,a.jsxs)("div",{className:"done-expand-section px-3.5 py-3",children:[v.summary&&(null==L?void 0:L.title)&&v.summary!==L.title&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M4 6h16M4 12h16M4 18h10"})}),"Summary"]}),(0,a.jsx)("p",{className:"text-[12px] leading-relaxed text-[var(--color-text-secondary)]",children:v.summary})]}),v.issueUrl&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("path",{d:"M12 8v4M12 16h.01"})]}),"Issue"]}),(0,a.jsxs)("a",{href:v.issueUrl,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"text-[12px] text-[var(--color-accent)] hover:underline",children:[v.issueLabel||v.issueUrl,v.issueTitle&&": ".concat(v.issueTitle)]})]}),L&&L.ciChecks.length>0&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M9 12l2 2 4-4"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"})]}),"CI Checks"]}),(0,a.jsx)(u.zm,{checks:L.ciChecks})]}),L&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("div",{className:"done-detail-heading",children:[(0,a.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4"}),(0,a.jsx)("path",{d:"M9 18c-4.51 2-5-2-7-2"})]}),"PR"]}),(0,a.jsxs)("p",{className:"text-[12px] text-[var(--color-text-secondary)]",children:[(0,a.jsx)("a",{href:L.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"hover:underline",children:L.title}),q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),(0,a.jsxs)("span",{className:"mt-1 inline-flex items-center gap-2 text-[10px] text-[var(--color-text-muted)]",children:[(0,a.jsx)("span",{className:"inline-block h-3 w-12 animate-pulse rounded bg-[var(--color-bg-subtle)]"}),(0,a.jsx)("span",{children:"PR details loading..."})]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),(0,a.jsxs)("span",{className:"mt-1 inline-flex items-center gap-2",children:[(0,a.jsxs)("span",{className:"done-meta-chip font-[var(--font-mono)]",children:[(0,a.jsxs)("span",{className:"text-[var(--color-status-ready)]",children:["+",L.additions]})," ",(0,a.jsxs)("span",{className:"text-[var(--color-status-error)]",children:["-",L.deletions]})]}),(0,a.jsx)("span",{className:"text-[var(--color-text-muted)]",children:"\xb7"}),(0,a.jsxs)("span",{className:"text-[10px] text-[var(--color-text-muted)]",children:["mergeable: ",L.mergeability.mergeable?"yes":"no"]}),(0,a.jsx)("span",{className:"text-[var(--color-text-muted)]",children:"\xb7"}),(0,a.jsxs)("span",{className:"text-[10px] text-[var(--color-text-muted)]",children:["review: ",L.reviewDecision]})]})]})]})]}),!L&&(0,a.jsx)("p",{className:"text-[12px] text-[var(--color-text-tertiary)]",children:"No PR associated with this session."})]})]})}let ea=V?"exited":z||"merge"===F||"review"===F?"ready":"respond"===F?"waiting":"pending"===F?"idle":"working"===F?"working":"idle";return(0,a.jsxs)("div",{className:(0,d.cn)("session-card border",!O&&"kanban-card-enter",es,er,z&&"card-merge-ready"),children:[(0,a.jsxs)("div",{className:"session-card__header",children:[(0,a.jsx)("span",{className:(0,d.cn)("card__adot","working"===ea&&"card__adot--working","ready"===ea&&"card__adot--ready","idle"===ea&&"card__adot--idle","waiting"===ea&&"card__adot--waiting","exited"===ea&&"card__adot--exited")}),(0,a.jsx)("span",{className:"card__id",children:v.id}),(0,a.jsx)("div",{className:"flex-1"}),G&&(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),null==f||f(v.id)},className:"session-card__control session-card__restore-control",children:[(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M20 11a8 8 0 0 0-14.9-3.98"}),(0,a.jsx)("path",{d:"M4 5v4h4"}),(0,a.jsx)("path",{d:"M4 13a8 8 0 0 0 14.9 3.98"}),(0,a.jsx)("path",{d:"M20 19v-4h-4"})]}),"restore"]}),!V&&(0,a.jsxs)("a",{href:(0,p.$l)(v.projectId,v.id,"#session-terminal-section"),onClick:e=>e.stopPropagation(),className:"session-card__control session-card__terminal-link",children:[(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2"}),(0,a.jsx)("path",{d:"M6 10l4 2-4 2"}),(0,a.jsx)("path",{d:"M14 14h4"})]}),"terminal"]})]}),(0,a.jsxs)("div",{className:"session-card__body flex min-h-0 flex-1 flex-col",children:[(0,a.jsx)("div",{className:"card__title-wrap",children:(0,a.jsx)("p",{className:"card__title",children:J})}),(0,a.jsxs)("div",{className:"card__meta",children:[v.branch&&(0,a.jsx)("span",{className:"card__branch",children:v.branch}),v.branch&&L?(0,a.jsx)("span",{className:"card__meta-sep","aria-hidden":"true",children:"\xb7"}):null,L&&(0,a.jsxs)("a",{href:L.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"card__pr",children:["#",L.number]}),L&&!Z&&(q?(0,a.jsx)("span",{className:"inline-block h-[14px] w-16 animate-pulse rounded-full bg-[var(--color-bg-subtle)]"}):(0,a.jsxs)("span",{className:"card__diff inline-flex items-center",children:[(0,a.jsxs)("span",{className:"card__diff-add",children:["+",L.additions]})," ",(0,a.jsxs)("span",{className:"card__diff-del",children:["-",L.deletions]})," ",(0,a.jsx)("span",{className:"card__diff-size",children:(0,x.i_)(L.additions,L.deletions)}),(0,a.jsx)("span",{className:"sr-only",children:"+".concat(L.additions," -").concat(L.deletions," ").concat((0,x.i_)(L.additions,L.deletions))})]}))]}),ee&&(0,a.jsx)("div",{className:"px-[10px] pb-[5px]",children:"merge"===F||z?(0,a.jsxs)("p",{className:"session-card__secondary session-card__secondary--merge",children:[(0,a.jsx)("svg",{width:"9",height:"9",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})}),(0,a.jsx)("span",{children:ee})]}):(0,a.jsx)("p",{className:"session-card__secondary",children:ee})}),Y&&(0,a.jsx)("div",{className:"px-[10px] pb-[5px]",children:(0,a.jsx)("p",{className:"text-[10px] leading-relaxed text-[var(--color-text-tertiary)]",children:Y})}),Z&&(null==L?void 0:L.state)==="open"&&(0,a.jsx)("div",{className:"px-[10px] pb-[5px]",children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10px] text-[var(--color-text-muted)]",children:[(0,a.jsxs)("svg",{className:"h-3 w-3 text-[var(--color-text-tertiary)]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("path",{d:"M12 8v4M12 16h.01"})]}),"PR data rate limited"]})}),$.length>0&&(0,a.jsx)("div",{className:"card__ci",children:$.map(e=>{let s=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("svg",{width:"8",height:"8",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})}),e.name]});return e.url?(0,a.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"ci-chip ci-chip--pass",onClick:e=>e.stopPropagation(),children:s},e.name):(0,a.jsx)("span",{className:"ci-chip ci-chip--pass",children:s},e.name)})}),!Z&&U.length>0&&(0,a.jsx)("div",{className:"card__alerts flex flex-col",children:U.slice(0,3).map(e=>(0,a.jsxs)("div",{className:(0,d.cn)("alert-row","alert-row--".concat(e.type)),children:[(0,a.jsx)("span",{className:"alert-row__icon",children:e.icon}),(0,a.jsxs)("span",{className:"alert-row__text",children:[(0,a.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:[void 0!==e.count&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"font-bold",children:e.count})," "]}),e.label]}),e.notified&&(0,a.jsxs)("span",{className:"alert-row__notified",title:"Agent has been notified",children:[" ","\xb7 notified"]})]}),e.actionLabel&&(0,a.jsx)("button",{onClick:s=>{var r;s.stopPropagation(),K(e.key,null!=(r=e.actionMessage)?r:"")},disabled:N===e.key,className:"alert-row__action",children:N===e.key?"sent!":y===e.key?"failed":e.actionLabel})]},e.key))}),"respond"===F&&(0,a.jsxs)("div",{className:"quick-reply",onClick:e=>e.stopPropagation(),children:[v.summary&&!v.summaryIsFallback&&(0,a.jsxs)("div",{className:"card__agent-msg",children:[(0,a.jsx)("svg",{className:"card__agent-msg-icon",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})}),(0,a.jsx)("span",{children:v.summary})]}),(0,a.jsx)("a",{href:(0,p.Nc)(v.projectId,v.id),onClick:e=>e.stopPropagation(),className:"card__view-context",children:"View current context →"}),!V&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"card__presets",children:[(0,a.jsx)("button",{className:"card__preset",onClick:()=>void E("continue"),disabled:null!==M,children:"continue"===M?"Sending...":"continue"===P?"Sent":"Continue"}),(0,a.jsx)("button",{className:"card__preset",onClick:()=>void E("abort"),disabled:null!==M,children:"abort"===M?"Sending...":"abort"===P?"Sent":"Abort"}),(0,a.jsx)("button",{className:"card__preset",onClick:()=>void E("skip"),disabled:null!==M,children:"skip"===M?"Sending...":"skip"===P?"Sent":"Skip"})]}),(0,a.jsx)("div",{className:"card__reply-wrap",children:(0,a.jsx)("textarea",{className:"card__reply",placeholder:null!==M?"Sending...":"Type a reply... (Enter to send)","aria-label":"Type a reply to the agent",value:T,onChange:e=>A(e.target.value),onKeyDown:e=>{H(e)},rows:1,disabled:null!==M})})]})]}),(0,a.jsxs)("div",{className:"session-card__footer",children:[(0,a.jsx)("span",{className:"card__status min-w-0 truncate",title:null!=(r=v.userPrompt)?r:void 0,children:!v.issueUrl&&v.userPrompt?v.userPrompt.length>60?v.userPrompt.slice(0,60)+"…":v.userPrompt:Q}),z&&L?(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),null==j||j(L.number)},className:"session-card__control session-card__merge-control",children:[(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"6",cy:"6",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"18",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"6",r:"2"}),(0,a.jsx)("path",{d:"M8 6h5a3 3 0 0 1 3 3v7"})]}),"Merge PR #",L.number]}):!V&&(0,a.jsx)("button",{onClick:e=>{if(e.stopPropagation(),!W)return void I(!0);I(!1),null==b||b(v.id)},onMouseLeave:()=>I(!1),onBlur:()=>I(!1),"aria-label":W?"Confirm terminate session":"Terminate session",className:(0,d.cn)("session-card__control session-card__terminate btn--danger",W&&"is-confirming"),children:W?(0,a.jsx)("span",{className:"font-mono text-[10px] font-semibold tracking-[0.04em]",children:"kill?"}):(0,a.jsxs)("svg",{className:"session-card__control-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("path",{d:"M3 6h18"}),(0,a.jsx)("path",{d:"M8 6V4h8v2"}),(0,a.jsx)("path",{d:"M19 6l-1 14H6L5 6"})]})})]})]})]})},function(e,s){return e.session===s.session&&e.onSend===s.onSend&&e.onKill===s.onKill&&e.onMerge===s.onMerge&&e.onRestore===s.onRestore}),g={merge:{label:"Ready",emptyMessage:"Nothing cleared to land yet."},action:{label:"Action",emptyMessage:"No agents need your input."},respond:{label:"Respond",emptyMessage:"No agents need your input."},review:{label:"Review",emptyMessage:"No code waiting for review."},pending:{label:"Pending",emptyMessage:"Nothing blocked."},working:{label:"Working",emptyMessage:"No agents running."},done:{label:"Done",emptyMessage:"No completed sessions."}},b=(0,t.memo)(function(e){let{level:s,sessions:r,onSend:n,onKill:o,onMerge:l,onRestore:i,collapsed:c,onToggle:d,compactMobile:h,onPreview:u,resetKey:x}=e,p=g[s],m=void 0!==d,[b,f]=(0,t.useState)(!1),k=m&&h&&!b?r.slice(0,5):r,_=r.length-k.length;return((0,t.useEffect)(()=>{c&&f(!1)},[c]),(0,t.useEffect)(()=>{f(!1)},[x]),m)?(0,a.jsxs)("div",{className:"accordion-section".concat(c?" accordion-section--collapsed":" accordion-section--expanded"),"data-level":s,children:[(0,a.jsxs)("button",{type:"button",className:"accordion-header",onClick:()=>d(s),"aria-expanded":!c,"aria-controls":"accordion-body-".concat(s),children:[(0,a.jsx)("span",{className:"accordion-header__dot","data-level":s}),(0,a.jsx)("span",{className:"accordion-header__label",children:p.label}),(0,a.jsx)("span",{className:"accordion-header__count",children:r.length}),(0,a.jsx)("span",{className:"accordion-header__chevron","aria-hidden":"true",children:"▶"})]}),(0,a.jsx)("div",{id:"accordion-body-".concat(s),className:"accordion-body",children:r.length>0?(0,a.jsxs)("div",{className:h?"mobile-session-list":"flex flex-col gap-2 p-3",children:[k.map(e=>h?(0,a.jsx)(j,{session:e,level:s,onPreview:u},e.id):(0,a.jsx)(v,{session:e,onSend:n,onKill:o,onMerge:l,onRestore:i},e.id)),h&&_>0?(0,a.jsxs)("button",{type:"button",className:"mobile-session-list__view-all",onClick:()=>f(!0),children:["View all ",r.length]}):null]}):h?(0,a.jsx)("div",{className:"mobile-session-list",children:(0,a.jsx)("div",{className:"mobile-session-list__empty",children:p.emptyMessage})}):null})]}):(0,a.jsxs)("div",{className:"kanban-column","data-level":s,children:[(0,a.jsx)("div",{className:"kanban-column__header",children:(0,a.jsxs)("div",{className:"kanban-column__title-row",children:[(0,a.jsx)("div",{className:"kanban-column__dot","data-level":s}),(0,a.jsx)("span",{className:"kanban-column__title",children:p.label}),(0,a.jsx)("span",{className:"kanban-column__count",children:r.length})]})}),(0,a.jsx)("div",{className:"kanban-column-body",children:r.length>0?(0,a.jsx)("div",{className:"kanban-column__stack",children:r.map(e=>(0,a.jsx)(v,{session:e,onSend:n,onKill:o,onMerge:l,onRestore:i},e.id))}):null})]})},function(e,s){return e.level===s.level&&e.collapsed===s.collapsed&&e.onToggle===s.onToggle&&e.onSend===s.onSend&&e.onKill===s.onKill&&e.onMerge===s.onMerge&&e.onRestore===s.onRestore&&e.compactMobile===s.compactMobile&&e.onPreview===s.onPreview&&e.resetKey===s.resetKey&&e.sessions.length===s.sessions.length&&e.sessions.every((e,r)=>e===s.sessions[r])});function j(e){let{session:s,level:r,onPreview:t}=e,n=[s.branch,s.pr?"PR #".concat(s.pr.number):null,s.issueLabel].filter(Boolean);return(0,a.jsxs)("div",{className:"mobile-session-row",children:[(0,a.jsxs)("button",{type:"button",className:"mobile-session-row__preview",onClick:()=>null==t?void 0:t(s),"aria-label":"Open ".concat((0,h.Pn)(s)),children:[(0,a.jsxs)("div",{className:"mobile-session-row__line",children:[(0,a.jsx)("span",{className:"mobile-session-row__dot","data-level":r,"aria-hidden":"true"}),(0,a.jsx)("span",{className:"mobile-session-row__title",children:(0,h.Pn)(s)})]}),(0,a.jsx)("div",{className:"mobile-session-row__meta",children:n.length>0?n.join(" \xb7 "):"No branch or PR metadata"})]}),(0,a.jsxs)("div",{className:"mobile-session-row__side",children:[(0,a.jsx)(f,{session:s,level:r}),(0,a.jsx)("a",{href:(0,p.Nc)(s.projectId,s.id),className:"mobile-session-row__open","aria-label":"Go to ".concat((0,h.Pn)(s)),children:(0,a.jsxs)("svg",{className:"mobile-session-row__open-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M4 17V7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z"}),(0,a.jsx)("path",{d:"m8 10 2 2-2 2M12 14h4"})]})})]})]})}function f(e){var s,r,t,n;let{session:o,level:l}=e,i=g[l].label.toLowerCase();return"merge"===l&&o.pr&&(0,c.QN)(o.pr)?i="ready":"action"===l?i="needs_input"===o.status?"needs input":"stuck"===o.status?"stuck":"errored"===o.status?"errored":"waiting_input"===o.activity?"waiting":"exited"===o.activity?"crashed":"blocked"===o.activity?"blocked":"ci_failed"===o.status?"ci failed":"changes_requested"===o.status?"changes":(null==(t=o.pr)?void 0:t.ciStatus)==="failing"?"ci failed":(null==(n=o.pr)?void 0:n.reviewDecision)==="changes_requested"?"changes":o.pr&&!o.pr.mergeability.noConflicts?"conflicts":"action":"respond"===l?i="waiting_input"===o.activity?"waiting":"needs input":"review"===l?i=(null==(s=o.pr)?void 0:s.reviewDecision)==="changes_requested"?"changes":"review":"pending"===l?i=(null==(r=o.pr)?void 0:r.unresolvedThreads)?"threads":"pending":"working"===l&&(i="idle"===o.activity?"idle":"active"),(0,a.jsx)("span",{className:"mobile-session-row__chip",children:i})}var k=r(7848),_=r(5309),N=r(5184),w=r(9293);let y=["Working","Pending","Review","Respond","Merge"];function C(e){let{message:s,orchestratorHref:r,onSpawnOrchestrator:t=null,spawnLabel:n="Spawn Orchestrator",spawnDisabled:o=!1}=e;return(0,a.jsxs)("div",{className:"board-wrapper",children:[(0,a.jsx)("div",{className:"kanban-ghost","aria-hidden":"true",children:y.map(e=>(0,a.jsx)("div",{className:"kanban-ghost__col",children:(0,a.jsx)("div",{className:"kanban-ghost__head",children:e})},e))}),(0,a.jsx)("div",{className:"board-center",children:(0,a.jsxs)("div",{className:"empty-state",role:"status",children:[(0,a.jsx)("div",{className:"empty-state__icon",children:(0,a.jsxs)("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5.5",r:"2.5",fill:"rgba(249,115,22,0.18)",stroke:"#f97316",strokeWidth:"1.5"}),(0,a.jsx)("circle",{cx:"5.5",cy:"17",r:"2.5",fill:"var(--color-bg-subtle)",stroke:"var(--color-border-strong)",strokeWidth:"1.5"}),(0,a.jsx)("circle",{cx:"18.5",cy:"17",r:"2.5",fill:"var(--color-bg-subtle)",stroke:"var(--color-border-strong)",strokeWidth:"1.5"}),(0,a.jsx)("line",{x1:"12",y1:"8",x2:"6.7",y2:"14.8",stroke:"rgba(249,115,22,0.22)",strokeWidth:"1",strokeDasharray:"2.5 2"}),(0,a.jsx)("line",{x1:"12",y1:"8",x2:"17.3",y2:"14.8",stroke:"rgba(249,115,22,0.22)",strokeWidth:"1",strokeDasharray:"2.5 2"}),(0,a.jsx)("line",{x1:"7.8",y1:"17",x2:"16.2",y2:"17",stroke:"var(--color-border-subtle)",strokeWidth:"1",strokeDasharray:"2.5 2"})]})}),s?(0,a.jsx)("p",{className:"empty-state__text",children:s}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"empty-state__headline",children:"Ready to orchestrate"}),(0,a.jsx)("p",{className:"empty-state__hint",children:"Open the main orchestrator to start a session and fan out parallel agents across your codebase."}),r?(0,a.jsxs)("a",{href:r,className:"empty-state__cta",children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),"Open Orchestrator"]}):t?(0,a.jsxs)("button",{type:"button",className:"empty-state__cta",onClick:t,disabled:o,children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),n]}):null]})]})})]})}var M=r(2446);function S(e){let{status:s}=e;return"connected"===s?null:"disconnected"===s?(0,a.jsx)("button",{type:"button",className:"connection-bar connection-bar--disconnected","aria-live":"assertive","aria-atomic":"true",onClick:()=>window.location.reload(),children:"Offline \xb7 tap to retry"}):(0,a.jsx)("div",{className:"connection-bar connection-bar--reconnecting",role:"status","aria-live":"polite","aria-atomic":"true",children:"Reconnecting…"})}let P=[/\bBearer\s+[A-Za-z0-9._\-+/=]+\b/gi,/\bsk-[A-Za-z0-9]{10,}\b/g,/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/g];function R(e){let{projectId:s}=e,{showToast:r}=(0,M.d)(),[n,o]=(0,t.useState)(!1),l=(0,t.useCallback)(async()=>{if(!n){o(!0);try{let e,a=await fetch("/api/observability",{credentials:"same-origin"});if(!a.ok)return void r("Could not fetch observability snapshot","error");let t=a.headers.get("x-correlation-id");try{e=await a.json()}catch(e){r("Could not parse observability snapshot","error");return}let n=function e(s){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakSet;if("string"==typeof s)return P.reduce((e,s)=>e.replace(s,"[REDACTED]"),s);if(Array.isArray(s))return s.map(s=>e(s,r));if(s&&"object"==typeof s){if(r.has(s))return"[Circular]";r.add(s);let a={};for(let[t,n]of Object.entries(s))a[t]=e(n,r);return a}return s}(function(e,s){if(!s||!e||"object"!=typeof e)return e;let r={...e},a=r.projects;if(a&&"object"==typeof a&&!Array.isArray(a)){let e=a[s];r.projects=void 0===e?{}:{[s]:e}}return r}(e,s)),o={copiedAt:new Date().toISOString(),pageHref:"".concat(window.location.origin).concat(window.location.pathname),projectId:null!=s?s:null,correlationId:t,userAgent:navigator.userAgent,observability:n};await navigator.clipboard.writeText(JSON.stringify(o,null,2)),r("Debug bundle copied to clipboard","success")}catch(e){r("Could not copy debug bundle","error")}finally{o(!1)}}},[n,s,r]);return(0,a.jsxs)("button",{type:"button",className:"orchestrator-btn flex min-h-[44px] min-w-[44px] items-center gap-2 px-4 py-2 text-[12px] font-semibold text-[var(--color-text-secondary)] transition-colors hover:bg-[var(--color-bg-hover)] disabled:opacity-50",onClick:()=>void l(),disabled:n,"aria-label":"Copy debug bundle for issue reports",children:[(0,a.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:[(0,a.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,a.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy debug info"]})}var W=r(2466);let I=["working","pending","action","merge"],T=["working","pending","review","respond","merge"],A=[];function B(e){var s;let{session:r,onRestore:t}=e,n=!r.summaryIsFallback&&r.summary||r.issueTitle||r.summary||r.id,o=(null==(s=r.pr)?void 0:s.state)==="merged"||"merged"===r.status,l="killed"===r.status||"terminated"===r.status,i=!c.N_.has(r.status);return(0,a.jsxs)("div",{className:"done-card",children:[(0,a.jsx)("p",{className:"done-card__title",children:n}),(0,a.jsxs)("div",{className:"done-card__meta",children:[(0,a.jsx)("span",{className:"done-card__badge ".concat(l?"done-card__badge--terminated":"done-card__badge--merged"),children:o?"merged":l?"terminated":"done"}),r.pr?(0,a.jsxs)("a",{href:r.pr.url,target:"_blank",rel:"noopener noreferrer",className:"done-card__pr",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("svg",{width:"9",height:"9",fill:"none",stroke:"currentColor",strokeWidth:"1.8",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"18",cy:"18",r:"3"}),(0,a.jsx)("circle",{cx:"6",cy:"6",r:"3"}),(0,a.jsx)("path",{d:"M6 9v3a6 6 0 0 0 6 6h3"})]}),"#",r.pr.number]}):null,(0,a.jsx)("span",{className:"done-card__age",children:function(e){if(!e)return"just now";let s=new Date(e).getTime();if(!Number.isFinite(s))return"just now";let r=Date.now()-s;if(r<=0)return"just now";let a=Math.floor(r/1e3),t=Math.floor(a/60),n=Math.floor(t/60),o=Math.floor(n/24);return a<60?"".concat(a,"s ago"):t<60?"".concat(t,"m ago"):n<24?"".concat(n,"h ago"):"".concat(o,"d ago")}(r.lastActivityAt)}),i?(0,a.jsx)("button",{type:"button",className:"done-card__restore",onClick:e=>{e.stopPropagation(),t(r.id)},children:"Restore"}):null]})]})}function D(e){var s,r,n,d;let{initialSessions:h,projectId:u,projectName:x,projects:m=[],orchestrators:v,attentionZones:g="simple",dashboardLoadError:j}=e,f=null!=v?v:A,y=(0,N.eT)(),P="detailed"===g?T:I,D=(0,t.useMemo)(()=>{let e={};for(let s of h)e[s.id]=(0,c.ng)(s,g);return e},[h,g]),{sessions:O,attentionLevels:L,liveSessionsResolved:E,loadError:H}=(0,_.D)({initialSessions:h,muxSessions:(null==y?void 0:y.status)==="connected"?y.sessions:void 0,muxLastError:null==y?void 0:y.lastError,initialAttentionLevels:D,attentionZones:g}),K=(0,t.useMemo)(()=>u?O.filter(e=>e.projectId===u):O,[O,u]),Z=(null==y?void 0:y.status)==="disconnected"?"disconnected":(null==y?void 0:y.status)==="connected"?"connected":"reconnecting",q=null!=H?H:j&&E?void 0:j,U=(0,l.useSearchParams)(),z=(0,l.useRouter)(),V=(0,t.useRef)(z);V.current=z;let G=null!=(s=U.get("session"))?s:void 0,[J,Q]=(0,t.useState)(!1),[$,X]=(0,t.useState)(f),[Y,ee]=(0,t.useState)([]),[es,er]=(0,t.useState)({}),[ea,et]=(0,t.useState)(!1),[en,eo]=(0,t.useState)(!1),el=(0,i.U)(i.D),ei=U.get("debug"),ec=m.length>=1,{showToast:ed}=(0,M.d)(),[eh,eu]=(0,t.useState)(!1),ex=(0,t.useRef)(O);ex.current=O;let ep=m.length>1&&ec&&void 0===u,em=(0,t.useMemo)(()=>{var e;return u&&null!=(e=$.find(e=>e.projectId===u))?e:null},[$,u]),ev=em?(0,p.Nc)(em.projectId,em.id):null,eg=!ep&&!!u&&m.some(e=>e.id===u&&!e.resolveError)&&!ev,eb=u&&null!=(r=m.find(e=>e.id===u))?r:null,ej=!!u&&Y.includes(u),ef=u&&null!=(n=es[u])?n:null,ek=(0,t.useMemo)(()=>ep||!G?K:K.filter(e=>e.id===G),[K,ep,G]);(0,t.useEffect)(()=>{X(e=>(function(e,s){let r=new Map(e.map(e=>[e.projectId,e]));for(let e of s)r.set(e.projectId,e);return[...r.values()]})(e,f))},[f]),(0,t.useEffect)(()=>{let e=(0,k.S)(L),s=null!=x?x:"ao";document.title=e>0?"".concat(s," (").concat(e," need attention)"):s},[L,x]),(0,t.useEffect)(()=>{eo(!1)},[U]);let e_=(0,t.useMemo)(()=>{let e={merge:[],action:[],respond:[],review:[],pending:[],working:[],done:[]};for(let s of ek)e[(0,c.ng)(s,g)].push(s);return e},[ek,g]),eN=(0,t.useMemo)(()=>{let e=new Map;for(let s of O){let r=e.get(s.projectId);if(r){r.push(s);continue}e.set(s.projectId,[s])}return e},[O]),ew=(0,t.useMemo)(()=>ep?m.map(e=>{var s,r;let a=null!=(s=eN.get(e.id))?s:[],t={merge:0,action:0,respond:0,review:0,pending:0,working:0,done:0};for(let e of a)t[(0,c.ng)(e,g)]++;return{project:e,orchestrator:null!=(r=$.find(s=>s.projectId===e.id))?r:null,sessionCount:a.length,openPRCount:a.filter(e=>{var s;return(null==(s=e.pr)?void 0:s.state)==="open"}).length,counts:t}}):[],[$,ep,g,m,eN]),ey=(0,t.useCallback)(async(e,s)=>{try{let r=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:s})});if(!r.ok){let s=await r.text()||"Unknown error";console.error("Failed to send message to ".concat(e,":"),s),ed("Send failed: ".concat(s),"error");let a=Error(s);throw a.toastShown=!0,a}}catch(s){throw s instanceof Error&&"toastShown"in s&&s.toastShown||(console.error("Network error sending message to ".concat(e,":"),s),ed("Network error while sending message","error")),s}},[ed]),eC=(0,t.useCallback)(async e=>{try{let s=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/kill"),{method:"POST"});if(s.ok)ed("Session terminated","success");else{let r=await s.text();console.error("Failed to kill ".concat(e,":"),r),ed("Terminate failed: ".concat(r),"error")}}catch(s){console.error("Network error killing ".concat(e,":"),s),ed("Network error while terminating session","error")}},[ed]),eM=(0,t.useCallback)(e=>{var s;let r=null!=(s=ex.current.find(s=>s.id===e))?s:null;r&&eC(r.id)},[eC]),eS=(0,t.useCallback)(async e=>{try{let s=await fetch("/api/prs/".concat(e,"/merge"),{method:"POST"});if(s.ok)ed("PR #".concat(e," merged"),"success");else{let r=await s.text();console.error("Failed to merge PR #".concat(e,":"),r),ed("Merge failed: ".concat(r),"error");return}}catch(s){console.error("Network error merging PR #".concat(e,":"),s),ed("Network error while merging PR","error")}},[ed]),eP=(0,t.useCallback)(async e=>{try{let s=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/restore"),{method:"POST"});if(s.ok)ed("Session restored","success"),V.current.refresh();else{let r=await s.text();console.error("Failed to restore ".concat(e,":"),r),ed("Restore failed: ".concat(r),"error")}}catch(s){console.error("Network error restoring ".concat(e,":"),s),ed("Network error while restoring session","error")}},[ed]),eR=async e=>{ee(s=>s.includes(e.id)?s:[...s,e.id]),er(s=>{let{[e.id]:r,...a}=s;return a});try{let r=await fetch("/api/orchestrators",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e.id})}),a=await r.json().catch(()=>null);if(!r.ok||!(null==a?void 0:a.orchestrator)){var s;throw Error(null!=(s=null==a?void 0:a.error)?s:"Failed to spawn orchestrator for ".concat(e.name))}let t=a.orchestrator;X(s=>{let r=s.filter(s=>s.projectId!==e.id);return r.push(t),r})}catch(r){let s=r instanceof Error?r.message:"Failed to spawn orchestrator";er(r=>({...r,[e.id]:s})),console.error("Failed to spawn orchestrator for ".concat(e.id,":"),r)}finally{ee(s=>s.filter(s=>s!==e.id))}},eW=P.some(e=>e_[e].length>0),eI=!ep&&!eW&&!q,eT=q?(0,a.jsxs)("div",{className:"dashboard-alert mb-6 flex flex-col gap-1.5 border border-[color-mix(in_srgb,var(--color-status-error)_28%,transparent)] bg-[color-mix(in_srgb,var(--color-status-error)_10%,transparent)] px-3.5 py-2.5 text-[11px] md:mb-4",role:"alert","aria-live":"assertive",children:[(0,a.jsx)("span",{className:"font-semibold text-[var(--color-status-error)]",children:"Orchestrator failed to load"}),(0,a.jsx)("span",{className:"break-words text-[var(--color-text-secondary)]",children:q}),(0,a.jsxs)("span",{className:"text-[var(--color-text-secondary)]",children:["Confirm ",(0,a.jsx)("span",{className:"font-mono text-[10px]",children:"agent-orchestrator.yaml"})," exists and is valid, then run ",(0,a.jsx)("span",{className:"font-mono text-[10px]",children:"ao doctor"})," for diagnostics."]})]}):null,eA=(0,t.useMemo)(()=>O.some(e=>e.pr&&(0,c.fZ)(e.pr)),[O]),eB="agent orchestrator"===(null==x?void 0:x.trim().toLowerCase())?null!=(d=null!=u?u:x)?d:ep?"All projects":"Dashboard":null!=x?x:ep?"All projects":"Dashboard",eD=!ep&&eB.trim().length>0,eO=()=>{window.innerWidth<768?eo(e=>!e):et(e=>!e)};return(0,a.jsx)(W.I.Provider,{value:{onToggleSidebar:eO,mobileSidebarOpen:en},children:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(S,{status:Z}),(0,a.jsxs)("div",{className:"dashboard-app-shell",children:[(0,a.jsxs)("header",{className:"dashboard-app-header",children:[ec?(0,a.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:eO,"aria-label":"Toggle sidebar",children:el?(0,a.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,a.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,a.jsx)("path",{d:"M9 3v18"})]})}):null,(0,a.jsxs)("div",{className:"dashboard-app-header__brand",children:[(0,a.jsx)("span",{className:"dashboard-app-header__brand-dot","aria-hidden":"true"}),(0,a.jsx)("span",{children:"Agent Orchestrator"})]}),eD?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"dashboard-app-header__sep","aria-hidden":"true"}),(0,a.jsx)("span",{className:"dashboard-app-header__project",children:eB})]}):null,el||"1"!==ei&&"true"!==ei?null:(0,a.jsx)(R,{projectId:u}),(0,a.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,a.jsx)("div",{className:"dashboard-app-header__actions",children:!ep&&ev?(0,a.jsxs)(o(),{href:ev,className:"dashboard-app-btn dashboard-app-btn--amber","aria-label":"Orchestrator",children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),"Orchestrator"]}):eg&&eb?(0,a.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--amber","aria-label":"Spawn Orchestrator",onClick:()=>void eR(eb),disabled:ej,children:[(0,a.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,a.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,a.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,a.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),ej?"Spawning...":"Spawn Orchestrator"]}):null})]}),(0,a.jsxs)("div",{className:"dashboard-shell dashboard-shell--desktop".concat(ea?" dashboard-shell--sidebar-collapsed":""),children:[ec&&(0,a.jsx)("div",{className:"sidebar-wrapper".concat(en?" sidebar-wrapper--mobile-open":""),children:(0,a.jsx)(w.u,{projects:m,sessions:O,orchestrators:$,activeProjectId:u,activeSessionId:G,collapsed:ea,onToggleCollapsed:()=>et(e=>!e),onMobileClose:()=>eo(!1)})}),en&&(0,a.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>eo(!1)}),(0,a.jsxs)("main",{className:"dashboard-main dashboard-main--desktop",children:[(0,a.jsx)(k.u,{attentionLevels:L,projectName:x}),(0,a.jsxs)("div",{className:"dashboard-main__subhead",children:[(0,a.jsx)("h1",{className:"dashboard-main__title",children:"Dashboard"}),(0,a.jsx)("p",{className:"dashboard-main__subtitle",children:"Live agent sessions, pull requests, and merge status."})]}),(0,a.jsxs)("div",{className:"dashboard-main__body",children:[eT,eA&&!J&&(0,a.jsxs)("div",{className:"dashboard-alert mb-4 flex items-center gap-2.5 border border-[color-mix(in_srgb,var(--color-status-attention)_25%,transparent)] bg-[var(--color-tint-yellow)] px-3.5 py-2.5 text-[11px] text-[var(--color-status-attention)]",children:[(0,a.jsxs)("svg",{className:"h-3.5 w-3.5 shrink-0",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("path",{d:"M12 8v4M12 16h.01"})]}),(0,a.jsx)("span",{className:"flex-1",children:"GitHub API rate limited — PR data (CI status, review state, sizes) may be stale. Will retry automatically on next refresh."}),(0,a.jsx)("button",{onClick:()=>Q(!0),className:"ml-1 shrink-0 opacity-60 hover:opacity-100","aria-label":"Dismiss",children:(0,a.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})})]}),ep&&(0,a.jsx)(F,{overviews:ew,onSpawnOrchestrator:eR,spawningProjectIds:Y,spawnErrors:es,attentionZones:g}),!ep&&eW&&(0,a.jsx)("div",{className:"kanban-board-wrap",children:(0,a.jsx)("div",{className:"kanban-board","data-columns":P.length,style:{"--kanban-column-count":P.length},children:P.map(e=>(0,a.jsx)(b,{level:e,sessions:e_[e],onSend:ey,onKill:eM,onMerge:eS,onRestore:eP},e))})}),eI?(0,a.jsx)(C,{orchestratorHref:ev,onSpawnOrchestrator:eg&&eb?()=>{eR(eb)}:null,spawnLabel:ej?"Spawning...":"Spawn Orchestrator",spawnDisabled:ej}):null,!ep&&ef?(0,a.jsx)("p",{className:"mt-3 text-[11px] text-[var(--color-status-error)]",children:ef}):null,!ep&&e_.done.length>0&&(0,a.jsxs)("div",{className:"done-bar mt-6",children:[(0,a.jsxs)("button",{type:"button",className:"done-bar__toggle",onClick:()=>eu(e=>!e),"aria-expanded":eh,children:[(0,a.jsx)("svg",{className:"done-bar__chevron".concat(eh?" done-bar__chevron--open":""),fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,a.jsx)("span",{className:"done-bar__label",children:"Done / Terminated"}),(0,a.jsx)("span",{className:"done-bar__count",children:e_.done.length})]}),eh&&(0,a.jsx)("div",{className:"done-bar__cards",children:e_.done.map(e=>(0,a.jsx)(B,{session:e,onRestore:eP},e.id))})]})]})]})]})]})]})})}function O(e){return(0,a.jsx)(M.t,{children:(0,a.jsx)(D,{...e})})}function F(e){let{overviews:s,onSpawnOrchestrator:r,spawningProjectIds:t,spawnErrors:n,attentionZones:l}=e;return(0,a.jsx)("div",{className:"mb-8 grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:s.map(e=>{let{project:s,orchestrator:i,sessionCount:c,openPRCount:d,counts:h}=e,u=!!s.resolveError,x=(0,p.bn)(s.id);return(0,a.jsxs)("section",{className:"border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-4",children:[(0,a.jsxs)("div",{className:"mb-4 flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-[14px] font-semibold text-[var(--color-text-primary)]",children:s.name}),(0,a.jsx)("div",{className:"mt-1 text-[11px] text-[var(--color-text-muted)]",children:u?"Config needs repair":(0,a.jsxs)(a.Fragment,{children:[c," active session",1!==c?"s":"",d>0?" \xb7 ".concat(d," open PR").concat(1!==d?"s":""):""]})})]}),(0,a.jsx)(o(),{href:x,className:"border border-[var(--color-border-default)] px-3 py-1.5 text-[11px] font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-hover)] hover:no-underline",children:"Open project"})]}),(0,a.jsxs)("div",{className:"mb-4 flex flex-wrap gap-2",children:[(0,a.jsx)(L,{label:"Merge",value:h.merge,tone:"ready"}),"detailed"===l?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(L,{label:"Respond",value:h.respond,tone:"error"}),(0,a.jsx)(L,{label:"Review",value:h.review,tone:"orange"})]}):(0,a.jsx)(L,{label:"Action",value:h.action,tone:"orange"}),(0,a.jsx)(L,{label:"Pending",value:h.pending,tone:"attention"}),(0,a.jsx)(L,{label:"Working",value:h.working,tone:"working"})]}),(0,a.jsxs)("div",{className:"border-t border-[var(--color-border-subtle)] pt-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsx)("div",{className:"text-[11px] text-[var(--color-text-muted)]",children:u?"Project config could not be resolved":i?"Per-project orchestrator available":"No running orchestrator"}),u?(0,a.jsx)(o(),{href:x,className:"border border-[var(--color-border-default)] px-3 py-1.5 text-[11px] font-semibold text-[var(--color-text-secondary)] hover:bg-[var(--color-bg-hover)] hover:no-underline",children:"Repair project"}):i?(0,a.jsxs)(o(),{href:(0,p.Nc)(i.projectId,i.id),className:"orchestrator-btn flex items-center gap-2 px-3 py-1.5 text-[11px] font-semibold hover:no-underline",children:[(0,a.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-[var(--color-accent)] opacity-80"}),"orchestrator"]}):(0,a.jsx)("button",{type:"button",onClick:()=>void r(s),disabled:t.includes(s.id),className:"orchestrator-btn px-3 py-1.5 text-[11px] font-semibold disabled:cursor-wait disabled:opacity-70",children:t.includes(s.id)?"Spawning...":"Spawn Orchestrator"})]}),n[s.id]?(0,a.jsx)("p",{className:"mt-2 text-[11px] text-[var(--color-status-error)]",children:n[s.id]}):null]})]},s.id)})})}function L(e){let{label:s,value:r,tone:t}=e;return(0,a.jsxs)("div",{className:"min-w-[78px] border border-[var(--color-border-subtle)] px-2.5 py-2",children:[(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-[0.08em] text-[var(--color-text-tertiary)]",children:s}),(0,a.jsx)("div",{className:"project-metric__value mt-1 text-[18px] font-semibold tabular-nums","data-tone":t,children:r})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5795],{1712:(e,r,s)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return a}});let t=s(1903)._(s(5864));function a(e,r){var s;let a={};"function"==typeof e&&(a.loader=e);let n={...a,...r};return(0,t.default)({...n,modules:null==(s=n.loadableGenerated)?void 0:s.modules})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),e.exports=r.default)},2466:(e,r,s)=>{s.d(r,{I:()=>t});let t=(0,s(6749).createContext)(null)},2537:(e,r,s)=>{s.d(r,{X:()=>l});var t=s(3817),a=s(8713),n=s.n(a);function l(e){let{ariaLabel:r,activeTab:s,dashboardHref:a,prsHref:l,showOrchestrator:o=!0,orchestratorHref:i=null}=e;return(0,t.jsxs)("nav",{className:"mobile-bottom-nav","aria-label":r,children:[(0,t.jsxs)(n(),{href:a,className:"mobile-bottom-nav__item","data-active":"dashboard"===s?"true":"false","aria-current":"dashboard"===s?"page":void 0,children:[(0,t.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})}),(0,t.jsx)("span",{children:"Dashboard"})]}),(0,t.jsxs)(n(),{href:l,className:"mobile-bottom-nav__item","data-active":"prs"===s?"true":"false","aria-current":"prs"===s?"page":void 0,children:[(0,t.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"})}),(0,t.jsx)("span",{children:"PRs"})]}),o?i?(0,t.jsxs)(n(),{href:i,className:"mobile-bottom-nav__item","data-active":"orchestrator"===s?"true":"false","aria-current":"orchestrator"===s?"page":void 0,children:[(0,t.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M9 3H5a2 2 0 0 0-2 2v4m16 0V5a2 2 0 0 0-2-2h-4m0 18h4a2 2 0 0 0 2-2v-4M3 15v4a2 2 0 0 0 2 2h4"}),(0,t.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,t.jsx)("span",{children:"Orchestrator"})]}):(0,t.jsxs)("button",{type:"button",className:"mobile-bottom-nav__item",disabled:!0,children:[(0,t.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M9 3H5a2 2 0 0 0-2 2v4m16 0V5a2 2 0 0 0-2-2h-4m0 18h4a2 2 0 0 0 2-2v-4M3 15v4a2 2 0 0 0 2 2h4"}),(0,t.jsx)("path",{d:"M9 9h6v6H9z"})]}),(0,t.jsx)("span",{children:"Orchestrator"})]}):null]})}},5468:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),!function(e,r){for(var s in r)Object.defineProperty(e,s,{enumerable:!0,get:r[s]})}(r,{bindSnapshot:function(){return l},createAsyncLocalStorage:function(){return n},createSnapshot:function(){return o}});let s=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class t{disable(){throw s}getStore(){}run(){throw s}exit(){throw s}enterWith(){throw s}static bind(e){return e}}let a="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function n(){return a?new a:new t}function l(e){return a?a.bind(e):t.bind(e)}function o(){return a?a.snapshot():function(e,...r){return e(...r)}}},5795:(e,r,s)=>{s.r(r),s.d(r,{default:()=>W});var t=s(3817),a=s(6749),n=s(7594),l=s(5425),o=s(9120),i=s(545),c=s(9891),d=s(7387),u=s(2466),h=s(8450),p=s(9293),m=s(2537),b=s(4901);let f={active:{label:"Active",color:"var(--color-status-working)"},ready:{label:"Ready",color:"var(--color-status-ready)"},idle:{label:"Idle",color:"var(--color-status-idle)"},waiting_input:{label:"Waiting for input",color:"var(--color-status-attention)"},blocked:{label:"Blocked",color:"var(--color-status-error)"},exited:{label:"Exited",color:"var(--color-status-error)"}};function v(e){if(e.includes("\x3c!-- DESCRIPTION START --\x3e")||e.includes("### ")){let r=e.match(/###\s+(.+?)(?:\n|$)/),s=r?r[1].replace(/\*\*/g,"").trim():"Comment",t=e.match(/<!-- DESCRIPTION START -->\s*([\s\S]*?)\s*<!-- DESCRIPTION END -->/);return{title:s,description:t?t[1].trim():e.split("\n")[0]||"No description"}}return{title:"Comment",description:e.trim()}}function x(e){let{comments:r,unresolvedThreads:s,sendingUrls:a,sentUrls:n,errorUrls:l,onAskAgentToFix:o}=e;return 0===r.length?null:(0,t.jsxs)("details",{className:"session-detail-comments-strip",children:[(0,t.jsx)("summary",{children:(0,t.jsxs)("div",{className:"session-detail-comments-strip__toggle",children:[(0,t.jsx)("svg",{className:"session-detail-comments-strip__chevron",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M9 5l7 7-7 7"})}),(0,t.jsx)("span",{className:"session-detail-comments-strip__label",children:"Unresolved Comments"}),(0,t.jsx)("span",{className:"session-detail-comments-strip__count",children:s}),(0,t.jsx)("span",{className:"session-detail-comments-strip__hint",children:"click to expand"})]})}),(0,t.jsx)("div",{className:"session-detail-comments-strip__body",children:r.map((e,r)=>{let{title:s,description:i}=v(e.body),c=a.has(e.url),d=n.has(e.url),u=l.has(e.url);return(0,t.jsxs)("details",{className:"session-detail-comment",open:0===r,children:[(0,t.jsx)("summary",{children:(0,t.jsxs)("div",{className:"session-detail-comment__row",children:[(0,t.jsx)("svg",{className:"session-detail-comment__chevron",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M9 5l7 7-7 7"})}),(0,t.jsx)("span",{className:"session-detail-comment__title",children:s}),(0,t.jsxs)("span",{className:"session-detail-comment__author",children:["\xb7 ",e.author]}),(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"session-detail-comment__view",children:"view →"})]})}),(0,t.jsxs)("div",{className:"session-detail-comment__body",children:[(0,t.jsx)("div",{className:"session-detail-comment__file",children:e.path}),(0,t.jsx)("p",{className:"session-detail-comment__text",children:i}),(0,t.jsx)("button",{onClick:()=>o(e),disabled:c,className:(0,b.cn)("session-detail-comment__fix-btn",d&&"session-detail-comment__fix-btn--sent",u&&"session-detail-comment__fix-btn--error"),children:c?"Sending…":d?"Sent ✓":u?"Failed":"Ask Agent to Fix"})]})]},e.url)})})]})}function j(e){return!(0,i.sZ)(e)&&!(0,i.fZ)(e)&&"merged"!==e.state&&!e.mergeability.noConflicts}function g(e){var r;let{pr:s,metadata:n,lifecyclePrReason:o,onAskAgentToFix:c}=e,[d,u]=(0,a.useState)(new Set),[h,p]=(0,a.useState)(new Set),[m,f]=(0,a.useState)(new Set),[v,g]=(0,a.useState)(!1),y=(0,a.useRef)(new Map);(0,a.useEffect)(()=>()=>{y.current.forEach(e=>clearTimeout(e)),y.current.clear()},[]);let w=async e=>{p(r=>{let s=new Set(r);return s.delete(e.url),s}),f(r=>{let s=new Set(r);return s.delete(e.url),s}),u(r=>new Set(r).add(e.url)),await c(e,()=>{u(r=>{let s=new Set(r);return s.delete(e.url),s}),p(r=>new Set(r).add(e.url));let r=y.current.get(e.url);r&&clearTimeout(r);let s=setTimeout(()=>{p(r=>{let s=new Set(r);return s.delete(e.url),s}),y.current.delete(e.url)},3e3);y.current.set(e.url,s)},()=>{u(r=>{let s=new Set(r);return s.delete(e.url),s}),f(r=>new Set(r).add(e.url));let r=y.current.get(e.url);r&&clearTimeout(r);let s=setTimeout(()=>{f(r=>{let s=new Set(r);return s.delete(e.url),s}),y.current.delete(e.url)},3e3);y.current.set(e.url,s)})},N=(0,i.QN)(s),_=function(e,r,s){let t=[],a=!!r.lastCIFailureDispatchHash,n="true"===r.lastMergeConflictDispatched,o=!!r.lastPendingReviewDispatchHash,i=r.status,c=e.ciStatus===l.U1.FAILING||"ci_failing"===s||"ci_failed"===i,d="changes_requested"===e.reviewDecision||"changes_requested"===s||"changes_requested"===i,u=j(e);if(c){let r=e.ciChecks.filter(e=>"failed"===e.status).length;t.push({icon:"✗",variant:"fail",text:r>0?"".concat(r," check").concat(1!==r?"s":""," failing"):"CI failing",notified:a})}else e.ciStatus===l.U1.PENDING&&t.push({icon:"●",variant:"warn",text:"CI pending"});return d?t.push({icon:"✗",variant:"fail",text:"Changes requested",notified:o}):e.mergeability.approved||t.push({icon:"○",variant:"muted",text:"Awaiting reviewer"}),u&&t.push({icon:"✗",variant:"fail",text:"Merge conflicts",notified:n}),e.isDraft&&t.push({icon:"○",variant:"muted",text:"Draft"}),t}(s,n,o),k=null!=(r=s.changedFiles)?r:0,C=j(s)&&"open"===s.state,S=C?function(e){let r=encodeURIComponent(e.owner),s=encodeURIComponent(e.repo),t=encodeURIComponent(e.baseBranch),a=encodeURIComponent(e.branch);return"https://github.com/".concat(r,"/").concat(s,"/compare/").concat(t,"...").concat(a)}(s):"";return(0,t.jsxs)("div",{className:(0,b.cn)("session-detail-pr-card",N&&"session-detail-pr-card--green"),children:[(0,t.jsxs)("div",{className:"session-detail-pr-card__row",children:[(0,t.jsxs)("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"session-detail-pr-card__title-link",children:["PR #",s.number,": ",s.title]}),(0,t.jsxs)("span",{className:"session-detail-pr-card__diff-stats",children:[(0,t.jsxs)("span",{className:"session-detail-diff--add",children:["+",s.additions]})," ",(0,t.jsxs)("span",{className:"session-detail-diff--del",children:["-",s.deletions]})]}),k>0?(0,t.jsxs)("span",{className:"session-detail-pr-card__diff-label",children:[k," file",1!==k?"s":""]}):null,s.isDraft?(0,t.jsx)("span",{className:"session-detail-pr-card__diff-label",children:"Draft"}):null,"merged"===s.state?(0,t.jsx)("span",{className:"session-detail-pr-card__diff-label",children:"Merged"}):null]}),C?(0,t.jsxs)("div",{className:"session-detail-pr-card__merge-actions",role:"group","aria-label":"Resolve merge conflicts",children:[(0,t.jsx)("a",{href:S,target:"_blank",rel:"noopener noreferrer",className:"session-detail-pr-merge-action",children:"Compare with base branch"}),(0,t.jsx)("button",{type:"button",onClick:()=>{var e;let r=null==(e=navigator.clipboard)?void 0:e.writeText(s.branch);r&&r.then(()=>{g(!0);let e="__copy-branch",r=y.current.get(e);r&&clearTimeout(r);let s=setTimeout(()=>{g(!1),y.current.delete(e)},2e3);y.current.set(e,s)}).catch(()=>{})},"aria-label":v?"Head branch name copied":"Copy head branch name",className:"session-detail-pr-merge-action session-detail-pr-merge-action--btn",children:v?"Copied branch name":"Copy head branch name"})]}):null,(0,t.jsxs)("div",{className:"session-detail-pr-card__details",children:[N?(0,t.jsxs)("div",{className:"session-detail-merge-banner",children:[(0,t.jsx)("svg",{width:"11",height:"11",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M20 6L9 17l-5-5"})}),"Ready to merge"]}):_.map(e=>(0,t.jsxs)("span",{className:(0,b.cn)("session-detail-blocker-chip","fail"===e.variant&&"session-detail-blocker-chip--fail","warn"===e.variant&&"session-detail-blocker-chip--warn","muted"===e.variant&&"session-detail-blocker-chip--muted"),children:[e.icon," ",e.text,e.notified?(0,t.jsx)("span",{className:"session-detail-blocker-chip__note",children:"\xb7 notified"}):null]},e.text)),s.ciChecks.length>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"session-detail-pr-sep"}),s.ciChecks.map((e,r)=>{var s;let a=null!=(s=e.url)?s:"".concat(e.name,"-").concat(r),n=(0,t.jsxs)("span",{className:(0,b.cn)("session-detail-ci-chip","passed"===e.status&&"session-detail-ci-chip--pass","failed"===e.status&&"session-detail-ci-chip--fail","pending"===e.status&&"session-detail-ci-chip--pending","passed"!==e.status&&"failed"!==e.status&&"pending"!==e.status&&"session-detail-ci-chip--queued"),children:["passed"===e.status?"✓":"failed"===e.status?"✗":"pending"===e.status?"●":"○"," ",e.name]});return e.url?(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"hover:no-underline",onClick:e=>e.stopPropagation(),children:n},a):(0,t.jsx)("span",{children:n},a)})]}):null]}),(0,t.jsx)(x,{comments:s.unresolvedComments,unresolvedThreads:s.unresolvedThreads,sendingUrls:d,sentUrls:h,errorUrls:m,onAskAgentToFix:w})]})}function y(e,r){let s=e.trim();return s.length<=r?s:"".concat(s.slice(0,Math.max(0,r-1)).trimEnd(),"…")}async function w(e,r,s,t){try{let t=function(e){let{title:r,description:s}=v(e.body),t=["Please address this review comment:\n","File: ".concat(y(e.path,500)),"Comment: ".concat(y(r,240)),"Description: ".concat(y(s,7500)),"","Resolve the comment at ".concat(e.url," after fixing it.")].join("\n");return y(t,9500)}(r),a=await fetch("/api/sessions/".concat(encodeURIComponent(e),"/message"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:t})});if(!a.ok)throw Error("HTTP ".concat(a.status));s()}catch(e){console.error("Failed to send message to agent:",e),t()}}function N(e){let{zones:r}=e,s=[{value:r.merge,label:"merge",toneClass:"topbar-zone-pill--merge"},{value:r.respond,label:"respond",toneClass:"topbar-zone-pill--respond"},{value:r.review,label:"review",toneClass:"topbar-zone-pill--review"},{value:r.working,label:"working",toneClass:"topbar-zone-pill--working"},{value:r.pending,label:"pending",toneClass:"topbar-zone-pill--pending"},{value:r.done,label:"done",toneClass:"topbar-zone-pill--done"}].filter(e=>e.value>0);return 0===s.length?null:(0,t.jsx)(t.Fragment,{children:s.map(e=>(0,t.jsxs)("span",{className:(0,b.cn)("topbar-zone-pill",e.toneClass),children:[(0,t.jsx)("span",{className:"topbar-zone-pill__value",children:e.value}),(0,t.jsx)("span",{className:"topbar-zone-pill__label",children:e.label})]},e.label))})}function _(e){var r,s,n,o;let{session:c,isOrchestrator:d,isMobile:u,terminalEnded:h,isRestorable:p,activity:m,headline:f,projects:v,orchestratorHref:x,orchestratorZones:j,onToggleSidebar:y,onRestore:_,onKill:k}=e,C=c.pr,S=!!C&&(0,i.QN)(C),[I,M]=(0,a.useState)(!1),R=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(!I)return;let e=e=>{R.current&&!R.current.contains(e.target)&&M(!1)},r=e=>{"Escape"===e.key&&M(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",r),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",r)}},[I]);let T=null!=(n=null==(r=v.find(e=>e.id===c.projectId))?void 0:r.name)?n:c.projectId,P="agent orchestrator"!==T.trim().toLowerCase();return(0,t.jsxs)("header",{className:"dashboard-app-header",children:[v.length>0?(0,t.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:y,"aria-label":"Toggle sidebar",children:u?(0,t.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,t.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,t.jsx)("path",{d:"M9 3v18"})]})}):null,(0,t.jsx)("div",{className:"dashboard-app-header__brand dashboard-app-header__brand--hide-mobile",children:(0,t.jsx)("span",{children:"Agent Orchestrator"})}),P&&(0,t.jsx)("span",{className:"dashboard-app-header__sep topbar-desktop-only","aria-hidden":"true"}),(0,t.jsxs)("div",{className:"topbar-project-pills-group",children:[(0,t.jsxs)("div",{className:"topbar-project-line",children:[P&&(0,t.jsx)("span",{className:"dashboard-app-header__project",children:T}),(0,t.jsx)("span",{className:"dashboard-app-header__session-id topbar-mobile-only",children:c.id}),d&&(0,t.jsx)("span",{className:"session-detail-mode-badge",children:"orchestrator"})]}),(0,t.jsxs)("div",{className:"topbar-session-pills",children:[(0,t.jsxs)("div",{className:(0,b.cn)("topbar-status-pill","topbar-status-pill--".concat(m.label.toLowerCase().replace(/\s+/g,"-"))),children:[(0,t.jsx)("span",{className:"topbar-status-pill__dot",style:{background:m.color}}),(0,t.jsx)("span",{className:"topbar-status-pill__label",children:m.label})]}),c.branch?C?(0,t.jsx)("a",{href:function(e){let r="https://github.com";try{r=new URL(e.url).origin}catch(e){}return"".concat(r,"/").concat(e.owner,"/").concat(e.repo,"/tree/").concat(e.branch)}(C),target:"_blank",rel:"noopener noreferrer",className:"topbar-branch-pill topbar-branch-pill--link",children:c.branch}):(0,t.jsx)("span",{className:"topbar-branch-pill",children:c.branch}):null,d&&j?(0,t.jsx)(N,{zones:j}):null]})]}),(0,t.jsx)("span",{className:"dashboard-app-header__sep topbar-desktop-only","aria-hidden":"true"}),(0,t.jsx)("span",{className:"dashboard-app-header__session-title topbar-desktop-only",children:f}),(0,t.jsx)("span",{className:"dashboard-app-header__session-id topbar-desktop-only",children:c.id}),(0,t.jsx)("div",{className:"dashboard-app-header__spacer"}),(0,t.jsxs)("div",{className:"dashboard-app-header__actions",children:[C?(0,t.jsxs)("div",{className:"topbar-pr-btn-wrap",ref:R,children:[(0,t.jsxs)("a",{href:C.url,target:"_blank",rel:"noopener noreferrer",className:(0,b.cn)("dashboard-app-btn topbar-pr-btn",I&&"topbar-pr-btn--open"),onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||1===e.button||(e.preventDefault(),M(e=>!e))},"aria-expanded":I,"aria-label":"PR #".concat(C.number),children:[(0,t.jsx)("span",{className:(0,b.cn)("topbar-pr-dot",S?"topbar-pr-dot--green":C.ciStatus===l.U1.FAILING||"changes_requested"===C.reviewDecision?"topbar-pr-dot--red":"topbar-pr-dot--amber")}),"PR #",C.number,(0,t.jsx)("svg",{width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:I?"M18 15l-6-6-6 6":"M6 9l6 6 6-6"})})]}),I&&(0,t.jsx)("div",{className:"topbar-pr-popover",children:(0,t.jsx)(g,{pr:C,metadata:c.metadata,lifecyclePrReason:null!=(o=null==(s=c.lifecycle)?void 0:s.prReason)?o:void 0,onAskAgentToFix:(e,r,s)=>w(c.id,e,r,s)})})]}):null,p?(0,t.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--restore",onClick:_,children:[(0,t.jsxs)("svg",{className:"topbar-action-icon",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,t.jsx)("path",{d:"M20 11a8 8 0 0 0-14.9-3.98"}),(0,t.jsx)("path",{d:"M4 5v4h4"}),(0,t.jsx)("path",{d:"M4 13a8 8 0 0 0 14.9 3.98"}),(0,t.jsx)("path",{d:"M20 19v-4h-4"})]}),(0,t.jsx)("span",{className:"topbar-btn-label",children:"Restore"})]}):d||h?null:(0,t.jsxs)("button",{type:"button",className:"dashboard-app-btn dashboard-app-btn--danger",onClick:k,children:[(0,t.jsx)("svg",{className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})}),(0,t.jsx)("span",{className:"topbar-btn-label",children:"Kill"})]}),x?(0,t.jsxs)("a",{href:x,className:"dashboard-app-btn dashboard-app-btn--amber topbar-desktop-only","aria-label":"Orchestrator",children:[(0,t.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,t.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,t.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,t.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,t.jsx)("circle",{cx:"18",cy:"17",r:"2"})]}),(0,t.jsx)("span",{className:"topbar-btn-label",children:"Orchestrator"})]}):null]})]})}function k(e){var r,s,a,n,l,o,i,c,u,h;let{session:p,headline:m,pr:b,dashboardHref:f}=e,v=(null==(h=p.lifecycle)?void 0:h.runtime.reasonLabel)?p.lifecycle.runtime.reasonLabel:"killed"===p.status?"Manually stopped":"terminated"===p.status?"Runtime unavailable":"done"===p.status||"merged"===p.status?"Work completed":"Terminal ended",x=function(e,r){var s;let t=e.metadata.pinnedSummary;return t||(e.summary&&!e.summaryIsFallback?e.summary:(null==(s=e.lifecycle)?void 0:s.summary)?e.lifecycle.summary:e.userPrompt?e.userPrompt:e.summary?e.summary:r)}(p,m),j=null!=(c=null!=(i=null!=(o=null==(r=p.lifecycle)?void 0:r.session.terminatedAt)?o:null==(s=p.lifecycle)?void 0:s.session.completedAt)?i:null==(a=p.lifecycle)?void 0:a.session.lastTransitionAt)?c:p.lastActivityAt,g=null!=(u=null==(n=p.lifecycle)?void 0:n.runtime.label)?u:"Unavailable",y=b?"merged"===b.state?"Merged":"closed"===b.state?"Closed":b.mergeability.mergeable?"Open, merge-ready":"Open":"No PR";return(0,t.jsx)("section",{className:"session-ended-summary","aria-label":"Session ended summary",children:(0,t.jsxs)("div",{className:"session-ended-summary__panel",children:[(0,t.jsx)("div",{className:"session-ended-summary__eyebrow",children:"Terminal ended"}),(0,t.jsxs)("div",{className:"session-ended-summary__header",children:[(0,t.jsx)("div",{className:"session-ended-summary__icon","aria-hidden":"true",children:(0,t.jsxs)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"1.8",viewBox:"0 0 24 24",children:[(0,t.jsx)("rect",{x:"3",y:"5",width:"18",height:"14",rx:"3"}),(0,t.jsx)("path",{d:"M7 10l3 2-3 2"}),(0,t.jsx)("path",{d:"M13 15h4"})]})}),(0,t.jsxs)("div",{className:"session-ended-summary__title-group",children:[(0,t.jsx)("h2",{className:"session-ended-summary__title",children:m}),(0,t.jsxs)("p",{className:"session-ended-summary__subtitle",children:[v,". The live terminal is gone, but the session context is still available."]})]})]}),(0,t.jsxs)("div",{className:"session-ended-summary__body",children:[(0,t.jsxs)("div",{className:"session-ended-summary__section",children:[(0,t.jsx)("div",{className:"session-ended-summary__label",children:"What happened"}),(0,t.jsx)("p",{className:"session-ended-summary__copy",children:x})]}),(0,t.jsxs)("div",{className:"session-ended-summary__facts","aria-label":"Session facts",children:[(0,t.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,t.jsx)("span",{children:"Session"}),(0,t.jsx)("strong",{children:p.id})]}),(0,t.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,t.jsx)("span",{children:"Ended"}),(0,t.jsx)("strong",{children:function(e){if(!e)return"Unknown";let r=new Date(e).getTime();return Number.isFinite(r)?(0,d.fw)(r):"Unknown"}(j)})]}),(0,t.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,t.jsx)("span",{children:"Runtime"}),(0,t.jsx)("strong",{children:g})]}),(0,t.jsxs)("div",{className:"session-ended-summary__fact",children:[(0,t.jsx)("span",{children:"PR"}),(0,t.jsx)("strong",{children:y})]})]}),(0,t.jsxs)("div",{className:"session-ended-summary__links",children:[b?(0,t.jsxs)("a",{href:b.url,target:"_blank",rel:"noopener noreferrer",className:"session-ended-summary__primary",children:["Open PR #",b.number]}):null,(0,t.jsx)("a",{href:f,className:"session-ended-summary__secondary",children:"Back to dashboard"})]}),(null==(l=p.lifecycle)?void 0:l.evidence)?(0,t.jsxs)("div",{className:"session-ended-summary__evidence",children:[(0,t.jsx)("span",{children:"Evidence"}),(0,t.jsx)("code",{children:p.lifecycle.evidence})]}):null]})]})})}let C=(0,c.default)(()=>Promise.all([s.e(8944),s.e(1383)]).then(s.bind(s,3764)).then(e=>({default:e.DirectTerminal})),{loadableGenerated:{webpack:()=>[3764]},ssr:!1,loading:()=>(0,t.jsx)("div",{className:"h-full w-full animate-pulse rounded bg-[var(--color-bg-primary)]"})});function S(e){var r,s,l;let{session:c,isOrchestrator:b=!1,orchestratorZones:v,projectOrchestratorId:x=null,projects:j=[],sidebarSessions:g=[],sidebarOrchestrators:y,sidebarLoading:w=!1,sidebarError:N=!1,onRetrySidebar:S}=e,I=(0,n.useRouter)(),M=(0,n.useSearchParams)(),R=(0,o.U)(o.D),T="true"===M.get("fullscreen"),[P,E]=(0,a.useState)(!1),[O,A]=(0,a.useState)(!1),[D,L]=(0,a.useState)(!1),F=c.pr,B=i.CM.has(c.status),U=B&&!i.N_.has(c.status),W=null!=(l=c.activity&&f[c.activity])?l:{label:null!=(s=c.activity)?s:"unknown",color:"var(--color-text-muted)"},z=(0,d.Pn)(c),H=b?"orchestrator":"agent",q="opencode"===c.metadata.agent,V="string"==typeof c.metadata.opencodeSessionId&&c.metadata.opencodeSessionId.length>0?c.metadata.opencodeSessionId:void 0,J=c.projectId?(0,h.bn)(c.projectId):"/",G=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/sessions/".concat(encodeURIComponent(c.id),"/kill"),{method:"POST"});if(!e.ok)throw Error("HTTP ".concat(e.status));if(x)return void I.push((0,h.Nc)(c.projectId,x));I.push(J)}catch(e){console.error("Failed to kill session:",e)}},[J,x,I,c.id,c.projectId]),K=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/sessions/".concat(encodeURIComponent(c.id),"/restore"),{method:"POST"});if(!e.ok){let r=await e.text().catch(()=>"");throw Error(r||"HTTP ".concat(e.status))}window.location.reload()}catch(e){console.error("Failed to restore session:",e)}},[c.id]),Z=(0,a.useMemo)(()=>b?(0,h.Nc)(c.projectId,c.id):x?(0,h.Nc)(c.projectId,x):null,[b,x,c.id,c.projectId]);(0,a.useEffect)(()=>{let e=window.requestAnimationFrame(()=>L(!0));return()=>{window.cancelAnimationFrame(e),L(!1)}},[c.id]);let X=(0,a.useCallback)(()=>{R?A(e=>!e):E(e=>!e)},[R]);return(0,t.jsx)(u.I.Provider,{value:{onToggleSidebar:X,mobileSidebarOpen:O},children:(0,t.jsxs)("div",{className:"dashboard-app-shell",children:[(0,t.jsx)(_,{session:c,isOrchestrator:b,isMobile:R,terminalEnded:B,isRestorable:U,activity:W,headline:z,projects:j,orchestratorHref:Z,orchestratorZones:v,onToggleSidebar:X,onRestore:K,onKill:G}),(0,t.jsxs)("div",{className:"dashboard-shell dashboard-shell--desktop".concat(P?" dashboard-shell--sidebar-collapsed":""),children:[j.length>0?(0,t.jsx)("div",{className:"sidebar-wrapper".concat(O?" sidebar-wrapper--mobile-open":""),children:(0,t.jsx)(p.u,{projects:j,sessions:g,orchestrators:y,loading:w,error:N,onRetry:S,activeProjectId:c.projectId,activeSessionId:c.id,collapsed:P,onToggleCollapsed:()=>E(e=>!e),onMobileClose:()=>A(!1)})}):null,O&&(0,t.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>A(!1)}),(0,t.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,t.jsx)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:(0,t.jsx)("div",{className:"flex-1 min-h-0 flex flex-col",children:D?B?(0,t.jsx)(k,{session:c,headline:z,pr:F,dashboardHref:J}):(0,t.jsx)(C,{sessionId:c.id,projectId:c.projectId,tmuxName:null==(r=c.metadata)?void 0:r.tmuxName,startFullscreen:T,variant:H,appearance:"dark",height:"100%",isOpenCodeSession:q,reloadCommand:q&&V?"/exit\nopencode --session ".concat(V,"\n"):void 0,autoFocus:!0}):(0,t.jsx)("div",{className:"session-detail-terminal-placeholder h-full"})})})})]}),(0,t.jsx)(m.X,{ariaLabel:"Session navigation",activeTab:b?"orchestrator":void 0,dashboardHref:J,prsHref:c.projectId?"/?project=".concat(encodeURIComponent(c.projectId),"&tab=prs"):"/",showOrchestrator:!!Z,orchestratorHref:Z})]})})}var I=s(9789);let M={active:"⚡",ready:"\uD83D\uDFE2",idle:"\uD83D\uDCA4",waiting_input:"❓",blocked:"\uD83D\uDEA7",exited:"\uD83D\uDC80"};var R=s(5184),T=s(3394);let P=null,E=null,O=new Set(Object.values(l.SB)),A=new Set(Object.values(l.u3)),D=new Set;function L(e){if(e instanceof DOMException)return"AbortError"===e.name;if(e instanceof Error){let r=e.message.toLowerCase();return r.includes("aborted")||r.includes("aborterror")}return!1}function F(e){let{message:r}=e;return(0,t.jsx)("div",{className:"project-sidebar h-full",children:(0,t.jsxs)("div",{className:"space-y-3 px-3 py-4",children:[(0,t.jsx)("div",{className:"text-[11px] font-medium uppercase tracking-[0.18em] text-[var(--color-text-tertiary)]",children:"Projects"}),(0,t.jsx)("div",{className:"space-y-2",children:Array.from({length:3},(e,r)=>(0,t.jsx)("div",{className:"h-10 animate-pulse border border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)]"},"sidebar-placeholder-".concat(r)))}),(0,t.jsx)("div",{className:"pt-2 text-[12px] text-[var(--color-text-tertiary)]",children:r})]})})}function B(e){let{projects:r,projectsLoading:s,sidebarSessions:n,sidebarOrchestrators:l,sidebarLoading:i,sidebarError:c,onRetrySidebar:d,activeProjectId:u,activeSessionId:h,children:m}=e,b=(0,o.U)(o.D),[f,v]=(0,a.useState)(!1),[x,j]=(0,a.useState)(!1),g=(0,a.useCallback)(()=>{if(b)return void j(e=>!e);v(e=>!e)},[b]);return(0,t.jsxs)("div",{className:"dashboard-app-shell",children:[(0,t.jsxs)("header",{className:"dashboard-app-header",children:[(0,t.jsx)("button",{type:"button",className:"dashboard-app-sidebar-toggle",onClick:g,"aria-label":"Toggle sidebar",children:b?(0,t.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})}):(0,t.jsxs)("svg",{width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),(0,t.jsx)("path",{d:"M9 3v18"})]})}),(0,t.jsx)("div",{className:"dashboard-app-header__brand",children:(0,t.jsx)("span",{children:"Agent Orchestrator"})}),(0,t.jsx)("div",{className:"dashboard-app-header__spacer"})]}),(0,t.jsxs)("div",{className:"dashboard-shell dashboard-shell--desktop".concat(f?" dashboard-shell--sidebar-collapsed":""),children:[(0,t.jsx)("div",{className:"sidebar-wrapper".concat(x?" sidebar-wrapper--mobile-open":""),children:r.length>0?(0,t.jsx)(p.u,{projects:r,sessions:n,orchestrators:l,loading:i,error:c,onRetry:d,activeProjectId:u,activeSessionId:h,collapsed:f,onToggleCollapsed:()=>v(e=>!e),onMobileClose:()=>j(!1)}):(0,t.jsx)(F,{message:s?"Loading projects...":"Projects unavailable."})}),x&&(0,t.jsx)("div",{className:"sidebar-mobile-backdrop",onClick:()=>j(!1)}),(0,t.jsx)("div",{className:"dashboard-main dashboard-main--desktop",children:(0,t.jsx)("main",{className:"session-detail-page flex-1 min-h-0 flex flex-col bg-[var(--color-bg-base)]",children:(0,t.jsx)("div",{className:"flex-1 min-h-0",children:m})})})]})]})}function U(e,r){if(!e||0===r.length)return e;let s=new Map(r.map(e=>[e.id,e])),t=!1,a=e.map(e=>{var r,a;let n=s.get(e.id);if(!n)return e;if(r=n.status,!O.has(r)){let r="status:".concat(n.status);return D.has(r)||(D.add(r),console.warn("Ignoring mux session patch with unknown status",{sessionId:n.id,status:n.status})),e}if(null!==n.activity&&(a=n.activity,!A.has(a))){let r="activity:".concat(n.activity);return D.has(r)||(D.add(r),console.warn("Ignoring mux session patch with unknown activity",{sessionId:n.id,activity:n.activity})),e}return e.status===n.status&&e.activity===n.activity&&e.lastActivityAt===n.lastActivityAt?e:(t=!0,{...e,status:n.status,activity:n.activity,lastActivityAt:n.lastActivityAt})});return t?a:e}function W(){var e,r,s;let o=(0,n.useParams)(),c=(0,n.usePathname)(),u=(0,n.useRouter)(),p=o.id,m="string"==typeof o.projectId?o.projectId:Array.isArray(o.projectId)?o.projectId[0]:null,b=(0,R.eT)(),f=(()=>{if("undefined"==typeof sessionStorage)return null;try{let e=sessionStorage.getItem("ao-session-nav:".concat(p));if(e)return sessionStorage.removeItem("ao-session-nav:".concat(p)),JSON.parse(e)}catch(e){}return null})(),[v,x]=(0,a.useState)(f),[j,g]=(0,a.useState)(null),[y,w]=(0,a.useState)(void 0),[N,_]=(0,a.useState)([]),[k,C]=(0,a.useState)(null===P),[O,A]=(0,a.useState)(()=>E),[D,F]=(0,a.useState)(void 0),[W,z]=(0,a.useState)(null===f),[H,q]=(0,a.useState)(null),[V,J]=(0,a.useState)(!1),[G,K]=(0,a.useState)(!1),[Z,X]=(0,a.useState)(new Map),Q=null!=(e=null==v?void 0:v.projectId)?e:null,Y=[...Z.values()],$=!!v&&(0,l.tT)(v,Z.get(v.projectId),Y),ee=(0,a.useRef)(null),er=(0,a.useRef)(!1),es=(0,a.useRef)(null),et=(0,a.useRef)(new Map),ea=(0,a.useRef)(null!==f),en=(0,a.useRef)(null),el=(0,a.useRef)(!1),eo=(0,a.useRef)(!1),ei=(0,a.useRef)(!1),ec=(0,a.useRef)(null),ed=(0,a.useRef)(null),eu=(0,a.useRef)(null),eh=(0,a.useRef)(!1);(0,a.useEffect)(()=>{et.current=Z},[Z]);let ep=(0,a.useCallback)(async()=>{P&&(_(P),X(new Map(P.map(e=>{var r;return[e.id,null!=(r=e.sessionPrefix)?r:e.id]}))),C(!1));try{var e,r;let s=await (0,T.u)("/api/projects",{timeoutMs:5e3,timeoutMessage:"Projects request timed out after ".concat(5e3,"ms")});if(!(null==s?void 0:s.projects))return;e=P,r=s.projects,e&&e.length===r.length&&e.every((e,s)=>{let t=r[s];return JSON.stringify(e)===JSON.stringify(t)})||(P=s.projects,_(s.projects),X(new Map(s.projects.map(e=>{var r;return[e.id,null!=(r=e.sessionPrefix)?r:e.id]}))))}catch(e){console.error("Failed to fetch projects:",e)}finally{C(!1)}},[]),em=function(e){let r=(0,R.eT)(),s=null==r?void 0:r.sessions.find(r=>r.id===e);return(0,a.useMemo)(()=>{var e;return s?{activity:null!=(e=s.activity)?e:null}:null},[s])}(p);(0,a.useEffect)(()=>{v?document.title=function(e,r,s){var t;let a,n=e.id,o=void 0!==s?s:e.activity,i=o&&null!=(t=M[o])?t:"",c=[...r.values()];return a=(0,l.tT)(e,r.get(e.projectId),c)?"Orchestrator Terminal":function(e,r){let s=Array.from(e);return s.length>40?s.slice(0,40).join("")+"...":e}((0,d.Pn)(e),40),i?"".concat(i," ").concat(n," | ").concat(a):"".concat(n," | ").concat(a)}(v,Z,null==em?void 0:em.activity):document.title="".concat(p," | Session Detail")},[v,p,Z,em]),(0,a.useEffect)(()=>{ee.current=Q},[Q]),(0,a.useEffect)(()=>{if(v&&N.some(e=>e.id===v.projectId)){if(null==c?void 0:c.startsWith("/sessions/"))return void u.replace((0,h.Nc)(v.projectId,v.id));(null==c?void 0:c.startsWith("/projects/"))&&m&&v.projectId!==m&&u.replace((0,h.Nc)(v.projectId,v.id))}},[m,c,N,u,v]),(0,a.useEffect)(()=>{er.current=$},[$]);let eb=(0,a.useCallback)(async()=>{if(el.current)return;el.current=!0;let e=new AbortController;ec.current=e;try{let r=await (0,T.u)("/api/sessions/".concat(encodeURIComponent(p)),{signal:e.signal,timeoutMs:8e3,timeoutMessage:"Session request timed out after ".concat(8e3,"ms")});x(r),q(null),J(!1),ea.current=!0}catch(s){if(eh.current||e.signal.aborted||L(s))return;let r=(s instanceof Error?s.message:"Failed to load session").toLowerCase();if(r.includes("session not found")||r.includes("http 404")){ea.current||J(!0),z(!1);return}console.error("Failed to fetch session:",s),ea.current||q(s instanceof Error?s:Error("Failed to load session"))}finally{z(!1),el.current=!1,ec.current===e&&(ec.current=null)}},[p]),ef=(0,a.useCallback)(async()=>{if(eo.current)return;let e=ee.current;if(!e)return;let r=er.current,s="".concat(e,":").concat(r?"orchestrator":"worker");if(!r&&es.current===s)return;eo.current=!0;let t=new AbortController;ed.current=t;try{var a,n,o,c,d;let u=r?"/api/sessions?project=".concat(encodeURIComponent(e),"&fresh=true"):"/api/sessions?project=".concat(encodeURIComponent(e),"&orchestratorOnly=true&fresh=true"),h=await (0,T.u)(u,{signal:t.signal,timeoutMs:5e3,timeoutMessage:"Project sessions request timed out after ".concat(5e3,"ms")}),p=null!=(o=h.sessions)?o:[],m=null!=(d=null!=(c=h.orchestratorId)?c:null==(n=h.orchestrators)||null==(a=n.find(r=>r.projectId===e))?void 0:a.id)?d:null;if(w(e=>e===m?e:m),!r){es.current=s;return}let b={merge:0,respond:0,review:0,pending:0,working:0,done:0},f=[...et.current.values()];for(let e of p)if(!(0,l.tT)(e,et.current.get(e.projectId),f)){let r=(0,i.ng)(e);if("action"===r)continue;b[r]++}g(b)}catch(e){if(eh.current||t.signal.aborted||L(e))return;console.error("Failed to fetch project sessions:",e)}finally{eo.current=!1,ed.current===t&&(ed.current=null)}},[]),ev=(0,a.useCallback)(async()=>{if(ei.current)return;ei.current=!0;let e=new AbortController;eu.current=e;try{var r,s,t;let a=await (0,T.u)("/api/sessions?fresh=true",{signal:e.signal,timeoutMs:5e3,timeoutMessage:"Sidebar sessions request timed out after ".concat(5e3,"ms")}),n=null!=(r=null==a?void 0:a.sessions)?r:[],l=null!=(t=U(n,null!=(s=en.current)?s:[]))?t:n;E=l,F(null==a?void 0:a.orchestrators),K(!1),A(e=>e&&e.length===l.length&&e.every((e,r)=>{let s=l[r];return JSON.stringify(e)===JSON.stringify(s)})?e:l)}catch(r){if(eh.current||e.signal.aborted||L(r))return;console.error("Failed to fetch sidebar sessions:",r),K(!0),A(e=>null===e?[]:e)}finally{ei.current=!1,eu.current===e&&(eu.current=null)}},[]);return((0,a.useEffect)(()=>{if(!(null==b?void 0:b.sessions))return;if("connected"!==b.status){en.current=null;return}en.current=b.sessions;let e=U(E,b.sessions);if(e!==E&&(E=e,A(e)),0===b.sessions.length||!E)return;let r=new Set(E.map(e=>e.id)),s=new Set(b.sessions.map(e=>e.id));if(r.size!==s.size)return void ev();for(let e of s)if(!r.has(e))return void ev()},[ev,null==b?void 0:b.sessions,null==b?void 0:b.status]),(0,a.useEffect)(()=>{$||g(null)},[$]),(0,a.useEffect)(()=>{Promise.all([ep(),eb(),ev()])},[ep,eb,ev]),(0,a.useEffect)(()=>{Q&&ef()},[ef,$,Q]),(0,a.useEffect)(()=>{let e=setInterval(()=>{eb(),ef(),ev()},2e3);return()=>clearInterval(e)},[eb,ef,ev]),(0,a.useEffect)(()=>{eh.current=!1;let e=()=>{eh.current=!0};return window.addEventListener("pagehide",e),window.addEventListener("beforeunload",e),()=>{window.removeEventListener("pagehide",e),window.removeEventListener("beforeunload",e)}},[]),(0,a.useEffect)(()=>()=>{var e,r,s;null==(e=ec.current)||e.abort(),null==(r=ed.current)||r.abort(),null==(s=eu.current)||s.abort()},[]),W)?(0,t.jsx)(B,{projects:N,projectsLoading:k,sidebarSessions:O,sidebarOrchestrators:D,sidebarLoading:null===O,sidebarError:G,onRetrySidebar:ev,activeProjectId:null!=m?m:void 0,activeSessionId:p,children:(0,t.jsx)("div",{className:"flex h-full min-h-screen items-center justify-center bg-[var(--color-bg-base)]",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,t.jsx)("svg",{className:"h-5 w-5 animate-spin text-[var(--color-text-tertiary)]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M12 3a9 9 0 1 0 9 9"})}),(0,t.jsx)("div",{className:"text-[13px] text-[var(--color-text-tertiary)]",children:"Loading session…"})]})})}):V?(0,t.jsx)(B,{projects:N,projectsLoading:k,sidebarSessions:O,sidebarOrchestrators:D,sidebarLoading:null===O,sidebarError:G,onRetrySidebar:ev,activeProjectId:null!=m?m:void 0,activeSessionId:p,children:(0,t.jsx)(I.ErrorDisplay,{title:"Session not found",message:"This session is no longer available. It may have been removed, renamed, or already cleaned up.",tone:"not-found",primaryAction:{label:"Back to dashboard",href:m?"/projects/".concat(m):"/"},secondaryAction:{label:"Retry",onClick:()=>void eb()},compact:!0,chrome:"card"})}):H?(0,t.jsx)(B,{projects:N,projectsLoading:k,sidebarSessions:O,sidebarOrchestrators:D,sidebarLoading:null===O,sidebarError:G,onRetrySidebar:ev,activeProjectId:null!=(s=null!=(r=null==v?void 0:v.projectId)?r:m)?s:void 0,activeSessionId:p,children:(0,t.jsx)(I.ErrorDisplay,{title:"Failed to load session",message:function(e){let r=e.message.toLowerCase();return r.includes("timed out")?"The session request is taking too long, so the page stopped waiting instead of spinning forever. You can retry, or return to the project and reopen a different session.":r.includes("network")?"The session request failed before the dashboard got a response. Check the local server connection and try again.":r.includes("404")?"This session is no longer available. It may have been removed while the page was open.":r.includes("500")?"The server returned an internal error while loading this session. Try again to re-fetch the latest state.":"The dashboard could not load this session cleanly. Try again to re-fetch the latest state."}(H),tone:"error",primaryAction:{label:"Try again",onClick:()=>{q(null),J(!1),z(!0),Promise.all([ep(),eb(),ev()])}},secondaryAction:{label:"Back to dashboard",href:(null==v?void 0:v.projectId)?"/projects/".concat(v.projectId):"/"},error:H,compact:!0,chrome:"card"})}):v?(0,t.jsx)(S,{session:v,isOrchestrator:$,orchestratorZones:null!=j?j:void 0,projectOrchestratorId:y,projects:N,sidebarSessions:O,sidebarOrchestrators:D,sidebarLoading:null===O,sidebarError:G,onRetrySidebar:ev}):(0,t.jsx)(B,{projects:N,projectsLoading:k,sidebarSessions:O,sidebarOrchestrators:D,sidebarLoading:null===O,sidebarError:G,onRetrySidebar:ev,activeProjectId:null!=m?m:void 0,activeSessionId:p,children:(0,t.jsx)(I.ErrorDisplay,{title:"Session unavailable",message:"The backend has not returned this session yet. This can happen right after spawning an orchestrator; retry once the terminal registers the session.",tone:"error",primaryAction:{label:"Retry",onClick:()=>void eb()},secondaryAction:{label:"Back to dashboard",href:m?"/projects/".concat(m):"/"},compact:!0,chrome:"card"})})}},5864:(e,r,s)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i}});let t=s(3817),a=s(6749),n=s(6943);function l(e){return{default:e&&"default"in e?e.default:e}}s(6418);let o={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},i=function(e){let r={...o,...e},s=(0,a.lazy)(()=>r.loader().then(l)),i=r.loading;function c(e){let l=i?(0,t.jsx)(i,{isLoading:!0,pastDelay:!0,error:null}):null,o=!r.ssr||!!r.loading,c=o?a.Suspense:a.Fragment,d=r.ssr?(0,t.jsxs)(t.Fragment,{children:[null,(0,t.jsx)(s,{...e})]}):(0,t.jsx)(n.BailoutToCSR,{reason:"next/dynamic",children:(0,t.jsx)(s,{...e})});return(0,t.jsx)(c,{...o?{fallback:l}:{},children:d})}return c.displayName="LoadableComponent",c}},6313:(e,r,s)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return t.workAsyncStorageInstance}});let t=s(8394)},6418:(e,r,s)=>{function t(e){let{moduleIds:r}=e;return null}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"PreloadChunks",{enumerable:!0,get:function(){return t}}),s(3817),s(4768),s(6313),s(5152)},6943:(e,r,s)=>{function t(e){let{reason:r,children:s}=e;return s}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"BailoutToCSR",{enumerable:!0,get:function(){return t}}),s(1763)},8394:(e,r,s)=>{Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return t}});let t=(0,s(5468).createAsyncLocalStorage)()},9789:(e,r,s)=>{s.d(r,{ErrorDisplay:()=>c});var t=s(3817),a=s(8713),n=s.n(a);let l={error:{accent:"var(--color-status-error)",bg:"var(--color-tint-red)",border:"color-mix(in srgb, var(--color-status-error) 24%, transparent)",label:"error"},warning:{accent:"var(--color-status-attention)",bg:"var(--color-tint-yellow)",border:"color-mix(in srgb, var(--color-status-attention) 24%, transparent)",label:"warning"},"not-found":{accent:"var(--color-accent)",bg:"var(--color-tint-blue)",border:"color-mix(in srgb, var(--color-accent) 24%, transparent)",label:"missing"}};function o(e){let{accent:r}=e;return(0,t.jsx)("div",{className:"flex h-14 w-14 items-center justify-center rounded-2xl border",style:{background:"linear-gradient(180deg, color-mix(in srgb, ".concat(r," 16%, var(--color-bg-elevated)) 0%, var(--color-bg-surface) 100%)"),borderColor:"color-mix(in srgb, ".concat(r," 18%, var(--color-border-default))"),boxShadow:"var(--detail-card-shadow)"},children:(0,t.jsxs)("svg",{className:"h-7 w-7",fill:"none",stroke:"currentColor",strokeWidth:"1.6",style:{color:r},viewBox:"0 0 24 24",children:[(0,t.jsx)("rect",{x:"2.5",y:"4.5",width:"19",height:"15",rx:"3"}),(0,t.jsx)("path",{d:"M6.5 9.5l3.25 2.5-3.25 2.5M12.75 15h4.75"})]})})}function i(e){let{action:r,primary:s=!1}=e,a=s?"inline-flex items-center justify-center rounded-full border px-4 py-2 text-[12px] font-semibold transition-colors hover:no-underline":"inline-flex items-center justify-center rounded-full border px-4 py-2 text-[12px] font-medium transition-colors hover:no-underline",l=s?{background:"var(--color-accent)",color:"var(--color-text-inverse)",borderColor:"color-mix(in srgb, var(--color-accent) 72%, transparent)"}:{background:"var(--color-bg-surface)",color:"var(--color-text-secondary)",borderColor:"var(--color-border-default)"};return r.href?(0,t.jsx)(n(),{href:r.href,className:a,style:l,children:r.label}):(0,t.jsx)("button",{type:"button",onClick:r.onClick,className:a,style:l,children:r.label})}function c(e){let{title:r,message:s,tone:a="error",detailsTitle:n="Technical details",error:c,primaryAction:d,secondaryAction:u,compact:h=!1,chrome:p="page",children:m}=e,b=l[a],f=!!((null==c?void 0:c.digest)||(null==c?void 0:c.message)||(null==c?void 0:c.stack));return(0,t.jsx)("div",{className:"flex w-full items-center justify-center px-6 py-10 ".concat(h?"min-h-[calc(100vh-4rem)]":"min-h-screen"),style:{background:"page"===p?"radial-gradient(circle at top, var(--color-body-gradient-blue), transparent 35%), var(--color-bg-base)":"transparent"},children:(0,t.jsx)("div",{className:"w-full max-w-[36rem] rounded-[28px] border p-6 sm:p-8",style:{background:"linear-gradient(180deg, color-mix(in srgb, var(--color-bg-elevated) 88%, transparent) 0%, var(--color-bg-surface) 100%)",borderColor:"var(--color-border-default)",boxShadow:"var(--detail-card-shadow)"},children:(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start",children:[(0,t.jsx)(o,{accent:b.accent}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"mb-3 inline-flex items-center rounded-full border px-2.5 py-1 font-[var(--font-mono)] text-[10px] font-medium uppercase tracking-[0.22em]",style:{color:b.accent,background:b.bg,borderColor:b.border},children:b.label}),(0,t.jsx)("h1",{className:"text-[24px] font-semibold tracking-[-0.04em] text-[var(--color-text-primary)]",children:r}),(0,t.jsx)("p",{className:"mt-2 max-w-[34rem] text-[14px] leading-6 text-[var(--color-text-secondary)]",children:s})]})]}),(d||u)&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-3",children:[d?(0,t.jsx)(i,{action:d,primary:!0}):null,u?(0,t.jsx)(i,{action:u}):null]}),m,f?(0,t.jsxs)("details",{className:"rounded-2xl border",style:{background:"color-mix(in srgb, var(--color-bg-elevated) 84%, transparent)",borderColor:"var(--color-border-subtle)"},children:[(0,t.jsx)("summary",{className:"cursor-pointer list-none px-4 py-3 text-[12px] font-medium text-[var(--color-text-secondary)]",children:n}),(0,t.jsxs)("div",{className:"border-t px-4 py-4",style:{borderColor:"var(--color-border-subtle)"},children:[(null==c?void 0:c.digest)?(0,t.jsxs)("p",{className:"mb-3 font-[var(--font-mono)] text-[11px] text-[var(--color-text-tertiary)]",children:["digest: ",c.digest]}):null,(null==c?void 0:c.message)?(0,t.jsx)("p",{className:"mb-3 text-[12px] leading-5 text-[var(--color-text-secondary)]",children:c.message}):null,(null==c?void 0:c.stack)?(0,t.jsx)("pre",{className:"overflow-x-auto whitespace-pre-wrap font-[var(--font-mono)] text-[11px] leading-5 text-[var(--color-text-tertiary)]",children:c.stack}):null]})]}):null]})})})}},9891:(e,r,s)=>{s.d(r,{default:()=>a.a});var t=s(1712),a=s.n(t)}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7008],{1237:(e,r,t)=>{t.d(r,{dG:()=>o,i_:()=>l,j6:()=>c});var n=t(3817),s=t(545),a=t(4906);function l(e,r){let t=e+r;return t>1e3?"XL":t>500?"L":t>200?"M":t>50?"S":"XS"}function c(e){let{pr:r,muted:t=!1}=e,c=l(r.additions,r.deletions),o=(0,s.fZ)(r),i=(0,s.sZ)(r),d=o||i,u=d?"—":"merged"===r.state?"merged":"closed"===r.state?"closed":r.isDraft?"draft":"approved"===r.reviewDecision?"approved":"changes_requested"===r.reviewDecision?"changes requested":"needs review",p=d?"text-[var(--color-text-tertiary)]":r.isDraft?"text-[var(--color-text-muted)]":"approved"===r.reviewDecision?"text-[var(--color-accent-green)]":"changes_requested"===r.reviewDecision?"text-[var(--color-accent-red)]":"text-[var(--color-accent-yellow)]",v=(0,n.jsx)("span",{className:"inline-block h-3 w-12 animate-pulse rounded bg-[var(--color-bg-subtle)]"});return(0,n.jsxs)("tr",{className:"border-b border-[var(--color-border-subtle)] transition-colors hover:bg-[var(--color-bg-subtle)]".concat(t?" opacity-60 hover:opacity-100":""),children:[(0,n.jsx)("td",{className:"px-3 py-2.5 text-sm",children:(0,n.jsxs)("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",className:"hover:underline",children:["#",r.number]})}),(0,n.jsx)("td",{className:"max-w-[420px] truncate px-3 py-2.5 text-sm font-medium",children:(0,n.jsx)("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",className:"hover:underline",children:r.title})}),(0,n.jsx)("td",{className:"px-3 py-2.5 text-sm",children:i?v:o?(0,n.jsx)("span",{className:"text-[var(--color-text-tertiary)]",children:"—"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"text-[var(--color-accent-green)]",children:["+",r.additions]})," ",(0,n.jsxs)("span",{className:"text-[var(--color-accent-red)]",children:["-",r.deletions]})," ",(0,n.jsx)("span",{className:"text-[var(--color-text-muted)]",children:c})]})}),(0,n.jsx)("td",{className:"px-3 py-2.5",children:i?v:o?(0,n.jsx)("span",{className:"text-[var(--color-text-tertiary)]",children:"—"}):(0,n.jsx)(a.wX,{status:r.ciStatus,checks:r.ciChecks,compact:!0})}),(0,n.jsx)("td",{className:"px-3 py-2.5 text-xs font-semibold ".concat(p),children:i?v:u}),(0,n.jsx)("td",{className:"px-3 py-2.5 text-center text-sm font-bold ".concat(i?"":r.unresolvedThreads>0?"text-[var(--color-accent-red)]":"text-[var(--color-border-default)]"),children:i?v:r.unresolvedThreads})]})}function o(e){let{pr:r,muted:t=!1}=e,a=(0,s.fZ)(r),l=(0,s.sZ)(r),c=a||l,o=c?"—":"passing"===r.ciStatus?"passing":"failing"===r.ciStatus?"failed":"pending",i=c?"—":"merged"===r.state?"merged":"closed"===r.state?"closed":r.isDraft?"draft":"approved"===r.reviewDecision?"approved":"changes_requested"===r.reviewDecision?"changes":"needs review",d=(0,n.jsx)("span",{className:"inline-block h-3 w-10 animate-pulse rounded bg-[var(--color-bg-subtle)]"}),u=c?null:"+".concat(r.additions," -").concat(r.deletions),p="merged"===r.state?"mobile-pr-card__meta--merged":"closed"===r.state?"mobile-pr-card__meta--closed":"changes_requested"===r.reviewDecision?"mobile-pr-card__meta--changes":"approved"===r.reviewDecision?"mobile-pr-card__meta--approved":"mobile-pr-card__meta--open";return(0,n.jsxs)("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",className:"mobile-pr-card".concat(t?" mobile-pr-card--muted":""),children:[(0,n.jsxs)("div",{className:"mobile-pr-card__line",children:[(0,n.jsxs)("span",{className:"mobile-pr-card__number",children:["#",r.number]}),(0,n.jsx)("span",{className:"mobile-pr-card__title",children:r.title})]}),(0,n.jsxs)("div",{className:"mobile-pr-card__meta ".concat(p),children:[l?d:(0,n.jsxs)("span",{className:"mobile-pr-card__metric-value",children:[(0,n.jsx)("span",{className:"mobile-pr-card__ci-dot",style:{background:c?"var(--color-text-tertiary)":"passing"===r.ciStatus?"var(--color-accent-green)":"failing"===r.ciStatus?"var(--color-accent-red)":"var(--color-status-attention)"}}),(0,n.jsx)("span",{style:{color:c?void 0:"passing"===r.ciStatus?"var(--color-accent-green)":"failing"===r.ciStatus?"var(--color-accent-red)":"var(--color-text-secondary)"},children:o})]}),(0,n.jsx)("span",{className:"mobile-pr-card__review",style:{color:c?void 0:"approved"===r.reviewDecision?"var(--color-accent-green)":"changes_requested"===r.reviewDecision?"var(--color-accent-red)":"var(--color-text-secondary)"},children:l?d:i}),(0,n.jsx)("span",{className:"mobile-pr-card__diff",children:c?d:u})]})]})}},4906:(e,r,t)=>{t.d(r,{wX:()=>a,zm:()=>o});var n=t(3817);let s={passing:{label:"CI passing",className:"bg-[rgba(63,185,80,0.1)] text-[var(--color-accent-green)]",icon:"✓"},failing:{label:"CI failing",className:"bg-[rgba(248,81,73,0.15)] text-[var(--color-accent-red)]",icon:"✗"},pending:{label:"CI pending",className:"bg-[rgba(210,153,34,0.1)] text-[var(--color-accent-yellow)]",icon:"●"},none:{label:"—",className:"text-[var(--color-text-muted)]",icon:""}};function a(e){var r;let{status:t,checks:a,compact:l}=e,c=s[t],o=null!=(r=null==a?void 0:a.filter(e=>"failed"===e.status).length)?r:0;if("none"===t)return(0,n.jsx)("span",{className:"text-xs text-[var(--color-text-muted)]",children:"—"});let i="failing"===t&&o>0?"".concat(o," check").concat(o>1?"s":""," failing"):c.label;return(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold tracking-wide ".concat(c.className),children:[!l&&(0,n.jsx)("span",{children:c.icon}),i]})}let l={passed:{icon:"✓",color:"var(--color-accent-green)"},failed:{icon:"✗",color:"var(--color-accent-red)"},running:{icon:"●",color:"var(--color-accent-yellow)"},pending:{icon:"○",color:"var(--color-text-muted)"},skipped:{icon:"○",color:"var(--color-text-muted)"}},c={failed:0,running:1,pending:2,passed:3,skipped:4};function o(e){let{checks:r,layout:t="vertical"}=e,s=[...r].sort((e,r)=>c[e.status]-c[r.status]);return"inline"===t?(0,n.jsx)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:s.map(e=>{let{icon:r,color:t}=l[e.status],s=(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs",children:[(0,n.jsx)("span",{style:{color:t},children:r}),(0,n.jsx)("span",{className:"text-[var(--color-text-secondary)]",children:e.name})]});return e.url?(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"hover:no-underline",children:s},e.name):(0,n.jsx)("span",{children:s},e.name)})}):"expanded"===t?(0,n.jsx)("div",{className:"space-y-1",children:s.map(e=>{let{icon:r,color:t}=l[e.status],s=(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs",children:[(0,n.jsx)("span",{style:{color:t},children:r}),(0,n.jsx)("span",{className:"text-[var(--color-text-secondary)]",children:e.name})]});return(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[e.url?(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"hover:no-underline",children:s}):s,e.url&&(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"text-[11px] text-[var(--color-accent-blue)] hover:underline",children:"view"})]},e.name)})}):(0,n.jsx)("div",{className:"space-y-1",children:s.map(e=>{let{icon:r,color:t}=l[e.status];return(0,n.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("span",{style:{color:t},className:"w-3.5 shrink-0 text-center",children:r}),(0,n.jsx)("span",{className:"min-w-0 flex-1 truncate text-[var(--color-text-secondary)]",children:e.name}),e.url&&(0,n.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"shrink-0 text-[11px] text-[var(--color-accent-blue)] hover:underline",children:"view"})]},e.name)})})}},5309:(e,r,t)=>{t.d(r,{D:()=>u});var n=t(6749),s=t(545),a=t(3394);let l=new Set(["merge","action","respond","review","pending","working","done"]),c=new Set(["active","ready","idle","waiting_input","blocked","exited"]),o=new Set(["spawning","working","detecting","pr_open","ci_failed","review_pending","changes_requested","approved","mergeable","merged","cleanup","needs_input","stuck","errored","killed","idle","done","terminated"]);function i(e,r){switch(r.type){case"setLoadError":return e.loadError===r.error?e:{...e,loadError:r.error};case"reset":return{...e,sessions:r.sessions,...r.liveResolved?{liveSessionsResolved:!0,loadError:null}:{},...void 0!==r.attentionLevels?{attentionLevels:r.attentionLevels}:{}};case"snapshot":{let t=new Map(r.patches.map(e=>[e.id,e])),n=!1,s=e.sessions.map(e=>{let r=t.get(e.id);return r&&(e.status!==r.status||e.activity!==r.activity||e.lastActivityAt!==r.lastActivityAt)?(n=!0,{...e,status:o.has(r.status)?r.status:e.status,activity:null!==r.activity&&c.has(r.activity)?r.activity:null,lastActivityAt:r.lastActivityAt}):e}),a={};for(let e of r.patches){if(!l.has(e.attentionLevel)){console.warn("[useSessionEvents] Unknown attentionLevel from server:",e.attentionLevel);continue}a[e.id]=e.attentionLevel}let i=n,d=Object.keys(a).length!==Object.keys(e.attentionLevels).length||r.patches.some(r=>e.attentionLevels[r.id]!==r.attentionLevel);if(!i&&!d){if(e.liveSessionsResolved)return e;return{...e,liveSessionsResolved:!0}}return{...e,sessions:i?s:e.sessions,attentionLevels:d?a:e.attentionLevels,liveSessionsResolved:!0}}}}function d(e){return e.map(e=>e.id).sort().join("\0")}function u(e){let{initialSessions:r,project:t,muxSessions:l,initialAttentionLevels:c,muxLastError:o,disabled:u=!1,attentionZones:p}=e,[v,m]=(0,n.useReducer)(i,{sessions:r,attentionLevels:null!=c?c:{},liveSessionsResolved:!1,loadError:null}),x=(0,n.useRef)(v.sessions),f=(0,n.useRef)(c);f.current=c;let h=(0,n.useRef)(null),g=(0,n.useRef)(null),b=(0,n.useRef)(0),w=(0,n.useRef)(0),j=(0,n.useRef)(null),y=(0,n.useRef)(!1);(0,n.useEffect)(()=>{x.current=v.sessions},[v.sessions]),(0,n.useEffect)(()=>{var e;m({type:"reset",sessions:r,attentionLevels:null!=(e=f.current)?e:{}})},[r]),(0,n.useEffect)(()=>{y.current=!1;let e=()=>{y.current=!0};return window.addEventListener("pagehide",e),window.addEventListener("beforeunload",e),()=>{window.removeEventListener("pagehide",e),window.removeEventListener("beforeunload",e)}},[]);let N=(0,n.useCallback)(()=>{h.current||Date.now()-w.current<500||null===j.current&&(h.current=setTimeout(()=>{if(h.current=null,null!==j.current)return;let e=g.current,r=new AbortController;j.current=r,w.current=Date.now();let n=t?"/api/sessions?project=".concat(encodeURIComponent(t)):"/api/sessions";(0,a.u)(n,{signal:r.signal,cache:"no-store",timeoutMs:6e3,timeoutMessage:"Dashboard refresh timed out after ".concat(6e3,"ms")}).then(e=>{if(r.signal.aborted||!(null==e?void 0:e.sessions)){r.signal.aborted||(b.current=Date.now());return}b.current=Date.now();let t=Object.fromEntries(e.sessions.map(e=>[e.id,(0,s.ng)(e,p)]));m({type:"reset",sessions:e.sessions,attentionLevels:t,liveResolved:!0})}).catch(e=>{y.current||r.signal.aborted||function(e){if(e instanceof DOMException)return"AbortError"===e.name;if(e instanceof Error){let r=e.message.toLowerCase();return r.includes("aborted")||r.includes("aborterror")}return!1}(e)||(console.warn("[useSessionEvents] refresh failed:",e),b.current=Date.now())}).finally(()=>{if(j.current===r&&(j.current=null),r.signal.aborted){null!==g.current&&N();return}if(null!==g.current&&g.current!==e)return void N();g.current=null})},120))},[t,p]);return(0,n.useEffect)(()=>{u||m({type:"setLoadError",error:null!=o?o:null})},[u,o]),(0,n.useEffect)(()=>{if(u||!l)return;let e=new Set(x.current.map(e=>e.id)),r=l.filter(r=>e.has(r.id)),t=l.some(r=>!e.has(r.id));m({type:"snapshot",patches:r});let n=d(x.current),s=d(r);return t||n!==s?(g.current=s,N()):Date.now()-b.current>=15e3&&N(),()=>{var e;null==(e=j.current)||e.abort(),j.current=null}},[u,l,N]),(0,n.useEffect)(()=>()=>{var e;h.current&&(clearTimeout(h.current),h.current=null),null==(e=j.current)||e.abort(),j.current=null},[]),v}},7848:(e,r,t)=>{t.d(r,{S:()=>a,u:()=>l});var n=t(6749);let s={green:"#22c55e",yellow:"#eab308",red:"#ef4444"};function a(e){let r=0;for(let t of Object.values(e))("respond"===t||"review"===t||"action"===t||"merge"===t)&&r++;return r}function l(e){let{attentionLevels:r,projectName:t="A"}=e,a=t.charAt(0).toUpperCase();return(0,n.useEffect)(()=>{let e=function(e,r){let t='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">\n <rect width="32" height="32" rx="6" fill="'.concat(r,'"/>\n <text x="16" y="23" text-anchor="middle" fill="white" font-family="sans-serif" font-weight="700" font-size="20">').concat(e,"</text>\n </svg>");return"data:image/svg+xml,".concat(encodeURIComponent(t))}(a,s[function(e){let r=Object.values(e);if(0===r.length)return"green";let t=!1;for(let e of r){if("respond"===e)return"red";("review"===e||"action"===e||"merge"===e)&&(t=!0)}return t?"yellow":"green"}(r)]),t=document.querySelector('link[rel="icon"]');t||((t=document.createElement("link")).rel="icon",document.head.appendChild(t)),t.type="image/svg+xml",t.href=e},[r,a]),null}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[25,64,403,719,816,1097,1105,1214,1337,1390,1762,1797,2007,2079,2438,2985,3675,4209,4587,5214,6681,6849,6865,6946,6999,7462,7500,8581,9002,9492,9514,9744],{687:()=>{}},_=>{_.O(0,[131,1461,7358],()=>_(_.s=687)),_N_E=_.O()}]);
|